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/core/model/protocol/StaProtocol.java |    3 +
 src/main/java/com/zy/controller/SiteController.java       |    4 
 src/main/webapp/views/pipeline.html                       |    4 
 src/main/java/com/zy/service/impl/MainServiceImpl.java    |   56 ++++++++++++++++--
 src/main/java/com/zy/common/model/SearchLocParam.java     |    2 
 src/main/java/com/zy/core/thread/SiemensDevpThread.java   |   68 ++++++++++++++++++++--
 6 files changed, 117 insertions(+), 20 deletions(-)

diff --git a/src/main/java/com/zy/common/model/SearchLocParam.java b/src/main/java/com/zy/common/model/SearchLocParam.java
index e01c609..fb53e42 100644
--- a/src/main/java/com/zy/common/model/SearchLocParam.java
+++ b/src/main/java/com/zy/common/model/SearchLocParam.java
@@ -41,6 +41,8 @@
     public static class WantBucket{
         private int site;
         private int bucketType;
+        // 缃愯绾跨綈瑁呮暟閲忥紙鎷栵級
+        private int wantBucketCount;
     }
 
     public static void main(String[] args) {
diff --git a/src/main/java/com/zy/controller/SiteController.java b/src/main/java/com/zy/controller/SiteController.java
index 80b54bd..0728e2c 100644
--- a/src/main/java/com/zy/controller/SiteController.java
+++ b/src/main/java/com/zy/controller/SiteController.java
@@ -78,8 +78,8 @@
             vo.setLoading(staProtocol.isLoading()?"Y":"N");     // 鏈夌墿
             vo.setInEnable(staProtocol.isInEnable()?"Y":"N");   // 鍙叆
             vo.setOutEnable(staProtocol.isOutEnable()?"Y":"N"); // 鍙嚭
-            vo.setPakMk(staProtocol.isPakMk()?"Y":"N");       // 鍏ュ簱鏍囪
-            vo.setEmptyMk(staProtocol.isEmptyMk()?"Y":"N");     // 绌烘澘淇″彿
+            vo.setPakMk(String.valueOf(staProtocol.getWantBucketFlag()));       // 鍏ュ簱鏍囪 -> 瑕佹《淇″彿
+            vo.setEmptyMk(String.valueOf(staProtocol.getWantBucketCount()));     // 绌烘澘淇″彿 -> 瑕佹《鏁�
             vo.setStaNo(staProtocol.getStaNo());                // 鐩爣绔�
             vo.setWorkNo(staProtocol.getWorkNo());
 //            vo.setLocType1(staProtocol.isHigh() != staProtocol.isLow() && staProtocol.isLow() ? "浣�" : "楂�");     //楂樹綆搴撲綅
diff --git a/src/main/java/com/zy/core/model/protocol/StaProtocol.java b/src/main/java/com/zy/core/model/protocol/StaProtocol.java
index 7a3f8cb..7529041 100644
--- a/src/main/java/com/zy/core/model/protocol/StaProtocol.java
+++ b/src/main/java/com/zy/core/model/protocol/StaProtocol.java
@@ -85,6 +85,9 @@
     // 瑕佹《鍨�-------------------------------------------------------------------------
     private int wantBucketFlag = 0;
 
+    // 缃愯绾跨綈瑁呮暟閲忥紙鎷栵級
+    private int wantBucketCount = 0;
+
     // 鍑虹綈瑁呯嚎 缃愯绾垮弽棣堢粰wcs----------------------------------------------------------
 
     // 浠诲姟鍙�
diff --git a/src/main/java/com/zy/core/thread/SiemensDevpThread.java b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
index 891c701..4072c4a 100644
--- a/src/main/java/com/zy/core/thread/SiemensDevpThread.java
+++ b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -156,6 +156,10 @@
                     case 5:
                         writeGzxkc((StaProtocol)task.getData());
                         break;
+                    // 缁欑綈瑁呯嚎鍐欑綈瑁呮暟閲�
+                    case 6:
+                        writeGzsl((StaProtocol)task.getData());
+                        break;
                     default:
                         break;
                 }
@@ -227,19 +231,26 @@
             OperateResultExOne<byte[]> read = siemensS7Net.Read("DB101.0", (short) 64);
             if (read.IsSuccess) {
                 // 15绉掓墦鍗颁竴涓嬫棩蹇�
-                if (System.currentTimeMillis() - lastLogTime >= 15000) {
-                    OperateResultExOne<byte[]> readKc = siemensS7Net.Read("DB100.6", (short) 2);
-                    if(readKc.IsSuccess){
-                        short i = siemensS7Net.getByteTransform().TransInt16(readKc.Content, 0);
-                        log.info("璇粄}鍙风綈瑁呯嚎鍙嚭淇″彿鎴愬姛锛屽�硷細{}", slave.getId() -3, i);
-                    }
-                    lastLogTime = System.currentTimeMillis();
-                }
+//                if (System.currentTimeMillis() - lastLogTime >= 30000) {
+//                    OperateResultExOne<byte[]> readKc = siemensS7Net.Read("DB100.6", (short) 4);
+//                    if(readKc.IsSuccess){
+//                        short i = siemensS7Net.getByteTransform().TransInt16(readKc.Content, 0);
+//                        short wantBucketCount = siemensS7Net.getByteTransform().TransInt16(readKc.Content, 2);
+//                        log.info("璇粄}鍙风綈瑁呯嚎鍙嚭淇″彿鎴愬姛锛屽�硷細{}锛屽墿浣欒妗舵暟閲忥細{}", slave.getId() -3, i, wantBucketCount);
+//                    }
+//                    lastLogTime = System.currentTimeMillis();
+//                }
                 // 鎴愬搧淇℃伅鍙嶉鍒扮綈瑁呯嚎鍑哄彛绔欑偣
                 DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, 2);
                 StaProtocol staProtocol = devpThread.getStation().get(gzxResultSite.get(slave.getId()-4));
                 if (staProtocol != null) {
                     staProtocol.setWantBucketFlag(siemensS7Net.getByteTransform().TransInt16(read.Content, 0));// 缃愯绾胯妗跺瀷淇″彿
+                    OperateResultExOne<byte[]> read2 = siemensS7Net.Read("DB100.8", (short) 2); // 缃愯绾跨綈瑁呮暟閲忥紙鎷栵級
+                    if(read2.IsSuccess){
+                        staProtocol.setWantBucketCount(siemensS7Net.getByteTransform().TransInt16(read2.Content, 0));
+                    } else {
+                        log.error("璇粄}鍙风綈瑁呯嚎瑕佹嫋鏁伴噺澶辫触", slave.getId() -3);
+                    }
                     staProtocol.setWrkNo(siemensS7Net.getByteTransform().TransInt16(read.Content, 2));
                     double weight208l1 = siemensS7Net.getByteTransform().TransSingle(read.Content, 4); // 200L妗�1鍑�閲�
                     double weight208l2 = siemensS7Net.getByteTransform().TransSingle(read.Content, 8); // 200L妗�2鍑�閲�
@@ -575,6 +586,47 @@
     }
 
     /**
+     * 缁欑綈瑁呯嚎鍐欑綈瑁呮暟閲�
+     */
+    private void writeGzsl(StaProtocol staProtocol) throws InterruptedException {
+        if (null == staProtocol) {
+            return;
+        }
+        short[] common = new short[1];
+        common[0] = (short) staProtocol.getWantBucketCount();
+
+        OperateResult write;
+        //浠诲姟涓嬪彂娆℃暟
+        int writeCount = 0;
+        do {
+            write = siemensS7Net.Write("DB100.8", common);
+            Thread.sleep(200);
+            OperateResultExOne<byte[]> read = siemensS7Net.Read("DB100.8", (short) 2);
+            if(write.IsSuccess && read.IsSuccess){
+                short i = siemensS7Net.getByteTransform().TransInt16(read.Content, 0);
+                if ( i != common[0]) {
+                    writeCount++;
+                    log.error("缁欑綈瑁呯嚎鍐欑綈瑁呮暟閲忔垚鍔燂紝浣嗗洖璇诲け璐ワ細璇诲彇鍊硷細{},杈撻�佺嚎plc缂栧彿={}锛屽啓鍏ユ鏁�={}", i, slave.getId(), writeCount);
+                    continue;
+                }
+                break;
+            }
+            else {
+                writeCount++;
+                log.error("缁欑綈瑁呯嚎鍐欑綈瑁呮暟閲忥細{}澶辫触銆傝緭閫佺嚎plc缂栧彿={}锛屽啓鍏ユ鏁�={}", common[0], slave.getId(), writeCount);
+            }
+        }while (writeCount<5);
+
+        if (!write.IsSuccess) {
+            OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戠粰缁欑綈瑁呯嚎鍐欑綈瑁呮暟閲忓け璐ャ�傝緭閫佺嚎plc缂栧彿={1}锛岀珯鐐规暟鎹�={2}", slave.getId(), staProtocol.getWantBucketCount()));
+            News.error("缁欑綈瑁呯嚎鍐欑綈瑁呮暟閲忓け璐ャ�傝緭閫佺嚎plc缂栧彿={}锛岀珯鐐规暟鎹�={}", slave.getId(), staProtocol.getWantBucketCount());
+        } else {
+            OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆� 缁欑綈瑁呯嚎鍐欑綈瑁呮暟閲忓懡浠や笅鍙戞垚鍔� [id:{1}] >>>>> {2}", DateUtils.convert(new Date()), slave.getId(), staProtocol.getWantBucketCount()));
+            News.info("缁欑綈瑁呯嚎鍐欑綈瑁呮暟閲忓彿鍛戒护涓嬪彂鎴愬姛 [id:{}] >>>>> 鍛戒护涓嬪彂锛� {}",  slave.getId(), staProtocol.getWantBucketCount());
+        }
+    }
+
+    /**
      * 蹇冭烦
      */
     private void heartbeat(){
diff --git a/src/main/java/com/zy/service/impl/MainServiceImpl.java b/src/main/java/com/zy/service/impl/MainServiceImpl.java
index a69b78a..afdfb38 100644
--- a/src/main/java/com/zy/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/service/impl/MainServiceImpl.java
@@ -265,6 +265,9 @@
                             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.info("杈撻�佺嚎涓嬪彂2锛�"+dto.getWorkNo()+","+dto.getStaNo());
@@ -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);
     }
 
     /**
@@ -1144,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) {
                 // 鍒ゆ柇鏄笉鏄凡鍦ㄥ師鐐�
@@ -1178,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));
                 }
             }
@@ -1962,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)) {
@@ -2038,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();
diff --git a/src/main/webapp/views/pipeline.html b/src/main/webapp/views/pipeline.html
index c316cbd..18abc7b 100644
--- a/src/main/webapp/views/pipeline.html
+++ b/src/main/webapp/views/pipeline.html
@@ -112,8 +112,8 @@
                         <th>鏈夌墿</th>
                         <th>鍙叆</th>
                         <th>鍙嚭</th>
-                        <th>鍏ュ簱鏍囪</th>
-                        <th>绌烘澘淇″彿</th>
+                        <th>瑕佹《淇″彿</th>
+                        <th>瑕佹《鏁�</th>
                         <th>鐩爣绔�</th>
                         <th>楂樹綆搴撲綅</th>
                     </tr>

--
Gitblit v1.9.1