From 2bdb234b82f18e09a1ab8fd9bd28b44fed9084be Mon Sep 17 00:00:00 2001
From: huangjiayang <5265313@qq.com>
Date: 星期一, 21 四月 2025 10:27:36 +0800
Subject: [PATCH] 【UPDATE】1.修改抓取工单工序定时任务增加可补查之前未查到工序的工单

---
 aps-modules/aps-job/src/main/java/com/aps/job/service/impl/ApsWorkOrderJobServiceImpl.java |  147 +++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 119 insertions(+), 28 deletions(-)

diff --git a/aps-modules/aps-job/src/main/java/com/aps/job/service/impl/ApsWorkOrderJobServiceImpl.java b/aps-modules/aps-job/src/main/java/com/aps/job/service/impl/ApsWorkOrderJobServiceImpl.java
index 50beaae..8f1ad5b 100644
--- a/aps-modules/aps-job/src/main/java/com/aps/job/service/impl/ApsWorkOrderJobServiceImpl.java
+++ b/aps-modules/aps-job/src/main/java/com/aps/job/service/impl/ApsWorkOrderJobServiceImpl.java
@@ -1,13 +1,19 @@
 package com.aps.job.service.impl;
 
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
 
 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 jakarta.annotation.Resource;
+import com.aps.job.domain.ApsWorkOrderJobLog;
+import com.aps.job.mapper.ApsWorkOrderJobLogMapper;
+import com.aps.job.param.ApsWorkOrderJobParam;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpEntity;
@@ -18,6 +24,7 @@
 import com.aps.job.mapper.ApsWorkOrderJobMapper;
 import com.aps.job.domain.ApsWorkOrderJob;
 import com.aps.job.service.IApsWorkOrderJobService;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.client.RestTemplate;
 
 /**
@@ -26,6 +33,7 @@
  * @author zhl
  * @date 2025-04-17
  */
+@Slf4j
 @Service
 public class ApsWorkOrderJobServiceImpl implements IApsWorkOrderJobService 
 {
@@ -41,6 +49,8 @@
     @Autowired
     private RestTemplate restTemplate;
 
+    @Autowired
+    private ApsWorkOrderJobLogMapper jobLogMapper;
 
     /**
      * 鏌ヨ宸ュ崟鍚屾
@@ -117,37 +127,118 @@
     }
 
 
+    /**
+     * 鏍规嵁椤电爜鍏ㄩ噺鍚屾鏁版嵁
+     * */
     @Override
-    public void batchInsertApsWorkOrderJob() {
+    public void batchInsertApsWorkOrderJob(ApsWorkOrderJobParam param) {
 
+        /*鏍规嵁鍙傛暟涓綋鍓嶉〉闈� 鍜� 瑕佺洰鏍囬〉闈� 杩涜寰幆*/
+        for (int idx=param.getPageIndex(); idx<=param.getToPageIndex(); idx++){
+            param.setPageIndex(idx);
+            if (!batchSaveByPager(param)) {
+                return;
+            }
+
+        }
+    }
+    /**
+     * 鏍规嵁鏃堕棿娈垫瘡鏃ユ洿鏂帮紝椤甸潰鑷姩閫掑寰幆鍚屾鏁版嵁
+     * */
+    @Override
+    public void SyncWorkOrderByTime(){
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+        LocalDateTime today = LocalDateTime.now();
+        LocalDate yesterday = LocalDate.now().minusDays(1);
+        LocalDateTime yesterdayMidnight = yesterday.atStartOfDay();
+        boolean continueFlag = true;
+        Integer currentPage = 1;
+        ApsWorkOrderJobParam param=new ApsWorkOrderJobParam();
+        param.setPageIndex(currentPage);
+        param.setDocState(Arrays.asList(0,1,2,4));
+        param.setBeginDate(yesterdayMidnight.format(formatter));
+        param.setEndDate(today.format(formatter));
+        param.setPageSize(1000);
+        while (continueFlag){
+            param.setPageIndex(currentPage);
+            continueFlag= batchSaveByPager(param);
+            currentPage++;
+        }
+    }
+
+    @Transactional
+    @Override
+    public boolean batchSaveByPager(ApsWorkOrderJobParam param) {
         HttpHeaders headers = new HttpHeaders();
         headers.setContentType(MediaType.APPLICATION_JSON);
-        Integer PageIndex=1;
-        Integer PageSize=10;
-        Boolean continueFlag=true;
-      /*  while (continueFlag){*/
-            JSONObject requestBody = new JSONObject();
-            requestBody.put("PageIndex", PageIndex);
-            requestBody.put("PageSize", PageSize);
-            HttpEntity<String> request = new HttpEntity<>(requestBody.toJSONString(), headers);
-            ResponseEntity<String> response = restTemplate.postForEntity(getWorkOrderUrl, request, String.class);
-            if (response.getStatusCode().is2xxSuccessful()) {
-                String responseBody = response.getBody();
-                if(StringUtils.isNotEmpty(responseBody)){
-                    JSONObject responseBodyJson = JSONObject.parseObject(responseBody);
-                    if("200".equals(responseBodyJson.getString("status"))){
-                        JSONArray result = responseBodyJson.getJSONArray("data");
-                        List<ApsWorkOrderJob> jobs = new ArrayList<>();
-                        if (result!=null){
-                            for (int i = 0; i < result.size(); i++) {
-                                ApsWorkOrderJob order = result.getObject(i, ApsWorkOrderJob.class);
-                                jobs.add(order);
-                            }
-                        }
-                        apsWorkOrderJobMapper.batchInsertApsWorkOrderJob(jobs);
-                    }
+        /*璁剧疆褰撳墠椤甸潰*/
+        ApsWorkOrderJobLog jobLog = new ApsWorkOrderJobLog();
+        String requestString = JSONObject.toJSONString(param);
+        HttpEntity<String> request = new HttpEntity<>(requestString, headers);
+        ResponseEntity<String> response = restTemplate.postForEntity(getWorkOrderUrl, request, String.class);
+        jobLog.setRequestData(requestString);
+        jobLog.setPageNum(Long.valueOf(param.getPageIndex()));
+        jobLog.setPageCount(Long.valueOf(param.getPageSize()));
+        jobLog.setCreateTime(DateUtils.getNowDate());
+        jobLog.setBizType("work_order");
+        jobLogMapper.insertApsWorkOrderJobLog(jobLog);
+        if (response.getStatusCode().is2xxSuccessful()) {
+            JSONObject responseBodyJson = JSONObject.parseObject(response.getBody());
+            if ("200".equals(responseBodyJson.getString("status"))) {
+                JSONArray result = responseBodyJson.getJSONArray("data");
+                if (result != null&& !result.isEmpty()) {
+                    int ct= batchInsertApsWorkOrderJob(param, result);
+                    jobLog.setResult("ok save "+ct);
+                    jobLogMapper.updateApsWorkOrderJobLog(jobLog);
+                    return true;
+                }else {
+                    jobLog.setResult("ok receive 0");
+                    jobLogMapper.updateApsWorkOrderJobLog(jobLog);
+                    return false;
                 }
+            } else {
+                jobLog.setResponseData(response.getBody());
+                jobLog.setResult("fail");
+                jobLogMapper.updateApsWorkOrderJobLog(jobLog);
+                return false;
             }
-       /* }*/
+
+        } else {
+            jobLog.setResponseData(response.getBody());
+            jobLog.setResult("fail");
+            jobLogMapper.updateApsWorkOrderJobLog(jobLog);
+            log.info(JSONObject.toJSONString(jobLog));
+            return false;
+        }
+
+    }
+    @Transactional
+    public int batchInsertApsWorkOrderJob(ApsWorkOrderJobParam param, JSONArray result) {
+        List<ApsWorkOrderJob> jobs = new ArrayList<>();
+        List<String> orderIds = new ArrayList<>();
+        for (int i = 0; i < result.size(); i++) {
+            ApsWorkOrderJob order = result.getObject(i, ApsWorkOrderJob.class);
+            JSONObject jsonObject = result.getJSONObject(i);
+            order.setOrderId(jsonObject.get("ID").toString());
+            order.setCreateTime(DateUtils.getNowDate());
+            order.setPageIndex(i);
+            order.setPageNum(param.getPageIndex());
+            order.setDelFlag("0");
+            order.setProcessStatus("0");
+            jobs.add(order);
+            orderIds.add(order.getOrderId());
+        }
+        apsWorkOrderJobMapper.deleteWorkOrderJobByOrderIds(orderIds);
+        return   apsWorkOrderJobMapper.batchInsertApsWorkOrderJob(jobs);
+    }
+
+    /**
+     * 鍚屾闆朵欢宸ュ崟淇℃伅
+     * */
+    @Transactional
+    @Override
+    public void syncPartOrderData() {
+        apsWorkOrderJobMapper.deleteAllPartPlan();
+        apsWorkOrderJobMapper.batchInsertPartPlan();
     }
 }

--
Gitblit v1.9.3