From 770d716304e32d4da8e74bb70c8907d7e0fd922b Mon Sep 17 00:00:00 2001
From: 野心家 <1051256694@qq.com>
Date: 星期二, 24 十二月 2024 16:19:12 +0800
Subject: [PATCH] 完善wcs

---
 src/main/webapp/static/wcs/js/common.js                     |    2 
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |  597 +++++-------
 src/main/resources/application-prod.yml                     |  164 ++
 src/main/java/com/zy/asrs/controller/CrnController.java     |   14 
 pom.xml                                                     |    4 
 src/main/java/com/zy/core/model/protocol/CrnProtocol.java   |  319 +----
 src/main/java/com/zy/core/enums/CrnModeType.java            |    8 
 src/main/java/com/zy/core/ServerBootstrap.java              |   31 
 src/main/webapp/static/wms/js/common.js                     |    2 
 src/main/java/com/zy/core/model/protocol/StaProtocol.java   |    5 
 src/main/java/com/zy/core/thread/SiemensCrnThread.java      |  506 ++++-----
 src/main/java/com/zy/asrs/controller/ConsoleController.java |    8 
 src/main/java/com/zy/core/enums/CrnStatusType.java          |   44 
 src/main/java/com/zy/core/model/DevpSlave.java              |    2 
 src/main/webapp/static/wcs/js/console.map.js                |  661 +++++++------
 src/main/java/com/zy/common/utils/News.java                 |  183 +++
 src/main/java/com/zy/core/MainProcess.java                  |    2 
 src/main/java/com/zy/core/thread/SiemensDevpThread.java     |  293 +----
 src/main/resources/application.yml                          |    6 
 19 files changed, 1,326 insertions(+), 1,525 deletions(-)

diff --git a/pom.xml b/pom.xml
index 7a47d8d..b5cbd78 100644
--- a/pom.xml
+++ b/pom.xml
@@ -9,7 +9,7 @@
         <relativePath/> <!-- lookup parent from repository -->
     </parent>
     <groupId>com.zy</groupId>
-    <artifactId>jdzwcs</artifactId>
+    <artifactId>dtwcs</artifactId>
     <version>1.0.0</version>
     <packaging>war</packaging>
 
@@ -200,7 +200,7 @@
     </dependencies>
 
     <build>
-        <finalName>jdzwcs</finalName>
+        <finalName>dtwcs</finalName>
         <plugins>
             <plugin>
                 <groupId>org.springframework.boot</groupId>
diff --git a/src/main/java/com/zy/asrs/controller/ConsoleController.java b/src/main/java/com/zy/asrs/controller/ConsoleController.java
index d56f44d..1c05208 100644
--- a/src/main/java/com/zy/asrs/controller/ConsoleController.java
+++ b/src/main/java/com/zy/asrs/controller/ConsoleController.java
@@ -147,7 +147,7 @@
             /**
              * 鍫嗗灈鏈虹姸鎬佸垽鏂�
              */
-            if (crnProtocol.getAlarm1() > 0) {
+            if (crnProtocol.getAlarm() > 0) {
                 vo.setCrnStatus(CrnStatusType.MACHINE_ERROR);
             } else {
                 if (crnProtocol.getTaskNo()>0) {
@@ -223,7 +223,7 @@
             map.put("device", "鍫嗗灈鏈�");
             map.put("deviceId", crn.getId());
             map.put("battery", "");
-            map.put("error", crnProtocol.getFault());
+            map.put("error", crnProtocol.getAlarm());
             map.put("status", crnProtocol.getStatusType().desc);
             list.add(map);
         }
@@ -324,8 +324,8 @@
                 vo.setWorkNo(crnProtocol.getTaskNo());
                 vo.setCrnStatus(crnProtocol.getStatusType().desc);
 
-                if (crnProtocol.getAlarm1() > 0) {
-                    BasCrnError crnError = basCrnErrorMapper.selectById(crnProtocol.getAlarm1());
+                if (crnProtocol.getAlarm() > 0) {
+                    BasCrnError crnError = basCrnErrorMapper.selectById(crnProtocol.getAlarm());
                     vo.setError(crnError == null ? "鏈煡寮傚父" : crnError.getErrName());
                 }
 
diff --git a/src/main/java/com/zy/asrs/controller/CrnController.java b/src/main/java/com/zy/asrs/controller/CrnController.java
index 4844ff3..2bb0d19 100644
--- a/src/main/java/com/zy/asrs/controller/CrnController.java
+++ b/src/main/java/com/zy/asrs/controller/CrnController.java
@@ -130,7 +130,7 @@
             vo.setForkOffset(crnProtocol.getForkPosType().desc);    // 璐у弶浣嶇疆
             vo.setLiftPos(crnProtocol.getLiftPosType().desc);
             vo.setWalkPos(crnProtocol.getWalkPos()==1?"涓嶅湪瀹氫綅":"鍦ㄥ畾浣�");
-            vo.setWarnCode(String.valueOf(crnProtocol.getAlarm1()));
+            vo.setWarnCode(String.valueOf(crnProtocol.getAlarm()));
             if (crnProtocol.getAlarm() > 0) {
                 BasCrnError crnError = basCrnErrorMapper.selectById(crnProtocol.getAlarm());
                 vo.setAlarm(crnError==null?"鏈煡寮傚父":crnError.getErrName());
@@ -165,9 +165,9 @@
         vo.setForkOffset(crnProtocol.getForkPosType().desc);    // 璐у弶浣嶇疆
         vo.setLiftPos(crnProtocol.getLiftPosType().desc);
         vo.setWalkPos(crnProtocol.getWalkPos()==1?"涓嶅湪瀹氫綅":"鍦ㄥ畾浣�");
-        vo.setWarnCode(String.valueOf(crnProtocol.getAlarm1()));
-        if (crnProtocol.getAlarm1() > 0) {
-            BasCrnError crnError = basCrnErrorMapper.selectById(crnProtocol.getAlarm1());
+        vo.setWarnCode(String.valueOf(crnProtocol.getAlarm()));
+        if (crnProtocol.getAlarm() > 0) {
+            BasCrnError crnError = basCrnErrorMapper.selectById(crnProtocol.getAlarm());
             vo.setAlarm(crnError==null?"鏈煡寮傚父":crnError.getErrName());
         }
         return R.ok().add(vo);
@@ -307,9 +307,9 @@
             vo.setForkOffset(crnProtocol.getForkPosType().desc);    // 璐у弶浣嶇疆
             vo.setLiftPos(crnProtocol.getLiftPosType().desc);
             vo.setWalkPos(crnProtocol.getWalkPos()==1?"涓嶅湪瀹氫綅":"鍦ㄥ畾浣�");
-            vo.setWarnCode(String.valueOf(crnProtocol.getAlarm1()));
-            if (crnProtocol.getAlarm1() > 0) {
-                BasCrnError crnError = basCrnErrorMapper.selectById(crnProtocol.getAlarm1());
+            vo.setWarnCode(String.valueOf(crnProtocol.getAlarm()));
+            if (crnProtocol.getAlarm() > 0) {
+                BasCrnError crnError = basCrnErrorMapper.selectById(crnProtocol.getAlarm());
                 vo.setAlarm(crnError==null?"鏈煡寮傚父":crnError.getErrName());
             }
             vo.setInEnable(basCrnp.getInEnable());
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 1a45968..ce25be1 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -22,6 +22,7 @@
 import com.zy.asrs.utils.Utils;
 import com.zy.common.service.CommonService;
 import com.zy.common.utils.HttpHandler;
+import com.zy.common.utils.News;
 import com.zy.core.CrnThread;
 import com.zy.core.DevpThread;
 import com.zy.core.cache.MessageQueue;
@@ -36,6 +37,7 @@
 import com.zy.core.model.protocol.StaProtocol;
 import com.zy.core.properties.SlaveProperties;
 import com.zy.core.thread.BarcodeThread;
+import com.zy.core.thread.LedThread;
 import com.zy.core.thread.SiemensDevpThread;
 import com.zy.system.entity.Config;
 import com.zy.system.service.ConfigService;
@@ -110,12 +112,14 @@
 
 
     public void generateStoreWrkFile1() throws IOException, InterruptedException {
+        String methodName = Thread.currentThread().getStackTrace()[1].getMethodName();
         try {
             // 鏍规嵁杈撻�佺嚎plc閬嶅巻
             for (DevpSlave devp : slaveProperties.getDevp()) {
                 // 閬嶅巻鍏ュ簱鍙�
                 for (DevpSlave.Sta inSta : devp.getInSta()) {
                     StorageEscalationParam storageEscalationParam = new StorageEscalationParam();
+                    LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, inSta.getLed());
                     // 鑾峰彇鍏ュ簱绔欎俊鎭�
                     DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
                     StaProtocol staProtocol = devpThread.getStation().get(inSta.getStaNo());
@@ -127,54 +131,39 @@
                     Short workNo = staProtocol.getWorkNo();
                     Short stano = staProtocol.getStaNo();
 
-                    // 灏哄妫�娴嬪紓甯�
-                    boolean back = false;
-                    String errMsg = "";
-                    if (staProtocol.isFrontErr()) {
-                        errMsg = "鍓嶈秴闄�";
-                        back = true;
-                    }
-                    if (!back && staProtocol.isBackErr()) {
-                        errMsg = "鍚庤秴闄�";
-                        back = true;
-                    }
-                    if (!back && staProtocol.isHighErr()) {
-                        errMsg = "楂樿秴闄�";
-                        back = true;
-                    }
-                    if (!back && staProtocol.isLeftErr()) {
-                        errMsg = "宸﹁秴闄�";
-                        back = true;
-                    }
-                    if (!back && staProtocol.isRightErr()) {
-                        errMsg = "鍙宠秴闄�";
-                        back = true;
-                    }
-                    if (!back && staProtocol.isWeightErr()) {
-                        errMsg = "瓒呴噸";
-                        back = true;
-                    }
-                    if (!back && staProtocol.isBarcodeErr()) {
-                        errMsg = "鎵爜澶辫触";
-                        back = true;
-                    }
                     // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢
-                    if (staProtocol.isAutoing() && staProtocol.isLoading()
-                            && staProtocol.isInEnable()
-                            && !staProtocol.isEmptyMk() && workNo >= 9790
-                            && staProtocol.isPakMk()) {
+                    if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable() && !staProtocol.isEmptyMk() && workNo >= 9790 && staProtocol.isPakMk()) {
                         // 鑾峰彇鏉$爜鎵弿浠俊鎭�
                         BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, inSta.getBarcode());
                         if (barcodeThread == null) {
                             continue;
+                        }
+                        String barcode = barcodeThread.getBarcode();
+
+                        boolean back = false;
+                        if (!Cools.isEmpty(barcode) && (staProtocol.getWorkNo() != 9998 || staProtocol.getWorkNo() != 9996)) {
+                            log.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", inSta.getBarcode(), barcode);
+                            if ("NG".endsWith(barcode) || "NoRead".equals(barcode)) {
+                                String errorMsg = "15绔欐壂鐮佸け璐ワ紝宸查��鍥�14绔�";
+                                staProtocol.setWorkNo((short) 9998);
+                                staProtocol.setStaNo((short) 14);
+                                devpThread.setPakMk(staProtocol.getSiteId(), false);
+                                storageEscalationParam.setWCSStatus(1);
+                                storageEscalationParam.setWCSErrorMessage(storageEscalationParam.getWCSErrorMessage() + errorMsg);
+                                // led 寮傚父鏄剧ず
+                                if (ledThread != null) {
+                                    News.error(methodName + ":鎵爜澶辫触锛岃閲嶈瘯");
+                                    MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errorMsg));
+                                }
+                                back = true;
+                            }
                         }
                         String BoxNo = barcodeThread.getBarcode();
                         TaskWrk taskWrk1 = taskWrkService.selectOne(new EntityWrapper<TaskWrk>().eq("barcode", BoxNo));
                         if (!Cools.isEmpty(taskWrk1)) {
                             log.info("鎵樼洏鐮侊細" + BoxNo + "浠诲姟妗e瓨鍦�");
                             if (taskWrk1.getIoType() == 1 && taskWrk1.getStartPoint().equals(staProtocol.getSiteId().toString())) {
-                                StaDesc staDesc = staDescService.selectOne(new EntityWrapper<StaDesc>()
-                                        .eq("crn_no", taskWrk1.getCrnNo()).eq("type_no", 1).eq("stn_no", staProtocol.getSiteId()));
+                                StaDesc staDesc = staDescService.selectOne(new EntityWrapper<StaDesc>().eq("crn_no", taskWrk1.getCrnNo()).eq("type_no", 1).eq("stn_no", staProtocol.getSiteId()));
                                 if (Cools.isEmpty(staDesc)) {
                                     return;
                                 } else {
@@ -182,36 +171,17 @@
                                 }
                             }
                         }
-                        if (back) {
-                            storageEscalationParam.setWCSStatus(1);
-                            storageEscalationParam.setWCSErrorMessage(storageEscalationParam.getWCSErrorMessage() + errMsg);
-                        }
                         log.info("缁勬墭鍏ュ簱={}", storageEscalationParam);
                         storageEscalationParam.setBoxNo(BoxNo);
                         String response = "";
                         Boolean success = false;
                         try {
-                            response = new HttpHandler.Builder()
-                                    .setUri(wmsUrl)
-                                    .setPath(inboundTaskApplyPath)
-                                    .setJson(JSON.toJSONString(storageEscalationParam))
-                                    .build()
-                                    .doPost();
+                            response = new HttpHandler.Builder().setUri(wmsUrl).setPath(inboundTaskApplyPath).setJson(JSON.toJSONString(storageEscalationParam)).build().doPost();
                             JSONObject jsonObject = JSON.parseObject(response);
-                            if(back){
-                                if(staProtocol.getWorkNo()>=9801&&staProtocol.getWorkNo()<=9825){
-                                    staProtocol.setStaNo((short)105);
-                                } else if (staProtocol.getWorkNo()>=9826&&staProtocol.getWorkNo()<=9850) {
-                                    staProtocol.setStaNo((short)107);
-                                }else if (staProtocol.getWorkNo()>=9851&&staProtocol.getWorkNo()<=9875) {
-                                    staProtocol.setStaNo((short)109);
-                                }else{
-                                    staProtocol.setStaNo((short)110);
-                                }
-                                devpThread.setPakMk(staProtocol.getSiteId(), false);
+                            if (back) {
                                 MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
-                            }else{
-                                if (!Cools.isEmpty(response)&&!Cools.isEmpty(jsonObject.get("ReturnStatus"))&&jsonObject.get("ReturnStatus").equals(0) && !Cools.isEmpty(jsonObject.get("Result").toString())) {
+                            } else {
+                                if (!Cools.isEmpty(response) && !Cools.isEmpty(jsonObject.get("ReturnStatus")) && jsonObject.get("ReturnStatus").equals(0) && !Cools.isEmpty(jsonObject.get("Result").toString())) {
                                     Result result = JSON.parseObject(jsonObject.get("Result").toString(), Result.class);
                                     // 鍒涙柊涓�涓叆搴撳伐浣滄。
                                     TaskWrk taskWrk = taskWrkService.selectByTaskNo(result.getTaskNo());
@@ -221,58 +191,43 @@
                                             log.error("搴撲綅寮傚父锛屽簱浣嶅彿锛�={}", taskWrk.getOriginTargetPoint());
                                         } else {
                                             taskWrkService.insert(taskWrk);
-                                            StaDesc staDesc = staDescService.selectOne(new EntityWrapper<StaDesc>()
-                                                    .eq("crn_no", taskWrk.getCrnNo()).eq("type_no", 1).eq("stn_no", staProtocol.getSiteId()));
+                                            StaDesc staDesc = staDescService.selectOne(new EntityWrapper<StaDesc>().eq("crn_no", taskWrk.getCrnNo()).eq("type_no", 1).eq("stn_no", staProtocol.getSiteId()));
                                             staProtocol.setWorkNo(taskWrk.getWrkNo().shortValue());
                                             staProtocol.setStaNo(staDesc.getCrnStn().shortValue());
                                             MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
                                             HashMap<String, Object> hashMap = new HashMap<>();
-                                            hashMap.put("TaskNo",taskWrk.getTaskNo());
+                                            hashMap.put("TaskNo", taskWrk.getTaskNo());
                                             try {
                                                 //寮�濮嬩笂鎶�,浠诲姟寮�濮嬫椂锛學CS鍥炶皟WMS
-                                                response = new HttpHandler.Builder()
-                                                        .setUri(wmsUrl)
-                                                        .setPath(taskStatusFeedbackPath)
-                                                        .setJson(JSON.toJSONString(hashMap))
-                                                        .build()
-                                                        .doPost();
+                                                response = new HttpHandler.Builder().setUri(wmsUrl).setPath(taskStatusFeedbackPath).setJson(JSON.toJSONString(hashMap)).build().doPost();
                                                 JSONObject jsonObject1 = JSON.parseObject(response);
                                                 Boolean bool = false;
-                                                if(jsonObject1.get("ReturnStatus").equals(0)){
+                                                if (jsonObject1.get("ReturnStatus").equals(0)) {
                                                     bool = true;
                                                 }
-                                                apiLogService.save("wcs寮�濮嬪叆搴撲换鍔′笂鎶ms"
-                                                        , wmsUrl + TaskExecCallback
-                                                        , null
-                                                        , "127.0.0.1"
-                                                        , JSON.toJSONString(hashMap)
-                                                        , response
-                                                        , bool
-                                                );
+                                                apiLogService.save("wcs寮�濮嬪叆搴撲换鍔′笂鎶ms", wmsUrl + TaskExecCallback, null, "127.0.0.1", JSON.toJSONString(hashMap), response, bool);
                                             } catch (Exception e) {
 
                                             }
                                         }
                                     } else {
-//                                    staProtocol.setWorkNo((short) 9991);
-                                        if(staProtocol.getWorkNo()>=9801&&staProtocol.getWorkNo()<=9825){
-                                            staProtocol.setStaNo((short)105);
-                                        } else if (staProtocol.getWorkNo()>=9826&&staProtocol.getWorkNo()<=9850) {
-                                            staProtocol.setStaNo((short)107);
-                                        }else if (staProtocol.getWorkNo()>=9851&&staProtocol.getWorkNo()<=9875) {
-                                            staProtocol.setStaNo((short)109);
-                                        }else{
-                                            staProtocol.setStaNo((short)110);
-                                        }
+                                        staProtocol.setWorkNo((short) 9998);
+                                        staProtocol.setStaNo((short) 14);
                                         devpThread.setPakMk(staProtocol.getSiteId(), false);
                                         MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
                                     }
 
                                 } else {
-//                                staProtocol.setWorkNo((short) 9991);
-                                    staProtocol.setStaNo(inSta.getBackSta().shortValue());
+                                    staProtocol.setWorkNo((short) 9998);
+                                    staProtocol.setStaNo((short) 14);
                                     devpThread.setPakMk(staProtocol.getSiteId(), false);
                                     MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+                                    if (ledThread != null) {
+                                        String errorMsg = jsonObject.getString("msg");
+                                        if (!Cools.isEmpty(errorMsg)) {
+                                            MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errorMsg));
+                                        }
+                                    }
                                 }
                             }
                         } catch (Exception e) {
@@ -291,14 +246,7 @@
                                 log.error("鎵爜妫�娴嬬▼搴忓紓甯�" + inSta.getStaNo() + "寮傚父淇℃伅" + e1);
                             }
                         } finally {
-                            apiLogService.save("wms璇锋眰鍏ュ簱璐т綅鎺ュ彛"
-                                    , wmsUrl + inboundTaskApplyPath
-                                    , null
-                                    , "127.0.0.1"
-                                    , JSON.toJSONString(storageEscalationParam)
-                                    , response
-                                    , success
-                            );
+                            apiLogService.save("wms璇锋眰鍏ュ簱璐т綅鎺ュ彛", wmsUrl + inboundTaskApplyPath, null, "127.0.0.1", JSON.toJSONString(storageEscalationParam), response, success);
                         }
                         log.info("鍏ュ簱璇锋眰鍙傛暟=" + JSON.toJSONString(BoxNo));
                         log.info("鍏ュ簱璇锋眰杩斿洖鍙傛暟=" + JSON.toJSONString(response));
@@ -383,10 +331,7 @@
                         continue;
                     }
                     // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢
-                    if (staProtocol.isAutoing() && staProtocol.isLoading()
-                            && staProtocol.isInEnable()
-                            && !staProtocol.isEmptyMk() && (workNo >= 9899)
-                            && staProtocol.isPakMk()) {
+                    if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable() && !staProtocol.isEmptyMk() && (workNo >= 9899) && staProtocol.isPakMk()) {
                         // 鑾峰彇鏉$爜鎵弿浠俊鎭�
                         BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, inSta.getBarcode());
                         if (barcodeThread == null) {
@@ -400,8 +345,7 @@
                             if (!Cools.isEmpty(taskWrk1)) {
                                 log.info("鎵樼洏鐮侊細" + barcode + "浠诲姟妗e瓨鍦�");
                                 if (taskWrk1.getIoType() == 1 && taskWrk1.getStartPoint().equals(staProtocol.getSiteId().toString())) {
-                                    StaDesc staDesc = staDescService.selectOne(new EntityWrapper<StaDesc>()
-                                            .eq("crn_no", taskWrk1.getCrnNo()).eq("type_no", 1).eq("stn_no", staProtocol.getSiteId()));
+                                    StaDesc staDesc = staDescService.selectOne(new EntityWrapper<StaDesc>().eq("crn_no", taskWrk1.getCrnNo()).eq("type_no", 1).eq("stn_no", staProtocol.getSiteId()));
                                     if (Cools.isEmpty(staDesc)) {
                                         log.info("鎵樼洏鐮侊細" + barcode + "浠诲姟妗e瓨鍦�");
                                         return;
@@ -420,11 +364,7 @@
                             try {
                                 response = new HttpHandler.Builder()
                                         // .setHeaders(headParam)
-                                        .setUri(wmsUrl)
-                                        .setPath(inboundTaskApplyPath)
-                                        .setJson(JSON.toJSONString(toWmsDTO))
-                                        .build()
-                                        .doPost();
+                                        .setUri(wmsUrl).setPath(inboundTaskApplyPath).setJson(JSON.toJSONString(toWmsDTO)).build().doPost();
                             } catch (Exception e) {
                                 log.error("璇锋眰鍏ュ簱璋冪敤鎺ュ彛澶辫触");
                                 log.error("寮傚父淇℃伅鎵撳嵃锛�" + e);
@@ -470,9 +410,7 @@
                                         log.error("绔欑偣鍙峰紓甯�2" + inSta.getStaNo());
                                         throw new CoolException("绔欑偣鍙峰紓甯�2,绔欑偣鍙蜂笉瀛樺湪" + inSta.getStaNo());
                                     } else {
-                                        LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>()
-                                                .eq("crn_no", staNoCrnNo.longValue())
-                                                .eq("loc_no", getWmsDto.getLocNo()));
+                                        LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("crn_no", staNoCrnNo.longValue()).eq("loc_no", getWmsDto.getLocNo()));
                                         if (Cools.isEmpty(locMast)) {
                                             basDevp.setStaErr(1);
                                             basDevpService.updateById(basDevp);
@@ -498,9 +436,7 @@
                                     continue;
                                 }
                                 //鏌ョ湅璇ュ簱浣嶆槸鍚︿负绌哄簱浣�
-                                LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>()
-                                        .eq("loc_sts", "O")
-                                        .eq("loc_no", getWmsDto.getLocNo()));
+                                LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_sts", "O").eq("loc_no", getWmsDto.getLocNo()));
                                 if (Cools.isEmpty(locMast)) {
                                     try {
                                         HashMap<String, Object> headParam1 = new HashMap<>();
@@ -511,20 +447,9 @@
                                         String response2;
                                         response2 = new HttpHandler.Builder()
                                                 // .setHeaders(headParam)
-                                                .setUri(wmsUrl)
-                                                .setPath(taskStatusFeedbackPath)
-                                                .setJson(JSON.toJSONString(headParam1))
-                                                .build()
-                                                .doPost();
+                                                .setUri(wmsUrl).setPath(taskStatusFeedbackPath).setJson(JSON.toJSONString(headParam1)).build().doPost();
                                         JSONObject jsonObject1 = JSON.parseObject(response2);
-                                        apiLogService.save("wcs娲惧彂搴撲綅==銆嬩笉涓虹┖銆�==涓婃姤wms"
-                                                , wmsUrl + taskStatusFeedbackPath
-                                                , null
-                                                , "127.0.0.1"
-                                                , JSON.toJSONString(headParam1)
-                                                , response
-                                                , true
-                                        );
+                                        apiLogService.save("wcs娲惧彂搴撲綅==銆嬩笉涓虹┖銆�==涓婃姤wms", wmsUrl + taskStatusFeedbackPath, null, "127.0.0.1", JSON.toJSONString(headParam1), response, true);
                                     } catch (Exception e) {
                                         log.error("wcs娲惧彂搴撲綅==銆嬩笉涓虹┖銆�==涓婃姤wms", getWmsDto.getWrkNo());
                                         throw new CoolException("wcs娲惧彂鍏ュ簱浠诲姟涓婃姤wms澶辫触,娲惧彂搴撲綅==銆嬩笉涓虹┖銆�==锛屽紓甯镐俊鎭細" + e);
@@ -539,8 +464,7 @@
                                         log.error("搴撲綅寮傚父锛屽簱浣嶅彿锛歿}", getWmsDto.getTargetLocationCode());
                                     } else {
                                         taskWrkService.insert(taskWrk);
-                                        StaDesc staDesc = staDescService.selectOne(new EntityWrapper<StaDesc>()
-                                                .eq("crn_no", taskWrk.getCrnNo()).eq("type_no", 1).eq("stn_no", staProtocol.getSiteId()));
+                                        StaDesc staDesc = staDescService.selectOne(new EntityWrapper<StaDesc>().eq("crn_no", taskWrk.getCrnNo()).eq("type_no", 1).eq("stn_no", staProtocol.getSiteId()));
                                         staProtocol.setWorkNo(taskWrk.getWrkNo().shortValue());
                                         staProtocol.setStaNo(staDesc.getCrnStn().shortValue());
                                         MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
@@ -550,14 +474,7 @@
                             } else {
                                 continue;
                             }
-                            apiLogService.save("wms璇锋眰鍏ュ簱璐т綅鎺ュ彛"
-                                    , wmsUrl + inboundTaskApplyPath
-                                    , null
-                                    , "127.0.0.1"
-                                    , JSON.toJSONString(toWmsDTO)
-                                    , response
-                                    , true
-                            );
+                            apiLogService.save("wms璇锋眰鍏ュ簱璐т綅鎺ュ彛", wmsUrl + inboundTaskApplyPath, null, "127.0.0.1", JSON.toJSONString(toWmsDTO), response, true);
 
                         } else {
                             // 閫�鍥�
@@ -603,33 +520,54 @@
                         } else {
                             staProtocol = staProtocol.clone();
                         }
-                        if (staProtocol.isAutoing() && staProtocol.isLoading() && (staProtocol.getWorkNo() == 0 || staProtocol.getStaNo() == 0)) {
+                        if (staProtocol.isAutoing() && staProtocol.isLoading() && (staProtocol.getWorkNo() == 0 || staProtocol.getStaNo() == null)) {
                             // 鏌ヨ宸ヤ綔妗�
                             TaskWrk taskWrk = taskWrkMapper.selectCrnStaWorking(crnSlave.getId(), staDesc.getStnNo().toString());
                             if (taskWrk == null) {
                                 continue;
                             }
-                            log.info("涓嬪彂杈撻�佺嚎浠诲姟锛歵askWrk:" + JSON.toJSONString(taskWrk));
-//                            R r = siteController.siteDetlUpdate(Integer.valueOf(taskWrk.getTargetPoint()), taskWrk.getWrkNo().shortValue(), (short) 0, "Y", false, false);
-                            staProtocol.setWorkNo(taskWrk.getWrkNo().shortValue());
-                            staProtocol.setStaNo(staDesc.getStnNo().shortValue());
-                            boolean offer = false;
-                            try {
-                                offer = MessageQueue.offer(SlaveType.Devp, 1, new Task(2, staProtocol));
-                            } catch (Exception e) {
-                                log.error("涓嬪彂杈撻�佺嚎浠诲姟澶辫触锛氬紓甯�:" + e);
-                                log.error("涓嬪彂杈撻�佺嚎浠诲姟澶辫触锛氬紓甯�:offer:" + offer);
-                            }
-//                            JSONObject jsonObject = JSON.parseObject(JSON.toJSONString(r));
-                            if (offer) {
-                                log.info("涓嬪彂杈撻�佺嚎浠诲姟鎴愬姛锛歵askWrk:" + JSON.toJSONString(taskWrk));
-                                taskWrk.setStatus(5);
-                                taskWrk.setWrkSts(14);
-                                taskWrkService.updateById(taskWrk);
 
-                            } else {
-                                log.error("涓嬪彂杈撻�佺嚎浠诲姟澶辫触锛歵askWrk:" + JSON.toJSONString(taskWrk));
+                            // 鍒ゆ柇宸ヤ綔妗f潯浠�
+                            if (taskWrk.getIoType() < 100 || taskWrk.getTargetPoint() == null || taskWrk.getStartPoint() == null) {
+                                continue;
+                            }
+                            // 鍒ゆ柇鍚婅溅鏄惁瀹為檯宸插畬鎴愶紝涓旂數鑴戠姸鎬佸湪move涓紝浠ュ鐢佃剳杩涜鏇存柊宸ヤ綔妗�
+                            CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, taskWrk.getCrnNo());
+                            CrnProtocol crnProtocol = crnThread.getCrnProtocol();
+                            if (crnProtocol.statusType == CrnStatusType.FETCHING || crnProtocol.statusType == CrnStatusType.PUTTING) {
+                                // 绉诲姩涓�
+                                continue;
+                            }
+
+                            //  鍒ゆ柇鍫嗗灈鏈虹姸鎬佺瓑寰呯‘璁�
+                            if (crnProtocol.modeType == CrnModeType.AUTO && crnProtocol.getTaskNo().equals(taskWrk.getWrkNo().shortValue()) && crnProtocol.statusType == CrnStatusType.WAITING && crnProtocol.forkPosType == CrnForkPosType.HOME) {
+
+                                // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
+
+                                log.info("涓嬪彂杈撻�佺嚎浠诲姟锛歵askWrk:" + JSON.toJSONString(taskWrk));
+//                            R r = siteController.siteDetlUpdate(Integer.valueOf(taskWrk.getTargetPoint()), taskWrk.getWrkNo().shortValue(), (short) 0, "Y", false, false);
+                                staProtocol.setWorkNo(taskWrk.getWrkNo().shortValue());
+                                staProtocol.setStaNo((short) 11);
+                                boolean offer = false;
+                                try {
+                                    offer = MessageQueue.offer(SlaveType.Devp, 1, new Task(2, staProtocol));
+                                } catch (Exception e) {
+                                    log.error("涓嬪彂杈撻�佺嚎浠诲姟澶辫触锛氬紓甯�:" + e);
+                                    log.error("涓嬪彂杈撻�佺嚎浠诲姟澶辫触锛氬紓甯�:offer:" + offer);
+                                }
+//                            JSONObject jsonObject = JSON.parseObject(JSON.toJSONString(r));
+                                if (offer) {
+                                    log.info("涓嬪彂杈撻�佺嚎浠诲姟鎴愬姛锛歵askWrk:" + JSON.toJSONString(taskWrk));
+                                    taskWrk.setStatus(5);
+                                    taskWrk.setWrkSts(14);
+                                    taskWrkService.updateById(taskWrk);
+                                    // 澶嶄綅鍫嗗灈
+                                    crnThread.setResetFlag(true);
+                                } else {
+                                    log.error("涓嬪彂杈撻�佺嚎浠诲姟澶辫触锛歵askWrk:" + JSON.toJSONString(taskWrk));
 //                                log.error("涓嬪彂杈撻�佺嚎浠诲姟澶辫触锛氬紓甯镐俊鎭�:"+JSON.toJSONString(r));
+                                }
+
                             }
                         }
                     } catch (Exception e) {
@@ -660,8 +598,7 @@
 
 
             // 鍙湁褰撳爢鍨涙満绌洪棽 骞朵笖 鏃犱换鍔℃椂鎵嶇户缁墽琛�
-            if (crnProtocol.getStatusType() == CrnStatusType.IDLE && crnProtocol.getTaskNo() == 0 && crnProtocol.getModeType() == CrnModeType.AUTO
-                    && crnProtocol.getLoaded() == 0 && crnProtocol.getForkPos() == 0) {
+            if (crnProtocol.getStatusType() == CrnStatusType.IDLE && crnProtocol.getTaskNo() == 0 && crnProtocol.getModeType() == CrnModeType.AUTO && crnProtocol.getLoaded() == 0 && crnProtocol.getForkPos() == 0) {
                 // 濡傛灉鏈�杩戜竴娆℃槸鍏ュ簱妯″紡
                 if (crnProtocol.getLastIo().equals("I")) {
                     if (basCrnp.getInEnable().equals("Y")) {
@@ -693,7 +630,7 @@
     /**
      * 鍏ュ簱  ===>>  鍫嗗灈鏈虹珯鍒板簱浣�
      */
-    public void crnStnToLoc(CrnSlave slave, CrnProtocol crnProtocol) throws IOException {
+    public synchronized void crnStnToLoc(CrnSlave slave, CrnProtocol crnProtocol) throws IOException {
         for (CrnSlave.CrnStn crnStn : slave.getCrnInStn()) {
             List<StaDesc> staDescs = staDescMapper.selectList(new EntityWrapper<StaDesc>().eq("crn_no", slave.getId()).eq("crn_stn", crnStn.getStaNo()));
             for (StaDesc staDesc : staDescs) {
@@ -712,8 +649,7 @@
                     log.error("鍏ュ簱 ===>> 鍫嗗灈鏈虹珯鐐瑰湪鏁版嵁搴撲笉瀛樺湪, 绔欑偣缂栧彿={}", crnStn.getStaNo());
                     continue;
                 }
-                if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() > 0 && staProtocol.isInEnable()
-                        && staDetl.getCanining() != null && staDetl.getCanining().equals("Y")) {
+                if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() > 0 && staProtocol.isInEnable() && staDetl.getCanining() != null && staDetl.getCanining().equals("Y")) {
                     flag = true;
                 }
                 if (!flag) {
@@ -747,18 +683,18 @@
 
                 // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
                 CrnCommand crnCommand = new CrnCommand();
-                crnCommand.setCrnNo(staDesc.getCrnNo()); // 鍫嗗灈鏈虹紪鍙�
+                crnCommand.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙�
                 crnCommand.setTaskNo(taskWrk.getWrkNo().shortValue()); // 宸ヤ綔鍙�
                 crnCommand.setAckFinish((short) 0);  // 浠诲姟瀹屾垚纭浣�
                 crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡:  搴撲綅绉昏浆
-                crnCommand.setSourcePosX(crnStn.getRow().shortValue());     // 婧愬簱浣嶅垪
-                crnCommand.setSourcePosY(crnStn.getBay().shortValue());     // 婧愬簱浣嶅眰
-                crnCommand.setSourcePosZ(crnStn.getLev().shortValue());     // 婧愬簱浣嶆帓
+                crnCommand.setSourcePosX(crnStn.getRow().shortValue());     // 婧愬簱浣嶆帓
+                crnCommand.setSourcePosY(crnStn.getBay().shortValue());     // 婧愬簱浣嶅垪
+                crnCommand.setSourcePosZ(crnStn.getLev().shortValue());     // 婧愬簱浣嶅眰
                 crnCommand.setDestinationPosX(Utils.getRowShort(taskWrk.getTargetPoint()));     // 鐩爣搴撲綅鍒�
                 crnCommand.setDestinationPosY(Utils.getBayShort(taskWrk.getTargetPoint()));     // 鐩爣搴撲綅灞�
                 crnCommand.setDestinationPosZ(Utils.getLevShort(taskWrk.getTargetPoint()));     // 鐩爣搴撲綅鎺�
                 crnCommand.setCommand((short) 1);
-                log.info("鍫嗗灈鏈哄叆搴撲换鍔′笅鍙�={}",crnCommand);
+                log.info("鍫嗗灈鏈哄叆搴撲换鍔′笅鍙�={}", crnCommand);
                 if (!CommandUtils.offer(SlaveType.Crn, taskWrk.getCrnNo(), new Task(2, crnCommand), false)) {
                     log.error("鍫嗗灈鏈哄懡浠ょ敓鎴愬け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", taskWrk.getCrnNo(), JSON.toJSON(crnCommand));
                     throw new CoolException("鍫嗗灈鏈哄懡浠ょ敓鎴愬け璐�");
@@ -778,7 +714,7 @@
      * 鍑哄簱  ===>>  搴撲綅鍒板爢鍨涙満绔�
      * 2022-06-09 TQS淇敼锛屾煡璇㈠伐浣滄。LIST锛岄亶鍘嗕笅鍙戯紝闃叉绗竴涓换鍔″牭濉炲嚭搴�
      */
-    public void locToCrnStn(CrnSlave slave, CrnProtocol crnProtocol) {
+    public synchronized void locToCrnStn(CrnSlave slave, CrnProtocol crnProtocol) {
         List<TaskWrk> taskWrksInitial = taskWrkMapper.selectPakOut(slave.getId(), null);
         if (taskWrksInitial.size() == 0) {
             return;
@@ -798,24 +734,18 @@
                         continue;
                     }
 
-                    LocMast locMast=locMastService.selectByLocNo(taskWrk.getStartPoint());
+                    LocMast locMast = locMastService.selectByLocNo(taskWrk.getStartPoint());
                     //鍒ゆ柇鍏跺簱浣嶆槸鍚︿负娣卞簱浣嶏紝濡傛灉涓烘繁搴撲綅鎵惧叾娴呭簱浣嶆槸閮芥湁璐�
-                    if(locMast.getRow1()==1||locMast.getRow1()==5){
-                        LocMast locMast1=locMastService.selectOne(new EntityWrapper<LocMast>()
-                                .eq("row1", (locMast.getRow1()+1))
-                                .eq("bay1",locMast.getBay1())
-                                .eq("lev1",locMast.getLev1()).eq("loc_sts","F"));
-                        if (!Cools.isEmpty(locMast1)){
-                            log.info(locMast.getLocNo()+"鍑烘繁搴撲綅锛屾祬搴撲綅鏈夎揣");
+                    if (locMast.getRow1() == 1 || locMast.getRow1() == 5) {
+                        LocMast locMast1 = locMastService.selectOne(new EntityWrapper<LocMast>().eq("row1", (locMast.getRow1() + 1)).eq("bay1", locMast.getBay1()).eq("lev1", locMast.getLev1()).eq("loc_sts", "F"));
+                        if (!Cools.isEmpty(locMast1)) {
+                            log.info(locMast.getLocNo() + "鍑烘繁搴撲綅锛屾祬搴撲綅鏈夎揣");
                             continue;
                         }
-                    }else if(locMast.getRow1()==4||locMast.getRow1()==8){
-                        LocMast locMast1=locMastService.selectOne(new EntityWrapper<LocMast>()
-                                .eq("row1", (locMast.getRow1()-1))
-                                .eq("bay1",locMast.getBay1())
-                                .eq("lev1",locMast.getLev1()).eq("loc_sts","F"));
-                        if (!Cools.isEmpty(locMast1)){
-                            log.info(locMast.getLocNo()+"鍑烘繁搴撲綅锛屾祬搴撲綅鏈夎揣");
+                    } else if (locMast.getRow1() == 4 || locMast.getRow1() == 8) {
+                        LocMast locMast1 = locMastService.selectOne(new EntityWrapper<LocMast>().eq("row1", (locMast.getRow1() - 1)).eq("bay1", locMast.getBay1()).eq("lev1", locMast.getLev1()).eq("loc_sts", "F"));
+                        if (!Cools.isEmpty(locMast1)) {
+                            log.info(locMast.getLocNo() + "鍑烘繁搴撲綅锛屾祬搴撲綅鏈夎揣");
                             continue;
                         }
                     }
@@ -837,8 +767,7 @@
                     }
 
                     // 鍒ゆ柇鍫嗗灈鏈哄嚭搴撶珯鐘舵��
-                    if (staProtocol.isAutoing() && !staProtocol.isLoading() && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y")
-                            && staProtocol.getWorkNo() == 0 && staProtocol.isOutEnable()) {
+                    if (staProtocol.isAutoing() && !staProtocol.isLoading() && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y") && staProtocol.getWorkNo() == 0 && staProtocol.isOutEnable()) {
                         // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
 
                         // 鍫嗗灈鏈烘帶鍒惰繃婊�
@@ -854,7 +783,7 @@
                         command.setCrnNo(taskWrk.getCrnNo()); // 鍫嗗灈鏈虹紪鍙�
                         command.setTaskNo(taskWrk.getWrkNo().shortValue()); // 宸ヤ綔鍙�
                         command.setAckFinish((short) 0);  // 浠诲姟瀹屾垚纭浣�
-                        command.setTaskMode(CrnTaskModeType.PAKIN); // 浠诲姟妯″紡
+                        command.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡:  搴撲綅绉昏浆
                         command.setSourcePosX(Utils.getRowShort(taskWrk.getStartPoint()));     // 婧愬簱浣嶆帓
                         command.setSourcePosY(Utils.getBayShort(taskWrk.getStartPoint()));     // 婧愬簱浣嶅垪
                         command.setSourcePosZ(Utils.getLevShort(taskWrk.getStartPoint()));     // 婧愬簱浣嶅眰
@@ -863,32 +792,20 @@
                         command.setDestinationPosZ(crnStn.getLev().shortValue());     // 鐩爣搴撲綅灞�
                         command.setCommand((short) 1);
 
-                        if(Cools.isEmpty(taskWrk.getMarkStart())||taskWrk.getMarkStart()==0){
+                        if (Cools.isEmpty(taskWrk.getMarkStart()) || taskWrk.getMarkStart() == 0) {
                             HashMap<String, Object> hashMap = new HashMap<>();
-                            hashMap.put("TaskNo",taskWrk.getTaskNo());
+                            hashMap.put("TaskNo", taskWrk.getTaskNo());
                             String response = "";
                             try {
                                 //寮�濮嬩笂鎶�,鍑哄簱浠诲姟寮�濮嬫椂锛學CS鍥炶皟WMS
-                                response = new HttpHandler.Builder()
-                                        .setUri(wmsUrl)
-                                        .setPath(taskStatusFeedbackPath)
-                                        .setJson(JSON.toJSONString(hashMap))
-                                        .build()
-                                        .doPost();
+                                response = new HttpHandler.Builder().setUri(wmsUrl).setPath(taskStatusFeedbackPath).setJson(JSON.toJSONString(hashMap)).build().doPost();
                                 JSONObject jsonObject = JSON.parseObject(response);
                                 Boolean bool = false;
-                                if(jsonObject.get("ReturnStatus").equals(0)){
+                                if (jsonObject.get("ReturnStatus").equals(0)) {
                                     bool = true;
                                     taskWrk.setMarkStart(1);
                                 }
-                                apiLogService.save("wcs寮�濮嬩换鍔′笂鎶ms"
-                                        , wmsUrl + TaskExecCallback
-                                        , null
-                                        , "127.0.0.1"
-                                        , JSON.toJSONString(hashMap)
-                                        , response
-                                        , bool
-                                );
+                                apiLogService.save("wcs寮�濮嬩换鍔′笂鎶ms", wmsUrl + TaskExecCallback, null, "127.0.0.1", JSON.toJSONString(hashMap), response, bool);
                             } catch (Exception e) {
                             }
                         }
@@ -950,11 +867,7 @@
     public void locToLoc(CrnSlave slave, CrnProtocol crnProtocol) {
         for (CrnSlave.CrnStn crnStn : slave.getCrnOutStn()) {
             // 鑾峰彇宸ヤ綔鐘舵�佷负11锛堢敓鎴愬嚭搴揑D锛夌殑绉诲簱宸ヤ綔妗�
-            List<TaskWrk> taskWrks = taskWrkMapper.selectList(new EntityWrapper<TaskWrk>()
-                    .eq("crn_no", slave.getId())
-                    .eq("wrk_sts", 11)
-                    .eq("io_type", 3)
-                    .orderBy("io_pri", false));
+            List<TaskWrk> taskWrks = taskWrkMapper.selectList(new EntityWrapper<TaskWrk>().eq("crn_no", slave.getId()).eq("wrk_sts", 11).eq("io_type", 3).orderBy("io_pri", false));
             for (TaskWrk taskWrk : taskWrks) {
 
                 // 鍙屾繁搴撲綅涓旀祬搴撲綅鏈夎揣锛屽垯闇�鍏堝娴呭簱浣嶈繘琛屽簱浣嶇Щ杞�
@@ -1017,20 +930,9 @@
                         String response;
                         response = new HttpHandler.Builder()
                                 // .setHeaders(headParam)
-                                .setUri(wmsUrl)
-                                .setPath(taskStatusFeedbackPath)
-                                .setJson(JSON.toJSONString(headParam))
-                                .build()
-                                .doPost();
+                                .setUri(wmsUrl).setPath(taskStatusFeedbackPath).setJson(JSON.toJSONString(headParam)).build().doPost();
                         JSONObject jsonObject = JSON.parseObject(response);
-                        apiLogService.save("wcs娲惧彂绉诲簱浠诲姟涓婃姤wms"
-                                , wmsUrl + taskStatusFeedbackPath
-                                , null
-                                , "127.0.0.1"
-                                , JSON.toJSONString(headParam)
-                                , response
-                                , true
-                        );
+                        apiLogService.save("wcs娲惧彂绉诲簱浠诲姟涓婃姤wms", wmsUrl + taskStatusFeedbackPath, null, "127.0.0.1", JSON.toJSONString(headParam), response, true);
                     } catch (Exception e) {
                         log.error("wcs娲惧彂绉诲簱搴撲换鍔′笂鎶ms澶辫触", taskWrk);
 //                        throw new CoolException("wcs娲惧彂绉诲簱搴撲换鍔′笂鎶ms澶辫触");
@@ -1102,10 +1004,8 @@
             if (crnProtocol == null) {
                 continue;
             }
-
             //  鐘舵�侊細绛夊緟纭 骞朵笖  浠诲姟瀹屾垚浣� = 1
-            if (crnProtocol.getTaskFinish() == 0 && crnProtocol.statusType == CrnStatusType.HANDLING_COMPLETED && crnProtocol.getTaskNo() != 0) {
-                //鑾峰彇鍏ュ簱寰呯‘璁ゅ伐浣滄。
+            if (crnProtocol.statusType == CrnStatusType.WAITING && crnProtocol.getTaskNo() != 0) {                //鑾峰彇鍏ュ簱寰呯‘璁ゅ伐浣滄。
                 TaskWrk taskWrk = taskWrkMapper.selectCrnNoInWorking(crn.getId(), crnProtocol.getTaskNo().intValue());
                 if (Cools.isEmpty(taskWrk) && crnProtocol.getTaskNo() != 999) {
                     log.error("鍫嗗灈鏈哄浜庣瓑寰呯‘璁や笖浠诲姟瀹屾垚鐘舵�侊紝浣嗘湭鎵惧埌宸ヤ綔妗c�傚爢鍨涙満鍙�={}锛屽伐浣滃彿={}", crn.getId(), crnProtocol.getTaskNo());
@@ -1116,7 +1016,7 @@
                 crnOperatorParam.setCrnNo(crn.getId());
                 R r = crnController.crnTaskComplete(crnOperatorParam);
                 Thread.sleep(1000);
-                if(!r.get("code").equals(200)){
+                if (!r.get("code").equals(200)) {
                     return;
                 }
                 if (!Cools.isEmpty(taskWrk)) {
@@ -1168,120 +1068,120 @@
     /**
      * 鍫嗗灈鏈哄紓甯镐俊鎭褰�
      */
-    public void recCrnErr() {
-        Date now = new Date();
-        for (CrnSlave crn : slaveProperties.getCrn()) {
-            // 鑾峰彇鍫嗗灈鏈轰俊鎭�
-            CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId());
-            CrnProtocol crnProtocol = crnThread.getCrnProtocol();
-            if (crnProtocol == null) {
-                continue;
-            }
-            if (false) {
-//            if (crnProtocol.getModeType() != CrnModeType.STOP) {
-                // 鏈変换鍔�
-                if (crnProtocol.getTaskNo() != 0) {
-                    BasErrLog latest = basErrLogService.findLatestByTaskNo(crn.getId(), crnProtocol.getTaskNo().intValue());
-                    // 鏈夊紓甯�
-                    if (latest == null) {
-                        if (crnProtocol.getAlarm() != null && crnProtocol.getAlarm() > 0) {
-                            WrkMast wrkMast = wrkMastMapper.selectById(crnProtocol.getTaskNo());
-                            if (wrkMast == null) {
-                                continue;
-                            }
-                            BasCrnError crnError = basCrnErrorMapper.selectById(crnProtocol.getAlarm());
-                            String errName = crnError == null ? String.valueOf(crnProtocol.getAlarm()) : crnError.getErrName();
-                            BasErrLog basErrLog = new BasErrLog(
-                                    null,    // 缂栧彿
-                                    wrkMast.getWrkNo(),    // 宸ヤ綔鍙�
-                                    now,    // 鍙戠敓鏃堕棿
-                                    null,    // 缁撴潫鏃堕棿
-                                    wrkMast.getWrkSts(),    // 宸ヤ綔鐘舵��
-                                    wrkMast.getIoType(),    // 鍏ュ嚭搴撶被鍨�
-                                    crn.getId(),    // 鍫嗗灈鏈�
-                                    null,    // plc
-                                    wrkMast.getLocNo(),    // 鐩爣搴撲綅
-                                    wrkMast.getStaNo(),    // 鐩爣绔�
-                                    wrkMast.getSourceStaNo(),    // 婧愮珯
-                                    wrkMast.getSourceLocNo(),    // 婧愬簱浣�
-                                    wrkMast.getBarcode(),    // 鏉$爜
-                                    (int) crnProtocol.getAlarm1(),    // 寮傚父鐮�
-                                    errName,    // 寮傚父
-                                    1,    // 寮傚父鎯呭喌
-                                    now,    // 娣诲姞鏃堕棿
-                                    null,    // 娣诲姞浜哄憳
-                                    now,    // 淇敼鏃堕棿
-                                    null,    // 淇敼浜哄憳
-                                    "浠诲姟涓紓甯�"    // 澶囨敞
-                            );
-                            if (!basErrLogService.insert(basErrLog)) {
-                                log.error("鍫嗗灈鏈簆lc寮傚父璁板綍澶辫触 ===>> [id:{}] [error:{}]", crn.getId(), errName);
-                            }
-                        }
-                    } else {
-                        // 寮傚父淇
-                        if (crnProtocol.getAlarm1() == null || crnProtocol.getAlarm1() == 0) {
-                            latest.setEndTime(now);
-                            latest.setUpdateTime(now);
-                            latest.setStatus(2);
-                            if (!basErrLogService.updateById(latest)) {
-                                log.error("鍫嗗灈鏈簆lc寮傚父璁板綍淇澶辫触 ===>> [id:{}] [errLogId:{}]", crn.getId(), latest.getId());
-                            }
-                        }
-                    }
-                    // 鏃犱换鍔�
-                } else {
-                    BasErrLog latest = basErrLogService.findLatest(crn.getId());
-                    // 鏈夊紓甯�
-                    if (crnProtocol.getAlarm1() != null && crnProtocol.getAlarm() > 0) {
-                        // 璁板綍鏂板紓甯�
-                        if (latest == null || (latest.getErrCode() != crnProtocol.getAlarm().intValue())) {
-                            BasCrnError crnError = basCrnErrorMapper.selectById(crnProtocol.getAlarm());
-                            String errName = crnError == null ? String.valueOf(crnProtocol.getAlarm()) : crnError.getErrName();
-                            BasErrLog basErrLog = new BasErrLog(
-                                    null,    // 缂栧彿
-                                    null,    // 宸ヤ綔鍙�
-                                    now,    // 鍙戠敓鏃堕棿
-                                    null,    // 缁撴潫鏃堕棿
-                                    null,    // 宸ヤ綔鐘舵��
-                                    null,    // 鍏ュ嚭搴撶被鍨�
-                                    crn.getId(),    // 鍫嗗灈鏈�
-                                    null,    // plc
-                                    null,    // 鐩爣搴撲綅
-                                    null,    // 鐩爣绔�
-                                    null,    // 婧愮珯
-                                    null,    // 婧愬簱浣�
-                                    null,    // 鏉$爜
-                                    (int) crnProtocol.getAlarm1(),    // 寮傚父鐮�
-                                    errName,    // 寮傚父
-                                    1,    // 寮傚父鎯呭喌
-                                    now,    // 娣诲姞鏃堕棿
-                                    null,    // 娣诲姞浜哄憳
-                                    now,    // 淇敼鏃堕棿
-                                    null,    // 淇敼浜哄憳
-                                    "鏃犱换鍔″紓甯�"    // 澶囨敞
-                            );
-                            if (!basErrLogService.insert(basErrLog)) {
-                                log.error("鍫嗗灈鏈簆lc寮傚父璁板綍澶辫触 ===>> [id:{}] [error:{}]", crn.getId(), errName);
-                            }
-                        }
-                        // 鏃犲紓甯�
-                    } else {
-                        // 寮傚父淇
-                        if (latest != null && latest.getStatus() == 1) {
-                            latest.setEndTime(now);
-                            latest.setUpdateTime(now);
-                            latest.setStatus(2);
-                            if (!basErrLogService.updateById(latest)) {
-                                log.error("鍫嗗灈鏈簆lc寮傚父璁板綍淇澶辫触 ===>> [id:{}] [errLogId:{}]", crn.getId(), latest.getId());
-                            }
-                        }
-                    }
-                }
-            }
-
-        }
-    }
+//    public void recCrnErr() {
+//        Date now = new Date();
+//        for (CrnSlave crn : slaveProperties.getCrn()) {
+//            // 鑾峰彇鍫嗗灈鏈轰俊鎭�
+//            CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId());
+//            CrnProtocol crnProtocol = crnThread.getCrnProtocol();
+//            if (crnProtocol == null) {
+//                continue;
+//            }
+//            if (false) {
+////            if (crnProtocol.getModeType() != CrnModeType.STOP) {
+//                // 鏈変换鍔�
+//                if (crnProtocol.getTaskNo() != 0) {
+//                    BasErrLog latest = basErrLogService.findLatestByTaskNo(crn.getId(), crnProtocol.getTaskNo().intValue());
+//                    // 鏈夊紓甯�
+//                    if (latest == null) {
+//                        if (crnProtocol.getAlarm() != null && crnProtocol.getAlarm() > 0) {
+//                            WrkMast wrkMast = wrkMastMapper.selectById(crnProtocol.getTaskNo());
+//                            if (wrkMast == null) {
+//                                continue;
+//                            }
+//                            BasCrnError crnError = basCrnErrorMapper.selectById(crnProtocol.getAlarm());
+//                            String errName = crnError == null ? String.valueOf(crnProtocol.getAlarm()) : crnError.getErrName();
+//                            BasErrLog basErrLog = new BasErrLog(
+//                                    null,    // 缂栧彿
+//                                    wrkMast.getWrkNo(),    // 宸ヤ綔鍙�
+//                                    now,    // 鍙戠敓鏃堕棿
+//                                    null,    // 缁撴潫鏃堕棿
+//                                    wrkMast.getWrkSts(),    // 宸ヤ綔鐘舵��
+//                                    wrkMast.getIoType(),    // 鍏ュ嚭搴撶被鍨�
+//                                    crn.getId(),    // 鍫嗗灈鏈�
+//                                    null,    // plc
+//                                    wrkMast.getLocNo(),    // 鐩爣搴撲綅
+//                                    wrkMast.getStaNo(),    // 鐩爣绔�
+//                                    wrkMast.getSourceStaNo(),    // 婧愮珯
+//                                    wrkMast.getSourceLocNo(),    // 婧愬簱浣�
+//                                    wrkMast.getBarcode(),    // 鏉$爜
+//                                    (int) crnProtocol.getAlarm1(),    // 寮傚父鐮�
+//                                    errName,    // 寮傚父
+//                                    1,    // 寮傚父鎯呭喌
+//                                    now,    // 娣诲姞鏃堕棿
+//                                    null,    // 娣诲姞浜哄憳
+//                                    now,    // 淇敼鏃堕棿
+//                                    null,    // 淇敼浜哄憳
+//                                    "浠诲姟涓紓甯�"    // 澶囨敞
+//                            );
+//                            if (!basErrLogService.insert(basErrLog)) {
+//                                log.error("鍫嗗灈鏈簆lc寮傚父璁板綍澶辫触 ===>> [id:{}] [error:{}]", crn.getId(), errName);
+//                            }
+//                        }
+//                    } else {
+//                        // 寮傚父淇
+//                        if (crnProtocol.getAlarm1() == null || crnProtocol.getAlarm1() == 0) {
+//                            latest.setEndTime(now);
+//                            latest.setUpdateTime(now);
+//                            latest.setStatus(2);
+//                            if (!basErrLogService.updateById(latest)) {
+//                                log.error("鍫嗗灈鏈簆lc寮傚父璁板綍淇澶辫触 ===>> [id:{}] [errLogId:{}]", crn.getId(), latest.getId());
+//                            }
+//                        }
+//                    }
+//                    // 鏃犱换鍔�
+//                } else {
+//                    BasErrLog latest = basErrLogService.findLatest(crn.getId());
+//                    // 鏈夊紓甯�
+//                    if (crnProtocol.getAlarm1() != null && crnProtocol.getAlarm() > 0) {
+//                        // 璁板綍鏂板紓甯�
+//                        if (latest == null || (latest.getErrCode() != crnProtocol.getAlarm().intValue())) {
+//                            BasCrnError crnError = basCrnErrorMapper.selectById(crnProtocol.getAlarm());
+//                            String errName = crnError == null ? String.valueOf(crnProtocol.getAlarm()) : crnError.getErrName();
+//                            BasErrLog basErrLog = new BasErrLog(
+//                                    null,    // 缂栧彿
+//                                    null,    // 宸ヤ綔鍙�
+//                                    now,    // 鍙戠敓鏃堕棿
+//                                    null,    // 缁撴潫鏃堕棿
+//                                    null,    // 宸ヤ綔鐘舵��
+//                                    null,    // 鍏ュ嚭搴撶被鍨�
+//                                    crn.getId(),    // 鍫嗗灈鏈�
+//                                    null,    // plc
+//                                    null,    // 鐩爣搴撲綅
+//                                    null,    // 鐩爣绔�
+//                                    null,    // 婧愮珯
+//                                    null,    // 婧愬簱浣�
+//                                    null,    // 鏉$爜
+//                                    (int) crnProtocol.getAlarm1(),    // 寮傚父鐮�
+//                                    errName,    // 寮傚父
+//                                    1,    // 寮傚父鎯呭喌
+//                                    now,    // 娣诲姞鏃堕棿
+//                                    null,    // 娣诲姞浜哄憳
+//                                    now,    // 淇敼鏃堕棿
+//                                    null,    // 淇敼浜哄憳
+//                                    "鏃犱换鍔″紓甯�"    // 澶囨敞
+//                            );
+//                            if (!basErrLogService.insert(basErrLog)) {
+//                                log.error("鍫嗗灈鏈簆lc寮傚父璁板綍澶辫触 ===>> [id:{}] [error:{}]", crn.getId(), errName);
+//                            }
+//                        }
+//                        // 鏃犲紓甯�
+//                    } else {
+//                        // 寮傚父淇
+//                        if (latest != null && latest.getStatus() == 1) {
+//                            latest.setEndTime(now);
+//                            latest.setUpdateTime(now);
+//                            latest.setStatus(2);
+//                            if (!basErrLogService.updateById(latest)) {
+//                                log.error("鍫嗗灈鏈簆lc寮傚父璁板綍淇澶辫触 ===>> [id:{}] [errLogId:{}]", crn.getId(), latest.getId());
+//                            }
+//                        }
+//                    }
+//                }
+//            }
+//
+//        }
+//    }
 
     //鑷姩娲惧彂浠诲姟
     public void autoDistribute() {
@@ -1456,24 +1356,11 @@
         taskOverToWms.setTaskStatus("executing"); //浠诲姟鐘舵��
         String response = null;
         try {
-            response = new HttpHandler.Builder()
-                    .setHeaders(map)
-                    .setUri(wmsUrl)
-                    .setPath("wcsManager/wcsInterface/taskStatusFeedback")
-                    .setJson(JSON.toJSONString(taskOverToWms))
-                    .build()
-                    .doPost();
+            response = new HttpHandler.Builder().setHeaders(map).setUri(wmsUrl).setPath("wcsManager/wcsInterface/taskStatusFeedback").setJson(JSON.toJSONString(taskOverToWms)).build().doPost();
         } catch (Exception e) {
             log.error("鍫嗗灈鏈轰换鍔″畬鎴愶紝璇锋眰wms浠诲姟瀹屾垚鎺ュ彛澶辫触");
         }
-        apiLogService.save("鍫嗗灈鏈哄紑濮嬭繍琛�"
-                , wmsUrl + "wcsManager/wcsInterface/taskStatusFeedback"
-                , null
-                , "127.0.0.1"
-                , JSON.toJSONString(taskOverToWms)
-                , response
-                , true
-        );
+        apiLogService.save("鍫嗗灈鏈哄紑濮嬭繍琛�", wmsUrl + "wcsManager/wcsInterface/taskStatusFeedback", null, "127.0.0.1", JSON.toJSONString(taskOverToWms), response, true);
         return response;
     }
 
diff --git a/src/main/java/com/zy/common/utils/News.java b/src/main/java/com/zy/common/utils/News.java
new file mode 100644
index 0000000..df02171
--- /dev/null
+++ b/src/main/java/com/zy/common/utils/News.java
@@ -0,0 +1,183 @@
+package com.zy.common.utils;
+
+import lombok.extern.slf4j.Slf4j;
+
+import java.lang.reflect.Array;
+import java.text.SimpleDateFormat;
+import java.util.*;
+
+/**
+ * news stories for zoneyung
+ * Created by vincent on 2022/12/22
+ */
+@Slf4j
+public class News {
+
+    public static void main(String[] args) {
+        News.info("info{}", 1);
+        News.warn("warn{}", 2);
+        News.error("error{}", 3);
+        System.out.println(News.print());
+    }
+
+    interface NewsSupport<T> { boolean execute(T t); }
+
+    private static final NewsQueue<NewsDomain> NEWS_QUEUE = new NewsQueue<>(NewsDomain.class, 1024);
+
+    @SuppressWarnings({"unchecked"})
+    static class NewsQueue<T> {
+
+        private final transient Class<T> cls;
+        private final T[] arr;
+        private final int capacity;
+        private int head;
+        private int tail;
+
+        { this.head = 0; this.tail = 0; }
+
+        public NewsQueue(Class<T> cls, int capacity) {
+            this.cls = cls;
+            this.arr = (T[]) Array.newInstance(cls, capacity);
+            this.capacity = capacity;
+        }
+
+        public synchronized boolean offer(T t) {
+            if (this.tail == this.capacity) {
+                this.peek();
+            }
+            this.reform();
+            this.arr[this.tail] = t;
+            this.tail ++;
+            return true;
+        }
+
+        public synchronized boolean put(T t) {
+            if (this.tail == this.capacity) {
+                return false;
+            } else {
+                this.reform();
+            }
+            this.arr[this.tail] = t;
+            this.tail ++;
+            return true;
+        }
+
+        public synchronized T peek() {
+            if (this.head == this.tail) {
+                return null;
+            }
+            T t = this.arr[this.head];
+            this.head ++;
+            this.reform();
+            return t;
+        }
+
+        private void reform() {
+            for (int i = this.head; i < this.tail; i++) {
+                this.arr[i-this.head] = this.arr[i];
+            }
+            this.tail -= this.head;
+            this.head = 0;
+        }
+
+        public synchronized int size() {
+            return this.tail - this.head;
+        }
+
+        public synchronized List<T> data() {
+            T[] ts = (T[]) Array.newInstance(this.cls, size());
+            if (this.tail - this.head >= 0) {
+                System.arraycopy(this.arr, this.head, ts, 0, this.tail - this.head);
+            }
+            return Arrays.asList(ts);
+        }
+
+    }
+
+    public static void info(String format, Object... arguments) {
+        log.info(format, arguments);
+        offer(NewsLevel.INFO, format, arguments);
+    }
+
+    public static void warn(String format, Object... arguments) {
+        log.warn(format, arguments);
+        offer(NewsLevel.WARN, format, arguments);
+    }
+
+    public static void error(String format, Object... arguments) {
+        log.error(format, arguments);
+        offer(NewsLevel.ERROR, format, arguments);
+    }
+
+    public static String printStr() {
+        StringBuilder sb = new StringBuilder("[");
+        List<NewsDomain> domains = NEWS_QUEUE.data();
+        for (int i = 0; i < domains.size(); i++) {
+            NewsDomain domain = domains.get(i);
+            sb.append("{");
+            sb.append("\"l\":").append(domain.level.idx).append(",");
+            sb.append("\"v\":\"").append(domain.content).append("\"").append(",");
+            sb.append("\"t\":\"").append(domain.date).append("\"");
+            sb.append("}");
+            if (i < domains.size() - 1) {
+                sb.append(",");
+            }
+        }
+        sb.append("]");
+        return sb.toString();
+    }
+
+    public static List<Map<String, Object>> print() {
+        List<Map<String, Object>> res = new ArrayList<>();
+        for (NewsDomain datum : NEWS_QUEUE.data()) {
+            Map<String, Object> map = new HashMap<>();
+            map.put("l", datum.level.idx);
+            map.put("v", datum.content);
+            map.put("t", datum.date);
+            res.add(map);
+        }
+        return res;
+    }
+
+    private static boolean offer(NewsLevel level, String msg, Object[] args) {
+        return NEWS_QUEUE.offer(new NewsDomain(level, replace(msg, args), (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")).format(new Date())));
+    }
+
+    private static String replace(String str, Object[] objs){
+        if (null == objs || objs.length == 0 || null == str || "".equals(str.trim())) {
+            return str;
+        } else {
+            StringBuilder sb = new StringBuilder(str);
+            for (Object obj : objs) {
+                int idx = sb.indexOf("{}");
+                if (idx == -1) { break; }
+                sb.replace(idx, idx + 2, String.valueOf(obj));
+            }
+            return sb.toString();
+        }
+    }
+
+    static class NewsDomain {
+        public NewsLevel level;
+        public String content;
+        public String date;
+
+        public NewsDomain(NewsLevel level, String content, String date) {
+            this.level = level;
+            this.content = content;
+            this.date = date;
+        }
+    }
+
+    enum NewsLevel {
+        INFO(1),
+        WARN(2),
+        ERROR(3),
+        ;
+        public int idx;
+        NewsLevel(int idx) {
+            this.idx = idx;
+        }
+    }
+
+}
diff --git a/src/main/java/com/zy/core/MainProcess.java b/src/main/java/com/zy/core/MainProcess.java
index 91070ff..6e54ad8 100644
--- a/src/main/java/com/zy/core/MainProcess.java
+++ b/src/main/java/com/zy/core/MainProcess.java
@@ -55,7 +55,7 @@
                     mainService.storeFinished();
 
                     // 鍫嗗灈鏈哄紓甯镐俊鎭褰�
-                    mainService.recCrnErr();
+//                    mainService.recCrnErr();
                     // 鍏ュ簱  ===>> 绌烘爤鏉垮垵濮嬪寲鍏ュ簱,鍙夎溅鍏ュ簱绔欐斁璐�
 //                    mainService.storeEmptyPlt();
 
diff --git a/src/main/java/com/zy/core/ServerBootstrap.java b/src/main/java/com/zy/core/ServerBootstrap.java
index a97d9a0..d7e9ccd 100644
--- a/src/main/java/com/zy/core/ServerBootstrap.java
+++ b/src/main/java/com/zy/core/ServerBootstrap.java
@@ -1,5 +1,6 @@
 package com.zy.core;
 
+import com.zy.common.utils.News;
 import com.zy.core.cache.MessageQueue;
 import com.zy.core.cache.SlaveConnection;
 import com.zy.core.enums.SlaveType;
@@ -75,39 +76,39 @@
 
     private void initThread(){
         // 鍒濆鍖栧爢鍨涙満绾跨▼
-        log.info("鍒濆鍖栧爢鍨涙満绾跨▼...................................................");
+        News.info("鍒濆鍖栧爢鍨涙満绾跨▼...................................................");
         for (CrnSlave crn : slaveProperties.getCrn()) {
             CrnThread crnThread = new SiemensCrnThread(crn);
             new Thread((Runnable) crnThread).start();
             SlaveConnection.put(SlaveType.Crn, crn.getId(), crnThread);
         }
         // 鍒濆鍖栬緭閫佺嚎绾跨▼
-        log.info("鍒濆鍖栬緭閫佺嚎绾跨▼...................................................");
+        News.info("鍒濆鍖栬緭閫佺嚎绾跨▼...................................................");
         for (DevpSlave devp : slaveProperties.getDevp()) {
             DevpThread devpThread = new SiemensDevpThread(devp);
             new Thread((Runnable) devpThread).start();
             SlaveConnection.put(SlaveType.Devp, devp.getId(), devpThread);
         }
         // 鍒濆鍖栨潯鐮佹壂鎻忎华绾跨▼
-        log.info("鍒濆鍖栨潯鐮佹壂鎻忎华绾跨▼...................................................");
+        News.info("鍒濆鍖栨潯鐮佹壂鎻忎华绾跨▼...................................................");
         for (Slave barcode : slaveProperties.getBarcode()) {
             BarcodeThread barcodeThread = new BarcodeThread(barcode);
 //            new Thread(barcodeThread).start();
             SlaveConnection.put(SlaveType.Barcode, barcode.getId(), barcodeThread);
         }
-//        // 鍒濆鍖朙ED绾跨▼
-//        log.info("鍒濆鍖朙ED绾跨▼...................................................");
-//        for (LedSlave led : slaveProperties.getLed()) {
-//            LedThread ledThread = new LedThread(led);
-//            new Thread(ledThread).start();
-//            SlaveConnection.put(SlaveType.Led, led.getId(), ledThread);
-//        }
-//        // 鍒濆鍖栫绉ょ嚎绋�
-//        log.info("鍒濆鍖栫绉ょ嚎绋�...................................................");
+        // 鍒濆鍖朙ED绾跨▼
+        News.info("鍒濆鍖朙ED绾跨▼...................................................");
+        for (LedSlave led : slaveProperties.getLed()) {
+            LedThread ledThread = new LedThread(led);
+            new Thread(ledThread).start();
+            SlaveConnection.put(SlaveType.Led, led.getId(), ledThread);
+        }
+        // 鍒濆鍖栫绉ょ嚎绋�
+//        News.info("鍒濆鍖栫绉ょ嚎绋�...................................................");
 //        for (Slave scale : slaveProperties.getScale()) {
-//            ScaleThread scaleThread = new ScaleThread(scale);
-//            new Thread(scaleThread).start();
-//            SlaveConnection.put(SlaveType.Scale, scale.getId(), scaleThread);
+//            ScaleThread barcodeThread = new ScaleThread(scale);
+//            new Thread(barcodeThread).start();
+//            SlaveConnection.put(SlaveType.Scale, scale.getId(), barcodeThread);
 //        }
     }
 
diff --git a/src/main/java/com/zy/core/enums/CrnModeType.java b/src/main/java/com/zy/core/enums/CrnModeType.java
index d7b6111..7f2d84a 100644
--- a/src/main/java/com/zy/core/enums/CrnModeType.java
+++ b/src/main/java/com/zy/core/enums/CrnModeType.java
@@ -2,11 +2,11 @@
 
 public enum CrnModeType {
 
-    NONE(0, "鍏虫満"),
-    AUTO(3, "鑷姩"),
-    HALF_AUTO(2, "鍗婅嚜鍔�"),
+    NONE(-1, "绂荤嚎"),
+    STOP(0, "缁翠慨"),
     HAND(1, "鎵嬪姩"),
-    STOP(4, "缁翠慨"),
+    HALF_AUTO(2, "鍗婅嚜鍔�"),
+    AUTO(3, "鑷姩"),
     ;
 
     public Integer id;
diff --git a/src/main/java/com/zy/core/enums/CrnStatusType.java b/src/main/java/com/zy/core/enums/CrnStatusType.java
index 87c6e53..371c87f 100644
--- a/src/main/java/com/zy/core/enums/CrnStatusType.java
+++ b/src/main/java/com/zy/core/enums/CrnStatusType.java
@@ -2,36 +2,20 @@
 
 public enum CrnStatusType {
 
-//    NONE(-1, "绂荤嚎"),
-//    IDLE(0, "绌洪棽"),
-//    FETCH_MOVING(1, "鍙栬揣琛岃蛋"),
-//    FETCH_WAITING(2, "鍙栬揣绛夊緟"),
-//    FETCHING(3, "鍙栬揣涓�"),
-//    PUT_MOVING(4, "鏀捐揣璧拌"),
-//    PUT_WAITING(5, "鏀捐揣绛夊緟"),
-//    PUTTING(6, "鏀捐揣涓�"),
-//    ORIGIN_GO(7, "鍥炲師鐐�"),
-//    ORIGIN_BACK(8, "鍥炲弽鍘熺偣"),
-//    MOVING(9, "璧拌涓�"),
-//    WAITING(10, "浠诲姟瀹屾垚绛夊緟WCS纭"),
-//    PAUSE(11, "浠诲姟鏆傚仠"),
-//    SOS(99, "鎶ヨ"),
-//    ;
-
-    IDLE(0, "绌洪棽锛屾棤浠诲姟"),
-    NONE_MOVING(1, "鍙栬揣瀹氫綅"),
-    FETCHING(2, "鍙栬揣绛夊緟"),
-    MOVING(3, "鍙栬揣涓�"),
-    PUTTING(4, "鏀捐揣璧拌"),
-    HOMING(5, "鏀捐揣绛夊緟"),
-    ANTI_ORIGIN(6, "鏀捐揣涓�"),
-    PUT_COMPLETE(7, "鍥炲師鐐�"),
-//    MOVE_THE_SHIPPING_LOCATION(8, "绉诲姩鍒版斁璐т綅缃�"),
-//    PUTTING(9, "鏀捐揣涓�"),
-    HANDLING_COMPLETED(10, "鎼繍瀹屾垚绛夊緟WCS纭"),
-    EMPTY_AVOIDANCE(11, "绌鸿浇閬胯"),
+    NONE(-1, "绂荤嚎"),
+    IDLE(0, "绌洪棽"),
+    FETCH_MOVING(1, "鍙栬揣琛岃蛋"),
+    FETCH_WAITING(2, "鍙栬揣绛夊緟"),
+    FETCHING(3, "鍙栬揣涓�"),
+    PUT_MOVING(4, "鏀捐揣璧拌"),
+    PUT_WAITING(5, "鏀捐揣绛夊緟"),
+    PUTTING(6, "鏀捐揣涓�"),
+    ORIGIN_GO(7, "鍥炲師鐐�"),
+    ORIGIN_BACK(8, "鍥炲弽鍘熺偣"),
+    MOVING(9, "璧拌涓�"),
+    WAITING(10, "浠诲姟瀹屾垚绛夊緟WCS纭"),
+    PAUSE(11, "浠诲姟鏆傚仠"),
     SOS(99, "鎶ヨ"),
-    OTHER(100, "鍏朵粬"),
     ;
 
     public Integer id;
@@ -50,7 +34,7 @@
                 return type;
             }
         }
-        return null;
+        return NONE;
     }
 
     public static CrnStatusType get(CrnStatusType type) {
diff --git a/src/main/java/com/zy/core/model/DevpSlave.java b/src/main/java/com/zy/core/model/DevpSlave.java
index 799cab2..147c10a 100644
--- a/src/main/java/com/zy/core/model/DevpSlave.java
+++ b/src/main/java/com/zy/core/model/DevpSlave.java
@@ -37,6 +37,8 @@
         private Integer scale;
 
         private Integer backSta;
+
+        private Integer led;
     }
 
 }
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 baa789a..a63b90b 100644
--- a/src/main/java/com/zy/core/model/protocol/CrnProtocol.java
+++ b/src/main/java/com/zy/core/model/protocol/CrnProtocol.java
@@ -1,7 +1,10 @@
 package com.zy.core.model.protocol;
 
 import com.zy.asrs.entity.BasCrnp;
-import com.zy.core.enums.*;
+import com.zy.core.enums.CrnForkPosType;
+import com.zy.core.enums.CrnLiftPosType;
+import com.zy.core.enums.CrnModeType;
+import com.zy.core.enums.CrnStatusType;
 import lombok.Data;
 
 /**
@@ -9,6 +12,8 @@
  */
 @Data
 public class CrnProtocol {
+
+    private Integer crnNo;
 
     /**
      * 1 = 鎵嬪姩妯″紡
@@ -20,19 +25,14 @@
     public CrnModeType modeType;
 
     /**
-     * 鍫嗗灈鏈轰换鍔″畬鎴�
-     */
-    public Short taskFinish;
-
-    /**
-     * 鏍¢獙缁撴灉 1琛ㄧず妫�楠屾垚鍔�
-     */
-    public Short valid;
-
-    /**
      * 1 = 鎬ュ仠
      */
     public Short eStop;
+
+    /**
+     * 寮傚父鐮�
+     */
+    public Short alarm;
 
     /**
      * 浠诲姟鍙�
@@ -54,8 +54,6 @@
      */
     public Short status;
 
-    public Short alarm = 0;
-
     /**
      * 鐘舵�佹灇涓�
      */
@@ -72,175 +70,45 @@
     public Short level;
 
     /**
-     * 鍫嗗灈鏈哄綋鍓嶆帓
-     */
-    public Short row;
-
-    /**
-     * 鍫嗗灈鏈哄綋鍓嶅贩閬撳彿
-     */
-    public Short lane;
-
-    /**
-     * 鍫嗗灈鏈洪�氳鐘舵��
-     */
-    public Boolean connStatus;
-
-    /**
-     * 鐢宠鍏ュ簱淇
-     */
-    public Boolean correction;
-
-    /**
-     * 鎵樼洏鍙烽敊
-     */
-    public Boolean tuError;
-
-    /**
-     * 鍙栬揣鏃犵
-     */
-    public Boolean noneError;
-
-    /**
-     * 鍙岄噸鍏ュ簱
-     */
-    public Boolean stockError;
-
-    /**
-     * 浣滀笟鏁版嵁鏃犳晥
-     */
-    public Boolean jobInvalid;
-
-    /**
-     * 绌洪棽鐘舵��
-     */
-    public Boolean idle;
-
-    /**
-     * 鎺у埗鏌滀娇鑳�
-     */
-    public Boolean control;
-
-    /**
-     * 鍋滃噯
-     */
-    public Boolean stopQuasi;
-
-    /**
-     * 杩愯
-     */
-    public Boolean running;
-
-    /**
-     * 鏁呴殰
-     */
-    public Boolean fault;
-
-    /**
-     * 璐у弶涓綅
-     */
-    public Boolean forkHome;
-    /**
-     * 鍗曚几浣嶈揣鍙夊乏浣�
-     */
-    public Boolean forkSingleLeft;
-    /**
-     * 鍗曚几浣嶈揣鍙夊彸浣�
-     */
-    public Boolean forkSingleRight;
-    /**
-     * 鍙屼几浣嶈揣鍙夊乏浣�
-     */
-    public Boolean forkDoubleLeft;
-    /**
-     * 鍙屼几浣嶈揣鍙夊彸浣�
-     */
-    public Boolean forkDoubleRight;
-    /**
-     * 鍗曚几浣嶉珮浣�
-     */
-    public Boolean singleHigh;
-    /**
-     * 鍗曚几浣嶄綆浣�
-     */
-    public Boolean singleLow;
-    /**
-     * 鍙屼几浣嶉珮浣�
-     */
-    public Boolean doubleHigh;
-    /**
-     * 鍙屼几浣嶄綆浣�
-     */
-    public Boolean doubleLow;
-    /**
-     * 绔欏彴楂樹綅
-     */
-    public Boolean platformHigh;
-    /**
-     * 绔欏彴浣庝綅
-     */
-    public Boolean platformLow;
-
-    /**
      * 褰撳墠璐у弶浣嶇疆
      * 0 = 璐у弶鍘熶綅
      * 1 = 璐у弶鍦ㄥ乏渚�
      * 2 = 璐у弶鍦ㄥ彸渚�
      */
-    public Short forkPos = -1;
+    public Short forkPos;
 
-    public CrnForkPosType forkPosType = CrnForkPosType.NONE;
+    public CrnForkPosType forkPosType;
 
     /**
      * 褰撳墠杞借揣鍙颁綅缃�
      * 0 = 涓嬪畾浣�
      * 1 = 涓婂畾浣�
      */
-    public Short liftPos = -1;
+    public Short liftPos;
 
-    public CrnLiftPosType liftPosType = CrnLiftPosType.ERROR;
+    public CrnLiftPosType liftPosType;
 
     /**
      * 璧拌鍦ㄥ畾浣�
      * 0 = 鍦ㄥ畾浣�
      * 1 = 涓嶅湪瀹氫綅
      */
-    public Short walkPos = 0;
-
-    /**
-     * 鎷ㄦ寚浣嶇疆
-     * 0 = 涓嶅湪瀹氫綅
-     * 1 = 涓婂畾浣�
-     * 2 = 涓嬪畾浣�
-     */
-    public Short fingerPos;
-
-    public CrnFingerPosType fingerPosType;
+    public Short walkPos;
 
     /**
      * 杞借揣鍙版湁鐗�
      */
     public Short loaded;
 
-    /**
-     * 鍫嗗灈鏈哄瀭鐩存晠闅滀唬鐮侊紙鏁板�兼樉绀猴級
-     */
-    private Integer alarm1 = 0;
+    private Short temp1;
 
-    /**
-     * 鍫嗗灈鏈烘按骞虫晠闅滀唬鐮侊紙鏁板�兼樉绀猴級
-     */
-    private Integer alarm2 = 0;;
+    private CrnTemp1 crnTemp1;
 
-    /**
-     * 鍫嗗灈鏈鸿揣鍙夋晠闅滀唬鐮侊紙鏁板�兼樉绀猴級
-     */
-    private Integer alarm3 = 0;;
+    private Short temp2;
 
-    /**
-     * 鍫嗗灈鏈虹姸鎬佹晠闅滀唬鐮侊紙鏁板�兼樉绀猴級
-     */
-    private Integer alarm4 = 0;;
+    private Short temp3;
+
+    private Short temp4;
 
     /**
      * 寮傚父1
@@ -271,42 +139,53 @@
     private CrnError4 crnError4;
 
     /**
+     * 寮傚父5
+     */
+    private boolean[] error5;
+
+    private CrnError5 crnError5;
+
+    /**
+     * 寮傚父6
+     */
+    private boolean[] error6;
+
+    private CrnError6 crnError6;
+
+    /**
      * X琛岃蛋绾块�熷害m/min
      */
-    private Float xSpeed = 0F;
+    private Float xSpeed;
 
     /**
      * Y琛岃蛋绾块�熷害m/min
      */
-    private Float ySpeed = 0F;
+    private Float ySpeed;
 
     /**
      * Z琛岃蛋绾块�熷害m/min
      */
-    private Float zSpeed = 0F;
+    private Float zSpeed;
 
     /**
      * 鍫嗗灈鏈虹疮璁¤蛋琛岃窛绂籯m
      */
-    public Float xDistance = 0F;
+    public Float xDistance;
 
     /**
      * 鍫嗗灈鏈虹疮璁″崌闄嶈窛绂籯m
      */
-    public Float yDistance = 0F;
+    public Float yDistance;
 
     /**
      * 鍫嗗灈鏈虹疮璁¤蛋琛屾椂闀縣
      */
-    public Float xDuration = 0F;
+    public Float xDuration;
 
-    /**w
+    /**
      * 鍫嗗灈鏈虹疮璁″崌闄嶆椂闀縣
      */
-    public Float yDuration = 0F;
-
-    //鎸囦护ID
-    private Integer commandId;
+    public Float yDuration;
 
     public void setMode(Short mode) {
         this.mode = mode;
@@ -348,81 +227,12 @@
         this.status = CrnStatusType.get(type).id.shortValue();
     }
 
-    public void setFingerPos(Short type) {
-        this.fingerPos = type;
-        this.fingerPosType = CrnFingerPosType.get(type);
+    public Short getTemp1() {
+        return temp1;
     }
 
-    public void setError1(boolean[] error1){
-        this.error1 = error1;
-        this.crnError1 = new CrnError1();
-        this.crnError1.remoteStop = error1[0];
-        this.crnError1.mainStop = error1[1];
-        this.crnError1.controlStop = error1[2];
-        this.crnError1.xCoverErr = error1[3];
-        this.crnError1.yCoverErr = error1[4];
-        this.crnError1.zCoverErr = error1[5];
-        this.crnError1.laserErr = error1[6];
-        this.crnError1.barcodeErr = error1[7];
-        this.crnError1.xFrontLimitErr = error1[8];
-        this.crnError1.xBackLimitErr = error1[9];
-        this.crnError1.yUpLimitErr = error1[10];
-        this.crnError1.yDownLimitErr = error1[11];
-        this.crnError1.zLeftLimitErr = error1[12];
-        this.crnError1.zRightLimitErr = error1[13];
-        this.crnError1.leftOverWidthErr1 = error1[14];
-        this.crnError1.leftOverWidthErr2 = error1[15];
-    }
-
-    public void setError2(boolean[] error2){
-        this.error2 = error2;
-        this.crnError2 = new CrnError2();
-        this.crnError2.leftOverLenErr1 = error2[0];
-        this.crnError2.leftOverLenErr2 = error2[1];
-        this.crnError2.leftOverHighErr = error2[2];
-        this.crnError2.rightOverWidthErr1 = error2[3];
-        this.crnError2.rightOverWidthErr2 = error2[4];
-        this.crnError2.rightOverLenErr1 = error2[5];
-        this.crnError2.rightOverLenErr2 = error2[6];
-        this.crnError2.rightOverHighErr = error2[7];
-        this.crnError2.leftLooseRopeErr = error2[8];
-        this.crnError2.rightLooseRopeErr = error2[9];
-        this.crnError2.frontDoorErr = error2[10];
-        this.crnError2.backDoorErr = error2[11];
-        this.crnError2.startupErr = error2[12];
-        this.crnError2.xFrontLocaUpErr = error2[13];
-        this.crnError2.xFrontLocaDownErr = error2[14];
-        this.crnError2.xBackLocaUpErr = error2[15];
-    }
-
-    public void setError3(boolean[] error3) {
-        this.error3 = error3;
-        this.crnError3 = new CrnError3();
-        this.crnError3.xBackLocaDownErr = error3[0];
-        this.crnError3.yUpLocaUpErr = error3[1];
-        this.crnError3.yUpLocaDownErr = error3[2];
-        this.crnError3.yDownLocaUpErr = error3[3];
-        this.crnError3.yDownLocaDownErr = error3[4];
-        this.crnError3.zLeftLocaUpErr = error3[5];
-        this.crnError3.zLeftLocaDownErr = error3[6];
-        this.crnError3.zRightLocaUpErr = error3[7];
-        this.crnError3.zRightLocaDownErr = error3[8];
-        this.crnError3.leftTakeNoneErr = error3[9];
-        this.crnError3.rightTakeNoneErr = error3[10];
-        this.crnError3.leftTakeThenLoadErr = error3[11];
-        this.crnError3.rightTakeThenLoadErr = error3[12];
-        this.crnError3.leftPutAndLoadErr = error3[13];
-        this.crnError3.rightPutAndLoadErr = error3[14];
-        this.crnError3.leftPutThenNoneErr = error3[15];
-    }
-
-    public void setError4(boolean[] error4) {
-        this.error4 = error4;
-        this.crnError4 = new CrnError4();
-        this.crnError4.rightPutThenNoneErr = error4[0];
-        this.crnError4.xLooseBrakeTimeout = error4[1];
-        this.crnError4.yLooseBrakeTimeout = error4[2];
-        this.crnError4.zLooseBrakeTimeout = error4[3];
+    public void setTemp1(Short temp1) {
+        this.temp1 = temp1;
     }
 
     /**
@@ -434,8 +244,39 @@
 
 
     public BasCrnp toSqlModel(BasCrnp basCrnp){
-        basCrnp.setCrnErr(alarm.longValue());
+        if (alarm!=null) {
+            basCrnp.setCrnErr(alarm.longValue());
+        }
         basCrnp.setWrkNo(taskNo.intValue());
         return basCrnp;
     }
+
+    public void setxSpeed(Short xSpeed) {
+        this.xSpeed = Float.valueOf(xSpeed);
+    }
+
+    public void setySpeed(Short ySpeed) {
+        this.ySpeed = Float.valueOf(ySpeed);
+    }
+
+    public void setzSpeed(Short zSpeed) {
+        this.zSpeed = Float.valueOf(zSpeed);
+    }
+
+    public void setxDistance(Short xDistance) {
+        this.xDistance = Float.valueOf(xDistance);
+    }
+
+    public void setyDistance(Short yDistance) {
+        this.yDistance = Float.valueOf(yDistance);
+    }
+
+    public void setxDuration(Short xDuration) {
+        this.xDuration = Float.valueOf(xDuration);
+    }
+
+    public void setyDuration(Short yDuration) {
+        this.yDuration = Float.valueOf(yDuration);
+    }
+
 }
diff --git a/src/main/java/com/zy/core/model/protocol/StaProtocol.java b/src/main/java/com/zy/core/model/protocol/StaProtocol.java
index 4182f70..5f6ad0b 100644
--- a/src/main/java/com/zy/core/model/protocol/StaProtocol.java
+++ b/src/main/java/com/zy/core/model/protocol/StaProtocol.java
@@ -62,6 +62,9 @@
     // 闅斿绔欑偣锛堝彴杞︿綅缃級
     private String nearbySta;
 
+    //鍏佽绌烘墭鍑哄簱
+    private String allowEmptyOut;
+
     //鎸囦护ID
     private Integer commandId;
 
@@ -118,6 +121,8 @@
     private List<Integer> alarm;
 
 
+
+
     public List<Integer> getAlarm(){
         List<Integer> alarm = new ArrayList<>();
         if (breakerErr){
diff --git a/src/main/java/com/zy/core/thread/SiemensCrnThread.java b/src/main/java/com/zy/core/thread/SiemensCrnThread.java
index b0cd878..bbf7db0 100644
--- a/src/main/java/com/zy/core/thread/SiemensCrnThread.java
+++ b/src/main/java/com/zy/core/thread/SiemensCrnThread.java
@@ -14,6 +14,7 @@
 import com.zy.asrs.entity.param.TaskOverToWms;
 import com.zy.asrs.service.*;
 import com.zy.common.utils.HttpHandler;
+import com.zy.common.utils.News;
 import com.zy.core.CrnThread;
 import com.zy.core.cache.MessageQueue;
 import com.zy.core.cache.OutputQueue;
@@ -43,6 +44,11 @@
     private CrnSlave slave;
     private CrnProtocol crnProtocol;
     private boolean resetFlag = false;
+
+    /**
+     * 鍫嗗灈鏈烘槸鍚﹀湪鍥炲師鐐硅繍鍔ㄤ腑鏍囪
+     */
+    private boolean backHpFlag = false;
 
     @Value("${wms.url}")
     private String wmsUrl;
@@ -124,16 +130,26 @@
      * 鍒濆鍖栧爢鍨涙満
      */
     private void initCrnProtocol(){
-        crnProtocol = new CrnProtocol();
-        crnProtocol.setMode((short) 0);
-        crnProtocol.setStatus((short) 0);
-        crnProtocol.setTaskNo((short) 0);
-        crnProtocol.setTaskFinish((short) 0);
-        crnProtocol.setValid((short) 0);
-        crnProtocol.setBay((short) 0);
-        crnProtocol.setLevel((short) 0);
-        crnProtocol.setRow((short) 0);
-        crnProtocol.setLane((short) 0);
+        if (null == crnProtocol) {
+            crnProtocol = new CrnProtocol();
+        }
+        crnProtocol.setMode((short) -1);
+//        crnProtocol.setTaskNo((short)0);
+        crnProtocol.setStatus((short)-1);
+        crnProtocol.setBay((short)0);
+        crnProtocol.setLevel((short)0);
+        crnProtocol.setForkPos((short) -1);
+        crnProtocol.setLiftPos((short) -1);
+        crnProtocol.setWalkPos((short)0);
+        crnProtocol.setLoaded((short)0);
+        crnProtocol.setAlarm((short)0);
+        crnProtocol.setxSpeed((short) 0);
+        crnProtocol.setySpeed((short) 0);
+        crnProtocol.setzSpeed((short) 0);
+        crnProtocol.setxDistance((short) 0);
+        crnProtocol.setyDistance((short) 0);
+        crnProtocol.setxDuration((short) 0);
+        crnProtocol.setyDuration((short) 0);
     }
 
     @Override
@@ -162,153 +178,74 @@
      * 璇诲彇鐘舵��
      */
     private void readStatus(){
+        String methodName = Thread.currentThread().getStackTrace()[1].getMethodName();
 
-        OperateResultExOne<byte[]> result = siemensNet.Read("DB101.0", (short) 56);
-        if (result.IsSuccess) {
-            if (null == crnProtocol) {
-                crnProtocol = new CrnProtocol();
-            }
-            crnProtocol.setMode(siemensNet.getByteTransform().TransInt16(result.Content, 0));
-            crnProtocol.setTaskNo(siemensNet.getByteTransform().TransInt16(result.Content, 2));
-            crnProtocol.setStatus(siemensNet.getByteTransform().TransInt16(result.Content, 4));
-            crnProtocol.setBay(siemensNet.getByteTransform().TransInt16(result.Content, 6));
-            crnProtocol.setLevel(siemensNet.getByteTransform().TransInt16(result.Content, 8));
-            crnProtocol.setForkPos(siemensNet.getByteTransform().TransInt16(result.Content, 10));
-            crnProtocol.setLiftPos(siemensNet.getByteTransform().TransInt16(result.Content, 12));
-            crnProtocol.setWalkPos(siemensNet.getByteTransform().TransInt16(result.Content, 14));
-            crnProtocol.setLoaded(siemensNet.getByteTransform().TransInt16(result.Content, 16));
-            crnProtocol.setAlarm(siemensNet.getByteTransform().TransInt16(result.Content, 18));
-//            crnProtocol.setTemp1(siemensNet.getByteTransform().TransInt16(result.Content, 20));
-//            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().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));
+        try {
+            OperateResultExOne<byte[]> result = siemensNet.Read("DB101.0", (short) 56);
+            if (result.IsSuccess) {
+                if (null == crnProtocol) {
+                    crnProtocol = new CrnProtocol();
+                    crnProtocol.setCrnNo(slave.getId());
+                }
+                crnProtocol.setMode(siemensNet.getByteTransform().TransInt16(result.Content, 0));
+                crnProtocol.setTaskNo(siemensNet.getByteTransform().TransInt16(result.Content, 2));
+                crnProtocol.setStatus(siemensNet.getByteTransform().TransInt16(result.Content, 4));
+                crnProtocol.setBay(siemensNet.getByteTransform().TransInt16(result.Content, 6));
+                crnProtocol.setLevel(siemensNet.getByteTransform().TransInt16(result.Content, 8));
+                crnProtocol.setForkPos(siemensNet.getByteTransform().TransInt16(result.Content, 10));
+                crnProtocol.setLiftPos(siemensNet.getByteTransform().TransInt16(result.Content, 12));
+                crnProtocol.setWalkPos(siemensNet.getByteTransform().TransInt16(result.Content, 14));
+                crnProtocol.setLoaded(siemensNet.getByteTransform().TransInt16(result.Content, 16));
+                crnProtocol.setAlarm(siemensNet.getByteTransform().TransInt16(result.Content, 18));
+                crnProtocol.setTemp1(siemensNet.getByteTransform().TransInt16(result.Content, 20));
+                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));
 
+                OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId()));
 
-
-            OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId()));
-
-            // 澶嶄綅淇″彿
-            if (crnProtocol.getTaskFinish() == 0) {
-                if (resetFlag) {
-                    CrnCommand crnCommand = new CrnCommand();
-                    crnCommand.setAckFinish((short)1);
-                    if (write(crnCommand)) {
-                        resetFlag = false;
-
-                        //鍫嗗灈鏈轰换鍔″畬鎴愬悗璁块棶wms璇锋眰浠诲姟瀹屾垚 locationDone 璐т綅澶勭悊瀹屾垚
-                        TaskWrkService taskWrkService = SpringUtils.getBean(TaskWrkService.class);
-                        TaskWrk taskWrk = taskWrkService.selectOne(new EntityWrapper<TaskWrk>().eq("wrk_no",crnProtocol.getTaskNo()));
-                        String tasktype = null;
-                        switch (taskWrk.getIoType()){
-                            case 1:
-                                tasktype= "RK";
-                                break;
-                            case 2:
-                                tasktype= "CK";
-                                break;
-                            case 3:
-                                tasktype= "YK";
-                                break;
-                            default:
-                                tasktype= "鏈煡";
+                // 澶嶄綅淇″彿
+                if (crnProtocol.getStatusType().equals(CrnStatusType.WAITING)) {
+                    if (resetFlag) {
+                        if(crnProtocol.getTaskNo()==9999){
+                            backHpFlag = false;
                         }
-                        Map<String, Object> map = new HashMap<>();
-                        map.put("x-api-key","7a15b5db-29b6-552c-8cff-0cfec3756da2");
-                        TaskOverToWms taskOverToWms = new TaskOverToWms();
-                        taskOverToWms.setFeedbackFrom("WCS"); //鏉ユ簮
-                        taskOverToWms.setWarehouseId("1688469798893297665"); //浠撳簱鏍囪瘑
-                        taskOverToWms.setTaskNo(taskWrk.getTaskNo()); //浠诲姟鍙�
-                        taskOverToWms.setTaskType(tasktype); // 浠诲姟绫诲瀷
-                        taskOverToWms.setContainerCode(taskWrk.getBarcode()); // 瀹瑰櫒缂栫爜
-                        if (taskWrk.getIoType() ==1){
-                            taskOverToWms.setEquipmentCode(String.valueOf(taskWrk.getCrnNo())); //璁惧缂栫爜
-                            taskOverToWms.setTargetLocationCode(taskWrk.getOriginTargetPoint()); //鐩爣搴撲綅
-                        }else if (taskWrk.getIoType() ==2){
-                            Map<Integer,String> map1 = new HashMap<>();
-                            map1.put(102,"J-1101");
-                            map1.put(106,"J-1103");
-                            map1.put(110,"J-1105");
-                            map1.put(114,"J-1107");
-                            map1.put(118,"J-1109");
-                            map1.put(122,"J-1111");
-                            map1.put(305,"H-1101");
-                            map1.put(405,"G-1101");
-                            taskOverToWms.setEquipmentCode(map1.get(taskWrk.getTargetPoint())); //璁惧缂栫爜
-                            taskOverToWms.setSourceLocationCode(taskWrk.getOriginStartPoint()); //婧愬簱浣�
-                        } else if (taskWrk.getIoType() == 3) {
-                            taskOverToWms.setEquipmentCode(String.valueOf(taskWrk.getCrnNo())); //璁惧缂栫爜
-                            taskOverToWms.setSourceLocationCode(taskWrk.getOriginStartPoint());
-                            taskOverToWms.setTargetLocationCode(taskWrk.getOriginTargetPoint()); //鐩爣搴撲綅
+                        CrnCommand crnCommand = new CrnCommand();
+                        crnCommand.setAckFinish((short)1);
+                        if (write(crnCommand)) {
+                            resetFlag = false;
                         }
-                        taskOverToWms.setTaskStatus("location_done"); //浠诲姟鐘舵��
-                        String response = null;
-                        try {
-                            response = new HttpHandler.Builder()
-                                    .setHeaders(map)
-                                    .setUri("10.32.53.195:8080")
-                                    .setPath("wcsManager/wcsInterface/taskStatusFeedback")
-                                    .setJson(JSON.toJSONString(taskOverToWms))
-                                    .build()
-                                    .doPost();
-                        }catch (Exception e){
-                            log.error("鍫嗗灈鏈轰换鍔″畬鎴愶紝璇锋眰wms浠诲姟瀹屾垚鎺ュ彛澶辫触");
-                        }
-                        ApiLogService apiLogService = SpringUtils.getBean(ApiLogService.class);
-                        apiLogService.save("Wms浠诲姟瀹屾垚鎺ュ彛"
-                                ,"10.32.53.195:8080"+"/wcsManager/wcsInterface/taskStatusFeedback"
-                                ,null
-                                ,"127.0.0.1"
-                                ,JSON.toJSONString(taskOverToWms)
-                                ,response
-                                ,true
-                        );
-                        JSONObject jsonObject = JSON.parseObject(response);
-                        if (jsonObject.getInteger("code").equals(200)){
-                            if (taskWrk.getIoType() == 3){
-                                taskWrk.setWrkSts(4);
-                            }
-                            taskWrk.setStatus(5);
-                            if (!taskWrkService.update(taskWrk,new EntityWrapper<TaskWrk>().eq("wrk_no",crnProtocol.getTaskNo()))){
-                                log.error("鍫嗗灈鏈轰换鍔″畬鎴愶紝鏀瑰彉浠诲姟鐘舵�佸け璐�");
-                            }
-
-                            log.info("鍫嗗灈鏈轰换鍔″畬鎴愶紝璇锋眰wms浠诲姟瀹屾垚鎺ュ彛鎴愬姛");
-                        }else {
-                            log.error("鍫嗗灈鏈轰换鍔″畬鎴愶紝璇锋眰wms浠诲姟瀹屾垚鎺ュ彛瀹屾垚锛屼絾杩斿洖澶辫触");
-                        }
-
                     }
-
-
-
                 }
+
+                try {
+                    // 鏍规嵁瀹炴椂淇℃伅鏇存柊鏁版嵁搴�
+                    BasCrnpService basCrnpService = SpringUtils.getBean(BasCrnpService.class);
+                    BasCrnp basCrnp = new BasCrnp();
+                    basCrnp.setCrnNo(slave.getId());
+                    basCrnp.setCrnSts((int)crnProtocol.getMode());
+                    if (!basCrnpService.updateById(crnProtocol.toSqlModel(basCrnp))){
+                        News.error(methodName + ":鍫嗗灈鏈簆lc鏁版嵁搴撴洿鏂板け璐� ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot());
+                    }
+                } catch (Exception ignore){}
+
+            } else {
+                initCrnProtocol();
+                OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆戣鍙栧爢鍨涙満plc鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()));
+                News.error(methodName + ":璇诲彇鍫嗗灈鏈簆lc鐘舵�佷俊鎭け璐� ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot());
             }
-
-            try {
-                // 鏍规嵁瀹炴椂淇℃伅鏇存柊鏁版嵁搴�
-                BasCrnpService basCrnpService = SpringUtils.getBean(BasCrnpService.class);
-                BasCrnp basCrnp = new BasCrnp();
-                basCrnp.setCrnNo(slave.getId());
-                basCrnp.setCrnSts((int)crnProtocol.getMode());
-                if (!basCrnpService.updateById(crnProtocol.toSqlModel(basCrnp))){
-                    log.error("鍫嗗灈鏈簆lc鏁版嵁搴撴洿鏂板け璐� ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot());
-                }
-            } catch (Exception ignore){}
-
-            DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
-            deviceErrorService.deleteDeviceError("crn", slave.getId());
-        } else {
-            OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆戣鍙栧爢鍨涙満plc鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()));
-            log.error("璇诲彇鍫嗗灈鏈簆lc鐘舵�佷俊鎭け璐� ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot());
-            DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
-            deviceErrorService.addDeviceError("crn", slave.getId(), "璇诲彇鍫嗗灈鏈簆lc鐘舵�佷俊鎭け璐�");
+        } catch (Exception e) {
+            e.printStackTrace();
+            OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆戣鍙栧爢鍨涙満plc鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort()));
+            News.error(methodName + ":璇诲彇鍫嗗灈鏈簆lc鐘舵�佷俊鎭け璐� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
+            initCrnProtocol();
         }
     }
 
@@ -374,7 +311,7 @@
         String methodName = Thread.currentThread().getStackTrace()[1].getMethodName();
 
         if (null == command) {
-            log.error("鍫嗗灈鏈哄啓鍏ュ懡浠や负绌�");
+            News.error("鍫嗗灈鏈哄啓鍏ュ懡浠や负绌�");
             return false;
         }
 //        convertRow(command);
@@ -392,38 +329,35 @@
 //        array[9] = command.getSourceStaNo();
 //        array[10] = command.getDestinationStaNo();
         array[9] = command.getCommand();
-
         OperateResult result = siemensNet.Write("DB100.0", array);
 
-        int i=0;
-        do{
-            //鍫嗗灈鏈轰换鍔″啓鍏ュ悗锛屽洖璇讳竴娆★紝鐪嬫槸鍚︽垚鍔�
-            Thread.sleep(200);
-            OperateResultExOne<byte[]> resultRead = siemensNet.Read("DB100.0", (short) 20);
-            if (resultRead.IsSuccess) {
-                CrnCommand one = new CrnCommand();
-                one.setTaskNo(siemensNet.getByteTransform().TransInt16(resultRead.Content, 2));
-                one.setTaskMode(siemensNet.getByteTransform().TransInt16(resultRead.Content, 4));
-                one.setSourcePosX(siemensNet.getByteTransform().TransInt16(resultRead.Content, 6));
-                one.setSourcePosY(siemensNet.getByteTransform().TransInt16(resultRead.Content, 8));
-                one.setSourcePosZ(siemensNet.getByteTransform().TransInt16(resultRead.Content, 10));
-                one.setDestinationPosX(siemensNet.getByteTransform().TransInt16(resultRead.Content, 12));
-                one.setDestinationPosY(siemensNet.getByteTransform().TransInt16(resultRead.Content, 14));
-                one.setDestinationPosZ(siemensNet.getByteTransform().TransInt16(resultRead.Content, 16));
-                if (!command.getTaskNo().equals(one.getTaskNo()) || !command.getTaskMode().equals(one.getTaskMode())
-                        || !command.getSourcePosX().equals(one.getSourcePosX()) || !command.getSourcePosY().equals(one.getSourcePosY())
-                        || !command.getSourcePosZ().equals(one.getSourcePosZ()) || !command.getDestinationPosX().equals(one.getDestinationPosX())
-                        || !command.getDestinationPosY().equals(one.getDestinationPosY()) || !command.getDestinationPosZ().equals(one.getDestinationPosZ())
-                ){
-                    i++;
-                    log.error("鍫嗗灈鏈哄懡浠ゅ湴鍧�鍐欏叆鍚庡洖璇诲け璐id:{}]>>>>閲嶅啓[{}] >>>>> 鍐欏叆[{}],===>>鍥炶[{}]", slave.getId(), i,JSON.toJSON(command),JSON.toJSON(one));
-                    result = siemensNet.Write("DB100.0", array);
-                }else{
-                    i=5;
-                }
+        //鍫嗗灈鏈轰换鍔″啓鍏ュ悗锛屽洖璇讳竴娆★紝鐪嬫槸鍚︽垚鍔�
+        Thread.sleep(200);
+        OperateResultExOne<byte[]> resultRead = siemensNet.Read("DB100.0", (short) 20);
+        if (resultRead.IsSuccess) {
+            CrnCommand one = new CrnCommand();
+            one.setTaskNo(siemensNet.getByteTransform().TransInt16(resultRead.Content, 2));
+            one.setTaskMode(siemensNet.getByteTransform().TransInt16(resultRead.Content, 4));
+            one.setSourcePosX(siemensNet.getByteTransform().TransInt16(resultRead.Content, 6));
+            one.setSourcePosY(siemensNet.getByteTransform().TransInt16(resultRead.Content, 8));
+            one.setSourcePosZ(siemensNet.getByteTransform().TransInt16(resultRead.Content, 10));
+            one.setDestinationPosX(siemensNet.getByteTransform().TransInt16(resultRead.Content, 12));
+            one.setDestinationPosY(siemensNet.getByteTransform().TransInt16(resultRead.Content, 14));
+            one.setDestinationPosZ(siemensNet.getByteTransform().TransInt16(resultRead.Content, 16));
+            if (!command.getTaskNo().equals(one.getTaskNo()) || !command.getTaskMode().equals(one.getTaskMode())
+                    || !command.getSourcePosX().equals(one.getSourcePosX()) || !command.getSourcePosY().equals(one.getSourcePosY())
+                    || !command.getSourcePosZ().equals(one.getSourcePosZ()) || !command.getDestinationPosX().equals(one.getDestinationPosX())
+                    || !command.getDestinationPosY().equals(one.getDestinationPosY()) || !command.getDestinationPosZ().equals(one.getDestinationPosZ())
+            ){
+                News.error("鍫嗗灈鏈哄懡浠ゅ湴鍧�鍐欏叆鍚庡洖璇诲け璐id:{}] >>>>> 鍐欏叆[{}],===>>鍥炶[{}]", slave.getId(), JSON.toJSON(command),JSON.toJSON(one));
             }
-        }while(i<5);
+        }
 
+        if (command.getAckFinish() == 0) {
+            short commandFinish = 1;
+            Thread.sleep(100L);
+            result = siemensNet.Write("DB100.18", commandFinish);
+        }
 
         try {
             // 鏃ュ織璁板綍
@@ -451,12 +385,12 @@
         if (result != null && result.IsSuccess) {
             Thread.sleep(200);
             this.readStatus();
-            log.info(methodName + ":鍫嗗灈鏈哄懡浠や笅鍙慬id:{}] >>>>> {}", slave.getId(), JSON.toJSON(command));
+            News.info(methodName + ":鍫嗗灈鏈哄懡浠や笅鍙慬id:{}] >>>>> {}", slave.getId(), JSON.toJSON(command));
             OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆慬id:{1}] >>>>> 鍛戒护涓嬪彂锛� {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(command)));
             return true;
         } else {
             OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆戝啓鍏ュ爢鍨涙満plc鏁版嵁澶辫触 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort()));
-            log.error(methodName + ":鍐欏叆鍫嗗灈鏈簆lc鏁版嵁澶辫触 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
+            News.error(methodName + ":鍐欏叆鍫嗗灈鏈簆lc鏁版嵁澶辫触 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
             return false;
         }
     }
@@ -464,112 +398,112 @@
     /**
      * 鍐欏叆鏁版嵁
      */
-    private boolean write2(CrnCommand command){
-        if (null == command) {
-            log.error("鍫嗗灈鏈哄啓鍏ュ懡浠や负绌�");
-            return false;
-        }
-        //杞崲鍓嶅厠闅嗕竴浠�
-        CrnCommand crnCommand = new CrnCommand();
-        crnCommand.setCrnNo(command.getCrnNo());
-        crnCommand.setAckFinish(command.getAckFinish());
-        crnCommand.setTaskNo(command.getTaskNo());
-        crnCommand.setTaskMode(command.getTaskMode());
-        crnCommand.setSourcePosX(command.getSourcePosX());
-        crnCommand.setSourcePosY(command.getSourcePosY());
-        crnCommand.setSourcePosZ(command.getSourcePosZ());
-        crnCommand.setDestinationPosX(command.getDestinationPosX());
-        crnCommand.setDestinationPosY(command.getDestinationPosY());
-        crnCommand.setDestinationPosZ(command.getDestinationPosZ());
-//        crnCommand.setSourceStaNo(command.getSourceStaNo());
-//        crnCommand.setDestinationStaNo(command.getDestinationStaNo());
-        crnCommand.setCommand(command.getCommand());
-        if (command.getTaskNo() == 0 && command.getAckFinish() == 0 && command.getAuto() != 1) {
-            command.setTaskNo((short) 999);
-        }
-
-        command.setCrnNo(slave.getId());
-        short[] array = new short[10];
-        if (Cools.isEmpty(command.getAckFinish())) {
-            array[0] = 5;
-        } else {
-            array[0] = command.getAckFinish();
-        }
-        array[1] = command.getTaskNo();
-        array[2] = command.getTaskMode();
-        array[3] = command.getSourcePosX();
-        array[4] = command.getSourcePosY();
-        array[5] = command.getSourcePosZ();
-        array[6] = command.getDestinationPosX();
-        array[7] = command.getDestinationPosY();
-        array[8] = command.getDestinationPosZ();
-        array[9] = command.getCommand();
-        // 浣滀笟淇℃伅
-        OperateResult result = siemensNet.Write("DB100.0", array);
-        // 鏃ュ織璁板綍
-            if (command.getAckFinish() != 1) {
-                BasCrnOptService bean = SpringUtils.getBean(BasCrnOptService.class);
-                BasCrnOpt basCrnOpt = new BasCrnOpt(
-                        command.getTaskNo().intValue(),    // 浠诲姟鍙�
-                        command.getCrnNo(),    // 鍫嗗灈鏈篬闈炵┖]
-                        new Date(),    // 涓嬪彂鏃堕棿
-                        command.getTaskModeType() == null ? null : command.getTaskModeType().toString(),    // 妯″紡
-                        command.getSourcePosX().intValue(),    // 婧愭帓
-                        command.getSourcePosY().intValue(),    // 婧愬垪
-                        command.getSourcePosZ().intValue(),    // 婧愬眰
-                        null,    // 婧愮珯
-                        command.getDestinationPosX().intValue(),    // 鐩爣鎺�
-                        command.getDestinationPosY().intValue(),    // 鐩爣鍒�
-                        command.getDestinationPosZ().intValue(),    // 鐩爣灞�
-                        null,    // 鐩爣绔�
-                        null,    // 鍝嶅簲缁撴灉
-                        null,    // 淇敼鏃堕棿
-                        null    // 淇敼浜哄憳
-                );
-                bean.insert(basCrnOpt);
-            }
-//        } catch (Exception ignore) {}
-
-        //鏇存柊鍛戒护鏃ュ織
-        CommandInfoLogService commandInfoLogService = SpringUtils.getBean(CommandInfoLogService.class);
-        CommandInfoService commandInfoService = SpringUtils.getBean(CommandInfoService.class);
-        CommandInfo commandInfo = commandInfoService.selectById(command.getCommandId());
-        if (Cools.isEmpty(commandInfo)){
-            commandInfo = commandInfoService.selectOne(new EntityWrapper<CommandInfo>()
-                    .eq("wrk_no",crnProtocol.getTaskNo())
-                    .eq("device","Crn"));
-        }
-        CommandInfoLog commandInfoLog = JSON.parseObject(JSON.toJSONString(commandInfo), CommandInfoLog.class);
-        commandInfoLog.setId(null);
-        if (result.IsSuccess) {
-            Date now = new Date();
-            //鏇存柊鎸囦护鏃ュ織
-            commandInfoLog.setDeviceLog("鎸囦护涓嬪彂鎴愬姛");
-            commandInfoLogService.insert(commandInfoLog);
-
-            //绾跨▼鏆傚瓨鎸囦护ID
-            crnProtocol.setCommandId(command.getCommandId());
-
-            //鏇存柊鎸囦护鐘舵��
-            commandInfo.setCommandStatus(CommandStatusType.EXECUTE.id);//鎵ц涓�
-            commandInfo.setExecuteTime(now);
-            commandInfoService.updateById(commandInfo);
-
-            //鏇存柊浠诲姟姝ュ簭
-            TaskWrkService taskWrkService = SpringUtils.getBean(TaskWrkService.class);
-            TaskWrk taskWrk = taskWrkService.selectByWrkNo(command.getTaskNo().intValue());
-            if (taskWrk != null) {
-                taskWrk.setCommandStep(taskWrk.getCommandStep() + 1);//鏇存柊鎸囦护姝ュ簭
-                taskWrkService.updateById(taskWrk);
-            }
-
-
-        } else {
-            OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆戝啓鍏ュ爢鍨涙満plc鏁版嵁澶辫触 ===>> [id:{1}] [ip:{2}] [port:{3}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()));
-            log.error("鍐欏叆鍫嗗灈鏈簆lc鏁版嵁澶辫触 ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot());
-        }
-        return true;
-    }
+//    private boolean write2(CrnCommand command){
+//        if (null == command) {
+//            log.error("鍫嗗灈鏈哄啓鍏ュ懡浠や负绌�");
+//            return false;
+//        }
+//        //杞崲鍓嶅厠闅嗕竴浠�
+//        CrnCommand crnCommand = new CrnCommand();
+//        crnCommand.setCrnNo(command.getCrnNo());
+//        crnCommand.setAckFinish(command.getAckFinish());
+//        crnCommand.setTaskNo(command.getTaskNo());
+//        crnCommand.setTaskMode(command.getTaskMode());
+//        crnCommand.setSourcePosX(command.getSourcePosX());
+//        crnCommand.setSourcePosY(command.getSourcePosY());
+//        crnCommand.setSourcePosZ(command.getSourcePosZ());
+//        crnCommand.setDestinationPosX(command.getDestinationPosX());
+//        crnCommand.setDestinationPosY(command.getDestinationPosY());
+//        crnCommand.setDestinationPosZ(command.getDestinationPosZ());
+////        crnCommand.setSourceStaNo(command.getSourceStaNo());
+////        crnCommand.setDestinationStaNo(command.getDestinationStaNo());
+//        crnCommand.setCommand(command.getCommand());
+//        if (command.getTaskNo() == 0 && command.getAckFinish() == 0 && command.getAuto() != 1) {
+//            command.setTaskNo((short) 999);
+//        }
+//
+//        command.setCrnNo(slave.getId());
+//        short[] array = new short[10];
+//        if (Cools.isEmpty(command.getAckFinish())) {
+//            array[0] = 5;
+//        } else {
+//            array[0] = command.getAckFinish();
+//        }
+//        array[1] = command.getTaskNo();
+//        array[2] = command.getTaskMode();
+//        array[3] = command.getSourcePosX();
+//        array[4] = command.getSourcePosY();
+//        array[5] = command.getSourcePosZ();
+//        array[6] = command.getDestinationPosX();
+//        array[7] = command.getDestinationPosY();
+//        array[8] = command.getDestinationPosZ();
+//        array[9] = command.getCommand();
+//        // 浣滀笟淇℃伅
+//        OperateResult result = siemensNet.Write("DB100.0", array);
+//        // 鏃ュ織璁板綍
+//            if (command.getAckFinish() != 1) {
+//                BasCrnOptService bean = SpringUtils.getBean(BasCrnOptService.class);
+//                BasCrnOpt basCrnOpt = new BasCrnOpt(
+//                        command.getTaskNo().intValue(),    // 浠诲姟鍙�
+//                        command.getCrnNo(),    // 鍫嗗灈鏈篬闈炵┖]
+//                        new Date(),    // 涓嬪彂鏃堕棿
+//                        command.getTaskModeType() == null ? null : command.getTaskModeType().toString(),    // 妯″紡
+//                        command.getSourcePosX().intValue(),    // 婧愭帓
+//                        command.getSourcePosY().intValue(),    // 婧愬垪
+//                        command.getSourcePosZ().intValue(),    // 婧愬眰
+//                        null,    // 婧愮珯
+//                        command.getDestinationPosX().intValue(),    // 鐩爣鎺�
+//                        command.getDestinationPosY().intValue(),    // 鐩爣鍒�
+//                        command.getDestinationPosZ().intValue(),    // 鐩爣灞�
+//                        null,    // 鐩爣绔�
+//                        null,    // 鍝嶅簲缁撴灉
+//                        null,    // 淇敼鏃堕棿
+//                        null    // 淇敼浜哄憳
+//                );
+//                bean.insert(basCrnOpt);
+//            }
+////        } catch (Exception ignore) {}
+//
+//        //鏇存柊鍛戒护鏃ュ織
+//        CommandInfoLogService commandInfoLogService = SpringUtils.getBean(CommandInfoLogService.class);
+//        CommandInfoService commandInfoService = SpringUtils.getBean(CommandInfoService.class);
+//        CommandInfo commandInfo = commandInfoService.selectById(command.getCommandId());
+//        if (Cools.isEmpty(commandInfo)){
+//            commandInfo = commandInfoService.selectOne(new EntityWrapper<CommandInfo>()
+//                    .eq("wrk_no",crnProtocol.getTaskNo())
+//                    .eq("device","Crn"));
+//        }
+//        CommandInfoLog commandInfoLog = JSON.parseObject(JSON.toJSONString(commandInfo), CommandInfoLog.class);
+//        commandInfoLog.setId(null);
+//        if (result.IsSuccess) {
+//            Date now = new Date();
+//            //鏇存柊鎸囦护鏃ュ織
+//            commandInfoLog.setDeviceLog("鎸囦护涓嬪彂鎴愬姛");
+//            commandInfoLogService.insert(commandInfoLog);
+//
+//            //绾跨▼鏆傚瓨鎸囦护ID
+//            crnProtocol.setCommandId(command.getCommandId());
+//
+//            //鏇存柊鎸囦护鐘舵��
+//            commandInfo.setCommandStatus(CommandStatusType.EXECUTE.id);//鎵ц涓�
+//            commandInfo.setExecuteTime(now);
+//            commandInfoService.updateById(commandInfo);
+//
+//            //鏇存柊浠诲姟姝ュ簭
+//            TaskWrkService taskWrkService = SpringUtils.getBean(TaskWrkService.class);
+//            TaskWrk taskWrk = taskWrkService.selectByWrkNo(command.getTaskNo().intValue());
+//            if (taskWrk != null) {
+//                taskWrk.setCommandStep(taskWrk.getCommandStep() + 1);//鏇存柊鎸囦护姝ュ簭
+//                taskWrkService.updateById(taskWrk);
+//            }
+//
+//
+//        } else {
+//            OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆戝啓鍏ュ爢鍨涙満plc鏁版嵁澶辫触 ===>> [id:{1}] [ip:{2}] [port:{3}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()));
+//            log.error("鍐欏叆鍫嗗灈鏈簆lc鏁版嵁澶辫触 ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot());
+//        }
+//        return true;
+//    }
 
     private boolean writeAuto(CrnCommand command){
         if (null == command) {
diff --git a/src/main/java/com/zy/core/thread/SiemensDevpThread.java b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
index a8f5b06..53f6ee8 100644
--- a/src/main/java/com/zy/core/thread/SiemensDevpThread.java
+++ b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -205,11 +205,13 @@
      * 璇诲彇鐘舵�� ====> 鏁村潡plc
      */
     private void read() throws InterruptedException {
+        String methodName = Thread.currentThread().getStackTrace()[1].getMethodName();
+
 //        // 鏇存柊鍏ュ嚭搴撴ā寮�
 //        updateIoMode();
         ArrayList<Integer> staNos = getStaNo();
         int staNoSize = staNos.size();
-        OperateResultExOne<byte[]> result = siemensS7Net.Read("DB101.0", (short) (staNoSize*8));
+        OperateResultExOne<byte[]> result = siemensS7Net.Read("DB100.0", (short) (staNoSize*4));
         if (result.IsSuccess) {
             for (int i = 0; i < staNoSize; i++) {
                 Integer siteId = staNos.get(i); // 绔欑偣缂栧彿
@@ -219,11 +221,32 @@
                     staProtocol.setSiteId(siteId);
                     station.put(siteId, staProtocol);
                 }
-                staProtocol.setWorkNo((short)siemensS7Net.getByteTransform().TransInt32(result.Content, i*8));     // 宸ヤ綔鍙�
+                staProtocol.setWorkNo(siemensS7Net.getByteTransform().TransInt16(result.Content, i*4));     // 宸ヤ綔鍙�
 
-                staProtocol.setStaNo(siemensS7Net.getByteTransform().TransInt16(result.Content, i*8 + 4));   // 鐩爣绔�
-
-                boolean[] status = siemensS7Net.getByteTransform().TransBool(result.Content, i*8 + 6, 2);
+                staProtocol.setStaNo(siemensS7Net.getByteTransform().TransInt16(result.Content, i*4 + 2));   // 鐩爣绔�
+            }
+        }
+//        Thread.sleep(200);
+//        OperateResultExOne<byte[]> result0 = siemensS7Net.Read("DB101.0", (short) 186);
+//        if (result0.IsSuccess) {
+//            for (int i = 0; i < 93; i++) {
+//                Integer siteId = staNos.get(i); // 绔欑偣缂栧彿
+//                StaProtocol staProtocol = station.get(siteId);
+//                if (null == staProtocol) {
+//                    staProtocol = new StaProtocol();
+//                    staProtocol.setSiteId(siteId);
+//                    station.put(siteId, staProtocol);
+//                }
+//                staProtocol.setStaNo(siemensS7Net.getByteTransform().TransInt16(result0.Content, i*2));   // 鐩爣绔�
+//            }
+//        }
+        Thread.sleep(200);
+        OperateResultExOne<byte[]> result1 = siemensS7Net.Read("DB100.100", (short) (staNoSize * 2));
+        if (result1.IsSuccess) {
+            for (int i = 0; i < staNoSize; i++) {
+                Integer siteId = staNos.get(i); // 绔欑偣缂栧彿
+                boolean[] status = siemensS7Net.getByteTransform().TransBool(result1.Content, i*2, 1);
+                StaProtocol staProtocol = station.get(siteId);
                 staProtocol.setAutoing(status[0]);  // 鑷姩
                 staProtocol.setLoading(status[1]);  // 鏈夌墿
                 staProtocol.setInEnable(status[2]); // 鍙叆
@@ -239,144 +262,52 @@
             }
         }
 
-//        OperateResultExOne<byte[]> resultAgvAndPlc = siemensS7Net.Read("DB102.0", (short) 30);
-//        if (resultAgvAndPlc.IsSuccess) {
-//            for (int i = 0; i < staNoSize; i++) {
-//                int sign =(i+2)/2-1;
-//                if ((i+2)%2!=0){
-//                    Integer siteId = staNos.get(i); // 绔欑偣缂栧彿
-//                    StaProtocol staProtocol = station.get(siteId);
-//                    if (null == staProtocol) {
-//                        staProtocol = new StaProtocol();
-//                        staProtocol.setSiteId(siteId);
-//                        station.put(siteId, staProtocol);
-//                    }
-//                    staProtocol.setAgvStartPick(siemensS7Net.getByteTransform().TransInt16(resultAgvAndPlc.Content, sign*6+4));     // 鍏佽鍙栬揣
-//                    staProtocol.setAgvStartPlace((short)0);   // 鍏佽鏀捐揣
-//                    continue;
-//                }
-//                Integer siteId = staNos.get(i); // 绔欑偣缂栧彿
-//                StaProtocol staProtocol = station.get(siteId);
-//                if (null == staProtocol) {
-//                    staProtocol = new StaProtocol();
-//                    staProtocol.setSiteId(siteId);
-//                    station.put(siteId, staProtocol);
-//                }
-//                staProtocol.setAgvStartPick(siemensS7Net.getByteTransform().TransInt16(resultAgvAndPlc.Content, sign*6));     // 鍏佽鍙栬揣
-//                staProtocol.setAgvStartPlace(siemensS7Net.getByteTransform().TransInt16(resultAgvAndPlc.Content, sign*6 + 2));   // 鍏佽鏀捐揣
-//            }
-//        }
-
-//        OperateResultExOne<byte[]> resultAgvAndPlcOk = siemensS7Net.Read("DB132.0", (short) 30);
-//        if (resultAgvAndPlcOk.IsSuccess) {
-//            for (int i = 0; i < staNoSize; i++) {
-//                int sign =(i+2)/2-1;
-//                if ((i+2)%2!=0){
-//                    Integer siteId = staNos.get(i); // 绔欑偣缂栧彿
-//                    StaProtocol staProtocol = station.get(siteId);
-//                    if (null == staProtocol) {
-//                        staProtocol = new StaProtocol();
-//                        staProtocol.setSiteId(siteId);
-//                        station.put(siteId, staProtocol);
-//                    }
-//                    staProtocol.setAgvTargetPick(siemensS7Net.getByteTransform().TransInt16(resultAgvAndPlcOk.Content, sign*6+4));     // 鍏佽鍙栬揣
-//                    staProtocol.setAgvTargetPlace((short)0);   // 鍏佽鏀捐揣
-//                    continue;
-//                }
-//                Integer siteId = staNos.get(i); // 绔欑偣缂栧彿
-//                StaProtocol staProtocol = station.get(siteId);
-//                if (null == staProtocol) {
-//                    staProtocol = new StaProtocol();
-//                    staProtocol.setSiteId(siteId);
-//                    station.put(siteId, staProtocol);
-//                }
-//                try{
-//                    staProtocol.setAgvTargetPick(siemensS7Net.getByteTransform().TransInt16(resultAgvAndPlcOk.Content, sign*6));     // 鍙栬揣瀹屾垚
-//                    if (staProtocol.getAgvTargetPick()!=0){
-//                        System.out.println(staProtocol.getAgvTargetPick());
-//                    }
-//                    staProtocol.setAgvTargetPlace(siemensS7Net.getByteTransform().TransInt16(resultAgvAndPlcOk.Content, sign*6 + 2));   // 鏀捐揣瀹屾垚
-//                    if (staProtocol.getAgvTargetPlace()!=0){
-//                        System.out.println(staProtocol.getAgvTargetPlace());
-//                    }
-//                }catch (Exception e){
-//                    log.error(""+e);
-//                }
-//            }
-//        }
-
-
-        if (slave.getId() == 1) {
-            //鏉$爜
-            //Thread.sleep(200);
-            OperateResultExOne<byte[]> result2 = siemensS7Net.Read("DB101.848.0", (short) 8);
-            if (result2.IsSuccess) {
-                for (int i = 0; i < 1; i++) {
-                    String barcode = siemensS7Net.getByteTransform().TransString(result2.Content, i * 8, 8, "UTF-8");
-                    BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, i + 1);
-                    if (!Cools.isEmpty(barcodeThread) && !barcodeThread.getBarcode().equals(barcode)) {
-                        barcodeThread.setBarcode(barcode);
-                    }
-                }
-            }
-
-            //澶栧舰妫�娴�
-            OperateResultExOne<byte[]> resultErr1 = siemensS7Net.Read("DB101.810.0", (short) (barcodeSize*1));
-            StaProtocol staProtocol1 = station.get(116);
-            boolean[] status1 = siemensS7Net.getByteTransform().TransBool(resultErr1.Content, 0, 1);
-            staProtocol1.setFrontErr(status1[0]);
-            staProtocol1.setBackErr(status1[1]);
-            staProtocol1.setHighErr(status1[2]);
-            staProtocol1.setLeftErr(status1[3]);
-            staProtocol1.setRightErr(status1[4]);
-            staProtocol1.setWeightErr(status1[5]);
-            staProtocol1.setBarcodeErr(status1[6]);
-
-            OperateResultExOne<byte[]> resultErr = siemensS7Net.Read("DB101.922.0", (short) (staNoSize * 4));
-            if (resultErr.IsSuccess) {
-                for (int i = 0; i < staNoSize; i++) {
-                    Integer siteId = staNos.get(i); // 绔欑偣缂栧彿
-                    boolean[] status = siemensS7Net.getByteTransform().TransBool(resultErr.Content, i * 4, 1);
-                    StaProtocol staProtocol = station.get(siteId);
-                    staProtocol.setBreakerErr(status[0]);
-                    staProtocol.setInfraredErr(status[1]);
-                    staProtocol.setOutTimeErr(status[2]);
-                    staProtocol.setSeizeSeatErr(status[3]);
-                    staProtocol.setWrkYgoodsN(status[4]);
-                    staProtocol.setInverterErr(status[5]);
-                    staProtocol.setContactErr(status[6]);
-                    staProtocol.setUpcontactErr(status[7]);
-
+        //鏉$爜鎵弿鍣�
+        Thread.sleep(200);
+        OperateResultExOne<byte[]> result2 = siemensS7Net.Read("DB100.150",(short)(barcodeSize*8));
+        if (result2.IsSuccess) {
+            for (int i = 0; i < barcodeSize; i++) {
+                String barcode = siemensS7Net.getByteTransform().TransString(result2.Content,i*8,8, "UTF-8");
+                BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, i + 1);
+                if(!Cools.isEmpty(barcodeThread) && !barcodeThread.getBarcode().equals(barcode)) {
+                    barcodeThread.setBarcode(barcode);
                 }
             }
 
         }
+        //RGV灏忚溅
+        Thread.sleep(200);
+        OperateResultExOne<byte[]> result3 = siemensS7Net.Read("DB100.160",(short)2);
+        if (result3.IsSuccess) {
+            Integer siteId = 16;
+            StaProtocol staProtocol = station.get(siteId);
+            if (null == staProtocol) {
+                staProtocol = new StaProtocol();
+                staProtocol.setSiteId(siteId);
+                station.put(siteId, staProtocol);
+            }
+            staProtocol.setNearbySta(String.valueOf(siemensS7Net.getByteTransform().TransInt16(result3.Content, 0)));
+        }
+
+        /**
+         * 姣嶆墭鐩樺嚭搴�
+         */
+        Thread.sleep(200);
+        OperateResultExOne<byte[]> result4 = siemensS7Net.Read("DB100.172",(short)2);
+        if (result4.IsSuccess) {
+            Integer siteId = 12;
+            StaProtocol staProtocol = station.get(siteId);
+            if (null == staProtocol) {
+                staProtocol = new StaProtocol();
+                staProtocol.setSiteId(siteId);
+                station.put(siteId, staProtocol);
+            }
+            staProtocol.setAllowEmptyOut(String.valueOf(siemensS7Net.getByteTransform().TransInt16(result4.Content, 0)));
+        }
 
 
-//        //RGV鍙拌溅浣嶇疆
-//        Thread.sleep(200);
-//        OperateResultExOne<byte[]> result3 = siemensS7Net.Read("DB100.0",(short)4);
-//        if (result3.IsSuccess) {
-//            for (int i = 0; i < 2; i++) {
-//                Integer siteId = i==0 ? 1 : 2; // 绔欑偣缂栧彿
-//                StaProtocol staProtocol = station.get(siteId);
-//                if (null == staProtocol) {
-//                    staProtocol = new StaProtocol();
-//                    staProtocol.setSiteId(siteId);
-//                    station.put(siteId, staProtocol);
-//                }
-//                staProtocol.setNearbySta(String.valueOf(siemensS7Net.getByteTransform().TransInt16(result3.Content, i*2)));
-////                String aa = staProtocol.getNearbySta();
-////                System.out.println(siteId + "===>>" + staProtocol.getNearbySta());
-//            }
-//        }
 
-//        OperateResultExOne<Short> result2 = siemensS7Net.ReadInt16("DB200.0");
-//        if (result2.IsSuccess) {
-//            this.ioMode = IoModeType.get(result2.Content);
-//        }
-
-        if (result.IsSuccess ) {
+        if (result.IsSuccess && result1.IsSuccess) {
 
             OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId()));
 
@@ -395,16 +326,12 @@
             } catch (Exception e) {
                 e.printStackTrace();
                 OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戞洿鏂版暟鎹簱鏁版嵁澶辫触 ===>> [id:{1}] [ip:{2}] [port:{3}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()));
-                log.error("鏇存柊鏁版嵁搴撴暟鎹け璐� ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot());
+                log.error(methodName + ":鏇存柊鏁版嵁搴撴暟鎹け璐� ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot());
             }
 
-            DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
-            deviceErrorService.deleteDeviceError("devp", slave.getId());
         } else {
             OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戣鍙栬緭閫佺嚎plc鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()));
-//            log.error("璇诲彇杈撻�佺嚎plc鐘舵�佷俊鎭け璐� ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot());
-            DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
-            deviceErrorService.addDeviceError("devp", slave.getId(), "璇诲彇杈撻�佺嚎plc鐘舵�佷俊鎭け璐�");
+//            News.error("璇诲彇杈撻�佺嚎plc鐘舵�佷俊鎭け璐� ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot());
         }
     }
 
@@ -412,85 +339,33 @@
      * 鍐欏叆 ID+鐩爣绔� =====> 鍗曠珯鐐瑰啓鍏�
      */
     private void writeAgvOk(StaProtocol staProtocol) throws InterruptedException {
+        String methodName = Thread.currentThread().getStackTrace()[1].getMethodName();
+
         if (null == staProtocol) {
             return;
         }
         ArrayList<Integer> staNos = getStaNo();
         int index = staNos.indexOf(staProtocol.getSiteId());
-        if (staProtocol.getAgvTypeSign()==0 || staProtocol.getAgvTypeSign()==2 ){  //0鍙栬揣
-            switch (staProtocol.getSiteId()){
-                case 100:
-                    index=32;
-                    break;
-                case 101:
-                    index=34;
-                    break;
-                case 102:
-                    index=38;
-                    break;
-                case 103:
-                    index=40;
-                    break;
-                case 104:
-                    index=44;
-                    break;
-                case 105:
-                    index=46;
-                    break;
-                case 106:
-                    index=50;
-                    break;
-                case 107:
-                    index=52;
-                    break;
-                default:
-                    return;
-            }
-        }else {
-            switch (staProtocol.getSiteId()){
-                case 100:
-                    index=30;
-                    break;
-                case 102:
-                    index=36;
-                    break;
-                case 104:
-                    index=42;
-                    break;
-                case 106:
-                    index=48;
-                    break;
-                default:
-                    return;
-            }
-        }
+        short[] array = new short[2];
+        array[0] = staProtocol.getWorkNo();
+        array[1] = staProtocol.getStaNo();
+        OperateResult write = siemensS7Net.Write("DB100." + index*4, array);
 
-        OperateResult write = null;
-        //浠诲姟涓嬪彂娆℃暟
-        int writeCount = 0;
-        do {
-            short textWrite = 1;// 浠诲姟瀹屾垚
-            if (staProtocol.getAgvTypeSign()>1){
-                textWrite = 0;// 浠诲姟澶嶄綅
-            }
-            write = siemensS7Net.Write("DB102." + index, textWrite);
-            if(write.IsSuccess){
-                writeCount=6;
-            }else {
-                writeCount++;
-                log.error("鍐欏叆杈撻�佺嚎鍙栨斁璐у畬鎴愬懡浠ゅ悗璇诲彇澶辫触銆傝緭閫佺嚎plc缂栧彿={}锛岀珯鐐规暟鎹�={},鍐欏叆娆℃暟={}", slave.getId(), JSON.toJSON(staProtocol), writeCount);
-            }
-        }while (writeCount<5);
+//        OperateResult write = siemensS7Net.Write("DB100." + index*2, staProtocol.getWorkNo());    // 宸ヤ綔鍙�
+//        Thread.sleep(500);
+//        OperateResult write1 = siemensS7Net.Write("DB101." + index*2, staProtocol.getStaNo());    // 鐩爣绔�
 
         if (!write.IsSuccess) {
+            staProtocol = station.get(staProtocol.getSiteId());
+            if (staProtocol.getWorkNo() == 0 && staProtocol.getStaNo() ==0) {
+                staProtocol.setPakMk(true);
+            }
             OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戝啓鍏ヨ緭閫佺嚎绔欑偣鏁版嵁澶辫触銆傝緭閫佺嚎plc缂栧彿={1}锛岀珯鐐规暟鎹�={2}", slave.getId(), JSON.toJSON(staProtocol)));
-            log.error("鍐欏叆杈撻�佺嚎鍙栨斁璐у畬鎴愮珯鐐规暟鎹け璐ャ�傝緭閫佺嚎plc缂栧彿={}锛岀珯鐐规暟鎹�={}", slave.getId(), JSON.toJSON(staProtocol));
+            log.error(methodName + ":鍐欏叆杈撻�佺嚎绔欑偣鏁版嵁澶辫触銆傝緭閫佺嚎plc缂栧彿={}锛岀珯鐐规暟鎹�={}", slave.getId(), JSON.toJSON(staProtocol));
         } else {
             OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆� 杈撻�佺嚎鍛戒护涓嬪彂 [id:{1}] >>>>> {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(staProtocol)));
-            log.info("杈撻�佺嚎鍙栨斁璐у畬鎴愬懡浠や笅鍙戠爜鍨涘畬鎴�  缁欒緭閫佺嚎鍐欎换鍔″畬鎴� [id:{}] >>>>> 鍛戒护涓嬪彂锛� {}",  slave.getId(), JSON.toJSON(staProtocol));
+            log.info(methodName + ":杈撻�佺嚎鍛戒护涓嬪彂 [id:{}] >>>>> 鍛戒护涓嬪彂锛� {}",  slave.getId(), JSON.toJSON(staProtocol));
         }
-
-
     }
     private void write(StaProtocol staProtocol) throws InterruptedException {
         if (null == staProtocol) {
diff --git a/src/main/resources/application-prod.yml b/src/main/resources/application-prod.yml
index 9af468b..bcbe85f 100644
--- a/src/main/resources/application-prod.yml
+++ b/src/main/resources/application-prod.yml
@@ -2,72 +2,144 @@
   doubleDeep: true #鍙屾繁
   doubleLocs: 1,4,5,8 #鍙屾繁搴撲綅鎺掑彿 1,4,5,8
   groupCount: 4 #涓�涓爢鍨涙満璐熻矗鐨勮揣鏋舵帓鏁�
-  crn[0]: #鍫嗗灈鏈�1
+  # 鍫嗗灈鏈�1
+  crn[0]:
     id: 1
     ip: 10.10.10.110
-    slot: 0
-    demo: false
-    rack: 0
-    offset: 2  #鍋忕Щ閲忥紝褰撳爢鍨涙満绔欑偣鍒楀彿=1鏃讹紝鍋忕Щ閲�=2
     port: 102
-    crnOutStn[0]: #鍫嗗灈鏈哄嚭搴撶珯鐐�
-      staNo: 125
+    rack: 0
+    slot: 0
+    # 鍋忕Щ閲忥紝褰撳爢鍨涙満绔欑偣鍒楀彿=1鏃讹紝鍋忕Щ閲�=2
+    offset: 2
+    demo: false
+    # 鍫嗗灈鏈哄叆搴撶珯鐐�
+    crnInStn[0]:
+      devpPlcId: ${wcs-slave.devp[0].id}
+      staNo: 007
       row: 3
       bay: 1
-      lev: 2
+      lev: 1
+    # 鍫嗗灈鏈哄叆搴撶珯鐐�
+    crnOutStn[0]:
       devpPlcId: ${wcs-slave.devp[0].id}
-    crnInStn[0]: #鍫嗗灈鏈哄叆搴撶珯鐐�1
-      staNo: 100
+      staNo: 008
       row: 2
       bay: 1
-      lev: 2
-      backSta: 102
-      devpPlcId: ${wcs-slave.devp[0].id}
-  crn[1]: #鍫嗗灈鏈�2
+      lev: 1
+  # 鍫嗗灈鏈�2
+  crn[1]:
     id: 2
     ip: 10.10.10.120
-    slot: 0
-    demo: false
-    rack: 0
-    offset: 2  #鍋忕Щ閲忥紝褰撳爢鍨涙満绔欑偣鍒楀彿=1鏃讹紝鍋忕Щ閲�=2
     port: 102
-    crnOutStn[0]: #鍫嗗灈鏈哄嚭搴撶珯鐐�
-      staNo: 115
+    rack: 0
+    slot: 0
+    # 鍋忕Щ閲忥紝褰撳爢鍨涙満绔欑偣鍒楀彿=1鏃讹紝鍋忕Щ閲�=2
+    offset: 2
+    demo: false
+    # 鍫嗗灈鏈哄叆搴撶珯鐐�
+    crnInStn[0]:
+      devpPlcId: ${wcs-slave.devp[0].id}
+      staNo: 005
       row: 7
       bay: 1
-      lev: 2
+      lev: 1
+    # 鍫嗗灈鏈哄嚭搴撶珯鐐�
+    crnOutStn[0]:
       devpPlcId: ${wcs-slave.devp[0].id}
-    crnInStn[0]: #鍫嗗灈鏈哄叆搴撶珯鐐�1
-      staNo: 120
+      staNo: 006
       row: 6
       bay: 1
-      lev: 2
-      backSta: 106
-      devpPlcId: ${wcs-slave.devp[0].id}
-  devp[0]: #杈撻�佺嚎
-    id: 1
+      lev: 1
+  # 鍫嗗灈鏈�3
+  crn[2]:
+    id: 3
     ip: 10.10.10.130
-    rack: 0
     port: 102
+    rack: 0
     slot: 0
-    emptyInSta[0]: #绌烘澘鍏ュ簱鍙�0
-      staNo: 116
-    inSta[0]: #鍏ュ簱鍙�1
-      staNo: 116
-      backSta: 110
-      barcode: ${wcs-slave.barcode[0].id}
-    outSta[0]: #鍑哄簱鍙�1
-      staNo: 105
-    outSta[1]: #鍑哄簱鍙�2
-      staNo: 107
-    outSta[2]: #鍑哄簱鍙�2
-      staNo: 109
-    outSta[3]: #鍑哄簱鍙�1
-      staNo: 110
-  barcode[0]: #鏉$爜鎵弿浠�
-    port: 51236
-    ip: 172.17.91.39
+    # 鍋忕Щ閲忥紝褰撳爢鍨涙満绔欑偣鍒楀彿=1鏃讹紝鍋忕Щ閲�=2
+    offset: 2
+    demo: false
+    # 鍫嗗灈鏈哄叆搴撶珯鐐�
+    crnInStn[0]:
+      devpPlcId: ${wcs-slave.devp[0].id}
+      staNo: 003
+      row: 11
+      bay: 1
+      lev: 1
+    # 鍫嗗灈鏈哄嚭搴撶珯鐐�
+    crnOutStn[0]:
+      devpPlcId: ${wcs-slave.devp[0].id}
+      staNo: 004
+      row: 10
+      bay: 1
+      lev: 1
+  # 鍫嗗灈鏈�4
+  crn[3]:
+    id: 4
+    ip: 10.10.10.140
+    port: 102
+    rack: 0
+    slot: 0
+    # 鍋忕Щ閲忥紝褰撳爢鍨涙満绔欑偣鍒楀彿=1鏃讹紝鍋忕Щ閲�=2
+    offset: 2
+    demo: false
+    # 鍫嗗灈鏈哄叆搴撶珯鐐�
+    crnInStn[0]:
+      devpPlcId: ${wcs-slave.devp[0].id}
+      staNo: 001
+      row: 15
+      bay: 1
+      lev: 1
+    # 鍫嗗灈鏈哄嚭搴撶珯鐐�
+    crnOutStn[0]:
+      devpPlcId: ${wcs-slave.devp[0].id}
+      staNo: 002
+      row: 14
+      bay: 1
+      lev: 1
+  # 杈撻�佺嚎
+  devp[0]:
     id: 1
+    ip: 10.10.10.30
+    port: 102
+    rack: 0
+    slot: 0
+    # 鍏ュ簱鍙�1
+    inSta[0]:
+      staNo: 15
+      barcode: ${wcs-slave.barcode[0].id}
+      led: ${wcs-slave.led[0].id}
+    # 绌烘澘鍏ュ簱鍙�1
+    emptyInSta[0]:
+      staNo: 15
+    # 鍑哄簱鍙�1
+    outSta[0]:
+      staNo: 11
+    # 鎷f枡鍏ュ簱鍙�1
+    pickSta[0]:
+      staNo: 15
+      barcode: ${wcs-slave.barcode[0].id}
+
+  # 鏉$爜鎵弿浠�
+  barcode[0]:
+    id: 1
+    ip: 10.10.10.55
+    port: 51236
+    # LED1
+  led[0]:
+    id: 1
+    ip: 10.10.10.81
+    port: 5005
+    devpPlcId: ${wcs-slave.devp[0].id}
+    staArr: 15
+  # LED2
+  led[1]:
+    id: 2
+    ip: 10.10.10.202
+    port: 5005
+    devpPlcId: ${wcs-slave.devp[0].id}
+    staArr: 11
 #  crn[0]: #鍫嗗灈鏈�1
 #    rack: 0
 #    offset: 2    #鍋忕Щ閲忥紝褰撳爢鍨涙満绔欑偣鍒楀彿=1鏃讹紝鍋忕Щ閲�=2
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 3f61057..e5ad29d 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -1,5 +1,5 @@
 server:
-  port: 8080
+  port: 8081
   servlet:
     context-path: /@pom.build.finalName@
 
@@ -8,7 +8,7 @@
     name: @pom.build.finalName@
   datasource:
     driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
-    url: jdbc:sqlserver://127.0.0.1:1433;databasename=rywxasrs
+    url: jdbc:sqlserver://127.0.0.1:1433;databasename=sxdtasrs
     username: sa
     password: sa@123
   mvc:
@@ -37,7 +37,7 @@
 
 #License鐩稿叧閰嶇疆
 license:
-  subject: jdzwcs
+  subject: dtwcs
   publicAlias: publicCert
   storePass: public_zhongyang_123456789
   licensePath: license.lic
diff --git a/src/main/webapp/static/wcs/js/common.js b/src/main/webapp/static/wcs/js/common.js
index 44a248f..39fd058 100644
--- a/src/main/webapp/static/wcs/js/common.js
+++ b/src/main/webapp/static/wcs/js/common.js
@@ -1,4 +1,4 @@
-var baseUrl = "/jdzwcs";
+var baseUrl = "/dtwcs";
 
 // 璧嬪��
 function setVal(el, val) {
diff --git a/src/main/webapp/static/wcs/js/console.map.js b/src/main/webapp/static/wcs/js/console.map.js
index b77d4bd..6aaa765 100644
--- a/src/main/webapp/static/wcs/js/console.map.js
+++ b/src/main/webapp/static/wcs/js/console.map.js
@@ -1,382 +1,399 @@
 mapInfo = {
-    "mapName": "jdzwcs",
-    "rackCount": 13,
+    "mapName": "dtwcs",
+    "rackCount": 16,
     "crnCount": 4,
-    "stbCount": 4,
+    "stbCount": 16,
     "hpPosition": 0,
-    "minBayNo": 1,
+    "minBayNo": 2,
     "floors": 1,
     "racks": [{
         "type": "rack",
-        "id": "rack7",
-        "top": 326,
-        "left": 800,
-        "width": 795,
-        "height": 23,
-        "minBayNo": 1,
-        "maxBayNo": 22,
-        "hiddenArr": [1,22]
-    }, {
-        "type": "rack",
-        "id": "rack6",
-        "top": 303,
-        "left": 800,
-        "width": 795,
-        "height": 23,
-        "minBayNo": 1,
-        "maxBayNo": 22,
-        "hiddenArr": [1,22]
-    }, {
-        "type": "rack",
-        "id": "rack5",
-        "top": 209,
-        "left": 800,
-        "width": 795,
-        "height": 23,
-        "minBayNo": 1,
-        "maxBayNo": 22,
-        "hiddenArr": [1,22]
-    },{
-        "type": "rack",
         "id": "rack4",
-        "top": 232,
-        "left": 800,
-        "width": 795,
-        "height": 23,
-        "minBayNo": 1,
-        "maxBayNo": 22,
-        "hiddenArr": [1,22]
-    }, {
-        "type": "rack",
-        "id": "rack3",
-        "top": 182,
-        "left": 800,
-        "width": 795,
-        "height": 23,
-        "minBayNo": 1,
-        "maxBayNo": 22,
-        "hiddenArr": [1,22]
-    }, {
-        "type": "rack",
-        "id": "rack2",
-        "top": 159,
-        "left": 800,
-        "width": 795,
-        "height": 23,
-        "minBayNo": 1,
-        "maxBayNo": 22,
-        "hiddenArr": [1,22]
+        "top": 547,
+        "left": 412,
+        "width": 917,
+        "height": 22,
+        "minBayNo": 2,
+        "maxBayNo": 31
     }, {
         "type": "rack",
         "id": "rack1",
-        "top": 98,
-        "left": 800,
-        "width": 795,
-        "height": 23,
-        "minBayNo": 1,
-        "maxBayNo": 22,
-        "hiddenArr": [1,22]
+        "top": 639,
+        "left": 412,
+        "width": 917,
+        "height": 22,
+        "minBayNo": 2,
+        "maxBayNo": 31
     }, {
         "type": "rack",
-        "id": "rack0",
-        "top": 75,
-        "left": 800,
-        "width": 795,
-        "height": 23,
-        "minBayNo": 1,
-        "maxBayNo": 22,
-        "hiddenArr": [1,22]
+        "id": "rack2",
+        "top": 617,
+        "left": 412,
+        "width": 917,
+        "height": 22,
+        "minBayNo": 2,
+        "maxBayNo": 31
+    }, {
+        "type": "rack",
+        "id": "rack3",
+        "top": 569,
+        "left": 412,
+        "width": 917,
+        "height": 22,
+        "minBayNo": 2,
+        "maxBayNo": 31
+    }, {
+        "type": "rack",
+        "id": "rack8",
+        "top": 433,
+        "left": 412,
+        "width": 917,
+        "height": 22,
+        "minBayNo": 2,
+        "maxBayNo": 31
+    }, {
+        "type": "rack",
+        "id": "rack5",
+        "top": 525,
+        "left": 412,
+        "width": 917,
+        "height": 22,
+        "minBayNo": 2,
+        "maxBayNo": 31
+    }, {
+        "type": "rack",
+        "id": "rack6",
+        "top": 503,
+        "left": 412,
+        "width": 917,
+        "height": 22,
+        "minBayNo": 2,
+        "maxBayNo": 31
+    }, {
+        "type": "rack",
+        "id": "rack7",
+        "top": 455,
+        "left": 412,
+        "width": 917,
+        "height": 22,
+        "minBayNo": 2,
+        "maxBayNo": 31
+    }, {
+        "type": "rack",
+        "id": "rack12",
+        "top": 320,
+        "left": 412,
+        "width": 917,
+        "height": 22,
+        "minBayNo": 2,
+        "maxBayNo": 31
+    }, {
+        "type": "rack",
+        "id": "rack9",
+        "top": 411,
+        "left": 412,
+        "width": 917,
+        "height": 22,
+        "minBayNo": 2,
+        "maxBayNo": 31
+    }, {
+        "type": "rack",
+        "id": "rack10",
+        "top": 389,
+        "left": 412,
+        "width": 917,
+        "height": 22,
+        "minBayNo": 2,
+        "maxBayNo": 31
+    }, {
+        "type": "rack",
+        "id": "rack11",
+        "top": 342,
+        "left": 412,
+        "width": 917,
+        "height": 22,
+        "minBayNo": 2,
+        "maxBayNo": 31
+    }, {
+        "type": "rack",
+        "id": "rack16",
+        "top": 204,
+        "left": 412,
+        "width": 917,
+        "height": 22,
+        "minBayNo": 2,
+        "maxBayNo": 31
+    }, {
+        "type": "rack",
+        "id": "rack13",
+        "top": 298,
+        "left": 412,
+        "width": 917,
+        "height": 22,
+        "minBayNo": 2,
+        "maxBayNo": 31
+    }, {
+        "type": "rack",
+        "id": "rack15",
+        "top": 226,
+        "left": 412,
+        "width": 917,
+        "height": 22,
+        "minBayNo": 2,
+        "maxBayNo": 31
+    }, {
+        "type": "rack",
+        "id": "rack14",
+        "top": 276,
+        "left": 412,
+        "width": 917,
+        "height": 22,
+        "minBayNo": 2,
+        "maxBayNo": 31
+    }],
+    "rackDescs": [{
+        "type": "rackDescs",
+        "id": "lb_desc16",
+        "text": "#1",
+        "top": 663,
+        "left": 1228,
+        "width": 30,
+        "height": 23
+    }, {
+        "type": "rackDescs",
+        "id": "lb_desc1",
+        "text": "#16",
+        "top": 181,
+        "left": 1217,
+        "width": 41,
+        "height": 23
     }],
     "crns": [{
         "type": "crane",
-        "id": "crn-2",
-        "text": "2",
-        "top": 268,
-        "left": 855,
+        "id": "crn-1",
+        "text": "1",
+        "top": 252,
+        "left": 501,
         "width": 93,
         "height": 22
     }, {
+        "type": "track",
+        "id": "lb_track1",
+        "text": "",
+        "top": 605,
+        "left": 332,
+        "width": 1042,
+        "height": 2
+    }, {
         "type": "crane",
-        "id": "crn-1",
-        "text": "1",
-        "top": 132,
-        "left": 855,
+        "id": "crn-2",
+        "text": "2",
+        "top": 367,
+        "left": 512,
         "width": 93,
         "height": 22
     }, {
         "type": "track",
         "id": "lb_track2",
         "text": "",
-        "top": 278,
-        "left": 769,
-        "width": 850,
+        "top": 489,
+        "left": 332,
+        "width": 1043,
+        "height": 2
+    }, {
+        "type": "crane",
+        "id": "crn-3",
+        "text": "3",
+        "top": 481,
+        "left": 501,
+        "width": 93,
+        "height": 22
+    }, {
+        "type": "track",
+        "id": "lb_track5",
+        "text": "",
+        "top": 376,
+        "left": 333,
+        "width": 1045,
         "height": 2
     }, {
         "type": "track",
-        "id": "lb_track1",
+        "id": "lb_track4",
         "text": "",
-        "top": 143,
-        "left": 769,
-        "width": 850,
+        "top": 260,
+        "left": 335,
+        "width": 1046,
         "height": 2
+    }, {
+        "type": "crane",
+        "id": "crn-4",
+        "text": "4",
+        "top": 595,
+        "left": 501,
+        "width": 93,
+        "height": 22
     }],
     "areas": [{
         "type": "Control_floor",
         "id": "tabControl_floor1",
         "text": "妤煎眰",
-        "top": 66,
-        "left": 580,
-        "width": 334,
-        "height": 714,
+        "top": 68,
+        "left": 80,
+        "width": 1400,
+        "height": 680,
         "floors": [{
             "type": "floor",
             "id": "page_floor1",
             "text": "1F",
             "top": 4,
-            "left": 422,
-            "width": 308,
-            "height": 706,
+            "left": 22,
+            "width": 1374,
+            "height": 672,
             "stns": [{
                 "type": "stn",
-                "id": "site-100",
-                "text": "100",
-                "top": 99,
-                "left": 771,
-                "width": 62,
-                "height": 23
-            },{
+                "id": "site-016",
+                "text": "016",
+                "top": 457,
+                "left": 239,
+                "width": 69,
+                "height": 20
+            }, {
+                "type": "track",
+                "id": "lb_trCart21",
+                "text": "",
+                "top": 93,
+                "left": 243,
+                "width": 6,
+                "height": 569
+            }, {
+                "type": "track",
+                "id": "lb_trCart22",
+                "text": "",
+                "top": 93,
+                "left": 297,
+                "width": 6,
+                "height": 569
+            }, {
                 "type": "stn",
-                "id": "site-101",
-                "text": "101",
-                "top": 99,
-                "left": 707,
-                "width": 62,
-                "height": 23
-            },{
+                "id": "site-015",
+                "text": "015",
+                "top": 95,
+                "left": 310,
+                "width": 100,
+                "height": 20
+            }, {
                 "type": "stn",
-                "id": "site-102",
-                "text": "102",
-                "top": 99,
-                "left": 643,
-                "width": 62,
-                "height": 23
-            },{
+                "id": "site-014",
+                "text": "014",
+                "top": 95,
+                "left": 412,
+                "width": 92,
+                "height": 20
+            }, {
                 "type": "stn",
-                "id": "site-103",
-                "text": "103",
-                "top": 99,
-                "left": 579,
-                "width": 62,
-                "height": 23
-            },{
+                "id": "site-013",
+                "text": "013",
+                "top": 117,
+                "left": 412,
+                "width": 92,
+                "height": 20
+            }, {
                 "type": "stn",
-                "id": "site-104",
-                "text": "104",
-                "top": 124,
-                "left": 579,
-                "width": 62,
-                "height": 34
-            },{
+                "id": "site-012",
+                "text": "012",
+                "top": 139,
+                "left": 412,
+                "width": 92,
+                "height": 20
+            }, {
                 "type": "stn",
-                "id": "site-125",
-                "text": "125",
-                "top": 160,
-                "left": 771,
-                "width": 62,
-                "height": 23
-            },{
+                "id": "site-011",
+                "text": "011",
+                "top": 161,
+                "left": 412,
+                "width": 92,
+                "height": 20
+            }, {
                 "type": "stn",
-                "id": "site-124",
-                "text": "124",
-                "top": 160,
-                "left": 707,
-                "width": 62,
-                "height": 23
-            },{
+                "id": "site-010",
+                "text": "010",
+                "top": 183,
+                "left": 412,
+                "width": 92,
+                "height": 20
+            }, {
                 "type": "stn",
-                "id": "site-123",
-                "text": "123",
-                "top": 160,
-                "left": 643,
-                "width": 62,
-                "height": 23
-            },{
+                "id": "site-009",
+                "text": "009",
+                "top": 183,
+                "left": 310,
+                "width": 100,
+                "height": 20
+            }, {
                 "type": "stn",
-                "id": "site-122",
-                "text": "122",
-                "top": 160,
-                "left": 579,
-                "width": 62,
-                "height": 23
-            },{
+                "id": "site-008",
+                "text": "008",
+                "top": 228,
+                "left": 310,
+                "width": 100,
+                "height": 20
+            }, {
                 "type": "stn",
-                "id": "site-121",
-                "text": "121",
-                "top": 186,
-                "left": 579,
-                "width": 62,
-                "height": 42
-            },{
+                "id": "site-007",
+                "text": "007",
+                "top": 278,
+                "left": 310,
+                "width": 100,
+                "height": 20
+            }, {
                 "type": "stn",
-                "id": "site-120",
-                "text": "120",
-                "top": 231,
-                "left": 771,
-                "width": 62,
-                "height": 23
-            },{
+                "id": "site-006",
+                "text": "006",
+                "top": 344,
+                "left": 310,
+                "width": 100,
+                "height": 20
+            }, {
                 "type": "stn",
-                "id": "site-119",
-                "text": "119",
-                "top": 231,
-                "left": 707,
-                "width": 62,
-                "height": 23
-            },{
+                "id": "site-005",
+                "text": "005",
+                "top": 391,
+                "left": 310,
+                "width": 100,
+                "height": 20
+            }, {
                 "type": "stn",
-                "id": "site-118",
-                "text": "118",
-                "top": 231,
-                "left": 643,
-                "width": 62,
-                "height": 23
-            },{
+                "id": "site-004",
+                "text": "004",
+                "top": 457,
+                "left": 310,
+                "width": 100,
+                "height": 20
+            }, {
                 "type": "stn",
-                "id": "site-117",
-                "text": "117",
-                "top": 231,
-                "left": 579,
-                "width": 62,
-                "height": 23
-            },{
+                "id": "site-003",
+                "text": "003",
+                "top": 505,
+                "left": 310,
+                "width": 100,
+                "height": 20
+            }, {
                 "type": "stn",
-                "id": "site-116",
-                "text": "116",
-                "top": 256,
-                "left": 579,
-                "width": 62,
-                "height": 46
-            },{
+                "id": "site-002",
+                "text": "002",
+                "top": 571,
+                "left": 310,
+                "width": 100,
+                "height": 20
+            }, {
                 "type": "stn",
-                "id": "site-115",
-                "text": "115",
-                "top": 304,
-                "left": 771,
-                "width": 62,
-                "height": 23
-            },{
-                "type": "stn",
-                "id": "site-114",
-                "text": "114",
-                "top": 304,
-                "left": 707,
-                "width": 62,
-                "height": 23
-            },{
-                "type": "stn",
-                "id": "site-113",
-                "text": "113",
-                "top": 304,
-                "left": 643,
-                "width": 62,
-                "height": 23
-            },{
-                "type": "stn",
-                "id": "site-112",
-                "text": "112",
-                "top": 304,
-                "left": 579,
-                "width": 62,
-                "height": 23
-            },{
-                "type": "stn",
-                "id": "site-105",
-                "text": "105",
-                "top": 99,
-                "left": 515,
-                "width": 62,
-                "height": 23
-            },{
-                "type": "stn",
-                "id": "site-106",
-                "text": "106",
-                "top": 124,
-                "left": 515,
-                "width": 62,
-                "height": 34
-            },{
-                "type": "stn",
-                "id": "site-107",
-                "text": "107",
-                "top": 160,
-                "left": 515,
-                "width": 62,
-                "height": 23
-            },{
-                "type": "stn",
-                "id": "site-108",
-                "text": "108",
-                "top": 186,
-                "left": 515,
-                "width": 62,
-                "height": 42
-            },{
-                "type": "stn",
-                "id": "site-109",
-                "text": "109",
-                "top": 231,
-                "left": 515,
-                "width": 62,
-                "height": 70
-            },{
-                "type": "stn",
-                "id": "site-110",
-                "text": "110",
-                "top": 304,
-                "left": 515,
-                "width": 62,
-                "height": 23
-            },{
-                "type": "stn",
-                "id": "site-111",
-                "text": "111",
-                "top": 329,
-                "left": 515,
-                "width": 62,
-                "height": 23
-            },{
-                "type": "stn",
-                "id": "site-1001",
-                "text": "1001",
-                "top": 99,
-                "left": 451,
-                "width": 62,
-                "height": 23
-            },{
-                "type": "stn",
-                "id": "site-1002",
-                "text": "1002",
-                "top": 160,
-                "left": 451,
-                "width": 62,
-                "height": 23
-            },{
-                "type": "stn",
-                "id": "site-1003",
-                "text": "1003",
-                "top": 231,
-                "left": 451,
-                "width": 62,
-                "height": 23
-            },{
-                "type": "stn",
-                "id": "site-1004",
-                "text": "1004",
-                "top": 304,
-                "left": 451,
-                "width": 62,
-                "height": 23
-            } ]
+                "id": "site-001",
+                "text": "001",
+                "top": 619,
+                "left": 310,
+                "width": 100,
+                "height": 20
+            }]
         }]
     }]
 }
\ No newline at end of file
diff --git a/src/main/webapp/static/wms/js/common.js b/src/main/webapp/static/wms/js/common.js
index 4882225..2538189 100644
--- a/src/main/webapp/static/wms/js/common.js
+++ b/src/main/webapp/static/wms/js/common.js
@@ -1,4 +1,4 @@
-var baseUrl = "/jdzwcs";
+var baseUrl = "/dtwcs";
 
 // 璇︽儏绐楀彛-楂樺害
 var detailHeight = '80%';

--
Gitblit v1.9.1