From b3280d431ea42f46afe020782b677b11d504be31 Mon Sep 17 00:00:00 2001
From: 1 <1>
Date: 星期三, 14 一月 2026 13:32:38 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 61 ++++++++++++--
src/main/java/com/zy/core/thread/SiemensDevpThread.java | 162 ++++++++++++++++++++++++++++++++++++++++
2 files changed, 212 insertions(+), 11 deletions(-)
diff --git a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
index 8646b5a..54da5d7 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -314,7 +314,7 @@
}
WrkMast checkPick = wrkMastService.selectOne(new EntityWrapper<WrkMast>()
.eq("barcode", barcode)
- .in("io_type", 107,103,57));
+ .in("io_type", 107,103,57,53));
if (!Cools.isEmpty(checkPick)) {
continue;
}
@@ -537,6 +537,44 @@
// if (devpThread.ioMode != IoModeType.PAKIN_MODE) { continue; }
if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable() && staProtocol.isPakMk()) {
+ // 鍒ゆ柇閲嶅宸ヤ綔妗�
+ WrkMast wrkMast1 = wrkMastMapper.selectPakInStep1(pickSta.getStaNo(), barcode);
+ if (wrkMast1 != null) {
+ int wrkNo1 = basDevpService.selectCount(new EntityWrapper<BasDevp>().eq("wrk_no", wrkMast1.getWrkNo()));
+ if (wrkNo1 != 0){
+ News.error(barcode + "鏉$爜宸插瓨鍦ㄧ姸鎬佷负锛� 2.璁惧涓婅蛋 锛夌殑鏁版嵁,璇锋煡鐪媁CS杈撻�佺嚎鐣岄潰,宸ヤ綔鍙�={}", wrkMast1.getWrkNo());
+ StaProtocol staProtocolNew = new StaProtocol();
+ staProtocolNew.setWorkNo(wrkMast1.getWrkNo());
+ staProtocolNew.setStaNo(RouteUtils.SouStaEnd(wrkMast1.getStaNo(),wrkMast1.getSourceStaNo()));
+ staProtocolNew.setSiteId(staProtocol.getSiteId());
+ devpThread.setPakMk(staProtocol.getSiteId(), false);
+ staProtocolNew.setBarcode(barcode);
+ MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocolNew));
+ if (ledThread != null) {
+ MessageQueue.offer(SlaveType.Led, pickSta.getLed(), new Task(3, barcode + "鏉$爜宸插瓨鍦ㄧ姸鎬佷负锛� 2.璁惧涓婅蛋 锛夌殑浠诲姟,宸ヤ綔鍙�="+ wrkMast1.getWrkNo()));
+ }
+ continue;
+ }
+ barcodeThread.setBarcode("");
+ staProtocol.setWorkNo(wrkMast1.getWrkNo());
+ staProtocol.setStaNo(RouteUtils.SouStaEnd(null,wrkMast1.getSourceStaNo()));
+ staProtocol.setBarcode(barcode);
+
+ devpThread.setPakMk(staProtocol.getSiteId(), false);
+ boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+ log.info("杈撻�佺嚎涓嬪彂(瀛樺湪璁惧涓婅蛋鐨勫伐浣滄。锛岀洿鎺ヤ笅鍙戯紒))锛�"+wrkMast1.getWrkNo()+","+wrkMast1.getStaNo());
+
+ ledThread.errorReset();
+ log.info("缁勬墭璇锋眰鍚嶭ED閿欒娓呴櫎");
+
+ if (!result) {
+ News.error( ":鏇存柊plc绔欑偣淇℃伅澶辫触");
+ log.error("杈撻�佺嚎涓嬪彂(瀛樺湪璁惧涓婅蛋鐨勫伐浣滄。锛岀洿鎺ヤ笅鍙戯紒)==>鏇存柊plc绔欑偣淇℃伅澶辫触");
+ continue;
+ }
+ continue;
+
+ }
News.warnNoLog(""+mark+" - 0"+" - 寮�濮嬫墽琛�");
WrkMast wrkMast = wrkMastMapper.selectPickStep(barcode);
// WrkMast wrkMast = wrkMastMapper.selectPakInStep3(staProtocol.getWorkNo().intValue());
@@ -1544,14 +1582,14 @@
// 鍒ゆ柇鍫嗗灈鏈哄嚭搴撶珯鐘舵��
// if (staProtocol.isAutoing() && !staProtocol.isLoading() && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y")
// && staProtocol.getWorkNo() == 0 && staProtocol.isOutEnable()) {
-
- if (staProtocol.isAutoing() && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y") && !staProtocol.isLoading()
+ boolean unLoading = !staProtocol.isLoading();
+ Config configAGVAUTOIN = configService.selectConfigByCode("COB");
+ if(Boolean.parseBoolean(configAGVAUTOIN.getValue())){
+ unLoading = true;
+ }
+ if (staProtocol.isAutoing() && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y") && unLoading
) {
-// if (slave.getId() == 1 || slave.getId() == 2){
-// if (staProtocol.isLoading() || staProtocol.getWorkNo() != 0 || !staProtocol.isOutEnable()){
-// continue;
-// }
-// }
+//
// 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
// 鍫嗗灈鏈烘帶鍒惰繃婊�
@@ -4679,11 +4717,12 @@
BasRgvOpt basRgvOpt = basRgvOptService.getBasRgvOpt(rgvId);
// 闃叉閲嶅涓嬪彂鍛戒护
if (basRgvOpt != null) {
- if (typeNo.equals(basRgvOpt.getMode()) && basRgvOpt.getPosSta().equals(wrkMastSta.getWorkSta())) {
+ if (basRgvOpt.getMode().equals(typeNo) && basRgvOpt.getPosSta().equals(wrkMastSta.getWorkSta())) {
// 濡傛灉鏈�鏂拌褰曠殑 mode 鍜� posSta 涓庡綋鍓嶅懡浠ょ浉鍚岋紝璁や负鏄噸澶嶅懡浠�
log.error("鍛戒护閲嶅涓嬪彂锛屽綋鍓嶅懡浠や笌鏈�鏂拌褰曠浉鍚岋紝浠诲姟涓嶄笅鍙戯紒");
return false;
}
+ log.info("rgv鍛戒护鏃ュ織wrkNo={},posSta={},mode={}",wrkMastSta.getWrkNo(),basRgvOpt.getPosSta(),basRgvOpt.getMode());
}
rgvCommand.setTaskNo(Math.toIntExact(wrkMastSta.getWrkNo())); // 宸ヤ綅宸ヤ綔鍙�
rgvCommand.setTaskStatus(type); // 宸ヤ綅浠诲姟妯″紡: 鍙栬揣
@@ -5370,7 +5409,7 @@
// 閬嶅巻缁撴灉闆嗭紝妫�鏌ユ椂闂存埑宸�兼槸鍚﹀皬浜� 5 鍒嗛挓
for (ApiLog apiLog : apiLogs) {
long parseLong = Long.parseLong(apiLog.getTimestamp());
- if (new Date().getTime() - parseLong < 5 * 1000 * 60) {
+ if (new Date().getTime() - parseLong < 30 * 1000 * 60) {
// 濡傛灉鎵惧埌绗﹀悎鏉′欢鐨勮褰曚笖鏃堕棿宸皬浜� 5 鍒嗛挓锛屽垯涓嶄繚瀛樻柊璁板綍锛岀洿鎺ヨ繑鍥�
return;
}
@@ -5397,7 +5436,7 @@
// 閬嶅巻缁撴灉闆嗭紝妫�鏌ユ椂闂存埑宸�兼槸鍚﹀皬浜� 5 鍒嗛挓
for (ApiLog apiLog : apiLogs) {
long parseLong = Long.parseLong(apiLog.getTimestamp());
- if (new Date().getTime() - parseLong < 5 * 1000 * 60) {
+ if (new Date().getTime() - parseLong < 30 * 1000 * 60) {
// 濡傛灉鎵惧埌绗﹀悎鏉′欢鐨勮褰曚笖鏃堕棿宸皬浜� 5 鍒嗛挓锛屽垯涓嶄繚瀛樻柊璁板綍锛岀洿鎺ヨ繑鍥�
return;
}
diff --git a/src/main/java/com/zy/core/thread/SiemensDevpThread.java b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
index c2ea24f..b605d29 100644
--- a/src/main/java/com/zy/core/thread/SiemensDevpThread.java
+++ b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -1010,6 +1010,168 @@
News.info("SiemensDevp"+" - 5"+" - 杈撻�佺嚎鍛戒护涓嬪彂 [id:{}] >>>>> 鍛戒护涓嬪彂锛� {}", slave.getId(), JSON.toJSON(staProtocol));
}
}
+// /**
+// * 鍐欏叆 ID + 鐩爣绔� =====> 鍗曠珯鐐瑰啓鍏ワ紙甯﹁鍥炴牎楠� + 閲嶈瘯鏈哄埗锛�
+// */
+// private void write(StaProtocol staProtocol) throws InterruptedException {
+// if (staProtocol == null) {
+// return;
+// }
+//
+// Integer siteId = staProtocol.getSiteId();
+// Integer offset = siteOffsetMap.get(siteId);
+// if (offset == null) {
+// log.warn("绔欑偣 {} 娌℃湁瀹氫箟鍋忕Щ閲忥紝璺宠繃鍐欏叆", siteId);
+// return;
+// }
+//
+// Integer offset2 = getOffsetBySiteId(siteId);
+// Integer offset3 = getOffsetBySiteId2(siteId); // 铏界劧鏈柟娉曚富瑕佺敤涓嶅埌锛屼絾淇濈暀浠ラ槻鍚庣画鎵╁睍
+//
+// // 鍑嗗鏈熸湜鍐欏叆鐨勫�硷紙鐢ㄤ簬鍚庣画姣斿锛�
+// final long expectWorkNo = staProtocol.getWorkNo();
+// final long expectStaNo = staProtocol.getStaNo() != null ? staProtocol.getStaNo().intValue() : 0;
+//
+// boolean isSpecial2 = specialSites2.contains(siteId);
+// final long expectStaNoOffset = isSpecial2 ? (offset + offset2 + 48) : (offset + offset2 + 12);
+//
+// // 纭畾瑕佹搷浣滅殑 DB 鍧�
+// String dbName;
+// if (siteId < 1029) {
+// dbName = "DB100.";
+// } else if (siteId < 1042) {
+// dbName = "DB101.";
+// } else if (siteId < 1054) {
+// dbName = "DB104.";
+// } else if (siteId < 1080) {
+// dbName = "DB103.";
+// } else if (siteId < 1111) {
+// dbName = "DB102.";
+// } else if (siteId < 2031) {
+// dbName = "DB200.";
+// } else if (siteId < 2121) {
+// dbName = "DB201.";
+// } else if (siteId < 4000) {
+// // 2妤糚DA鏉$爜绔欑偣鐗规畩澶勭悊锛堢洰鍓嶄笉鍋氳鍥為噸璇曪級
+// Integer offsetBarcode = site2lBarcodeOffsetMap.get(siteId);
+// if (offsetBarcode == null) {
+// log.warn("绔欑偣 {} 娌℃湁瀹氫箟2妤兼潯鐮佸亸绉婚噺锛岃烦杩囨潯鐮佸啓鍏�", siteId);
+// return;
+// }
+// OperateResult writeBarcode = siemensS7Net.Write("DB202." + offsetBarcode, staProtocol.getBarcode());
+// if (writeBarcode.IsSuccess) {
+// log.info("2妤糚DA鏉$爜鍐欏叆鎴愬姛 site={}, barcode={}", siteId, staProtocol.getBarcode());
+// } else {
+// log.error("2妤糚DA鏉$爜鍐欏叆澶辫触 site={}, barcode={}", siteId, staProtocol.getBarcode());
+// }
+// return;
+// } else {
+// dbName = "DB400.";
+// }
+//
+// String addrWorkNo = dbName + (offset + offset2);
+// String addrStaNo = dbName + expectStaNoOffset;
+//
+// int maxRetry = 5;
+// int tryCount = 0;
+// boolean success = false;
+//
+// while (tryCount < maxRetry && !success) {
+// tryCount++;
+//
+// // 1. 灏濊瘯鍐欏叆
+// OperateResult writeWork = siemensS7Net.Write(addrWorkNo, expectWorkNo);
+// writeWork = siemensS7Net.Write("DB100." + (offset + offset2), staProtocol.getWorkNo()); // 宸ヤ綔鍙�
+//
+// Thread.sleep(80);
+//
+// OperateResult writeSta = siemensS7Net.Write(addrStaNo, expectStaNo);
+// Thread.sleep(120);
+//
+// if (!writeWork.IsSuccess || !writeSta.IsSuccess) {
+// log.warn("绗瑊}娆″啓鍏ュけ璐� site={}, workNo={}, targetSta={}",
+// tryCount, siteId, expectWorkNo, expectStaNo);
+// Thread.sleep(300);
+// continue;
+// }
+//
+// // 2. 璇诲洖鏍¢獙锛堣嚦灏戣64瀛楄妭锛岀‘淇濊鐩栨墍闇�瀛楁锛�
+// OperateResultExOne<byte[]> readResult = siemensS7Net.Read(dbName + (offset + offset2), (short) 64);
+// if (!readResult.IsSuccess || readResult.Content == null || readResult.Content.length < 64) {
+// log.warn("绗瑊}娆¤鍥炲け璐ワ紝鏃犳硶鏍¢獙 site={}", tryCount, siteId);
+// Thread.sleep(300);
+// continue;
+// }
+//
+// byte[] data = readResult.Content;
+//
+// // 璁$畻鐩稿鍋忕Щ杩涜璇诲彇
+// int relativeWorkNoOffset = 0;
+// int relativeStaNoOffset = (int) (expectStaNoOffset - (offset + offset2));
+//
+// int actualWorkNo = siemensS7Net.getByteTransform().TransInt32(data, relativeWorkNoOffset);
+// int actualStaNo = siemensS7Net.getByteTransform().TransInt32(data, relativeStaNoOffset);
+//
+// boolean match = (actualWorkNo == expectWorkNo) && (actualStaNo == expectStaNo);
+//
+// if (match) {
+// success = true;
+// log.info("鍐欏叆骞舵牎楠屾垚鍔� site={}, workNo={}, targetSta={}, 绗瑊}娆″皾璇�",
+// siteId, expectWorkNo, expectStaNo, tryCount);
+// } else {
+// log.warn("绗瑊}娆℃牎楠屽け璐� site={}, 鏈熸湜[workNo={},staNo={}], 瀹為檯[workNo={},staNo={}]",
+// tryCount, siteId, expectWorkNo, expectStaNo, actualWorkNo, actualStaNo);
+// Thread.sleep(300);
+// }
+// }
+//
+// // 鏈�缁堢粨鏋滃鐞�
+// if (success) {
+// log.info("杈撻�佺嚎鍛戒护涓嬪彂骞舵牎楠屾垚鍔� [plc:{}] site:{} workNo:{} target:{}",
+// slave.getId(), siteId, expectWorkNo, expectStaNo);
+//
+// OutputQueue.DEVP.offer(MessageFormat.format(
+// "銆恵0}銆戣緭閫佺嚎鍛戒护涓嬪彂骞舵牎楠屾垚鍔� [id:{1}] >>>>> site:{2} workNo:{3} target:{4}",
+// DateUtils.convert(new Date()), slave.getId(), siteId, expectWorkNo, expectStaNo));
+//
+// News.info("SiemensDevp - 5 - 杈撻�佺嚎鍛戒护涓嬪彂骞舵牎楠屾垚鍔� [id:{}] >>>>> {}",
+// slave.getId(), JSON.toJSON(staProtocol));
+// } else {
+// log.error("缁忚繃{}娆″皾璇曪紝鍐欏叆骞舵牎楠屼粛鐒跺け璐ワ紒plc={} site={} workNo棰勬湡={} target棰勬湡={}",
+// maxRetry, slave.getId(), siteId, expectWorkNo, expectStaNo);
+//
+// OutputQueue.DEVP.offer(MessageFormat.format(
+// "銆恵0}銆戠粡杩噞1}娆″皾璇曪紝杈撻�佺嚎鍐欏叆鏍¢獙澶辫触锛� [id:{2}] site:{3} workNo:{4} target:{5}",
+// DateUtils.convert(new Date()), maxRetry, slave.getId(), siteId, expectWorkNo, expectStaNo));
+//
+// News.error("SiemensDevp - 4 - 澶氭灏濊瘯鍚庡啓鍏ユ牎楠屽け璐ワ紒site={} workNo={} target={}",
+// siteId, expectWorkNo, expectStaNo);
+// }
+//
+// // 鎿嶄綔鏃ュ織璁板綍锛堟棤璁烘垚鍔熷け璐ラ兘璁板綍锛�
+// try {
+// BasDevpOptService bean = SpringUtils.getBean(BasDevpOptService.class);
+// BasDevpOpt basDevpOpt = new BasDevpOpt(
+// staProtocol.getWorkNo(),
+// new Date(),
+// staProtocol.getSiteId(),
+// (int) staProtocol.getStaNo(),
+// new Date(),
+// String.valueOf(staProtocol.isLoading()),
+// staProtocol.getBarcode(),
+// staProtocol.isFrontErr() ? 1L : 0L,
+// staProtocol.isBackErr() ? 1L : 0L,
+// staProtocol.isHighErr() ? 1L : 0L,
+// staProtocol.isLeftErr() ? 1L : 0L,
+// staProtocol.isRightErr() ? 1L : 0L,
+// staProtocol.isBarcodeErr() ? 1L : 0L,
+// staProtocol.getErrCode()
+// );
+// bean.insert(basDevpOpt);
+// } catch (Exception e) {
+// log.warn("鍐欏叆鎿嶄綔鏃ュ織澶辫触 site={}", siteId, e);
+// }
+// }
// 鏇存柊鍏ュ嚭搴撴ā寮�
private void updateIoMode() throws InterruptedException {
--
Gitblit v1.9.1