From c05fc7d74a7f706686b2fc6735ebd98459996903 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期一, 27 三月 2023 14:47:29 +0800
Subject: [PATCH] 四向穿梭车主线程完成操作
---
src/main/java/com/zy/core/model/protocol/ShuttleProtocol.java | 27 +++++++++
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 33 +++++++++++
src/main/java/com/zy/core/thread/ShuttleThread.java | 11 ++-
src/main/java/com/zy/asrs/mapper/WrkMastMapper.java | 2
src/main/resources/mapper/WrkMastMapper.xml | 15 +++--
src/main/java/com/zy/core/MainProcess.java | 2
src/main/java/com/zy/core/enums/ShuttleProtocolStatusType.java | 45 +++++++++++++++
7 files changed, 124 insertions(+), 11 deletions(-)
diff --git a/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java b/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java
index 791fe3d..b68910b 100644
--- a/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java
@@ -96,5 +96,5 @@
WrkMast selectAllC();
- List<WrkMast> selectWorkWaiting(Integer workNo);
+ WrkMast selectByWorkNo(Integer workNo);
}
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 a8fa25d..f0846ce 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -651,6 +651,39 @@
}
/**
+ * 鍥涘悜绌挎杞︿换鍔″畬鎴�
+ */
+ public synchronized void shuttleFinished() {
+ for (ShuttleSlave shuttle : slaveProperties.getShuttle()) {
+ //鑾峰彇鍥涘悜绌挎杞︿俊鎭�
+ ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttle.getId());
+ ShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol();
+ if (shuttleProtocol == null) {
+ continue;
+ }
+
+ //鍥涘悜绌挎杞︾姸鎬佷负绛夊緟纭
+ if (shuttleProtocol.getProtocolStatus() == ShuttleProtocolStatusType.WAITING.id && shuttleProtocol.getTaskNo() != 0) {
+ //灏嗕换鍔℃。鏍囪涓哄畬鎴�
+ WrkMast wrkMast = wrkMastMapper.selectByWorkNo(shuttleProtocol.getTaskNo().intValue());
+ if (wrkMast != null) {
+ wrkMast.setWrkSts(8L);
+ if (wrkMastMapper.updateById(wrkMast) > 0) {
+ //璁剧疆鍥涘悜绌挎杞︿负绌洪棽鐘舵��
+ shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.IDLE);
+ //浠诲姟鍙锋竻闆�
+ shuttleProtocol.setTaskNo((short) 0);
+ News.error("鍥涘悜绌挎杞﹀浜庣瓑寰呯‘璁や笖浠诲姟瀹屾垚鐘舵��,澶嶄綅銆傚爢鍨涙満鍙�={}锛屽伐浣滃彿={}", shuttleProtocol.getShuttleNo(), shuttleProtocol.getTaskNo());
+ } else {
+ News.error("鍥涘悜绌挎杞﹀浜庣瓑寰呯‘璁や笖浠诲姟瀹屾垚鐘舵��,澶嶄綅澶辫触锛屼絾鏈壘鍒板伐浣滄。銆傚洓鍚戠┛姊溅鍙�={}锛屽伐浣滃彿={}", shuttleProtocol.getShuttleNo(), shuttleProtocol.getTaskNo());
+ }
+ }
+
+ }
+ }
+ }
+
+ /**
* 鍏ュ嚭搴� ===>> 鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂
*/
public synchronized void crnIoExecute(){
diff --git a/src/main/java/com/zy/core/MainProcess.java b/src/main/java/com/zy/core/MainProcess.java
index 6e02faa..a2f1a1d 100644
--- a/src/main/java/com/zy/core/MainProcess.java
+++ b/src/main/java/com/zy/core/MainProcess.java
@@ -59,6 +59,8 @@
mainService.crnIoExecute();
// 鍏ュ嚭搴� ===>> 鍥涘悜绌挎杞﹀叆鍑哄簱浣滀笟涓嬪彂
mainService.shuttleIoExecute();
+ //鍥涘悜绌挎杞︿换鍔″畬鎴�
+ mainService.shuttleFinished();
// 鍏ュ簱 ===>> 鎵ц鍫嗗灈鏈哄宸ヤ綔妗g殑瀹屾垚鎿嶄綔
mainService.storeFinished();
// 鍏ュ簱 ===>> 鎵ц绌挎杞﹀宸ヤ綔妗g殑瀹屾垚鎿嶄綔
diff --git a/src/main/java/com/zy/core/enums/ShuttleProtocolStatusType.java b/src/main/java/com/zy/core/enums/ShuttleProtocolStatusType.java
new file mode 100644
index 0000000..c8e374f
--- /dev/null
+++ b/src/main/java/com/zy/core/enums/ShuttleProtocolStatusType.java
@@ -0,0 +1,45 @@
+package com.zy.core.enums;
+
+/**
+ * 鍥涘悜绌挎杞﹀唴閮ㄧ姸鎬佹灇涓�
+ */
+public enum ShuttleProtocolStatusType {
+
+ IDLE(1, "绌洪棽"),
+ WORKING(2, "浣滀笟涓�"),
+ WAITING(3, "绛夊緟纭"),
+ ;
+
+ public Integer id;
+ public String desc;
+
+ ShuttleProtocolStatusType(Integer id, String desc) {
+ this.id = id;
+ this.desc = desc;
+ }
+
+ public static ShuttleProtocolStatusType get(Integer id) {
+ if (null == id) {
+ return null;
+ }
+ for (ShuttleProtocolStatusType type : ShuttleProtocolStatusType.values()) {
+ if (type.id.equals(id.intValue())) {
+ return type;
+ }
+ }
+ return null;
+ }
+
+ public static ShuttleProtocolStatusType get(ShuttleProtocolStatusType type) {
+ if (null == type) {
+ return null;
+ }
+ for (ShuttleProtocolStatusType type2 : ShuttleProtocolStatusType.values()) {
+ if (type2 == type) {
+ return type2;
+ }
+ }
+ return null;
+ }
+
+}
diff --git a/src/main/java/com/zy/core/model/protocol/ShuttleProtocol.java b/src/main/java/com/zy/core/model/protocol/ShuttleProtocol.java
index 7205ca1..0a29623 100644
--- a/src/main/java/com/zy/core/model/protocol/ShuttleProtocol.java
+++ b/src/main/java/com/zy/core/model/protocol/ShuttleProtocol.java
@@ -1,5 +1,6 @@
package com.zy.core.model.protocol;
+import com.zy.core.enums.ShuttleProtocolStatusType;
import com.zy.core.enums.ShuttleStatusType;
import com.zy.core.model.command.ShuttleAssignCommand;
import lombok.Data;
@@ -26,6 +27,16 @@
* 浠诲姟鎸囦护
*/
private ShuttleAssignCommand assignCommand;
+
+ /**
+ * 褰撳墠灏忚溅鐘舵�侊紙鍐呴儴鑷垜缁存姢锛�
+ */
+ private Integer protocolStatus;
+
+ /**
+ * 褰撳墠灏忚溅鐘舵�佹灇涓�
+ */
+ private ShuttleProtocolStatusType protocolStatusType;
/**
* 婧愬簱浣�
@@ -226,4 +237,20 @@
return (short) (this.batteryPower * 0.1);
}
+ /**
+ * 璁剧疆灏忚溅鐘舵��
+ */
+ public void setProtocolStatus(Integer status) {
+ this.protocolStatus = status;
+ this.protocolStatusType = ShuttleProtocolStatusType.get(status);
+ }
+
+ /**
+ * 璁剧疆灏忚溅鐘舵��
+ */
+ public void setProtocolStatus(ShuttleProtocolStatusType status) {
+ this.protocolStatus = status.id;
+ this.protocolStatusType = status;
+ }
+
}
diff --git a/src/main/java/com/zy/core/thread/ShuttleThread.java b/src/main/java/com/zy/core/thread/ShuttleThread.java
index ffc4717..13db8e1 100644
--- a/src/main/java/com/zy/core/thread/ShuttleThread.java
+++ b/src/main/java/com/zy/core/thread/ShuttleThread.java
@@ -20,10 +20,7 @@
import com.zy.core.ThreadHandler;
import com.zy.core.cache.MessageQueue;
import com.zy.core.cache.OutputQueue;
-import com.zy.core.enums.ShuttleRunDirection;
-import com.zy.core.enums.ShuttleStatusType;
-import com.zy.core.enums.ShuttleTaskModeType;
-import com.zy.core.enums.SlaveType;
+import com.zy.core.enums.*;
import com.zy.core.model.ShuttleSlave;
import com.zy.core.model.Task;
import com.zy.core.model.command.ShuttleAssignCommand;
@@ -121,6 +118,7 @@
if (null == shuttleProtocol) {
shuttleProtocol = new ShuttleProtocol();
shuttleProtocol.setShuttleNo(slave.getId().shortValue());
+ shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.IDLE);
}
//----------璇诲彇鍥涘悜绌挎杞︾姸鎬�-----------
@@ -415,6 +413,11 @@
}
//鍒犻櫎redis
redisUtil.del("wrk_no_" + map.get("wrk_no").toString());
+
+ //瀵逛富绾跨▼鎶涘嚭绛夊緟纭鐘舵�亀aiting
+ shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.WAITING);
+
+ News.info("鍥涘悜绌挎杞︿换鍔℃墽琛屽畬鎴愮瓑寰呯‘璁や腑锛岀┛姊溅鍙�={}锛屼换鍔℃暟鎹�={}", shuttleProtocol.getShuttleNo(), JSON.toJSON(command));
}
}
diff --git a/src/main/resources/mapper/WrkMastMapper.xml b/src/main/resources/mapper/WrkMastMapper.xml
index 2d90877..e8b66c9 100644
--- a/src/main/resources/mapper/WrkMastMapper.xml
+++ b/src/main/resources/mapper/WrkMastMapper.xml
@@ -235,11 +235,14 @@
</foreach>
</select>
- <select id="selectWorkWaiting" resultMap="BaseResultMap">
- select *
- from dbo.asr_wrk_mast
- where 1=1
- wrk_no=#{workNo} and wrk_sts in (4,7)
- </select>
+<!-- <select id="selectWorkWaiting" resultMap="BaseResultMap">-->
+<!-- select *-->
+<!-- from dbo.asr_wrk_mast-->
+<!-- where 1=1-->
+<!-- wrk_no=#{workNo} and wrk_sts in (4,7)-->
+<!-- </select>-->
+ <select id="selectByWorkNo" resultMap="BaseResultMap">
+ select top 1 * from dbo.asr_wrk_mast where wrk_no=#{workNo}
+ </select>
</mapper>
--
Gitblit v1.9.1