From 98ba81630f3192aaa4b7fbb67596c3154d05d7d3 Mon Sep 17 00:00:00 2001
From: lsh <lsh@163.com>
Date: 星期四, 05 六月 2025 20:31:25 +0800
Subject: [PATCH] *

---
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |  403 ++++++++++++++++++++++++++++++++++++++++-----------------
 1 files changed, 283 insertions(+), 120 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 73d82ce..89115d2 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -58,6 +58,8 @@
     @Autowired
     private CommonService commonService;
 
+    @Value("${constant-parameters.taskRunPerimeter}")
+    private Long taskRunPerimeter;
     @Value("${constant-parameters.perimeter}")
     private Long perimeter;
     @Value("${constant-parameters.proportion}")
@@ -107,13 +109,14 @@
                 log.error("鑾峰彇鎵�鏈夌珯鐐逛俊鎭紓甯�");
                 return;
             }
-            List<Integer> siteList = SortTheExecutionOfTheCarUtil.WrkMastExtractSites(wrkMasts);
-            List<Integer> devpList = SortTheExecutionOfTheCarUtil.BasDevpPositionExtractSites(basDevpPositions);
-            Integer siteNo = SortTheExecutionOfTheCarUtil.ObtainDenseAreasFirstPlace(siteList, devpList);
-            if (siteNo == null) {
-                log.error("灏辫繎瀵嗛泦鍘熷垯鑾峰彇绔欑偣澶辫触");
-                return;
-            }
+//            List<Integer> siteList = SortTheExecutionOfTheCarUtil.WrkMastExtractSites(wrkMasts);
+//            List<Integer> devpList = SortTheExecutionOfTheCarUtil.BasDevpPositionExtractSites(basDevpPositions);
+//            Integer siteNo = SortTheExecutionOfTheCarUtil.ObtainDenseAreasFirstPlace(siteList, devpList);
+//            if (siteNo == null) {
+//                log.error("灏辫繎瀵嗛泦鍘熷垯鑾峰彇绔欑偣澶辫触");
+//                return;
+//            }
+            Integer siteNo = 110;
             Long sitePosition = 0L;
             for (BasDevpPosition basDevpPosition : basDevpPositions) {
                 if (basDevpPosition.getDevNo().equals(siteNo)) {
@@ -242,15 +245,52 @@
                 return;
             }
             List<BasDevpPosition> basDevpPositions = basDevpPositionService.selectList(new EntityWrapper<BasDevpPosition>().orderBy("plc_position", true));
+            List<BasDevpPosition> basDevpPositionDevRegion = basDevpPositionService.selectList(new EntityWrapper<BasDevpPosition>().orderBy("dev_region", true));
             Integer devNo = SortTheExecutionOfTheCarUtil.LatelyAndLessThan(basDevpPositions, rgvProtocol.getRgvPos(), perimeter);
             BasDevpPosition[] basDevpPositionsList = SortTheExecutionOfTheCarUtil.devpNoSort(basDevpPositions, devNo);
             BasDevpPosition[] basDevpPositionsListUN = SortTheExecutionOfTheCarUtil.devpNoSortUN(basDevpPositionsList);
-            List<List<WrkMast>> wrkMastLists = getWrkMastLists(basDevpPositionsListUN);
+            List<List<Integer>> siteListAll = SortTheExecutionOfTheCarUtil.siteListAll(basDevpPositionDevRegion);
+//            List<List<WrkMast>> wrkMastLists = getWrkMastLists(basDevpPositionsListUN);
+            List<List<List<WrkMast>>> wrkMastListAll = getWrkMastListAll(siteListAll,basDevpPositionsListUN);
             //涓嬪彂浠诲姟
-            taskDown(wrkMastLists);
+//            taskDown(wrkMastLists);
+            taskDown(wrkMastListAll);
         } catch (Exception e) {
             log.error("鑷姩涓嬪彂灏忚溅鍙栨斁浠诲姟澶辫触锛屽紓甯革細" + e);
         }
+    }
+
+    //鑾峰彇灏忚溅鍙栨斁浠诲姟鍒楄〃澶辫触
+    public synchronized List<List<List<WrkMast>>> getWrkMastListAll(List<List<Integer>> siteListAll ,BasDevpPosition[] basDevpPositionsListUN) {
+        List<List<List<WrkMast>>> wrkMastListAll = new ArrayList<>();
+        for (List<Integer> siteList : siteListAll){
+            List<List<WrkMast>> wrkMastLists = new ArrayList<>();
+            try {
+                List<WrkMast> wrkMastlistA = new ArrayList<>();
+                List<WrkMast> wrkMastlistB = new ArrayList<>();
+                for (BasDevpPosition basDevpPosition : basDevpPositionsListUN) {
+                    List<WrkMast> wrkMastList = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("sta_no", basDevpPosition.getDevNo()).eq("wrk_sts", 1L).orderBy("modi_time", true));
+                    for (WrkMast wrkMast : wrkMastList) {
+                        if (!Cools.isEmpty(wrkMast)) {
+                            if (siteList.contains(wrkMast.getSourceStaNo())){
+                                if (SortTheExecutionOfTheCarUtil.devpNoSortbj(basDevpPositionsListUN, wrkMast.getSourceStaNo(), wrkMast.getStaNo())) {
+                                    wrkMastlistA.add(wrkMast);
+                                } else {
+                                    wrkMastlistB.add(wrkMast);
+                                }
+                            }
+                        }
+                    }
+                }
+                wrkMastLists.add(wrkMastlistA);
+                wrkMastLists.add(wrkMastlistB);
+//                return wrkMastLists;
+                wrkMastListAll.add(wrkMastLists);
+            } catch (Exception e) {
+                log.error("鑾峰彇灏忚溅鍙栨斁浠诲姟鍒楄〃澶辫触锛屽紓甯革細" + e);
+            }
+        }
+        return wrkMastListAll;
     }
 
     //鑾峰彇灏忚溅鍙栨斁浠诲姟鍒楄〃澶辫触
@@ -280,41 +320,212 @@
         }
     }
 
-    public synchronized void taskDown(List<List<WrkMast>> wrkMastLists) {
-        long rgvId = 0;
-        runRgv:
-        for (List<WrkMast> wrkMastList : wrkMastLists) {
-            for (WrkMast wrkMast : wrkMastList) {
-                while (rgvId <= rgvCount) {
-                    rgvId++;
+//    public synchronized void taskDown(List<List<WrkMast>> wrkMastLists) {
+//        long rgvId = 0;
+//        runRgv:
+//        for (List<WrkMast> wrkMastList : wrkMastLists) {
+//            for (WrkMast wrkMast : wrkMastList) {
+//                while (rgvId <= rgvCount) {
+//                    rgvId++;
+////                    log.info("瀛樺湪浠诲姟锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, JSON.toJSON(wrkMast));
+//                    if (rgvId > rgvCount) {
+//                        break runRgv;
+//                    }
+//                    BasCircularShuttle basCircularShuttle = basCircularShuttleService.selectOne(new EntityWrapper<BasCircularShuttle>().eq("rgv_id", rgvId));
+//                    if (basCircularShuttle.getStatus() != 0){
+//                        continue ;
+//                    }
+//                    RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, basCircularShuttle.getRgvNo());
+//                    RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
+//                    if (rgvProtocol == null) {
+//                        continue;
+//                    }
+//
+//                    List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("rgv_no", rgvProtocol.getRgvNo()).eq("wrk_sts", 2L));
+//                    if (!wrkMasts.isEmpty()) {
+//                        continue;
+//                    }
+//                    if (rgvProtocol != null
+//                            && rgvProtocol.modeType == RgvModeType.AUTO
+//                            && (rgvProtocol.getStatusType() == RgvStatusType.IDLE || rgvProtocol.getStatusType() == RgvStatusType.ROAM)
+//                            && rgvProtocol.getTaskNo1() == 0
+//                            && rgvProtocol.getAlarm() == 0) {
+//                        if (rgvProtocol.getStatusType() == RgvStatusType.ROAM) {
+//                            double finalVelocity = 0.0;     // 鏈�缁堥�熷害 (m/s)
+//                            double distance = (Math.pow(finalVelocity, 2) - Math.pow(rgvProtocol.instantaneousSpeed / 60, 2)) / (2 * acceleration);
+//                            BasDevpPosition basDevpPosition = basDevpPositionService.selectOne(new EntityWrapper<BasDevpPosition>().eq("dev_no", wrkMast.getSourceStaNo()));
+//                            if ((distance * proportion + (rgvProtocol.instantaneousSpeed / 60) * proportion * rgvDate) > (SortTheExecutionOfTheCarUtil.LatelyAndLessThan(basDevpPosition.getPlcPosition(), rgvProtocol.getRgvPos(), perimeter) )) {
+////                                List<BasDevpPosition> basDevpPositions = basDevpPositionService.selectList(new EntityWrapper<BasDevpPosition>().orderBy("plc_position", true));
+////                                if (basDevpPositions.isEmpty()) {
+////                                    log.error("鑾峰彇鎵�鏈夌珯鐐逛俊鎭紓甯�,RGV浠诲姟涓嬪彂澶辫触锛岃鑱旂郴绠$悊鍛橈紒锛侊紒");
+////                                    break runRgv;
+////                                }
+////                                List<Integer> devpList = SortTheExecutionOfTheCarUtil.BasDevpPositionExtractSites(basDevpPositions);
+////
+////                                if (!SortTheExecutionOfTheCarUtil.calculateShortestDistanceDirection(devpList,rgvProtocol.getEndStaM(),wrkMast.getSourceStaNo())){
+//                                    continue;
+////                                }
+//                            }
+//                        }
+//                        RgvCommand rgvCommand = new RgvCommand();
+//                        rgvCommand.setRgvNo(rgvProtocol.getRgvNo());
+//                        rgvCommand.setAckFinish1((short) 0);  // 宸ヤ綅1浠诲姟瀹屾垚纭浣�
+//                        rgvCommand.setTaskNo1(wrkMast.getWrkNo().shortValue());
+//                        rgvCommand.setTaskMode1(RgvTaskModeType.FETCH_PUT); // 宸ヤ綅1浠诲姟妯″紡:  鍙栨斁璐�
+//                        rgvCommand.setSourceStaNo1(wrkMast.getSourceStaNo().shortValue());   //宸ヤ綅1璧风偣
+//                        rgvCommand.setDestinationStaNo1(wrkMast.getStaNo().shortValue());   //宸ヤ綅1鐩爣绔欑偣
+//                        rgvCommand.setCommand((short) 1);   //宸ヤ綅1浠诲姟纭
+//                        rgvCommand.setRgvSome(basCircularShuttle.getRgvSome()==1 ? (short) 1 : (short) 0);
+//                        if (!MessageQueue.offer(SlaveType.Rgv, rgvProtocol.getRgvNo(), new Task(2, rgvCommand))) {
+//                            //
+//                            log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, JSON.toJSON(rgvCommand));
+//                            break runRgv;
+//                        }
+//                        log.info("RGV鍛戒护涓嬪彂鎴愬姛锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, JSON.toJSON(rgvCommand));
+//
+//                        wrkMast.setWrkSts(2L);
+//                        wrkMast.setRgvNo(rgvProtocol.getRgvNo());
+//                        Date now = new Date();
+//                        wrkMast.setAppeTime(now);
+//                        wrkMast.setCrnStrTime(now);
+//                        try {
+//                            wrkMastService.updateById(wrkMast);
+//                            break;
+//                        } catch (Exception e) {
+//                            log.error("鏇存柊灏忚溅浠诲姟澶辫触,浠诲姟鍙凤細" + wrkMast.getWrkNo());
+//                        }
+//                        break runRgv;
+//                    } else if (rgvProtocol != null
+//                            && rgvProtocol.modeType == RgvModeType.AUTO
+//                            && rgvProtocol.getStatusType() == RgvStatusType.WALK
+//                            && rgvProtocol.getTaskNo1() == 0
+//                            && rgvProtocol.getAlarm() == 0) {
+//                        if (rgvProtocol.getStatusType() == RgvStatusType.WALK) {
+//                            double finalVelocity = 0.0;     // 鏈�缁堥�熷害 (m/s)
+//                            double distance = (Math.pow(finalVelocity, 2) - Math.pow(rgvProtocol.instantaneousSpeed / 60, 2)) / (2 * acceleration);
+//                            BasDevpPosition basDevpPosition = basDevpPositionService.selectOne(new EntityWrapper<BasDevpPosition>().eq("dev_no", wrkMast.getSourceStaNo()));
+//                            if ((distance * proportion + (rgvProtocol.instantaneousSpeed / 60) * proportion * rgvDate) > (SortTheExecutionOfTheCarUtil.LatelyAndLessThan(basDevpPosition.getPlcPosition(), rgvProtocol.getRgvPos(), perimeter) )) {
+////                                List<BasDevpPosition> basDevpPositions = basDevpPositionService.selectList(new EntityWrapper<BasDevpPosition>().orderBy("plc_position", true));
+////                                if (basDevpPositions.isEmpty()) {
+////                                    log.error("鑾峰彇鎵�鏈夌珯鐐逛俊鎭紓甯�,RGV浠诲姟涓嬪彂澶辫触锛岃鑱旂郴绠$悊鍛橈紒锛侊紒");
+////                                    break runRgv;
+////                                }
+////                                List<Integer> devpList = SortTheExecutionOfTheCarUtil.BasDevpPositionExtractSites(basDevpPositions);
+////
+////                                if (!SortTheExecutionOfTheCarUtil.calculateShortestDistanceDirection(devpList,rgvProtocol.getEndStaM(),wrkMast.getSourceStaNo())){
+//                                continue;
+////                                }
+//                            }
+//                        }
+//                        RgvCommand rgvCommand = new RgvCommand();
+//                        rgvCommand.setRgvNo(rgvProtocol.getRgvNo());
+//                        rgvCommand.setAckFinish1((short) 0);  // 宸ヤ綅1浠诲姟瀹屾垚纭浣�
+//                        rgvCommand.setTaskNo1(wrkMast.getWrkNo().shortValue());
+//                        rgvCommand.setTaskMode1(RgvTaskModeType.X_MOVE); // 宸ヤ綅1浠诲姟妯″紡:  鍙栨斁璐�
+//                        rgvCommand.setSourceStaNo1(wrkMast.getSourceStaNo().shortValue());   //宸ヤ綅1璧风偣
+//                        rgvCommand.setDestinationStaNo1(wrkMast.getStaNo().shortValue());   //宸ヤ綅1鐩爣绔欑偣
+//                        rgvCommand.setCommand((short) 1);   //宸ヤ綅1浠诲姟纭
+//                        rgvCommand.setRgvSome(basCircularShuttle.getRgvSome()==1 ? (short) 1 : (short) 0);
+//                        if (!MessageQueue.offer(SlaveType.Rgv, rgvProtocol.getRgvNo(), new Task(3, rgvCommand))) {
+//                            //
+//                            log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, JSON.toJSON(rgvCommand));
+//                            break runRgv;
+//                        }
+//                        log.info("RGV鍛戒护涓嬪彂鎴愬姛锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, JSON.toJSON(rgvCommand));
+//
+//                        wrkMast.setWrkSts(2L);
+//                        wrkMast.setRgvNo(rgvProtocol.getRgvNo());
+//                        Date now = new Date();
+//                        wrkMast.setAppeTime(now);
+//                        wrkMast.setCrnStrTime(now);
+//                        try {
+//                            wrkMastService.updateById(wrkMast);
+//                            break;
+//                        } catch (Exception e) {
+//                            log.error("鏇存柊灏忚溅浠诲姟澶辫触,浠诲姟鍙凤細" + wrkMast.getWrkNo());
+//                        }
+//                        break runRgv;
+//                    } else {
+//                        break runRgv;
+//                    }
+//                }
+//            }
+//        }
+//    }
+    public synchronized void taskDown(List<List<List<WrkMast>>> wrkMastListAll) {
+        for (List<List<WrkMast>> wrkMastLists : wrkMastListAll) {
+            int wrkMastRunCount = 0;
+            int wrkMastCount = 0;
+            long rgvId = 0;
+            for (List<WrkMast> wrkMastList : wrkMastLists) {
+                for (WrkMast wrkMast : wrkMastList) {
+                    wrkMastCount++;
+                }
+            }
+            runRgv:
+            for (List<WrkMast> wrkMastList : wrkMastLists) {
+                for (WrkMast wrkMast : wrkMastList) {
+                    while (rgvId <= rgvCount) {
+                        rgvId++;
 //                    log.info("瀛樺湪浠诲姟锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, JSON.toJSON(wrkMast));
-                    if (rgvId > rgvCount) {
-                        break runRgv;
-                    }
-                    BasCircularShuttle basCircularShuttle = basCircularShuttleService.selectOne(new EntityWrapper<BasCircularShuttle>().eq("rgv_id", rgvId));
-                    if (basCircularShuttle.getStatus() != 0){
-                        continue ;
-                    }
-                    RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, basCircularShuttle.getRgvNo());
-                    RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
-                    if (rgvProtocol == null) {
-                        continue;
-                    }
+                        if (rgvId > rgvCount) {
+                            break runRgv;
+                        }
+                        BasCircularShuttle basCircularShuttle = basCircularShuttleService.selectOne(new EntityWrapper<BasCircularShuttle>().eq("rgv_id", rgvId));
+                        if (basCircularShuttle.getStatus() != 0){
+                            continue ;
+                        }
+                        RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, basCircularShuttle.getRgvNo());
+                        RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
+                        if (rgvProtocol == null) {
+                            continue;
+                        }
 
-                    List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("rgv_no", rgvProtocol.getRgvNo()).eq("wrk_sts", 2L));
-                    if (!wrkMasts.isEmpty()) {
-                        continue;
-                    }
-                    if (rgvProtocol != null
-                            && rgvProtocol.modeType == RgvModeType.AUTO
-                            && (rgvProtocol.getStatusType() == RgvStatusType.IDLE || rgvProtocol.getStatusType() == RgvStatusType.ROAM)
-                            && rgvProtocol.getTaskNo1() == 0
-                            && rgvProtocol.getAlarm() == 0) {
-                        if (rgvProtocol.getStatusType() == RgvStatusType.ROAM) {
-                            double finalVelocity = 0.0;     // 鏈�缁堥�熷害 (m/s)
-                            double distance = (Math.pow(finalVelocity, 2) - Math.pow(rgvProtocol.instantaneousSpeed / 60, 2)) / (2 * acceleration);
+                        List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("rgv_no", rgvProtocol.getRgvNo()).eq("wrk_sts", 2L));
+                        if (!wrkMasts.isEmpty()) {
+                            continue;
+                        }
+                        if (rgvProtocol != null
+                                && rgvProtocol.modeType == RgvModeType.AUTO
+                                && (rgvProtocol.getStatusType() == RgvStatusType.IDLE || rgvProtocol.getStatusType() == RgvStatusType.ROAM)
+                                && rgvProtocol.getTaskNo1() == 0
+                                && rgvProtocol.getAlarm() == 0) {
                             BasDevpPosition basDevpPosition = basDevpPositionService.selectOne(new EntityWrapper<BasDevpPosition>().eq("dev_no", wrkMast.getSourceStaNo()));
-                            if ((distance * proportion + (rgvProtocol.instantaneousSpeed / 60) * proportion * rgvDate) > (SortTheExecutionOfTheCarUtil.LatelyAndLessThan(basDevpPosition.getPlcPosition(), rgvProtocol.getRgvPos(), perimeter) )) {
+                            if (basDevpPosition.getPlcPosition()>rgvProtocol.getRgvPos()){
+                                if (basDevpPosition.getPlcPosition()-rgvProtocol.getRgvPos()>taskRunPerimeter){
+                                    if (wrkMastRunCount<wrkMastCount){
+                                        if (rgvProtocol.getStatusType() == RgvStatusType.IDLE) {
+                                            if (!MessageQueue.offer(SlaveType.Rgv, rgvProtocol.getRgvNo(), new Task(4,null))) {
+                                                log.error("RGV婕父鍚姩鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, "婕父鎸囦护");
+                                                break runRgv;
+                                            }
+                                            wrkMastRunCount++;
+                                            continue ;
+                                        }
+                                    }
+                                    break runRgv;
+                                }
+                            } else {
+                                if (rgvProtocol.getRgvPos()+ perimeter -basDevpPosition.getPlcPosition()>taskRunPerimeter){
+                                    if (wrkMastRunCount<wrkMastCount){
+                                        if (rgvProtocol.getStatusType() == RgvStatusType.IDLE) {
+                                            if (!MessageQueue.offer(SlaveType.Rgv, rgvProtocol.getRgvNo(), new Task(4,null))) {
+                                                log.error("RGV婕父鍚姩鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, "婕父鎸囦护");
+                                                break runRgv;
+                                            }
+                                            wrkMastRunCount++;
+                                            continue ;
+                                        }
+                                    }
+                                    break runRgv;
+                                }
+                            }
+
+
+                            if (rgvProtocol.getStatusType() == RgvStatusType.ROAM) {
+                                double finalVelocity = 0.0;     // 鏈�缁堥�熷害 (m/s)
+                                double distance = (Math.pow(finalVelocity, 2) - Math.pow(rgvProtocol.instantaneousSpeed / 60, 2)) / (2 * acceleration);
+                                if ((distance * proportion + (rgvProtocol.instantaneousSpeed / 60) * proportion * rgvDate) > (SortTheExecutionOfTheCarUtil.LatelyAndLessThan(basDevpPosition.getPlcPosition(), rgvProtocol.getRgvPos(), perimeter) )) {
 //                                List<BasDevpPosition> basDevpPositions = basDevpPositionService.selectList(new EntityWrapper<BasDevpPosition>().orderBy("plc_position", true));
 //                                if (basDevpPositions.isEmpty()) {
 //                                    log.error("鑾峰彇鎵�鏈夌珯鐐逛俊鎭紓甯�,RGV浠诲姟涓嬪彂澶辫触锛岃鑱旂郴绠$悊鍛橈紒锛侊紒");
@@ -325,88 +536,40 @@
 //                                if (!SortTheExecutionOfTheCarUtil.calculateShortestDistanceDirection(devpList,rgvProtocol.getEndStaM(),wrkMast.getSourceStaNo())){
                                     continue;
 //                                }
+                                }
                             }
-                        }
-                        RgvCommand rgvCommand = new RgvCommand();
-                        rgvCommand.setRgvNo(rgvProtocol.getRgvNo());
-                        rgvCommand.setAckFinish1((short) 0);  // 宸ヤ綅1浠诲姟瀹屾垚纭浣�
-                        rgvCommand.setTaskNo1(wrkMast.getWrkNo().shortValue());
-                        rgvCommand.setTaskMode1(RgvTaskModeType.FETCH_PUT); // 宸ヤ綅1浠诲姟妯″紡:  鍙栨斁璐�
-                        rgvCommand.setSourceStaNo1(wrkMast.getSourceStaNo().shortValue());   //宸ヤ綅1璧风偣
-                        rgvCommand.setDestinationStaNo1(wrkMast.getStaNo().shortValue());   //宸ヤ綅1鐩爣绔欑偣
-                        rgvCommand.setCommand((short) 1);   //宸ヤ綅1浠诲姟纭
-                        rgvCommand.setRgvSome(basCircularShuttle.getRgvSome()==1 ? (short) 1 : (short) 0);
-                        if (!MessageQueue.offer(SlaveType.Rgv, rgvProtocol.getRgvNo(), new Task(2, rgvCommand))) {
-                            //
-                            log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, JSON.toJSON(rgvCommand));
+
+
+                            RgvCommand rgvCommand = new RgvCommand();
+                            rgvCommand.setRgvNo(rgvProtocol.getRgvNo());
+                            rgvCommand.setAckFinish1((short) 0);  // 宸ヤ綅1浠诲姟瀹屾垚纭浣�
+                            rgvCommand.setTaskNo1(wrkMast.getWrkNo().shortValue());
+                            rgvCommand.setTaskMode1(RgvTaskModeType.FETCH_PUT); // 宸ヤ綅1浠诲姟妯″紡:  鍙栨斁璐�
+                            rgvCommand.setSourceStaNo1(wrkMast.getSourceStaNo().shortValue());   //宸ヤ綅1璧风偣
+                            rgvCommand.setDestinationStaNo1(wrkMast.getStaNo().shortValue());   //宸ヤ綅1鐩爣绔欑偣
+                            rgvCommand.setCommand((short) 1);   //宸ヤ綅1浠诲姟纭
+                            rgvCommand.setRgvSome(basCircularShuttle.getRgvSome()==1 ? (short) 1 : (short) 0);
+                            if (!MessageQueue.offer(SlaveType.Rgv, rgvProtocol.getRgvNo(), new Task(2, rgvCommand))) {
+                                //
+                                log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, JSON.toJSON(rgvCommand));
+                                break runRgv;
+                            }
+                            log.info("RGV鍛戒护涓嬪彂鎴愬姛锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, JSON.toJSON(rgvCommand));
+
+                            wrkMast.setWrkSts(2L);
+                            wrkMast.setRgvNo(rgvProtocol.getRgvNo());
+                            Date now = new Date();
+                            wrkMast.setAppeTime(now);
+                            wrkMast.setCrnStrTime(now);
+                            try {
+                                wrkMastService.updateById(wrkMast);
+                                wrkMastCount--;
+                                break;
+                            } catch (Exception e) {
+                                log.error("鏇存柊灏忚溅浠诲姟澶辫触,浠诲姟鍙凤細" + wrkMast.getWrkNo());
+                            }
                             break runRgv;
                         }
-                        log.info("RGV鍛戒护涓嬪彂鎴愬姛锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, JSON.toJSON(rgvCommand));
-
-                        wrkMast.setWrkSts(2L);
-                        wrkMast.setRgvNo(rgvProtocol.getRgvNo());
-                        Date now = new Date();
-                        wrkMast.setAppeTime(now);
-                        wrkMast.setCrnStrTime(now);
-                        try {
-                            wrkMastService.updateById(wrkMast);
-                            break;
-                        } catch (Exception e) {
-                            log.error("鏇存柊灏忚溅浠诲姟澶辫触,浠诲姟鍙凤細" + wrkMast.getWrkNo());
-                        }
-                        break runRgv;
-                    } else if (rgvProtocol != null
-                            && rgvProtocol.modeType == RgvModeType.AUTO
-                            && rgvProtocol.getStatusType() == RgvStatusType.WALK
-                            && rgvProtocol.getTaskNo1() == 0
-                            && rgvProtocol.getAlarm() == 0) {
-                        if (rgvProtocol.getStatusType() == RgvStatusType.WALK) {
-                            double finalVelocity = 0.0;     // 鏈�缁堥�熷害 (m/s)
-                            double distance = (Math.pow(finalVelocity, 2) - Math.pow(rgvProtocol.instantaneousSpeed / 60, 2)) / (2 * acceleration);
-                            BasDevpPosition basDevpPosition = basDevpPositionService.selectOne(new EntityWrapper<BasDevpPosition>().eq("dev_no", wrkMast.getSourceStaNo()));
-                            if ((distance * proportion + (rgvProtocol.instantaneousSpeed / 60) * proportion * rgvDate) > (SortTheExecutionOfTheCarUtil.LatelyAndLessThan(basDevpPosition.getPlcPosition(), rgvProtocol.getRgvPos(), perimeter) )) {
-//                                List<BasDevpPosition> basDevpPositions = basDevpPositionService.selectList(new EntityWrapper<BasDevpPosition>().orderBy("plc_position", true));
-//                                if (basDevpPositions.isEmpty()) {
-//                                    log.error("鑾峰彇鎵�鏈夌珯鐐逛俊鎭紓甯�,RGV浠诲姟涓嬪彂澶辫触锛岃鑱旂郴绠$悊鍛橈紒锛侊紒");
-//                                    break runRgv;
-//                                }
-//                                List<Integer> devpList = SortTheExecutionOfTheCarUtil.BasDevpPositionExtractSites(basDevpPositions);
-//
-//                                if (!SortTheExecutionOfTheCarUtil.calculateShortestDistanceDirection(devpList,rgvProtocol.getEndStaM(),wrkMast.getSourceStaNo())){
-                                continue;
-//                                }
-                            }
-                        }
-                        RgvCommand rgvCommand = new RgvCommand();
-                        rgvCommand.setRgvNo(rgvProtocol.getRgvNo());
-                        rgvCommand.setAckFinish1((short) 0);  // 宸ヤ綅1浠诲姟瀹屾垚纭浣�
-                        rgvCommand.setTaskNo1(wrkMast.getWrkNo().shortValue());
-                        rgvCommand.setTaskMode1(RgvTaskModeType.X_MOVE); // 宸ヤ綅1浠诲姟妯″紡:  鍙栨斁璐�
-                        rgvCommand.setSourceStaNo1(wrkMast.getSourceStaNo().shortValue());   //宸ヤ綅1璧风偣
-                        rgvCommand.setDestinationStaNo1(wrkMast.getStaNo().shortValue());   //宸ヤ綅1鐩爣绔欑偣
-                        rgvCommand.setCommand((short) 1);   //宸ヤ綅1浠诲姟纭
-                        rgvCommand.setRgvSome(basCircularShuttle.getRgvSome()==1 ? (short) 1 : (short) 0);
-                        if (!MessageQueue.offer(SlaveType.Rgv, rgvProtocol.getRgvNo(), new Task(3, rgvCommand))) {
-                            //
-                            log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, JSON.toJSON(rgvCommand));
-                            break runRgv;
-                        }
-                        log.info("RGV鍛戒护涓嬪彂鎴愬姛锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, JSON.toJSON(rgvCommand));
-
-                        wrkMast.setWrkSts(2L);
-                        wrkMast.setRgvNo(rgvProtocol.getRgvNo());
-                        Date now = new Date();
-                        wrkMast.setAppeTime(now);
-                        wrkMast.setCrnStrTime(now);
-                        try {
-                            wrkMastService.updateById(wrkMast);
-                            break;
-                        } catch (Exception e) {
-                            log.error("鏇存柊灏忚溅浠诲姟澶辫触,浠诲姟鍙凤細" + wrkMast.getWrkNo());
-                        }
-                        break runRgv;
-                    } else {
-                        break runRgv;
                     }
                 }
             }

--
Gitblit v1.9.1