From 7068307fa5a395b2027e9dd9ce8b2a4819d8ee9d Mon Sep 17 00:00:00 2001
From: pjb <pjb123456>
Date: 星期六, 16 八月 2025 15:33:14 +0800
Subject: [PATCH] 修复4号堆垛机不出一个入一个情况

---
 src/main/java/com/zy/service/impl/MainServiceImpl.java |   36 +++++++++++++++++++++++++++++-------
 1 files changed, 29 insertions(+), 7 deletions(-)

diff --git a/src/main/java/com/zy/service/impl/MainServiceImpl.java b/src/main/java/com/zy/service/impl/MainServiceImpl.java
index e7d7fe8..4b06fd2 100644
--- a/src/main/java/com/zy/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/service/impl/MainServiceImpl.java
@@ -41,6 +41,7 @@
 
 import javax.annotation.Resource;
 import java.util.*;
+import java.util.concurrent.atomic.AtomicInteger;
 import java.util.stream.Collectors;
 
 /**
@@ -620,15 +621,23 @@
                         crnProtocol.setLastIo("O");
                     } else if (basCrnp.getOutEnable().equals("Y")) {
                         //mark - 2 - ....
-                        this.locToCrnStn(crn, crnProtocol,mark); //  鍑哄簱
+                        AtomicInteger atomicInteger = new AtomicInteger(mark);
+                        this.locToCrnStn(crn, crnProtocol,atomicInteger); //  鍑哄簱
                         crnProtocol.setLastIo("I");
+                        if(atomicInteger.get() == 99) { // 涓嬩竴娆¤繕鏄嚭搴�
+                            crnProtocol.setLastIo("O");
+                        }
                     }
                 }
                 // 濡傛灉鏈�杩戜竴娆℃槸鍑哄簱妯″紡
                 else if (crnProtocol.getLastIo().equals("O")) {
                     if (basCrnp.getOutEnable().equals("Y")) {
-                        this.locToCrnStn(crn, crnProtocol,mark); //  鍑哄簱
+                        AtomicInteger atomicInteger = new AtomicInteger(mark);
+                        this.locToCrnStn(crn, crnProtocol,atomicInteger); //  鍑哄簱
                         crnProtocol.setLastIo("I");
+                        if(atomicInteger.get() == 99) { // 涓嬩竴娆¤繕鏄嚭搴�
+                            crnProtocol.setLastIo("O");
+                        }
                     } else if (basCrnp.getInEnable().equals("Y")) {
                         this.crnStnToLoc(crn, crnProtocol,mark); //  鍏ュ簱
                         crnProtocol.setLastIo("O");
@@ -749,7 +758,7 @@
                         wrkMast.setIoPri(14D);
                         wrkMastMapper.updateById(wrkMast);
                         // 鐢熸垚宸ヤ綔妗�,灏嗘祬搴撲綅绉昏浆鍒版柊鐨勫簱浣嶄腑
-                        moveLocForDeepLoc(slave, shallowLoc,mark);
+                        moveLocForDeepLoc(slave, shallowLoc,new AtomicInteger(mark));
                         // 鐢熸垚宸ヤ綔妗c�佹敼鍙樻祬搴撲綅鐨勬簮搴�/鐩爣搴� 搴撲綅鐘舵�併�佷笅鍙戝爢鍨涙満鍛戒护锛堢珛椹墽琛�)
 //                        moveLocForDeepLocPakin(slave, shallowLoc, wrkMast);
                     }
@@ -827,12 +836,19 @@
      * 鍑哄簱  ===>>  搴撲綅鍒板爢鍨涙満绔�
      * 2022-06-09 TQS淇敼锛屾煡璇㈠伐浣滄。LIST锛岄亶鍘嗕笅鍙戯紝闃叉绗竴涓换鍔″牭濉炲嚭搴�
      */
-    public synchronized void locToCrnStn(CrnSlave slave, CrnProtocol crnProtocol,Integer mark) {
+    public synchronized void locToCrnStn(CrnSlave slave, CrnProtocol crnProtocol,AtomicInteger mark) {
         News.warnNoLog(""+mark+" - 2"+" - 0"+" - 鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂锛氭墽琛屽嚭搴�");
         boolean crnAvailableOut = false;
         Config config = configService.selectOne(new EntityWrapper<Config>().eq("code","removeCrnAvailableOut"));
-        if (config != null && config.getStatus() == 1) {
-            crnAvailableOut = true;
+        if (config != null && config.getStatus() == 1 && !Cools.isEmpty(config.getValue())) {
+            // 闇�瑕佽嚜鍔ㄨˉ绌烘《鐨勭珯鐐�
+            String[] split = config.getValue().split("=");
+            for (String item : split) {
+                if (slave.getId() == Integer.parseInt(item)) {
+                    crnAvailableOut = true;
+                    break;
+                }
+            }
         }
         // 闄愬埗鍘绘崋缁戞満鍣ㄤ换鍔℃暟
         int kbWrks = wrkMastMapper.selectCountByKb();
@@ -992,6 +1008,7 @@
                                 wrkMast1.setSourceStaNo(1056);
                                 wrkMastService.updateById(wrkMast1);
                             }
+                            mark.set(99);
                             break;
                         }
                     }
@@ -1720,7 +1737,7 @@
      * 鍥犲弻娣卞簱浣嶉樆濉烇紝瀵规祬搴撲綅杩涜绉昏浆锛堢珛鍗虫墽琛岀増)
      * tip锛氬悓姝�
      */
-    private synchronized void moveLocForDeepLoc(CrnSlave crn, LocMast shallowLoc,Integer mark) {
+    private synchronized void moveLocForDeepLoc(CrnSlave crn, LocMast shallowLoc,AtomicInteger mark) {
 
         // 鍙湁208L鑳芥斁11灞�
         String model = null;
@@ -2344,6 +2361,11 @@
 
                     }
                 } else if (wantBucket.getSite() == 1071 && count <= 2 || wantBucket.getSite() == 1064 && count == 0 || wantBucket.getSite() == 1078 && count <= 2) { // 鍙互鍑轰袱涓�
+                    // 鑷姩鍑虹┖妗讹紝鍧囧寑鍑哄埌姣忓彴缃愯绾�
+                    Integer count1 = wrkMastMapper.selectCount(new EntityWrapper<WrkMast>().eq("crn_no", 4).eq("sta_no",wantBucket.getSite()).in("wrk_sts", 11,12));
+                    if(count1 > 0) {
+                        return;
+                    }
                     log.info("{}鑷姩琛ョ┖妗讹紝缃愯绾胯妗跺瀷淇℃伅锛歿},姝e湪鎵ц浠诲姟鏁帮細{}", wantBucket.getSite(), wantBucket.getBucketType(), count);
                     // 鍒ゆ柇搴撻噷鏈夋棤绌烘《缁�
                     List<LocDetl> locDetlList = locDetlService.selectListByMatnr(wantBucket.getBucketType());

--
Gitblit v1.9.1