From 2d56913050a638662390da14ea65a56badf1b392 Mon Sep 17 00:00:00 2001
From: lty <876263681@qq.com>
Date: 星期四, 24 七月 2025 09:42:21 +0800
Subject: [PATCH] #优化
---
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 389 ++++++++++++++++++++++++-----------------------
src/main/java/com/zy/asrs/mapper/WrkMastMapper.java | 2
src/main/resources/mapper/WrkMastMapper.xml | 4
src/main/java/com/zy/core/thread/SiemensDevpThread.java | 44 ++++
4 files changed, 243 insertions(+), 196 deletions(-)
diff --git a/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java b/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java
index bee4e81..94bf473 100644
--- a/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java
@@ -20,6 +20,8 @@
List<WrkMast> selectToBeHistoryData();
+ WrkMast selectPakInOne(@Param("crnNo")Integer crnNo);
+
// wcs ---------------------------------------------
// 鍏ュ簱绗竴姝ワ紝鎵爜浠幏鍙栨潯鐮佷俊鎭椂鏌ヨ
// @Select("select top 1 * from asr_wrk_mast where source_sta_no=#{sourceStaNo} and wrk_sts=2 and barcode=#{barcode} and (io_type=1 or io_type=10) order by io_pri desc,io_time,wrk_no ASC")
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 2685114..3e01e03 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -50,7 +50,9 @@
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import java.io.IOException;
+import java.text.SimpleDateFormat;
import java.util.*;
+import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
@@ -554,168 +556,203 @@
//
// }
+ // 闈欐�佺嚎绋嬪畨鍏⊿et锛岀敤浜庡瓨鍌ㄦ鍦ㄨ皟鐢ㄦ帴鍙g殑宸ヤ綅鍙�
+ private static final Set<Integer> callingStations = ConcurrentHashMap.newKeySet();
+
public synchronized void generateStoreWrkFile(Integer mark) {
String methodName = Thread.currentThread().getStackTrace()[1].getMethodName();
final Set<String> INVALID_BARCODES = new HashSet<>(Arrays.asList("NG", "NoRead", "00000000"));
for (DevpSlave devp : slaveProperties.getDevp()) {
for (DevpSlave.Sta inSta : devp.getInSta()) {
- BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, inSta.getBarcode());
- LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, inSta.getLed());
- SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
- StaProtocol staProtocol = devpThread.getStation().get(inSta.getStaNo());
- StaProtocol staProtocolIn = devpThread.getStation().get(inSta.getStaNo() - 1);
+ // 銆愬垽鏂伐浣嶆槸鍚︽鍦ㄨ皟鐢ㄦ帴鍙o紝璺宠繃姝e湪璋冪敤鐨勩��
+ int staNo = inSta.getStaNo();
+ if (!callingStations.add(staNo)) {
+ // 濡傛灉宸插瓨鍦ㄨ皟鐢ㄤ腑锛岃烦杩�
+ log.info("宸ヤ綅{}鎺ュ彛璋冪敤涓紝璺宠繃鏈", staNo);
+ continue;
+ }
- if (staProtocolIn == null || barcodeThread == null) continue;
- staProtocolIn = staProtocolIn.clone();
- String barcode = barcodeThread.getBarcode();
+ try {
+ BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, inSta.getBarcode());
+ LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, inSta.getLed());
+ SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
- // 濡傛灉鍓嶅伐浣嶆湁璐� + 鎵爜鍣ㄦ湁鏉$爜
- if (staProtocolIn.getStamp() == 1 && barcode != null && !barcode.isEmpty()) {
- if (wrkMastService.selectOne(new EntityWrapper<WrkMast>()
- .eq("barcode", barcode)
- .in("io_type", 107, 103, 57)) != null) {
- continue;
- }
+ StaProtocol staProtocol = devpThread.getStation().get(staNo);
+ StaProtocol staProtocolIn = devpThread.getStation().get(staNo - 1);
- try {
- SearchLocParam param = new SearchLocParam();
- param.setBarcode(barcode);
- param.setIoType(1);
- param.setSourceStaNo(inSta.getStaNo());
- param.setLocType1((short) 1);
- param.setWeight(staProtocolIn.getWeight());
+ if (staProtocolIn == null || barcodeThread == null) continue;
+ staProtocolIn = staProtocolIn.clone();
+ String barcode = barcodeThread.getBarcode();
- String response = new HttpHandler.Builder()
- .setTimeout(30, TimeUnit.SECONDS)
- .setUri(wmsUrl)
- .setPath("/rpc/pakin/loc/v1")
- .setJson(JSON.toJSONString(param))
- .build()
- .doPost();
-
- JSONObject json = JSON.parseObject(response);
- if (json.getInteger("code").equals(200)) {
- StartupDto dto = json.getObject("data", StartupDto.class);
- barcodeThread.setBarcode("");
- staProtocolIn.setWorkNo(dto.getWorkNo());
- devpThread.setPakMk(staProtocolIn.getSiteId(), false);
- boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(3, staProtocolIn));
- ledThread.errorReset();
- log.error("宸ヤ綔鍙蜂笅鍙�2锛�" + dto.getWorkNo() + "," + dto.getStaNo());
-
- if (!result) {
- News.error(methodName + ":鏇存柊plc绔欑偣淇℃伅澶辫触");
- throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
- }
+ // 濡傛灉鍓嶅伐浣嶆湁璐� + 鎵爜鍣ㄦ湁鏉$爜
+ if (staProtocolIn.getStamp() == 1 && barcode != null && !barcode.isEmpty()) {
+ log.info("鐢熸垚淇″彿鏃堕棿: {}", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS").format(new Date()));
+ if (wrkMastService.selectOne(new EntityWrapper<WrkMast>()
+ .eq("barcode", barcode)
+ .in("io_type", 107, 103, 57)) != null) {
+ continue;
}
- } catch (Exception e) {
- log.error("缁勬墭浠诲姟寮傚父锛�", e);
- TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
- }
- continue;
- }
+ try {
- // 灏哄/閲嶉噺/鎵爜寮傚父妫�娴�
- if (staProtocol == null) continue;
- staProtocol = staProtocol.clone();
- boolean back = false;
- String errMsg = "";
- if (staProtocol.isFrontErr()) { errMsg = "鍓嶈秴闄�"; back = true; }
- else if (staProtocol.isBackErr()) { errMsg = "鍚庤秴闄�"; back = true; }
- else if (staProtocol.isHighErr()) { errMsg = "楂樿秴闄�"; back = true; }
- else if (staProtocol.isLeftErr()) { errMsg = "宸﹁秴闄�"; back = true; }
- else if (staProtocol.isRightErr()) { errMsg = "鍙宠秴闄�"; back = true; }
- else if (staProtocol.getWeight() > 1000) { errMsg = "瓒呴噸鎴栨湭璇诲彇"; back = true; }
- else if (staProtocol.isBarcodeErr()) { errMsg = "鎵爜澶辫触"; back = true; }
+ SearchLocParam param = new SearchLocParam();
+ param.setBarcode(barcode);
+ param.setIoType(1);
+ param.setSourceStaNo(staNo);
+ param.setLocType1((short) 1);
+ param.setWeight(staProtocol.getWeight());
- // 灏哄寮傚父鍥為��
- if (back) {
- log.info("errmsg: " + errMsg);
- MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errMsg));
+ String response = new HttpHandler.Builder()
+ .setTimeout(30, TimeUnit.SECONDS)
+ .setUri(wmsUrl)
+ .setPath("/rpc/pakin/loc/v1")
+ .setJson(JSON.toJSONString(param))
+ .build()
+ .doPost();
- if (!staProtocol.isLoading() || !staProtocol.isPakMk()) continue;
- staProtocol.setWorkNo(wrkNo++);
- staProtocol.setStaNo(inSta.getBackSta().shortValue());
- devpThread.setPakMk(staProtocol.getSiteId(), false);
- MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
- log.error("杈撻�佺嚎涓嬪彂1锛�" + wrkNo + "," + inSta.getBackSta());
- continue;
- }
+ JSONObject json = JSON.parseObject(response);
+ if (json.getInteger("code").equals(200)) {
+ StartupDto dto = json.getObject("data", StartupDto.class);
+ barcodeThread.setBarcode("");
+ staProtocolIn.setWorkNo(dto.getWorkNo());
+ devpThread.setPakMk(staProtocolIn.getSiteId(), false);
+ boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(3, staProtocolIn));
+ log.info("鐢熸垚浠诲姟鏃堕棿: {}", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS").format(new Date()));
- // 鍏ュ簱鏉′欢婊¤冻锛屽紑濮嬭姹傚叆搴撳湴鍧�
- if (staProtocol.isAutoing() && staProtocol.isLoading()
- && staProtocol.isInEnable() && !staProtocol.isEmptyMk() && staProtocol.isPakMk()) {
+ ledThread.errorReset();
+ log.error("宸ヤ綔鍙蜂笅鍙�2锛�" + dto.getWorkNo() + "," + dto.getStaNo());
- if (Cools.isEmpty(barcode) || INVALID_BARCODES.contains(barcode)) {
- News.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", inSta.getBarcode(), barcode);
- staProtocol.setWorkNo(wrkNo++);
- staProtocol.setStaNo(inSta.getBackSta().shortValue());
- devpThread.setPakMk(staProtocol.getSiteId(), false);
- MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
- log.error("杈撻�佺嚎涓嬪彂1锛歿} , {}", wrkNo, inSta.getBackSta());
- continue;
- }
-
- if (wrkMastMapper.selectPakInStep1(inSta.getStaNo(), barcode) != null ||
- wrkMastService.selectOne(new EntityWrapper<WrkMast>()
- .eq("barcode", barcode)
- .in("io_type", 107, 103, 57)) != null) {
- News.error(barcode + "鏉$爜宸插瓨鍦ㄧ姸鎬佷负锛�2.璁惧涓婅蛋锛夌殑鏁版嵁锛岃鏌ョ湅WCS杈撻�佺嚎鐣岄潰");
- continue;
- }
-
- try {
- SearchLocParam param = new SearchLocParam();
- param.setBarcode(barcode);
- param.setIoType(1);
- param.setSourceStaNo(inSta.getStaNo());
- param.setLocType1((short) 1);
- param.setWeight(staProtocol.getWeight());
-
- String response = new HttpHandler.Builder()
- .setTimeout(30, TimeUnit.SECONDS)
- .setUri(wmsUrl)
- .setPath("/rpc/pakin/loc/v1")
- .setJson(JSON.toJSONString(param))
- .build()
- .doPost();
-
- JSONObject json = JSON.parseObject(response);
- if (json.getInteger("code").equals(200)) {
- StartupDto dto = json.getObject("data", StartupDto.class);
- barcodeThread.setBarcode("");
- staProtocol.setWorkNo(dto.getWorkNo());
- staProtocol.setStaNo(dto.getStaNo().shortValue());
- devpThread.setPakMk(staProtocol.getSiteId(), false);
- boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
- ledThread.errorReset();
- log.error("杈撻�佺嚎涓嬪彂2锛�" + dto.getWorkNo() + "," + dto.getStaNo());
-
- if (!result) {
- News.error(methodName + ":鏇存柊plc绔欑偣淇℃伅澶辫触");
- throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
- }
- } else {
- String msg = json.getString("msg");
- if (!"宸ヤ綔妗e凡瀛樺湪".equals(msg)) {
- staProtocol.setWorkNo(wrkNo++);
- staProtocol.setStaNo(inSta.getBackSta().shortValue());
- devpThread.setPakMk(staProtocol.getSiteId(), false);
- MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
- log.error("杈撻�佺嚎涓嬪彂2锛�" + staProtocol.getWorkNo() + "," + staProtocol.getStaNo());
- if (!Cools.isEmpty(msg)) {
- MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, msg));
+ if (!result) {
+ News.error(methodName + ":鏇存柊plc绔欑偣淇℃伅澶辫触");
+ throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
+ }
+ } else {
+ String msg = json.getString("msg");
+ if (!"宸ヤ綔妗e凡瀛樺湪".equals(msg)) {
+ staProtocol.setWorkNo(wrkNo++);
+ staProtocol.setStaNo(inSta.getBackSta().shortValue());
+ devpThread.setPakMk(staProtocol.getSiteId(), false);
+ MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+ log.error("杈撻�佺嚎涓嬪彂2锛�" + staProtocol.getWorkNo() + "," + staProtocol.getStaNo());
+ if (!Cools.isEmpty(msg)) {
+ MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, msg));
+ }
}
}
+ } catch (Exception e) {
+ log.error("缁勬墭浠诲姟寮傚父锛�", e);
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
}
- } catch (Exception e) {
- log.error("缁勬墭浠诲姟寮傚父锛�", e);
- TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+
+ continue;
+ } else {
+ // 灏哄/閲嶉噺/鎵爜寮傚父妫�娴�
+ if (staProtocol == null) continue;
+ staProtocol = staProtocol.clone();
+ boolean back = false;
+ String errMsg = "";
+
+ if (staProtocol.isFrontErr()) { errMsg = "鍓嶈秴闄�"; back = true; }
+ else if (staProtocol.isBackErr()) { errMsg = "鍚庤秴闄�"; back = true; }
+ else if (staProtocol.isHighErr()) { errMsg = "楂樿秴闄�"; back = true; }
+ else if (staProtocol.isLeftErr()) { errMsg = "宸﹁秴闄�"; back = true; }
+ else if (staProtocol.isRightErr()) { errMsg = "鍙宠秴闄�"; back = true; }
+ else if (staProtocol.getWeight() > 1000) { errMsg = "瓒呴噸鎴栨湭璇诲彇"; back = true; }
+ else if (staProtocol.isBarcodeErr()) { errMsg = "鎵爜澶辫触"; back = true; }
+
+ // 灏哄寮傚父鍥為��
+ if (back && staProtocol.getWorkNo() <9999) {
+// log.info("errmsg: " + errMsg);
+ MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errMsg));
+
+ if (!staProtocol.isLoading() || !staProtocol.isPakMk()) continue;
+ staProtocol.setWorkNo(wrkNo++);
+ staProtocol.setStaNo(inSta.getBackSta().shortValue());
+ devpThread.setPakMk(staProtocol.getSiteId(), false);
+ MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+ log.error("杈撻�佺嚎涓嬪彂1锛�" + wrkNo + "," + inSta.getBackSta());
+ continue;
+ }
+
+// // 鍏ュ簱鏉′欢婊¤冻锛屽紑濮嬭姹傚叆搴撳湴鍧�
+// if (staProtocol.isAutoing() && staProtocol.isLoading()
+// && staProtocol.isInEnable() && !staProtocol.isEmptyMk() && staProtocol.isPakMk()) {
+//
+// if (Cools.isEmpty(barcode) || INVALID_BARCODES.contains(barcode)) {
+// News.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", inSta.getBarcode(), barcode);
+// staProtocol.setWorkNo(wrkNo++);
+// staProtocol.setStaNo(inSta.getBackSta().shortValue());
+// devpThread.setPakMk(staProtocol.getSiteId(), false);
+// MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+// log.error("杈撻�佺嚎涓嬪彂1锛歿} , {}", wrkNo, inSta.getBackSta());
+// continue;
+// }
+//
+// if (wrkMastMapper.selectPakInStep1(staNo, barcode) != null ||
+// wrkMastService.selectOne(new EntityWrapper<WrkMast>()
+// .eq("barcode", barcode)
+// .in("io_type", 107, 103, 57)) != null) {
+// News.error(barcode + "鏉$爜宸插瓨鍦ㄧ姸鎬佷负锛�2.璁惧涓婅蛋锛夌殑鏁版嵁锛岃鏌ョ湅WCS杈撻�佺嚎鐣岄潰");
+// continue;
+// }
+//
+// try {
+// SearchLocParam param = new SearchLocParam();
+// param.setBarcode(barcode);
+// param.setIoType(1);
+// param.setSourceStaNo(staNo);
+// param.setLocType1((short) 1);
+// param.setWeight(staProtocol.getWeight());
+//
+// String response = new HttpHandler.Builder()
+// .setTimeout(30, TimeUnit.SECONDS)
+// .setUri(wmsUrl)
+// .setPath("/rpc/pakin/loc/v1")
+// .setJson(JSON.toJSONString(param))
+// .build()
+// .doPost();
+//
+// JSONObject json = JSON.parseObject(response);
+// if (json.getInteger("code").equals(200)) {
+// StartupDto dto = json.getObject("data", StartupDto.class);
+// barcodeThread.setBarcode("");
+// staProtocol.setWorkNo(dto.getWorkNo());
+// staProtocol.setStaNo(dto.getStaNo().shortValue());
+// devpThread.setPakMk(staProtocol.getSiteId(), false);
+// boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+// ledThread.errorReset();
+// log.error("杈撻�佺嚎涓嬪彂2锛�" + dto.getWorkNo() + "," + dto.getStaNo());
+//
+// if (!result) {
+// News.error(methodName + ":鏇存柊plc绔欑偣淇℃伅澶辫触");
+// throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
+// }
+// } else {
+// String msg = json.getString("msg");
+// if (!"宸ヤ綔妗e凡瀛樺湪".equals(msg)) {
+// staProtocol.setWorkNo(wrkNo++);
+// staProtocol.setStaNo(inSta.getBackSta().shortValue());
+// devpThread.setPakMk(staProtocol.getSiteId(), false);
+// MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+// log.error("杈撻�佺嚎涓嬪彂2锛�" + staProtocol.getWorkNo() + "," + staProtocol.getStaNo());
+// if (!Cools.isEmpty(msg)) {
+// MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, msg));
+// }
+// }
+// }
+// } catch (Exception e) {
+// log.error("缁勬墭浠诲姟寮傚父锛�", e);
+// TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+// }
+// }
}
+ } finally {
+ // 銆愭棤璁烘帴鍙h皟鐢ㄦ槸鍚︽垚鍔燂紝鏈�鍚庨兘閲婃斁璋冪敤鏍囪銆�
+ callingStations.remove(staNo);
+ log.debug("宸ヤ綅{}鎺ュ彛璋冪敤瀹屾垚锛岄噴鏀捐皟鐢ㄦ爣璁�", staNo);
}
}
}
@@ -1307,7 +1344,7 @@
if (crnProtocol.getLastIo().equals("I")) {
if (basCrnp.getInEnable().equals("Y")) {
//mark - 1 - ....
- this.crnStnToLoc(crn, crnProtocol, mark); // 鍏ュ簱
+ this.crnStnToLoc(crn, crnProtocol, mark, crnThread); // 鍏ュ簱
crnProtocol.setLastIo("O");
} else if (basCrnp.getOutEnable().equals("Y")) {
//mark - 2 - ....
@@ -1321,7 +1358,7 @@
this.locToCrnStn(crn, crnProtocol, mark); // 鍑哄簱
crnProtocol.setLastIo("I");
} else if (basCrnp.getInEnable().equals("Y")) {
- this.crnStnToLoc(crn, crnProtocol, mark); // 鍏ュ簱
+ this.crnStnToLoc(crn, crnProtocol, mark, crnThread); // 鍏ュ簱
crnProtocol.setLastIo("O");
}
}
@@ -1341,7 +1378,7 @@
public synchronized void crnRebackHp(CrnProtocol crnProtocol, CrnThread crnThread,String staNo) {
if(staNo == null){
if (crnProtocol.getStatusType() == CrnStatusType.IDLE && crnProtocol.getTaskNo() == 0 && crnProtocol.getModeType() == CrnModeType.AUTO) {
- if (crnProtocol.getBay() == 121) {
+ if (crnProtocol.getBay() == 121 || crnProtocol.getBay() == 1) {
return;
}
int x=1;
@@ -1397,7 +1434,7 @@
int z = staNoInt / 100; // 灞�
- if ((staNoInt >= 121 && staNoInt <= 126) || (staNoInt >= 221 && staNoInt <= 230) || (staNoInt >= 411 && staNoInt <= 414)) {
+ if ((staNoInt >= 121 && staNoInt <= 126) || (staNoInt >= 221 && staNoInt <= 231) || (staNoInt >= 411 && staNoInt <= 414)) {
y = 121;
}
@@ -1442,7 +1479,7 @@
/**
* 鍏ュ簱 ===>> 鍫嗗灈鏈虹珯鍒板簱浣�
*/
- public synchronized void crnStnToLoc(CrnSlave slave, CrnProtocol crnProtocol, Integer mark) {
+ public synchronized void crnStnToLoc(CrnSlave slave, CrnProtocol crnProtocol, Integer mark,CrnThread crnThread) {
News.warnNoLog("" + mark + " - 1" + " - 0" + " - 鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂锛氭墽琛屽叆搴�");
for (CrnSlave.CrnStn crnStn : slave.getCrnInStn()) {
boolean flag = false;
@@ -1461,11 +1498,22 @@
News.error("" + mark + " - 1" + " - 2" + " - 鍏ュ簱 ===>> 鍫嗗灈鏈虹珯鐐瑰湪鏁版嵁搴撲笉瀛樺湪, 绔欑偣缂栧彿={}", crnStn.getStaNo());
continue;
}
-// if(staProtocol.getWorkNo() == 9998){
-// continue;
+ WrkMast wrkMast1 = wrkMastMapper.selectPakInOne(slave.getId());
+ if(wrkMast1 != null){
+ crnRebackHp(crnProtocol,crnThread,wrkMast1.getStaNo().toString());
+ }
+// if(staProtocol.getSiteId() == 225){
+// News.info("鍏ュ簱绔欑偣淇℃伅{}",staProtocol);
+// staProtocol.isLoading() &&
// }
- if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() > 0 && staProtocol.isInEnable()
+ if(staProtocol.getWorkNo() > 0 && staProtocol.getWorkNo() <9998){
+ log.info("璇诲彇鍒板伐浣滃彿鏃堕棿: {}", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS").format(new Date()));
+
+ }
+ if (staProtocol.isAutoing() && staProtocol.getWorkNo() > 0 && staProtocol.getWorkNo() <9998
&& staDetl.getCanining() != null && staDetl.getCanining().equals("Y")) {
+ log.info("鍙叆鏃堕棿: {}", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS").format(new Date()));
+
flag = true;
}
if (!flag) {
@@ -1476,8 +1524,9 @@
continue;
}
// 鑾峰彇宸ヤ綔鐘舵�佷负2锛堣澶囦笂璧帮級鐨勫叆搴撳伐浣滄。
- WrkMast wrkMast = wrkMastMapper.selectPakInStep2(slave.getId(), staProtocol.getWorkNo().intValue(), crnStn.getStaNo());
+ WrkMast wrkMast = wrkMastMapper.selectPakInStep2(slave.getId(), staProtocol.getWorkNo(), crnStn.getStaNo());
if (null == wrkMast) {
+ log.info("" + mark + " - 1" + " - 4" + " - 鏌ヨ鏃犲緟鍏ュ簱鏁版嵁--wrk_sts=2, 宸ヤ綔鍙�={}", staProtocol.getWorkNo());
News.infoNoLog("" + mark + " - 1" + " - 4" + " - 鏌ヨ鏃犲緟鍏ュ簱鏁版嵁--wrk_sts=2, 宸ヤ綔鍙�={}", staProtocol.getWorkNo());
// log.error("鏌ヨ鏃犲緟鍏ュ簱鏁版嵁--wrk_sts=2, 宸ヤ綔鍙�={}", staProtocol.getWorkNo());
continue;
@@ -1504,48 +1553,6 @@
continue;
}
-// // 鍙屾繁搴撲綅涓旀祬搴撲綅鏈夎揣锛屽垯闇�鍏堝娴呭簱浣嶈繘琛屽簱浣嶇Щ杞�
-// if (Utils.isDeepLoc(slaveProperties, wrkMast.getLocNo())) {
-// News.warnNoLog("" + mark + " - 1" + " - 8" + " - 鍙屾繁搴撲綅涓旀祬搴撲綅鏈夎揣锛屽垯闇�鍏堝娴呭簱浣嶈繘琛屽簱浣嶇Щ杞� : 寮�濮嬫墽琛� 浠诲姟鍙�={}", wrkMast.getWrkNo());
-// String shallowLocNo = Utils.getShallowLoc(slaveProperties, wrkMast.getLocNo());
-// LocMast shallowLoc = locMastService.selectById(shallowLocNo);
-// // O.绌哄簱浣嶃�丵.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴撱�丼.鍏ュ簱棰勭害銆乆.绂佺敤 鐩存帴鎼紒
-// if (shallowLoc.getLocSts().equals("P") || shallowLoc.getLocSts().equals("R")) {
-// News.warnNoLog("" + mark + " - 1" + " - 9" + " - // O.绌哄簱浣嶃�丵.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴撱�丼.鍏ュ簱棰勭害銆乆.绂佺敤 鐩存帴鎼紒搴撲綅鐘舵��={}", shallowLoc.getLocSts());
-// WrkMast waitWrkMast = wrkMastMapper.selectByLocNo(shallowLocNo);
-// if (null == waitWrkMast) {
-// News.error("" + mark + " - 1" + " - 10" + " - {}搴撲綅寮傚父锛屾湭妫�绱㈠埌鐩稿簲宸ヤ綔妗o紒", shallowLocNo);
-// } else {
-// waitWrkMast.setIoPri(15D);
-// waitWrkMast.setModiTime(new Date());
-// if (wrkMastMapper.updateById(waitWrkMast) == 0) {
-// News.error("" + mark + " - 1" + " - 11" + " - 璋冩暣宸ヤ綔妗d紭鍏堢骇澶辫触锛佸伐浣滃彿={}", waitWrkMast.getWrkNo());
-// }
-// continue;
-// }
-//
-// } else if (shallowLoc.getLocSts().equals("F") || shallowLoc.getLocSts().equals("D")) {
-// News.warnNoLog("" + mark + " - 1" + " - 12" + " - // F銆丏 搴撲綅鐘舵��={}", shallowLoc.getLocSts());
-// // 姝ゆ爣璁伴伩鍏嶅娆℃墽琛岀Щ搴撲换鍔�
-// if (Cools.isEmpty(wrkMast.getUpdMk()) || "N".equals(wrkMast.getUpdMk())) {
-// wrkMast.setUpdMk("Y");
-// wrkMast.setIoPri(14D);
-// wrkMastMapper.updateById(wrkMast);
-// // 鐢熸垚宸ヤ綔妗�,灏嗘祬搴撲綅绉昏浆鍒版柊鐨勫簱浣嶄腑
-// moveLocForDeepLoc(slave, shallowLoc, mark);
-// // 鐢熸垚宸ヤ綔妗c�佹敼鍙樻祬搴撲綅鐨勬簮搴�/鐩爣搴� 搴撲綅鐘舵�併�佷笅鍙戝爢鍨涙満鍛戒护锛堢珛椹墽琛�)
-//// moveLocForDeepLocPakin(slave, shallowLoc, wrkMast);
-// }
-// continue;
-// } else if (shallowLoc.getLocSts().equals("Q")) {
-// News.warnNoLog("" + mark + " - 1" + " - 13" + " - // Q 搴撲綅鐘舵��={}", shallowLoc.getLocSts());
-// WrkMast waitWrkMast = wrkMastMapper.selectByLocNo(shallowLocNo);
-// if (null != waitWrkMast && waitWrkMast.getWrkSts() == 4) {
-// News.infoNoLog("" + mark + " - 1" + " - 14" + " - // F銆丏 宸ヤ綔鐘舵��(鍒ゆ柇鏉′欢涓�==4)={}", waitWrkMast.getWrkSts());
-// continue;
-// }
-// }
-// }
News.warnNoLog("" + mark + " - 1" + " - 15" + " - 鍛戒护涓嬪彂 : 宸ヤ綔鍙�={},婧愭帓={},婧愬垪={},婧愬眰={},鐩爣鎺�={},鐩爣鍒�={},鐩爣灞�={}", wrkMast.getWrkNo().shortValue()
, crnStn.getRow().shortValue(), crnStn.getBay().shortValue(), crnStn.getLev().shortValue()
, locMast.getRow1().shortValue(), locMast.getBay1().shortValue(), locMast.getLev1().shortValue());
@@ -1563,6 +1570,8 @@
crnCommand.setDestinationPosY((short) (locMast.getBay1() + slave.getOffset())); // 鐩爣搴撲綅鍒�
crnCommand.setDestinationPosZ((short) (locMast.getLev1() + slave.getOffset())); // 鐩爣搴撲綅灞�
// crnCommand.setTraySize(locMast.getLocType1() == 2);
+ log.info("鍫嗗灈鏈轰换鍔′笅鍙戞椂闂�: {}", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS").format(new Date()));
+
if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getCrnNo(), new Task(2, crnCommand))) {
News.error("" + mark + " - 1" + " - 16" + " - 鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand));
} else {
diff --git a/src/main/java/com/zy/core/thread/SiemensDevpThread.java b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
index facc3d0..57266a5 100644
--- a/src/main/java/com/zy/core/thread/SiemensDevpThread.java
+++ b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -518,20 +518,52 @@
OperateResult write = null;
OperateResult write1 = null;
+ boolean flag1 = false;
+ boolean flag2 = false;
//浠诲姟涓嬪彂娆℃暟
int writeCount = 0;
do {
- write = siemensS7Net.Write("DB100." + offset, staProtocol.getWorkNo()); // 宸ヤ綔鍙�
- Thread.sleep(200);
- write1 = siemensS7Net.Write("DB100." + (offset+4), staProtocol.getStaNo().shortValue()); // 鐩爣绔�
- if(write.IsSuccess && write1.IsSuccess){
+ if (!flag1) {
+ write = siemensS7Net.Write("DB100." + offset, staProtocol.getWorkNo()); // 宸ヤ綔鍙�
+ if (write.IsSuccess) {
+ OperateResultExOne<byte[]> result = siemensS7Net.Read("DB100." + offset, (short) 2);
+ if (result.IsSuccess) {
+ if (staProtocol.getWorkNo().equals(siemensS7Net.getByteTransform().TransInt16(result.Content, (short) 0))) {
+ flag1 = true;
+ }
+ }
+ }
+ }
+ if (!flag2) {
+ Thread.sleep(200);
+ write1 = siemensS7Net.Write("DB100." + (offset+4), staProtocol.getStaNo().shortValue()); // 鐩爣绔�
+ if (write1.IsSuccess) {
+ OperateResultExOne<byte[]> result2 = siemensS7Net.Read("DB100." + (offset+4), (short) 2);
+ if (result2.IsSuccess) {
+ if (staProtocol.getStaNo().equals(siemensS7Net.getByteTransform().TransInt16(result2.Content, (short) 0))) {
+ flag2 = true;
+ }
+ }
+ }
+ }
+ if (flag1 && flag2) {
log.error("鍐欏叆杈撻�佺嚎鍛戒护鎴愬姛銆傝緭閫佺嚎plc缂栧彿={}锛岀珯鐐规暟鎹�={},鍐欏叆娆℃暟={}", slave.getId(), JSON.toJSON(staProtocol), writeCount);
break;
- }
- else {
+ } else {
writeCount++;
log.error("鍐欏叆杈撻�佺嚎鍛戒护澶辫触銆傝緭閫佺嚎plc缂栧彿={}锛岀珯鐐规暟鎹�={},鍐欏叆娆℃暟={}", slave.getId(), JSON.toJSON(staProtocol), writeCount);
}
+// write = siemensS7Net.Write("DB100." + offset, staProtocol.getWorkNo()); // 宸ヤ綔鍙�
+// Thread.sleep(200);
+// write1 = siemensS7Net.Write("DB100." + (offset+4), staProtocol.getStaNo().shortValue()); // 鐩爣绔�
+// if(write.IsSuccess && write1.IsSuccess){
+// log.error("鍐欏叆杈撻�佺嚎鍛戒护鎴愬姛銆傝緭閫佺嚎plc缂栧彿={}锛岀珯鐐规暟鎹�={},鍐欏叆娆℃暟={}", slave.getId(), JSON.toJSON(staProtocol), writeCount);
+// break;
+// }
+// else {
+// writeCount++;
+// log.error("鍐欏叆杈撻�佺嚎鍛戒护澶辫触銆傝緭閫佺嚎plc缂栧彿={}锛岀珯鐐规暟鎹�={},鍐欏叆娆℃暟={}", slave.getId(), JSON.toJSON(staProtocol), writeCount);
+// }
}while (writeCount<5);
if (!write.IsSuccess) {
diff --git a/src/main/resources/mapper/WrkMastMapper.xml b/src/main/resources/mapper/WrkMastMapper.xml
index 3bca05f..5c1a1db 100644
--- a/src/main/resources/mapper/WrkMastMapper.xml
+++ b/src/main/resources/mapper/WrkMastMapper.xml
@@ -98,6 +98,10 @@
select top 1 * from dbo.asr_wrk_mast where wrk_sts=2 and crn_no=#{crnNo} and wrk_no=#{workNo} and sta_no=#{staNo} and (io_type=1 or io_type=10 or io_type=53 or io_type=54 or io_type=57) order by io_pri desc,io_time,wrk_no ASC
</select>
+ <select id="selectPakInOne" resultMap="BaseResultMap">
+ select top 1 * from dbo.asr_wrk_mast where wrk_sts=2 and crn_no=#{crnNo} and (io_type=1 or io_type=10 or io_type=53 or io_type=54 or io_type=57) order by io_pri desc,io_time,wrk_no ASC
+ </select>
+
<select id="selectPakInStep3" resultMap="BaseResultMap">
select top 1 * from dbo.asr_wrk_mast where wrk_no=#{workNo}
</select>
--
Gitblit v1.9.1