From de27c6f2d428632ed21a015dc6bfb73cc07f31a3 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期四, 30 三月 2023 10:43:55 +0800
Subject: [PATCH] 四向穿梭车入库模式完善

---
 src/main/java/com/zy/core/thread/LiftThread.java                  |    8 +-
 src/main/java/com/zy/core/model/command/LiftCommand.java          |    6 +
 src/main/java/com/zy/core/model/command/ShuttleAssignCommand.java |    2 
 src/main/java/com/zy/asrs/controller/ShuttleController.java       |    2 
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java       |  101 ++++++++++++++-----------
 src/main/java/com/zy/core/thread/ShuttleThread.java               |   13 ++-
 src/main/java/com/zy/asrs/mapper/WrkMastMapper.java               |    2 
 src/main/resources/mapper/WrkMastMapper.xml                       |    9 +
 src/main/java/com/zy/core/model/LiftSlave.java                    |   41 +++++++---
 src/main/java/com/zy/core/model/protocol/LiftProtocol.java        |    6 +
 src/main/java/com/zy/core/ServerBootstrap.java                    |    4 +
 11 files changed, 121 insertions(+), 73 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/ShuttleController.java b/src/main/java/com/zy/asrs/controller/ShuttleController.java
index 3dc3b05..bb931f7 100644
--- a/src/main/java/com/zy/asrs/controller/ShuttleController.java
+++ b/src/main/java/com/zy/asrs/controller/ShuttleController.java
@@ -266,7 +266,7 @@
                 command.setShuttleNo(shuttleSlave.getId().shortValue()); // 鍥涘悜绌挎杞︾紪鍙�
                 command.setTaskMode(shuttleTaskModeType.id.shortValue());
                 command.setSourceLocNo(param.getSourceLocNo());
-                command.setDistLocNo(param.getDistLocNo());
+                command.setLocNo(param.getDistLocNo());
                 command.setTaskNo((short) 9999);
 
                 if (MessageQueue.offer(SlaveType.Shuttle, shuttleSlave.getId(), new Task(3, command))) {
diff --git a/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java b/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java
index 5edbeaa..80a0f32 100644
--- a/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java
@@ -98,5 +98,5 @@
 
     WrkMast selectRackInStep48(Short workNo,Integer sourceStaNo);
 
-    WrkMast selectByWorkNo9(Integer workNo);
+    WrkMast selectByWorkNo59(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 e3d8031..8bb3c30 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -636,15 +636,28 @@
                 if (true || staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable()) {
                     WrkMast wrkMast = wrkMastMapper.selectRackInStep48(workNo, staProtocol.getSiteId());
                     if (wrkMast != null) {
-                        if (wrkMast.getWrkSts() == 4) {
-                            //瀵绘壘鏈�杩戜笖绌洪棽鐨勫洓鍚戠┛姊溅
-                            HashMap<String, Object> searchIdleShuttle = this.searchIdleShuttle(wrkMast);
-                            ShuttleThread shuttleThread = (ShuttleThread) searchIdleShuttle.get("result");
+                        if (wrkMast.getWrkSts() == 4 || wrkMast.getWrkSts() == 8) {
+                            ShuttleThread shuttleThread = null;
+                            HashMap<String, Object> searchIdleShuttle = null;
+                            if (wrkMast.getWrkSts() == 4) {
+                                //瀵绘壘鏈�杩戜笖绌洪棽鐨勫洓鍚戠┛姊溅
+                                searchIdleShuttle = this.searchIdleShuttle(wrkMast);
+                                shuttleThread = (ShuttleThread) searchIdleShuttle.get("result");
+                            }else {
+                                //鐘舵��8锛屽洓鍚戠┛姊溅宸插湪鎻愬崌鏈哄彛锛岀瓑寰呭懡浠よ繘琛屽叆搴撴惉杩愬姩浣�
+                                Integer shuttleNo = wrkMast.getShuttleNo();//鍥涘悜绌挎杞﹀彿
+                                shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttleNo);
+                            }
+
                             if (shuttleThread == null) {
                                 continue;
                             }
 
                             ShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol();
+                            if (!shuttleProtocol.isIdle()) {
+                                continue;
+                            }
+
                             wrkMast.setShuttleNo(shuttleProtocol.getShuttleNo().intValue());//缁欏伐浣滄。鍒嗛厤鍥涘悜绌挎杞﹀彿
 
                             //鍒嗛厤浠诲姟鍙�
@@ -664,52 +677,30 @@
                             LocMast currentLocMast = locMastService.queryByQrCode(currentCode.toString());
                             assignCommand.setSourceLocNo(currentLocMast.getLocNo());
 
-                            if (Boolean.parseBoolean(searchIdleShuttle.get("sameLay").toString())) {
+                            if (wrkMast.getWrkSts() == 8 || Boolean.parseBoolean(searchIdleShuttle.get("sameLay").toString())) {
                                 //鍚屼竴灞�
                                 //鍒嗛厤鐩爣搴撲綅
                                 shuttleProtocol.setLocNo(wrkMast.getLocNo());
                                 //鐩爣搴撲綅
-                                assignCommand.setDistLocNo(wrkMast.getLocNo());
+                                assignCommand.setLocNo(wrkMast.getLocNo());
                                 wrkMast.setWrkSts(9L);//灏忚溅鍏ュ簱涓�
                             }else {
                                 //涓嶅悓灞傦紝灏嗙洰鏍囧簱浣嶅垎閰嶆垚鎻愬崌鏈哄簱浣嶅彿
-                                //鍒嗛厤鐩爣搴撲綅
-                                shuttleProtocol.setLocNo("1800201");
+
+                                //灏忚溅褰撳墠灞傞珮
+                                String currentLocNo = currentLocMast.getLocNo();
+                                Integer currentLev = Integer.parseInt(currentLocNo.substring(currentLocNo.length() - 2, currentLocNo.length()));
+
+                                //鑾峰彇鎻愬崌鏈�
+                                LiftSlave liftSlave = slaveProperties.getLift().get(0);
+                                //鎻愬崌鏈哄簱浣嶅彿
+                                String liftLocNo = liftSlave.getLiftLocNo(currentLev);
+                                shuttleProtocol.setLocNo(liftLocNo);
                                 //鐩爣搴撲綅
-                                assignCommand.setDistLocNo("1800201");
+                                assignCommand.setLocNo(liftLocNo);
                                 wrkMast.setWrkSts(5L);//灏忚溅杩佺Щ鐘舵��
                             }
 
-                            if (wrkMastMapper.updateById(wrkMast) > 0) {
-                                //涓嬪彂浠诲姟
-                                MessageQueue.offer(SlaveType.Shuttle, assignCommand.getShuttleNo().intValue(), new Task(3, assignCommand));
-                            }
-                        }else {
-                            //鐘舵��8锛屽洓鍚戠┛姊溅宸插湪鎻愬崌鏈哄彛锛岀瓑寰呭懡浠よ繘琛屽叆搴撴惉杩愬姩浣�
-                            Integer shuttleNo = wrkMast.getShuttleNo();//鍥涘悜绌挎杞﹀彿
-                            ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttleNo);
-                            if (shuttleThread == null) {
-                                continue;
-                            }
-                            ShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol();
-
-                            //鍒嗛厤鐩爣搴撲綅
-                            shuttleProtocol.setLocNo(wrkMast.getLocNo());
-
-                            ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
-                            //鍥涘悜绌挎杞﹀彿
-                            assignCommand.setShuttleNo(shuttleNo.shortValue());
-                            //浠诲姟鍙�
-                            assignCommand.setTaskNo(wrkMast.getWrkNo().shortValue());
-                            //鍏ュ嚭搴撴ā寮�
-                            assignCommand.setTaskMode(ShuttleTaskModeType.PAK_IN.id.shortValue());
-                            //婧愬簱浣�(灏忚溅褰撳墠浣嶇疆)
-                            Short currentCode = shuttleProtocol.getCurrentCode();
-                            LocMast currentLocMast = locMastService.queryByQrCode(currentCode.toString());
-                            assignCommand.setSourceLocNo(currentLocMast.getLocNo());
-                            //鐩爣搴撲綅
-                            assignCommand.setDistLocNo(wrkMast.getLocNo());
-                            wrkMast.setWrkSts(9L);//灏忚溅鍏ュ簱涓�
                             if (wrkMastMapper.updateById(wrkMast) > 0) {
                                 //涓嬪彂浠诲姟
                                 MessageQueue.offer(SlaveType.Shuttle, assignCommand.getShuttleNo().intValue(), new Task(3, assignCommand));
@@ -778,10 +769,23 @@
                     //妤煎眰鐩稿悓鎯呭喌
                     //鎵捐窛绂诲嚭搴撶偣鏈�杩戠殑杞�
 
+                    if (!(recentShuttleProtocol.isIdle() && shuttleProtocol.isIdle())) {
+                        //鍙鏈変竴杈嗚溅涓嶆槸绌洪棽鍒欎笉杩涜璋冨害
+                        map.put("sameLay", false);//涓嶅悓灞�
+                        map.put("result", null);
+                        return map;
+                    }
+
+                    //鑾峰彇鎻愬崌鏈�
+                    LiftSlave liftSlave = slaveProperties.getLift().get(0);
+                    //鎻愬崌鏈哄簱浣嶅彿
+                    String recentLiftLocNo = liftSlave.getLiftLocNo(recentShuttleLocNoLayInt);
+                    String shuttleLiftLocNo = liftSlave.getLiftLocNo(shuttleLocNoLayInt);
+
                     //褰撳墠鏈�杩戝洓鍚戠┛姊溅鍒版彁鍗囨満璺緞
-                    List<NavigateNode> recentShuttlePath = NavigateUtils.calc(recentShuttleLocNo, "1800201", ShuttleTaskModeType.PAK_IN.id);
+                    List<NavigateNode> recentShuttlePath = NavigateUtils.calc(recentShuttleLocNo, recentLiftLocNo, ShuttleTaskModeType.PAK_IN.id);
                     //褰撳墠妤煎眰鍥涘悜绌挎杞﹀埌鎻愬崌鏈鸿矾寰�
-                    List<NavigateNode> shuttlePath = NavigateUtils.calc(shuttleLocNo, "1800201", ShuttleTaskModeType.PAK_IN.id);
+                    List<NavigateNode> shuttlePath = NavigateUtils.calc(shuttleLocNo, shuttleLiftLocNo, ShuttleTaskModeType.PAK_IN.id);
                     //鍒ゆ柇鍝竴涓矾寰勬渶鐭�
                     if (shuttlePath.size() < recentShuttlePath.size()) {
                         //濡傛灉褰撳墠妤煎眰鐨勮溅璺緞鏇村皬锛屽垯鏇存柊鏈�杩戠┛姊溅
@@ -811,9 +815,18 @@
             //鍥涘悜绌挎杞︾姸鎬佷负绛夊緟纭
             if (shuttleProtocol.getProtocolStatus() == ShuttleProtocolStatusType.WAITING.id && shuttleProtocol.getTaskNo() != 0) {
                 //灏嗕换鍔℃。鏍囪涓哄畬鎴�
-                WrkMast wrkMast = wrkMastMapper.selectByWorkNo9(shuttleProtocol.getTaskNo().intValue());
+                WrkMast wrkMast = wrkMastMapper.selectByWorkNo59(shuttleProtocol.getTaskNo().intValue());
                 if (wrkMast != null) {
-                    wrkMast.setWrkSts(14L);
+                    switch (wrkMast.getWrkSts().intValue()) {
+                        case 9:
+                            wrkMast.setWrkSts(14L);
+                            break;
+                        case 5:
+                            wrkMast.setWrkSts(6L);
+                            break;
+                        default:
+                    }
+
                     if (wrkMastMapper.updateById(wrkMast) > 0) {
                         //璁剧疆鍥涘悜绌挎杞︿负绌洪棽鐘舵��
                         shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.IDLE);
@@ -825,7 +838,7 @@
                         shuttleProtocol.setLocNo(null);
                         //鏍囪澶嶄綅
                         shuttleProtocol.setPakMk(true);
-                        News.error("鍥涘悜绌挎杞﹀凡纭涓斾换鍔″畬鎴愮姸鎬�,澶嶄綅銆傚爢鍨涙満鍙�={}", shuttleProtocol.getShuttleNo());
+                        News.info("鍥涘悜绌挎杞﹀凡纭涓斾换鍔″畬鎴愮姸鎬�,澶嶄綅銆傚爢鍨涙満鍙�={}", shuttleProtocol.getShuttleNo());
                     } else {
                         News.error("鍥涘悜绌挎杞﹀凡纭涓斾换鍔″畬鎴愮姸鎬�,澶嶄綅澶辫触锛屼絾鏈壘鍒板伐浣滄。銆傚洓鍚戠┛姊溅鍙�={}锛屽伐浣滃彿={}", shuttleProtocol.getShuttleNo(), shuttleProtocol.getTaskNo());
                     }
diff --git a/src/main/java/com/zy/core/ServerBootstrap.java b/src/main/java/com/zy/core/ServerBootstrap.java
index 1958d24..48d373b 100644
--- a/src/main/java/com/zy/core/ServerBootstrap.java
+++ b/src/main/java/com/zy/core/ServerBootstrap.java
@@ -73,6 +73,10 @@
         for (Slave ste : slaveProperties.getSte()) {
             MessageQueue.init(SlaveType.Ste, ste);
         }
+        // 鍒濆鍖栨彁鍗囨満mq
+        for (Slave lift : slaveProperties.getLift()) {
+            MessageQueue.init(SlaveType.Lift, lift);
+        }
         // 鍒濆鍖栧洓鍚戠┛姊溅mq
         for (Slave shuttle : slaveProperties.getShuttle()) {
             MessageQueue.init(SlaveType.Shuttle, shuttle);
diff --git a/src/main/java/com/zy/core/model/LiftSlave.java b/src/main/java/com/zy/core/model/LiftSlave.java
index 79bf2a4..15e6060 100644
--- a/src/main/java/com/zy/core/model/LiftSlave.java
+++ b/src/main/java/com/zy/core/model/LiftSlave.java
@@ -4,34 +4,49 @@
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
+import java.util.ArrayList;
+import java.util.List;
+
 @EqualsAndHashCode(callSuper = true)
 @Data
 public class LiftSlave extends Slave {
 
-    private Integer rack;
+    // 鎺�
+    private Integer row;
 
-    private Integer slot;
+    // 鍒�
+    private Integer bay;
 
-    private Boolean demo;
+    //鎻愬崌鏈虹珯鐐�
+    private List<Sta> sta = new ArrayList<>();
 
     @Data
     public static class Sta {
 
-        // 杈撻�佺嚎plc缂栧彿
-        private Integer devpPlcId;
-
-        // 绌挎杞︾珯鐐圭紪鍙�
+        // 鎻愬崌鏈虹珯鐐瑰彿
         private Integer staNo;
-
-        // 鎺�
-        private Integer row;
-
-        // 鍒�
-        private Integer bay;
 
         // 灞�
         private Integer lev;
 
     }
 
+    //鑾峰彇鎻愬崌鏈哄簱浣嶅彿
+    public String getLiftLocNo(Integer lev) {
+        StringBuffer sb = new StringBuffer();
+        if (row < 10) {
+            sb.append("0");
+        }
+        sb.append(row);
+
+        if (bay < 10) {
+            sb.append("00");
+        } else if (bay < 100) {
+            sb.append("0");
+        }
+        sb.append(bay);
+        sb.append(lev);
+        return sb.toString();
+    }
+
 }
diff --git a/src/main/java/com/zy/core/model/command/LiftCommand.java b/src/main/java/com/zy/core/model/command/LiftCommand.java
index 173e7a0..bb1d3d0 100644
--- a/src/main/java/com/zy/core/model/command/LiftCommand.java
+++ b/src/main/java/com/zy/core/model/command/LiftCommand.java
@@ -62,6 +62,10 @@
     /**
      * 鎻愬崌鏈洪攣瀹�
      */
-    private Short liftLock;
+    private Boolean liftLock;
+
+    public Short getLiftLockShortValue() {
+        return liftLock ? (short) 1 : (short) 0;
+    }
 
 }
diff --git a/src/main/java/com/zy/core/model/command/ShuttleAssignCommand.java b/src/main/java/com/zy/core/model/command/ShuttleAssignCommand.java
index 1017aa9..07c1e2c 100644
--- a/src/main/java/com/zy/core/model/command/ShuttleAssignCommand.java
+++ b/src/main/java/com/zy/core/model/command/ShuttleAssignCommand.java
@@ -36,6 +36,6 @@
     /**
      * 鐩爣搴撲綅
      */
-    private String distLocNo;
+    private String locNo;
 
 }
diff --git a/src/main/java/com/zy/core/model/protocol/LiftProtocol.java b/src/main/java/com/zy/core/model/protocol/LiftProtocol.java
index bbdc2f7..cd00e23 100644
--- a/src/main/java/com/zy/core/model/protocol/LiftProtocol.java
+++ b/src/main/java/com/zy/core/model/protocol/LiftProtocol.java
@@ -28,7 +28,7 @@
     /**
      * 鎻愬崌鏈洪攣瀹�
      */
-    private Short liftLock;
+    private Boolean liftLock;
 
     /**
      * 浣嶇疆鍒拌揪鍙嶉
@@ -161,4 +161,8 @@
      */
     private Short liftActualSpeed;
 
+    public Short getLiftLockShortValue() {
+        return liftLock ? (short) 1 : (short) 0;
+    }
+
 }
diff --git a/src/main/java/com/zy/core/thread/LiftThread.java b/src/main/java/com/zy/core/thread/LiftThread.java
index f67aa95..0f9a811 100644
--- a/src/main/java/com/zy/core/thread/LiftThread.java
+++ b/src/main/java/com/zy/core/thread/LiftThread.java
@@ -105,7 +105,7 @@
                 //鑾峰彇鏁版嵁
                 byte[] content = result.Content;
                 //鎻愬崌鏈洪攣瀹�
-                liftProtocol.setLiftLock(modbusTcpNet.getByteTransform().TransInt16(content,0));
+                liftProtocol.setLiftLock(modbusTcpNet.getByteTransform().TransBool(content,0));
                 //浣嶇疆鍒拌揪鍙嶉
                 liftProtocol.setPositionArrivalFeedback(modbusTcpNet.getByteTransform().TransInt16(content,2));
                 //鍑嗗灏辩华
@@ -150,7 +150,7 @@
                 ///璇诲彇鎻愬崌鏈虹姸鎬�-end
 
                 OutputQueue.LIFT.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId()));
-                log.info(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId()));
+//                log.info(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId()));
 
                 // 鏍规嵁瀹炴椂淇℃伅鏇存柊鏁版嵁搴�
                 //.....
@@ -187,7 +187,7 @@
         //鍥涘眰楂樺害璁惧畾
         array[5] = command.getHeight4();
         //鎻愬崌鏈洪攣瀹�
-        array[29] = command.getLiftLock();
+        array[29] = command.getLiftLockShortValue();
 
         OperateResult result = modbusTcpNet.Write("0", array);;
         if (result != null && result.IsSuccess) {
@@ -229,7 +229,7 @@
         command.setHeight2((short) 100);
         command.setHeight3((short) 200);
         command.setHeight4((short) 303);
-        command.setLiftLock((short) 1);
+        command.setLiftLock(true);
         thread.write(command);
 
     }
diff --git a/src/main/java/com/zy/core/thread/ShuttleThread.java b/src/main/java/com/zy/core/thread/ShuttleThread.java
index 43a6f6a..db733ce 100644
--- a/src/main/java/com/zy/core/thread/ShuttleThread.java
+++ b/src/main/java/com/zy/core/thread/ShuttleThread.java
@@ -227,7 +227,7 @@
                 basShuttle.setPakMk(shuttleProtocol.getPakMk());
                 if (shuttleService.updateById(basShuttle)) {
                     OutputQueue.SHUTTLE.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId()));
-                    log.info(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId()));
+//                    log.info(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId()));
                 }
 
             }else {
@@ -348,7 +348,7 @@
         HashMap<String, Object> map = new HashMap<>();
 
         //璁$畻璺緞
-        List<NavigateNode> calc = NavigateUtils.calc(assignCommand.getSourceLocNo(), assignCommand.getDistLocNo(), assignCommand.getTaskMode().intValue());
+        List<NavigateNode> calc = NavigateUtils.calc(assignCommand.getSourceLocNo(), assignCommand.getLocNo(), assignCommand.getTaskMode().intValue());
         if (calc != null) {
             //鑾峰彇鍒嗘璺緞
             ArrayList<ArrayList<NavigateNode>> data = NavigateUtils.getSectionPath(calc);
@@ -380,8 +380,11 @@
     }
 
     //鎵ц涓嬪彂鐨勬寚浠�
-    private void executeWork(ShuttleAssignCommand assignCommand) {
+    private boolean executeWork(ShuttleAssignCommand assignCommand) {
         //璇诲彇redis鏁版嵁
+        if (assignCommand == null) {
+            return false;
+        }
         Object o = redisUtil.get("wrk_no_" + assignCommand.getTaskNo());
         HashMap map = JSON.parseObject(o.toString(), HashMap.class);
         //褰撳墠姝ュ簭
@@ -458,6 +461,7 @@
         //涓嬪彂鍛戒护
         if (!write(command)) {
             News.error("鍥涘悜绌挎杞﹀懡浠や笅鍙戝け璐ワ紝绌挎杞﹀彿={}锛屼换鍔℃暟鎹�={}", shuttleProtocol.getShuttleNo(), JSON.toJSON(command));
+            return false;
         } else {
             News.info("鍥涘悜绌挎杞﹀懡浠や笅鍙戞垚鍔燂紝绌挎杞﹀彿={}锛屼换鍔℃暟鎹�={}", shuttleProtocol.getShuttleNo(), JSON.toJSON(command));
 
@@ -483,7 +487,7 @@
                             new Date(),
                             ShuttleTaskModeType.get(assignCommand.getTaskMode()).desc,
                             assignCommand.getSourceLocNo(),
-                            assignCommand.getDistLocNo(),
+                            assignCommand.getLocNo(),
                             null,
                             null,
                             null,
@@ -501,6 +505,7 @@
             }
 
         }
+        return true;
     }
 
     /******************************************************************************************/
diff --git a/src/main/resources/mapper/WrkMastMapper.xml b/src/main/resources/mapper/WrkMastMapper.xml
index e8d66f1..f525429 100644
--- a/src/main/resources/mapper/WrkMastMapper.xml
+++ b/src/main/resources/mapper/WrkMastMapper.xml
@@ -240,10 +240,13 @@
         select top 1 *
         from dbo.asr_wrk_mast
         where 1=1
-        and wrk_sts in (4,8) and source_sta_no = #{sourceStaNo} and wrk_no=#{workNo} order by io_pri desc,wrk_sts desc
+        and ((wrk_sts = 4 and shuttle_no is null) or (wrk_sts = 8 and shuttle_no is not null))
+        and source_sta_no = #{sourceStaNo}
+        and wrk_no=#{workNo}
+        order by io_pri desc,wrk_sts desc
     </select>
 
-    <select id="selectByWorkNo9" resultMap="BaseResultMap">
-        select top 1 * from dbo.asr_wrk_mast where wrk_no=#{workNo} and wrk_sts in (9)
+    <select id="selectByWorkNo59" resultMap="BaseResultMap">
+        select top 1 * from dbo.asr_wrk_mast where wrk_no=#{workNo} and wrk_sts in (5,9)
     </select>
 </mapper>

--
Gitblit v1.9.1