From 5ec8d62c24fc5844d1b88a91398178856ec76b12 Mon Sep 17 00:00:00 2001
From: sfd <sun.sunshine@163.com>
Date: 星期四, 08 五月 2025 15:46:17 +0800
Subject: [PATCH] Merge branch 'dev' of http://192.168.50.149:8085/r/aps-backend into dev
---
aps-modules/aps-job/src/main/java/com/aps/job/service/impl/ApsWorkOrderProcessServiceImpl.java | 237 ++++++++++++++++++++++++++++++++--------------------------
1 files changed, 131 insertions(+), 106 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 3aa537d..9e44d14 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;
@@ -58,9 +58,6 @@
@Autowired
private ApsWorkOrderJobLogMapper apsWorkOrderJobLogMapper;
-
- @Autowired
- private Sequence sequence;
/**
* 鏌ヨ宸ュ崟宸ュ簭
@@ -140,113 +137,132 @@
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 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);
+ }
+ 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"))){
+ //鏇存柊宸ュ崟鍚屾宸ュ簭鐘舵��
+ docNos.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(sequence.nextId());
- 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 "+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);
+ }else{
+ if(!docNos.isEmpty()){
+ Map<String, Object> param = new HashMap<>();
+ param.put("status", "2");
+ param.put("docNos", docNos);
+ apsWorkOrderJobMapper.updateApsWorkOrderJobPrccessStatus(param);
+ apsWorkOrderJobLog.setRequestData(requestBody.toJSONString());
+ apsWorkOrderJobLog.setResponseData(response.getBody());
+ apsWorkOrderJobLog.setResult("empty");
+ apsWorkOrderJobLog.setUpdateTime(DateUtils.getNowDate());
+ apsWorkOrderJobLogService.updateApsWorkOrderJobLog(apsWorkOrderJobLog);
+ }
+ break;
}
- if(!updateList.isEmpty()){
- apsWorkOrderProcessMapper.updateApsWorkOrderProcessBatch(updateList);
- apsWorkOrderJobLog.setResult("ok update "+updateList.size());
- 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());
- 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");
- 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");
- apsWorkOrderJobLogService.updateApsWorkOrderJobLog(apsWorkOrderJobLog);
- throw new Exception("銆怑RROR銆戞煡璇9宸ュ簭澶辫触锛併�愬伐鍗曞彿锛歿"+ docNos +"}, 閿欒鐮侊細{"+ responseBodyJson.getString("status") +"}锛岄敊璇俊鎭細{"+ responseBodyJson.getString("message") +"}銆�");
}
}
@@ -261,10 +277,9 @@
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);
if(!pageList.isEmpty()){
long startTime = System.currentTimeMillis();
@@ -273,6 +288,10 @@
docNos.add(apsWorkOrderJob1.getDocNo());
}
getWorkOrderProcessFromU9(docNos);
+ if(String.join(",", docNos).equals(lastDocNos)){
+ break;
+ }
+ lastDocNos = String.join(",", docNos);
long endTime = System.currentTimeMillis(); // 璁板綍缁撴潫鏃堕棿
long duration = endTime - startTime; // 璁$畻杩愯鏃堕棿
System.out.println("杩愯鏃堕棿锛�"+ duration +"姣");
@@ -340,4 +359,10 @@
}
return true;
}
+
+ @Override
+ public void syncProcessRouteData() {
+ apsWorkOrderProcessMapper.deleteApsProcessRoute();
+ apsWorkOrderProcessMapper.insertIntoApsProcessRoute();
+ }
}
--
Gitblit v1.9.3