From 69a038efa3f87afa1eaf465cfb05d7d226fc206e Mon Sep 17 00:00:00 2001 From: zjj <3272660260@qq.com> Date: 星期三, 22 十一月 2023 19:21:58 +0800 Subject: [PATCH] #堆垛机出入库 --- src/main/java/com/zy/core/thread/SiemensCrnThread.java | 157 +++++++++++++++++-------------- src/main/java/com/zy/core/enums/CrnStatusType.java | 18 ++- src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 17 +- src/main/java/com/zy/asrs/controller/CrnController.java | 38 +++++++ src/main/webapp/views/deviceOperate/crnOperate.html | 12 ++ 5 files changed, 154 insertions(+), 88 deletions(-) diff --git a/src/main/java/com/zy/asrs/controller/CrnController.java b/src/main/java/com/zy/asrs/controller/CrnController.java index 3690e3c..d6d2be9 100644 --- a/src/main/java/com/zy/asrs/controller/CrnController.java +++ b/src/main/java/com/zy/asrs/controller/CrnController.java @@ -598,6 +598,44 @@ return crnControl2(command)?R.ok():R.error(); } + @ManagerAuth(memo = "鍒囨崲鍗婃墜鍔ㄦā寮�") + @PostMapping("/crn/operator/semiAutomatic") + public R crnsemiAutomatic(CrnOperatorParam param){ + short[] array = new short[9]; + CrnCommand command = new CrnCommand(); + command.setCrnNo(param.getCrnNo()); // 鍫嗗灈鏈虹紪鍙� + command.setTaskNo((short) 0); // 宸ヤ綔鍙� +// command.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣� +// command.setTaskMode(CrnTaskModeType.PAKIN); // 浠诲姟妯″紡 +// command.setSourcePosX(param.getSourceRow()); // 婧愬簱浣嶆帓 +// command.setSourcePosY(param.getSourceBay()); // 婧愬簱浣嶅垪 +// command.setSourcePosZ(param.getSourceLev()); // 婧愬簱浣嶅眰 +// command.setDestinationPosX(param.getRow()); // 鐩爣搴撲綅鎺� +// command.setDestinationPosY(param.getBay()); // 鐩爣搴撲綅鍒� +// command.setDestinationPosZ(param.getLev()); // 鐩爣搴撲綅灞� + command.setAuto((short)2); + + return crnControl2(command)?R.ok():R.error(); + } + @ManagerAuth(memo = "鍒囨崲鎵嬪姩妯″紡") + @PostMapping("/crn/operator/hand") + public R crnHand(CrnOperatorParam param){ + short[] array = new short[9]; + CrnCommand command = new CrnCommand(); + command.setCrnNo(param.getCrnNo()); // 鍫嗗灈鏈虹紪鍙� + command.setTaskNo((short) 0); // 宸ヤ綔鍙� +// command.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣� +// command.setTaskMode(CrnTaskModeType.PAKIN); // 浠诲姟妯″紡 +// command.setSourcePosX(param.getSourceRow()); // 婧愬簱浣嶆帓 +// command.setSourcePosY(param.getSourceBay()); // 婧愬簱浣嶅垪 +// command.setSourcePosZ(param.getSourceLev()); // 婧愬簱浣嶅眰 +// command.setDestinationPosX(param.getRow()); // 鐩爣搴撲綅鎺� +// command.setDestinationPosY(param.getBay()); // 鐩爣搴撲綅鍒� +// command.setDestinationPosZ(param.getLev()); // 鐩爣搴撲綅灞� + command.setAuto((short)3); + + return crnControl2(command)?R.ok():R.error(); + } private boolean crnControl2(CrnCommand command){ if (command.getCrnNo() == null) { throw new CoolException("璇烽�夋嫨鍫嗗灈鏈�"); 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 1905621..a32a627 100644 --- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java @@ -343,12 +343,13 @@ crnCommand.setTaskNo(taskWrk.getWrkNo().shortValue()); // 宸ヤ綔鍙� crnCommand.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣� crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡: 搴撲綅绉昏浆 - crnCommand.setSourcePosX(Utils.getRowShort(taskWrk.getStartPoint())); // 婧愬簱浣嶆帓 - crnCommand.setSourcePosY(Utils.getBayShort(taskWrk.getStartPoint())); // 婧愬簱浣嶅垪 - crnCommand.setSourcePosZ(Utils.getLevShort(taskWrk.getStartPoint())); // 婧愬簱浣嶅眰 - crnCommand.setDestinationPosX(crnStn.getRow().shortValue()); // 鐩爣搴撲綅鎺� - crnCommand.setDestinationPosY(crnStn.getBay().shortValue()); // 鐩爣搴撲綅鍒� - crnCommand.setDestinationPosZ(crnStn.getLev().shortValue()); // 鐩爣搴撲綅灞� + crnCommand.setSourcePosX(Utils.getBayShort(taskWrk.getStartPoint())); // 婧愬簱浣嶆帓 + crnCommand.setSourcePosY(Utils.getLevShort(taskWrk.getStartPoint())); // 婧愬簱浣嶅垪 + crnCommand.setSourcePosZ(Utils.getRowShort(taskWrk.getStartPoint())); // 婧愬簱浣嶅眰 + crnCommand.setDestinationPosX(crnStn.getBay().shortValue()); // 鐩爣搴撲綅鎺� + crnCommand.setDestinationPosY(crnStn.getLev().shortValue()); // 鐩爣搴撲綅鍒� + crnCommand.setDestinationPosZ(crnStn.getRow().shortValue()); // 鐩爣搴撲綅灞� + crnCommand.setCommand((short)1); if (!CommandUtils.offer(SlaveType.Crn, taskWrk.getCrnNo(), new Task(2, crnCommand))) { log.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", taskWrk.getCrnNo(), JSON.toJSON(crnCommand)); } else { @@ -438,7 +439,7 @@ CrnProtocol crnProtocol = crnThread.getCrnProtocol(); if (crnProtocol == null) { continue; } // 鐘舵�侊細绛夊緟纭 骞朵笖 浠诲姟瀹屾垚浣� = 1 - if (crnProtocol.getTaskFinish() == 1 && crnProtocol.getTaskNo() != 0) { + if (crnProtocol.getTaskFinish() == 0 && crnProtocol.statusType == CrnStatusType.HANDLING_COMPLETED && crnProtocol.getTaskNo() != 0) { // 鑾峰彇鍏ュ簱寰呯‘璁ゅ伐浣滄。 TaskWrk taskWrk = taskWrkMapper.selectCrnNoWorking(crn.getId(),crnProtocol.getTaskNo().intValue()); if (taskWrk == null) { @@ -446,7 +447,7 @@ continue; } // 鍏ュ簱 + 搴撲綅杞Щ ==> 4.鍏ュ簱瀹屾垚 - if (taskWrk.getWrkSts() == 3 || (taskWrk.getWrkSts() == 12 && taskWrk.getIoType() == 3)) { + if (taskWrk.getWrkSts() == 3 || (taskWrk.getWrkSts() == 12 && taskWrk.getIoType() == 2)) { taskWrk.setWrkSts(4); } else { continue; diff --git a/src/main/java/com/zy/core/enums/CrnStatusType.java b/src/main/java/com/zy/core/enums/CrnStatusType.java index ccb723e..d3f7f94 100644 --- a/src/main/java/com/zy/core/enums/CrnStatusType.java +++ b/src/main/java/com/zy/core/enums/CrnStatusType.java @@ -19,14 +19,16 @@ // ; IDLE(0, "绌洪棽锛屾棤浠诲姟"), - NONE_MOVING(1, "鏃犺揣琛岃蛋"), - FETCHING(2, "妫�鏌ヤ换鍔℃暟鎹�"), - MOVING(3, "瀹氫綅鍒板彇璐т綅"), - //PUTTING(4, "鏀捐揣"), - PUT_COMPLETE(7, "鍙栬揣瀹屾垚"), - MOVE_THE_SHIPPING_LOCATION(8, "绉诲姩鍒版斁璐т綅缃�"), - PUTTING(9, "鏀捐揣涓�"), - HANDLING_COMPLETED(10, "鎼繍瀹屾垚"), + NONE_MOVING(1, "鍙栬揣瀹氫綅"), + FETCHING(2, "鍙栬揣涓�"), + MOVING(3, "鍙栬揣瀹屾垚锛屾斁璐у畾浣嶄腑"), + PUTTING(4, "鏀捐揣涓�"), + HOMING(5, "鍥炲師鐐�"), + ANTI_ORIGIN(6, "鍙嶅師鐐�"), + PUT_COMPLETE(7, "搴撲綅绉昏浇"), +// MOVE_THE_SHIPPING_LOCATION(8, "绉诲姩鍒版斁璐т綅缃�"), +// PUTTING(9, "鏀捐揣涓�"), + HANDLING_COMPLETED(10, "鎼繍瀹屾垚绛夊緟WCS纭"), EMPTY_AVOIDANCE(11, "绌鸿浇閬胯"), SOS(99, "鎶ヨ"), OTHER(100, "鍏朵粬"), diff --git a/src/main/java/com/zy/core/thread/SiemensCrnThread.java b/src/main/java/com/zy/core/thread/SiemensCrnThread.java index 52bf8d0..e63f0ce 100644 --- a/src/main/java/com/zy/core/thread/SiemensCrnThread.java +++ b/src/main/java/com/zy/core/thread/SiemensCrnThread.java @@ -274,80 +274,80 @@ if (err15[5]) { crnProtocol.setAlarm4(72); } if (err15[6]) { crnProtocol.setAlarm4(73); } - boolean[] bool1 = siemensNet.getByteTransform().TransBool(result.Content, 60, 1); // 62 - crnProtocol.setConnStatus(bool1[0]); - crnProtocol.setCorrection(bool1[3]); - crnProtocol.setTuError(bool1[4]); - crnProtocol.setNoneError(bool1[5]); - crnProtocol.setStockError(bool1[6]); - crnProtocol.setJobInvalid(bool1[7]); - boolean[] bool2 = siemensNet.getByteTransform().TransBool(result.Content, 61, 1); // 63 - crnProtocol.setIdle(bool2[0]); - crnProtocol.setControl(bool2[1]); - crnProtocol.setStopQuasi(bool2[2]); - crnProtocol.setRunning(bool2[3]); - crnProtocol.setFault(bool2[4]); - crnProtocol.setForkHome(bool2[5]); - crnProtocol.setForkSingleLeft(bool2[6]); - crnProtocol.setForkSingleRight(bool2[7]); - boolean[] bool3 = siemensNet.getByteTransform().TransBool(result.Content, 62, 1); // 64 - crnProtocol.setForkDoubleLeft(bool3[0]); - crnProtocol.setForkDoubleRight(bool3[1]); - crnProtocol.setSingleHigh(bool3[2]); - crnProtocol.setSingleLow(bool3[3]); - crnProtocol.setDoubleHigh(bool3[4]); - crnProtocol.setDoubleLow(bool3[5]); - crnProtocol.setPlatformHigh(bool3[6]); - crnProtocol.setPlatformLow(bool3[7]); - boolean[] bool4 = siemensNet.getByteTransform().TransBool(result.Content, 64, 1); // 66 - crnProtocol.setLoaded((short) (bool4[4]?1:0)); // 鏈夌墿 +// boolean[] bool1 = siemensNet.getByteTransform().TransBool(result.Content, 60, 1); // 62 +// crnProtocol.setConnStatus(bool1[0]); +// crnProtocol.setCorrection(bool1[3]); +// crnProtocol.setTuError(bool1[4]); +// crnProtocol.setNoneError(bool1[5]); +// crnProtocol.setStockError(bool1[6]); +// crnProtocol.setJobInvalid(bool1[7]); +// boolean[] bool2 = siemensNet.getByteTransform().TransBool(result.Content, 61, 1); // 63 +// crnProtocol.setIdle(bool2[0]); +// crnProtocol.setControl(bool2[1]); +// crnProtocol.setStopQuasi(bool2[2]); +// crnProtocol.setRunning(bool2[3]); +// crnProtocol.setFault(bool2[4]); +// crnProtocol.setForkHome(bool2[5]); +// crnProtocol.setForkSingleLeft(bool2[6]); +// crnProtocol.setForkSingleRight(bool2[7]); +// boolean[] bool3 = siemensNet.getByteTransform().TransBool(result.Content, 62, 1); // 64 +// crnProtocol.setForkDoubleLeft(bool3[0]); +// crnProtocol.setForkDoubleRight(bool3[1]); +// crnProtocol.setSingleHigh(bool3[2]); +// crnProtocol.setSingleLow(bool3[3]); +// crnProtocol.setDoubleHigh(bool3[4]); +// crnProtocol.setDoubleLow(bool3[5]); +// crnProtocol.setPlatformHigh(bool3[6]); +// crnProtocol.setPlatformLow(bool3[7]); +// boolean[] bool4 = siemensNet.getByteTransform().TransBool(result.Content, 64, 1); // 66 +// crnProtocol.setLoaded((short) (bool4[4]?1:0)); // 鏈夌墿 // 閫熷害 - crnProtocol.setXSpeed((float) siemensNet.getByteTransform().TransInt16(result.Content, 22)); // 24 - crnProtocol.setYSpeed((float) siemensNet.getByteTransform().TransInt16(result.Content, 24)); // 26 - crnProtocol.setZSpeed((float) siemensNet.getByteTransform().TransInt16(result.Content, 26)); // 28 - // 绱閲岀▼銆佹椂闀� - crnProtocol.setXDistance((float) siemensNet.getByteTransform().TransInt32(result.Content, 88)); // 90 - crnProtocol.setYDistance((float) siemensNet.getByteTransform().TransInt32(result.Content, 92)); // 94 - crnProtocol.setXDuration((float) siemensNet.getByteTransform().TransInt32(result.Content, 96)); // 98 - crnProtocol.setYDuration((float) siemensNet.getByteTransform().TransInt32(result.Content, 100)); // 102 +// crnProtocol.setXSpeed((float) siemensNet.getByteTransform().TransInt16(result.Content, 22)); // 24 +// crnProtocol.setYSpeed((float) siemensNet.getByteTransform().TransInt16(result.Content, 24)); // 26 +// crnProtocol.setZSpeed((float) siemensNet.getByteTransform().TransInt16(result.Content, 26)); // 28 +// // 绱閲岀▼銆佹椂闀� +// crnProtocol.setXDistance((float) siemensNet.getByteTransform().TransInt32(result.Content, 88)); // 90 +// crnProtocol.setYDistance((float) siemensNet.getByteTransform().TransInt32(result.Content, 92)); // 94 +// crnProtocol.setXDuration((float) siemensNet.getByteTransform().TransInt32(result.Content, 96)); // 98 +// crnProtocol.setYDuration((float) siemensNet.getByteTransform().TransInt32(result.Content, 100)); // 102 - // 澧炲己 - if (crnProtocol.getForkHome()) { - crnProtocol.setForkPos(CrnForkPosType.HOME); - } - if (crnProtocol.getForkSingleLeft()) { - crnProtocol.setForkPos(CrnForkPosType.LEFT); - } - if (crnProtocol.getForkSingleRight()) { - crnProtocol.setForkPos(CrnForkPosType.RIGHT); - } - if (crnProtocol.getForkDoubleLeft()) { - crnProtocol.setForkPos(CrnForkPosType._LEFT); - } - if (crnProtocol.getForkDoubleRight()) { - crnProtocol.setForkPos(CrnForkPosType._RIGHT); - } - if (crnProtocol.getSingleHigh()) { - crnProtocol.setLiftPos(CrnLiftPosType.UP); - } - if (crnProtocol.getSingleLow()) { - crnProtocol.setLiftPos(CrnLiftPosType.DOWN); - } - if (crnProtocol.getDoubleHigh()) { - crnProtocol.setLiftPos(CrnLiftPosType._UP); - } - if (crnProtocol.getDoubleLow()) { - crnProtocol.setLiftPos(CrnLiftPosType._DOWN); - } - if (crnProtocol.getIdle()) { - crnProtocol.setStatus(CrnStatusType.IDLE); - } +// // 澧炲己 +// if (crnProtocol.getForkHome()) { +// crnProtocol.setForkPos(CrnForkPosType.HOME); +// } +// if (crnProtocol.getForkSingleLeft()) { +// crnProtocol.setForkPos(CrnForkPosType.LEFT); +// } +// if (crnProtocol.getForkSingleRight()) { +// crnProtocol.setForkPos(CrnForkPosType.RIGHT); +// } +// if (crnProtocol.getForkDoubleLeft()) { +// crnProtocol.setForkPos(CrnForkPosType._LEFT); +// } +// if (crnProtocol.getForkDoubleRight()) { +// crnProtocol.setForkPos(CrnForkPosType._RIGHT); +// } +// if (crnProtocol.getSingleHigh()) { +// crnProtocol.setLiftPos(CrnLiftPosType.UP); +// } +// if (crnProtocol.getSingleLow()) { +// crnProtocol.setLiftPos(CrnLiftPosType.DOWN); +// } +// if (crnProtocol.getDoubleHigh()) { +// crnProtocol.setLiftPos(CrnLiftPosType._UP); +// } +// if (crnProtocol.getDoubleLow()) { +// crnProtocol.setLiftPos(CrnLiftPosType._DOWN); +// } +// if (crnProtocol.getIdle()) { +// crnProtocol.setStatus(CrnStatusType.IDLE); +// } OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId())); // 澶嶄綅淇″彿 - if (crnProtocol.getTaskFinish() == 1) { + if (crnProtocol.getTaskFinish() == 0) { if (resetFlag) { CrnCommand crnCommand = new CrnCommand(); crnCommand.setAckFinish((short)1); @@ -448,7 +448,7 @@ // } // 鏃ュ織璁板綍 - try { +// try { if (command.getAckFinish() != 1) { BasCrnOptService bean = SpringUtils.getBean(BasCrnOptService.class); BasCrnOpt basCrnOpt = new BasCrnOpt( @@ -470,14 +470,29 @@ ); bean.insert(basCrnOpt); } - } catch (Exception ignore) {} +// } catch (Exception ignore) {} //鏇存柊鍛戒护鏃ュ織 CommandInfoLogService commandInfoLogService = SpringUtils.getBean(CommandInfoLogService.class); CommandInfoService commandInfoService = SpringUtils.getBean(CommandInfoService.class); CommandInfo commandInfo = commandInfoService.selectById(command.getCommandId()); - CommandInfoLog commandInfoLog = JSON.parseObject(JSON.toJSONString(commandInfo), CommandInfoLog.class); - commandInfoLog.setId(null); + CommandInfoLog commandInfoLog = new CommandInfoLog(); + if (commandInfo != null) { + commandInfoLog = JSON.parseObject(JSON.toJSONString(commandInfo), CommandInfoLog.class); + commandInfoLog.setId(null); + }else { + Date now = new Date(); + commandInfoLog.setCommand(JSON.toJSONString(command)); + commandInfoLog.setCommandStatus(3); + commandInfoLog.setStartTime(now); + commandInfoLog.setExecuteTime(now); + commandInfoLog.setCompleteTime(now); + commandInfoLog.setDevice(SlaveType.Devp.toString()); + commandInfoLog.setWrkNo(9999); + commandInfoLog.setTaskNo("9999"); + commandInfoLog.setCommandDesc("鎵嬪姩鍛戒护"); + } + if (result.IsSuccess) { log.warn("鍫嗗灈鏈哄懡浠や笅鍙慬id:{},鏃堕棿锛歿}] >>>>> {}", slave.getId(), DateUtils.convert(new Date(), DateUtils.yyyyMMddHHmmsssss_F), JSON.toJSON(command)); diff --git a/src/main/webapp/views/deviceOperate/crnOperate.html b/src/main/webapp/views/deviceOperate/crnOperate.html index 07a6de0..432afb9 100644 --- a/src/main/webapp/views/deviceOperate/crnOperate.html +++ b/src/main/webapp/views/deviceOperate/crnOperate.html @@ -80,7 +80,17 @@ <el-button @click="requestOperate('taskComplete')" type="primary">浠诲姟瀹屾垚</el-button> <el-button @click="requestOperate('clearCommand')" type="primary">娓呴櫎鍛戒护</el-button> <el-button @click="requestOperate('handleReset')" type="primary">澶嶄綅</el-button> - <el-button @click="requestOperate('auto')" type="primary">鑱旀満</el-button> + <br/> + <br/> + <el-button @click="requestOperate('auto')" type="warning">鑱旀満</el-button> + <el-button @click="requestOperate('semiAutomatic')" type="warning">鍗婅嚜鍔�</el-button> + <el-button @click="requestOperate('hand')" type="warning">鎵嬪姩</el-button> + <el-button @click="requestOperate('restoreOnlineWrk')" type="warning">鎭㈠鑱旀満浠诲姟</el-button> + <el-button @click="requestOperate('cancelOnlineWrk')" type="warning">鍙栨秷鑱旀満浠诲姟</el-button> + <el-button @click="requestOperate('finishWrk')" type="warning">鐢宠瀹屾垚浠诲姟</el-button> + <br/> + <br/> + <el-button @click="requestOperate('cancelWrk')" type="warning">鐢宠鍙栨秷浠诲姟</el-button> </div> </div> </el-card> -- Gitblit v1.9.1