From 4cc10691cd2197f72c205723a642a62478c33273 Mon Sep 17 00:00:00 2001
From: whycq <whycq>
Date: 星期二, 31 五月 2022 09:04:22 +0800
Subject: [PATCH] # ycq
---
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 246 ++++++++++++++++++++++++++++++++++---------------
1 files changed, 170 insertions(+), 76 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 1c15707..5e7cb6b 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -87,8 +87,11 @@
private BasErrLogService basErrLogService;
@Autowired
private BasCrnErrorMapper basCrnErrorMapper;
+
@Value("${wms.url}")
private String wmsUrl;
+ @Value("${crnBackHp.enable}")
+ private boolean crnBackHp;
/**
* 缁勬墭
@@ -105,14 +108,14 @@
continue;
}
String barcode = barcodeThread.getBarcode();
-// if(!Cools.isEmpty(barcode)) {
-// log.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", inSta.getBarcode(), barcode);
-// if("NG".endsWith(barcode) || "NoRead".equals(barcode)) {
-// continue;
-// }
-// } else {
-// continue;
-// }
+ if(!Cools.isEmpty(barcode)) {
+ log.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", inSta.getBarcode(), barcode);
+ if("NG".endsWith(barcode) || "NoRead".equals(barcode)) {
+ continue;
+ }
+ } else {
+ continue;
+ }
// 鑾峰彇鍏ュ簱绔欎俊鎭�
SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
@@ -123,8 +126,8 @@
staProtocol = staProtocol.clone();
}
- // 鍏ュ嚭搴撴ā寮忓垽鏂�
- if (devpThread.ioMode != IoModeType.PAKIN_MODE) { continue; }
+// // 鍏ュ嚭搴撴ā寮忓垽鏂�
+// if ( inSta.getStaNo()==180 && devpThread.ioMode != IoModeType.PAKIN_MODE) { continue; }
// 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢
if (staProtocol.isAutoing() && staProtocol.isLoading()
@@ -132,18 +135,18 @@
&& !staProtocol.isEmptyMk() && (staProtocol.getWorkNo() == 0 || staProtocol.getWorkNo() == 9999)
&& staProtocol.isPakMk()){// && !Cools.isEmpty(barcode)) {
- if(Cools.isEmpty(barcode) || "NG".endsWith(barcode) || "NoRead".equals(barcode)) {
- log.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", inSta.getBarcode(), barcode);
- //鏉$爜涓虹┖鎴栬�呬笉绗﹀悎锛岄��搴撳埌172绔欑偣
- staProtocol.setWorkNo((short)9999);
- staProtocol.setStaNo((short)172);
- devpThread.setPakMk(staProtocol.getSiteId(), false);
- boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
- if (!result) {
- throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
- }
- continue;
- }
+// if(Cools.isEmpty(barcode) || "NG".endsWith(barcode) || "NoRead".equals(barcode)) {
+// log.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", inSta.getBarcode(), barcode);
+// //鏉$爜涓虹┖鎴栬�呬笉绗﹀悎锛岄��搴撳埌172绔欑偣
+// staProtocol.setWorkNo((short)9999);
+// staProtocol.setStaNo((short)172);
+// devpThread.setPakMk(staProtocol.getSiteId(), false);
+// boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+// if (!result) {
+// throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
+// }
+// continue;
+// }
// 鍒ゆ柇閲嶅宸ヤ綔妗�
WrkMast wrkMast = wrkMastMapper.selectPakInStep1(inSta.getStaNo(), barcode);
@@ -278,8 +281,8 @@
staProtocol = staProtocol.clone();
}
- // 鍏ュ嚭搴撴ā寮忓垽鏂�
- if (devpThread.ioMode != IoModeType.PAKIN_MODE) { continue; }
+// // 鍏ュ嚭搴撴ā寮忓垽鏂�
+// if (devpThread.ioMode != IoModeType.PAKIN_MODE) { continue; }
// 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢
if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable()
@@ -328,14 +331,14 @@
continue;
}
String barcode = barcodeThread.getBarcode();
-// if(!Cools.isEmpty(barcode)) {
-// log.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", pickSta.getBarcode(), barcode);
-// if("NG".endsWith(barcode) || "NoRead".equals(barcode)) {
-// continue;
-// }
-// } else {
-// continue;
-// }
+ if(!Cools.isEmpty(barcode)) {
+ log.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", pickSta.getBarcode(), barcode);
+ if("NG".endsWith(barcode) || "NoRead".equals(barcode)) {
+ continue;
+ }
+ } else {
+ continue;
+ }
// 鑾峰彇鎷f枡鍏ュ簱绔欎俊鎭�
SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
@@ -346,23 +349,23 @@
staProtocol = staProtocol.clone();
}
- // 鍏ュ嚭搴撴ā寮忓垽鏂�
- if (devpThread.ioMode != IoModeType.PAKIN_MODE) { continue; }
+// // 鍏ュ嚭搴撴ā寮忓垽鏂�
+// if (devpThread.ioMode != IoModeType.PAKIN_MODE) { continue; }
if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable() && staProtocol.isPakMk()){
- if(Cools.isEmpty(barcode) || "NG".endsWith(barcode) || "NoRead".equals(barcode)) {
- log.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", pickSta.getBarcode(), barcode);
- //鏉$爜涓虹┖鎴栬�呬笉绗﹀悎锛岄��搴撳埌172绔欑偣
- staProtocol.setWorkNo((short)9999);
- staProtocol.setStaNo((short)172);
- devpThread.setPakMk(staProtocol.getSiteId(), false);
- boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
- if (!result) {
- throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
- }
- continue;
- }
+// if(Cools.isEmpty(barcode) || "NG".endsWith(barcode) || "NoRead".equals(barcode)) {
+// log.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", pickSta.getBarcode(), barcode);
+// //鏉$爜涓虹┖鎴栬�呬笉绗﹀悎锛岄��搴撳埌172绔欑偣
+// staProtocol.setWorkNo((short)9999);
+// staProtocol.setStaNo((short)172);
+// devpThread.setPakMk(staProtocol.getSiteId(), false);
+// boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+// if (!result) {
+// throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
+// }
+// continue;
+// }
WrkMast wrkMast = wrkMastMapper.selectPickStep(barcode);
if (wrkMast == null) {
@@ -404,19 +407,23 @@
throw new CoolException("淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗eけ璐�");
}
+ Date now = new Date();
// 鍫嗗灈鏈虹珯鐐�(鐩爣绔�)
Integer staNo = staDesc.getCrnStn();
// 鏇存柊宸ヤ綔妗f暟鎹姸鎬�
+ wrkMast.setIoTime(now);
wrkMast.setIoType(wrkMast.getIoType() - 50); // 鍏ュ嚭搴撶被鍨�: 103->53,104->54,107->57
wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵��: 2.璁惧涓婅蛋
wrkMast.setSourceStaNo(wrkMast.getStaNo()); // 婧愮珯
wrkMast.setStaNo(staNo); // 鐩爣绔�
wrkMast.setLocNo(wrkMast.getSourceLocNo()); // 鐩爣搴撲綅 = 鍑哄簱鏃剁殑婧愬簱浣�
wrkMast.setSourceLocNo(""); // 婧愬簱浣嶆竻绌�
- wrkMast.setModiTime(new Date());
+ wrkMast.setModiTime(now);
if (wrkMastMapper.updateById(wrkMast) == 0) {
throw new CoolException("鏇存柊宸ヤ綔妗f暟鎹姸鎬佸け璐�");
}
+ // 鏇存柊鏄庣粏妗o_time (鍘嗗彶妗e叧鑱斾娇鐢級
+ wrkDetlService.updateIoTime(wrkMast.getWrkNo(), now);
// 淇敼搴撲綅鐘舵�� Q.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴�
LocMast locMast = locMastService.selectById(wrkMast.getLocNo());
locMast.setLocSts("Q");
@@ -549,7 +556,70 @@
}
// 搴撲綅绉昏浆
this.locToLoc(crn, crnProtocol);
+
+// if (crnBackHp) {
+//
+// //鍫嗗灈鏈烘病鏈夋墽琛屼腑浠诲姟锛岃澶囧瓨鍦ㄥ叆搴撲换鍔℃椂鍙洖鍘熺偣
+// this.crnRebackHp(crnProtocol);
+//
+// }
}
+ }
+
+ /**
+ * 鍥炲師鐐癸紝鍫嗗灈鏈烘病鏈夋墽琛屼腑浠诲姟锛岃澶囧瓨鍦ㄥ叆搴撲换鍔℃椂鍙洖鍘熺偣
+ */
+ public synchronized void crnRebackHp(CrnProtocol crnProtocol){
+// for (CrnSlave crn : slaveProperties.getCrn()) {
+// // 鑾峰彇鍫嗗灈鏈轰俊鎭�
+// CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId());
+// CrnProtocol crnProtocol = crnThread.getCrnProtocol();
+// if (crnProtocol == null) {
+// continue;
+// }
+// BasCrnp basCrnp = basCrnpService.selectById(crn.getId());
+// if (basCrnp == null) {
+// log.error("{}鍙峰爢鍨涙満灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", crn.getId());
+// continue;
+// }
+ if (crnProtocol.getStatusType() == CrnStatusType.IDLE && crnProtocol.getTaskNo() == 0 && crnProtocol.getModeType() == CrnModeType.AUTO) {
+ if(crnProtocol.getBay() ==1 && crnProtocol.getLevel()==1){
+ return;
+ }
+
+ // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊�3,12
+ if (wrkMastMapper.selectWorking(crnProtocol.getCrnNo()) != null) {
+ return;
+ }
+
+ //鍫嗗灈鏈烘湁鎵ц涓换鍔★紝杩囨护3,4,11,12
+ if (wrkMastMapper.selectCrnWorking(crnProtocol.getCrnNo()) != null) {
+ return;
+ }
+
+
+ //杈撻�佺嚎娌℃湁鍏ュ簱浠诲姟锛岃繃婊�2
+ if (wrkMastMapper.selectDevWorking(crnProtocol.getCrnNo()) == null) {
+ return;
+ }
+// log.info("鍫嗗灈鏈哄彫鍥炲師鐐�==>>" + crn.getId() + "鍙峰爢鍨涙満鏈夊叆搴撲换鍔�,鍙洖鍘熺偣");
+ // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
+ CrnCommand crnCommand = new CrnCommand();
+ crnCommand.setCrnNo(crnProtocol.getCrnNo()); // 鍫嗗灈鏈虹紪鍙�
+ crnCommand.setTaskNo((short) 9999); // 宸ヤ綔鍙�
+ crnCommand.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣�
+ crnCommand.setTaskMode(CrnTaskModeType.GO_ORIGIN); // 浠诲姟妯″紡: 鍥炲師鐐�
+ crnCommand.setSourcePosX((short) 0); // 婧愬簱浣嶆帓
+ crnCommand.setSourcePosY((short) 0); // 婧愬簱浣嶅垪
+ crnCommand.setSourcePosZ((short) 0); // 婧愬簱浣嶅眰
+ crnCommand.setDestinationPosX((short) 0); // 鐩爣搴撲綅鎺�
+ crnCommand.setDestinationPosY((short) 0); // 鐩爣搴撲綅鍒�
+ crnCommand.setDestinationPosZ((short) 0); // 鐩爣搴撲綅灞�
+ if (!MessageQueue.offer(SlaveType.Crn, crnProtocol.getCrnNo(), new Task(2, crnCommand))) {
+ log.error("鍫嗗灈鏈哄洖鍘熺偣鍛戒护涓嬪彂澶辫触锛屽爢鍨涙満鍙�={}锛屼换鍔℃暟鎹�={}", crnProtocol.getCrnNo(), JSON.toJSON(crnCommand));
+ }
+ }
+// }
}
/**
@@ -621,8 +691,9 @@
if (wrkMastMapper.updateById(waitWrkMast) == 0) {
log.error("璋冩暣宸ヤ綔妗d紭鍏堢骇澶辫触锛佸伐浣滃彿={}", waitWrkMast.getWrkNo());
}
+ continue;
}
- continue;
+
} else if (shallowLoc.getLocSts().equals("F") || shallowLoc.getLocSts().equals("D")) {
// 姝ゆ爣璁伴伩鍏嶅娆℃墽琛岀Щ搴撲换鍔�
if (Cools.isEmpty(wrkMast.getUpdMk()) || "N".equals(wrkMast.getUpdMk())) {
@@ -711,8 +782,8 @@
staProtocol = staProtocol.clone();
}
- // 鍏ュ嚭搴撴ā寮忓垽鏂�
- if (devpThread.ioMode != IoModeType.PAKOUT_MODE) { continue; }
+// // 鍏ュ嚭搴撴ā寮忓垽鏂�
+// if (devpThread.ioMode != IoModeType.PAKOUT_MODE) { continue; }
// 鏌ヨ绔欑偣璇︾粏淇℃伅
@@ -835,7 +906,7 @@
}
// 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊�
- if (wrkMastMapper.selectLocMoving(slave.getId()) != null) {
+ if (wrkMastMapper.selectWorking(slave.getId()) != null) {
return;
}
@@ -878,25 +949,30 @@
if (crnProtocol == null) { continue; }
// 鐘舵�侊細绛夊緟纭 骞朵笖 浠诲姟瀹屾垚浣� = 1
if (crnProtocol.statusType == CrnStatusType.WAITING && crnProtocol.getTaskNo() != 0) {
- // 鑾峰彇鍏ュ簱寰呯‘璁ゅ伐浣滄。
- WrkMast wrkMast = wrkMastMapper.selectPakInStep3(crnProtocol.getTaskNo().intValue());
- if (wrkMast == null) {
- log.error("鍫嗗灈鏈哄浜庣瓑寰呯‘璁や笖浠诲姟瀹屾垚鐘舵�侊紝浣嗘湭鎵惧埌宸ヤ綔妗c�傚爢鍨涙満鍙�={}锛屽伐浣滃彿={}", crn.getId(), crnProtocol.getTaskNo());
- continue;
- }
- // 鍏ュ簱 + 搴撲綅杞Щ ==> 4.鍏ュ簱瀹屾垚
- if (wrkMast.getWrkSts() == 3 || (wrkMast.getWrkSts() == 12 && wrkMast.getIoType() == 11)){
- wrkMast.setWrkSts(4L);
- } else {
- continue;
- }
- Date now = new Date();
- wrkMast.setCrnEndTime(now);
- wrkMast.setModiTime(now);
- // 淇敼鎴愬姛鍚庡浣嶅爢鍨涙満
- if (wrkMastMapper.updateById(wrkMast) > 0) {
+ if(crnProtocol.getTaskNo()==9999){
// 鍫嗗灈鏈哄浣�
crnThread.setResetFlag(true);
+ }else {
+ // 鑾峰彇鍏ュ簱寰呯‘璁ゅ伐浣滄。
+ WrkMast wrkMast = wrkMastMapper.selectPakInStep3(crnProtocol.getTaskNo().intValue());
+ if (wrkMast == null) {
+ log.error("鍫嗗灈鏈哄浜庣瓑寰呯‘璁や笖浠诲姟瀹屾垚鐘舵�侊紝浣嗘湭鎵惧埌宸ヤ綔妗c�傚爢鍨涙満鍙�={}锛屽伐浣滃彿={}", crn.getId(), crnProtocol.getTaskNo());
+ continue;
+ }
+ // 鍏ュ簱 + 搴撲綅杞Щ ==> 4.鍏ュ簱瀹屾垚
+ if (wrkMast.getWrkSts() == 3 || (wrkMast.getWrkSts() == 12 && wrkMast.getIoType() == 11)) {
+ wrkMast.setWrkSts(4L);
+ } else {
+ continue;
+ }
+ Date now = new Date();
+ wrkMast.setCrnEndTime(now);
+ wrkMast.setModiTime(now);
+ // 淇敼鎴愬姛鍚庡浣嶅爢鍨涙満
+ if (wrkMastMapper.updateById(wrkMast) > 0) {
+ // 鍫嗗灈鏈哄浣�
+ crnThread.setResetFlag(true);
+ }
}
}
@@ -1042,8 +1118,8 @@
staProtocol = staProtocol.clone();
}
- // 鍏ュ嚭搴撴ā寮忓垽鏂�
- if (devpThread.ioMode != IoModeType.PAKIN_MODE) { continue; }
+// // 鍏ュ嚭搴撴ā寮忓垽鏂�
+// if (devpThread.ioMode != IoModeType.PAKIN_MODE) { continue; }
// 绔欑偣鏉′欢鍒ゆ柇
if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable()
@@ -1388,13 +1464,16 @@
if (Utils.isDeepLoc(slaveProperties, row)) {
loc = locMastService.queryFreeLocMast(row, shallowLoc.getLocType1());
- if (Utils.isDeepLoc(slaveProperties, loc.getLocNo())){
- String shallowLocNo = Utils.getShallowLoc(slaveProperties, loc.getLocNo());
- LocMast shallowLoc1 = locMastService.selectById(shallowLocNo);
- if(!shallowLoc1.getLocSts().equals("O")){
- loc = null;
+ if (loc !=null) {
+ if (Utils.isDeepLoc(slaveProperties, loc.getLocNo())){
+ String shallowLocNo = Utils.getShallowLoc(slaveProperties, loc.getLocNo());
+ LocMast shallowLoc1 = locMastService.selectById(shallowLocNo);
+ if(!shallowLoc1.getLocSts().equals("O")){
+ loc = null;
+ }
}
}
+
if (null != loc) { break; }
}
@@ -1626,7 +1705,7 @@
devpThread.ioMode = IoModeType.PAKOUT_BOOTING;
WrkMast pakin = wrkMastMapper.selectWorkingPakin();
- if (pakin == null && !devpThread.getStation().get(201).isLoading() && !devpThread.getStation().get(202).isLoading()) {
+ if (pakin == null) {
// 鍑哄簱妯″紡
devpThread.ioMode = IoModeType.PAKOUT_MODE;
}
@@ -1645,4 +1724,19 @@
}
+
+ public void outOfDevp() {
+ List<WrkMast> wrkMasts = wrkMastMapper.selectPick();
+ for (WrkMast wrkMast : wrkMasts) {
+ if (basDevpService.selectCount(new EntityWrapper<BasDevp>().eq("wrk_no", wrkMast.getWrkNo())) == 0) {
+ wrkMast.setCtnNo("Y");
+ if (wrkMastMapper.updateById(wrkMast) == 0) {
+ log.error("淇敼{}宸ヤ綔妗eけ璐ワ紝ctn_no", wrkMast.getWrkNo());
+ }
+ }
+
+ }
+ }
+
+
}
--
Gitblit v1.9.1