From 759b3a648545c518a81e80e9448608e68fb17fd5 Mon Sep 17 00:00:00 2001
From: pjb <pjb123456>
Date: 星期三, 06 八月 2025 17:55:57 +0800
Subject: [PATCH] 打开罐装线出库外形检测

---
 src/main/java/com/zy/service/impl/MainServiceImpl.java |  214 +++++++++++++++++++++++++++++++----------------------
 1 files changed, 125 insertions(+), 89 deletions(-)

diff --git a/src/main/java/com/zy/service/impl/MainServiceImpl.java b/src/main/java/com/zy/service/impl/MainServiceImpl.java
index 87481b1..446ffbb 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
@@ -177,34 +180,34 @@
                 // 灏哄妫�娴嬪紓甯�
                 boolean back = false;
                 String errMsg = "";
-//                if (staProtocol.isFrontErr()) {
-//                    errMsg = "鍓嶈秴闄�";
-//                    back = true;
-//                }
-//                if (!back && staProtocol.isBackErr()) {
-//                    errMsg = "鍚庤秴闄�";
-//                    back = true;
-//                }
-//                if (!back && staProtocol.isHighErr()) {
-//                    errMsg = "楂樿秴闄�";
-//                    back = true;
-//                }
-//                if (!back && staProtocol.isLeftErr()) {
-//                    errMsg = "宸﹁秴闄�";
-//                    back = true;
-//                }
-//                if (!back && staProtocol.isRightErr()) {
-//                    errMsg = "鍙宠秴闄�";
-//                    back = true;
-//                }
-//                if (!back && staProtocol.isWeightErr()) {
-//                    errMsg = "瓒呴噸";
-//                    back = true;
-//                }
-//                if (!back && staProtocol.isBarcodeErr()) {
-//                    errMsg = "鎵爜澶辫触";
-//                    back = true;
-//                }
+                if (staProtocol.isFrontErr()) {
+                    errMsg = "鍓嶈秴闄�";
+                    back = true;
+                }
+                if (!back && staProtocol.isBackErr()) {
+                    errMsg = "鍚庤秴闄�";
+                    back = true;
+                }
+                if (!back && staProtocol.isHighErr()) {
+                    errMsg = "楂樿秴闄�";
+                    back = true;
+                }
+                if (!back && staProtocol.isLeftErr()) {
+                    errMsg = "宸﹁秴闄�";
+                    back = true;
+                }
+                if (!back && staProtocol.isRightErr()) {
+                    errMsg = "鍙宠秴闄�";
+                    back = true;
+                }
+                if (!back && staProtocol.isWeightErr()) {
+                    errMsg = "瓒呴噸";
+                    back = true;
+                }
+                if (!back && staProtocol.isBarcodeErr()) {
+                    errMsg = "鎵爜澶辫触";
+                    back = true;
+                }
                 // 閫�鍥�
                 if (back && staProtocol.isInEnable() && staProtocol.isLoading() && staProtocol.getWorkNo() == 0) {
                     MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errMsg));
@@ -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())) {
@@ -824,12 +827,25 @@
         if (config != null && config.getStatus() == 1) {
             crnAvailableOut = true;
         }
+        // 闄愬埗鍘绘崋缁戞満鍣ㄤ换鍔℃暟
+        int kbWrks = wrkMastMapper.selectCountByKb();
         for (CrnSlave.CrnStn crnStn : slave.getCrnOutStn()) {
             // 鑾峰彇宸ヤ綔鐘舵�佷负11锛堢敓鎴愬嚭搴揑D锛夌殑鍑哄簱宸ヤ綔妗�
             List<WrkMast> wrkMasts = wrkMastMapper.selectPakOutStep11(slave.getId(), crnStn.getStaNo());
             for (WrkMast wrkMast : wrkMasts) {
                 if (wrkMast == null) {
                     continue;
+                }
+                if (wrkMast.getStaNo() == 1031) {
+                    // 鑾峰彇1033鏃犵姸鎬佹椂浠诲姟鏁�+1
+                    SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1);
+                    StaProtocol staProtocol = devpThread.getStation().get(1033);
+                    if (staProtocol.isLoading() && staProtocol.getWorkNo() == 0) {
+                        kbWrks ++;
+                    }
+                    if (kbWrks > 1) {
+                        continue;
+                    }
                 }
                 // 宸ヤ綔妗g姸鎬佸垽鏂�
                 if (wrkMast.getIoType() < 100 || wrkMast.getSourceStaNo() == null) {
@@ -898,7 +914,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鏍囪绉诲簱浠诲姟(瀹规槗琚彇娑堝鑷村牭濉�)锛屾煡璇㈠伐浣滄。鏄惁瀛樺湪浠诲姟
@@ -1152,21 +1168,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);
@@ -1210,8 +1228,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;
+                    }
                 }
 
                 // 鏈夊悐杞﹀叆搴撴垨鍚婅溅鍑哄簱浠诲姟
@@ -1237,7 +1260,7 @@
                     basCrnpService.updateById(basCrnp); // 璁剧疆鏇存柊鏃堕棿锛岄伩鍏嶉噸澶嶄笅鍙戝洖鍘熺偣
                     log.info("{}鍙峰爢鍨涙満鍥炲師鐐逛换鍔′笅鍙戞垚鍔燂細{}", crn.getId(), JSON.toJSON(crnCommand));
                 }
-                Thread.sleep(2000);
+                Thread.sleep(3000);
             }
         }
     }
@@ -1521,13 +1544,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())) {
@@ -1546,12 +1581,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;
                             }
                         }
@@ -1583,7 +1618,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());
@@ -1611,7 +1646,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)) {
@@ -1732,8 +1767,8 @@
                 staProtocol = staProtocol.clone();
             }
             if (staProtocol.isAutoing() && staProtocol.isLoading() && (staProtocol.isInEnable() || staProtocol.isOutEnable() && site == 1090) && staProtocol.getWorkNo() != 0 && staProtocol.getWorkNo() < 9000) {
-                if (staProtocol.getWorkNo() == 1034 && !staProtocol.isHigh()) { // 1034绌烘瘝鎷栧洖娴佷换鍔¢渶瑕侀珮淇″彿
-                    return;
+                if (staProtocol.getSiteId() == 1034 && !staProtocol.isHigh()) { // 1034绌烘瘝鎷栧洖娴佷换鍔¢渶瑕侀珮淇″彿
+                    continue;
                 }
                 // 鏌ヨ宸ヤ綔妗�
                 WrkMast wrkMast = wrkMastMapper.selectByWrkNo(staProtocol.getWorkNo());
@@ -1742,34 +1777,34 @@
                     continue;
                 }
                 // 1083,1086,1089 澶栧舰妫�娴嬪け璐ワ紝涓嶆槸鍘诲紓甯稿彛鐨� 鍋滃湪鍘熷
-//                if (staProtocol.getSiteId() == 1083 || staProtocol.getSiteId() == 1086 || staProtocol.getSiteId() == 1089 && wrkMast.getStaNo() != 1090) {
-//                    boolean back = false;
-//                    String errMsg = "";
-//                    if (staProtocol.isFrontErr()) {
-//                        errMsg = "鍓嶈秴闄�";
-//                        back = true;
-//                    }
-//                    if (!back && staProtocol.isBackErr()) {
-//                        errMsg = "鍚庤秴闄�";
-//                        back = true;
-//                    }
-//                    if (!back && staProtocol.isHighErr()) {
-//                        errMsg = "楂樿秴闄�";
-//                        back = true;
-//                    }
-//                    if (!back && staProtocol.isLeftErr()) {
-//                        errMsg = "宸﹁秴闄�";
-//                        back = true;
-//                    }
-//                    if (!back && staProtocol.isRightErr()) {
-//                        errMsg = "鍙宠秴闄�";
-//                        back = true;
-//                    }
-//                    if (back) {
-//                        log.error("{}绔欑偣锛屽褰㈡娴嬪け璐ワ細{}",site,errMsg);
-//                        continue;
-//                    }
-//                }
+                if (staProtocol.getSiteId() == 1083 || staProtocol.getSiteId() == 1086 || staProtocol.getSiteId() == 1089 && wrkMast.getStaNo() != 1090) {
+                    boolean back = false;
+                    String errMsg = "";
+                    if (staProtocol.isFrontErr()) {
+                        errMsg = "鍓嶈秴闄�";
+                        back = true;
+                    }
+                    if (!back && staProtocol.isBackErr()) {
+                        errMsg = "鍚庤秴闄�";
+                        back = true;
+                    }
+                    if (!back && staProtocol.isHighErr()) {
+                        errMsg = "楂樿秴闄�";
+                        back = true;
+                    }
+                    if (!back && staProtocol.isLeftErr()) {
+                        errMsg = "宸﹁秴闄�";
+                        back = true;
+                    }
+                    if (!back && staProtocol.isRightErr()) {
+                        errMsg = "鍙宠秴闄�";
+                        back = true;
+                    }
+                    if (back) {
+                        log.error("{}绔欑偣锛屽褰㈡娴嬪け璐ワ細{}",site,errMsg);
+                        continue;
+                    }
+                }
                 if (staProtocol.getSiteId() == 1090 && wrkMast.getStaNo() == 1090) {
                     continue;
                 }
@@ -1779,12 +1814,12 @@
                         DevpThread devpThread2 = (DevpThread) SlaveConnection.get(SlaveType.Devp, 2);
                         StaProtocol staProtocol2 = devpThread2.getStation().get(1090);
                         if(!staProtocol2.isAutoing() || staProtocol2.isLoading() || staProtocol2.getWorkNo() != 0) {
-                            log.info("鍘诲紓甯稿彛鐩爣绔欑偣锛岄潪鑷姩锛屾湁鐗╋紝宸ヤ綔鍙蜂负锛歿}",staProtocol2.getWorkNo());
+                            log.info("{}鍘诲紓甯稿彛鐩爣绔欑偣锛岃嚜鍔�:{}锛屾湁鐗�:{}锛屽伐浣滃彿涓猴細{}",wrkMast.getWrkNo(),staProtocol2.isAutoing(),staProtocol2.isLoading(),staProtocol2.getWorkNo());
                             continue;
                         }
-                        int count = wrkMastService.selectCount(new EntityWrapper<WrkMast>().where("sta_no = 1090 and wrk_sts in (9,10)"));
+                        int count = wrkMastService.selectCount(new EntityWrapper<WrkMast>().where("sta_no = 1090 AND (wrk_sts IN (9,10) OR (wrk_sts = 2 AND rgv_finish_time IS NOT NULL))"));
                         if (count > 0) {
-                            log.info("鍘诲紓甯稿彛锛屼絾鏄墠闈㈡湁鍘诲紓甯稿彛浠诲姟鏁帮細{}",count);
+                            log.info("{}鍘诲紓甯稿彛锛屼絾鏄墠闈㈡湁鍘诲紓甯稿彛浠诲姟鏁帮細{}",wrkMast.getWrkNo(),count);
                             continue;
                         }
                     }
@@ -1803,7 +1838,7 @@
     /**
      * rgv鏀捐揣瀹屾垚锛岀粰杈撻�佺嚎涓嬪彂浠诲姟
      */
-    public synchronized void rgvToDev() {
+    public synchronized void rgvToDev() throws InterruptedException {
         for (Integer site : rgvConnectionSiteList) {
             // 杈撻�佺嚎plc缂栧彿
             Integer devpPlcId = site < 1044 ? 1 : site <= 1090 ? 2 : 3;
@@ -1841,7 +1876,7 @@
                     wrkMast.setWrkSts(15L);
                     wrkMast.setModiTime(new Date());
                     wrkMastService.updateById(wrkMast);
-                } else if(wrkMast.getIoType() == 110 && (wrkMast.getStaNo() == 1002 || wrkMast.getStaNo() == 1020 ||wrkMast.getStaNo() == 1035)) {
+                } else if(wrkMast.getIoType() == 110 && (wrkMast.getStaNo() == 1002 || wrkMast.getStaNo() == 1020 ||wrkMast.getStaNo() == 1035 || wrkMast.getStaNo() == 1024)) {
                     if(wrkMast.getWrkSts() != 2 ){
                         log.warn("rgv鏀捐揣瀹屾垚110锛宺gv鏈浣�:rgv鍙穥}锛屼换鍔″彿锛歿}锛屼换鍔$姸鎬亄}",wrkMast.getRgvNo(),wrkMast.getWrkNo(),wrkMast.getWrkSts());
                         continue;
@@ -1855,10 +1890,11 @@
                 staProtocol.setWorkNo(staProtocol.getHideWorkNo());
                 staProtocol.setStaNo(wrkMast.getStaNo().shortValue());
                 if (!MessageQueue.offer(SlaveType.Devp, devpPlcId, new Task(2, staProtocol))) {
-                    log.info("rgv鎼繍瀹屾垚缁欒緭閫佺嚎涓嬪彂鍛戒护澶辫触!,plc id:{},绔欑偣{}锛屼换鍔″彿锛歿}锛岀洰鏍囩珯锛歿}", devpPlcId,staProtocol.getStaNo(), staProtocol.getWorkNo(), staProtocol.getStaNo());
+                    log.info("rgv鎼繍瀹屾垚缁欒緭閫佺嚎涓嬪彂鍛戒护澶辫触!,plc id:{},绔欑偣{}锛屼换鍔″彿锛歿}锛岀洰鏍囩珯锛歿}", devpPlcId,staProtocol.getSiteId(), staProtocol.getWorkNo(), staProtocol.getStaNo());
                 } else {
-                    log.info("rgv鎼繍瀹屾垚缁欒緭閫佺嚎涓嬪彂鍛戒护鎴愬姛plc id:{}!,绔欑偣{}锛屼换鍔″彿锛歿}锛岀洰鏍囩珯锛歿}", devpPlcId,staProtocol.getStaNo(), staProtocol.getWorkNo(), staProtocol.getStaNo());
+                    log.info("rgv鎼繍瀹屾垚缁欒緭閫佺嚎涓嬪彂鍛戒护鎴愬姛plc id:{}!,绔欑偣{}锛屼换鍔″彿锛歿}锛岀洰鏍囩珯锛歿}", devpPlcId,staProtocol.getSiteId(), staProtocol.getWorkNo(), staProtocol.getStaNo());
                 }
+                Thread.sleep(300);
             }
         }
     }

--
Gitblit v1.9.1