From 2aa128b440d7b1b571ef48f175e6bde2231ae988 Mon Sep 17 00:00:00 2001
From: zwl <1051256694@qq.com>
Date: 星期四, 25 十二月 2025 14:41:14 +0800
Subject: [PATCH] 1.初始化 2.新增拍照

---
 src/main/java/com/zy/asrs/utils/VersionUtils.java           |   14 +
 src/main/java/com/zy/asrs/entity/BasDevp.java               |    4 
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |  527 +++++++++++++-----------------------
 src/main/resources/mapper/LocMastMapper.xml                 |    1 
 src/main/java/com/zy/asrs/entity/WrkMast.java               |   16 
 src/main/resources/mapper/WrkMastMapper.xml                 |    1 
 src/main/java/com/zy/core/model/command/CrnCommand.java     |    5 
 src/main/java/com/zy/core/model/protocol/CrnProtocol.java   |    5 
 src/main/java/com/zy/core/model/protocol/StaProtocol.java   |    4 
 src/main/java/com/zy/common/utils/HikUtils.java             |   39 ++
 src/main/java/com/zy/asrs/entity/LocMast.java               |    3 
 src/main/java/com/zy/core/thread/SiemensDevpThread.java     |  181 +++++-------
 src/main/resources/application.yml                          |   16 
 13 files changed, 362 insertions(+), 454 deletions(-)

diff --git a/src/main/java/com/zy/asrs/entity/BasDevp.java b/src/main/java/com/zy/asrs/entity/BasDevp.java
index 1e3d022..4ce18b6 100644
--- a/src/main/java/com/zy/asrs/entity/BasDevp.java
+++ b/src/main/java/com/zy/asrs/entity/BasDevp.java
@@ -94,9 +94,9 @@
     private String downing;
 
     /**
-     * 闇�姹�1
+     * 鏂欐灦
      */
-    @ApiModelProperty(value= "闇�姹�1")
+    @ApiModelProperty(value= "鏂欐灦")
     private String inreq1;
 
     /**
diff --git a/src/main/java/com/zy/asrs/entity/LocMast.java b/src/main/java/com/zy/asrs/entity/LocMast.java
index cd931b9..53a4be3 100644
--- a/src/main/java/com/zy/asrs/entity/LocMast.java
+++ b/src/main/java/com/zy/asrs/entity/LocMast.java
@@ -174,6 +174,9 @@
     @TableField("ctn_no")
     private String ctnNo;
 
+    @ApiModelProperty(value= "鎷嶇収鍥剧墖")
+    private String pic;
+
     public String getIoTime$(){
         if (Cools.isEmpty(this.ioTime)){
             return "";
diff --git a/src/main/java/com/zy/asrs/entity/WrkMast.java b/src/main/java/com/zy/asrs/entity/WrkMast.java
index e1b047f..a6d4448 100644
--- a/src/main/java/com/zy/asrs/entity/WrkMast.java
+++ b/src/main/java/com/zy/asrs/entity/WrkMast.java
@@ -48,6 +48,14 @@
     private Integer whsType;
 
     /**
+     * 0锛氶渶瑕佸垱寤篴gv鎼繍绌烘枡鏋朵换鍔�
+     * 1锛歸ms鎴愬姛鍒涘缓agv鎼繍绌烘枡鏋朵换鍔�
+     */
+    @ApiModelProperty(value= "闇�瑕佷笅鍙慳gv浠诲姟鐨勭姸鎬�")
+    @TableField("ctn_type")
+    private Integer ctnType;
+
+    /**
      * 宸ヤ綔鐘舵��
      */
     @ApiModelProperty(value= "宸ヤ綔鐘舵��")
@@ -157,10 +165,6 @@
     @ApiModelProperty(value= "宸ヤ綔鏃堕棿")
     @TableField("io_time")
     private Date ioTime;
-
-    @ApiModelProperty(value= "")
-    @TableField("ctn_type")
-    private Integer ctnType;
 
     @ApiModelProperty(value= "")
     private String packed;
@@ -309,6 +313,10 @@
     @TableField("full_plt")
     private String fullPlt;
 
+    @ApiModelProperty(value= "鎷嶇収鍥剧墖")
+    private String pic;
+
+
     public String getWrkSts$(){
         BasWrkStatusMapper mapper = SpringUtils.getBean(BasWrkStatusMapper.class);
         BasWrkStatus entity = mapper.selectById(this.wrkSts);
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 d5cf0fe..c3bf91c 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -13,16 +13,14 @@
 import com.zy.asrs.mapper.WrkMastMapper;
 import com.zy.asrs.service.*;
 import com.zy.asrs.utils.Utils;
+import com.zy.asrs.utils.VersionUtils;
 import com.zy.common.constant.RedisConstantType;
 import com.zy.common.model.LocTypeDto;
 import com.zy.common.model.MatDto;
 import com.zy.common.model.SearchLocParam;
 import com.zy.common.model.StartupDto;
 import com.zy.common.service.CommonService;
-import com.zy.common.utils.CollectionUtils;
-import com.zy.common.utils.HttpHandler;
-import com.zy.common.utils.News;
-import com.zy.common.utils.RedisUtil;
+import com.zy.common.utils.*;
 import com.zy.core.CrnThread;
 import com.zy.core.DevpThread;
 import com.zy.core.cache.MessageQueue;
@@ -49,6 +47,7 @@
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.interceptor.TransactionAspectSupport;
 
+import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -100,6 +99,9 @@
     @Value("${wms.url}")
     private String wmsUrl;
 
+    @Autowired
+    private HikUtils hikUtils;
+
     /**
      * 缁勬墭
      * 鍏ュ簱绔欙紝鏍规嵁鏉$爜鎵弿鐢熸垚鍏ュ簱宸ヤ綔妗o紝宸ヤ綔鐘舵�� 2
@@ -136,9 +138,7 @@
                         && staProtocol.isInEnable()
                         && !staProtocol.isEmptyMk()
                         && staProtocol.getWorkNo() == 9999
-                        && staProtocol.isPakMk()
-//                        && (staProtocol.getEmptyInType() != 1 && staProtocol.getEmptyInType() != 2)
-                ) {
+                        && staProtocol.isPakMk()) {
                     News.warnNoLog("" + mark + " - 0" + " - 寮�濮嬫墽琛�");
 
                     String barcode = barcodeThread.getBarcode();
@@ -422,7 +422,7 @@
                             // 鏇存柊绔欑偣淇℃伅 涓� 涓嬪彂plc鍛戒护
                             staProtocol.setWorkNo(wrkMast.getWrkNo().shortValue());
                             staProtocol.setStaNo(wrkMast.getStaNo().shortValue());
-                            staProtocol.setPalletSize(locMast.getLocType2());
+//                            staProtocol.setPalletSize(locMast.getLocType2());
                             devpThread.setPakMk(staProtocol.getSiteId(), false);
                             boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
                             if (!result) {
@@ -959,14 +959,12 @@
      * 鍏ュ簱  ===>>  鍫嗗灈鏈虹珯鍒板簱浣�
      */
     public synchronized void crnStnToLoc(CrnSlave slave, CrnProtocol crnProtocol, Integer mark) {
-        News.warnNoLog("" + mark + " - 1" + " - 0" + " - 鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂锛氭墽琛屽叆搴�");
         for (CrnSlave.CrnStn crnStn : slave.getCrnInStn()) {
             boolean flag = false;
             // 鑾峰彇鍫嗗灈鏈哄叆搴撶珯淇℃伅
             DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, crnStn.getDevpPlcId());
             StaProtocol staProtocol = devpThread.getStation().get(crnStn.getStaNo());
             if (staProtocol == null) {
-                News.infoNoLog("" + mark + " - 1" + " - 1" + " - 鍫嗗灈鏈哄叆搴撶珯淇℃伅(staProtocol!=null缁х画鎵ц)锛歴taProtocol=" + staProtocol);
                 continue;
             } else {
                 staProtocol = staProtocol.clone();
@@ -974,7 +972,7 @@
             // 鏌ヨ绔欑偣璇︾粏淇℃伅
             BasDevp staDetl = basDevpService.selectById(crnStn.getStaNo());
             if (staDetl == null) {
-                News.error("" + mark + " - 1" + " - 2" + " - 鍏ュ簱 ===>> 鍫嗗灈鏈虹珯鐐瑰湪鏁版嵁搴撲笉瀛樺湪, 绔欑偣缂栧彿={}", crnStn.getStaNo());
+                News.error("鍏ュ簱 ===>> 鍫嗗灈鏈虹珯鐐瑰湪鏁版嵁搴撲笉瀛樺湪, 绔欑偣缂栧彿={}", crnStn.getStaNo());
                 continue;
             }
             if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() > 0 && staProtocol.isInEnable()
@@ -982,33 +980,27 @@
                 flag = true;
             }
             if (!flag) {
-                News.errorNoLog("" + mark + " - 1" + " - 3" + " - 鍫嗗灈鏈哄叆搴撶珯淇℃伅(浠ヤ笅闇�瑕佸叏true):"
-                        + "鑷姩淇″彿" + staProtocol.isAutoing() + "鏈夌墿淇″彿" + staProtocol.isLoading()
-                        + "宸ヤ綔鍙�>0" + staProtocol.getWorkNo() + "鍙叆淇″彿" + staProtocol.isInEnable()
-                        + "鑳藉叆淇″彿锛坵ms璁剧疆锛�.equals(\"Y\")" + staDetl.getCanining());
                 continue;
             }
             // 鑾峰彇宸ヤ綔鐘舵�佷负2锛堣澶囦笂璧帮級鐨勫叆搴撳伐浣滄。
             WrkMast wrkMast = wrkMastMapper.selectPakInStep2(slave.getId(), staProtocol.getWorkNo().intValue(), crnStn.getStaNo());
             if (null == wrkMast) {
-                News.infoNoLog("" + mark + " - 1" + " - 4" + " - 鏌ヨ鏃犲緟鍏ュ簱鏁版嵁--wrk_sts=2, 宸ヤ綔鍙�={}", staProtocol.getWorkNo());
 //                log.error("鏌ヨ鏃犲緟鍏ュ簱鏁版嵁--wrk_sts=2, 宸ヤ綔鍙�={}", staProtocol.getWorkNo());
                 continue;
             }
             // 鑾峰彇搴撲綅淇℃伅
             LocMast locMast = locMastService.selectById(wrkMast.getLocNo());
             if (locMast == null) {
-                News.error("" + mark + " - 1" + " - 5" + " - 鏌ヨ搴撳瓨鏃犳暟鎹�--搴撲綅鍙穥}", wrkMast.getLocNo());
+                News.error("鏌ヨ搴撳瓨鏃犳暟鎹�--搴撲綅鍙穥}", wrkMast.getLocNo());
                 continue;
             }
             if (!locMast.getLocSts().equals("S") && !locMast.getLocSts().equals("Q")) {
-                News.error("" + mark + " - 1" + " - 6" + " - 鍏ュ簱鎿嶄綔搴撲綅鐘舵�佷笉绗﹀悎--鐘舵��, 搴撲綅鍙�={}锛屽簱浣嶇姸鎬�={}", wrkMast.getLocNo(), locMast.getLocSts());
+                News.error("鍏ュ簱鎿嶄綔搴撲綅鐘舵�佷笉绗﹀悎--鐘舵��, 搴撲綅鍙�={}锛屽簱浣嶇姸鎬�={}", wrkMast.getLocNo(), locMast.getLocSts());
                 continue;
             }
 
             // 鍫嗗灈鏈烘帶鍒惰繃婊�
             if (!crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() != 0) {
-//                News.infoNoLog(""+mark+" - 1"+" - 7"+" - 鍫嗗灈鏈烘帶鍒惰繃婊�:鍫嗗灈鏈烘槸鍚︾┖闂�={}锛屼换鍔″彿={}", crnProtocol.getStatusType(),crnProtocol.getTaskNo());
                 continue;
             }
 
@@ -1017,89 +1009,92 @@
                 continue;
             }
 
-//            if (crnProtocol.getCrnNo() == 1) {
-//                //鍒ゆ柇鍫嗗灈鏈哄拰褰撳墠浠诲姟鏄惁澶勪簬涓�涓贩閬�
-//                if (Utils.getLaneByLocNo(wrkMast.getLocNo()) != crnProtocol.getCrnLane()) {
-//                    //鍒ゆ柇鍫嗗灈鏈烘墍鍦ㄥ贩閬撴槸鍚﹀瓨鍦ㄥ叾浠栦换鍔★紝濡傚瓨鍦ㄥ垯浼樺厛鎵ц
-//                    List<WrkMast> currentWrkMasts = wrkMastService.selectLaneWrkMast(crnProtocol.getCrnLane(), false);
-////                    if (!currentWrkMasts.isEmpty()) {
-////                        continue;//褰撳墠鍫嗗灈鏈烘墍鍦ㄥ贩閬撳瓨鍦ㄤ换鍔�
-////                    }
-//                }
-//            }
-
             // 鍙屾繁搴撲綅涓旀祬搴撲綅鏈夎揣锛屽垯闇�鍏堝娴呭簱浣嶈繘琛屽簱浣嶇Щ杞�
             if (Utils.isDeepLoc(slaveProperties, wrkMast.getLocNo())) {
-                News.warnNoLog("" + mark + " - 1" + " - 8" + " - 鍙屾繁搴撲綅涓旀祬搴撲綅鏈夎揣锛屽垯闇�鍏堝娴呭簱浣嶈繘琛屽簱浣嶇Щ杞� : 寮�濮嬫墽琛� 浠诲姟鍙�={}", wrkMast.getWrkNo());
                 String shallowLocNo = Utils.getShallowLoc(slaveProperties, wrkMast.getLocNo());
                 LocMast shallowLoc = locMastService.selectById(shallowLocNo);
                 // O.绌哄簱浣嶃�丵.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴撱�丼.鍏ュ簱棰勭害銆乆.绂佺敤 鐩存帴鎼紒
                 if (shallowLoc.getLocSts().equals("P") || shallowLoc.getLocSts().equals("R")) {
-                    News.warn("" + mark + " - 1" + " - 9" + " - // O.绌哄簱浣嶃�丵.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴撱�丼.鍏ュ簱棰勭害銆乆.绂佺敤 鐩存帴鎼紒搴撲綅={},搴撲綅鐘舵��={}", shallowLoc.getLocNo(), shallowLoc.getLocSts());
                     WrkMast waitWrkMast = wrkMastMapper.selectByLocNo(shallowLocNo);
                     if (null == waitWrkMast) {
-                        News.error("" + mark + " - 1" + " - 10" + " - {}搴撲綅寮傚父锛屾湭妫�绱㈠埌鐩稿簲宸ヤ綔妗o紒", shallowLocNo);
+                        News.error("{}搴撲綅寮傚父锛屾湭妫�绱㈠埌鐩稿簲宸ヤ綔妗o紒", shallowLocNo);
                     } else {
-                        if (waitWrkMast.getWrkSts() != 14 && waitWrkMast.getIoType() > 100) {
-                            waitWrkMast.setIoPri(15D);
-                            waitWrkMast.setModiTime(new Date());
-                            if (wrkMastMapper.updateById(waitWrkMast) == 0) {
-                                News.error("" + mark + " - 1" + " - 11" + " - 璋冩暣宸ヤ綔妗d紭鍏堢骇澶辫触锛佸伐浣滃彿={}", waitWrkMast.getWrkNo());
-                            }
-                            continue;
+                        waitWrkMast.setIoPri(15D);
+                        waitWrkMast.setModiTime(new Date());
+                        if (wrkMastMapper.updateById(waitWrkMast) == 0) {
+                            News.error("璋冩暣宸ヤ綔妗d紭鍏堢骇澶辫触锛佸伐浣滃彿={}", waitWrkMast.getWrkNo());
                         }
-
-                        if (waitWrkMast.getWrkSts() < 5 && waitWrkMast.getIoType() < 100) {
-                            continue;//鏈変换鍔$姝㈡惉杩愶紝鏈夊彲鑳芥祬搴撲綅鐘舵�佽繕鏈彉鏇村畬鎴�
-                        }
+                        continue;
                     }
 
                 } else if (shallowLoc.getLocSts().equals("F") || shallowLoc.getLocSts().equals("D")) {
-                    News.warn("" + mark + " - 1" + " - 12" + " - // F銆丏  搴撲綅={},搴撲綅鐘舵��={}", shallowLoc.getLocNo(), shallowLoc.getLocSts());
                     // 姝ゆ爣璁伴伩鍏嶅娆℃墽琛岀Щ搴撲换鍔�
                     if (Cools.isEmpty(wrkMast.getUpdMk()) || "N".equals(wrkMast.getUpdMk())) {
-                        if (moveLocForDeepLoc(slave, crnProtocol, shallowLoc, mark)) {
-                            wrkMast.setUpdMk("Y");
-                            wrkMast.setIoPri(14D);
-                            wrkMastMapper.updateById(wrkMast);
-                        }
-//                        wrkMast.setUpdMk("Y");
-//                        wrkMast.setIoPri(14D);
-//                        wrkMastMapper.updateById(wrkMast);
-//                        // 鐢熸垚宸ヤ綔妗�,灏嗘祬搴撲綅绉昏浆鍒版柊鐨勫簱浣嶄腑
-//                        moveLocForDeepLoc(slave, shallowLoc,mark);
+                        wrkMast.setUpdMk("Y");
+                        wrkMast.setIoPri(14D);
+                        wrkMastMapper.updateById(wrkMast);
+                        // 鐢熸垚宸ヤ綔妗�,灏嗘祬搴撲綅绉昏浆鍒版柊鐨勫簱浣嶄腑
+                        moveLocForDeepLoc(slave, shallowLoc);
                         // 鐢熸垚宸ヤ綔妗c�佹敼鍙樻祬搴撲綅鐨勬簮搴�/鐩爣搴� 搴撲綅鐘舵�併�佷笅鍙戝爢鍨涙満鍛戒护锛堢珛椹墽琛�)
 //                        moveLocForDeepLocPakin(slave, shallowLoc, wrkMast);
                     }
                     continue;
                 } else if (shallowLoc.getLocSts().equals("Q")) {
-                    News.warn("" + mark + " - 1" + " - 13" + " - // Q  搴撲綅={},搴撲綅鐘舵��={}", shallowLoc.getLocNo(), shallowLoc.getLocSts());
                     WrkMast waitWrkMast = wrkMastMapper.selectByLocNo(shallowLocNo);
                     if (null != waitWrkMast && waitWrkMast.getWrkSts() == 4) {
-                        News.infoNoLog("" + mark + " - 1" + " - 14" + " - // F銆丏  宸ヤ綔鐘舵��(鍒ゆ柇鏉′欢涓�==4)={}", waitWrkMast.getWrkSts());
                         continue;
                     }
                 }
             }
-            News.info("" + mark + " - 1" + " - 15" + " - 鍛戒护涓嬪彂 : 宸ヤ綔鍙�={},婧愭帓={},婧愬垪={},婧愬眰={},鐩爣鎺�={},鐩爣鍒�={},鐩爣灞�={}", wrkMast.getWrkNo().shortValue()
-                    , crnStn.getRow().shortValue(), crnStn.getBay().shortValue(), crnStn.getLev().shortValue()
-                    , locMast.getRow1().shortValue(), locMast.getBay1().shortValue(), locMast.getLev1().shortValue());
+            String ip = "";
+            if (wrkMast.getStaNo()==401){
+                ip = "172.26.4.231";
+            }else if (wrkMast.getStaNo()==402){
+                ip = "172.26.4.232";
+            }else if (wrkMast.getStaNo()==307){
+                ip = "172.26.1.231";
+            }else if (wrkMast.getStaNo()==303){
+                ip = "172.26.1.232";
+            }else if (wrkMast.getStaNo()==304){
+                ip = "172.26.1.233";
+            }
+            SimpleDateFormat sf = new SimpleDateFormat("yyyyMMddHHmmss");
+            String newName = sf.format(new Date()) + "_" + locMast.getLocNo();
+            String pic = wrkMast.getPic();
+            List<String> list = null;
+            if (Cools.isEmpty(pic)) {
+                list = new ArrayList<>();
+            } else {
+                list = JSON.parseArray(pic, String.class);
+            }
+            list.add(newName);
+            //鍏ュ簱鍓嶆姄鎷�
+            try {
+                hikUtils.startPic(ip, newName + ".jpg");
+            } catch (Exception e) {
+                log.error("鍏ュ簱鍓嶆姄鎷�");
+            }
+
 
             // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
             CrnCommand crnCommand = new CrnCommand();
             crnCommand.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙�
             crnCommand.setTaskNo(wrkMast.getWrkNo().shortValue()); // 宸ヤ綔鍙�
-//            crnCommand.setAckFinish((short) 0);  // 浠诲姟瀹屾垚纭浣�
+            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.setDestinationPosX(locMast.getRow1().shortValue());     // 鐩爣搴撲綅鎺�
             crnCommand.setDestinationPosY(locMast.getBay1().shortValue());     // 鐩爣搴撲綅鍒�
-            crnCommand.setDestinationPosZ(locMast.getLev1().shortValue());     // 鐩爣搴撲綅灞�
+            crnCommand.setDestinationPosZ(locMast.getLev1().shortValue());     // 鐩爣搴撲綅灞俓
+            crnCommand.setBarcode(wrkMast.getBarcode());//鎵樼洏鐮�
+            log.error("768 鍫嗗灈鏈哄懡浠や笅鍙�" + crnCommand);
             if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getCrnNo(), new Task(2, crnCommand))) {
-                News.error("" + mark + " - 1" + " - 16" + " - 鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand));
+                News.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand));
             } else {
+                log.error("772 鍫嗗灈鏈哄懡浠や笅鍙戞垚鍔�" + crnCommand);
+                News.info("772 鍫嗗灈鏈哄懡浠や笅鍙戞垚鍔�" + crnCommand);
 
 //                long startTime = System.currentTimeMillis();
 //                while ((System.currentTimeMillis() - startTime) < COMMAND_TIMEOUT) {
@@ -1114,16 +1109,20 @@
 //                }
 
                 // 淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋 => 3.鍚婅溅鍏ュ簱涓�
+                log.error("787 淇敼宸ヤ綔妗g姸鎬�2.璁惧涓婅蛋 => 3.鍚婅溅鍏ュ簱涓� " + wrkMast);
+                News.info("787 淇敼宸ヤ綔妗g姸鎬�2.璁惧涓婅蛋 => 3.鍚婅溅鍏ュ簱涓� " + wrkMast);
                 Date now = new Date();
                 wrkMast.setWrkSts(3L);
+                wrkMast.setPic(JSON.toJSONString(list));
                 wrkMast.setCrnStrTime(now);
                 wrkMast.setModiTime(now);
                 if (wrkMastMapper.updateById(wrkMast) == 0) {
-                    News.error("" + mark + " - 1" + " - 17" + " - 淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋 => 3.鍚婅溅鍏ュ簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
+                    News.error("淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋 => 3.鍚婅溅鍏ュ簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
                 }
+                log.error("795 淇敼宸ヤ綔妗g姸鎬佹垚鍔�2.璁惧涓婅蛋 => 3.鍚婅溅鍏ュ簱涓�" + wrkMast);
+                News.info("795 淇敼宸ヤ綔妗g姸鎬佹垚鍔�2.璁惧涓婅蛋 => 3.鍚婅溅鍏ュ簱涓�" + wrkMast);
             }
         }
-        News.infoNoLog("" + mark + " - 1" + " - 0" + " - 鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂 锛� 鍏ュ簱鎵ц瀹屾瘯");
     }
 
     /**
@@ -1131,35 +1130,6 @@
      * 2022-06-09 TQS淇敼锛屾煡璇㈠伐浣滄。LIST锛岄亶鍘嗕笅鍙戯紝闃叉绗竴涓换鍔″牭濉炲嚭搴�
      */
     public synchronized void locToCrnStn(CrnSlave slave, CrnProtocol crnProtocol, Integer mark) {
-        News.warnNoLog("" + mark + " - 2" + " - 0" + " - 鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂锛氭墽琛屽嚭搴�");
-
-//        int devpTaskStackOver = 20;
-//        Config config = configService.selectOne(new EntityWrapper<Config>()
-//                .eq("code", "devpTaskStackOver"));
-//        if (config != null) {
-//            devpTaskStackOver = Integer.parseInt(config.getValue());
-//        }
-//        int devpCheckTaskStackOver = 2;
-//        Config config2 = configService.selectOne(new EntityWrapper<Config>()
-//                .eq("code", "devpCheckTaskStackOver"));
-//        if (config2 != null) {
-//            devpCheckTaskStackOver = Integer.parseInt(config2.getValue());
-//        }
-//
-//        int outNumber = 13;
-//        Config config3 = configService.selectOne(new EntityWrapper<Config>()
-//                .eq("code", "fullBoardOutboundNumber"));
-//        if (config3 != null) {
-//            outNumber = Integer.parseInt(config3.getValue());
-//        }
-//
-//
-//        Integer devpWorkingCount = commonService.queryDevpWorkingCount();
-//        if (devpWorkingCount > devpTaskStackOver) {
-//            News.warn("" + mark + " - 2" + " - 0" + " - 杈撻�佺嚎浠诲姟杩囪浇锛屽綋鍓嶈緭閫佺嚎鎵胯浇鏁伴噺:{}", devpWorkingCount);
-//            return;
-//        }
-
         for (CrnSlave.CrnStn crnStn : slave.getCrnOutStn()) {
             // 鑾峰彇宸ヤ綔鐘舵�佷负11锛堢敓鎴愬嚭搴揑D锛夌殑鍑哄簱宸ヤ綔妗�
 //            WrkMast wrkMast = wrkMastMapper.selectPakOutStep1(slave.getId(), crnStn.getStaNo());
@@ -1170,106 +1140,68 @@
                 }
                 // 宸ヤ綔妗g姸鎬佸垽鏂�
                 if (wrkMast.getIoType() < 100 || wrkMast.getSourceStaNo() == null) {
-                    News.error("" + mark + " - 2" + " - 1" + " - 鏌ヨ宸ヤ綔妗f暟鎹笉绗﹀悎鏉′欢--鍏ュ嚭绫诲瀷/绔欑偣, 宸ヤ綔鍙�={}锛屾簮搴撲綅={}锛屽叆鍑虹被鍨�={}", wrkMast.getWrkNo(), wrkMast.getSourceLocNo(), wrkMast.getIoType());
+                    News.error("鏌ヨ宸ヤ綔妗f暟鎹笉绗﹀悎鏉′欢--鍏ュ嚭绫诲瀷/绔欑偣, 宸ヤ綔鍙�={}锛屾簮搴撲綅={}锛屽叆鍑虹被鍨�={}", wrkMast.getWrkNo(), wrkMast.getSourceLocNo(), wrkMast.getIoType());
                     continue;
                 }
                 // 鑾峰彇婧愬簱浣嶄俊鎭�
                 LocMast sourceSta = locMastService.selectById(wrkMast.getSourceLocNo());
                 if (!sourceSta.getLocSts().equals("R") && !sourceSta.getLocSts().equals("P")) {
-                    News.error("" + mark + " - 2" + " - 2" + " - 鍑哄簱鎿嶄綔搴撲綅鐘舵�佷笉绗﹀悎--鐘舵��, 搴撲綅鍙�={}锛屽簱浣嶇姸鎬�={}", wrkMast.getLocNo(), sourceSta.getLocSts());
+                    News.error("鍑哄簱鎿嶄綔搴撲綅鐘舵�佷笉绗﹀悎--鐘舵��, 搴撲綅鍙�={}锛屽簱浣嶇姸鎬�={}", wrkMast.getLocNo(), sourceSta.getLocSts());
                     continue;
                 }
                 // 鑾峰彇鍫嗗灈鏈哄嚭搴撶珯淇℃伅
                 SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, crnStn.getDevpPlcId());
                 StaProtocol staProtocol = devpThread.getStation().get(crnStn.getStaNo());
                 if (staProtocol == null) {
-                    News.infoNoLog("" + mark + " - 2" + " - 3" + " - 鍫嗗灈鏈哄嚭搴撶珯淇℃伅(staProtocol!=null缁х画鎵ц,鍚﹀垯寰幆缁堟)锛歴taProtocol=" + staProtocol);
                     break;
 //                    continue;
                 } else {
                     staProtocol = staProtocol.clone();
                 }
 
-//                if (wrkMast.getStaNo() == 1003 || wrkMast.getStaNo() == 1007 || wrkMast.getStaNo() == 1004) {
-//                    //妫�娴嬫槸鍚︽湁鍏ュ簱浠诲姟
-//                    List<WrkMast> inWrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>()
-//                            .in("io_type", 1, 53, 57)
-//                            .notIn("wrk_sts", 3, 4, 5)
-//                            .in("source_sta_no", 1002, 1007)
-//                    );
-//                    if (!inWrkMasts.isEmpty()) {
-//                        News.error("" + mark + " - 2" + " - 妫�娴嬪瓨鍦ㄥ叆搴撲换鍔★紝绛夊緟鍏ュ簱浠诲姟鎵ц瀹屾垚鍐嶅嚭搴擄紝宸ヤ綔鍙�={}" + wrkMast.getWrkNo());
-//                        continue;
-//                    }
-//                }
-
-                //zhangc
-//                if (wrkMast.getIoType() == 103 || wrkMast.getIoType() == 107) {
-//                    if (wrkMast.getStaNo() == 1058) {
-//                        List<WrkMast> inWrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>()
-//                                .in("wrk_sts", 12, 14)
-//                                .eq("sta_no", 1058)
-//                        );
-//                        if (!Cools.isEmpty(inWrkMasts) && inWrkMasts.size() >= devpCheckTaskStackOver) {
-//                            News.error("" + mark + " - 2" + " - 妫�娴嬪瓨鍦�1058绔欑偣锛屽瓨鍦ㄤ袱绗斿伐浣滀腑鐨勪换鍔★紝宸ヤ綔鍙�={}" + wrkMast.getWrkNo());
-//                            continue;
-//                        }
-//                    } else if (wrkMast.getStaNo() == 1062) {
-//                        List<WrkMast> inWrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>()
-//                                .in("wrk_sts", 12, 14)
-//                                .eq("sta_no", 1062)
-//                        );
-//                        if (!Cools.isEmpty(inWrkMasts) && inWrkMasts.size() >= devpCheckTaskStackOver) {
-//                            News.error("" + mark + " - 2" + " - 妫�娴嬪瓨鍦�1062绔欑偣锛屽瓨鍦ㄤ袱绗斿伐浣滀腑鐨勪换鍔★紝宸ヤ綔鍙�={}" + wrkMast.getWrkNo());
-//                            continue;
-//                        }
-//                    }
-//                }else if (wrkMast.getIoType() == 101) {
-//                    List<WrkMast> inWrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>()
-//                            .in("wrk_sts", 12, 14)
-//                    );
-//                    if (!Cools.isEmpty(inWrkMasts) && inWrkMasts.size() >= outNumber) {
-//                        News.error("" + mark + " - 4" + " - 妫�娴嬪埌鍏ㄦ澘鍑哄簱鐨勪换鍔″凡缁忓埌杈句笂绾匡紝宸ヤ綔鍙�={}" + wrkMast.getWrkNo());
-//                        continue;
-//                    }
-//                }
-
-//            // 鍏ュ嚭搴撴ā寮忓垽鏂�
-//            if (devpThread.ioMode != IoModeType.PAKOUT_MODE) { continue; }
-//                if (wrkMast.getStaNo() == 204 && devpThread.ioModeOf2F != IoModeType.PAKOUT_MODE) {
-//                    News.infoNoLog(""+mark+" - 2"+" - 4"+" - 鍏ュ嚭搴撴ā寮忥紙姝ゅ鍑哄簱鏂规硶锛屽嚭搴撴ā寮忕户缁�=="+devpThread.ioModeOf2F);
-//                    continue;
-//                }
-
                 // 鏌ヨ绔欑偣璇︾粏淇℃伅
                 BasDevp staDetl = basDevpService.selectById(crnStn.getStaNo());
                 if (staDetl == null) {
-                    News.error("" + mark + " - 2" + " - 5" + " - 鍑哄簱 ===>> 鍫嗗灈鏈虹珯鐐瑰湪鏁版嵁搴撲笉瀛樺湪, 绔欑偣缂栧彿={}", crnStn.getStaNo());
+                    News.error("鍑哄簱 ===>> 鍫嗗灈鏈虹珯鐐瑰湪鏁版嵁搴撲笉瀛樺湪, 绔欑偣缂栧彿={}", crnStn.getStaNo());
                     break;
 //                    continue;
                 }
+                //鏌ヨ鍦ㄥ簱淇℃伅
+                LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>()
+                        .eq("loc_sts", "R")
+                        .eq("loc_no", wrkMast.getSourceLocNo()));
+                if (Cools.isEmpty(locMast)) {
+                    News.error("鍑哄簱 ===>> 搴撲綅涓病鏈夎繖绗旇祫鏂�", wrkMast.getSourceLocNo());
+                    continue;
+                }
+                //鍫嗗灈鏈烘帴椹崇珯鐐规病鏈夌┖鏂欐灦
+                if(!staProtocol.isEmptyOutType()&&(Cools.isEmpty(wrkMast.getCtnType())||wrkMast.getCtnType()==0)){
+                    //璇锋眰wms涓嬪彂agv鎼繍绌烘枡鏋跺埌鍫嗗灈鏈烘帴椹崇珯鐐逛换鍔�
+                    try {
+                        HashMap<String,Object> hashMap=new HashMap<>();
+                        hashMap.put("wrkNo",wrkMast.getWrkNo());
+                        String response = new HttpHandler.Builder()
+                                .setUri(wmsUrl)
+                                .setPath("/rpc/createAGVMoveTask")
+                                .setJson(JSON.toJSONString(wrkMast))
+                                .build()
+                                .doPost();
+                        JSONObject jsonObject = JSON.parseObject(response);
+                        if (jsonObject.getInteger("code").equals(200)) {
+                            wrkMast.setCtnType(1);//宸茬敓鎴怉GV鎼繍绌烘枡鏋朵换鍔�
+                            wrkMastService.updateById(wrkMast);
+                        } else {
+                            continue;
+                        }
+                    } catch (Exception e) {
+                        e.printStackTrace();
+                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                    }
+                }
+
                 // 鍒ゆ柇鍫嗗灈鏈哄嚭搴撶珯鐘舵��
-                if (staProtocol.isAutoing() && !staProtocol.isLoading() && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y")) {
-
-                    //鏍规嵁鍙傛暟鍒ゆ柇鏄惁鏍¢獙鍙嚭淇″彿
-//                    String crnOutVerifyOut = "Y";
-//                    Config crnOutVerifyOutEnableConfig = configService.selectOne(new EntityWrapper<Config>()
-//                            .eq("code", "crnOutVerifyOutEnable"));
-//                    if (crnOutVerifyOutEnableConfig != null) {
-//                        crnOutVerifyOut = crnOutVerifyOutEnableConfig.getValue();
-//                    }
-//
-//                    if (crnOutVerifyOut.equals("Y")) {
-//                        if (!staProtocol.isOutEnable()) {
-//                            continue;
-//                        }
-//
-//                        if (staProtocol.getWorkNo() > 0) {
-//                            continue;
-//                        }
-//                    }
-
-
+                if (staProtocol.isAutoing() && !staProtocol.isLoading() && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y")
+                        && staProtocol.getWorkNo() == 0 && staProtocol.isOutEnable() && staProtocol.isEmptyOutType()) {
                     // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
 
                     // 鍫嗗灈鏈烘帶鍒惰繃婊�
@@ -1278,35 +1210,12 @@
                         break;
                     }
 
-//                    if (crnProtocol.getCrnNo() == 1) {
-//                        String turnCrnExecuteCurrentChannel = "Y";
-//                        Config turnCrnExecuteCurrentChannelConfig = configService.selectOne(new EntityWrapper<Config>()
-//                                .eq("code", "turnCrnExecuteCurrentChannel")
-//                        );
-//                        if (turnCrnExecuteCurrentChannelConfig != null) {
-//                            turnCrnExecuteCurrentChannel = turnCrnExecuteCurrentChannelConfig.getValue();
-//                        }
-//
-//                        if (turnCrnExecuteCurrentChannel.equals("Y")) {
-//                            //鍒ゆ柇鍫嗗灈鏈哄拰褰撳墠浠诲姟鏄惁澶勪簬涓�涓贩閬�
-//                            if (Utils.getLaneByLocNo(wrkMast.getSourceLocNo()) != crnProtocol.getCrnLane()) {
-//                                //鍒ゆ柇鍫嗗灈鏈烘墍鍦ㄥ贩閬撴槸鍚﹀瓨鍦ㄥ叾浠栦换鍔★紝濡傚瓨鍦ㄥ垯浼樺厛鎵ц
-//                                List<WrkMast> currentWrkMasts = wrkMastService.selectLaneWrkMast(crnProtocol.getCrnLane(), false);
-//                                if (!currentWrkMasts.isEmpty()) {
-//                                    continue;//褰撳墠鍫嗗灈鏈烘墍鍦ㄥ贩閬撳瓨鍦ㄤ换鍔�
-//                                }
-//                            }
-//                        }
-//                    }
-
                     // 鍙屾繁搴撲綅涓旀祬搴撲綅鏈夎揣锛屽垯闇�鍏堝娴呭簱浣嶈繘琛屽簱浣嶇Щ杞�
                     if (Utils.isDeepLoc(slaveProperties, wrkMast.getSourceLocNo())) {
-                        News.warnNoLog("" + mark + " - 2" + " - 6" + " - 鍙屾繁搴撲綅涓旀祬搴撲綅鏈夎揣锛屽垯闇�鍏堝娴呭簱浣嶈繘琛屽簱浣嶇Щ杞� : 寮�濮嬫墽琛� 浠诲姟鍙�={}", wrkMast.getWrkNo());
                         String shallowLocNo = Utils.getShallowLoc(slaveProperties, wrkMast.getSourceLocNo());
                         LocMast shallowLoc = locMastService.selectById(shallowLocNo);
                         // O.绌哄簱浣嶃�丵.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴撱�丼.鍏ュ簱棰勭害銆乆.绂佺敤 鐩存帴鎼紒
                         if (shallowLoc.getLocSts().equals("P") || shallowLoc.getLocSts().equals("R")) {
-                            News.warnNoLog("" + mark + " - 2" + " - 7" + " - // O.绌哄簱浣嶃�丵.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴撱�丼.鍏ュ簱棰勭害銆乆.绂佺敤 鐩存帴鎼紒搴撲綅={},搴撲綅鐘舵��={}", shallowLoc.getLocNo(), shallowLoc.getLocSts());
                             WrkMast waitWrkMast = wrkMastMapper.selectByLocNo(shallowLocNo);
                             if (null == waitWrkMast) {
                                 News.error("{}搴撲綅寮傚父锛屾湭妫�绱㈠埌鐩稿簲宸ヤ綔妗o紒", shallowLocNo);
@@ -1315,7 +1224,7 @@
                                     waitWrkMast.setIoPri(15D);
                                     waitWrkMast.setModiTime(new Date());
                                     if (wrkMastMapper.updateById(waitWrkMast) == 0) {
-                                        News.error("" + mark + " - 2" + " - 8" + " - 璋冩暣宸ヤ綔妗d紭鍏堢骇澶辫触锛佸伐浣滃彿={}", waitWrkMast.getWrkNo());
+                                        News.error("璋冩暣宸ヤ綔妗d紭鍏堢骇澶辫触锛佸伐浣滃彿={}", waitWrkMast.getWrkNo());
                                     }
                                     continue;
                                 } else {
@@ -1323,31 +1232,20 @@
                                 }
                             }
                         } else if (shallowLoc.getLocSts().equals("F") || shallowLoc.getLocSts().equals("D")) {
-                            News.warnNoLog("" + mark + " - 2" + " - 9" + " - // F銆丏  搴撲綅={},搴撲綅鐘舵��={}", shallowLoc.getLocNo(), shallowLoc.getLocSts());
-//                            WrkMast waitWrkMast = wrkMastMapper.selectByLocNo(shallowLocNo);
-                            //2022-08-16 modify,涓嶆牴鎹畊pdmk鏍囪绉诲簱浠诲姟(瀹规槗琚彇娑堝鑷村牭濉�)锛屾煡璇㈠伐浣滄。鏄惁瀛樺湪浠诲姟
-                            WrkMast waitWrkMast = wrkMastMapper.selectByLocNo1(shallowLocNo);
+                            WrkMast waitWrkMast = wrkMastMapper.selectByLocNo(shallowLocNo);
                             // 姝ゆ爣璁伴伩鍏嶅娆℃墽琛岀Щ搴撲换鍔�
-//                            if (Cools.isEmpty(wrkMast.getUpdMk()) || "N".equals(wrkMast.getUpdMk())
-//                                || Cools.isEmpty(waitWrkMast)) {
-                            if (Cools.isEmpty(waitWrkMast)) {
-                                if (moveLocForDeepLoc(slave, crnProtocol, shallowLoc, mark)) {
-                                    wrkMast.setUpdMk("Y");
-//                                    wrkMast.setIoPri(14D);
-                                    wrkMastMapper.updateById(wrkMast);
-                                }
-//                                wrkMast.setUpdMk("Y");
-//                                wrkMastMapper.updateById(wrkMast);
-//                                // 鐢熸垚宸ヤ綔妗�,灏嗘祬搴撲綅绉昏浆鍒版柊鐨勫簱浣嶄腑
-//                                moveLocForDeepLoc(slave, shallowLoc,mark);
+                            if (Cools.isEmpty(wrkMast.getUpdMk()) || "N".equals(wrkMast.getUpdMk())
+                                    || Cools.isEmpty(waitWrkMast)) {
+                                wrkMast.setUpdMk("Y");
+                                wrkMastMapper.updateById(wrkMast);
+                                // 鐢熸垚宸ヤ綔妗�,灏嗘祬搴撲綅绉昏浆鍒版柊鐨勫簱浣嶄腑
+                                moveLocForDeepLoc(slave, shallowLoc);
                             }
-                            News.error("{}浠诲姟鍑哄簱澶辫触锛屾祬搴撲綅鍫靛锛佹祬搴撲綅鍙�:{}", wrkMast.getWrkNo(), shallowLocNo);
+                            News.error("{}浠诲姟鍑哄簱澶辫触锛屾祬搴撲綅鍫靛锛�", wrkMast.getWrkNo());
                             continue;
                         } else if (shallowLoc.getLocSts().equals("Q") || shallowLoc.getLocSts().equals("S")) {
-                            News.warnNoLog("" + mark + " - 2" + " - 10" + " - // Q銆丼  搴撲綅={},搴撲綅鐘舵��={}", shallowLoc.getLocNo(), shallowLoc.getLocSts());
-                            WrkMast waitWrkMast = wrkMastMapper.selectByLocNo1(shallowLocNo);
+                            WrkMast waitWrkMast = wrkMastMapper.selectByLocNo(shallowLocNo);
                             if (null != waitWrkMast && waitWrkMast.getWrkSts() == 4) {
-                                News.infoNoLog("" + mark + " - 2" + " - 11" + " - // F銆丏  宸ヤ綔鐘舵��(鍒ゆ柇鏉′欢涓�==4)={}", waitWrkMast.getWrkSts());
                                 continue;
                             }
                         }
@@ -1359,15 +1257,11 @@
 //                        return;
                     }
 
-                    News.warnNoLog("" + mark + " - 2" + " - 12" + " - 鍛戒护涓嬪彂 : 宸ヤ綔鍙�={},婧愭帓={},婧愬垪={},婧愬眰={},鐩爣鎺�={},鐩爣鍒�={},鐩爣灞�={}", wrkMast.getWrkNo().shortValue()
-                            , sourceSta.getRow1().shortValue(), sourceSta.getBay1().shortValue(), sourceSta.getLev1().shortValue()
-                            , crnStn.getRow().shortValue(), crnStn.getBay().shortValue(), crnStn.getLev().shortValue());
-
                     // 1.鍫嗗灈鏈哄紑濮嬬Щ鍔�
                     CrnCommand crnCommand = new CrnCommand();
                     crnCommand.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙�
                     crnCommand.setTaskNo(wrkMast.getWrkNo().shortValue()); // 宸ヤ綔鍙�
-//                    crnCommand.setAckFinish((short) 0);  // 浠诲姟瀹屾垚纭浣�
+                    crnCommand.setAckFinish((short) 0);  // 浠诲姟瀹屾垚纭浣�
                     crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡:  搴撲綅绉昏浆
                     crnCommand.setSourcePosX(sourceSta.getRow1().shortValue());     // 婧愬簱浣嶆帓
                     crnCommand.setSourcePosY(sourceSta.getBay1().shortValue());     // 婧愬簱浣嶅垪
@@ -1375,8 +1269,9 @@
                     crnCommand.setDestinationPosX(crnStn.getRow().shortValue());     // 鐩爣搴撲綅鎺�
                     crnCommand.setDestinationPosY(crnStn.getBay().shortValue());     // 鐩爣搴撲綅鍒�
                     crnCommand.setDestinationPosZ(crnStn.getLev().shortValue());     // 鐩爣搴撲綅灞�
+                    crnCommand.setBarcode(wrkMast.getBarcode());
                     if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getCrnNo(), new Task(2, crnCommand))) {
-                        News.error("" + mark + " - 2" + " - 13" + " - 鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand));
+                        News.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand));
                     } else {
                         // 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓�
                         Date now = new Date();
@@ -1384,14 +1279,14 @@
                         wrkMast.setCrnStrTime(now);
                         wrkMast.setModiTime(now);
                         if (wrkMastMapper.updateById(wrkMast) == 0) {
-                            News.error("" + mark + " - 2" + " - 14" + " - 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
+                            News.error("淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
                         }
                         break;
                     }
                 }
+
             }
         }
-        News.infoNoLog("" + mark + " - 2" + " - 0" + " - 鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂 锛� 鍑哄簱鎵ц瀹屾瘯");
     }
 
 //    /**
@@ -1896,9 +1791,9 @@
                 if (staProtocol.isAutoing()
                         && staProtocol.isInEnable()
                         && staProtocol.isEmptyMk()
-                        && (staProtocol.getWorkNo() > 9990 && staProtocol.getWorkNo() <= 9999)
+                        && (staProtocol.getWorkNo() ==0)
                         && staProtocol.isPakMk()
-                        && staProtocol.getEmptyInType() == 1
+//                        && staProtocol.getEmptyInType() == 1
                 ) {
                     News.warnNoLog("" + mark + " - 0" + " - 寮�濮嬫墽琛岋細绌烘爤鏉垮垵濮嬪寲鍏ュ簱,鍙夎溅鍏ュ簱绔欐斁璐�");
 
@@ -1921,6 +1816,11 @@
                             String errorMsg = "鎵爜澶辫触锛岃閲嶈瘯";
                             MessageQueue.offer(SlaveType.Led, emptyInSta.getLed(), new Task(5, errorMsg));
                         }
+                        continue;
+                    }
+                    WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("barcode", barcode));
+                    WaitPakin waitPakin = waitPakinMapper.selectOne(new EntityWrapper<WaitPakin>().eq("zpallet", barcode).getEntity());
+                    if (waitPakin != null || wrkMast != null) {
                         continue;
                     }
 
@@ -2469,21 +2369,15 @@
      * 鍥犲弻娣卞簱浣嶉樆濉烇紝瀵规祬搴撲綅杩涜绉昏浆锛堢珛鍗虫墽琛岀増)
      * tip锛氬悓姝�
      */
-    private synchronized boolean moveLocForDeepLoc(CrnSlave crn, CrnProtocol crnProtocol, LocMast shallowLoc, Integer mark) {
+    private void moveLocForDeepLoc(CrnSlave crn, LocMast shallowLoc) {
         try {
-            News.warnNoLog("" + mark + "moveLocForDeepLoc" + " - 0" + " - 寮�濮嬫墽琛�:鍥犲弻娣卞簱浣嶉樆濉烇紝瀵规祬搴撲綅杩涜绉昏浆锛堢珛鍗虫墽琛岀増)");
             List<Integer> rows = locMastService.queryDistinctRow(crn.getId());
             LocMast loc = null;
             for (Integer row : rows) {
                 if (Utils.isDeepLoc(slaveProperties, row)) {
                     loc = locMastService.queryFreeLocMast(row, shallowLoc.getLocType1());
-                    if (loc != null) {
-                        if (crn.getId() == 1) {
-                            if (Utils.getLaneByLocNo(loc.getLocNo()) != crnProtocol.getCrnLane()) {
-                                continue;
-                            }
-                        }
 
+                    if (loc != null) {
                         if (Utils.isDeepLoc(slaveProperties, loc.getLocNo())) {
                             String shallowLocNo = Utils.getShallowLoc(slaveProperties, loc.getLocNo());
                             LocMast shallowLoc1 = locMastService.selectById(shallowLocNo);
@@ -2503,12 +2397,6 @@
                         loc = locMastService.queryFreeLocMast(row, shallowLoc.getLocType1());
 
                         if (null != loc) {//瀵瑰簲娣卞簱浣嶉潪鍦ㄥ簱鐘舵��,涓嶈兘绉诲簱
-                            if (crn.getId() == 1) {
-                                if (Utils.getLaneByLocNo(loc.getLocNo()) != crnProtocol.getCrnLane()) {
-                                    continue;
-                                }
-                            }
-
                             String deepLoc = Utils.getDeepLoc(slaveProperties, loc.getLocNo());
                             LocMast deepLoc1 = locMastService.selectById(deepLoc);
                             if (!deepLoc1.getLocSts().equals("F") && !deepLoc1.getLocSts().equals("D")) {
@@ -2524,107 +2412,76 @@
             }
 
             if (null == loc) {
-                News.error("" + mark + "moveLocForDeepLoc" + " - 1" + " - 鍙屾繁搴撲綅 --- 娴呭簱浣嶉樆濉炲紓甯革紒 寰呯Щ杞祬搴撲綅锛�" + shallowLoc.getLocNo());
-                return false;
+                log.error("鍙屾繁搴撲綅 --- 娴呭簱浣嶉樆濉炲紓甯革紒 寰呯Щ杞祬搴撲綅锛�" + shallowLoc.getLocNo());
+                return;
 //                throw new CoolException("鍙屾繁搴撲綅 --- 娴呭簱浣嶉樆濉炲紓甯革紒 寰呯Щ杞祬搴撲綅锛�" + shallowLoc.getLocNo());
-            } else {
-                String deepLoc2 = Utils.getDeepLoc2(slaveProperties, loc.getLocNo());
-                if (deepLoc2 != null) {
-                    LocMast locnew = locMastService.selectById(deepLoc2);
-                    if (locnew != null && locnew.getLocSts().equals("O")) {
-                        loc = locnew;
-                    }
-                }
-
-
-                try {
-                    // 鑾峰彇宸ヤ綔鍙�
-                    int workNo = commonService.getWorkNo(0);
-                    // 淇濆瓨宸ヤ綔妗�
-                    WrkMast wrkMast = new WrkMast();
-                    wrkMast.setWrkNo(workNo);
-                    wrkMast.setIoTime(new Date());
-                    wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
-                    wrkMast.setIoType(11); // 鍏ュ嚭搴撶姸鎬侊細 11.搴撴牸绉昏浇
-                    wrkMast.setIoPri(13D);
-                    wrkMast.setCrnNo(crn.getId());
-                    wrkMast.setSourceLocNo(shallowLoc.getLocNo()); // 婧愬簱浣�
-                    wrkMast.setLocNo(loc.getLocNo()); // 鐩爣搴撲綅
-//                    wrkMast.setFullPlt(shallowLoc.getFullPlt()); // 婊℃澘
-                    wrkMast.setFullPlt(shallowLoc.getLocSts().equals("D") ? "N" : "Y"); // 婊℃澘
-                    wrkMast.setPicking("N"); // 鎷f枡
-                    wrkMast.setExitMk("N"); // 閫�鍑�
-                    wrkMast.setEmptyMk(shallowLoc.getLocSts().equals("D") ? "Y" : "N"); // 绌烘澘
-                    wrkMast.setBarcode(shallowLoc.getBarcode()); // 鎵樼洏鐮�
-                    wrkMast.setLinkMis("N");
-                    wrkMast.setAppeTime(new Date());
-                    wrkMast.setModiTime(new Date());
-                    int res = wrkMastMapper.insert(wrkMast);
-                    if (res == 0) {
-                        News.errorNoLog("" + mark + "moveLocForDeepLoc" + " - 2" + " - 淇濆瓨宸ヤ綔妗eけ璐�");
-//                        throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
-                        return true;
-                    }
-                    // 宸ヤ綔妗f槑缁嗕繚瀛�
-                    if (shallowLoc.getLocSts().equals("F")) {
-                        List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", shallowLoc.getLocNo()));
-
-                        for (LocDetl locDetl : locDetls) {
-                            WrkDetl wrkDetl = new WrkDetl();
-                            wrkDetl.sync(locDetl);
-                            wrkDetl.setWrkNo(workNo);
-                            wrkDetl.setIoTime(new Date());
-                            wrkDetl.setAnfme(locDetl.getAnfme());
-//                            VersionUtils.setWrkDetl(wrkDetl, locDetl); // 鐗堟湰鎺у埗
-                            wrkDetl.setAppeTime(new Date());
-                            wrkDetl.setModiTime(new Date());
-                            if (!wrkDetlService.insert(wrkDetl)) {
-                                News.errorNoLog("" + mark + "moveLocForDeepLoc" + " - 3" + " - 淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
-//                                throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
-                                return true;
-                            }
-                        }
-                    }
-                    // 淇敼婧愬簱浣嶇姸鎬�
-                    if (shallowLoc.getLocSts().equals("D") || shallowLoc.getLocSts().equals("F")) {
-                        shallowLoc.setLocSts("R"); // R.鍑哄簱棰勭害
-                        shallowLoc.setModiTime(new Date());
-                        if (!locMastService.updateById(shallowLoc)) {
-                            News.errorNoLog("" + mark + "moveLocForDeepLoc" + " - 4" + " - 鏇存柊婧愬簱浣嶇姸鎬佸け璐�");
-//                            throw new CoolException("鏇存柊婧愬簱浣嶇姸鎬佸け璐�");
-                            return true;
-                        }
-                    } else {
-                        News.errorNoLog("" + mark + "moveLocForDeepLoc" + " - 5" + " - 婧愬簱浣嶅嚭搴撳け璐�");
-//                        throw new CoolException("婧愬簱浣嶅嚭搴撳け璐�");
-                        return true;
-                    }
-                    // 淇敼鐩爣搴撲綅鐘舵��
-                    if (loc.getLocSts().equals("O")) {
-                        loc.setLocSts("S"); // S.鍏ュ簱棰勭害
-                        loc.setModiTime(new Date());
-                        if (!locMastService.updateById(loc)) {
-                            News.errorNoLog("" + mark + "moveLocForDeepLoc" + " - 6" + " - 鏇存柊鐩爣搴撲綅鐘舵�佸け璐�");
-//                            throw new CoolException("鏇存柊鐩爣搴撲綅鐘舵�佸け璐�");
-                            return true;
-                        }
-                    } else {
-                        News.errorNoLog("" + mark + "moveLocForDeepLoc" + " - 7" + " - 绉昏浆澶辫触");
-//                        throw new CoolException("绉昏浆澶辫触");
-                        return true;
-                    }
-                } catch (Exception e) {
-                    News.error("" + mark + "moveLocForDeepLoc" + " - 8" + " - 鍙屾繁搴撲綅闃诲锛屽娴呭簱浣嶈繘琛岀Щ杞け璐�", e);
-                }
             }
 
-
+            // 鑾峰彇宸ヤ綔鍙�
+            int workNo = commonService.getWorkNo(0);
+            // 淇濆瓨宸ヤ綔妗�
+            WrkMast wrkMast = new WrkMast();
+            wrkMast.setWrkNo(workNo);
+            wrkMast.setIoTime(new Date());
+            wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
+            wrkMast.setIoType(11); // 鍏ュ嚭搴撶姸鎬侊細 11.搴撴牸绉昏浇
+            wrkMast.setIoPri(13D);
+            wrkMast.setCrnNo(crn.getId());
+            wrkMast.setSourceLocNo(shallowLoc.getLocNo()); // 婧愬簱浣�
+            wrkMast.setLocNo(loc.getLocNo()); // 鐩爣搴撲綅
+            wrkMast.setFullPlt(shallowLoc.getLocSts().equals("F") ? "Y" : "N"); // 婊℃澘
+            wrkMast.setPicking("N"); // 鎷f枡
+            wrkMast.setExitMk("N"); // 閫�鍑�
+            wrkMast.setEmptyMk(shallowLoc.getLocSts().equals("D") ? "Y" : "N"); // 绌烘澘
+            wrkMast.setBarcode(shallowLoc.getBarcode()); // 鎵樼洏鐮�
+            wrkMast.setLinkMis("N");
+            wrkMast.setAppeTime(new Date());
+            wrkMast.setModiTime(new Date());
+            int res = wrkMastMapper.insert(wrkMast);
+            if (res == 0) {
+                throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
+            }
+            // 宸ヤ綔妗f槑缁嗕繚瀛�
+            if (shallowLoc.getLocSts().equals("F")) {
+                List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", shallowLoc.getLocNo()));
+                for (LocDetl locDetl : locDetls) {
+                    WrkDetl wrkDetl = new WrkDetl();
+                    wrkDetl.setWrkNo(workNo);
+                    wrkDetl.setIoTime(new Date());
+                    wrkDetl.setAnfme(locDetl.getAnfme());
+                    VersionUtils.setWrkDetl(wrkDetl, locDetl); // 鐗堟湰鎺у埗
+                    wrkDetl.setAppeTime(new Date());
+                    wrkDetl.setModiTime(new Date());
+                    if (!wrkDetlService.insert(wrkDetl)) {
+                        throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
+                    }
+                }
+            }
+            // 淇敼婧愬簱浣嶇姸鎬�
+            if (shallowLoc.getLocSts().equals("D") || shallowLoc.getLocSts().equals("F")) {
+                shallowLoc.setLocSts("R"); // R.鍑哄簱棰勭害
+                shallowLoc.setModiTime(new Date());
+                if (!locMastService.updateById(shallowLoc)) {
+                    throw new CoolException("鏇存柊婧愬簱浣嶇姸鎬佸け璐�");
+                }
+            } else {
+                throw new CoolException("婧愬簱浣嶅嚭搴撳け璐�");
+            }
+            // 淇敼鐩爣搴撲綅鐘舵��
+            if (loc.getLocSts().equals("O")) {
+                loc.setLocSts("S"); // S.鍏ュ簱棰勭害
+                loc.setModiTime(new Date());
+                if (!locMastService.updateById(loc)) {
+                    throw new CoolException("鏇存柊鐩爣搴撲綅鐘舵�佸け璐�");
+                }
+            } else {
+                throw new CoolException("绉昏浆澶辫触");
+            }
         } catch (Exception e) {
-            News.error("" + mark + "moveLocForDeepLoc" + " - 8" + " - 鍙屾繁搴撲綅闃诲锛屽娴呭簱浣嶈繘琛岀Щ杞け璐�", e);
-//            e.printStackTrace();
-//            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+            log.error("鍙屾繁搴撲綅闃诲锛屽娴呭簱浣嶈繘琛岀Щ杞け璐�", e);
+            e.printStackTrace();
+            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
         }
-        return true;
     }
 
     /**
@@ -2677,7 +2534,7 @@
                     wrkMast.setCrnNo(crn.getId());
                     wrkMast.setSourceLocNo(sourceLocNo); // 婧愬簱浣�
                     wrkMast.setLocNo(locNo); // 鐩爣搴撲綅
-                    wrkMast.setFullPlt("N"); // 婊℃澘锛歒
+                    wrkMast.setFullPlt(sourceLoc.getLocSts().equals("F")?"Y":"N"); // 婊℃澘锛歒
                     wrkMast.setPicking("N"); // 鎷f枡
                     wrkMast.setExitMk("N"); // 閫�鍑�
                     wrkMast.setEmptyMk(sourceLoc.getLocSts().equals("D") ? "Y" : "N"); // 绌烘澘
diff --git a/src/main/java/com/zy/asrs/utils/VersionUtils.java b/src/main/java/com/zy/asrs/utils/VersionUtils.java
index 49671aa..806625b 100644
--- a/src/main/java/com/zy/asrs/utils/VersionUtils.java
+++ b/src/main/java/com/zy/asrs/utils/VersionUtils.java
@@ -1,6 +1,8 @@
 package com.zy.asrs.utils;
 
+import com.zy.asrs.entity.LocDetl;
 import com.zy.asrs.entity.LocMast;
+import com.zy.asrs.entity.WrkDetl;
 import com.zy.common.model.LocTypeDto;
 
 /**
@@ -26,5 +28,17 @@
         return true;
     }
 
+    public static void setWrkDetl(WrkDetl wrkDetl, LocDetl locDetl) {
+        wrkDetl.setMatnr(locDetl.getMatnr()); // 浜у搧缂栧彿
+        wrkDetl.setMaktx(locDetl.getMaktx()); // 浜у搧鎻忚堪
+        wrkDetl.setSpecs(locDetl.getSpecs()); // 瑙勬牸
+        wrkDetl.setUnit(locDetl.getUnit()); // 鍗曚綅
+//        wrkDetl.setSize(locDetl.getSize()); // 灏哄
+        wrkDetl.setColor(locDetl.getColor()); // 棰滆壊
+        wrkDetl.setWeight(locDetl.getWeight()); // 鍗曢噸
+        wrkDetl.setZpallet(locDetl.getZpallet()); // 鎵樼洏鏉$爜
+        wrkDetl.setAnfme(locDetl.getAnfme());//鏁伴噺
+    }
+
 
 }
diff --git a/src/main/java/com/zy/common/utils/HikUtils.java b/src/main/java/com/zy/common/utils/HikUtils.java
new file mode 100644
index 0000000..b8f5e4d
--- /dev/null
+++ b/src/main/java/com/zy/common/utils/HikUtils.java
@@ -0,0 +1,39 @@
+package com.zy.common.utils;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+
+import java.util.HashMap;
+
+@Component
+public class HikUtils {
+
+    @Value("${zyHikUrl}")
+    private String hikUrl;
+
+    public void startPic(String ip, String filename) {
+        try {
+            HashMap<String, Object> data = new HashMap<>();
+            data.put("ip", ip);
+            data.put("filename", filename);
+
+            String response = new HttpHandler.Builder()
+                    .setUri(hikUrl)
+                    .setPath("/startPic")
+                    .setJson(JSON.toJSONString(data))
+                    .build()
+                    .doPost();
+            JSONObject jsonObject = JSON.parseObject(response);
+            if (jsonObject.getInteger("code").equals(200)) {
+                News.error("璇锋眰鎺ュ彛鎴愬姛锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", hikUrl + "/startPic", JSON.toJSONString(data), response);
+            } else {
+                News.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", hikUrl + "/startPic", JSON.toJSONString(data), response);
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+}
diff --git a/src/main/java/com/zy/core/model/command/CrnCommand.java b/src/main/java/com/zy/core/model/command/CrnCommand.java
index 01343c8..66ac487 100644
--- a/src/main/java/com/zy/core/model/command/CrnCommand.java
+++ b/src/main/java/com/zy/core/model/command/CrnCommand.java
@@ -38,6 +38,11 @@
      */
     private Short taskMode = 0;
 
+    private String barcode= "";
+
+    //鐏: 1鏄伀璀�
+    private short fireStaut = 0;
+
     @JSONField(serialize = false)
     private CrnTaskModeType taskModeType;
 
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 c28c09b..9764bba 100644
--- a/src/main/java/com/zy/core/model/protocol/CrnProtocol.java
+++ b/src/main/java/com/zy/core/model/protocol/CrnProtocol.java
@@ -29,6 +29,11 @@
      */
     public Short eStop;
 
+    private String barcode= "";
+
+    //鐏: 1鏄伀璀�
+    private short fireStaut = 0;
+
     /**
      * 寮傚父鐮�
      */
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 03d4cab..d2dc0d0 100644
--- a/src/main/java/com/zy/core/model/protocol/StaProtocol.java
+++ b/src/main/java/com/zy/core/model/protocol/StaProtocol.java
@@ -79,6 +79,9 @@
     //绌烘墭鍏ュ簱绫诲瀷
     private Short emptyInType;
 
+    //绌烘枡鏋�
+    private boolean emptyOutType;
+
     public BasDevp toSqlModel(){
         BasDevp basDevp = new BasDevp();
         basDevp.setDevNo(siteId);
@@ -91,6 +94,7 @@
         basDevp.setLocType2((short) 0);  // 瀹界獎绫诲瀷{0:鏈煡,1:绐勫簱浣�,2:瀹藉簱浣峿
         basDevp.setLocType3((short) 0);  // 杞婚噸绫诲瀷{0:鏈煡,1:杞诲簱浣�,2:閲嶅簱浣峿
         basDevp.setLocType1(high != low && low ? (short) 1 : (short) 2);
+        basDevp.setInreq1(emptyOutType?"Y":"N");
         return basDevp;
     }
 
diff --git a/src/main/java/com/zy/core/thread/SiemensDevpThread.java b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
index c6343a6..79e3fa9 100644
--- a/src/main/java/com/zy/core/thread/SiemensDevpThread.java
+++ b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -44,6 +44,11 @@
     private short heartBeatVal = 1;
 
     /**
+     * 鏉$爜鏁伴噺
+     */
+    private int barcodeSize = 2;
+
+    /**
      * 鏃ュ織閲囬泦鏃堕棿
      */
     private Long deviceDataLogTime = System.currentTimeMillis();
@@ -53,7 +58,7 @@
     }};
 
     public static final ArrayList<Integer> staNos2 = new ArrayList<Integer>() {{
-//        add(2000);add(2001);add(2002);add(1001);add(1002);add(1003);add(1004);add(1005);add(1006);add(1007);
+
     }};
 
 
@@ -61,11 +66,11 @@
 
     public static final ArrayList<Integer> barcode1 = new ArrayList<Integer>() {{
         add(1);
-        add(2);
+//        add(2);
     }};
 
     public static final ArrayList<Integer> barcode2 = new ArrayList<Integer>() {{
-//        add(3);
+        add(2);
 //        add(4);
     }};
 
@@ -197,7 +202,7 @@
 //        updateIoMode();
         ArrayList<Integer> staNos = getStaNo();
         int staNoSize = staNos.size();
-        OperateResultExOne<byte[]> result = siemensS7Net.Read("DB101.0", (short) (staNoSize * 18));
+        OperateResultExOne<byte[]> result = siemensS7Net.Read("DB101.0", (short) (staNoSize*8));
         if (result.IsSuccess) {
             for (int i = 0; i < staNoSize; i++) {
                 Integer siteId = staNos.get(i); // 绔欑偣缂栧彿
@@ -207,40 +212,20 @@
                     staProtocol.setSiteId(siteId);
                     station.put(siteId, staProtocol);
                 }
-                staProtocol.setSiteId(siteId);
-                staProtocol.setWorkNo((short) siemensS7Net.getByteTransform().TransInt32(result.Content, (i * 18)));     // 宸ヤ綔鍙�
-                staProtocol.setStaNo((short) siemensS7Net.getByteTransform().TransInt32(result.Content, (i * 18) + 4));   // 鐩爣绔�
+                staProtocol.setWorkNo((short)siemensS7Net.getByteTransform().TransInt32(result.Content, i*8));     // 宸ヤ綔鍙�
 
-                short locHeight = siemensS7Net.getByteTransform().TransInt16(result.Content, (i * 18) + 8);//搴撲綅楂樺害
-                if (locHeight == 2) {//high
-                    staProtocol.setHigh(true);
-                    staProtocol.setLow(false);
-                }else {//low
-                    staProtocol.setHigh(false);
-                    staProtocol.setLow(true);
-                }
+                staProtocol.setStaNo(siemensS7Net.getByteTransform().TransInt16(result.Content, i*8 + 4));   // 鐩爣绔�
 
-                staProtocol.setError(siemensS7Net.getByteTransform().TransInt16(result.Content, (i * 18) + 10));   // 鎶ヨ
-
-                boolean[] status = siemensS7Net.getByteTransform().TransBool(result.Content, (i * 18) + 12, 1);
-                staProtocol.setAutoing(status[0]);  // 鑷姩
-                staProtocol.setLoading(status[1]);  // 鏈夌墿
-                staProtocol.setInEnable(status[2]); // 鍙叆
-                staProtocol.setOutEnable(status[3]);// 鍙嚭
-                staProtocol.setEmptyMk(status[4]);  // 绌烘澘淇″彿
-                staProtocol.setFullPlt(status[5]);  // 婊℃墭鐩�
-
-                boolean[] statusError = siemensS7Net.getByteTransform().TransBool(result.Content, (i * 18) + 13, 1);
-                staProtocol.setFrontError(statusError[0]);  // 鍓嶈秴鎶ヨ
-                staProtocol.setBackError(statusError[1]);  // 鍚庤秴鎶ヨ
-                staProtocol.setHighError(statusError[2]); // 瓒呴珮鎶ヨ
-                staProtocol.setLeftError(statusError[3]);// 宸﹂珮鎶ヨ
-                staProtocol.setRightError(statusError[4]);  // 鍙抽珮鎶ヨ
-                staProtocol.setWeightError(statusError[5]);  // 瓒呴噸鎶ヨ
-                staProtocol.setBarcodeError(statusError[6]);  // 鎵爜鎶ヨ
-
-                short emptyInType = siemensS7Net.getByteTransform().TransInt16(result.Content, (i * 18) + 14);//棰勭暀1-绌烘墭鍏ュ簱绫诲瀷锛�1:绔嬪簱鏂瑰悜 2:浜х嚎鏂瑰悜
-                staProtocol.setEmptyInType(emptyInType);
+                boolean[] status = siemensS7Net.getByteTransform().TransBool(result.Content, i*8 + 6, 2);
+                staProtocol.setAutoing(status[0]);      // 鑷姩
+                staProtocol.setLoading(status[1]);      // 鏈夌墿
+                staProtocol.setInEnable(status[2]);     // 鍙叆
+                staProtocol.setOutEnable(status[3]);    // 鍙嚭
+                staProtocol.setEmptyMk(status[4]);      // 绌烘澘淇″彿
+                staProtocol.setFullPlt(status[5]);      // 婊℃墭鐩�
+                staProtocol.setHigh(status[6]);         // 楂樺簱浣�
+                staProtocol.setLow(status[7]);          // 浣庡簱浣�
+                staProtocol.setEmptyOutType(status[8]); //绌烘枡鏋�
 
                 if (!staProtocol.isPakMk() && !staProtocol.isLoading()) {
                     staProtocol.setPakMk(true);
@@ -248,40 +233,57 @@
             }
         }
 
-        //鏉$爜鎵弿鍣�
-        Thread.sleep(200);
-        ArrayList<Integer> barcodeList = getBarcode();
-        int barcodeSize = barcodeList.size();
-        OperateResultExOne<byte[]> result2 = siemensS7Net.Read("DB103.0", (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");
-                Integer barcodeId = barcodeList.get(i);
-                BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, barcodeId);
-                if(!Cools.isEmpty(barcodeThread) && !barcodeThread.getBarcode().equals(barcode)){
-                    barcodeThread.setBarcode(barcode);
-                }
+        //澶栧舰妫�娴�
+        Integer[] arr={401,402};
+        OperateResultExOne<byte[]> resultErr1 = siemensS7Net.Read("DB101.700.0", (short) (arr.length*6));
+        for (int i = 0; i < arr.length; i++) {
+            StaProtocol staProtocol1 = station.get(arr[i]);
+            if(resultErr1.IsSuccess){
+                boolean[] status1 = siemensS7Net.getByteTransform().TransBool(resultErr1.Content, i*6, 1);
+                staProtocol1.setFrontError(status1[0]);
+                staProtocol1.setBackError(status1[1]);
+                staProtocol1.setHighError(status1[2]);
+                staProtocol1.setLeftError(status1[3]);
+                staProtocol1.setRightError(status1[4]);
+                staProtocol1.setWeightError(status1[5]);
+                staProtocol1.setBarcodeError(status1[6]);
             }
-
         }
 
-        if (System.currentTimeMillis() - deviceDataLogTime > 1000 * 1) {
-            //閲囬泦鏃堕棿瓒呰繃5s锛屼繚瀛樹竴娆℃暟鎹褰�
-            //淇濆瓨鏁版嵁璁板綍
-            DeviceDataLogService deviceDataLogService = SpringUtils.getBean(DeviceDataLogService.class);
-            DeviceDataLog deviceDataLog = new DeviceDataLog();
-            deviceDataLog.setOriginData(Base64.getEncoder().encodeToString(result.Content));
-            deviceDataLog.setWcsData(JSON.toJSONString(station));
-            deviceDataLog.setType("devp");
-            deviceDataLog.setDeviceNo(slave.getId());
-            deviceDataLog.setCreateTime(new Date());
-            deviceDataLogService.insert(deviceDataLog);
 
-            //鏇存柊閲囬泦鏃堕棿
-            deviceDataLogTime = System.currentTimeMillis();
+
+        Thread.sleep(200);
+        if(slave.getId()==1) {
+            OperateResultExOne<byte[]> result2 = siemensS7Net.Read("DB101.600.0", (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);
+                    }
+                }
+
+            }
         }
+        if (result.IsSuccess) {
+            if (System.currentTimeMillis() - deviceDataLogTime > 1000 * 1) {
+                //閲囬泦鏃堕棿瓒呰繃5s锛屼繚瀛樹竴娆℃暟鎹褰�
+                //淇濆瓨鏁版嵁璁板綍
+                DeviceDataLogService deviceDataLogService = SpringUtils.getBean(DeviceDataLogService.class);
+                DeviceDataLog deviceDataLog = new DeviceDataLog();
+                deviceDataLog.setOriginData(Base64.getEncoder().encodeToString(result.Content));
+                deviceDataLog.setWcsData(JSON.toJSONString(station));
+                deviceDataLog.setType("devp");
+                deviceDataLog.setDeviceNo(slave.getId());
+                deviceDataLog.setCreateTime(new Date());
+                deviceDataLogService.insert(deviceDataLog);
 
-        if (result.IsSuccess && result2.IsSuccess) {
+                //鏇存柊閲囬泦鏃堕棿
+                deviceDataLogTime = System.currentTimeMillis();
+            }
+        }
+        if (result.IsSuccess) {
             OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId()));
 
             // 鏍规嵁瀹炴椂淇℃伅鏇存柊鏁版嵁搴�
@@ -317,57 +319,24 @@
         }
         ArrayList<Integer> staNos = getStaNo();
         int index = staNos.indexOf(staProtocol.getSiteId());
-        int[] array = new int[3];
-        array[0] = staProtocol.getWorkNo().intValue();
-        array[1] = staProtocol.getStaNo().intValue();
-        array[2] = staProtocol.getPalletSize().intValue();
+        short[] array = new short[2];
+        OperateResult writeResult1 = siemensS7Net.Write("DB100." + index*6,  staProtocol.getWorkNo().intValue());    // 宸ヤ綔鍙�
+        OperateResult writeResult2 = siemensS7Net.Write("DB100." + (index*6+4), staProtocol.getStaNo());    // 鐩爣绔�
 
-        OperateResult write = siemensS7Net.Write("DB102." + index * 16, array);
+//        OperateResult write = siemensS7Net.Write("DB100.0" + index*4, staProtocol.getWorkNo());    // 宸ヤ綔鍙�
+//        Thread.sleep(500);
+//        OperateResult write1 = siemensS7Net.Write("DB100.2" + index*4+2, staProtocol.getStaNo());    // 鐩爣绔�
 
-//        OperateResult write = null;
-//        OperateResult write1 = null;
-//        //浠诲姟涓嬪彂娆℃暟
-//        int writeCount = 0;
-//        do {
-//            write = siemensS7Net.Write("DB100." + index*2, staProtocol.getWorkNo());    // 宸ヤ綔鍙�
-//            Thread.sleep(500);
-//            write1 = siemensS7Net.Write("DB101." + index*2, staProtocol.getStaNo());    // 鐩爣绔�
-//            if(write.IsSuccess || write1.IsSuccess){
-//                Thread.sleep(200);
-//                OperateResultExOne<byte[]> readResult = siemensS7Net.Read("DB100." + index*2, (short) 2);
-//                OperateResultExOne<byte[]> readResult1 = siemensS7Net.Read("DB101." + index*2, (short) 2);
-//                if(readResult.IsSuccess && readResult1.IsSuccess){
-//                    short workNo = siemensS7Net.getByteTransform().TransInt16(readResult.Content, 0);
-//                    short staNo = siemensS7Net.getByteTransform().TransInt16(readResult1.Content, 0);
-//                    if(staProtocol.getWorkNo().equals(workNo) && staProtocol.getStaNo().equals(staNo)){
-//                        //浠诲姟鍛戒护鍐欏叆鎴愬姛
-//                        log.info("鍐欏叆杈撻�佺嚎鍛戒护鍚庤繑鍥炴垚鍔燂紝骞朵笖鍥炶鎴愬姛銆傝緭閫佺嚎plc缂栧彿={}锛寋}锛屽啓鍏ユ鏁�={}", slave.getId(), JSON.toJSON(staProtocol), writeCount);
-//                        break;
-//                    } else {//杩斿洖缁撴灉鏄垚鍔熶簡锛屼絾鏄湡瀹炲�间笉鐩稿悓
-//                        writeCount++;
-//                        log.error("鍐欏叆杈撻�佺嚎鍛戒护鍚庤繑鍥炴垚鍔燂紝浣嗘槸璇诲彇浠诲姟鍊间笉涓�鑷淬�傝緭閫佺嚎plc缂栧彿={}锛寋}锛屽啓鍏ユ鏁�={}", slave.getId(), JSON.toJSON(staProtocol), writeCount);
-//                    }
-//                } else {
-//                    writeCount++;
-//                    log.error("鍐欏叆杈撻�佺嚎鍛戒护鍚庤鍙栧け璐ャ�傝緭閫佺嚎plc缂栧彿={}锛岀珯鐐规暟鎹�={},鍐欏叆娆℃暟={}", slave.getId(), JSON.toJSON(staProtocol), writeCount);
-//                }
-//            }
-//            else {
-//                writeCount++;
-//                log.error("鍐欏叆杈撻�佺嚎鍛戒护鍚庤鍙栧け璐ャ�傝緭閫佺嚎plc缂栧彿={}锛岀珯鐐规暟鎹�={},鍐欏叆娆℃暟={}", slave.getId(), JSON.toJSON(staProtocol), writeCount);
-//            }
-//        }while (writeCount<5);
-
-        if (!write.IsSuccess) {
+        if (!writeResult1.IsSuccess&&!writeResult2.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)));
-            News.error("SiemensDevp"+" - 4"+" - 鍐欏叆杈撻�佺嚎绔欑偣鏁版嵁澶辫触銆傝緭閫佺嚎plc缂栧彿={}锛岀珯鐐规暟鎹�={}", slave.getId(), JSON.toJSON(staProtocol));
+            log.error("鍐欏叆杈撻�佺嚎绔欑偣鏁版嵁澶辫触銆傝緭閫佺嚎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)));
-            News.info("SiemensDevp"+" - 5"+" - 杈撻�佺嚎鍛戒护涓嬪彂 [id:{}] >>>>> 鍛戒护涓嬪彂锛� {}",  slave.getId(), JSON.toJSON(staProtocol));
+            log.info("杈撻�佺嚎鍛戒护涓嬪彂 [id:{}] >>>>> 鍛戒护涓嬪彂锛� {}",  slave.getId(), JSON.toJSON(staProtocol));
         }
     }
 
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 054fd62..eeb5445 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -1,5 +1,5 @@
 server:
-  port: 9093
+  port: 9094
   servlet:
     context-path: /@pom.build.finalName@
 
@@ -8,11 +8,13 @@
     name: @pom.build.finalName@
   datasource:
     driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
-    url: jdbc:sqlserver://127.0.0.1:1433;databasename=jxtlfasrs-yclk
+    url: jdbc:sqlserver://127.0.0.1:1433;databasename=jnejc-hkwms
     username: sa
     password: sa@123
   mvc:
     static-path-pattern: /**
+
+zyHikUrl: 10.10.10.200:9091/hik
 #  redis:
 #    host: localhost
 #    port: 6379
@@ -34,7 +36,7 @@
   enable: false
 
 wms:
-  url: 127.0.0.1:8080/wms
+  url: 127.0.0.1:8084/hkwms
 
 # 涓嬩綅鏈洪厤缃�
 wcs-slave:
@@ -55,7 +57,7 @@
   # 鍫嗗灈鏈�1
   crn[0]:
     id: 1
-    ip: 172.26.4.132
+    ip: 172.26.4.131
     port: 102
     rack: 0
     slot: 0
@@ -93,7 +95,7 @@
   # 杈撻�佺嚎1
   devp[0]:
     id: 1
-    ip: 172.17.60.100
+    ip: 172.26.4.141
     port: 102
     rack: 0
     slot: 0
@@ -183,14 +185,14 @@
    # LED1
   led[0]:
     id: 1
-    ip: 127.0.0.1
+    ip: 172.26.4.211
     port: 5005
     devpPlcId: ${wcs-slave.devp[0].id}
     staArr: 401
   # LED2
   led[1]:
     id: 2
-    ip: 172.17.60.183
+    ip: 172.26.4.212
     port: 5005
     devpPlcId: ${wcs-slave.devp[0].id}
     staArr: 402
diff --git a/src/main/resources/mapper/LocMastMapper.xml b/src/main/resources/mapper/LocMastMapper.xml
index 7821af2..57cdbd3 100644
--- a/src/main/resources/mapper/LocMastMapper.xml
+++ b/src/main/resources/mapper/LocMastMapper.xml
@@ -34,6 +34,7 @@
         <result column="mk" property="mk" />
         <result column="barcode" property="barcode" />
         <result column="ctn_no" property="ctnNo" />
+        <result column="pic" property="pic" />
 
     </resultMap>
 
diff --git a/src/main/resources/mapper/WrkMastMapper.xml b/src/main/resources/mapper/WrkMastMapper.xml
index 06982a4..6cb9a59 100644
--- a/src/main/resources/mapper/WrkMastMapper.xml
+++ b/src/main/resources/mapper/WrkMastMapper.xml
@@ -59,6 +59,7 @@
 <!--        <result column="Pdc_type" property="PdcType" />-->
         <result column="ctn_no" property="ctnNo" />
         <result column="full_plt" property="fullPlt" />
+        <result column="pic" property="pic" />
 
     </resultMap>
 

--
Gitblit v1.9.1