From 6742ccb80562035ca680cf46438746ceb7cacbc8 Mon Sep 17 00:00:00 2001
From: LSH
Date: 星期二, 25 七月 2023 16:59:30 +0800
Subject: [PATCH] #码垛位自动补充空板:自动补空板任务,扫码实装

---
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |  772 +++++++++++++++++++++++++++++++++++++++++++---------------
 1 files changed, 565 insertions(+), 207 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 44c8d87..f27ee8b 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -10,7 +10,6 @@
 import com.zy.asrs.entity.*;
 import com.zy.asrs.mapper.BasCrnErrorMapper;
 import com.zy.asrs.mapper.BasRgvErrMapper;
-import com.zy.asrs.mapper.WaitPakinMapper;
 import com.zy.asrs.mapper.WrkMastMapper;
 import com.zy.asrs.service.*;
 import com.zy.asrs.utils.Utils;
@@ -22,6 +21,8 @@
 import com.zy.common.service.CommonService;
 import com.zy.common.utils.CollectionUtils;
 import com.zy.common.utils.HttpHandler;
+import com.zy.common.utils.RedisUtil;
+import com.zy.common.utils.RgvUtils;
 import com.zy.core.CrnThread;
 import com.zy.core.DevpThread;
 import com.zy.core.cache.MessageQueue;
@@ -88,6 +89,10 @@
     private BasRgvErrMapper basRgvErrMapper;
     @Autowired
     private BasRgvErrLogService basRgvErrLogService;
+    @Autowired
+    private BasRgvPathService basRgvPathService;
+    @Autowired
+    private RedisUtil redisUtil;
 
     @Value("${wms.url}")
     private String wmsUrl;
@@ -188,7 +193,13 @@
 
                             barcodeThread.setBarcode("");
                             staProtocol.setWorkNo(dto.getWorkNo().shortValue());
-                            staProtocol.setStaNo(dto.getStaNo().shortValue());
+
+                            if(Cools.isEmpty(dto.getRgvNo()) || dto.getRgvNo() <= 0) {
+                                staProtocol.setStaNo(dto.getStaNo().shortValue());
+                            } else {//濡傛灉瀛樺湪RGV缂栧彿锛岃鏄庨渶瑕丷GV鎺ラ┏锛屽厛涓嬪彂浠诲姟鍒癛GV婧愮珯
+                                staProtocol.setStaNo(dto.getRgvSstaNo().shortValue());
+                            }
+
                             devpThread.setPakMk(staProtocol.getSiteId(), false);
                             boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
                             if (!result) {
@@ -507,6 +518,91 @@
     }
 
     /**
+     * 鎼滅储RGV杞︺�傞�氳繃鐩爣绔欐悳绱㈠摢鍙拌溅鍙敤
+     */
+    public synchronized Integer searchRgvNo(Integer staNo) {
+        BasDevp basDevp = basDevpService.selectById(staNo);
+        if (basDevp == null) {
+            return null;//鐩爣绔欎笉瀛樺湪
+        }
+        //璺緞鍊�
+        int path = basDevp.getLocType3().intValue();
+
+        ArrayList<RgvThread> list = new ArrayList<>();
+        for (RgvSlave rgv : slaveProperties.getRgv()) {
+            // 鑾峰彇RGV淇℃伅
+            RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgv.getId());
+            RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
+            if (rgvProtocol == null) {
+
+                continue;
+            }
+            BasRgv basRgv = basRgvService.selectById(rgv.getId());
+            if (basRgv == null) {
+                log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", rgv.getId());
+                continue;
+            }
+
+            list.add(rgvThread);
+        }
+
+        if (list.size() > 1) {
+            //瓒呰繃涓ゅ彴杞︼紝鎸夌収閰嶇疆鐨勮鍒欒繘琛屽垎閰�
+            for (RgvThread rgvThread : list) {
+                //鑾峰彇杞﹁締閰嶇疆鐨勮矾寰勮鍒�
+                BasRgvPath basRgvPath = basRgvPathService.selectByRgvNo(rgvThread.getSlave().getId());
+                if (basRgvPath == null) {
+                    continue;
+                }
+                //鐩爣绔欐槸鍚﹀寘鍚綋鍓嶈矾寰勪腑
+                List<Integer> rgvPath = JSON.parseArray(basRgvPath.getPath(), Integer.class);
+                if (rgvPath.contains(path)) {
+                    //褰撳墠璺緞涓寘鍚洰鏍囩珯锛屽垯閫夊畾杩欏彴杞�
+                    return rgvThread.getSlave().getId();
+                }
+            }
+        }else {
+            //灏忎簬鎴栫瓑浜�1鍙拌溅锛屽垎閰嶅叏璺緞
+            BasRgvPath basRgvPath = basRgvPathService.selectByRgvNo(0);//鑾峰彇榛樿璺緞
+            if (basRgvPath == null) {
+                return null;
+            }
+            List<Integer> rgvPath = JSON.parseArray(basRgvPath.getPath(), Integer.class);
+            if (rgvPath.contains(path)) {
+                //褰撳墠璺緞涓寘鍚洰鏍囩珯锛屽垯閫夊畾杩欏彴杞�
+                return list.get(0).getSlave().getId();
+            }
+        }
+
+        return null;
+    }
+
+    /**
+     * 缁戝畾灏忚溅鏂规硶
+     */
+    public synchronized void rgvBindSte() {
+        //鑾峰彇绛夊緟缁戝畾RGV鐨勪换鍔�
+        List<WrkMast> wrkMasts = wrkMastMapper.selectWaitBindRGV();
+        for (WrkMast wrkMast : wrkMasts) {
+            //鐩爣绔�
+            Integer staNo = wrkMast.getStaNo();
+            //婧愮珯
+            Integer sourceStaNo = wrkMast.getSourceStaNo();
+            //閫氳繃鐩爣绔欐悳绱gv鍙�
+            Integer rgvNo = this.searchRgvNo(staNo);
+            if (rgvNo == null) {//鏈壘鍒板彲鐢ㄧ殑rgv
+                continue;
+            }
+
+            wrkMast.setRgvNo(rgvNo);//缁戝畾rgv鍙�
+            wrkMast.setRgvDstaNo(wrkMast.getSourceStaNo());//璁剧疆RGV鍓嶅線宸ヤ綔妗f簮绔欏彇璐�
+            if (wrkMastMapper.updateById(wrkMast)==0){
+                log.error("缁戝畾灏忚溅鏇存柊宸ヤ綔妗eけ璐ワ紒锛侊紒 [宸ヤ綔鍙凤細{}]", wrkMast.getWrkNo());
+            }
+        }
+    }
+
+    /**
      * 鍏ュ嚭搴�  ===>>  RGV鍏ュ嚭搴撲綔涓氫笅鍙�
      */
     public synchronized void rgvIoExecute() {
@@ -523,34 +619,203 @@
                 continue;
             }
 
-            // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�, 骞朵笖鏃犱换鍔°�佹棤鐗╂椂鎵嶇户缁墽琛�
+            // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,
             if (rgvProtocol.getStatusType() == RgvStatusType.IDLE
                     && rgvProtocol.getModeType() == RgvModeType.AUTO
-                    && rgvProtocol.getTaskNo1() == 0 && rgvProtocol.getTaskNo2() == 0
-                    && rgvProtocol.getLoaded1() == 0 && rgvProtocol.getLoaded2() == 0
+//                    && rgvProtocol.getTaskNo1() == 0 && rgvProtocol.getTaskNo2() == 0
+//                    && rgvProtocol.getLoaded1() == 0 && rgvProtocol.getLoaded2() == 0
                     ) {
-                // 濡傛灉鏈�杩戜竴娆℃槸鍏ュ簱妯″紡
-                if (rgvProtocol.getLastIo().equals("I")) {
-                    if (basRgv.getInEnable().equals("Y")) {
-                        this.rgvInStn(rgv, rgvProtocol); //  鍏ュ簱
-                        rgvProtocol.setLastIo("O");
-                    } else if (basRgv.getOutEnable().equals("Y")) {
-                        this.rgvOutStn(rgv, rgvProtocol); //  鍑哄簱
-                        rgvProtocol.setLastIo("I");
+
+                //鏌ユ壘鏄惁瀛樺湪鍏ュ嚭搴撳伐浣滀腑绛夊緟RGV鎼繍鐨勪换鍔�
+                List<WrkMast> wrkMasts = wrkMastMapper.selectIoRgvNo(rgv.getId());
+                for (WrkMast wrkMast : wrkMasts) {
+                    if (wrkMast.getWrkSts() == 2) {//2.璁惧涓婅蛋1 => 3.RGV鍙栬揣涓�
+                        if (rgvProtocol.getTaskNo1() != 0 || rgvProtocol.getLoaded1() != 0) {//RGV鏄惁鏃犱换鍔°�丷GV鏄惁鏃犺揣
+                            continue;
+                        }
+
+                        //鍒ゆ柇琛岃蛋璺緞鏄惁琚崰鐢�
+                        Integer staNo = wrkMast.getSourceStaNo();
+                        BasDevp basDevp = basDevpService.selectById(staNo);
+                        if (basDevp == null) {
+                            continue;//鐩爣绔欎笉瀛樺湪
+                        }
+                        //璧峰璺緞
+                        int startPath = rgvProtocol.getRgvPos().intValue();
+                        //鐩爣璺緞鍊�
+                        int endPath = basDevp.getLocType3().intValue();
+                        boolean pathUsed = RgvUtils.isPathUsed(startPath, endPath);//鍒ゆ柇琛岃蛋璺緞鏄惁琚崰鐢�
+                        if (pathUsed) {
+                            //琛岃蛋璺緞琚崰鐢紝绂佹涓嬪彂鍛戒护
+                            continue;
+                        }
+                        //琛岃蛋璺緞绌洪棽锛岄攣瀹氳矾寰�
+                        RgvUtils.lockPath(startPath, endPath, rgvProtocol.getRgvNo(), wrkMast.getWrkNo(), true);
+
+                        //  鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
+                        RgvCommand rgvCommand = new RgvCommand();
+                        rgvCommand.setRgvNo(wrkMast.getRgvNo()); // RGV缂栧彿
+                        rgvCommand.setAckFinish1((short) 0);  // 宸ヤ綅1浠诲姟瀹屾垚纭浣�
+                        rgvCommand.setTaskNo1(wrkMast.getWrkNo().shortValue()); // 宸ヤ綅1宸ヤ綔鍙�
+                        rgvCommand.setTaskMode1(RgvTaskModeType.FETCH); // 宸ヤ綅1浠诲姟妯″紡:  鍙栬揣
+                        rgvCommand.setDestinationStaNo1(wrkMast.getRgvDstaNo().shortValue());   //宸ヤ綅1鐩爣绔欑偣
+                        rgvCommand.setCommand((short) 1);   //宸ヤ綅1浠诲姟纭
+                        if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getRgvNo(), new Task(4, rgvCommand))) {
+                            //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱   step=4锛屽伐浣�1鍐欎换鍔★紱     step=5锛屽伐浣�2鍐欎换鍔�
+                            log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", wrkMast.getRgvNo(), JSON.toJSON(rgvCommand));
+                        } else {
+                            // 淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋1 => 3.RGV鍙栬揣涓�
+                            Date now = new Date();
+                            wrkMast.setWrkSts(3L);
+                            wrkMast.setModiTime(now);
+                            if (wrkMastMapper.updateById(wrkMast) == 0) {
+                                log.error("淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋1 => 3.RGV鍙栬揣涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
+                            }
+                        }
+                    } else if (wrkMast.getWrkSts() == 4) {//4.RGV鍙栬揣瀹屾垚 => 5.RGV鏀捐揣涓�
+                        if (rgvProtocol.getTaskNo1() == 0 || !rgvProtocol.getTaskNo1().equals(wrkMast.getWrkNo().shortValue())) {//RGV蹇呴』鏈変换鍔′笖浠诲姟鍜屽綋鍓嶅伐浣滄。涓�鑷�
+                            continue;
+                        }
+                        if (rgvProtocol.getLoaded1() == 0) {//RGV蹇呴』鏈夌墿
+                            continue;
+                        }
+
+                        //鍒ゆ柇琛岃蛋璺緞鏄惁琚崰鐢�
+                        Integer staNo = wrkMast.getStaNo();
+                        BasDevp basDevp = basDevpService.selectById(staNo);
+                        if (basDevp == null) {
+                            continue;//鐩爣绔欎笉瀛樺湪
+                        }
+                        //璧峰璺緞
+                        int startPath = rgvProtocol.getRgvPos().intValue();
+                        //鐩爣璺緞鍊�
+                        int endPath = basDevp.getLocType3().intValue();
+                        boolean pathUsed = RgvUtils.isPathUsed(startPath, endPath);//鍒ゆ柇琛岃蛋璺緞鏄惁琚崰鐢�
+                        if (pathUsed) {
+                            //琛岃蛋璺緞琚崰鐢紝绂佹涓嬪彂鍛戒护
+                            continue;
+                        }
+                        //琛岃蛋璺緞绌洪棽锛岄攣瀹氳矾寰�
+                        RgvUtils.lockPath(startPath, endPath, rgvProtocol.getRgvNo(), wrkMast.getWrkNo(), true);
+
+                        //  鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
+                        RgvCommand rgvCommand = new RgvCommand();
+                        rgvCommand.setRgvNo(wrkMast.getRgvNo()); // RGV缂栧彿
+                        rgvCommand.setAckFinish1((short) 0);  // 宸ヤ綅1浠诲姟瀹屾垚纭浣�
+                        rgvCommand.setTaskNo1(wrkMast.getWrkNo().shortValue()); // 宸ヤ綅1宸ヤ綔鍙�
+                        rgvCommand.setTaskMode1(RgvTaskModeType.PUT); // 宸ヤ綅1浠诲姟妯″紡:  鏀捐揣
+                        rgvCommand.setDestinationStaNo1(wrkMast.getRgvDstaNo().shortValue());   //宸ヤ綅1鐩爣绔欑偣
+                        rgvCommand.setCommand((short) 1);   //宸ヤ綅1浠诲姟纭
+                        if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getRgvNo(), new Task(4, rgvCommand))) {
+                            //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱   step=4锛屽伐浣�1鍐欎换鍔★紱     step=5锛屽伐浣�2鍐欎换鍔�
+                            log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", wrkMast.getRgvNo(), JSON.toJSON(rgvCommand));
+                        } else {
+                            // 淇敼宸ヤ綔妗g姸鎬� 4.RGV鍙栬揣瀹屾垚 => 5.RGV鏀捐揣涓�
+                            Date now = new Date();
+                            wrkMast.setWrkSts(5L);
+                            wrkMast.setModiTime(now);
+                            if (wrkMastMapper.updateById(wrkMast) == 0) {
+                                log.error("淇敼宸ヤ綔妗g姸鎬� 4.RGV鍙栬揣瀹屾垚 => 5.RGV鏀捐揣涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
+                            }
+                        }
+                    } else if (wrkMast.getWrkSts() == 23) {//23.璁惧涓婅蛋1 => 24.RGV鍙栬揣涓�
+                        if (rgvProtocol.getTaskNo1() != 0 || rgvProtocol.getLoaded1() != 0) {//RGV鏄惁鏃犱换鍔°�丷GV鏄惁鏃犺揣
+                            continue;
+                        }
+
+                        //鍒ゆ柇琛岃蛋璺緞鏄惁琚崰鐢�
+                        Integer staNo = wrkMast.getSourceStaNo();
+                        BasDevp basDevp = basDevpService.selectById(staNo);
+                        if (basDevp == null) {
+                            continue;//鐩爣绔欎笉瀛樺湪
+                        }
+                        //璧峰璺緞
+                        int startPath = rgvProtocol.getRgvPos().intValue();
+                        //鐩爣璺緞鍊�
+                        int endPath = basDevp.getLocType3().intValue();
+                        boolean pathUsed = RgvUtils.isPathUsed(startPath, endPath);//鍒ゆ柇琛岃蛋璺緞鏄惁琚崰鐢�
+                        if (pathUsed) {
+                            //琛岃蛋璺緞琚崰鐢紝绂佹涓嬪彂鍛戒护
+                            continue;
+                        }
+                        //琛岃蛋璺緞绌洪棽锛岄攣瀹氳矾寰�
+                        RgvUtils.lockPath(startPath, endPath, rgvProtocol.getRgvNo(), wrkMast.getWrkNo(), true);
+
+                        //  鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
+                        RgvCommand rgvCommand = new RgvCommand();
+                        rgvCommand.setRgvNo(wrkMast.getRgvNo()); // RGV缂栧彿
+                        rgvCommand.setAckFinish1((short) 0);  // 宸ヤ綅1浠诲姟瀹屾垚纭浣�
+                        rgvCommand.setTaskNo1(wrkMast.getWrkNo().shortValue()); // 宸ヤ綅1宸ヤ綔鍙�
+                        rgvCommand.setTaskMode1(RgvTaskModeType.FETCH); // 宸ヤ綅1浠诲姟妯″紡:  鍙栬揣
+                        rgvCommand.setDestinationStaNo1(wrkMast.getRgvDstaNo().shortValue());   //宸ヤ綅1鐩爣绔欑偣
+                        rgvCommand.setCommand((short) 1);   //宸ヤ綅1浠诲姟纭
+                        if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getRgvNo(), new Task(4, rgvCommand))) {
+                            //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱   step=4锛屽伐浣�1鍐欎换鍔★紱     step=5锛屽伐浣�2鍐欎换鍔�
+                            log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", wrkMast.getRgvNo(), JSON.toJSON(rgvCommand));
+                        } else {
+                            // 淇敼宸ヤ綔妗g姸鎬� 23.璁惧涓婅蛋1 => 24.RGV鍙栬揣涓�
+                            Date now = new Date();
+                            wrkMast.setWrkSts(24L);
+                            wrkMast.setModiTime(now);
+                            if (wrkMastMapper.updateById(wrkMast) == 0) {
+                                log.error("淇敼宸ヤ綔妗g姸鎬� 23.璁惧涓婅蛋1 => 24.RGV鍙栬揣涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
+                            }
+                        }
+                    } else if (wrkMast.getWrkSts() == 25) {//25.RGV鍙栬揣瀹屾垚 => 26.RGV鏀捐揣涓�
+                        if (rgvProtocol.getTaskNo1() == 0 || !rgvProtocol.getTaskNo1().equals(wrkMast.getWrkNo().shortValue())) {//RGV蹇呴』鏈変换鍔′笖浠诲姟鍜屽綋鍓嶅伐浣滄。涓�鑷�
+                            continue;
+                        }
+                        if (rgvProtocol.getLoaded1() == 0) {//RGV蹇呴』鏈夌墿
+                            continue;
+                        }
+
+                        //鍒ゆ柇琛岃蛋璺緞鏄惁琚崰鐢�
+                        Integer staNo = wrkMast.getStaNo();
+                        BasDevp basDevp = basDevpService.selectById(staNo);
+                        if (basDevp == null) {
+                            continue;//鐩爣绔欎笉瀛樺湪
+                        }
+                        //璧峰璺緞
+                        int startPath = rgvProtocol.getRgvPos().intValue();
+                        //鐩爣璺緞鍊�
+                        int endPath = basDevp.getLocType3().intValue();
+                        boolean pathUsed = RgvUtils.isPathUsed(startPath, endPath);//鍒ゆ柇琛岃蛋璺緞鏄惁琚崰鐢�
+                        if (pathUsed) {
+                            //琛岃蛋璺緞琚崰鐢紝绂佹涓嬪彂鍛戒护
+                            continue;
+                        }
+                        //琛岃蛋璺緞绌洪棽锛岄攣瀹氳矾寰�
+                        RgvUtils.lockPath(startPath, endPath, rgvProtocol.getRgvNo(), wrkMast.getWrkNo(), true);
+
+                        //  鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
+                        RgvCommand rgvCommand = new RgvCommand();
+                        rgvCommand.setRgvNo(wrkMast.getRgvNo()); // RGV缂栧彿
+                        rgvCommand.setAckFinish1((short) 0);  // 宸ヤ綅1浠诲姟瀹屾垚纭浣�
+                        rgvCommand.setTaskNo1(wrkMast.getWrkNo().shortValue()); // 宸ヤ綅1宸ヤ綔鍙�
+                        rgvCommand.setTaskMode1(RgvTaskModeType.PUT); // 宸ヤ綅1浠诲姟妯″紡:  鏀捐揣
+                        rgvCommand.setDestinationStaNo1(wrkMast.getRgvDstaNo().shortValue());   //宸ヤ綅1鐩爣绔欑偣
+                        rgvCommand.setCommand((short) 1);   //宸ヤ綅1浠诲姟纭
+                        if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getRgvNo(), new Task(4, rgvCommand))) {
+                            //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱   step=4锛屽伐浣�1鍐欎换鍔★紱     step=5锛屽伐浣�2鍐欎换鍔�
+                            log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", wrkMast.getRgvNo(), JSON.toJSON(rgvCommand));
+                        } else {
+                            // 淇敼宸ヤ綔妗g姸鎬� 25.RGV鍙栬揣瀹屾垚 => 26.RGV鏀捐揣涓�
+                            Date now = new Date();
+                            wrkMast.setWrkSts(26L);
+                            wrkMast.setModiTime(now);
+                            if (wrkMastMapper.updateById(wrkMast) == 0) {
+                                log.error("淇敼宸ヤ綔妗g姸鎬� 25.RGV鍙栬揣瀹屾垚 => 26.RGV鏀捐揣涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
+                            }
+                        }
                     }
                 }
-                // 濡傛灉鏈�杩戜竴娆℃槸鍑哄簱妯″紡
-                else if (rgvProtocol.getLastIo().equals("O")) {
-                    if (basRgv.getOutEnable().equals("Y")) {
-                        this.rgvOutStn(rgv, rgvProtocol); //  鍑哄簱
-                        rgvProtocol.setLastIo("I");
-                    } else if (basRgv.getInEnable().equals("Y")) {
-                        this.rgvInStn(rgv, rgvProtocol); //  鍏ュ簱
-                        rgvProtocol.setLastIo("O");
-                    }
-                }
+
             }
         }
+    }
+
+    private boolean rgvIoExecuteWrk2To3() {
+        return false;
     }
 
     /**
@@ -1237,6 +1502,9 @@
      * 鍏ュ簱  ===>>  RGV鍏ュ簱绔欏埌绔�
      */
     public synchronized void rgvInStn(RgvSlave slave, RgvProtocol rgvProtocol) {
+        WrkMast wrkMast = wrkMastMapper.selectRgvInSteNo(slave.getId());
+
+
         //鏌ユ壘宸ヤ綔鐘舵�佷负2锛堣澶囦笂璧帮級,涓擱GV鍏ュ簱鎺ラ┏绔欑鍚堢殑鐨勫叆搴撳伐浣滄。锛屾彁鍙栧嚭鏈�澶�2绗�
         List<WrkMast> wrkMastTask = getRgvInTask(slave);
         if(wrkMastTask.size() <= 0){
@@ -1500,6 +1768,7 @@
      * 鏍规嵁RGV瀹屾垚淇″彿锛屾墽琛屽宸ヤ綔妗g殑瀹屾垚鎿嶄綔锛屽拰RGV鐨勪换鍔′笅鍙�
      */
     public synchronized void rgvFinished() {
+        Date now = new Date();
         for (RgvSlave rgv : slaveProperties.getRgv()) {
             // 鑾峰彇RGV淇℃伅
             RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgv.getId());
@@ -1507,133 +1776,176 @@
             if (rgvProtocol == null) {
                 continue;
             }
-            //  宸ヤ綅1鐘舵�侊細鍙栬揣瀹屾垚绛夊緟纭91 骞朵笖  浠诲姟瀹屾垚浣� = 1
-            if (rgvProtocol.statusType1 == RgvStatusType.FETCHWAITING && rgvProtocol.getTaskNo1() != 0) {
-                //宸ヤ綅1鍙栬揣瀹屾垚鍚庯紝宸ヤ綅2鏄棤璐х┖闂茬姸鎬佹椂锛屽噯澶囩粰宸ヤ綅2鍙戜换鍔★紝纭鏄惁鏈夊緟鎵цRGV浠诲姟
-                if (rgvProtocol.getModeType() == RgvModeType.AUTO
-                        && rgvProtocol.getTaskNo1() > 0 && rgvProtocol.getTaskNo2() == 0
-                        && rgvProtocol.getLoaded1() > 0 && rgvProtocol.getLoaded2() == 0
-                        && rgvProtocol.getStatusType2() == RgvStatusType.IDLE
-                ) {
-                    WrkMast wrkMast1 = wrkMastMapper.selectPakInStep3(rgvProtocol.getTaskNo1().intValue());
-                    if (wrkMast1 == null) {
-                        log.error("RGV宸ヤ綅1澶勪簬绛夊緟纭涓斿彇璐т换鍔″畬鎴愮姸鎬侊紝浣嗘湭鎵惧埌宸ヤ綔妗c�俁GV鍙�={}锛屽伐浣滃彿={}", rgv.getId(), rgvProtocol.getTaskNo1());
-                        continue;
-                    }
-                    List<WrkMast> wrkMastTask = new ArrayList<>();
-                    List<WrkMast> list = new ArrayList<>();
-                    Integer type = 0;//1鍏ュ簱锛�2鍑哄簱
-                    if(wrkMast1.getWrkSts()==6L){
-                        wrkMastTask = getRgvInTask(rgv);
-                        list = wrkMastMapper.selectRgvInWorking(rgv.getId());
-                        type = 1;
-                    } else if(wrkMast1.getWrkSts()==16L){
-                        wrkMastTask = getRgvOutTask(rgv);
-                        list = wrkMastMapper.selectRgvOutWorking(rgv.getId());
-                        type = 2;
-                    }
-                    if(wrkMastTask.size() > 0){//鏈夌户缁墽琛屼换鍔★紝涓嬪彂鍙栬揣浠诲姟缁欏伐浣�2
-                        // 宸茬粡瀛樺湪RGV鎵ц浠诲姟鏃讹紝鍒欒繃婊�
-                        if (list.size() > 1) {
-                            continue;
-                        }
-                        WrkMast wrkMast2 = wrkMastTask.get(0);
-                        //  鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
-                        RgvCommand rgvCommand = new RgvCommand();
-                        rgvCommand.setRgvNo(rgv.getId()); // RGV缂栧彿
-                        rgvCommand.setAckFinish2((short) 0);  // 宸ヤ綅2浠诲姟瀹屾垚纭浣�
-                        rgvCommand.setTaskNo2(wrkMast2.getWrkNo().shortValue()); // 宸ヤ綅2宸ヤ綔鍙�
-                        rgvCommand.setTaskMode2(RgvTaskModeType.FETCH); // 宸ヤ綅2浠诲姟妯″紡:  鍙栬揣
-                        rgvCommand.setSourceStaNo2(wrkMast2.getRgvSstaNo().shortValue());   //宸ヤ綅2婧愮珯鐐�
-                        rgvCommand.setDestinationStaNo2(wrkMast2.getRgvDstaNo().shortValue());   //宸ヤ綅2鐩爣绔欑偣
-                        rgvCommand.setCommand((short) 0);   //宸ヤ綅1銆�2浠诲姟纭
-                        if (!MessageQueue.offer(SlaveType.Crn, wrkMast2.getRgvNo(), new Task(5, rgvCommand))) {
-                            //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱   step=4锛屽伐浣�1鍐欎换鍔★紱     step=5锛屽伐浣�2鍐欎换鍔�
-                            log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgv.getId(), JSON.toJSON(rgvCommand));
-                        } else {
-                            // 淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋 => 6.RGV鍏ュ簱鍙栬揣涓�
-                            Date now = new Date();
-                            wrkMast2.setWrkSts(type==1 ? 6L : 16L);
-                            wrkMast2.setCrnStrTime(now);
-                            wrkMast2.setModiTime(now);
-                            if (wrkMastMapper.updateById(wrkMast2) == 0) {
-                                log.error("宸ヤ綅2淇敼宸ヤ綔妗g姸鎬� 2/14.璁惧涓婅蛋 => 6/16.RGV鍏ュ簱鍙栬揣涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast2.getWrkNo());
-                            }
-                        }
-                    } else {//娌℃湁缁х画鎵ц浠诲姟锛屼笅鍙戞斁璐т换鍔$粰宸ヤ綅1
-                        if(type == 1 && wrkMast1.getWrkSts() != 6L){//RGV鍏ュ簱鍙栬揣涓�
-                            continue;
-                        }
-                        if(type == 2 && wrkMast1.getWrkSts() != 16L){//RGV鍑哄簱鍙栬揣涓�
-                            continue;
-                        }
-
-                        //  鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
-                        RgvCommand rgvCommand = new RgvCommand();
-                        rgvCommand.setRgvNo(rgv.getId()); // RGV缂栧彿
-                        rgvCommand.setAckFinish1((short) 0);  // 宸ヤ綅1浠诲姟瀹屾垚纭浣�
-                        rgvCommand.setTaskNo1(wrkMast1.getWrkNo().shortValue()); // 宸ヤ綅1宸ヤ綔鍙�
-                        rgvCommand.setTaskMode1(RgvTaskModeType.PUT); // 宸ヤ綅1浠诲姟妯″紡:  鏀捐揣
-                        rgvCommand.setSourceStaNo1(wrkMast1.getRgvSstaNo().shortValue());   //宸ヤ綅1婧愮珯鐐�
-                        rgvCommand.setDestinationStaNo1(wrkMast1.getRgvDstaNo().shortValue());   //宸ヤ綅1鐩爣绔欑偣
-                        rgvCommand.setCommand((short) 0);   //宸ヤ綅1銆�2浠诲姟纭
-                        if (!MessageQueue.offer(SlaveType.Crn, wrkMast1.getRgvNo(), new Task(4, rgvCommand))) {
-                            //step=2,宸ヤ綅1銆�2浠诲姟纭锛�   step=4锛屽伐浣�1纭锛�     step=5锛屽伐浣�2浠诲姟纭
-                            log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgv.getId(), JSON.toJSON(rgvCommand));
-                        } else {
-                            // 淇敼宸ヤ綔妗g姸鎬� 6.RGV鍏ュ簱鍙栬揣涓� => 7.RGV鍏ュ簱鏀捐揣涓�
-                            Date now = new Date();
-                            wrkMast1.setWrkSts(type==1 ? 7L : 17L);
-                            wrkMast1.setCrnEndTime(now);
-                            wrkMast1.setModiTime(now);
-                            if (wrkMastMapper.updateById(wrkMast1) == 0) {
-                                log.error("淇敼宸ヤ綔妗g姸鎬� 6/16.RGV鍏ュ簱鍙栬揣涓� => 7/17.RGV鍏ュ簱鏀捐揣涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast1.getWrkNo());
-                            }
-                            log.error("RGV鍛戒护涓嬪彂鎴愬姛锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgv.getId(), JSON.toJSON(rgvCommand));
-                        }
-                    }
-                } else if (rgvProtocol.getModeType() == RgvModeType.AUTO
-                        && rgvProtocol.getTaskNo1() > 0 && rgvProtocol.getTaskNo2() > 0
-                        && rgvProtocol.getLoaded1() > 0 && rgvProtocol.getLoaded2() > 0
-                        && rgvProtocol.statusType2 == RgvStatusType.FETCHWAITING){
-                    //  宸ヤ綅2鐘舵�侊細涔熸槸鍙栬揣瀹屾垚绛夊緟纭91 骞朵笖  浠诲姟瀹屾垚浣� = 1,  宸ヤ綅1銆�2鍚屾椂涓嬪彂鏀捐揣浠诲姟
-                    WrkMast wrkMast1 = wrkMastMapper.selectPakInStep3(rgvProtocol.getTaskNo1().intValue());
-                    WrkMast wrkMast2 = wrkMastMapper.selectPakInStep3(rgvProtocol.getTaskNo2().intValue());
-                    //  鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
-                    RgvCommand rgvCommand = new RgvCommand();
-                    rgvCommand.setRgvNo(rgv.getId()); // RGV缂栧彿
-                    rgvCommand.setAckFinish1((short) 0);  // 宸ヤ綅1浠诲姟瀹屾垚纭浣�
-                    rgvCommand.setTaskNo1(wrkMast1.getWrkNo().shortValue()); // 宸ヤ綅1宸ヤ綔鍙�
-                    rgvCommand.setTaskMode1(RgvTaskModeType.PUT); // 宸ヤ綅1浠诲姟妯″紡:  鏀捐揣
-                    rgvCommand.setSourceStaNo1(wrkMast1.getRgvSstaNo().shortValue());   //宸ヤ綅1婧愮珯鐐�
-                    rgvCommand.setDestinationStaNo1(wrkMast1.getRgvDstaNo().shortValue());   //宸ヤ綅1鐩爣绔欑偣
-                    rgvCommand.setAckFinish2((short) 0);  // 宸ヤ綅2浠诲姟瀹屾垚纭浣�
-                    rgvCommand.setTaskNo2(wrkMast2.getWrkNo().shortValue()); // 宸ヤ綅2宸ヤ綔鍙�
-                    rgvCommand.setTaskMode2(RgvTaskModeType.PUT); // 宸ヤ綅2浠诲姟妯″紡:  鏀捐揣
-                    rgvCommand.setSourceStaNo2(wrkMast2.getRgvSstaNo().shortValue());   //宸ヤ綅2婧愮珯鐐�
-                    rgvCommand.setDestinationStaNo2(wrkMast2.getRgvDstaNo().shortValue());   //宸ヤ綅2鐩爣绔欑偣
-                    rgvCommand.setCommand((short) 0);   //宸ヤ綅1銆�2浠诲姟纭
-                    if (!MessageQueue.offer(SlaveType.Crn, wrkMast1.getRgvNo(), new Task(2, rgvCommand))) {
-                        //step=2,宸ヤ綅1銆�2浠诲姟纭锛�   step=4锛屽伐浣�1纭锛�     step=5锛屽伐浣�2浠诲姟纭
-                        log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgv.getId(), JSON.toJSON(rgvCommand));
-                    } else {
-                        // 淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋 => 6.RGV鍏ュ簱鍙栬揣涓�
-                        Date now = new Date();
-                        wrkMast1.setWrkSts(wrkMast1.getWrkSts()==6L ? 7L : 17L);
-                        wrkMast1.setCrnStrTime(now);
-                        wrkMast1.setModiTime(now);
-                        if (wrkMastMapper.updateById(wrkMast1) == 0) {
-                            log.error("淇敼宸ヤ綔妗g姸鎬� 6/16.RGV鍏ュ簱鍙栬揣涓� => 7/17.RGV鍏ュ簱鏀捐揣涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast1.getWrkNo());
-                        }
-
-                        wrkMast2.setWrkSts(wrkMast2.getWrkSts()==6L ? 7L : 17L);
-                        wrkMast2.setCrnStrTime(now);
-                        wrkMast2.setModiTime(now);
-                        if (wrkMastMapper.updateById(wrkMast2) == 0) {
-                            log.error("淇敼宸ヤ綔妗g姸鎬� 6/16.RGV鍏ュ簱鍙栬揣涓� => 7/17.RGV鍏ュ簱鏀捐揣涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast2.getWrkNo());
-                        }
-                    }
+            //鍒ゆ柇RGV鏄惁绌洪棽锛屽伐浣�1鏄惁绌洪棽锛屽伐浣�1鏄惁鏈夌墿锛屾槸鍚︿负鐢佃剳妯″紡锛屽伐浣�1鏄惁鏈夊伐浣滃彿
+            if (rgvProtocol.statusType1 == RgvStatusType.FETCHWAITING
+                    && rgvProtocol.getModeType() == RgvModeType.AUTO
+                    && rgvProtocol.getTaskNo1() != 0
+                    && rgvProtocol.getStatus() != 0
+                    && rgvProtocol.getStatus1() != 0
+            ) {
+                WrkMast wrkMast1 = wrkMastMapper.selectPakInStep3(rgvProtocol.getTaskNo1().intValue());
+                if (wrkMast1 == null) {
+                    log.error("RGV宸ヤ綅1澶勪簬绛夊緟纭涓斿彇璐т换鍔″畬鎴愮姸鎬侊紝浣嗘湭鎵惧埌宸ヤ綔妗c�俁GV鍙�={}锛屽伐浣滃彿={}", rgv.getId(), rgvProtocol.getTaskNo1());
+                    continue;
                 }
+
+                if (wrkMast1.getWrkSts() == 3) {//3.RGV鍙栬揣涓� => 4.RGV鍙栬揣瀹屾垚
+                    wrkMast1.setWrkSts(4L);
+                }else if(wrkMast1.getWrkSts() == 5){//5.RGV鏀捐揣涓� => 6.RGV鏀捐揣瀹屾垚
+                    rgvProtocol.setTaskNo1((short) 0);//鍏ュ簱浠诲姟瀹屾垚锛屾竻绌轰换鍔″彿
+                    wrkMast1.setWrkSts(6L);
+                } else if (wrkMast1.getWrkSts() == 24) {//24.RGV鍙栬揣涓� => 25.RGV鍙栬揣瀹屾垚
+                    wrkMast1.setWrkSts(25L);//
+                } else if (wrkMast1.getWrkSts() == 26) {//26.RGV鏀捐揣涓� => 27.RGV鏀捐揣瀹屾垚
+                    rgvProtocol.setTaskNo1((short) 0);//鍑哄簱浠诲姟瀹屾垚锛屾竻绌轰换鍔″彿
+                    wrkMast1.setWrkSts(27L);//27.RGV鏀捐揣瀹屾垚
+                }
+
+                //瑙i攣璺緞
+                RgvUtils.unLockPath(wrkMast1.getRgvNo());
+
+                wrkMast1.setModiTime(now);
+                if (wrkMastMapper.updateById(wrkMast1) == 0) {
+                    log.error("宸ヤ綅1淇敼宸ヤ綔妗g姸鎬佸け璐ワ紒锛侊紝宸ヤ綔鍙�={}", wrkMast1.getWrkNo());
+                }
+
+                //  鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
+                RgvCommand rgvCommand = new RgvCommand();
+                rgvCommand.setRgvNo(rgv.getId()); // RGV缂栧彿
+                rgvCommand.setAckFinish1((short) 1);  // 宸ヤ綅1浠诲姟瀹屾垚纭浣�
+                rgvCommand.setTaskNo1(wrkMast1.getWrkNo().shortValue()); // 宸ヤ綅1宸ヤ綔鍙�
+                rgvCommand.setTaskMode1(RgvTaskModeType.NONE); // 宸ヤ綅1浠诲姟妯″紡:  鏃�
+                rgvCommand.setCommand((short) 1);   //宸ヤ綅1浠诲姟纭
+                if (!MessageQueue.offer(SlaveType.Crn, wrkMast1.getRgvNo(), new Task(4, rgvCommand))) {
+                    //step=2,宸ヤ綅1銆�2浠诲姟纭锛�   step=4锛屽伐浣�1纭锛�     step=5锛屽伐浣�2浠诲姟纭
+                    log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgv.getId(), JSON.toJSON(rgvCommand));
+                }
+
+//                //宸ヤ綅1鍙栬揣瀹屾垚鍚庯紝宸ヤ綅2鏄棤璐х┖闂茬姸鎬佹椂锛屽噯澶囩粰宸ヤ綅2鍙戜换鍔★紝纭鏄惁鏈夊緟鎵цRGV浠诲姟
+//                if (rgvProtocol.getModeType() == RgvModeType.AUTO
+//                        && rgvProtocol.getTaskNo1() > 0 && rgvProtocol.getTaskNo2() == 0
+//                        && rgvProtocol.getLoaded1() > 0 && rgvProtocol.getLoaded2() == 0
+//                        && rgvProtocol.getStatusType2() == RgvStatusType.IDLE
+//                ) {
+//                    WrkMast wrkMast1 = wrkMastMapper.selectPakInStep3(rgvProtocol.getTaskNo1().intValue());
+//                    if (wrkMast1 == null) {
+//                        log.error("RGV宸ヤ綅1澶勪簬绛夊緟纭涓斿彇璐т换鍔″畬鎴愮姸鎬侊紝浣嗘湭鎵惧埌宸ヤ綔妗c�俁GV鍙�={}锛屽伐浣滃彿={}", rgv.getId(), rgvProtocol.getTaskNo1());
+//                        continue;
+//                    }
+//                    List<WrkMast> wrkMastTask = new ArrayList<>();
+//                    List<WrkMast> list = new ArrayList<>();
+//                    Integer type = 0;//1鍏ュ簱锛�2鍑哄簱
+//                    if(wrkMast1.getWrkSts()==6L){
+//                        wrkMastTask = getRgvInTask(rgv);
+//                        list = wrkMastMapper.selectRgvInWorking(rgv.getId());
+//                        type = 1;
+//                    } else if(wrkMast1.getWrkSts()==16L){
+//                        wrkMastTask = getRgvOutTask(rgv);
+//                        list = wrkMastMapper.selectRgvOutWorking(rgv.getId());
+//                        type = 2;
+//                    }
+//                    if(wrkMastTask.size() > 0){//鏈夌户缁墽琛屼换鍔★紝涓嬪彂鍙栬揣浠诲姟缁欏伐浣�2
+//                        // 宸茬粡瀛樺湪RGV鎵ц浠诲姟鏃讹紝鍒欒繃婊�
+//                        if (list.size() > 1) {
+//                            continue;
+//                        }
+//                        WrkMast wrkMast2 = wrkMastTask.get(0);
+//                        //  鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
+//                        RgvCommand rgvCommand = new RgvCommand();
+//                        rgvCommand.setRgvNo(rgv.getId()); // RGV缂栧彿
+//                        rgvCommand.setAckFinish2((short) 0);  // 宸ヤ綅2浠诲姟瀹屾垚纭浣�
+//                        rgvCommand.setTaskNo2(wrkMast2.getWrkNo().shortValue()); // 宸ヤ綅2宸ヤ綔鍙�
+//                        rgvCommand.setTaskMode2(RgvTaskModeType.FETCH); // 宸ヤ綅2浠诲姟妯″紡:  鍙栬揣
+//                        rgvCommand.setSourceStaNo2(wrkMast2.getRgvSstaNo().shortValue());   //宸ヤ綅2婧愮珯鐐�
+//                        rgvCommand.setDestinationStaNo2(wrkMast2.getRgvDstaNo().shortValue());   //宸ヤ綅2鐩爣绔欑偣
+//                        rgvCommand.setCommand((short) 0);   //宸ヤ綅1銆�2浠诲姟纭
+//                        if (!MessageQueue.offer(SlaveType.Crn, wrkMast2.getRgvNo(), new Task(5, rgvCommand))) {
+//                            //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱   step=4锛屽伐浣�1鍐欎换鍔★紱     step=5锛屽伐浣�2鍐欎换鍔�
+//                            log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgv.getId(), JSON.toJSON(rgvCommand));
+//                        } else {
+//                            // 淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋 => 6.RGV鍏ュ簱鍙栬揣涓�
+//                            Date now = new Date();
+//                            wrkMast2.setWrkSts(type==1 ? 6L : 16L);
+//                            wrkMast2.setCrnStrTime(now);
+//                            wrkMast2.setModiTime(now);
+//                            if (wrkMastMapper.updateById(wrkMast2) == 0) {
+//                                log.error("宸ヤ綅2淇敼宸ヤ綔妗g姸鎬� 2/14.璁惧涓婅蛋 => 6/16.RGV鍏ュ簱鍙栬揣涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast2.getWrkNo());
+//                            }
+//                        }
+//                    } else {//娌℃湁缁х画鎵ц浠诲姟锛屼笅鍙戞斁璐т换鍔$粰宸ヤ綅1
+//                        if(type == 1 && wrkMast1.getWrkSts() != 6L){//RGV鍏ュ簱鍙栬揣涓�
+//                            continue;
+//                        }
+//                        if(type == 2 && wrkMast1.getWrkSts() != 16L){//RGV鍑哄簱鍙栬揣涓�
+//                            continue;
+//                        }
+//
+//                        //  鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
+//                        RgvCommand rgvCommand = new RgvCommand();
+//                        rgvCommand.setRgvNo(rgv.getId()); // RGV缂栧彿
+//                        rgvCommand.setAckFinish1((short) 0);  // 宸ヤ綅1浠诲姟瀹屾垚纭浣�
+//                        rgvCommand.setTaskNo1(wrkMast1.getWrkNo().shortValue()); // 宸ヤ綅1宸ヤ綔鍙�
+//                        rgvCommand.setTaskMode1(RgvTaskModeType.PUT); // 宸ヤ綅1浠诲姟妯″紡:  鏀捐揣
+//                        rgvCommand.setSourceStaNo1(wrkMast1.getRgvSstaNo().shortValue());   //宸ヤ綅1婧愮珯鐐�
+//                        rgvCommand.setDestinationStaNo1(wrkMast1.getRgvDstaNo().shortValue());   //宸ヤ綅1鐩爣绔欑偣
+//                        rgvCommand.setCommand((short) 0);   //宸ヤ綅1銆�2浠诲姟纭
+//                        if (!MessageQueue.offer(SlaveType.Crn, wrkMast1.getRgvNo(), new Task(4, rgvCommand))) {
+//                            //step=2,宸ヤ綅1銆�2浠诲姟纭锛�   step=4锛屽伐浣�1纭锛�     step=5锛屽伐浣�2浠诲姟纭
+//                            log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgv.getId(), JSON.toJSON(rgvCommand));
+//                        } else {
+//                            // 淇敼宸ヤ綔妗g姸鎬� 6.RGV鍏ュ簱鍙栬揣涓� => 7.RGV鍏ュ簱鏀捐揣涓�
+//                            Date now = new Date();
+//                            wrkMast1.setWrkSts(type==1 ? 7L : 17L);
+//                            wrkMast1.setCrnEndTime(now);
+//                            wrkMast1.setModiTime(now);
+//                            if (wrkMastMapper.updateById(wrkMast1) == 0) {
+//                                log.error("淇敼宸ヤ綔妗g姸鎬� 6/16.RGV鍏ュ簱鍙栬揣涓� => 7/17.RGV鍏ュ簱鏀捐揣涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast1.getWrkNo());
+//                            }
+//                            log.error("RGV鍛戒护涓嬪彂鎴愬姛锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgv.getId(), JSON.toJSON(rgvCommand));
+//                        }
+//                    }
+//                } else if (rgvProtocol.getModeType() == RgvModeType.AUTO
+//                        && rgvProtocol.getTaskNo1() > 0 && rgvProtocol.getTaskNo2() > 0
+//                        && rgvProtocol.getLoaded1() > 0 && rgvProtocol.getLoaded2() > 0
+//                        && rgvProtocol.statusType2 == RgvStatusType.FETCHWAITING){
+//                    //  宸ヤ綅2鐘舵�侊細涔熸槸鍙栬揣瀹屾垚绛夊緟纭91 骞朵笖  浠诲姟瀹屾垚浣� = 1,  宸ヤ綅1銆�2鍚屾椂涓嬪彂鏀捐揣浠诲姟
+//                    WrkMast wrkMast1 = wrkMastMapper.selectPakInStep3(rgvProtocol.getTaskNo1().intValue());
+//                    WrkMast wrkMast2 = wrkMastMapper.selectPakInStep3(rgvProtocol.getTaskNo2().intValue());
+//                    //  鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
+//                    RgvCommand rgvCommand = new RgvCommand();
+//                    rgvCommand.setRgvNo(rgv.getId()); // RGV缂栧彿
+//                    rgvCommand.setAckFinish1((short) 0);  // 宸ヤ綅1浠诲姟瀹屾垚纭浣�
+//                    rgvCommand.setTaskNo1(wrkMast1.getWrkNo().shortValue()); // 宸ヤ綅1宸ヤ綔鍙�
+//                    rgvCommand.setTaskMode1(RgvTaskModeType.PUT); // 宸ヤ綅1浠诲姟妯″紡:  鏀捐揣
+//                    rgvCommand.setSourceStaNo1(wrkMast1.getRgvSstaNo().shortValue());   //宸ヤ綅1婧愮珯鐐�
+//                    rgvCommand.setDestinationStaNo1(wrkMast1.getRgvDstaNo().shortValue());   //宸ヤ綅1鐩爣绔欑偣
+//                    rgvCommand.setAckFinish2((short) 0);  // 宸ヤ綅2浠诲姟瀹屾垚纭浣�
+//                    rgvCommand.setTaskNo2(wrkMast2.getWrkNo().shortValue()); // 宸ヤ綅2宸ヤ綔鍙�
+//                    rgvCommand.setTaskMode2(RgvTaskModeType.PUT); // 宸ヤ綅2浠诲姟妯″紡:  鏀捐揣
+//                    rgvCommand.setSourceStaNo2(wrkMast2.getRgvSstaNo().shortValue());   //宸ヤ綅2婧愮珯鐐�
+//                    rgvCommand.setDestinationStaNo2(wrkMast2.getRgvDstaNo().shortValue());   //宸ヤ綅2鐩爣绔欑偣
+//                    rgvCommand.setCommand((short) 0);   //宸ヤ綅1銆�2浠诲姟纭
+//                    if (!MessageQueue.offer(SlaveType.Crn, wrkMast1.getRgvNo(), new Task(2, rgvCommand))) {
+//                        //step=2,宸ヤ綅1銆�2浠诲姟纭锛�   step=4锛屽伐浣�1纭锛�     step=5锛屽伐浣�2浠诲姟纭
+//                        log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgv.getId(), JSON.toJSON(rgvCommand));
+//                    } else {
+//                        // 淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋 => 6.RGV鍏ュ簱鍙栬揣涓�
+//                        Date now = new Date();
+//                        wrkMast1.setWrkSts(wrkMast1.getWrkSts()==6L ? 7L : 17L);
+//                        wrkMast1.setCrnStrTime(now);
+//                        wrkMast1.setModiTime(now);
+//                        if (wrkMastMapper.updateById(wrkMast1) == 0) {
+//                            log.error("淇敼宸ヤ綔妗g姸鎬� 6/16.RGV鍏ュ簱鍙栬揣涓� => 7/17.RGV鍏ュ簱鏀捐揣涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast1.getWrkNo());
+//                        }
+//
+//                        wrkMast2.setWrkSts(wrkMast2.getWrkSts()==6L ? 7L : 17L);
+//                        wrkMast2.setCrnStrTime(now);
+//                        wrkMast2.setModiTime(now);
+//                        if (wrkMastMapper.updateById(wrkMast2) == 0) {
+//                            log.error("淇敼宸ヤ綔妗g姸鎬� 6/16.RGV鍏ュ簱鍙栬揣涓� => 7/17.RGV鍏ュ簱鏀捐揣涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast2.getWrkNo());
+//                        }
+//                    }
+//                }
             }
 
         }
@@ -2180,7 +2492,12 @@
                         LocTypeDto locTypeDto = new LocTypeDto(staProtocol);
 
                         SearchLocParam param = new SearchLocParam();
-                        param.setIoType(10);
+                        if (emptyInSta.getStaNo().equals(214)){
+                            //鎷嗙洏鏈哄绌烘澘鎵爜锛岄┍鍔ㄦ墭鐩樺悜鐮佸灈浣嶏紝涓嶅叆搴�
+                            param.setIoType(201);
+                        }else {
+                            param.setIoType(10);
+                        }
                         param.setSourceStaNo(emptyInSta.getStaNo());
                         param.setLocType1(locTypeDto.getLocType1());
                         String response = new HttpHandler.Builder()
@@ -2208,64 +2525,7 @@
                         e.printStackTrace();
                         TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                     }
-
-
-//                    // 妫�绱㈠簱浣�
-//                    LocTypeDto locTypeDto = new LocTypeDto(staProtocol);
-//                    StartupDto startupDto = commonService.getLocNo(1, 10, emptyInSta.getStaNo(), null, locTypeDto, 0);
-//                    // 宸ヤ綔鍙�
-//                    int workNo = startupDto.getWorkNo();
-//
-//                    try {
-//                        // 鎻掑叆宸ヤ綔涓绘。
-//                        WrkMast wrkMast = new WrkMast();
-//                        wrkMast.setWrkNo(workNo);
-//                        wrkMast.setIoTime(new Date());
-//                        wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵�侊細2.璁惧涓婅蛋
-//                        wrkMast.setIoType(10); // 鍏ュ嚭搴撶姸鎬侊細10.绌烘澘鍏ュ簱
-//                        wrkMast.setIoPri(10D); // 浼樺厛绾э細10
-//                        wrkMast.setCrnNo(startupDto.getCrnNo());
-//                        wrkMast.setSourceStaNo(startupDto.getSourceStaNo());
-//                        wrkMast.setStaNo(startupDto.getStaNo());
-//                        wrkMast.setLocNo(startupDto.getLocNo());
-//                        wrkMast.setFullPlt("N"); // 婊℃澘
-//                        wrkMast.setPicking("N"); // 鎷f枡
-//                        wrkMast.setExitMk("N"); // 閫�鍑�
-//                        wrkMast.setEmptyMk("Y"); // 绌烘澘
-//                        wrkMast.setLinkMis("N");
-////                    wrkMast.setCtnType(sourceStaNo.getCtnType()); // 瀹瑰櫒绫诲瀷
-//                        // 鎿嶄綔浜哄憳鏁版嵁
-//                        wrkMast.setAppeTime(new Date());
-//                        wrkMast.setModiTime(new Date());
-//                        Integer insert = wrkMastMapper.insert(wrkMast);
-//                        if (insert == 0) {
-//                            throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
-//                        }
-//                        // 鏇存柊鐩爣搴撲綅鐘舵��
-//                        LocMast locMast = locMastService.selectById(startupDto.getLocNo());
-//                        locMast.setLocSts("S"); // S.鍏ュ簱棰勭害
-//                        locMast.setModiTime(new Date());
-//                        if (!locMastService.updateById(locMast)){
-//                            throw new CoolException("鏀瑰彉搴撲綅鐘舵�佸け璐�");
-//                        }
-//                        // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
-//
-//                        // 鏇存柊绔欑偣淇℃伅 涓� 涓嬪彂plc鍛戒护
-//                        staProtocol.setWorkNo((short) workNo);
-//                        staProtocol.setStaNo(startupDto.getStaNo().shortValue());
-//                        devpThread.setPakMk(staProtocol.getSiteId(), false);
-//                        boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
-//                        if (!result) {
-//                            throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
-//                        }
-//                    } catch (Exception e) {
-//                        e.printStackTrace();
-//                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-//                    }
-
                 }
-
-
             }
         }
     }
@@ -2624,6 +2884,27 @@
     }
 
     /**
+     * 鍒濆鍖朢GV鍦板浘
+     */
+    public synchronized void initRgvMap() {
+        Object data = redisUtil.get("rgv_map");
+        if (data == null) {
+            //閲嶆柊鑾峰彇鍏ㄨ矾寰勫湴鍥�
+            BasRgvPath basRgvPath = basRgvPathService.selectByRgvNo(0);//鑾峰彇榛樿璺緞
+            if (basRgvPath != null) {
+                ArrayList<RgvNode> rgvNodes = new ArrayList<>();
+                List<Integer> rgvPath = JSON.parseArray(basRgvPath.getPath(), Integer.class);
+                for (Integer integer : rgvPath) {
+                    RgvNode rgvNode = new RgvNode(integer);
+                    rgvNodes.add(rgvNode);
+                }
+                //灏嗘暟鎹簱鍦板浘鏁版嵁瀛樺叆redis
+                redisUtil.set("rgv_map", JSON.toJSONString(rgvNodes));
+            }
+        }
+    }
+
+    /**
      * 鍫嗗灈鏈烘紨绀�  ===>> 搴撲綅绉昏浆
      */
     public synchronized void crnDemoOfLocMove1() {
@@ -2927,4 +3208,81 @@
             }
         }
     }
+
+    /**
+     * 鍏朵粬  ===>> 鐮佸灈浣嶈嚜鍔ㄨˉ鍏呯┖鏉匡細椹卞姩鎷嗙洏鏈鸿緭鍑烘墭鐩�
+     */
+    public synchronized void dischargingMachineOutputTray() {
+        try {
+            List<WrkMast> wrkMasts = wrkMastMapper.selectDischargingMachineOutputTray();
+            if (Cools.isEmpty(wrkMasts) || wrkMasts.size()>3){
+                return;
+            }
+
+            // 鑾峰彇鍏ュ簱绔欎俊鎭�
+            SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1);
+            StaProtocol staProtocol = devpThread.getStation().get(213);
+            if (staProtocol == null) {
+                log.error("鐮佸灈浣嶈嚜鍔ㄨˉ鍏呯┖鏉匡細椹卞姩鎷嗙洏鏈鸿緭鍑烘墭鐩橈紝浠诲姟涓嬪彂澶辫触锛岀珯鐐规煡璇㈠け璐�");
+                return;
+            } else {
+                staProtocol = staProtocol.clone();
+            }
+
+            if (!staProtocol.isLoading()){
+                log.info("鐮佸灈浣嶈嚜鍔ㄨˉ鍏呯┖鏉匡細椹卞姩鎷嗙洏鏈鸿緭鍑烘墭鐩橈紝浠诲姟涓嬪彂澶辫触锛岀珯鐐规棤鐗╋紝姝e湪鑷姩璋冨嚭绌烘澘锛�");
+                int i = wrkMastMapper.selectConfigCount10468N();
+                if (i==1){
+                    wrkMastMapper.updateConfig10468Y();
+                }
+                return;
+            }else {
+                int i = wrkMastMapper.selectConfigCount10468N();
+                if (i==0){
+                    return;
+                }
+            }
+            StaProtocol staProtocol214 = devpThread.getStation().get(214);
+            // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢
+            if (staProtocol.isAutoing() && staProtocol.getWorkNo() == 0 && staProtocol.isPakMk() && staProtocol214.getWorkNo()==0) {
+                staProtocol.setWorkNo((short)9999);
+                staProtocol.setStaNo((short)214);
+                devpThread.setPakMk(staProtocol.getSiteId(), false);
+                boolean result = MessageQueue.offer(SlaveType.Devp, devpThread.getSlave().getId(), new Task(2, staProtocol));
+                if (!result) {
+                    throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触==>鐮佸灈浣嶈嚜鍔ㄨˉ鍏呯┖鏉匡細椹卞姩鎷嗙洏鏈鸿緭鍑烘墭鐩橈紒");
+                }
+                log.info("鐮佸灈浣嶈嚜鍔ㄨˉ鍏呯┖鏉匡細椹卞姩鎷嗙洏鏈鸿緭鍑烘墭鐩橈紝浠诲姟涓嬪彂鎴愬姛锛氬伐浣滃彿9999銆佺洰鏍囩珯214锛�");
+            }else {
+                log.error("鐮佸灈浣嶈嚜鍔ㄨˉ鍏呯┖鏉匡細椹卞姩鎷嗙洏鏈鸿緭鍑烘墭鐩橈紝浠诲姟涓嬪彂澶辫触锛岀珯鐐圭姸鎬佷笉绗﹀悎锛�");
+            }
+        }catch (Exception e){
+            e.printStackTrace();
+            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+        }
+    }
+
+    /**
+     * 鍏朵粬  ===>> 鎷嗙洏鏈哄绌烘澘鎵爜锛岄┍鍔ㄦ墭鐩樺悜鐮佸灈浣嶏紝涓嶅叆搴�
+     */
+    public synchronized void scanBarcodeEmptyBoard() {
+        try {
+
+        }catch (Exception e){
+            e.printStackTrace();
+            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+        }
+    }
+
+    /**
+     * 鍏朵粬  ===>> 鐮佸灈瀹屾垚椹卞姩鎵樼洏涓嬩竴姝ユ壂鐮佸叆搴�
+     */
+    public synchronized void stackingCompletionDriveTray() {
+        try {
+
+        }catch (Exception e){
+            e.printStackTrace();
+            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+        }
+    }
 }

--
Gitblit v1.9.1