From de92c7f5e4643f678febef20435473f8c619b3d0 Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@63.com>
Date: 星期五, 11 三月 2022 09:55:28 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |  100 ++++++++++++++++++++++++++++---------------------
 src/main/java/com/zy/asrs/mapper/WrkMastMapper.java         |    2 
 src/main/resources/mapper/WrkMastMapper.xml                 |    4 +-
 src/main/java/com/zy/core/MainProcess.java                  |    2 -
 4 files changed, 60 insertions(+), 48 deletions(-)

diff --git a/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java b/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java
index f20acb6..b2ea12f 100644
--- a/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java
@@ -35,7 +35,7 @@
 
     WrkMast selectPakInStep45(@Param("workNo")Integer workNo);
 
-    WrkMast selectPakInStep8(@Param("steNo")Integer steNo);
+    WrkMast selectCarWaiting(@Param("workNo")Integer workNo);
 
     // 鎷f枡鍐嶅叆搴撴椂锛岀珯鐐规湁鐗╀笖闇�姹傛椂鏌ヨ
 //    @Select("select top 1 * from asr_wrk_mast where wrk_no=#{workNo} and wrk_sts=14 and (io_type=103 or io_type=107 or io_type=104)")
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 19d9816..9972426 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -735,7 +735,7 @@
     }
 
     /**
-     * 鍏ュ簱  ===>>  鍫嗗灈鏈烘惉鍏ュ皬杞�
+     * 鍏ュ嚭搴�  ===>>  鍫嗗灈鏈烘惉鍏ュ皬杞�
      */
     public void carMoveIn(WrkMast wrkMast, Integer steNo, CrnProtocol crnProtocol) {
         // 鑾峰彇鍫嗗灈鏈轰俊鎭�
@@ -746,6 +746,7 @@
             // 鍫嗗灈鏈虹┖闂�
             if (crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() == 0) {
                 LocMast locMast;
+                // 鍏ュ簱鎼�
                 if (wrkMast.getWrkSts() <= 10) {
                     locMast = locMastService.selectById(wrkMast.getLocNo());
                     // 鍫嗗灈鏈哄懡浠や笅鍙戝尯 --------------------------------------------------------------------------
@@ -772,7 +773,33 @@
                             log.error("淇敼宸ヤ綔妗g姸鎬� 3.灏忚溅寰呮惉 => 4.杩佸叆灏忚溅 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
                         }
                     }
-
+                // 鍑哄簱鎼�
+                } else {
+                    locMast = locMastService.selectById(wrkMast.getSourceLocNo());
+                    // 鍫嗗灈鏈哄懡浠や笅鍙戝尯 --------------------------------------------------------------------------
+                    CrnCommand crnCommand = new CrnCommand();
+                    crnCommand.setCrnNo(crnProtocol.getCrnNo()); // 鍫嗗灈鏈虹紪鍙�
+                    crnCommand.setTaskNo(wrkMast.getWrkNo().shortValue()); // 宸ヤ綔鍙�
+                    crnCommand.setAckFinish((short) 0);  // 浠诲姟瀹屾垚纭浣�
+                    crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡:  搴撲綅绉昏浆
+                    crnCommand.setSourcePosX(steProtocol.getRow());     // 婧愬簱浣嶆帓
+                    crnCommand.setSourcePosY(steProtocol.getBay());     // 婧愬簱浣嶅垪
+                    crnCommand.setSourcePosZ(steProtocol.getLev());     // 婧愬簱浣嶅眰
+                    crnCommand.setDestinationPosX(Utils.getGroupRow(locMast.getLocNo()).shortValue());     // 鐩爣搴撲綅鎺�
+                    crnCommand.setDestinationPosY(locMast.getBay1().shortValue());     // 鐩爣搴撲綅鍒�
+                    crnCommand.setDestinationPosZ(locMast.getLev1().shortValue());     // 鐩爣搴撲綅灞�
+                    if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getCrnNo(), new Task(2, crnCommand))) {
+                        log.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand));
+                    } else {
+                        // 淇敼宸ヤ綔妗g姸鎬� 12.灏忚溅寰呮惉 => 13.杩佸叆灏忚溅
+                        Date now = new Date();
+                        wrkMast.setWrkSts(13L);
+                        wrkMast.setCrnStrTime(now);
+                        wrkMast.setModiTime(now);
+                        if (wrkMastMapper.updateById(wrkMast) == 0) {
+                            log.error("淇敼宸ヤ綔妗g姸鎬� 12.灏忚溅寰呮惉 => 13.杩佸叆灏忚溅 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
+                        }
+                    }
                 }
             }
 
@@ -985,7 +1012,7 @@
                             }
                         }
                         // 鍫嗗灈鏈烘惉杩愬皬杞�
-                        if (wrkMast.getWrkSts() == 3L) {
+                        if (wrkMast.getWrkSts() == 12L) {
                             this.carMoveIn(wrkMast, wrkMast.getSteNo(), crnProtocol);
                         }
                     }
@@ -1066,43 +1093,6 @@
 
 
     /**
-     * 鍫嗗灈鏈洪拡瀵逛簬灏忚溅杩佺Щ宸ヤ綔鐨勫畬鎴�
-     */
-    @Async
-    public void carMoveFinished() {
-        for (CrnSlave crn : slaveProperties.getCrn()) {
-            // 鑾峰彇鍫嗗灈鏈轰俊鎭�
-            CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId());
-            CrnProtocol crnProtocol = crnThread.getCrnProtocol();
-            if (crnProtocol == null) { continue; }
-            //  鐘舵�侊細绛夊緟纭 骞朵笖  浠诲姟瀹屾垚浣� = 1
-            if (crnProtocol.statusType == CrnStatusType.WAITING && crnProtocol.getTaskNo() != 0) {
-                // 鑾峰彇鍏ュ簱寰呯‘璁ゅ伐浣滄。
-                WrkMast wrkMast = wrkMastMapper.selectPakInStep45(crnProtocol.getTaskNo().intValue());
-                if (wrkMast == null) {
-                    log.error("鍫嗗灈鏈哄浜庣瓑寰呯‘璁や笖浠诲姟瀹屾垚鐘舵�侊紝浣嗘湭鎵惧埌宸ヤ綔妗c�傚爢鍨涙満鍙�={}锛屽伐浣滃彿={}", crn.getId(), crnProtocol.getTaskNo());
-                    continue;
-                }
-                // 鍏ュ簱 + 搴撲綅杞Щ  ==> 6.灏忚溅寰呭叆
-                if ((wrkMast.getWrkSts() == 4 || wrkMast.getWrkSts() == 5) || (wrkMast.getWrkSts() == 12 && wrkMast.getIoType() == 11)){
-                    wrkMast.setWrkSts(6L);
-                } else  {
-                    continue;
-                }
-                Date now = new Date();
-                wrkMast.setCrnEndTime(now);
-                wrkMast.setModiTime(now);
-                // 淇敼鎴愬姛鍚庡浣嶅爢鍨涙満
-                if (wrkMastMapper.updateById(wrkMast) > 0) {
-                    // 鍫嗗灈鏈哄浣�
-                    crnThread.setResetFlag(true);
-                }
-
-            }
-        }
-    }
-
-    /**
      * 鎵ц瀵瑰伐浣滄。鐨勫畬鎴愭搷浣�
      */
     @Async
@@ -1167,7 +1157,7 @@
                             }
                         }
                     }
-                // 杩佸叆灏忚溅 瀹屾垚
+                // 鍏ュ簱 ===>> 杩佸叆灏忚溅 瀹屾垚
                 } else if (wrkMast.getWrkSts() == 4) {
                     // 4.杩佸叆灏忚溅 ==> 6.灏忚溅寰呭叆
                     wrkMast.setWrkSts(6L);
@@ -1181,7 +1171,7 @@
                     } else {
                         log.error("淇敼宸ヤ綔妗g姸鎬� 4.杩佸叆灏忚溅 => 6.灏忚溅寰呭叆 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
                     }
-                // 杩佸嚭灏忚溅 瀹屾垚
+                // 鍏ュ簱 ===>> 杩佸嚭灏忚溅 瀹屾垚
                 } else if (wrkMast.getWrkSts() == 5) {
                     // 5.杩佸嚭灏忚溅 ==> 6.灏忚溅寰呭叆
                     wrkMast.setWrkSts(6L);
@@ -1194,6 +1184,20 @@
                         crnThread.setResetFlag(true);
                     } else {
                         log.error("淇敼宸ヤ綔妗g姸鎬� 5.杩佸嚭灏忚溅 => 6.灏忚溅寰呭叆 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
+                    }
+                // 鍑哄簱 ===>> 杩佸叆灏忚溅 瀹屾垚
+                } else if (wrkMast.getWrkSts() == 13) {
+                    // 13.杩佸叆灏忚溅 ==> 14.灏忚溅鎼嚭搴�
+                    wrkMast.setWrkSts(14L);
+                    Date now = new Date();
+                    wrkMast.setCrnEndTime(now);
+                    wrkMast.setModiTime(now);
+                    // 淇敼鎴愬姛鍚庡浣嶅爢鍨涙満
+                    if (wrkMastMapper.updateById(wrkMast) > 0) {
+                        // 鍫嗗灈鏈哄浣�
+                        crnThread.setResetFlag(true);
+                    } else {
+                        log.error("淇敼宸ヤ綔妗g姸鎬� 13.杩佸叆灏忚溅 ==> 14.灏忚溅鎼嚭搴� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
                     }
                 }
             }
@@ -1212,7 +1216,7 @@
             if (steProtocol == null) { continue; }
             if (steProtocol.getStatusType().equals(SteStatusType.WAITING) && steProtocol.getTaskNo() != 0) {
                 // 鏌ヨ鏄惁鏈夊緟鍏ュ簱鐨勪换鍔�
-                WrkMast wrkMast = wrkMastMapper.selectPakInStep8(steProtocol.getSteNo().intValue());
+                WrkMast wrkMast = wrkMastMapper.selectCarWaiting(steProtocol.getTaskNo());
                 if (wrkMast == null) { continue; }
 
                 switch (wrkMast.getWrkSts().intValue()) {
@@ -1236,6 +1240,16 @@
                             steThread.setResetFlag(true);
                         }
                         break;
+                    case 11:
+                        // 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.灏忚溅寰呮惉
+                        wrkMast.setWrkSts(12L);
+                        wrkMast.setModiTime(now);
+                        if (wrkMastMapper.updateById(wrkMast) == 0) {
+                            log.error("淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.灏忚溅寰呮惉 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
+                        } else {
+                            steThread.setResetFlag(true);
+                        }
+                        break;
                     case 14:
                         // 淇敼宸ヤ綔妗g姸鎬� 14.灏忚溅鎼嚭搴� => 15.绛夊緟鍚婅溅
                         wrkMast.setWrkSts(15L);
diff --git a/src/main/java/com/zy/core/MainProcess.java b/src/main/java/com/zy/core/MainProcess.java
index 4b24503..a6bff69 100644
--- a/src/main/java/com/zy/core/MainProcess.java
+++ b/src/main/java/com/zy/core/MainProcess.java
@@ -51,8 +51,6 @@
                     mainService.crnStnToOutStn();
                     // 鍏ュ嚭搴�  ===>>  鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂
                     mainService.crnIoExecute();
-                    // 鍫嗗灈鏈洪拡瀵逛簬灏忚溅杩佺Щ宸ヤ綔鐨勫畬鎴�
-                    mainService.carMoveFinished();
                     // 鍏ュ簱  ===>> 鎵ц鍫嗗灈鏈哄宸ヤ綔妗g殑瀹屾垚鎿嶄綔
                     mainService.storeFinished();
                     // 鍏ュ簱 ===>> 鎵ц绌挎杞﹀宸ヤ綔妗g殑瀹屾垚鎿嶄綔
diff --git a/src/main/resources/mapper/WrkMastMapper.xml b/src/main/resources/mapper/WrkMastMapper.xml
index 43b71f4..9bb7080 100644
--- a/src/main/resources/mapper/WrkMastMapper.xml
+++ b/src/main/resources/mapper/WrkMastMapper.xml
@@ -100,8 +100,8 @@
         select top 1 * from dbo.asr_wrk_mast where wrk_no=#{workNo} and wrk_sts = 7
     </select>
 
-    <select id="selectPakInStep8" resultMap="BaseResultMap">
-        select top 1 * from dbo.asr_wrk_mast where ste_no=#{steNo} and wrk_sts = 8
+    <select id="selectCarWaiting" resultMap="BaseResultMap">
+        select top 1 * from dbo.asr_wrk_mast where wrk_no=#{workNo} and wrk_sts in (2,8,11,14)
     </select>
 
     <select id="selectPickStep" resultMap="BaseResultMap">

--
Gitblit v1.9.1