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 |   79 +++++++++++++++++++++++++++++----------
 1 files changed, 58 insertions(+), 21 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 3df1f55..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;
@@ -78,6 +80,10 @@
     private SlaveProperties slaveProperties;
     @Autowired
     private WaitPakinService waitPakinService;
+    @Autowired
+    private MonitorLocMapCacheService monitorLocMapCacheService;
+    @Autowired
+    private WorkMastHandler workMastHandler;
 
     @Override
     @Transactional
@@ -303,7 +309,6 @@
         StaDesc staDesc = staDescService.queryCrnStn(ioType, staNo.getDevNo());
         // 鐢熸垚宸ヤ綔鍙�
         int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(ioType));
-        int yz=staDesc.getStnNo()*10+Integer.valueOf(taskDto.getLocNo().substring(6));
         // 鐢熸垚宸ヤ綔妗�
         WrkMast wrkMast = new WrkMast();
         wrkMast.setWrkNo(workNo);
@@ -312,7 +317,7 @@
         wrkMast.setIoType(ioType); // 鍏ュ嚭搴撶姸鎬�
         wrkMast.setIoPri(13D); // 浼樺厛绾э細13
         wrkMast.setCrnNo(locMast.getCrnNo());
-        wrkMast.setSourceStaNo(yz); // 婧愮珯
+        wrkMast.setSourceStaNo(staDesc.getCrnStn()); // 婧愮珯
         wrkMast.setStaNo(staDesc.getStnNo()); // 鐩爣绔�
         wrkMast.setSourceLocNo(taskDto.getLocNo()); // 婧愬簱浣�
         wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
@@ -336,7 +341,7 @@
                 orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), null);
             }
             LocDetl locDetl = locDetlService.selectOne(new EntityWrapper<LocDetl>().eq("loc_no", locDto.getLocNo()).eq("matnr", locDto.getMatnr()));
-            Mat mat=matService.selectOne(new EntityWrapper<Mat>().eq("matnr",locDto.getMatnr()));
+            Mat mat = matService.selectOne(new EntityWrapper<Mat>().eq("matnr", locDto.getMatnr()));
             WrkDetl wrkDetl = new WrkDetl();
             wrkDetl.sync(orderDetl);
             wrkDetl.setZpallet(wrkMast.getBarcode());
@@ -481,6 +486,7 @@
             wrkMast.setExitMk("N"); // 閫�鍑�
             wrkMast.setEmptyMk("Y"); // 绌烘澘
             wrkMast.setLinkMis("N");
+            wrkMast.setBarcode(locMast.getBarcode());
             wrkMast.setAppeUser(userId);
             wrkMast.setAppeTime(now);
             wrkMast.setModiUser(userId);
@@ -607,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();
@@ -622,11 +632,49 @@
         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け璐�");
         }
+        monitorLocMapCacheService.clearQuietly();
     }
 
     @Override
@@ -852,18 +900,6 @@
 
         }
 
-//        // 璁㈠崟鍏宠仈
-//        List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(wrkMast.getWrkNo());
-//        for (WrkDetl wrkDetl : wrkDetls) {
-//            if (!Cools.isEmpty(wrkDetl.getOrderNo())) {
-//                if (!orderDetlService.decrease(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getAnfme())) {
-//                    throw new CoolException("璁㈠崟鏁版嵁鍥炴粴澶辫触");
-//                }
-//                // 鐢熸垚鏂扮殑鍑哄簱浣滀笟
-////                        stockOutRe(wrkMast, wrkDetls);
-//            }
-//        }
-
         // 鍙栨秷鎿嶄綔浜哄憳璁板綍
         wrkMast.setManuType("鎵嬪姩鍙栨秷");
         wrkMast.setModiUser(userId);
@@ -900,6 +936,7 @@
         if (!wrkMastRes || !locMastRes) {
             throw new CoolException("淇濆瓨鏁版嵁澶辫触");
         }
+        monitorLocMapCacheService.clearQuietly();
     }
 
     @Override

--
Gitblit v1.9.1