From a1334287fc3e563ff3494553d0c1e6fa390b314d Mon Sep 17 00:00:00 2001
From: cl <1442464845@qq.com>
Date: 星期二, 24 三月 2026 16:54:44 +0800
Subject: [PATCH] 大屏缓存

---
 src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java |   57 +++++++++++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 51 insertions(+), 6 deletions(-)

diff --git a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
index 1fe34d1..d96111d 100644
--- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -21,6 +21,8 @@
 import com.zy.common.properties.SlaveProperties;
 import com.zy.common.service.CommonService;
 import com.zy.common.web.WcsController;
+import com.zy.asrs.task.core.ReturnT;
+import com.zy.asrs.task.handler.WorkMastHandler;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -80,6 +82,8 @@
     private WaitPakinService waitPakinService;
     @Autowired
     private MonitorLocMapCacheService monitorLocMapCacheService;
+    @Autowired
+    private WorkMastHandler workMastHandler;
 
     @Override
     @Transactional
@@ -609,14 +613,18 @@
         if (Cools.isEmpty(wrkMast)){
             throw new CoolException(workNo+"宸ヤ綔妗d笉瀛樺湪");
         }
-        if (wrkMast.getWrkSts() == 4 || wrkMast.getWrkSts() == 14) {
+        long sts = wrkMast.getWrkSts();
+        if (sts == 4 || sts == 5 || sts == 14 || sts == 15 || sts == 20) {
             throw new CoolException("褰撳墠宸ヤ綔妗e凡瀹屾垚");
         }
-        // 鍏ュ簱 + 搴撲綅杞Щ
-        if (wrkMast.getWrkSts() < 4 || (wrkMast.getWrkSts() > 10 && wrkMast.getIoType()==11)) {
+        boolean inboundFinish = wrkMast.getWrkSts() < 4 || (wrkMast.getWrkSts() > 10 && wrkMast.getIoType() != null && wrkMast.getIoType() == 11);
+        boolean outboundFinish = wrkMast.getWrkSts() > 10 && (wrkMast.getIoType() == null || wrkMast.getIoType() != 11);
+        if (!inboundFinish && !outboundFinish) {
+            throw new CoolException("褰撳墠宸ヤ綔鐘舵�佹棤娉曟墜鍔ㄥ畬鎴�");
+        }
+        if (inboundFinish) {
             wrkMast.setWrkSts(4L);
-        // 鍑哄簱
-        } else if (wrkMast.getWrkSts() > 10) {
+        } else {
             wrkMast.setWrkSts(14L);
         }
         Date now = new Date();
@@ -624,8 +632,45 @@
         wrkMast.setCrnEndTime(now);
         wrkMast.setModiTime(now);
         wrkMast.setModiUser(userId);
-        // 瀹屾垚鎿嶄綔浜哄憳璁板綍
         wrkMast.setManuType("鎵嬪姩瀹屾垚");
+        ReturnT<String> rt = workMastHandler.start(wrkMast);
+        if (!rt.isSuccess()) {
+            throw new CoolException(Cools.isEmpty(rt.getMsg()) ? "瀹屾垚澶勭悊澶辫触" : rt.getMsg());
+        }
+        // doOut 瀵� 103/107 涓嶈惤 15 鏃讹紝鎵嬪姩琛ラ綈 15锛涙簮搴撲綅 O 涓庡畾鏃朵换鍔� doOut 涓�鑷�
+        if (wrkMast.getWrkSts() == 14) {
+            wrkMast.setWrkSts(15L);
+            wrkMast.setModiTime(now);
+            wrkMast.setModiUser(userId);
+            if (!Cools.isEmpty(wrkMast.getSourceLocNo())) {
+                LocMast src = locMastService.selectById(wrkMast.getSourceLocNo());
+                if (!Cools.isEmpty(src) && !"O".equals(src.getLocSts())) {
+                    Integer io = wrkMast.getIoType();
+                    if (io != null && (io == 101 || io == 110)) {
+                        src.setLocSts("O");
+                        src.setModiTime(now);
+                        src.setIoTime(now);
+                        src.setModiUser(userId);
+                        if (!locMastService.updateById(src)) {
+                            throw new CoolException("鏇存柊婧愬簱浣嶇姸鎬佸け璐�");
+                        }
+                    } else if ("R".equals(src.getLocSts())) {
+                        src.setLocSts("O");
+                        src.setModiTime(now);
+                        src.setIoTime(now);
+                        src.setModiUser(userId);
+                        if (!locMastService.updateById(src)) {
+                            throw new CoolException("鏇存柊婧愬簱浣嶇姸鎬佸け璐�");
+                        }
+                    }
+                }
+            }
+        }
+        wrkMast.setManuType("鎵嬪姩瀹屾垚");
+        wrkMast.setModiUser(userId);
+        wrkMast.setCrnStrTime(DateUtils.calculate(now, 1L, TimeUnit.SECONDS, true));
+        wrkMast.setCrnEndTime(now);
+        wrkMast.setModiTime(now);
         if (!wrkMastService.updateById(wrkMast)) {
             throw new CoolException("淇敼宸ヤ綔妗eけ璐�");
         }

--
Gitblit v1.9.1