From 922a5f471a735a0ea231d30e45312f61d583e58d Mon Sep 17 00:00:00 2001 From: zhangchao <zc857179121@qq.com> Date: 星期日, 01 九月 2024 16:12:49 +0800 Subject: [PATCH] 对照协议调整 --- src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 230 ++++++++++++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 192 insertions(+), 38 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 89bffbf..68662bd 100644 --- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java @@ -91,6 +91,20 @@ @Value("${wms.url}") private String wmsUrl; + private Short getWorkMode(Integer bay) { + if (bay == 2 || bay == 7) { + return (short) 3; + } else if (bay == 3) { + return (short) 1; + } else if (bay == 4) { + return (short) 2; + } else if (bay == 5) { + return (short) 1; + } else { + return (short) 0; + } + } + /** * 缁勬墭 * 鍏ュ簱绔欙紝鏍规嵁鏉$爜鎵弿鐢熸垚鍏ュ簱宸ヤ綔妗o紝宸ヤ綔鐘舵�� 2 @@ -102,10 +116,7 @@ for (DevpSlave.Sta inSta : devp.getInSta()) { // 鑾峰彇鏉$爜鎵弿浠俊鎭� BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, inSta.getBarcode()); - if (barcodeThread == null) { - continue; - } - // 鑾峰彇鍏ュ簱绔欎俊鎭� + 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()); if (staProtocol == null) { @@ -114,8 +125,66 @@ staProtocol = staProtocol.clone(); } + if (barcodeThread == null) { + continue; + } + String barcode = barcodeThread.getBarcode(); + // 灏哄妫�娴嬪紓甯� + boolean back = false; + String errMsg = ""; + if (staProtocol.isFrontErr()) { + errMsg = "鍓嶈秴闄�"; + back = true; + } + if (!back && staProtocol.isBackErr()) { + errMsg = "鍚庤秴闄�"; + back = true; + } + if (!back && staProtocol.isHighErr()) { + errMsg = "楂樿秴闄�"; + back = true; + } + if (!back && staProtocol.isLeftErr()) { + errMsg = "宸﹁秴闄�"; + back = true; + } + if (!back && staProtocol.isRightErr()) { + errMsg = "鍙宠秴闄�"; + back = true; + } + if (!back && staProtocol.isWeightErr()) { + errMsg = "瓒呴噸"; + back = true; + } + if (!back && staProtocol.isBarcodeErr()) { + errMsg = "鎵爜澶辫触"; + back = true; + } + + // 閫�鍥� + if (back) { + log.info("errmsg: " + errMsg); +// News.warn("鎵爜鍏ュ簱澶辫触锛寋}鍏ュ簱绔欏洜{}寮傚父锛屾墭鐩樺凡琚��鍥�", inSta.getStaNo(), errMsg); + MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errMsg)); + if (!staProtocol.isLoading()) { + continue; + } + if (!staProtocol.isPakMk()) { + continue; + } + staProtocol.setWorkNo((short) 9999); + News.info("{}鍏ュ簱鍥為��锛歿}锛屼换鍔″彿锛歿}", inSta.getStaNo(), errMsg, (short) 9999); + staProtocol.setStaNo(inSta.getBackSta().shortValue()); + devpThread.setPakMk(staProtocol.getSiteId(), false); + MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); + log.error("杈撻�佺嚎涓嬪彂1锛�" + 9999 + "," + inSta.getBackSta()); + } + + + + //LED - LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, inSta.getLed()); + //LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, inSta.getLed()); // 鍏ュ嚭搴撴ā寮忓垽鏂� // if ( inSta.getStaNo()==203 && devpThread.ioModeOf2F != IoModeType.PAKIN_MODE) { continue; } // if (inSta.getStaNo() == 203 && devpThread.ioModeOf2F == IoModeType.PAKOUT_MODE) { @@ -151,7 +220,7 @@ // Thread.sleep(300); // }catch (Exception e){} - String barcode = barcodeThread.getBarcode(); + //String barcode = barcodeThread.getBarcode(); if (!Cools.isEmpty(barcode)) { News.info("" + mark + " - 1" + " - {}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", inSta.getBarcode(), barcode); if ("NG".endsWith(barcode) || "NoRead".equals(barcode) || "empty".equals(barcode)) { @@ -218,6 +287,14 @@ param.setIoType(1); param.setSourceStaNo(inSta.getStaNo()); param.setLocType1(locTypeDto.getLocType1()); + if (inSta.getStaNo() == 102) { + param.setLocType2((short) 3); + } else if (inSta.getStaNo() == 211) { + param.setLocType1((short) 5); + param.setLocType2((short) 4); + } else if (inSta.getStaNo() == 201) { + param.setLocType2((short) 4); + } String response = new HttpHandler.Builder() .setUri(wmsUrl) .setPath("/rpc/pakin/loc/v1") @@ -543,7 +620,15 @@ wrkMast.setCrnEndTime(new Date()); if (wrkMastMapper.updateById(wrkMast) != 0) { // 澶嶄綅鍫嗗灈鏈� - crnThread.setResetFlag(true); + Short mode = crnProtocol.getMode(); + if (mode == 1) { + crnThread.setResetFlag(true); + } else if (mode == 2) { + crnThread.setResetFlagTwo(true); + } else if (mode == 3) { + crnThread.setResetFlag(true); + crnThread.setResetFlagTwo(true); + } } else { News.error("" + mark + " - 1" + " - 鏇存柊宸ヤ綔妗g殑宸ヤ綔鐘舵�佷负14澶辫触锛侊紒锛� [宸ヤ綔鍙�:{}]", wrkMast.getWrkNo()); } @@ -584,7 +669,6 @@ // if(crnThread.isBackHpFlag()){ // continue; // } - // 鍙湁褰撳爢鍨涙満绌洪棽 骞朵笖 鏃犱换鍔℃椂鎵嶇户缁墽琛� if (crnProtocol.getStatusType() == CrnStatusType.IDLE && crnProtocol.getTaskNo() == 0 && crnProtocol.getModeType() == CrnModeType.AUTO && crnProtocol.getLoaded() == 0 && crnProtocol.getForkPos() == 0) { @@ -704,7 +788,8 @@ flag = true; } if (!flag) { - News.errorNoLog("" + mark + " - 1" + " - 3" + " - 鍫嗗灈鏈哄叆搴撶珯淇℃伅(浠ヤ笅闇�瑕佸叏true):" + //TODO + News.error("" + mark + " - 1" + " - 3" + " - 鍫嗗灈鏈哄叆搴撶珯淇℃伅(浠ヤ笅闇�瑕佸叏true):" + "鑷姩淇″彿" + staProtocol.isAutoing() + "鏈夌墿淇″彿" + staProtocol.isLoading() + "宸ヤ綔鍙�>0" + staProtocol.getWorkNo() + "鍙叆淇″彿" + staProtocol.isInEnable() + "鑳藉叆淇″彿锛坵ms璁剧疆锛�.equals(\"Y\")" + staDetl.getCanining()); @@ -733,7 +818,7 @@ // News.infoNoLog(""+mark+" - 1"+" - 7"+" - 鍫嗗灈鏈烘帶鍒惰繃婊�:鍫嗗灈鏈烘槸鍚︾┖闂�={}锛屼换鍔″彿={}", crnProtocol.getStatusType(),crnProtocol.getTaskNo()); continue; } - + System.out.println("aas"); // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊� if (wrkMastMapper.selectWorking(slave.getId()) != null) { continue; @@ -781,6 +866,7 @@ } } } + System.out.println("434323"); 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()); @@ -789,14 +875,32 @@ CrnCommand crnCommand = new CrnCommand(); crnCommand.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙� crnCommand.setTaskNo(wrkMast.getWrkNo().shortValue()); // 宸ヤ綔鍙� + Short workMode = getWorkMode(locMast.getBay1()); + if (workMode == 2) { + //CrnTaskModeType璇ユ灇涓剧被鏃犳晥锛屽彧鏈�1浠h〃宸ヤ綅锛�2浠h〃宸ヤ綅2锛�3鍙屽伐浣� + crnCommand.setTaskMode(CrnTaskModeType.PAKOUT); + crnCommand.setSourcePosXTwo(crnStn.getRow().shortValue()); // 婧愬簱浣嶆帓 + crnCommand.setSourcePosYTwo(crnStn.getBay().shortValue()); // 婧愬簱浣嶅垪 + crnCommand.setSourcePosZTwo(crnStn.getLev().shortValue()); // 婧愬簱浣嶅眰 + crnCommand.setDestinationPosXTwo(locMast.getRow1().shortValue()); // 鐩爣搴撲綅鎺� + crnCommand.setDestinationPosYTwo(locMast.getBay1().shortValue()); // 鐩爣搴撲綅鍒� + crnCommand.setDestinationPosZTwo(locMast.getLev1().shortValue()); // 鐩爣搴撲綅灞� + } else { + if (workMode == 1) { + crnCommand.setTaskMode(CrnTaskModeType.PAKIN); + } else if (workMode == 3) { + crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); + } + crnCommand.setSourcePosX(crnStn.getRow().shortValue()); // 婧愬簱浣嶆帓 + crnCommand.setSourcePosY(crnStn.getBay().shortValue()); // 婧愬簱浣嶅垪 + crnCommand.setSourcePosZ(crnStn.getLev().shortValue()); // 婧愬簱浣嶅眰 + crnCommand.setDestinationPosX(locMast.getRow1().shortValue()); // 鐩爣搴撲綅鎺� + crnCommand.setDestinationPosY(locMast.getBay1().shortValue()); // 鐩爣搴撲綅鍒� + crnCommand.setDestinationPosZ(locMast.getLev1().shortValue()); // 鐩爣搴撲綅灞� + } // crnCommand.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣� - crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡: 搴撲綅绉昏浆 - crnCommand.setSourcePosX(crnStn.getRow().shortValue()); // 婧愬簱浣嶆帓 - crnCommand.setSourcePosY(crnStn.getBay().shortValue()); // 婧愬簱浣嶅垪 - crnCommand.setSourcePosZ(crnStn.getLev().shortValue()); // 婧愬簱浣嶅眰 - crnCommand.setDestinationPosX(locMast.getRow1().shortValue()); // 鐩爣搴撲綅鎺� - crnCommand.setDestinationPosY(locMast.getBay1().shortValue()); // 鐩爣搴撲綅鍒� - crnCommand.setDestinationPosZ(locMast.getLev1().shortValue()); // 鐩爣搴撲綅灞� + + if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getCrnNo(), new Task(2, crnCommand))) { News.error("" + mark + " - 1" + " - 16" + " - 鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand)); } else { @@ -812,7 +916,7 @@ // Thread.sleep(500); // }catch(Exception ignore){} // } - + System.out.println("ererdfd"); // 淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋 => 3.鍚婅溅鍏ュ簱涓� Date now = new Date(); wrkMast.setWrkSts(3L); @@ -946,18 +1050,36 @@ , sourceSta.getRow1().shortValue(), sourceSta.getBay1().shortValue(), sourceSta.getLev1().shortValue() , crnStn.getRow().shortValue(), crnStn.getBay().shortValue(), crnStn.getLev().shortValue()); + String locNo = sourceSta.getLocNo(); + // 1.鍫嗗灈鏈哄紑濮嬬Щ鍔� 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(crnStn.getRow().shortValue()); // 鐩爣搴撲綅鎺� - crnCommand.setDestinationPosY(crnStn.getBay().shortValue()); // 鐩爣搴撲綅鍒� - crnCommand.setDestinationPosZ(crnStn.getLev().shortValue()); // 鐩爣搴撲綅灞� + Short workMode = getWorkMode(sourceSta.getBay1()); + if (workMode == 2) { + //CrnTaskModeType璇ユ灇涓剧被鏃犳晥锛屽彧鏈�1浠h〃宸ヤ綅锛�2浠h〃宸ヤ綅2锛�3鍙屽伐浣� + crnCommand.setTaskMode(CrnTaskModeType.PAKOUT); + crnCommand.setSourcePosXTwo(sourceSta.getRow1().shortValue()); // 婧愬簱浣嶆帓 + crnCommand.setSourcePosYTwo(sourceSta.getBay1().shortValue()); // 婧愬簱浣嶅垪 + crnCommand.setSourcePosZTwo(sourceSta.getLev1().shortValue()); // 婧愬簱浣嶅眰 + crnCommand.setDestinationPosXTwo(crnStn.getRow().shortValue()); // 鐩爣搴撲綅鎺� + crnCommand.setDestinationPosYTwo(crnStn.getBay().shortValue()); // 鐩爣搴撲綅鍒� + crnCommand.setDestinationPosZTwo(crnStn.getLev().shortValue()); // 鐩爣搴撲綅灞� + } else { + if (workMode == 1) { + crnCommand.setTaskMode(CrnTaskModeType.PAKIN); + } else if (workMode == 3) { + crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); + } + crnCommand.setSourcePosX(sourceSta.getRow1().shortValue()); // 婧愬簱浣嶆帓 + crnCommand.setSourcePosY(sourceSta.getBay1().shortValue()); // 婧愬簱浣嶅垪 + crnCommand.setSourcePosZ(sourceSta.getLev1().shortValue()); // 婧愬簱浣嶅眰 + crnCommand.setDestinationPosX(crnStn.getRow().shortValue()); // 鐩爣搴撲綅鎺� + crnCommand.setDestinationPosY(crnStn.getBay().shortValue()); // 鐩爣搴撲綅鍒� + crnCommand.setDestinationPosZ(crnStn.getLev().shortValue()); // 鐩爣搴撲綅灞� + } + if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getCrnNo(), new Task(2, crnCommand))) { News.error("" + mark + " - 2" + " - 13" + " - 鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand)); } else { @@ -1144,14 +1266,30 @@ CrnCommand crnCommand = new CrnCommand(); crnCommand.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙� crnCommand.setTaskNo(wrkMast.getWrkNo().shortValue()); // 宸ヤ綔鍙� + Short workMode = getWorkMode(sourceSta.getBay1()); 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 (workMode == 2) { + //CrnTaskModeType璇ユ灇涓剧被鏃犳晥锛屽彧鏈�1浠h〃宸ヤ綅锛�2浠h〃宸ヤ綅2锛�3鍙屽伐浣� + crnCommand.setSourcePosXTwo(sourceSta.getRow1().shortValue()); // 婧愬簱浣嶆帓 + crnCommand.setSourcePosYTwo(sourceSta.getBay1().shortValue()); // 婧愬簱浣嶅垪 + crnCommand.setSourcePosZTwo(sourceSta.getLev1().shortValue()); // 婧愬簱浣嶅眰 + crnCommand.setDestinationPosXTwo(sta.getRow1().shortValue()); // 鐩爣搴撲綅鎺� + crnCommand.setDestinationPosYTwo(sta.getBay1().shortValue()); // 鐩爣搴撲綅鍒� + crnCommand.setDestinationPosZTwo(sta.getLev1().shortValue()); // 鐩爣搴撲綅灞� + } else { + if (workMode == 1) { + crnCommand.setTaskMode(CrnTaskModeType.PAKIN); + } else if (workMode == 3) { + 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 (!MessageQueue.offer(SlaveType.Crn, wrkMast.getCrnNo(), new Task(2, crnCommand))) { News.error("" + mark + " - 3" + " - 4" + " - 鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand)); } else { @@ -1182,10 +1320,18 @@ } // 鐘舵�侊細绛夊緟纭 骞朵笖 浠诲姟瀹屾垚浣� = 1 if (crnProtocol.statusType == CrnStatusType.WAITING && crnProtocol.getTaskNo() != 0) { - News.warnNoLog("" + mark + " - 0" + " - 寮�濮嬫墽琛屽宸ヤ綔妗g殑瀹屾垚鎿嶄綔"); + News.warn("" + mark + " - 0" + " - 寮�濮嬫墽琛屽宸ヤ綔妗g殑瀹屾垚鎿嶄綔"); if (crnProtocol.getTaskNo() == 9999) { // 鍫嗗灈鏈哄浣� - crnThread.setResetFlag(true); + Short mode = crnProtocol.getMode(); + if (mode == 1) { + crnThread.setResetFlag(true); + } else if (mode == 2) { + crnThread.setResetFlagTwo(true); + } else if (mode == 3) { + crnThread.setResetFlag(true); + crnThread.setResetFlagTwo(true); + } } else { // 鑾峰彇鍏ュ簱寰呯‘璁ゅ伐浣滄。 WrkMast wrkMast = wrkMastMapper.selectPakInStep3(crnProtocol.getTaskNo().intValue()); @@ -1206,7 +1352,15 @@ if (wrkMastMapper.updateById(wrkMast) > 0) { // 鍫嗗灈鏈哄浣� News.warnNoLog("" + mark + " - 2" + " - 淇敼鎴愬姛鍚庡浣嶅爢鍨涙満 : 鍫嗗灈鏈哄彿={}", crnThread.getCrnProtocol().getCrnNo()); - crnThread.setResetFlag(true); + Short mode = crnProtocol.getMode(); + if (mode == 1) { + crnThread.setResetFlag(true); + } else if (mode == 2) { + crnThread.setResetFlagTwo(true); + } else if (mode == 3) { + crnThread.setResetFlag(true); + crnThread.setResetFlagTwo(true); + } } } @@ -1711,7 +1865,7 @@ LocMast loc = null; for (Integer row : rows) { if (Utils.isDeepLoc(slaveProperties, row)) { - loc = locMastService.queryFreeLocMast(row, shallowLoc.getLocType1()); + loc = locMastService.queryFreeLocMast(row, shallowLoc.getLocType1(), shallowLoc.getLocType2()); if (loc != null) { if (Utils.isDeepLoc(slaveProperties, loc.getLocNo())) { @@ -1730,7 +1884,7 @@ if (null == loc) { for (Integer row : rows) { if (Utils.isShallowLoc(slaveProperties, row)) { - loc = locMastService.queryFreeLocMast(row, shallowLoc.getLocType1()); + loc = locMastService.queryFreeLocMast(row, shallowLoc.getLocType1(), shallowLoc.getLocType2()); if (null != loc) {//瀵瑰簲娣卞簱浣嶉潪鍦ㄥ簱鐘舵��,涓嶈兘绉诲簱 String deepLoc = Utils.getDeepLoc(slaveProperties, loc.getLocNo()); -- Gitblit v1.9.1