From 14cf00a11479cb1696eec55e10208490bd4aa09d Mon Sep 17 00:00:00 2001 From: Junjie <fallin.jie@qq.com> Date: 星期三, 26 七月 2023 13:00:23 +0800 Subject: [PATCH] 牛眼四向穿梭车HTTP请求工具类 --- src/main/java/com/zy/core/thread/ShuttleThread.java | 542 +++++++++++++++++++++++++++++++++--------------------- 1 files changed, 330 insertions(+), 212 deletions(-) diff --git a/src/main/java/com/zy/core/thread/ShuttleThread.java b/src/main/java/com/zy/core/thread/ShuttleThread.java index 26f23bc..6171b4d 100644 --- a/src/main/java/com/zy/core/thread/ShuttleThread.java +++ b/src/main/java/com/zy/core/thread/ShuttleThread.java @@ -64,7 +64,7 @@ switch (step) { // 璇绘暟鎹� case 1: - readStatus(); + read(); break; // 鍐欏叆鏁版嵁 case 2: @@ -110,6 +110,23 @@ modbusTcpNet.ConnectClose(); } + private void read() { + try { + readStatus(); + //鍥涘悜绌挎杞︾┖闂层�佹湁浠诲姟銆佹爣璁颁负true銆佸瓨鍦ㄤ换鍔℃寚浠わ紝闇�瑕佹墽琛屼换鍔$殑涓嬩竴鏉℃寚浠� + if (shuttleProtocol.getBusyStatusType() == ShuttleStatusType.IDLE + && shuttleProtocol.getTaskNo() != 0 + && shuttleProtocol.getPakMk()) { + //鎵ц涓嬩竴姝ユ寚浠� + executeWork(shuttleProtocol.getTaskNo()); + } + } catch (Exception e) { + e.printStackTrace(); + OutputQueue.SHUTTLE.offer(MessageFormat.format("銆恵0}銆戝洓鍚戠┛姊溅plc鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); + initShuttle(); + } + } + private void readStatus() { try { OperateResultExOne<byte[]> result = modbusTcpNet.Read("200", (short) 17); @@ -134,16 +151,19 @@ //閿欒缂栧彿 shuttleProtocol.setErrorCode(modbusTcpNet.getByteTransform().TransInt16(content,8)); //Plc杈撳嚭鐘舵�両O - boolean[] booleans = modbusTcpNet.getByteTransform().TransBool(content, 10, 2); - shuttleProtocol.setPlcOutputLift(booleans[1]); - shuttleProtocol.setPlcOutputTransfer(booleans[2]); - shuttleProtocol.setPlcOutputBrake(booleans[3]); - shuttleProtocol.setPlcOutputCharge(booleans[4]); + int plcOutIo = modbusTcpNet.getByteTransform().TransUInt16(content, 10); + int[] plcOutIos = CommonUtils.byteToBits((byte) plcOutIo); + shuttleProtocol.setPlcOutputLift(plcOutIos[1] == 1); + shuttleProtocol.setPlcOutputTransfer(plcOutIos[2] == 1); + shuttleProtocol.setPlcOutputBrake(plcOutIos[3] == 1); + shuttleProtocol.setPlcOutputCharge(plcOutIos[4] == 1); shuttleProtocol.setPlcOutputStatusIO(modbusTcpNet.getByteTransform().TransInt16(content, 10)); //閿欒淇℃伅鐮� shuttleProtocol.setStatusErrorCode(modbusTcpNet.getByteTransform().TransInt16(content,12)); + int plcInIo = modbusTcpNet.getByteTransform().TransUInt16(content, 14); + int[] plcInIos = CommonUtils.byteToBits((byte) plcInIo); //PLC杈撳叆鐘舵�� - shuttleProtocol.setPlcInputStatus(modbusTcpNet.getByteTransform().TransInt16(content,14)); + shuttleProtocol.setPlcInputStatus((short) plcInIos[6]); //褰撳墠鎴栬�呬箣鍓嶈鍒扮殑浜岀淮鐮佸�� shuttleProtocol.setCurrentOrBeforeCode(modbusTcpNet.getByteTransform().TransInt16(content,16)); //璇诲埌鐨勪簩缁寸爜X鏂瑰悜鍋忕Щ閲� @@ -169,40 +189,6 @@ if (shuttleProtocol.getBusyStatusType() == ShuttleStatusType.BUSY) { shuttleProtocol.setPakMk(true); } - -// if (shuttleProtocol.getErrorCode() != 0 && shuttleProtocol.getProtocolStatusType() == ShuttleProtocolStatusType.WORKING) { -// //鍑虹幇閿欒 -// resetAndTryFix(shuttleProtocol.getTaskNo()); -// } -// -// if(shuttleProtocol.getProtocolStatusType() == ShuttleProtocolStatusType.FIXING -// && shuttleProtocol.getTaskNo() != 0 -// && shuttleProtocol.getBusyStatusType() == ShuttleStatusType.IDLE){ -// //澶勪簬鏁呴殰淇鐘舵�� -// //鎵ц涓嬩竴姝ユ寚浠� -// executeWork(shuttleProtocol.getTaskNo()); -// } - - //鍥涘悜绌挎杞︾┖闂层�佹湁浠诲姟銆佹爣璁颁负true銆佸瓨鍦ㄤ换鍔℃寚浠わ紝闇�瑕佹墽琛屼换鍔$殑涓嬩竴鏉℃寚浠� - if (shuttleProtocol.getBusyStatusType() == ShuttleStatusType.IDLE - && shuttleProtocol.getTaskNo() != 0 - && shuttleProtocol.getPakMk()) { - //鎵ц涓嬩竴姝ユ寚浠� - executeWork(shuttleProtocol.getTaskNo()); - } - -// //妫�娴嬫槸鍚︽湁鎻愬崌鏈洪攣瀹氭爣璁帮紝鏈夊垯妫�娴嬫彁鍗囨満鏄惁鍒颁綅锛屾槸鍚﹁兘璧颁笅涓�姝ュ懡浠� -// if (shuttleProtocol.getBusyStatusType() == ShuttleStatusType.IDLE -// && shuttleProtocol.getTaskNo() != 0) { -// Object o = redisUtil.get("shuttle_wrk_no_" + shuttleProtocol.getTaskNo()); -// if (o != null) { -// ShuttleRedisCommand redisCommand = JSON.parseObject(o.toString(), ShuttleRedisCommand.class); -// if (redisCommand.getLiftSecurityMk()) { -// //鎵ц涓嬩竴姝ユ寚浠� -// executeWork(shuttleProtocol.getTaskNo()); -// } -// } -// } //灏嗗洓鍚戠┛姊溅鐘舵�佷繚瀛樿嚦鏁版嵁搴� BasShuttleService shuttleService = SpringUtils.getBean(BasShuttleService.class); @@ -276,7 +262,6 @@ News.error("鍥涘悜绌挎杞﹀啓鍏ュ懡浠や负绌�"); return false; } - BasShuttleService shuttleService = SpringUtils.getBean(BasShuttleService.class); if (shuttleService == null) { News.error("绯荤粺閿欒"); @@ -288,8 +273,49 @@ News.error("鍥涘悜绌挎杞︿笉瀛樺湪"); return false; } - command.setShuttleNo(slave.getId().shortValue()); + short[] array = getCommandArr(command);//鑾峰彇鍛戒护鎶ユ枃 + OperateResult result = modbusTcpNet.Write("0", array); + if (result != null && result.IsSuccess) { + News.info("鍥涘悜绌挎杞﹀懡浠や笅鍙慬id:{}] >>>>> {}", slave.getId(), JSON.toJSON(command)); + OutputQueue.SHUTTLE.offer(MessageFormat.format("銆恵0}銆慬id:{1}] >>>>> 鍛戒护涓嬪彂锛� {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(command))); + + try { + Thread.sleep(3000);//鍛戒护涓嬪彂鍚庝紤鐪� + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + + for (int i = 0; i < 5; i++) { + if (command.getCommandWord().intValue() == 5 || command.getCommandWord().intValue() == 6) { + break;//鍏呯數寮�鍏冲拰绯荤粺澶嶄綅涓嶉渶瑕侀噸鍙戞満鍒� + } + readStatus();//閲嶆柊璇诲彇鐘舵�� + if (shuttleProtocol.getBusyStatusType().equals(ShuttleStatusType.BUSY)) { + break; + } + + //鍒ゆ柇鏄惁杩愯涓紝濡備笉杩愯锛岄噸鏂颁笅鍙戝懡浠� + result = modbusTcpNet.Write("0", array); + News.info("鍥涘悜绌挎杞﹀懡浠や笅鍙慬id:{}] >>>>> {},娆℃暟锛歿}", slave.getId(), JSON.toJSON(command), i); + OutputQueue.SHUTTLE.offer(MessageFormat.format("銆恵0}銆慬id:{1}] >>>>> 鍛戒护涓嬪彂锛� {2},娆℃暟锛歿}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(command), i)); + try { + Thread.sleep(300);//鍛戒护涓嬪彂鍚庝紤鐪� + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + } + + return true; + } else { + OutputQueue.SHUTTLE.offer(MessageFormat.format("銆恵0}銆戝啓鍏ュ洓鍚戠┛姊溅plc鏁版嵁澶辫触 ===>> [id:{1}] [ip:{2}] [port:{3}],娆℃暟锛歿}", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); + News.error("鍐欏叆鍥涘悜绌挎杞lc鏁版嵁澶辫触 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); + return false; + } + } + + //鑾峰彇鍛戒护鎶ユ枃 + private short[] getCommandArr(ShuttleCommand command) { // 寮�濮嬩换鍔� short[] array = new short[17]; //鎺у埗鎸囦护瀛� @@ -323,7 +349,6 @@ array[7] = middleToDistDistances[1]; } - array[8] = basShuttle.getRunSpeed().shortValue();//鍥涘悜绌挎杞﹁繍琛岄�熷害锛屼粠绯荤粺鏁版嵁搴撹鍑� if (command.getRunDirection() != null) { //灏忚溅杩愯鏂瑰悜 array[8] = command.getRunDirection(); @@ -360,26 +385,16 @@ //灏忚溅闆疯揪澶囩敤 array[15] = command.getRadarTmp(); } - //鎸囦护缁撴潫浣� array[16] = command.getCommandEnd(); - - OperateResult result = modbusTcpNet.Write("0", array);; - if (result != null && result.IsSuccess) { - News.info("鍥涘悜绌挎杞﹀懡浠や笅鍙慬id:{}] >>>>> {}", slave.getId(), JSON.toJSON(command)); - OutputQueue.SHUTTLE.offer(MessageFormat.format("銆恵0}銆慬id:{1}] >>>>> 鍛戒护涓嬪彂锛� {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(command))); - return true; - } else { - OutputQueue.SHUTTLE.offer(MessageFormat.format("銆恵0}銆戝啓鍏ュ洓鍚戠┛姊溅plc鏁版嵁澶辫触 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); - News.error("鍐欏叆鍥涘悜绌挎杞lc鏁版嵁澶辫触 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); - return false; - } + return array; } /** * 鍒濆鍖栧洓鍚戠┛姊溅 */ private void initShuttle() { + this.connect(); if (null == shuttleProtocol) { shuttleProtocol = new ShuttleProtocol(); } @@ -415,9 +430,9 @@ //灏忚溅绉诲姩鍒版彁鍗囨満鍙o紝璁$畻璺緞 //璁$畻灏忚溅璧风偣鍒颁腑鐐规墍闇�鍛戒护 LocMast currentLocMast = locMastService.queryByQrCode(shuttleProtocol.getCurrentCode().toString()); - List<NavigateNode> firstMastResult = NavigateUtils.calc(currentLocMast.getLocNo(), assignCommand.getSourceLocNo(), NavigationMapType.NORMAL.id);//灏忚溅鍒颁腑鐐癸紝澶勪簬鏃犺揣鐘舵�侊紝浣跨敤姝e父閫氶亾鍦板浘 - - if (firstMastResult != null) { + List<NavigateNode> firstMastResult = NavigateUtils.calc(currentLocMast.getLocNo(), assignCommand.getSourceLocNo(), NavigationMapType.NORMAL.id, Utils.getShuttlePoints(assignCommand.getShuttleNo().intValue(), Utils.getLev(currentLocMast.getLocNo())));//灏忚溅鍒颁腑鐐癸紝澶勪簬鏃犺揣鐘舵�侊紝浣跨敤姝e父閫氶亾鍦板浘 + boolean checkResult = Utils.checkShuttlePath(firstMastResult, shuttleProtocol.getShuttleNo().intValue()); + if (firstMastResult != null && checkResult) { allNode.addAll(firstMastResult);//灏嗚妭鐐硅繘琛屼繚瀛� //鑾峰彇鍒嗘璺緞 ArrayList<ArrayList<NavigateNode>> data = NavigateUtils.getSectionPath(firstMastResult); @@ -430,7 +445,7 @@ //鐩爣璺緞 NavigateNode endPath = nodes.get(nodes.size() - 1); Integer allDistance = NavigateUtils.getCurrentPathAllDistance(nodes);//璁$畻褰撳墠璺緞琛岃蛋鎬昏窛绂� - Integer middleToDistDistance = NavigateUtils.getMiddleToDistDistance(nodes);//璁$畻涓棿鐐瑰埌鐩爣鐐硅璧拌窛绂� + Integer middleToDistDistance = NavigateUtils.getMiddleToDistDistance(nodes, middlePath);//璁$畻涓棿鐐瑰埌鐩爣鐐硅璧拌窛绂� //姝e父绉诲姩鍛戒护 Short startCode = NavigatePositionConvert.xyToPosition(startPath.getX(), startPath.getY(), startPath.getZ());//寮�濮嬩簩缁寸爜 @@ -451,9 +466,9 @@ } //璁$畻涓偣鍒扮粓鐐硅矾寰� - List<NavigateNode> secMastResult = NavigateUtils.calc(assignCommand.getSourceLocNo(), assignCommand.getLocNo(), NavigationMapType.DFX.id);//灏忚溅浠庝腑鐐瑰埌缁堢偣锛屽浜庢湁璐х姸鎬侊紝浣跨敤DFX鍦板浘 - - if (secMastResult != null) { + List<NavigateNode> secMastResult = NavigateUtils.calc(assignCommand.getSourceLocNo(), assignCommand.getLocNo(), NavigationMapType.DFX.id, Utils.getShuttlePoints(assignCommand.getShuttleNo().intValue(), Utils.getLev(assignCommand.getSourceLocNo())));//灏忚溅浠庝腑鐐瑰埌缁堢偣锛屽浜庢湁璐х姸鎬侊紝浣跨敤DFX鍦板浘 + boolean checkResult2 = Utils.checkShuttlePath(secMastResult, shuttleProtocol.getShuttleNo().intValue()); + if (secMastResult != null && checkResult2) { allNode.addAll(secMastResult);//灏嗚妭鐐硅繘琛屼繚瀛� //鑾峰彇鍒嗘璺緞 ArrayList<ArrayList<NavigateNode>> data = NavigateUtils.getSectionPath(secMastResult); @@ -466,7 +481,7 @@ //鐩爣璺緞 NavigateNode endPath = nodes.get(nodes.size() - 1); Integer allDistance = NavigateUtils.getCurrentPathAllDistance(nodes);//璁$畻褰撳墠璺緞琛岃蛋鎬昏窛绂� - Integer middleToDistDistance = NavigateUtils.getMiddleToDistDistance(nodes);//璁$畻涓棿鐐瑰埌鐩爣鐐硅璧拌窛绂� + Integer middleToDistDistance = NavigateUtils.getMiddleToDistDistance(nodes, middlePath);//璁$畻涓棿鐐瑰埌鐩爣鐐硅璧拌窛绂� //姝e父绉诲姩鍛戒护 Short startCode = NavigatePositionConvert.xyToPosition(startPath.getX(), startPath.getY(), startPath.getZ());//寮�濮嬩簩缁寸爜 @@ -528,7 +543,7 @@ Short liftArrival = liftProtocol.getPositionArrivalFeedback();//鎻愬崌鏈轰綅缃弽棣� String liftSiteLocNo = Utils.liftArrivalToOutInStaLocNo(liftArrival); LocMast locMast1 = locMastService.selectById(liftSiteLocNo); - ShuttleCommand moveCommand = getMoveCommand(liftProtocol.getBarcode(), Short.parseShort(locMast1.getQrCodeValue()), 1400, ShuttleRunDirection.BOTTOM.id, liftProtocol.getBarcode(), 1400, runSpeed); + ShuttleCommand moveCommand = getMoveCommand(liftProtocol.getBarcode(), Short.parseShort(locMast1.getQrCodeValue()), 1600, ShuttleRunDirection.BOTTOM.id, null, null, runSpeed); commands.add(moveCommand); //璧峰浣嶇疆淇敼涓烘彁鍗囨満鍙g珯鐐逛綅缃� @@ -536,9 +551,9 @@ } LocMast locMast = locMastService.queryByQrCode(startQr); - List<NavigateNode> result = NavigateUtils.calc(locMast.getLocNo(), assignCommand.getLocNo(), NavigationMapType.NONE.id);//鎵嬪姩鍛戒护-绉诲姩鍛戒护锛屼娇鐢ㄦ棤杩囨护鍦板浘 - - if (result != null) { + List<NavigateNode> result = NavigateUtils.calc(locMast.getLocNo(), assignCommand.getLocNo(), NavigationMapType.NONE.id, Utils.getShuttlePoints(assignCommand.getShuttleNo().intValue(), Utils.getLev(locMast.getLocNo())));//鎵嬪姩鍛戒护-绉诲姩鍛戒护锛屼娇鐢ㄦ棤杩囨护鍦板浘 + boolean checkResult3 = Utils.checkShuttlePath(result, shuttleProtocol.getShuttleNo().intValue()); + if (result != null && checkResult3) { //鎵�浣跨敤鐨勮矾寰勮繘琛岄攣瀹氱鐢� navigateMapData = new NavigateMapData(Utils.getLev(locMast.getLocNo())); navigateMapData.writeNavigateNodeToRedisMap(result, true);////鎵�浣跨敤鐨勮矾寰勮繘琛岄攣瀹氱鐢� @@ -555,7 +570,7 @@ //鐩爣璺緞 NavigateNode endPath = nodes.get(nodes.size() - 1); Integer allDistance = NavigateUtils.getCurrentPathAllDistance(nodes);//璁$畻褰撳墠璺緞琛岃蛋鎬昏窛绂� - Integer middleToDistDistance = NavigateUtils.getMiddleToDistDistance(nodes);//璁$畻涓棿鐐瑰埌鐩爣鐐硅璧拌窛绂� + Integer middleToDistDistance = NavigateUtils.getMiddleToDistDistance(nodes, middlePath);//璁$畻涓棿鐐瑰埌鐩爣鐐硅璧拌窛绂� Short startCode = NavigatePositionConvert.xyToPosition(startPath.getX(), startPath.getY(), startPath.getZ());//寮�濮嬩簩缁寸爜 Short middleCode = NavigatePositionConvert.xyToPosition(middlePath.getX(), middlePath.getY(), middlePath.getZ());//涓棿浜岀淮鐮� Short distCode = NavigatePositionConvert.xyToPosition(endPath.getX(), endPath.getY(), endPath.getZ());//鐩爣浜岀淮鐮� @@ -572,10 +587,10 @@ int lev = Utils.getLev(locMast1.getLocNo());//绌挎杞﹀綋鍓嶉珮搴� String liftSiteLocNo = Utils.levToOutInStaLocNo(lev);//褰撳墠妤煎眰绔欑偣搴撲綅鍙� LocMast liftSitelocMast = locMastService.selectById(liftSiteLocNo); - List<NavigateNode> result1 = NavigateUtils.calc(locMast1.getLocNo(), liftSiteLocNo, NavigationMapType.NONE.id);//绉诲姩鍒版彁鍗囨満锛屼娇鐢ㄦ棤杩囨护鍦板浘 - + List<NavigateNode> result1 = NavigateUtils.calc(locMast1.getLocNo(), liftSiteLocNo, NavigationMapType.NONE.id, Utils.getShuttlePoints(assignCommand.getShuttleNo().intValue(), Utils.getLev(locMast1.getLocNo())));//绉诲姩鍒版彁鍗囨満锛屼娇鐢ㄦ棤杩囨护鍦板浘 + boolean checkResult4 = Utils.checkShuttlePath(result1, shuttleProtocol.getShuttleNo().intValue()); Short endStartCode = null; - if (result1 != null) { + if (result1 != null && checkResult4) { //鎵�浣跨敤鐨勮矾寰勮繘琛岄攣瀹氱鐢� navigateMapData = new NavigateMapData(Utils.getLev(locMast1.getLocNo())); navigateMapData.writeNavigateNodeToRedisMap(result1, true);////鎵�浣跨敤鐨勮矾寰勮繘琛岄攣瀹氱鐢� @@ -592,7 +607,7 @@ //鐩爣璺緞 NavigateNode endPath = nodes.get(nodes.size() - 1); Integer allDistance = NavigateUtils.getCurrentPathAllDistance(nodes);//璁$畻褰撳墠璺緞琛岃蛋鎬昏窛绂� - Integer middleToDistDistance = NavigateUtils.getMiddleToDistDistance(nodes);//璁$畻涓棿鐐瑰埌鐩爣鐐硅璧拌窛绂� + Integer middleToDistDistance = NavigateUtils.getMiddleToDistDistance(nodes, middlePath);//璁$畻涓棿鐐瑰埌鐩爣鐐硅璧拌窛绂� Short startCode = NavigatePositionConvert.xyToPosition(startPath.getX(), startPath.getY(), startPath.getZ());//寮�濮嬩簩缁寸爜 Short middleCode = NavigatePositionConvert.xyToPosition(middlePath.getX(), middlePath.getY(), middlePath.getZ());//涓棿浜岀淮鐮� Short distCode = NavigatePositionConvert.xyToPosition(endPath.getX(), endPath.getY(), endPath.getZ());//鐩爣浜岀淮鐮� @@ -608,7 +623,7 @@ } //澧炲姞绉诲姩杩涙彁鍗囨満鍛戒护 - ShuttleCommand moveCommand = getMoveCommand(endStartCode, liftProtocol.getBarcode(), 1400, ShuttleRunDirection.TOP.id, endStartCode, 1400, runSpeed); + ShuttleCommand moveCommand = getMoveCommand(endStartCode, liftProtocol.getBarcode(), 1600, ShuttleRunDirection.TOP.id, null, null, runSpeed); commands.add(moveCommand); break; default: @@ -638,91 +653,24 @@ return false; } + WrkMastService wrkMastService = SpringUtils.getBean(WrkMastService.class); + Object o = redisUtil.get("shuttle_wrk_no_" + wrkNo); if (o == null) { return false; } ShuttleRedisCommand redisCommand = JSON.parseObject(o.toString(), ShuttleRedisCommand.class); + if (shuttleProtocol.getBusyStatus().intValue() == ShuttleStatusType.BUSY.id) { + return false;//灏忚溅鐘舵�佸繖 + } + if (!checkLiftStation(wrkNo)) {//妫�娴嬫槸鍚︽湁鎻愬崌鏈虹珯鐐癸紝鏈夊垯璋冨害鎻愬崌鏈� return false; } - //灏嗘爣璁扮疆涓篺alse(闃叉閲嶅彂) - shuttleProtocol.setPakMk(false); - - List<ShuttleCommand> errorCommands = redisCommand.getErrorCommands(); - if (errorCommands.size() > 0) { - //浼樺厛鎵ц璇ユ寚浠� - ShuttleCommand errorCommand = errorCommands.get(0);//鍙栧嚭鎸囦护 - - if(errorCommand.getCommandWord() == 1){//姝e父琛岃蛋鍛戒护锛岄渶瑕佸厛鎵ц瀹屾壘搴撲綅鍛戒护鍚庯紝鍐嶆墽琛� - LocMastService locMastService = SpringUtils.getBean(LocMastService.class); - LocMast locMast = locMastService.queryByQrCode(shuttleProtocol.getCurrentCode().toString()); - LocMast distLocMast = locMastService.queryByQrCode(errorCommand.getStartCodeNum().toString()); - if (shuttleProtocol.getCurrentCode().equals(errorCommand.getStartCodeNum())) { - //璧风偣鍜岀粓鐐瑰睘浜庡悓涓�搴撲綅锛屾棤闇�鍐嶆墽琛岀Щ鍔ㄦ搷浣� - errorCommands.remove(0);//绉婚櫎璇ュ懡浠� - redisCommand.setErrorCommands(new ArrayList<ShuttleCommand>()); - shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.WORKING); - //褰撳墠姝ュ簭 - int commandStep = redisCommand.getCommandStep(); - //姝ュ簭鍥為�� - commandStep--; - redisCommand.setCommandStep(commandStep); - //浠诲姟鏁版嵁淇濆瓨鍒皉edis - redisUtil.set("shuttle_wrk_no_" + wrkNo, JSON.toJSONString(redisCommand)); - shuttleProtocol.setPakMk(true); - return true; - }else { - List<NavigateNode> result = NavigateUtils.calc(locMast.getLocNo(), distLocMast.getLocNo(), NavigationMapType.DFX.id);//閿欒鎭㈠锛屼娇鐢―FX鍦板浘 - if (result != null) { - //鑾峰彇鍒嗘璺緞 - ArrayList<ArrayList<NavigateNode>> data = NavigateUtils.getSectionPath(result); - //灏嗘瘡涓�娈佃矾寰勫垎鎴恈ommand鎸囦护 - for (ArrayList<NavigateNode> nodes : data) { - //寮�濮嬭矾寰� - NavigateNode startPath = nodes.get(0); - //鐩爣璺緞 - NavigateNode endPath = nodes.get(nodes.size() - 1); - Integer allDistance = NavigateUtils.getCurrentPathAllDistance(nodes);//璁$畻褰撳墠璺緞琛岃蛋鎬昏窛绂� - - String qrCodeValue = distLocMast.getQrCodeValue(); - errorCommand.setCommandWord((short) 1); - errorCommand.setStartCodeNum(shuttleProtocol.getCurrentCode()); - errorCommand.setMiddleCodeNum((short) 1); - errorCommand.setDistCodeNum((short) Integer.parseInt(qrCodeValue)); - errorCommand.setStartToDistDistance(allDistance); - errorCommand.setRunSpeed((short) 1000); - errorCommand.setRunDirection(ShuttleRunDirection.get(startPath.getDirection()).id); - errorCommand.setForceMoveDistance(0); - errorCommand.setIOControl((short) 0); - errorCommand.setCommandEnd((short) 1); - break; - } - } - } - - shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.WORKING); - //褰撳墠姝ュ簭 - int commandStep = redisCommand.getCommandStep(); - //姝ュ簭鍥為�� - commandStep--; - redisCommand.setCommandStep(commandStep); - } - - if (!write(errorCommand)) { - News.error("鍥涘悜绌挎杞﹀懡浠や笅鍙戝け璐ワ紝绌挎杞﹀彿={}锛屼换鍔℃暟鎹�={}", shuttleProtocol.getShuttleNo(), JSON.toJSON(errorCommand)); - return false; - } else { - News.info("鍥涘悜绌挎杞﹀懡浠や笅鍙戞垚鍔燂紝绌挎杞﹀彿={}锛屼换鍔℃暟鎹�={}", shuttleProtocol.getShuttleNo(), JSON.toJSON(errorCommand)); - errorCommands.remove(0); - redisCommand.setErrorCommands(errorCommands); - //浠诲姟鏁版嵁淇濆瓨鍒皉edis - redisUtil.set("shuttle_wrk_no_" + wrkNo, JSON.toJSONString(redisCommand)); - return true; - } - } + LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, 1); + LiftProtocol liftProtocol = liftThread.getLiftProtocol(); List<ShuttleCommand> commands = redisCommand.getAssignCommand().getCommands(); //褰撳墠姝ュ簭 @@ -730,6 +678,101 @@ //path璺緞鏁扮洰 int size = commands.size(); ShuttleAssignCommand assignCommand = redisCommand.getAssignCommand(); + + if (commandStep != 0) { + //鍒ゆ柇涓婁竴鏉℃寚浠ゆ槸鍚﹀畬鎴� + ShuttleCommand command = commands.get(commandStep - 1); + if (command.getCommandWord().intValue() == 1) { + //绉诲姩鍛戒护 + if (command.getDistCodeNum().intValue() == shuttleProtocol.getCurrentCode().intValue()) { + //涓婁竴鏉℃寚浠ょ殑鐩爣浣嶇疆鍜屽綋鍓嶅皬杞︿綅缃浉鍚岋紝鍒欒瀹氫笂涓�鏉′换鍔″畬鎴� + command.setComplete(true); + + //涓婁竴鏉℃寚浠よ捣鐐规槸鎻愬崌鏈轰簩缁寸爜锛屽垯娓呴浂鎻愬崌鏈轰换鍔″彿 + if (command.getStartCodeNum().intValue() == liftProtocol.getBarcode().intValue()) { + //鍒ゆ柇鎻愬崌鏈烘槸鍚﹀浜庣┖闂� + if (liftProtocol.isIdleNoTask() && liftProtocol.getTaskNo().intValue() == redisCommand.getWrkNo().intValue()) { + liftProtocol.setTaskNo((short) 0);//娓呯┖浠诲姟鍙� + WrkMast wrkMast = wrkMastService.selectById(wrkNo); + if (wrkMast != null) { + wrkMast.setLiftNo(null);//瑙i攣鎻愬崌鏈� + wrkMastService.updateById(wrkMast); + } + } + } + + //鍏ュ簱鍛戒护锛屽綋灏忚溅鍙栧畬璐у悗锛岄渶瑕佸皢鎻愬崌鏈洪噴鏀� + if (assignCommand.getTaskMode().intValue() == ShuttleTaskModeType.PAK_IN.id) { + //鍒ゆ柇涓婁竴鏉℃寚浠ょ殑璧风偣鏄惁涓鸿緭閫佺珯鐐逛笖鐩爣鐐逛笉鏄彁鍗囨満鍐呴儴浜岀淮鐮� + Short startCodeNum = command.getStartCodeNum(); + BasDevpService basDevpService = SpringUtils.getBean(BasDevpService.class); + BasDevp basDevp = basDevpService.queryByQrCode(startCodeNum.intValue());//鐩爣绔欑偣 + if (basDevp != null && command.getDistCodeNum().intValue() != liftProtocol.getBarcode().intValue()) { + //涓婁竴鏉℃寚浠ょ殑璧风偣涓鸿緭閫佺珯鐐逛笖鐩爣鐐逛笉鏄彁鍗囨満鍐呴儴浜岀淮鐮� + //姝ゆ椂灏忚溅搴旇宸茬粡绂诲紑杈撻�佺珯鐐癸紝鍒ゆ柇鎻愬崌鏈烘槸鍚︾┖闂蹭笖鏈夊伐浣滃彿 + if (liftProtocol.isIdleNoTask() && liftProtocol.getTaskNo().intValue() == redisCommand.getWrkNo().intValue()) { + liftProtocol.setTaskNo((short) 0);//娓呯┖浠诲姟鍙� + WrkMast wrkMast = wrkMastService.selectById(wrkNo); + if (wrkMast != null) { + wrkMast.setLiftNo(null);//瑙i攣鎻愬崌鏈� + wrkMastService.updateById(wrkMast); + } + } + } + } + + } + } else if (command.getCommandWord().intValue() == 2) { + //鎵樼洏椤跺崌鍛戒护 + if (command.getPalletLift().intValue() == 1) { + //椤跺崌 + //鍒ゆ柇鏄惁椤跺崌鍒颁綅 + if (shuttleProtocol.getPlcOutputLift()) { + //鑷姩妯″紡 + if (assignCommand.getAuto() && shuttleProtocol.getPlcInputStatus().intValue() == 1) { + //椤跺崌鍒颁綅,涓旀墭鐩橀浄杈炬湁鐗╋紝璁ゅ畾浠诲姟瀹屾垚 + command.setComplete(true); + }else { + //鎵嬪姩妯″紡锛屼笉鍒ゆ柇鎵樼洏闆疯揪 + //椤跺崌鍒颁綅锛岃瀹氫换鍔″畬鎴� + command.setComplete(true); + } + } + }else { + //涓嬮檷 + //鍒ゆ柇鏄惁涓嬮檷鍒颁綅锛屽垽鏂墭鐩橀浄杈炬槸鍚︽棤鐗� + if (!shuttleProtocol.getPlcOutputLift() && !shuttleProtocol.getPlcOutputTransfer()) { + //鑷姩妯″紡 + if (assignCommand.getAuto() && shuttleProtocol.getPlcInputStatus().intValue() == 0) { + //涓嬮檷鍒颁綅锛屼笖鎵樼洏闆疯揪鏃犵墿锛岃瀹氫换鍔″畬鎴� + command.setComplete(true); + }else { + //鎵嬪姩妯″紡锛屼笉鍒ゆ柇鎵樼洏闆疯揪 + //涓嬮檷鍒颁綅锛屼笖鎵樼洏闆疯揪鏃犵墿锛岃瀹氫换鍔″畬鎴� + command.setComplete(true); + } + } + } + } else if (command.getCommandWord().intValue() == 5) { + //鍏呯數鍛戒护 + //鍒ゆ柇灏忚溅鍏呯數寮�鍏� + if (shuttleProtocol.getPlcOutputCharge()) { + //姝e父鍏呯數锛岃瀹氫换鍔″畬鎴� + command.setComplete(true); + } + } + //浠诲姟鏁版嵁淇濆瓨鍒皉edis + redisUtil.set("shuttle_wrk_no_" + redisCommand.getWrkNo(), JSON.toJSONString(redisCommand)); + + if (!command.getComplete()) { + //涓婁竴鏉′换鍔℃湭瀹屾垚锛岀姝笅鍙戝懡浠� + return false; + } + } + + if (commands.size() == 0) { + return false; + } //鍙栧嚭鍛戒护 ShuttleCommand command = commands.get(commandStep); @@ -743,17 +786,18 @@ } } - LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, 1); - LiftProtocol liftProtocol = liftThread.getLiftProtocol(); - //鍒ゆ柇灏忚溅褰撳墠浜岀淮鐮佹槸鍚︿负鎻愬崌鏈轰簩缁寸爜 if (shuttleProtocol.getCurrentCode().intValue() == liftProtocol.getBarcode().intValue()) { //灏忚溅褰撳墠鍛戒护璧峰浣嶇疆灏辨槸鎻愬崌鏈轰簩缁寸爜锛岃鏄庡皬杞﹂渶瑕佸悜鎻愬崌鏈哄绉诲姩锛屽垯闇�瑕佸垽鏂姸鎬佹槸鍚︽弧瓒� if (command.getStartCodeNum().intValue() == liftProtocol.getBarcode().intValue()){ //鎻愬崌鏈烘槸鍚︾┖闂诧紝鎻愬崌鏈烘槸鍚﹀埌杈剧洰鏍囨ゼ灞傦紝鐩爣妤煎眰鏄惁缁欏嚭鎻愬崌鏈哄埌浣嶄俊鍙蜂綅 - if (!liftProtocol.isIdle()) { + if (!liftProtocol.isIdleNoTask()) { return false;//鎻愬崌鏈哄繖锛岀姝笅鍙戝懡浠� + } + if (liftProtocol.getTaskNo().intValue() != 0 && liftProtocol.getTaskNo().intValue() != wrkNo) { + //鎻愬崌鏈哄伐浣滃彿鍜屽綋鍓嶅伐浣滀笉鐩稿悓锛岀姝笅鍙戝懡浠� + return false; } Short distCodeNum = command.getDistCodeNum();//鐩爣浜岀淮鐮� @@ -778,9 +822,11 @@ if (!staProtocol.isLiftArrival()) { return false;//绔欑偣鎻愬崌鏈哄埌浣嶄俊鍙穎alse锛岀姝笅鍙戝懡浠� } + + //鏉′欢婊¤冻锛屽崰鐢ㄦ彁鍗囨満 + liftProtocol.setTaskNo(wrkNo); } } - //涓嬪彂鍛戒护 if (!write(command)) { @@ -789,10 +835,27 @@ } else { News.info("鍥涘悜绌挎杞﹀懡浠や笅鍙戞垚鍔燂紝绌挎杞﹀彿={}锛屼换鍔℃暟鎹�={}", shuttleProtocol.getShuttleNo(), JSON.toJSON(command)); - try { - Thread.sleep(1000);//鍛戒护涓嬪彂瀹屽悗浼戠湢1s - } catch (InterruptedException e) { - throw new RuntimeException(e); + //灏嗘爣璁扮疆涓篺alse(闃叉閲嶅彂) + shuttleProtocol.setPakMk(false); + + //淇濆瓨鏁版嵁鍒版暟鎹簱鍋氭祦姘� + BasShuttleOptService shuttleOptService = SpringUtils.getBean(BasShuttleOptService.class); + if (shuttleOptService != null) { + short[] commandArr = getCommandArr(command);//鑾峰彇鍛戒护鎶ユ枃 + BasShuttleOpt opt = new BasShuttleOpt( + assignCommand.getTaskNo().intValue(), + assignCommand.getShuttleNo().intValue(), + new Date(), + ShuttleTaskModeType.get(assignCommand.getTaskMode()).desc, + assignCommand.getSourceLocNo(), + assignCommand.getLocNo(), + null, + null, + null, + JSON.toJSONString(command), + JSON.toJSONString(commandArr) + ); + shuttleOptService.insert(opt); } //鍒ゆ柇鏁版嵁鏄惁鎵ц瀹屾垚 @@ -805,23 +868,6 @@ redisUtil.set("shuttle_wrk_no_" + redisCommand.getWrkNo(), JSON.toJSONString(redisCommand)); }else { //宸叉墽琛屽畬鎴� - //淇濆瓨鏁版嵁鍒版暟鎹簱鍋氭祦姘� - BasShuttleOptService shuttleOptService = SpringUtils.getBean(BasShuttleOptService.class); - if (shuttleOptService != null) { - BasShuttleOpt opt = new BasShuttleOpt( - assignCommand.getTaskNo().intValue(), - assignCommand.getShuttleNo().intValue(), - new Date(), - ShuttleTaskModeType.get(assignCommand.getTaskMode()).desc, - assignCommand.getSourceLocNo(), - assignCommand.getLocNo(), - null, - null, - null, - JSON.toJSONString(assignCommand) - ); - shuttleOptService.insert(opt); - } if (redisCommand.getLiftSecurityMk()) { //鏇鹃攣瀹氳繃鎻愬崌鏈猴紝闇�瑕佽繘琛岃В閿� @@ -856,7 +902,7 @@ }else { shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.CHARGING_WAITING); } - News.info("鍥涘悜绌挎杞︿换鍔℃墽琛屽畬鎴愮瓑寰呯‘璁や腑锛岀┛姊溅鍙�={}锛屼换鍔℃暟鎹�={}", shuttleProtocol.getShuttleNo(), JSON.toJSON(command)); + News.info("鍥涘悜绌挎杞︿换鍔℃墽琛屼笅鍙戝畬鎴愮瓑寰呮墽琛岀粨鏉燂紝绌挎杞﹀彿={}锛屼换鍔℃暟鎹�={}", shuttleProtocol.getShuttleNo(), JSON.toJSON(command)); } } @@ -903,11 +949,14 @@ if (commands.get(0).getStartCodeNum() == null) { return false; } - //鍛戒护璧峰浣嶇疆灏辨槸鎻愬崌鏈轰簩缁寸爜锛屽垯涓嶈繘琛屾牎楠� - if (commands.get(0).getStartCodeNum().intValue() == liftProtocol.getBarcode().intValue()) { - return true; - } } + + if (commands.size() == 0) { + return false; + } + + //褰撳墠绛夊緟鎵ц鐨勬寚浠� + ShuttleCommand command = commands.get(commandStep); BasDevpService basDevpService = SpringUtils.getBean(BasDevpService.class); ArrayList<Short> qrCodeValues = new ArrayList<>(); @@ -916,32 +965,64 @@ qrCodeValues.add(Short.parseShort(basDevp.getQrCodeValue())); } - //閬嶅巻鎵�鏈夋寚浠わ紝鍒ゆ柇鏄惁鏈夊埌鎻愬崌鏈哄彛鐨勬寚浠わ紝骞惰幏鍙栧埌杈捐鎻愬崌鏈哄彛鎵�闇�姝ュ簭 - int step = 0; Integer siteNo = null;//绔欑偣鍙� - ShuttleCommand command = null; - for (int i = 0; i < commands.size(); i++) { - command = commands.get(i); - for (Short qrCodeValue : qrCodeValues) { - if (qrCodeValue.intValue() == command.getDistCodeNum().intValue()) { - //瀛樺湪 - step = i + 1; - BasDevp basDevp = basDevpService.queryByQrCode(qrCodeValue.intValue()); - siteNo = basDevp.getDevNo(); - break; - } + for (Short qrCodeValue : qrCodeValues) { + //鐩爣浣嶇疆鏄彁鍗囨満鍙o紝鎴栬捣鐐逛綅缃槸鎻愬崌鏈哄彛涓旂洰鏍囨槸鍘绘彁鍗囨満鍐� + if (command.getDistCodeNum() == null || command.getStartCodeNum() == null) { + continue; + } + + if (qrCodeValue.intValue() == command.getDistCodeNum().intValue() || (qrCodeValue.intValue() == command.getStartCodeNum().intValue() && command.getDistCodeNum().intValue() == liftProtocol.getBarcode().intValue())) { + //瀛樺湪 + BasDevp basDevp = basDevpService.queryByQrCode(qrCodeValue.intValue()); + siteNo = basDevp.getDevNo(); + break; } } - if (step == 0) { - //鏃犻渶鍚庣画妫�娴嬶紝鐩存帴鏀捐 + if (siteNo == null) { + //鎵句笉鍒扮珯鐐癸紝璇存槑杩樻湭鍒版彁鍗囨満 return true; } - //鍒ゆ柇涓嬩竴姝ユ槸鍚︿负鎻愬崌鏈哄彛 - if (commandStep + 1 != step) { - //涓嬩竴姝ヤ笉鏄彁鍗囨満鍙o紝璺宠繃鍚庣画娴佺▼ - return true; + +// //閬嶅巻鎵�鏈夋寚浠わ紝鍒ゆ柇鏄惁鏈夊埌鎻愬崌鏈哄彛鐨勬寚浠ゆ垨浠庢彁鍗囨満鍙e墠寰�鎻愬崌鏈哄唴鐨勬寚浠わ紝骞惰幏鍙栧埌杈捐鎻愬崌鏈哄彛鎵�闇�姝ュ簭 +// int step = 0; +// Integer siteNo = null;//绔欑偣鍙� +// ShuttleCommand command = null; +// for (int i = 0; i < commands.size(); i++) { +// command = commands.get(i); +// for (Short qrCodeValue : qrCodeValues) { +// //鐩爣浣嶇疆鏄彁鍗囨満鍙o紝鎴栬捣鐐逛綅缃槸鎻愬崌鏈哄彛涓旂洰鏍囨槸鍘绘彁鍗囨満鍐� +// if (command.getDistCodeNum() == null || command.getStartCodeNum() == null) { +// continue; +// } +// +// if (qrCodeValue.intValue() == command.getDistCodeNum().intValue() || (qrCodeValue.intValue() == command.getStartCodeNum().intValue() && command.getDistCodeNum().intValue() == liftProtocol.getBarcode().intValue())) { +// //瀛樺湪 +// step = i + 1; +// BasDevp basDevp = basDevpService.queryByQrCode(qrCodeValue.intValue()); +// siteNo = basDevp.getDevNo(); +// break; +// } +// } +// } +// +// if (step == 0) { +// //鏃犻渶鍚庣画妫�娴嬶紝鐩存帴鏀捐 +// return true; +// } + + //鍒ゆ柇涓嬩竴姝ユ槸鍚︿负鎻愬崌鏈哄彛鎴栨彁鍗囨満鍐� + if (commandStep < commands.size()) { + ShuttleCommand command1 = commands.get(commandStep); + Short distCodeNum = command1.getDistCodeNum(); + if (distCodeNum != null) { + BasDevp basDevp = basDevpService.queryByQrCode(Integer.valueOf(distCodeNum)); + if (basDevp == null && distCodeNum.intValue() != liftProtocol.getBarcode().intValue()) { + return true;//涓嬩竴姝ヤ笉鏄彁鍗囨満鍙o紝璺宠繃鍚庣画娴佺▼ + } + } } //鑾峰彇鍥涘悜绌挎杞﹀綋鍓嶆ゼ灞� @@ -954,24 +1035,62 @@ } //鍒ゆ柇杈撻�佺嚎绔欑偣鏄惁缁欏嚭鎻愬崌鏈哄埌浣嶄俊鍙� - if (siteNo != null) { - SiemensDevpThread siemensDevpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1); - StaProtocol staProtocol = siemensDevpThread.getStation().get(siteNo); - if (staProtocol.isLiftArrival() - && liftProtocol.getPositionArrivalFeedback$() == shuttleLocNoLev) { - //杈撻�佺嚎鍙嶉鎻愬崌鏈哄埌浣嶄笖鎻愬崌鏈烘ゼ灞傚弽棣堜负鍚屼竴灞傦紝鐩存帴鏀捐 - return true; - } + SiemensDevpThread siemensDevpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1); + StaProtocol staProtocol = siemensDevpThread.getStation().get(siteNo); + if (!staProtocol.isLiftArrival()) { + //杈撻�佺嚎鍙嶉鎻愬崌鏈烘病鏈夊埌浣� + executeLift(liftThread, liftProtocol, redisCommand, shuttleLocNoLev);//璋冨害鎻愬崌鏈� + return false; } - if (liftProtocol.getRunning()) { - //鎻愬崌鏈鸿繍琛屼腑锛岀姝笅鍙� + if (shuttleProtocol.getCurrentCode().intValue() == liftProtocol.getBarcode().intValue()) { + //灏忚溅澶勪簬鎻愬崌鏈哄唴 + return true; + }else { + if (liftProtocol.getPositionArrivalFeedback$() == shuttleLocNoLev) { + //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁浠诲姟鍙� + if (liftProtocol.getTaskNo().intValue() != 0) { + //鍒ゆ柇浠诲姟鍙锋槸鍚﹀拰褰撳墠灏忚溅浠诲姟涓�鑷� + if (liftProtocol.getTaskNo().intValue() != wrkNo.intValue()) { + return false;//浠诲姟鍙蜂笉涓�鑷达紝涓旀彁鍗囨満浠诲姟鍙蜂笉涓�0 + } + } + liftProtocol.setTaskNo(wrkNo);//缁欐彁鍗囨満鍐欏伐浣滃彿锛岄槻姝㈣鍗犵敤 + WrkMastService wrkMastService = SpringUtils.getBean(WrkMastService.class); + WrkMast wrkMast = wrkMastService.selectById(shuttleProtocol.getTaskNo()); + if (wrkMast != null) { + wrkMast.setLiftNo(liftProtocol.getLiftNo().intValue());//閿佸畾鎻愬崌鏈猴紝闃叉琚姠鍗� + wrkMastService.updateById(wrkMast); + } + return true;//鎻愬崌鏈哄埌浣� + } + executeLift(liftThread, liftProtocol, redisCommand, shuttleLocNoLev);//璋冨害鎻愬崌鏈� + return false;//鎻愬崌鏈烘病鏈夊埌浣� + } + + } + + private boolean executeLift(LiftThread liftThread, LiftProtocol liftProtocol, ShuttleRedisCommand redisCommand, Integer shuttleLocNoLev) {//璋冨害鎻愬崌鏈� + if (!liftProtocol.isIdle()) { + //鎻愬崌鏈轰笉绌洪棽绂佹涓嬪彂 + return false; + } + + if (liftProtocol.getPlatShuttleCheck()) { + //鎻愬崌鏈哄唴鏈夎溅绂佹涓嬪彂 return false; } if (redisCommand.getLiftSecurityMk()) { //宸茬粡鎵ц杩囨彁鍗囨満鍛戒护锛岀姝笅鍙� return false; + } + + WrkMastService wrkMastService = SpringUtils.getBean(WrkMastService.class); + WrkMast wrkMast = wrkMastService.selectById(shuttleProtocol.getTaskNo()); + if (wrkMast != null) { + wrkMast.setLiftNo(liftProtocol.getLiftNo().intValue());//閿佸畾鎻愬崌鏈猴紝闃叉琚姠鍗� + wrkMastService.updateById(wrkMast); } //缁欐彁鍗囨満鍒嗛厤浠诲姟 @@ -981,7 +1100,7 @@ liftProtocol.setSecurityMk(true);//鏍囪缃负true锛岄槻姝㈠叾浠栦换鍔″崰鐢ㄥ綋鍓嶆彁鍗囨満 redisCommand.setLiftSecurityMk(true);//鏍囪缃负true锛岄槻姝㈠叾浠栦换鍔″崰鐢ㄥ綋鍓嶆彁鍗囨満 //浠诲姟鏁版嵁淇濆瓨鍒皉edis - redisUtil.set("shuttle_wrk_no_" + wrkNo, JSON.toJSONString(redisCommand)); + redisUtil.set("shuttle_wrk_no_" + redisCommand.getWrkNo(), JSON.toJSONString(redisCommand)); //鍛戒护list ArrayList<LiftCommand> liftCommands = new ArrayList<>(); @@ -994,8 +1113,7 @@ liftAssignCommand.setTaskNo(liftProtocol.getTaskNo()); //涓嬪彂浠诲姟 MessageQueue.offer(SlaveType.Lift, liftProtocol.getLiftNo().intValue(), new Task(3, liftAssignCommand)); - - return false; + return true; } /** -- Gitblit v1.9.1