From 2b31b4af1d8d6777ec2ed6afec3c68c74762fa39 Mon Sep 17 00:00:00 2001 From: LSH Date: 星期四, 19 十月 2023 09:45:16 +0800 Subject: [PATCH] # --- src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 189 +++++++++++++++++++++++++++++++++-------------- 1 files changed, 133 insertions(+), 56 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..4abda7b 100644 --- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java @@ -430,6 +430,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 +486,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; } } -- Gitblit v1.9.1