From 855bf7559274cbc7e3008eaac313e49e48d14e33 Mon Sep 17 00:00:00 2001
From: zjj <3272660260@qq.com>
Date: 星期一, 15 一月 2024 20:27:08 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/core/enums/RgvModeType.java            |    2 
 src/main/java/com/zy/asrs/controller/RgvController.java     |    7 
 src/main/java/com/zy/asrs/domain/vo/RgvStateTableVo.java    |    1 
 src/main/java/com/zy/asrs/utils/RouteUtils.java             |    2 
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |   79 +++++-----
 src/main/java/com/zy/core/cache/MessageQueue.java           |   15 ++
 src/main/webapp/views/rgv.html                              |   28 ++--
 src/main/java/com/zy/common/model/LocTypeDto.java           |   14 +-
 src/main/java/com/zy/core/model/protocol/CrnProtocol.java   |   28 ++--
 src/main/java/com/zy/core/ServerBootstrap.java              |   40 +++++
 src/main/java/com/zy/core/thread/RgvThread.java             |   54 +++---
 src/main/java/com/zy/core/thread/SiemensCrnThread.java      |   24 ++-
 src/main/java/com/zy/core/enums/CrnStatusType.java          |    2 
 src/main/java/com/zy/core/MainProcess.java                  |    2 
 src/main/java/com/zy/core/model/protocol/RgvProtocol.java   |   79 ++++++----
 src/main/resources/application.yml                          |   32 ++--
 16 files changed, 243 insertions(+), 166 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/RgvController.java b/src/main/java/com/zy/asrs/controller/RgvController.java
index bb6cee0..c22068e 100644
--- a/src/main/java/com/zy/asrs/controller/RgvController.java
+++ b/src/main/java/com/zy/asrs/controller/RgvController.java
@@ -84,10 +84,11 @@
             vo.setStatus1(rgvProtocol.getStatusType1().desc);  // 宸ヤ綅1鐘舵��
             vo.setLoading1(rgvProtocol.getLoaded1()==1?"鏈夌墿":"鏃犵墿");  // 宸ヤ綅1鏈夌墿
             vo.setRgvPos(rgvProtocol.getRgvPos());
+            vo.setRgvPos1(rgvProtocol.getRgvPosI());
             vo.setWalkPos(rgvProtocol.getWalkPos()==1?"涓嶅湪瀹氫綅":"鍦ㄥ畾浣�");
-            vo.setWorkNo2(rgvProtocol.getTaskNo2());  //  宸ヤ綅2浠诲姟鍙�
-            vo.setStatus2(rgvProtocol.getStatusType2().desc);  // 宸ヤ綅2鐘舵��
-            vo.setLoading2(rgvProtocol.getLoaded2()==1?"鏈夌墿":"鏃犵墿");  // 宸ヤ綅2鏈夌墿
+//            vo.setWorkNo2(rgvProtocol.getTaskNo2());  //  宸ヤ綅2浠诲姟鍙�
+//            vo.setStatus2(rgvProtocol.getStatusType2().desc);  // 宸ヤ綅2鐘舵��
+//            vo.setLoading2(rgvProtocol.getLoaded2()==1?"鏈夌墿":"鏃犵墿");  // 宸ヤ綅2鏈夌墿
 
             vo.setWarnCode(String.valueOf(rgvProtocol.getAlarm()));
             if (rgvProtocol.getAlarm() > 0) {
diff --git a/src/main/java/com/zy/asrs/domain/vo/RgvStateTableVo.java b/src/main/java/com/zy/asrs/domain/vo/RgvStateTableVo.java
index 6329714..0e892c0 100644
--- a/src/main/java/com/zy/asrs/domain/vo/RgvStateTableVo.java
+++ b/src/main/java/com/zy/asrs/domain/vo/RgvStateTableVo.java
@@ -46,5 +46,6 @@
 
     // 寮傚父鐮佹弿杩�
     private String alarm = "-";
+    private Integer RgvPos1 = 0;
 
 }
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 4505474..7c298d4 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -1426,10 +1426,11 @@
 
                 // 绔欑偣鏉′欢鍒ゆ柇
                 if (staProtocol.isAutoing()
+                        && staProtocol.isLoading()
                         && staProtocol.isInEnable()
                         && staProtocol.isEmptyMk()
-                        && (staProtocol.getWorkNo() > 9990 && staProtocol.getWorkNo() <= 9999)
-                        && staProtocol.isPakMk()&& staProtocol.getStamp()>=2) {
+                        && staProtocol.isPakMk()
+                        ) {
                     News.warnNoLog(""+mark+" - 0"+" - 寮�濮嬫墽琛岋細绌烘爤鏉垮垵濮嬪寲鍏ュ簱,鍙夎溅鍏ュ簱绔欐斁璐�");
 
                     try {
@@ -1451,7 +1452,7 @@
 
                             // 鏇存柊绔欑偣淇℃伅 涓� 涓嬪彂plc鍛戒护
                             staProtocol.setWorkNo(dto.getWorkNo());
-                            staProtocol.setStaNo(dto.getStaNo().shortValue());
+                            staProtocol.setStaNo(staProtocol.getSiteId().shortValue());
                             devpThread.setPakMk(staProtocol.getSiteId(), false);
                             boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
                             if (!result) {
@@ -2233,7 +2234,7 @@
                         && rgvProtocol.getModeType() == RgvModeType.AUTO
                         && rgvProtocol.getLoaded1()==0  //鐜板満淇敼锛氬彔鐩樻満锛屼笉婊¢兘绠楁棤鐗╋紝鎬庝箞鍒ゆ柇闇�瑕佽窡鐢垫帶瀵规帴
                         && (rgvProtocol.getTaskNo1()==0 || rgvProtocol.getTaskNo1()==9999)
-                        && (rgvProtocol.getTaskNo2()==0 || rgvProtocol.getTaskNo2()==9999)
+
                 ) {
                     BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
                     basRgvMap.setNowRoute(rgvProtocol.getRgvPosI());
@@ -2295,33 +2296,35 @@
                         BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
                         basRgvMap.setNowRoute(rgvProtocol.getRgvPosI());
                         rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute());
-                    }else if (rgvProtocol.getTaskNo2()!=0){
-                        if (rgvProtocol.getTaskNo2()==9999){
-                            boolean rgvComplete = rgvComplete(rgvProtocol.getRgvNo());
-                            if (!rgvComplete){
-                                log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�",rgvProtocol.getRgvNo());
-                            }
-                            BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
-                            basRgvMap.setNowRoute(rgvProtocol.getRgvPosI());
-                            rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute());
-                            break;
-                        }
-                        WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(rgvProtocol.getTaskNo2().intValue());
-                        if (Cools.isEmpty(wrkMastSta) || wrkMastSta.getType()!=2){
-                            log.error("鏈煡鍒板皬杞︽墽琛屼换鍔℃垨鑰呮墽琛屼换鍔$姸鎬佷笉绗﹀悎锛�"+wrkMastSta);
-                            continue;
-                        }
-                        boolean rgvComplete = rgvComplete(rgvProtocol.getRgvNo());
-                        if (!rgvComplete){
-                            log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�",rgvProtocol.getRgvNo());
-                            break;
-                        }
-                        wrkMastSta.setWrkSts(3);
-                        wrkMastStaMapper.updateById(wrkMastSta);
-                        BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
-                        basRgvMap.setNowRoute(rgvProtocol.getRgvPosI());
-                        rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute());
-                    }else {
+                    }
+//                    else if (rgvProtocol.getTaskNo2()!=0){
+//                        if (rgvProtocol.getTaskNo2()==9999){
+//                            boolean rgvComplete = rgvComplete(rgvProtocol.getRgvNo());
+//                            if (!rgvComplete){
+//                                log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�",rgvProtocol.getRgvNo());
+//                            }
+//                            BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
+//                            basRgvMap.setNowRoute(rgvProtocol.getRgvPosI());
+//                            rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute());
+//                            break;
+//                        }
+//                        WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(rgvProtocol.getTaskNo2().intValue());
+//                        if (Cools.isEmpty(wrkMastSta) || wrkMastSta.getType()!=2){
+//                            log.error("鏈煡鍒板皬杞︽墽琛屼换鍔℃垨鑰呮墽琛屼换鍔$姸鎬佷笉绗﹀悎锛�"+wrkMastSta);
+//                            continue;
+//                        }
+//                        boolean rgvComplete = rgvComplete(rgvProtocol.getRgvNo());
+//                        if (!rgvComplete){
+//                            log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�",rgvProtocol.getRgvNo());
+//                            break;
+//                        }
+//                        wrkMastSta.setWrkSts(3);
+//                        wrkMastStaMapper.updateById(wrkMastSta);
+//                        BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
+//                        basRgvMap.setNowRoute(rgvProtocol.getRgvPosI());
+//                        rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute());
+//                    }
+                    else {
                         log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{},绛夊緟wcs纭浣嗘槸娌℃湁宸ヤ綔鍙凤紒",rgvProtocol.getRgvNo());
                     }
                 }
@@ -2361,7 +2364,7 @@
                     basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙�
                     List<WrkMastSta> wrkMastStaList = wrkMastStaMapper.selectNoInterfereList(route, route);
                     for (WrkMastSta wrkMastSta : wrkMastStaList){
-                        if (wrkMastSta.getType()!=1 || wrkMastSta.getWrkType()!=3){//1:婊$増   3锛氬彇鏀�
+                        if (wrkMastSta.getType()!=0 || wrkMastSta.getWrkType()!=3){//1:婊$増   3锛氬彇鏀�
                             continue;
                         }
                         boolean sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta); //鍛戒护涓嬪彂
@@ -2410,7 +2413,7 @@
                 // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅浜屾湁鐗�//rgv鍙敤
                 if (rgvProtocol.getStatusType() == RgvStatusType.IDLE
                         && rgvProtocol.getModeType() == RgvModeType.AUTO
-                        && rgvProtocol.getLoaded2()==1  //鐜板満淇敼锛氬彔鐩樻満锛屼笉婊¢兘绠楁棤鐗╋紝鎬庝箞鍒ゆ柇闇�瑕佽窡鐢垫帶瀵规帴
+                        && rgvProtocol.getLoaded1()==1  //鐜板満淇敼锛氬彔鐩樻満锛屼笉婊¢兘绠楁棤鐗╋紝鎬庝箞鍒ゆ柇闇�瑕佽窡鐢垫帶瀵规帴
                 ) {
                     BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
                     if (basRgvMap == null) {
@@ -2473,7 +2476,7 @@
                 // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅浜屾棤鐗�//rgv鍙敤
                 if (rgvProtocol.getStatusType() == RgvStatusType.IDLE
                         && rgvProtocol.getModeType() == RgvModeType.AUTO
-                        && rgvProtocol.getLoaded2()==0  //鐜板満淇敼锛氬彔鐩樻満锛屼笉婊¢兘绠楁棤鐗╋紝鎬庝箞鍒ゆ柇闇�瑕佽窡鐢垫帶瀵规帴
+                        && rgvProtocol.getLoaded1()==0  //鐜板満淇敼锛氬彔鐩樻満锛屼笉婊¢兘绠楁棤鐗╋紝鎬庝箞鍒ゆ柇闇�瑕佽窡鐢垫帶瀵规帴
                 ) {
                     BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
                     if (basRgvMap == null) {
@@ -2545,7 +2548,7 @@
                         && rgvProtocol.getModeType() == RgvModeType.AUTO
 //                        && rgvProtocol.getLoaded1()==0  //鐜板満淇敼锛氬彔鐩樻満锛屼笉婊¢兘绠楁棤鐗╋紝鎬庝箞鍒ゆ柇闇�瑕佽窡鐢垫帶瀵规帴
                         && rgvProtocol.getTaskNo1()==0
-                        && rgvProtocol.getTaskNo2()==0
+//                        && rgvProtocol.getTaskNo2()==0
                 ) {
                     BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
                     if (rgvProtocol.getRgvPosI().equals(basRgvMap.getStartRoute())){
@@ -2601,7 +2604,7 @@
             rgvCommand.setSourceStaNo1(wrkMastSta.getStaStart().shortValue());   //宸ヤ綅1璧风偣
             rgvCommand.setDestinationStaNo1(wrkMastSta.getStaEnd().shortValue());   //宸ヤ綅1鐩爣绔欑偣
             rgvCommand.setCommand((short) 1);   //宸ヤ綅1浠诲姟纭
-            if (!MessageQueue.offer(SlaveType.Crn, rgvId, new Task(4, rgvCommand))) {
+            if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(4, rgvCommand))) {
                 //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱   step=4锛屽伐浣�1鍐欎换鍔★紱     step=5锛屽伐浣�2鍐欎换鍔�
                 log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, JSON.toJSON(rgvCommand));
                 return false;
@@ -2626,7 +2629,7 @@
             rgvCommand.setTaskMode1(RgvTaskModeType.FETCH); // 宸ヤ綅1浠诲姟妯″紡:  鍙栬揣
             rgvCommand.setSourceStaNo1(wrkMastSta.getStaStart().shortValue());   //宸ヤ綅1璧风偣
             rgvCommand.setCommand((short) 1);   //宸ヤ綅1浠诲姟纭
-            if (!MessageQueue.offer(SlaveType.Crn, rgvId, new Task(4, rgvCommand))) {
+            if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(4, rgvCommand))) {
                 //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱   step=4锛屽伐浣�1鍐欎换鍔★紱     step=5锛屽伐浣�2鍐欎换鍔�
                 log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, JSON.toJSON(rgvCommand));
                 return false;
@@ -2651,7 +2654,7 @@
             rgvCommand.setTaskMode1(RgvTaskModeType.PUT); // 宸ヤ綅1浠诲姟妯″紡:  鏀捐揣
             rgvCommand.setDestinationStaNo1(wrkMastSta.getStaEnd().shortValue());   //宸ヤ綅1鐩爣绔欑偣
             rgvCommand.setCommand((short) 1);   //宸ヤ綅1浠诲姟纭
-            if (!MessageQueue.offer(SlaveType.Crn, rgvId, new Task(4, rgvCommand))) {
+            if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(4, rgvCommand))) {
                 //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱   step=4锛屽伐浣�1鍐欎换鍔★紱     step=5锛屽伐浣�2鍐欎换鍔�
                 log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, JSON.toJSON(rgvCommand));
                 return false;
diff --git a/src/main/java/com/zy/asrs/utils/RouteUtils.java b/src/main/java/com/zy/asrs/utils/RouteUtils.java
index cba980b..00c5333 100644
--- a/src/main/java/com/zy/asrs/utils/RouteUtils.java
+++ b/src/main/java/com/zy/asrs/utils/RouteUtils.java
@@ -14,7 +14,7 @@
 
     //闂2  鍛ㄤ繆鏉�
     public static final List<Integer> MERGE_STA_NO_One = new ArrayList<Integer>() {{
-//        add(116);add(117);
+        add(113);add(119);
     }};
 
     public static final List<Integer> MERGE_STA_NO_TWO = new ArrayList<Integer>() {{
diff --git a/src/main/java/com/zy/common/model/LocTypeDto.java b/src/main/java/com/zy/common/model/LocTypeDto.java
index 4cb4b14..d62d0c8 100644
--- a/src/main/java/com/zy/common/model/LocTypeDto.java
+++ b/src/main/java/com/zy/common/model/LocTypeDto.java
@@ -29,14 +29,14 @@
     }
 
     public LocTypeDto(StaProtocol staProtocol) {
-        if (staProtocol.isHigh() == staProtocol.isLow()) {
-            throw new CoolException("plc楂樹綆妫�娴嬪紓甯�");
-        }
-        if (staProtocol.isLow()) {
+//        if (staProtocol.isHigh() == staProtocol.isLow()) {
+//            throw new CoolException("plc楂樹綆妫�娴嬪紓甯�");
+//        }
+//        if (staProtocol.isLow()) {
             this.locType1 = 1; // 浣庡簱浣�
-        } else {
-            this.locType1 = 2; // 楂樺簱浣�
-        }
+//        } else {
+//            this.locType1 = 2; // 楂樺簱浣�
+//        }
     }
 
     /**
diff --git a/src/main/java/com/zy/core/MainProcess.java b/src/main/java/com/zy/core/MainProcess.java
index e55135e..674ee1c 100644
--- a/src/main/java/com/zy/core/MainProcess.java
+++ b/src/main/java/com/zy/core/MainProcess.java
@@ -44,7 +44,7 @@
                     }
 
                     // 婕旂ず
-//                    mainService.crnDemoOfLocMove1();
+                    mainService.crnDemoOfLocMove1();
                     //鍒锋柊RGV鍦板浘
                     mainService.refreshRgvMap();
 
diff --git a/src/main/java/com/zy/core/ServerBootstrap.java b/src/main/java/com/zy/core/ServerBootstrap.java
index 8e6f4b4..2bff72a 100644
--- a/src/main/java/com/zy/core/ServerBootstrap.java
+++ b/src/main/java/com/zy/core/ServerBootstrap.java
@@ -13,10 +13,13 @@
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.annotation.Async;
+import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
 
 import javax.annotation.PostConstruct;
 import javax.annotation.PreDestroy;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
 
 /**
  * Created by vincent on 2020/8/4
@@ -29,6 +32,8 @@
     private SlaveProperties slaveProperties;
     @Autowired
     private MainProcess mainProcess;
+
+    public static final Map<CrnThread, Thread> map = new ConcurrentHashMap<>();
 
     /**
      * PostConstruct浼氬湪鍔犺浇servlet鐨勬椂鍊欒繍琛屼竴娆�
@@ -129,5 +134,40 @@
     public void destroy() {
     }
 
+    @Component
+    class killThread {
 
+        @Scheduled(cron = "0/3 * * * * ? ")
+        public void kill() {
+            int i = 0;
+            for (Map.Entry<CrnThread, Thread> entry : map.entrySet()) {
+                i++;
+                SiemensCrnThread key = (SiemensCrnThread) entry.getKey();
+//                System.out.println("绗�"+i+"涓爢鍨涙満绾跨▼閲嶅惎绾跨▼鏉′欢锛�"+(System.currentTimeMillis() - key.getSign()));
+                if (System.currentTimeMillis() - key.getSign() > 120000) {
+                    System.out.println("绗�"+i+"涓爢鍨涙満绾跨▼琚噸鍚�");
+
+                    // 璇锋眰绾跨▼瀹夊叏鍋滄
+                    key.requestStop();
+
+                    // 绛夊緟绾跨▼瀹屾垚鍋滄, 鍙互杩欐牱鍋氫篃鍙互閫夋嫨涓嶈繖涔堝仛锛屽彇鍐充簬鏄惁闇�瑕佺瓑寰呯嚎绋嬬粨鏉�
+                    try {
+                        entry.getValue().join(20000); // 绛夊緟鏈�澶�20绉�
+                    } catch (InterruptedException e) {
+//                        // 鍙�傚綋澶勭悊涓柇
+//                        Thread.currentThread().interrupt(); // 淇濈暀涓柇鐘舵��
+                        entry.getValue().stop();
+                    }
+
+                    // 閲嶆柊鍚姩绾跨▼
+                    Thread thread = new Thread((Runnable) key); // 鍋囪CrnThread瀹炵幇浜哛unnable
+                    thread.start();
+
+                    // 鏇挎崲鏄犲皠鍏崇郴涓殑鏃х嚎绋�
+                    map.put(entry.getKey(), thread);
+                }
+            }
+        }
+
+    }
 }
diff --git a/src/main/java/com/zy/core/cache/MessageQueue.java b/src/main/java/com/zy/core/cache/MessageQueue.java
index 6a751f2..a2a77cb 100644
--- a/src/main/java/com/zy/core/cache/MessageQueue.java
+++ b/src/main/java/com/zy/core/cache/MessageQueue.java
@@ -28,6 +28,8 @@
     // 鍙拌溅mq浜ゆ崲鏈�
     private static final Map<Integer, ConcurrentLinkedQueue<Task>> CAR_EXCHANGE = new ConcurrentHashMap<>();
 
+    private static final Map<Integer, LinkedBlockingQueue<Task>> RGV_EXCHANGE = new ConcurrentHashMap<>();
+
     /**
      * mq 浜ゆ崲鏈哄垵濮嬪寲
      */
@@ -35,6 +37,9 @@
         switch (type) {
             case Crn:
                 CRN_EXCHANGE.put(slave.getId(), new LinkedBlockingQueue<>(1));
+                break;
+            case Rgv:
+                RGV_EXCHANGE.put(slave.getId(), new LinkedBlockingQueue<>(1));
                 break;
             case Devp:
                 DEVP_EXCHANGE.put(slave.getId(), new ConcurrentLinkedQueue<>());
@@ -64,6 +69,8 @@
         switch (type) {
             case Crn:
                 return CRN_EXCHANGE.get(id).offer(task);
+            case Rgv:
+                return RGV_EXCHANGE.get(id).offer(task);
             case Devp:
                 return DEVP_EXCHANGE.get(id).offer(task);
             case Barcode:
@@ -87,6 +94,8 @@
         switch (type) {
             case Crn:
                 return CRN_EXCHANGE.get(id).poll();
+            case Rgv:
+                return RGV_EXCHANGE.get(id).poll();
             case Devp:
                 return DEVP_EXCHANGE.get(id).poll();
             case Barcode:
@@ -109,6 +118,8 @@
         switch (type) {
             case Crn:
                 return CRN_EXCHANGE.get(id).peek();
+            case Rgv:
+                return RGV_EXCHANGE.get(id).peek();
             case Devp:
                 return DEVP_EXCHANGE.get(id).peek();
             case Barcode:
@@ -127,9 +138,11 @@
     public static void clear(SlaveType type, Integer id){
         switch (type) {
             case Crn:
-                
                 CRN_EXCHANGE.get(id).clear();
                 break;
+            case Rgv:
+                RGV_EXCHANGE.get(id).clear();
+                break;
             case Devp:
                 DEVP_EXCHANGE.get(id).clear();
                 break;
diff --git a/src/main/java/com/zy/core/enums/CrnStatusType.java b/src/main/java/com/zy/core/enums/CrnStatusType.java
index 79c4b51..f02ed99 100644
--- a/src/main/java/com/zy/core/enums/CrnStatusType.java
+++ b/src/main/java/com/zy/core/enums/CrnStatusType.java
@@ -13,7 +13,7 @@
     ORIGIN_GO(7, "鍥炲師鐐�"),
     ORIGIN_BACK(8, "鍥炲弽鍘熺偣"),
     MOVING(9, "璧拌涓�"),
-    WAITING(90, "浠诲姟瀹屾垚绛夊緟WCS纭"),
+    WAITING(10, "浠诲姟瀹屾垚绛夊緟WCS纭"),
     PAUSE(11, "浠诲姟鏆傚仠"),
     SOS(99, "鎶ヨ"),
     UNKNOW(100, "鍏朵粬"),
diff --git a/src/main/java/com/zy/core/enums/RgvModeType.java b/src/main/java/com/zy/core/enums/RgvModeType.java
index f1dbe1e..3a344bb 100644
--- a/src/main/java/com/zy/core/enums/RgvModeType.java
+++ b/src/main/java/com/zy/core/enums/RgvModeType.java
@@ -3,7 +3,7 @@
 public enum RgvModeType {
 
     NONE(-1, "绂荤嚎"),
-    STOP(0, "缁翠慨"),
+    STOP(0, "鍏虫満"),
     HAND(1, "鎵嬪姩"),
     HALF_AUTO(2, "鍗婅嚜鍔�"),
     AUTO(3, "鑷姩"),
diff --git a/src/main/java/com/zy/core/model/protocol/CrnProtocol.java b/src/main/java/com/zy/core/model/protocol/CrnProtocol.java
index a63b90b..aaa114d 100644
--- a/src/main/java/com/zy/core/model/protocol/CrnProtocol.java
+++ b/src/main/java/com/zy/core/model/protocol/CrnProtocol.java
@@ -251,32 +251,32 @@
         return basCrnp;
     }
 
-    public void setxSpeed(Short xSpeed) {
-        this.xSpeed = Float.valueOf(xSpeed);
+    public void setxSpeed(float xSpeed) {
+        this.xSpeed = xSpeed;
     }
 
-    public void setySpeed(Short ySpeed) {
-        this.ySpeed = Float.valueOf(ySpeed);
+    public void setySpeed(float ySpeed) {
+        this.ySpeed = ySpeed;
     }
 
-    public void setzSpeed(Short zSpeed) {
-        this.zSpeed = Float.valueOf(zSpeed);
+    public void setzSpeed(float zSpeed) {
+        this.zSpeed = zSpeed;
     }
 
-    public void setxDistance(Short xDistance) {
-        this.xDistance = Float.valueOf(xDistance);
+    public void setxDistance(float xDistance) {
+        this.xDistance = xDistance;
     }
 
-    public void setyDistance(Short yDistance) {
-        this.yDistance = Float.valueOf(yDistance);
+    public void setyDistance(float yDistance) {
+        this.yDistance = yDistance;
     }
 
-    public void setxDuration(Short xDuration) {
-        this.xDuration = Float.valueOf(xDuration);
+    public void setxDuration(float xDuration) {
+        this.xDuration = xDuration;
     }
 
-    public void setyDuration(Short yDuration) {
-        this.yDuration = Float.valueOf(yDuration);
+    public void setyDuration(float yDuration) {
+        this.yDuration = yDuration;
     }
 
 }
diff --git a/src/main/java/com/zy/core/model/protocol/RgvProtocol.java b/src/main/java/com/zy/core/model/protocol/RgvProtocol.java
index d952086..f8fd4da 100644
--- a/src/main/java/com/zy/core/model/protocol/RgvProtocol.java
+++ b/src/main/java/com/zy/core/model/protocol/RgvProtocol.java
@@ -5,6 +5,9 @@
 import com.zy.core.enums.RgvStatusType;
 import lombok.Data;
 
+import java.util.HashMap;
+import java.util.Map;
+
 /**
  * Created by vincent on 2020/8/7
  */
@@ -72,29 +75,29 @@
     public Short walkPos;
 
     //////////////////////     宸ヤ綅2瀹氫箟   //////////////////////////////////////////////////
-    /**
-     * 宸ヤ綅2浠诲姟鍙�
-     */
-    public Short taskNo2 = 0;
-
-    /**
-     * RGV宸ヤ綅2褰撳墠鐘舵��
-     * 0锛氱┖闂诧紝鏃犱换鍔�
-     * 11锛氬彇璐т腑
-     * 12锛氭斁璐т腑
-     * 10锛氫换鍔″畬鎴愮瓑寰匴CS纭
-     */
-    public Short status2;
-
-    /**
-     * 鐘舵�佹灇涓�
-     */
-    public RgvStatusType statusType2;
-
-    /**
-     * 宸ヤ綅2鏈夌墿
-     */
-    public Short loaded2;
+//    /**
+//     * 宸ヤ綅2浠诲姟鍙�
+//     */
+//    public Short taskNo2 = 0;
+//
+//    /**
+//     * RGV宸ヤ綅2褰撳墠鐘舵��
+//     * 0锛氱┖闂诧紝鏃犱换鍔�
+//     * 11锛氬彇璐т腑
+//     * 12锛氭斁璐т腑
+//     * 10锛氫换鍔″畬鎴愮瓑寰匴CS纭
+//     */
+//    public Short status2;
+//
+//    /**
+//     * 鐘舵�佹灇涓�
+//     */
+//    public RgvStatusType statusType2;
+//
+//    /**
+//     * 宸ヤ綅2鏈夌墿
+//     */
+//    public Short loaded2;
     ///////////////////////////////////////////////////////////////////////////////////////
 
     /**
@@ -162,15 +165,15 @@
         this.status1 = RgvStatusType.get(type1).id.shortValue();
     }
 
-    public void setStatus2(Short status2){
-        this.status2 = status2;
-        this.statusType2 = RgvStatusType.get(status2);
-    }
-
-    public void setStatus2(RgvStatusType type2){
-        this.statusType2 = type2;
-        this.status2 = RgvStatusType.get(type2).id.shortValue();
-    }
+//    public void setStatus2(Short status2){
+//        this.status2 = status2;
+//        this.statusType2 = RgvStatusType.get(status2);
+//    }
+//
+//    public void setStatus2(RgvStatusType type2){
+//        this.statusType2 = type2;
+//        this.status2 = RgvStatusType.get(type2).id.shortValue();
+//    }
 
     /**
      * 鏈�杩戜竴娆″叆鍑哄簱绫诲瀷
@@ -185,7 +188,7 @@
             basRgv.setRgvErr(alarm.longValue());
         }
         basRgv.setWrkNo1(taskNo1.intValue());
-        basRgv.setWrkNo2(taskNo2.intValue());
+//        basRgv.setWrkNo2(taskNo2.intValue());
         return basRgv;
     }
 
@@ -203,8 +206,16 @@
 
     public Integer getRgvPosI(){
         //闇�瑕佹牴鎹幇鍦烘敼閫�  鏍规嵁璇诲埌鐨勫�艰幏鍙栧搴旂珯鐐逛綅缃�
+        Map<Short,Integer> map = new HashMap<>();
+        map.put((short) 1,100);map.put((short) 2,101);
+        map.put((short) 3,106);map.put((short) 4,107);
+        map.put((short) 5,112);map.put((short) 6,113);
+        map.put((short) 7,119);map.put((short) 8,124);
+        map.put((short) 9,149);map.put((short) 10,153);
+        map.put((short) 11,157);map.put((short) 12,161);
         if (RgvPos==null) return 0;
-        return RgvPos.intValue();
+
+        return map.get(RgvPos);
     }
 
 }
diff --git a/src/main/java/com/zy/core/thread/RgvThread.java b/src/main/java/com/zy/core/thread/RgvThread.java
index 27b3fda..785550a 100644
--- a/src/main/java/com/zy/core/thread/RgvThread.java
+++ b/src/main/java/com/zy/core/thread/RgvThread.java
@@ -144,9 +144,9 @@
         rgvProtocol.setLoaded1((short)0);
         rgvProtocol.setWalkPos((short)0);
         rgvProtocol.setRgvPos((short)0);
-        rgvProtocol.setTaskNo2((short)0);
-        rgvProtocol.setStatus2((short)-1);
-        rgvProtocol.setLoaded2((short)0);
+//        rgvProtocol.setTaskNo2((short)0);
+//        rgvProtocol.setStatus2((short)-1);
+//        rgvProtocol.setLoaded2((short)0);
         rgvProtocol.setAlarm((short)0);
         rgvProtocol.setxSpeed((short) 0);
         rgvProtocol.setxDistance((short) 0);
@@ -178,7 +178,7 @@
      */
     private void readStatus(){
         try {
-            OperateResultExOne<byte[]> result = siemensNet.Read("DB1.0", (short) 34);
+            OperateResultExOne<byte[]> result = siemensNet.Read("DB101.0", (short) 30);
             if (result.IsSuccess) {
                 if (null == rgvProtocol) {
                     rgvProtocol = new RgvProtocol();
@@ -191,16 +191,16 @@
                 rgvProtocol.setLoaded1(siemensNet.getByteTransform().TransInt16(result.Content, 8));
                 rgvProtocol.setRgvPos(siemensNet.getByteTransform().TransInt16(result.Content, 10));
                 rgvProtocol.setWalkPos(siemensNet.getByteTransform().TransInt16(result.Content, 12));
-//                rgvProtocol.setTaskNo2(siemensNet.getByteTransform().TransInt16(result.Content, 14));
+                rgvProtocol.setAlarm(siemensNet.getByteTransform().TransInt16(result.Content, 14));
 //                rgvProtocol.setStatus2(siemensNet.getByteTransform().TransInt16(result.Content, 16));
-//                rgvProtocol.setLoaded2(siemensNet.getByteTransform().TransInt16(result.Content, 18));
-                rgvProtocol.setAlarm(siemensNet.getByteTransform().TransInt16(result.Content, 20));
-                rgvProtocol.setHeart(siemensNet.getByteTransform().TransInt16(result.Content, 22));
-                rgvProtocol.setTemp1(siemensNet.getByteTransform().TransInt16(result.Content, 24));
+                rgvProtocol.setxSpeed(siemensNet.getByteTransform().TransInt16(result.Content, 18));
+//                rgvProtocol.setAlarm(siemensNet.getByteTransform().TransInt16(result.Content, 20));
+                rgvProtocol.setxDistance(siemensNet.getByteTransform().TransInt16(result.Content, 22));
+//                rgvProtocol.setTemp1(siemensNet.getByteTransform().TransInt16(result.Content, 24));
                 rgvProtocol.setTemp2(siemensNet.getByteTransform().TransInt16(result.Content, 26));
-                rgvProtocol.setTemp3(siemensNet.getByteTransform().TransInt16(result.Content, 28));
-                rgvProtocol.setTemp4(siemensNet.getByteTransform().TransInt16(result.Content, 30));
-                rgvProtocol.setTemp5(siemensNet.getByteTransform().TransInt16(result.Content, 32));
+//                rgvProtocol.setTemp3(siemensNet.getByteTransform().TransInt16(result.Content, 28));
+//                rgvProtocol.setTemp4(siemensNet.getByteTransform().TransInt16(result.Content, 30));
+//                rgvProtocol.setTemp5(siemensNet.getByteTransform().TransInt16(result.Content, 32));
 //                rgvProtocol.setxSpeed(siemensNet.getByteTransform().TransInt16(result.Content, 28));
 //                rgvProtocol.setxDistance(siemensNet.getByteTransform().TransInt16(result.Content, 40));
 //                rgvProtocol.setxDuration(siemensNet.getByteTransform().TransInt16(result.Content, 48));
@@ -220,16 +220,16 @@
                 }
 
                 // 宸ヤ綅2澶嶄綅淇″彿
-                if (rgvProtocol.getStatusType2().equals(RgvStatusType.WAITING)
-                        || rgvProtocol.getStatusType2().equals(RgvStatusType.FETCHWAITING)) {
-                    if (resetFlag2) {
-                        RgvCommand rgvCommand = new RgvCommand();
-                        rgvCommand.setAckFinish2((short)1);
-                        if (write(rgvCommand)) {
-                            resetFlag2 = false;
-                        }
-                    }
-                }
+//                if (rgvProtocol.getStatusType2().equals(RgvStatusType.WAITING)
+//                        || rgvProtocol.getStatusType2().equals(RgvStatusType.FETCHWAITING)) {
+//                    if (resetFlag2) {
+//                        RgvCommand rgvCommand = new RgvCommand();
+//                        rgvCommand.setAckFinish2((short)1);
+//                        if (write(rgvCommand)) {
+//                            resetFlag2 = false;
+//                        }
+//                    }
+//                }
 
                 try {
                     // 鏍规嵁瀹炴椂淇℃伅鏇存柊鏁版嵁搴�
@@ -281,11 +281,11 @@
         array[10] = command.getCommand();
         OperateResult result = siemensNet.Write("DB100.0", array);
 
-        if (command.getAckFinish1() == 0 && command.getAckFinish2() == 0) {
-            short commandFinish = 3;  //宸ヤ綅1銆�2浠诲姟鍚屾椂鍐欏叆
-            Thread.sleep(100L);
-            result = siemensNet.Write("DB100.20", commandFinish);
-        }
+//        if (command.getAckFinish1() == 0 && command.getAckFinish2() == 0) {
+//            short commandFinish = 3;  //宸ヤ綅1銆�2浠诲姟鍚屾椂鍐欏叆
+//            Thread.sleep(100L);
+//            result = siemensNet.Write("DB100.20", commandFinish);
+//        }
 
         try {
             // 鏃ュ織璁板綍
diff --git a/src/main/java/com/zy/core/thread/SiemensCrnThread.java b/src/main/java/com/zy/core/thread/SiemensCrnThread.java
index ac81663..17570b0 100644
--- a/src/main/java/com/zy/core/thread/SiemensCrnThread.java
+++ b/src/main/java/com/zy/core/thread/SiemensCrnThread.java
@@ -40,6 +40,10 @@
     private CrnProtocol crnProtocol;
     private boolean resetFlag = false;
 
+    public boolean isRunning = true;
+
+    public Long sign = System.currentTimeMillis();
+
     /**
      * 鍫嗗灈鏈烘槸鍚﹀湪鍥炲師鐐硅繍鍔ㄤ腑鏍囪
      */
@@ -53,7 +57,7 @@
     @SuppressWarnings("InfiniteLoopStatement")
     public void run() {
         this.connect();
-        while (true) {
+        while (isRunning) {
             try {
                 int step = 1;
                 Task task = MessageQueue.poll(SlaveType.Crn, slave.getId());
@@ -169,13 +173,13 @@
                 crnProtocol.setTemp2(siemensNet.getByteTransform().TransInt16(result.Content, 22));
                 crnProtocol.setTemp3(siemensNet.getByteTransform().TransInt16(result.Content, 24));
                 crnProtocol.setTemp4(siemensNet.getByteTransform().TransInt16(result.Content, 26));
-                crnProtocol.setxSpeed(siemensNet.getByteTransform().TransInt16(result.Content, 28));
-                crnProtocol.setySpeed(siemensNet.getByteTransform().TransInt16(result.Content, 32));
-                crnProtocol.setzSpeed(siemensNet.getByteTransform().TransInt16(result.Content, 36));
-                crnProtocol.setxDistance(siemensNet.getByteTransform().TransInt16(result.Content, 40));
-                crnProtocol.setyDistance(siemensNet.getByteTransform().TransInt16(result.Content, 44));
-                crnProtocol.setxDuration(siemensNet.getByteTransform().TransInt16(result.Content, 48));
-                crnProtocol.setyDuration(siemensNet.getByteTransform().TransInt16(result.Content, 52));
+                crnProtocol.setxSpeed(siemensNet.getByteTransform().TransSingle(result.Content, 28));
+                crnProtocol.setySpeed(siemensNet.getByteTransform().TransSingle(result.Content, 32));
+                crnProtocol.setzSpeed(siemensNet.getByteTransform().TransSingle(result.Content, 36));
+                crnProtocol.setxDistance(siemensNet.getByteTransform().TransSingle(result.Content, 40));
+                crnProtocol.setyDistance(siemensNet.getByteTransform().TransSingle(result.Content, 44));
+                crnProtocol.setxDuration(siemensNet.getByteTransform().TransSingle(result.Content, 48));
+                crnProtocol.setyDuration(siemensNet.getByteTransform().TransSingle(result.Content, 52));
 
                 OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId()));
 
@@ -293,6 +297,10 @@
         }
     }
 
+    public void requestStop() {
+        isRunning = false;
+    }
+
 
     @Override
     public void close() {
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 0012b0a..ebbbb49 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -57,15 +57,15 @@
     # 鍫嗗灈鏈哄叆搴撶珯鐐�
     crnInStn[0]:
       devpPlcId: ${wcs-slave.devp[0].id}
-      staNo: 103
-      row: 2
+      staNo: 123
+      row: 3
       bay: 1
       lev: 1
     # 鍫嗗灈鏈哄嚭搴撶珯鐐�
     crnOutStn[0]:
       devpPlcId: ${wcs-slave.devp[0].id}
-      staNo: 104
-      row: 3
+      staNo: 118
+      row: 2
       bay: 1
       lev: 1
   # 鍫嗗灈鏈�2
@@ -81,15 +81,15 @@
     # 鍫嗗灈鏈哄叆搴撶珯鐐�
     crnInStn[0]:
       devpPlcId: ${wcs-slave.devp[0].id}
-      staNo: 203
-      row: 12
+      staNo: 128
+      row: 6
       bay: 1
       lev: 1
     # 鍫嗗灈鏈哄嚭搴撶珯鐐�
     crnOutStn[0]:
       devpPlcId: ${wcs-slave.devp[0].id}
-      staNo: 204
-      row: 13
+      staNo: 132
+      row: 7
       bay: 1
       lev: 1
   # 鍫嗗灈鏈�3
@@ -105,15 +105,15 @@
     # 鍫嗗灈鏈哄叆搴撶珯鐐�
     crnInStn[0]:
       devpPlcId: ${wcs-slave.devp[0].id}
-      staNo: 303
-      row: 22
+      staNo: 136
+      row: 12
       bay: 1
       lev: 1
     # 鍫嗗灈鏈哄嚭搴撶珯鐐�
     crnOutStn[0]:
       devpPlcId: ${wcs-slave.devp[0].id}
-      staNo: 304
-      row: 23
+      staNo: 140
+      row: 11
       bay: 1
       lev: 1
   # 鍫嗗灈鏈�4
@@ -129,15 +129,15 @@
     # 鍫嗗灈鏈哄叆搴撶珯鐐�
     crnInStn[0]:
       devpPlcId: ${wcs-slave.devp[0].id}
-      staNo: 303
-      row: 22
+      staNo: 144
+      row: 14
       bay: 1
       lev: 1
     # 鍫嗗灈鏈哄嚭搴撶珯鐐�
     crnOutStn[0]:
       devpPlcId: ${wcs-slave.devp[0].id}
-      staNo: 304
-      row: 23
+      staNo: 148
+      row: 15
       bay: 1
       lev: 1
 
diff --git a/src/main/webapp/views/rgv.html b/src/main/webapp/views/rgv.html
index fc468d9..b679a84 100644
--- a/src/main/webapp/views/rgv.html
+++ b/src/main/webapp/views/rgv.html
@@ -90,16 +90,16 @@
                     <thead>
                     <tr>
                         <th>RGV</th>
-                        <th>妯″紡</th>
-                        <th>鐘舵��</th>
-                        <th>浠诲姟鍙�1</th>
-                        <th>鐘舵��1</th>
-                        <th>鏈夌墿1</th>
+                        <th>褰撳墠妯″紡</th>
+                        <th>褰撳墠鐘舵��</th>
+                        <th>浠诲姟鍙�</th>
+                        <th>宸ヤ綔鐘舵��</th>
+                        <th>鏈夌墿</th>
                         <th>RGV浣嶇疆</th>
                         <th>璧拌瀹氫綅</th>
-                        <th>浠诲姟鍙�2</th>
-                        <th>鐘舵��2</th>
-                        <th>鏈夌墿2</th>
+<!--                        <th>浠诲姟鍙�2</th>-->
+<!--                        <th>鐘舵��2</th>-->
+<!--                        <th>鏈夌墿2</th>-->
                         <th>鏁呴殰浠g爜</th>
                         <th>鏁呴殰鎻忚堪</th>
                     </tr>
@@ -315,13 +315,13 @@
                         setVal(tr.children("td").eq(3), table[i-1].workNo1);
                         setVal(tr.children("td").eq(4), table[i-1].status1);
                         setVal(tr.children("td").eq(5), table[i-1].loading1);
-                        setVal(tr.children("td").eq(6), table[i-1].rgvPos);
+                        setVal(tr.children("td").eq(6), table[i-1].rgvPos1);
                         setVal(tr.children("td").eq(7), table[i-1].walkPos);
-                        setVal(tr.children("td").eq(8), table[i-1].workNo2);
-                        setVal(tr.children("td").eq(9), table[i-1].status2);
-                        setVal(tr.children("td").eq(10), table[i-1].loading2);
-                        setVal(tr.children("td").eq(11), table[i-1].warnCode);
-                        setVal(tr.children("td").eq(12), table[i-1].alarm);
+                        // setVal(tr.children("td").eq(8), table[i-1].workNo2);
+                        // setVal(tr.children("td").eq(9), table[i-1].status2);
+                        // setVal(tr.children("td").eq(10), table[i-1].loading2);
+                        setVal(tr.children("td").eq(8), table[i-1].warnCode);
+                        setVal(tr.children("td").eq(9), table[i-1].alarm);
                     }
                 } else if (res.code === 403){
                     window.location.href = baseUrl+"/login";

--
Gitblit v1.9.1