From a98f92c9bb825deb54752ccac3c9b7b8ed20695d Mon Sep 17 00:00:00 2001
From: lsh <lsh@163.com>
Date: 星期四, 20 十一月 2025 16:42:11 +0800
Subject: [PATCH] *废弃啦

---
 src/main/java/com/zy/system/entity/license/LicenseVerifyParam.java   |   48 
 src/main/java/com/zy/system/entity/license/LicenseCheckListener.java |   94 +
 src/main/java/com/zy/system/entity/license/LicenseManagerHolder.java |   22 
 src/main/java/com/zy/system/entity/license/CustomLicenseManager.java |  241 +++
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java          | 2490 ---------------------------------------
 src/main/java/com/zy/system/entity/license/LicenseVerify.java        |  133 ++
 src/main/webapp/static/js/console.map.js                             |    2 
 src/main/java/com/zy/system/entity/license/LicenseCreator.java       |   86 +
 src/main/java/com/zy/system/entity/license/LicenseCheck.java         |   45 
 pom.xml                                                              |    7 
 src/main/java/com/zy/system/entity/license/CustomKeyStoreParam.java  |   57 
 src/main/java/com/zy/system/entity/license/LicenseCreatorParam.java  |   96 +
 src/main/java/com/zy/system/entity/license/WindowsServerInfos.java   |   85 +
 src/main/java/com/zy/system/entity/license/AbstractServerInfos.java  |  111 +
 src/main/java/com/zy/core/MainProcess.java                           |  126 -
 src/main/webapp/static/js/common.js                                  |    2 
 src/main/resources/application.yml                                   |   21 
 17 files changed, 1,089 insertions(+), 2,577 deletions(-)

diff --git a/pom.xml b/pom.xml
index aefa1a4..ca8dd42 100644
--- a/pom.xml
+++ b/pom.xml
@@ -182,10 +182,15 @@
             <version>1.1.3.3</version>
             <systemPath>${project.basedir}/src/main/resources/lib/xpp3-1.1.3.3.jar</systemPath>
         </dependency>
+        <dependency>
+            <groupId>de.schlichtherle.truelicense</groupId>
+            <artifactId>truelicense-core</artifactId>
+            <version>1.33</version>
+        </dependency>
     </dependencies>
 
     <build>
-        <finalName>jshdwcs</finalName>
+        <finalName>zzgtwcs</finalName>
         <plugins>
             <plugin>
                 <groupId>org.springframework.boot</groupId>
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 412410d..994c07d 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -7,20 +7,11 @@
 import com.core.common.*;
 import com.core.exception.CoolException;
 import com.zy.asrs.entity.*;
-import com.zy.asrs.entity.param.AgvTaskAssignmentParam;
-import com.zy.asrs.entity.param.ArmOrderAssignmentParam;
-import com.zy.asrs.entity.param.ArmTaskAssignmentParam;
-import com.zy.asrs.entity.param.CombParam;
-import com.zy.asrs.entity.result.OrderDetlValueResultUtil;
 import com.zy.asrs.mapper.*;
 import com.zy.asrs.service.*;
-import com.zy.asrs.utils.PostMesDataUtils;
 import com.zy.asrs.utils.RouteUtils;
 import com.zy.asrs.utils.Utils;
 import com.zy.asrs.utils.VersionUtils;
-import com.zy.asrs.utils.core.ReturnT;
-import com.zy.common.constant.AgvConstant;
-import com.zy.common.constant.ArmConstant;
 import com.zy.common.model.LocTypeDto;
 import com.zy.common.model.MatDto;
 import com.zy.common.model.SearchLocParam;
@@ -37,15 +28,13 @@
 import com.zy.core.model.*;
 import com.zy.core.model.command.CrnCommand;
 import com.zy.core.model.command.LedCommand;
-import com.zy.core.model.command.RgvCommand;
 import com.zy.core.model.protocol.CrnProtocol;
-import com.zy.core.model.protocol.RgvProtocol;
 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.RgvThread;
 import com.zy.core.thread.SiemensDevpThread;
+import com.zy.system.entity.license.LicenseVerify;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
@@ -76,8 +65,6 @@
     @Autowired
     private WrkDetlService wrkDetlService;
     @Autowired
-    private WaitPakinMapper waitPakinMapper;
-    @Autowired
     private LocMastService locMastService;
     @Autowired
     private StaDescService staDescService;
@@ -92,36 +79,30 @@
     @Autowired
     private BasCrnErrorMapper basCrnErrorMapper;
     @Autowired
-    private WrkMastStaMapper wrkMastStaMapper;
-    @Autowired
-    private BasRgvService basRgvService;
-    @Autowired
-    private BasRgvMapMapper basRgvMapMapper;
-    @Autowired
     private WrkMastService wrkMastService;
-    @Autowired
-    private WrkMastStaService wrkMastStaService;
-    @Autowired
-    private BasRgvMapService basRgvMapService;
-    @Autowired
-    private BasArmService basArmService;
-    @Autowired
-    private BasAgvMastService basAgvMastService;
-    @Autowired
-    private BasArmMastService basArmMastService;
-    @Autowired
-    private ApiLogService apiLogService;
 
     @Value("${wms.url}")
     private String wmsUrl;
-
-    @Value("${wms.comb}")
-    private String wmsComb;
     @Value("${inventory.number}")
     private Integer inventoryNumber;
 
     public Integer wrkNo = 10001;
-    public static final List<Integer> LEFT_POSITION = Arrays.asList(1004,1014,1018,1028,1035,2006,2012,2018,2024,2030);
+
+    /*
+     * 楠岃瘉璁稿彲璇佹槸鍚︽湁鏁�
+     * */
+    public synchronized boolean licenseVerify() {
+        try{
+//            if (true) {
+//                return true;
+//            }
+            return new LicenseVerify().verify();
+        } catch (Exception e){
+            log.info("璁稿彲璇侀獙璇佸け璐ワ紒锛佸紓甯革細{}",e.getMessage());
+        }
+        return false;
+    }
+
     /**
      * 缁勬墭
      * 鍏ュ簱绔欙紝鏍规嵁鏉$爜鎵弿鐢熸垚鍏ュ簱宸ヤ綔妗o紝宸ヤ綔鐘舵�� 2
@@ -1750,90 +1731,6 @@
 //
 ////            // 鍏ュ嚭搴撴ā寮忓垽鏂�
 ////            if (devpThread.ioMode != IoModeType.PAKOUT_MODE) { continue; }
-//
-//
-//            // 鏌ヨ绔欑偣璇︾粏淇℃伅
-//            BasDevp staDetl = basDevpService.selectById(crnStn.getStaNo());
-//            if (staDetl == null) {
-//                log.error("鍑哄簱 ===>> 鍫嗗灈鏈虹珯鐐瑰湪鏁版嵁搴撲笉瀛樺湪, 绔欑偣缂栧彿={}", crnStn.getStaNo());
-//                continue;
-//            }
-//            // 鍒ゆ柇鍫嗗灈鏈哄嚭搴撶珯鐘舵��
-//            if (staProtocol.isAutoing() && !staProtocol.isLoading() && staDetl.getCanouting() !=null && staDetl.getCanouting().equals("Y")
-//                    && staProtocol.getWorkNo() == 0 && staProtocol.isOutEnable()) {
-//                // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
-//
-//                // 鍫嗗灈鏈烘帶鍒惰繃婊�
-//                if (!crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() != 0) {
-//                    continue;
-//                }
-//
-//                // 鍙屾繁搴撲綅涓旀祬搴撲綅鏈夎揣锛屽垯闇�鍏堝娴呭簱浣嶈繘琛屽簱浣嶇Щ杞�
-//                if (Utils.isDeepLoc(slaveProperties, wrkMast.getSourceLocNo())) {
-//                    String shallowLocNo = Utils.getShallowLoc(slaveProperties, wrkMast.getSourceLocNo());
-//                    LocMast shallowLoc = locMastService.selectById(shallowLocNo);
-//                    // O.绌哄簱浣嶃�丵.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴撱�丼.鍏ュ簱棰勭害銆乆.绂佺敤 鐩存帴鎼紒
-//                    if (shallowLoc.getLocSts().equals("P") || shallowLoc.getLocSts().equals("R")) {
-//                        WrkMast waitWrkMast = wrkMastMapper.selectByLocNo(shallowLocNo);
-//                        if (null == waitWrkMast) {
-//                            log.error("{}搴撲綅寮傚父锛屾湭妫�绱㈠埌鐩稿簲宸ヤ綔妗o紒", shallowLocNo);
-//                        } else {
-//                            if(waitWrkMast.getWrkSts() == 11) {
-//                                waitWrkMast.setIoPri(15D);
-//                                waitWrkMast.setModiTime(new Date());
-//                                if (wrkMastMapper.updateById(waitWrkMast) == 0) {
-//                                    log.error("璋冩暣宸ヤ綔妗d紭鍏堢骇澶辫触锛佸伐浣滃彿={}", waitWrkMast.getWrkNo());
-//                                }
-//                                continue;
-//                            } else {
-//
-//                            }
-//                        }
-//                    } else if (shallowLoc.getLocSts().equals("F") || shallowLoc.getLocSts().equals("D")) {
-//                        // 姝ゆ爣璁伴伩鍏嶅娆℃墽琛岀Щ搴撲换鍔�
-//                        if (Cools.isEmpty(wrkMast.getUpdMk()) || "N".equals(wrkMast.getUpdMk())) {
-//                            wrkMast.setUpdMk("Y");
-//                            wrkMastMapper.updateById(wrkMast);
-//                            // 鐢熸垚宸ヤ綔妗c�佹敼鍙樻祬搴撲綅鐨勬簮搴�/鐩爣搴� 搴撲綅鐘舵�併�佷笅鍙戝爢鍨涙満鍛戒护锛堢珛椹墽琛�)
-//                            moveLocForDeepLoc(slave, shallowLoc);
-//                        }
-//                        log.error("{}浠诲姟鍑哄簱澶辫触锛屾祬搴撲綅鍫靛锛�", wrkMast.getWrkNo());
-//                        continue;
-//                    }
-//                }
-//
-//                // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊�
-//                if (wrkMastMapper.selectWorking(slave.getId()) != null) {
-//                    return;
-//                }
-//
-//                // 1.鍫嗗灈鏈哄紑濮嬬Щ鍔�
-//                CrnCommand crnCommand = new CrnCommand();
-//                crnCommand.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙�
-//                crnCommand.setTaskNo(wrkMast.getWrkNo().shortValue()); // 宸ヤ綔鍙�
-//                crnCommand.setAckFinish((short) 0);  // 浠诲姟瀹屾垚纭浣�
-//                crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡:  搴撲綅绉昏浆
-//                crnCommand.setSourcePosX(sourceSta.getRow1().shortValue());     // 婧愬簱浣嶆帓
-//                crnCommand.setSourcePosY(sourceSta.getBay1().shortValue());     // 婧愬簱浣嶅垪
-//                crnCommand.setSourcePosZ(sourceSta.getLev1().shortValue());     // 婧愬簱浣嶅眰
-//                crnCommand.setDestinationPosX(crnStn.getRow().shortValue());     // 鐩爣搴撲綅鎺�
-//                crnCommand.setDestinationPosY(crnStn.getBay().shortValue());     // 鐩爣搴撲綅鍒�
-//                crnCommand.setDestinationPosZ(crnStn.getLev().shortValue());     // 鐩爣搴撲綅灞�
-//                if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getCrnNo(), new Task(2, crnCommand))) {
-//                    log.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand));
-//                } else {
-//                    // 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓�
-//                    Date now = new Date();
-//                    wrkMast.setWrkSts(12L);
-//                    wrkMast.setCrnStrTime(now);
-//                    wrkMast.setModiTime(now);
-//                    if (wrkMastMapper.updateById(wrkMast) == 0) {
-//                        log.error("淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
-//                    }
-//                }
-//            }
-//        }
-//    }
 
     /**
      * 搴撲綅绉昏浆
@@ -2618,157 +2515,6 @@
     }
 
     /**
-     * 鍫嗗灈鏈烘紨绀�  ===>> 搴撲綅绉昏浆
-     */
-    public synchronized void crnDemoOfLocMove1() {
-        try {
-            for (CrnSlave crn : slaveProperties.getCrn()) {
-                if (!crn.getDemo()) {
-                    continue;
-                }   // 蹇呴』涓烘紨绀虹姸鎬�
-
-                CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId());
-                CrnProtocol crnProtocol = crnThread.getCrnProtocol();
-                if (crnProtocol == null) {
-                    continue;
-                }
-
-                // 鍙湁褰撳爢鍨涙満绌洪棽 骞朵笖 鏃犱换鍔℃椂鎵嶇户缁墽琛�
-                if (crnProtocol.getStatusType() == CrnStatusType.IDLE && crnProtocol.getTaskNo() == 0 && crnProtocol.getModeType() == CrnModeType.AUTO) {
-                    // 鑾峰彇绉诲簱宸ヤ綔妗d俊鎭�
-                    WrkMast wrkMast = wrkMastMapper.selectLocMove(crn.getId());
-                    if (null != wrkMast) {
-                        continue;
-                    }
-
-                    LocMast sourceLoc = locMastService.queryDemoSourceLoc(crn.getId());
-                    LocMast loc = locMastService.queryDemoLoc(crn.getId());
-                    if (null == sourceLoc || null == loc) {
-                        continue;
-                    }
-
-                    String sourceLocNo = sourceLoc.getLocNo();
-                    String locNo = loc.getLocNo();
-
-                    // 鑾峰彇宸ヤ綔鍙�
-                    int workNo = commonService.getWorkNo(0);
-                    // 淇濆瓨宸ヤ綔妗�
-                    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(sourceLocNo); // 婧愬簱浣�
-                    wrkMast.setLocNo(locNo); // 鐩爣搴撲綅
-                    wrkMast.setFullPlt("N"); // 婊℃澘锛歒
-                    wrkMast.setPicking("N"); // 鎷f枡
-                    wrkMast.setExitMk("N"); // 閫�鍑�
-                    wrkMast.setEmptyMk(sourceLoc.getLocSts().equals("D") ? "Y" : "N"); // 绌烘澘
-                    wrkMast.setBarcode(sourceLoc.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槑缁嗕繚瀛�
-//                List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", sourceLocNo));
-//                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 (sourceLoc.getLocSts().equals("D")) {
-                        sourceLoc.setLocSts("R"); // R.鍑哄簱棰勭害
-                        sourceLoc.setModiTime(new Date());
-                        if (!locMastService.updateById(sourceLoc)) {
-                            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("鍫嗗灈鏈烘紨绀�  ===>> 搴撲綅绉昏浆澶辫触", e);
-            e.printStackTrace();
-            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-        }
-    }
-
-    /**
-     * 鍫嗗灈鏈哄懡浠や笅鍙戝悗锛屽紓姝ヤ慨鏀瑰伐浣滄。鐘舵��
-     */
-    public synchronized void crnIoWrkMast() {
-        for (CrnSlave crn : slaveProperties.getCrn()) {
-            // 鑾峰彇鍫嗗灈鏈轰俊鎭�
-            CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId());
-            CrnProtocol crnProtocol = crnThread.getCrnProtocol();
-            if (crnProtocol == null) {
-                continue;
-            }
-            Date now = new Date();
-            // 鍫嗗灈鏈烘鍦ㄨ繍琛�
-            if (crnProtocol.getStatusType() != CrnStatusType.IDLE && crnProtocol.getTaskNo() != 0 && crnProtocol.getModeType() == CrnModeType.AUTO) {
-                // 鑾峰彇宸ヤ綔妗�
-                WrkMast wrkMast = wrkMastMapper.selectById(crnProtocol.getTaskNo());
-                if (wrkMast == null) {
-                    continue;
-                }
-                // 鍏ュ簱
-                if (wrkMast.getWrkSts() == 1 || wrkMast.getWrkSts() == 2) {
-                    News.warn("鍫嗗灈鏈洪潪绌洪棽鎯呭喌涓嬶紝寮�濮嬩慨鏀瑰伐浣滄。鐘舵�併�俒id:{},鏃堕棿锛歿}] >>>>> 鍫嗗灈鏈哄綋鍓嶇姸鎬佷负锛歿}銆備换鍔″彿:{}", crn.getId(), DateUtils.convert(now, DateUtils.yyyyMMddHHmmsssss_F), crnProtocol.getStatusType().desc, crnProtocol.getTaskNo());
-                    // 淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋 => 3.鍚婅溅鍏ュ簱涓�
-                    wrkMast.setWrkSts(3L);
-                    wrkMast.setCrnStrTime(now);
-                    wrkMast.setModiTime(now);
-                    if (wrkMastMapper.updateById(wrkMast) == 0) {
-                        News.error("淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋 => 3.鍚婅溅鍏ュ簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
-                    }
-                    News.warn("淇敼宸ヤ綔妗g姸鎬佹垚鍔熴�俒鏃堕棿锛歿}] >>>>> 浠诲姟鍙�:{}", DateUtils.convert(now, DateUtils.yyyyMMddHHmmsssss_F), wrkMast.getWrkNo());
-                }
-                // 鍑哄簱銆佺Щ搴�
-                if (wrkMast.getWrkSts() == 11) {
-                    News.warn("鍫嗗灈鏈洪潪绌洪棽鎯呭喌涓嬶紝寮�濮嬩慨鏀瑰伐浣滄。鐘舵�併�俒id:{},鏃堕棿锛歿}] >>>>> 鍫嗗灈鏈哄綋鍓嶇姸鎬佷负锛歿}銆備换鍔″彿:{}", crn.getId(), DateUtils.convert(now, DateUtils.yyyyMMddHHmmsssss_F), crnProtocol.getStatusType().desc, crnProtocol.getTaskNo());
-                    // 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓�
-                    wrkMast.setWrkSts(12L);
-                    wrkMast.setCrnStrTime(now);
-                    wrkMast.setModiTime(now);
-                    if (wrkMastMapper.updateById(wrkMast) == 0) {
-                        News.error("淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
-                    }
-                    News.warn("淇敼宸ヤ綔妗g姸鎬佹垚鍔熴�俒鏃堕棿锛歿}] >>>>> 浠诲姟鍙�:{}", DateUtils.convert(now, DateUtils.yyyyMMddHHmmsssss_F), wrkMast.getWrkNo());
-                }
-
-
-            }
-
-        }
-    }
-
-    /**
      * 鍏ュ嚭搴撴ā寮忓垏鎹㈠嚱鏁�
      */
     public synchronized void ioConvert() {
@@ -2845,2208 +2591,6 @@
                 }
             }
         }
-//        News.infoNoLog(""+mark+" - 0"+" - outOfDevp鎵ц瀹屾垚");
-    }
-
-
-    public synchronized void autoEmptyOut() {
-        SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1);
-        List<Integer> list = new ArrayList<>();
-        list.add(1108);list.add(2031);
-        for (Integer site:list){
-            Integer emptyCount = wrkMastMapper.countPakOutEmpty(site);
-            StaProtocol staProtocol = null;
-            if(emptyCount >= 1 && site == 1108){
-                continue;
-            }else if(emptyCount == 1 && site == 2031){
-                continue;
-            }
-            //濡傛灉绔欑偣鍙嚭绂佺敤锛屽垯涓嶇敓鎴愮┖鐩樺嚭搴撲换鍔�
-            switch (site){
-                case 1108:staProtocol = devpThread.getStation().get(site - 2);break;
-                case 2031:staProtocol = devpThread.getStation().get(site);break;
-            }
-            if (staProtocol == null) {
-                return;
-            } else {
-                staProtocol = staProtocol.clone();
-            }
-            if (staProtocol.isAutoing()  //鑷姩
-                    && !staProtocol.isLoading()  //鏃犵墿
-//                    && staProtocol.isOutEnable()  //鍙嚭淇″彿
-                    && staProtocol.getWorkNo() == 0
-            ) {
-                Short loctype1 = 1;
-                LocTypeDto locTypeDto = new LocTypeDto(loctype1, (short) 1, (short) 1);
-                locTypeDto.setSiteId(site);
-                try {
-                    String response = new HttpHandler.Builder()
-                            .setUri(wmsUrl)
-                            .setPath("/rpc/auto/emptyOut/v1")
-                            .setJson(JSON.toJSONString(locTypeDto))
-                            .build()
-                            .doPost();
-                    JSONObject jsonObject = JSON.parseObject(response);
-                    if (jsonObject.getInteger("code").equals(200)) {
-                        String data = jsonObject.get("data").toString();
-                        News.info((String) jsonObject.get("msg")+","+data);
-                    } else {
-                        News.warnNoLog("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/auto/emptyOut/v1","", response);
-                    }
-                } catch (Exception e) {
-                    e.printStackTrace();
-                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-                }
-            }
-        }
-
-    }
-
-    public synchronized void autoEmptyIn() {
-         SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1);
-        List<Integer> list = new ArrayList<>();
-        list.add(1038);
-        for (Integer site:list){
-            StaProtocol staProtocol = devpThread.getStation().get(site);
-            StaProtocol staProtocol1 = devpThread.getStation().get(1040);
-            if (staProtocol == null) {
-                return;
-            } else {
-                staProtocol = staProtocol.clone();
-            }
-            if (staProtocol.isAutoing()  //鑷姩
-                    && staProtocol.isLoading()  //鏈夌墿
-                    && staProtocol.isInEnable()  //鍙叆淇″彿
-                    && staProtocol.isPakMk()
-                    && staProtocol1.isFull() //鍙犳弧淇″彿
-                    && (staProtocol.getWorkNo() == 0 || staProtocol.getWorkNo() > 9990 ) //宸ヤ綔鍙蜂负0鎴栬�呭伐浣滃彿鏄�9991~9999锛堣緭閫佹満鐣欑敤锛�
-            ) {
-
-                System.out.println(staProtocol);
-                try {
-                    Short loctype1 = 1;
-                    LocTypeDto locTypeDto = new LocTypeDto(loctype1, (short) 1, (short) 1);
-                    locTypeDto.setSiteId(site);
-
-                    String response = new HttpHandler.Builder()
-                            .setUri(wmsUrl)
-                            .setPath("/rpc/auto/emptyIn/v1")
-                            .setJson(JSON.toJSONString(locTypeDto))
-                            .build()
-                            .doPost();
-                    JSONObject jsonObject = JSON.parseObject(response);
-                    if (jsonObject.getInteger("code").equals(200)) {
-                        News.info((String) jsonObject.get("msg"));
-                        staProtocol.setWorkNo(jsonObject.get("data").hashCode());
-                        staProtocol.setStaNo(site.shortValue());
-                        devpThread.setPakMk(site,false);
-                        MessageQueue.offer(SlaveType.Devp, 1, new Task(2, staProtocol));
-                    } else {
-                        News.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/auto/emptyIn/v1", JSON.toJSONString(locTypeDto), response);
-                    }
-                } catch (Exception e) {
-                    e.printStackTrace();
-                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-                }
-            }
-
-        }
-
-    }
-
-    /*
-     * 灏忚溅鍦板浘鏇存柊  鏇存柊閿�
-     * */
-    public synchronized boolean rgvMapUpdate(BasRgvMap basRgvMapCurrent,Integer staStart,Integer staEnd,String sign){
-//        log.info("灏忚溅鍦板浘鏇存柊锛乕鏍囪锛歿}];[BasRgvMap锛歿}];[staStart锛歿}];[staEnd锛歿}];",sign,JSON.toJSONString(basRgvMapCurrent),staStart,staEnd);
-
-//        List<Integer> integers = RouteUtils.RouteMapCurrentFar(basRgvMapCurrent.getNowRoute(),staStart,staEnd, basRgvMapCurrent.getLockStartRoute());
-        //鏇存柊褰撳墠灏忚溅閿�
-        try{
-            Integer farCurrentStaNo = RouteUtils.RouteIndexFarMas(basRgvMapCurrent.getNowRoute(), staStart, staEnd, basRgvMapCurrent.getLockStartRoute());//鑾峰彇鏈�杩滅珯鐐�
-//            log.info("灏忚溅鍦板浘鏇存柊锛佽幏鍙栨渶杩滅珯鐐�;[farCurrentStaNo锛歿}]",farCurrentStaNo);
-            Integer fallMerge = RouteUtils.RouteIndexFarMas(basRgvMapCurrent.getRgvNo(), farCurrentStaNo); //鑾峰彇鍚堝苟骞叉秹椤�
-//            log.info("灏忚溅鍦板浘鏇存柊锛佽幏鍙栧悎骞跺共娑夐」;[fallMerge锛歿}]",fallMerge);
-            basRgvMapCurrent.setLockEndRoute(fallMerge);
-            Integer i = basRgvMapMapper.updateById(basRgvMapCurrent);
-//            if (i>0){
-//                log.error("{}:==>{}:{}鍙疯溅鏇存柊缁撴潫閿�,{}",sign,new Date(),basRgvMapCurrent.getRgvNo(),JSON.toJSONString(basRgvMapCurrent));
-//            }
-
-            //鏇存柊鍙︿竴鍙板皬杞﹀湴鍥�
-            Integer rgvNoOther = basRgvMapCurrent.getRgvNoOther(basRgvMapCurrent.getRgvNo());
-//            log.info("灏忚溅鍦板浘鏇存柊锛佸彟涓�鍙板皬杞﹀彿;[rgvNoOther锛歿}]",rgvNoOther);
-
-            BasRgvMap basRgvMapOther = basRgvMapMapper.selectById(rgvNoOther);
-//            log.info("灏忚溅鍦板浘鏇存柊锛佸彟涓�鍙板皬杞�;[basRgvMapOther锛歿}]",JSON.toJSONString(basRgvMapOther));
-
-            List<Integer> integers = RouteUtils.RouteMapCurrentFar(fallMerge, basRgvMapCurrent.getLockStartRoute());
-            Integer lockEndRoute = RouteUtils.RouteMapOtherFarStnNo(integers, basRgvMapCurrent.getLockStartRoute());//鍙︿竴鍙板皬杞﹀彲娲诲姩鏈�杩滀綅缃�
-//            log.info("灏忚溅鍦板浘鏇存柊锛佸彟涓�鍙板皬杞﹀彲娲诲姩鏈�杩滀綅缃�;[lockEndRoute锛歿}]",lockEndRoute);
-            basRgvMapOther.setEndRoute(lockEndRoute);
-            Integer i1 = basRgvMapMapper.updateById(basRgvMapOther);
-//            if (i1>0){
-//                log.error("{}:==>{}:{}鍙疯溅鏇存柊缁撴潫浣嶇疆,{}",sign,new Date(),basRgvMapOther.getRgvNo(),JSON.toJSONString(basRgvMapOther));
-//            }
-            return true;
-        }catch (Exception e){
-            log.error("灏忚溅鍦板浘鏇存柊鍑洪敊锛佸紓甯稿師鍥狅細"+e);
-            return false;
-        }
-    }
-
-    /*
-     * 鍒锋柊鍦板浘鏁版嵁
-     * */
-    public synchronized void refreshRgvMap() {
-        try{
-            List<BasRgvMap> basRgvMaps = basRgvMapService.selectList(new EntityWrapper<>());
-            for (BasRgvMap rgvSlave:basRgvMaps) {
-                RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getRgvNo());
-                RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
-                if (rgvProtocol == null) {
-                    continue;
-                }else {
-                    rgvProtocol = rgvProtocol.clone();
-                }
-                BasRgv basRgv = basRgvService.selectById(rgvSlave.getRgvNo());
-                if (basRgv == null) {
-                    log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�2", rgvSlave.getRgvNo());
-                    continue;
-                }
-                Integer site = rgvProtocol.getRgvNo() == 1 ? rgvProtocol.getRgvPosI1() : rgvProtocol.getRgvPosI2();
-                if (site == 0) {
-                    continue;
-                }
-                rgvSlave.setNowRoute(site); // 鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙�
-                if (!basRgvMapService.updateById(rgvSlave)) {
-                    log.error("灏忚溅鏇存柊鍦板浘澶辫触");
-                }
-
-            }
-        }catch (Exception e){
-            log.error("灏忚溅鏇存柊鍦板浘澶辫触");
-        }
-    }
-
-    /**
-     *  鑷姩鐢熸垚RGV鎺ラ┏浠诲姟锛堟绱㈠嚭鍏ュ彛浠诲姟锛岀敓鎴愬搴擱GV浠诲姟锛屾绱�4妤间换鍔★紝闈�3鍙峰爢鍨涙満锛屽垯鐢熸垚瀵瑰簲鎺ラ┏浠诲姟锛�
-     */
-//    public synchronized  void rgvCreateWrkMastSta(){
-//        try{
-//            for (DevpSlave devp : slaveProperties.getDevp()) {
-//                SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
-//                StaProtocol staProtocol = devpThread.getStation().get(1105);
-//                if (staProtocol == null) {
-//                    continue;
-//                } else {
-//                    staProtocol = staProtocol.clone();
-//                }
-//                if (!staProtocol.isAutoing() || !staProtocol.isLoading()){
-//                    continue;
-//                }
-//            }
-//        }
-//    }
-
-    /**
-     * 灏忚溅涓婂伐浣嶅乏鍙崇Щ鍔�
-     *
-     */
-//    public synchronized boolean rgvStaMove(Long workNo) {
-//        try {
-//            for (RgvSlave rgv : slaveProperties.getRgv()) {
-//                RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgv.getId());
-//                RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
-//                if (rgvProtocol == null) {
-//                    continue;
-//                } else {
-//                    rgvProtocol = rgvProtocol.clone();
-//                }
-//                if (rgvProtocol.isLoaded2ing() && rgvProtocol.isLoaded1ing()) {
-//                    continue;
-//                }
-//                if (rgvProtocol.isLoaded1ing() && !rgvProtocol.isLoaded2ing() && rgvProtocol.getTaskNo1() != 0) {
-//                    WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(rgvProtocol.getTaskNo1());
-//                    Short moveSta = 0;
-//
-//                    if (wrkMastSta.getStaEnd() < 1036 || (2000 < wrkMastSta.getStaEnd() && wrkMastSta.getStaEnd() < 2031)) {
-//                        moveSta = 2;
-//                        boolean rgvComplete = rgvComplete3((int) rgvProtocol.getRgvNo(), 7, wrkMastSta.getWrkNo(), moveSta);
-//                        if (!rgvComplete) {
-//                            log.error("灏忚溅宸ヤ綅绉诲姩澶辫触锛屽皬杞﹀彿{}锛�", rgvProtocol.getRgvNo());
-//                            break;
-//                        }
-//                    }
-//                }
-//                if (!rgvProtocol.isLoaded1ing() && rgvProtocol.isLoaded2ing() && rgvProtocol.getTaskNo2() != 0) {
-//                    WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(rgvProtocol.getTaskNo2());
-//                    Short moveSta = 0;
-//
-//                    if (wrkMastSta.getStaEnd() > 2030 || (1036 < wrkMastSta.getStaEnd() && wrkMastSta.getStaEnd() < 2000)) {
-//                        moveSta = 1;
-//                        boolean rgvComplete = rgvComplete3((int) rgvProtocol.getRgvNo(), 8, wrkMastSta.getWrkNo(), moveSta);
-//                        if (!rgvComplete) {
-//                            log.error("灏忚溅宸ヤ綅绉诲姩澶辫触锛屽皬杞﹀彿{}锛�", rgvProtocol.getRgvNo());
-//                            break;
-//                        }
-//                    }
-//                }
-//
-//
-//            }
-//        } catch (Exception e) {
-//            log.error("灏忚溅澶嶄綅绾跨▼鎶ラ敊锛�" + e);
-//        }
-//    }
-    /**
-     *  瀹屾垚灏忚溅浠诲姟
-     */
-//    public synchronized void rgvCompleteWrkMastSta() {
-//        try{
-//            for (DevpSlave devp : slaveProperties.getDevp()) {
-//                List<BasRgvMap> basRgvMaps = basRgvMapService.selectList(new EntityWrapper<>());
-//            for (RgvSlave rgv : slaveProperties.getRgv()) {
-//                RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgv.getId());
-//                RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
-//                if (rgvProtocol == null) {
-//                    continue;
-//                }else {
-//                    rgvProtocol = rgvProtocol.clone();
-//                }
-//                BasRgv basRgv = basRgvService.selectById(rgv.getId());
-//                if (basRgv == null) {
-//                    log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�3", rgv.getId());
-//                    continue;
-//                }
-//                //鏀捐揣纭
-//                if(rgvProtocol.getStatusType1()==RgvStatusType.FETCHWAITING && rgvProtocol.getModeType() == RgvModeType.AUTO){
-//                    boolean rgvComplete = rgvComplete((int) rgvProtocol.getRgvNo(), 3);
-//                    if (!rgvComplete){
-//                        log.error("灏忚溅鏀捐揣澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�", rgvProtocol.getRgvNo());
-//                    }
-//                }
-//                if(rgvProtocol.getStatusType2()==RgvStatusType.FETCHWAITING && rgvProtocol.getModeType() == RgvModeType.AUTO){
-//                    boolean rgvComplete = rgvComplete((int) rgvProtocol.getRgvNo(), 6);
-//                    if (!rgvComplete){
-//                        log.error("灏忚溅鏀捐揣澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�", rgvProtocol.getRgvNo());
-//                    }
-//                }
-//
-//                // 鍙湁褰揜GV宸ヤ綅1绛夊緟WCS纭銆佽嚜鍔�
-//                if (rgvProtocol.getStatusType1() == RgvStatusType.WAITING
-//                        && rgvProtocol.getModeType() == RgvModeType.AUTO
-//                ){
-//
-//                    log.info("{}鍙峰皬杞︾瓑寰厀cs纭锛岀姸鎬亄}锛屽弬鏁皗}",rgvProtocol.getRgvNo(),rgvProtocol.getStatusType1(),rgvProtocol);
-//                    if(rgvProtocol.getTaskNo1() == 9999){ // 棰勮皟搴︿换鍔$‘璁�
-//                        BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
-//                        Integer staNo = basRgvMap.getNowRoute();
-//                        switch (staNo){
-//                            case 1004: staNo = 1042; break;
-//                            case 1007: staNo = 1105; break;
-//                        }
-//
-//                        SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
-//                        StaProtocol staProtocol = devpThread.getStation().get(staNo);
-//                        boolean rgvComplete = false;
-
-//                        long now = System.currentTimeMillis();
-//                        if (staProtocol.isLoading()) {
-//                            rgvProtocol.setLoadingStartTime(null); // 宸插埌浣嶏紝娓呯┖鏃堕棿鎴�
-//                        } else {
-//                            if (rgvProtocol.getLoadingStartTime() == null) {
-//                                rgvProtocol.setLoadingStartTime(now);
-//                            }
-//                        }
-//
-//                        if (staProtocol.isLoading()) {
-//                            rgvComplete = rgvComplete((int) rgvProtocol.getRgvNo(), 3);
-//                            if (!rgvComplete){
-//                                log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛佺瓑寰呭叆搴撳彇璐�", rgvProtocol.getRgvNo());
-//                            }
-//                        }
-//                    }
-//                    if ( rgvProtocol.getTaskNo1()!=9999 && rgvProtocol.getTaskNo1() != 0){
-//                        WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(rgvProtocol.getTaskNo1());
-//                        if(null == wrkMastSta){
-//                            log.error("灏忚溅鏃犱换鍔�");
-//                            continue;
-//                        }
-//                        if(wrkMastSta.getWrkSts() == 1){//鍙栬揣纭
-////                            if(!Objects.equals(rgvProtocol.getRgvPosI2(), wrkMastSta.getStaEnd())){
-////                                continue;
-////                            }
-//                            boolean rgvComplete = false;
-//                            rgvComplete = rgvComplete3((int) rgvProtocol.getRgvNo(),7,wrkMastSta.getWrkNo(),(short)2);
-//                            if (!rgvComplete){
-//                                log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�",rgvProtocol.getRgvNo());
-//                                break;
-//                            }
-//                            wrkMastSta.setUpdateTime(new Date());
-//                            wrkMastSta.setWrkSts(2);
-//                            try{
-//                                wrkMastStaMapper.updateById(wrkMastSta);
-//                                log.error("鏇存柊灏忚溅浠诲姟鎴愬姛");
-//                            }catch (Exception e){
-//                                log.error("鏇存柊灏忚溅浠诲姟澶辫触");
-//                            }
-//                            break;
-//                        }
-//                    }
-//
-//                    else {
-//                        log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{},绛夊緟wcs纭浣嗘槸娌℃湁宸ヤ綔鍙凤紒",rgvProtocol.getRgvNo());
-//                    }
-//                }
-//                // 鍙湁褰揜GV宸ヤ綅2绛夊緟WCS纭銆佽嚜鍔�
-//                if (rgvProtocol.getStatusType2() == RgvStatusType.WAITING
-//                        && rgvProtocol.getModeType() == RgvModeType.AUTO
-//                ){
-//                    log.info("{}鍙峰皬杞︾瓑寰厀cs纭锛岀姸鎬亄}锛屽弬鏁皗}",rgvProtocol.getRgvNo(),rgvProtocol.getStatusType2(),rgvProtocol);
-//                    if (rgvProtocol.getTaskNo2() !=0 ){
-//                        WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(rgvProtocol.getTaskNo2());
-//                        if(wrkMastSta.getWrkSts() == 1){//鍙栬揣纭
-//                            boolean rgvComplete = false;
-//                            rgvComplete = rgvComplete3((int) rgvProtocol.getRgvNo(),8,wrkMastSta.getWrkNo(),(short)1);
-//                            if (!rgvComplete){
-//                                log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�",rgvProtocol.getRgvNo());
-//                                break;
-//                            }
-//                            wrkMastSta.setWrkSts(2);
-//                            try{
-//                                wrkMastStaMapper.updateById(wrkMastSta);
-//                                log.error("鏇存柊灏忚溅浠诲姟鎴愬姛");
-//                            }catch (Exception e){
-//                                log.error("鏇存柊灏忚溅浠诲姟澶辫触");
-//                            }
-//                            break;
-//                        }
-//                        if(wrkMastSta.getWrkSts() == 4){//琛岃蛋鍚庣‘璁�
-//                            wrkMastSta.setWrkSts(2);
-//                            try{
-//                                wrkMastStaMapper.updateById(wrkMastSta);
-//                                log.error("鏇存柊灏忚溅浠诲姟鎴愬姛");
-//                            }catch (Exception e){
-//                                log.error("鏇存柊灏忚溅浠诲姟澶辫触");
-//                            }
-//                            boolean rgvComplete = false;
-//
-//                            rgvComplete = rgvComplete((int) rgvProtocol.getRgvNo(),7);
-//                            if (!rgvComplete){
-//                                log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�",rgvProtocol.getRgvNo());
-//                                break;
-//                            }
-//                            break;
-//                        }
-//                        if (Cools.isEmpty(wrkMastSta) || wrkMastSta.getWrkSts()!=1){
-//                            log.error("鏈煡鍒板皬杞︽墽琛屼换鍔℃垨鑰呮墽琛屼换鍔$姸鎬佷笉绗﹀悎锛�"+wrkMastSta);
-//                            continue;
-//                        }
-
-//                        SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
-//                        StaProtocol staProtocol = devpThread.getStation().get(wrkMastSta.getStaEnd());
-//                        if (staProtocol == null) {
-//                            continue;
-//                        } else {
-//                            staProtocol = staProtocol.clone();
-//                        }
-//                        if (!staProtocol.isAutoing() || !staProtocol.isLoading()){
-//                            continue;
-//                        }
-//                        WrkMast wrkMast = wrkMastMapper.selectPakInStep3(wrkMastSta.getWrkNo().intValue());
-//
-//                        int sourceSta = wrkMast.getSourceStaNo();
-//                        boolean rgvComplete = false;
-//
-//                        //鍙屽伐浣嶅嚭鍏ュ簱涓嶅悓宸ヤ綅澶嶄綅
-//                        rgvComplete = rgvComplete((int) rgvProtocol.getRgvNo(),6);
-
-//                        if (!rgvComplete){
-//                            log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�",rgvProtocol.getRgvNo());
-//                            break;
-//                        }
-//                        WrkMast wrkMast1 = wrkMastService.selectByWrkNo(rgvProtocol.getTaskNo1());
-//                        wrkMast1.setPdcType("Y");
-//
-//                        wrkMastService.updateById(wrkMast1);
-//
-//                        wrkMastSta.setWrkSts(3);
-//                        wrkMastStaMapper.updateById(wrkMastSta);
-//                        BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
-//                        basRgvMap.setNowRoute(rgvProtocol.getRgvPosI());
-//                        rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute(),"2471");
-//                    }
-//                    else {
-//                        log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{},绛夊緟wcs纭锛�",rgvProtocol.getRgvNo());
-//                    }
-//                }
-//                //褰撳皬杞︽棤浠诲姟鏃跺彇娑堥攣瀹�
-//                if(rgvProtocol.getTaskNo1() == 0 && rgvProtocol.getTaskNo2() == 0){
-//                    rgvThread.setPakMk(true);
-//                    rgvThread.setPakIn(true);
-//                    rgvThread.setPakOut(true);
-//                }
-//            }
-//            }
-//        }catch (Exception e){
-//            log.error("灏忚溅澶嶄綅绾跨▼鎶ラ敊锛�"+e);
-//        }
-//    }
-
-    /**
-     * rgv鏀捐揣浠诲姟涓嬪彂
-     */
-    public synchronized void rgvOutExecute() {
-        for (RgvSlave rgv : slaveProperties.getRgv()) {
-            // 鑾峰彇RGV淇℃伅
-            RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgv.getId());
-            RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
-            if (rgvProtocol.getStatusType1() != RgvStatusType.IDLE && rgvProtocol.getModeType() != RgvModeType.AUTO) {
-                continue;
-            }
-            BasRgv basRgv = basRgvService.selectById(rgv.getId());
-            if (basRgv == null) {
-                log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�4", rgv.getId());
-                continue;
-            }
-            if(rgvProtocol.getStatusType1() == RgvStatusType.WORKING){
-                rgvThread.setPaking(true);
-                continue;
-            }
-            //灏忚溅鏃犱换鍔℃椂璺宠繃
-            if(rgvProtocol.getTaskNo1() ==0 && rgvProtocol.getTaskNo2() == 0 ){
-                continue;
-            }
-            if(!rgvThread.isPaking()){
-                continue;
-
-            }
-            if(!basRgv.getPakAll().equals("1")){
-                continue;
-            }
-            if(basRgv.getPakIn().equals("1")){
-                for(RgvSlave.RgvStn rgvStn : rgv.getRgvInPStn()){//鍏ュ簱鏀捐揣绔欑偣
-                    boolean flag = false;
-
-                    DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, rgvStn.getDevpPlcId());
-                    StaProtocol staProtocol = devpThread.getStation().get(rgvStn.getStaNo());
-                    if (staProtocol == null) {
-                        News.infoNoLog( " - 1" + " - 1" + " - Rgv鍏ュ簱鏀捐揣绔欎俊鎭�(staProtocol!=null缁х画鎵ц)锛歴taProtocol=" + staProtocol);
-                        continue;
-                    } else {
-                        staProtocol = staProtocol.clone();
-                    }
-                    // 鏌ヨ绔欑偣璇︾粏淇℃伅
-                    BasDevp staDetl = basDevpService.selectById(rgvStn.getStaNo());
-                    if (staDetl == null) {
-                        News.error( " - 1" + " - 2" + " - 鍏ュ簱 ===>>Rgv鏀捐揣绔欑偣鍦ㄦ暟鎹簱涓嶅瓨鍦�, 绔欑偣缂栧彿={}", rgvStn.getStaNo());
-                        continue;
-                    }
-
-                    if (staProtocol.isAutoing() && !staProtocol.isLoading() && staDetl.getCanining() != null && staDetl.getCanining().equals("Y")) {
-                        flag = true;
-                    }
-                    if (!flag) {
-                        News.errorNoLog(  " - 1" + " - 3" + " - Rgv鍏ュ簱鏀捐揣绔欎俊鎭�(浠ヤ笅闇�瑕佸叏true):"
-                                + "鑷姩淇″彿" + staProtocol.isAutoing() + "鏈夌墿淇″彿" + staProtocol.isLoading()
-                                + "宸ヤ綔鍙�>0" + staProtocol.getWorkNo() + "鍙叆淇″彿" + staProtocol.isInEnable()
-                                + "鑳藉叆淇″彿锛坵ms璁剧疆锛�.equals(\"Y\")" + staDetl.getCanining());
-                        continue;
-                    }
-                    BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
-                    basRgvMap.setNowRoute(rgvProtocol.getRgvNo() == 1?rgvProtocol.getRgvPosI1():rgvProtocol.getRgvPosI2()); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙�
-                    basRgvMapService.updateById(basRgvMap);
-                    Integer workNo = 0;
-                    if(rgvProtocol.getTaskNo2() > 9999|| rgvProtocol.getTaskNo1() > 9999){
-                        workNo = rgvProtocol.getTaskNo1() !=0 ? rgvProtocol.getTaskNo1() : rgvProtocol.getTaskNo2();
-                    }else{
-                        workNo = rgvProtocol.getTaskNo2() !=0 ? rgvProtocol.getTaskNo2() : rgvProtocol.getTaskNo1();
-                    }
-                    WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNoPut(workNo);
-                    WrkMast wrkMast = wrkMastMapper.selectByWrkNo(workNo);
-                    if( null == wrkMastSta ) {
-                        News.infoNoLog( " - 1" + " - 4" + " - 鏌ヨ鏃犲緟鍏ュ簱鏁版嵁--wrk_sts0, 宸ヤ綔鍙�={}", staProtocol.getWorkNo());
-                        continue;
-                    }
-                    boolean sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta); //鍛戒护涓嬪彂
-                    if (sign){
-                        try{
-                            rgvThread.setPaking(false);
-                            if(wrkMast != null){
-                                wrkMast.setSheetNo("2");
-                                wrkMastMapper.updateById(wrkMast);
-                            }
-                            wrkMastSta.setWrkSts(2);
-                            wrkMastStaMapper.updateById(wrkMastSta);
-                            log.error("鏇存柊灏忚溅浠诲姟鎴愬姛");
-                        }catch (Exception e){
-                            log.error("鏇存柊灏忚溅浠诲姟澶辫触"+ e);
-                        }
-                    } else {
-                        log.error("宸ヤ綔鍙穥}鎵�灞炰换鍔′笅鍙戝け璐�",wrkMastSta.getWrkNo());
-                    }
-
-                }
-                basRgv.setPakRgv("1");
-                basRgvService.updateById(basRgv);
-            }
-            //鍑哄簱鏀捐揣
-            if( basRgv.getPakOut().equals("1")){
-                for(RgvSlave.RgvStn rgvStn : rgv.getRgvOutPStn()){//鍏ュ簱鏀捐揣绔欑偣
-                    boolean flag = false;
-
-                    DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, rgvStn.getDevpPlcId());
-                    StaProtocol staProtocol = devpThread.getStation().get(rgvStn.getStaNo());
-                    if (staProtocol == null) {
-                        News.infoNoLog( " - 1" + " - 1" + " - Rgv鍑哄簱鏀捐揣绔欎俊鎭�(staProtocol!=null缁х画鎵ц)锛歴taProtocol=" + staProtocol);
-                        continue;
-                    } else {
-                        staProtocol = staProtocol.clone();
-                    }
-                    // 鏌ヨ绔欑偣璇︾粏淇℃伅
-                    BasDevp staDetl = basDevpService.selectById(rgvStn.getStaNo());
-                    if (staDetl == null) {
-                        News.error( " - 1" + " - 2" + " - 鍑哄簱 ===>>Rgv鏀捐揣绔欑偣鍦ㄦ暟鎹簱涓嶅瓨鍦�, 绔欑偣缂栧彿={}", rgvStn.getStaNo());
-                        continue;
-                    }
-
-                    if (staProtocol.isAutoing()  && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y")) {
-                        flag = true;
-                    }
-                    if (!flag) {
-                        News.errorNoLog( " - 1" + " - 3" + " - Rgv鍑哄簱鏀捐揣绔欎俊鎭�(浠ヤ笅闇�瑕佸叏true):"
-                                + "鑷姩淇″彿" + staProtocol.isAutoing() + "鏈夌墿淇″彿" + staProtocol.isLoading()
-                                + "宸ヤ綔鍙�>0" + staProtocol.getWorkNo() + "鍙叆淇″彿" + staProtocol.isOutEnable()
-                                + "鑳藉叆淇″彿锛坵ms璁剧疆锛�.equals(\"Y\")" + staDetl.getCanouting());
-                        continue;
-                    }
-                    BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
-                    basRgvMap.setNowRoute(rgvProtocol.getRgvNo() == 1?rgvProtocol.getRgvPosI1():rgvProtocol.getRgvPosI2()); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙�
-                    basRgvMapService.updateById(basRgvMap);
-                    Integer workNo = 0;
-                    if(basRgv.getPakToCrn().equals("1")){
-                        workNo = rgvProtocol.getTaskNo1() !=0 ? rgvProtocol.getTaskNo1():rgvProtocol.getTaskNo2();  //姝e父鎯呭喌鍑哄簱鏀捐揣浼樺厛宸ヤ綅1鏀�
-                    }else{
-                        workNo = rgvProtocol.getTaskNo2() !=0 ? rgvProtocol.getTaskNo2():rgvProtocol.getTaskNo1();  //鎺ラ┏鎯呭喌浼樺厛宸ヤ綅2鏀�
-                    }
-
-                    WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNoPut(workNo);//鏍规嵁绔欑偣宸ヤ綔鍙峰拰灏忚溅宸ヤ綔鑼冨洿妫�绱换鍔℃。
-                    WrkMast wrkMast = wrkMastMapper.selectByWrkNo(workNo);
-
-                    if( null == wrkMastSta ) {
-                        News.infoNoLog( " - 1" + " - 4" + " - 鏌ヨ鏃犲緟鍑哄簱鏁版嵁--wrk_sts0, 宸ヤ綔鍙�={}", staProtocol.getWorkNo());
-                        continue;
-                    }
-                    boolean sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta); //鍛戒护涓嬪彂
-                    if (sign){
-                        try{
-                            rgvThread.setPaking(false);
-                            if(wrkMast != null){
-                                wrkMast.setSheetNo("2");
-                                wrkMastMapper.updateById(wrkMast);
-                            }
-                            wrkMastSta.setWrkSts(2);
-                            wrkMastStaMapper.updateById(wrkMastSta);
-                            log.error("鏇存柊灏忚溅浠诲姟鎴愬姛");
-                        }catch (Exception e){
-                            log.error("鏇存柊灏忚溅浠诲姟澶辫触");
-                        }
-
-                    } else {
-                        log.error("宸ヤ綔鍙穥}鎵�灞炰换鍔′笅鍙戝け璐�",wrkMastSta.getWrkNo());
-                    }
-
-                }
-                basRgv.setPakRgv("1");
-                basRgvService.updateById(basRgv);
-            }
-        }
-    }
-    /**
-     * rgv浠诲姟瀹屾垚
-     */
-    public synchronized void rgvTaskComplete(){
-        for (RgvSlave rgv : slaveProperties.getRgv()) {
-            // 鑾峰彇鍫嗗灈鏈轰俊鎭�
-            RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgv.getId());
-            RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
-            if (rgvProtocol == null) {
-                continue;
-            }
-            BasRgv basRgv = basRgvService.selectById(rgv.getId());
-            if (basRgv == null) {
-                log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�4", rgv.getId());
-                continue;
-            }
-            Long taskNo1 = Long.valueOf(rgvProtocol.getTaskNo1());
-            Long taskNo2 = Long.valueOf(rgvProtocol.getTaskNo2());
-            List<WrkMastSta> wrkMastStaList = wrkMastStaService.selectList(
-                    new EntityWrapper<WrkMastSta>()
-                            .eq("wrk_sts" ,2)
-                    .eq("rgv_no", rgvProtocol.getRgvNo())
-            );
-            for(WrkMastSta wrkMastSta : wrkMastStaList){
-                if(!Objects.equals(wrkMastSta.getWrkNo(), taskNo1) && !Objects.equals(wrkMastSta.getWrkNo(), taskNo2)){
-                    try{
-                        wrkMastSta.setWrkSts(3);
-                        wrkMastStaMapper.updateById(wrkMastSta);
-                        log.info("鏇存柊灏忚溅宸ヤ綔妗h嚦瀹屾垚鎴愬姛");
-                    }catch (Exception e){
-                        log.error("鏇存柊灏忚溅宸ヤ綔妗h嚦瀹屾垚澶辫触");
-                    }
-                }
-            }
-            if(rgvProtocol.getStatusType1() == RgvStatusType.IDLE
-                    && rgvProtocol.getModeType() == RgvModeType.AUTO
-                    && rgvProtocol.getTaskNo1() == 0 && rgvProtocol.getTaskNo2() == 0
-                    && !rgvProtocol.isLoaded1ing()
-                    && !rgvProtocol.isLoaded2ing()){
-                List<WrkMastSta> wrkMastStaLock = wrkMastStaService.selectLockWrk();
-                List<WrkMastSta> wrkMastStaLockT = wrkMastStaService.selectLockWrkT();
-
-                if(wrkMastStaLock.size() > 0 && rgvProtocol.getRgvNo() == 1){
-                    continue ;
-                }
-                if(wrkMastStaLockT.size() > 0 && rgvProtocol.getRgvNo() == 2){
-                    continue ;
-                }
-                basRgv.setPakRgv("1");
-                basRgv.setPakToCrn("1");
-                basRgv.setPakIn("1");
-                basRgv.setPakOut("1");
-                basRgv.setPakAll("1");
-                basRgvService.updateById(basRgv);
-                rgvThread.setPakMk(true);
-            }
-//            List<WrkMastSta> wrkMastStaPakingNum = wrkMastStaService.selectPakingWrkNum(basRgv.getRgvNo());
-//            if(wrkMastStaPakingNum.size() <1){
-//                basRgv.setPakAll("1"); //闃叉鏃犲叾浠栦换鍔℃椂锛岃繛缁彇璐ф棤娉曟仮澶�
-//                basRgvService.updateById(basRgv);
-//            }
-
-        }
-    }
-
-
-        /**
-         * rgv鍑哄叆搴撲换鍔′笅鍙�
-         */
-    public synchronized void rgvIoExecute(Integer mark) {
-        for (RgvSlave rgv : slaveProperties.getRgv()) {
-            // 鑾峰彇鍫嗗灈鏈轰俊鎭�
-            RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgv.getId());
-            RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
-            if (rgvProtocol == null) {
-                continue;
-            }
-
-            BasRgv basRgv = basRgvService.selectById(rgv.getId());
-            if (basRgv == null) {
-                log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�4", rgv.getId());
-                continue;
-            }
-            if(rgvProtocol.getStatusType1() == RgvStatusType.WORKING){
-                rgvThread.setPaking(true);
-            }
-            if(rgvProtocol.isLoaded1ing() && rgvProtocol.isLoaded2ing()){
-                basRgv.setPakAll("1");
-                basRgvService.updateById(basRgv);
-            }
-
-            // 鍙湁褰揜GV绌洪棽 骞朵笖 鏃犱换鍔℃椂鎵嶇户缁墽琛�
-            if (rgvProtocol.getStatusType1() == RgvStatusType.IDLE &&
-                    rgvProtocol.getModeType() == RgvModeType.AUTO && rgvThread.isPakMk()
-                     && rgvThread.isPaking()) {
-                News.warnNoLog(""+mark+" - 0"+" - 寮�濮嬫墽琛孯GV鍏ュ嚭搴撲綔涓氫笅鍙�");
-                // 濡傛灉鏈�杩戜竴娆℃槸鍏ュ簱妯″紡
-//                rgvRunWrkMastInTest();
-
-                if (rgvProtocol.getLastIo().equals("I")) {
-                    if (basRgv.getInEnable().equals("1") && basRgv.getPakIn().equals("1")) {
-                        //mark - 1 - ....
-                        if (rgvProtocol.getTaskNo1()==0){
-                            this.rgvRunWrkMastIn(rgv, rgvProtocol,mark); //  鍏ュ簱
-                        }
-                        rgvProtocol.setLastIo("O");
-                    } else if (basRgv.getOutEnable().equals("1") && basRgv.getPakOut().equals("1")) {
-                        //mark - 2 - ....
-                        if (rgvProtocol.getTaskNo2()==0){
-                            this.rgvRunWrkMastOut(rgv, rgvProtocol,mark); //  鍑哄簱
-                        }
-                        rgvProtocol.setLastIo("I");
-                    }
-                }
-                // 濡傛灉鏈�杩戜竴娆℃槸鍑哄簱妯″紡
-                else if (rgvProtocol.getLastIo().equals("O")) {
-                    if (basRgv.getOutEnable().equals("1")  && basRgv.getPakOut().equals("1")) {
-                        if (rgvProtocol.getTaskNo2()==0){
-                            this.rgvRunWrkMastOut(rgv, rgvProtocol,mark); //  鍑哄簱
-                        }
-                        rgvProtocol.setLastIo("I");
-                    } else if (basRgv.getInEnable().equals("1") && basRgv.getPakIn().equals("1")) {
-                        if (rgvProtocol.getTaskNo1()==0){
-                            this.rgvRunWrkMastIn(rgv, rgvProtocol,mark); //  鍏ュ簱
-                        }
-                        rgvProtocol.setLastIo("O");
-                    }
-                }
-            }
-            WrkMastSta wrkMastSta2 = wrkMastStaMapper.selectByWorkSta(2, (int) rgvProtocol.getRgvNo());
-            WrkMastSta wrkMastSta1 = wrkMastStaMapper.selectByWorkSta(1, (int) rgvProtocol.getRgvNo());
-            if(wrkMastSta1 != null && wrkMastSta2 != null){
-                rgvThread.setPakMk(false);  //灏忚溅鍙屽伐浣嶉攣瀹�
-
-            }
-
-//            if(rgvProtocol.getStatusType1() == RgvStatusType.IDLE && rgvProtocol.getTaskNo1() == 0 && rgvThread.isPakIn() && rgvThread.isPakRgv()){
-//                rgvPreScheduling();//鑻ユ殏鏃犱笅鍙戜换鍔¢璋冨害鎻愬墠鍒板彇璐х偣
-//            }
-
-
-        }
-    }
-    /**
-     * 灏忚溅鍏ュ簱浠诲姟鍙栬揣涓嬪彂
-     */
-    public synchronized void rgvRunWrkMastIn(RgvSlave slave, RgvProtocol rgvProtocol,Integer mark) {
-        for (RgvSlave.RgvStn rgvStn : slave.getRgvInTStn()) {//rgv鍏ュ簱鍙栬揣绔欑偣
-            boolean flag = false;
-            BasRgv basRgv = basRgvService.selectById(slave.getId());
-            if (basRgv == null) {
-                log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�4", slave.getId());
-                continue;
-            }
-            //閬嶅巻rgv鍏ュ簱鍙栬揣绔欑偣
-            DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, rgvStn.getDevpPlcId());
-            StaProtocol staProtocol = devpThread.getStation().get(rgvStn.getStaNo());
-            StaProtocol staProtocol2 = null;  //杩炵画鍙栬揣浠诲姟绔欑偣
-            RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, (int) rgvProtocol.getRgvNo());
-            WrkMastSta wrkMastSta3 = null;//杩炲彇涓や釜
-            if(rgvStn.getStaNo2()!= null ){
-                staProtocol2 = devpThread.getStation().get(rgvStn.getStaNo2());
-                if (staProtocol2 == null) {
-                    News.infoNoLog("" + mark + " - 1" + " - 1" + " - Rgv鍏ュ簱绔欎俊鎭�(staProtocol!=null缁х画鎵ц)锛歴taProtocol=" + staProtocol);
-                    continue;
-                } else {
-                    staProtocol2 = staProtocol2.clone();
-                }
-                BasDevp staDetl2 = basDevpService.selectById(rgvStn.getStaNo2());
-                if (staDetl2 == null) {
-                    News.error("" + mark + " - 1" + " - 2" + " - 鍏ュ簱 ===>>Rgv绔欑偣鍦ㄦ暟鎹簱涓嶅瓨鍦�, 绔欑偣缂栧彿={}", rgvStn.getStaNo());
-                    continue;
-                }
-                if((staProtocol.getWorkNo()>9999 && staProtocol2.getWorkNo()>9999) || (staProtocol.getWorkNo()<10000 && staProtocol2.getWorkNo()<10000)){
-                    //褰撹繛缁彇璐х珯鐐逛负鐩稿悓绫诲瀷鏃舵墠鑳借繛缁彇
-                    wrkMastSta3 = wrkMastStaMapper.selectByWrkNo(staProtocol2.getWorkNo());
-                }
-
-            }
-            if(rgvProtocol.getTaskNo2() > 9999 && staProtocol.getWorkNo() < 10000){
-                continue;
-            }
-
-            if (staProtocol == null) {
-                News.infoNoLog("" + mark + " - 1" + " - 1" + " - Rgv鍏ュ簱绔欎俊鎭�(staProtocol!=null缁х画鎵ц)锛歴taProtocol=" + staProtocol);
-                continue;
-            } else {
-                staProtocol = staProtocol.clone();
-            }
-            // 鏌ヨ绔欑偣璇︾粏淇℃伅
-            BasDevp staDetl = basDevpService.selectById(rgvStn.getStaNo());
-            if (staDetl == null) {
-                News.error("" + mark + " - 1" + " - 2" + " - 鍏ュ簱 ===>>Rgv绔欑偣鍦ㄦ暟鎹簱涓嶅瓨鍦�, 绔欑偣缂栧彿={}", rgvStn.getStaNo());
-                continue;
-            }
-            if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() != 0
-                    && staDetl.getCanining() != null && staDetl.getCanining().equals("Y")) {
-                flag = true;
-            }
-            if (!flag) {
-                News.errorNoLog("" + mark + " - 1" + " - 3" + " - Rgv鍏ュ簱鍙栬揣绔欎俊鎭�(浠ヤ笅闇�瑕佸叏true):"
-                        + "鑷姩淇″彿" + staProtocol.isAutoing() + "鏈夌墿淇″彿" + staProtocol.isLoading()
-                        + "宸ヤ綔鍙�>0" + staProtocol.getWorkNo() + "鑳藉叆淇″彿锛坵ms璁剧疆锛�.equals(\"Y\")" + staDetl.getCanining());
-                continue;
-            }
-            BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
-            List<Integer> route = new ArrayList<>();
-            switch (rgvProtocol.getRgvNo()){
-                case 1: route = RouteUtils.getRouteOne();break;
-                case 2: route = RouteUtils.getRouteTwo();break;
-            }
-            basRgvMap.setNowRoute(rgvProtocol.getRgvNo() == 1?rgvProtocol.getRgvPosI1():rgvProtocol.getRgvPosI2()); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙�
-            basRgvMapService.updateById(basRgvMap);
-            WrkMastSta wrkMastSta = wrkMastStaMapper.selectNoInterfere(route, route, Long.valueOf(staProtocol.getWorkNo()));//鏍规嵁绔欑偣宸ヤ綔鍙峰拰灏忚溅宸ヤ綔鑼冨洿妫�绱换鍔℃。
-            if( null == wrkMastSta ) {
-                News.infoNoLog("" + mark + " - 1" + " - 4" + " - 鏌ヨ鏃犲緟鍏ュ簱鏁版嵁--wrk_sts0, 宸ヤ綔鍙�={}", staProtocol.getWorkNo());
-                continue;
-            }
-            WrkMastSta wrkMastSta2 = null;
-            if(rgvProtocol.getTaskNo2() != null){
-                wrkMastSta2 = wrkMastStaMapper.selectByWrkNo(rgvProtocol.getTaskNo2());
-            }
-            boolean result = false;
-            if(wrkMastSta2 != null && rgvProtocol.getRgvNo() == 1){ //璺濈璁$畻   2妤煎崟鍏ュ簱鍙d笉闇�瑕佽绠�
-                 result = rgvCalcDistance((int) rgvProtocol.getRgvNo(),wrkMastSta2.getStaEnd(),wrkMastSta.getStaStart());//宸ヤ綅2鏀捐揣绔欑偣锛屽伐浣�1鍙栬揣绔欑偣
-            }
-            if(result){//鑻ュ皬杞﹁窛绂绘斁璐х偣璺濈杩戜簬鍙栬揣鐐瑰垯璺宠繃鍙栬揣 true璺宠繃鍙栬揣/false浼樺厛鍙栬揣
-                basRgv.setPakRgv("0");
-                basRgvService.updateById(basRgv);
-
-//                rgvThread.setPakRgv(false);
-                continue;
-            }
-            wrkMastSta.setWorkSta(wrkMastSta2 !=null ? 1 : 2);
-            wrkMastSta.setRgvNo((int) rgvProtocol.getRgvNo());
-            boolean sign = false;
-            sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta); //鍛戒护涓嬪彂
-            if (sign){
-
-                if(wrkMastSta3 != null ){
-                    List<WrkMastSta> wrkMastStaPaking = wrkMastStaService.selectPakingWrk(wrkMastSta3.getStaStart());
-                    if(wrkMastStaPaking.size() < 1 ){//宸叉湁鏍囪涓嶅啀鏍囪
-                        wrkMastSta3.setMk(1);
-                        basRgv.setPakAll("0");
-                        basRgvService.updateById(basRgv);
-
-                        try{
-                            wrkMastStaMapper.updateById(wrkMastSta3);
-                            log.error("閿佸畾鐩搁殧绔欑偣浠诲姟");
-                        }catch (Exception e){
-                            log.error("閿佸畾鐩搁殧绔欑偣浠诲姟澶辫触");
-                        }
-                    }
-                }
-                basRgv.setPakOut("0");//鍑哄簱涓嶅厑璁�
-                basRgvService.updateById(basRgv);
-                rgvThread.setPaking(false);//浠诲姟涓嬪彂閿佸畾
-
-                try{
-                    wrkMastSta.setWrkSts(1);
-                    wrkMastStaMapper.updateById(wrkMastSta);
-                    log.error("鏇存柊灏忚溅浠诲姟鎴愬姛");
-                }catch (Exception e){
-                    log.error("鏇存柊灏忚溅浠诲姟澶辫触");
-                }
-            } else {
-                log.error("宸ヤ綔鍙穥}鎵�灞炰换鍔′笅鍙戝け璐�",wrkMastSta.getWrkNo());
-            }
-
-
-        }
-    }
-    /**
-     * 灏忚溅鍑哄簱浠诲姟鍙栬揣涓嬪彂
-     */
-    public synchronized void rgvRunWrkMastOut(RgvSlave slave, RgvProtocol rgvProtocol,Integer mark){
-        for (RgvSlave.RgvStn rgvStn : slave.getRgvOutTStn()) {//rgv鍑哄簱鍙栬揣绔欑偣
-            boolean flag = false;
-            //閬嶅巻rgv鍏ュ簱鍙栬揣绔欑偣
-            DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, rgvStn.getDevpPlcId());
-            StaProtocol staProtocol = devpThread.getStation().get(rgvStn.getStaNo());
-            RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, (int) rgvProtocol.getRgvNo());
-            BasRgv basRgv = basRgvService.selectById(slave.getId());
-            if (basRgv == null) {
-                log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�4", slave.getId());
-                continue;
-            }
-            StaProtocol staProtocol2 = null;
-            WrkMastSta wrkMastSta3 = null;
-
-            if(rgvStn.getStaNo2()!= null ){
-                staProtocol2 = devpThread.getStation().get(rgvStn.getStaNo2());
-                if (staProtocol2 == null) {
-                    News.infoNoLog("" + mark + " - 1" + " - 1" + " - Rgv鍏ュ簱绔欎俊鎭�(staProtocol!=null缁х画鎵ц)锛歴taProtocol=" + staProtocol);
-                    continue;
-                } else {
-                    staProtocol2 = staProtocol2.clone();
-                }
-                BasDevp staDetl2 = basDevpService.selectById(rgvStn.getStaNo2());
-                if (staDetl2 == null) {
-                    News.error("" + mark + " - 1" + " - 2" + " - 鍏ュ簱 ===>>Rgv绔欑偣鍦ㄦ暟鎹簱涓嶅瓨鍦�, 绔欑偣缂栧彿={}", rgvStn.getStaNo());
-                    continue;
-                }
-                wrkMastSta3 = wrkMastStaMapper.selectByWrkNo(staProtocol2.getWorkNo());
-
-            }
-            if (staProtocol == null) {
-                News.infoNoLog("" + mark + " - 1" + " - 1" + " - Rgv鍑哄簱绔欎俊鎭�(staProtocol!=null缁х画鎵ц)锛歴taProtocol=" + staProtocol);
-                continue;
-            } else {
-                staProtocol = staProtocol.clone();
-            }
-
-            // 鏌ヨ绔欑偣璇︾粏淇℃伅
-            BasDevp staDetl = basDevpService.selectById(rgvStn.getStaNo());
-            if (staDetl == null) {
-                News.error("" + mark + " - 1" + " - 2" + " - 鍑哄簱 ===>>Rgv绔欑偣鍦ㄦ暟鎹簱涓嶅瓨鍦�, 绔欑偣缂栧彿={}", rgvStn.getStaNo());
-                continue;
-            }
-
-            if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() > 0
-                    && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y")) {
-                flag = true;
-            }
-            if (!flag) {
-                News.errorNoLog("" + mark + " - 1" + " - 3" + " - Rgv鍑哄簱鍙栬揣绔欎俊鎭�(浠ヤ笅闇�瑕佸叏true):"
-                        + "鑷姩淇″彿" + staProtocol.isAutoing() + "鏈夌墿淇″彿" + staProtocol.isLoading()
-                        + "宸ヤ綔鍙�>0" + staProtocol.getWorkNo() + "鍙叆淇″彿" + staProtocol.isOutEnable()
-                        + "鑳藉叆淇″彿锛坵ms璁剧疆锛�.equals(\"Y\")" + staDetl.getCanouting());
-                continue;
-            }
-            BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
-            List<Integer> route = new ArrayList<>();
-            switch (rgvProtocol.getRgvNo()){
-                case 1: route = RouteUtils.getRouteOne();break;
-                case 2: route = RouteUtils.getRouteTwo();break;
-            }
-            basRgvMap.setNowRoute(rgvProtocol.getRgvNo() == 1?rgvProtocol.getRgvPosI1():rgvProtocol.getRgvPosI2()); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙�
-            basRgvMapService.updateById(basRgvMap);
-            WrkMastSta wrkMastSta = wrkMastStaMapper.selectNoInterfere(route, route, Long.valueOf(staProtocol.getWorkNo()));//鏍规嵁绔欑偣宸ヤ綔鍙峰拰灏忚溅宸ヤ綔鑼冨洿妫�绱换鍔℃。
-            WrkMastSta wrkMastSta1 = wrkMastStaMapper.selectByWrkNo( rgvProtocol.getTaskNo1());
-            if(basRgv.getPakToCrn().equals("0")){
-                wrkMastSta = wrkMastStaMapper.selectNoInterfereCrn(route, route, Long.valueOf(staProtocol.getWorkNo()));//澶勭悊鎺ラ┏浠诲姟鏃讹紝杩炵画鍙彇鎺ラ┏浠诲姟
-            }
-            if( null == wrkMastSta ) {
-                News.infoNoLog("" + mark + " - 1" + " - 4" + " - 鏌ヨ鏃犲緟鍏ュ簱鏁版嵁--wrk_sts0, 宸ヤ綔鍙�={}", staProtocol.getWorkNo());
-                continue;
-            }
-            boolean result = false;
-            if(wrkMastSta1!= null && rgvProtocol.getRgvNo() == 1){ //璺濈璁$畻   2妤煎崟鍏ュ簱鍙d笉闇�瑕佽绠�
-                result = rgvCalcDistance((int) rgvProtocol.getRgvNo(),wrkMastSta1.getStaEnd(),wrkMastSta.getStaStart());//宸ヤ綅2鏀捐揣绔欑偣锛屽伐浣�1鍙栬揣绔欑偣
-            }
-            if(result){//鑻ュ皬杞﹁窛绂绘斁璐х偣璺濈杩戜簬鍙栬揣鐐瑰垯璺宠繃鍙栬揣 true璺宠繃鍙栬揣/false浼樺厛鍙栬揣
-                basRgv.setPakRgv("0");
-                basRgvService.updateById(basRgv);
-
-                continue;
-            }
-            if(wrkMastSta != null &&LEFT_POSITION.contains(wrkMastSta.getStaEnd())){
-                StaProtocol staProtocolSta = devpThread.getStation().get(wrkMastSta.getStaEnd());
-                if (staProtocolSta == null) {
-                    News.infoNoLog("" + mark + " - 1" + " - 1" + " - Rgv鍏ュ簱绔欎俊鎭�(staProtocol!=null缁х画鎵ц)锛歴taProtocol=" + staProtocol);
-                    continue;
-                } else {
-                    staProtocolSta = staProtocolSta.clone();
-                }
-                if(staProtocolSta.isLoading()){
-                    continue;
-                }
-            }
-            wrkMastSta.setWorkSta(wrkMastSta1 !=null ? 2 : 1);//鑻�1鍙峰伐浣嶆湁浠诲姟缁�2鍙峰伐浣�
-            wrkMastSta.setRgvNo((int) rgvProtocol.getRgvNo());
-            boolean sign = false;
-            sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta); //鍛戒护涓嬪彂
-            if (sign){
-                if(LEFT_POSITION.contains(wrkMastSta.getStaEnd())){
-                    basRgv.setPakToCrn("0");
-                    basRgvService.updateById(basRgv);
-                    if(wrkMastSta3 != null){
-                        if(!LEFT_POSITION.contains(wrkMastSta3.getStaEnd())){
-                            wrkMastSta3 = null;//鑻ユ帴椹崇浜屼綅涓嶆帴椹虫椂鍙栨秷杩炵画鍙栬揣
-                        }
-                    }
-                }
-                if(wrkMastSta3 != null ){
-                    List<WrkMastSta> wrkMastStaPaking = wrkMastStaService.selectPakingWrk(wrkMastSta3.getStaStart());
-                    if(wrkMastStaPaking.size() < 1){
-                        wrkMastSta3.setMk(1);
-                        basRgv.setPakAll("0");
-                        basRgvService.updateById(basRgv);
-                        try{
-                            wrkMastStaMapper.updateById(wrkMastSta3);
-                            log.error("閿佸畾鐩搁殧绔欑偣浠诲姟");
-                        }catch (Exception e){
-                            log.error("閿佸畾鐩搁殧绔欑偣浠诲姟澶辫触");
-                        }
-                    }
-                }
-                basRgv.setPakIn("0");
-                basRgvService.updateById(basRgv);
-
-                rgvThread.setPaking(false);
-                try{
-                    wrkMastSta.setWrkSts(1);
-                    wrkMastStaMapper.updateById(wrkMastSta);
-                    log.error("鏇存柊灏忚溅浠诲姟鎴愬姛");
-                }catch (Exception e){
-                    log.error("鏇存柊灏忚溅浠诲姟澶辫触");
-                }
-            } else {
-                log.error("宸ヤ綔鍙穥}鎵�灞炰换鍔′笅鍙戝け璐�",wrkMastSta.getWrkNo());
-            }
-
-
-        }
-    }
-
-    /**
-     * 灏忚溅鍑哄簱鎺ラ┏浠诲姟鍙栬揣涓嬪彂
-     */
-    public synchronized void rgvRunWrkToCrn(RgvSlave slave, RgvProtocol rgvProtocol,Integer mark){
-        for (RgvSlave.RgvStn rgvStn : slave.getRgvOutTStn()) {//rgv鍑哄簱鍙栬揣绔欑偣
-            boolean flag = false;
-            //閬嶅巻rgv鍏ュ簱鍙栬揣绔欑偣
-            DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, rgvStn.getDevpPlcId());
-            StaProtocol staProtocol = devpThread.getStation().get(rgvStn.getStaNo());
-            RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, (int) rgvProtocol.getRgvNo());
-            BasRgv basRgv = basRgvService.selectById(slave.getId());
-            if (basRgv == null) {
-                log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�4", slave.getId());
-                continue;
-            }
-            StaProtocol staProtocol2 = null;
-            WrkMastSta wrkMastSta3 = null;
-
-            if(rgvStn.getStaNo2()!= null ){
-                staProtocol2 = devpThread.getStation().get(rgvStn.getStaNo2());
-                if (staProtocol2 == null) {
-                    News.infoNoLog("" + mark + " - 1" + " - 1" + " - Rgv鍏ュ簱绔欎俊鎭�(staProtocol!=null缁х画鎵ц)锛歴taProtocol=" + staProtocol);
-                    continue;
-                } else {
-                    staProtocol2 = staProtocol2.clone();
-                }
-                BasDevp staDetl2 = basDevpService.selectById(rgvStn.getStaNo2());
-                if (staDetl2 == null) {
-                    News.error("" + mark + " - 1" + " - 2" + " - 鍏ュ簱 ===>>Rgv绔欑偣鍦ㄦ暟鎹簱涓嶅瓨鍦�, 绔欑偣缂栧彿={}", rgvStn.getStaNo());
-                    continue;
-                }
-                wrkMastSta3 = wrkMastStaMapper.selectByWrkNo(staProtocol2.getWorkNo());
-
-            }
-            if (staProtocol == null) {
-                News.infoNoLog("" + mark + " - 1" + " - 1" + " - Rgv鍑哄簱绔欎俊鎭�(staProtocol!=null缁х画鎵ц)锛歴taProtocol=" + staProtocol);
-                continue;
-            } else {
-                staProtocol = staProtocol.clone();
-            }
-
-            // 鏌ヨ绔欑偣璇︾粏淇℃伅
-            BasDevp staDetl = basDevpService.selectById(rgvStn.getStaNo());
-            if (staDetl == null) {
-                News.error("" + mark + " - 1" + " - 2" + " - 鍑哄簱 ===>>Rgv绔欑偣鍦ㄦ暟鎹簱涓嶅瓨鍦�, 绔欑偣缂栧彿={}", rgvStn.getStaNo());
-                continue;
-            }
-
-            if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() > 0
-                    && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y")) {
-                flag = true;
-            }
-            if (!flag) {
-                News.errorNoLog("" + mark + " - 1" + " - 3" + " - Rgv鍑哄簱鍙栬揣绔欎俊鎭�(浠ヤ笅闇�瑕佸叏true):"
-                        + "鑷姩淇″彿" + staProtocol.isAutoing() + "鏈夌墿淇″彿" + staProtocol.isLoading()
-                        + "宸ヤ綔鍙�>0" + staProtocol.getWorkNo() + "鍙叆淇″彿" + staProtocol.isOutEnable()
-                        + "鑳藉叆淇″彿锛坵ms璁剧疆锛�.equals(\"Y\")" + staDetl.getCanouting());
-                continue;
-            }
-            BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
-            List<Integer> route = new ArrayList<>();
-            switch (rgvProtocol.getRgvNo()){
-                case 1: route = RouteUtils.getRouteOne();break;
-                case 2: route = RouteUtils.getRouteTwo();break;
-            }
-            basRgvMap.setNowRoute(rgvProtocol.getRgvNo() == 1?rgvProtocol.getRgvPosI1():rgvProtocol.getRgvPosI2()); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙�
-            basRgvMapService.updateById(basRgvMap);
-            WrkMastSta wrkMastSta = wrkMastStaMapper.selectNoInterfere(route, route, Long.valueOf(staProtocol.getWorkNo()));//鏍规嵁绔欑偣宸ヤ綔鍙峰拰灏忚溅宸ヤ綔鑼冨洿妫�绱换鍔℃。
-            if( null == wrkMastSta ) {
-                News.infoNoLog("" + mark + " - 1" + " - 4" + " - 鏌ヨ鏃犲緟鍏ュ簱鏁版嵁--wrk_sts0, 宸ヤ綔鍙�={}", staProtocol.getWorkNo());
-                continue;
-            }
-            WrkMastSta wrkMastSta1 = wrkMastStaMapper.selectByWrkNo( rgvProtocol.getTaskNo1());
-            if(basRgv.getPakToCrn().equals("0")){
-                wrkMastSta = wrkMastStaMapper.selectNoInterfereCrn(route, route, Long.valueOf(staProtocol.getWorkNo()));
-            }
-            boolean result = false;
-            if(wrkMastSta1!= null && rgvProtocol.getRgvNo() == 1){ //璺濈璁$畻   2妤煎崟鍏ュ簱鍙d笉闇�瑕佽绠�
-                result = rgvCalcDistance((int) rgvProtocol.getRgvNo(),wrkMastSta1.getStaEnd(),wrkMastSta.getStaStart());//宸ヤ綅2鏀捐揣绔欑偣锛屽伐浣�1鍙栬揣绔欑偣
-            }
-            if(result){//鑻ュ皬杞﹁窛绂绘斁璐х偣璺濈杩戜簬鍙栬揣鐐瑰垯璺宠繃鍙栬揣 true璺宠繃鍙栬揣/false浼樺厛鍙栬揣
-                basRgv.setPakRgv("0");
-                basRgvService.updateById(basRgv);
-
-                continue;
-            }
-            wrkMastSta.setWorkSta(wrkMastSta1 !=null ? 2 : 1);//鑻�1鍙峰伐浣嶆湁浠诲姟缁�2鍙峰伐浣�
-            wrkMastSta.setRgvNo((int) rgvProtocol.getRgvNo());
-            boolean sign = false;
-            sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta); //鍛戒护涓嬪彂
-            if (sign){
-                if(LEFT_POSITION.contains(wrkMastSta.getStaEnd())){
-                    basRgv.setPakToCrn("0");
-                    basRgvService.updateById(basRgv);
-                    if(wrkMastSta3 != null){
-                        if(!LEFT_POSITION.contains(wrkMastSta3.getStaEnd())){
-                            wrkMastSta3 = null;//鑻ユ帴椹崇浜屼綅涓嶆帴椹虫椂鍙栨秷杩炵画鍙栬揣
-                        }
-                    }
-                }
-
-                if(wrkMastSta3 != null ){
-                    List<WrkMastSta> wrkMastStaPaking = wrkMastStaService.selectPakingWrk(wrkMastSta3.getStaStart());
-                    if(wrkMastStaPaking.size() < 1){
-                        wrkMastSta3.setMk(1);
-                        basRgv.setPakAll("0");
-                        basRgvService.updateById(basRgv);
-                        try{
-                            wrkMastStaMapper.updateById(wrkMastSta3);
-                            log.error("閿佸畾鐩搁殧绔欑偣浠诲姟");
-                        }catch (Exception e){
-                            log.error("閿佸畾鐩搁殧绔欑偣浠诲姟澶辫触");
-                        }
-                    }
-                }
-                basRgv.setPakIn("0");
-                basRgvService.updateById(basRgv);
-
-                rgvThread.setPaking(false);
-//                rgvThread.setPakIn(false);//鍏ュ簱涓嶅厑璁�
-                try{
-                    wrkMastSta.setWrkSts(1);
-                    wrkMastStaMapper.updateById(wrkMastSta);
-                    log.error("鏇存柊灏忚溅浠诲姟鎴愬姛");
-                }catch (Exception e){
-                    log.error("鏇存柊灏忚溅浠诲姟澶辫触");
-                }
-            } else {
-                log.error("宸ヤ綔鍙穥}鎵�灞炰换鍔′笅鍙戝け璐�",wrkMastSta.getWrkNo());
-            }
-
-
-        }
-    }
-    /**
-     * 鎵ц灏忚溅鎼繍浠诲姟
-     *
-     * @return
-     */
-//    public synchronized boolean rgvRunWrkMastFullSta() {
-//        boolean wrkEnable = false;
-//        try{
-//            List<BasRgvMap> basRgvMaps = basRgvMapService.selectList(new EntityWrapper<>());
-//            for (BasRgvMap rgvSlave:basRgvMaps) {
-//                RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getRgvNo());
-//                RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
-//                if (rgvProtocol == null) {
-//                    continue;
-//                }else {
-//                    rgvProtocol = rgvProtocol.clone();
-//                }
-//                BasRgv basRgv = basRgvService.selectById(rgvSlave.getRgvNo());
-//                if (basRgv == null) {
-//                    log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�4", rgvSlave.getRgvNo());
-//                    continue;
-//                }
-//
-//                // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅涓�鏃犵墿//rgv鍙敤  鍏ュ簱鍙栬揣
-//                if (rgvProtocol.getStatusType() == RgvStatusType.IDLE
-//                        && rgvProtocol.getModeType() == RgvModeType.AUTO
-//                        && !rgvProtocol.isLoaded1ing()
-//                        && rgvProtocol.getTaskNo1() == 0
-//                        && rgvThread.isPakMk()
-//                        && rgvThread.isPakIn()
-//                ) {
-//                    BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
-//                    if (basRgvMap == null) {
-//                        log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱鍦板浘涓繘琛岀淮鎶わ紒", rgvProtocol.getRgvNo());
-//                        continue;
-//                    }
-//                    List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(), basRgvMap.getEndRoute());
-//                    basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙�
-//                    List<WrkMastSta> wrkMastStaList = wrkMastStaMapper.selectNoInterfereList(route, route);
-//                    for (WrkMastSta wrkMastSta : wrkMastStaList){
-//                        List<Integer> staNos = Arrays.asList(1042, 1105, 1038, 1036, 2037);//鍏ュ簱鍙�
-//                        if (!staNos.contains(wrkMastSta.getStaStart())) {
-//                            continue;
-//                        }
-//                        boolean sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta); //鍛戒护涓嬪彂
-//                        wrkEnable = true;
-//                        if (sign){
-//                            wrkMastSta.setWrkSts(1);
-//                            try{
-//                                wrkMastStaMapper.updateById(wrkMastSta);
-//                                log.error("鏇存柊灏忚溅浠诲姟鎴愬姛");
-//                            }catch (Exception e){
-//                                log.error("鏇存柊灏忚溅浠诲姟澶辫触");
-//                            }
-//                            rgvThread.setPakMk(false);
-//                            rgvThread.setPakOut(false);
-//                            boolean signMap = rgvMapUpdate(basRgvMap, wrkMastSta.getStaStart(), wrkMastSta.getStaEnd(),"2526");
-//                            if (signMap){
-//                                return wrkEnable;
-////                                break;
-//                            }else {
-//                                log.error("璐х墿鎼繍浠诲姟锛氬伐浣滃彿{}鎵�灞炰换鍔′笅鍙戝悗鍦板浘鍚屾澶辫触",wrkMastSta.getWrkNo());
-//                                Thread.sleep(500);
-//                            }
-//                        } else {
-//                            log.error("宸ヤ綔鍙穥}鎵�灞炰换鍔′笅鍙戝け璐�",wrkMastSta.getWrkNo());
-//                            Thread.sleep(500);
-//                        }
-//                        break;
-//                    }
-//                }
-//
-//                // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅涓�鏃犵墿//rgv鍙敤  鍑哄簱鍙栬揣
-//                if (rgvProtocol.getStatusType() == RgvStatusType.IDLE
-//                        && rgvProtocol.getModeType() == RgvModeType.AUTO
-//                        && !rgvProtocol.isLoaded2ing()
-//                        && rgvProtocol.getTaskNo2() == 0
-//                        && rgvThread.isPakMk()
-//                        && rgvThread.isPakOut()
-//                ){
-//                    BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
-//                    if (basRgvMap == null) {
-//                        log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱鍦板浘涓繘琛岀淮鎶わ紒", rgvProtocol.getRgvNo());
-//                        continue;
-//                    }
-//                    List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(), basRgvMap.getEndRoute());
-//                    basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙�
-//                    List<WrkMastSta> wrkMastStaList = wrkMastStaMapper.selectNoInterfereList(route, route);
-//                    for (WrkMastSta wrkMastSta : wrkMastStaList){
-//                        List<Integer> staNos = Arrays.asList(1042, 1105, 1038, 1036, 2037);//鍏ュ簱鍙�
-//                        if (staNos.contains(wrkMastSta.getStaStart())) {//闈炲叆搴撳彛锛堝嚭搴撳彛锛夐檺鍒�
-//                            continue;
-//                        }
-//                        boolean sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta,null); //鍛戒护涓嬪彂
-//                        wrkEnable = true;
-//                        if (sign){
-//                            wrkMastSta.setWrkSts(1);
-//                            try{
-//                                wrkMastStaMapper.updateById(wrkMastSta);
-//                                log.error("鏇存柊灏忚溅浠诲姟鎴愬姛");
-//                            }catch (Exception e){
-//                                log.error("鏇存柊灏忚溅浠诲姟澶辫触");
-//                            }
-//                            rgvThread.setPakMk(false);
-//                            rgvThread.setPakOut(false);
-//                            boolean signMap = rgvMapUpdate(basRgvMap, wrkMastSta.getStaStart(), wrkMastSta.getStaEnd(),"2526");
-//                            if (signMap){
-//                                return wrkEnable;
-////                                break;
-//                            }else {
-//                                log.error("璐х墿鎼繍浠诲姟锛氬伐浣滃彿{}鎵�灞炰换鍔′笅鍙戝悗鍦板浘鍚屾澶辫触",wrkMastSta.getWrkNo());
-//                                Thread.sleep(500);
-//                            }
-//                        } else {
-//                            log.error("宸ヤ綔鍙穥}鎵�灞炰换鍔′笅鍙戝け璐�",wrkMastSta.getWrkNo());
-//                            Thread.sleep(500);
-//                        }
-//                        break;
-//                    }
-//
-//                }
-//
-//            }
-//        }catch (Exception e){
-//            log.error("鎵ц灏忚溅鎼繍浠诲姟涓嬪彂澶辫触");
-//        }
-//        return wrkEnable;
-//    }
-    /**
-     * 灏忚溅棰勮皟搴�
-     */
-//    public synchronized  void rgvPreScheduling(){
-//        try{
-//            List<BasRgvMap> basRgvMaps = basRgvMapService.selectList(new EntityWrapper<>());
-//            for (BasRgvMap rgvSlave:basRgvMaps) {
-//                RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getRgvNo());
-//                RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
-//                if (rgvProtocol == null) {
-//                    continue;
-//                }else {
-//                    rgvProtocol = rgvProtocol.clone();
-//                }
-//                BasRgv basRgv = basRgvService.selectById(rgvSlave.getRgvNo());
-//                if (basRgv == null) {
-//                    log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�4", rgvSlave.getRgvNo());
-//                    continue;
-//                }
-//
-//                // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅涓�鏃犵墿//rgv鍙敤  鎵嶈繘琛岄璋冨害
-//                if (rgvProtocol.getStatusType() == RgvStatusType.IDLE
-//                        && rgvProtocol.getModeType() == RgvModeType.AUTO
-//                        && !rgvProtocol.isLoaded1ing()
-//                        && rgvProtocol.getTaskNo1() == 0
-//                        && !rgvProtocol.isLoaded2ing()
-//                        && rgvProtocol.getTaskNo2() == 0
-//                        && rgvThread.isPakMk()
-//                ) {
-//                    BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
-//                    if (basRgvMap == null) {
-//                        log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱鍦板浘涓繘琛岀淮鎶わ紒", rgvProtocol.getRgvNo());
-//                        continue;
-//                    }
-//                    List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(), basRgvMap.getEndRoute());
-//                    basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙�
-//                    // 鏍规嵁杈撻�佺嚎plc閬嶅巻
-//                    for (DevpSlave devp : slaveProperties.getDevp()) {
-//                        // 閬嶅巻鍏ュ簱鍙�  鍏ュ簱棰勮皟搴�
-//                        List<Integer> staNos = Arrays.asList( 1043, 1104, 1029, 1022, 1019, 1008, 1005);
-//                        for (Integer staNo : staNos) {
-//                            SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
-//                            StaProtocol staProtocol = devpThread.getStation().get(staNo);
-//                            if(staProtocol.isLoading()){
-//                                RgvCommand rgvCommand = new RgvCommand();
-//                                rgvCommand.setRgvNo((int) rgvProtocol.getRgvNo()); // RGV缂栧彿
-//                                rgvCommand.setAckFinish1(false);  // 宸ヤ綅1浠诲姟瀹屾垚纭浣�
-//                                rgvCommand.setTaskNo(9999); // 宸ヤ綅1宸ヤ綔鍙�
-//                                rgvCommand.setTaskMode1(RgvTaskModeType.X_MOVE); // 宸ヤ綅1浠诲姟妯″紡:  绉诲姩
-//                                switch (staNo){
-//                                    case 1043: rgvCommand.setTargetPosition1(1042);break;  //宸ヤ綅1鐩爣绔欑偣
-//                                    case 1104: rgvCommand.setTargetPosition1(1105);break;
-//                                    case 1037: rgvCommand.setTargetPosition1(1036);break;
-//
-//                                }
-//                                if(Objects.equals(basRgvMap.getNowRoute(), staNo)){
-//                                    continue;
-//                                }
-//                                rgvCommand.setCommand(true);   //宸ヤ綅1浠诲姟纭
-//                                if (!MessageQueue.offer(SlaveType.Rgv, (int) rgvProtocol.getRgvNo(), new Task(4, rgvCommand))) {
-//                                    //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱   step=4锛屽伐浣�1鍐欎换鍔★紱     step=5锛屽伐浣�2鍐欎换鍔�
-//                                    log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", (int) rgvProtocol.getRgvNo(), JSON.toJSON(rgvCommand));
-//                                }
-//                            }
-//                        }
-//
-//                    }
-//
-//                }
-//            }
-//        }catch (Exception e){
-//            log.error("鎵ц灏忚溅绉诲姩涓嬪彂澶辫触");
-//        }
-//    }
-
-
-
-    /*
-     * 灏忚溅鍙栬揣鑷冲伐浣嶄换鍔�
-     * */
-    public synchronized boolean rgvTakeFullAll(Integer rgvId,WrkMastSta wrkMastSta){
-        try{
-            //  鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
-            RgvCommand rgvCommand = new RgvCommand();
-            rgvCommand.setRgvNo(rgvId); // RGV缂栧彿
-            RgvTaskStatusType type;
-            Integer targetPosition = 0;
-            if(wrkMastSta.getWrkSts() == 0){
-                type = RgvTaskStatusType.FETCH; //鍙栬揣
-                targetPosition = wrkMastSta.getStaStart();
-            }else{
-                type = RgvTaskStatusType.PUT; //鏀捐揣
-                targetPosition = wrkMastSta.getStaEnd();
-            }
-            rgvCommand.setTaskNo(Math.toIntExact(wrkMastSta.getWrkNo())); // 宸ヤ綅宸ヤ綔鍙�
-            rgvCommand.setTaskStatus(type); // 宸ヤ綅浠诲姟妯″紡:  鍙栬揣
-            rgvCommand.setTargetPosition(targetPosition);   //宸ヤ綅鐩爣绔欑偣
-            rgvCommand.setWrkTaskPri(wrkMastSta.getWorkSta());
-            if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(2, rgvCommand))) {
-                //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱   step=4锛屽伐浣�1鍐欎换鍔★紱     step=5锛屽伐浣�2鍐欎换鍔�
-                log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, JSON.toJSON(rgvCommand));
-                return false;
-            } else {
-
-                return true;
-            }
-
-        }catch (Exception e){
-            return false;
-        }
-    }
-
-    /**
-     *  鍙栨斁鍙栬矾寰勮绠�
-     */
-    public synchronized boolean rgvCalcDistance(Integer rgvNo, Integer outStn, Integer inStn){
-        try {
-            // 灏忚溅褰撳墠浣嶇疆
-            BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvNo);
-            Integer currPos = basRgvMap.getNowRoute(); // 鎴栬�呯敤 rgvProtocol.getRgvPosI()
-
-            if(currPos == null || outStn == null || inStn == null){
-                return false; // 鏃犳晥鏁版嵁鐩存帴鏀惧純
-            }
-
-            // 璁$畻涓ゆ璺濈
-            List<Integer> routeToOut = RouteUtils.getRouteDis(currPos, outStn);
-            List<Integer> routeToIn  = RouteUtils.getRouteDis(currPos, inStn);
-
-            int distOut = (routeToOut != null) ? routeToOut.size() : Integer.MAX_VALUE;
-            int distIn  = (routeToIn  != null) ? routeToIn.size()  : Integer.MAX_VALUE;
-
-            // 璋冭瘯鏃ュ織
-            log.info("RGV璺濈璁$畻: currPos={}, outStn={}, distOut={}, inStn={}, distIn={}",
-                    currPos, outStn, distOut, inStn, distIn);
-
-            return distOut < distIn; // 鏀捐揣鐐规洿杩� 鈫� true
-        } catch (Exception e) {
-            log.error("RGV璺緞璺濈璁$畻寮傚父", e);
-            return false;
-        }
-    }
-
-    /*
-     * 灏忚溅澶嶄綅
-     * */
-    public synchronized boolean rgvComplete(Integer rgvId,Integer step){
-        try{
-            //  鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
-            if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(step, new RgvCommand()))) {
-                //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱   step=4锛屽伐浣�1鍐欎换鍔★紱     step=5锛屽伐浣�2鍐欎换鍔�
-                log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}",rgvId);
-                return false;
-            } else {
-                log.info("RGV鍛戒护涓嬪彂鎴愬姛锛孯GV鍙�={}",rgvId);
-                return true;
-            }
-        }catch (Exception e){
-            log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}銆傚紓甯革細"+e,rgvId);
-            return false;
-        }
-    }
-
-
-
-    /*
-     * arm浠诲姟瀹屾垚鑷姩缁勬墭
-     * */
-    public synchronized void  armMissionAccomplished() {
-        try{
-            for (DevpSlave devp : slaveProperties.getDevp()) {
-                // 閬嶅巻鎷f枡鍏ュ簱鍙�
-                for (DevpSlave.Sta armSta : devp.getArmSta()) {
-
-                    // 鑾峰彇绔欑偣淇℃伅
-                    SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
-                    StaProtocol staProtocol = devpThread.getStation().get(armSta.getStaNo());
-                    if (staProtocol == null) {
-                        continue;
-                    } else {
-                        staProtocol = staProtocol.clone();
-                    }
-//                    String barcode = staProtocol.getBarcode();
-//                    if(!Cools.isEmpty(barcode)) {
-//                        if("NG".endsWith(barcode) || "NoRead".equals(barcode)) {
-//                            armTaskAssignmentCallApiLogSave(staProtocol, "鎵樼洏鏉$爜涓虹┖", staProtocol.getSiteId()+"鐮佸灈浣嶇疆锛�===銆嬫墭鐩樻潯鐮佷负绌�", false);
-//                            continue;
-//                        }
-//                    } else {
-//                        armTaskAssignmentCallApiLogSave(staProtocol, "鎵樼洏鏉$爜涓虹┖", staProtocol.getSiteId()+"鐮佸灈浣嶇疆锛�===銆嬫墭鐩樻潯鐮佷负绌�", false);
-//                        continue;
-//                    }
-                    List<BasArm> basArmList = basArmService.selectList(new EntityWrapper<BasArm>()
-                            .eq("arm_no", armSta.getArmNo())
-                            .eq("sta_no_sou", armSta.getStaNo())
-                            .eq("status", 1));
-                    for (BasArm basArm : basArmList) {
-                        if (basArm.getStatus()!=1){
-                            continue;
-                        }
-                        try{
-                            List<BasArmMast> basArmMastList = basArmMastService.selectList(
-                                    new EntityWrapper<BasArmMast>()
-                                            .eq("arm_no", basArm.getArmNo())
-                                            .eq("sorting_line", basArm.getSortingLineSou())
-                                            .eq("status", 3)
-                            );
-                            if (basArmMastList.isEmpty()){
-                                continue;
-                            }
-                            CombParam combParam = new CombParam(basArmMastList);
-                            //arm浠诲姟瀹屾垚鑷姩缁勬墭
-                            ReturnT<String> result = new PostMesDataUtils().postMesData("arm浠诲姟瀹屾垚鑷姩缁勬墭",wmsUrl, wmsComb, combParam);
-                            if (result.getCode()==200){
-                                basArmMastService.updateArmMastStatus(basArm.getArmNo(),basArm.getSortingLineSou(),3,4);
-                            } else {
-                                armTaskAssignmentCallApiLogSave(staProtocol, "鑷姩缁勬墭澶辫触", staProtocol.getSiteId()+"鐮佸灈浣嶇疆锛�===銆嬭嚜鍔ㄧ粍鎵樺け璐ワ紝绛夊緟閲嶈瘯", false);
-//                                log.error("鏈烘鑷傛姄鍙栦换鍔″畬鎴愶細"+JSON.toJSON(basArmMastList)+"===銆嬭嚜鍔ㄧ粍鎵樺け璐ワ紝绛夊緟閲嶈瘯");
-                            }
-                        }  catch (Exception e){
-                            armTaskAssignmentCallApiLogSave(staProtocol, "鏈烘鑷傛姄鍙栦换鍔″畬鎴愬紓甯�", staProtocol.getSiteId()+"鐮佸灈浣嶇疆锛�===銆嬭嚜鍔ㄧ粍鎵樺け璐ワ紝绛夊緟閲嶈瘯", false);
-//                            log.error("arm缂栧彿锛�"+basArm.getArmNo()+"====銆嬫満姊拌噦鎶撳彇浠诲姟瀹屾垚"+e.getMessage());
-                        }
-                        break;
-                    }
-                }
-            }
-        } catch (Exception e){
-            log.error("鏈烘鑷傛姄鍙栦换鍔″畬鎴愮粍鎵樺け璐�"+e.getMessage());
-        }
-    }
-    public synchronized void armMissionAccomplishedScanToCheckIn() {
-        try{
-            for (DevpSlave devp : slaveProperties.getDevp()) {
-                // 閬嶅巻鎷f枡鍏ュ簱鍙�
-                for (DevpSlave.Sta armSta : devp.getArmSta()) {
-
-                    List<BasArmMast> basArmMastList = basArmMastService.selectList(
-                            new EntityWrapper<BasArmMast>()
-                                    .eq("arm_no", armSta.getArmNo())
-                                    .eq("sta_no", armSta.getStaNo())
-                                    .eq("status", 4)
-                    );
-
-                    if (basArmMastList.isEmpty()){
-                        continue;
-                    }
-                    // 鑾峰彇绔欑偣淇℃伅
-                    SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
-                    StaProtocol staProtocol = devpThread.getStation().get(armSta.getStaNo());
-                    if (staProtocol == null) {
-                        continue;
-                    } else {
-                        staProtocol = staProtocol.clone();
-                    }
-//                    if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable() && staProtocol.isPakMk()) {
-//                        int workNo = commonService.getWorkNo(6);//寰呭畬鍠�
-//                        // 鏇存柊绔欑偣淇℃伅 涓� 涓嬪彂plc鍛戒护
-//                        staProtocol.setWorkNo(workNo);
-//                        staProtocol.setStaNo(armSta.getStaNoEnd().shortValue());
-//                        devpThread.setPakMk(staProtocol.getSiteId(), false);
-//                        boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
-//                        log.error("杈撻�佺嚎涓嬪彂5锛�"+workNo+","+armSta.getStaNoEnd());
-//                        if (!result) {
-//                            News.error(""+" - 3"+" - 鍙戝竷鍛戒护鑷宠緭閫佺嚎闃熷垪澶辫触锛侊紒锛� [plc缂栧彿锛歿}]", devp.getId());
-//                        }
-                        basArmMastService.updateArmMastStatus(basArmMastList.get(0).getArmNo(),basArmMastList.get(0).getSortingLine(),4,5);
-//                    }
-                }
-            }
-        } catch (Exception e){
-            log.error("缁勬墭瀹屾垚椹卞姩鎵樼洏鎵爜鍏ュ簱澶辫触"+e.getMessage());
-        }
-    }
-
-    /*
-     * arm浠诲姟涓嬪彂
-     * */
-    public synchronized void armTaskAssignment() {
-        try{
-            List<BasArm> basArmList = basArmService.selectList(new EntityWrapper<>());
-            for (BasArm basArm : basArmList) {
-                if (basArm.getStatus()!=1){
-                    continue;
-                }
-                try{
-                    // 鑾峰彇绔欑偣淇℃伅
-                    SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, basArm.getDevpId());
-                    StaProtocol staProtocol = devpThread.getStation().get(basArm.getStaNoSou());
-                    if (staProtocol == null || !staProtocol.isLoading()) {
-                        continue;
-                    } else {
-                        staProtocol = staProtocol.clone();
-                    }
-
-                    String barcode = staProtocol.getBarcode();
-                    if(!Cools.isEmpty(barcode)) {
-                        if("NG".endsWith(barcode) || "NoRead".equals(barcode)) {
-                            armTaskAssignmentCallApiLogSave(staProtocol, "鎵樼洏鏉$爜涓虹┖", staProtocol.getSiteId()+"鐮佸灈浣嶇疆锛�===銆嬫墭鐩樻潯鐮佷负绌�", false);
-//                            log.error(staProtocol.getSiteId()+"鐮佸灈浣嶇疆锛�===銆嬫墭鐩樻潯鐮佷负绌�");
-                            continue;
-                        }
-                    } else {
-                        armTaskAssignmentCallApiLogSave(staProtocol, "鎵樼洏鏉$爜涓虹┖", staProtocol.getSiteId()+"鐮佸灈浣嶇疆锛�===銆嬫墭鐩樻潯鐮佷负绌�", false);
-
-//                        log.error(staProtocol.getSiteId()+"鐮佸灈浣嶇疆锛�===銆嬫墭鐩樻潯鐮佷负绌�");
-                        continue;
-                    }
-
-                    if(barcode.length()!=6){
-                        armTaskAssignmentCallApiLogSave(staProtocol, "鏉$爜闀垮害涓嶆槸6浣�", staProtocol.getSiteId()+"鐮佸灈浣嶇疆锛屾潯鐮侀暱搴︿笉鏄�6浣�===>>" + barcode, false);
-//                        log.error(staProtocol.getSiteId()+"鐮佸灈浣嶇疆锛屾潯鐮侀暱搴︿笉鏄�6浣�===>>" + barcode);
-                        continue;
-//                        throw new CoolException(staProtocol.getSiteId()+"鐮佸灈浣嶇疆锛屾潯鐮侀暱搴︿笉鏄�6浣�===>>" + barcode);
-                    }
-
-                    int countLoc = locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("zpallet",barcode));
-                    int countWrk = wrkDetlService.selectCount(new EntityWrapper<WrkDetl>().eq("zpallet",barcode));
-                    int countwait = waitPakinMapper.selectCount(new EntityWrapper<WaitPakin>().eq("zpallet",barcode));
-                    if (countLoc > 0 || countWrk > 0 || countwait > 0) {
-//                        throw new CoolException("缁勬墭妗�/宸ヤ綔妗�/搴撳瓨鏉$爜鏁版嵁宸插瓨鍦�===>>" + barcode);
-                        armTaskAssignmentCallApiLogSave(staProtocol, "鏉$爜鏁版嵁宸插瓨鍦�", staProtocol.getSiteId()+"鐮佸灈浣嶇疆锛岀粍鎵樻。/宸ヤ綔妗�/搴撳瓨鏉$爜鏁版嵁宸插瓨鍦�===>>" + barcode, false);
-
-//                        log.error(staProtocol.getSiteId()+"鐮佸灈浣嶇疆锛岀粍鎵樻。/宸ヤ綔妗�/搴撳瓨鏉$爜鏁版嵁宸插瓨鍦�===>>" + barcode);
-                        continue;
-                    }
-
-                    List<BasArmMast> basArmMastListRuningBarCode = basArmMastService.selectList(
-                            new EntityWrapper<BasArmMast>()
-                                    .eq("barcode", barcode)
-                                    .eq("status", 3)
-                    );
-                    if (!basArmMastListRuningBarCode.isEmpty()){
-                        armTaskAssignmentCallApiLogSave(staProtocol, "鏉$爜鏁版嵁宸插瓨鍦�,姝e湪鑷姩缁勬墭锛侊紒锛�", staProtocol.getSiteId()+"鐮佸灈浣嶇疆锛屾潯鐮佹暟鎹鍦ㄨ嚜鍔ㄧ粍鎵�===>>" + barcode, false);
-                        continue;
-                    }
-                    List<BasArmMast> basArmMastListError = basArmMastService.selectList(
-                            new EntityWrapper<BasArmMast>()
-                                    .eq("arm_no", basArm.getArmNo())
-                                    .eq("sorting_line", basArm.getSortingLineSou())
-                                    .eq("status", 9)
-                    );
-                    if (!basArmMastListError.isEmpty()){
-                        armTaskAssignmentCallApiLogSave(staProtocol, "瀛樺湪寮傚父鏈烘鑷備换鍔�", basArm.getArmNo()+"鍙锋満姊拌噦瀛樺湪寮傚父鏁版嵁闇�瑕佺淮鎶わ紒锛侊紒", false);
-
-//                        log.error(basArm.getArmNo()+"鍙锋満姊拌噦瀛樺湪寮傚父鏁版嵁闇�瑕佺淮鎶わ紒锛侊紒");
-                        continue;
-                    }
-                    List<BasArmMast> basArmMastListRuning = basArmMastService.selectList(
-                            new EntityWrapper<BasArmMast>()
-                                    .eq("arm_no", basArm.getArmNo())
-                                    .eq("sorting_line", basArm.getSortingLineSou())
-                                    .eq("status", 1)
-                    );
-                    List<BasArmMast> basArmMastListRuning3 = basArmMastService.selectList(
-                            new EntityWrapper<BasArmMast>()
-                                    .eq("arm_no", basArm.getArmNo())
-                                    .eq(
-
-                                            "sorting_line", basArm.getSortingLineSou())
-                                    .eq("status", 3)
-                    );
-                    if (basArmMastListRuning.isEmpty() && basArmMastListRuning3.isEmpty()){
-                        List<BasArmMast> basArmMastList = basArmMastService.selectList(
-                                new EntityWrapper<BasArmMast>()
-                                        .eq("arm_no", basArm.getArmNo())
-                                        .eq("sorting_line", basArm.getSortingLineSou())
-                                        .eq("status", 0)
-                        );
-                        if (basArmMastList.isEmpty()){
-                            continue;
-                        }
-                        if (basArmMastList.size()>1){
-                            armTaskAssignmentCallApiLogSave(staProtocol, "浠诲姟寰呮墽琛屾暟閲忓ぇ浜�1,鏃犳硶鍒嗚鲸寰呮墽琛屼换鍔�", "arm缂栧彿锛�"+basArm.getArmNo()+"====銆嬫媶鐮佸灈浠诲姟寮傚父绂佹涓嬪彂锛侊紒锛佷换鍔″緟鎵ц鏁伴噺澶т簬1锛侊紒锛�", false);
-
-//                            log.error("arm缂栧彿锛�"+basArm.getArmNo()+"====銆嬫媶鐮佸灈浠诲姟寮傚父绂佹涓嬪彂锛侊紒锛佷换鍔″緟鎵ц鏁伴噺澶т簬1锛侊紒锛�");
-                            continue;
-                        }
-                        BasArmMast basArmMast = basArmMastList.get(0);
-                        List<BasArmMast> basArmMastListOrder = basArmMastService.selectList(
-                                new EntityWrapper<BasArmMast>()
-                                        .eq("arm_no", basArm.getArmNo())
-                                        .eq("sorting_line", basArm.getSortingLineSou())
-                                        .eq("sku", basArmMast.getSku())
-                                        .eq("order_no", basArmMast.getOrderNo())
-                                        .eq("binding_tags", basArmMast.getBindingTags())
-                        );
-                        if (basArmMastListOrder.size()==1){
-                            Thread.sleep(100);
-
-
-                            List<BasArmMast> basArmMastListRuningBarCode2 = basArmMastService.selectList(
-                                    new EntityWrapper<BasArmMast>()
-                                            .eq("barcode", barcode)
-                            );
-                            if (!basArmMastListRuningBarCode2.isEmpty()){
-                                int binding_tags = basArmMastService.selectCount(
-                                        new EntityWrapper<BasArmMast>()
-                                                .eq("status", 2)
-                                                .eq("binding_tags", basArmMast.getBindingTags())
-                                );
-
-                                if (binding_tags<2){
-                                    BasArmMast basArmMastOne = basArmMastService.selectOne(
-                                            new EntityWrapper<BasArmMast>()
-                                                    .eq("status", 2)
-                                                    .eq("binding_tags", basArmMast.getBindingTags())
-                                    );
-                                    Double anfmeSignOne = basArmMastService.selectBasArmMastSignValue(basArmMastOne.getOrderNo(), basArmMastOne.getSku(),basArmMastOne.getBindingTags());
-
-                                    if (anfmeSignOne>1D){
-                                        armTaskAssignmentCallApiLogSave(staProtocol, "鏉$爜鏁版嵁宸插瓨鍦紒锛侊紒", staProtocol.getSiteId()+"鐮佸灈浣嶇疆锛屾潯鐮佹暟鎹鍦ㄨ嚜鍔ㄧ粍鎵�===>>" + barcode, false);
-                                        continue;
-                                    }
-
-                                }
-                            }
-                            OrderDetlValueResultUtil orderDetlValueResultUtil = basArmMastService.selectOrderDetlValue(basArmMast.getOrderNo(), basArmMast.getSku());
-
-                            if (Cools.isEmpty(orderDetlValueResultUtil)){
-                                continue;
-                            }
-                            Double anfmeSign = basArmMastService.selectBasArmMastSignValue(basArmMast.getOrderNo(), basArmMast.getSku(),basArmMast.getBindingTags());
-                            orderDetlValueResultUtil.setAnfme(anfmeSign);
-                            //璁㈠崟涓嬪彂
-                            try{
-                                ArmOrderAssignmentParam armOrderAssignmentParam = new ArmOrderAssignmentParam(basArmMast,orderDetlValueResultUtil);
-//                                璁㈠崟涓嬪彂(SKU+璁㈠崟)
-                                ReturnT<String> result = new PostMesDataUtils().postMesData("鏈烘鑷傛姄鍙栬鍗曪紙SKU锛変笅鍙戯細",ArmConstant.getArmUrl(basArmMast.getArmNo()), ArmConstant.ARM_ADAPTOR, armOrderAssignmentParam);
-                                if (result.getCode()==200){
-//                                    basArmMast.setStatus(1);
-//                                    basArmMast.setBarcode(barcode);
-//                                    basArmMastService.updateById(basArmMast);
-                                } else {
-                                    armTaskAssignmentCallApiLogSave(staProtocol, "鏈烘鑷傛姄鍙栬鍗曪紙SKU锛変笅鍙�", "arm缂栧彿锛�"+basArm.getArmNo()+"璁㈠崟涓嬪彂璁㈠崟淇℃伅涓嬪彂澶辫触锛侊紒锛�", false);
-
-//                                    log.error("arm缂栧彿锛�"+basArm.getArmNo()+"鏈烘鑷傛姄鍙栬鍗曪紙SKU锛変笅鍙戯細"+JSON.toJSON(basArmMast)+"===銆嬭鍗曚俊鎭笅鍙戝け璐�");
-                                }
-                            } catch (Exception e){
-                                armTaskAssignmentCallApiLogSave(staProtocol, "鏈烘鑷傛姄鍙栬鍗曪紙SKU锛変笅鍙�", "arm缂栧彿锛�"+basArm.getArmNo()+"璁㈠崟涓嬪彂璁㈠崟淇℃伅涓嬪彂澶辫触锛侊紒锛�", false);
-//                                log.error("arm缂栧彿锛�"+basArm.getArmNo()+"鏈烘鑷傛姄鍙栬鍗曪紙SKU锛変笅鍙戯細"+JSON.toJSON(basArmMast)+"===銆嬭鍗曚笅鍙戣鍗曚俊鎭笅鍙戝け璐�");
-                                continue;
-                            }
-                        }
-                        ArmTaskAssignmentParam armTaskAssignmentParam = new ArmTaskAssignmentParam(basArm.getSortingLine());
-                        //璁剧疆宸ヤ綔绌洪棿灏辩华
-                        ReturnT<String> result = new PostMesDataUtils().postMesData("鏈烘鑷傛姄鍙栦换鍔′笅鍙戯細閫氱煡宸ヤ綔绌洪棿宸插氨缁�",ArmConstant.getArmUrl(basArmMast.getArmNo()), ArmConstant.ARM_WORKSPACE, armTaskAssignmentParam);
-                        if (result.getCode()==200){
-                            basArmMast.setStatus(1);
-                            basArmMast.setBarcode(barcode);
-                            basArmMastService.updateById(basArmMast);
-                        } else {
-                            armTaskAssignmentCallApiLogSave(staProtocol, "鏈烘鑷傛姄鍙栦换鍔′俊鎭笅鍙戝け璐�", "arm缂栧彿锛�"+basArm.getArmNo()+"浠诲姟淇℃伅涓嬪彂澶辫触锛侊紒锛�", false);
-//                            log.error("鏈烘鑷傛姄鍙栦换鍔★細"+JSON.toJSON(basArmMast)+"===銆嬩换鍔′俊鎭笅鍙戝け璐�");
-                        }
-                    }
-                }  catch (Exception e){
-                    log.error("arm缂栧彿锛�"+basArm.getArmNo()+"====銆嬫媶鐮佸灈浠诲姟涓嬪彂澶辫触"+e.getMessage());
-                }
-            }
-        }catch (Exception e){
-            log.error("arm浠诲姟涓嬪彂澶辫触"+e.getMessage());
-        }
-    }
-
-    public void armTaskAssignmentCallApiLogSave(StaProtocol staProtocol, String tableName, String response, Boolean bool) {
-        // 鏌ヨ绗﹀悎鏉′欢鐨勬墍鏈� ApiLog
-        List<ApiLog> apiLogs = apiLogService.selectList(new EntityWrapper<ApiLog>()
-                .eq("namespace", "鏈烘鑷備换鍔$浉鍏�")
-                .eq("request", "绔欑偣鍙�:" + staProtocol.getSiteId())
-                .eq("response", response)
-                .eq("url", tableName)
-                .eq("client_ip", staProtocol.getBarcode())
-                .eq("result", 0)
-                .orderBy("create_time", false)
-        );
-
-        // 閬嶅巻缁撴灉闆嗭紝妫�鏌ユ椂闂存埑宸�兼槸鍚﹀皬浜� 5 鍒嗛挓
-        for (ApiLog apiLog : apiLogs) {
-            long parseLong = Long.parseLong(apiLog.getTimestamp());
-            if (new Date().getTime() - parseLong < 5 * 1000 * 60) {
-                // 濡傛灉鎵惧埌绗﹀悎鏉′欢鐨勮褰曚笖鏃堕棿宸皬浜� 5 鍒嗛挓锛屽垯涓嶄繚瀛樻柊璁板綍锛岀洿鎺ヨ繑鍥�
-                return;
-            }
-        }
-
-        // 濡傛灉娌℃湁绗﹀悎鏉′欢鐨勮褰曪紝鎴栬�呮墍鏈夎褰曟椂闂村樊澶т簬 5 鍒嗛挓锛屼繚瀛樻柊鐨勬棩蹇�
-        apiLogService.save("鏈烘鑷備换鍔$浉鍏�", tableName, "null", staProtocol.getBarcode(),
-                "绔欑偣鍙�:" + staProtocol.getSiteId(),
-                response, bool);
-    }
-
-    /*
-     * agv浠诲姟鐢熸垚  Full
-     * */
-    public synchronized void agvTaskCreateFull() {
-        // 鏍规嵁杈撻�佺嚎plc閬嶅巻
-        for (DevpSlave devp : slaveProperties.getDevp()) {
-            // 閬嶅巻鍑哄簱鍙�
-            for (DevpSlave.Sta outStaAgv : devp.getOutStaAgvFull())  {
-                // 鑾峰彇鍏ュ簱绔欎俊鎭�
-                SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
-                StaProtocol staProtocol = devpThread.getStation().get(outStaAgv.getStaNo());
-                if (staProtocol == null) {
-                    continue;
-                } else {
-                    staProtocol = staProtocol.clone();
-                }
-
-                // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢
-                if (!staProtocol.isLoading()){
-                    continue;
-                }
-                if (staProtocol.isAutoing() ) {
-                    WrkMast wrkMast = wrkMastService.selectByWrkNo(staProtocol.getWorkNo());
-                    if (Cools.isEmpty(wrkMast) || Cools.isEmpty(wrkMast.getTakeNone()) || !wrkMast.getTakeNone().equals("1")){
-                        continue;
-                    }
-
-                    // 鍒ゆ柇閲嶅宸ヤ綔妗�
-                    List<BasAgvMast> basAgvMastList = basAgvMastService.selectList(new EntityWrapper<BasAgvMast>().eq("task_no", staProtocol.getWorkNo()));
-                    if (!basAgvMastList.isEmpty()) {
-                        wrkMast.setTakeNone("2");
-                        wrkMastMapper.updateById(wrkMast);
-                        continue;
-                    }
-
-                    // 浠诲姟鐢熸垚鍖� --------------------------------------------------------------------------
-
-                    BasAgvMast basAgvMast = new BasAgvMast();
-
-
-                    try {
-                        LocTypeDto locTypeDto = new LocTypeDto(staProtocol);
-
-                        SearchLocParam param = new SearchLocParam();
-                        param.setBarcode(wrkMast.getBarcode());
-                        param.setIoType(1);
-                        param.setSourceStaNo(outStaAgv.getStaNo());
-                        param.setLocType1(locTypeDto.getLocType1());
-                        String response = new HttpHandler.Builder()
-                                .setUri(wmsUrl)
-                                .setPath("/rpc/pakin/agv/loc/v1")
-                                .setJson(JSON.toJSONString(param))
-                                .build()
-                                .doPost();
-                        JSONObject jsonObject = JSON.parseObject(response);
-                        if (jsonObject.getInteger("code").equals(200)) {
-                            StartupDto dto = jsonObject.getObject("data", StartupDto.class);
-
-                            basAgvMast.setTaskNo(wrkMast.getWrkNo());
-                            basAgvMast.setSourceStaNo(outStaAgv.getStaNo());
-                            basAgvMast.setLocNo(dto.getLocNo());
-                            basAgvMast.setSourceLocNo(wrkMast.getSourceLocNo());
-                            basAgvMast.setDevpId(devp.getId());
-                            basAgvMast.setIoType(2);
-
-                            basAgvMastService.insert(basAgvMast);
-
-
-                            wrkMast.setTakeNone("2");
-                            wrkMastMapper.updateById(wrkMast);
-                        } else {
-                            News.error(JSON.toJSONString(staProtocol));
-                        }
-                    } catch (Exception e) {
-                        News.error(JSON.toJSONString(e.getMessage()));
-                    }
-                }
-            }
-        }
-    }
-
-    /*
-     * agv浠诲姟鐢熸垚  Empty
-     * */
-    public synchronized void agvTaskCreateEmpty() {
-        // 鏍规嵁杈撻�佺嚎plc閬嶅巻
-        for (DevpSlave devp : slaveProperties.getDevp()) {
-            // 閬嶅巻鍑哄簱鍙�
-            for (DevpSlave.Sta outStaAgv : devp.getOutStaAgvEmpty())  {
-                // 鑾峰彇鍏ュ簱绔欎俊鎭�
-                SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
-                StaProtocol staProtocol = devpThread.getStation().get(outStaAgv.getStaNo());
-                if (staProtocol == null) {
-                    continue;
-                } else {
-                    staProtocol = staProtocol.clone();
-                }
-
-                // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢
-                if (!staProtocol.isLoading()){
-                    continue;
-                }
-
-                String barcode = staProtocol.getBarcode();
-                if(!Cools.isEmpty(barcode)) {
-                    if("NG".endsWith(barcode) || "NoRead".equals(barcode)) {
-                        News.info("{}鍙风珯鐐规壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", outStaAgv.getStaNo(), barcode);
-                        continue;
-                    }
-                } else {
-                    News.info("{}鍙风珯鐐规壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", outStaAgv.getStaNo(), barcode);
-                    continue;
-                }
-                if (staProtocol.isAutoing()) {
-
-                    // 鍒ゆ柇閲嶅宸ヤ綔妗�
-                    List<BasAgvMast> basAgvMastList = basAgvMastService.selectList(new EntityWrapper<BasAgvMast>().eq("source_sta_no", outStaAgv.getStaNo()));
-                    if (!basAgvMastList.isEmpty()) {
-//                        News.info("{}鍙风珯鐐瑰瓨鍦ㄤ换鍔℃墽琛屼腑锛岃绛夊緟浠诲姟鎵ц瀹屾瘯锛歿}", outStaAgv.getStaNo(), barcode);
-                        continue;
-                    }
-
-                    List<LocMast> locMastList = locMastService.selectList(new EntityWrapper<LocMast>().eq("barcode", barcode));
-                    if (!locMastList.isEmpty()) {
-                        News.info("{}鍙风珯鐐规潯鐮佷俊鎭噸澶嶏細{}", outStaAgv.getStaNo(), barcode);
-                        continue;
-                    }
-                    // 浠诲姟鐢熸垚鍖� --------------------------------------------------------------------------
-
-                    BasAgvMast basAgvMast = new BasAgvMast();
-
-
-                    try {
-                        LocTypeDto locTypeDto = new LocTypeDto(staProtocol);
-
-                        SearchLocParam param = new SearchLocParam();
-                        param.setBarcode(barcode);
-                        param.setIoType(1);
-                        param.setSourceStaNo(outStaAgv.getStaNo());
-                        param.setLocType1(locTypeDto.getLocType1());
-                        String response = new HttpHandler.Builder()
-                                .setUri(wmsUrl)
-                                .setPath("/rpc/pakin/agv/loc/v1")
-                                .setJson(JSON.toJSONString(param))
-                                .build()
-                                .doPost();
-                        JSONObject jsonObject = JSON.parseObject(response);
-                        if (jsonObject.getInteger("code").equals(200)) {
-                            StartupDto dto = jsonObject.getObject("data", StartupDto.class);
-
-                            basAgvMast.setTaskNo(outStaAgv.getStaNo());
-                            basAgvMast.setSourceStaNo(outStaAgv.getStaNo());
-                            basAgvMast.setLocNo(dto.getLocNo());
-                            basAgvMast.setDevpId(devp.getId());
-                            basAgvMast.setIoType(2);
-
-                            basAgvMastService.insert(basAgvMast);
-                        } else {
-                            News.error(JSON.toJSONString(staProtocol));
-                        }
-                    } catch (Exception e) {
-                        News.error(JSON.toJSONString(e.getMessage()));
-                    }
-                }
-            }
-        }
-    }
-
-    /*
-     * agv浠诲姟鐢熸垚  Empty
-     * */
-    public synchronized void agvTaskCreateR() {
-        // 鏍规嵁杈撻�佺嚎plc閬嶅巻
-        for (DevpSlave devp : slaveProperties.getDevp()) {
-            // 閬嶅巻鍑哄簱鍙�
-            for (DevpSlave.Sta inStaAgv : devp.getInStaAgv())  {
-                // 鑾峰彇鍏ュ簱绔欎俊鎭�
-                SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
-                StaProtocol staProtocol = devpThread.getStation().get(inStaAgv.getStaNo());
-                if (staProtocol == null) {
-                    continue;
-                } else {
-                    staProtocol = staProtocol.clone();
-                }
-
-                // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢
-                if (staProtocol.isLoading()){
-                    continue;
-                }
-
-                if (staProtocol.isAutoing()) {
-
-                    // 鍒ゆ柇閲嶅宸ヤ綔妗�
-                    List<BasAgvMast> basAgvMastList = basAgvMastService.selectList(new EntityWrapper<BasAgvMast>().eq("sta_no", inStaAgv.getStaNo()));
-                    if (!basAgvMastList.isEmpty()) {
-                        News.info("{}鍙风珯鐐瑰瓨鍦ㄤ换鍔℃墽琛屼腑锛岀瓑寰呬换鍔℃墽琛屽畬姣�!!!", inStaAgv.getStaNo());
-                        continue;
-                    }
-                    // 浠诲姟鐢熸垚鍖� --------------------------------------------------------------------------
-
-                    BasAgvMast basAgvMast = new BasAgvMast();
-                    try {
-                        List<LocMast> locMastList = locMastService.selectList(new EntityWrapper<LocMast>()
-                                .eq("loc_sts", "R")
-                                .ge("row1", 23)
-                                .le("row1", 32)
-                                .orderBy("io_time",true)
-                        );
-
-                        for (LocMast locMast : locMastList){
-                            basAgvMast.setTaskNo(inStaAgv.getStaNo());
-                            basAgvMast.setSourceLocNo(locMast.getLocNo());
-                            basAgvMast.setStaNo(inStaAgv.getStaNo());
-                            basAgvMast.setDevpId(devp.getId());
-                            basAgvMast.setIoType(0);//AGV搴撲綅==銆嬭緭閫佺嚎绔欑偣  0
-                            basAgvMastService.insert(basAgvMast);
-                            break;
-                        }
-
-                    } catch (Exception e) {
-                        News.error(JSON.toJSONString(e.getMessage()));
-                    }
-                }
-            }
-        }
-    }
-
-
-    /*
-     * agv浠诲姟涓嬪彂:AGV搴撲綅==銆嬭緭閫佺嚎绔欑偣
-     * */
-    public synchronized void agvTaskAssignment0() {
-        try{
-            List<BasAgvMast> basAgvMastList = basAgvMastService.selectList(new EntityWrapper<BasAgvMast>().eq("status", 0));
-            for (BasAgvMast basAgvMast : basAgvMastList) {
-                if (basAgvMast.getStatus()!=0 || basAgvMast.getIoType()!=0){//0==銆婣GV搴撲綅==銆嬭緭閫佺嚎绔欑偣
-                    continue;
-                }
-                try{
-                    // 鑾峰彇绔欑偣淇℃伅
-                    SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, basAgvMast.getDevpId());
-                    StaProtocol staProtocol = devpThread.getStation().get(basAgvMast.getStaNo());
-                    if (staProtocol == null) {
-                        continue;
-                    } else {
-                        staProtocol = staProtocol.clone();
-                    }
-
-                    if (staProtocol.isAutoing()){
-
-                        AgvTaskAssignmentParam agvTaskAssignmentParam = new AgvTaskAssignmentParam(basAgvMast);
-
-                        //浠诲姟涓嬪彂
-                        ReturnT<String> result = new PostMesDataUtils().postMesDataAgv("AGV浠诲姟涓嬪彂", AgvConstant.AGV_URL, AgvConstant.AGV_ADAPTOR, agvTaskAssignmentParam);
-                        if (result.getCode()==200){
-                            basAgvMast.setStatus(1);
-                            basAgvMastService.updateById(basAgvMast);
-                        } else {
-                            agvTaskAssignmentCallApiLogSave(basAgvMast, "AGV浠诲姟涓嬪彂澶辫触", "浠诲姟鍙凤細"+basAgvMast.getTaskNo()+"浠诲姟淇℃伅涓嬪彂澶辫触锛侊紒锛�", false);
-                        }
-                    }
-                }  catch (Exception e){
-                    log.error("浠诲姟鍙凤細"+basAgvMast.getTaskNo()+"====銆婣GV浠诲姟涓嬪彂澶辫触"+e.getMessage());
-                }
-            }
-        }catch (Exception e){
-            log.error("AGV浠诲姟涓嬪彂澶辫触"+e.getMessage());
-        }
-    }
-
-    /*
-     * agv浠诲姟涓嬪彂:AGV搴撲綅==銆婣GV搴撲綅
-     * */
-    public synchronized void agvTaskAssignment1() {
-        try{
-            List<BasAgvMast> basAgvMastList = basAgvMastService.selectList(new EntityWrapper<BasAgvMast>().eq("status", 0));
-            for (BasAgvMast basAgvMast : basAgvMastList) {
-                if (basAgvMast.getStatus()!=0 || basAgvMast.getIoType()!=1){//1==銆婣GV搴撲綅==銆婣GV搴撲綅
-                    continue;
-                }
-                try{
-                    AgvTaskAssignmentParam agvTaskAssignmentParam = new AgvTaskAssignmentParam(basAgvMast);
-
-                    //浠诲姟涓嬪彂
-                    ReturnT<String> result = new PostMesDataUtils().postMesDataAgv("AGV浠诲姟涓嬪彂", AgvConstant.AGV_URL, AgvConstant.AGV_ADAPTOR, agvTaskAssignmentParam);
-                    if (result.getCode()==200){
-                        basAgvMast.setStatus(1);
-                        basAgvMastService.updateById(basAgvMast);
-                    } else {
-                        agvTaskAssignmentCallApiLogSave(basAgvMast, "AGV浠诲姟涓嬪彂澶辫触", "浠诲姟鍙凤細"+basAgvMast.getTaskNo()+"浠诲姟淇℃伅涓嬪彂澶辫触锛侊紒锛�", false);
-                    }
-
-                }  catch (Exception e){
-                    log.error("浠诲姟鍙凤細"+basAgvMast.getTaskNo()+"====銆婣GV浠诲姟涓嬪彂澶辫触"+e.getMessage());
-                }
-            }
-        }catch (Exception e){
-            log.error("AGV浠诲姟涓嬪彂澶辫触"+e.getMessage());
-        }
-    }
-
-    /*
-     * agv浠诲姟涓嬪彂:杈撻�佺嚎绔欑偣==銆婣GV搴撲綅
-     * */
-    public synchronized void agvTaskAssignment2() {
-        try{
-            List<BasAgvMast> basAgvMastList = basAgvMastService.selectList(new EntityWrapper<BasAgvMast>().eq("status", 0));
-            for (BasAgvMast basAgvMast : basAgvMastList) {
-                if (basAgvMast.getStatus()!=0 || basAgvMast.getIoType()!=2){//2==銆嬭緭閫佺嚎绔欑偣==銆婣GV搴撲綅
-                    continue;
-                }
-                try{
-                    // 鑾峰彇绔欑偣淇℃伅
-                    SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, basAgvMast.getDevpId());
-                    StaProtocol staProtocol = devpThread.getStation().get(basAgvMast.getSourceStaNo());
-                    if (staProtocol == null || !staProtocol.isLoading()) {
-                        continue;
-                    } else {
-                        staProtocol = staProtocol.clone();
-                    }
-
-                    if ((!Cools.isEmpty(staProtocol.getWorkNo()) && staProtocol.getWorkNo().equals(basAgvMast.getTaskNo()))
-                            ||
-                            (basAgvMast.getSourceStaNo().equals(2033))){
-
-                        AgvTaskAssignmentParam agvTaskAssignmentParam = new AgvTaskAssignmentParam(basAgvMast);
-
-                        //浠诲姟涓嬪彂
-                        ReturnT<String> result = new PostMesDataUtils().postMesDataAgv("AGV浠诲姟涓嬪彂", AgvConstant.AGV_URL, AgvConstant.AGV_ADAPTOR, agvTaskAssignmentParam);
-                        if (result.getCode()==200){
-                            basAgvMast.setStatus(1);
-                            basAgvMastService.updateById(basAgvMast);
-                        } else {
-                            agvTaskAssignmentCallApiLogSave(basAgvMast, "AGV浠诲姟涓嬪彂澶辫触", "浠诲姟鍙凤細"+basAgvMast.getTaskNo()+"浠诲姟淇℃伅涓嬪彂澶辫触锛侊紒锛�", false);
-                        }
-                    }
-                }  catch (Exception e){
-                    log.error("浠诲姟鍙凤細"+basAgvMast.getTaskNo()+"====銆婣GV浠诲姟涓嬪彂澶辫触"+e.getMessage());
-                }
-            }
-        }catch (Exception e){
-            log.error("AGV浠诲姟涓嬪彂澶辫触"+e.getMessage());
-        }
-    }
-
-    /*
-     * agv浠诲姟涓嬪彂:杈撻�佺嚎绔欑偣==銆嬭緭閫佺嚎绔欑偣
-     * */
-    public synchronized void agvTaskAssignment3() {
-        try{
-            List<BasAgvMast> basAgvMastList = basAgvMastService.selectList(new EntityWrapper<BasAgvMast>().eq("status", 0));
-            for (BasAgvMast basAgvMast : basAgvMastList) {
-                if (basAgvMast.getStatus()!=0 || basAgvMast.getIoType()!=3){//3==銆嬭緭閫佺嚎绔欑偣==銆嬭緭閫佺嚎绔欑偣
-                    continue;
-                }
-                try{
-                    // 鑾峰彇绔欑偣淇℃伅
-                    SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, basAgvMast.getDevpId());
-                    StaProtocol staProtocol = devpThread.getStation().get(basAgvMast.getSourceStaNo());
-                    if (staProtocol == null || !staProtocol.isLoading()) {
-                        continue;
-                    } else {
-                        staProtocol = staProtocol.clone();
-                    }
-                    // 鑾峰彇绔欑偣淇℃伅
-                    StaProtocol staProtocolEnd = devpThread.getStation().get(basAgvMast.getStaNo());
-                    if (staProtocolEnd == null || !staProtocolEnd.isAutoing()) {
-                        continue;
-                    } else {
-                        staProtocolEnd = staProtocolEnd.clone();
-                    }
-
-                    if (!Cools.isEmpty(staProtocol.getWorkNo()) && staProtocol.getWorkNo().equals(basAgvMast.getTaskNo())){
-
-                        AgvTaskAssignmentParam agvTaskAssignmentParam = new AgvTaskAssignmentParam(basAgvMast);
-
-                        //浠诲姟涓嬪彂
-                        ReturnT<String> result = new PostMesDataUtils().postMesDataAgv("AGV浠诲姟涓嬪彂", AgvConstant.AGV_URL, AgvConstant.AGV_ADAPTOR, agvTaskAssignmentParam);
-                        if (result.getCode()==200){
-                            basAgvMast.setStatus(1);
-                            basAgvMastService.updateById(basAgvMast);
-                        } else {
-                            agvTaskAssignmentCallApiLogSave(basAgvMast, "AGV浠诲姟涓嬪彂澶辫触", "浠诲姟鍙凤細"+basAgvMast.getTaskNo()+"浠诲姟淇℃伅涓嬪彂澶辫触锛侊紒锛�", false);
-                        }
-                    }
-                }  catch (Exception e){
-                    log.error("浠诲姟鍙凤細"+basAgvMast.getTaskNo()+"====銆婣GV浠诲姟涓嬪彂澶辫触"+e.getMessage());
-                }
-            }
-        }catch (Exception e){
-            log.error("AGV浠诲姟涓嬪彂澶辫触"+e.getMessage());
-        }
-    }
-
-    public void agvTaskAssignmentCallApiLogSave(BasAgvMast basAgvMast ,String tableName, String response, Boolean bool) {
-        ApiLog apiLog = apiLogService.selectOne(new EntityWrapper<ApiLog>()
-                .eq("namespace", "Agv浠诲姟涓嬪彂")
-                .eq("request", "浠诲姟鍙�:" + basAgvMast.getTaskNo())
-                .eq("response", response)
-                .eq("url", tableName)
-                .eq("result", 0)
-                .orderBy("create_time", false)
-        );
-
-        if (!Cools.isEmpty(apiLog)){
-            long parseLong = Long.parseLong(apiLog.getTimestamp());
-            if (new Date().getTime()-parseLong<5*1000*60){
-                return;
-            }
-        }
-        apiLogService.save("Agv浠诲姟涓嬪彂", tableName, "null", "127.0.0.1",
-                "浠诲姟鍙�:" + basAgvMast.getTaskNo() ,
-                response, bool);
     }
 
 }
diff --git a/src/main/java/com/zy/core/MainProcess.java b/src/main/java/com/zy/core/MainProcess.java
index fbb579c..7e206fa 100644
--- a/src/main/java/com/zy/core/MainProcess.java
+++ b/src/main/java/com/zy/core/MainProcess.java
@@ -24,8 +24,7 @@
     private MainServiceImpl mainService;
     // 鎵�灞炵嚎绋�
     private Thread thread;
-    private Thread armThread;
-    private Thread agvThread;
+    private Thread licenseThread;
     // 棰戠巼
     private int i = 0;
     private int k = 0;
@@ -37,12 +36,8 @@
     public void start(){
         thread = new Thread(this::crnAndDevRun);
         thread.start();
-
-        armThread = new Thread(this::roboticArmDispatch);
-        armThread.start();
-
-        agvThread = new Thread(this::agvDispatch);
-        agvThread.start();
+        licenseThread = new Thread(this::licenseThreadRun);
+        licenseThread.start();
     }
     private void crnAndDevRun() {
         while (!Thread.currentThread().isInterrupted()) {
@@ -55,11 +50,6 @@
                 if (!SystemProperties.WCS_RUNNING_STATUS.get()) {
                     continue;
                 }
-
-                // 婕旂ず
-//                    mainService.crnDemoOfLocMove1();
-                //鍒锋柊RGV鍦板浘
-                mainService.refreshRgvMap();
 
                 // 鍏ュ嚭搴撴ā寮忓垏鎹㈠嚱鏁�
 //                    mainService.ioConvert();
@@ -92,99 +82,45 @@
                 //鍫嗗灈鏈鸿鎺ヤ换鍔$敓鎴�
                 mainService.connectWrk(10);
 
-//                    mainService.outOfDevp(11);
 
-                if (i>10){
-                    //绌烘墭鐩樿嚜鍔ㄥ嚭搴�
-                    mainService.autoEmptyOut();
-                    //绌烘墭鐩樿嚜鍔ㄥ叆搴�
-                    mainService.autoEmptyIn();
-                    i=0;
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        }
+    }
+
+    private void licenseThreadRun(){
+        int i = 0;
+        while (true) {
+            try{
+                Thread.sleep(60*60*1000L);
+
+                // 绯荤粺杩愯鐘舵�佸垽鏂�
+                if (!SystemProperties.WCS_RUNNING_STATUS.get()) {
+                    continue;
                 }
-                i++;
 
-                /////////////////////////////////////RGV璋冨害/////////////////////////////////////
-                k++;
-
-                // RGV  ===>>  灏忚溅浠诲姟浣滀笟涓嬪彂
-                try{
-                    //RGV灏忚溅鍑哄叆搴撳彇璐т笅鍙�
-                    mainService.rgvIoExecute(11);
-                    if(k > 2){
-                        mainService.rgvOutExecute();
-                        k = 0;
+                log.info("++++++++ 寮�濮嬮獙璇佽鍙瘉 ++++++++");
+                if (!mainService.licenseVerify()){
+                    if (i>6){
+                        SystemProperties.WCS_RUNNING_STATUS.set(Boolean.FALSE);
+                        log.info("++++++++ 楠岃瘉璁稿彲璇佸け璐� ++++++++");
+                        i = 0;
+                    } else {
+                        i++;
                     }
-                }catch (Exception e){
-                    e.printStackTrace();
-                    log.error("RGV  ===>>  灏忚溅浠诲姟浣滀笟涓嬪彂寮傚父"+e);
+                } else {
+//                    SystemProperties.WCS_RUNNING_STATUS.set(Boolean.TRUE);
+                    log.info("++++++++ 楠岃瘉璁稿彲璇佹垚鍔� ++++++++");
                 }
-//                //瀹屾垚灏忚溅浠诲姟
-                mainService.rgvTaskComplete();
-
-
-            } catch (Exception e) {
-                e.printStackTrace();
-            }
-        }
-    }
-
-    private void roboticArmDispatch() {
-        while (!Thread.currentThread().isInterrupted()) {
-            try {
-
-                // 闂撮殧
-                Thread.sleep(400);
-
-                // 绯荤粺杩愯鐘舵�佸垽鏂�
-                if (!SystemProperties.WCS_RUNNING_STATUS.get()) {
-                    continue;
-                }
-
-                //arm浠诲姟瀹屾垚
-                mainService.armMissionAccomplished();//4==>5
-                mainService.armMissionAccomplishedScanToCheckIn();//3===銆�4
-
-                //arm浠诲姟涓嬪彂
-                mainService.armTaskAssignment();//0===銆�1
-
-            } catch (Exception e) {
-                e.printStackTrace();
-            }
-        }
-    }
-
-    private void agvDispatch() {
-        while (!Thread.currentThread().isInterrupted()) {
-            try {
-
-                // 闂撮殧
-                Thread.sleep(400);
-
-                // 绯荤粺杩愯鐘舵�佸垽鏂�
-                if (!SystemProperties.WCS_RUNNING_STATUS.get()) {
-                    continue;
-                }
-                //agv浠诲姟涓嬪彂
-//                mainService.agvTaskAssignment0();//0===銆�1  AGV搴撲綅==銆嬭緭閫佺嚎绔欑偣  0
-//                mainService.agvTaskAssignment1();//0===銆�1  AGV搴撲綅==銆婣GV搴撲綅  1
-//                mainService.agvTaskAssignment2();//0===銆�1  杈撻�佺嚎绔欑偣==銆婣GV搴撲綅  2
-//                mainService.agvTaskAssignment3();//0===銆�1  杈撻�佺嚎绔欑偣==銆嬭緭閫佺嚎绔欑偣  3
-//
-//
-//                mainService.agvTaskCreateFull();//浠诲姟鐢熸垚  鍑哄簱鍙�==銆婣GV搴撲綅
-//                mainService.agvTaskCreateEmpty();//浠诲姟鐢熸垚  鍑哄簱鍙�==銆婣GV搴撲綅
-//                mainService.agvTaskCreateR();//浠诲姟鐢熸垚  AGV搴撲綅==銆嬪叆搴撳彛
-
-            } catch (Exception e) {
-                e.printStackTrace();
-            }
+            } catch (Exception e) {}
         }
     }
 
     @PreDestroy
     public void shutDown(){
         if (thread != null) thread.interrupt();
-        if (armThread != null) armThread.interrupt();
+        if (licenseThread != null) licenseThread.interrupt();
     }
 
 }
diff --git a/src/main/java/com/zy/system/entity/license/AbstractServerInfos.java b/src/main/java/com/zy/system/entity/license/AbstractServerInfos.java
new file mode 100644
index 0000000..f771d16
--- /dev/null
+++ b/src/main/java/com/zy/system/entity/license/AbstractServerInfos.java
@@ -0,0 +1,111 @@
+package com.zy.system.entity.license;
+
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+import java.net.InetAddress;
+import java.net.NetworkInterface;
+import java.net.SocketException;
+import java.util.ArrayList;
+import java.util.Enumeration;
+import java.util.List;
+
+/**
+ * 鐢ㄤ簬鑾峰彇瀹㈡埛鏈嶅姟鍣ㄧ殑鍩烘湰淇℃伅锛屽锛欼P銆丮ac鍦板潃銆丆PU搴忓垪鍙枫�佷富鏉垮簭鍒楀彿绛�
+ */
+public abstract class AbstractServerInfos {
+    private static Logger logger = LogManager.getLogger(AbstractServerInfos.class);
+
+    /**
+     * 缁勮闇�瑕侀澶栨牎楠岀殑License鍙傛暟
+     */
+    public LicenseCheck getServerInfos(){
+        LicenseCheck result = new LicenseCheck();
+
+        try {
+            result.setIpAddress(this.getIpAddress());
+            result.setMacAddress(this.getMacAddress());
+            result.setCpuSerial(this.getCPUSerial());
+            result.setMainBoardSerial(this.getMainBoardSerial());
+        }catch (Exception e){
+            logger.error("鑾峰彇鏈嶅姟鍣ㄧ‖浠朵俊鎭け璐�",e);
+        }
+
+        return result;
+    }
+
+    /**
+     * 鑾峰彇IP鍦板潃
+     */
+    protected abstract List<String> getIpAddress() throws Exception;
+
+    /**
+     * 鑾峰彇Mac鍦板潃
+     */
+    protected abstract List<String> getMacAddress() throws Exception;
+
+    /**
+     * 鑾峰彇CPU搴忓垪鍙�
+     */
+    protected abstract String getCPUSerial() throws Exception;
+
+    /**
+     * 鑾峰彇涓绘澘搴忓垪鍙�
+     */
+    protected abstract String getMainBoardSerial() throws Exception;
+
+    /**
+     * 鑾峰彇褰撳墠鏈嶅姟鍣ㄦ墍鏈夌鍚堟潯浠剁殑InetAddress
+     */
+    protected List<InetAddress> getLocalAllInetAddress() throws Exception {
+        List<InetAddress> result = new ArrayList<>(4);
+
+        // 閬嶅巻鎵�鏈夌殑缃戠粶鎺ュ彛
+        for (Enumeration networkInterfaces = NetworkInterface.getNetworkInterfaces(); networkInterfaces.hasMoreElements(); ) {
+            NetworkInterface iface = (NetworkInterface) networkInterfaces.nextElement();
+            // 鍦ㄦ墍鏈夌殑鎺ュ彛涓嬪啀閬嶅巻IP
+            for (Enumeration inetAddresses = iface.getInetAddresses(); inetAddresses.hasMoreElements(); ) {
+                InetAddress inetAddr = (InetAddress) inetAddresses.nextElement();
+
+                //鎺掗櫎LoopbackAddress銆丼iteLocalAddress銆丩inkLocalAddress銆丮ulticastAddress绫诲瀷鐨処P鍦板潃
+                if(!inetAddr.isLoopbackAddress() /*&& !inetAddr.isSiteLocalAddress()*/
+                        && !inetAddr.isLinkLocalAddress() && !inetAddr.isMulticastAddress()){
+                    result.add(inetAddr);
+                }
+            }
+        }
+
+        return result;
+    }
+
+    /**
+     * 鑾峰彇鏌愪釜缃戠粶鎺ュ彛鐨凪ac鍦板潃
+     */
+    protected String getMacByInetAddress(InetAddress inetAddr){
+        try {
+            byte[] mac = NetworkInterface.getByInetAddress(inetAddr).getHardwareAddress();
+            StringBuffer stringBuffer = new StringBuffer();
+
+            for(int i=0;i<mac.length;i++){
+                if(i != 0) {
+                    stringBuffer.append("-");
+                }
+
+                //灏嗗崄鍏繘鍒禸yte杞寲涓哄瓧绗︿覆
+                String temp = Integer.toHexString(mac[i] & 0xff);
+                if(temp.length() == 1){
+                    stringBuffer.append("0" + temp);
+                }else{
+                    stringBuffer.append(temp);
+                }
+            }
+
+            return stringBuffer.toString().toUpperCase();
+        } catch (SocketException e) {
+            e.printStackTrace();
+        }
+
+        return null;
+    }
+
+}
\ No newline at end of file
diff --git a/src/main/java/com/zy/system/entity/license/CustomKeyStoreParam.java b/src/main/java/com/zy/system/entity/license/CustomKeyStoreParam.java
new file mode 100644
index 0000000..3d4e4b9
--- /dev/null
+++ b/src/main/java/com/zy/system/entity/license/CustomKeyStoreParam.java
@@ -0,0 +1,57 @@
+package com.zy.system.entity.license;
+
+import de.schlichtherle.license.AbstractKeyStoreParam;
+
+import java.io.*;
+
+/**
+ * 鑷畾涔塊eyStoreParam锛岀敤浜庡皢鍏閽ュ瓨鍌ㄦ枃浠跺瓨鏀惧埌鍏朵粬纾佺洏浣嶇疆鑰屼笉鏄」鐩腑
+ */
+public class CustomKeyStoreParam extends AbstractKeyStoreParam {
+
+    /**
+     * 鍏挜/绉侀挜鍦ㄧ鐩樹笂鐨勫瓨鍌ㄨ矾寰�
+     */
+    private String storePath;
+    private String alias;
+    private String storePwd;
+    private String keyPwd;
+
+    public CustomKeyStoreParam(Class clazz, String resource, String alias, String storePwd, String keyPwd) {
+        super(clazz, resource);
+        this.storePath = resource;
+        this.alias = alias;
+        this.storePwd = storePwd;
+        this.keyPwd = keyPwd;
+    }
+
+
+    @Override
+    public String getAlias() {
+        return alias;
+    }
+
+    @Override
+    public String getStorePwd() {
+        return storePwd;
+    }
+
+    @Override
+    public String getKeyPwd() {
+        return keyPwd;
+    }
+
+    /**
+     * 澶嶅啓de.schlichtherle.license.AbstractKeyStoreParam鐨刧etStream()鏂规硶<br/>
+     * 鐢ㄤ簬灏嗗叕绉侀挜瀛樺偍鏂囦欢瀛樻斁鍒板叾浠栫鐩樹綅缃�屼笉鏄」鐩腑
+     */
+    @Override
+    public InputStream getStream() throws IOException {
+        final InputStream in = new FileInputStream(new File(storePath));
+        if (null == in) {
+            throw new FileNotFoundException(storePath);
+        }
+
+        return in;
+    }
+}
diff --git a/src/main/java/com/zy/system/entity/license/CustomLicenseManager.java b/src/main/java/com/zy/system/entity/license/CustomLicenseManager.java
new file mode 100644
index 0000000..4ca8f81
--- /dev/null
+++ b/src/main/java/com/zy/system/entity/license/CustomLicenseManager.java
@@ -0,0 +1,241 @@
+package com.zy.system.entity.license;
+
+import com.core.common.Cools;
+import de.schlichtherle.license.*;
+import de.schlichtherle.xml.GenericCertificate;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+import java.beans.XMLDecoder;
+import java.io.BufferedInputStream;
+import java.io.ByteArrayInputStream;
+import java.io.UnsupportedEncodingException;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 鑷畾涔塋icenseManager锛岀敤浜庡鍔犻澶栫殑鏈嶅姟鍣ㄧ‖浠朵俊鎭牎楠�
+ */
+public class CustomLicenseManager extends LicenseManager{
+    private static Logger logger = LogManager.getLogger(CustomLicenseManager.class);
+
+    //XML缂栫爜
+    private static final String XML_CHARSET = "UTF-8";
+    //榛樿BUFSIZE
+    private static final int DEFAULT_BUFSIZE = 8 * 1024;
+
+    public CustomLicenseManager() {
+
+    }
+
+    public CustomLicenseManager(LicenseParam param) {
+        super(param);
+    }
+
+    /**
+     * 澶嶅啓create鏂规硶
+     */
+    @Override
+    protected synchronized byte[] create(
+            LicenseContent content,
+            LicenseNotary notary)
+            throws Exception {
+        initialize(content);
+        this.validateCreate(content);
+        final GenericCertificate certificate = notary.sign(content);
+        return getPrivacyGuard().cert2key(certificate);
+    }
+
+    /**
+     * 澶嶅啓install鏂规硶锛屽叾涓璿alidate鏂规硶璋冪敤鏈被涓殑validate鏂规硶锛屾牎楠孖P鍦板潃銆丮ac鍦板潃绛夊叾浠栦俊鎭�
+     */
+    @Override
+    protected synchronized LicenseContent install(
+            final byte[] key,
+            final LicenseNotary notary)
+            throws Exception {
+        final GenericCertificate certificate = getPrivacyGuard().key2cert(key);
+
+        notary.verify(certificate);
+        final LicenseContent content = (LicenseContent)this.load(certificate.getEncoded());
+        this.validate(content);
+        setLicenseKey(key);
+        setCertificate(certificate);
+
+        return content;
+    }
+
+    /**
+     * 澶嶅啓verify鏂规硶锛岃皟鐢ㄦ湰绫讳腑鐨剉alidate鏂规硶锛屾牎楠孖P鍦板潃銆丮ac鍦板潃绛夊叾浠栦俊鎭�
+     */
+    @Override
+    protected synchronized LicenseContent verify(final LicenseNotary notary)
+            throws Exception {
+        GenericCertificate certificate = getCertificate();
+
+        // Load license key from preferences,
+        final byte[] key = getLicenseKey();
+        if (null == key){
+            throw new NoLicenseInstalledException(getLicenseParam().getSubject());
+        }
+
+        certificate = getPrivacyGuard().key2cert(key);
+        notary.verify(certificate);
+        final LicenseContent content = (LicenseContent)this.load(certificate.getEncoded());
+        this.validate(content);
+        setCertificate(certificate);
+
+        return content;
+    }
+
+    /**
+     * 鏍¢獙鐢熸垚璇佷功鐨勫弬鏁颁俊鎭�
+     */
+    protected synchronized void validateCreate(final LicenseContent content)
+            throws LicenseContentException {
+        final LicenseParam param = getLicenseParam();
+
+        final Date now = new Date();
+        final Date notBefore = content.getNotBefore();
+        final Date notAfter = content.getNotAfter();
+        if (null != notAfter && now.after(notAfter)){
+            throw new LicenseContentException("璇佷功澶辨晥鏃堕棿涓嶈兘鏃╀簬褰撳墠鏃堕棿");
+        }
+        if (null != notBefore && null != notAfter && notAfter.before(notBefore)){
+            throw new LicenseContentException("璇佷功鐢熸晥鏃堕棿涓嶈兘鏅氫簬璇佷功澶辨晥鏃堕棿");
+        }
+        final String consumerType = content.getConsumerType();
+        if (null == consumerType){
+            throw new LicenseContentException("鐢ㄦ埛绫诲瀷涓嶈兘涓虹┖");
+        }
+    }
+
+
+    /**
+     * 澶嶅啓validate鏂规硶锛屽鍔營P鍦板潃銆丮ac鍦板潃绛夊叾浠栦俊鎭牎楠�
+     */
+    @Override
+    protected synchronized void validate(final LicenseContent content)
+            throws LicenseContentException {
+//        1. 棣栧厛璋冪敤鐖剁被鐨剉alidate鏂规硶
+        super.validate(content);
+
+        //2. 鐒跺悗鏍¢獙鑷畾涔夌殑License鍙傛暟
+        //License涓彲琚厑璁哥殑鍙傛暟淇℃伅
+        LicenseCheck expectedCheckModel = (LicenseCheck) content.getExtra();
+        //褰撳墠鏈嶅姟鍣ㄧ湡瀹炵殑鍙傛暟淇℃伅
+        LicenseCheck serverCheckModel = getServerInfos();
+
+        if(expectedCheckModel != null && serverCheckModel != null){
+            //鏍¢獙IP鍦板潃
+            if(!checkIpAddress(expectedCheckModel.getIpAddress(),serverCheckModel.getIpAddress())){
+                throw new LicenseContentException("褰撳墠鏈嶅姟鍣ㄧ殑IP娌″湪鎺堟潈鑼冨洿鍐�");
+            }
+
+            //鏍¢獙Mac鍦板潃
+            if(!checkIpAddress(expectedCheckModel.getMacAddress(),serverCheckModel.getMacAddress())){
+                throw new LicenseContentException("褰撳墠鏈嶅姟鍣ㄧ殑Mac鍦板潃娌″湪鎺堟潈鑼冨洿鍐�");
+            }
+
+            //鏍¢獙涓绘澘搴忓垪鍙�
+            if(!checkSerial(expectedCheckModel.getMainBoardSerial(),serverCheckModel.getMainBoardSerial())){
+                throw new LicenseContentException("褰撳墠鏈嶅姟鍣ㄧ殑涓绘澘搴忓垪鍙锋病鍦ㄦ巿鏉冭寖鍥村唴");
+            }
+
+            //鏍¢獙CPU搴忓垪鍙�
+            if(!checkSerial(expectedCheckModel.getCpuSerial(),serverCheckModel.getCpuSerial())){
+                throw new LicenseContentException("褰撳墠鏈嶅姟鍣ㄧ殑CPU搴忓垪鍙锋病鍦ㄦ巿鏉冭寖鍥村唴");
+            }
+        }else{
+            throw new LicenseContentException("涓嶈兘鑾峰彇鏈嶅姟鍣ㄧ‖浠朵俊鎭�");
+        }
+    }
+
+
+    /**
+     * 閲嶅啓XMLDecoder瑙f瀽XML
+     */
+    private Object load(String encoded){
+        BufferedInputStream inputStream = null;
+        XMLDecoder decoder = null;
+        try {
+            inputStream = new BufferedInputStream(new ByteArrayInputStream(encoded.getBytes(XML_CHARSET)));
+
+            decoder = new XMLDecoder(new BufferedInputStream(inputStream, DEFAULT_BUFSIZE),null,null);
+
+            return decoder.readObject();
+        } catch (UnsupportedEncodingException e) {
+            e.printStackTrace();
+        } finally {
+            try {
+                if(decoder != null){
+                    decoder.close();
+                }
+                if(inputStream != null){
+                    inputStream.close();
+                }
+            } catch (Exception e) {
+                logger.error("XMLDecoder瑙f瀽XML澶辫触",e);
+            }
+        }
+
+        return null;
+    }
+
+    /**
+     * 鑾峰彇褰撳墠鏈嶅姟鍣ㄩ渶瑕侀澶栨牎楠岀殑License鍙傛暟
+     */
+    private LicenseCheck getServerInfos(){
+        //鎿嶄綔绯荤粺绫诲瀷
+        String osName = System.getProperty("os.name").toLowerCase();
+        AbstractServerInfos abstractServerInfos = null;
+
+        //鏍规嵁涓嶅悓鎿嶄綔绯荤粺绫诲瀷閫夋嫨涓嶅悓鐨勬暟鎹幏鍙栨柟娉�
+        if (osName.startsWith("windows")) {
+            abstractServerInfos = new WindowsServerInfos();
+        } else if (osName.startsWith("linux")) {
+//            abstractServerInfos = new LinuxServerInfos();
+        }else{//鍏朵粬鏈嶅姟鍣ㄧ被鍨�
+            abstractServerInfos = new WindowsServerInfos();
+        }
+
+        return abstractServerInfos.getServerInfos();
+    }
+
+    /**
+     * 鏍¢獙褰撳墠鏈嶅姟鍣ㄧ殑IP/Mac鍦板潃鏄惁鍦ㄥ彲琚厑璁哥殑IP鑼冨洿鍐�<br/>
+     * 濡傛灉瀛樺湪IP鍦ㄥ彲琚厑璁哥殑IP/Mac鍦板潃鑼冨洿鍐咃紝鍒欒繑鍥瀟rue
+     */
+    private boolean checkIpAddress(List<String> expectedList,List<String> serverList){
+        if(expectedList != null && expectedList.size() > 0){
+            if(serverList != null && serverList.size() > 0){
+                for(String expected : expectedList){
+                    if(serverList.contains(expected.trim())){
+                        return true;
+                    }
+                }
+            }
+
+            return false;
+        }else {
+            return true;
+        }
+    }
+
+    /**
+     * 鏍¢獙褰撳墠鏈嶅姟鍣ㄧ‖浠讹紙涓绘澘銆丆PU绛夛級搴忓垪鍙锋槸鍚﹀湪鍙厑璁歌寖鍥村唴
+     */
+    private boolean checkSerial(String expectedSerial,String serverSerial){
+        if(!Cools.isEmpty(expectedSerial)){
+            if(!Cools.isEmpty(serverSerial)){
+                if(expectedSerial.equals(serverSerial)){
+                    return true;
+                }
+            }
+            return false;
+        }else{
+            return true;
+        }
+    }
+
+}
\ No newline at end of file
diff --git a/src/main/java/com/zy/system/entity/license/LicenseCheck.java b/src/main/java/com/zy/system/entity/license/LicenseCheck.java
new file mode 100644
index 0000000..660f818
--- /dev/null
+++ b/src/main/java/com/zy/system/entity/license/LicenseCheck.java
@@ -0,0 +1,45 @@
+package com.zy.system.entity.license;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * 鑷畾涔夐渶瑕佹牎楠岀殑License鍙傛暟
+ */
+@Data
+public class LicenseCheck implements Serializable {
+
+    private static final long serialVersionUID = 8600137500316662317L;
+    /**
+     * 鍙鍏佽鐨処P鍦板潃
+     */
+    private List<String> ipAddress;
+
+    /**
+     * 鍙鍏佽鐨凪AC鍦板潃
+     */
+    private List<String> macAddress;
+
+    /**
+     * 鍙鍏佽鐨凜PU搴忓垪鍙�
+     */
+    private String cpuSerial;
+
+    /**
+     * 鍙鍏佽鐨勪富鏉垮簭鍒楀彿
+     */
+    private String mainBoardSerial;
+
+    @Override
+    public String toString() {
+        return "LicenseCheckModel{" +
+                "ipAddress=" + ipAddress +
+                ", macAddress=" + macAddress +
+                ", cpuSerial='" + cpuSerial + '\'' +
+                ", mainBoardSerial='" + mainBoardSerial + '\'' +
+                '}';
+    }
+
+}
diff --git a/src/main/java/com/zy/system/entity/license/LicenseCheckListener.java b/src/main/java/com/zy/system/entity/license/LicenseCheckListener.java
new file mode 100644
index 0000000..1659df2
--- /dev/null
+++ b/src/main/java/com/zy/system/entity/license/LicenseCheckListener.java
@@ -0,0 +1,94 @@
+package com.zy.system.entity.license;
+
+import com.core.common.Cools;
+import de.schlichtherle.license.LicenseContent;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.ApplicationListener;
+import org.springframework.context.event.ContextRefreshedEvent;
+import org.springframework.stereotype.Component;
+
+import java.io.File;
+
+/**
+ * 鍦ㄩ」鐩惎鍔ㄦ椂瀹夎璇佷功
+ */
+@Component
+public class LicenseCheckListener implements ApplicationListener<ContextRefreshedEvent> {
+    private static Logger logger = LogManager.getLogger(LicenseCheckListener.class);
+
+    /**
+     * 璇佷功subject
+     */
+    @Value("${license.subject}")
+    private String subject;
+
+    /**
+     * 鍏挜鍒О
+     */
+    @Value("${license.publicAlias}")
+    private String publicAlias;
+
+    /**
+     * 璁块棶鍏挜搴撶殑瀵嗙爜
+     */
+    @Value("${license.storePass}")
+    private String storePass;
+
+    /**
+     * 璇佷功鐢熸垚璺緞
+     */
+    @Value("${license.licensePath}")
+    private String licensePath;
+
+    /**
+     * 瀵嗛挜搴撳瓨鍌ㄨ矾寰�
+     */
+    @Value("${license.publicKeysStorePath}")
+    private String publicKeysStorePath;
+
+    @Override
+    public void onApplicationEvent(ContextRefreshedEvent event) {
+        //root application context 娌℃湁parent
+        ApplicationContext context = event.getApplicationContext().getParent();
+        if(context == null){
+            loadLicense();
+        }
+    }
+
+    //鍔犺浇璇佷功
+    public boolean loadLicense() {
+        if(!Cools.isEmpty(licensePath)){
+            logger.info("++++++++ 寮�濮嬪姞杞借鍙瘉 ++++++++");
+
+            try {
+                String publicKeysStoreFileName = this.getClass().getClassLoader().getResource(publicKeysStorePath).getPath();
+                File publicKeysStoreFile = new File(publicKeysStoreFileName);
+
+                String licensePathFileName = this.getClass().getClassLoader().getResource(licensePath).getPath();
+                File licensePathFile = new File(licensePathFileName);
+
+                LicenseVerifyParam param = new LicenseVerifyParam();
+                param.setSubject(subject);
+                param.setPublicAlias(publicAlias);
+                param.setStorePass(storePass);
+                param.setLicensePath(licensePathFile.getPath());
+                param.setPublicKeysStorePath(publicKeysStoreFile.getPath());
+
+                LicenseVerify licenseVerify = new LicenseVerify();
+                //瀹夎璇佷功
+                LicenseContent install = licenseVerify.install(param);
+
+                logger.info("++++++++ 璁稿彲璇佸姞杞界粨鏉� ++++++++");
+
+                return install != null;
+            } catch (Exception e) {
+                return false;
+            }
+        }
+
+        return false;
+    }
+}
\ No newline at end of file
diff --git a/src/main/java/com/zy/system/entity/license/LicenseCreator.java b/src/main/java/com/zy/system/entity/license/LicenseCreator.java
new file mode 100644
index 0000000..01f2ad1
--- /dev/null
+++ b/src/main/java/com/zy/system/entity/license/LicenseCreator.java
@@ -0,0 +1,86 @@
+package com.zy.system.entity.license;
+
+import de.schlichtherle.license.*;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+import javax.security.auth.x500.X500Principal;
+import java.io.File;
+import java.text.MessageFormat;
+import java.util.prefs.Preferences;
+
+/**
+ * License鐢熸垚绫�
+ */
+public class LicenseCreator {
+    private static Logger logger = LogManager.getLogger(LicenseCreator.class);
+    private final static X500Principal DEFAULT_HOLDER_AND_ISSUER = new X500Principal("CN=localhost, OU=localhost, O=localhost, L=SH, ST=SH, C=CN");
+    private LicenseCreatorParam param;
+
+    public LicenseCreator(LicenseCreatorParam param) {
+        this.param = param;
+    }
+
+    /**
+     * 鐢熸垚License璇佷功
+     */
+    public boolean generateLicense(){
+        try {
+            LicenseManager licenseManager = new CustomLicenseManager(initLicenseParam());
+            LicenseContent licenseContent = initLicenseContent();
+
+            licenseManager.store(licenseContent,new File(param.getLicensePath()));
+
+            return true;
+        }catch (Exception e){
+            logger.error(MessageFormat.format("璇佷功鐢熸垚澶辫触锛歿0}",param),e);
+            return false;
+        }
+    }
+
+    /**
+     * 鍒濆鍖栬瘉涔︾敓鎴愬弬鏁�
+     */
+    private LicenseParam initLicenseParam(){
+        Preferences preferences = Preferences.userNodeForPackage(LicenseCreator.class);
+
+        //璁剧疆瀵硅瘉涔﹀唴瀹瑰姞瀵嗙殑绉橀挜
+        CipherParam cipherParam = new DefaultCipherParam(param.getStorePass());
+
+        KeyStoreParam privateStoreParam = new CustomKeyStoreParam(LicenseCreator.class
+                ,param.getPrivateKeysStorePath()
+                ,param.getPrivateAlias()
+                ,param.getStorePass()
+                ,param.getKeyPass());
+
+        LicenseParam licenseParam = new DefaultLicenseParam(param.getSubject()
+                ,preferences
+                ,privateStoreParam
+                ,cipherParam);
+
+        return licenseParam;
+    }
+
+    /**
+     * 璁剧疆璇佷功鐢熸垚姝f枃淇℃伅
+     */
+    private LicenseContent initLicenseContent(){
+        LicenseContent licenseContent = new LicenseContent();
+        licenseContent.setHolder(DEFAULT_HOLDER_AND_ISSUER);
+        licenseContent.setIssuer(DEFAULT_HOLDER_AND_ISSUER);
+
+        licenseContent.setSubject(param.getSubject());
+        licenseContent.setIssued(param.getIssuedTime());
+        licenseContent.setNotBefore(param.getIssuedTime());
+        licenseContent.setNotAfter(param.getExpiryTime());
+        licenseContent.setConsumerType(param.getConsumerType());
+        licenseContent.setConsumerAmount(param.getConsumerAmount());
+        licenseContent.setInfo(param.getDescription());
+
+        //鎵╁睍鏍¢獙鏈嶅姟鍣ㄧ‖浠朵俊鎭�
+        licenseContent.setExtra(param.getLicenseCheck());
+
+        return licenseContent;
+    }
+
+}
\ No newline at end of file
diff --git a/src/main/java/com/zy/system/entity/license/LicenseCreatorParam.java b/src/main/java/com/zy/system/entity/license/LicenseCreatorParam.java
new file mode 100644
index 0000000..5a3915d
--- /dev/null
+++ b/src/main/java/com/zy/system/entity/license/LicenseCreatorParam.java
@@ -0,0 +1,96 @@
+package com.zy.system.entity.license;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * License鐢熸垚绫婚渶瑕佺殑鍙傛暟
+ */
+@Data
+public class LicenseCreatorParam implements Serializable {
+
+    private static final long serialVersionUID = -7793154252684580872L;
+    /**
+     * 璇佷功subject
+     */
+    private String subject;
+
+    /**
+     * 瀵嗛挜鍒О
+     */
+    private String privateAlias;
+
+    /**
+     * 瀵嗛挜瀵嗙爜锛堥渶瑕佸Ε鍠勪繚绠★紝涓嶈兘璁╀娇鐢ㄨ�呯煡閬擄級
+     */
+    private String keyPass;
+
+    /**
+     * 璁块棶绉橀挜搴撶殑瀵嗙爜
+     */
+    private String storePass;
+
+    /**
+     * 璇佷功鐢熸垚璺緞
+     */
+    private String licensePath;
+
+    /**
+     * 瀵嗛挜搴撳瓨鍌ㄨ矾寰�
+     */
+    private String privateKeysStorePath;
+
+    /**
+     * 璇佷功鐢熸晥鏃堕棿
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date issuedTime = new Date();
+
+    /**
+     * 璇佷功澶辨晥鏃堕棿
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date expiryTime;
+
+    /**
+     * 鐢ㄦ埛绫诲瀷
+     */
+    private String consumerType = "user";
+
+    /**
+     * 鐢ㄦ埛鏁伴噺
+     */
+    private Integer consumerAmount = 1;
+
+    /**
+     * 鎻忚堪淇℃伅
+     */
+    private String description = "";
+
+    /**
+     * 棰濆鐨勬湇鍔″櫒纭欢鏍¢獙淇℃伅
+     */
+    private LicenseCheck licenseCheck;
+
+    @Override
+    public String toString() {
+        return "LicenseCreatorParam{" +
+                "subject='" + subject + '\'' +
+                ", privateAlias='" + privateAlias + '\'' +
+                ", keyPass='" + keyPass + '\'' +
+                ", storePass='" + storePass + '\'' +
+                ", licensePath='" + licensePath + '\'' +
+                ", privateKeysStorePath='" + privateKeysStorePath + '\'' +
+                ", issuedTime=" + issuedTime +
+                ", expiryTime=" + expiryTime +
+                ", consumerType='" + consumerType + '\'' +
+                ", consumerAmount=" + consumerAmount +
+                ", description='" + description + '\'' +
+                ", licenseCheck=" + licenseCheck +
+                '}';
+    }
+
+}
diff --git a/src/main/java/com/zy/system/entity/license/LicenseManagerHolder.java b/src/main/java/com/zy/system/entity/license/LicenseManagerHolder.java
new file mode 100644
index 0000000..64c6f39
--- /dev/null
+++ b/src/main/java/com/zy/system/entity/license/LicenseManagerHolder.java
@@ -0,0 +1,22 @@
+package com.zy.system.entity.license;
+
+import de.schlichtherle.license.LicenseManager;
+import de.schlichtherle.license.LicenseParam;
+
+public class LicenseManagerHolder {
+
+    private static volatile LicenseManager LICENSE_MANAGER;
+
+    public static LicenseManager getInstance(LicenseParam param) {
+        if (LICENSE_MANAGER == null) {
+            synchronized (LicenseManagerHolder.class) {
+                if (LICENSE_MANAGER == null) {
+                    LICENSE_MANAGER = new CustomLicenseManager(param);
+                }
+            }
+        }
+
+        return LICENSE_MANAGER;
+    }
+
+}
\ No newline at end of file
diff --git a/src/main/java/com/zy/system/entity/license/LicenseVerify.java b/src/main/java/com/zy/system/entity/license/LicenseVerify.java
new file mode 100644
index 0000000..d872255
--- /dev/null
+++ b/src/main/java/com/zy/system/entity/license/LicenseVerify.java
@@ -0,0 +1,133 @@
+package com.zy.system.entity.license;
+
+import de.schlichtherle.license.*;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+import java.io.File;
+import java.text.DateFormat;
+import java.text.MessageFormat;
+import java.text.SimpleDateFormat;
+import java.util.prefs.Preferences;
+
+/**
+ * License鏍¢獙绫�
+ */
+public class LicenseVerify {
+    private static Logger logger = LogManager.getLogger(LicenseVerify.class);
+
+    /**
+     * 瀹夎License璇佷功
+     */
+    public synchronized LicenseContent install(LicenseVerifyParam param){
+        LicenseContent result = null;
+        DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+
+        //1. 瀹夎璇佷功
+        try{
+            LicenseManager licenseManager = LicenseManagerHolder.getInstance(initLicenseParam(param));
+            licenseManager.uninstall();
+
+            result = licenseManager.install(new File(param.getLicensePath()));
+            logger.info(MessageFormat.format("璁稿彲璇佸姞杞芥垚鍔燂紝璁稿彲璇佹湁鏁堟湡锛歿0} - {1}",format.format(result.getNotBefore()),format.format(result.getNotAfter())));
+        }catch (Exception e){
+            logger.error("璁稿彲璇佸姞杞藉け璐ワ紒{}",e.getMessage());
+        }
+
+        return result;
+    }
+
+    /**
+     * 鏍¢獙License璇佷功
+     */
+    public boolean verify(){
+        try {
+            LicenseManager licenseManager = LicenseManagerHolder.getInstance(null);
+            DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+
+            if (!updateSystemTime()) {
+                //鏃堕棿鏇存柊澶辫触锛岀郴缁熸椂闂磋鏇存敼
+                return false;
+            }
+
+            LicenseContent licenseContent = licenseManager.verify();
+            logger.info(MessageFormat.format("璁稿彲璇佹牎楠岄�氳繃锛岃鍙瘉鏈夋晥鏈燂細{0} - {1}",format.format(licenseContent.getNotBefore()),format.format(licenseContent.getNotAfter())));
+            return true;
+        }catch (Exception e){
+            logger.error("璁稿彲璇佹牎楠屽け璐ワ紒{}",e.getMessage());
+            return false;
+        }
+    }
+
+    /**
+     * 鏍¢獙License璇佷功骞惰幏鍙栬瘉涔︿俊鎭�
+     */
+    public LicenseContent getVerifyInfo(){
+        LicenseManager licenseManager = LicenseManagerHolder.getInstance(null);
+
+        if (!updateSystemTime()) {
+            //鏃堕棿鏇存柊澶辫触锛岀郴缁熸椂闂磋鏇存敼
+            return null;
+        }
+
+        //鏍¢獙璇佷功
+        try {
+            LicenseContent licenseContent = licenseManager.verify();
+            return licenseContent;
+        }catch (Exception e){
+            logger.error("璁稿彲璇佹牎楠屽け璐ワ紒",e);
+            return null;
+        }
+    }
+
+    /**
+     * 鍒濆鍖栬瘉涔︾敓鎴愬弬鏁�
+     * @param param License鏍¢獙绫婚渶瑕佺殑鍙傛暟
+     * @return de.schlichtherle.license.LicenseParam
+     */
+    private LicenseParam initLicenseParam(LicenseVerifyParam param){
+        Preferences preferences = Preferences.userNodeForPackage(LicenseVerify.class);
+
+        CipherParam cipherParam = new DefaultCipherParam(param.getStorePass());
+
+        KeyStoreParam publicStoreParam = new CustomKeyStoreParam(LicenseVerify.class
+                ,param.getPublicKeysStorePath()
+                ,param.getPublicAlias()
+                ,param.getStorePass()
+                ,null);
+
+        return new DefaultLicenseParam(param.getSubject()
+                ,preferences
+                ,publicStoreParam
+                ,cipherParam);
+    }
+
+    /**
+     * 鏇存柊鏃堕棿鍒版敞鍐岃〃涓�
+     */
+    private boolean updateSystemTime() {
+        // 鑾峰彇鐢ㄦ埛鏍硅妭鐐�
+        Preferences userRoot = Preferences.userRoot();
+        // 鑾峰彇鎸囧畾璺緞涓嬬殑鑺傜偣
+        Preferences node = userRoot.node("/zhongyang");
+        String key = "time";
+        // 璇诲彇娉ㄥ唽琛�
+        String value = node.get(key, null);
+        if (value != null) {
+            long originTime = Long.parseLong(value);
+            long now = System.currentTimeMillis();
+            long diff = now - originTime;//鐜板湪鏃堕棿 - 婧愭椂闂� = 鏃堕棿宸�
+            if (diff > 0) {
+                //鏃堕棿宸ぇ浜�0鎵嶅厑璁告洿鏂版敞鍐岃〃鏃堕棿
+                node.put(key, String.valueOf(System.currentTimeMillis()));
+                return true;
+            }
+        }else {
+            // 鍐欏叆娉ㄥ唽琛�
+            node.put(key, String.valueOf(System.currentTimeMillis()));
+            return true;
+        }
+        return false;
+    }
+
+}
\ No newline at end of file
diff --git a/src/main/java/com/zy/system/entity/license/LicenseVerifyParam.java b/src/main/java/com/zy/system/entity/license/LicenseVerifyParam.java
new file mode 100644
index 0000000..33806e5
--- /dev/null
+++ b/src/main/java/com/zy/system/entity/license/LicenseVerifyParam.java
@@ -0,0 +1,48 @@
+package com.zy.system.entity.license;
+
+import lombok.Data;
+
+/**
+ * 鏍¢獙绛惧悕鏂囦欢
+ */
+@Data
+public class LicenseVerifyParam {
+
+    /**
+     * 璇佷功subject
+     */
+    private String subject;
+
+    /**
+     * 鍏挜鍒О
+     */
+    private String publicAlias;
+
+    /**
+     * 璁块棶鍏挜搴撶殑瀵嗙爜
+     */
+    private String storePass;
+
+    /**
+     * 璇佷功鐢熸垚璺緞
+     */
+    private String licensePath;
+
+    /**
+     * 瀵嗛挜搴撳瓨鍌ㄨ矾寰�
+     */
+    private String publicKeysStorePath;
+
+    public LicenseVerifyParam() {
+
+    }
+
+    public LicenseVerifyParam(String subject, String publicAlias, String storePass, String licensePath, String publicKeysStorePath) {
+        this.subject = subject;
+        this.publicAlias = publicAlias;
+        this.storePass = storePass;
+        this.licensePath = licensePath;
+        this.publicKeysStorePath = publicKeysStorePath;
+    }
+
+}
diff --git a/src/main/java/com/zy/system/entity/license/WindowsServerInfos.java b/src/main/java/com/zy/system/entity/license/WindowsServerInfos.java
new file mode 100644
index 0000000..c575e6d
--- /dev/null
+++ b/src/main/java/com/zy/system/entity/license/WindowsServerInfos.java
@@ -0,0 +1,85 @@
+package com.zy.system.entity.license;
+
+import java.net.InetAddress;
+import java.util.List;
+import java.util.Scanner;
+import java.util.stream.Collectors;
+
+/**
+ * 鐢ㄤ簬鑾峰彇瀹㈡埛Windows鏈嶅姟鍣ㄧ殑鍩烘湰淇℃伅
+ */
+public class WindowsServerInfos extends AbstractServerInfos {
+
+    @Override
+    protected List<String> getIpAddress() throws Exception {
+        List<String> result = null;
+
+        //鑾峰彇鎵�鏈夌綉缁滄帴鍙�
+        List<InetAddress> inetAddresses = getLocalAllInetAddress();
+
+        if(inetAddresses != null && inetAddresses.size() > 0){
+            result = inetAddresses.stream().map(InetAddress::getHostAddress).distinct().map(String::toLowerCase).collect(Collectors.toList());
+        }
+
+        return result;
+    }
+
+    @Override
+    protected List<String> getMacAddress() throws Exception {
+        List<String> result = null;
+
+        //1. 鑾峰彇鎵�鏈夌綉缁滄帴鍙�
+        List<InetAddress> inetAddresses = getLocalAllInetAddress();
+
+        if(inetAddresses != null && inetAddresses.size() > 0){
+            //2. 鑾峰彇鎵�鏈夌綉缁滄帴鍙g殑Mac鍦板潃
+            result = inetAddresses.stream().map(this::getMacByInetAddress).distinct().collect(Collectors.toList());
+        }
+
+        return result;
+    }
+
+    @Override
+    protected String getCPUSerial() throws Exception {
+        //搴忓垪鍙�
+        String serialNumber = "";
+
+        //浣跨敤WMIC鑾峰彇CPU搴忓垪鍙�
+        Process process = Runtime.getRuntime().exec("wmic cpu get processorid");
+        process.getOutputStream().close();
+        Scanner scanner = new Scanner(process.getInputStream());
+
+        if(scanner.hasNext()){
+            scanner.next();
+        }
+
+        if(scanner.hasNext()){
+            serialNumber = scanner.next().trim();
+        }
+
+        scanner.close();
+        return serialNumber;
+    }
+
+    @Override
+    protected String getMainBoardSerial() throws Exception {
+        //搴忓垪鍙�
+        String serialNumber = "";
+
+        //浣跨敤WMIC鑾峰彇涓绘澘搴忓垪鍙�
+        Process process = Runtime.getRuntime().exec("wmic baseboard get serialnumber");
+        process.getOutputStream().close();
+        Scanner scanner = new Scanner(process.getInputStream());
+
+        if(scanner.hasNext()){
+            scanner.next();
+        }
+
+        if(scanner.hasNext()){
+            serialNumber = scanner.next().trim();
+        }
+
+        scanner.close();
+        return serialNumber;
+    }
+}
\ No newline at end of file
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 37ff093..11dd9a6 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -8,13 +8,13 @@
     name: @pom.build.finalName@
   datasource:
     driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
-#    url: jdbc:sqlserver://localhost:1433;databasename=jshdasrs
-    url: jdbc:sqlserver://127.0.0.1:1433;databasename=jshdasrs
-    username: sa
-    password: sa@123
-#    url: jdbc:sqlserver://192.168.4.191:50948;databasename=jshdasrs
+#    url: jdbc:sqlserver://localhost:1433;databasename=zzgtasrs
+#    url: jdbc:sqlserver://127.0.0.1:1433;databasename=zzgtasrs
 #    username: sa
 #    password: sa@123
+    url: jdbc:sqlserver://192.168.4.191:50948;databasename=zzgtasrs
+    username: sa
+    password: sa@123
   mvc:
     static-path-pattern: /**
   redis:
@@ -38,8 +38,17 @@
   enable: false
 
 wms:
-  url: 127.0.0.1:8081/jshdasrs
+  url: 127.0.0.1:8081/zzgtasrs
   comb: mobile/combAuto/wcs/auth
+
+#License鐩稿叧閰嶇疆
+license:
+  subject: zzgtasrs
+  publicAlias: publicCert
+  storePass: public_zhongyang_123456789
+  licensePath: license.lic
+  publicKeysStorePath: publicCerts.keystore
+
 inventory:
   number: 7
 
diff --git a/src/main/webapp/static/js/common.js b/src/main/webapp/static/js/common.js
index 82cd390..e7c3971 100644
--- a/src/main/webapp/static/js/common.js
+++ b/src/main/webapp/static/js/common.js
@@ -1,4 +1,4 @@
-var baseUrl = "/jshdwcs";
+var baseUrl = "/zzgtwcs";
 
 // 璧嬪��
 function setVal(el, val) {
diff --git a/src/main/webapp/static/js/console.map.js b/src/main/webapp/static/js/console.map.js
index 6c02ca4..da4b31f 100644
--- a/src/main/webapp/static/js/console.map.js
+++ b/src/main/webapp/static/js/console.map.js
@@ -1,5 +1,5 @@
 mapInfo = {
-    "mapName": "JSHDWCS",
+    "mapName": "zzgtwcs",
     "rackCount": 4,
     "crnCount": 3,
     "stbCount": 13,

--
Gitblit v1.9.1