From 23a2e30f0f70c1f526a04bffda38fd124ed47630 Mon Sep 17 00:00:00 2001
From: zhangc <zc@123>
Date: 星期五, 18 四月 2025 14:51:52 +0800
Subject: [PATCH] 999

---
 src/main/java/com/zy/asrs/task/WrkMastScheduler.java |  242 +++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 239 insertions(+), 3 deletions(-)

diff --git a/src/main/java/com/zy/asrs/task/WrkMastScheduler.java b/src/main/java/com/zy/asrs/task/WrkMastScheduler.java
index a54870d..7b825ed 100644
--- a/src/main/java/com/zy/asrs/task/WrkMastScheduler.java
+++ b/src/main/java/com/zy/asrs/task/WrkMastScheduler.java
@@ -1,15 +1,24 @@
 package com.zy.asrs.task;
 
+import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.zy.asrs.domain.enums.NotifyMsgType;
+import com.zy.asrs.entity.LocMast;
 import com.zy.asrs.entity.WrkMast;
+import com.zy.asrs.service.LocMastService;
 import com.zy.asrs.service.WrkMastLogService;
 import com.zy.asrs.service.WrkMastService;
+import com.zy.asrs.utils.NotifyUtils;
+import com.zy.core.enums.LocStsType;
+import com.zy.core.enums.WrkIoType;
 import com.zy.core.enums.WrkStsType;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
+import org.springframework.transaction.annotation.Transactional;
 
+import java.util.Date;
 import java.util.List;
 
 
@@ -21,15 +30,189 @@
     private WrkMastService wrkMastService;
     @Autowired
     private WrkMastLogService wrkMastLogService;
+    @Autowired
+    private LocMastService locMastService;
+    @Autowired
+    private NotifyUtils notifyUtils;
 
     @Scheduled(cron = "0/1 * * * * ? ")
-    private void executeMove(){
-        List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("wrk_sts", WrkStsType.COMPLETE_MOVE.sts));
+    @Transactional
+    public void executeIn() {
+        List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("wrk_sts", WrkStsType.COMPLETE_INBOUND.sts));
         if (wrkMasts.isEmpty()) {
             return;
         }
 
         for (WrkMast wrkMast : wrkMasts) {
+            String locNo = wrkMast.getLocNo();
+            LocMast locMast = locMastService.queryByLoc(locNo);
+            if (locMast == null) {
+                log.info("[workNo={}]搴撲綅涓嶅瓨鍦�", wrkMast.getWrkNo());
+                continue;
+            }
+
+            if (!locMast.getLocSts().equals("S")) {
+                log.info("[workNo={}]搴撲綅鐘舵�佷笉澶勪簬S", wrkMast.getWrkNo());
+                continue;
+            }
+
+            locMast.setLocSts("F");
+            locMast.setModiTime(new Date());
+            boolean result = locMastService.updateById(locMast);
+            if (!result) {
+                log.info("[workNo={}]搴撲綅鐘舵�丗鏇存柊澶辫触", wrkMast.getWrkNo());
+                continue;
+            }
+
+            // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗�
+            if (!wrkMastLogService.save(wrkMast.getWrkNo())) {
+                log.info("淇濆瓨宸ヤ綔鍘嗗彶妗workNo={}]澶辫触", wrkMast.getWrkNo());
+            }
+            // 鍒犻櫎宸ヤ綔涓绘。
+            if (!wrkMastService.deleteById(wrkMast)) {
+                log.info("鍒犻櫎宸ヤ綔涓绘。[workNo={}]澶辫触", wrkMast.getWrkNo());
+            }
+
+            //涓婃姤
+            notifyUtils.notify("task", 1, String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.TASK_COMPLETE, JSON.toJSONString(wrkMast));
+        }
+    }
+
+    @Scheduled(cron = "0/1 * * * * ? ")
+    @Transactional
+    public void executeOut() {
+        List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("wrk_sts", WrkStsType.COMPLETE_OUTBOUND.sts));
+        if (wrkMasts.isEmpty()) {
+            return;
+        }
+
+        for (WrkMast wrkMast : wrkMasts) {
+            String locNo = wrkMast.getSourceLocNo();
+            LocMast locMast = locMastService.queryByLoc(locNo);
+            if (locMast == null) {
+                log.info("[workNo={}]搴撲綅涓嶅瓨鍦�", wrkMast.getWrkNo());
+                continue;
+            }
+
+            if (!locMast.getLocSts().equals("R")) {
+                log.info("[workNo={}]搴撲綅鐘舵�佷笉澶勪簬R", wrkMast.getWrkNo());
+                continue;
+            }
+
+            locMast.setLocSts("O");
+            locMast.setModiTime(new Date());
+            boolean result = locMastService.updateById(locMast);
+            if (!result) {
+                log.info("[workNo={}]搴撲綅鐘舵�丱鏇存柊澶辫触", wrkMast.getWrkNo());
+                continue;
+            }
+
+            // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗�
+            if (!wrkMastLogService.save(wrkMast.getWrkNo())) {
+                log.info("淇濆瓨宸ヤ綔鍘嗗彶妗workNo={}]澶辫触", wrkMast.getWrkNo());
+            }
+            // 鍒犻櫎宸ヤ綔涓绘。
+            if (!wrkMastService.deleteById(wrkMast)) {
+                log.info("鍒犻櫎宸ヤ綔涓绘。[workNo={}]澶辫触", wrkMast.getWrkNo());
+            }
+
+            //涓婃姤
+            notifyUtils.notify("task", 1, String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.TASK_COMPLETE, JSON.toJSONString(wrkMast));
+        }
+    }
+
+    @Scheduled(cron = "0/1 * * * * ? ")
+    @Transactional
+    public void executeLocMove() {
+        List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("wrk_sts", WrkStsType.COMPLETE_LOC_MOVE.sts));
+        if (wrkMasts.isEmpty()) {
+            return;
+        }
+
+        for (WrkMast wrkMast : wrkMasts) {
+            String sourceLocNo = wrkMast.getSourceLocNo();
+            String locNo = wrkMast.getLocNo();
+            LocMast locMast = locMastService.queryByLoc(locNo);
+            if (locMast == null) {
+                log.info("[workNo={}]搴撲綅涓嶅瓨鍦�", wrkMast.getWrkNo());
+                continue;
+            }
+
+            if (!locMast.getLocSts().equals("S")) {
+                log.info("[workNo={}]搴撲綅鐘舵�佷笉澶勪簬S", wrkMast.getWrkNo());
+                continue;
+            }
+
+            LocMast sourceLocMast = locMastService.queryByLoc(sourceLocNo);
+            if (sourceLocMast == null) {
+                log.info("[workNo={}]搴撲綅涓嶅瓨鍦�", wrkMast.getWrkNo());
+                continue;
+            }
+
+            if (!sourceLocMast.getLocSts().equals("R")) {
+                log.info("[workNo={}]搴撲綅鐘舵�佷笉澶勪簬R", wrkMast.getWrkNo());
+                continue;
+            }
+
+            locMast.setLocSts("F");
+            locMast.setModiTime(new Date());
+            boolean result = locMastService.updateById(locMast);
+            if (!result) {
+                log.info("[workNo={}]搴撲綅鐘舵�丗鏇存柊澶辫触", wrkMast.getWrkNo());
+                continue;
+            }
+
+            sourceLocMast.setLocSts("O");
+            sourceLocMast.setModiTime(new Date());
+            boolean result2 = locMastService.updateById(sourceLocMast);
+            if (!result2) {
+                log.info("[workNo={}]搴撲綅鐘舵�丱鏇存柊澶辫触", wrkMast.getWrkNo());
+                continue;
+            }
+
+            // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗�
+            if (!wrkMastLogService.save(wrkMast.getWrkNo())) {
+                log.info("淇濆瓨宸ヤ綔鍘嗗彶妗workNo={}]澶辫触", wrkMast.getWrkNo());
+            }
+            // 鍒犻櫎宸ヤ綔涓绘。
+            if (!wrkMastService.deleteById(wrkMast)) {
+                log.info("鍒犻櫎宸ヤ綔涓绘。[workNo={}]澶辫触", wrkMast.getWrkNo());
+            }
+
+            //涓婃姤
+            notifyUtils.notify("task", 1, String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.TASK_COMPLETE, JSON.toJSONString(wrkMast));
+        }
+    }
+
+    @Scheduled(cron = "0/1 * * * * ? ")
+    @Transactional
+    public void executeMove() {
+        List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>()
+                .in("wrk_sts"
+                        , WrkStsType.COMPLETE_MOVE.sts
+                        , WrkStsType.COMPLETE_MOVE_TRANSPORT_LIFT.sts
+                        , WrkStsType.COMPLETE_MOVE_TRANSPORT_LIFT_OUT.sts
+                        , WrkStsType.MOVE_IN_NO_LIFT_14.sts
+                        , WrkStsType.MOVE_OUT_NO_LIFT_13.sts
+                ));
+        if (wrkMasts.isEmpty()) {
+            return;
+        }
+
+        for (WrkMast wrkMast : wrkMasts) {
+            WrkMast main = wrkMastService.selectByWorkNo(wrkMast.getMainWrkNo());
+            if (main != null) {
+                if (main.getIoType() == WrkIoType.IN.id) {
+                    main.setWrkSts(WrkStsType.COMPLETE_INBOUND.sts);
+                } else if (main.getIoType() == WrkIoType.OUT.id) {
+                    main.setShuttleNo(wrkMast.getShuttleNo());
+                    main.setWrkSts(WrkStsType.OUTBOUND_SHUTTLE_RUN_COMPLETE.sts);
+                }
+                main.setModiTime(new Date());
+                if (!wrkMastService.updateById(main)) {
+                    log.info("鏇存柊涓诲伐浣滄。[workNo={}]澶辫触", wrkMast.getWrkNo());
+                }
+            }
             // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗�
             if (!wrkMastLogService.save(wrkMast.getWrkNo())) {
                 log.info("淇濆瓨宸ヤ綔鍘嗗彶妗workNo={}]澶辫触", wrkMast.getWrkNo());
@@ -42,7 +225,8 @@
     }
 
     @Scheduled(cron = "0/1 * * * * ? ")
-    private void executeCharge(){
+    @Transactional
+    public void executeCharge() {
         List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("wrk_sts", WrkStsType.COMPLETE_CHARGE.sts));
         if (wrkMasts.isEmpty()) {
             return;
@@ -57,6 +241,58 @@
             if (!wrkMastService.deleteById(wrkMast)) {
                 log.info("鍒犻櫎宸ヤ綔涓绘。[workNo={}]澶辫触", wrkMast.getWrkNo());
             }
+
+            //涓婃姤
+            notifyUtils.notify("task", 1, String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.TASK_CHARGE_COMPLETE, JSON.toJSONString(wrkMast));
+        }
+    }
+
+    @Scheduled(cron = "0/1 * * * * ? ")
+    @Transactional
+    public void executeCancelTask() {
+        List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("mk", "taskCancel"));
+        if (wrkMasts.isEmpty()) {
+            return;
+        }
+
+        for (WrkMast wrkMast : wrkMasts) {
+            // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗�
+            if (!wrkMastLogService.save(wrkMast.getWrkNo())) {
+                log.info("淇濆瓨宸ヤ綔鍘嗗彶妗workNo={}]澶辫触", wrkMast.getWrkNo());
+            }
+            // 鍒犻櫎宸ヤ綔涓绘。
+            if (!wrkMastService.deleteById(wrkMast)) {
+                log.info("鍒犻櫎宸ヤ綔涓绘。[workNo={}]澶辫触", wrkMast.getWrkNo());
+            }
+
+            if (wrkMast.getIoType() == WrkIoType.IN.id) {
+                LocMast locMast = locMastService.queryByLoc(wrkMast.getLocNo());
+                locMast.setLocSts(String.valueOf(LocStsType.O));
+                locMast.setModiTime(new Date());
+                locMastService.updateById(locMast);
+            } else if (wrkMast.getIoType() == WrkIoType.OUT.id) {
+                LocMast locMast = locMastService.queryByLoc(wrkMast.getSourceLocNo());
+                locMast.setLocSts(String.valueOf(LocStsType.O));
+                locMast.setModiTime(new Date());
+                locMastService.updateById(locMast);
+            } else if (wrkMast.getIoType() == WrkIoType.LOC_MOVE.id) {
+                LocMast sourceLocMast = locMastService.queryByLoc(wrkMast.getSourceLocNo());
+                LocMast locMast = locMastService.queryByLoc(wrkMast.getLocNo());
+                if (sourceLocMast.getLocSts().equals(String.valueOf(LocStsType.R))) {
+                    sourceLocMast.setLocSts(String.valueOf(LocStsType.F));
+                    sourceLocMast.setModiTime(new Date());
+                    locMastService.updateById(sourceLocMast);
+                }
+
+                if (locMast.getLocSts().equals(String.valueOf(LocStsType.S))) {
+                    locMast.setLocSts(String.valueOf(LocStsType.O));
+                    locMast.setModiTime(new Date());
+                    locMastService.updateById(locMast);
+                }
+            }
+
+            //涓婃姤
+            notifyUtils.notify("task", 1, String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.TASK_CANCEL, JSON.toJSONString(wrkMast));
         }
     }
 

--
Gitblit v1.9.1