From 54e371c10fdb3640b5ac5e4d5ea9ace537f27174 Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@63.com>
Date: 星期一, 28 三月 2022 15:18:39 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |  151 ++++++++++++++++++++++++++++++++------------------
 1 files changed, 96 insertions(+), 55 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 a535528..d2e614e 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -87,6 +87,7 @@
     private BasErrLogService basErrLogService;
     @Autowired
     private BasCrnErrorMapper basCrnErrorMapper;
+
     @Value("${wms.url}")
     private String wmsUrl;
     @Value("${crnBackHp.enable}")
@@ -553,51 +554,68 @@
             this.locToLoc(crn, crnProtocol);
 
             if (crnBackHp) {
+
                 //鍫嗗灈鏈烘病鏈夋墽琛屼腑浠诲姟锛岃澶囧瓨鍦ㄥ叆搴撲换鍔℃椂鍙洖鍘熺偣
-                this.crnRebackHp(crn, crnProtocol);
+                this.crnRebackHp(crnProtocol);
+
             }
         }
     }
 
     /**
      * 鍥炲師鐐癸紝鍫嗗灈鏈烘病鏈夋墽琛屼腑浠诲姟锛岃澶囧瓨鍦ㄥ叆搴撲换鍔℃椂鍙洖鍘熺偣
-     * @param slave
-     * @param crnProtocol
      */
-    public void crnRebackHp(CrnSlave slave, CrnProtocol crnProtocol){
-        if (crnProtocol.getStatusType() == CrnStatusType.IDLE && crnProtocol.getTaskNo() == 0 && crnProtocol.getModeType() == CrnModeType.AUTO) {
-            // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊�
-            if (wrkMastMapper.selectWorking(slave.getId()) != null) {
-                return;
-            }
+    public synchronized void crnRebackHp(CrnProtocol crnProtocol){
+//        for (CrnSlave crn : slaveProperties.getCrn()) {
+//            // 鑾峰彇鍫嗗灈鏈轰俊鎭�
+//            CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId());
+//            CrnProtocol crnProtocol = crnThread.getCrnProtocol();
+//            if (crnProtocol == null) {
+//                continue;
+//            }
+//            BasCrnp basCrnp = basCrnpService.selectById(crn.getId());
+//            if (basCrnp == null) {
+//                log.error("{}鍙峰爢鍨涙満灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", crn.getId());
+//                continue;
+//            }
+            if (crnProtocol.getStatusType() == CrnStatusType.IDLE && crnProtocol.getTaskNo() == 0 && crnProtocol.getModeType() == CrnModeType.AUTO) {
+                if(crnProtocol.getBay() ==1 && crnProtocol.getLevel()==1){
+                    return;
+                }
 
-            //鍫嗗灈鏈烘湁鎵ц涓换鍔★紝杩囨护
-            if (wrkMastMapper.selectCrnWorking(slave.getId()) != null) {
-                return;
-            }
+                // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊�3,12
+                if (wrkMastMapper.selectWorking(crnProtocol.getCrnNo()) != null) {
+                    return;
+                }
 
-            //杈撻�佺嚎娌℃湁鍏ュ簱浠诲姟锛岃繃婊�
-            if (wrkMastMapper.selectDevWorking(slave.getId()) == null) {
-                return;
-            }
+                //鍫嗗灈鏈烘湁鎵ц涓换鍔★紝杩囨护3,4,11,12
+                if (wrkMastMapper.selectCrnWorking(crnProtocol.getCrnNo()) != null) {
+                    return;
+                }
 
-            // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
-            CrnCommand crnCommand = new CrnCommand();
-            crnCommand.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙�
-            crnCommand.setTaskNo((short) 1); // 宸ヤ綔鍙�
-            crnCommand.setAckFinish((short) 0);  // 浠诲姟瀹屾垚纭浣�
-            crnCommand.setTaskMode(CrnTaskModeType.GO_ORIGIN); // 浠诲姟妯″紡:  鍥炲師鐐�
-            crnCommand.setSourcePosX((short) 0);     // 婧愬簱浣嶆帓
-            crnCommand.setSourcePosY((short) 0);     // 婧愬簱浣嶅垪
-            crnCommand.setSourcePosZ((short) 0);     // 婧愬簱浣嶅眰
-            crnCommand.setDestinationPosX((short) 0);     // 鐩爣搴撲綅鎺�
-            crnCommand.setDestinationPosY((short) 0);     // 鐩爣搴撲綅鍒�
-            crnCommand.setDestinationPosZ((short) 0);     // 鐩爣搴撲綅灞�
-            if (!MessageQueue.offer(SlaveType.Crn, slave.getId(), new Task(2, crnCommand))) {
-                log.error("鍫嗗灈鏈哄洖鍘熺偣鍛戒护涓嬪彂澶辫触锛屽爢鍨涙満鍙�={}锛屼换鍔℃暟鎹�={}", slave.getId(), JSON.toJSON(crnCommand));
-            } else {
+
+                //杈撻�佺嚎娌℃湁鍏ュ簱浠诲姟锛岃繃婊�2
+                if (wrkMastMapper.selectDevWorking(crnProtocol.getCrnNo()) == null) {
+                    return;
+                }
+//                log.info("鍫嗗灈鏈哄彫鍥炲師鐐�==>>" + crn.getId() + "鍙峰爢鍨涙満鏈夊叆搴撲换鍔�,鍙洖鍘熺偣");
+                // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
+                CrnCommand crnCommand = new CrnCommand();
+                crnCommand.setCrnNo(crnProtocol.getCrnNo()); // 鍫嗗灈鏈虹紪鍙�
+                crnCommand.setTaskNo((short) 9999); // 宸ヤ綔鍙�
+                crnCommand.setAckFinish((short) 0);  // 浠诲姟瀹屾垚纭浣�
+                crnCommand.setTaskMode(CrnTaskModeType.GO_ORIGIN); // 浠诲姟妯″紡:  鍥炲師鐐�
+                crnCommand.setSourcePosX((short) 0);     // 婧愬簱浣嶆帓
+                crnCommand.setSourcePosY((short) 0);     // 婧愬簱浣嶅垪
+                crnCommand.setSourcePosZ((short) 0);     // 婧愬簱浣嶅眰
+                crnCommand.setDestinationPosX((short) 0);     // 鐩爣搴撲綅鎺�
+                crnCommand.setDestinationPosY((short) 0);     // 鐩爣搴撲綅鍒�
+                crnCommand.setDestinationPosZ((short) 0);     // 鐩爣搴撲綅灞�
+                if (!MessageQueue.offer(SlaveType.Crn, crnProtocol.getCrnNo(), new Task(2, crnCommand))) {
+                    log.error("鍫嗗灈鏈哄洖鍘熺偣鍛戒护涓嬪彂澶辫触锛屽爢鍨涙満鍙�={}锛屼换鍔℃暟鎹�={}", crnProtocol.getCrnNo(), JSON.toJSON(crnCommand));
+                }
             }
-        }
+//        }
     }
 
     /**
@@ -926,25 +944,30 @@
             if (crnProtocol == null) { continue; }
             //  鐘舵�侊細绛夊緟纭 骞朵笖  浠诲姟瀹屾垚浣� = 1
             if (crnProtocol.statusType == CrnStatusType.WAITING && crnProtocol.getTaskNo() != 0) {
-                // 鑾峰彇鍏ュ簱寰呯‘璁ゅ伐浣滄。
-                WrkMast wrkMast = wrkMastMapper.selectPakInStep3(crnProtocol.getTaskNo().intValue());
-                if (wrkMast == null) {
-                    log.error("鍫嗗灈鏈哄浜庣瓑寰呯‘璁や笖浠诲姟瀹屾垚鐘舵�侊紝浣嗘湭鎵惧埌宸ヤ綔妗c�傚爢鍨涙満鍙�={}锛屽伐浣滃彿={}", crn.getId(), crnProtocol.getTaskNo());
-                    continue;
-                }
-                // 鍏ュ簱 + 搴撲綅杞Щ  ==> 4.鍏ュ簱瀹屾垚
-                if (wrkMast.getWrkSts() == 3 || (wrkMast.getWrkSts() == 12 && wrkMast.getIoType() == 11)){
-                    wrkMast.setWrkSts(4L);
-                } else  {
-                    continue;
-                }
-                Date now = new Date();
-                wrkMast.setCrnEndTime(now);
-                wrkMast.setModiTime(now);
-                // 淇敼鎴愬姛鍚庡浣嶅爢鍨涙満
-                if (wrkMastMapper.updateById(wrkMast) > 0) {
+                if(crnProtocol.getTaskNo()==9999){
                     // 鍫嗗灈鏈哄浣�
                     crnThread.setResetFlag(true);
+                }else {
+                    // 鑾峰彇鍏ュ簱寰呯‘璁ゅ伐浣滄。
+                    WrkMast wrkMast = wrkMastMapper.selectPakInStep3(crnProtocol.getTaskNo().intValue());
+                    if (wrkMast == null) {
+                        log.error("鍫嗗灈鏈哄浜庣瓑寰呯‘璁や笖浠诲姟瀹屾垚鐘舵�侊紝浣嗘湭鎵惧埌宸ヤ綔妗c�傚爢鍨涙満鍙�={}锛屽伐浣滃彿={}", crn.getId(), crnProtocol.getTaskNo());
+                        continue;
+                    }
+                    // 鍏ュ簱 + 搴撲綅杞Щ  ==> 4.鍏ュ簱瀹屾垚
+                    if (wrkMast.getWrkSts() == 3 || (wrkMast.getWrkSts() == 12 && wrkMast.getIoType() == 11)) {
+                        wrkMast.setWrkSts(4L);
+                    } else {
+                        continue;
+                    }
+                    Date now = new Date();
+                    wrkMast.setCrnEndTime(now);
+                    wrkMast.setModiTime(now);
+                    // 淇敼鎴愬姛鍚庡浣嶅爢鍨涙満
+                    if (wrkMastMapper.updateById(wrkMast) > 0) {
+                        // 鍫嗗灈鏈哄浣�
+                        crnThread.setResetFlag(true);
+                    }
                 }
 
             }
@@ -1436,13 +1459,16 @@
             if (Utils.isDeepLoc(slaveProperties, row)) {
                 loc = locMastService.queryFreeLocMast(row, shallowLoc.getLocType1());
 
-                if (Utils.isDeepLoc(slaveProperties, loc.getLocNo())){
-                    String shallowLocNo = Utils.getShallowLoc(slaveProperties, loc.getLocNo());
-                    LocMast shallowLoc1 = locMastService.selectById(shallowLocNo);
-                    if(!shallowLoc1.getLocSts().equals("O")){
-                        loc = null;
+                if (loc !=null) {
+                    if (Utils.isDeepLoc(slaveProperties, loc.getLocNo())){
+                        String shallowLocNo = Utils.getShallowLoc(slaveProperties, loc.getLocNo());
+                        LocMast shallowLoc1 = locMastService.selectById(shallowLocNo);
+                        if(!shallowLoc1.getLocSts().equals("O")){
+                            loc = null;
+                        }
                     }
                 }
+
 
                 if (null != loc) { break; }
             }
@@ -1693,4 +1719,19 @@
     }
 
 
+
+    public void outOfDevp() {
+        List<WrkMast> wrkMasts = wrkMastMapper.selectPick();
+        for (WrkMast wrkMast : wrkMasts) {
+            if (basDevpService.selectCount(new EntityWrapper<BasDevp>().eq("wrk_no", wrkMast.getWrkNo())) == 0) {
+                wrkMast.setCtnNo("Y");
+                if (wrkMastMapper.updateById(wrkMast) == 0) {
+                    log.error("淇敼{}宸ヤ綔妗eけ璐ワ紝ctn_no", wrkMast.getWrkNo());
+                }
+            }
+
+        }
+    }
+
+
 }

--
Gitblit v1.9.1