From e83761d390b593cff8b7c17144529e92eb482bd6 Mon Sep 17 00:00:00 2001
From: zhangc <zc@123>
Date: 星期三, 16 四月 2025 16:38:04 +0800
Subject: [PATCH] 1

---
 src/main/java/com/zy/core/dispatcher/ShuttleDispatchUtils.java |   45 ++-
 src/main/java/com/zy/asrs/service/WrkMastService.java          |    2 
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java    |  374 ++++++++++++++++++++-----------------
 src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java |    5 
 src/main/java/com/zy/asrs/entity/WrkMast.java                  |    1 
 src/main/java/com/zy/asrs/mapper/WrkMastMapper.java            |    3 
 src/main/resources/mapper/WrkMastMapper.xml                    |    6 
 src/main/java/com/zy/asrs/entity/WrkMastLog.java               |  100 +++++----
 src/main/java/com/zy/core/MainProcess.java                     |    2 
 src/main/java/com/zy/asrs/task/WrkMastScheduler.java           |    3 
 src/main/java/com/zy/common/service/CommonService.java         |   21 +
 src/main/webapp/views/admin/wrkMast/wrkMast.html               |    2 
 12 files changed, 314 insertions(+), 250 deletions(-)

diff --git a/src/main/java/com/zy/asrs/entity/WrkMast.java b/src/main/java/com/zy/asrs/entity/WrkMast.java
index a7bb018..193887b 100644
--- a/src/main/java/com/zy/asrs/entity/WrkMast.java
+++ b/src/main/java/com/zy/asrs/entity/WrkMast.java
@@ -143,6 +143,7 @@
      *
      */
     @ApiModelProperty(value= "")
+    @TableField(value = "main_wrk_no")
     private Integer mainWrkNo;
 
     /**
diff --git a/src/main/java/com/zy/asrs/entity/WrkMastLog.java b/src/main/java/com/zy/asrs/entity/WrkMastLog.java
index b65aa29..8a3e5c0 100644
--- a/src/main/java/com/zy/asrs/entity/WrkMastLog.java
+++ b/src/main/java/com/zy/asrs/entity/WrkMastLog.java
@@ -30,156 +30,158 @@
     /**
      * 缂栧彿
      */
-    @ApiModelProperty(value= "缂栧彿")
+    @ApiModelProperty(value = "缂栧彿")
     @TableId(value = "id", type = IdType.AUTO)
     private Long id;
 
     /**
      * 宸ヤ綔鍙�
      */
-    @ApiModelProperty(value= "宸ヤ綔鍙�")
+    @ApiModelProperty(value = "宸ヤ綔鍙�")
     @TableField("wrk_no")
     private Integer wrkNo;
 
-    @ApiModelProperty(value= "")
+    @ApiModelProperty(value = "")
     private String mk;
 
     /**
      * 宸ヤ綔鐘舵��
      */
-    @ApiModelProperty(value= "宸ヤ綔鐘舵��")
+    @ApiModelProperty(value = "宸ヤ綔鐘舵��")
     @TableField("wrk_sts")
     private Long wrkSts;
 
     /**
      * 鍏ュ嚭搴撶被鍨�
      */
-    @ApiModelProperty(value= "鍏ュ嚭搴撶被鍨�")
+    @ApiModelProperty(value = "鍏ュ嚭搴撶被鍨�")
     @TableField("io_type")
     private Integer ioType;
 
     /**
      * 浼樺厛绾�
      */
-    @ApiModelProperty(value= "浼樺厛绾�")
+    @ApiModelProperty(value = "浼樺厛绾�")
     @TableField("io_pri")
     private Double ioPri;
 
     /**
      * 鐩爣搴撲綅
      */
-    @ApiModelProperty(value= "鐩爣搴撲綅")
+    @ApiModelProperty(value = "鐩爣搴撲綅")
     @TableField("loc_no")
     private String locNo;
 
     /**
      * 鐩爣绔�
      */
-    @ApiModelProperty(value= "鐩爣绔�")
+    @ApiModelProperty(value = "鐩爣绔�")
     @TableField("sta_no")
     private Integer staNo;
 
     /**
      * 婧愮珯
      */
-    @ApiModelProperty(value= "婧愮珯")
+    @ApiModelProperty(value = "婧愮珯")
     @TableField("source_sta_no")
     private Integer sourceStaNo;
 
     /**
      * 婧愬簱浣�
      */
-    @ApiModelProperty(value= "婧愬簱浣�")
+    @ApiModelProperty(value = "婧愬簱浣�")
     @TableField("source_loc_no")
     private String sourceLocNo;
 
     /**
      * 宸ヤ綔鏃堕棿
      */
-    @ApiModelProperty(value= "宸ヤ綔鏃堕棿")
+    @ApiModelProperty(value = "宸ヤ綔鏃堕棿")
     @TableField("io_time")
     private Date ioTime;
 
     /**
      * 淇敼浜哄憳
      */
-    @ApiModelProperty(value= "淇敼浜哄憳")
+    @ApiModelProperty(value = "淇敼浜哄憳")
     @TableField("modi_user")
     private Long modiUser;
 
     /**
      * 淇敼鏃堕棿
      */
-    @ApiModelProperty(value= "淇敼鏃堕棿")
+    @ApiModelProperty(value = "淇敼鏃堕棿")
     @TableField("modi_time")
     private Date modiTime;
 
     /**
      * 鍒涘缓鑰�
      */
-    @ApiModelProperty(value= "鍒涘缓鑰�")
+    @ApiModelProperty(value = "鍒涘缓鑰�")
     @TableField("appe_user")
     private Long appeUser;
 
     /**
      * 娣诲姞鏃堕棿
      */
-    @ApiModelProperty(value= "娣诲姞鏃堕棿")
+    @ApiModelProperty(value = "娣诲姞鏃堕棿")
     @TableField("appe_time")
     private Date appeTime;
 
-    @ApiModelProperty(value= "")
+    @ApiModelProperty(value = "")
     @TableField("error_time")
     private Date errorTime;
 
-    @ApiModelProperty(value= "")
+    @ApiModelProperty(value = "")
     @TableField("error_memo")
     private String errorMemo;
 
-    @ApiModelProperty(value= "")
+    @ApiModelProperty(value = "")
     @TableField("memo")
     private String memo;
 
     /**
      * 鏉$爜
      */
-    @ApiModelProperty(value= "鏉$爜")
+    @ApiModelProperty(value = "鏉$爜")
     private String barcode;
 
     /**
      * 鍥涘悜绌挎杞﹀彿
      */
-    @ApiModelProperty(value= "鍥涘悜绌挎杞﹀彿")
+    @ApiModelProperty(value = "鍥涘悜绌挎杞﹀彿")
     @TableField(value = "shuttle_no")
     private Integer shuttleNo;
 
     /**
      * 鎻愬崌鏈哄彿
      */
-    @ApiModelProperty(value= "鎻愬崌鏈哄彿")
+    @ApiModelProperty(value = "鎻愬崌鏈哄彿")
     @TableField(value = "lift_no")
     private Integer liftNo;
 
     /**
      * WMS浠诲姟鍙�
      */
-    @ApiModelProperty(value= "WMS浠诲姟鍙�")
+    @ApiModelProperty(value = "WMS浠诲姟鍙�")
     @TableField(value = "wms_wrk_no")
     private String wmsWrkNo;
 
     /**
      * 绯荤粺娑堟伅
      */
-    @ApiModelProperty(value= "绯荤粺娑堟伅")
+    @ApiModelProperty(value = "绯荤粺娑堟伅")
     @TableField(value = "system_msg")
     private String systemMsg;
 
-    @ApiModelProperty(value= "")
+    @ApiModelProperty(value = "")
+    @TableField(value = "main_wrk_no")
     private Integer mainWrkNo;
 
-    public WrkMastLog() {}
+    public WrkMastLog() {
+    }
 
-    public String getWrkSts$(){
+    public String getWrkSts$() {
         BasWrkStatusMapper mapper = SpringUtils.getBean(BasWrkStatusMapper.class);
         BasWrkStatus entity = mapper.selectById(this.wrkSts);
         if (entity != null) {
@@ -188,7 +190,7 @@
         return null;
     }
 
-    public String getIoType$(){
+    public String getIoType$() {
         BasWrkIotypeMapper mapper = SpringUtils.getBean(BasWrkIotypeMapper.class);
         BasWrkIotype entity = mapper.selectById(this.ioType);
         if (entity != null) {
@@ -197,92 +199,92 @@
         return null;
     }
 
-    public String getWrkNo$(){
+    public String getWrkNo$() {
         WrkMastService service = SpringUtils.getBean(WrkMastService.class);
         WrkMast wrkMast = service.selectById(this.wrkNo);
-        if (!Cools.isEmpty(wrkMast)){
+        if (!Cools.isEmpty(wrkMast)) {
             return String.valueOf(wrkMast.getWrkNo());
         }
         return null;
     }
 
-    public String getLocNo$(){
+    public String getLocNo$() {
         LocMastService service = SpringUtils.getBean(LocMastService.class);
         LocMast locMast = service.selectById(this.locNo);
-        if (!Cools.isEmpty(locMast)){
+        if (!Cools.isEmpty(locMast)) {
             return String.valueOf(locMast.getLocNo());
         }
         return null;
     }
 
-    public String getStaNo$(){
+    public String getStaNo$() {
         BasDevpService service = SpringUtils.getBean(BasDevpService.class);
         BasDevp basDevp = service.selectById(this.staNo);
-        if (!Cools.isEmpty(basDevp)){
+        if (!Cools.isEmpty(basDevp)) {
             return String.valueOf(basDevp.getDevNo());
         }
         return null;
     }
 
-    public String getSourceStaNo$(){
+    public String getSourceStaNo$() {
         BasDevpService service = SpringUtils.getBean(BasDevpService.class);
         BasDevp basDevp = service.selectById(this.sourceStaNo);
-        if (!Cools.isEmpty(basDevp)){
+        if (!Cools.isEmpty(basDevp)) {
             return String.valueOf(basDevp.getDevNo());
         }
         return null;
     }
 
-    public String getSourceLocNo$(){
+    public String getSourceLocNo$() {
         LocMastService service = SpringUtils.getBean(LocMastService.class);
         LocMast locMast = service.selectById(this.sourceLocNo);
-        if (!Cools.isEmpty(locMast)){
+        if (!Cools.isEmpty(locMast)) {
             return String.valueOf(locMast.getLocNo());
         }
         return null;
     }
 
-    public String getIoTime$(){
-        if (Cools.isEmpty(this.ioTime)){
+    public String getIoTime$() {
+        if (Cools.isEmpty(this.ioTime)) {
             return "";
         }
         return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.ioTime);
     }
 
-    public String getModiUser$(){
+    public String getModiUser$() {
         UserService service = SpringUtils.getBean(UserService.class);
         User user = service.selectById(this.modiUser);
-        if (!Cools.isEmpty(user)){
+        if (!Cools.isEmpty(user)) {
             return String.valueOf(user.getUsername());
         }
         return null;
     }
 
-    public String getModiTime$(){
-        if (Cools.isEmpty(this.modiTime)){
+    public String getModiTime$() {
+        if (Cools.isEmpty(this.modiTime)) {
             return "";
         }
         return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.modiTime);
     }
 
-    public String getAppeUser$(){
+    public String getAppeUser$() {
         UserService service = SpringUtils.getBean(UserService.class);
         User user = service.selectById(this.appeUser);
-        if (!Cools.isEmpty(user)){
+        if (!Cools.isEmpty(user)) {
             return String.valueOf(user.getUsername());
         }
         return null;
     }
 
-    public String getAppeTime$(){
-        if (Cools.isEmpty(this.appeTime)){
+    public String getAppeTime$() {
+        if (Cools.isEmpty(this.appeTime)) {
             return "";
         }
         return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.appeTime);
     }
 
-    public String getErrorTime$(){
-        if (Cools.isEmpty(this.errorTime)){
+    public String getErrorTime$() {
+        if (Cools.isEmpty(this.errorTime)) {
             return "";
         }
         return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.errorTime);
diff --git a/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java b/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java
index 8fb73e0..5bb9bce 100644
--- a/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java
@@ -25,6 +25,9 @@
 
     WrkMast selectByMainWrkNo(Integer workNo);
 
+    WrkMast selectByShuttleNo(Integer shuttleNo);
+
+
     List<WrkMast> selectLiftStep223103();
 
     WrkMast selectByWorkNo324104(Integer workNo);
diff --git a/src/main/java/com/zy/asrs/service/WrkMastService.java b/src/main/java/com/zy/asrs/service/WrkMastService.java
index 6ca8104..176416a 100644
--- a/src/main/java/com/zy/asrs/service/WrkMastService.java
+++ b/src/main/java/com/zy/asrs/service/WrkMastService.java
@@ -11,6 +11,8 @@
 
     WrkMast selectByMainWrkNo(Integer workNo);
 
+    WrkMast selectByShuttleNo(Integer shuttleNo);
+
     Boolean judgeInbound(WrkMast wrkMast);
 
     //鏌ヨ鎸囧畾妤煎眰寰呭垎閰嶈溅杈嗙殑浠诲姟
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 6a8848d..2b97ce7 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -26,14 +26,15 @@
 import com.zy.core.model.command.LiftCommand;
 import com.zy.core.model.command.ShuttleAssignCommand;
 import com.zy.core.model.command.ShuttleCommand;
-import com.zy.core.model.protocol.*;
+import com.zy.core.model.protocol.ForkLiftStaProtocol;
+import com.zy.core.model.protocol.LiftProtocol;
+import com.zy.core.model.protocol.ShuttleProtocol;
+import com.zy.core.model.protocol.StaProtocol;
 import com.zy.core.properties.SlaveProperties;
 import com.zy.core.thread.DevpThread;
-import com.zy.core.thread.ForkLiftThread;
 import com.zy.core.thread.LiftThread;
 import com.zy.core.thread.ShuttleThread;
 import com.zy.core.thread.impl.FyDevpThread;
-import com.zy.system.entity.Config;
 import com.zy.system.service.ConfigService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -355,6 +356,8 @@
             if (!dispatchShuttle) {
                 News.info("{}浠诲姟锛岃皟搴﹀皬杞﹀け璐�", wrkMast.getWrkNo());
                 return;
+            } else {
+                News.info("{}浠诲姟锛屾棤鎻愬崌鏈哄璋冨害灏忚溅鎴愬姛", wrkMast.getWrkNo());
             }
 
             wrkMast.setWrkSts(WrkStsType.OUTBOUND_SHUTTLE_RUN.sts);
@@ -370,6 +373,13 @@
      * 鍑哄簱鍒板嚭搴撳彛
      */
     public synchronized void stnToOutStn() {
+        ShuttleThread shuttleThread1 = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, 1);
+        ShuttleThread shuttleThread2 = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, 2);
+        ShuttleProtocol status1 = shuttleThread1.getStatus();
+        ShuttleProtocol status2 = shuttleThread2.getStatus();
+        List<String> loc = new ArrayList<>();
+        loc.add(status1.getCurrentLocNo());
+        loc.add(status2.getCurrentLocNo());
         DevpSlave devpSlave = slaveProperties.getDevp().get(0);
         // 閬嶅巻鍫嗗灈鏈哄嚭搴撶珯
         DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devpSlave.getId());
@@ -389,11 +399,25 @@
                         if (wrkMast == null) {
                             continue;
                         }
-//                        boolean dispatchShuttle = shuttleDispatchUtils.shuttleMoveGenerate(wrkMast.getWrkNo(), shuttleProtocol.getCurrentLocNo(), wrkMast.getSourceLocNo(), wrkMast.getShuttleNo(), null, true);
-//                        if (!dispatchShuttle) {
-//                            News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛岃皟搴﹁嚦鍙栬揣鐐瑰け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
-//                            continue;
-//                        }
+
+                        String sourceLocNo = "1200305";
+                        String locNo = "1100105";
+                        if (wrkMast.getStaNo() == 1013) {
+                            sourceLocNo = "1200301";
+                            locNo = "1100101";
+                            if (loc.contains(locNo)) {
+                                locNo = "1000101";
+                            }
+                        } else {
+                            if (loc.contains(locNo)) {
+                                locNo = "1000105";
+                            }
+                        }
+
+                        boolean dispatchShuttle = shuttleDispatchUtils.shuttleMoveGenerate(wrkMast.getWrkNo(), sourceLocNo, locNo, wrkMast.getShuttleNo(), null, false);
+                        if (!dispatchShuttle) {
+                            News.taskInfo(wrkMast.getWrkNo(), "{}灏忚溅锛屾尓杞﹁皟搴﹁嚦鍙栬揣鐐瑰け璐�", wrkMast.getShuttleNo());
+                        }
 
                         staProtocol.setWorkNo(Short.parseShort(String.valueOf(wrkMast.getWrkNo())));
                         staProtocol.setStaNo(Short.parseShort(String.valueOf(wrkMast.getStaNo())));
@@ -401,13 +425,13 @@
                         News.info("杈撻�佺嚎鍏ュ簱鍛戒护涓嬪彂锛屼换鍔℃暟鎹�={}", JSON.toJSON(wrkMast));
                         wrkMast.setWrkSts(WrkStsType.OUTBOUND_DEVP_RUN.sts);
                         wrkMast.setModiTime(new Date());
+                        wrkMast.setShuttleNo(null);
                         wrkMastService.updateById(wrkMast);
                     }
                 }
             }
         }
     }
-
 
 
     /**
@@ -569,176 +593,175 @@
     /**
      * 鍑哄簱  ===>>  鍥涘悜绌挎杞﹀嚭搴撲綔涓氫笅鍙�
      */
-    public synchronized void shuttleOutExecute() {
-        try {
-            List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().in("wrk_sts", WrkStsType.NEW_OUTBOUND.sts));
-            for (WrkMast wrkMast : wrkMasts) {
-                boolean step1 = this.shuttleOutExecuteStep1(wrkMast);//灏忚溅鎼嚭搴撲腑
-                if (!step1) {
-                    continue;
-                }
-            }
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-    }
+//    public synchronized void shuttleOutExecute() {
+//        try {
+//            List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().in("wrk_sts", WrkStsType.NEW_OUTBOUND.sts));
+//            for (WrkMast wrkMast : wrkMasts) {
+//                boolean step1 = this.shuttleOutExecuteStep1(wrkMast);//灏忚溅鎼嚭搴撲腑
+//                if (!step1) {
+//                    continue;
+//                }
+//            }
+//        } catch (Exception e) {
+//            e.printStackTrace();
+//        }
+//    }
 
     /**
      * 鍑哄簱-灏忚溅鎼嚭搴撲腑
      * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
      * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
      */
-    public boolean shuttleOutExecuteStep1(WrkMast wrkMast) {
-        //101.鐢熸垚鍑哄簱浠诲姟 => 102.灏忚溅鎼繍涓�
-        if (wrkMast.getWrkSts() == WrkStsType.NEW_OUTBOUND.sts) {
-            Integer liftNo = wrkMast.getLiftNo();
-            if (liftNo == null) {
-                //閫氳繃杈撻�佺嚎绔欏彿鑾峰彇鎻愬崌鏈哄彿
-                liftNo = ForkLiftUtils.getConveyorBindLiftNo(wrkMast.getStaNo());
-                if (liftNo == null) {
-                    News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛屾湭鎵惧埌鍖归厤鐨勬彁鍗囨満", wrkMast.getWrkNo());
-                    return false;
-                }
-
-                //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟
-                WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(liftNo);
-                if (liftWrkMast != null) {
-                    if (!liftWrkMast.getWrkNo().equals(wrkMast.getWrkNo())) {//鎻愬崌鏈轰换鍔″拰褰撳墠浠诲姟涓嶇浉鍚�
-                        News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), liftNo);
-                        return false;
-                    }
-                }
-
-                wrkMast.setLiftNo(liftNo);
-                wrkMast.setModiTime(new Date());
-                wrkMastService.updateById(wrkMast);
-                return false;
-            }
-
-            ForkLiftThread forkLiftThread = (ForkLiftThread) SlaveConnection.get(SlaveType.ForkLift, liftNo);
-            if (forkLiftThread == null) {
-                return false;
-            }
-            ForkLiftProtocol forkLiftProtocol = forkLiftThread.getStatus();
-            if (forkLiftProtocol == null) {
-                return false;
-            }
-
-            //鍒ゆ柇鎻愬崌鏈烘槸鍚﹀浜庡嚭搴撴ā寮�
-            if (!forkLiftProtocol.getIOModeType().equals(ForkLiftIoModeType.OUT)) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛屾彁鍗囨満涓嶅浜庡嚭搴撴ā寮忥紝绂佹鍑哄簱", wrkMast.getWrkNo());
-                return false;
-            }
-
-            //鑾峰彇婧愮珯
-            ForkLiftStaProtocol liftSta = ForkLiftUtils.getLiftStaByLev(liftNo, Utils.getLev(wrkMast.getSourceLocNo()));
-            if (liftSta == null) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛岀己灏戠珯鐐逛俊鎭紝绂佹娲惧彂", wrkMast.getWrkNo());
-                return false;
-            }
-
-            if (liftSta.getHasCar()) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}绔欑偣瀛樺湪灏忚溅锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), liftSta.getStaNo());
-                return false;
-            }
-
-            if (liftSta.getHasTray()) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}绔欑偣鏈夋墭鐩橈紝绂佹娲惧彂", wrkMast.getWrkNo(), liftSta.getStaNo());
-                return false;
-            }
-
-            if (wrkMast.getShuttleNo() == null) {//娌℃湁缁戝畾灏忚溅锛岃繘琛岃皟搴�
-                //寮哄埗棰勭暀涓�鍙板皬杞︾粰鍏ュ簱浠诲姟
-                int lev = Utils.getLev(wrkMast.getSourceLocNo());
-                //鑾峰彇褰撳墠妤煎眰鏈夊嚑鍙板彲鐢ㄥ皬杞�
-                int shuttleCount = shuttleDispatchUtils.getShuttleCountByLev(lev);
-                if (shuttleCount >= 2) {//鍙湁鍙敤灏忚溅鏁伴噺澶т簬2锛屾墠杩涜鍏ュ簱浠诲姟棰勭暀灏忚溅
-                    int shuttleWrkInObligateCount = 1;//棰勭暀灏忚溅鏁伴噺
-                    Config config = configService.selectOne(new EntityWrapper<Config>().eq("code", "shuttleWrkInObligateCount").eq("status", 1));
-                    if (config != null) {
-                        shuttleWrkInObligateCount = Integer.parseInt(config.getValue());
-                    }
-                    //鍙敤鍑哄簱灏忚溅鏁伴噺(缁欏叆搴撲换鍔¢鐣欎竴鍙拌溅)
-                    int useShuttleCount = shuttleCount - shuttleWrkInObligateCount;
-                    //鏌ヨ妤煎眰宸插垎閰嶈溅杈嗙殑鍑哄簱浠诲姟鏁伴噺
-                    List<WrkMast> wrkMasts = wrkMastService.selectShuttleOutWrkByLev(lev);
-                    if (wrkMasts.size() >= useShuttleCount) {
-                        News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛屽綋鍓嶆ゼ灞傚彲鐢ㄥ皬杞}鍙帮紝鍑哄簱浠诲姟宸插垎閰峽}鍙帮紝绯荤粺绛夊緟涓��", wrkMast.getWrkNo(), useShuttleCount, wrkMasts.size());
-                        return false;
-                    }
-                }
-                boolean result = shuttleDispatchUtils.searchDispatchShuttle(wrkMast.getWrkNo(), null, wrkMast.getSourceLocNo(), null);//璋冨害灏忚溅鍒拌揣鐗╂墍鍦ㄥ簱浣嶈繘琛屽彇璐�
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛岃皟搴﹀皬杞}绯荤粺绛夊緟涓��", wrkMast.getWrkNo(), result ? "鎴愬姛" : "澶辫触");
-                return false;
-            }
-
-            //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
-            ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
-            if (shuttleThread == null) {
-                return false;
-            }
-            ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
-            if (shuttleProtocol == null) {
-                return false;
-            }
-            if (!shuttleThread.isIdle()) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛屽繖纰屼腑", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
-                return false;
-            }
-
-            //鍒ゆ柇灏忚溅鏄惁鍒拌揪璐х墿搴撲綅
-            if (!shuttleProtocol.getCurrentLocNo().equals(wrkMast.getSourceLocNo())) {
-                //灏忚溅涓嶅湪杈撻�佺珯鐐逛綅缃�
-                shuttleDispatchUtils.dispatchShuttle(wrkMast.getWrkNo(), wrkMast.getSourceLocNo(), wrkMast.getShuttleNo());//璋冨害灏忚溅鍒拌揣鐗╂墍鍦ㄥ簱浣嶈繘琛屽彇璐�
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛屾湭鍒拌揪杈撻�佺珯鐐癸紝绯荤粺绛夊緟涓�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
-                return false;
-            }
-
-            ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
-            assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙�
-            assignCommand.setTaskMode(ShuttleTaskModeType.TRANSPORT.id);//灏忚溅绉诲簱浠诲姟
-            assignCommand.setTaskNo(wrkMast.getWrkNo());//浠诲姟鍙�
-            assignCommand.setAuto(true);//鑷姩妯″紡
-
-            //鑾峰彇灏忚溅鍒拌緭閫佺珯鐐硅璧板懡浠�
-            List<ShuttleCommand> commands = shuttleOperaUtils.getStartToTargetCommands(wrkMast.getSourceLocNo(), liftSta.getLocNo(), NavigationMapType.DFX.id, assignCommand, shuttleThread);
-            if (commands == null) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛岃矾寰勮绠楀け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
-                return false;
-            }
-
-            List<ShuttleCommand> liftCommand = shuttleOperaUtils.getShuttleLiftCommand(assignCommand, shuttleThread, true);
-            if (liftCommand == null) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅鑾峰彇椤跺崌鍛戒护澶辫触", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
-                return false;
-            }
-
-            List<ShuttleCommand> liftCommand2 = shuttleOperaUtils.getShuttleLiftCommand(assignCommand, shuttleThread, false);
-            if (liftCommand2 == null) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅鑾峰彇涓嬮檷鍛戒护澶辫触", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
-                return false;
-            }
-
-            commands.add(0, liftCommand.get(0));
-            commands.add(liftCommand2.get(0));
-            assignCommand.setCommands(commands);
-
-            wrkMast.setWrkSts(WrkStsType.OUTBOUND_SHUTTLE_RUN.sts);//灏忚溅鎼繍涓�  101.鐢熸垚鍑哄簱浠诲姟 ==> 102.灏忚溅鎼繍涓�
-            wrkMast.setSourceStaNo(liftSta.getStaNo());
-            wrkMast.setModiTime(new Date());
-            wrkMast.setSystemMsg("");//娓呯┖娑堟伅
-            if (wrkMastService.updateById(wrkMast)) {
-                //涓嬪彂浠诲姟
-                shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand);
-                //瑙﹀彂閫氱煡
-                notifyUtils.notify(String.valueOf(SlaveType.Shuttle), shuttleProtocol.getShuttleNo(), String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.SHUTTLE_TRANSPORT);
-                return false;
-            }
-            return false;
-        }
-        return true;
-    }
-
+//    public boolean shuttleOutExecuteStep1(WrkMast wrkMast) {
+//        //101.鐢熸垚鍑哄簱浠诲姟 => 102.灏忚溅鎼繍涓�
+//        if (wrkMast.getWrkSts() == WrkStsType.NEW_OUTBOUND.sts) {
+//            Integer liftNo = wrkMast.getLiftNo();
+//            if (liftNo == null) {
+//                //閫氳繃杈撻�佺嚎绔欏彿鑾峰彇鎻愬崌鏈哄彿
+//                liftNo = ForkLiftUtils.getConveyorBindLiftNo(wrkMast.getStaNo());
+//                if (liftNo == null) {
+//                    News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛屾湭鎵惧埌鍖归厤鐨勬彁鍗囨満", wrkMast.getWrkNo());
+//                    return false;
+//                }
+//
+//                //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟
+//                WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(liftNo);
+//                if (liftWrkMast != null) {
+//                    if (!liftWrkMast.getWrkNo().equals(wrkMast.getWrkNo())) {//鎻愬崌鏈轰换鍔″拰褰撳墠浠诲姟涓嶇浉鍚�
+//                        News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), liftNo);
+//                        return false;
+//                    }
+//                }
+//
+//                wrkMast.setLiftNo(liftNo);
+//                wrkMast.setModiTime(new Date());
+//                wrkMastService.updateById(wrkMast);
+//                return false;
+//            }
+//
+//            ForkLiftThread forkLiftThread = (ForkLiftThread) SlaveConnection.get(SlaveType.ForkLift, liftNo);
+//            if (forkLiftThread == null) {
+//                return false;
+//            }
+//            ForkLiftProtocol forkLiftProtocol = forkLiftThread.getStatus();
+//            if (forkLiftProtocol == null) {
+//                return false;
+//            }
+//
+//            //鍒ゆ柇鎻愬崌鏈烘槸鍚﹀浜庡嚭搴撴ā寮�
+//            if (!forkLiftProtocol.getIOModeType().equals(ForkLiftIoModeType.OUT)) {
+//                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛屾彁鍗囨満涓嶅浜庡嚭搴撴ā寮忥紝绂佹鍑哄簱", wrkMast.getWrkNo());
+//                return false;
+//            }
+//
+//            //鑾峰彇婧愮珯
+//            ForkLiftStaProtocol liftSta = ForkLiftUtils.getLiftStaByLev(liftNo, Utils.getLev(wrkMast.getSourceLocNo()));
+//            if (liftSta == null) {
+//                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛岀己灏戠珯鐐逛俊鎭紝绂佹娲惧彂", wrkMast.getWrkNo());
+//                return false;
+//            }
+//
+//            if (liftSta.getHasCar()) {
+//                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}绔欑偣瀛樺湪灏忚溅锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), liftSta.getStaNo());
+//                return false;
+//            }
+//
+//            if (liftSta.getHasTray()) {
+//                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}绔欑偣鏈夋墭鐩橈紝绂佹娲惧彂", wrkMast.getWrkNo(), liftSta.getStaNo());
+//                return false;
+//            }
+//
+//            if (wrkMast.getShuttleNo() == null) {//娌℃湁缁戝畾灏忚溅锛岃繘琛岃皟搴�
+//                //寮哄埗棰勭暀涓�鍙板皬杞︾粰鍏ュ簱浠诲姟
+//                int lev = Utils.getLev(wrkMast.getSourceLocNo());
+//                //鑾峰彇褰撳墠妤煎眰鏈夊嚑鍙板彲鐢ㄥ皬杞�
+//                int shuttleCount = shuttleDispatchUtils.getShuttleCountByLev(lev);
+//                if (shuttleCount >= 2) {//鍙湁鍙敤灏忚溅鏁伴噺澶т簬2锛屾墠杩涜鍏ュ簱浠诲姟棰勭暀灏忚溅
+//                    int shuttleWrkInObligateCount = 1;//棰勭暀灏忚溅鏁伴噺
+//                    Config config = configService.selectOne(new EntityWrapper<Config>().eq("code", "shuttleWrkInObligateCount").eq("status", 1));
+//                    if (config != null) {
+//                        shuttleWrkInObligateCount = Integer.parseInt(config.getValue());
+//                    }
+//                    //鍙敤鍑哄簱灏忚溅鏁伴噺(缁欏叆搴撲换鍔¢鐣欎竴鍙拌溅)
+//                    int useShuttleCount = shuttleCount - shuttleWrkInObligateCount;
+//                    //鏌ヨ妤煎眰宸插垎閰嶈溅杈嗙殑鍑哄簱浠诲姟鏁伴噺
+//                    List<WrkMast> wrkMasts = wrkMastService.selectShuttleOutWrkByLev(lev);
+//                    if (wrkMasts.size() >= useShuttleCount) {
+//                        News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛屽綋鍓嶆ゼ灞傚彲鐢ㄥ皬杞}鍙帮紝鍑哄簱浠诲姟宸插垎閰峽}鍙帮紝绯荤粺绛夊緟涓��", wrkMast.getWrkNo(), useShuttleCount, wrkMasts.size());
+//                        return false;
+//                    }
+//                }
+//                boolean result = shuttleDispatchUtils.searchDispatchShuttle(wrkMast.getWrkNo(), null, wrkMast.getSourceLocNo(), null);//璋冨害灏忚溅鍒拌揣鐗╂墍鍦ㄥ簱浣嶈繘琛屽彇璐�
+//                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛岃皟搴﹀皬杞}绯荤粺绛夊緟涓��", wrkMast.getWrkNo(), result ? "鎴愬姛" : "澶辫触");
+//                return false;
+//            }
+//
+//            //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
+//            ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
+//            if (shuttleThread == null) {
+//                return false;
+//            }
+//            ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
+//            if (shuttleProtocol == null) {
+//                return false;
+//            }
+//            if (!shuttleThread.isIdle()) {
+//                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛屽繖纰屼腑", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
+//                return false;
+//            }
+//
+//            //鍒ゆ柇灏忚溅鏄惁鍒拌揪璐х墿搴撲綅
+//            if (!shuttleProtocol.getCurrentLocNo().equals(wrkMast.getSourceLocNo())) {
+//                //灏忚溅涓嶅湪杈撻�佺珯鐐逛綅缃�
+//                shuttleDispatchUtils.dispatchShuttle(wrkMast.getWrkNo(), wrkMast.getSourceLocNo(), wrkMast.getShuttleNo());//璋冨害灏忚溅鍒拌揣鐗╂墍鍦ㄥ簱浣嶈繘琛屽彇璐�
+//                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛屾湭鍒拌揪杈撻�佺珯鐐癸紝绯荤粺绛夊緟涓�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
+//                return false;
+//            }
+//
+//            ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
+//            assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙�
+//            assignCommand.setTaskMode(ShuttleTaskModeType.TRANSPORT.id);//灏忚溅绉诲簱浠诲姟
+//            assignCommand.setTaskNo(wrkMast.getWrkNo());//浠诲姟鍙�
+//            assignCommand.setAuto(true);//鑷姩妯″紡
+//
+//            //鑾峰彇灏忚溅鍒拌緭閫佺珯鐐硅璧板懡浠�
+//            List<ShuttleCommand> commands = shuttleOperaUtils.getStartToTargetCommands(wrkMast.getSourceLocNo(), liftSta.getLocNo(), NavigationMapType.DFX.id, assignCommand, shuttleThread);
+//            if (commands == null) {
+//                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛岃矾寰勮绠楀け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
+//                return false;
+//            }
+//
+//            List<ShuttleCommand> liftCommand = shuttleOperaUtils.getShuttleLiftCommand(assignCommand, shuttleThread, true);
+//            if (liftCommand == null) {
+//                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅鑾峰彇椤跺崌鍛戒护澶辫触", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
+//                return false;
+//            }
+//
+//            List<ShuttleCommand> liftCommand2 = shuttleOperaUtils.getShuttleLiftCommand(assignCommand, shuttleThread, false);
+//            if (liftCommand2 == null) {
+//                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅鑾峰彇涓嬮檷鍛戒护澶辫触", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
+//                return false;
+//            }
+//
+//            commands.add(0, liftCommand.get(0));
+//            commands.add(liftCommand2.get(0));
+//            assignCommand.setCommands(commands);
+//
+//            wrkMast.setWrkSts(WrkStsType.OUTBOUND_SHUTTLE_RUN.sts);//灏忚溅鎼繍涓�  101.鐢熸垚鍑哄簱浠诲姟 ==> 102.灏忚溅鎼繍涓�
+//            wrkMast.setSourceStaNo(liftSta.getStaNo());
+//            wrkMast.setModiTime(new Date());
+//            wrkMast.setSystemMsg("");//娓呯┖娑堟伅
+//            if (wrkMastService.updateById(wrkMast)) {
+//                //涓嬪彂浠诲姟
+//                shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand);
+//                //瑙﹀彂閫氱煡
+//                notifyUtils.notify(String.valueOf(SlaveType.Shuttle), shuttleProtocol.getShuttleNo(), String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.SHUTTLE_TRANSPORT);
+//                return false;
+//            }
+//            return false;
+//        }
+//        return true;
+//    }
     public synchronized void liftInExecute() {
         try {
             List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().in("wrk_sts", WrkStsType.NEW_INBOUND.sts, WrkStsType.INBOUND_DEVICE_RUN.sts, WrkStsType.INBOUND_LIFT_RUN_COMPLETE.sts).in("source_sta_no", 1012, 1022));
@@ -969,7 +992,8 @@
             }
 
             wrkMast.setWrkSts(WrkStsType.INBOUND_SHUTTLE_RUN.sts);
-            wrkMast.setLiftNo(null);
+            // TODO 娴嬭瘯涓彂鐜颁笉鑳借В绂侊紝鍥犱负鎻愬崌鏈洪噷瀛樺湪鎵樼洏锛屽氨涓嶈兘瑙g锛屼笉鐒跺彟涓�杈嗗皬杞﹀彲鑳戒細杩戞彁鍗囨満
+            //wrkMast.setLiftNo(null);
             wrkMast.setSystemMsg("");//娓呯┖娑堟伅
             wrkMast.setModiTime(now);
             if (wrkMastService.updateById(wrkMast)) {
@@ -1032,6 +1056,8 @@
             if (!dispatchShuttle) {
                 News.info("{}浠诲姟锛岃皟搴﹀皬杞﹀け璐�", wrkMast.getWrkNo());
                 return false;
+            } else {
+                News.info("{}浠诲姟锛屾棤鎻愬崌鏈哄璋冨害灏忚溅鎴愬姛", wrkMast.getWrkNo());
             }
 
             wrkMast.setWrkSts(WrkStsType.OUTBOUND_SHUTTLE_RUN.sts);
diff --git a/src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java
index 598fe90..01aa8e7 100644
--- a/src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java
@@ -122,6 +122,11 @@
     }
 
     @Override
+    public WrkMast selectByShuttleNo(Integer shuttleNo) {
+        return this.baseMapper.selectByShuttleNo(shuttleNo);
+    }
+
+    @Override
     public List<WrkMast> selectShuttleMoveWrk() {
         return this.baseMapper.selectShuttleMoveWrk();
     }
diff --git a/src/main/java/com/zy/asrs/task/WrkMastScheduler.java b/src/main/java/com/zy/asrs/task/WrkMastScheduler.java
index 3dcfbe4..725af3a 100644
--- a/src/main/java/com/zy/asrs/task/WrkMastScheduler.java
+++ b/src/main/java/com/zy/asrs/task/WrkMastScheduler.java
@@ -205,12 +205,15 @@
                 if (main.getIoType() == WrkIoType.IN.id) {
                     main.setWrkSts(WrkStsType.COMPLETE_INBOUND.sts);
                 } else if (main.getIoType() == WrkIoType.OUT.id) {
+                    main.setShuttleNo(wrkMast.getShuttleNo());
                     main.setWrkSts(WrkStsType.OUTBOUND_SHUTTLE_RUN_COMPLETE.sts);
                 }
                 main.setModiTime(new Date());
                 if (!wrkMastService.updateById(main)) {
                     log.info("鏇存柊涓诲伐浣滄。[workNo={}]澶辫触", wrkMast.getWrkNo());
                 }
+            } else {
+                log.info("鎵句笉鍒颁富宸ヤ綔妗workNo={},mainWorkNo={}]澶辫触", wrkMast.getWrkNo(), wrkMast.getMainWrkNo());
             }
             // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗�
             if (!wrkMastLogService.save(wrkMast.getWrkNo())) {
diff --git a/src/main/java/com/zy/common/service/CommonService.java b/src/main/java/com/zy/common/service/CommonService.java
index 467b794..27935c9 100644
--- a/src/main/java/com/zy/common/service/CommonService.java
+++ b/src/main/java/com/zy/common/service/CommonService.java
@@ -3,8 +3,13 @@
 import com.core.common.Cools;
 import com.core.exception.CoolException;
 import com.zy.asrs.domain.param.*;
-import com.zy.asrs.entity.*;
-import com.zy.asrs.service.*;
+import com.zy.asrs.entity.LocMast;
+import com.zy.asrs.entity.WrkLastno;
+import com.zy.asrs.entity.WrkMast;
+import com.zy.asrs.service.LocMastService;
+import com.zy.asrs.service.WrkLastnoService;
+import com.zy.asrs.service.WrkMastLogService;
+import com.zy.asrs.service.WrkMastService;
 import com.zy.core.News;
 import com.zy.core.enums.WrkIoType;
 import com.zy.core.enums.WrkStsType;
@@ -40,17 +45,17 @@
         int workNo = wrkLastno.getWrkNo();
         int sNo = wrkLastno.getSNo();
         int eNo = wrkLastno.getENo();
-        workNo = workNo>=eNo ? sNo : workNo+1;
+        workNo = workNo >= eNo ? sNo : workNo + 1;
         while (true) {
             WrkMast wrkMast = wrkMastService.selectByWorkNo(workNo);
             if (null != wrkMast) {
-                workNo = workNo>=eNo ? sNo : workNo+1;
+                workNo = workNo >= eNo ? sNo : workNo + 1;
             } else {
                 break;
             }
         }
         // 淇敼搴忓彿璁板綍
-        if (workNo > 0){
+        if (workNo > 0) {
             wrkLastno.setWrkNo(workNo);
             wrkLastnoService.updateById(wrkLastno);
         }
@@ -58,7 +63,7 @@
         if (workNo == 0) {
             throw new CoolException("鐢熸垚宸ヤ綔鍙峰け璐ワ紝璇疯仈绯荤鐞嗗憳");
         } else {
-            if (wrkMastService.selectByWorkNo(workNo)!=null) {
+            if (wrkMastService.selectByWorkNo(workNo) != null) {
                 throw new CoolException("鐢熸垚宸ヤ綔鍙�" + workNo + "鍦ㄥ伐浣滄。涓凡瀛樺湪");
             }
         }
@@ -72,7 +77,7 @@
             return msg.substring(0, 16);
         } else {
             StringBuilder msgBuilder = new StringBuilder(msg);
-            for(int i = 0; i < count - msg.length(); ++i) {
+            for (int i = 0; i < count - msg.length(); ++i) {
                 msgBuilder.insert(0, "0");
             }
             return msgBuilder.toString();
@@ -88,7 +93,7 @@
 
         if (wrkMast.getIoType() == WrkIoType.IN.id) {
             wrkMast.setWrkSts(WrkStsType.COMPLETE_INBOUND.sts);
-        }else if (wrkMast.getIoType() == WrkIoType.OUT.id) {
+        } else if (wrkMast.getIoType() == WrkIoType.OUT.id) {
             wrkMast.setWrkSts(WrkStsType.COMPLETE_OUTBOUND.sts);
         } else if (wrkMast.getIoType() == WrkIoType.SHUTTLE_MOVE.id) {
             wrkMast.setWrkSts(WrkStsType.COMPLETE_MOVE.sts);
diff --git a/src/main/java/com/zy/core/MainProcess.java b/src/main/java/com/zy/core/MainProcess.java
index 84c16c0..ae2db7f 100644
--- a/src/main/java/com/zy/core/MainProcess.java
+++ b/src/main/java/com/zy/core/MainProcess.java
@@ -50,7 +50,7 @@
                     mainService.noLiftIn();
                     // 鍑哄簱
                     mainService.outFirst();
-                    mainService.stnToOutStn();
+                    mainService.stnToOutStn();//杈撻�佺嚎
                     //杈撻�佺嚎瀹屾垚鍒ゆ柇
                     mainService.devpFinished();
 
diff --git a/src/main/java/com/zy/core/dispatcher/ShuttleDispatchUtils.java b/src/main/java/com/zy/core/dispatcher/ShuttleDispatchUtils.java
index 9b14b9f..2e9c8bf 100644
--- a/src/main/java/com/zy/core/dispatcher/ShuttleDispatchUtils.java
+++ b/src/main/java/com/zy/core/dispatcher/ShuttleDispatchUtils.java
@@ -177,16 +177,20 @@
                     //褰撳墠绌挎杞﹀簱浣嶅彿
                     String currentLocNo = shuttleProtocol.getCurrentLocNo();
                     int currentLev = Utils.getLev(currentLocNo);
-                    List<WrkMast> wrkMasts1 = wrkMastService.selectNoShuttleWrkByLev(currentLev);//鍒ゆ柇褰撳墠绌挎杞︽ゼ灞傛槸鍚︽湁寰呭垎閰嶈溅杈嗙殑浠诲姟锛屽鏋滄湁鍒欎笉鍒嗛厤杩欒締杞�
-                    int shuttleCount = this.getShuttleCountByLev(currentLev);//鑾峰彇绌挎杞︽ゼ灞傝溅杈嗘暟閲�
-                    if (!wrkMasts1.isEmpty() && shuttleCount <= 1) {
-                        //瀛樺湪鍏朵粬浠诲姟涓斿彲鐢ㄥ皬杞︽暟閲忓皬浜庣瓑浜�1锛岃烦杩囪繖杈嗚溅
-                        continue;
-                    }
+//                    List<WrkMast> wrkMasts1 = wrkMastService.selectNoShuttleWrkByLev(currentLev);//鍒ゆ柇褰撳墠绌挎杞︽ゼ灞傛槸鍚︽湁寰呭垎閰嶈溅杈嗙殑浠诲姟锛屽鏋滄湁鍒欎笉鍒嗛厤杩欒締杞�
+//                    int shuttleCount = this.getShuttleCountByLev(currentLev);//鑾峰彇绌挎杞︽ゼ灞傝溅杈嗘暟閲�
+//                    if (!wrkMasts1.isEmpty() && shuttleCount <= 1) {
+//                        //瀛樺湪鍏朵粬浠诲姟涓斿彲鐢ㄥ皬杞︽暟閲忓皬浜庣瓑浜�1锛岃烦杩囪繖杈嗚溅
+//                        continue;
+//                    }
 
                     //ABS(鐩爣妤煎眰 - 褰撳墠妤煎眰) 寰楀埌宸窛锛屽彇鏈�灏忓樊鍊�
                     int currentValue = Math.abs(lev - currentLev);
-                    diffShuttles.put(currentValue, shuttleThread);
+                    if (diffShuttles.get(currentValue) != null) {
+                        diffShuttles.put(currentValue + 1, shuttleThread);
+                    } else {
+                        diffShuttles.put(currentValue, shuttleThread);
+                    }
                 }
 
                 //灏濊瘯璋冨害璺ㄦゼ灞傚皬杞�
@@ -319,16 +323,20 @@
                     //褰撳墠绌挎杞﹀簱浣嶅彿
                     String currentLocNo = shuttleProtocol.getCurrentLocNo();
                     int currentLev = Utils.getLev(currentLocNo);
-                    List<WrkMast> wrkMasts1 = wrkMastService.selectNoShuttleWrkByLev(currentLev);//鍒ゆ柇褰撳墠绌挎杞︽ゼ灞傛槸鍚︽湁寰呭垎閰嶈溅杈嗙殑浠诲姟锛屽鏋滄湁鍒欎笉鍒嗛厤杩欒締杞�
-                    int shuttleCount = this.getShuttleCountByLev(currentLev);//鑾峰彇绌挎杞︽ゼ灞傝溅杈嗘暟閲�
-                    if (!wrkMasts1.isEmpty() && shuttleCount <= 1) {
-                        //瀛樺湪鍏朵粬浠诲姟涓斿彲鐢ㄥ皬杞︽暟閲忓皬浜庣瓑浜�1锛岃烦杩囪繖杈嗚溅
-                        continue;
-                    }
+//                    List<WrkMast> wrkMasts1 = wrkMastService.selectNoShuttleWrkByLev(currentLev);//鍒ゆ柇褰撳墠绌挎杞︽ゼ灞傛槸鍚︽湁寰呭垎閰嶈溅杈嗙殑浠诲姟锛屽鏋滄湁鍒欎笉鍒嗛厤杩欒締杞�
+//                    int shuttleCount = this.getShuttleCountByLev(currentLev);//鑾峰彇绌挎杞︽ゼ灞傝溅杈嗘暟閲�
+//                    if (!wrkMasts1.isEmpty() && shuttleCount <= 1) {
+//                        //瀛樺湪鍏朵粬浠诲姟涓斿彲鐢ㄥ皬杞︽暟閲忓皬浜庣瓑浜�1锛岃烦杩囪繖杈嗚溅
+//                        continue;
+//                    }
 
                     //ABS(鐩爣妤煎眰 - 褰撳墠妤煎眰) 寰楀埌宸窛锛屽彇鏈�灏忓樊鍊�
                     int currentValue = Math.abs(lev - currentLev);
-                    diffShuttles.put(currentValue, shuttleThread);
+                    if (diffShuttles.get(currentValue) != null) {
+                        diffShuttles.put(currentValue + 1, shuttleThread);
+                    } else {
+                        diffShuttles.put(currentValue, shuttleThread);
+                    }
                 }
 
                 //灏濊瘯璋冨害璺ㄦゼ灞傚皬杞�
@@ -387,9 +395,11 @@
             News.info("{}鍙峰皬杞︼紝瀛樺湪绉诲姩浠诲姟锛岀瓑寰呮墽琛屽畬鎴愬悗鍐嶇敓鎴愭柊鐨勪换鍔�", shuttleNo);
             return false;
         }
-
+        WrkMast mainWrkMast = null;
         //鑾峰彇涓诲伐浣滄。淇℃伅
-        WrkMast mainWrkMast = wrkMastService.selectByWorkNo(wrkNo);
+        if (wrkNo != null) {
+            mainWrkMast = wrkMastService.selectByWorkNo(wrkNo);
+        }
 
         //鍒ゆ柇鏄惁鏈夊叾浠栦换鍔℃鍦ㄤ娇鐢ㄧ┛姊溅
         WrkMast wrkMast2 = wrkMastService.selectShuttleWorking(shuttleNo);
@@ -425,9 +435,8 @@
         wrkMast.setLocNo(locNo); // 鐩爣搴撲綅
         wrkMast.setAppeTime(now);
         wrkMast.setModiTime(now);
-        wrkMast.setMainWrkNo(mainWrkMast.getWrkNo());
 
-        if ("TRANSPORT_LIFT".equals(flag)) {
+        if ("TRANSPORT_LIFT".equalsIgnoreCase(flag) || "TRANSPORT_DEVP".equalsIgnoreCase(flag)) {
             wrkMast.setMainWrkNo(wrkNo);
         }
 
diff --git a/src/main/resources/mapper/WrkMastMapper.xml b/src/main/resources/mapper/WrkMastMapper.xml
index 2184615..7a35e8d 100644
--- a/src/main/resources/mapper/WrkMastMapper.xml
+++ b/src/main/resources/mapper/WrkMastMapper.xml
@@ -70,6 +70,12 @@
         where main_wrk_no = #{mainWrkNo} limit 0,1
     </select>
 
+    <select id="selectByShuttleNo" resultMap="BaseResultMap">
+        select *
+        from asr_wrk_mast
+        where shuttle_no = #{shuttleNo} limit 0,1
+    </select>
+
     <select id="selectLiftStep223103" resultMap="BaseResultMap">
         select *
         from asr_wrk_mast
diff --git a/src/main/webapp/views/admin/wrkMast/wrkMast.html b/src/main/webapp/views/admin/wrkMast/wrkMast.html
index bbaa936..f8396ce 100644
--- a/src/main/webapp/views/admin/wrkMast/wrkMast.html
+++ b/src/main/webapp/views/admin/wrkMast/wrkMast.html
@@ -55,6 +55,8 @@
 						</el-table-column>
 						<el-table-column property="shuttleNo" label="绌挎杞�">
 						</el-table-column>
+						<el-table-column property="mainWrkNo" label="涓讳换鍔″彿">
+						</el-table-column>
 						<el-table-column property="systemMsg" label="绯荤粺娑堟伅">
 						</el-table-column>
 						<el-table-column label="鎿嶄綔" width="100">

--
Gitblit v1.9.1