From 473da408619b57c656cc22e191e9ed2e1c3eafaa Mon Sep 17 00:00:00 2001
From: lsh <lsh@163.com>
Date: 星期五, 13 六月 2025 10:41:19 +0800
Subject: [PATCH] *

---
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |  338 ++++++++++++++++++++++++++++++++++++++++----------------
 1 files changed, 240 insertions(+), 98 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 a9bf2ea..be3cfa5 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}")
@@ -92,32 +94,21 @@
         return false;
     }
 
-
     /**
      * 绔欑偣浠诲姟妫�娴�  鏇存柊灏忚溅浣嶇疆淇℃伅
      */
-    public synchronized void updateStePositionNearby() {
+    public synchronized int[][] getStePositionNearby(Integer siteNo) {
         try {
-            List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("wrk_sts", 1L));
-            if (wrkMasts.isEmpty()) {
-                return;
-            }
             List<BasDevpPosition> basDevpPositions = basDevpPositionService.selectList(new EntityWrapper<BasDevpPosition>().orderBy("plc_position", true));
             if (basDevpPositions.isEmpty()) {
                 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;
+                return null;
             }
             Long sitePosition = 0L;
             for (BasDevpPosition basDevpPosition : basDevpPositions) {
                 if (basDevpPosition.getDevNo().equals(siteNo)) {
                     sitePosition = basDevpPosition.getPlcPosition();
+                    break;
                 }
             }
             List<List<Long>> rgvPositionList = new ArrayList<>();
@@ -135,37 +126,29 @@
             Integer rgvNo = SortTheExecutionOfTheCarUtil.LatelyAndGreaterThan(rgvPositionList, sitePosition, perimeter);
             if (rgvNo == -1) {
                 log.info("鏇存柊灏忚溅鎺掑簭淇℃伅寮傚父={}", rgvNo);
-                return;
+                return null;
             }
             List<BasCircularShuttle> basCircularShuttleList = basCircularShuttleService.selectList(new EntityWrapper<BasCircularShuttle>().eq("status", 0).orderBy("rgv_id", true));
-            if (basCircularShuttleList.get(0).getRgvNo().equals(rgvNo)) {
-                return;
-            }
-
             int[][] ints = new int[basCircularShuttleList.size()][2];
             for (BasCircularShuttle basCircularShuttle : basCircularShuttleList) {
                 ints[basCircularShuttle.getRgvNo() - 1] = new int[]{basCircularShuttle.getRgvNo(), basCircularShuttle.getRgvId()};
+            }
+            if (basCircularShuttleList.get(0).getRgvNo().equals(rgvNo)) {
+                return ints;
             }
 //            String[] oldList = new String[ints.length];
 //            for (int[] rgv : ints){
 //                oldList[rgv[0]-1] = Arrays.toString(rgv);
 //            }
             int[][] rgvList = SortTheExecutionOfTheCarUtil.ReorderSteId(ints, rgvNo);
-//            String[] newList = new String[rgvList.length];
-//            for (int[] rgv : rgvList){
-//                newList[rgv[0]-1] = Arrays.toString(rgv);
-//            }
+            return rgvList;
 
-//            log.info("鏇存柊灏忚溅鎺掑簭淇℃伅锛氬師濮嬪皬杞﹀彿rgvNo={},灏忚溅閲嶆柊鎺掑簭淇℃伅={},灏忚溅鍘熷鎺掑簭淇℃伅={}",rgvNo,Arrays.toString(newList),Arrays.toString(oldList));
-            for (BasCircularShuttle basCircularShuttle : basCircularShuttleList) {
-                int[] rgv = rgvList[basCircularShuttle.getRgvNo() - 1];
-                basCircularShuttle.setRgvId(rgv[1]);
-                basCircularShuttleService.updateById(basCircularShuttle);
-            }
 
         } catch (Exception e) {
             log.error("鑷姩鏇存柊灏忚溅鎺掑簭淇℃伅澶辫触锛屽紓甯革細" + e);
         }
+        return null;
+
     }
 
     /**
@@ -185,7 +168,7 @@
                 RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
                 if (rgvProtocol == null) {
                     sign = true;
-                } else if (rgvProtocol.modeType != RgvModeType.AUTO || (rgvProtocol.getStatusType() != RgvStatusType.IDLE && rgvProtocol.getStatusType() != RgvStatusType.ROAM)) {
+                } else if (rgvProtocol.modeType != RgvModeType.AUTO || (rgvProtocol.getStatusType() != RgvStatusType.IDLE && rgvProtocol.getStatusType() != RgvStatusType.ROAM  && rgvProtocol.getStatusType() != RgvStatusType.WALK)) {
                     sign = true;
                 } else {
                     rgvNo = basCircularShuttle.getRgvNo();
@@ -224,13 +207,14 @@
      * 绔欑偣浠诲姟妫�娴�  涓嬪彂灏忚溅鍙栨斁浠诲姟
      */
     public synchronized void DevpTaskNoRun() {
+
         try {
             List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("wrk_sts", 1L).orderBy("modi_time", true));
             if (wrkMasts.isEmpty()) {
                 return;
             }
             long differenceInSeconds = TimeCalculatorUtils.differenceInMilliseconds(wrkMasts.get(0).getModiTime(), new Date());
-            if (differenceInSeconds <= 100) {
+            if (differenceInSeconds <= 1000) {
                 return;
             }
 
@@ -241,15 +225,79 @@
                 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);
+            log.error("鑷姩涓嬪彂灏忚溅浠诲姟澶辫触锛屽紓甯革細" + e);
         }
+
+    }
+
+    //鑾峰彇灏忚溅鍙栨斁浠诲姟鍒楄〃澶辫触
+    public synchronized List<List<List<WrkMast>>> getWrkMastListAll(List<List<Integer>> siteListAll ,BasDevpPosition[] basDevpPositionsListUN) {
+        List<List<List<WrkMast>>> wrkMastListAll = new ArrayList<>();
+        List<Integer> sourceStaNoList = new ArrayList<>();
+
+        for (List<Integer> siteList : siteListAll){
+            List<List<WrkMast>> wrkMastLists = new ArrayList<>();
+            try {
+                List<WrkMast> wrkMastlistA = new ArrayList<>();
+                List<WrkMast> wrkMastlistB = new ArrayList<>();
+                List<WrkMast> wrkMastlistC = new ArrayList<>();
+                List<WrkMast> wrkMastlistD = 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 (!sourceStaNoList.contains(wrkMast.getSourceStaNo())){
+                                    List<WrkMast> wrkMastListS = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("source_sta_no", wrkMast.getSourceStaNo()).eq("wrk_sts", 1L).orderBy("modi_time", true));
+                                    if (wrkMastListS.isEmpty()){
+                                        continue;
+                                    }
+                                } else {
+                                    continue;
+                                }
+                                long differenceInSeconds = TimeCalculatorUtils.differenceInMilliseconds(wrkMast.getModiTime(), new Date());
+
+                                if (SortTheExecutionOfTheCarUtil.devpNoSortbj(basDevpPositionsListUN, wrkMast.getSourceStaNo(), wrkMast.getStaNo())) {
+                                    sourceStaNoList.add(wrkMast.getSourceStaNo());
+                                    if (differenceInSeconds>600000){
+                                        wrkMastlistA.add(wrkMast);
+                                    } else {
+                                        wrkMastlistC.add(wrkMast);
+                                    }
+                                } else {
+                                    sourceStaNoList.add(wrkMast.getSourceStaNo());
+                                    if (differenceInSeconds>600000){
+                                        wrkMastlistB.add(wrkMast);
+                                    } else {
+                                        wrkMastlistD.add(wrkMast);
+                                    }
+                                }
+                            }
+                        }
+                    }
+                }
+                wrkMastLists.add(wrkMastlistA);
+                wrkMastLists.add(wrkMastlistB);
+                wrkMastLists.add(wrkMastlistC);
+                wrkMastLists.add(wrkMastlistD);
+//                return wrkMastLists;
+                wrkMastListAll.add(wrkMastLists);
+            } catch (Exception e) {
+                log.error("鑾峰彇灏忚溅鍙栨斁浠诲姟鍒楄〃澶辫触锛屽紓甯革細" + e);
+            }
+        }
+        return wrkMastListAll;
     }
 
     //鑾峰彇灏忚溅鍙栨斁浠诲姟鍒楄〃澶辫触
@@ -279,41 +327,87 @@
         }
     }
 
-    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;
-                    }
+    public synchronized void taskDown(List<List<List<WrkMast>>> wrkMastListAll) {
+        List<Integer> rgvNoM = new ArrayList<>();
+        List<Integer> rgvNoR = new ArrayList<>();
+        int wrkMastRunCount = 0;
+        long devperimeter = 0L;
+        try{
+            for (List<List<WrkMast>> wrkMastLists : wrkMastListAll) {
+                List<Integer> rgvNoRN = new ArrayList<>();
+                runRgv:
+                for (List<WrkMast> wrkMastList : wrkMastLists) {
+                    for (WrkMast wrkMast : wrkMastList) {
 
-                    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) )) {
+                        int[][] stePositionNearby = getStePositionNearby(wrkMast.getSourceStaNo());
+                        if (stePositionNearby==null){
+                            break  runRgv;
+                        }
+
+                        int[] rgvListRun = new int[stePositionNearby.length];
+                        for (int[] rgvNo:stePositionNearby){
+                            rgvListRun[rgvNo[0]-1] = rgvNo[1];
+                        }
+
+                        for (int rgvNo : rgvListRun){
+                            if (rgvNoRN.contains(rgvNo)){
+                                continue;
+                            }
+
+                            BasCircularShuttle basCircularShuttle = basCircularShuttleService.selectOne(new EntityWrapper<BasCircularShuttle>().eq("rgv_no", rgvNo));
+                            if (basCircularShuttle.getStatus() != 0){
+                                continue ;
+                            }
+                            long rgvId = basCircularShuttle.getRgvId();
+
+                            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) {
+                                BasDevpPosition basDevpPosition = basDevpPositionService.selectOne(new EntityWrapper<BasDevpPosition>().eq("dev_no", wrkMast.getSourceStaNo()));
+                                if (basDevpPosition.getPlcPosition()>rgvProtocol.getRgvPos()){
+                                    if (basDevpPosition.getPlcPosition()-rgvProtocol.getRgvPos()>taskRunPerimeter){
+                                        if (!rgvNoM.contains(rgvProtocol.getRgvNo())){
+                                            rgvNoM.add(rgvProtocol.getRgvNo());
+                                            rgvNoRN.add(rgvProtocol.getRgvNo());
+                                            if (wrkMastRunCount == 0){
+                                                devperimeter = basDevpPosition.getPlcPosition()-taskRunPerimeter+10000>perimeter? 10000:basDevpPosition.getPlcPosition()-taskRunPerimeter+10000;
+                                            }
+                                            wrkMastRunCount++;
+                                            break;
+                                        }
+                                        continue ;
+                                    }
+                                } else {
+                                    if (rgvProtocol.getRgvPos()+ perimeter -basDevpPosition.getPlcPosition()>taskRunPerimeter){
+                                        if (!rgvNoM.contains(rgvProtocol.getRgvNo())){
+                                            rgvNoM.add(rgvProtocol.getRgvNo());
+                                            rgvNoRN.add(rgvProtocol.getRgvNo());
+                                            if (wrkMastRunCount == 0){
+                                                devperimeter = basDevpPosition.getPlcPosition()-taskRunPerimeter+10000>perimeter? 10000:basDevpPosition.getPlcPosition()-taskRunPerimeter+10000;
+                                            }
+                                            wrkMastRunCount++;
+                                            break;
+                                        }
+                                        continue ;
+                                    }
+                                }
+
+                                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浠诲姟涓嬪彂澶辫触锛岃鑱旂郴绠$悊鍛橈紒锛侊紒");
@@ -322,41 +416,88 @@
 //                                List<Integer> devpList = SortTheExecutionOfTheCarUtil.BasDevpPositionExtractSites(basDevpPositions);
 //
 //                                if (!SortTheExecutionOfTheCarUtil.calculateShortestDistanceDirection(devpList,rgvProtocol.getEndStaM(),wrkMast.getSourceStaNo())){
-                                    continue;
+                                        continue;
 //                                }
+                                    }
+                                }
+
+                                rgvNoRN.add(rgvProtocol.getRgvNo());
+                                if (!rgvNoR.contains(rgvProtocol.getRgvNo())){
+                                    rgvNoR.add(rgvProtocol.getRgvNo());
+                                } else {
+                                    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));
+                                    wrkMast.setLogErrTime(new Date());
+                                    wrkMast.setLogErrMemo("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={"+rgvId+"}===>璺宠繃");
+                                    wrkMastService.updateById(wrkMast);
+                                    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;
                             }
                         }
-                        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());
-                        wrkMast.setAppeTime(new Date());
-                        try {
-                            wrkMastService.updateById(wrkMast);
-                            break;
-                        } catch (Exception e) {
-                            log.error("鏇存柊灏忚溅浠诲姟澶辫触,浠诲姟鍙凤細" + wrkMast.getWrkNo());
-                        }
-                        break runRgv;
-                    } else {
-                        break runRgv;
                     }
                 }
             }
+
+        } catch (Exception e){
+            log.error("RGV鍙栨斁璐у惎鍔ㄥ懡浠や笅鍙戝け璐ワ紝浠诲姟鏁版嵁===> "+JSON.toJSON(wrkMastListAll));
+            return;
+        }
+        try{
+            for (Integer rgvNo : rgvNoM){
+                if (wrkMastRunCount==0){
+                    break;
+                }
+                if (rgvNoR.contains(rgvNo)){
+                    continue;
+                }
+                RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvNo);
+                RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
+                if (rgvProtocol == null) {
+                    continue;
+                }
+                wrkMastRunCount--;
+                if (rgvProtocol != null
+                        && rgvProtocol.modeType == RgvModeType.AUTO
+                        && rgvProtocol.getStatusType() == RgvStatusType.IDLE
+                        && rgvProtocol.getTaskNo1() == 0
+                        && rgvProtocol.getAlarm() == 0) {
+                    if (!MessageQueue.offer(SlaveType.Rgv, rgvProtocol.getRgvNo(), new Task(5,devperimeter))) {
+                        log.error("RGV婕父鍚姩鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvNo, "婕父鎸囦护锛岀洰鐨勫湴锛�"+devperimeter);
+                        break;
+                    } else {
+                        log.info("RGV婕父鍚姩鍛戒护涓嬪彂鎴愬姛锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvNo, "婕父鎸囦护锛岀洰鐨勫湴锛�"+devperimeter);
+                    }
+                }
+            }
+        } catch (Exception e){
+
         }
     }
 
@@ -396,6 +537,7 @@
                     wrkMast.setWrkSts(3L);
                     Date now = new Date();
                     wrkMast.setAppeTime(now);
+                    wrkMast.setCrnEndTime(now);
                     try{
                         try{
                             if (reportSwitch){
@@ -407,7 +549,7 @@
                                     wrkMastService.updateById(wrkMast);
                                     continue;
                                 }else {
-                                    log.error("宸ヤ綔鍙�"+wrkMast.getWrkNo()+"浠诲姟瀹屾垚淇℃伅涓婁紶澶勭悊澶辫触");
+                                    log.error("宸ヤ綔鍙�"+wrkMast.getWrkNo()+"浠诲姟瀹屾垚淇℃伅涓婁紶澶勭悊澶辫触1");
                                 }
                             } else {
                                 //娴嬭瘯鐢�

--
Gitblit v1.9.1