From 4ba63e6424b4091ec74a74d4562cc776efb516f4 Mon Sep 17 00:00:00 2001
From: pjb <pjb123456>
Date: 星期一, 21 七月 2025 09:47:49 +0800
Subject: [PATCH] 手动完成空桶库任务问题修复

---
 src/main/java/com/zy/service/impl/MainServiceImpl.java |   94 ++++++++++++++++++++++++++++++++---------------
 1 files changed, 64 insertions(+), 30 deletions(-)

diff --git a/src/main/java/com/zy/service/impl/MainServiceImpl.java b/src/main/java/com/zy/service/impl/MainServiceImpl.java
index 6f4640d..870fe75 100644
--- a/src/main/java/com/zy/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/service/impl/MainServiceImpl.java
@@ -118,6 +118,9 @@
     private WaitPakinMapper waitPakinMapper;
     @Autowired
     private LocMastService locMastService;
+
+    @Resource
+    private LocMastMapper locMastMapper;
     @Autowired
     private StaDescService staDescService;
     @Autowired
@@ -731,7 +734,7 @@
                         continue;
                     }
 
-                } else if (shallowLoc.getLocSts().equals("F") || shallowLoc.getLocSts().equals("D")) {
+                } else if (shallowLoc.getLocSts().equals("F") || shallowLoc.getLocSts().equals("M")|| shallowLoc.getLocSts().equals("Z")) {
                     News.warnNoLog(""+mark+" - 1"+" - 12"+" - // F銆丏  搴撲綅鐘舵��={}",shallowLoc.getLocSts());
                     // 姝ゆ爣璁伴伩鍏嶅娆℃墽琛岀Щ搴撲换鍔�
                     if (Cools.isEmpty(wrkMast.getUpdMk()) || "N".equals(wrkMast.getUpdMk())) {
@@ -819,6 +822,11 @@
      */
     public synchronized void locToCrnStn(CrnSlave slave, CrnProtocol crnProtocol,Integer 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;
+        }
         for (CrnSlave.CrnStn crnStn : slave.getCrnOutStn()) {
             // 鑾峰彇宸ヤ綔鐘舵�佷负11锛堢敓鎴愬嚭搴揑D锛夌殑鍑哄簱宸ヤ綔妗�
             List<WrkMast> wrkMasts = wrkMastMapper.selectPakOutStep11(slave.getId(), crnStn.getStaNo());
@@ -855,9 +863,8 @@
                 }
 
                 // 鍒ゆ柇鍫嗗灈鏈哄嚭搴撶珯鐘舵��
-                if ((staProtocol.isAutoing() && !staProtocol.isLoading() && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y")
-                        && staProtocol.getWorkNo() == 0 && staProtocol.isOutEnable())
-                        || (staProtocol.getSiteId() == 1056 && staProtocol.isAutoing() && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y"))) {
+                if (staProtocol.isAutoing() && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y") &&
+                        (crnAvailableOut || !staProtocol.isLoading() && staProtocol.getWorkNo() == 0 && staProtocol.isOutEnable())) {
                     // 鍫嗗灈鏈烘帶鍒惰繃婊�
                     if (!crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() != 0) {
                         break;
@@ -894,7 +901,7 @@
 
                                 }
                             }
-                        } else if (shallowLoc.getLocSts().equals("F") || shallowLoc.getLocSts().equals("D")) {
+                        } else if (shallowLoc.getLocSts().equals("F") || shallowLoc.getLocSts().equals("M")|| shallowLoc.getLocSts().equals("Z")) {
                             News.warnNoLog(""+mark+" - 2"+" - 9"+" - // F銆丏  搴撲綅鐘舵��={}",shallowLoc.getLocSts());
 //                            WrkMast waitWrkMast = wrkMastMapper.selectByLocNo(shallowLocNo);
                             //2022-08-16 modify,涓嶆牴鎹畊pdmk鏍囪绉诲簱浠诲姟(瀹规槗琚彇娑堝鑷村牭濉�)锛屾煡璇㈠伐浣滄。鏄惁瀛樺湪浠诲姟
@@ -1148,21 +1155,23 @@
                     // 绌烘《鍏ュ簱瀹屾垚锛屽厛瀹屾垚瀵瑰簲搴撲綅缁勪换鍔�
                     if(wrkMast.getWorkNoOther() != 0 ){
                         WrkMast wrkMast1 = wrkMastService.selectByWrkNo(wrkMast.getWorkNoOther());
-                        // 浜ゆ崲搴撲綅鍙�
-                        String locNo = wrkMast.getLocNo();
-                        wrkMast.setLocNo(wrkMast1.getLocNo());
-                        // 浜ゆ崲鍏ュ簱鏃堕棿锛屾彁鍙栧簱瀛樻椂鎸夐『搴忓厛娴呭悗娣�
-                        Date ioTime = wrkMast.getIoTime();
-                        if(locNo.startsWith("10")) {
-                            wrkMast.setIoTime(wrkMast1.getIoTime());
-                            wrkMast1.setIoTime(ioTime);
+                        if (wrkMast1 != null) {
+                            // 浜ゆ崲搴撲綅鍙�
+                            String locNo = wrkMast.getLocNo();
+                            wrkMast.setLocNo(wrkMast1.getLocNo());
+                            // 浜ゆ崲鍏ュ簱鏃堕棿锛屾彁鍙栧簱瀛樻椂鎸夐『搴忓厛娴呭悗娣�
+                            Date ioTime = wrkMast.getIoTime();
+                            if(locNo.startsWith("10")) {
+                                wrkMast.setIoTime(wrkMast1.getIoTime());
+                                wrkMast1.setIoTime(ioTime);
+                            }
+                            wrkMast1.setLocNo(locNo);
+                            wrkMast1.setCrnEndTime(now);
+                            wrkMast1.setModiTime(now);
+                            wrkMast1.setWrkSts(4L);
+                            wrkMast1.setWorkNoOther(0);
+                            wrkMastMapper.updateById(wrkMast1);
                         }
-                        wrkMast1.setLocNo(locNo);
-                        wrkMast1.setCrnEndTime(now);
-                        wrkMast1.setModiTime(now);
-                        wrkMast1.setWrkSts(4L);
-                        wrkMast1.setWorkNoOther(0);
-                        wrkMastMapper.updateById(wrkMast1);
                     }
                     wrkMast.setCrnEndTime(now);
                     wrkMast.setModiTime(now);
@@ -1189,6 +1198,9 @@
             // 鑾峰彇鍫嗗灈鏈轰俊鎭�
             CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId());
             CrnProtocol crnProtocol = crnThread.getCrnProtocol();
+            if(crnProtocol == null) {
+                continue;
+            }
             if (crnProtocol.getStatusType() == CrnStatusType.IDLE && crnProtocol.getTaskNo() == 0 && crnProtocol.getModeType() == CrnModeType.AUTO
                     && crnProtocol.getLoaded() == 0 && crnProtocol.getForkPos() == 0) {
                 // 鍒ゆ柇鏄笉鏄凡鍦ㄥ師鐐�
@@ -1203,8 +1215,13 @@
                 Date now = new Date();
                 Date modiTime = basCrnp.getModiTime();
                 long diffInMillis = now.getTime()-modiTime.getTime();
-                if(diffInMillis < 3 * 60 * 1000) {
+                if(diffInMillis < 10 * 1000) { // 绌洪棽灏忎簬10绉掑垯璺宠繃
                     continue;
+                } else {  // 鏈夊叆搴撲换鍔℃垨澶т簬2鍒嗛挓锛屽洖鍘熺偣
+                    int count = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("io_type", 1).eq("crn_no", crn.getId()).in("wrk_sts", 2, 9, 10));
+                    if(count == 0 && diffInMillis < 2 * 60 * 1000) {
+                        continue;
+                    }
                 }
 
                 // 鏈夊悐杞﹀叆搴撴垨鍚婅溅鍑哄簱浠诲姟
@@ -1514,13 +1531,25 @@
      */
     private synchronized void moveLocForDeepLoc(CrnSlave crn, LocMast shallowLoc,Integer mark) {
 
+        // 鍙湁208L鑳芥斁11灞�
+        String model = null;
+        if(shallowLoc.getLocSts().equals("F")) {
+            LocDetl locDetl = locDetlService.selectOne(new EntityWrapper<LocDetl>().eq("loc_no", shallowLoc.getLocNo()));
+            if(locDetl != null && locDetl.getModel() != null) {
+                String matModel = locMastMapper.selectMatMatnrByMaktx(locDetl.getModel());
+                if(matModel != null && matModel.equals("208L")) {
+                    model = "208L";
+                }
+            }
+        }
         try {
             News.warnNoLog(""+mark+"moveLocForDeepLoc"+" - 0"+" - 寮�濮嬫墽琛�:鍥犲弻娣卞簱浣嶉樆濉烇紝瀵规祬搴撲綅杩涜绉昏浆锛堢珛鍗虫墽琛岀増)");
             List<Integer> rows = locMastService.queryDistinctRow(crn.getId());
             LocMast loc = null;
             for (Integer row : rows) {
                 if (Utils.isDeepLoc(slaveProperties, row)) {
-                    loc = locMastService.queryFreeLocMast(row, shallowLoc.getLocType2());
+//                    loc = locMastService.queryFreeLocMast(row, shallowLoc.getLocType2());
+                    loc = locMastMapper.queryFreeLocMastNew(row,model);
 
                     if (loc != null) {
                         if (Utils.isDeepLoc(slaveProperties, loc.getLocNo())) {
@@ -1539,12 +1568,12 @@
             if (null == loc) {
                 for (Integer row : rows) {
                     if (Utils.isShallowLoc(slaveProperties, row)) {
-                        loc = locMastService.queryFreeLocMast(row, shallowLoc.getLocType2());
-
+//                        loc = locMastService.queryFreeLocMast(row, shallowLoc.getLocType2());
+                        loc = locMastMapper.queryFreeLocMastNew(row,model);
                         if (null != loc) {//瀵瑰簲娣卞簱浣嶉潪鍦ㄥ簱鐘舵��,涓嶈兘绉诲簱
                             String deepLoc = Utils.getDeepLoc(slaveProperties, loc.getLocNo());
                             LocMast deepLoc1 = locMastService.selectById(deepLoc);
-                            if (!deepLoc1.getLocSts().equals("F") && !deepLoc1.getLocSts().equals("D")) {
+                            if (!deepLoc1.getLocSts().equals("F") && !deepLoc1.getLocSts().equals("M")&& !deepLoc1.getLocSts().equals("Z")) {
                                 loc = null;
                             }
                         }
@@ -1576,7 +1605,7 @@
                 wrkMast.setFullPlt(shallowLoc.getLocSts().equals("F") ? "Y" : "N"); // 婊℃澘
                 wrkMast.setPicking("N"); // 鎷f枡
                 wrkMast.setExitMk("N"); // 閫�鍑�
-                wrkMast.setEmptyMk(shallowLoc.getLocSts().equals("D") ? "Y" : "N"); // 绌烘澘
+                wrkMast.setEmptyMk(shallowLoc.getLocSts().equals("M") ? "M" : shallowLoc.getLocSts().equals("Z") ? "Z" : "N"); // 绌烘澘
                 wrkMast.setBarcode(shallowLoc.getBarcode()); // 鎵樼洏鐮�
                 wrkMast.setLinkMis("N");
                 wrkMast.setAppeTime(new Date());
@@ -1604,7 +1633,7 @@
                     }
                 }
                 // 淇敼婧愬簱浣嶇姸鎬�
-                if (shallowLoc.getLocSts().equals("D") || shallowLoc.getLocSts().equals("F")) {
+                if (shallowLoc.getLocSts().equals("F") || shallowLoc.getLocSts().equals("M") || shallowLoc.getLocSts().equals("Z")) {
                     shallowLoc.setLocSts("R"); // R.鍑哄簱棰勭害
                     shallowLoc.setModiTime(new Date());
                     if (!locMastService.updateById(shallowLoc)) {
@@ -1725,6 +1754,9 @@
                 staProtocol = staProtocol.clone();
             }
             if (staProtocol.isAutoing() && staProtocol.isLoading() && (staProtocol.isInEnable() || staProtocol.isOutEnable() && site == 1090) && staProtocol.getWorkNo() != 0 && staProtocol.getWorkNo() < 9000) {
+                if (staProtocol.getSiteId() == 1034 && !staProtocol.isHigh()) { // 1034绌烘瘝鎷栧洖娴佷换鍔¢渶瑕侀珮淇″彿
+                    continue;
+                }
                 // 鏌ヨ宸ヤ綔妗�
                 WrkMast wrkMast = wrkMastMapper.selectByWrkNo(staProtocol.getWorkNo());
                 if (wrkMast == null) {
@@ -1870,7 +1902,7 @@
             if (wrkMast == null) {
                 log.error("寮傚父鍙e叆搴撲换鍔″彿鏃犱换鍔�:{}", staProtocol.getWorkNo());
                 return;
-            } else if (wrkMast.getLocNo() != null) {
+            } else if (wrkMast.getLocNo() != null && wrkMast.getLocNo().length() == 7) {
 //                log.info("寮傚父鍙e叆搴撳簱浣嶅凡鍒嗛厤:{}", wrkMast.getLocNo());
                 return;
             } else if(wrkMast.getStaNo() != 1090) {
@@ -2026,9 +2058,10 @@
                 }
                 // <4 < 2 < 4
                 int count = wrkMastMapper.selectInGzxCount(wantBucket.getSite());
-                log.info("{}鑷姩琛ョ┖妗讹紝缃愯绾胯妗跺瀷淇℃伅锛歿},姝e湪鎵ц浠诲姟鏁帮細{}", wantBucket.getSite(), wantBucket.getBucketType(), count);
+
                 if (wantBucket.getWantBucketCount() == 1) { // 鏈�鍚庡墿涓�鎷栫殑鏃跺��
-                    if (wantBucket.getSite() == 1071 && count <= 3 || wantBucket.getSite() == 1064 && count == 1 || wantBucket.getSite() == 1078 && count <= 3) { // 鍙互鍑轰竴涓�
+                    log.info("{}鑷姩琛ョ┖妗跺墿鏈�鍚庝竴鎵橈紝缃愯绾胯妗跺瀷淇℃伅锛歿},姝e湪鎵ц浠诲姟鏁帮細{}", wantBucket.getSite(), wantBucket.getBucketType(), count);
+                    if (wantBucket.getSite() == 1071 && count <= 3 || wantBucket.getSite() == 1064 && count <= 1 || wantBucket.getSite() == 1078 && count <= 3) { // 鍙互鍑轰竴涓�
                         List<LocDetl> locDetlList = locDetlService.selectListByMatnr(wantBucket.getBucketType());
                         if (locDetlList.size() == 0) {
                             log.warn("鑷姩鍑虹┖妗舵渶鍚庝竴涓紝搴撳瓨鏃犳暟鎹�");
@@ -2111,6 +2144,7 @@
 
                     }
                 } else if (wantBucket.getSite() == 1071 && count <= 2 || wantBucket.getSite() == 1064 && count == 0 || wantBucket.getSite() == 1078 && count <= 2) { // 鍙互鍑轰袱涓�
+                    log.info("{}鑷姩琛ョ┖妗讹紝缃愯绾胯妗跺瀷淇℃伅锛歿},姝e湪鎵ц浠诲姟鏁帮細{}", wantBucket.getSite(), wantBucket.getBucketType(), count);
                     // 鍒ゆ柇搴撻噷鏈夋棤绌烘《缁�
                     List<LocDetl> locDetlList = locDetlService.selectListByMatnr(wantBucket.getBucketType());
                     for (int i = 0; i < locDetlList.size(); i++) {
@@ -2185,8 +2219,8 @@
                             }
                         }
                     }
-                    log.info("娌℃湁鎴愬鐨勭┖妗剁粍锛屽彧鑳戒竴涓竴涓嚭");
                     if (locDetlList.size() > 0) {
+                        log.info("娌℃湁鎴愬鐨勭┖妗剁粍锛屽彧鑳戒竴涓竴涓嚭");
                         try {
                             LocDetl locDetl = locDetlList.get(0);
                             StockOutParam param = new StockOutParam();

--
Gitblit v1.9.1