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