From b7eca0757905d152b031a053116fb8c077314517 Mon Sep 17 00:00:00 2001
From: Junjie <xjj@123>
Date: 星期五, 29 三月 2024 16:31:18 +0800
Subject: [PATCH] #
---
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/model/enums/ShuttleCommandModeType.java | 7
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/SurayShuttleThread.java | 85 +++++++++++
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/model/protocol/LiftProtocol.java | 5
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/command/LiftCommandService.java | 35 +---
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/action/LiftAction.java | 7
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/action/ShuttleAction.java | 13 -
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/utils/ShuttleDispatcher.java | 2
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/SurayLiftThread.java | 39 +++++
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/command/ShuttleCommandService.java | 172 ++++++++++++-----------
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/model/protocol/ShuttleProtocol.java | 24 --
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/ShuttleThread.java | 9 +
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/LiftThread.java | 2
12 files changed, 252 insertions(+), 148 deletions(-)
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/action/LiftAction.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/action/LiftAction.java
index 53e0ad3..b5aed07 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/action/LiftAction.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/action/LiftAction.java
@@ -68,11 +68,8 @@
return false;
}
- //鎻愬崌鏈哄浜庤嚜鍔ㄣ�佸氨缁�佺┖闂�
- if (!(liftProtocol.getModel()
- && liftProtocol.getReady()
- && !liftProtocol.getRun())
- ) {
+ //鍒ゆ柇鎻愬崌鏈烘槸鍚︾┖闂�
+ if (!liftThread.isIdle()) {
return false;
}
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/action/ShuttleAction.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/action/ShuttleAction.java
index 4a15a5d..0314e53 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/action/ShuttleAction.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/action/ShuttleAction.java
@@ -85,10 +85,8 @@
return false;
}
- //鍥涘悜绌挎杞︾┖闂层�佹湁浠诲姟銆佹爣璁颁负true銆佸瓨鍦ㄤ换鍔℃寚浠わ紝闇�瑕佹墽琛屼换鍔$殑涓嬩竴鏉℃寚浠�
- if (!shuttleProtocol.getIdle()
- || shuttleProtocol.getTaskNo() == 0
- || !shuttleProtocol.getPakMk()) {
+ //鍒ゆ柇璁惧鏄惁绌洪棽
+ if (!shuttleThread.isIdle()) {
return false;
}
@@ -136,8 +134,8 @@
if (!shuttleProtocol.getHasLift()) {
command.setComplete(true);
}
- } else if (command.getMode() == ShuttleCommandModeType.CHARGE.id) {
- // 鍏呯數寮�鍏�
+ } else if (command.getMode() == ShuttleCommandModeType.CHARGE_OPEN.id) {
+ // 鍏呯數寮�
//鍒ゆ柇灏忚溅鍏呯數鐘舵��
if (shuttleProtocol.getHasCharge()) {
command.setComplete(true);
@@ -211,7 +209,8 @@
} else if (command.getMode() == ShuttleCommandModeType.PALLET_LIFT.id
|| command.getMode() == ShuttleCommandModeType.PALLET_DOWN.id) {//椤跺崌
result = shuttleThread.lift(command);
- } else if (command.getMode() == ShuttleCommandModeType.CHARGE.id) {//鍏呯數
+ } else if (command.getMode() == ShuttleCommandModeType.CHARGE_OPEN.id
+ || command.getMode() == ShuttleCommandModeType.CHARGE_CLOSE.id) {//鍏呯數
result = shuttleThread.charge(command);
} else if (command.getMode() == ShuttleCommandModeType.RESET.id) {//澶嶄綅
result = shuttleThread.reset(command);
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/command/LiftCommandService.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/command/LiftCommandService.java
index 4075c60..3f67aa7 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/command/LiftCommandService.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/command/LiftCommandService.java
@@ -48,11 +48,8 @@
return false;
}
- //鑷姩銆佸氨缁�佺┖闂�
- if (!(liftProtocol.getModel()
- && liftProtocol.getReady()
- && !liftProtocol.getRun())
- ) {
+ //鍒ゆ柇鎻愬崌鏈烘槸鍚﹁嚜鍔�
+ if (!liftThread.isIdle()) {
return false;
}
@@ -218,11 +215,8 @@
switch (Objects.requireNonNull(MotionCtgType.get(motion.getMotionCtgEl()))){
case LIFT_MOVE:
- // 鍒ゆ柇鎻愬崌鏈烘槸鍚﹁嚜鍔ㄣ�佺┖闂层�佸噯澶囧氨缁�侀摼鏉℃病鏈夎浆鍔ㄣ�佹病鏈夋湭灏辩华鎶ラ敊
- if (!liftProtocol.getModel()
- || liftProtocol.getRun()
- || !liftProtocol.getReady()
- ) {
+ // 鍒ゆ柇鎻愬崌鏈烘槸鍚︾┖闂�
+ if (!liftThread.isIdle()) {
return false;
}
@@ -231,11 +225,8 @@
}
break;
case LIFT_WITH_GOODS:
- // 鍒ゆ柇鎻愬崌鏈烘槸鍚﹁嚜鍔ㄣ�佺┖闂层�佸噯澶囧氨缁�侀摼鏉℃病鏈夎浆鍔ㄣ�佹病鏈夋湭灏辩华鎶ラ敊
- if (!liftProtocol.getModel()
- || liftProtocol.getRun()
- || !liftProtocol.getReady()
- ) {
+ // 鍒ゆ柇鎻愬崌鏈烘槸鍚︾┖闂�
+ if (!liftThread.isIdle()) {
return false;
}
@@ -249,11 +240,8 @@
break;
case LIFT_WITH_SHUTTLE:
- // 鍒ゆ柇鎻愬崌鏈烘槸鍚﹁嚜鍔ㄣ�佺┖闂层�佸噯澶囧氨缁�侀摼鏉℃病鏈夎浆鍔ㄣ�佹病鏈夋湭灏辩华鎶ラ敊
- if (!liftProtocol.getModel()
- || liftProtocol.getRun()
- || !liftProtocol.getReady()
- ) {
+ // 鍒ゆ柇鎻愬崌鏈烘槸鍚︾┖闂�
+ if (!liftThread.isIdle()) {
return false;
}
@@ -267,11 +255,8 @@
}
break;
case LIFT_WITH_GOODS_AND_SHUTTLE:
- // 鍒ゆ柇鎻愬崌鏈烘槸鍚﹁嚜鍔ㄣ�佺┖闂层�佸噯澶囧氨缁�侀摼鏉℃病鏈夎浆鍔ㄣ�佹病鏈夋湭灏辩华鎶ラ敊
- if (!liftProtocol.getModel()
- || liftProtocol.getRun()
- || !liftProtocol.getReady()
- ) {
+ // 鍒ゆ柇鎻愬崌鏈烘槸鍚︾┖闂�
+ if (!liftThread.isIdle()) {
return false;
}
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/command/ShuttleCommandService.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/command/ShuttleCommandService.java
index 13407ef..fc451d3 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/command/ShuttleCommandService.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/command/ShuttleCommandService.java
@@ -3,6 +3,7 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.zy.asrs.framework.common.Cools;
import com.zy.asrs.framework.exception.CoolException;
+import com.zy.asrs.wcs.core.action.LiftAction;
import com.zy.asrs.wcs.core.action.ShuttleAction;
import com.zy.asrs.wcs.core.entity.Loc;
import com.zy.asrs.wcs.core.model.NavigateNode;
@@ -18,8 +19,10 @@
import com.zy.asrs.wcs.core.entity.Motion;
import com.zy.asrs.wcs.rcs.model.enums.ShuttleProtocolStatusType;
import com.zy.asrs.wcs.rcs.model.enums.SlaveType;
+import com.zy.asrs.wcs.rcs.model.protocol.LiftProtocol;
import com.zy.asrs.wcs.rcs.model.protocol.ShuttleProtocol;
import com.zy.asrs.wcs.core.service.MotionService;
+import com.zy.asrs.wcs.rcs.thread.LiftThread;
import com.zy.asrs.wcs.rcs.thread.ShuttleThread;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
@@ -53,6 +56,8 @@
private NavigateMapUtils navigateMapUtils;
@Autowired
private ShuttleAction shuttleAction;
+ @Autowired
+ private LiftAction liftAction;
// 璁$畻
public Boolean accept(Motion motion) {
@@ -84,8 +89,8 @@
List<ShuttleCommand> shuttleCommands = new ArrayList<>();
ShuttleTaskModeType shuttleTaskModeType = null;
-// SiemensLiftThread liftThread = null;
-// LiftProtocol liftProtocol = null;
+ LiftThread liftThread = null;
+ LiftProtocol liftProtocol = null;
//鍒ゆ柇灏忚溅鐘舵��
if (shuttleProtocol.getIdle()
@@ -106,38 +111,80 @@
shuttleCommands = this.shuttleAssignCommand(motion.getOrigin(), motion.getTarget(), NavigationMapType.NORMAL.id, assignCommand, shuttleThread);
shuttleTaskModeType = ShuttleTaskModeType.SHUTTLE_MOVE_LOC_NO;
break;
-// case SHUTTLE_MOVE_LIFT_PALLET://绌挎杞﹂《鍗囧苟绉诲姩
-// shuttleCommands = this.shuttleAssignCommand(motion.getOrigin(), motion.getTarget(), NavigationMapType.DFX.id, assignCommand, shuttleThread);
-// shuttleTaskModeType = ShuttleTaskModeType.PAK_IN;
-// shuttleCommands.add(0, shuttleThread.getPalletCommand((short) 1));
-// break;
-// case SHUTTLE_MOVE_DOWN_PALLET://绌挎杞︾Щ鍔ㄥ苟鎵樼洏涓嬮檷
-// shuttleCommands = this.shuttleAssignCommand(motion.getOrigin(), motion.getTarget(), NavigationMapType.DFX.id, assignCommand, shuttleThread);
-// shuttleTaskModeType = ShuttleTaskModeType.PAK_IN;
-// shuttleCommands.add(shuttleCommands.size(), shuttleThread.getPalletCommand((short) 2));
-// break;
-// case SHUTTLE_MOVE_FROM_LIFT://鍑烘彁鍗囨満
-// // 鍒ゆ柇鎻愬崌鏈虹姸鎬�
-// liftThread = (SiemensLiftThread) SlaveConnection.get(SlaveType.Lift, Integer.parseInt(motion.getTemp()));
-// if (liftThread == null) {
-// return false;
-// }
-// liftProtocol = liftThread.getLiftProtocol();
-// // 鍒ゆ柇鎻愬崌鏈烘槸鍚﹁嚜鍔ㄣ�佺┖闂层�佸噯澶囧氨缁�侀摼鏉℃病鏈夎浆鍔ㄣ�佹病鏈夋湭灏辩华鎶ラ敊
-// if (!liftProtocol.getMode()
-// || liftProtocol.getRunning()
-// || !liftProtocol.getReady()
-// || liftProtocol.getForwardRotationFeedback()
-// || liftProtocol.getReverseFeedback()
-// || liftProtocol.getNotReady().intValue() != 0
-// ) {
-// return false;
-// }
+ case SHUTTLE_MOVE_LIFT_PALLET://绌挎杞﹂《鍗囧苟绉诲姩
+ shuttleCommands = this.shuttleAssignCommand(motion.getOrigin(), motion.getTarget(), NavigationMapType.DFX.id, assignCommand, shuttleThread);
+ shuttleTaskModeType = ShuttleTaskModeType.PAK_IN;
+ shuttleCommands.add(0, shuttleThread.getLiftCommand(motion.getWrkNo(), true));
+ break;
+ case SHUTTLE_MOVE_DOWN_PALLET://绌挎杞︾Щ鍔ㄥ苟鎵樼洏涓嬮檷
+ shuttleCommands = this.shuttleAssignCommand(motion.getOrigin(), motion.getTarget(), NavigationMapType.DFX.id, assignCommand, shuttleThread);
+ shuttleTaskModeType = ShuttleTaskModeType.PAK_IN;
+ shuttleCommands.add(shuttleCommands.size(), shuttleThread.getLiftCommand(motion.getWrkNo(), false));
+ break;
+ case SHUTTLE_MOVE_FROM_LIFT://鍑烘彁鍗囨満
+ // 鍒ゆ柇鎻愬崌鏈虹姸鎬�
+ liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, Integer.parseInt(motion.getTemp()));
+ if (liftThread == null) {
+ return false;
+ }
+
+ liftProtocol = liftThread.getStatus();
+ if (liftProtocol == null) {
+ return false;
+ }
+
+ // 鍒ゆ柇鎻愬崌鏈烘槸鍚︾┖闂�
+ if (!liftThread.isIdle()) {
+ return false;
+ }
+
+ if (liftProtocol.getLev() != Utils.getLev(motion.getTarget())) {//鍒ゆ柇鎻愬崌鏈烘槸鍚﹁揪鍒扮洰鏍囧眰
+ return false;
+ }
+
+// //鍒ゆ柇鎻愬崌鏈烘槸鍚﹁閿佸畾
+// if (!liftProtocol.getLock()) {
+// //閿佸畾鎻愬崌鏈�
+// LiftCommand lockCommand = liftThread.getLockCommand(motion.getWrkNo(), true);//鑾峰彇鎻愬崌鏈洪攣瀹氬懡浠�
//
-// if (liftProtocol.getLev().intValue() != Utils.getLev(motion.getTarget())) {//鍒ゆ柇鎻愬崌鏈烘槸鍚﹁揪鍒扮洰鏍囧眰
-// return false;
-// }
+// LiftAssignCommand liftAssignCommand = new LiftAssignCommand();
+// liftAssignCommand.setLiftNo(liftThread.getStatus().getLiftNo());
+// liftAssignCommand.setTaskNo(motion.getWrkNo());
+// ArrayList<LiftCommand> list = new ArrayList<>();
+// list.add(lockCommand);
+// liftAssignCommand.setCommands(list);
//
+// liftAction.assignWork(liftThread.getDevice(), liftAssignCommand);
+// return false;//绛夊緟涓嬩竴娆¤疆璇�
+// }
+
+ //鍒ゆ柇鎻愬崌鏈哄伐浣滃彿鏄惁鍜屽綋鍓嶄换鍔$浉鍚�
+ if (liftProtocol.getTaskNo().intValue() != motion.getWrkNo()) {
+ return false;
+ }
+
+ shuttleCommands = this.shuttleAssignCommand(motion.getOrigin(), motion.getTarget(), NavigationMapType.NORMAL.id, assignCommand, shuttleThread);
+ shuttleTaskModeType = ShuttleTaskModeType.SHUTTLE_MOVE_LOC_NO;
+ break;
+ case SHUTTLE_MOVE_TO_LIFT://杩涙彁鍗囨満
+ // 鍒ゆ柇鎻愬崌鏈虹姸鎬�
+ liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, Integer.parseInt(motion.getTemp()));
+ if (liftThread == null) {
+ return false;
+ }
+ liftProtocol = liftThread.getStatus();
+ if (liftProtocol == null) {
+ return false;
+ }
+ // 鍒ゆ柇鎻愬崌鏈烘槸鍚︾┖闂�
+ if (!liftThread.isIdle()) {
+ return false;
+ }
+
+ if (liftProtocol.getLev() != Utils.getLev(motion.getTarget())) {//鍒ゆ柇鎻愬崌鏈烘槸鍚﹁揪鍒扮洰鏍囧眰
+ return false;
+ }
+
// //鍒ゆ柇鎻愬崌鏈烘槸鍚﹁閿佸畾
// if (!liftProtocol.getLiftLock()) {
// //閿佸畾鎻愬崌鏈�
@@ -147,55 +194,15 @@
// liftThread.assignWork(lockCommand);
// return false;//绛夊緟涓嬩竴娆¤疆璇�
// }
-//
-// //鍒ゆ柇鎻愬崌鏈哄伐浣滃彿鏄惁鍜屽綋鍓嶄换鍔$浉鍚�
-// if (liftProtocol.getTaskNo().intValue() != motion.getWrkNo()) {
-// return false;
-// }
-//
-// shuttleCommands = this.shuttleAssignCommand(motion.getOrigin(), motion.getTarget(), NavigationMapType.NORMAL.id, assignCommand, shuttleThread);
-// shuttleTaskModeType = ShuttleTaskModeType.SHUTTLE_MOVE_LOC_NO;
-// break;
-// case SHUTTLE_MOVE_TO_LIFT://杩涙彁鍗囨満
-// // 鍒ゆ柇鎻愬崌鏈虹姸鎬�
-// liftThread = (SiemensLiftThread) SlaveConnection.get(SlaveType.Lift, Integer.parseInt(motion.getTemp()));
-// if (liftThread == null) {
-// return false;
-// }
-// liftProtocol = liftThread.getLiftProtocol();
-// // 鍒ゆ柇鎻愬崌鏈烘槸鍚﹁嚜鍔ㄣ�佺┖闂层�佸噯澶囧氨缁�侀摼鏉℃病鏈夎浆鍔ㄣ�佹病鏈夋湭灏辩华鎶ラ敊
-// if (!liftProtocol.getMode()
-// || liftProtocol.getRunning()
-// || !liftProtocol.getReady()
-// || liftProtocol.getForwardRotationFeedback()
-// || liftProtocol.getReverseFeedback()
-// || liftProtocol.getNotReady().intValue() != 0
-// ) {
-// return false;
-// }
-//
-// if (liftProtocol.getLev().intValue() != Utils.getLev(motion.getTarget())) {//鍒ゆ柇鎻愬崌鏈烘槸鍚﹁揪鍒扮洰鏍囧眰
-// return false;
-// }
-//
-// //鍒ゆ柇鎻愬崌鏈烘槸鍚﹁閿佸畾
-// if (!liftProtocol.getLiftLock()) {
-// //閿佸畾鎻愬崌鏈�
-// LiftCommand lockCommand = liftThread.getLockCommand(true);//鑾峰彇鎻愬崌鏈洪攣瀹氬懡浠�
-// lockCommand.setLiftNo(liftProtocol.getLiftNo());
-// lockCommand.setTaskNo(motion.getWrkNo().shortValue());//鑾峰彇浠诲姟鍙�
-// liftThread.assignWork(lockCommand);
-// return false;//绛夊緟涓嬩竴娆¤疆璇�
-// }
-//
-// //鍒ゆ柇鎻愬崌鏈哄伐浣滃彿鏄惁鍜屽綋鍓嶄换鍔$浉鍚�
-// if (liftProtocol.getTaskNo().intValue() != motion.getWrkNo()) {
-// return false;
-// }
-//
-// shuttleCommands = this.shuttleAssignCommand(motion.getOrigin(), motion.getTarget(), NavigationMapType.NORMAL.id, assignCommand, shuttleThread);
-// shuttleTaskModeType = ShuttleTaskModeType.SHUTTLE_MOVE_LOC_NO;
-// break;
+
+ //鍒ゆ柇鎻愬崌鏈哄伐浣滃彿鏄惁鍜屽綋鍓嶄换鍔$浉鍚�
+ if (liftProtocol.getTaskNo().intValue() != motion.getWrkNo()) {
+ return false;
+ }
+
+ shuttleCommands = this.shuttleAssignCommand(motion.getOrigin(), motion.getTarget(), NavigationMapType.NORMAL.id, assignCommand, shuttleThread);
+ shuttleTaskModeType = ShuttleTaskModeType.SHUTTLE_MOVE_LOC_NO;
+ break;
// case SHUTTLE_MOVE_FROM_CONVEYOR:
// shuttleCommands = this.shuttleAssignCommand(motion.getOrigin(), motion.getTarget(), NavigationMapType.NORMAL.id, assignCommand, shuttleThread);
// shuttleTaskModeType = ShuttleTaskModeType.SHUTTLE_MOVE_LOC_NO;
@@ -405,7 +412,8 @@
return false;
}
- if (!shuttleProtocol.getIdle()) {
+ //鍒ゆ柇璁惧鏄惁绌洪棽
+ if (!shuttleThread.isIdle()) {
return false;
}
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/model/enums/ShuttleCommandModeType.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/model/enums/ShuttleCommandModeType.java
index eb2defd..d374749 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/model/enums/ShuttleCommandModeType.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/model/enums/ShuttleCommandModeType.java
@@ -9,9 +9,10 @@
MOVE(1, "绉诲姩"),
IN_LIFT(2, "杩涙彁鍗囨満"),
OUT_LIFT(3, "鍑烘彁鍗囨満"),
- CHARGE(4, "鍏呯數"),
- PALLET_LIFT(5, "鎵樼洏椤跺崌"),
- PALLET_DOWN(6, "鎵樼洏涓嬮檷"),
+ CHARGE_OPEN(4, "鍏呯數寮�"),
+ CHARGE_CLOSE(5, "鍏呯數鍏�"),
+ PALLET_LIFT(6, "鎵樼洏椤跺崌"),
+ PALLET_DOWN(7, "鎵樼洏涓嬮檷"),
RESET(8, "澶嶄綅"),
;
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/utils/ShuttleDispatcher.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/utils/ShuttleDispatcher.java
index cddb6df..778a328 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/utils/ShuttleDispatcher.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/utils/ShuttleDispatcher.java
@@ -78,7 +78,7 @@
continue;
}
- if (!shuttleProtocol.isIdle()) {
+ if (!shuttleThread.isIdle()) {
continue;
}
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/model/protocol/LiftProtocol.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/model/protocol/LiftProtocol.java
index 7896673..40af86a 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/model/protocol/LiftProtocol.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/model/protocol/LiftProtocol.java
@@ -135,6 +135,11 @@
private Device device;
/**
+ * 鎵╁睍瀛楁
+ */
+ private Object extend;
+
+ /**
* 璁剧疆鎻愬崌鏈虹姸鎬�
*/
public void setProtocolStatus(Integer status) {
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/model/protocol/ShuttleProtocol.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/model/protocol/ShuttleProtocol.java
index 0eb07b2..97b5d64 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/model/protocol/ShuttleProtocol.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/model/protocol/ShuttleProtocol.java
@@ -168,6 +168,11 @@
private Device device;
/**
+ * 鎵╁睍瀛楁
+ */
+ private Object extend;
+
+ /**
* 璁剧疆灏忚溅鐘舵��
*/
public void setProtocolStatus(Integer status) {
@@ -263,25 +268,6 @@
}
return currentLoc.getLocNo();
- }
-
- // 鏄惁澶勪簬绌洪棽寰呭懡鐘舵��
- public Boolean isIdle() {
- if (this.deviceStatus == null
- || this.pakMk == null
- || this.errorCode == null
- || this.protocolStatus == null
- ) {
- return false;
- }
-
- boolean res = this.deviceStatus.equals(ShuttleDeviceStatusType.IDLE)
- && this.pakMk
- && !this.errorCode.equals("0")
- && this.getTaskNo() == 0
- && this.protocolStatus.intValue() == ShuttleProtocolStatusType.IDLE.id
- ;
- return res;
}
}
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/LiftThread.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/LiftThread.java
index 174c789..48a7bdc 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/LiftThread.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/LiftThread.java
@@ -20,6 +20,8 @@
boolean reset(LiftCommand command);//澶嶄綅
+ boolean isIdle();//鏄惁绌洪棽
+
//***************鑾峰彇鍛戒护*****************
LiftCommand getEmptyMoveCommand(Integer taskNo, Integer targetLev);//绌鸿浇绉诲姩
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/ShuttleThread.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/ShuttleThread.java
index d703810..2f31443 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/ShuttleThread.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/ShuttleThread.java
@@ -23,7 +23,14 @@
boolean reset(ShuttleCommand command);//澶嶄綅寮�鍏�
+ boolean isIdle();//鏄惁绌洪棽
+
//***************鑾峰彇鍛戒护*****************
- ShuttleCommand getMoveCommand(Integer taskNo, String startCodeNum, String distCodeNum, Integer allDistance, Integer runDirection, Integer runSpeed);
+
+ ShuttleCommand getMoveCommand(Integer taskNo, String startCodeNum, String distCodeNum, Integer allDistance, Integer runDirection, Integer runSpeed);//鑾峰彇绉诲姩鍛戒护
+
+ ShuttleCommand getLiftCommand(Integer taskNo, Boolean lift);//椤跺崌鍛戒护 true=>椤跺崌 false=>涓嬮檷
+
+ ShuttleCommand getChargeCommand(Integer taskNo, Boolean charge);//鍏呯數寮�鍏冲懡浠� true=>寮� false=>鍏�
}
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/SurayLiftThread.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/SurayLiftThread.java
index ba5bd4e..7f35a9b 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/SurayLiftThread.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/SurayLiftThread.java
@@ -20,6 +20,7 @@
import com.zy.asrs.wcs.rcs.thread.LiftThread;
import com.zy.asrs.wcs.core.utils.RedisUtil;
import com.zy.asrs.wcs.rcs.entity.Device;
+import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import java.text.MessageFormat;
@@ -87,6 +88,10 @@
liftProtocol.setLiftNo(Integer.valueOf(device.getDeviceNo()));
liftProtocol.setProtocolStatus(LiftProtocolStatusType.IDLE);
liftProtocol.setDevice(device);
+
+ InnerLiftExtend innerLiftExtend = new InnerLiftExtend();
+ innerLiftExtend.setLock(false);//榛樿鏈攣瀹�
+ liftProtocol.setExtend(innerLiftExtend);
}
//----------璇诲彇鎻愬崌鏈虹姸鎬�-----------
@@ -104,6 +109,13 @@
liftProtocol.setErrorCode("");
//灞�
liftProtocol.setLev(data.getInteger("curFloor"));
+
+
+ //************琛ュ厖鎵╁睍瀛楁*************
+ InnerLiftExtend liftExtend = JSON.parseObject(JSON.toJSONString(liftProtocol.getExtend()), InnerLiftExtend.class);
+ liftExtend.setLock(data.getInteger("lockStatus") == 1 ? true : false);
+ liftProtocol.setExtend(liftExtend);
+
// //鍓嶈秴闄�
// liftProtocol.setFrontOverrun(status1[4]);
// //鍚庤秴闄�
@@ -280,6 +292,20 @@
return false;
}
+ @Override
+ public boolean isIdle() {
+ InnerLiftExtend extend = (InnerLiftExtend) liftProtocol.getExtend();//鑾峰彇鎵╁睍瀛楁
+ // 鍒ゆ柇鎻愬崌鏈烘槸鍚﹁嚜鍔ㄣ�佸氨缁�佺┖闂层�佹湭閿佸畾
+ if (liftProtocol.getModel()
+ && !liftProtocol.getRun()
+ && liftProtocol.getReady()
+ && !extend.getLock()
+ ) {
+ return true;
+ }
+ return false;
+ }
+
//***************璁惧灞傞�氳-涓嶅悓鍘傚晢璁惧閫氳鏂规涓嶄竴鑷�***************
//璇锋眰鐧诲綍
@@ -444,4 +470,17 @@
return command;
}
+ /**
+ * 鎵╁睍瀛楁
+ */
+ @Data
+ private class InnerLiftExtend {
+
+ /**
+ * 鎻愬崌鏈洪攣瀹�
+ */
+ private Boolean lock = false;
+
+ }
+
}
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/SurayShuttleThread.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/SurayShuttleThread.java
index 6f679c5..5986a9b 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/SurayShuttleThread.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/SurayShuttleThread.java
@@ -21,6 +21,7 @@
import com.zy.asrs.wcs.rcs.thread.ShuttleThread;
import com.zy.asrs.wcs.core.utils.RedisUtil;
import com.zy.asrs.wcs.rcs.entity.Device;
+import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import java.text.MessageFormat;
@@ -87,6 +88,9 @@
shuttleProtocol.setShuttleNo(Integer.valueOf(device.getDeviceNo()));
shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.IDLE);
shuttleProtocol.setDevice(device);
+
+ InnerSuhttleExtend extend = new InnerSuhttleExtend();
+ shuttleProtocol.setExtend(extend);
}
//----------璇诲彇鍥涘悜绌挎杞︾姸鎬�-----------
@@ -108,13 +112,19 @@
//鏄惁涓哄厖鐢电姸鎬�
shuttleProtocol.setHasCharge((deviceStatus == 5 || deviceStatus == 13) ? true : false);
+ //*********璇诲彇鎵╁睍瀛楁**********
+ InnerSuhttleExtend extend = JSON.parseObject(JSON.toJSONString(shuttleProtocol.getExtend()), InnerSuhttleExtend.class);
+ extend.setMapVersion(data.getString("version"));//鍦板浘鐗堟湰
+ extend.setStatusDescription(data.getString("statusDescription"));//鐘舵�佹弿杩�
+ shuttleProtocol.setExtend(extend);//鎵╁睍瀛楁
+
///璇诲彇鍥涘悜绌挎杞︾姸鎬�-end
-// //灏忚溅澶勪簬蹇欑鐘舵�侊紝灏嗘爣璁扮疆涓簍rue
-// if (shuttleProtocol.getDeviceStatusType() == ShuttleDeviceStatusType.BUSY) {
-// shuttleProtocol.setPakMk(true);
-// }
-//
+ //灏忚溅澶勪簬蹇欑鐘舵�侊紝灏嗘爣璁扮疆涓簍rue
+ if (!shuttleProtocol.getIdle()) {
+ shuttleProtocol.setPakMk(true);
+ }
+
// if (shuttleProtocol.getProtocolStatusType() == null && shuttleProtocol.getDeviceStatus().intValue() == ShuttleDeviceStatusType.IDLE.id) {
// //灏忚溅绌洪棽鐘舵�併�佸皬杞︿换鍔$姸鎬佷负鏈煡锛岃瀹氭浘绂荤嚎杩囷紝闇�瑕佸浣嶆垚绌洪棽
// shuttleProtocol.setProtocolStatusType(ShuttleProtocolStatusType.IDLE);
@@ -325,6 +335,24 @@
}
@Override
+ public boolean isIdle() {
+ if (this.shuttleProtocol.getIdle() == null
+ || this.shuttleProtocol.getPakMk() == null
+ || this.shuttleProtocol.getErrorCode() == null
+ || this.shuttleProtocol.getProtocolStatus() == null
+ ) {
+ return false;
+ }
+
+ boolean res = this.shuttleProtocol.getIdle()
+ && this.shuttleProtocol.getPakMk()
+ && this.shuttleProtocol.getErrorCode().equals("0")
+ && this.shuttleProtocol.getProtocolStatus() == ShuttleProtocolStatusType.IDLE.id
+ ;
+ return res;
+ }
+
+ @Override
public ShuttleCommand getMoveCommand(Integer taskNo, String startCodeNum, String distCodeNum, Integer allDistance, Integer runDirection, Integer runSpeed) {
HashMap<String, Object> body = new HashMap<>();
body.put("messageName", "runOrder");
@@ -351,6 +379,37 @@
return command;
}
+ @Override
+ public ShuttleCommand getLiftCommand(Integer taskNo, Boolean lift) {
+ HashMap<String, Object> body = new HashMap<>();
+ body.put("messageName", "actionOrder");
+ body.put("msgTime", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
+ body.put("deviceNo", Integer.parseInt(this.device.getDeviceNo()));
+ body.put("taskId", taskNo);
+ body.put("action", lift ? 1 : 2);
+
+ ShuttleCommand command = new ShuttleCommand();
+ command.setShuttleNo(Integer.parseInt(this.device.getDeviceNo()));
+ command.setBody(JSON.toJSONString(body));
+ command.setMode(lift ? ShuttleCommandModeType.PALLET_LIFT.id : ShuttleCommandModeType.PALLET_DOWN.id);
+ return command;
+ }
+
+ @Override
+ public ShuttleCommand getChargeCommand(Integer taskNo, Boolean charge) {
+ HashMap<String, Object> body = new HashMap<>();
+ body.put("messageName", "runOrder");
+ body.put("msgTime", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
+ body.put("deviceNo", Integer.parseInt(this.device.getDeviceNo()));
+ body.put("taskId", taskNo);
+ body.put("action", charge ? 3 : 4);
+
+ ShuttleCommand command = new ShuttleCommand();
+ command.setShuttleNo(Integer.parseInt(this.device.getDeviceNo()));
+ command.setBody(JSON.toJSONString(body));
+ command.setMode(charge ? ShuttleCommandModeType.CHARGE_OPEN.id : ShuttleCommandModeType.CHARGE_CLOSE.id);
+ return command;
+ }
//***************璁惧灞傞�氳-涓嶅悓鍘傚晢璁惧閫氳鏂规涓嶄竴鑷�***************
@@ -410,4 +469,20 @@
}
return null;
}
+
+ @Data
+ private class InnerSuhttleExtend {
+
+ /**
+ * 鍦板浘鐗堟湰
+ */
+ private String mapVersion;
+
+ /**
+ * 鐘舵�佹弿杩�
+ */
+ private String statusDescription;
+
+ }
+
}
--
Gitblit v1.9.1