From d320f67a7edbe887baac890a639c16e78432f2a3 Mon Sep 17 00:00:00 2001
From: huangjiayang <5265313@qq.com>
Date: 星期二, 29 四月 2025 13:40:46 +0800
Subject: [PATCH] 【UPDATE】修改实体日期属性

---
 aps-modules/aps-job/src/main/java/com/aps/job/service/impl/ApsWorkOrderProcessServiceImpl.java |  212 +++++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 190 insertions(+), 22 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..220c6e7 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,14 +1,22 @@
 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.job.domain.ApsWorkOrderJob;
+import com.aps.job.domain.ApsWorkOrderJobLog;
 import com.aps.job.domain.ApsWorkOrderProcess;
+import com.aps.job.mapper.ApsWorkOrderJobLogMapper;
+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 +25,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 +44,20 @@
 
     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;
+
+    @Autowired
+    private ApsWorkOrderJobLogMapper apsWorkOrderJobLogMapper;
 
     /**
      * 鏌ヨ宸ュ崟宸ュ簭
@@ -121,19 +139,36 @@
         // 璁剧疆璇锋眰浣�
         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()) {
-            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");
+                                docNos.remove(nowDocNo);
+                                haveProcessDocNos.add(nowDocNo);
+                            }
                             Map<String, Object> params = new HashMap<>();
                             params.put("docNo", process.getString("DocNo"));
                             params.put("opNum", process.getString("OpNum"));
@@ -144,33 +179,166 @@
                             apsWorkOrderProcess.setDocNo(process.getString("DocNo"));
                             apsWorkOrderProcess.setOpNum(process.getString("OpNum"));
                             apsWorkOrderProcess.setOpId(process.getString("OpID"));
-                            apsWorkOrderProcess.setProcessName(process.getString("WorkCenter"));
-                            apsWorkOrderProcess.setStandardTime(process.getFloat("StandardTime"));
+                            apsWorkOrderProcess.setProcessName(process.getString("StdOp"));
+                            apsWorkOrderProcess.setStandardTime(process.getBigDecimal("StandardTime"));
                             apsWorkOrderProcess.setPalnStartDate(process.getDate("PlanStartDate"));
                             apsWorkOrderProcess.setPlanCompleteDate(process.getDate("PlanCompleteDate"));
-                            apsWorkOrderProcess.setProcessQty(process.getFloat("ProcessQty"));
-                            apsWorkOrderProcess.setScrapQty(process.getFloat("ScrapQty"));
+                            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"));
-                            if(existsId!=null){
+                            apsWorkOrderProcess.setWorkCenter(process.getString("WorkCenter"));
+                            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());
+                                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");
+                            }
+                        }
+                        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(!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);
                     }
                 }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{
                 logger.warn("銆怶ARNING銆戞湭鏌ヨ鍒癠9宸ュ簭锛併�愬伐鍗曞彿锛歿}銆�", docNos);
             }
         } else {
-            throw new Exception("銆怑RROR銆戣幏鍙朥9宸ュ簭澶辫触锛併�愬伐鍗曞彿锛�"+ docNos +"銆�");
+            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") +"}銆�");
         }
     }
+
+    @Override
+    public void syncWorkOrderProcessData(String status, Integer pageSize) {
+        try{
+            //鍒嗛〉鏌ヨ宸ュ崟
+            ApsWorkOrderJob apsWorkOrderJob = new ApsWorkOrderJob();
+            if("".equals(status)){
+                status = "0";
+            }
+            apsWorkOrderJob.setProcessStatus(status);
+            // 琛ユ煡涔嬪墠娌℃湁鏌ュ埌宸ュ簭鐨勫伐鍗�
+            if("2".equals(status)){
+                int total = apsWorkOrderJobMapper.selectApsWorkOrderJobListDocNoNotNull(apsWorkOrderJob).size();
+                int pages = total % pageSize == 0 ? total / pageSize : total / pageSize + 1;
+                for (int i = 1; i <= pages; i++){
+                    PageHelper.startPage(i, pageSize);
+                    List<ApsWorkOrderJob> pageList = apsWorkOrderJobMapper.selectApsWorkOrderJobList(apsWorkOrderJob);
+                    if(!pageList.isEmpty()){
+                        long startTime = System.currentTimeMillis();
+                        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 +"姣");
+                    }
+                }
+            }else{
+                while (true){
+                    PageHelper.startPage(1, pageSize);
+                    List<ApsWorkOrderJob> pageList = apsWorkOrderJobMapper.selectApsWorkOrderJobList(apsWorkOrderJob);
+                    if(!pageList.isEmpty()){
+                        long startTime = System.currentTimeMillis();
+                        List<String> docNos = new ArrayList<>();
+                        for (ApsWorkOrderJob apsWorkOrderJob1 : pageList){
+                            if(apsWorkOrderJob1.getDocNo()!=null){
+                                docNos.add(apsWorkOrderJob1.getDocNo());
+                            }
+                        }
+                        if(!docNos.isEmpty()){
+                            getWorkOrderProcessFromU9(docNos);
+                            long endTime = System.currentTimeMillis(); // 璁板綍缁撴潫鏃堕棿
+                            long duration = endTime - startTime; // 璁$畻杩愯鏃堕棿
+                            System.out.println("杩愯鏃堕棿锛�"+ duration +"姣");
+                        }else{
+                            break;
+                        }
+                    }else{
+                        break;
+                    }
+                }
+            }
+        }catch (Exception e){
+            e.printStackTrace();
+            logger.error(e.getMessage());
+        }
+    }
+
+    @Override
+    public void insertIntoApsProcessRoute() {
+        apsWorkOrderProcessMapper.insertIntoApsProcessRoute();
+    }
+
+    @Override
+    public void deleteApsProcessRoute() {
+        apsWorkOrderProcessMapper.deleteApsProcessRoute();
+    }
+
+    @Override
+    public boolean retryRequestWorkOrderProcessByLogId(Long id) {
+        try {
+            ApsWorkOrderJobLog apsWorkOrderJobLog = apsWorkOrderJobLogMapper.selectApsWorkOrderJobLogById(id);
+            JSONObject requestBodyJson = JSONObject.parseObject(apsWorkOrderJobLog.getRequestData());
+            JSONArray docListArray = requestBodyJson.getJSONArray("DocList");
+            List<String> docNos = new ArrayList<>();
+            for (int i = 0; i < docListArray.size(); i++) {
+                if(docListArray.getString(i)!=null){
+                    docNos.add(docListArray.getString(i));
+                }
+            }
+            if(!docNos.isEmpty()){
+                getWorkOrderProcessFromU9(docNos);
+            }
+        }catch (Exception e){
+            e.printStackTrace();
+            return false;
+        }
+        return true;
+    }
 }

--
Gitblit v1.9.3