From 050abb296f847e787432197c161f746c128e5956 Mon Sep 17 00:00:00 2001
From: lsh <lsh@163.com>
Date: 星期六, 19 十月 2024 13:05:09 +0800
Subject: [PATCH] *

---
 src/main/java/com/zy/core/enums/RgvStatusType.java                |   20 +-
 src/main/java/com/zy/core/thread/RgvThread.java                   |   57 +++++---
 src/main/java/com/zy/asrs/controller/OpenController.java          |    2 
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java       |  175 ++++++++++++++++++++----
 src/main/java/com/zy/asrs/entity/WrkMast.java                     |    2 
 src/main/java/com/zy/core/MainProcess.java                        |    6 
 src/main/java/com/zy/asrs/utils/SortTheExecutionOfTheCarUtil.java |  110 +++++++++++++-
 src/main/java/com/zy/core/enums/RgvTaskModeType.java              |    4 
 8 files changed, 293 insertions(+), 83 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/OpenController.java b/src/main/java/com/zy/asrs/controller/OpenController.java
index 0468893..13cc43f 100644
--- a/src/main/java/com/zy/asrs/controller/OpenController.java
+++ b/src/main/java/com/zy/asrs/controller/OpenController.java
@@ -20,7 +20,7 @@
 @Slf4j
 @RestController
 @RequestMapping("open/rcs")
-public class OpenController extends BaseController {
+public class  OpenController extends BaseController {
 
     private static final boolean auth = true;
     public static final ArrayList<String> APP_KEY_LIST = new ArrayList<String>() {{
diff --git a/src/main/java/com/zy/asrs/entity/WrkMast.java b/src/main/java/com/zy/asrs/entity/WrkMast.java
index 70985d8..a45aa9e 100644
--- a/src/main/java/com/zy/asrs/entity/WrkMast.java
+++ b/src/main/java/com/zy/asrs/entity/WrkMast.java
@@ -30,7 +30,7 @@
     @ApiModelProperty(value= "宸ヤ綔鍙�")
     @TableId(value = "wrk_no", type = IdType.INPUT)
     @TableField("wrk_no")
-    private Integer wrkNo;
+    private Long wrkNo;
 
     @ApiModelProperty(value= "")
     @TableField("inv_wh")
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 5fc5a05..6ccfbbe 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -3,13 +3,11 @@
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.core.common.Cools;
-import com.zy.asrs.entity.BasCircularShuttle;
-import com.zy.asrs.entity.BasDevpPosition;
-import com.zy.asrs.entity.BasRgv;
-import com.zy.asrs.entity.BasSte;
+import com.zy.asrs.entity.*;
 import com.zy.asrs.service.BasCircularShuttleService;
 import com.zy.asrs.service.BasDevpPositionService;
 import com.zy.asrs.service.BasDevpService;
+import com.zy.asrs.service.WrkMastService;
 import com.zy.asrs.utils.SortTheExecutionOfTheCarUtil;
 import com.zy.asrs.utils.Utils;
 import com.zy.core.DevpThread;
@@ -21,6 +19,7 @@
 import com.zy.core.model.RgvSlave;
 import com.zy.core.model.SteSlave;
 import com.zy.core.model.Task;
+import com.zy.core.model.command.RgvCommand;
 import com.zy.core.model.command.SteCommand;
 import com.zy.core.model.protocol.RgvProtocol;
 import com.zy.core.model.protocol.StaProtocol;
@@ -35,10 +34,7 @@
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.util.Arrays;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 /**
  * 绔嬩綋浠撳簱WCS绯荤粺涓绘祦绋嬩笟鍔�
@@ -59,6 +55,8 @@
     private BasDevpPositionService basDevpPositionService;
     @Autowired
     private BasCircularShuttleService basCircularShuttleService;
+    @Autowired
+    private WrkMastService wrkMastService;
     /**
      * 绔欑偣浠诲姟妫�娴�  涓嬪彂灏忚溅鍙栨斁浠诲姟
      */
@@ -70,7 +68,9 @@
             for (BasCircularShuttle basCircularShuttle : basCircularShuttleList){
                 RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, basCircularShuttle.getRgvNo());
                 RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
-                if (rgvProtocol.modeType != RgvModeType.AUTO || (rgvProtocol.getStatusType() != RgvStatusType.IDLE && rgvProtocol.getStatusType() != RgvStatusType.SOS1001) ){
+                if (rgvProtocol == null) {
+                    sign = true;
+                } else if (rgvProtocol.modeType != RgvModeType.AUTO || (rgvProtocol.getStatusType() != RgvStatusType.IDLE && rgvProtocol.getStatusType() != RgvStatusType.ROAM) ){
                     sign = true;
                 } else {
                     rgvNo = basCircularShuttle.getRgvNo();
@@ -108,39 +108,148 @@
      * 绔欑偣浠诲姟妫�娴�  涓嬪彂灏忚溅鍙栨斁浠诲姟
      */
     public synchronized void DevpTaskNoRun() {
-        for (DevpSlave devp : slaveProperties.getDevp()) {
-            // 閬嶅巻绌烘澘鍏ュ簱鍙�
-            for (DevpSlave.Sta sta : devp.getInSta()) {
-                // 鑾峰彇绌烘澘鍏ュ簱绔欎俊鎭�
-                SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
-                StaProtocol staProtocol = devpThread.getStation().get(sta.getStaNo());
-                if (staProtocol == null) {
-                    continue;
+        try{
+            BasCircularShuttle basCircularShuttle = basCircularShuttleService.selectOne(new EntityWrapper<BasCircularShuttle>().eq("rgv_id", 1));
+            RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, basCircularShuttle.getRgvNo());
+            RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
+            if (rgvProtocol == null) {
+                return;
+            }
+            List<BasDevpPosition> basDevpPositions = basDevpPositionService.selectList(new EntityWrapper<BasDevpPosition>().orderBy("plc_position",false));
+            Integer devNo = SortTheExecutionOfTheCarUtil.LatelyAndLessThan(basDevpPositions, rgvProtocol.getRgvPos());
+            BasDevpPosition[] basDevpPositionsList = SortTheExecutionOfTheCarUtil.devpNoSort(basDevpPositions, devNo);
+            BasDevpPosition[] basDevpPositionsListUN = SortTheExecutionOfTheCarUtil.devpNoSortUN(basDevpPositionsList);
+            List<List<WrkMast>> wrkMastLists = getWrkMastLists(basDevpPositionsListUN);
+            //涓嬪彂浠诲姟
+            taskDown(wrkMastLists);
+        } catch (Exception e){
+            log.error("鑷姩涓嬪彂灏忚溅鍙栨斁浠诲姟澶辫触锛屽紓甯革細"+e);
+        }
+    }
+
+    //鑾峰彇灏忚溅鍙栨斁浠诲姟鍒楄〃澶辫触
+    public synchronized List<List<WrkMast>> getWrkMastLists(BasDevpPosition[] basDevpPositionsListUN) {
+        List<List<WrkMast>> wrkMastLists = new ArrayList<>();
+        try{
+            List<WrkMast> wrkMastlistA = new ArrayList<>();
+            List<WrkMast> wrkMastlistB = new ArrayList<>();
+            for (BasDevpPosition basDevpPosition : basDevpPositionsListUN){
+                WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("sta_no", basDevpPosition.getDevNo()).eq("wrk_sts",1L));
+                if (!Cools.isEmpty(wrkMast)){
+                    if (SortTheExecutionOfTheCarUtil.devpNoSortbj(basDevpPositionsListUN,wrkMast.getSourceStaNo(),wrkMast.getStaNo())){
+                        wrkMastlistA.add(wrkMast);
+                    } else {
+                        wrkMastlistB.add(wrkMast);
+                    }
+                }
+            }
+            wrkMastLists.add(wrkMastlistA);
+            wrkMastLists.add(wrkMastlistB);
+            return wrkMastLists;
+        } catch (Exception e){
+            log.error("鑾峰彇灏忚溅鍙栨斁浠诲姟鍒楄〃澶辫触锛屽紓甯革細"+e);
+            return wrkMastLists;
+        }
+    }
+
+    public synchronized void taskDown(List<List<WrkMast>> wrkMastLists) {
+        long rgvId = 0;
+        runRgv:
+        for (List<WrkMast> wrkMastList : wrkMastLists){
+            for (WrkMast wrkMast: wrkMastList){
+                rgvId++;
+                BasCircularShuttle basCircularShuttle = basCircularShuttleService.selectOne(new EntityWrapper<BasCircularShuttle>().eq("rgv_id", 1L));
+                RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, basCircularShuttle.getRgvNo());
+                RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
+                if (rgvProtocol != null
+                        && rgvProtocol.modeType == RgvModeType.AUTO
+                        && (rgvProtocol.getStatusType() == RgvStatusType.IDLE || rgvProtocol.getStatusType() == RgvStatusType.ROAM)
+                        && rgvProtocol.getTaskNo1()==0
+                        && rgvProtocol.getAlarm() == 0){
+                    RgvCommand rgvCommand = new RgvCommand();
+                    rgvCommand.setRgvNo(rgvProtocol.getRgvNo());
+                    rgvCommand.setAckFinish1((short) 0);  // 宸ヤ綅1浠诲姟瀹屾垚纭浣�
+                    rgvCommand.setTaskMode1(RgvTaskModeType.FETCH_PUT); // 宸ヤ綅1浠诲姟妯″紡:  鍙栨斁璐�
+                    rgvCommand.setSourceStaNo1(wrkMast.getSourceStaNo().shortValue());   //宸ヤ綅1璧风偣
+                    rgvCommand.setDestinationStaNo1(wrkMast.getStaNo().shortValue());   //宸ヤ綅1鐩爣绔欑偣
+                    rgvCommand.setCommand((short) 1);   //宸ヤ綅1浠诲姟纭
+                    if (!MessageQueue.offer(SlaveType.Rgv, rgvProtocol.getRgvNo(), new Task(2, rgvCommand))) {
+                        //
+                        log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, JSON.toJSON(rgvCommand));
+                        break runRgv;
+                    }
+                    wrkMast.setWrkSts(2L);
+                    try{
+                        wrkMastService.updateById(wrkMast);
+                        continue ;
+                    }catch (Exception e){
+                        log.error("鏇存柊灏忚溅浠诲姟澶辫触,浠诲姟鍙凤細"+wrkMast.getWrkNo());
+                    }
+                    break runRgv;
                 } else {
-                    staProtocol = staProtocol.clone();
+                    break runRgv;
                 }
             }
         }
     }
 
-    public synchronized void loopSteCharge() {
-        for (RgvSlave rgv : slaveProperties.getRgv()) {
-            RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgv.getId());
-            RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
-            BasRgv basRgv = basRgvService.selectById(rgv.getId());
-            if (Cools.isEmpty(rgvProtocol, basRgv)) { continue; }
-            try {
-                // 鍦ㄧ嚎 绌洪棽   鏃犱綔涓氭爣璁�   涓嶅湪鍏呯數
-                if (rgvProtocol.getMode() == 0
-                        || !rgvProtocol.statusType.equals(RgvStatusType.IDLE)
-                        || basRgv.getPakMk().equals("Y")
-//                        || steProtocol.getChargeStatus() == 1
-                ) {
+    //浠诲姟瀹屾垚
+    public synchronized void rgvCompleteWrkMastSta() {
+        try{
+            for (RgvSlave rgvSlave:slaveProperties.getRgv()) {
+                RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId());
+                RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
+                if (rgvProtocol == null) {
                     continue;
                 }
-            } catch (Exception e) {
-                News.error("fail", e);
+                BasRgv basRgv = basRgvService.selectById(rgvSlave.getId());
+                if (basRgv == null) {
+                    log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", rgvSlave.getId());
+                    continue;
+                }
+
+                // 鍙湁褰揜GV绛夊緟WCS纭銆佽嚜鍔�
+                if (rgvProtocol.getStatusType() == RgvStatusType.WAITING
+                        && rgvProtocol.getModeType() == RgvModeType.AUTO
+                        && rgvProtocol.getTaskNo1()!=0
+                ) {
+                    log.info("{}鍙峰皬杞︾瓑寰厀cs纭锛岀姸鎬亄}锛屽弬鏁皗}",rgvProtocol.getRgvNo(),rgvProtocol.getStatusType(),rgvProtocol);
+                    WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", rgvProtocol.getTaskNo1().longValue()));
+                    if (Cools.isEmpty(wrkMast) || !wrkMast.getWrkSts().equals(2L)){
+                        log.error("鏈煡鍒板皬杞︽墽琛屼换鍔℃垨鑰呮墽琛屼换鍔$姸鎬佷笉绗﹀悎锛�"+wrkMast);
+                        continue;
+                    }
+                    boolean rgvComplete = rgvComplete(rgvProtocol.getRgvNo());
+                    if (!rgvComplete){
+                        log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�",rgvProtocol.getRgvNo());
+                        break;
+                    }
+                    wrkMast.setWrkSts(3L);
+                    wrkMastService.updateById(wrkMast);
+                }
             }
+        } catch (Exception e){
+            log.error("灏忚溅澶嶄綅绾跨▼鎶ラ敊锛�"+e);
+        }
+    }
+
+    /*
+     * 灏忚溅澶嶄綅
+     * */
+    public synchronized boolean rgvComplete(Integer rgvId){
+        try{
+            //  鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
+            if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(3, new RgvCommand()))) {
+                //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱   step=4锛屽伐浣�1鍐欎换鍔★紱     step=5锛屽伐浣�2鍐欎换鍔�
+                log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}",rgvId);
+                return false;
+            } else {
+                log.info("RGV鍛戒护涓嬪彂鎴愬姛锛孯GV鍙�={}",rgvId);
+                return true;
+            }
+        }catch (Exception e){
+            log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}銆傚紓甯革細"+e,rgvId);
+            return false;
         }
     }
 }
diff --git a/src/main/java/com/zy/asrs/utils/SortTheExecutionOfTheCarUtil.java b/src/main/java/com/zy/asrs/utils/SortTheExecutionOfTheCarUtil.java
index e502e64..6a3dbf6 100644
--- a/src/main/java/com/zy/asrs/utils/SortTheExecutionOfTheCarUtil.java
+++ b/src/main/java/com/zy/asrs/utils/SortTheExecutionOfTheCarUtil.java
@@ -1,5 +1,6 @@
 package com.zy.asrs.utils;
 
+import com.zy.asrs.entity.BasDevpPosition;
 import com.zy.core.enums.RouteCollectCountType;
 
 import java.util.Arrays;
@@ -27,27 +28,106 @@
         }
         return ints;
     }
-    //鎺掑簭
-    public static int ReorderSteId2(int[][] steList,int steNoStart){
-        int[][] ints = new int[steList.length][2];
-        int Difference = 0;
-        for (int[] steNo : steList){
-            if (steNo[0] == steNoStart){
-                Difference = steNo[1] - 1;
+
+    //鑾峰彇鏈�杩戝苟鍦ㄥ綋鍓嶄綅缃墠杈圭殑浣嶇疆
+    public static Integer LatelyAndLessThan(List<BasDevpPosition> devpPosition, long nowPosition){
+        Integer result = 0;
+        long Difference = 1737000L;
+        for (BasDevpPosition positions : devpPosition){
+            Long position = positions.getPlcPosition();
+            if (position<=nowPosition){
+                if ((nowPosition-position) < Difference){
+                    Difference = nowPosition-position;
+                    result = positions.getDevNo();
+                }
+            } else {
+                if ((nowPosition-(position - 1737000L)) < Difference){
+                    Difference = nowPosition-(position - 1737000L);
+                    result = positions.getDevNo();
+                }
+            }
+        }
+        return result;
+    }
+    //鑾峰彇鏈�杩戝苟鍦ㄥ綋鍓嶄綅缃墠杈圭殑浣嶇疆
+    public static Long LatelyAndLessThan(long[] devpPosition,long nowPosition){
+        long result = 0L;
+        long Difference = 1737000L;
+        for (long position : devpPosition){
+            if (position<=nowPosition){
+                if ((nowPosition-position) < Difference){
+                    Difference = nowPosition-position;
+                    result = position;
+                }
+            } else {
+                if ((nowPosition-(position - 1737000L)) < Difference){
+                    Difference = nowPosition-(position - 1737000L);
+                    result = position;
+                }
+            }
+        }
+        return result;
+    }
+
+    //id鍒濆鍖�
+    public static List<BasDevpPosition> devpNoInit(List<BasDevpPosition> devpPosition){
+        long i = 0;
+        for (BasDevpPosition basDevpPosition : devpPosition){
+            i++;
+            basDevpPosition.setId(i);
+        }
+        return devpPosition;
+    }
+
+
+    //绔欑偣鎺掑簭
+    public static BasDevpPosition[] devpNoSort(List<BasDevpPosition> devpPosition1,Integer devpNo){
+        List<BasDevpPosition> devpPosition = devpNoInit(devpPosition1);
+        BasDevpPosition[] basDevpPositions = new BasDevpPosition[devpPosition.size()];
+        long Difference = 0L;
+        for (BasDevpPosition basDevpPosition : devpPosition){
+            if (basDevpPosition.getDevNo().equals(devpNo)){
+                Difference = basDevpPosition.getId() - 1L;
                 break;
             }
         }
-        for (int[] steNo : steList){
-            int i = steNo[1];
+        for (BasDevpPosition basDevpPosition : devpPosition){
+            long i = basDevpPosition.getId();
             if (i > Difference){
-                steNo[1] = i - Difference;
+                basDevpPosition.setId(i - Difference);
             } else {
-                steNo[1] = steList.length + i-Difference;
+                basDevpPosition.setId(devpPosition.size() + i - Difference);
             }
-            ints[steNo[0]-1] = steNo;
+            basDevpPositions[basDevpPosition.getId().intValue()-1] = basDevpPosition;
         }
-        return 0;
+        return basDevpPositions;
     }
+
+    //閫嗗簭鎺掑垪
+    public static BasDevpPosition[] devpNoSortUN(BasDevpPosition[] devpPosition){
+        BasDevpPosition[] basDevpPositions = new BasDevpPosition[devpPosition.length];
+        for (BasDevpPosition basDevpPosition : devpPosition){
+            basDevpPositions[devpPosition.length - basDevpPosition.getId().intValue()] = basDevpPosition;
+        }
+        return basDevpPositions;
+    }
+
+    //閫嗗簭鎺掑垪
+    public static boolean devpNoSortbj(BasDevpPosition[] devpPosition,Integer souDevpNo,Integer endDevpNo){
+        int sou = 0;
+        int end = 0;
+        for (int i = 0;i<devpPosition.length;i++){
+            if (devpPosition[i].getDevNo().equals(souDevpNo)){
+                sou = i;
+            }
+            if (devpPosition[i].getDevNo().equals(endDevpNo)){
+                end = i;
+            }
+        }
+
+        return sou>end;
+    }
+
     public static void main(String[] args) {
         int[][] ints = new int[][]{{1,1},{3,3},{2,2},{4,4},{5,5},{6,6},{7,7},{8,8},{9,9},{10,10}};
 
@@ -55,5 +135,9 @@
         for (int[] ste : reorderSteId){
             System.out.println(Arrays.toString(ste));
         }
+
+        long[] longs = new long[]{1L,1000L,200000L,1100000L,1600000L};
+        long l = LatelyAndLessThan(longs, 1100000L);
+        System.out.println("l:"+l);
     }
 }
diff --git a/src/main/java/com/zy/core/MainProcess.java b/src/main/java/com/zy/core/MainProcess.java
index 21c9218..7158282 100644
--- a/src/main/java/com/zy/core/MainProcess.java
+++ b/src/main/java/com/zy/core/MainProcess.java
@@ -60,9 +60,11 @@
                     // 浠诲姟涓嬪彂
                     mainService.DevpTaskNoRun();
 
-                    // 浠诲姟涓嬪彂
-                    mainService.loopSteCharge();
+                    // 浠诲姟瀹屾垚
+                    mainService.rgvCompleteWrkMastSta();
 
+                    //鏇存柊浣嶇疆淇℃伅
+                    mainService.updateStePosition();
 
                 } catch (Exception e) {
                     e.printStackTrace();
diff --git a/src/main/java/com/zy/core/enums/RgvStatusType.java b/src/main/java/com/zy/core/enums/RgvStatusType.java
index b2b59b4..ae8969e 100644
--- a/src/main/java/com/zy/core/enums/RgvStatusType.java
+++ b/src/main/java/com/zy/core/enums/RgvStatusType.java
@@ -7,14 +7,14 @@
     PICK_UP_WALK(1, "鍙栬揣琛岃蛋","#2196F3"),
     IN_STATION_OPERATION(2, "杩涚珯杩愯涓�","#2196F3"),
     STATION_ENTRY_COMPLETED(3, "杩涚珯瀹屾垚","#2196F3"),
-    PUTTING(4, "鏈夌墿寰呭嚭绔�","#2196F3"),
-    WAITING1(5, "鍑虹珯琛岃蛋","#E2C027"),
-    FETCHWAITING(6, "鍑虹珯璇锋眰","#2196F3"),
-    SOS99(7, "鍑虹珯杩愯涓�","#2196F3"),
-    SOS100(8, "鍑虹珯瀹屾垚","#2196F3"),
-    SOS1001(11, "婕父","#2196F3"),
+    There_IS_something_waiting_to_leave_the_station(4, "鏈夌墿寰呭嚭绔�","#2196F3"),
+    Exit_walking(5, "鍑虹珯琛岃蛋","#E2C027"),
+    Outbound_request(6, "鍑虹珯璇锋眰","#2196F3"),
+    Outbound_operation_in_progress(7, "鍑虹珯杩愯涓�","#2196F3"),
+    Outbound_completed(8, "鍑虹珯瀹屾垚","#2196F3"),
+    ROAM(11, "婕父","#2196F3"),
     WAITING(100, "浠诲姟鎵ц瀹屾垚绛夊緟纭","#2196F3"),
-    SOSSUPER(999, "鏈煡","#2196F3")
+    SOS(999, "鏈煡","#2196F3")
     ;
 
     public Integer id;
@@ -28,7 +28,7 @@
 
     public static RgvStatusType get(Short id) {
         if (null == id) {
-            return SOSSUPER;
+            return SOS;
         }
         for (RgvStatusType type : RgvStatusType.values()) {
             if (type.id.equals(id.intValue())) {
@@ -40,13 +40,13 @@
 
     public static RgvStatusType get(RgvStatusType type) {
         if (null == type) {
-            return SOSSUPER;
+            return SOS;
         }
         for (RgvStatusType rgvStatusType : RgvStatusType.values()) {
             if (rgvStatusType == type) {
                 return rgvStatusType;
             }
         }
-        return SOSSUPER;
+        return SOS;
     }
 }
diff --git a/src/main/java/com/zy/core/enums/RgvTaskModeType.java b/src/main/java/com/zy/core/enums/RgvTaskModeType.java
index 01c0649..990e6fc 100644
--- a/src/main/java/com/zy/core/enums/RgvTaskModeType.java
+++ b/src/main/java/com/zy/core/enums/RgvTaskModeType.java
@@ -3,9 +3,9 @@
 public enum RgvTaskModeType {
 
     NONE(0),    // 鏃�
-    FETCH(1),    // 鍙栬揣 锛堢┖鏉匡級鍗曞彇
+    FETCH(3),    // 鍙栬揣 锛堢┖鏉匡級鍗曞彇
     PUT(2),    // 鏀捐揣 锛堢┖鏉匡級鍗曟斁
-    FETCH_PUT(3),    // 鍙栨斁璐�
+    FETCH_PUT(1),    // 鍙栨斁璐�
     X_MOVE(4),    // 绔欎綅绉昏浆
     FETCH_5(5),    // 锛堢┖鏉匡級婊″彇
     PUT_6(6),    // 锛堢┖鏉匡級婊℃斁
diff --git a/src/main/java/com/zy/core/thread/RgvThread.java b/src/main/java/com/zy/core/thread/RgvThread.java
index 7a15cab..0be65f8 100644
--- a/src/main/java/com/zy/core/thread/RgvThread.java
+++ b/src/main/java/com/zy/core/thread/RgvThread.java
@@ -72,6 +72,20 @@
                     case 2:
                         write((RgvCommand) task.getData());
                         break;
+                    // 澶嶄綅
+                    case 3:
+                        RgvCommand command = (RgvCommand) task.getData();
+                        if (null == command) {
+                            command = new RgvCommand();
+                        }
+                        command.setRgvNo(slave.getId()); // RGV缂栧彿
+                        command.setTaskNo1((short) 0); // 宸ヤ綔鍙�
+                        command.setAckFinish1((short) 1);  // 浠诲姟瀹屾垚纭浣�
+                        command.setTaskMode1(RgvTaskModeType.NONE); // 浠诲姟妯″紡
+                        command.setSourceStaNo1((short)0);     // 婧愮珯
+                        command.setDestinationStaNo1((short)0);     // 鐩爣绔�
+                        write(command);
+                        break;
                     default:
                         break;
                 }
@@ -148,17 +162,16 @@
                 rgvProtocol.setRgvPos(slave.getId().longValue()*100000);
                 OutputQueue.RGV.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId()));
 
-                // 宸ヤ綅1澶嶄綅淇″彿
-                if (rgvProtocol.getStatusType1().equals(RgvStatusType.WAITING)
-                        || rgvProtocol.getStatusType1().equals(RgvStatusType.FETCHWAITING)) {
-                    if (resetFlag1) {
-                        RgvCommand rgvCommand = new RgvCommand();
-                        rgvCommand.setAckFinish1((short)1);
-                        if (write(rgvCommand)) {
-                            resetFlag1 = false;
-                        }
-                    }
-                }
+//                // 宸ヤ綅1澶嶄綅淇″彿
+//                if (rgvProtocol.getStatusType1().equals(RgvStatusType.WAITING)) {
+//                    if (resetFlag1) {
+//                        RgvCommand rgvCommand = new RgvCommand();
+//                        rgvCommand.setAckFinish1((short)1);
+//                        if (write(rgvCommand)) {
+//                            resetFlag1 = false;
+//                        }
+//                    }
+//                }
 
                 try {
                     // 鏍规嵁瀹炴椂淇℃伅鏇存柊鏁版嵁搴�
@@ -196,23 +209,25 @@
             return false;
         }
 
-//        siemensNet.Write("DB100.20", command.getCommand());
+        siemensNet.Write("DB24.10.0", false);
+        siemensNet.Write("DB24.10.1", false);
 
         command.setRgvNo(slave.getId());
-        short[] array = new short[5];
-        array[0] = command.getAckFinish1();
-        array[1] = command.getTaskNo1();
+        short[] array = new short[4];
+        array[0] = command.getSourceStaNo1();
+        array[1] = command.getDestinationStaNo1();
         array[2] = command.getTaskMode1();//浠诲姟妯″紡
-        array[3] = command.getSourceStaNo1();
-        array[4] = command.getDestinationStaNo1();
+        array[3] = command.getTaskNo1();
 //        siemensNet.Write("DB100.20", 0);
 
-        OperateResult result = siemensNet.Write("DB100.0", array);
+        OperateResult result = siemensNet.Write("DB24.2", array);
 
-        if (command.getAckFinish1() == 0) {
-            short commandFinish = 1;  //宸ヤ綅1浠诲姟鍐欏叆
+        if (command.getAckFinish1().equals((short)0)) {
+            boolean commandFinish = true;  //宸ヤ綅1浠诲姟鍐欏叆
             Thread.sleep(100L);
-            result = siemensNet.Write("DB100.20", commandFinish);
+            result = siemensNet.Write("DB24.10.0", commandFinish);
+        } else {
+            siemensNet.Write("DB24.10.1", true);
         }
 
         try {

--
Gitblit v1.9.1