From 2a64b537e8e3bce9ce030585a3da17d48379c0ad Mon Sep 17 00:00:00 2001 From: sfd <sun.sunshine@163.com> Date: 星期一, 26 五月 2025 15:04:45 +0800 Subject: [PATCH] 修改json类型转换错误 --- aps-modules/aps-job/src/main/java/com/aps/job/service/impl/ApsWorkOrderProcessServiceImpl.java | 255 ++++++++++++++++++++++++++++---------------------- 1 files changed, 142 insertions(+), 113 deletions(-) diff --git a/aps-modules/aps-job/src/main/java/com/aps/job/service/impl/ApsWorkOrderProcessServiceImpl.java b/aps-modules/aps-job/src/main/java/com/aps/job/service/impl/ApsWorkOrderProcessServiceImpl.java index 4594119..1a13dac 100644 --- a/aps-modules/aps-job/src/main/java/com/aps/job/service/impl/ApsWorkOrderProcessServiceImpl.java +++ b/aps-modules/aps-job/src/main/java/com/aps/job/service/impl/ApsWorkOrderProcessServiceImpl.java @@ -1,10 +1,10 @@ package com.aps.job.service.impl; +import cn.hutool.core.util.IdUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.aps.common.core.utils.DateUtils; import com.aps.common.core.utils.StringUtils; -import com.aps.common.core.utils.uuid.Sequence; import com.aps.job.domain.ApsWorkOrderJob; import com.aps.job.domain.ApsWorkOrderJobLog; import com.aps.job.domain.ApsWorkOrderProcess; @@ -23,14 +23,13 @@ import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.web.client.RestTemplate; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; - -import static com.aps.common.core.utils.uuid.IdUtils.getId; /** * 宸ュ崟宸ュ簭Service涓氬姟灞傚鐞� @@ -133,129 +132,147 @@ return apsWorkOrderProcessMapper.deleteApsWorkOrderProcessById(id); } + @Transactional(rollbackFor = Exception.class) @Override public void getWorkOrderProcessFromU9(List<String> docNos) throws Exception { + List<String> noProcessDocNos = new ArrayList<>(docNos); + List<String> haveProcessDocNos = new ArrayList<>(); + ApsWorkOrderJobLog apsWorkOrderJobLog = new ApsWorkOrderJobLog(); // 璁剧疆璇锋眰澶� HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_JSON); // 璁剧疆璇锋眰浣� - JSONObject requestBody = new JSONObject(); - requestBody.put("DocList", docNos); - requestBody.put("PageIndex", 1); - requestBody.put("PageSize", 1000); - // 鍒涘缓HttpEntity瀵硅薄 - HttpEntity<String> request = new HttpEntity<>(requestBody.toJSONString(), headers); - // 鍙戦�丳OST璇锋眰 - ResponseEntity<String> response = restTemplate.postForEntity(u9WorkOrderProcessUrl, request, String.class); - String responseBody = response.getBody(); - JSONObject responseBodyJson = JSONObject.parseObject(responseBody); - ApsWorkOrderJobLog apsWorkOrderJobLog = new ApsWorkOrderJobLog(); - apsWorkOrderJobLog.setRequestData(requestBody.toJSONString()); - apsWorkOrderJobLog.setCreateTime(DateUtils.getNowDate()); - apsWorkOrderJobLog.setBizType("work_order_process"); - apsWorkOrderJobLog.setResult("SUCCESS"); - apsWorkOrderJobLogService.insertApsWorkOrderJobLog(apsWorkOrderJobLog); - List<String> haveProcessDocNos = new ArrayList<>(); - if (response.getStatusCode().is2xxSuccessful()) { - if(!StringUtils.isEmpty(responseBody)){ - if("200".equals(responseBodyJson.getString("status"))){ - JSONArray jsonArray = responseBodyJson.getJSONArray("data"); - if (!jsonArray.isEmpty()) { - List<ApsWorkOrderProcess> addList = new ArrayList<>(); - List<ApsWorkOrderProcess> updateList = new ArrayList<>(); - String nowDocNo = null; - for (Object o : jsonArray) { - JSONObject process = (JSONObject) o; - if (nowDocNo == null) { - nowDocNo = process.getString("DocNo"); - docNos.remove(nowDocNo); - haveProcessDocNos.add(nowDocNo); + int pageSize = 1000; + int pageIndex = 1; + while (true){ + JSONObject requestBody = new JSONObject(); + requestBody.put("DocList", docNos); + requestBody.put("PageIndex", pageIndex); + requestBody.put("PageSize", pageSize); + // 鍒涘缓HttpEntity瀵硅薄 + HttpEntity<String> request = new HttpEntity<>(requestBody.toJSONString(), headers); + // 鍙戦�丳OST璇锋眰 + ResponseEntity<String> response = restTemplate.postForEntity(u9WorkOrderProcessUrl, request, String.class); + String responseBody = response.getBody(); + JSONObject responseBodyJson = JSONObject.parseObject(responseBody); + apsWorkOrderJobLog.setRequestData(requestBody.toJSONString()); + apsWorkOrderJobLog.setCreateTime(DateUtils.getNowDate()); + apsWorkOrderJobLog.setBizType("work_order_process"); + apsWorkOrderJobLog.setResult("SUCCESS"); + apsWorkOrderJobLogService.insertApsWorkOrderJobLog(apsWorkOrderJobLog); + if (response.getStatusCode().is2xxSuccessful()) { + if(!StringUtils.isEmpty(responseBody)){ + if("200".equals(responseBodyJson.getString("status"))){ + JSONArray jsonArray = responseBodyJson.getJSONArray("data"); + if (!jsonArray.isEmpty()) { + List<ApsWorkOrderProcess> addList = new ArrayList<>(); + List<ApsWorkOrderProcess> updateList = new ArrayList<>(); + String nowDocNo = null; + for (int i = 0,size=jsonArray.size();i<size;i++) { + JSONObject process = jsonArray.getJSONObject(i); + if (nowDocNo == null) { + nowDocNo = process.getString("DocNo"); + noProcessDocNos.remove(nowDocNo); + haveProcessDocNos.add(nowDocNo); + } +// Map<String, Object> params = new HashMap<>(); +// params.put("docNo", process.getString("DocNo")); +// params.put("opNum", process.getString("OpNum")); +// params.put("opId", process.getString("OpID")); +// Long existsId = apsWorkOrderProcessMapper.existsByDocNoOpNumOpId(params); + ApsWorkOrderProcess apsWorkOrderProcess = new ApsWorkOrderProcess(); + apsWorkOrderProcess.setItemCode(process.getString("ItemCode")); + apsWorkOrderProcess.setDocNo(process.getString("DocNo")); + apsWorkOrderProcess.setOpNum(process.getString("OpNum")); + apsWorkOrderProcess.setOpId(process.getString("OpID")); + apsWorkOrderProcess.setProcessName(process.getString("StdOp")); + apsWorkOrderProcess.setStandardTime(process.getBigDecimal("StandardTime")); + apsWorkOrderProcess.setPalnStartDate(process.getDate("PlanStartDate")); + apsWorkOrderProcess.setPlanCompleteDate(process.getDate("PlanCompleteDate")); + apsWorkOrderProcess.setProcessQty(process.getBigDecimal("ProcessQty")); + apsWorkOrderProcess.setScrapQty(process.getBigDecimal("ScrapQty")); + apsWorkOrderProcess.setOpStatus(process.getString("OpStatus")); + apsWorkOrderProcess.setOrg(process.getString("Org")); + apsWorkOrderProcess.setOrgCode(process.getString("OrgCode")); + apsWorkOrderProcess.setWorkCenter(process.getString("WorkCenter")); +// if (existsId != null) { +// apsWorkOrderProcess.setId(existsId); +// apsWorkOrderProcess.setUpdateBy("task"); +// apsWorkOrderProcess.setUpdateTime(DateUtils.getNowDate()); +// updateList.add(apsWorkOrderProcess); +// } else { + apsWorkOrderProcess.setId(IdUtil.getSnowflakeNextId()); + apsWorkOrderProcess.setCreateBy("task"); + apsWorkOrderProcess.setCreateTime(DateUtils.getNowDate()); + addList.add(apsWorkOrderProcess); +// } + if(!nowDocNo.equals(process.getString("DocNo")) || i==size-1){ + //鏇存柊宸ュ崟鍚屾宸ュ簭鐘舵�� + noProcessDocNos.remove(nowDocNo); + haveProcessDocNos.add(nowDocNo); + nowDocNo = process.getString("DocNo"); + } } - Map<String, Object> params = new HashMap<>(); - params.put("docNo", process.getString("DocNo")); - params.put("opNum", process.getString("OpNum")); - params.put("opId", process.getString("OpID")); - Long existsId = apsWorkOrderProcessMapper.existsByDocNoOpNumOpId(params); - ApsWorkOrderProcess apsWorkOrderProcess = new ApsWorkOrderProcess(); - apsWorkOrderProcess.setItemCode(process.getString("ItemCode")); - apsWorkOrderProcess.setDocNo(process.getString("DocNo")); - apsWorkOrderProcess.setOpNum(process.getString("OpNum")); - apsWorkOrderProcess.setOpId(process.getString("OpID")); - apsWorkOrderProcess.setProcessName(process.getString("StdOp")); - apsWorkOrderProcess.setStandardTime(process.getBigDecimal("StandardTime")); - apsWorkOrderProcess.setPalnStartDate(process.getDate("PlanStartDate")); - apsWorkOrderProcess.setPlanCompleteDate(process.getDate("PlanCompleteDate")); - apsWorkOrderProcess.setProcessQty(process.getBigDecimal("ProcessQty")); - apsWorkOrderProcess.setScrapQty(process.getBigDecimal("ScrapQty")); - apsWorkOrderProcess.setOpStatus(process.getString("OpStatus")); - apsWorkOrderProcess.setOrg(process.getString("Org")); - apsWorkOrderProcess.setOrgCode(process.getString("OrgCode")); - apsWorkOrderProcess.setWorkCenter(process.getString("WorkCenter")); - if (existsId != null) { - apsWorkOrderProcess.setId(existsId); - apsWorkOrderProcess.setUpdateBy("task"); - apsWorkOrderProcess.setUpdateTime(DateUtils.getNowDate()); - updateList.add(apsWorkOrderProcess); - } else { - apsWorkOrderProcess.setId(getId()); - apsWorkOrderProcess.setCreateBy("task"); - apsWorkOrderProcess.setCreateTime(DateUtils.getNowDate()); - addList.add(apsWorkOrderProcess); + if(!updateList.isEmpty()){ + apsWorkOrderProcessMapper.updateApsWorkOrderProcessBatch(updateList); + apsWorkOrderJobLog.setResult("ok update "+updateList.size()); + apsWorkOrderJobLog.setUpdateTime(DateUtils.getNowDate()); + apsWorkOrderJobLogService.updateApsWorkOrderJobLog(apsWorkOrderJobLog); + logger.info("銆怳PDATE銆戣幏鍙栧苟鏇存柊U9宸ュ簭鎴愬姛锛併�愬伐鍗曞彿锛歿}銆�", docNos); } - if(!nowDocNo.equals(process.getString("DocNo"))){ - //鏇存柊宸ュ崟鍚屾宸ュ簭鐘舵�� - docNos.remove(nowDocNo); - haveProcessDocNos.add(nowDocNo); - nowDocNo = process.getString("DocNo"); + if(!addList.isEmpty()){ + apsWorkOrderProcessMapper.insertApsWorkOrderProcessBatch(addList); + apsWorkOrderJobLog.setResult("ok insert "+addList.size()); + apsWorkOrderJobLog.setUpdateTime(DateUtils.getNowDate()); + apsWorkOrderJobLogService.updateApsWorkOrderJobLog(apsWorkOrderJobLog); + logger.info("銆怚NSERT銆戣幏鍙栧苟鎻掑叆U9宸ュ簭鎴愬姛锛併�愬伐鍗曞彿锛歿}銆�", docNos); } } - if(!updateList.isEmpty()){ - apsWorkOrderProcessMapper.updateApsWorkOrderProcessBatch(updateList); - apsWorkOrderJobLog.setResult("ok update "+updateList.size()); - apsWorkOrderJobLog.setUpdateTime(DateUtils.getNowDate()); - apsWorkOrderJobLogService.updateApsWorkOrderJobLog(apsWorkOrderJobLog); - logger.info("銆怳PDATE銆戣幏鍙栧苟鏇存柊U9宸ュ簭鎴愬姛锛併�愬伐鍗曞彿锛歿}銆�", docNos); + if(jsonArray.size()<1000){ + break; } - if(!addList.isEmpty()){ - apsWorkOrderProcessMapper.insertApsWorkOrderProcessBatch(addList); - apsWorkOrderJobLog.setResult("ok insert "+updateList.size()); - apsWorkOrderJobLog.setUpdateTime(DateUtils.getNowDate()); - apsWorkOrderJobLogService.updateApsWorkOrderJobLog(apsWorkOrderJobLog); - logger.info("銆怚NSERT銆戣幏鍙栧苟鎻掑叆U9宸ュ簭鎴愬姛锛併�愬伐鍗曞彿锛歿}銆�", docNos); - } - Map<String, Object> param = new HashMap<>(); - param.put("status", "1"); - param.put("docNos", haveProcessDocNos); - apsWorkOrderJobMapper.updateApsWorkOrderJobPrccessStatus(param); - } - if(!docNos.isEmpty()){ - Map<String, Object> param = new HashMap<>(); - param.put("status", "2"); - param.put("docNos", docNos); - apsWorkOrderJobMapper.updateApsWorkOrderJobPrccessStatus(param); + pageIndex++; + }else{ + apsWorkOrderJobLog.setResponseData(response.getBody()); + apsWorkOrderJobLog.setResult("fail"); + apsWorkOrderJobLog.setUpdateTime(DateUtils.getNowDate()); + apsWorkOrderJobLogService.updateApsWorkOrderJobLog(apsWorkOrderJobLog); + logger.error("銆怑RROR銆戞煡璇9宸ュ簭澶辫触锛併�愬伐鍗曞彿锛歿}, 閿欒鐮侊細{}锛岄敊璇俊鎭細{}銆�", docNos, responseBodyJson.getString("status"), responseBodyJson.getString("message")); } }else{ - apsWorkOrderJobLog.setResponseData(response.getBody()); - apsWorkOrderJobLog.setResult("fail"); - apsWorkOrderJobLog.setUpdateTime(DateUtils.getNowDate()); - apsWorkOrderJobLogService.updateApsWorkOrderJobLog(apsWorkOrderJobLog); - logger.error("銆怑RROR銆戞煡璇9宸ュ簭澶辫触锛併�愬伐鍗曞彿锛歿}, 閿欒鐮侊細{}锛岄敊璇俊鎭細{}銆�", docNos, responseBodyJson.getString("status"), responseBodyJson.getString("message")); + logger.warn("銆怶ARNING銆戞湭鏌ヨ鍒癠9宸ュ簭锛併�愬伐鍗曞彿锛歿}銆�", docNos); } - }else{ - logger.warn("銆怶ARNING銆戞湭鏌ヨ鍒癠9宸ュ簭锛併�愬伐鍗曞彿锛歿}銆�", docNos); + } else { + apsWorkOrderJobLog.setResponseData(response.getBody()); + apsWorkOrderJobLog.setResult("fail"); + apsWorkOrderJobLog.setUpdateTime(DateUtils.getNowDate()); + apsWorkOrderJobLogService.updateApsWorkOrderJobLog(apsWorkOrderJobLog); + throw new Exception("銆怑RROR銆戞煡璇9宸ュ簭澶辫触锛併�愬伐鍗曞彿锛歿"+ docNos +"}, 閿欒鐮侊細{"+ responseBodyJson.getString("status") +"}锛岄敊璇俊鎭細{"+ responseBodyJson.getString("message") +"}銆�"); } - } else { - apsWorkOrderJobLog.setResponseData(response.getBody()); - apsWorkOrderJobLog.setResult("fail"); + } + if(!haveProcessDocNos.isEmpty()){ + Map<String, Object> param = new HashMap<>(); + param.put("status", "1"); + param.put("docNos", haveProcessDocNos); + apsWorkOrderJobMapper.updateApsWorkOrderJobPrccessStatus(param); + } + if(!noProcessDocNos.isEmpty()){ + Map<String, Object> param = new HashMap<>(); + param.put("status", "2"); + param.put("docNos", noProcessDocNos); + apsWorkOrderJobMapper.updateApsWorkOrderJobPrccessStatus(param); + apsWorkOrderJobLog.setRequestData(noProcessDocNos.toString()); + apsWorkOrderJobLog.setResponseData(""); + apsWorkOrderJobLog.setResult("empty"); apsWorkOrderJobLog.setUpdateTime(DateUtils.getNowDate()); apsWorkOrderJobLogService.updateApsWorkOrderJobLog(apsWorkOrderJobLog); - throw new Exception("銆怑RROR銆戞煡璇9宸ュ簭澶辫触锛併�愬伐鍗曞彿锛歿"+ docNos +"}, 閿欒鐮侊細{"+ responseBodyJson.getString("status") +"}锛岄敊璇俊鎭細{"+ responseBodyJson.getString("message") +"}銆�"); } } @Override public void syncWorkOrderProcessData(String status, Integer pageSize) { try{ + Integer pageNum = 1; //鍒嗛〉鏌ヨ宸ュ崟 ApsWorkOrderJob apsWorkOrderJob = new ApsWorkOrderJob(); if("".equals(status)){ @@ -264,11 +281,11 @@ apsWorkOrderJob.setProcessStatus(status); // 琛ユ煡涔嬪墠娌℃湁鏌ュ埌宸ュ簭鐨勫伐鍗� if("2".equals(status)){ - int total = apsWorkOrderJobMapper.selectApsWorkOrderJobList(apsWorkOrderJob).size(); - int pages = total % pageSize == 0 ? total / pageSize : total / pageSize + 1; - for (int i = 1; i <= pages; i++){ - PageHelper.startPage(i, pageSize); + String lastDocNos = ""; + while (true){ + PageHelper.startPage(1, pageSize); List<ApsWorkOrderJob> pageList = apsWorkOrderJobMapper.selectApsWorkOrderJobList(apsWorkOrderJob); + PageHelper.clearPage(); if(!pageList.isEmpty()){ long startTime = System.currentTimeMillis(); List<String> docNos = new ArrayList<>(); @@ -276,15 +293,18 @@ docNos.add(apsWorkOrderJob1.getDocNo()); } getWorkOrderProcessFromU9(docNos); - long endTime = System.currentTimeMillis(); // 璁板綍缁撴潫鏃堕棿 - long duration = endTime - startTime; // 璁$畻杩愯鏃堕棿 - System.out.println("杩愯鏃堕棿锛�"+ duration +"姣"); + if(String.join(",", docNos).equals(lastDocNos)){ + break; + } + lastDocNos = String.join(",", docNos); } + pageNum++; } }else{ while (true){ PageHelper.startPage(1, pageSize); List<ApsWorkOrderJob> pageList = apsWorkOrderJobMapper.selectApsWorkOrderJobList(apsWorkOrderJob); + PageHelper.clearPage(); if(!pageList.isEmpty()){ long startTime = System.currentTimeMillis(); List<String> docNos = new ArrayList<>(); @@ -295,15 +315,13 @@ } if(!docNos.isEmpty()){ getWorkOrderProcessFromU9(docNos); - long endTime = System.currentTimeMillis(); // 璁板綍缁撴潫鏃堕棿 - long duration = endTime - startTime; // 璁$畻杩愯鏃堕棿 - System.out.println("杩愯鏃堕棿锛�"+ duration +"姣"); }else{ break; } }else{ break; } + pageNum++; } } }catch (Exception e){ @@ -343,4 +361,15 @@ } return true; } + + @Override + public void syncProcessRouteData() { + apsWorkOrderProcessMapper.deleteApsProcessRoute(); + apsWorkOrderProcessMapper.insertIntoApsProcessRoute(); + } + + @Override + public void deleteApsWorkOrderProcess() { + apsWorkOrderProcessMapper.deleteApsWorkOrderProcess(); + } } -- Gitblit v1.9.3