From 991dfb176737ab9d8d686a10a8ef6ec776431b55 Mon Sep 17 00:00:00 2001
From: lsh <lsh@163.com>
Date: 星期六, 19 十月 2024 13:52:52 +0800
Subject: [PATCH] *

---
 src/main/java/com/zy/asrs/task/RgvTaskReportingScheduler.java             |   43 +++
 src/main/java/com/zy/asrs/task/escalationParam/RgvTaskReportingParam.java |   39 +++
 src/main/java/com/zy/asrs/utils/TimeCalculatorUtils.java                  |  387 ++++++++++++++++++++++++++++++++
 src/main/java/com/zy/asrs/controller/OpenController.java                  |   11 
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java               |    3 
 src/main/java/com/zy/asrs/entity/param/WcsTaskDistributionParam.java      |    2 
 src/main/resources/mapper/WrkMastMapper.xml                               |    2 
 src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java                |   44 +++
 /dev/null                                                                 |   19 -
 src/main/java/com/zy/asrs/service/WrkMastService.java                     |    2 
 src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java            |    5 
 src/main/java/com/zy/asrs/mapper/WrkMastMapper.java                       |    3 
 src/main/java/com/zy/asrs/task/WorkLogScheduler.java                      |   44 +++
 src/main/java/com/zy/asrs/task/handler/RgvTaskReportingHandler.java       |  100 ++++++++
 src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java               |    4 
 15 files changed, 676 insertions(+), 32 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/OpenController.java b/src/main/java/com/zy/asrs/controller/OpenController.java
index 13cc43f..025bc5b 100644
--- a/src/main/java/com/zy/asrs/controller/OpenController.java
+++ b/src/main/java/com/zy/asrs/controller/OpenController.java
@@ -57,17 +57,6 @@
     }
 
 
-    /**
-     * 搴撳瓨缁熻
-     */
-    @RequestMapping("/stock/default/v1")
-    public R queryStock(@RequestHeader(required = false) String appkey,
-                        HttpServletRequest request) {
-        auth(appkey, null, request);
-        return R.ok().add(openService.queryStock());
-    }
-
-
     private void auth(String appkey, Object obj, HttpServletRequest request) {
         log.info("{}鎺ュ彛琚闂紱appkey:{}锛涜姹傛暟鎹細{}", "open/sensorType/list/auth/v1", appkey, JSON.toJSONString(obj));
         request.setAttribute("cache", obj);
diff --git a/src/main/java/com/zy/asrs/entity/param/WcsTaskDistributionParam.java b/src/main/java/com/zy/asrs/entity/param/WcsTaskDistributionParam.java
index 601973a..7beafb5 100644
--- a/src/main/java/com/zy/asrs/entity/param/WcsTaskDistributionParam.java
+++ b/src/main/java/com/zy/asrs/entity/param/WcsTaskDistributionParam.java
@@ -20,7 +20,7 @@
         add(131);add(132);add(133);
     }};
 
-    private Integer taskNo;//宸ヤ綔鍙�
+    private Long taskNo;//宸ヤ綔鍙�
     private String startSta;//璧风偣
     private String endSta;//缁堢偣
 
diff --git a/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java b/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java
index 60a15b5..a00872f 100644
--- a/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java
@@ -11,6 +11,9 @@
 @Repository
 public interface WrkMastMapper extends BaseMapper<WrkMast> {
 
+    @Insert("insert into asr_wrk_mast_log select * from asr_wrk_mast where wrk_no=#{workNo}")
+    int saveLog(Long workNo);
+
     WrkMast selectByLocNo(@Param("sourceLocNo") String sourceLocNo);
 
     WrkMast selectByLocNo1(@Param("sourceLocNo") String sourceLocNo);
diff --git a/src/main/java/com/zy/asrs/service/WrkMastService.java b/src/main/java/com/zy/asrs/service/WrkMastService.java
index 67469f8..5b3dc51 100644
--- a/src/main/java/com/zy/asrs/service/WrkMastService.java
+++ b/src/main/java/com/zy/asrs/service/WrkMastService.java
@@ -7,6 +7,8 @@
 
 public interface WrkMastService extends IService<WrkMast> {
 
+    boolean saveLog(Long workNo);
+
     int getWorkingMast(Integer devpNo);
 
     List<WrkMast> selectToBeCompleteData();
diff --git a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
index 6ccfbbe..0bb8258 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -179,6 +179,8 @@
                         break runRgv;
                     }
                     wrkMast.setWrkSts(2L);
+                    wrkMast.setRgvNo(rgvProtocol.getRgvNo());
+                    wrkMast.setAppeTime(new Date());
                     try{
                         wrkMastService.updateById(wrkMast);
                         continue ;
@@ -225,6 +227,7 @@
                         break;
                     }
                     wrkMast.setWrkSts(3L);
+                    wrkMast.setAppeTime(new Date());
                     wrkMastService.updateById(wrkMast);
                 }
             }
diff --git a/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
index 3a3a1ea..356576c 100644
--- a/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
@@ -12,6 +12,7 @@
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -33,6 +34,7 @@
     @Override
     @Transactional
     public R wcsTaskDistribution(WcsTaskDistributionParam param) {
+        Date now = new Date();
         WrkMast wrkMast1 = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", param.getTaskNo()));
         if (!Cools.isEmpty(wrkMast1)){
             return R.error("宸ヤ綔鍙峰凡瀛樺湪").add("宸ヤ綔鍙峰凡瀛樺湪锛宼askNo="+param.getTaskNo());
@@ -43,6 +45,8 @@
         wrkMast.setStaNo(param.getEndSta$());
         wrkMast.setWrkSts(1L);
         wrkMast.setIoType(1);
+        wrkMast.setModiTime(now);
+        wrkMast.setAppeTime(now);
         wrkMastService.insert(wrkMast);
         return R.ok();
     }
diff --git a/src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java
index 8c0b9e9..2079892 100644
--- a/src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java
@@ -13,6 +13,11 @@
 public class WrkMastServiceImpl extends ServiceImpl<WrkMastMapper, WrkMast> implements WrkMastService {
 
     @Override
+    public boolean saveLog(Long workNo) {
+        return this.baseMapper.saveLog(workNo) > 0;
+    }
+
+    @Override
     public int getWorkingMast(Integer devpNo) {
         return selectCount(new EntityWrapper<WrkMast>().eq("source_sta_no", devpNo).in("wrk_sts", 1, 6));
     }
diff --git a/src/main/java/com/zy/asrs/task/RgvTaskReportingScheduler.java b/src/main/java/com/zy/asrs/task/RgvTaskReportingScheduler.java
new file mode 100644
index 0000000..c6bc4b7
--- /dev/null
+++ b/src/main/java/com/zy/asrs/task/RgvTaskReportingScheduler.java
@@ -0,0 +1,43 @@
+package com.zy.asrs.task;
+
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.zy.asrs.entity.WrkMast;
+import com.zy.asrs.service.WrkMastService;
+import com.zy.asrs.task.core.ReturnT;
+import com.zy.asrs.task.handler.RgvTaskReportingHandler;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+/**
+ * Created by Monkey D. Luffy on 2024.10.19
+ * 骞夸笢娴风帥..............浠ヤ笅.............鐜┛璋冨害.............浠诲姟瀹屾垚淇℃伅涓婁紶
+ */
+@Slf4j
+@Component
+public class RgvTaskReportingScheduler {
+
+    @Autowired
+    private WrkMastService wrkMastService;
+    @Autowired
+    private RgvTaskReportingHandler rgvTaskReportingHandler;
+
+    @Scheduled(cron = "0/3 * * * * ? ")
+    private void execute(){//浠诲姟瀹屾垚淇℃伅涓婁紶
+        List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("wrk_sts", 3L));
+        for (WrkMast wrkMast : wrkMasts){
+            try{
+                ReturnT<String> result = rgvTaskReportingHandler.start(wrkMast);
+                if (result.getCode()==200){
+                    break;
+                }
+            }catch (Exception e){
+                log.error("宸ヤ綔鍙�"+wrkMast.getWrkNo()+"浠诲姟瀹屾垚淇℃伅涓婁紶澶勭悊澶辫触锛屽紓甯镐俊鎭細"+e);
+            }
+        }
+    }
+
+}
diff --git a/src/main/java/com/zy/asrs/task/WorkLogScheduler.java b/src/main/java/com/zy/asrs/task/WorkLogScheduler.java
new file mode 100644
index 0000000..a3ad25d
--- /dev/null
+++ b/src/main/java/com/zy/asrs/task/WorkLogScheduler.java
@@ -0,0 +1,44 @@
+package com.zy.asrs.task;
+
+import com.zy.asrs.entity.WrkMast;
+import com.zy.asrs.service.WrkMastService;
+import com.zy.asrs.task.core.ReturnT;
+import com.zy.asrs.task.handler.WorkLogHandler;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+/**
+ * Created by vincent on 2020/7/7
+ */
+@Slf4j
+@Component
+public class WorkLogScheduler {
+
+    @Autowired
+    private WorkLogHandler workLogHandler;
+    @Autowired
+    private WrkMastService wrkMastService;
+
+    @Scheduled(cron = "0/3 * * * * ? ")
+    private void execute(){
+        List<WrkMast> wrkMasts = wrkMastService.selectToBeHistoryData();
+        if (wrkMasts.isEmpty()) {
+            return;
+        }
+        for (WrkMast wrkMast : wrkMasts) {
+            try{
+                ReturnT<String> result = workLogHandler.start(wrkMast);
+                if (!result.isSuccess()) {
+                    log.error("宸ヤ綔妗workNo={}]鍘嗗彶妗e鐞嗗け璐�", wrkMast.getWrkNo());
+                }
+            } catch (Exception e){
+
+            }
+        }
+    }
+
+}
diff --git a/src/main/java/com/zy/asrs/task/escalationParam/RgvTaskReportingParam.java b/src/main/java/com/zy/asrs/task/escalationParam/RgvTaskReportingParam.java
new file mode 100644
index 0000000..966e130
--- /dev/null
+++ b/src/main/java/com/zy/asrs/task/escalationParam/RgvTaskReportingParam.java
@@ -0,0 +1,39 @@
+package com.zy.asrs.task.escalationParam;
+
+import com.zy.asrs.entity.WrkMast;
+import com.zy.asrs.utils.TimeCalculatorUtils;
+import lombok.Data;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/*
+ *  Created by Monkey D. Luffy on 2023.07.19
+ * */
+@Data
+public class RgvTaskReportingParam {
+    private String taskNo;      //  鏄�	瀛楃涓� 宸ヤ綔鍙�
+    private Long during;      //  鏄�	瀛楃涓� 浣滀笟鏃堕暱
+    private String rgvNo;       //  鏄�	瀛楃涓� 浣滀笟灏忚溅缂栧彿
+    private String startSta;    //  鏄�	瀛楃涓� 璧峰浣滀笟绔欙紙鐜┛锛�
+    private String endSta;      //  鏄�	瀛楃涓� 鐩爣浣滀笟绔欙紙鐜┛锛�
+    private Integer status;     //  鏄�	瀛楃涓� 浠诲姟鐘舵��  1锛氬垵濮�  2锛氫綔涓氫腑  3锛氬畬鎴�
+    private String startTime;  //  鏄�	瀛楃涓� 寮�濮嬫椂闂达紙鏍煎紡锛歽yyy--MM-dd HH:mm:ss)
+    private String endTime;    //  鏄�	瀛楃涓� 缁撴潫鏃堕棿锛堟牸寮忥細yyyy--MM-dd HH:mm:ss)
+    private List<String> error = new ArrayList<>();       //  鏄�	瀛楃涓� 寮傚父淇℃伅锛堝鏃犲紓甯稿垯涓虹┖鏁扮粍锛�
+
+
+    public RgvTaskReportingParam(){}
+
+    public RgvTaskReportingParam(WrkMast wrkMast){
+        this.taskNo = wrkMast.getWrkNo().toString();
+        this.rgvNo = wrkMast.getRgvNo().toString();
+        this.startTime = wrkMast.getModiTime$();
+        this.endTime = wrkMast.getAppeTime$();
+        this.startSta = wrkMast.getSourceStaNo().toString();
+        this.endSta = wrkMast.getStaNo().toString();
+        this.during = TimeCalculatorUtils.differenceInMilliseconds(wrkMast.getModiTime(),wrkMast.getAppeTime());
+        this.status = wrkMast.getWrkSts().intValue();
+        this.error.add(wrkMast.getErrorMemo());
+    }
+}
diff --git a/src/main/java/com/zy/asrs/task/escalationParam/ScaleEscalationParam.java b/src/main/java/com/zy/asrs/task/escalationParam/ScaleEscalationParam.java
deleted file mode 100644
index 2d6744c..0000000
--- a/src/main/java/com/zy/asrs/task/escalationParam/ScaleEscalationParam.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package com.zy.asrs.task.escalationParam;
-
-import lombok.Data;
-
-/*
- *  Created by Monkey D. Luffy on 2023.07.19
- * */
-@Data
-public class ScaleEscalationParam {
-    private String barcode;//	鏄�	瀛楃涓�	鎵樼洏鐮�
-    private String boxType;//	鏄�	瀛楃涓�	鐮佸灈鏈ㄧ绫诲瀷锛堝悓涓�鎵樼洏涓�绉嶇被鍨嬶級
-    private String palletizingNo;//	鏄�	瀛楃涓�	鐮佸灈鏈ㄧ绫诲瀷锛堝悓涓�鎵樼洏涓�绉嶇被鍨嬶級  搴熷純
-    private String createTime;//		鏄�	瀛楃涓�	鍒涘缓鏃堕棿
-    private Double weight;//		鏄�	瀛楃涓�	鍒涘缓鏃堕棿
-    private Integer devNo;//		鏄�	瀛楃涓�	鏃堕棿鎴�
-
-
-    public ScaleEscalationParam(){}
-
-    public ScaleEscalationParam(Double weight,Integer devNo){
-        this.weight = weight;
-        this.devNo = devNo;
-    }
-}
diff --git a/src/main/java/com/zy/asrs/task/escalationParam/StaEscalationParam.java b/src/main/java/com/zy/asrs/task/escalationParam/StaEscalationParam.java
deleted file mode 100644
index 0bd36a3..0000000
--- a/src/main/java/com/zy/asrs/task/escalationParam/StaEscalationParam.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package com.zy.asrs.task.escalationParam;
-
-import lombok.Data;
-
-/*
- *  Created by Monkey D. Luffy on 2023.07.19
- * */
-@Data
-public class StaEscalationParam {
-    private String uuid;//		鏄�	瀛楃涓�	鏃堕棿鎴�
-    private String matnr;//		鏄�	瀛楃涓�	鏃堕棿鎴�
-    private String batch;//		鏄�	瀛楃涓�	鏃堕棿鎴�
-    private String orderNo;//		鏄�	瀛楃涓�	鏃堕棿鎴�
-    private String taskNo;//		鏄�	瀛楃涓�	鏃堕棿鎴�
-    private Integer ioType;//		鏄�	瀛楃涓�	鏃堕棿鎴�
-    private Integer devNo;//		鏄�	瀛楃涓�	鏃堕棿鎴�
-    private Double weight;//		鏄�	瀛楃涓�	鏃堕棿鎴�
-    private String wrkno;//		鏄�	瀛楃涓�	鏃堕棿鎴�
-}
diff --git a/src/main/java/com/zy/asrs/task/handler/RgvTaskReportingHandler.java b/src/main/java/com/zy/asrs/task/handler/RgvTaskReportingHandler.java
new file mode 100644
index 0000000..597bfa5
--- /dev/null
+++ b/src/main/java/com/zy/asrs/task/handler/RgvTaskReportingHandler.java
@@ -0,0 +1,100 @@
+package com.zy.asrs.task.handler;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.core.exception.CoolException;
+import com.zy.asrs.entity.WrkMast;
+import com.zy.asrs.service.ApiLogService;
+import com.zy.asrs.service.WrkMastService;
+import com.zy.asrs.task.AbstractHandler;
+import com.zy.asrs.task.core.ReturnT;
+import com.zy.asrs.task.escalationParam.RgvTaskReportingParam;
+import com.zy.common.utils.HttpHandler;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
+
+/**
+ * Created by Monkey D. Luffy on 2024.10.19
+ * 骞夸笢娴风帥..............浠ヤ笅.............鐜┛璋冨害.............浠诲姟瀹屾垚淇℃伅涓婁紶
+ */
+@Slf4j
+@Service
+@Transactional
+public class RgvTaskReportingHandler extends AbstractHandler<String> {
+
+    @Autowired
+    private WrkMastService wrkMastService;
+    @Autowired
+    private ApiLogService apiLogService;
+
+//    @Value("${srHangJia.url}")
+    private String erpUrl = "192.168.18.229:16126";
+//    @Value("${srHangJia.reportOutPath}")
+    private String reportOutPath = "open/rcs/task/cs/up/default/v1";
+
+    public ReturnT<String> start(WrkMast wrkMast) {
+        try {
+            Date now = new Date();
+            RgvTaskReportingParam rgvTaskReportingParam = new RgvTaskReportingParam(wrkMast);
+            ReturnT<String> result = postMesData(reportOutPath,rgvTaskReportingParam);
+            if (result.getCode()==200){
+                wrkMast.setWrkSts(4L);
+                wrkMast.setAppeTime(now);
+                wrkMastService.updateById(wrkMast);
+                return SUCCESS;
+            }else {
+                log.error("浠诲姟瀹屾垚淇℃伅涓婁紶澶辫触");
+            }
+        }catch (Exception e){
+            log.error("浠诲姟瀹屾垚淇℃伅涓婁紶寮傚父锛侊紒锛�"+e);
+            return FAIL;
+        }
+        return FAIL;
+    }
+
+    private ReturnT<String> postMesData(String erpPath,Object combParam){
+        if(combParam != null){
+            String response = "";
+            boolean success = false;
+            try {
+                response = new HttpHandler.Builder()
+                        .setUri(erpUrl)
+                        .setPath(erpPath)
+                        .setJson(JSON.toJSONString(combParam))
+                        .build()
+                        .doPost();
+                JSONObject jsonObject = JSON.parseObject(response);
+                if (jsonObject.getInteger("code")==200) {
+                    success = true;
+                } else {
+                    log.error("浠诲姟瀹屾垚淇℃伅涓婁紶璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}"+erpUrl+erpPath, JSON.toJSONString(combParam), response);
+                    throw new CoolException("涓婃姤wcs绯荤粺澶辫触");
+                }
+            } catch (Exception e) {
+                log.error("fail:涓婃姤wcs绯荤粺澶辫触==>", e);
+//                      TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                return FAIL.setMsg(e.getMessage());
+            } finally {
+                try {
+                    // 淇濆瓨鎺ュ彛鏃ュ織
+                    apiLogService.save(
+                            "涓婃姤wcs绯荤粺",
+                            erpUrl + erpPath,
+                            null,
+                            erpUrl,
+                            JSON.toJSONString(combParam),
+                            response,
+                            success
+                    );
+                } catch (Exception e) {
+                    log.error("浠诲姟瀹屾垚淇℃伅涓婁紶淇濆瓨鎺ュ彛鏃ュ織寮傚父锛屽紓甯镐俊鎭細", e);
+                }
+            }
+        }
+        return SUCCESS;
+    }
+}
diff --git a/src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java b/src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java
new file mode 100644
index 0000000..14cc3fc
--- /dev/null
+++ b/src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java
@@ -0,0 +1,44 @@
+package com.zy.asrs.task.handler;
+
+import com.zy.asrs.entity.WrkMast;
+import com.zy.asrs.service.WrkMastService;
+import com.zy.asrs.task.AbstractHandler;
+import com.zy.asrs.task.core.ReturnT;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.transaction.interceptor.TransactionAspectSupport;
+
+/**
+ * Created by Monkey D. Luffy on 2024.10.19
+ * 骞夸笢娴风帥..............浠ヤ笅.............鐜┛璋冨害.............浠诲姟瀹屾垚淇℃伅涓婁紶
+ */
+@Slf4j
+@Service
+public class WorkLogHandler extends AbstractHandler<String> {
+
+    @Autowired
+    private WrkMastService wrkMastService;
+
+    @Transactional
+    public ReturnT<String> start(WrkMast wrkMast) {
+        try {
+            // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗�
+            if (!wrkMastService.saveLog(wrkMast.getWrkNo())) {
+                exceptionHandle("淇濆瓨宸ヤ綔鍘嗗彶妗workNo={0}]澶辫触", wrkMast.getWrkNo());
+            }
+            // 鍒犻櫎宸ヤ綔涓绘。
+            if (!wrkMastService.deleteById(wrkMast)) {
+                exceptionHandle("鍒犻櫎宸ヤ綔涓绘。[workNo={0}]澶辫触", wrkMast.getWrkNo());
+            }
+        } catch (Exception e) {
+            log.error("fail", e);
+            e.printStackTrace();
+            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+            return FAIL.setMsg(e.getMessage());
+        }
+        return SUCCESS;
+    }
+
+}
diff --git a/src/main/java/com/zy/asrs/utils/TimeCalculatorUtils.java b/src/main/java/com/zy/asrs/utils/TimeCalculatorUtils.java
new file mode 100644
index 0000000..e151d94
--- /dev/null
+++ b/src/main/java/com/zy/asrs/utils/TimeCalculatorUtils.java
@@ -0,0 +1,387 @@
+package com.zy.asrs.utils;
+
+import java.time.DayOfWeek;
+import java.time.LocalDate;
+import java.time.ZoneId;
+import java.time.temporal.ChronoUnit;
+import java.time.temporal.TemporalAdjusters;
+import java.time.temporal.WeekFields;
+import java.util.*;
+
+public class TimeCalculatorUtils {
+
+    //鑾峰彇褰撳墠鏃堕棿鐨勫皬鏃舵暟锛�24灏忔椂鍒讹級锛�
+    public static int nowTimeHour(){
+        // 鑾峰彇褰撳墠鏃堕棿鎴�
+        long timestamp = System.currentTimeMillis();
+
+        // 鍒涘缓Date瀵硅薄锛屽苟璁剧疆鏃堕棿鎴�
+        Date date = new Date(timestamp);
+
+        // 鍒涘缓TimeZone瀵硅薄锛岃缃负涓浗鍖椾含鏃堕棿
+        TimeZone timeZone = TimeZone.getTimeZone("Asia/Shanghai");
+
+        // 鍒涘缓Calendar瀵硅薄锛屽苟璁剧疆鏃跺尯
+        // 娉ㄦ剰锛欳alendar绫讳腑鐨勬湀浠芥槸浠�0寮�濮嬬殑锛屾墍浠ラ渶瑕佸噺鍘�1
+        Calendar calendar = Calendar.getInstance(timeZone);
+        calendar.setTime(date);
+
+        // 鑾峰彇褰撳墠灏忔椂鏁帮紙24灏忔椂鍒讹級
+        return calendar.get(Calendar.HOUR_OF_DAY);
+    }
+
+    //鑾峰彇褰撳ぉ灏忔椂鏁帮紙24灏忔椂鍒讹級涓浗鍖椾含鏃堕棿锛�
+    public static int timeTimeHour(Date date){
+        // 鍒涘缓TimeZone瀵硅薄锛岃缃负涓浗鍖椾含鏃堕棿
+        TimeZone timeZone = TimeZone.getTimeZone("Asia/Shanghai");
+
+        // 鍒涘缓Calendar瀵硅薄锛屽苟璁剧疆鏃跺尯
+        // 娉ㄦ剰锛欳alendar绫讳腑鐨勬湀浠芥槸浠�0寮�濮嬬殑锛屾墍浠ラ渶瑕佸噺鍘�1
+        Calendar calendar = Calendar.getInstance(timeZone);
+        calendar.setTime(date);
+
+        // 鑾峰彇褰撳墠灏忔椂鏁帮紙24灏忔椂鍒讹級
+        return calendar.get(Calendar.HOUR_OF_DAY);
+    }
+
+    //鑾峰彇鍓嶄竴澶╃殑鏃ユ湡锛堟棩鏈熷ぉ鏁板噺涓�锛�
+    public static Date timeYesterday(Date date){
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTime(date);
+        calendar.add(Calendar.DAY_OF_MONTH, -1);
+        return calendar.getTime();
+    }
+
+    //鑾峰彇涓冨ぉ鍓嶇殑鏃ユ湡锛堟棩鏈熷ぉ鏁板噺涓冿級
+    public static Date timeFrontSevenYesterday(Date date){
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTime(date);
+        calendar.add(Calendar.DAY_OF_MONTH, -7);
+        return calendar.getTime();
+    }
+
+    //鑾峰彇涓冨ぉ鍚庣殑鏃ユ湡锛堟棩鏈熷ぉ鏁板姞涓冿級
+    public static Date timeAfterSevenYesterday(Date date){
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTime(date);
+        calendar.add(Calendar.DAY_OF_MONTH, 7);
+        return calendar.getTime();
+    }
+
+    //鑾峰彇鐩稿樊n澶╃殑鏃ユ湡锛堟棩鏈熷ぉ鏁板姞N锛�
+    public static Date timeYesterdayN(Date date,int day){
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTime(date);
+        calendar.add(Calendar.DAY_OF_MONTH, day);
+        return calendar.getTime();
+    }
+
+    //鑾峰彇骞存湀鏃�
+    public static String timeYestMonthDay(Date date){
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTime(date);
+
+        int year = calendar.get(Calendar.YEAR);
+        int month = calendar.get(Calendar.MONTH) + 1;  // 鏈堜唤浠�0寮�濮嬶紝闇�瑕佸姞1
+        int day = calendar.get(Calendar.DAY_OF_MONTH);
+        return year+"骞�"+month+"鏈�"+day+"鏃�";
+    }
+
+    //鑾峰彇骞�
+    public static int timeYest(Date date){
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTime(date);
+
+        return calendar.get(Calendar.YEAR);
+    }
+
+    //鑾峰彇鏈�
+    public static int timeMonth(Date date){
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTime(date);
+
+        return calendar.get(Calendar.MONTH) + 1;
+    }
+
+    //鑾峰彇鏃�
+    public static int timeDay(Date date){
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTime(date);
+
+        return calendar.get(Calendar.DAY_OF_MONTH);
+    }
+    //鑾峰彇骞村樊寮�
+    public static int DifferenceYest(Date startDay,Date endDay){
+        int startYest = timeYest(startDay);
+        int endYest = timeYest(endDay);
+        return endYest-startYest;
+    }
+    //鑾峰彇鏈堝樊寮�
+    public static int DifferenceMonth(Date startDay,Date endDay){
+        int startMonth = timeMonth(startDay);
+        int endMonth = timeMonth(endDay);
+        return endMonth-startMonth;
+    }
+    //鑾峰彇澶╁樊寮�
+    public static int DifferenceDayInt(Date startDay,Date endDay){
+        return DifferenceDayLong(startDay,endDay).intValue();
+    }
+    //鑾峰彇澶╁樊寮�
+    public static Long DifferenceDayLong(Date startDay,Date endDay){
+
+        LocalDate a = LocalDate.of(timeYest(startDay), timeMonth(startDay), timeDay(startDay));
+        LocalDate b = LocalDate.of(timeYest(endDay), timeMonth(endDay), timeDay(endDay));
+
+        return ChronoUnit.DAYS.between(a, b)+1;
+    }
+    //鑾峰彇澶╁樊寮�
+    public static Double DifferenceDayMorningAfternoon(Date startDay,Date endDay,int startTime,int endTime){
+        double between = DifferenceDayLong(startDay, endDay).doubleValue();
+        if (startTime==2){
+            between = between-0.5;
+        }
+        if (endTime == 1){
+            between = between-0.5;
+        }
+        return between;
+    }
+
+    //鑾峰彇姣宸紓
+    public static Long differenceInMilliseconds(Date startDay, Date endDay) {
+        if (startDay == null || endDay == null) {
+            throw new IllegalArgumentException("Dates cannot be null");
+        }
+
+        // 鑾峰彇姣宸紓
+        return endDay.getTime() - startDay.getTime();
+    }
+
+    public static boolean CompareData(Date startDay,Date endDay){
+
+        // 灏嗘棩鏈熷瓧绗︿覆瑙f瀽涓篖ocalDate瀵硅薄
+        LocalDate a = LocalDate.of(timeYest(startDay), timeMonth(startDay), timeDay(startDay));
+        LocalDate b = LocalDate.of(timeYest(endDay), timeMonth(endDay), timeDay(endDay));
+
+        // 姣旇緝鏃ユ湡
+        if (a.isAfter(b)) {
+            return false;
+        } else if (a.isBefore(b)) {
+            return true;
+        } else {
+            return true;
+        }
+    }
+
+    //java.time.LocalDate 杞崲涓� java.util.Date;
+    public static Date DateLocalDate(LocalDate localDate) {
+        return Date.from(localDate.atStartOfDay(ZoneId.systemDefault()).toInstant());
+    }
+
+    //鑾峰彇鐜板湪鏃ユ湡鏄綋鏈堢鍑犲懆
+    public static int WeeklyNowMonthDay(Date date) {
+//        int day = timeDay(date);
+//        if (day<7){
+//            if (WeeklyNowMonth(WeeklyMonday(date))>2){
+//                return 1;
+//            }
+//        }
+        return WeeklyNowMonth(WeeklyMonday(date));
+    }
+    public static int WeeklyNowMonth(Date date) {
+//        LocalDate currentDate = LocalDate.now();
+        LocalDate currentDate = LocalDate.of(timeYest(date), timeMonth(date), timeDay(date));
+
+        WeekFields weekFields = WeekFields.of(Locale.getDefault());
+
+        int weekOfMonth = currentDate.get(weekFields.weekOfMonth());
+
+
+        return weekOfMonth;
+    }
+
+    //闄愬埗涓や釜鏃ユ湡鏄懆涓�鍜屽懆鏈�  宸ヤ綔鏃�  鍛ㄤ竴鍒板懆鍏�
+    public static void WeeklySix(Date date) {
+//        LocalDate startDate = LocalDate.of(2022, 9, 5); // 鍋囪寮�濮嬫棩鏈熸槸2022骞�9鏈�5鏃ワ紝鍛ㄤ竴
+        LocalDate startDate = LocalDate.of(timeYest(date), timeMonth(date), timeDay(date));
+        System.out.println("褰撳墠鏃ユ湡 " + startDate + " 鍛�");
+
+        LocalDate endDate = startDate.plus(6, ChronoUnit.DAYS); // 缁撴潫鏃ユ湡鏄紑濮嬫棩鏈熷姞涓�6澶�
+        System.out.println("褰撳墠鏃ユ湡鍔犱笂6澶╂槸 " + endDate + " 鍛�");
+
+
+        // 濡傛灉寮�濮嬫棩鏈熶笉鏄懆涓�锛屽垯灏嗗畠璋冩暣鍒颁笅涓�涓懆涓�
+        if (startDate.getDayOfWeek() != DayOfWeek.MONDAY) {
+            startDate = startDate.with(TemporalAdjusters.next(DayOfWeek.MONDAY));
+        }
+
+        // 濡傛灉缁撴潫鏃ユ湡涓嶆槸鍛ㄦ湯锛堝嵆鍛ㄥ叚鎴栧懆鏃ワ級锛屽垯灏嗗畠璋冩暣鍒颁笅涓�涓懆鏈�
+        if (endDate.getDayOfWeek() != DayOfWeek.SATURDAY && endDate.getDayOfWeek() != DayOfWeek.SUNDAY) {
+            endDate = endDate.with(TemporalAdjusters.next(DayOfWeek.SATURDAY));
+        }
+
+        // 纭繚涓や釜鏃ユ湡涔嬮棿鐩搁殧涓冨ぉ
+        while (startDate.plus(7, ChronoUnit.DAYS).isBefore(endDate)) {
+            startDate = startDate.plus(7, ChronoUnit.DAYS);
+        }
+
+        System.out.println("寮�濮嬫棩鏈燂細" + startDate);
+        System.out.println("缁撴潫鏃ユ湡锛�" + endDate);
+    }
+
+    //闄愬埗涓や釜鏃ユ湡鏄懆涓�鍜屽懆鏈�  鍛ㄤ竴鍒板懆鏃�
+    public static List<Date> WeeklySeven(Date date) {
+//        LocalDate startDate = LocalDate.of(2022, 9, 5); // 鍋囪寮�濮嬫棩鏈熸槸2022骞�9鏈�5鏃ワ紝鍛ㄤ竴
+        LocalDate startDate = LocalDate.of(timeYest(date), timeMonth(date), timeDay(date));
+//        System.out.println("褰撳墠鏃ユ湡 " + startDate + " 鍛�");
+
+        LocalDate endDate = startDate.plus(6, ChronoUnit.DAYS); // 缁撴潫鏃ユ湡鏄紑濮嬫棩鏈熷姞涓�6澶�
+//        System.out.println("褰撳墠鏃ユ湡鍔犱笂6澶╂槸 " + endDate + " 鍛�");
+
+        // 濡傛灉寮�濮嬫棩鏈熶笉鏄懆涓�锛屽垯灏嗗畠璋冩暣鍒颁笅涓�涓懆涓�
+        if (startDate.getDayOfWeek() != DayOfWeek.MONDAY) {
+            startDate = startDate.with(TemporalAdjusters.next(DayOfWeek.MONDAY));
+        }
+
+        // 濡傛灉缁撴潫鏃ユ湡涓嶆槸鍛ㄦ棩锛屽垯灏嗗畠璋冩暣鍒颁笅涓�涓懆鏃�
+        if (endDate.getDayOfWeek() != DayOfWeek.SUNDAY) {
+            endDate = endDate.with(TemporalAdjusters.next(DayOfWeek.SUNDAY));
+        }
+
+        // 纭繚涓や釜鏃ユ湡涔嬮棿鐩搁殧涓冨ぉ
+        while (startDate.plus(7, ChronoUnit.DAYS).isBefore(endDate)) {
+            startDate = startDate.plus(7, ChronoUnit.DAYS);
+        }
+
+        List<Date> dateList = new ArrayList<>();
+        dateList.add(DateLocalDate(startDate));
+        dateList.add(DateLocalDate(endDate));
+        return dateList;
+//        System.out.println("寮�濮嬫棩鏈燂細" + startDate);
+//        System.out.println("缁撴潫鏃ユ湡锛�" + endDate);
+    }
+
+    //鍒ゆ柇鏄笉鏄懆涓�
+    public static boolean WeeklyOneSign(Date date) {
+        LocalDate localDate = LocalDate.of(timeYest(date), timeMonth(date), timeDay(date));
+        // 鍒ゆ柇鏄笉鏄懆涓�
+        if (localDate.getDayOfWeek() != DayOfWeek.MONDAY) {
+            return false;
+        }
+        return true;
+    }
+
+    //鑾峰彇鏈懆鍛ㄤ竴
+    public static Date WeeklyMonday (Date date) {
+        LocalDate localDate = LocalDate.of(timeYest(date), timeMonth(date), timeDay(date));
+        // 涓嬪懆鍛ㄤ竴
+        localDate = localDate.with(TemporalAdjusters.next(DayOfWeek.MONDAY));
+
+        // 灏哃ocalDate杞崲涓篋ate
+        Date monday = DateLocalDate(localDate);
+
+        // 鍒欏皢瀹冭皟鏁村埌鏈懆鍛ㄤ竴
+        return timeFrontSevenYesterday(monday);
+    }
+
+    //鑾峰彇褰撳墠鏃ユ湡鎵�鍦ㄧ殑鍛ㄤ竴鍙婂懆鏃ユ椂闂�
+    public static List<Date> WeeklyMondayAndSundayNow(Date date) {
+        Date nowMonday = WeeklyMonday(date);
+        return WeeklySeven(nowMonday);
+    }
+
+    //鑾峰彇褰撳墠鏃ユ湡涓婁竴鍛ㄥ懆涓�鍙婂懆鏃ユ椂闂�
+    public static List<Date> WeeklyMondayAndSundayFront(Date date) {
+        Date nowMonday = WeeklyMonday(date);
+        Date frontSevenYesterday = timeFrontSevenYesterday(nowMonday);
+        return WeeklySeven(frontSevenYesterday);
+    }
+
+    //鑾峰彇褰撳墠鏃ユ湡涓嬩竴鍛ㄥ懆涓�鍙婂懆鏃ユ椂闂�
+    public static List<Date> WeeklyMondayAndSundayAfter(Date date) {
+        Date nowMonday = WeeklyMonday(date);
+        Date afterSevenYesterday = timeAfterSevenYesterday(nowMonday);
+        return WeeklySeven(afterSevenYesterday);
+    }
+
+    //鑾峰彇鍛ㄤ竴鍒板懆鏈�
+    public static List<Date> WeeklyDays(Date date){
+        Date nowMonday = WeeklyMonday(date);
+        List<Date> dateList = new ArrayList<>();
+        dateList.add(nowMonday);
+        for (int i = 1; i<7 ; i++){
+            dateList.add(timeYesterdayN(nowMonday,i));
+        }
+        return dateList;
+    }
+
+    //鑾峰彇鍛ㄤ竴鍒板懆鏈�
+    public static List<Date> WeeklyListDays(List<Date> dates){
+        Date date = dates.get(0);
+        Date nowMonday = WeeklyMonday(date);
+        List<Date> dateList = new ArrayList<>();
+        dateList.add(nowMonday);
+        for (int i = 1; i<7 ; i++){
+            dateList.add(timeYesterdayN(nowMonday,i));
+        }
+        return dateList;
+    }
+
+    public static void main(String[] args) {
+        Date now = new Date();
+        int weeklyNowMonth = WeeklyNowMonthDay(now);
+        System.out.println("褰撳墠鏃ユ湡鏄 " + weeklyNowMonth + " 鍛�");
+
+        LocalDate startDate1 = LocalDate.of(2024, 2, 29);
+        int weeklyNowMonth1 = WeeklyNowMonthDay(DateLocalDate(startDate1));
+        System.out.println("褰撳墠鏃ユ湡鏄 " + weeklyNowMonth1 + " 鍛�");
+
+        LocalDate startDate2 = LocalDate.of(2024, 3, 5);
+        int weeklyNowMonth2 = WeeklyNowMonthDay(DateLocalDate(startDate2));
+        System.out.println("褰撳墠鏃ユ湡鏄 " + weeklyNowMonth2 + " 鍛�");
+
+        LocalDate startDate3 = LocalDate.of(2024, 3, 10);
+        int weeklyNowMonth3 = WeeklyNowMonthDay(DateLocalDate(startDate3));
+        System.out.println("褰撳墠鏃ユ湡鏄 " + weeklyNowMonth3 + " 鍛�");
+
+        LocalDate startDate4 = LocalDate.of(2024, 3, 31);
+        int weeklyNowMonth4 = WeeklyNowMonthDay(DateLocalDate(startDate4));
+        System.out.println("褰撳墠鏃ユ湡鏄 " + weeklyNowMonth4 + " 鍛�");
+
+        LocalDate startDate5 = LocalDate.of(2024, 4, 1);
+        int weeklyNowMonth5 = WeeklyNowMonthDay(DateLocalDate(startDate5));
+        System.out.println("褰撳墠鏃ユ湡鏄 " + weeklyNowMonth5 + " 鍛�");
+
+        LocalDate startDate6 = LocalDate.of(2024, 4, 7);
+        int weeklyNowMonth6 = WeeklyNowMonthDay(DateLocalDate(startDate6));
+        System.out.println("褰撳墠鏃ユ湡鏄 " + weeklyNowMonth6 + " 鍛�");
+    }
+
+//    public static void main(String[] args) {
+//        Date now = new Date();
+//        //鏈懆
+//        List<Date> dateList = WeeklyMondayAndSundayNow(now);
+//        for (Date date : dateList){
+//            System.out.println("------------------------------");
+//            System.out.println(date);
+//        }
+//        //涓婂懆
+//        List<Date> dateList1 = WeeklyMondayAndSundayFront(now);
+//        for (Date date : dateList1){
+//            System.out.println("------------------------------");
+//            System.out.println(date);
+//        }
+//        //涓嬪懆
+//        List<Date> dateList2 = WeeklyMondayAndSundayAfter(now);
+//        for (Date date : dateList2){
+//            System.out.println("------------------------------");
+//            System.out.println(date);
+//        }
+//        //鍛�
+//        List<Date> dateList3 = WeeklyDays(now);
+//        for (Date date : dateList3){
+//            System.out.println("------------------------------");
+//            System.out.println(date);
+//        }
+//    }
+
+}
diff --git a/src/main/resources/mapper/WrkMastMapper.xml b/src/main/resources/mapper/WrkMastMapper.xml
index 79abf49..a805e5e 100644
--- a/src/main/resources/mapper/WrkMastMapper.xml
+++ b/src/main/resources/mapper/WrkMastMapper.xml
@@ -80,7 +80,7 @@
 
     <select id="selectToBeHistoryData" resultMap="BaseResultMap">
         select * from asr_wrk_mast
-        where wrk_sts=5
+        where wrk_sts=4
         or (wrk_sts=15 and ove_mk='Y' and wrk_no not in (select wrk_no from asr_bas_devp))
         or (wrk_sts=15 and dateadd(mi,15,crn_end_time) &lt;= getdate() and wrk_no not in (select wrk_no from asr_bas_devp))
         or (wrk_sts=15 and crn_end_time is null and wrk_no not in (select wrk_no from asr_bas_devp))

--
Gitblit v1.9.1