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 |   99 ++++++++++++++++++++++++++++---------------------
 1 files changed, 56 insertions(+), 43 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 2920438..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
@@ -23,6 +23,7 @@
 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;
@@ -131,8 +132,12 @@
         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);
@@ -150,13 +155,11 @@
             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"))){
@@ -165,18 +168,18 @@
                             List<ApsWorkOrderProcess> addList = new ArrayList<>();
                             List<ApsWorkOrderProcess> updateList = new ArrayList<>();
                             String nowDocNo = null;
-                            for (Object o : jsonArray) {
-                                JSONObject process = (JSONObject) o;
+                            for (int i = 0,size=jsonArray.size();i<size;i++) {
+                                JSONObject process = jsonArray.getJSONObject(i);
                                 if (nowDocNo == null) {
                                     nowDocNo = process.getString("DocNo");
-                                    docNos.remove(nowDocNo);
+                                    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);
+//                                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"));
@@ -192,20 +195,20 @@
                                 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 {
+//                                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"))){
+//                                }
+                                if(!nowDocNo.equals(process.getString("DocNo")) || i==size-1){
                                     //鏇存柊宸ュ崟鍚屾宸ュ簭鐘舵��
-                                    docNos.remove(nowDocNo);
+                                    noProcessDocNos.remove(nowDocNo);
                                     haveProcessDocNos.add(nowDocNo);
                                     nowDocNo = process.getString("DocNo");
                                 }
@@ -219,28 +222,11 @@
                             }
                             if(!addList.isEmpty()){
                                 apsWorkOrderProcessMapper.insertApsWorkOrderProcessBatch(addList);
-                                apsWorkOrderJobLog.setResult("ok insert "+updateList.size());
+                                apsWorkOrderJobLog.setResult("ok insert "+addList.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(jsonArray.size()<1000){
                             break;
@@ -264,11 +250,29 @@
                 throw new Exception("銆怑RROR銆戞煡璇9宸ュ簭澶辫触锛併�愬伐鍗曞彿锛歿"+ docNos +"}, 閿欒鐮侊細{"+ responseBodyJson.getString("status") +"}锛岄敊璇俊鎭細{"+ responseBodyJson.getString("message") +"}銆�");
             }
         }
+        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);
+        }
     }
 
     @Override
     public void syncWorkOrderProcessData(String status, Integer pageSize) {
         try{
+            Integer pageNum = 1;
             //鍒嗛〉鏌ヨ宸ュ崟
             ApsWorkOrderJob apsWorkOrderJob = new ApsWorkOrderJob();
             if("".equals(status)){
@@ -281,6 +285,7 @@
                 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<>();
@@ -292,15 +297,14 @@
                             break;
                         }
                         lastDocNos = String.join(",", docNos);
-                        long endTime = System.currentTimeMillis(); // 璁板綍缁撴潫鏃堕棿
-                        long duration = endTime - startTime; // 璁$畻杩愯鏃堕棿
-                        System.out.println("杩愯鏃堕棿锛�"+ duration +"姣");
                     }
+                    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<>();
@@ -311,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){
@@ -359,4 +361,15 @@
         }
         return true;
     }
+
+    @Override
+    public void syncProcessRouteData() {
+        apsWorkOrderProcessMapper.deleteApsProcessRoute();
+        apsWorkOrderProcessMapper.insertIntoApsProcessRoute();
+    }
+
+    @Override
+    public void deleteApsWorkOrderProcess() {
+        apsWorkOrderProcessMapper.deleteApsWorkOrderProcess();
+    }
 }

--
Gitblit v1.9.3