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