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