From c5fb7fe6010aa53345e44ad2d69552bf52d868fd Mon Sep 17 00:00:00 2001
From: tqs <56479841@qq.com>
Date: 星期一, 31 十月 2022 07:57:10 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/utils/Utils.java                  |  110 ++++++++++++++++++
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |  184 +++++++++++++++++++++++++++++-
 src/main/resources/mapper/WrkMastMapper.xml                 |    3 
 src/main/resources/application.yml                          |    4 
 4 files changed, 290 insertions(+), 11 deletions(-)

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 7b18315..91e8b19 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -1056,6 +1056,172 @@
     }
 
     /**
+     * 搴撲綅绉昏浆 NEW
+     */
+    public void locToLoc1(CrnSlave slave, CrnProtocol crnProtocol){
+        // 鑾峰彇宸ヤ綔妗d俊鎭�
+        WrkMast wrkMast = wrkMastMapper.selectLocMove(slave.getId());
+        if (null == wrkMast) {
+            return;
+        }
+        // 鑾峰彇婧愬簱浣嶄俊鎭�
+        LocMast sourceLoc = locMastService.selectById(wrkMast.getSourceLocNo());
+        if (null == sourceLoc) {
+            log.error("宸ヤ綔妗e簱浣嶇Щ杞け璐ワ紝鍘熷洜锛氭绱㈡簮搴撲綅澶辫触锛佸伐浣滃彿={}锛屾簮搴撲綅={}", wrkMast.getWrkNo(), wrkMast.getSourceLocNo());
+            return;
+        }
+        // 婧愬簱浣�  搴撲綅鐘舵�佸垽鏂�
+        if (!sourceLoc.getLocSts().equals("R")) {
+            return;
+        }
+        // 鑾峰彇鐩爣搴撲綅淇℃伅
+        LocMast loc = locMastService.selectById(wrkMast.getLocNo());
+        if (null == loc || !loc.getLocSts().equals("S")) {
+            log.error("宸ヤ綔妗e簱浣嶇Щ杞け璐ワ紝鍘熷洜锛氭绱㈢洰鏍囧簱浣嶅け璐ワ紒宸ヤ綔鍙�={}锛屾簮搴撲綅={}", wrkMast.getWrkNo(), wrkMast.getLocNo());
+            return;
+        }
+        // 鑾峰彇鍫嗗灈鏈轰俊鎭� 骞� 鍒ゆ柇鏄惁鍙叆鍑�
+        BasCrnp basCrnp = basCrnpService.selectById(slave.getId());
+        if (!basCrnp.getInEnable().equals("Y") && !basCrnp.getOutEnable().equals("Y")) {
+            return;
+        }
+
+        // 鍫嗗灈鏈烘帶鍒惰繃婊�
+        if (!crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() != 0) {
+            return;
+        }
+
+        // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊�
+        if (wrkMastMapper.selectWorking(slave.getId()) != null) {
+            return;
+        }
+
+        // 缃《浠诲姟
+        wrkMast.setIoPri((double) 9999);
+        wrkMastMapper.updateById(wrkMast);
+
+        // 婧愬簱浣� ===>> 鏈�澶栧眰搴撲綅
+        if (locMastService.isOutMost(wrkMast.getSourceLocNo())) {
+            // 鐩爣搴撲綅 ===>> 鏈�澶栧眰搴撲綅
+            if (locMastService.isOutMost(wrkMast.getLocNo())) {
+                // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
+                CrnCommand crnCommand = new CrnCommand();
+                crnCommand.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙�
+                crnCommand.setTaskNo(wrkMast.getWrkNo().shortValue()); // 宸ヤ綔鍙�
+                crnCommand.setAckFinish((short) 0);  // 浠诲姟瀹屾垚纭浣�
+                crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡:  搴撲綅绉昏浆
+                crnCommand.setSourcePosX(sourceLoc.getRow1().shortValue());     // 婧愬簱浣嶆帓
+                crnCommand.setSourcePosY(sourceLoc.getBay1().shortValue());     // 婧愬簱浣嶅垪
+                crnCommand.setSourcePosZ(sourceLoc.getLev1().shortValue());     // 婧愬簱浣嶅眰
+                crnCommand.setDestinationPosX(loc.getRow1().shortValue());     // 鐩爣搴撲綅鎺�
+                crnCommand.setDestinationPosY(loc.getBay1().shortValue());     // 鐩爣搴撲綅鍒�
+                crnCommand.setDestinationPosZ(loc.getLev1().shortValue());     // 鐩爣搴撲綅灞�
+                if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getCrnNo(), new Task(2, crnCommand))) {
+                    log.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand));
+                } else {
+                    // 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 16.鍚婅溅鍑哄簱涓�
+                    Date now = new Date();
+                    wrkMast.setWrkSts(16L);
+                    wrkMast.setCrnStrTime(now);
+                    wrkMast.setModiTime(now);
+                    if (wrkMastMapper.updateById(wrkMast) == 0) {
+                        log.error("銆愬簱浣嶇Щ杞�� 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 16.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
+                    }
+                }
+
+            }
+            // 涓嶆槸鏈�澶栧眰搴撲綅锛岄渶瑕佷娇鐢ㄧ┛姊溅鎼繍鍚庯紝鍐嶅爢鍨涙満绉诲簱
+        } else {
+            // 褰撳墠缁勫簱浣嶆槸鍚︽湁绌挎杞�
+            Integer steNo = this.hasCarOfIdle(wrkMast.getSourceLocNo());
+            // 鏈夊皬杞�
+            if (steNo != null) {
+                if (wrkMast.getWrkSts() == 11L && wrkMast.getSteNo() == null) {
+
+                    // 缁欑┛姊溅涓嬪彂鍛戒护 璁╁叾灏嗚揣鐗╂尓鑷冲爢鍨涙満鎼繍鐐�
+                    SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, steNo);
+                    SteProtocol steProtocol = steThread.getSteProtocol();
+                    if (steProtocol == null) { return; }
+                    if (steProtocol.isIdle()) {
+
+                        // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
+                        SteCommand steCommand = new SteCommand();
+                        steCommand.setSteNo(steNo); // 绌挎杞︾紪鍙�
+                        steCommand.setTaskNo(wrkMast.getWrkNo()); // 宸ヤ綔鍙�
+                        steCommand.setTaskMode(SteTaskModeType.findOutByLoc(wrkMast.getSourceLocNo())); // 浠诲姟妯″紡:  鍘昏繎鐐� 绛夊緟鍫嗗灈鏈哄弶鍙�
+
+                        steCommand.setRow(Utils.getGroupRow(steProtocol.getRow().intValue()).shortValue());
+                        steCommand.setBay(steProtocol.getBay());
+                        steCommand.setLev(steProtocol.getLev());
+
+                        if (!MessageQueue.offer(SlaveType.Ste, steNo, new Task(2, steCommand))) {
+                            log.error("绌挎杞﹀懡浠や笅鍙戝け璐ワ紝绌挎杞﹀彿={}锛屼换鍔℃暟鎹�={}", steNo, JSON.toJSON(steCommand));
+                        } else {
+                            // 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 14.灏忚溅鎼嚭搴�
+                            Date now = new Date();
+                            wrkMast.setWrkSts(14L);
+                            wrkMast.setSteNo(steNo);
+                            wrkMast.setCrnStrTime(now);
+                            wrkMast.setModiTime(now);
+                            if (wrkMastMapper.updateById(wrkMast) == 0) {
+                                log.error("淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 14.灏忚溅鎼嚭搴� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
+                            }
+                        }
+                    }
+                }
+                if (wrkMast.getWrkSts() == 15L) {
+                    // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊�
+                    if (wrkMastMapper.selectWorking(slave.getId()) != null) {
+                        return;
+                    }
+
+                    // 鍫嗗灈鏈哄嚭搴� 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
+                    CrnCommand crnCommand = new CrnCommand();
+                    crnCommand.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙�
+                    crnCommand.setTaskNo(wrkMast.getWrkNo().shortValue()); // 宸ヤ綔鍙�
+                    crnCommand.setAckFinish((short) 0);  // 浠诲姟瀹屾垚纭浣�
+                    crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡:  搴撲綅绉昏浆
+                    crnCommand.setSourcePosX(Utils.getGroupRow(sourceLoc.getRow1()).shortValue());     // 婧愬簱浣嶆帓
+                    crnCommand.setSourcePosY(sourceLoc.getBay1().shortValue());     // 婧愬簱浣嶅垪
+                    crnCommand.setSourcePosZ(sourceLoc.getLev1().shortValue());     // 婧愬簱浣嶅眰
+                    crnCommand.setDestinationPosX(loc.getRow1().shortValue());     // 鐩爣搴撲綅鎺�
+                    crnCommand.setDestinationPosY(loc.getBay1().shortValue());     // 鐩爣搴撲綅鍒�
+                    crnCommand.setDestinationPosZ(loc.getLev1().shortValue());     // 鐩爣搴撲綅灞�
+                    if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getCrnNo(), new Task(2, crnCommand))) {
+                        log.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand));
+                    } else {
+                        // 淇敼宸ヤ綔妗g姸鎬� 15.绛夊緟鍚婅溅 => 16.鍚婅溅鍑哄簱涓�
+                        Date now = new Date();
+                        wrkMast.setWrkSts(16L);
+                        wrkMast.setCrnStrTime(now);
+                        wrkMast.setModiTime(now);
+                        if (wrkMastMapper.updateById(wrkMast) == 0) {
+                            log.error("淇敼宸ヤ綔妗g姸鎬� 15.绛夊緟鍚婅溅 => 16.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
+                        }
+                        return;
+                    }
+                }
+                // 娌℃湁灏忚溅
+            } else {
+                if (wrkMast.getWrkSts() == 11L && wrkMast.getSteNo() == null) {
+                    // 瀵绘壘鏈�杩戠殑灏忚溅
+                    SteThread steThread = queryIdleCar(wrkMast);
+                    if (steThread != null) {
+                        if (null == wrkMastMapper.selectPakout(slave.getId(), steNo)) {
+                            // 璁╁皬杞︾瓑寰呮惉杩愬緟缁�
+                            this.letCarBeReady(wrkMast, steThread.getSlave().getId(), wrkMast.getSourceLocNo());
+                        }
+                    }
+                }
+                // 鍫嗗灈鏈烘惉杩愬皬杞�
+                if (wrkMast.getWrkSts() == 12L) {
+                    this.carMoveIn(wrkMast, wrkMast.getSteNo(), crnProtocol);
+                }
+            }
+        }
+    }
+
+    /**
      * 搴撲綅绉昏浆
      */
     public void locToLoc(CrnSlave slave, CrnProtocol crnProtocol){
@@ -1127,9 +1293,10 @@
                     wrkMast.setCrnStrTime(now);
                     wrkMast.setModiTime(now);
                     if (wrkMastMapper.updateById(wrkMast) == 0) {
-                        log.error("銆愬簱浣嶇Щ杞�� 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
+                        log.error("銆愬簱浣嶇Щ杞�� 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 7.鍚婅溅鍏ュ簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
                     }
                 }
+
             } else {
                 Integer steNo = this.hasCarOfIdle(wrkMast.getLocNo());
                 // 鏈夊皬杞�
@@ -1863,13 +2030,16 @@
                 } else {
                     if (wrkMast.getWrkSts() == 16) {
                         Date now = new Date();
+//                        if (locMastService.isOutMost(wrkMast.getLocNo())) {
+//                            // 16.鍚婅溅鍑哄簱涓� ==> 9.鍏ュ簱瀹屾垚
+//                            wrkMast.setWrkSts(9L);
+//                            wrkMast.setCrnEndTime(now);
+//                        } else {
+//                            // 16.鍚婅溅鍑哄簱涓� ==> 9.鍏ュ簱瀹屾垚
+//                            wrkMast.setWrkSts(9L);
+//                        }
                         if (locMastService.isOutMost(wrkMast.getLocNo())) {
-                            // 16.鍚婅溅鍑哄簱涓� ==> 9.鍏ュ簱瀹屾垚
-                            wrkMast.setWrkSts(9L);
-                            wrkMast.setCrnEndTime(now);
-                        } else {
-                            // 16.鍚婅溅鍑哄簱涓� ==> 9.鍏ュ簱瀹屾垚
-                            wrkMast.setWrkSts(9L);
+                            wrkMast.setWrkSts(17L);
                         }
                         wrkMast.setModiTime(now);
                         // 淇敼鎴愬姛鍚庡浣嶅爢鍨涙満
diff --git a/src/main/java/com/zy/asrs/utils/Utils.java b/src/main/java/com/zy/asrs/utils/Utils.java
index f463cff..e4d3d75 100644
--- a/src/main/java/com/zy/asrs/utils/Utils.java
+++ b/src/main/java/com/zy/asrs/utils/Utils.java
@@ -222,6 +222,100 @@
         return zerofill(String.valueOf(row), 2) + zerofill(String.valueOf(bay), 3) + zerofill(String.valueOf(lev), 2);
     }
 
+    /**
+     * 鑾峰彇 娣卞簱浣嶅搴旂殑娴呭簱浣嶇粍
+     */
+    public static String getShallowLocs(String deepLoc){
+        String locs="";
+        int row = getRow(deepLoc);
+        switch (row){
+            case 1:
+                locs += zerofill(String.valueOf(row+2),2) + deepLoc.substring(2);
+                locs += "," + zerofill(String.valueOf(row+1),2) + deepLoc.substring(2);
+                break;
+            case 2:
+                locs += zerofill(String.valueOf(row+1),2) + deepLoc.substring(2);
+                break;
+            case 5:
+            case 20:
+                locs += zerofill(String.valueOf(row-1),2) + deepLoc.substring(2);
+                break;
+            case 6:
+            case 14:
+            case 21:
+                locs += zerofill(String.valueOf(row-2),2) + deepLoc.substring(2);
+                locs += "," + zerofill(String.valueOf(row-1),2) + deepLoc.substring(2);
+                break;
+            case 7:
+                locs += zerofill(String.valueOf(row-3),2) + deepLoc.substring(2);
+                locs += "," + zerofill(String.valueOf(row-2),2) + deepLoc.substring(2);
+                locs += "," + zerofill(String.valueOf(row-1),2) + deepLoc.substring(2);
+                break;
+            case 8:
+            case 15:
+                locs += zerofill(String.valueOf(row+3),2) + deepLoc.substring(2);
+                locs += "," + zerofill(String.valueOf(row+2),2) + deepLoc.substring(2);
+                locs += "," + zerofill(String.valueOf(row+1),2) + deepLoc.substring(2);
+                break;
+            case 9:
+            case 16:
+                locs += zerofill(String.valueOf(row+2),2) + deepLoc.substring(2);
+                locs += "," + zerofill(String.valueOf(row+1),2) + deepLoc.substring(2);
+                break;
+            case 10:
+            case 17:
+                locs += zerofill(String.valueOf(row+1),2) + deepLoc.substring(2);
+                break;
+            case 13:
+                locs += zerofill(String.valueOf(row-1),2) + deepLoc.substring(2);
+                break;
+        }
+        return locs;
+    }
+
+    /**
+     * 鑾峰彇 娴呭簱浣嶅搴旂殑娣卞簱浣嶇粍
+     */
+    public static String getDeepLocs(String shallowLoc){
+        String locs="";
+        int row = getRow(shallowLoc);
+        switch (row){
+            case 2:
+            case 9:
+            case 16:
+                locs += zerofill(String.valueOf(row-1),2) + shallowLoc.substring(2);
+                break;
+            case 3:
+            case 10:
+            case 17:
+                locs += zerofill(String.valueOf(row-1),2) + shallowLoc.substring(2);
+                locs += "," + zerofill(String.valueOf(row-2),2) + shallowLoc.substring(2);
+                break;
+            case 4:
+                locs += zerofill(String.valueOf(row+1),2) + shallowLoc.substring(2);
+                locs += "," + zerofill(String.valueOf(row+2),2) + shallowLoc.substring(2);
+                locs += "," + zerofill(String.valueOf(row+3),2) + shallowLoc.substring(2);
+                break;
+            case 5:
+            case 12:
+            case 19:
+                locs += zerofill(String.valueOf(row+1),2) + shallowLoc.substring(2);
+                locs += "," + zerofill(String.valueOf(row+2),2) + shallowLoc.substring(2);
+                break;
+            case 6:
+            case 13:
+            case 20:
+                locs += zerofill(String.valueOf(row+1),2) + shallowLoc.substring(2);
+                break;
+            case 11:
+            case 18:
+                locs += zerofill(String.valueOf(row-1),2) + shallowLoc.substring(2);
+                locs += "," + zerofill(String.valueOf(row-2),2) + shallowLoc.substring(2);
+                locs += "," + zerofill(String.valueOf(row-3),2) + shallowLoc.substring(2);
+                break;
+        }
+        return locs;
+    }
 
     /**
      * 褰撴绱㈠埌鍙屾繁搴撲綅鐨勬祬搴撲綅鏃讹紝濡傛灉娣卞簱浣嶆棤璐э紝鍒欐斁鍏ュ搴旂殑娣卞簱浣�
@@ -246,6 +340,22 @@
     }
 
     public static void main(String[] args) {
+        String shallowLocs = getShallowLocs("2100203");
+        String deepLocs = getDeepLocs("2100203");
+        System.out.println("shallowLocs ==>> " + shallowLocs);
+        System.out.println("deepLocs ==>> " + deepLocs);
+        String[] shallowArr = null, deepArr = null;
+        if (shallowLocs.indexOf(',') >= 0) {
+            shallowArr = shallowLocs.split(",");
+        }
+        if (deepLocs.indexOf(',') >= 0) {
+            deepArr = deepLocs.split(",");
+        }
+
+        for(String str : deepArr){
+            System.out.println(str);
+        }
+
         SlaveProperties slaveProperties = new SlaveProperties();
         slaveProperties.setDoubleDeep(true);
         List<Integer> list = new ArrayList<>();
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index e2c7d89..32d585c 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -8,8 +8,8 @@
     name: @pom.build.finalName@
   datasource:
     driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
-    url: jdbc:sqlserver://10.10.10.100:1433;databasename=bfasrs
-#    url: jdbc:sqlserver://localhost:1433;databasename=bfasrs
+#    url: jdbc:sqlserver://10.10.10.100:1433;databasename=bfasrs
+    url: jdbc:sqlserver://192.168.4.15:1433;databasename=bfasrs
     username: sa
     #    password: Zoneyung@zy56$
     password: sa@123
diff --git a/src/main/resources/mapper/WrkMastMapper.xml b/src/main/resources/mapper/WrkMastMapper.xml
index 14fc8f7..4c51a32 100644
--- a/src/main/resources/mapper/WrkMastMapper.xml
+++ b/src/main/resources/mapper/WrkMastMapper.xml
@@ -58,7 +58,6 @@
         <result column="log_err_time" property="logErrTime" />
         <result column="log_err_memo" property="logErrMemo" />
         <result column="barcode" property="barcode" />
-        <result column="Pdc_type" property="PdcType" />
         <result column="ctn_no" property="ctnNo" />
         <result column="full_plt" property="fullPlt" />
 
@@ -122,7 +121,7 @@
     </select>
 
     <select id="selectLocMove" resultMap="BaseResultMap">
-        select top 1 * from dbo.asr_wrk_mast where wrk_sts in (3,6,11,12,15) and io_type=11 and crn_no=#{crnNo} order by io_time,wrk_no
+        select top 1 * from dbo.asr_wrk_mast where wrk_sts in (3,6,11,12,15) and io_type=11 and crn_no=#{crnNo} order by io_pri desc,io_time,wrk_no
     </select>
 
     <select id="selectLocMoving" resultMap="BaseResultMap">

--
Gitblit v1.9.1