From 35c7ec67fb8152782d40d8dfc08ddacdcc7de230 Mon Sep 17 00:00:00 2001
From: LSH
Date: 星期四, 19 十月 2023 10:31:52 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 267 ++++++++++++++++++++++++++++++++++-------------------
1 files changed, 171 insertions(+), 96 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 54a1fe2..d8ace45 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -203,46 +203,45 @@
}
if (staProtocol.isAutoing() && staProtocol.isLoading() && (staProtocol.getWorkNo() == 0 || staProtocol.getStaNo() == null)) {
// 鏌ヨ宸ヤ綔妗�
- WrkMast wrkMast = wrkMastMapper.selectPakOutStep2(staProtocol.getSiteId());
- if (wrkMast == null) {
+ TaskWrk taskWrk = taskWrkMapper.selectCrnStaWorking(crnSlave.getId(), staProtocol.getSiteId().toString());
+ if (taskWrk == null) {
continue;
}
// 鍒ゆ柇宸ヤ綔妗f潯浠�
- if (wrkMast.getIoType() < 100 || wrkMast.getStaNo() == null || wrkMast.getSourceStaNo() == null) {
- continue;
- }
- // 鍒ゆ柇鍚婅溅鏄惁瀹為檯宸插畬鎴愶紝涓旂數鑴戠姸鎬佸湪move涓紝浠ュ鐢佃剳杩涜鏇存柊宸ヤ綔妗�
- CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, wrkMast.getCrnNo());
- CrnProtocol crnProtocol = crnThread.getCrnProtocol();
- if (crnProtocol.statusType == CrnStatusType.FETCHING || crnProtocol.statusType == CrnStatusType.PUTTING) {
- // 绉诲姩涓�
- continue;
- }
- // 鍒ゆ柇鍫嗗灈鏈虹姸鎬佺瓑寰呯‘璁�
- if (crnProtocol.modeType == CrnModeType.AUTO && crnProtocol.getTaskNo().equals(wrkMast.getWrkNo().shortValue())
- && crnProtocol.getTaskFinish() == 1
- && crnProtocol.forkPosType == CrnForkPosType.HOME) {
- // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
-
- // 涓嬪彂绔欑偣淇℃伅
- staProtocol.setWorkNo(wrkMast.getWrkNo().shortValue());
- staProtocol.setStaNo(wrkMast.getStaNo().shortValue());
- if (!CommandUtils.offer(SlaveType.Devp, crnStn.getDevpPlcId(), new Task(2, staProtocol))) {
+ if (taskWrk.getWrkSts() == 12 && taskWrk.getIoType() == 2) {
+ // 鍒ゆ柇鍚婅溅鏄惁瀹為檯宸插畬鎴愶紝涓旂數鑴戠姸鎬佸湪move涓紝浠ュ鐢佃剳杩涜鏇存柊宸ヤ綔妗�
+ CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, taskWrk.getCrnNo());
+ CrnProtocol crnProtocol = crnThread.getCrnProtocol();
+ if (crnProtocol.statusType == CrnStatusType.FETCHING || crnProtocol.statusType == CrnStatusType.PUTTING) {
+ // 绉诲姩涓�
continue;
}
+ // 鍒ゆ柇鍫嗗灈鏈虹姸鎬佺瓑寰呯‘璁�
+ if (crnProtocol.modeType == CrnModeType.AUTO && crnProtocol.getTaskNo().equals(taskWrk.getWrkNo().shortValue())
+ && crnProtocol.getTaskFinish() == 1
+ && crnProtocol.forkPosType == CrnForkPosType.HOME) {
+ // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
- // 鏇存柊宸ヤ綔妗g姸鎬佷负14澶辫触
- wrkMast.setWrkSts(14L);
- wrkMast.setCrnEndTime(new Date());
- if (wrkMastMapper.updateById(wrkMast) != 0) {
- // 澶嶄綅鍫嗗灈鏈�
- crnThread.setResetFlag(true);
- } else {
- log.error("鏇存柊宸ヤ綔妗g殑宸ヤ綔鐘舵�佷负14澶辫触锛侊紒锛� [宸ヤ綔鍙�:{}]", wrkMast.getWrkNo());
+ // 涓嬪彂绔欑偣淇℃伅
+ staProtocol.setWorkNo(taskWrk.getWrkNo().shortValue());
+ String targetPoint = taskWrk.getTargetPoint();
+ int i = Integer.parseInt(targetPoint);
+ staProtocol.setStaNo((short)i);
+ if (!CommandUtils.offer(SlaveType.Devp, crnStn.getDevpPlcId(), new Task(2, staProtocol))) {
+ continue;
+ }
+
+ // 鏇存柊宸ヤ綔妗g姸鎬佷负14澶辫触
+ taskWrk.setWrkSts(14);
+ if (taskWrkMapper.updateById(taskWrk) != 0) {
+ // 澶嶄綅鍫嗗灈鏈�
+ crnThread.setResetFlag(true);
+ } else {
+ log.error("鏇存柊宸ヤ綔妗g殑宸ヤ綔鐘舵�佷负14澶辫触锛侊紒锛� [宸ヤ綔鍙�:{}]", taskWrk.getWrkNo());
+ }
+
}
-
}
-
}
}
}
@@ -430,6 +429,28 @@
break;
}
+ // 鍙屾繁搴撲綅涓旀祬搴撲綅鏈夎揣锛屽垯闇�鍏堝娴呭簱浣嶈繘琛屽簱浣嶇Щ杞�
+ if (Utils.isDeepLoc(slaveProperties, taskWrk.getStartPoint())) {
+
+ List<TaskWrk> taskWrks1 = taskWrkMapper.selectPakOutIoType(taskWrk.getCrnNo());
+ if (Cools.isEmpty(taskWrks1) && taskWrks1.size()!=0){
+ break;
+ }
+ String shallowLocNo = Utils.getShallowLoc(slaveProperties, taskWrk.getStartPoint());
+ LocMast shallowLoc = locMastService.selectById(shallowLocNo);
+ // O.绌哄簱浣嶃�丵.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴撱�丼.鍏ュ簱棰勭害銆乆.绂佺敤 鐩存帴鎼紒
+ if (shallowLoc.getLocSts().equals("P") || shallowLoc.getLocSts().equals("R")) {
+ log.error("宸ヤ綔鍙�={}锛屽簱浣嶅彿={}锛屾祬搴撲綅寮傚父锛氭祬搴撲綅鍙凤細={}锛屽簱浣嶇姸鎬�={}",taskWrk.getTaskNo(),taskWrk.getStartPoint(),shallowLocNo,shallowLoc.getLocSts());
+ } else if (shallowLoc.getLocSts().equals("F") || shallowLoc.getLocSts().equals("D")) {
+ taskWrk.setTransferMark(1);
+ taskWrkMapper.updateById(taskWrk);
+ break;
+ } else if (shallowLoc.getLocSts().equals("Q") || shallowLoc.getLocSts().equals("S")) {
+ log.error("宸ヤ綔鍙�={}锛屽簱浣嶅彿={}锛屾祬搴撲綅寮傚父锛氭祬搴撲綅鍙凤細={}锛屽簱浣嶇姸鎬�={}",taskWrk.getTaskNo(),taskWrk.getStartPoint(),shallowLocNo,shallowLoc.getLocSts());
+ }
+ continue;
+ }
+
// 1.鍫嗗灈鏈哄紑濮嬬Щ鍔�
CrnCommand crnCommand = new CrnCommand();
crnCommand.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙�
@@ -464,65 +485,120 @@
* 搴撲綅绉昏浆
*/
public void locToLoc(CrnSlave slave, CrnProtocol crnProtocol){
- // 鑾峰彇宸ヤ綔妗d俊鎭�
- WrkMast wrkMast = wrkMastMapper.selectLocMove(slave.getId());
- if (null == wrkMast) {
- return;
- }
- // 鑾峰彇婧愬簱浣嶄俊鎭�
- LocMast sourceSta = locMastService.selectById(wrkMast.getSourceLocNo());
- if (null == sourceSta) {
- log.error("宸ヤ綔妗e簱浣嶇Щ杞け璐ワ紝鍘熷洜锛氭绱㈡簮搴撲綅澶辫触锛佸伐浣滃彿={}锛屾簮搴撲綅={}", wrkMast.getWrkNo(), wrkMast.getSourceLocNo());
- return;
- }
- // 婧愬簱浣� 搴撲綅鐘舵�佸垽鏂�
- if (!sourceSta.getLocSts().equals("R") && !sourceSta.getLocSts().equals("S")) {
- return;
- }
- // 鑾峰彇鐩爣搴撲綅淇℃伅
- LocMast sta = locMastService.selectById(wrkMast.getLocNo());
- if (null == sta) {
- log.error("宸ヤ綔妗e簱浣嶇Щ杞け璐ワ紝鍘熷洜锛氭绱㈢洰鏍囧簱浣嶅け璐ワ紒宸ヤ綔鍙�={}锛屾簮搴撲綅={}", wrkMast.getWrkNo(), wrkMast.getLocNo());
- return;
- }
- // 鑾峰彇鍫嗗灈鏈轰俊鎭� 骞� 鍒ゆ柇鏄惁鍙叆鍑�
- BasCrnp basCrnp = basCrnpService.selectById(slave.getId());
- if (!basCrnp.getInEnable().equals("Y") && !basCrnp.getOutEnable().equals("Y")) {
- return;
- }
+ for (CrnSlave.CrnStn crnStn : slave.getCrnOutStn()) {
+ // 鑾峰彇宸ヤ綔鐘舵�佷负11锛堢敓鎴愬嚭搴揑D锛夌殑绉诲簱宸ヤ綔妗�
+ List<TaskWrk> taskWrks = taskWrkMapper.selectPakOut3(slave.getId(), crnStn.getStaNo().toString());
+ for (TaskWrk taskWrk : taskWrks){
+ if (taskWrk == null) {
+ continue;
+ }
+ // 宸ヤ綔妗g姸鎬佸垽鏂�
+ if (taskWrk.getIoType() != 3 || taskWrk.getTargetPoint() == null) {
+ log.error("鏌ヨ宸ヤ綔妗f暟鎹笉绗﹀悎鏉′欢--鍏ュ嚭绫诲瀷/鐩爣搴撲綅鍙�, 宸ヤ綔鍙�={}锛屾簮搴撲綅={}锛屽叆鍑虹被鍨�={}", taskWrk.getWrkNo(), taskWrk.getTargetPoint(), taskWrk.getIoType());
+ continue;
+ }
+ // 鑾峰彇婧愬簱浣嶄俊鎭�
+ String locNo = taskWrk.getStartPoint();
+ LocMast sourceSta = locMastService.selectById(locNo);
+ if (!sourceSta.getLocSts().equals("R") &&!sourceSta.getLocSts().equals("P")) {
+ log.error("鍑哄簱鎿嶄綔搴撲綅鐘舵�佷笉绗﹀悎--鐘舵��, 搴撲綅鍙�={}锛屽簱浣嶇姸鎬�={}", locNo, sourceSta.getLocSts());
+ continue;
+ }
- // 鍫嗗灈鏈烘帶鍒惰繃婊�
- if (!crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() != 0) {
- return;
- }
+ // 鑾峰彇鐩爣搴撲綅淇℃伅
+ String locNoEnd = taskWrk.getTargetPoint();
+ LocMast sourceEnd = locMastService.selectById(locNoEnd);
+ if (!sourceEnd.getLocSts().equals("S") && !sourceEnd.getLocSts().equals("Q")) {
+ log.error("鍑哄簱鎿嶄綔搴撲綅鐘舵�佷笉绗﹀悎--鐘舵��, 搴撲綅鍙�={}锛屽簱浣嶇姸鎬�={}", locNo, sourceSta.getLocSts());
+ continue;
+ }
- // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊�
- if (wrkMastMapper.selectWorking(slave.getId()) != null) {
- return;
- }
- // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
- CrnCommand crnCommand = new CrnCommand();
- crnCommand.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙�
- crnCommand.setTaskNo(wrkMast.getWrkNo().shortValue()); // 宸ヤ綔鍙�
- crnCommand.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣�
- crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡: 搴撲綅绉昏浆
- crnCommand.setSourcePosX(sourceSta.getRow1().shortValue()); // 婧愬簱浣嶆帓
- crnCommand.setSourcePosY(sourceSta.getBay1().shortValue()); // 婧愬簱浣嶅垪
- crnCommand.setSourcePosZ(sourceSta.getLev1().shortValue()); // 婧愬簱浣嶅眰
- crnCommand.setDestinationPosX(sta.getRow1().shortValue()); // 鐩爣搴撲綅鎺�
- crnCommand.setDestinationPosY(sta.getBay1().shortValue()); // 鐩爣搴撲綅鍒�
- crnCommand.setDestinationPosZ(sta.getLev1().shortValue()); // 鐩爣搴撲綅灞�
- if (!CommandUtils.offer(SlaveType.Crn, wrkMast.getCrnNo(), new Task(2, crnCommand))) {
- log.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand));
- } else {
- // 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓�
- Date now = new Date();
- wrkMast.setWrkSts(12L);
- wrkMast.setCrnStrTime(now);
- wrkMast.setModiTime(now);
- if (wrkMastMapper.updateById(wrkMast) == 0) {
- log.error("銆愬簱浣嶇Щ杞�� 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
+// // 鑾峰彇鍫嗗灈鏈哄嚭搴撶珯淇℃伅
+// SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, crnStn.getDevpPlcId());
+// StaProtocol staProtocol = devpThread.getStation().get(crnStn.getStaNo());
+// if (staProtocol == null) {
+// break;
+// } else {
+// staProtocol = staProtocol.clone();
+// }
+
+ // 鏌ヨ绔欑偣璇︾粏淇℃伅
+ BasDevp staDetl = basDevpService.selectById(crnStn.getStaNo());
+ if (staDetl == null) {
+ log.error("鍑哄簱 ===>> 鍫嗗灈鏈虹珯鐐瑰湪鏁版嵁搴撲笉瀛樺湪, 绔欑偣缂栧彿={}", crnStn.getStaNo());
+ continue;
+ }
+ // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
+
+ // 鍫嗗灈鏈烘帶鍒惰繃婊�
+ if (!crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() != 0) {
+ continue;
+ }
+
+ // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊�
+ if (taskWrkMapper.selectCrnWorking(slave.getId()) != null) {
+ continue;
+ }
+
+ // 璧峰娣卞簱浣嶆祬搴撲綅涓嶄负绌�
+ if (Utils.isDeepLoc(slaveProperties, taskWrk.getStartPoint())) {
+ // 鑾峰彇娴呭簱浣嶄俊鎭�
+ String shallowLocNo = Utils.getShallowLoc(slaveProperties, taskWrk.getStartPoint());
+ LocMast shallowLocMast = locMastService.selectById(shallowLocNo);
+ if (!shallowLocMast.getLocSts().equals("O")) {
+ log.error("绉诲簱鎿嶄綔璧峰搴撲綅娴呭簱浣嶇姸鎬佷笉绗﹀悎--鐘舵��, 搴撲綅鍙�={}锛屽簱浣嶇姸鎬�={}", locNo, shallowLocMast.getLocSts());
+ continue;
+ }
+ }
+
+ // 鐩爣搴撲綅涓烘繁搴撲綅涓旀祬搴撲綅涓嶄负绌�
+ if (Utils.isDeepLoc(slaveProperties, taskWrk.getTargetPoint())) {
+ // 鑾峰彇娴呭簱浣嶄俊鎭�
+ String shallowLocNo = Utils.getShallowLoc(slaveProperties, taskWrk.getTargetPoint());
+ LocMast shallowLocMast = locMastService.selectById(shallowLocNo);
+ if (!shallowLocMast.getLocSts().equals("O")) {
+ log.error("绉诲簱鎿嶄綔鐩爣搴撲綅娴呭簱浣嶇姸鎬佷笉绗﹀悎--鐘舵��, 搴撲綅鍙�={}锛屽簱浣嶇姸鎬�={}", locNo, shallowLocMast.getLocSts());
+ continue;
+ }
+ }
+
+ // 鐩爣搴撲綅涓烘祬搴撲綅涓旀繁搴撲綅鏃犺揣
+ if (Utils.isShallowLoc(slaveProperties, taskWrk.getTargetPoint())) {
+ // 鑾峰彇娣卞簱浣嶄俊鎭�
+ String deepLocNo = Utils.getDeepLoc(slaveProperties, taskWrk.getTargetPoint());
+ LocMast deepLocMast = locMastService.selectById(deepLocNo);
+ if (!deepLocMast.getLocSts().equals("F") && !deepLocMast.getLocSts().equals("D") ) {
+ log.error("绉诲簱鎿嶄綔鐩爣搴撲綅娣卞簱浣嶇姸鎬佷笉绗﹀悎--鐘舵��, 搴撲綅鍙�={}锛屽簱浣嶇姸鎬�={}", locNo, deepLocMast.getLocSts());
+ continue;
+ }
+ }
+
+ // 1.鍫嗗灈鏈哄紑濮嬬Щ鍔�
+ CrnCommand crnCommand = new CrnCommand();
+ crnCommand.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙�
+ crnCommand.setTaskNo(taskWrk.getWrkNo().shortValue()); // 宸ヤ綔鍙�
+ crnCommand.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣�
+ crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡: 搴撲綅绉昏浆
+ crnCommand.setSourcePosX(sourceSta.getRow1().shortValue()); // 婧愬簱浣嶆帓
+ crnCommand.setSourcePosY(sourceSta.getBay1().shortValue()); // 婧愬簱浣嶅垪
+ crnCommand.setSourcePosZ(sourceSta.getLev1().shortValue()); // 婧愬簱浣嶅眰
+ crnCommand.setDestinationPosX(sourceEnd.getRow1().shortValue()); // 鐩爣搴撲綅鎺�
+ crnCommand.setDestinationPosY(sourceEnd.getBay1().shortValue()); // 鐩爣搴撲綅鍒�
+ crnCommand.setDestinationPosZ(sourceEnd.getLev1().shortValue()); // 鐩爣搴撲綅灞�
+ if (!CommandUtils.offer(SlaveType.Crn, taskWrk.getCrnNo(), new Task(2, crnCommand))) {
+ log.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", taskWrk.getCrnNo(), JSON.toJSON(crnCommand));
+ } else {
+ // 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓�
+ Date now = new Date();
+ taskWrk.setWrkSts(12);
+ taskWrk.setModiTime(now);
+ if (taskWrkMapper.updateById(taskWrk) == 0) {
+ log.error("淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", taskWrk.getWrkNo());
+ }
+ break;
+ }
+ return;
}
}
@@ -541,23 +617,22 @@
// 鐘舵�侊細绛夊緟纭 骞朵笖 浠诲姟瀹屾垚浣� = 1
if (crnProtocol.getTaskFinish() == 1 && crnProtocol.getTaskNo() != 0) {
// 鑾峰彇鍏ュ簱寰呯‘璁ゅ伐浣滄。
- WrkMast wrkMast = wrkMastMapper.selectPakInStep3(crnProtocol.getTaskNo().intValue());
- if (wrkMast == null) {
+ TaskWrk taskWrk = taskWrkMapper.selectCrnNoWorking(crn.getId(),crnProtocol.getTaskNo().intValue());
+ if (taskWrk == null) {
log.error("鍫嗗灈鏈哄浜庣瓑寰呯‘璁や笖浠诲姟瀹屾垚鐘舵�侊紝浣嗘湭鎵惧埌宸ヤ綔妗c�傚爢鍨涙満鍙�={}锛屽伐浣滃彿={}", crn.getId(), crnProtocol.getTaskNo());
continue;
}
// 鍏ュ簱 + 搴撲綅杞Щ ==> 4.鍏ュ簱瀹屾垚
- if (wrkMast.getWrkSts() == 3 || (wrkMast.getWrkSts() == 12 && wrkMast.getIoType() == 11)) {
- wrkMast.setWrkSts(4L);
+ if (taskWrk.getWrkSts() == 3 || (taskWrk.getWrkSts() == 12 && taskWrk.getIoType() == 3)) {
+ taskWrk.setWrkSts(4);
} else {
continue;
}
Date now = new Date();
- wrkMast.setCrnEndTime(now);
- wrkMast.setModiTime(now);
- Integer integerWrkMast = wrkMastMapper.updateById(wrkMast);
+ taskWrk.setModiTime(now);
+ Integer integerTaskWrk = taskWrkMapper.updateById(taskWrk);
// 淇敼鎴愬姛鍚庡浣嶅爢鍨涙満
- if (integerWrkMast > 0) {
+ if (integerTaskWrk > 0) {
// 鍫嗗灈鏈哄浣�
crnThread.setResetFlag(true);
}
--
Gitblit v1.9.1