From 8dad82eb9bc7f51e0d22f6e92106733d4386627c Mon Sep 17 00:00:00 2001
From: pjb <pjb123456>
Date: 星期日, 06 七月 2025 16:13:31 +0800
Subject: [PATCH] 读取更新罐装线要桶数量

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

diff --git a/src/main/java/com/zy/service/impl/MainServiceImpl.java b/src/main/java/com/zy/service/impl/MainServiceImpl.java
index 2050fc1..afdfb38 100644
--- a/src/main/java/com/zy/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/service/impl/MainServiceImpl.java
@@ -265,9 +265,12 @@
                             barcodeThread.setBarcode("");
                             staProtocol.setWorkNo(dto.getWorkNo());
                             staProtocol.setStaNo(dto.getStaNo().shortValue());
+                            if (dto.getStaNo() == 1071 || dto.getStaNo() == 1064 || dto.getStaNo() == 1078) {
+                                decreaseWantBucketCount(dto.getStaNo(),1);
+                            }
                             devpThread.setPakMk(staProtocol.getSiteId(), false);
                             boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
-                            log.error("杈撻�佺嚎涓嬪彂2锛�"+dto.getWorkNo()+","+dto.getStaNo());
+                            log.info("杈撻�佺嚎涓嬪彂2锛�"+dto.getWorkNo()+","+dto.getStaNo());
                             if (!result) {
                                 News.error(methodName + ":鏇存柊plc绔欑偣淇℃伅澶辫触");
                                 throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
@@ -302,10 +305,47 @@
         StaProtocol staProtocol1084 = devpThread.getStation().get(1084);
         StaProtocol staProtocol1087 = devpThread.getStation().get(1087);
         List<SearchLocParam.WantBucket> wantBucketList = new ArrayList<>();
-        wantBucketList.add(new SearchLocParam.WantBucket(1064,staProtocol1084.getWantBucketFlag()));
-        wantBucketList.add(new SearchLocParam.WantBucket(1071,staProtocol1081.getWantBucketFlag()));
-        wantBucketList.add(new SearchLocParam.WantBucket(1078,staProtocol1087.getWantBucketFlag()));
+        wantBucketList.add(new SearchLocParam.WantBucket(1064,staProtocol1084.getWantBucketFlag(),staProtocol1084.getWantBucketCount()));
+        wantBucketList.add(new SearchLocParam.WantBucket(1071,staProtocol1081.getWantBucketFlag(),staProtocol1081.getWantBucketCount()));
+        wantBucketList.add(new SearchLocParam.WantBucket(1078,staProtocol1087.getWantBucketFlag(),staProtocol1087.getWantBucketCount()));
         return wantBucketList;
+    }
+
+    /**
+     * 缃愯绾胯妗舵暟閲忓噺灏�
+     */
+    private void decreaseWantBucketCount(int site, int decrease) {
+
+        int siteNew;
+        switch (site) {
+            case 1071: siteNew = 1081;break;
+            case 1064: siteNew = 1084;break;
+            case 1078: siteNew = 1087;break;
+            default:
+                return;
+        }
+
+        SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 2);
+        StaProtocol staProtocol = devpThread.getStation().get(siteNew);
+
+        int count = staProtocol.getWantBucketCount();
+
+        int remaining = count - decrease;
+        if ( remaining < 0) {
+            log.error("鑷姩鍑虹┖妗跺噺灏戠綈瑁呯嚎瑕佹《鏁板紓甯革紝绔欑偣锛歿}锛屽噺灏戝墠锛歿}锛屽噺灏戞暟锛歿}锛屽墿浣欒妗舵暟锛歿}", site, count, decrease, remaining);
+            return;
+        }
+
+        staProtocol.setWantBucketCount(remaining); // 璁剧疆鍓╀綑瑕佹《鏁�
+
+        boolean offer = MessageQueue.offer(SlaveType.Devp, inGzxSiteList.indexOf(site) + 4, new Task(6, staProtocol));
+        if (offer) {
+            log.info("鑷姩鍑虹┖妗跺噺灏戠綈瑁呯嚎瑕佹《鏁板懡浠ゆ帹閫侀槦鍒楁垚鍔燂細绔欑偣锛歿}锛屽墿浣欒妗舵暟锛歿}" ,site, remaining);
+        } else {
+            log.error("鑷姩鍑虹┖妗跺噺灏戠綈瑁呯嚎瑕佹《鏁板懡浠ゆ帹閫侀槦鍒楀け璐ワ細绔欑偣锛歿}锛屽墿浣欒妗舵暟锛歿}" ,site, remaining);
+        }
+
+        log.info("鑷姩鍑虹┖妗跺噺灏戠綈瑁呯嚎瑕佹《鏁版垚鍔燂紝绔欑偣锛歿}锛屽噺灏戝墠锛歿}锛屽噺灏戞暟锛歿}锛屽墿浣欒妗舵暟锛歿}", site, count, decrease, remaining);
     }
 
     /**
@@ -810,8 +850,9 @@
                 }
 
                 // 鍒ゆ柇鍫嗗灈鏈哄嚭搴撶珯鐘舵��
-                if (staProtocol.isAutoing() && !staProtocol.isLoading() && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y")
-                        && staProtocol.getWorkNo() == 0 && staProtocol.isOutEnable()) {
+                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 (!crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() != 0) {
                         break;
@@ -1105,6 +1146,12 @@
                         // 浜ゆ崲搴撲綅鍙�
                         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);
@@ -1137,9 +1184,6 @@
             // 鑾峰彇鍫嗗灈鏈轰俊鎭�
             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) {
                 // 鍒ゆ柇鏄笉鏄凡鍦ㄥ師鐐�
@@ -1148,6 +1192,9 @@
                 }
                 // 鍒ゆ柇鏄笉鏄┖闂蹭笁鍒嗛挓
                 BasCrnp basCrnp = basCrnpService.selectById(crn.getId());
+                if (basCrnp.getWrkNo() != 0) {
+                    continue;
+                }
                 Date now = new Date();
                 Date modiTime = basCrnp.getModiTime();
                 long diffInMillis = now.getTime()-modiTime.getTime();
@@ -1168,6 +1215,8 @@
                 if (!MessageQueue.offer(SlaveType.Crn, crn.getId(), new Task(2, crnCommand))) {
                     News.error("鍥炲師鐐逛换鍔′笅鍙戝け璐�", crn.getId(), JSON.toJSON(crnCommand));
                 } else {
+                    basCrnp.setModiTime(new Date());
+                    basCrnpService.updateById(basCrnp); // 璁剧疆鏇存柊鏃堕棿锛岄伩鍏嶉噸澶嶄笅鍙戝洖鍘熺偣
                     log.info("{}鍙峰爢鍨涙満鍥炲師鐐逛换鍔′笅鍙戞垚鍔燂細{}", crn.getId(), JSON.toJSON(crnCommand));
                 }
             }
@@ -1696,7 +1745,7 @@
 //                    }
 //                    if (back) {
 //                        log.error("{}绔欑偣锛屽褰㈡娴嬪け璐ワ細{}",site,errMsg);
-//                        return;
+//                        continue;
 //                    }
 //                }
                 if (staProtocol.getSiteId() == 1090 && wrkMast.getStaNo() == 1090) {
@@ -1762,7 +1811,7 @@
 //                    }
                     wrkMast.setModiTime(new Date());
                     wrkMastService.updateById(wrkMast);
-                } else if(wrkMast.getIoType() == 101 && (wrkMast.getStaNo() == 1024 || wrkMast.getStaNo() == 1016 || wrkMast.getStaNo() == 1043)) {
+                } else if(wrkMast.getIoType() == 101 && (wrkMast.getStaNo() == 1024 || wrkMast.getStaNo() == 1031 || wrkMast.getStaNo() == 1016 || wrkMast.getStaNo() == 1043)) {
                     if(wrkMast.getWrkSts() != 2 ) {
                         log.warn("rgv鏀捐揣瀹屾垚101锛宺gv鏈浣�:rgv鍙穥}锛屼换鍔″彿锛歿}锛屼换鍔$姸鎬亄}", wrkMast.getRgvNo(), wrkMast.getWrkNo(), wrkMast.getWrkSts());
                         continue;
@@ -1952,7 +2001,7 @@
         String[] split = config.getValue().split("=");
 
         for (SearchLocParam.WantBucket wantBucket : getWantBucketFlag()) {
-            if (wantBucket.getBucketType() != 0) { // 缃愯绾挎湁瑕佹《淇″彿
+            if (wantBucket.getBucketType() != 0 && wantBucket.getWantBucketCount() >= 2) { // 缃愯绾挎湁瑕佹《淇″彿
                 boolean flag = true; // 鏄惁闇�瑕佽嚜鍔ㄨˉ锛宼rue涓嶉渶瑕侊紝false闇�瑕�
                 for(String item: split) {
                     if(String.valueOf(wantBucket.getSite()).equals(item)) {
@@ -1966,6 +2015,7 @@
                 // <4 < 2 < 4
                 int count = wrkMastMapper.selectInGzxCount(wantBucket.getSite());
                 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++) {
@@ -2027,10 +2077,11 @@
                                     log.info("鑷姩鍑虹┖妗惰姹倃ms鍘熷杩斿洖锛�" + response);
                                     JSONObject jsonObject = JSON.parseObject(response);
                                     if (jsonObject.getInteger("code").equals(200)) {
+                                        decreaseWantBucketCount(wantBucket.getSite(),2);
                                         log.info("鑷姩鍑虹┖妗舵垚鍔�:{}",wantBucket.getSite());
                                         return;
                                     } else {
-                                        News.error("鑷姩绌烘《鍑哄簱" + ":璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin/loc/v1", JSON.toJSONString(param), response);
+                                        News.error("鑷姩绌烘《鍑哄簱" + ":璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/autoOutEmptyBucket", JSON.toJSONString(param), response);
                                     }
                                 } catch (Exception e) {
                                     e.printStackTrace();

--
Gitblit v1.9.1