From 1b49796d9b6a6d90738bd0b23ee2abe05e2aa131 Mon Sep 17 00:00:00 2001 From: huangjiayang <5265313@qq.com> Date: 星期五, 18 四月 2025 13:59:36 +0800 Subject: [PATCH] 【UPDATE】1.修改同步U9工单工序方法 2.增加同步工单工序数据定时任务 --- aps-modules/aps-job/src/main/java/com/aps/job/service/impl/ApsWorkOrderProcessServiceImpl.java | 115 ++++++++++++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 97 insertions(+), 18 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 ac9fb54..e815c21 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 @@ -2,13 +2,19 @@ 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.job.domain.ApsWorkOrderJob; +import com.aps.job.domain.ApsWorkOrderJobLog; import com.aps.job.domain.ApsWorkOrderProcess; +import com.aps.job.mapper.ApsWorkOrderJobMapper; import com.aps.job.mapper.ApsWorkOrderProcessMapper; +import com.aps.job.service.IApsWorkOrderJobLogService; import com.aps.job.service.IApsWorkOrderProcessService; -import jakarta.annotation.Resource; +import com.github.pagehelper.PageHelper; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.http.HttpEntity; import org.springframework.http.HttpHeaders; @@ -17,6 +23,7 @@ import org.springframework.stereotype.Service; import org.springframework.web.client.RestTemplate; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -35,11 +42,17 @@ private final Logger logger = LoggerFactory.getLogger(ApsWorkOrderProcessServiceImpl.class); - @Resource + @Autowired private RestTemplate restTemplate; - @Resource + @Autowired private ApsWorkOrderProcessMapper apsWorkOrderProcessMapper; + + @Autowired + private ApsWorkOrderJobMapper apsWorkOrderJobMapper; + + @Autowired + private IApsWorkOrderJobLogService apsWorkOrderJobLogService; /** * 鏌ヨ宸ュ崟宸ュ簭 @@ -121,19 +134,33 @@ // 璁剧疆璇锋眰浣� 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); if (response.getStatusCode().is2xxSuccessful()) { - String responseBody = response.getBody(); - if(StringUtils.isEmpty(responseBody)){ - JSONObject responseBodyJson = JSONObject.parseObject(responseBody); - if(!"200".equals(responseBodyJson.getString("status"))){ + if(!StringUtils.isEmpty(responseBody)){ + if("200".equals(responseBodyJson.getString("status"))){ JSONArray jsonArray = responseBodyJson.getJSONArray("data"); - if (jsonArray != null) { - jsonArray.forEach(jsonObject -> { - JSONObject process = (JSONObject) jsonObject; + 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"); + } Map<String, Object> params = new HashMap<>(); params.put("docNo", process.getString("DocNo")); params.put("opNum", process.getString("OpNum")); @@ -153,24 +180,76 @@ apsWorkOrderProcess.setOpStatus(process.getString("OpStatus")); apsWorkOrderProcess.setOrg(process.getString("Org")); apsWorkOrderProcess.setOrgCode(process.getString("OrgCode")); - if(existsId!=null){ + if (existsId != null) { apsWorkOrderProcess.setId(existsId); - apsWorkOrderProcessMapper.updateApsWorkOrderProcess(apsWorkOrderProcess); - logger.info("銆怳PDATE銆戣幏鍙栧苟鏇存柊U9宸ュ簭鎴愬姛锛併�愬伐鍗曞彿锛歿}锛屽伐搴忓彿锛歿}銆�", docNos, apsWorkOrderProcess.getOpNum()); - }else{ - apsWorkOrderProcessMapper.insertApsWorkOrderProcess(apsWorkOrderProcess); - logger.info("銆怚NSERT銆戣幏鍙栧苟鎻掑叆U9宸ュ簭鎴愬姛锛併�愬伐鍗曞彿锛歿}, 宸ュ簭鍙凤細{}銆�", docNos, apsWorkOrderProcess.getOpNum()); + updateList.add(apsWorkOrderProcess); + } else { + addList.add(apsWorkOrderProcess); } - }); + if(!nowDocNo.equals(process.getString("DocNo"))){ + //鏇存柊宸ュ崟鍚屾宸ュ簭鐘舵�� + apsWorkOrderJobMapper.updateApsWorkOrderJobPrccessStatus(nowDocNo); + nowDocNo = process.getString("DocNo"); + } + } + if(!updateList.isEmpty()){ + apsWorkOrderProcessMapper.updateApsWorkOrderProcessBatch(updateList); + apsWorkOrderJobLog.setResult("ok update "+updateList.size()); + apsWorkOrderJobLogService.updateApsWorkOrderJobLog(apsWorkOrderJobLog); + logger.info("銆怳PDATE銆戣幏鍙栧苟鏇存柊U9宸ュ簭鎴愬姛锛併�愬伐鍗曞彿锛歿}銆�", docNos); + } + if(!addList.isEmpty()){ + apsWorkOrderProcessMapper.insertApsWorkOrderProcessBatch(addList); + apsWorkOrderJobLog.setResult("ok insert "+updateList.size()); + apsWorkOrderJobLogService.updateApsWorkOrderJobLog(apsWorkOrderJobLog); + logger.info("銆怚NSERT銆戣幏鍙栧苟鎻掑叆U9宸ュ簭鎴愬姛锛併�愬伐鍗曞彿锛歿}銆�", docNos); + } } }else{ + apsWorkOrderJobLog.setResponseData(response.getBody()); + apsWorkOrderJobLog.setResult("fail"); + apsWorkOrderJobLogService.updateApsWorkOrderJobLog(apsWorkOrderJobLog); logger.error("銆怑RROR銆戞煡璇9宸ュ簭澶辫触锛併�愬伐鍗曞彿锛歿}, 閿欒鐮侊細{}锛岄敊璇俊鎭細{}銆�", docNos, responseBodyJson.getString("status"), responseBodyJson.getString("message")); } }else{ logger.warn("銆怶ARNING銆戞湭鏌ヨ鍒癠9宸ュ簭锛併�愬伐鍗曞彿锛歿}銆�", docNos); } } else { - throw new Exception("銆怑RROR銆戣幏鍙朥9宸ュ簭澶辫触锛併�愬伐鍗曞彿锛�"+ docNos +"銆�"); + apsWorkOrderJobLog.setResponseData(response.getBody()); + apsWorkOrderJobLog.setResult("fail"); + apsWorkOrderJobLogService.updateApsWorkOrderJobLog(apsWorkOrderJobLog); + throw new Exception("銆怑RROR銆戞煡璇9宸ュ簭澶辫触锛併�愬伐鍗曞彿锛歿"+ docNos +"}, 閿欒鐮侊細{"+ responseBodyJson.getString("status") +"}锛岄敊璇俊鎭細{"+ responseBodyJson.getString("message") +"}銆�"); + } + } + + @Override + public void syncWorkOrderProcessData() { + try{ + //鍒嗛〉鏌ヨ宸ュ崟 + ApsWorkOrderJob apsWorkOrderJob = new ApsWorkOrderJob(); + apsWorkOrderJob.setProcessStatus("0"); + List<ApsWorkOrderJob> list = apsWorkOrderJobMapper.selectApsWorkOrderJobList(apsWorkOrderJob); + int pageSize = 100; + int allPage = list.size()/pageSize; +// int allPage = 1; + for (int i = 1; i <= allPage; i++) { + long startTime = System.currentTimeMillis(); + PageHelper.startPage(i, pageSize); + List<ApsWorkOrderJob> pageList = apsWorkOrderJobMapper.selectApsWorkOrderJobList(apsWorkOrderJob); + if(!pageList.isEmpty()){ + List<String> docNos = new ArrayList<>(); + for (ApsWorkOrderJob apsWorkOrderJob1 : pageList){ + docNos.add(apsWorkOrderJob1.getDocNo()); + } + getWorkOrderProcessFromU9(docNos); + } + long endTime = System.currentTimeMillis(); // 璁板綍缁撴潫鏃堕棿 + long duration = endTime - startTime; // 璁$畻杩愯鏃堕棿 + System.out.println("杩愯鏃堕棿锛�"+ duration +"姣"); + } + }catch (Exception e){ + e.printStackTrace(); + logger.error(e.getMessage()); } } } -- Gitblit v1.9.3