From b1013def3c6fd89195a6ee726cbb47016a155fab Mon Sep 17 00:00:00 2001
From: Junjie <540245094@qq.com>
Date: 星期二, 04 十一月 2025 14:06:53 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/controller/LocMastController.java          |  296 
 src/main/webapp/views/admin/basCrnp/basCrnp.html                     |  120 
 src/main/java/com/zy/asrs/entity/BasCrnp.java                        |  121 
 src/main/java/com/zy/asrs/service/BasCrnpService.java                |    8 
 src/main/java/com/zy/core/model/protocol/CrnProtocol.java            |  207 +
 src/main/resources/mapper/BasCrnpOptMapper.xml                       |   24 
 src/main/webapp/static/js/basCrnpOpt/basCrnpOpt.js                   |  268 +
 src/main/java/com/zy/asrs/entity/BasCrnpOpt.java                     |  191 +
 src/main/java/com/zy/asrs/utils/Utils.java                           |  231 -
 src/main/java/com/zy/asrs/controller/BasCrnpErrLogController.java    |  125 
 src/main/java/com/zy/asrs/mapper/BasCrnpErrLogMapper.java            |   12 
 src/main/java/com/zy/core/thread/CrnThread.java                      |   10 
 src/main/webapp/static/js/common.js                                  |    2 
 src/main/webapp/static/js/basCrnpErr/basCrnpErr.js                   |  261 +
 src/main/webapp/views/admin/basCrnp/basCrnp_detail.html              |  112 
 src/main/java/com/zy/asrs/service/impl/BasCrnpServiceImpl.java       |   12 
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java          | 2030 ----------
 src/main/java/com/zy/core/thread/ShuttleThread.java                  |   86 
 src/main/java/com/zy/asrs/utils/NotifyUtils.java                     |   11 
 src/main/java/com/zy/asrs/service/impl/BasCrnpOptServiceImpl.java    |   12 
 src/main/java/com/zy/core/cache/MessageQueue.java                    |  135 
 src/main/webapp/static/js/basCrnpErrLog/basCrnpErrLog.js             |  285 +
 src/main/java/com/zy/asrs/task/NotifyScheduler.java                  |   16 
 src/main/webapp/views/admin/basCrnpErr/basCrnpErr.html               |   98 
 src/main/webapp/views/admin/basCrnpOpt/basCrnpOpt.html               |  174 
 src/main/java/com/zy/core/enums/CrnForkPosType.java                  |   43 
 src/main/webapp/views/admin/basCrnpOpt/basCrnpOpt_detail.html        |  142 
 src/main/java/com/zy/common/CodeBuilder.java                         |    4 
 src/main/java/com/zy/core/enums/CrnModeType.java                     |   42 
 src/main/java/com/zy/core/ServerBootstrap.java                       |  195 
 src/main/webapp/views/admin/basCrnpErrLog/basCrnpErrLog_detail.html  |  202 +
 src/main/java/com/zy/asrs/entity/BasCrnpErr.java                     |  133 
 src/main/resources/mapper/BasCrnpErrLogMapper.xml                    |   31 
 src/main/webapp/views/admin/basCrnpErrLog/basCrnpErrLog.html         |  234 +
 src/main/java/com/zy/core/thread/impl/NyShuttleThread.java           | 1394 -------
 src/main/webapp/views/console.html                                   | 1031 +++--
 src/main/java/com/zy/asrs/controller/BasMapController.java           |   43 
 src/main/java/com/zy/asrs/controller/BasCrnpErrController.java       |  125 
 src/main/resources/mapper/BasCrnpMapper.xml                          |   20 
 src/main/java/com/zy/asrs/service/BasCrnpOptService.java             |    8 
 src/main/java/com/zy/asrs/controller/BasCrnpController.java          |  125 
 src/main/java/com/zy/asrs/entity/BasCrnpErrLog.java                  |  311 +
 src/main/java/com/zy/asrs/service/impl/BasCrnpErrLogServiceImpl.java |   12 
 src/main/java/com/zy/core/task/DeviceLogScheduler.java               |   69 
 src/main/java/com/zy/core/enums/SlaveType.java                       |   11 
 src/main/java/com/zy/asrs/controller/BasCrnpOptController.java       |  125 
 src/main/java/com/zy/core/MainProcess.java                           |   92 
 src/main/resources/mapper/BasCrnpErrMapper.xml                       |   17 
 src/main/webapp/static/css/console_vue.css                           |  247 +
 src/main/java/com/zy/asrs/service/BasCrnpErrService.java             |    8 
 src/main/java/com/zy/asrs/controller/OpenController.java             |  230 
 src/main/java/com/zy/asrs/service/impl/BasCrnpErrServiceImpl.java    |   12 
 src/main/java/com/zy/asrs/ws/ConsoleWebSocket.java                   |   43 
 src/main/java/com/zy/asrs/service/BasCrnpErrLogService.java          |    8 
 src/main/java/com/zy/core/enums/CrnLiftPosType.java                  |   44 
 src/main/java/com/zy/asrs/mapper/BasCrnpErrMapper.java               |   12 
 /dev/null                                                            |  460 --
 src/main/java/com/zy/asrs/mapper/BasCrnpOptMapper.java               |   12 
 src/main/webapp/static/js/basCrnp/basCrnp.js                         |  264 +
 src/main/webapp/views/admin/basCrnpErr/basCrnpErr_detail.html        |  102 
 src/main/java/com/zy/asrs/controller/ConsoleController.java          |  224 -
 src/main/java/com/zy/core/enums/CrnStatusType.java                   |   52 
 src/main/java/com/zy/asrs/mapper/BasCrnpMapper.java                  |   12 
 src/main/java/com/zy/core/enums/RedisKeyType.java                    |   52 
 src/main/resources/application.yml                                   |    7 
 65 files changed, 5,440 insertions(+), 5,605 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/BasCrnpController.java b/src/main/java/com/zy/asrs/controller/BasCrnpController.java
new file mode 100644
index 0000000..f5328fc
--- /dev/null
+++ b/src/main/java/com/zy/asrs/controller/BasCrnpController.java
@@ -0,0 +1,125 @@
+package com.zy.asrs.controller;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.mapper.Wrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.core.common.DateUtils;
+import com.zy.asrs.entity.BasCrnp;
+import com.zy.asrs.service.BasCrnpService;
+import com.core.annotations.ManagerAuth;
+import com.core.common.BaseRes;
+import com.core.common.Cools;
+import com.core.common.R;
+import com.zy.common.web.BaseController;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.*;
+
+@RestController
+public class BasCrnpController extends BaseController {
+
+    @Autowired
+    private BasCrnpService basCrnpService;
+
+    @RequestMapping(value = "/basCrnp/{id}/auth")
+    @ManagerAuth
+    public R get(@PathVariable("id") String id) {
+        return R.ok(basCrnpService.selectById(String.valueOf(id)));
+    }
+
+    @RequestMapping(value = "/basCrnp/list/auth")
+    @ManagerAuth
+    public R list(@RequestParam(defaultValue = "1")Integer curr,
+                  @RequestParam(defaultValue = "10")Integer limit,
+                  @RequestParam(required = false)String orderByField,
+                  @RequestParam(required = false)String orderByType,
+                  @RequestParam(required = false)String condition,
+                  @RequestParam Map<String, Object> param){
+        EntityWrapper<BasCrnp> wrapper = new EntityWrapper<>();
+        excludeTrash(param);
+        convert(param, wrapper);
+        allLike(BasCrnp.class, param.keySet(), wrapper, condition);
+        if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));}
+        return R.ok(basCrnpService.selectPage(new Page<>(curr, limit), wrapper));
+    }
+
+    private <T> void convert(Map<String, Object> map, EntityWrapper<T> wrapper){
+        for (Map.Entry<String, Object> entry : map.entrySet()){
+            String val = String.valueOf(entry.getValue());
+            if (val.contains(RANGE_TIME_LINK)){
+                String[] dates = val.split(RANGE_TIME_LINK);
+                wrapper.ge(entry.getKey(), DateUtils.convert(dates[0]));
+                wrapper.le(entry.getKey(), DateUtils.convert(dates[1]));
+            } else {
+                wrapper.like(entry.getKey(), val);
+            }
+        }
+    }
+
+    @RequestMapping(value = "/basCrnp/add/auth")
+    @ManagerAuth
+    public R add(BasCrnp basCrnp) {
+        basCrnpService.insert(basCrnp);
+        return R.ok();
+    }
+
+	@RequestMapping(value = "/basCrnp/update/auth")
+	@ManagerAuth
+    public R update(BasCrnp basCrnp){
+        if (Cools.isEmpty(basCrnp) || null==basCrnp.getCrnNo()){
+            return R.error();
+        }
+        basCrnpService.updateById(basCrnp);
+        return R.ok();
+    }
+
+    @RequestMapping(value = "/basCrnp/delete/auth")
+    @ManagerAuth
+    public R delete(@RequestParam(value="ids[]") Integer[] ids){
+         for (Integer id : ids){
+            basCrnpService.deleteById(id);
+        }
+        return R.ok();
+    }
+
+    @RequestMapping(value = "/basCrnp/export/auth")
+    @ManagerAuth
+    public R export(@RequestBody JSONObject param){
+        EntityWrapper<BasCrnp> wrapper = new EntityWrapper<>();
+        List<String> fields = JSONObject.parseArray(param.getJSONArray("fields").toJSONString(), String.class);
+        Map<String, Object> map = excludeTrash(param.getJSONObject("basCrnp"));
+        convert(map, wrapper);
+        List<BasCrnp> list = basCrnpService.selectList(wrapper);
+        return R.ok(exportSupport(list, fields));
+    }
+
+    @RequestMapping(value = "/basCrnpQuery/auth")
+    @ManagerAuth
+    public R query(String condition) {
+        EntityWrapper<BasCrnp> wrapper = new EntityWrapper<>();
+        wrapper.like("crn_no", condition);
+        Page<BasCrnp> page = basCrnpService.selectPage(new Page<>(0, 10), wrapper);
+        List<Map<String, Object>> result = new ArrayList<>();
+        for (BasCrnp basCrnp : page.getRecords()){
+            Map<String, Object> map = new HashMap<>();
+            map.put("id", basCrnp.getCrnNo());
+            map.put("value", basCrnp.getCrnNo());
+            result.add(map);
+        }
+        return R.ok(result);
+    }
+
+    @RequestMapping(value = "/basCrnp/check/column/auth")
+    @ManagerAuth
+    public R query(@RequestBody JSONObject param) {
+        Wrapper<BasCrnp> wrapper = new EntityWrapper<BasCrnp>().eq(humpToLine(String.valueOf(param.get("key"))), param.get("val"));
+        if (null != basCrnpService.selectOne(wrapper)){
+            return R.parse(BaseRes.REPEAT).add(getComment(BasCrnp.class, String.valueOf(param.get("key"))));
+        }
+        return R.ok();
+    }
+
+}
diff --git a/src/main/java/com/zy/asrs/controller/BasCrnpErrController.java b/src/main/java/com/zy/asrs/controller/BasCrnpErrController.java
new file mode 100644
index 0000000..04690e5
--- /dev/null
+++ b/src/main/java/com/zy/asrs/controller/BasCrnpErrController.java
@@ -0,0 +1,125 @@
+package com.zy.asrs.controller;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.mapper.Wrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.core.common.DateUtils;
+import com.zy.asrs.entity.BasCrnpErr;
+import com.zy.asrs.service.BasCrnpErrService;
+import com.core.annotations.ManagerAuth;
+import com.core.common.BaseRes;
+import com.core.common.Cools;
+import com.core.common.R;
+import com.zy.common.web.BaseController;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.*;
+
+@RestController
+public class BasCrnpErrController extends BaseController {
+
+    @Autowired
+    private BasCrnpErrService basCrnpErrService;
+
+    @RequestMapping(value = "/basCrnpErr/{id}/auth")
+    @ManagerAuth
+    public R get(@PathVariable("id") String id) {
+        return R.ok(basCrnpErrService.selectById(String.valueOf(id)));
+    }
+
+    @RequestMapping(value = "/basCrnpErr/list/auth")
+    @ManagerAuth
+    public R list(@RequestParam(defaultValue = "1")Integer curr,
+                  @RequestParam(defaultValue = "10")Integer limit,
+                  @RequestParam(required = false)String orderByField,
+                  @RequestParam(required = false)String orderByType,
+                  @RequestParam(required = false)String condition,
+                  @RequestParam Map<String, Object> param){
+        EntityWrapper<BasCrnpErr> wrapper = new EntityWrapper<>();
+        excludeTrash(param);
+        convert(param, wrapper);
+        allLike(BasCrnpErr.class, param.keySet(), wrapper, condition);
+        if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));}
+        return R.ok(basCrnpErrService.selectPage(new Page<>(curr, limit), wrapper));
+    }
+
+    private <T> void convert(Map<String, Object> map, EntityWrapper<T> wrapper){
+        for (Map.Entry<String, Object> entry : map.entrySet()){
+            String val = String.valueOf(entry.getValue());
+            if (val.contains(RANGE_TIME_LINK)){
+                String[] dates = val.split(RANGE_TIME_LINK);
+                wrapper.ge(entry.getKey(), DateUtils.convert(dates[0]));
+                wrapper.le(entry.getKey(), DateUtils.convert(dates[1]));
+            } else {
+                wrapper.like(entry.getKey(), val);
+            }
+        }
+    }
+
+    @RequestMapping(value = "/basCrnpErr/add/auth")
+    @ManagerAuth
+    public R add(BasCrnpErr basCrnpErr) {
+        basCrnpErrService.insert(basCrnpErr);
+        return R.ok();
+    }
+
+	@RequestMapping(value = "/basCrnpErr/update/auth")
+	@ManagerAuth
+    public R update(BasCrnpErr basCrnpErr){
+        if (Cools.isEmpty(basCrnpErr) || null==basCrnpErr.getId()){
+            return R.error();
+        }
+        basCrnpErrService.updateById(basCrnpErr);
+        return R.ok();
+    }
+
+    @RequestMapping(value = "/basCrnpErr/delete/auth")
+    @ManagerAuth
+    public R delete(@RequestParam(value="ids[]") Integer[] ids){
+         for (Integer id : ids){
+            basCrnpErrService.deleteById(id);
+        }
+        return R.ok();
+    }
+
+    @RequestMapping(value = "/basCrnpErr/export/auth")
+    @ManagerAuth
+    public R export(@RequestBody JSONObject param){
+        EntityWrapper<BasCrnpErr> wrapper = new EntityWrapper<>();
+        List<String> fields = JSONObject.parseArray(param.getJSONArray("fields").toJSONString(), String.class);
+        Map<String, Object> map = excludeTrash(param.getJSONObject("basCrnpErr"));
+        convert(map, wrapper);
+        List<BasCrnpErr> list = basCrnpErrService.selectList(wrapper);
+        return R.ok(exportSupport(list, fields));
+    }
+
+    @RequestMapping(value = "/basCrnpErrQuery/auth")
+    @ManagerAuth
+    public R query(String condition) {
+        EntityWrapper<BasCrnpErr> wrapper = new EntityWrapper<>();
+        wrapper.like("id", condition);
+        Page<BasCrnpErr> page = basCrnpErrService.selectPage(new Page<>(0, 10), wrapper);
+        List<Map<String, Object>> result = new ArrayList<>();
+        for (BasCrnpErr basCrnpErr : page.getRecords()){
+            Map<String, Object> map = new HashMap<>();
+            map.put("id", basCrnpErr.getId());
+            map.put("value", basCrnpErr.getId());
+            result.add(map);
+        }
+        return R.ok(result);
+    }
+
+    @RequestMapping(value = "/basCrnpErr/check/column/auth")
+    @ManagerAuth
+    public R query(@RequestBody JSONObject param) {
+        Wrapper<BasCrnpErr> wrapper = new EntityWrapper<BasCrnpErr>().eq(humpToLine(String.valueOf(param.get("key"))), param.get("val"));
+        if (null != basCrnpErrService.selectOne(wrapper)){
+            return R.parse(BaseRes.REPEAT).add(getComment(BasCrnpErr.class, String.valueOf(param.get("key"))));
+        }
+        return R.ok();
+    }
+
+}
diff --git a/src/main/java/com/zy/asrs/controller/BasCrnpErrLogController.java b/src/main/java/com/zy/asrs/controller/BasCrnpErrLogController.java
new file mode 100644
index 0000000..24349d3
--- /dev/null
+++ b/src/main/java/com/zy/asrs/controller/BasCrnpErrLogController.java
@@ -0,0 +1,125 @@
+package com.zy.asrs.controller;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.mapper.Wrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.core.common.DateUtils;
+import com.zy.asrs.entity.BasCrnpErrLog;
+import com.zy.asrs.service.BasCrnpErrLogService;
+import com.core.annotations.ManagerAuth;
+import com.core.common.BaseRes;
+import com.core.common.Cools;
+import com.core.common.R;
+import com.zy.common.web.BaseController;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.*;
+
+@RestController
+public class BasCrnpErrLogController extends BaseController {
+
+    @Autowired
+    private BasCrnpErrLogService basCrnpErrLogService;
+
+    @RequestMapping(value = "/basCrnpErrLog/{id}/auth")
+    @ManagerAuth
+    public R get(@PathVariable("id") String id) {
+        return R.ok(basCrnpErrLogService.selectById(String.valueOf(id)));
+    }
+
+    @RequestMapping(value = "/basCrnpErrLog/list/auth")
+    @ManagerAuth
+    public R list(@RequestParam(defaultValue = "1")Integer curr,
+                  @RequestParam(defaultValue = "10")Integer limit,
+                  @RequestParam(required = false)String orderByField,
+                  @RequestParam(required = false)String orderByType,
+                  @RequestParam(required = false)String condition,
+                  @RequestParam Map<String, Object> param){
+        EntityWrapper<BasCrnpErrLog> wrapper = new EntityWrapper<>();
+        excludeTrash(param);
+        convert(param, wrapper);
+        allLike(BasCrnpErrLog.class, param.keySet(), wrapper, condition);
+        if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));}
+        return R.ok(basCrnpErrLogService.selectPage(new Page<>(curr, limit), wrapper));
+    }
+
+    private <T> void convert(Map<String, Object> map, EntityWrapper<T> wrapper){
+        for (Map.Entry<String, Object> entry : map.entrySet()){
+            String val = String.valueOf(entry.getValue());
+            if (val.contains(RANGE_TIME_LINK)){
+                String[] dates = val.split(RANGE_TIME_LINK);
+                wrapper.ge(entry.getKey(), DateUtils.convert(dates[0]));
+                wrapper.le(entry.getKey(), DateUtils.convert(dates[1]));
+            } else {
+                wrapper.like(entry.getKey(), val);
+            }
+        }
+    }
+
+    @RequestMapping(value = "/basCrnpErrLog/add/auth")
+    @ManagerAuth
+    public R add(BasCrnpErrLog basCrnpErrLog) {
+        basCrnpErrLogService.insert(basCrnpErrLog);
+        return R.ok();
+    }
+
+	@RequestMapping(value = "/basCrnpErrLog/update/auth")
+	@ManagerAuth
+    public R update(BasCrnpErrLog basCrnpErrLog){
+        if (Cools.isEmpty(basCrnpErrLog) || null==basCrnpErrLog.getId()){
+            return R.error();
+        }
+        basCrnpErrLogService.updateById(basCrnpErrLog);
+        return R.ok();
+    }
+
+    @RequestMapping(value = "/basCrnpErrLog/delete/auth")
+    @ManagerAuth
+    public R delete(@RequestParam(value="ids[]") Integer[] ids){
+         for (Integer id : ids){
+            basCrnpErrLogService.deleteById(id);
+        }
+        return R.ok();
+    }
+
+    @RequestMapping(value = "/basCrnpErrLog/export/auth")
+    @ManagerAuth
+    public R export(@RequestBody JSONObject param){
+        EntityWrapper<BasCrnpErrLog> wrapper = new EntityWrapper<>();
+        List<String> fields = JSONObject.parseArray(param.getJSONArray("fields").toJSONString(), String.class);
+        Map<String, Object> map = excludeTrash(param.getJSONObject("basCrnpErrLog"));
+        convert(map, wrapper);
+        List<BasCrnpErrLog> list = basCrnpErrLogService.selectList(wrapper);
+        return R.ok(exportSupport(list, fields));
+    }
+
+    @RequestMapping(value = "/basCrnpErrLogQuery/auth")
+    @ManagerAuth
+    public R query(String condition) {
+        EntityWrapper<BasCrnpErrLog> wrapper = new EntityWrapper<>();
+        wrapper.like("id", condition);
+        Page<BasCrnpErrLog> page = basCrnpErrLogService.selectPage(new Page<>(0, 10), wrapper);
+        List<Map<String, Object>> result = new ArrayList<>();
+        for (BasCrnpErrLog basCrnpErrLog : page.getRecords()){
+            Map<String, Object> map = new HashMap<>();
+            map.put("id", basCrnpErrLog.getId());
+            map.put("value", basCrnpErrLog.getId());
+            result.add(map);
+        }
+        return R.ok(result);
+    }
+
+    @RequestMapping(value = "/basCrnpErrLog/check/column/auth")
+    @ManagerAuth
+    public R query(@RequestBody JSONObject param) {
+        Wrapper<BasCrnpErrLog> wrapper = new EntityWrapper<BasCrnpErrLog>().eq(humpToLine(String.valueOf(param.get("key"))), param.get("val"));
+        if (null != basCrnpErrLogService.selectOne(wrapper)){
+            return R.parse(BaseRes.REPEAT).add(getComment(BasCrnpErrLog.class, String.valueOf(param.get("key"))));
+        }
+        return R.ok();
+    }
+
+}
diff --git a/src/main/java/com/zy/asrs/controller/BasCrnpOptController.java b/src/main/java/com/zy/asrs/controller/BasCrnpOptController.java
new file mode 100644
index 0000000..be40340
--- /dev/null
+++ b/src/main/java/com/zy/asrs/controller/BasCrnpOptController.java
@@ -0,0 +1,125 @@
+package com.zy.asrs.controller;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.mapper.Wrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.core.common.DateUtils;
+import com.zy.asrs.entity.BasCrnpOpt;
+import com.zy.asrs.service.BasCrnpOptService;
+import com.core.annotations.ManagerAuth;
+import com.core.common.BaseRes;
+import com.core.common.Cools;
+import com.core.common.R;
+import com.zy.common.web.BaseController;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.*;
+
+@RestController
+public class BasCrnpOptController extends BaseController {
+
+    @Autowired
+    private BasCrnpOptService basCrnpOptService;
+
+    @RequestMapping(value = "/basCrnpOpt/{id}/auth")
+    @ManagerAuth
+    public R get(@PathVariable("id") String id) {
+        return R.ok(basCrnpOptService.selectById(String.valueOf(id)));
+    }
+
+    @RequestMapping(value = "/basCrnpOpt/list/auth")
+    @ManagerAuth
+    public R list(@RequestParam(defaultValue = "1")Integer curr,
+                  @RequestParam(defaultValue = "10")Integer limit,
+                  @RequestParam(required = false)String orderByField,
+                  @RequestParam(required = false)String orderByType,
+                  @RequestParam(required = false)String condition,
+                  @RequestParam Map<String, Object> param){
+        EntityWrapper<BasCrnpOpt> wrapper = new EntityWrapper<>();
+        excludeTrash(param);
+        convert(param, wrapper);
+        allLike(BasCrnpOpt.class, param.keySet(), wrapper, condition);
+        if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));}
+        return R.ok(basCrnpOptService.selectPage(new Page<>(curr, limit), wrapper));
+    }
+
+    private <T> void convert(Map<String, Object> map, EntityWrapper<T> wrapper){
+        for (Map.Entry<String, Object> entry : map.entrySet()){
+            String val = String.valueOf(entry.getValue());
+            if (val.contains(RANGE_TIME_LINK)){
+                String[] dates = val.split(RANGE_TIME_LINK);
+                wrapper.ge(entry.getKey(), DateUtils.convert(dates[0]));
+                wrapper.le(entry.getKey(), DateUtils.convert(dates[1]));
+            } else {
+                wrapper.like(entry.getKey(), val);
+            }
+        }
+    }
+
+    @RequestMapping(value = "/basCrnpOpt/add/auth")
+    @ManagerAuth
+    public R add(BasCrnpOpt basCrnpOpt) {
+        basCrnpOptService.insert(basCrnpOpt);
+        return R.ok();
+    }
+
+	@RequestMapping(value = "/basCrnpOpt/update/auth")
+	@ManagerAuth
+    public R update(BasCrnpOpt basCrnpOpt){
+        if (Cools.isEmpty(basCrnpOpt) || null==basCrnpOpt.getId()){
+            return R.error();
+        }
+        basCrnpOptService.updateById(basCrnpOpt);
+        return R.ok();
+    }
+
+    @RequestMapping(value = "/basCrnpOpt/delete/auth")
+    @ManagerAuth
+    public R delete(@RequestParam(value="ids[]") Integer[] ids){
+        for (Integer id : ids) {
+            basCrnpOptService.deleteById(id);
+        }
+        return R.ok();
+    }
+
+    @RequestMapping(value = "/basCrnpOpt/export/auth")
+    @ManagerAuth
+    public R export(@RequestBody JSONObject param){
+        EntityWrapper<BasCrnpOpt> wrapper = new EntityWrapper<>();
+        List<String> fields = JSONObject.parseArray(param.getJSONArray("fields").toJSONString(), String.class);
+        Map<String, Object> map = excludeTrash(param.getJSONObject("basCrnpOpt"));
+        convert(map, wrapper);
+        List<BasCrnpOpt> list = basCrnpOptService.selectList(wrapper);
+        return R.ok(exportSupport(list, fields));
+    }
+
+    @RequestMapping(value = "/basCrnpOptQuery/auth")
+    @ManagerAuth
+    public R query(String condition) {
+        EntityWrapper<BasCrnpOpt> wrapper = new EntityWrapper<>();
+        wrapper.like("id", condition);
+        Page<BasCrnpOpt> page = basCrnpOptService.selectPage(new Page<>(0, 10), wrapper);
+        List<Map<String, Object>> result = new ArrayList<>();
+        for (BasCrnpOpt basCrnpOpt : page.getRecords()){
+            Map<String, Object> map = new HashMap<>();
+            map.put("id", basCrnpOpt.getId());
+            map.put("value", basCrnpOpt.getId());
+            result.add(map);
+        }
+        return R.ok(result);
+    }
+
+    @RequestMapping(value = "/basCrnpOpt/check/column/auth")
+    @ManagerAuth
+    public R query(@RequestBody JSONObject param) {
+        Wrapper<BasCrnpOpt> wrapper = new EntityWrapper<BasCrnpOpt>().eq(humpToLine(String.valueOf(param.get("key"))), param.get("val"));
+        if (null != basCrnpOptService.selectOne(wrapper)){
+            return R.parse(BaseRes.REPEAT).add(getComment(BasCrnpOpt.class, String.valueOf(param.get("key"))));
+        }
+        return R.ok();
+    }
+
+}
diff --git a/src/main/java/com/zy/asrs/controller/BasLiftController.java b/src/main/java/com/zy/asrs/controller/BasLiftController.java
deleted file mode 100644
index d103c38..0000000
--- a/src/main/java/com/zy/asrs/controller/BasLiftController.java
+++ /dev/null
@@ -1,127 +0,0 @@
-package com.zy.asrs.controller;
-
-import com.alibaba.fastjson.JSONObject;
-import com.baomidou.mybatisplus.mapper.EntityWrapper;
-import com.baomidou.mybatisplus.mapper.Wrapper;
-import com.baomidou.mybatisplus.plugins.Page;
-import com.core.annotations.ManagerAuth;
-import com.core.common.BaseRes;
-import com.core.common.Cools;
-import com.core.common.DateUtils;
-import com.core.common.R;
-import com.zy.asrs.entity.BasLift;
-import com.zy.asrs.service.BasLiftService;
-import com.zy.common.web.BaseController;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.*;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-@RestController
-public class BasLiftController extends BaseController {
-
-    @Autowired
-    private BasLiftService basLiftService;
-
-    @RequestMapping(value = "/basLift/{id}/auth")
-    @ManagerAuth
-    public R get(@PathVariable("id") String id) {
-        return R.ok(basLiftService.selectById(String.valueOf(id)));
-    }
-
-    @RequestMapping(value = "/basLift/list/auth")
-    @ManagerAuth
-    public R list(@RequestParam(defaultValue = "1")Integer curr,
-                  @RequestParam(defaultValue = "10")Integer limit,
-                  @RequestParam(required = false)String orderByField,
-                  @RequestParam(required = false)String orderByType,
-                  @RequestParam(required = false)String condition,
-                  @RequestParam Map<String, Object> param){
-        EntityWrapper<BasLift> wrapper = new EntityWrapper<>();
-        excludeTrash(param);
-        convert(param, wrapper);
-        allLike(BasLift.class, param.keySet(), wrapper, condition);
-        if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));}
-        return R.ok(basLiftService.selectPage(new Page<>(curr, limit), wrapper));
-    }
-
-    private <T> void convert(Map<String, Object> map, EntityWrapper<T> wrapper){
-        for (Map.Entry<String, Object> entry : map.entrySet()){
-            String val = String.valueOf(entry.getValue());
-            if (val.contains(RANGE_TIME_LINK)){
-                String[] dates = val.split(RANGE_TIME_LINK);
-                wrapper.ge(entry.getKey(), DateUtils.convert(dates[0]));
-                wrapper.le(entry.getKey(), DateUtils.convert(dates[1]));
-            } else {
-                wrapper.like(entry.getKey(), val);
-            }
-        }
-    }
-
-    @RequestMapping(value = "/basLift/add/auth")
-    @ManagerAuth
-    public R add(BasLift basLift) {
-        basLiftService.insert(basLift);
-        return R.ok();
-    }
-
-	@RequestMapping(value = "/basLift/update/auth")
-	@ManagerAuth
-    public R update(BasLift basLift){
-        if (Cools.isEmpty(basLift) || null==basLift.getLiftNo()){
-            return R.error();
-        }
-        basLiftService.updateById(basLift);
-        return R.ok();
-    }
-
-    @RequestMapping(value = "/basLift/delete/auth")
-    @ManagerAuth
-    public R delete(@RequestParam(value="ids[]") Long[] ids){
-         for (Long id : ids){
-             basLiftService.delete(new EntityWrapper<BasLift>().eq("lift_no", id));
-        }
-        return R.ok();
-    }
-
-    @RequestMapping(value = "/basLift/export/auth")
-    @ManagerAuth
-    public R export(@RequestBody JSONObject param){
-        EntityWrapper<BasLift> wrapper = new EntityWrapper<>();
-        List<String> fields = JSONObject.parseArray(param.getJSONArray("fields").toJSONString(), String.class);
-        Map<String, Object> map = excludeTrash(param.getJSONObject("basLift"));
-        convert(map, wrapper);
-        List<BasLift> list = basLiftService.selectList(wrapper);
-        return R.ok(exportSupport(list, fields));
-    }
-
-    @RequestMapping(value = "/basLiftQuery/auth")
-    @ManagerAuth
-    public R query(String condition) {
-        EntityWrapper<BasLift> wrapper = new EntityWrapper<>();
-        wrapper.like("lift_no", condition);
-        Page<BasLift> page = basLiftService.selectPage(new Page<>(0, 10), wrapper);
-        List<Map<String, Object>> result = new ArrayList<>();
-        for (BasLift basLift : page.getRecords()){
-            Map<String, Object> map = new HashMap<>();
-            map.put("id", basLift.getLiftNo());
-            map.put("value", basLift.getLiftNo());
-            result.add(map);
-        }
-        return R.ok(result);
-    }
-
-    @RequestMapping(value = "/basLift/check/column/auth")
-    @ManagerAuth
-    public R query(@RequestBody JSONObject param) {
-        Wrapper<BasLift> wrapper = new EntityWrapper<BasLift>().eq(humpToLine(String.valueOf(param.get("key"))), param.get("val"));
-        if (null != basLiftService.selectOne(wrapper)){
-            return R.parse(BaseRes.REPEAT).add(getComment(BasLift.class, String.valueOf(param.get("key"))));
-        }
-        return R.ok();
-    }
-
-}
diff --git a/src/main/java/com/zy/asrs/controller/BasLiftErrController.java b/src/main/java/com/zy/asrs/controller/BasLiftErrController.java
deleted file mode 100644
index a8b67e3..0000000
--- a/src/main/java/com/zy/asrs/controller/BasLiftErrController.java
+++ /dev/null
@@ -1,127 +0,0 @@
-package com.zy.asrs.controller;
-
-import com.alibaba.fastjson.JSONObject;
-import com.baomidou.mybatisplus.mapper.EntityWrapper;
-import com.baomidou.mybatisplus.mapper.Wrapper;
-import com.baomidou.mybatisplus.plugins.Page;
-import com.core.annotations.ManagerAuth;
-import com.core.common.BaseRes;
-import com.core.common.Cools;
-import com.core.common.DateUtils;
-import com.core.common.R;
-import com.zy.asrs.entity.BasLiftErr;
-import com.zy.asrs.service.BasLiftErrService;
-import com.zy.common.web.BaseController;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.*;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-@RestController
-public class BasLiftErrController extends BaseController {
-
-    @Autowired
-    private BasLiftErrService basLiftErrService;
-
-    @RequestMapping(value = "/basLiftErr/{id}/auth")
-    @ManagerAuth
-    public R get(@PathVariable("id") String id) {
-        return R.ok(basLiftErrService.selectById(String.valueOf(id)));
-    }
-
-    @RequestMapping(value = "/basLiftErr/list/auth")
-    @ManagerAuth
-    public R list(@RequestParam(defaultValue = "1")Integer curr,
-                  @RequestParam(defaultValue = "10")Integer limit,
-                  @RequestParam(required = false)String orderByField,
-                  @RequestParam(required = false)String orderByType,
-                  @RequestParam(required = false)String condition,
-                  @RequestParam Map<String, Object> param){
-        EntityWrapper<BasLiftErr> wrapper = new EntityWrapper<>();
-        excludeTrash(param);
-        convert(param, wrapper);
-        allLike(BasLiftErr.class, param.keySet(), wrapper, condition);
-        if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));}
-        return R.ok(basLiftErrService.selectPage(new Page<>(curr, limit), wrapper));
-    }
-
-    private <T> void convert(Map<String, Object> map, EntityWrapper<T> wrapper){
-        for (Map.Entry<String, Object> entry : map.entrySet()){
-            String val = String.valueOf(entry.getValue());
-            if (val.contains(RANGE_TIME_LINK)){
-                String[] dates = val.split(RANGE_TIME_LINK);
-                wrapper.ge(entry.getKey(), DateUtils.convert(dates[0]));
-                wrapper.le(entry.getKey(), DateUtils.convert(dates[1]));
-            } else {
-                wrapper.like(entry.getKey(), val);
-            }
-        }
-    }
-
-    @RequestMapping(value = "/basLiftErr/add/auth")
-    @ManagerAuth
-    public R add(BasLiftErr basLiftErr) {
-        basLiftErrService.insert(basLiftErr);
-        return R.ok();
-    }
-
-	@RequestMapping(value = "/basLiftErr/update/auth")
-	@ManagerAuth
-    public R update(BasLiftErr basLiftErr){
-        if (Cools.isEmpty(basLiftErr) || null==basLiftErr.getErrorCode()){
-            return R.error();
-        }
-        basLiftErrService.updateById(basLiftErr);
-        return R.ok();
-    }
-
-    @RequestMapping(value = "/basLiftErr/delete/auth")
-    @ManagerAuth
-    public R delete(@RequestParam(value="ids[]") Long[] ids){
-         for (Long id : ids){
-            basLiftErrService.deleteById(id);
-        }
-        return R.ok();
-    }
-
-    @RequestMapping(value = "/basLiftErr/export/auth")
-    @ManagerAuth
-    public R export(@RequestBody JSONObject param){
-        EntityWrapper<BasLiftErr> wrapper = new EntityWrapper<>();
-        List<String> fields = JSONObject.parseArray(param.getJSONArray("fields").toJSONString(), String.class);
-        Map<String, Object> map = excludeTrash(param.getJSONObject("basLiftErr"));
-        convert(map, wrapper);
-        List<BasLiftErr> list = basLiftErrService.selectList(wrapper);
-        return R.ok(exportSupport(list, fields));
-    }
-
-    @RequestMapping(value = "/basLiftErrQuery/auth")
-    @ManagerAuth
-    public R query(String condition) {
-        EntityWrapper<BasLiftErr> wrapper = new EntityWrapper<>();
-        wrapper.like("id", condition);
-        Page<BasLiftErr> page = basLiftErrService.selectPage(new Page<>(0, 10), wrapper);
-        List<Map<String, Object>> result = new ArrayList<>();
-        for (BasLiftErr basLiftErr : page.getRecords()){
-            Map<String, Object> map = new HashMap<>();
-            map.put("id", basLiftErr.getErrorCode());
-            map.put("value", basLiftErr.getErrorCode());
-            result.add(map);
-        }
-        return R.ok(result);
-    }
-
-    @RequestMapping(value = "/basLiftErr/check/column/auth")
-    @ManagerAuth
-    public R query(@RequestBody JSONObject param) {
-        Wrapper<BasLiftErr> wrapper = new EntityWrapper<BasLiftErr>().eq(humpToLine(String.valueOf(param.get("key"))), param.get("val"));
-        if (null != basLiftErrService.selectOne(wrapper)){
-            return R.parse(BaseRes.REPEAT).add(getComment(BasLiftErr.class, String.valueOf(param.get("key"))));
-        }
-        return R.ok();
-    }
-
-}
diff --git a/src/main/java/com/zy/asrs/controller/BasLiftErrLogController.java b/src/main/java/com/zy/asrs/controller/BasLiftErrLogController.java
deleted file mode 100644
index 83b79e6..0000000
--- a/src/main/java/com/zy/asrs/controller/BasLiftErrLogController.java
+++ /dev/null
@@ -1,128 +0,0 @@
-package com.zy.asrs.controller;
-
-import com.alibaba.fastjson.JSONObject;
-import com.baomidou.mybatisplus.mapper.EntityWrapper;
-import com.baomidou.mybatisplus.mapper.Wrapper;
-import com.baomidou.mybatisplus.plugins.Page;
-import com.core.annotations.ManagerAuth;
-import com.core.common.BaseRes;
-import com.core.common.Cools;
-import com.core.common.DateUtils;
-import com.core.common.R;
-import com.zy.asrs.entity.BasLiftErrLog;
-import com.zy.asrs.service.BasLiftErrLogService;
-import com.zy.common.web.BaseController;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.*;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-@RestController
-public class BasLiftErrLogController extends BaseController {
-
-    @Autowired
-    private BasLiftErrLogService basLiftErrLogService;
-
-    @RequestMapping(value = "/basLiftErrLog/{id}/auth")
-    @ManagerAuth
-    public R get(@PathVariable("id") String id) {
-        return R.ok(basLiftErrLogService.selectById(String.valueOf(id)));
-    }
-
-    @RequestMapping(value = "/basLiftErrLog/list/auth")
-    @ManagerAuth
-    public R list(@RequestParam(defaultValue = "1")Integer curr,
-                  @RequestParam(defaultValue = "10")Integer limit,
-                  @RequestParam(required = false)String orderByField,
-                  @RequestParam(required = false)String orderByType,
-                  @RequestParam(required = false)String condition,
-                  @RequestParam Map<String, Object> param){
-        EntityWrapper<BasLiftErrLog> wrapper = new EntityWrapper<>();
-        excludeTrash(param);
-        convert(param, wrapper);
-        allLike(BasLiftErrLog.class, param.keySet(), wrapper, condition);
-        wrapper.orderBy("create_time", false);
-        if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));}
-        return R.ok(basLiftErrLogService.selectPage(new Page<>(curr, limit), wrapper));
-    }
-
-    private <T> void convert(Map<String, Object> map, EntityWrapper<T> wrapper){
-        for (Map.Entry<String, Object> entry : map.entrySet()){
-            String val = String.valueOf(entry.getValue());
-            if (val.contains(RANGE_TIME_LINK)){
-                String[] dates = val.split(RANGE_TIME_LINK);
-                wrapper.ge(entry.getKey(), DateUtils.convert(dates[0]));
-                wrapper.le(entry.getKey(), DateUtils.convert(dates[1]));
-            } else {
-                wrapper.like(entry.getKey(), val);
-            }
-        }
-    }
-
-    @RequestMapping(value = "/basLiftErrLog/add/auth")
-    @ManagerAuth
-    public R add(BasLiftErrLog basLiftErrLog) {
-        basLiftErrLogService.insert(basLiftErrLog);
-        return R.ok();
-    }
-
-	@RequestMapping(value = "/basLiftErrLog/update/auth")
-	@ManagerAuth
-    public R update(BasLiftErrLog basLiftErrLog){
-        if (Cools.isEmpty(basLiftErrLog) || null==basLiftErrLog.getId()){
-            return R.error();
-        }
-        basLiftErrLogService.updateById(basLiftErrLog);
-        return R.ok();
-    }
-
-    @RequestMapping(value = "/basLiftErrLog/delete/auth")
-    @ManagerAuth
-    public R delete(@RequestParam(value="ids[]") Long[] ids){
-         for (Long id : ids){
-            basLiftErrLogService.deleteById(id);
-        }
-        return R.ok();
-    }
-
-    @RequestMapping(value = "/basLiftErrLog/export/auth")
-    @ManagerAuth
-    public R export(@RequestBody JSONObject param){
-        EntityWrapper<BasLiftErrLog> wrapper = new EntityWrapper<>();
-        List<String> fields = JSONObject.parseArray(param.getJSONArray("fields").toJSONString(), String.class);
-        Map<String, Object> map = excludeTrash(param.getJSONObject("basLiftErrLog"));
-        convert(map, wrapper);
-        List<BasLiftErrLog> list = basLiftErrLogService.selectList(wrapper);
-        return R.ok(exportSupport(list, fields));
-    }
-
-    @RequestMapping(value = "/basLiftErrLogQuery/auth")
-    @ManagerAuth
-    public R query(String condition) {
-        EntityWrapper<BasLiftErrLog> wrapper = new EntityWrapper<>();
-        wrapper.like("id", condition);
-        Page<BasLiftErrLog> page = basLiftErrLogService.selectPage(new Page<>(0, 10), wrapper);
-        List<Map<String, Object>> result = new ArrayList<>();
-        for (BasLiftErrLog basLiftErrLog : page.getRecords()){
-            Map<String, Object> map = new HashMap<>();
-            map.put("id", basLiftErrLog.getId());
-            map.put("value", basLiftErrLog.getId());
-            result.add(map);
-        }
-        return R.ok(result);
-    }
-
-    @RequestMapping(value = "/basLiftErrLog/check/column/auth")
-    @ManagerAuth
-    public R query(@RequestBody JSONObject param) {
-        Wrapper<BasLiftErrLog> wrapper = new EntityWrapper<BasLiftErrLog>().eq(humpToLine(String.valueOf(param.get("key"))), param.get("val"));
-        if (null != basLiftErrLogService.selectOne(wrapper)){
-            return R.parse(BaseRes.REPEAT).add(getComment(BasLiftErrLog.class, String.valueOf(param.get("key"))));
-        }
-        return R.ok();
-    }
-
-}
diff --git a/src/main/java/com/zy/asrs/controller/BasLiftOptController.java b/src/main/java/com/zy/asrs/controller/BasLiftOptController.java
deleted file mode 100644
index 4e21bdd..0000000
--- a/src/main/java/com/zy/asrs/controller/BasLiftOptController.java
+++ /dev/null
@@ -1,128 +0,0 @@
-package com.zy.asrs.controller;
-
-import com.alibaba.fastjson.JSONObject;
-import com.baomidou.mybatisplus.mapper.EntityWrapper;
-import com.baomidou.mybatisplus.mapper.Wrapper;
-import com.baomidou.mybatisplus.plugins.Page;
-import com.core.annotations.ManagerAuth;
-import com.core.common.BaseRes;
-import com.core.common.Cools;
-import com.core.common.DateUtils;
-import com.core.common.R;
-import com.zy.asrs.entity.BasLiftOpt;
-import com.zy.asrs.service.BasLiftOptService;
-import com.zy.common.web.BaseController;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.*;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-@RestController
-public class BasLiftOptController extends BaseController {
-
-    @Autowired
-    private BasLiftOptService basLiftOptService;
-
-    @RequestMapping(value = "/basLiftOpt/{id}/auth")
-    @ManagerAuth
-    public R get(@PathVariable("id") String id) {
-        return R.ok(basLiftOptService.selectById(String.valueOf(id)));
-    }
-
-    @RequestMapping(value = "/basLiftOpt/list/auth")
-    @ManagerAuth
-    public R list(@RequestParam(defaultValue = "1")Integer curr,
-                  @RequestParam(defaultValue = "10")Integer limit,
-                  @RequestParam(required = false)String orderByField,
-                  @RequestParam(required = false)String orderByType,
-                  @RequestParam(required = false)String condition,
-                  @RequestParam Map<String, Object> param){
-        EntityWrapper<BasLiftOpt> wrapper = new EntityWrapper<>();
-        excludeTrash(param);
-        convert(param, wrapper);
-        allLike(BasLiftOpt.class, param.keySet(), wrapper, condition);
-        wrapper.orderBy("send_time", false);
-        if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));}
-        return R.ok(basLiftOptService.selectPage(new Page<>(curr, limit), wrapper));
-    }
-
-    private <T> void convert(Map<String, Object> map, EntityWrapper<T> wrapper){
-        for (Map.Entry<String, Object> entry : map.entrySet()){
-            String val = String.valueOf(entry.getValue());
-            if (val.contains(RANGE_TIME_LINK)){
-                String[] dates = val.split(RANGE_TIME_LINK);
-                wrapper.ge(entry.getKey(), DateUtils.convert(dates[0]));
-                wrapper.le(entry.getKey(), DateUtils.convert(dates[1]));
-            } else {
-                wrapper.like(entry.getKey(), val);
-            }
-        }
-    }
-
-    @RequestMapping(value = "/basLiftOpt/add/auth")
-    @ManagerAuth
-    public R add(BasLiftOpt basLiftOpt) {
-        basLiftOptService.insert(basLiftOpt);
-        return R.ok();
-    }
-
-	@RequestMapping(value = "/basLiftOpt/update/auth")
-	@ManagerAuth
-    public R update(BasLiftOpt basLiftOpt){
-        if (Cools.isEmpty(basLiftOpt) || null==basLiftOpt.getId()){
-            return R.error();
-        }
-        basLiftOptService.updateById(basLiftOpt);
-        return R.ok();
-    }
-
-    @RequestMapping(value = "/basLiftOpt/delete/auth")
-    @ManagerAuth
-    public R delete(@RequestParam(value="ids[]") Long[] ids){
-         for (Long id : ids){
-            basLiftOptService.deleteById(id);
-        }
-        return R.ok();
-    }
-
-    @RequestMapping(value = "/basLiftOpt/export/auth")
-    @ManagerAuth
-    public R export(@RequestBody JSONObject param){
-        EntityWrapper<BasLiftOpt> wrapper = new EntityWrapper<>();
-        List<String> fields = JSONObject.parseArray(param.getJSONArray("fields").toJSONString(), String.class);
-        Map<String, Object> map = excludeTrash(param.getJSONObject("basLiftOpt"));
-        convert(map, wrapper);
-        List<BasLiftOpt> list = basLiftOptService.selectList(wrapper);
-        return R.ok(exportSupport(list, fields));
-    }
-
-    @RequestMapping(value = "/basLiftOptQuery/auth")
-    @ManagerAuth
-    public R query(String condition) {
-        EntityWrapper<BasLiftOpt> wrapper = new EntityWrapper<>();
-        wrapper.like("id", condition);
-        Page<BasLiftOpt> page = basLiftOptService.selectPage(new Page<>(0, 10), wrapper);
-        List<Map<String, Object>> result = new ArrayList<>();
-        for (BasLiftOpt basLiftOpt : page.getRecords()){
-            Map<String, Object> map = new HashMap<>();
-            map.put("id", basLiftOpt.getId());
-            map.put("value", basLiftOpt.getId());
-            result.add(map);
-        }
-        return R.ok(result);
-    }
-
-    @RequestMapping(value = "/basLiftOpt/check/column/auth")
-    @ManagerAuth
-    public R query(@RequestBody JSONObject param) {
-        Wrapper<BasLiftOpt> wrapper = new EntityWrapper<BasLiftOpt>().eq(humpToLine(String.valueOf(param.get("key"))), param.get("val"));
-        if (null != basLiftOptService.selectOne(wrapper)){
-            return R.parse(BaseRes.REPEAT).add(getComment(BasLiftOpt.class, String.valueOf(param.get("key"))));
-        }
-        return R.ok();
-    }
-
-}
diff --git a/src/main/java/com/zy/asrs/controller/BasMapController.java b/src/main/java/com/zy/asrs/controller/BasMapController.java
index 9df3f27..9ed269b 100644
--- a/src/main/java/com/zy/asrs/controller/BasMapController.java
+++ b/src/main/java/com/zy/asrs/controller/BasMapController.java
@@ -2,33 +2,24 @@
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
-import com.alibaba.fastjson.serializer.SerializerFeature;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.baomidou.mybatisplus.mapper.Wrapper;
 import com.baomidou.mybatisplus.plugins.Page;
 import com.core.common.DateUtils;
 import com.zy.asrs.entity.BasMap;
-import com.zy.asrs.entity.BasShuttleCharge;
 import com.zy.asrs.service.BasMapService;
 import com.core.annotations.ManagerAuth;
 import com.core.common.BaseRes;
 import com.core.common.Cools;
 import com.core.common.R;
-import com.zy.asrs.service.BasShuttleChargeService;
 import com.zy.asrs.utils.MapExcelUtils;
-import com.zy.common.model.MapNode;
 import com.zy.common.utils.RedisUtil;
 import com.zy.common.web.BaseController;
-import com.zy.core.enums.RedisKeyType;
-import org.apache.poi.ss.usermodel.*;
-import org.apache.poi.xssf.usermodel.XSSFColor;
-import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.io.File;
-import java.io.FileInputStream;
 import java.io.IOException;
 import java.util.*;
 
@@ -37,8 +28,6 @@
 
     @Autowired
     private BasMapService basMapService;
-    @Autowired
-    private BasShuttleChargeService basShuttleChargeService;
     @Autowired
     private RedisUtil redisUtil;
 
@@ -143,38 +132,6 @@
 
     @Autowired
     private MapExcelUtils mapExcelUtils;
-
-    @PostMapping("/basMap/upload")
-    public R uploadExcel(@RequestParam("file") MultipartFile file) throws IOException {
-        // 淇濆瓨涓婁紶鐨勬枃浠跺埌涓存椂浣嶇疆
-        String tempFilePath = System.getProperty("java.io.tmpdir") + file.getOriginalFilename();
-        file.transferTo(new File(tempFilePath));
-
-        HashMap<Integer, List<List<HashMap<String, Object>>>> dataMap = mapExcelUtils.readExcel(tempFilePath);
-        HashMap<Integer, List<List<MapNode>>> levMap = mapExcelUtils.processExcelData(dataMap);
-
-        // 鍒犻櫎涓存椂鏂囦欢
-        new File(tempFilePath).delete();
-
-        basMapService.delete(new EntityWrapper<>());
-
-        for (Map.Entry<Integer, List<List<MapNode>>> entry : levMap.entrySet()) {
-            Integer lev = entry.getKey();
-            List<List<MapNode>> map = entry.getValue();
-
-            Date now = new Date();
-            BasMap basMap = new BasMap();
-            basMap.setLev(lev);
-            basMap.setOriginData(JSON.toJSONString(map, SerializerFeature.DisableCircularReferenceDetect));
-            basMap.setCreateTime(now);
-            basMap.setUpdateTime(now);
-            basMapService.insert(basMap);
-
-            redisUtil.del(RedisKeyType.MAP.key + lev);
-        }
-
-        return R.ok();
-    }
 
     @PostMapping("/basMap/crn/upload")
     public R uploadExcel2(@RequestParam("file") MultipartFile file) throws IOException {
diff --git a/src/main/java/com/zy/asrs/controller/BasShuttleChargeController.java b/src/main/java/com/zy/asrs/controller/BasShuttleChargeController.java
deleted file mode 100644
index 0fba3ff..0000000
--- a/src/main/java/com/zy/asrs/controller/BasShuttleChargeController.java
+++ /dev/null
@@ -1,125 +0,0 @@
-package com.zy.asrs.controller;
-
-import com.alibaba.fastjson.JSONArray;
-import com.alibaba.fastjson.JSONObject;
-import com.baomidou.mybatisplus.mapper.EntityWrapper;
-import com.baomidou.mybatisplus.mapper.Wrapper;
-import com.baomidou.mybatisplus.plugins.Page;
-import com.core.common.DateUtils;
-import com.zy.asrs.entity.BasShuttleCharge;
-import com.zy.asrs.service.BasShuttleChargeService;
-import com.core.annotations.ManagerAuth;
-import com.core.common.BaseRes;
-import com.core.common.Cools;
-import com.core.common.R;
-import com.zy.common.web.BaseController;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.*;
-
-import java.util.*;
-
-@RestController
-public class BasShuttleChargeController extends BaseController {
-
-    @Autowired
-    private BasShuttleChargeService basShuttleChargeService;
-
-    @RequestMapping(value = "/basShuttleCharge/{id}/auth")
-    @ManagerAuth
-    public R get(@PathVariable("id") String id) {
-        return R.ok(basShuttleChargeService.selectById(String.valueOf(id)));
-    }
-
-    @RequestMapping(value = "/basShuttleCharge/list/auth")
-    @ManagerAuth
-    public R list(@RequestParam(defaultValue = "1")Integer curr,
-                  @RequestParam(defaultValue = "10")Integer limit,
-                  @RequestParam(required = false)String orderByField,
-                  @RequestParam(required = false)String orderByType,
-                  @RequestParam(required = false)String condition,
-                  @RequestParam Map<String, Object> param){
-        EntityWrapper<BasShuttleCharge> wrapper = new EntityWrapper<>();
-        excludeTrash(param);
-        convert(param, wrapper);
-        allLike(BasShuttleCharge.class, param.keySet(), wrapper, condition);
-        if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));}
-        return R.ok(basShuttleChargeService.selectPage(new Page<>(curr, limit), wrapper));
-    }
-
-    private <T> void convert(Map<String, Object> map, EntityWrapper<T> wrapper){
-        for (Map.Entry<String, Object> entry : map.entrySet()){
-            String val = String.valueOf(entry.getValue());
-            if (val.contains(RANGE_TIME_LINK)){
-                String[] dates = val.split(RANGE_TIME_LINK);
-                wrapper.ge(entry.getKey(), DateUtils.convert(dates[0]));
-                wrapper.le(entry.getKey(), DateUtils.convert(dates[1]));
-            } else {
-                wrapper.like(entry.getKey(), val);
-            }
-        }
-    }
-
-    @RequestMapping(value = "/basShuttleCharge/add/auth")
-    @ManagerAuth
-    public R add(BasShuttleCharge basShuttleCharge) {
-        basShuttleChargeService.insert(basShuttleCharge);
-        return R.ok();
-    }
-
-	@RequestMapping(value = "/basShuttleCharge/update/auth")
-	@ManagerAuth
-    public R update(BasShuttleCharge basShuttleCharge){
-        if (Cools.isEmpty(basShuttleCharge) || null==basShuttleCharge.getId()){
-            return R.error();
-        }
-        basShuttleChargeService.updateById(basShuttleCharge);
-        return R.ok();
-    }
-
-    @RequestMapping(value = "/basShuttleCharge/delete/auth")
-    @ManagerAuth
-    public R delete(@RequestParam(value="ids[]") Integer[] ids){
-         for (Integer id : ids){
-            basShuttleChargeService.deleteById(id);
-        }
-        return R.ok();
-    }
-
-    @RequestMapping(value = "/basShuttleCharge/export/auth")
-    @ManagerAuth
-    public R export(@RequestBody JSONObject param){
-        EntityWrapper<BasShuttleCharge> wrapper = new EntityWrapper<>();
-        List<String> fields = JSONObject.parseArray(param.getJSONArray("fields").toJSONString(), String.class);
-        Map<String, Object> map = excludeTrash(param.getJSONObject("basShuttleCharge"));
-        convert(map, wrapper);
-        List<BasShuttleCharge> list = basShuttleChargeService.selectList(wrapper);
-        return R.ok(exportSupport(list, fields));
-    }
-
-    @RequestMapping(value = "/basShuttleChargeQuery/auth")
-    @ManagerAuth
-    public R query(String condition) {
-        EntityWrapper<BasShuttleCharge> wrapper = new EntityWrapper<>();
-        wrapper.like("id", condition);
-        Page<BasShuttleCharge> page = basShuttleChargeService.selectPage(new Page<>(0, 10), wrapper);
-        List<Map<String, Object>> result = new ArrayList<>();
-        for (BasShuttleCharge basShuttleCharge : page.getRecords()){
-            Map<String, Object> map = new HashMap<>();
-            map.put("id", basShuttleCharge.getId());
-            map.put("value", basShuttleCharge.getId());
-            result.add(map);
-        }
-        return R.ok(result);
-    }
-
-    @RequestMapping(value = "/basShuttleCharge/check/column/auth")
-    @ManagerAuth
-    public R query(@RequestBody JSONObject param) {
-        Wrapper<BasShuttleCharge> wrapper = new EntityWrapper<BasShuttleCharge>().eq(humpToLine(String.valueOf(param.get("key"))), param.get("val"));
-        if (null != basShuttleChargeService.selectOne(wrapper)){
-            return R.parse(BaseRes.REPEAT).add(getComment(BasShuttleCharge.class, String.valueOf(param.get("key"))));
-        }
-        return R.ok();
-    }
-
-}
diff --git a/src/main/java/com/zy/asrs/controller/BasShuttleController.java b/src/main/java/com/zy/asrs/controller/BasShuttleController.java
deleted file mode 100644
index f005e46..0000000
--- a/src/main/java/com/zy/asrs/controller/BasShuttleController.java
+++ /dev/null
@@ -1,142 +0,0 @@
-package com.zy.asrs.controller;
-
-import com.alibaba.fastjson.JSONObject;
-import com.baomidou.mybatisplus.mapper.EntityWrapper;
-import com.baomidou.mybatisplus.mapper.Wrapper;
-import com.baomidou.mybatisplus.plugins.Page;
-import com.core.annotations.ManagerAuth;
-import com.core.common.BaseRes;
-import com.core.common.Cools;
-import com.core.common.DateUtils;
-import com.core.common.R;
-import com.zy.asrs.entity.BasShuttle;
-import com.zy.asrs.service.BasShuttleService;
-import com.zy.common.web.BaseController;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.*;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-@RestController
-public class BasShuttleController extends BaseController {
-
-    @Autowired
-    private BasShuttleService basShuttleService;
-
-    @RequestMapping(value = "/basShuttle/{id}/auth")
-    @ManagerAuth
-    public R get(@PathVariable("id") String id) {
-        return R.ok(basShuttleService.selectById(String.valueOf(id)));
-    }
-
-    @RequestMapping(value = "/basShuttle/list/auth")
-    @ManagerAuth
-    public R list(@RequestParam(defaultValue = "1")Integer curr,
-                  @RequestParam(defaultValue = "10")Integer limit,
-                  @RequestParam(required = false)String orderByField,
-                  @RequestParam(required = false)String orderByType,
-                  @RequestParam(required = false)String condition,
-                  @RequestParam Map<String, Object> param){
-        EntityWrapper<BasShuttle> wrapper = new EntityWrapper<>();
-        excludeTrash(param);
-        convert(param, wrapper);
-        allLike(BasShuttle.class, param.keySet(), wrapper, condition);
-        if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));}
-        return R.ok(basShuttleService.selectPage(new Page<>(curr, limit), wrapper));
-    }
-
-    private <T> void convert(Map<String, Object> map, EntityWrapper<T> wrapper){
-        for (Map.Entry<String, Object> entry : map.entrySet()){
-            String val = String.valueOf(entry.getValue());
-            if (val.contains(RANGE_TIME_LINK)){
-                String[] dates = val.split(RANGE_TIME_LINK);
-                wrapper.ge(entry.getKey(), DateUtils.convert(dates[0]));
-                wrapper.le(entry.getKey(), DateUtils.convert(dates[1]));
-            } else {
-                wrapper.like(entry.getKey(), val);
-            }
-        }
-    }
-
-    @RequestMapping(value = "/basShuttle/add/auth")
-    @ManagerAuth
-    public R add(BasShuttle basShuttle) {
-        basShuttleService.insert(basShuttle);
-        return R.ok();
-    }
-
-	@RequestMapping(value = "/basShuttle/update/auth")
-	@ManagerAuth
-    public R update(BasShuttle basShuttle){
-        if (Cools.isEmpty(basShuttle) || null==basShuttle.getShuttleNo()){
-            return R.error();
-        }
-        basShuttleService.updateById(basShuttle);
-        return R.ok();
-    }
-
-    @RequestMapping(value = "/basShuttle/delete/auth")
-    @ManagerAuth
-    public R delete(@RequestParam(value="ids[]") Integer[] ids){
-         for (Integer id : ids){
-            basShuttleService.deleteById(id);
-        }
-        return R.ok();
-    }
-
-    @RequestMapping(value = "/basShuttle/export/auth")
-    @ManagerAuth
-    public R export(@RequestBody JSONObject param){
-        EntityWrapper<BasShuttle> wrapper = new EntityWrapper<>();
-        List<String> fields = JSONObject.parseArray(param.getJSONArray("fields").toJSONString(), String.class);
-        Map<String, Object> map = excludeTrash(param.getJSONObject("basShuttle"));
-        convert(map, wrapper);
-        List<BasShuttle> list = basShuttleService.selectList(wrapper);
-        return R.ok(exportSupport(list, fields));
-    }
-
-    @RequestMapping(value = "/basShuttleQuery/auth")
-    @ManagerAuth
-    public R query(String condition) {
-        EntityWrapper<BasShuttle> wrapper = new EntityWrapper<>();
-        wrapper.like("shuttle_no", condition);
-        Page<BasShuttle> page = basShuttleService.selectPage(new Page<>(0, 10), wrapper);
-        List<Map<String, Object>> result = new ArrayList<>();
-        for (BasShuttle basShuttle : page.getRecords()){
-            Map<String, Object> map = new HashMap<>();
-            map.put("id", basShuttle.getShuttleNo());
-            map.put("value", basShuttle.getShuttleNo());
-            result.add(map);
-        }
-        return R.ok(result);
-    }
-
-    @RequestMapping(value = "/basShuttle/check/column/auth")
-    @ManagerAuth
-    public R query(@RequestBody JSONObject param) {
-        Wrapper<BasShuttle> wrapper = new EntityWrapper<BasShuttle>().eq(humpToLine(String.valueOf(param.get("key"))), param.get("val"));
-        if (null != basShuttleService.selectOne(wrapper)){
-            return R.parse(BaseRes.REPEAT).add(getComment(BasShuttle.class, String.valueOf(param.get("key"))));
-        }
-        return R.ok();
-    }
-
-    @RequestMapping(value = "/basShuttle/updateCharge")
-    @ManagerAuth
-    public R updateCharge(BasShuttle basShuttle){
-        if (Cools.isEmpty(basShuttle) || null==basShuttle.getChargeLine()){
-            return R.error();
-        }
-
-        List<BasShuttle> basShuttles = basShuttleService.selectList(new EntityWrapper<BasShuttle>());
-        for (BasShuttle shuttle : basShuttles) {
-            shuttle.setChargeLine(basShuttle.getChargeLine());
-            basShuttleService.updateById(shuttle);
-        }
-        return R.ok();
-    }
-
-}
diff --git a/src/main/java/com/zy/asrs/controller/BasShuttleErrController.java b/src/main/java/com/zy/asrs/controller/BasShuttleErrController.java
deleted file mode 100644
index 440bd93..0000000
--- a/src/main/java/com/zy/asrs/controller/BasShuttleErrController.java
+++ /dev/null
@@ -1,127 +0,0 @@
-package com.zy.asrs.controller;
-
-import com.alibaba.fastjson.JSONObject;
-import com.baomidou.mybatisplus.mapper.EntityWrapper;
-import com.baomidou.mybatisplus.mapper.Wrapper;
-import com.baomidou.mybatisplus.plugins.Page;
-import com.core.annotations.ManagerAuth;
-import com.core.common.BaseRes;
-import com.core.common.Cools;
-import com.core.common.DateUtils;
-import com.core.common.R;
-import com.zy.asrs.entity.BasShuttleErr;
-import com.zy.asrs.service.BasShuttleErrService;
-import com.zy.common.web.BaseController;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.*;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-@RestController
-public class BasShuttleErrController extends BaseController {
-
-    @Autowired
-    private BasShuttleErrService basShuttleErrService;
-
-    @RequestMapping(value = "/basShuttleErr/{id}/auth")
-    @ManagerAuth
-    public R get(@PathVariable("id") String id) {
-        return R.ok(basShuttleErrService.selectById(String.valueOf(id)));
-    }
-
-    @RequestMapping(value = "/basShuttleErr/list/auth")
-    @ManagerAuth
-    public R list(@RequestParam(defaultValue = "1")Integer curr,
-                  @RequestParam(defaultValue = "10")Integer limit,
-                  @RequestParam(required = false)String orderByField,
-                  @RequestParam(required = false)String orderByType,
-                  @RequestParam(required = false)String condition,
-                  @RequestParam Map<String, Object> param){
-        EntityWrapper<BasShuttleErr> wrapper = new EntityWrapper<>();
-        excludeTrash(param);
-        convert(param, wrapper);
-        allLike(BasShuttleErr.class, param.keySet(), wrapper, condition);
-        if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));}
-        return R.ok(basShuttleErrService.selectPage(new Page<>(curr, limit), wrapper));
-    }
-
-    private <T> void convert(Map<String, Object> map, EntityWrapper<T> wrapper){
-        for (Map.Entry<String, Object> entry : map.entrySet()){
-            String val = String.valueOf(entry.getValue());
-            if (val.contains(RANGE_TIME_LINK)){
-                String[] dates = val.split(RANGE_TIME_LINK);
-                wrapper.ge(entry.getKey(), DateUtils.convert(dates[0]));
-                wrapper.le(entry.getKey(), DateUtils.convert(dates[1]));
-            } else {
-                wrapper.like(entry.getKey(), val);
-            }
-        }
-    }
-
-    @RequestMapping(value = "/basShuttleErr/add/auth")
-    @ManagerAuth
-    public R add(BasShuttleErr basShuttleErr) {
-        basShuttleErrService.insert(basShuttleErr);
-        return R.ok();
-    }
-
-	@RequestMapping(value = "/basShuttleErr/update/auth")
-	@ManagerAuth
-    public R update(BasShuttleErr basShuttleErr){
-        if (Cools.isEmpty(basShuttleErr) || null==basShuttleErr.getErrorCode()){
-            return R.error();
-        }
-        basShuttleErrService.updateById(basShuttleErr);
-        return R.ok();
-    }
-
-    @RequestMapping(value = "/basShuttleErr/delete/auth")
-    @ManagerAuth
-    public R delete(@RequestParam(value="ids[]") Long[] ids){
-         for (Long id : ids){
-            basShuttleErrService.deleteById(id);
-        }
-        return R.ok();
-    }
-
-    @RequestMapping(value = "/basShuttleErr/export/auth")
-    @ManagerAuth
-    public R export(@RequestBody JSONObject param){
-        EntityWrapper<BasShuttleErr> wrapper = new EntityWrapper<>();
-        List<String> fields = JSONObject.parseArray(param.getJSONArray("fields").toJSONString(), String.class);
-        Map<String, Object> map = excludeTrash(param.getJSONObject("basShuttleErr"));
-        convert(map, wrapper);
-        List<BasShuttleErr> list = basShuttleErrService.selectList(wrapper);
-        return R.ok(exportSupport(list, fields));
-    }
-
-    @RequestMapping(value = "/basShuttleErrQuery/auth")
-    @ManagerAuth
-    public R query(String condition) {
-        EntityWrapper<BasShuttleErr> wrapper = new EntityWrapper<>();
-        wrapper.like("id", condition);
-        Page<BasShuttleErr> page = basShuttleErrService.selectPage(new Page<>(0, 10), wrapper);
-        List<Map<String, Object>> result = new ArrayList<>();
-        for (BasShuttleErr basShuttleErr : page.getRecords()){
-            Map<String, Object> map = new HashMap<>();
-            map.put("id", basShuttleErr.getErrorCode());
-            map.put("value", basShuttleErr.getErrorCode());
-            result.add(map);
-        }
-        return R.ok(result);
-    }
-
-    @RequestMapping(value = "/basShuttleErr/check/column/auth")
-    @ManagerAuth
-    public R query(@RequestBody JSONObject param) {
-        Wrapper<BasShuttleErr> wrapper = new EntityWrapper<BasShuttleErr>().eq(humpToLine(String.valueOf(param.get("key"))), param.get("val"));
-        if (null != basShuttleErrService.selectOne(wrapper)){
-            return R.parse(BaseRes.REPEAT).add(getComment(BasShuttleErr.class, String.valueOf(param.get("key"))));
-        }
-        return R.ok();
-    }
-
-}
diff --git a/src/main/java/com/zy/asrs/controller/BasShuttleErrLogController.java b/src/main/java/com/zy/asrs/controller/BasShuttleErrLogController.java
deleted file mode 100644
index 31b3aef..0000000
--- a/src/main/java/com/zy/asrs/controller/BasShuttleErrLogController.java
+++ /dev/null
@@ -1,128 +0,0 @@
-package com.zy.asrs.controller;
-
-import com.alibaba.fastjson.JSONObject;
-import com.baomidou.mybatisplus.mapper.EntityWrapper;
-import com.baomidou.mybatisplus.mapper.Wrapper;
-import com.baomidou.mybatisplus.plugins.Page;
-import com.core.annotations.ManagerAuth;
-import com.core.common.BaseRes;
-import com.core.common.Cools;
-import com.core.common.DateUtils;
-import com.core.common.R;
-import com.zy.asrs.entity.BasShuttleErrLog;
-import com.zy.asrs.service.BasShuttleErrLogService;
-import com.zy.common.web.BaseController;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.*;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-@RestController
-public class BasShuttleErrLogController extends BaseController {
-
-    @Autowired
-    private BasShuttleErrLogService basShuttleErrLogService;
-
-    @RequestMapping(value = "/basShuttleErrLog/{id}/auth")
-    @ManagerAuth
-    public R get(@PathVariable("id") String id) {
-        return R.ok(basShuttleErrLogService.selectById(String.valueOf(id)));
-    }
-
-    @RequestMapping(value = "/basShuttleErrLog/list/auth")
-    @ManagerAuth
-    public R list(@RequestParam(defaultValue = "1")Integer curr,
-                  @RequestParam(defaultValue = "10")Integer limit,
-                  @RequestParam(required = false)String orderByField,
-                  @RequestParam(required = false)String orderByType,
-                  @RequestParam(required = false)String condition,
-                  @RequestParam Map<String, Object> param){
-        EntityWrapper<BasShuttleErrLog> wrapper = new EntityWrapper<>();
-        excludeTrash(param);
-        convert(param, wrapper);
-        allLike(BasShuttleErrLog.class, param.keySet(), wrapper, condition);
-        wrapper.orderBy("create_time", false);
-        if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));}
-        return R.ok(basShuttleErrLogService.selectPage(new Page<>(curr, limit), wrapper));
-    }
-
-    private <T> void convert(Map<String, Object> map, EntityWrapper<T> wrapper){
-        for (Map.Entry<String, Object> entry : map.entrySet()){
-            String val = String.valueOf(entry.getValue());
-            if (val.contains(RANGE_TIME_LINK)){
-                String[] dates = val.split(RANGE_TIME_LINK);
-                wrapper.ge(entry.getKey(), DateUtils.convert(dates[0]));
-                wrapper.le(entry.getKey(), DateUtils.convert(dates[1]));
-            } else {
-                wrapper.like(entry.getKey(), val);
-            }
-        }
-    }
-
-    @RequestMapping(value = "/basShuttleErrLog/add/auth")
-    @ManagerAuth
-    public R add(BasShuttleErrLog basShuttleErrLog) {
-        basShuttleErrLogService.insert(basShuttleErrLog);
-        return R.ok();
-    }
-
-	@RequestMapping(value = "/basShuttleErrLog/update/auth")
-	@ManagerAuth
-    public R update(BasShuttleErrLog basShuttleErrLog){
-        if (Cools.isEmpty(basShuttleErrLog) || null==basShuttleErrLog.getId()){
-            return R.error();
-        }
-        basShuttleErrLogService.updateById(basShuttleErrLog);
-        return R.ok();
-    }
-
-    @RequestMapping(value = "/basShuttleErrLog/delete/auth")
-    @ManagerAuth
-    public R delete(@RequestParam(value="ids[]") Long[] ids){
-         for (Long id : ids){
-            basShuttleErrLogService.deleteById(id);
-        }
-        return R.ok();
-    }
-
-    @RequestMapping(value = "/basShuttleErrLog/export/auth")
-    @ManagerAuth
-    public R export(@RequestBody JSONObject param){
-        EntityWrapper<BasShuttleErrLog> wrapper = new EntityWrapper<>();
-        List<String> fields = JSONObject.parseArray(param.getJSONArray("fields").toJSONString(), String.class);
-        Map<String, Object> map = excludeTrash(param.getJSONObject("basShuttleErrLog"));
-        convert(map, wrapper);
-        List<BasShuttleErrLog> list = basShuttleErrLogService.selectList(wrapper);
-        return R.ok(exportSupport(list, fields));
-    }
-
-    @RequestMapping(value = "/basShuttleErrLogQuery/auth")
-    @ManagerAuth
-    public R query(String condition) {
-        EntityWrapper<BasShuttleErrLog> wrapper = new EntityWrapper<>();
-        wrapper.like("id", condition);
-        Page<BasShuttleErrLog> page = basShuttleErrLogService.selectPage(new Page<>(0, 10), wrapper);
-        List<Map<String, Object>> result = new ArrayList<>();
-        for (BasShuttleErrLog basShuttleErrLog : page.getRecords()){
-            Map<String, Object> map = new HashMap<>();
-            map.put("id", basShuttleErrLog.getId());
-            map.put("value", basShuttleErrLog.getId());
-            result.add(map);
-        }
-        return R.ok(result);
-    }
-
-    @RequestMapping(value = "/basShuttleErrLog/check/column/auth")
-    @ManagerAuth
-    public R query(@RequestBody JSONObject param) {
-        Wrapper<BasShuttleErrLog> wrapper = new EntityWrapper<BasShuttleErrLog>().eq(humpToLine(String.valueOf(param.get("key"))), param.get("val"));
-        if (null != basShuttleErrLogService.selectOne(wrapper)){
-            return R.parse(BaseRes.REPEAT).add(getComment(BasShuttleErrLog.class, String.valueOf(param.get("key"))));
-        }
-        return R.ok();
-    }
-
-}
diff --git a/src/main/java/com/zy/asrs/controller/BasShuttleOptController.java b/src/main/java/com/zy/asrs/controller/BasShuttleOptController.java
deleted file mode 100644
index a3ecca1..0000000
--- a/src/main/java/com/zy/asrs/controller/BasShuttleOptController.java
+++ /dev/null
@@ -1,53 +0,0 @@
-package com.zy.asrs.controller;
-
-import com.baomidou.mybatisplus.mapper.EntityWrapper;
-import com.baomidou.mybatisplus.plugins.Page;
-import com.core.annotations.ManagerAuth;
-import com.core.common.Cools;
-import com.core.common.DateUtils;
-import com.core.common.R;
-import com.zy.asrs.entity.BasShuttleOpt;
-import com.zy.asrs.service.BasShuttleOptService;
-import com.zy.common.web.BaseController;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
-
-import java.util.Map;
-
-@RestController
-public class BasShuttleOptController extends BaseController {
-    @Autowired
-    private BasShuttleOptService basShuttleOptService;
-
-    @RequestMapping(value = "/basShuttleOpt/list/auth")
-    @ManagerAuth
-    public R list(@RequestParam(defaultValue = "1")Integer curr,
-                  @RequestParam(defaultValue = "10")Integer limit,
-                  @RequestParam(required = false)String orderByField,
-                  @RequestParam(required = false)String orderByType,
-                  @RequestParam(required = false)String condition,
-                  @RequestParam Map<String, Object> param){
-        EntityWrapper<BasShuttleOpt> wrapper = new EntityWrapper<>();
-        excludeTrash(param);
-        convert(param, wrapper);
-        allLike(BasShuttleOpt.class, param.keySet(), wrapper, condition);
-        wrapper.orderBy("send_time", false);
-        if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));}
-        return R.ok(basShuttleOptService.selectPage(new Page<>(curr, limit), wrapper));
-    }
-
-    private <T> void convert(Map<String, Object> map, EntityWrapper<T> wrapper){
-        for (Map.Entry<String, Object> entry : map.entrySet()){
-            String val = String.valueOf(entry.getValue());
-            if (val.contains(RANGE_TIME_LINK)){
-                String[] dates = val.split(RANGE_TIME_LINK);
-                wrapper.ge(entry.getKey(), DateUtils.convert(dates[0]));
-                wrapper.le(entry.getKey(), DateUtils.convert(dates[1]));
-            } else {
-                wrapper.like(entry.getKey(), val);
-            }
-        }
-    }
-}
diff --git a/src/main/java/com/zy/asrs/controller/ConsoleController.java b/src/main/java/com/zy/asrs/controller/ConsoleController.java
index 1c61d5e..50c24b6 100644
--- a/src/main/java/com/zy/asrs/controller/ConsoleController.java
+++ b/src/main/java/com/zy/asrs/controller/ConsoleController.java
@@ -1,37 +1,12 @@
 package com.zy.asrs.controller;
 
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONObject;
-import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.core.annotations.ManagerAuth;
 import com.core.common.Cools;
 import com.core.common.R;
 import com.zy.asrs.domain.param.SystemSwitchParam;
-import com.zy.asrs.entity.BasMap;
-import com.zy.asrs.entity.DeviceConfig;
-import com.zy.asrs.entity.LocMast;
-import com.zy.asrs.service.BasMapService;
-import com.zy.asrs.service.DeviceConfigService;
-import com.zy.asrs.service.LocMastService;
-import com.zy.asrs.utils.Utils;
-import com.zy.common.model.MapNode;
-import com.zy.common.model.NavigateNode;
-import com.zy.common.model.enums.NavigationMapType;
-import com.zy.common.utils.NavigateMapData;
-import com.zy.common.utils.RedisUtil;
-import com.zy.core.cache.SlaveConnection;
-import com.zy.core.enums.RedisKeyType;
-import com.zy.core.enums.SlaveType;
-import com.zy.core.model.command.ShuttleRedisCommand;
-import com.zy.core.model.protocol.ShuttleProtocol;
 import com.zy.core.properties.SystemProperties;
-import com.zy.core.thread.ShuttleThread;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
-
-import javax.servlet.http.HttpServletRequest;
-import java.util.*;
 
 /**
  * 涓绘帶鍥炬帴鍙�
@@ -41,17 +16,6 @@
 @RestController
 @RequestMapping("/console")
 public class ConsoleController {
-
-    @Autowired
-    private BasMapService basMapService;
-    @Autowired
-    private RedisUtil redisUtil;
-    @Autowired
-    private NavigateMapData navigateMapData;
-    @Autowired
-    private LocMastService locMastService;
-    @Autowired
-    private DeviceConfigService deviceConfigService;
 
     @PostMapping("/system/running/status")
     @ManagerAuth(memo = "绯荤粺杩愯鐘舵��")
@@ -76,194 +40,6 @@
         Thread.sleep(200L);
         SystemProperties.WCS_RUNNING_STATUS.set(param.getOperatorType()==1?Boolean.TRUE:Boolean.FALSE);
         return R.ok().add(Cools.add("status", SystemProperties.WCS_RUNNING_STATUS.get()));
-    }
-
-    /**
-     * 鑾峰彇鍦板浘妤煎眰鏁版嵁
-     */
-    @GetMapping("/map/lev/list")
-    @ManagerAuth
-    public R getMapLevList() {
-        List<BasMap> basMaps = basMapService.selectList(new EntityWrapper<BasMap>().orderBy("lev", true));
-        ArrayList<Integer> levList = new ArrayList<>();
-        for (BasMap basMap : basMaps) {
-            levList.add(basMap.getLev());
-        }
-        return R.ok().add(levList);
-    }
-
-    /**
-     * 鑾峰彇鍦板浘鏁版嵁
-     */
-    @GetMapping("/map/{lev}/auth")
-    @ManagerAuth
-    public R getMapFromRedis(@PathVariable Integer lev) {
-        Object data = redisUtil.get(RedisKeyType.MAP.key + lev);
-        if (data == null) {
-            return R.error();
-        }
-
-        List<List<MapNode>> arrayList = (List<List<MapNode>>) data;
-        List<List<MapNode>> lists = navigateMapData.filterMap(NavigationMapType.getMapTypes(NavigationMapType.NONE, NavigationMapType.PATH_LOCK), arrayList, lev, null, null);//杩囨护鍦板浘鏁版嵁
-        return R.ok().add(lists);
-    }
-
-    /**
-     * 鑾峰彇搴撲綅鍦板浘鏁版嵁
-     */
-    @GetMapping("/locMap/{lev}/auth")
-    @ManagerAuth
-    public R getLocMap(@PathVariable Integer lev) {
-        Object data = redisUtil.get(RedisKeyType.MAP.key + lev);
-        if (data == null) {
-            return R.error();
-        }
-
-        List<List<MapNode>> arrayList = (List<List<MapNode>>) data;
-        List<List<MapNode>> lists = navigateMapData.filterMap(NavigationMapType.getMapTypes(NavigationMapType.NONE), arrayList, lev, null, null);//杩囨护鍦板浘鏁版嵁
-
-        //鑾峰彇褰撳墠妤煎眰搴撲綅鏁版嵁
-        List<LocMast> locMasts = locMastService.selectLocByLev(lev);
-        for (LocMast locMast : locMasts) {
-            Integer row = locMast.getRow1();
-            Integer bay = locMast.getBay1();
-
-            List<MapNode> list = lists.get(row);
-            MapNode mapNode = list.get(bay);
-
-            mapNode.setLocSts(locMast.getLocSts());
-            mapNode.setLocNo(locMast.getLocNo());
-
-            //鏇存柊list
-            list.set(bay, mapNode);
-            lists.set(row, list);
-        }
-        return R.ok().add(lists);
-    }
-
-    /**
-     * 閲嶇疆redis涓殑鍦板浘锛屽皢鍗犵敤鐨勫簱浣嶅叏閮ㄨВ闄�
-     */
-    @GetMapping("/map/resetMap/auth")
-    @ManagerAuth
-    public R resetMapToRedis() {
-        List<BasMap> basMaps = basMapService.selectList(new EntityWrapper<BasMap>().orderBy("lev", true));
-        for (BasMap basMap : basMaps) {
-            Integer lev = basMap.getLev();
-            redisUtil.del(RedisKeyType.MAP.key + lev);
-        }
-        return R.ok();
-    }
-
-    /**
-     * 閲嶇疆redis涓殑鍦板浘锛屽皢鍗犵敤鐨勫簱浣嶅叏閮ㄨВ闄�
-     */
-    @GetMapping("/map/resetMap/{lev}")
-    @ManagerAuth(memo = "閲嶇疆Redis鍦板浘")
-    public R resetMapToRedisByLev(@PathVariable Integer lev, HttpServletRequest request) {
-        redisUtil.del(RedisKeyType.MAP.key + lev);
-        return R.ok();
-    }
-
-    /**
-     * 鑾峰彇棰勮璺緞
-     */
-    @GetMapping("/getMoveAdvancePath/{lev}/auth")
-    @ManagerAuth
-    public R getMoveAdvancePath(@PathVariable Integer lev) {
-        HashMap<String, Object> pathMap = new HashMap<>();
-
-        List<DeviceConfig> shuttleList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>()
-                .eq("device_type", String.valueOf(SlaveType.Shuttle)));
-        for (DeviceConfig deviceConfig : shuttleList) {
-            // 鑾峰彇鍥涘悜绌挎杞︿俊鎭�
-            ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, deviceConfig.getDeviceNo());
-            if (shuttleThread == null) {
-                continue;
-            }
-            ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
-            if (shuttleProtocol == null || shuttleProtocol.getShuttleNo()==null) {
-                continue;
-            }
-
-            if (shuttleProtocol.getCurrentLocNo() == null) {
-                continue;
-            }
-
-            if (Utils.getLev(shuttleProtocol.getCurrentLocNo()) != lev) {
-                continue;
-            }
-
-            if (shuttleProtocol.getTaskNo() == 0) {
-
-            }
-
-            //瀛樺湪浠诲姟锛岃幏鍙栨寚浠�
-            Object object = redisUtil.get(RedisKeyType.SHUTTLE_WORK_FLAG.key + shuttleProtocol.getTaskNo());
-            if (object != null) {
-                ShuttleRedisCommand redisCommand = JSON.parseObject(object.toString(), ShuttleRedisCommand.class);
-                List<NavigateNode> nodes = redisCommand.getAssignCommand().getNodes();//绌挎杞﹂璁¤矾寰�
-
-                for (NavigateNode node : nodes) {
-                    String locNo = Utils.getLocNo(node.getX(), node.getY(), node.getZ());
-
-                    List<Integer> shuttleNoList = new ArrayList<>();
-                    Object tmp = pathMap.get(locNo);
-                    if(tmp != null) {
-                        shuttleNoList = (List<Integer>) tmp;
-                    }
-
-                    if (!shuttleNoList.contains(shuttleProtocol.getShuttleNo())) {
-                        shuttleNoList.add(shuttleProtocol.getShuttleNo());
-                    }
-
-                    pathMap.put(locNo, shuttleNoList);
-                }
-            }
-        }
-
-        List<HashMap<String, Object>> pathList = new ArrayList<>();
-        for (Map.Entry<String, Object> entry : pathMap.entrySet()) {
-            String locNo = entry.getKey();
-            Object shuttleNoList = entry.getValue();
-
-            HashMap<String, Object> map = new HashMap<>();
-            map.put("locNo", locNo);
-            map.put("x", Utils.getRow(locNo));
-            map.put("y", Utils.getBay(locNo));
-            map.put("z", Utils.getLev(locNo));
-            map.put("shuttleNoList", shuttleNoList);
-            pathList.add(map);
-        }
-        return R.ok().add(pathList);
-    }
-
-    /**
-     * 鑾峰彇閿佸畾璺緞
-     */
-    @GetMapping("/getLockPath/{lev}/auth")
-    @ManagerAuth
-    public R getLockPath(@PathVariable Integer lev) {
-        HashMap<String, Object> lockMap = new HashMap<>();
-        Object o = redisUtil.get(RedisKeyType.LOCK_MAP_NODES.key + lev);
-        if (o != null) {
-            lockMap = (HashMap<String, Object>) o;
-        }
-
-        List<HashMap<String, Object>> lockList = new ArrayList<>();
-        for (Map.Entry<String, Object> entry : lockMap.entrySet()) {
-            String locNo = entry.getKey();
-            Object shuttleNo = entry.getValue();
-
-            HashMap<String, Object> map = new HashMap<>();
-            map.put("locNo", locNo);
-            map.put("x", Utils.getRow(locNo));
-            map.put("y", Utils.getBay(locNo));
-            map.put("z", Utils.getLev(locNo));
-            map.put("shuttleNo", shuttleNo);
-            lockList.add(map);
-        }
-        return R.ok().add(lockList);
     }
 
 }
diff --git a/src/main/java/com/zy/asrs/controller/DeviceMsgController.java b/src/main/java/com/zy/asrs/controller/DeviceMsgController.java
deleted file mode 100644
index 63114c9..0000000
--- a/src/main/java/com/zy/asrs/controller/DeviceMsgController.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package com.zy.asrs.controller;
-
-import com.core.common.R;
-import com.zy.asrs.domain.param.DeviceMsgPutParam;
-import com.zy.core.utils.DeviceMsgUtils;
-import com.zy.core.enums.SlaveType;
-import com.zy.core.model.DeviceMsgModel;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.*;
-
-import java.util.List;
-
-@RestController
-@RequestMapping("/msg")
-public class DeviceMsgController {
-
-    @Autowired
-    private DeviceMsgUtils deviceMsgUtils;
-
-    @PostMapping("/put")
-    public R put(@RequestBody DeviceMsgPutParam param) {
-        DeviceMsgModel msgModel = new DeviceMsgModel();
-        msgModel.setDeviceId(param.getDeviceId());
-        msgModel.setDeviceMsg(param.getDeviceMsg());
-        deviceMsgUtils.pushDeviceMsg(SlaveType.Shuttle, param.getDeviceId(), msgModel);
-        return R.ok();
-    }
-
-    @GetMapping("/get")
-    public R get() {
-        List<DeviceMsgModel> deviceMsgList = deviceMsgUtils.getDeviceMsgList(SlaveType.Shuttle, 1);
-        return R.ok().add(deviceMsgList);
-    }
-
-}
diff --git a/src/main/java/com/zy/asrs/controller/ForkLiftController.java b/src/main/java/com/zy/asrs/controller/ForkLiftController.java
deleted file mode 100644
index a292931..0000000
--- a/src/main/java/com/zy/asrs/controller/ForkLiftController.java
+++ /dev/null
@@ -1,361 +0,0 @@
-package com.zy.asrs.controller;
-
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONObject;
-import com.baomidou.mybatisplus.mapper.EntityWrapper;
-import com.core.annotations.ManagerAuth;
-import com.core.common.BaseRes;
-import com.core.common.Cools;
-import com.core.common.R;
-import com.core.exception.CoolException;
-import com.zy.asrs.domain.param.LiftOperatorParam;
-import com.zy.asrs.domain.vo.*;
-import com.zy.asrs.entity.BasLift;
-import com.zy.asrs.entity.DeviceConfig;
-import com.zy.asrs.service.BasLiftService;
-import com.zy.asrs.service.DeviceConfigService;
-import com.zy.common.service.CommonService;
-import com.zy.common.utils.RedisUtil;
-import com.zy.core.action.ForkLiftAction;
-import com.zy.core.cache.OutputQueue;
-import com.zy.core.cache.SlaveConnection;
-import com.zy.core.enums.*;
-import com.zy.core.model.command.*;
-import com.zy.core.model.protocol.ForkLiftProtocol;
-import com.zy.core.model.protocol.ForkLiftStaProtocol;
-import com.zy.core.thread.ForkLiftThread;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.*;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * 璐у弶鎻愬崌鏈烘帴鍙�
- */
-@Slf4j
-@RestController
-@RequestMapping("/forkLift")
-public class ForkLiftController {
-
-    @Autowired
-    private CommonService commonService;
-    @Autowired
-    private BasLiftService basLiftService;
-    @Autowired
-    private RedisUtil redisUtil;
-    @Autowired
-    private ForkLiftAction forkLiftAction;
-    @Autowired
-    private DeviceConfigService deviceConfigService;
-
-    @PostMapping("/table/lift/state")
-    @ManagerAuth(memo = "鎻愬崌鏈轰俊鎭〃")
-    public R liftStateTable(){
-        ArrayList<JSONObject> list = new ArrayList<>();
-        List<DeviceConfig> forkliftList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>()
-                .eq("device_type", String.valueOf(SlaveType.ForkLift)));
-        for (DeviceConfig device : forkliftList) {
-            // 琛ㄦ牸琛�
-            JSONObject baseObj = new JSONObject();
-            baseObj.put("liftNo", device.getDeviceNo());
-            list.add(baseObj);
-            // 鑾峰彇鎻愬崌鏈轰俊鎭�
-            ForkLiftThread forkLiftThread = (ForkLiftThread) SlaveConnection.get(SlaveType.ForkLift, device.getDeviceNo());
-            if (forkLiftThread == null) {
-                continue;
-            }
-            ForkLiftProtocol forkLiftProtocol = forkLiftThread.getStatus();
-            if (forkLiftProtocol == null) {
-                continue;
-            }
-            JSONObject data = JSON.parseObject(JSON.toJSONString(forkLiftProtocol));
-            List<ForkLiftStaProtocol> forkLiftStaProtocols = forkLiftThread.getForkLiftStaProtocols();
-            data.put("forkLiftStaProtocols", forkLiftStaProtocols);
-            baseObj.putAll(data);
-        }
-        return R.ok().add(list);
-    }
-
-    @PostMapping("/table/lift/msg")
-    @ManagerAuth(memo = "鎻愬崌鏈烘暟鎹〃")
-    public R liftMsgTable(){
-        List<ForkLiftMsgTableVo> list = new ArrayList<>();
-        List<DeviceConfig> forkliftList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>()
-                .eq("device_type", String.valueOf(SlaveType.ForkLift)));
-        for (DeviceConfig device : forkliftList) {
-            // 琛ㄦ牸琛�
-            ForkLiftMsgTableVo vo = new ForkLiftMsgTableVo();
-            vo.setLiftNo(device.getDeviceNo());   //  鎻愬崌鏈哄彿
-            list.add(vo);
-            // 鑾峰彇鎻愬崌鏈轰俊鎭�
-            ForkLiftThread forkLiftThread = (ForkLiftThread) SlaveConnection.get(SlaveType.ForkLift, device.getDeviceNo());
-            if (forkLiftThread == null) {
-                continue;
-            }
-            ForkLiftProtocol forkLiftProtocol = forkLiftThread.getStatus();
-            if (forkLiftProtocol == null) {
-                continue;
-            }
-
-            vo.setWorkNo(forkLiftProtocol.getTaskNo());//浠诲姟鍙�
-            vo.setPakMk(forkLiftProtocol.getPakMk()?"Y" : "N");    // 浣滀笟鏍囪
-            vo.setForkLiftStaProtocols(forkLiftThread.getForkLiftStaProtocols());
-        }
-        return R.ok().add(list);
-    }
-
-    @PostMapping("/output/lift")
-    @ManagerAuth
-    public R liftOutput(){
-        StringBuilder str = new StringBuilder();
-        String s;
-        int i = 0;
-        while((s = OutputQueue.FORKLIFT.poll()) != null && i <=10) {
-            str.append("\n").append(s);
-            i++;
-        }
-        return R.ok().add(str.toString());
-    }
-
-    @GetMapping("/detl/{liftNo}")
-    public R liftDetl(@PathVariable("liftNo") Integer liftNo){
-        LiftDataVo vo = new LiftDataVo();
-        List<DeviceConfig> forkliftList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>()
-                .eq("device_type", String.valueOf(SlaveType.ForkLift)));
-        for (DeviceConfig device : forkliftList) {
-            if (liftNo.equals(device.getDeviceNo())) {
-                vo.setLiftNo(device.getDeviceNo());
-                BasLift basLift = basLiftService.selectById(device.getDeviceNo());
-                if (!Cools.isEmpty(basLift)) {
-                    vo.setWorkNo(basLift.getWrkNo());
-                    vo.setPakMk(basLift.getPakMk());
-                }
-                break;
-            }
-        }
-        return R.ok().add(vo);
-    }
-
-    @GetMapping("/sensor/detl/{liftNo}")
-    public R liftSensorDetl(@PathVariable("liftNo") Integer liftNo){
-        LiftSensorDataVo vo = new LiftSensorDataVo();
-        List<DeviceConfig> forkliftList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>()
-                .eq("device_type", String.valueOf(SlaveType.ForkLift)));
-        for (DeviceConfig device : forkliftList) {
-            if (liftNo.equals(device.getDeviceNo())) {
-                vo.setLiftNo(device.getDeviceNo());
-                // 鑾峰彇鎻愬崌鏈轰俊鎭�
-                ForkLiftThread forkLiftThread = (ForkLiftThread) SlaveConnection.get(SlaveType.ForkLift, device.getDeviceNo());
-                if (forkLiftThread == null) {
-                    return R.error("璁惧涓嶅湪绾�");
-                }
-                ForkLiftProtocol forkLiftProtocol = forkLiftThread.getStatus();
-                if (forkLiftProtocol == null) {
-                    return R.error("璁惧涓嶅湪绾�");
-                }
-
-                break;
-            }
-        }
-        return R.ok().add(vo);
-    }
-
-    @PostMapping("/detl/update")
-    @ManagerAuth(memo = "淇敼鏁版嵁")
-    public R liftUpdate(@RequestParam Integer liftNo,
-                        @RequestParam Short workNo) {
-        ForkLiftThread forkLiftThread = (ForkLiftThread) SlaveConnection.get(SlaveType.ForkLift, liftNo);
-        if (forkLiftThread == null) {
-            return R.error("plc宸叉帀绾�");
-        }
-        ForkLiftProtocol forkLiftProtocol = forkLiftThread.getStatus();
-        if (forkLiftProtocol == null) {
-            return R.error("plc宸叉帀绾�");
-        }
-        if (workNo != null) {
-            forkLiftThread.setSyncTaskNo(workNo.intValue());
-        }
-        return R.ok();
-    }
-
-    @RequestMapping(value = "/command/query")
-    public R liftCommandQuery(@RequestParam("wrkNo") Integer wrkNo) {
-        Object o = redisUtil.get(RedisKeyType.FORK_LIFT_WORK_FLAG.key + wrkNo);
-        if (o == null) {
-            return R.error();
-        }
-        ForkLiftRedisCommand redisCommand = JSON.parseObject(o.toString(), ForkLiftRedisCommand.class);
-        return R.ok().add(redisCommand);
-    }
-
-    //鍥為��鍛戒护
-    @RequestMapping(value = "/command/rollback")
-    public R liftCommandRollback(@RequestParam("wrkNo") Integer wrkNo
-            , @RequestParam("commandStep") Integer commandStep) {
-        Object o = redisUtil.get(RedisKeyType.FORK_LIFT_WORK_FLAG.key + wrkNo);
-        if (o == null) {
-            return R.error();
-        }
-        ForkLiftRedisCommand redisCommand = JSON.parseObject(o.toString(), ForkLiftRedisCommand.class);
-        redisCommand.setCommandStep(commandStep);
-        redisUtil.set(RedisKeyType.FORK_LIFT_WORK_FLAG.key + wrkNo, JSON.toJSONString(redisCommand));
-        return R.ok();
-    }
-
-    //鍛戒护瀹屾垚鐘舵�佸垏鎹�
-    @RequestMapping(value = "/command/completeSwitch")
-    public R liftCommandCompleteSwitch(@RequestParam("wrkNo") Integer wrkNo
-            , @RequestParam("commandStep") Integer commandStep
-            , @RequestParam("complete") Integer complete) {
-        Object o = redisUtil.get(RedisKeyType.FORK_LIFT_WORK_FLAG.key + wrkNo);
-        if (o == null) {
-            return R.error();
-        }
-        ForkLiftRedisCommand redisCommand = JSON.parseObject(o.toString(), ForkLiftRedisCommand.class);
-        ForkLiftAssignCommand assignCommand = redisCommand.getAssignCommand();
-        List<ForkLiftCommand> commands = assignCommand.getCommands();
-        ForkLiftCommand command = commands.get(commandStep);
-        command.setComplete(complete != 0);
-        redisUtil.set(RedisKeyType.FORK_LIFT_WORK_FLAG.key + wrkNo, JSON.toJSONString(redisCommand));
-        return R.ok();
-    }
-
-    //閲嶅惎浠诲姟(鍛戒护)
-    @RequestMapping(value = "/command/restart")
-    public R liftCommandCompleteSwitch(@RequestParam("wrkNo") Integer wrkNo) {
-        Object o = redisUtil.get(RedisKeyType.FORK_LIFT_WORK_FLAG.key + wrkNo);
-        if (o == null) {
-            return R.error();
-        }
-        ForkLiftRedisCommand redisCommand = JSON.parseObject(o.toString(), ForkLiftRedisCommand.class);
-        Integer liftNo = redisCommand.getLiftNo();
-        ForkLiftThread forkLiftThread = (ForkLiftThread) SlaveConnection.get(SlaveType.ForkLift, liftNo);
-        if (forkLiftThread == null) {
-            return R.error();
-        }
-        ForkLiftProtocol forkLiftProtocol = forkLiftThread.getStatus();
-        if (forkLiftProtocol == null) {
-            return R.error();
-        }
-        if (!forkLiftThread.isIdle()) {
-            return R.error();
-        }
-        //鎻愬崌鏈哄浜庣┖闂茬姸鎬侊紝杩涜浠诲姟鐨勬仮澶�
-        forkLiftThread.setSyncTaskNo(redisCommand.getWrkNo());//灏嗘彁鍗囨満绾跨▼鍒嗛厤浠诲姟鍙�
-        return R.ok();
-    }
-
-    //鍒犻櫎浠诲姟(鍛戒护)
-    @RequestMapping(value = "/command/del")
-    public R liftCommandDel(@RequestParam("wrkNo") Integer wrkNo) {
-        Object o = redisUtil.get(RedisKeyType.FORK_LIFT_WORK_FLAG.key + wrkNo);
-        if (o == null) {
-            return R.error();
-        }
-        redisUtil.del(RedisKeyType.FORK_LIFT_WORK_FLAG.key + wrkNo);
-        return R.ok();
-    }
-
-    /****************************************************************/
-    /************************** 鎵嬪姩鎿嶄綔 ******************************/
-    /****************************************************************/
-
-    @ManagerAuth(memo = "鎵嬪姩鎿嶄綔")
-    @PostMapping("/operator/lift")
-    public R liftOperator(LiftOperatorParam param){
-        if (Cools.isEmpty(param.getLiftNo())) {
-            return R.parse(BaseRes.PARAM);
-        }
-
-        ForkLiftThread forkLiftThread = (ForkLiftThread) SlaveConnection.get(SlaveType.ForkLift, param.getLiftNo());
-        if (forkLiftThread == null) {
-            throw new CoolException("鎻愬崌鏈轰笉鍦ㄧ嚎");
-        }
-        ForkLiftProtocol forkLiftProtocol = forkLiftThread.getStatus();
-        if (forkLiftProtocol == null) {
-            throw new CoolException("鎻愬崌鏈轰笉鍦ㄧ嚎");
-        }
-
-        if (param.getLiftTaskMode() == 1) {
-            //灏忚溅鎹㈠眰
-            int workNo = commonService.getWorkNo(WrkIoType.MANUAL.id);//鑾峰彇浠诲姟鍙�
-
-            Integer startSta = param.getSourceStaNo();
-            Integer targetSta = param.getStaNo();
-
-            //鑾峰彇鎻愬崌鏈哄懡浠�
-            ForkLiftCommand liftCommand = forkLiftThread.getShuttleSwitchCommand(workNo, startSta, targetSta);
-            ArrayList<ForkLiftCommand> commands = new ArrayList<>();
-            commands.add(liftCommand);
-
-            //鎻愪氦鍒扮嚎绋嬪幓宸ヤ綔
-            ForkLiftAssignCommand assignCommand = new ForkLiftAssignCommand();
-            assignCommand.setCommands(commands);
-            assignCommand.setLiftNo(forkLiftProtocol.getLiftNo());
-            assignCommand.setTaskNo(workNo);
-            assignCommand.setAuto(false);//鎵嬪姩妯″紡
-            assignCommand.setTaskMode(ForkLiftTaskModeType.SHUTTLE_SWITCH.id);
-
-            forkLiftAction.assignWork(forkLiftProtocol.getLiftNo(), assignCommand);
-            return R.ok();
-        } else if (param.getLiftTaskMode() == 2) {
-            //绉诲姩鎵樼洏
-            int workNo = commonService.getWorkNo(WrkIoType.MANUAL.id);//鑾峰彇浠诲姟鍙�
-
-            Integer startSta = param.getSourceStaNo();
-            Integer targetSta = param.getStaNo();
-
-            //鑾峰彇鎻愬崌鏈哄懡浠�
-            ForkLiftCommand liftCommand = forkLiftThread.getPickAndPutCommand(workNo, startSta, targetSta);
-            ArrayList<ForkLiftCommand> commands = new ArrayList<>();
-            commands.add(liftCommand);
-
-            //鎻愪氦鍒扮嚎绋嬪幓宸ヤ綔
-            ForkLiftAssignCommand assignCommand = new ForkLiftAssignCommand();
-            assignCommand.setCommands(commands);
-            assignCommand.setLiftNo(forkLiftProtocol.getLiftNo());
-            assignCommand.setTaskNo(workNo);
-            assignCommand.setAuto(false);//鎵嬪姩妯″紡
-            assignCommand.setTaskMode(ForkLiftTaskModeType.PICK_PUT.id);
-
-            forkLiftAction.assignWork(forkLiftProtocol.getLiftNo(), assignCommand);
-            return R.ok();
-        } else if (param.getLiftTaskMode() == 3) {
-            //绉诲姩
-            int workNo = commonService.getWorkNo(WrkIoType.MANUAL.id);//鑾峰彇浠诲姟鍙�
-
-            Integer startSta = param.getSourceStaNo();
-            Integer targetSta = param.getStaNo();
-
-            //鑾峰彇鎻愬崌鏈哄懡浠�
-            ForkLiftCommand liftCommand = forkLiftThread.getMoveCommand(workNo, startSta, targetSta);
-            ArrayList<ForkLiftCommand> commands = new ArrayList<>();
-            commands.add(liftCommand);
-
-            //鎻愪氦鍒扮嚎绋嬪幓宸ヤ綔
-            ForkLiftAssignCommand assignCommand = new ForkLiftAssignCommand();
-            assignCommand.setCommands(commands);
-            assignCommand.setLiftNo(forkLiftProtocol.getLiftNo());
-            assignCommand.setTaskNo(workNo);
-            assignCommand.setAuto(false);//鎵嬪姩妯″紡
-            assignCommand.setTaskMode(ForkLiftTaskModeType.MOVE.id);
-
-            forkLiftAction.assignWork(forkLiftProtocol.getLiftNo(), assignCommand);
-            return R.ok();
-        } else if (param.getLiftTaskMode() == 4) {
-            //浠诲姟纭
-            forkLiftThread.reset();
-            return R.ok();
-        } else if (param.getLiftTaskMode() == 0) {
-            //鎻愬崌鏈哄浣�
-            forkLiftThread.setSyncTaskNo(0);
-            forkLiftThread.setProtocolStatus(ForkLiftProtocolStatusType.IDLE);
-            return R.ok();
-        } else {
-            throw new CoolException("鏈煡鍛戒护");
-        }
-    }
-
-}
diff --git a/src/main/java/com/zy/asrs/controller/LiftController.java b/src/main/java/com/zy/asrs/controller/LiftController.java
deleted file mode 100644
index c3552dc..0000000
--- a/src/main/java/com/zy/asrs/controller/LiftController.java
+++ /dev/null
@@ -1,361 +0,0 @@
-package com.zy.asrs.controller;
-
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONObject;
-import com.baomidou.mybatisplus.mapper.EntityWrapper;
-import com.core.annotations.ManagerAuth;
-import com.core.common.BaseRes;
-import com.core.common.Cools;
-import com.core.common.R;
-import com.core.exception.CoolException;
-import com.zy.asrs.domain.param.LiftOperatorParam;
-import com.zy.asrs.domain.vo.LiftDataVo;
-import com.zy.asrs.domain.vo.LiftMsgTableVo;
-import com.zy.asrs.domain.vo.LiftSensorDataVo;
-import com.zy.asrs.entity.BasLift;
-import com.zy.asrs.entity.DeviceConfig;
-import com.zy.asrs.service.BasLiftService;
-import com.zy.asrs.service.DeviceConfigService;
-import com.zy.common.service.CommonService;
-import com.zy.common.utils.RedisUtil;
-import com.zy.core.action.LiftAction;
-import com.zy.core.cache.OutputQueue;
-import com.zy.core.cache.SlaveConnection;
-import com.zy.core.enums.*;
-import com.zy.core.model.command.LiftAssignCommand;
-import com.zy.core.model.command.LiftCommand;
-import com.zy.core.model.command.LiftRedisCommand;
-import com.zy.core.model.protocol.LiftProtocol;
-import com.zy.core.model.protocol.LiftStaProtocol;
-import com.zy.core.thread.LiftThread;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.*;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * 鎻愬崌鏈烘帴鍙�
- */
-@Slf4j
-@RestController
-@RequestMapping("/lift")
-public class LiftController {
-
-    @Autowired
-    private CommonService commonService;
-    @Autowired
-    private BasLiftService basLiftService;
-    @Autowired
-    private RedisUtil redisUtil;
-    @Autowired
-    private LiftAction liftAction;
-    @Autowired
-    private DeviceConfigService deviceConfigService;
-
-    @PostMapping("/table/lift/state")
-    @ManagerAuth(memo = "鎻愬崌鏈轰俊鎭〃")
-    public R liftStateTable(){
-        ArrayList<JSONObject> list = new ArrayList<>();
-        List<DeviceConfig> liftList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>()
-                .eq("device_type", String.valueOf(SlaveType.Lift)));
-        for (DeviceConfig device : liftList) {
-            // 琛ㄦ牸琛�
-            JSONObject baseObj = new JSONObject();
-            baseObj.put("liftNo", device.getDeviceNo());
-            list.add(baseObj);
-            // 鑾峰彇鎻愬崌鏈轰俊鎭�
-            LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, device.getDeviceNo());
-            if (liftThread == null) {
-                continue;
-            }
-            LiftProtocol liftProtocol = liftThread.getStatus();
-            if (liftProtocol == null) {
-                continue;
-            }
-            JSONObject data = JSON.parseObject(JSON.toJSONString(liftProtocol));
-            List<LiftStaProtocol> liftStaProtocols = liftThread.getLiftStaProtocols();
-            data.put("liftStaProtocols", liftStaProtocols);
-            baseObj.putAll(data);
-        }
-        return R.ok().add(list);
-    }
-
-    @PostMapping("/table/lift/msg")
-    @ManagerAuth(memo = "鎻愬崌鏈烘暟鎹〃")
-    public R liftMsgTable(){
-        List<LiftMsgTableVo> list = new ArrayList<>();
-        List<DeviceConfig> liftList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>()
-                .eq("device_type", String.valueOf(SlaveType.Lift)));
-        for (DeviceConfig device : liftList) {
-            // 琛ㄦ牸琛�
-            LiftMsgTableVo vo = new LiftMsgTableVo();
-            vo.setLiftNo(device.getDeviceNo());   //  鎻愬崌鏈哄彿
-            list.add(vo);
-            // 鑾峰彇鎻愬崌鏈轰俊鎭�
-            LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, device.getDeviceNo());
-            if (liftThread == null) {
-                continue;
-            }
-            LiftProtocol liftProtocol = liftThread.getStatus();
-            if (liftProtocol == null) {
-                continue;
-            }
-
-            vo.setWorkNo(liftProtocol.getTaskNo());//浠诲姟鍙�
-            vo.setPakMk(liftProtocol.getPakMk()?"Y" : "N");    // 浣滀笟鏍囪
-            vo.setLiftStaProtocols(liftThread.getLiftStaProtocols());
-        }
-        return R.ok().add(list);
-    }
-
-    @PostMapping("/output/lift")
-    @ManagerAuth
-    public R liftOutput(){
-        StringBuilder str = new StringBuilder();
-        String s;
-        int i = 0;
-        while((s = OutputQueue.LIFT.poll()) != null && i <=10) {
-            str.append("\n").append(s);
-            i++;
-        }
-        return R.ok().add(str.toString());
-    }
-
-    @GetMapping("/detl/{liftNo}")
-    public R liftDetl(@PathVariable("liftNo") Integer liftNo){
-        LiftDataVo vo = new LiftDataVo();
-        List<DeviceConfig> liftList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>()
-                .eq("device_type", String.valueOf(SlaveType.Lift)));
-        for (DeviceConfig device : liftList) {
-            if (liftNo.equals(device.getDeviceNo())) {
-                vo.setLiftNo(device.getDeviceNo());
-                BasLift basLift = basLiftService.selectById(device.getDeviceNo());
-                if (!Cools.isEmpty(basLift)) {
-                    vo.setWorkNo(basLift.getWrkNo());
-                    vo.setPakMk(basLift.getPakMk());
-                }
-                break;
-            }
-        }
-        return R.ok().add(vo);
-    }
-
-    @GetMapping("/sensor/detl/{liftNo}")
-    public R liftSensorDetl(@PathVariable("liftNo") Integer liftNo){
-        LiftSensorDataVo vo = new LiftSensorDataVo();
-        List<DeviceConfig> liftList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>()
-                .eq("device_type", String.valueOf(SlaveType.Lift)));
-        for (DeviceConfig device : liftList) {
-            if (liftNo.equals(device.getDeviceNo())) {
-                vo.setLiftNo(device.getDeviceNo());
-                // 鑾峰彇鎻愬崌鏈轰俊鎭�
-                LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, device.getDeviceNo());
-                if (liftThread == null) {
-                    return R.error("璁惧涓嶅湪绾�");
-                }
-                LiftProtocol liftProtocol = liftThread.getStatus();
-                if (liftProtocol == null) {
-                    return R.error("璁惧涓嶅湪绾�");
-                }
-
-                break;
-            }
-        }
-        return R.ok().add(vo);
-    }
-
-    @PostMapping("/detl/update")
-    @ManagerAuth(memo = "淇敼鏁版嵁")
-    public R liftUpdate(@RequestParam Integer liftNo,
-                        @RequestParam Integer workNo) {
-        LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, liftNo);
-        if (liftThread == null) {
-            return R.error("plc宸叉帀绾�");
-        }
-        LiftProtocol liftProtocol = liftThread.getStatus();
-        if (liftProtocol == null) {
-            return R.error("plc宸叉帀绾�");
-        }
-        if (workNo != null) {
-            liftThread.setSyncTaskNo(workNo);
-        }
-        return R.ok();
-    }
-
-    @RequestMapping(value = "/command/query")
-    public R liftCommandQuery(@RequestParam("wrkNo") Integer wrkNo) {
-        Object o = redisUtil.get(RedisKeyType.LIFT_WORK_FLAG.key + wrkNo);
-        if (o == null) {
-            return R.error();
-        }
-        LiftRedisCommand redisCommand = JSON.parseObject(o.toString(), LiftRedisCommand.class);
-        return R.ok().add(redisCommand);
-    }
-
-    //鍥為��鍛戒护
-    @RequestMapping(value = "/command/rollback")
-    public R liftCommandRollback(@RequestParam("wrkNo") Integer wrkNo
-            , @RequestParam("commandStep") Integer commandStep) {
-        Object o = redisUtil.get(RedisKeyType.LIFT_WORK_FLAG.key + wrkNo);
-        if (o == null) {
-            return R.error();
-        }
-        LiftRedisCommand redisCommand = JSON.parseObject(o.toString(), LiftRedisCommand.class);
-        redisCommand.setCommandStep(commandStep);
-        redisUtil.set(RedisKeyType.LIFT_WORK_FLAG.key + wrkNo, JSON.toJSONString(redisCommand));
-        return R.ok();
-    }
-
-    //鍛戒护瀹屾垚鐘舵�佸垏鎹�
-    @RequestMapping(value = "/command/completeSwitch")
-    public R liftCommandCompleteSwitch(@RequestParam("wrkNo") Integer wrkNo
-            , @RequestParam("commandStep") Integer commandStep
-            , @RequestParam("complete") Integer complete) {
-        Object o = redisUtil.get(RedisKeyType.LIFT_WORK_FLAG.key + wrkNo);
-        if (o == null) {
-            return R.error();
-        }
-        LiftRedisCommand redisCommand = JSON.parseObject(o.toString(), LiftRedisCommand.class);
-        LiftAssignCommand assignCommand = redisCommand.getAssignCommand();
-        List<LiftCommand> commands = assignCommand.getCommands();
-        LiftCommand command = commands.get(commandStep);
-        command.setComplete(complete != 0);
-        redisUtil.set(RedisKeyType.LIFT_WORK_FLAG.key + wrkNo, JSON.toJSONString(redisCommand));
-        return R.ok();
-    }
-
-    //閲嶅惎浠诲姟(鍛戒护)
-    @RequestMapping(value = "/command/restart")
-    public R liftCommandCompleteSwitch(@RequestParam("wrkNo") Integer wrkNo) {
-        Object o = redisUtil.get(RedisKeyType.LIFT_WORK_FLAG.key + wrkNo);
-        if (o == null) {
-            return R.error();
-        }
-        LiftRedisCommand redisCommand = JSON.parseObject(o.toString(), LiftRedisCommand.class);
-        Integer liftNo = redisCommand.getLiftNo();
-        LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, liftNo);
-        if (liftThread == null) {
-            return R.error();
-        }
-        LiftProtocol liftProtocol = liftThread.getStatus();
-        if (liftProtocol == null) {
-            return R.error();
-        }
-        if (!liftThread.isIdle()) {
-            return R.error();
-        }
-        //鎻愬崌鏈哄浜庣┖闂茬姸鎬侊紝杩涜浠诲姟鐨勬仮澶�
-        liftThread.setSyncTaskNo(redisCommand.getWrkNo());//灏嗘彁鍗囨満绾跨▼鍒嗛厤浠诲姟鍙�
-        return R.ok();
-    }
-
-    //鍒犻櫎浠诲姟(鍛戒护)
-    @RequestMapping(value = "/command/del")
-    public R liftCommandDel(@RequestParam("wrkNo") Integer wrkNo) {
-        Object o = redisUtil.get(RedisKeyType.LIFT_WORK_FLAG.key + wrkNo);
-        if (o == null) {
-            return R.error();
-        }
-        redisUtil.del(RedisKeyType.LIFT_WORK_FLAG.key + wrkNo);
-        return R.ok();
-    }
-
-    /****************************************************************/
-    /************************** 鎵嬪姩鎿嶄綔 ******************************/
-    /****************************************************************/
-
-    @ManagerAuth(memo = "鎵嬪姩鎿嶄綔")
-    @PostMapping("/operator/lift")
-    public R liftOperator(LiftOperatorParam param){
-        if (Cools.isEmpty(param.getLiftNo())) {
-            return R.parse(BaseRes.PARAM);
-        }
-
-        LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, param.getLiftNo());
-        if (liftThread == null) {
-            throw new CoolException("鎻愬崌鏈轰笉鍦ㄧ嚎");
-        }
-        LiftProtocol liftProtocol = liftThread.getStatus();
-        if (liftProtocol == null) {
-            throw new CoolException("鎻愬崌鏈轰笉鍦ㄧ嚎");
-        }
-
-        if (param.getLiftTaskMode().equals(LiftTaskModeType.SHUTTLE_SWITCH.id)) {
-            //灏忚溅鎹㈠眰
-            int workNo = commonService.getWorkNo(WrkIoType.MANUAL.id);//鑾峰彇浠诲姟鍙�
-
-            Integer startSta = param.getSourceStaNo();
-            Integer targetSta = param.getStaNo();
-
-            //鑾峰彇鎻愬崌鏈哄懡浠�
-            LiftCommand liftCommand = liftThread.getShuttleSwitchCommand(workNo, startSta, targetSta);
-            ArrayList<LiftCommand> commands = new ArrayList<>();
-            commands.add(liftCommand);
-
-            //鎻愪氦鍒扮嚎绋嬪幓宸ヤ綔
-            LiftAssignCommand assignCommand = new LiftAssignCommand();
-            assignCommand.setCommands(commands);
-            assignCommand.setLiftNo(liftProtocol.getLiftNo());
-            assignCommand.setTaskNo(workNo);
-            assignCommand.setAuto(false);//鎵嬪姩妯″紡
-            assignCommand.setTaskMode(LiftTaskModeType.SHUTTLE_SWITCH.id);
-
-            liftAction.assignWork(liftProtocol.getLiftNo(), assignCommand);
-            return R.ok();
-        } else if (param.getLiftTaskMode().equals(LiftTaskModeType.PICK_PUT.id)) {
-            //绉诲姩鎵樼洏
-            int workNo = commonService.getWorkNo(WrkIoType.MANUAL.id);//鑾峰彇浠诲姟鍙�
-
-            Integer startSta = param.getSourceStaNo();
-            Integer targetSta = param.getStaNo();
-
-            //鑾峰彇鎻愬崌鏈哄懡浠�
-            LiftCommand liftCommand = liftThread.getPickAndPutCommand(workNo, startSta, targetSta);
-            ArrayList<LiftCommand> commands = new ArrayList<>();
-            commands.add(liftCommand);
-
-            //鎻愪氦鍒扮嚎绋嬪幓宸ヤ綔
-            LiftAssignCommand assignCommand = new LiftAssignCommand();
-            assignCommand.setCommands(commands);
-            assignCommand.setLiftNo(liftProtocol.getLiftNo());
-            assignCommand.setTaskNo(workNo);
-            assignCommand.setAuto(false);//鎵嬪姩妯″紡
-            assignCommand.setTaskMode(LiftTaskModeType.PICK_PUT.id);
-
-            liftAction.assignWork(liftProtocol.getLiftNo(), assignCommand);
-            return R.ok();
-        } else if (param.getLiftTaskMode().equals(LiftTaskModeType.MOVE.id)) {
-            //绉诲姩
-            int workNo = commonService.getWorkNo(WrkIoType.MANUAL.id);//鑾峰彇浠诲姟鍙�
-
-            Integer startSta = param.getSourceStaNo();
-            Integer targetSta = param.getStaNo();
-
-            //鑾峰彇鎻愬崌鏈哄懡浠�
-            LiftCommand liftCommand = liftThread.getMoveCommand(workNo, startSta, targetSta);
-            ArrayList<LiftCommand> commands = new ArrayList<>();
-            commands.add(liftCommand);
-
-            //鎻愪氦鍒扮嚎绋嬪幓宸ヤ綔
-            LiftAssignCommand assignCommand = new LiftAssignCommand();
-            assignCommand.setCommands(commands);
-            assignCommand.setLiftNo(liftProtocol.getLiftNo());
-            assignCommand.setTaskNo(workNo);
-            assignCommand.setAuto(false);//鎵嬪姩妯″紡
-            assignCommand.setTaskMode(LiftTaskModeType.MOVE.id);
-
-            liftAction.assignWork(liftProtocol.getLiftNo(), assignCommand);
-            return R.ok();
-        } else if (param.getLiftTaskMode().equals(LiftTaskModeType.RESET.id)) {
-            //鎻愬崌鏈哄浣�
-            liftThread.setSyncTaskNo(0);
-            liftThread.setProtocolStatus(LiftProtocolStatusType.IDLE);
-            return R.ok();
-        } else {
-            throw new CoolException("鏈煡鍛戒护");
-        }
-    }
-
-}
diff --git a/src/main/java/com/zy/asrs/controller/LocMastController.java b/src/main/java/com/zy/asrs/controller/LocMastController.java
index 09048b0..db68d3b 100644
--- a/src/main/java/com/zy/asrs/controller/LocMastController.java
+++ b/src/main/java/com/zy/asrs/controller/LocMastController.java
@@ -1,6 +1,5 @@
 package com.zy.asrs.controller;
 
-import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
@@ -12,20 +11,9 @@
 import com.core.common.DateUtils;
 import com.core.common.R;
 import com.core.exception.CoolException;
-import com.zy.asrs.entity.BasMap;
-import com.zy.asrs.entity.BasShuttleCharge;
 import com.zy.asrs.entity.LocMast;
-import com.zy.asrs.service.BasMapService;
-import com.zy.asrs.service.BasShuttleChargeService;
 import com.zy.asrs.service.LocMastService;
-import com.zy.asrs.utils.Utils;
-import com.zy.common.model.MapNode;
-import com.zy.common.model.NavigateNode;
-import com.zy.common.model.enums.NavigationMapType;
-import com.zy.common.utils.NavigateMapData;
 import com.zy.common.web.BaseController;
-import com.zy.core.enums.LocStsType;
-import com.zy.core.enums.MapNodeType;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
@@ -38,13 +26,7 @@
 public class LocMastController extends BaseController {
 
     @Autowired
-    private NavigateMapData navigateMapData;
-    @Autowired
     private LocMastService locMastService;
-    @Autowired
-    private BasMapService basMapService;
-    @Autowired
-    private BasShuttleChargeService basShuttleChargeService;
 
     @RequestMapping(value = "/locMast/{id}/auth")
     @ManagerAuth
@@ -150,145 +132,145 @@
     @ManagerAuth(memo = "鍒濆鍖栧簱浣�")
     @Transactional
     public R locMastInit() {
-        List<BasMap> basMaps = basMapService.selectList(new EntityWrapper<BasMap>().orderBy("lev", true));
-        basShuttleChargeService.delete(new EntityWrapper<>());
-        int chargeNo = 1;
-        for (BasMap basMap : basMaps) {
-            Integer lev = basMap.getLev();
-            locMastService.delete(new EntityWrapper<>(new LocMast())
-                    .eq("lev1", lev));
-            List<List<MapNode>> lists = navigateMapData.getJsonData(lev, NavigationMapType.getMapTypes(NavigationMapType.NONE), null, null);//鑾峰彇瀹屾暣鍦板浘(鍖呮嫭鍏ュ簱鍑哄簱)
-            for (int row = 0; row < lists.size(); row++) {
-                List<MapNode> nodeList = lists.get(row);
-                for (int bay = 0; bay < nodeList.size(); bay++) {
-                    MapNode mapNode = nodeList.get(bay);
-
-                    if (mapNode.getValue() == MapNodeType.DISABLE.id) {
-                        continue;
-                    }
-
-                    String locNo = Utils.getLocNo(row, bay, lev);
-                    LocMast locMast = new LocMast();
-                    locMast.setLocNo(locNo);
-                    locMast.setRow1(row);
-                    locMast.setBay1(bay);
-                    locMast.setLev1(lev);
-                    locMast.setStatus(1);
-
-                    if (mapNode.getValue() == MapNodeType.NORMAL_PATH.id) {
-                        locMast.setLocSts(LocStsType.O.toString());
-                    } else if (mapNode.getValue() == MapNodeType.MAIN_PATH.id) {
-                        locMast.setLocSts(LocStsType.W.toString());
-                    } else if (mapNode.getValue() == MapNodeType.CHARGE.id) {
-                        locMast.setLocSts(LocStsType.C.toString());
-
-                        BasShuttleCharge basShuttleCharge = new BasShuttleCharge();
-                        basShuttleCharge.setChargeId(chargeNo++);
-                        basShuttleCharge.setLocNo(locNo);
-                        basShuttleCharge.setWaitLocNo(locNo);
-                        basShuttleCharge.setStatus(1);
-                        basShuttleCharge.setCreateTime(new Date());
-                        basShuttleCharge.setUpdateTime(new Date());
-                        basShuttleChargeService.insert(basShuttleCharge);
-                    } else if (mapNode.getValue() == MapNodeType.CONVEYOR.id) {
-                        locMast.setLocSts(LocStsType.E.toString());
-                    } else if (mapNode.getValue() == MapNodeType.LIFT.id) {
-                        locMast.setLocSts(LocStsType.E.toString());
-                    }
-
-                    locMastService.insert(locMast);
-                }
-            }
-
-            LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("lev1", lev).orderBy("row1", false));
-            Integer rowMax = locMast.getRow1();
-            LocMast locMast2 = locMastService.selectOne(new EntityWrapper<LocMast>().eq("lev1", lev).orderBy("bay1", false));
-            Integer bayMax = locMast2.getBay1();
-
-            Integer baseRow = basMap.getBaseRow();
-            Integer baseRowCode = basMap.getBaseRowCode();
-
-            if (baseRow > 0) {
-                for (int i = baseRow; i <= rowMax; i++) {
-                    Integer baseBayCode = basMap.getBaseBayCode();
-                    if (basMap.getBaseBay() > 0) {
-                        for (int j = basMap.getBaseBay(); j <= bayMax; j++) {
-                            String locNo = Utils.getLocNo(i, j, lev);
-
-                            LocMast locMast1 = locMastService.selectOne(new EntityWrapper<LocMast>()
-                                    .eq("loc_no", locNo));
-                            if (locMast1 != null) {
-                                HashMap<String, Object> point = new HashMap<>();
-                                point.put("y", baseRowCode);
-                                point.put("x", baseBayCode);
-                                point.put("z", lev);
-                                locMast1.setQrCodeValue(JSON.toJSONString(point));
-                                locMastService.updateById(locMast1);
-                            }
-                            baseBayCode += 1;
-                        }
-                    }else {
-                        int baseBay = basMap.getBaseBay() * -1;
-                        for (int j = baseBay; j > 0; j--) {
-                            String locNo = Utils.getLocNo(i, j, lev);
-
-                            LocMast locMast1 = locMastService.selectOne(new EntityWrapper<LocMast>()
-                                    .eq("loc_no", locNo));
-                            if (locMast1 != null) {
-                                HashMap<String, Object> point = new HashMap<>();
-                                point.put("y", baseRowCode);
-                                point.put("x", baseBayCode);
-                                point.put("z", lev);
-                                locMast1.setQrCodeValue(JSON.toJSONString(point));
-                                locMastService.updateById(locMast1);
-                            }
-                            baseBayCode += 1;
-                        }
-                    }
-                    baseRowCode += 1;
-                }
-            }else {
-                baseRow = baseRow * -1;
-                for (int i = baseRow; i > 0; i--) {
-                    Integer baseBayCode = basMap.getBaseBayCode();
-                    if (basMap.getBaseBay() > 0) {
-                        for (int j = basMap.getBaseBay(); j <= bayMax; j++) {
-                            String locNo = Utils.getLocNo(i, j, lev);
-
-                            LocMast locMast1 = locMastService.selectOne(new EntityWrapper<LocMast>()
-                                    .eq("loc_no", locNo));
-                            if (locMast1 != null) {
-                                HashMap<String, Object> point = new HashMap<>();
-                                point.put("y", baseRowCode);
-                                point.put("x", baseBayCode);
-                                point.put("z", lev);
-                                locMast1.setQrCodeValue(JSON.toJSONString(point));
-                                locMastService.updateById(locMast1);
-                            }
-                            baseBayCode += 1;
-                        }
-                    }else {
-                        int baseBay = basMap.getBaseBay() * -1;
-                        for (int j = baseBay; j > 0; j--) {
-                            String locNo = Utils.getLocNo(i, j, lev);
-
-                            LocMast locMast1 = locMastService.selectOne(new EntityWrapper<LocMast>()
-                                    .eq("loc_no", locNo));
-                            if (locMast1 != null) {
-                                HashMap<String, Object> point = new HashMap<>();
-                                point.put("y", baseRowCode);
-                                point.put("x", baseBayCode);
-                                point.put("z", lev);
-                                locMast1.setQrCodeValue(JSON.toJSONString(point));
-                                locMastService.updateById(locMast1);
-                            }
-                            baseBayCode += 1;
-                        }
-                    }
-                    baseRowCode += 1;
-                }
-            }
-        }
+//        List<BasMap> basMaps = basMapService.selectList(new EntityWrapper<BasMap>().orderBy("lev", true));
+//        basShuttleChargeService.delete(new EntityWrapper<>());
+//        int chargeNo = 1;
+//        for (BasMap basMap : basMaps) {
+//            Integer lev = basMap.getLev();
+//            locMastService.delete(new EntityWrapper<>(new LocMast())
+//                    .eq("lev1", lev));
+//            List<List<MapNode>> lists = navigateMapData.getJsonData(lev, NavigationMapType.getMapTypes(NavigationMapType.NONE), null, null);//鑾峰彇瀹屾暣鍦板浘(鍖呮嫭鍏ュ簱鍑哄簱)
+//            for (int row = 0; row < lists.size(); row++) {
+//                List<MapNode> nodeList = lists.get(row);
+//                for (int bay = 0; bay < nodeList.size(); bay++) {
+//                    MapNode mapNode = nodeList.get(bay);
+//
+//                    if (mapNode.getValue() == MapNodeType.DISABLE.id) {
+//                        continue;
+//                    }
+//
+//                    String locNo = Utils.getLocNo(row, bay, lev);
+//                    LocMast locMast = new LocMast();
+//                    locMast.setLocNo(locNo);
+//                    locMast.setRow1(row);
+//                    locMast.setBay1(bay);
+//                    locMast.setLev1(lev);
+//                    locMast.setStatus(1);
+//
+//                    if (mapNode.getValue() == MapNodeType.NORMAL_PATH.id) {
+//                        locMast.setLocSts(LocStsType.O.toString());
+//                    } else if (mapNode.getValue() == MapNodeType.MAIN_PATH.id) {
+//                        locMast.setLocSts(LocStsType.W.toString());
+//                    } else if (mapNode.getValue() == MapNodeType.CHARGE.id) {
+//                        locMast.setLocSts(LocStsType.C.toString());
+//
+//                        BasShuttleCharge basShuttleCharge = new BasShuttleCharge();
+//                        basShuttleCharge.setChargeId(chargeNo++);
+//                        basShuttleCharge.setLocNo(locNo);
+//                        basShuttleCharge.setWaitLocNo(locNo);
+//                        basShuttleCharge.setStatus(1);
+//                        basShuttleCharge.setCreateTime(new Date());
+//                        basShuttleCharge.setUpdateTime(new Date());
+//                        basShuttleChargeService.insert(basShuttleCharge);
+//                    } else if (mapNode.getValue() == MapNodeType.CONVEYOR.id) {
+//                        locMast.setLocSts(LocStsType.E.toString());
+//                    } else if (mapNode.getValue() == MapNodeType.LIFT.id) {
+//                        locMast.setLocSts(LocStsType.E.toString());
+//                    }
+//
+//                    locMastService.insert(locMast);
+//                }
+//            }
+//
+//            LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("lev1", lev).orderBy("row1", false));
+//            Integer rowMax = locMast.getRow1();
+//            LocMast locMast2 = locMastService.selectOne(new EntityWrapper<LocMast>().eq("lev1", lev).orderBy("bay1", false));
+//            Integer bayMax = locMast2.getBay1();
+//
+//            Integer baseRow = basMap.getBaseRow();
+//            Integer baseRowCode = basMap.getBaseRowCode();
+//
+//            if (baseRow > 0) {
+//                for (int i = baseRow; i <= rowMax; i++) {
+//                    Integer baseBayCode = basMap.getBaseBayCode();
+//                    if (basMap.getBaseBay() > 0) {
+//                        for (int j = basMap.getBaseBay(); j <= bayMax; j++) {
+//                            String locNo = Utils.getLocNo(i, j, lev);
+//
+//                            LocMast locMast1 = locMastService.selectOne(new EntityWrapper<LocMast>()
+//                                    .eq("loc_no", locNo));
+//                            if (locMast1 != null) {
+//                                HashMap<String, Object> point = new HashMap<>();
+//                                point.put("y", baseRowCode);
+//                                point.put("x", baseBayCode);
+//                                point.put("z", lev);
+//                                locMast1.setQrCodeValue(JSON.toJSONString(point));
+//                                locMastService.updateById(locMast1);
+//                            }
+//                            baseBayCode += 1;
+//                        }
+//                    }else {
+//                        int baseBay = basMap.getBaseBay() * -1;
+//                        for (int j = baseBay; j > 0; j--) {
+//                            String locNo = Utils.getLocNo(i, j, lev);
+//
+//                            LocMast locMast1 = locMastService.selectOne(new EntityWrapper<LocMast>()
+//                                    .eq("loc_no", locNo));
+//                            if (locMast1 != null) {
+//                                HashMap<String, Object> point = new HashMap<>();
+//                                point.put("y", baseRowCode);
+//                                point.put("x", baseBayCode);
+//                                point.put("z", lev);
+//                                locMast1.setQrCodeValue(JSON.toJSONString(point));
+//                                locMastService.updateById(locMast1);
+//                            }
+//                            baseBayCode += 1;
+//                        }
+//                    }
+//                    baseRowCode += 1;
+//                }
+//            }else {
+//                baseRow = baseRow * -1;
+//                for (int i = baseRow; i > 0; i--) {
+//                    Integer baseBayCode = basMap.getBaseBayCode();
+//                    if (basMap.getBaseBay() > 0) {
+//                        for (int j = basMap.getBaseBay(); j <= bayMax; j++) {
+//                            String locNo = Utils.getLocNo(i, j, lev);
+//
+//                            LocMast locMast1 = locMastService.selectOne(new EntityWrapper<LocMast>()
+//                                    .eq("loc_no", locNo));
+//                            if (locMast1 != null) {
+//                                HashMap<String, Object> point = new HashMap<>();
+//                                point.put("y", baseRowCode);
+//                                point.put("x", baseBayCode);
+//                                point.put("z", lev);
+//                                locMast1.setQrCodeValue(JSON.toJSONString(point));
+//                                locMastService.updateById(locMast1);
+//                            }
+//                            baseBayCode += 1;
+//                        }
+//                    }else {
+//                        int baseBay = basMap.getBaseBay() * -1;
+//                        for (int j = baseBay; j > 0; j--) {
+//                            String locNo = Utils.getLocNo(i, j, lev);
+//
+//                            LocMast locMast1 = locMastService.selectOne(new EntityWrapper<LocMast>()
+//                                    .eq("loc_no", locNo));
+//                            if (locMast1 != null) {
+//                                HashMap<String, Object> point = new HashMap<>();
+//                                point.put("y", baseRowCode);
+//                                point.put("x", baseBayCode);
+//                                point.put("z", lev);
+//                                locMast1.setQrCodeValue(JSON.toJSONString(point));
+//                                locMastService.updateById(locMast1);
+//                            }
+//                            baseBayCode += 1;
+//                        }
+//                    }
+//                    baseRowCode += 1;
+//                }
+//            }
+//        }
 
         return R.ok();
     }
diff --git a/src/main/java/com/zy/asrs/controller/OpenController.java b/src/main/java/com/zy/asrs/controller/OpenController.java
index 77fd9cb..0aa3632 100644
--- a/src/main/java/com/zy/asrs/controller/OpenController.java
+++ b/src/main/java/com/zy/asrs/controller/OpenController.java
@@ -3,30 +3,17 @@
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.core.common.R;
-import com.zy.asrs.domain.ShuttleGatherResult;
-import com.zy.asrs.domain.enums.NotifyMsgType;
 import com.zy.asrs.domain.param.*;
 import com.zy.asrs.entity.ApiLog;
-import com.zy.asrs.entity.DeviceConfig;
 import com.zy.asrs.entity.LocMast;
 import com.zy.asrs.entity.WrkMast;
 import com.zy.asrs.service.ApiLogService;
-import com.zy.asrs.service.DeviceConfigService;
 import com.zy.asrs.service.LocMastService;
 import com.zy.asrs.service.WrkMastService;
 import com.zy.asrs.utils.NotifyUtils;
 import com.zy.common.annotations.OpenApiLog;
 import com.zy.common.service.CommonService;
-import com.zy.core.cache.SlaveConnection;
-import com.zy.core.dispatcher.ShuttleDispatchUtils;
-import com.zy.core.enums.SlaveType;
 import com.zy.core.enums.WrkIoType;
-import com.zy.core.model.protocol.ForkLiftProtocol;
-import com.zy.core.model.protocol.LiftProtocol;
-import com.zy.core.model.protocol.ShuttleProtocol;
-import com.zy.core.thread.ForkLiftThread;
-import com.zy.core.thread.LiftThread;
-import com.zy.core.thread.ShuttleThread;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
@@ -44,8 +31,6 @@
     @Autowired
     private CommonService commonService;
     @Autowired
-    private ShuttleDispatchUtils shuttleDispatchUtils;
-    @Autowired
     private NotifyUtils notifyUtils;
     @Autowired
     private ApiLogService apiLogService;
@@ -53,37 +38,6 @@
     private LocMastService locMastService;
     @Autowired
     private WrkMastService wrkMastService;
-    @Autowired
-    private DeviceConfigService deviceConfigService;
-
-    @PostMapping("/createMoveTask")
-    @OpenApiLog(memo = "灏忚溅绉诲姩浠诲姟")
-    public R createMoveTask(@RequestBody CreateMoveTaskParam param) {
-        if (param == null) {
-            return R.error("鍙傛暟涓嶈兘涓虹┖");
-        }
-        boolean dispatchShuttle = shuttleDispatchUtils.dispatchShuttle(null, param.getLocNo(), param.getShuttleNo());
-        apiLogService.insert(new ApiLog(
-                null
-                , "灏忚溅绉诲姩浠诲姟"
-                , "/createMoveTask"
-                , null
-                , null
-                , null
-                , JSON.toJSONString(param)
-                , null
-                , null
-                , dispatchShuttle ? 1 : 0
-                , 1
-                , new Date()
-                , null
-                , null
-        ));
-        if (dispatchShuttle) {
-            return R.ok();
-        }
-        return R.error("鐢熸垚澶辫触");
-    }
 
     //绉诲簱浠诲姟
     @PostMapping("/createLocMoveTask")
@@ -237,79 +191,60 @@
 //    @OpenApiLog(memo = "鑾峰彇璁惧鐘舵��")
     public R getDeviceStatus() {
         HashMap<String, Object> map = new HashMap<>();
-        //鑾峰彇灏忚溅鏁版嵁
-        ArrayList<ShuttleProtocol> shuttleProtocols = new ArrayList<>();
-        List<DeviceConfig> shuttleList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>()
-                .eq("device_type", String.valueOf(SlaveType.Shuttle)));
-        for (DeviceConfig device : shuttleList) {
-            ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, device.getDeviceNo());
-            if (shuttleThread == null) {
-                continue;
-            }
-
-            ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
-            if (shuttleProtocol == null) {
-                continue;
-            }
-            shuttleProtocols.add(shuttleProtocol);
-        }
-
-        //鑾峰彇璐у弶鎻愬崌鏈烘暟鎹�
-        ArrayList<ForkLiftProtocol> forkLiftProtocols = new ArrayList<>();
-        List<DeviceConfig> forkLiftList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>()
-                .eq("device_type", String.valueOf(SlaveType.ForkLift)));
-        for (DeviceConfig device : forkLiftList) {
-            ForkLiftThread forkLiftThread = (ForkLiftThread) SlaveConnection.get(SlaveType.ForkLift, device.getDeviceNo());
-            if (forkLiftThread == null) {
-                continue;
-            }
-
-            ForkLiftProtocol forkLiftProtocol = forkLiftThread.getStatus();
-            if (forkLiftProtocol == null) {
-                continue;
-            }
-            forkLiftProtocols.add(forkLiftProtocol);
-        }
-
-        //鑾峰彇鎻愬崌鏈烘暟鎹�
-        ArrayList<LiftProtocol> liftProtocols = new ArrayList<>();
-        List<DeviceConfig> liftList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>()
-                .eq("device_type", String.valueOf(SlaveType.Lift)));
-        for (DeviceConfig device : liftList) {
-            LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, device.getDeviceNo());
-            if (liftThread == null) {
-                continue;
-            }
-
-            LiftProtocol liftProtocol = liftThread.getStatus();
-            if (liftProtocol == null) {
-                continue;
-            }
-            liftProtocols.add(liftProtocol);
-        }
-
-        map.put("shuttle", shuttleProtocols);
-        map.put("forkLift", forkLiftProtocols);
-        map.put("lift", liftProtocols);
-
-        return R.ok().add(map);
-    }
-
-    @RequestMapping("/liftDeviceOriginData")
-    public R getLiftDeviceOriginData() {
-        HashMap<Integer, String> map = new HashMap<>();
-
-        //鑾峰彇鎻愬崌鏈烘暟鎹�
-        List<DeviceConfig> liftList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>()
-                .eq("device_type", String.valueOf(SlaveType.Lift)));
-        for (DeviceConfig device : liftList) {
-            LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, device.getDeviceNo());
-            if (liftThread == null) {
-                continue;
-            }
-
-            map.put(device.getDeviceNo(), liftThread.getRealtimeOriginData());
-        }
+//        //鑾峰彇灏忚溅鏁版嵁
+//        ArrayList<ShuttleProtocol> shuttleProtocols = new ArrayList<>();
+//        List<DeviceConfig> shuttleList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>()
+//                .eq("device_type", String.valueOf(SlaveType.Shuttle)));
+//        for (DeviceConfig device : shuttleList) {
+//            ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, device.getDeviceNo());
+//            if (shuttleThread == null) {
+//                continue;
+//            }
+//
+//            ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
+//            if (shuttleProtocol == null) {
+//                continue;
+//            }
+//            shuttleProtocols.add(shuttleProtocol);
+//        }
+//
+//        //鑾峰彇璐у弶鎻愬崌鏈烘暟鎹�
+//        ArrayList<ForkLiftProtocol> forkLiftProtocols = new ArrayList<>();
+//        List<DeviceConfig> forkLiftList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>()
+//                .eq("device_type", String.valueOf(SlaveType.ForkLift)));
+//        for (DeviceConfig device : forkLiftList) {
+//            ForkLiftThread forkLiftThread = (ForkLiftThread) SlaveConnection.get(SlaveType.ForkLift, device.getDeviceNo());
+//            if (forkLiftThread == null) {
+//                continue;
+//            }
+//
+//            ForkLiftProtocol forkLiftProtocol = forkLiftThread.getStatus();
+//            if (forkLiftProtocol == null) {
+//                continue;
+//            }
+//            forkLiftProtocols.add(forkLiftProtocol);
+//        }
+//
+//        //鑾峰彇鎻愬崌鏈烘暟鎹�
+//        ArrayList<LiftProtocol> liftProtocols = new ArrayList<>();
+//        List<DeviceConfig> liftList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>()
+//                .eq("device_type", String.valueOf(SlaveType.Lift)));
+//        for (DeviceConfig device : liftList) {
+//            LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, device.getDeviceNo());
+//            if (liftThread == null) {
+//                continue;
+//            }
+//
+//            LiftProtocol liftProtocol = liftThread.getStatus();
+//            if (liftProtocol == null) {
+//                continue;
+//            }
+//            liftProtocols.add(liftProtocol);
+//        }
+//
+//        map.put("shuttle", shuttleProtocols);
+//        map.put("forkLift", forkLiftProtocols);
+//        map.put("lift", liftProtocols);
 
         return R.ok().add(map);
     }
@@ -351,56 +286,6 @@
         return R.ok().add(list);
     }
 
-    @PostMapping("/shuttleGather")
-    @OpenApiLog(memo = "灏忚溅闆嗗悎")
-    public R shuttleGather(@RequestBody ShuttleGatherParam param) {
-        List<ShuttleGatherResult> shuttleGather = shuttleDispatchUtils.shuttleGather(param);
-
-        apiLogService.insert(new ApiLog(
-                null
-                , "灏忚溅闆嗗悎"
-                , "/shuttleGather"
-                , null
-                , null
-                , null
-                , JSON.toJSONString(param)
-                , JSON.toJSONString(shuttleGather)
-                , null
-                , null
-                , 1
-                , new Date()
-                , null
-                , null
-        ));
-
-        return R.ok().add(shuttleGather);
-    }
-
-    @PostMapping("/shuttleDemo")
-    @OpenApiLog(memo = "灏忚溅婕旂ず")
-    public R shuttleDemo(@RequestBody ShuttleDemoParam param) {
-        shuttleDispatchUtils.shuttleDemo(param);
-
-        apiLogService.insert(new ApiLog(
-                null
-                , "灏忚溅婕旂ず"
-                , "/shuttleDemo"
-                , null
-                , null
-                , null
-                , JSON.toJSONString(param)
-                , null
-                , null
-                , null
-                , 1
-                , new Date()
-                , null
-                , null
-        ));
-
-        return R.ok();
-    }
-
     @PostMapping("/queryTask")
     @OpenApiLog(memo = "鏌ヨ浠诲姟")
     public R queryTask(@RequestBody QueryTaskParam param) {
@@ -439,13 +324,6 @@
 
     @GetMapping("/systemStatus")
     public R systemStatus() {
-        return R.ok();
-    }
-
-    @GetMapping("/test")
-    public R test() {
-        notifyUtils.notify("task", 1, "9999", "W9999", NotifyMsgType.SHUTTLE_MOVING, "data");
-        notifyUtils.notify(String.valueOf(SlaveType.Shuttle), 2, "9999", "W9999", NotifyMsgType.SHUTTLE_MOVE_COMPLETE);
         return R.ok();
     }
 
diff --git a/src/main/java/com/zy/asrs/controller/ShuttleController.java b/src/main/java/com/zy/asrs/controller/ShuttleController.java
deleted file mode 100644
index 39a37da..0000000
--- a/src/main/java/com/zy/asrs/controller/ShuttleController.java
+++ /dev/null
@@ -1,457 +0,0 @@
-package com.zy.asrs.controller;
-
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONObject;
-import com.baomidou.mybatisplus.mapper.EntityWrapper;
-import com.core.annotations.ManagerAuth;
-import com.core.common.BaseRes;
-import com.core.common.Cools;
-import com.core.common.R;
-import com.core.exception.CoolException;
-import com.zy.asrs.domain.param.ShuttleOperatorParam;
-import com.zy.asrs.domain.vo.*;
-import com.zy.asrs.entity.BasShuttle;
-import com.zy.asrs.entity.DeviceConfig;
-import com.zy.asrs.entity.WrkMast;
-import com.zy.asrs.service.BasShuttleService;
-import com.zy.asrs.service.DeviceConfigService;
-import com.zy.asrs.service.LocMastService;
-import com.zy.asrs.service.WrkMastService;
-import com.zy.asrs.utils.Utils;
-import com.zy.common.model.enums.NavigationMapType;
-import com.zy.common.service.CommonService;
-import com.zy.common.utils.NavigateMapUtils;
-import com.zy.common.utils.RedisUtil;
-import com.zy.common.utils.ShuttleOperaUtils;
-import com.zy.core.News;
-import com.zy.core.action.ShuttleAction;
-import com.zy.core.cache.OutputQueue;
-import com.zy.core.cache.SlaveConnection;
-import com.zy.core.dispatcher.ShuttleDispatchUtils;
-import com.zy.core.enums.*;
-import com.zy.core.model.command.ShuttleAssignCommand;
-import com.zy.core.model.command.ShuttleCommand;
-import com.zy.core.model.command.ShuttleRedisCommand;
-import com.zy.core.model.param.ShuttleMoveLocParam;
-import com.zy.core.model.protocol.ShuttleProtocol;
-import com.zy.core.thread.ShuttleThread;
-import com.zy.core.thread.TrafficControlThread;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.*;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-
-/**
- * 鍥涘悜绌挎杞︽帴鍙�
- */
-@Slf4j
-@RestController
-@RequestMapping("/shuttle")
-public class ShuttleController {
-
-    @Autowired
-    private BasShuttleService basShuttleService;
-    @Autowired
-    private WrkMastService wrkMastService;
-    @Autowired
-    private LocMastService locMastService;
-    @Autowired
-    private CommonService commonService;
-    @Autowired
-    private RedisUtil redisUtil;
-    @Autowired
-    private ShuttleDispatchUtils shuttleDispatchUtils;
-    @Autowired
-    private ShuttleOperaUtils shuttleOperaUtils;
-    @Autowired
-    private ShuttleAction shuttleAction;
-    @Autowired
-    private NavigateMapUtils navigateMapUtils;
-    @Autowired
-    private DeviceConfigService deviceConfigService;
-
-    @PostMapping("/table/shuttle/state")
-    @ManagerAuth(memo = "鍥涘悜绌挎杞︿俊鎭〃")
-    public R shuttleStateTable(){
-        ArrayList<JSONObject> list = new ArrayList<>();
-
-        List<DeviceConfig> shuttleList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>()
-                .eq("device_type", String.valueOf(SlaveType.Shuttle)));
-        for (DeviceConfig deviceConfig : shuttleList) {
-            // 琛ㄦ牸琛�
-            JSONObject baseObj = new JSONObject();
-            baseObj.put("shuttleNo", deviceConfig.getDeviceNo());
-            list.add(baseObj);
-            // 鑾峰彇鍥涘悜绌挎杞︿俊鎭�
-            ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, deviceConfig.getDeviceNo());
-            if (shuttleThread == null) {
-                continue;
-            }
-            ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
-            JSONObject shuttleData = JSON.parseObject(JSON.toJSONString(shuttleProtocol));
-            if (shuttleProtocol == null || shuttleProtocol.getShuttleNo()==null) {
-                if (shuttleData != null) {
-                    baseObj.putAll(shuttleData);
-                }
-                continue;
-            }
-
-            shuttleData.put("moveAdvancePath", null);//绌挎杞﹂璁¤矾寰�
-            if (shuttleProtocol.getTaskNo() != 0) {
-                //瀛樺湪浠诲姟锛岃幏鍙栨寚浠�
-                Object object = redisUtil.get(RedisKeyType.SHUTTLE_WORK_FLAG.key + shuttleProtocol.getTaskNo());
-                if (object != null) {
-                    ShuttleRedisCommand redisCommand = JSON.parseObject(object.toString(), ShuttleRedisCommand.class);
-                    shuttleData.put("moveAdvancePath", redisCommand.getAssignCommand().getNodes());//绌挎杞﹂璁¤矾寰�
-                }
-            }
-
-            Integer chargeLine = basShuttleService.selectById(deviceConfig.getDeviceNo()).getChargeLine();
-            String lowerPower = "N";
-            if (chargeLine != null && shuttleProtocol.getBatteryPower() != null) {
-                lowerPower = Integer.parseInt(shuttleProtocol.getBatteryPower()) <= chargeLine ? "Y" : "N";
-            }
-            shuttleData.put("lowerPower", lowerPower);//鏄惁浣庣數閲�
-            baseObj.putAll(shuttleData);
-        }
-        return R.ok().add(list);
-    }
-
-    @PostMapping("/table/shuttle/msg")
-    @ManagerAuth(memo = "鍥涘悜绌挎杞︽暟鎹〃")
-    public R steMsgTable(){
-        List<ShuttleMsgTableVo> list = new ArrayList<>();
-
-        List<DeviceConfig> shuttleList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>()
-                .eq("device_type", String.valueOf(SlaveType.Shuttle)));
-        for (DeviceConfig deviceConfig : shuttleList) {
-            // 琛ㄦ牸琛�
-            ShuttleMsgTableVo vo = new ShuttleMsgTableVo();
-            vo.setShuttleNo(deviceConfig.getDeviceNo());   //  鍥涘悜绌挎杞﹀彿
-            list.add(vo);
-            // 鑾峰彇绌挎杞︿俊鎭�
-            ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, deviceConfig.getDeviceNo());
-            if (shuttleThread == null) {
-                continue;
-            }
-            ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
-            if (shuttleProtocol == null) {
-                continue;
-            }
-            if (shuttleProtocol.getShuttleNo() == null) {
-                continue;
-            }
-
-            vo.setWorkNo(shuttleProtocol.getTaskNo());//浠诲姟鍙�
-            if (shuttleProtocol.getTaskNo() > 0) {
-                WrkMast wrkMast = wrkMastService.selectById(shuttleProtocol.getTaskNo());
-                if (wrkMast != null) {
-                    vo.setSourceLocNo(wrkMast.getSourceLocNo());//婧愬簱浣�
-                    vo.setDistLocNo(wrkMast.getLocNo());//鐩爣搴撲綅
-                }
-            }
-            if (shuttleProtocol.getProtocolStatusType() != null) {
-                vo.setStatus(shuttleProtocol.getProtocolStatusType().desc);//鐘舵��
-            }
-            vo.setPakMk(shuttleProtocol.getPakMk()?"Y" : "N");    // 浣滀笟鏍囪
-            vo.setLocNo(shuttleProtocol.getLocNo());//鍥涘悜绌挎杞﹀綋鍓嶅簱浣嶅彿
-            vo.setLev(shuttleProtocol.getLocNo() == null ? 0 : Utils.getLev(shuttleProtocol.getLocNo()));//鍥涘悜绌挎杞﹀綋鍓嶅眰楂�
-
-            BasShuttle basShuttle = basShuttleService.selectById(deviceConfig.getDeviceNo());
-            if (basShuttle != null) {
-                vo.setChargeLine(basShuttle.getChargeLine());//鍏呯數闃堝��
-            }
-        }
-        return R.ok().add(list);
-    }
-
-    @PostMapping("/latest/data/shuttle")
-    @ManagerAuth(memo = "鍥涘悜绌挎杞﹀疄鏃舵暟鎹�")
-    public R shuttleLatestData(){
-        return R.ok();
-    }
-
-    @PostMapping("/output/shuttle")
-    @ManagerAuth
-    public R steOutput(){
-        StringBuilder str = new StringBuilder();
-        String s;
-        int i = 0;
-        while((s = OutputQueue.SHUTTLE.poll()) != null && i <=10) {
-            str.append("\n").append(s);
-            i++;
-        }
-        return R.ok().add(str.toString());
-    }
-
-    @RequestMapping(value = "/command/query")
-    public R shuttleCommandQuery(@RequestParam("wrkNo") Integer wrkNo) {
-        Object o = redisUtil.get(RedisKeyType.SHUTTLE_WORK_FLAG.key + wrkNo);
-        if (o == null) {
-            return R.error("鎸囦护涓嶅瓨鍦�");
-        }
-        ShuttleRedisCommand redisCommand = JSON.parseObject(o.toString(), ShuttleRedisCommand.class);
-        ShuttleAssignCommand assignCommand = redisCommand.getAssignCommand();
-        List<ShuttleCommand> commands = assignCommand.getCommands();
-
-        HashMap<String, Object> map = new HashMap<>();
-        map.put("commands", commands);
-        map.put("shuttleNo", redisCommand.getShuttleNo());
-        map.put("commandStep", redisCommand.getCommandStep());
-        map.put("wrkNo", redisCommand.getWrkNo());
-
-        return R.ok().add(map);
-    }
-
-    //鍥為��鍛戒护
-    @RequestMapping(value = "/command/rollback")
-    public R shuttleCommandRollback(@RequestParam("wrkNo") Integer wrkNo
-            , @RequestParam("commandStep") Integer commandStep) {
-        Object o = redisUtil.get(RedisKeyType.SHUTTLE_WORK_FLAG.key + wrkNo);
-        if (o == null) {
-            return R.error();
-        }
-        ShuttleRedisCommand redisCommand = JSON.parseObject(o.toString(), ShuttleRedisCommand.class);
-        redisCommand.setCommandStep(commandStep);
-        redisUtil.set(RedisKeyType.SHUTTLE_WORK_FLAG.key + wrkNo, JSON.toJSONString(redisCommand));
-        return R.ok();
-    }
-
-    //鍛戒护瀹屾垚鐘舵�佸垏鎹�
-    @RequestMapping(value = "/command/completeSwitch")
-    public R shuttleCommandCompleteSwitch(@RequestParam("wrkNo") Integer wrkNo
-            , @RequestParam("commandStep") Integer commandStep
-            , @RequestParam("complete") Integer complete) {
-        Object o = redisUtil.get(RedisKeyType.SHUTTLE_WORK_FLAG.key + wrkNo);
-        if (o == null) {
-            return R.error();
-        }
-        ShuttleRedisCommand redisCommand = JSON.parseObject(o.toString(), ShuttleRedisCommand.class);
-        ShuttleAssignCommand assignCommand = redisCommand.getAssignCommand();
-        List<ShuttleCommand> commands = assignCommand.getCommands();
-        ShuttleCommand command = commands.get(commandStep);
-        command.setComplete(complete != 0);
-        redisUtil.set(RedisKeyType.SHUTTLE_WORK_FLAG.key + wrkNo, JSON.toJSONString(redisCommand));
-        return R.ok();
-    }
-
-    //閲嶅惎浠诲姟(鍛戒护)
-    @RequestMapping(value = "/command/restart")
-    public R shuttleCommandCompleteSwitch(@RequestParam("wrkNo") Integer wrkNo) {
-        Object o = redisUtil.get(RedisKeyType.SHUTTLE_WORK_FLAG.key + wrkNo);
-        if (o == null) {
-            return R.error();
-        }
-        ShuttleRedisCommand redisCommand = JSON.parseObject(o.toString(), ShuttleRedisCommand.class);
-        Integer shuttleNo = redisCommand.getShuttleNo();
-        ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttleNo);
-        if (shuttleThread == null) {
-            return R.error();
-        }
-        if (!shuttleThread.isIdle()) {
-            return R.error();
-        }
-        //鍥涘悜绌挎杞﹀浜庣┖闂茬姸鎬侊紝杩涜浠诲姟鐨勬仮澶�
-        shuttleThread.setTaskNo(redisCommand.getWrkNo());//灏嗗洓鍚戠┛姊溅绾跨▼鍒嗛厤浠诲姟鍙�
-        shuttleThread.setProtocolStatus(ShuttleProtocolStatusType.WORKING);//宸ヤ綔鐘舵��
-        return R.ok();
-    }
-
-    //鍒犻櫎浠诲姟(鍛戒护)
-    @RequestMapping(value = "/command/del")
-    public R liftCommandDel(@RequestParam("wrkNo") Integer wrkNo) {
-        Object o = redisUtil.get(RedisKeyType.SHUTTLE_WORK_FLAG.key + wrkNo);
-        if (o == null) {
-            return R.error();
-        }
-        redisUtil.del(RedisKeyType.SHUTTLE_WORK_FLAG.key + wrkNo);
-        return R.ok();
-    }
-
-    /****************************************************************/
-    /************************** 鎵嬪姩鎿嶄綔 ******************************/
-    /****************************************************************/
-
-    @ManagerAuth(memo = "鎵嬪姩鎿嶄綔")
-    @PostMapping("/operator/shuttle")
-    public R shuttleOperator(ShuttleOperatorParam param){
-        if (Cools.isEmpty(param.getShuttleNo(), param.getShuttleTaskMode())) {
-            return R.parse(BaseRes.PARAM);
-        }
-
-        ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
-
-        if (param.getShuttleTaskMode().intValue() == ShuttleTaskModeType.MOVE_LOC_NO.id
-                || param.getShuttleTaskMode().intValue() == ShuttleTaskModeType.MOVE_LOC_NO_TASK.id
-                || param.getShuttleTaskMode().intValue() == ShuttleTaskModeType.TRANSPORT.id) {
-            if (Cools.isEmpty(param.getSourceLocNo(), param.getDistLocNo())) {
-                return R.parse(BaseRes.PARAM);
-            }
-            assignCommand.setSourceLocNo(param.getSourceLocNo());
-            assignCommand.setLocNo(param.getDistLocNo());
-        }
-
-        ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, param.getShuttleNo());
-        if (shuttleThread == null) {
-            throw new CoolException("鍥涘悜绌挎杞︿笉鍦ㄧ嚎");
-        }
-        ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
-        if (shuttleProtocol == null) {
-            throw new CoolException("鍥涘悜绌挎杞︿笉鍦ㄧ嚎");
-        }
-
-        ShuttleTaskModeType shuttleTaskModeType = ShuttleTaskModeType.get(param.getShuttleTaskMode().intValue());
-        assignCommand.setShuttleNo(param.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙�
-        assignCommand.setTaskMode(shuttleTaskModeType.id);
-        assignCommand.setTaskNo(commonService.getWorkNo(WrkIoType.MANUAL.id));//鑾峰彇浠诲姟鍙�
-        assignCommand.setAuto(false);//鎵嬪姩妯″紡
-
-        if (shuttleTaskModeType == ShuttleTaskModeType.MOVE_LOC_NO) {
-            //绉诲姩鍒扮洰鏍囧簱浣�
-            List<NavigationMapType> mapTypes = NavigationMapType.getMapTypes(NavigationMapType.NORMAL, NavigationMapType.PATH_LOCK);
-            if (shuttleProtocol.getHasLift()) {
-                mapTypes = NavigationMapType.getMapTypes(NavigationMapType.DFX, NavigationMapType.PATH_LOCK);
-            }
-            List<ShuttleCommand> commands = shuttleOperaUtils.getStartToTargetCommands(shuttleProtocol.getCurrentLocNo(), param.getDistLocNo(), mapTypes, assignCommand, shuttleThread);
-            if (commands == null) {
-                throw new CoolException("璺緞璁$畻澶辫触");
-            }
-
-            assignCommand.setCommands(commands);
-
-            //灏濊瘯閿佸畾鐩爣绔欒矾寰�
-            boolean result2 = navigateMapUtils.writeNavigateNodeToRedisMap(Utils.getLev(param.getDistLocNo()), shuttleProtocol.getShuttleNo(), assignCommand.getNodesDeepCopy(), true);//鎵�浣跨敤鐨勮矾寰勮繘琛岄攣瀹氱鐢�
-            if (!result2) {
-                News.info("{}浠诲姟锛寋}灏忚溅锛岃矾寰勯攣瀹氬け璐ワ紝绂佹娲惧彂", param.getDistLocNo(), shuttleProtocol.getShuttleNo());
-                throw new CoolException("璺緞閿佸畾澶辫触");
-            }
-
-        } else if (shuttleTaskModeType == ShuttleTaskModeType.PALLET_LIFT) {
-            //鎵樼洏椤跺崌
-            List<ShuttleCommand> commands = shuttleOperaUtils.getShuttleLiftCommand(assignCommand, shuttleThread, true);
-            assignCommand.setCommands(commands);
-        } else if (shuttleTaskModeType == ShuttleTaskModeType.PALLET_DOWN) {
-            //鎵樼洏涓嬮檷
-            List<ShuttleCommand> commands = shuttleOperaUtils.getShuttleLiftCommand(assignCommand, shuttleThread, false);
-            assignCommand.setCommands(commands);
-        } else if (shuttleTaskModeType == ShuttleTaskModeType.CHARGE_ON) {
-            //鍏呯數寮�
-            List<ShuttleCommand> commands = shuttleOperaUtils.getShuttleChargeCommand(assignCommand, shuttleThread, true);
-            assignCommand.setCommands(commands);
-        } else if (shuttleTaskModeType == ShuttleTaskModeType.CHARGE_OFF) {
-            //鍏呯數鍏�
-            List<ShuttleCommand> commands = shuttleOperaUtils.getShuttleChargeCommand(assignCommand, shuttleThread, false);
-            assignCommand.setCommands(commands);
-        } else if (shuttleTaskModeType == ShuttleTaskModeType.RESET) {
-            //澶嶄綅
-            TrafficControlThread trafficControlThread = (TrafficControlThread) SlaveConnection.get(SlaveType.TrafficControl, 1);
-            trafficControlThread.forceCancelTrafficControl(shuttleProtocol.getShuttleNo());
-
-            shuttleThread.setSyncTaskNo(0);//宸ヤ綔鍙锋竻绌�
-            shuttleThread.setProtocolStatus(ShuttleProtocolStatusType.IDLE);//浠诲姟鐘舵��-绌洪棽
-            shuttleThread.setPakMk(true);//浣滀笟鏍囪澶嶄綅
-
-            shuttleThread.enableMoveLoc(null, false);
-            return R.ok();
-        } else if (shuttleTaskModeType == ShuttleTaskModeType.MOVE_LOC_NO_TASK) {
-            //绉诲姩鍒扮洰鏍囧簱浣�(鐢熸垚绉诲姩浠诲姟)
-            shuttleDispatchUtils.dispatchShuttle(commonService.getWorkNo(WrkIoType.SHUTTLE_MOVE.id), param.getDistLocNo(), param.getShuttleNo());
-            return R.ok();
-        } else if (shuttleTaskModeType == ShuttleTaskModeType.SHUTTLE_DEMO_OPEN) {
-            //婕旂ず妯″紡-寮�
-            shuttleThread.enableDemo(true);
-            return R.ok();
-        } else if (shuttleTaskModeType == ShuttleTaskModeType.SHUTTLE_DEMO_CLOSE) {
-            //婕旂ず妯″紡-鍏�
-            shuttleThread.enableDemo(false);
-            return R.ok();
-        } else if (shuttleTaskModeType == ShuttleTaskModeType.CLEAR_PATH) {
-            //娓呴櫎璺緞
-            shuttleAction.clearPath(shuttleProtocol.getShuttleNo());
-            return R.ok();
-        } else if (shuttleTaskModeType == ShuttleTaskModeType.RESTART_CALC_PATH) {
-            //閲嶆柊璁$畻璺緞
-            shuttleThread.restartCalcPath();
-            return R.ok();
-        } else {
-            throw new CoolException("鏈煡鍛戒护");
-        }
-
-        shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand);
-        return R.ok();
-    }
-
-    @PostMapping("/detl/update")
-    @ManagerAuth(memo = "淇敼鏁版嵁")
-    public R shuttleUpdate(@RequestParam Integer shuttleNo,
-                           @RequestParam Integer workNo,
-                           @RequestParam String pakMk) {
-        ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttleNo);
-        if (shuttleThread == null) {
-            return R.error("plc宸叉帀绾�");
-        }
-        if (workNo != null) {
-            shuttleThread.setSyncTaskNo(workNo);
-        }
-        if (pakMk != null) {
-            shuttleThread.setPakMk(pakMk.equals("Y"));
-        }
-        return R.ok();
-    }
-
-    @PostMapping("/runSpeed/{shuttleNo}")
-    @ManagerAuth
-    public R setRunSpeed(@PathVariable("shuttleNo") String shuttleNo, @RequestParam("runSpeed") Integer runSpeed, @RequestParam("chargeLine") Integer chargeLine) {
-        BasShuttle basShuttle = basShuttleService.selectById(shuttleNo);
-        if (basShuttle == null) {
-            return R.error("鍥涘悜绌挎杞︿笉瀛樺湪");
-        }
-        basShuttle.setRunSpeed(runSpeed);
-        basShuttle.setChargeLine(chargeLine);
-        if (!basShuttleService.updateById(basShuttle)) {
-            return R.error();
-        }
-        return R.ok();
-    }
-
-    /**
-     * 璺戝簱绋嬪簭
-     */
-    @PostMapping("/moveLoc")
-    @ManagerAuth
-    public R moveLoc(@RequestParam Integer shuttleNo,
-                     @RequestParam Integer moveType,
-                     @RequestParam Integer xStart,
-                     @RequestParam Integer xTarget,
-                     @RequestParam Integer yStart,
-                     @RequestParam Integer yTarget) {
-        ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttleNo);
-        if (shuttleThread == null) {
-            return R.error();
-        }
-
-        ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
-        if (shuttleProtocol == null) {
-            return R.error();
-        }
-
-        if (!shuttleThread.isIdle()) {
-            return R.error("灏忚溅蹇欑涓�");
-        }
-
-        ShuttleMoveLocParam param = new ShuttleMoveLocParam();
-        param.setShuttleNo(shuttleNo);
-        param.setMoveType(moveType);
-        param.setStartX(xStart);
-        param.setTargetX(xTarget);
-        param.setStartY(yStart);
-        param.setTargetY(yTarget);
-
-        shuttleThread.enableMoveLoc(param, true);
-        return R.ok();
-    }
-
-}
diff --git a/src/main/java/com/zy/asrs/controller/TrafficControlController.java b/src/main/java/com/zy/asrs/controller/TrafficControlController.java
deleted file mode 100644
index 474c455..0000000
--- a/src/main/java/com/zy/asrs/controller/TrafficControlController.java
+++ /dev/null
@@ -1,63 +0,0 @@
-package com.zy.asrs.controller;
-
-import com.alibaba.fastjson.JSON;
-import com.baomidou.mybatisplus.mapper.EntityWrapper;
-import com.core.common.R;
-import com.zy.asrs.domain.param.CancelTrafficParam;
-import com.zy.asrs.entity.WrkMast;
-import com.zy.asrs.service.WrkMastService;
-import com.zy.common.model.NavigateNode;
-import com.zy.common.utils.RedisUtil;
-import com.zy.core.cache.SlaveConnection;
-import com.zy.core.enums.RedisKeyType;
-import com.zy.core.enums.ShuttleCommandModeType;
-import com.zy.core.enums.SlaveType;
-import com.zy.core.model.TrafficControlDataModel;
-import com.zy.core.model.command.ShuttleCommand;
-import com.zy.core.thread.TrafficControlThread;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-import java.util.List;
-
-@Slf4j
-@RestController
-public class TrafficControlController {
-
-    @Autowired
-    private RedisUtil redisUtil;
-    @Autowired
-    private WrkMastService wrkMastService;
-
-    @GetMapping("/trafficControl/getTrafficControlInfos")
-    public R getTrafficControlInfos() {
-        Object object = redisUtil.get(RedisKeyType.TRAFFIC_CONTROL_MAP.key);
-        if (object == null) {
-            return R.ok();
-        }
-
-        List<TrafficControlDataModel> trafficControlDataList = (List<TrafficControlDataModel>) object;
-
-        for (TrafficControlDataModel dataModel : trafficControlDataList) {
-            WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>()
-                    .eq("wrk_no", dataModel.getTaskNo()));
-            dataModel.setTaskExist(wrkMast != null);
-        }
-        return R.ok().add(trafficControlDataList);
-    }
-
-    @PostMapping("/trafficControl/cancelTraffic")
-    public R cancelTraffic(CancelTrafficParam param) {
-        TrafficControlThread trafficControlThread = (TrafficControlThread) SlaveConnection.get(SlaveType.TrafficControl, 1);
-        if (trafficControlThread == null) {
-            return R.error();
-        }
-
-        boolean result = trafficControlThread.cancelTrafficControl(param.getShuttleNo(), param.getTaskNo());
-        return R.ok().add(result);
-    }
-
-}
diff --git a/src/main/java/com/zy/asrs/domain/ShuttleGatherResult.java b/src/main/java/com/zy/asrs/domain/ShuttleGatherResult.java
deleted file mode 100644
index 457f33a..0000000
--- a/src/main/java/com/zy/asrs/domain/ShuttleGatherResult.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package com.zy.asrs.domain;
-
-import lombok.Data;
-
-@Data
-public class ShuttleGatherResult {
-
-    private Integer shuttleNo;
-
-    private String idleLoc;
-
-    private Boolean result;
-
-}
diff --git a/src/main/java/com/zy/asrs/domain/param/LiftOperatorParam.java b/src/main/java/com/zy/asrs/domain/param/LiftOperatorParam.java
deleted file mode 100644
index ad1a70e..0000000
--- a/src/main/java/com/zy/asrs/domain/param/LiftOperatorParam.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package com.zy.asrs.domain.param;
-
-import lombok.Data;
-
-@Data
-public class LiftOperatorParam {
-
-    // 鎻愬崌鏈哄彿
-    private Integer liftNo;
-
-    // 浠诲姟鍙�
-    private Integer taskNo = 0;
-
-    //鎿嶄綔妯″紡
-    private Integer liftTaskMode;
-
-    //鎻愬崌鏈烘ゼ灞�
-    private Integer lev;
-
-    //婧愮珯
-    private Integer sourceStaNo;
-
-    //鐩爣绔�
-    private Integer staNo;
-
-}
diff --git a/src/main/java/com/zy/asrs/domain/param/ReportExceptionParam.java b/src/main/java/com/zy/asrs/domain/param/ReportExceptionParam.java
deleted file mode 100644
index 5f4c65b..0000000
--- a/src/main/java/com/zy/asrs/domain/param/ReportExceptionParam.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package com.zy.asrs.domain.param;
-
-import lombok.Data;
-
-/**
- * Robot鍚慦CS鍥炴姤寮傚父鍙傛暟
- */
-@Data
-public class ReportExceptionParam {
-
-    //浠诲姟缂栧彿
-    private String task_id;
-
-    //閿欒浠g爜
-    private String error_code;
-
-    //閿欒淇℃伅
-    private String msg;
-
-    //鎻愮ず
-    private String tip;
-
-}
diff --git a/src/main/java/com/zy/asrs/domain/param/RobotReportActionStatusParam.java b/src/main/java/com/zy/asrs/domain/param/RobotReportActionStatusParam.java
deleted file mode 100644
index 021e292..0000000
--- a/src/main/java/com/zy/asrs/domain/param/RobotReportActionStatusParam.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package com.zy.asrs.domain.param;
-
-import lombok.Data;
-
-/**
- * 鏈烘鑷傚悜WCS鍥炴姤鍗曟鎶撳彇宸插畬鎴愬弬鏁�
- */
-@Data
-public class RobotReportActionStatusParam {
-
-    //浠诲姟缂栧彿
-    private String task_id;
-
-    //浠诲姟鐘舵��
-    private Integer task_status;
-
-    //浠诲姟鎬绘姄鍙栨暟閲�
-    private Integer pick_num;
-
-    //鐩爣鎶撳彇鏁伴噺
-    private Integer target_num;
-
-    //缁撴灉璁伅
-    private String message;
-
-    //绔欑偣
-    private Integer from_ws;
-
-}
diff --git a/src/main/java/com/zy/asrs/domain/param/ShuttleDemoParam.java b/src/main/java/com/zy/asrs/domain/param/ShuttleDemoParam.java
deleted file mode 100644
index e4f1aa5..0000000
--- a/src/main/java/com/zy/asrs/domain/param/ShuttleDemoParam.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package com.zy.asrs.domain.param;
-
-import lombok.Data;
-
-import java.util.List;
-
-@Data
-public class ShuttleDemoParam {
-
-    private List<Integer> shuttleNos;
-
-    private Integer status;
-
-}
diff --git a/src/main/java/com/zy/asrs/domain/param/ShuttleGatherParam.java b/src/main/java/com/zy/asrs/domain/param/ShuttleGatherParam.java
deleted file mode 100644
index b737843..0000000
--- a/src/main/java/com/zy/asrs/domain/param/ShuttleGatherParam.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package com.zy.asrs.domain.param;
-
-import lombok.Data;
-
-import java.util.List;
-
-@Data
-public class ShuttleGatherParam {
-
-    private List<Integer> shuttleNos;
-
-}
diff --git a/src/main/java/com/zy/asrs/domain/param/ShuttleOperatorParam.java b/src/main/java/com/zy/asrs/domain/param/ShuttleOperatorParam.java
deleted file mode 100644
index d10b5fc..0000000
--- a/src/main/java/com/zy/asrs/domain/param/ShuttleOperatorParam.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package com.zy.asrs.domain.param;
-
-import lombok.Data;
-
-@Data
-public class ShuttleOperatorParam {
-
-    // 鍥涘悜绌挎杞﹀彿
-    private Integer shuttleNo;
-
-    // 鍛戒护绫诲瀷
-    private Short shuttleTaskMode;
-
-    // 浠诲姟鍙�
-    private Integer taskNo = 0;
-
-    // 鍚姩搴撲綅
-    private String sourceLocNo;
-
-    // 鐩爣搴撲綅
-    private String distLocNo;
-
-}
diff --git a/src/main/java/com/zy/asrs/domain/param/ShuttleTimedPowerRangeParam.java b/src/main/java/com/zy/asrs/domain/param/ShuttleTimedPowerRangeParam.java
deleted file mode 100644
index 2e4db5b..0000000
--- a/src/main/java/com/zy/asrs/domain/param/ShuttleTimedPowerRangeParam.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package com.zy.asrs.domain.param;
-
-import lombok.Data;
-
-@Data
-public class ShuttleTimedPowerRangeParam {
-
-    private Integer startTime;
-
-    private Integer endTime;
-
-}
diff --git a/src/main/java/com/zy/asrs/domain/vo/ForkLiftMsgTableVo.java b/src/main/java/com/zy/asrs/domain/vo/ForkLiftMsgTableVo.java
deleted file mode 100644
index 3af720a..0000000
--- a/src/main/java/com/zy/asrs/domain/vo/ForkLiftMsgTableVo.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package com.zy.asrs.domain.vo;
-
-import com.zy.core.model.protocol.ForkLiftStaProtocol;
-import lombok.Data;
-
-import java.util.List;
-
-@Data
-public class ForkLiftMsgTableVo {
-
-    // 鎻愬崌鏈哄彿
-    private Integer liftNo;
-
-    // 宸ヤ綔鍙�
-    private Integer workNo = 0;
-
-    // 浣滀笟鏍囪
-    private String pakMk = "-";
-
-    /**
-     * 绔欑偣淇℃伅
-     */
-    private List<ForkLiftStaProtocol> forkLiftStaProtocols;
-
-    /**
-     * 绌挎杞﹀彿
-     */
-    private Integer shuttleNo;
-
-}
diff --git a/src/main/java/com/zy/asrs/domain/vo/LiftDataVo.java b/src/main/java/com/zy/asrs/domain/vo/LiftDataVo.java
deleted file mode 100644
index 12bef47..0000000
--- a/src/main/java/com/zy/asrs/domain/vo/LiftDataVo.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package com.zy.asrs.domain.vo;
-
-import lombok.Data;
-
-@Data
-public class LiftDataVo {
-
-    // 鎻愬崌鏈哄彿
-    private Integer liftNo;
-
-    // 宸ヤ綔鍙�
-    private Integer workNo;
-
-    private Boolean pakMk;
-
-}
diff --git a/src/main/java/com/zy/asrs/domain/vo/LiftMsgTableVo.java b/src/main/java/com/zy/asrs/domain/vo/LiftMsgTableVo.java
deleted file mode 100644
index 4884de8..0000000
--- a/src/main/java/com/zy/asrs/domain/vo/LiftMsgTableVo.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package com.zy.asrs.domain.vo;
-
-import com.zy.core.model.protocol.LiftStaProtocol;
-import lombok.Data;
-
-import java.util.List;
-
-@Data
-public class LiftMsgTableVo {
-
-    // 鎻愬崌鏈哄彿
-    private Integer liftNo;
-
-    // 宸ヤ綔鍙�
-    private Integer workNo = 0;
-
-    // 浣滀笟鏍囪
-    private String pakMk = "-";
-
-    /**
-     * 绔欑偣淇℃伅
-     */
-    private List<LiftStaProtocol> liftStaProtocols;
-
-    /**
-     * 绌挎杞﹀彿
-     */
-    private Integer shuttleNo;
-
-}
diff --git a/src/main/java/com/zy/asrs/domain/vo/LiftSensorDataVo.java b/src/main/java/com/zy/asrs/domain/vo/LiftSensorDataVo.java
deleted file mode 100644
index e88b0e7..0000000
--- a/src/main/java/com/zy/asrs/domain/vo/LiftSensorDataVo.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package com.zy.asrs.domain.vo;
-
-import lombok.Data;
-
-@Data
-public class LiftSensorDataVo {
-
-    /**
-     * 鎻愬崌鏈哄彿
-     */
-    private Integer liftNo;
-
-}
diff --git a/src/main/java/com/zy/asrs/domain/vo/LiftStateTableVo.java b/src/main/java/com/zy/asrs/domain/vo/LiftStateTableVo.java
deleted file mode 100644
index 8200e4b..0000000
--- a/src/main/java/com/zy/asrs/domain/vo/LiftStateTableVo.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package com.zy.asrs.domain.vo;
-
-import com.zy.core.enums.ForkLiftProtocolStatusType;
-import lombok.Data;
-
-@Data
-public class LiftStateTableVo {
-
-    // 鎻愬崌鏈哄彿
-    private Integer liftNo;
-
-    /**
-     * 浠诲姟鍙�
-     */
-    private Short taskNo = 0;
-
-    /**
-     * 鍥涘悜绌挎杞﹀彿
-     */
-    private Short shuttleNo = 0;
-
-    /**
-     * 褰撳墠鎻愬崌鏈虹姸鎬侊紙鍐呴儴鑷垜缁存姢锛�
-     */
-    private Integer protocolStatus;
-
-    public String getProtocolStatus$() {
-        if (this.protocolStatus == null) {
-            return ForkLiftProtocolStatusType.NONE.desc;
-        }
-        return ForkLiftProtocolStatusType.get(this.protocolStatus).desc;
-    }
-
-}
diff --git a/src/main/java/com/zy/asrs/domain/vo/ShuttleDataVo.java b/src/main/java/com/zy/asrs/domain/vo/ShuttleDataVo.java
deleted file mode 100644
index 13eeb6a..0000000
--- a/src/main/java/com/zy/asrs/domain/vo/ShuttleDataVo.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package com.zy.asrs.domain.vo;
-
-import lombok.Data;
-
-@Data
-public class ShuttleDataVo {
-
-    // 鍥涘悜绌挎杞﹀彿
-    private Integer shuttleNo;
-
-    // 宸ヤ綔鍙�
-    private Integer workNo;
-
-    private Integer row;
-
-    private Integer bay;
-
-    private Integer lev;
-
-    private Boolean pakMk;
-
-}
diff --git a/src/main/java/com/zy/asrs/domain/vo/ShuttleMsgTableVo.java b/src/main/java/com/zy/asrs/domain/vo/ShuttleMsgTableVo.java
deleted file mode 100644
index 48fb6b8..0000000
--- a/src/main/java/com/zy/asrs/domain/vo/ShuttleMsgTableVo.java
+++ /dev/null
@@ -1,49 +0,0 @@
-package com.zy.asrs.domain.vo;
-
-import lombok.Data;
-
-@Data
-public class ShuttleMsgTableVo {
-
-    // 鍥涘悜绌挎杞﹀彿
-    private Integer shuttleNo;
-
-    // 宸ヤ綔鍙�
-    private Integer workNo = 0;
-
-    // 鐘舵��
-    private String status = "-";
-
-    // 婧愬簱浣�
-    private String sourceLocNo = "-";
-
-    // 鐩爣搴撲綅
-    private String distLocNo = "-";
-
-    // 鍛戒护
-    private String command = "";
-
-    // 浣滀笟鏍囪
-    private String pakMk = "-";
-
-    /**
-     * 鍥涘悜绌挎杞﹀簱浣嶅彿
-     */
-    private String locNo;
-
-    /**
-     * 鍥涘悜绌挎杞﹀綋鍓嶆墍鍦ㄦゼ灞�
-     */
-    private Integer lev;
-
-    /**
-     * 鍥涘悜绌挎杞﹁繍琛岄�熷害
-     */
-    private Integer runSpeed;
-
-    /**
-     * 鍏呯數闃堝��
-     */
-    private Integer chargeLine;
-
-}
diff --git a/src/main/java/com/zy/asrs/domain/vo/ShuttleSensorDataVo.java b/src/main/java/com/zy/asrs/domain/vo/ShuttleSensorDataVo.java
deleted file mode 100644
index 2af7d20..0000000
--- a/src/main/java/com/zy/asrs/domain/vo/ShuttleSensorDataVo.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package com.zy.asrs.domain.vo;
-
-import lombok.Data;
-
-@Data
-public class ShuttleSensorDataVo {
-
-    /**
-     * 鍥涘悜绌挎杞﹀彿
-     */
-    private Integer shuttleNo;
-
-}
diff --git a/src/main/java/com/zy/asrs/domain/vo/ShuttleStateTableVo.java b/src/main/java/com/zy/asrs/domain/vo/ShuttleStateTableVo.java
deleted file mode 100644
index 1d11cd8..0000000
--- a/src/main/java/com/zy/asrs/domain/vo/ShuttleStateTableVo.java
+++ /dev/null
@@ -1,202 +0,0 @@
-package com.zy.asrs.domain.vo;
-
-import com.zy.core.enums.ShuttleProtocolStatusType;
-import com.zy.core.enums.ShuttleStatusType;
-import lombok.Data;
-
-@Data
-public class ShuttleStateTableVo {
-
-    // 鍥涘悜绌挎杞﹀彿
-    private Integer shuttleNo;
-
-    // 鐘舵��
-    private Integer status;
-
-    //鍥涘悜绌挎杞﹀繖瑁呭~
-    private String busyStatus = "-";
-
-    /**
-     * 灏忚溅蹇欑姸鎬佷綅鏋氫妇
-     */
-    private ShuttleStatusType busyStatusType;
-
-    /**
-     * 浠诲姟鍙�
-     */
-    public Integer taskNo;
-
-    /**
-     * 褰撳墠浜岀淮鐮�
-     * 0涓虹┖
-     */
-    private Short currentCode;
-
-    /**
-     * 褰撳墠搴撲綅鍙�
-     */
-    private String locNo;
-
-    /**
-     * 搴撲綅鍙�-X
-     */
-    private int locNoX;
-
-    /**
-     * 搴撲綅鍙�-Y
-     */
-    private int locNoY;
-
-    /**
-     * 褰撳墠搴撲綅灞傞珮
-     */
-    private int locNoLev;
-
-    /**
-     * 鐢垫睜鐢甸噺
-     */
-    public String batteryPower = "-";
-
-    /**
-     * 鐢垫睜娓╁害
-     */
-    public String batteryTemp = "-";
-
-    /**
-     * 閿欒缂栧彿
-     */
-    private String errorCode;
-
-    /**
-     * Plc杈撳嚭鐘舵�両O
-     */
-    private Short plcOutputStatusIO;
-
-    /**
-     * Plc杈撳嚭鐘舵�両O-椤跺崌浣�
-     */
-    private Boolean plcOutputLift;
-
-    /**
-     * Plc杈撳嚭鐘舵�両O-鎹㈠悜浣�
-     */
-    private Boolean plcOutputTransfer;
-
-    /**
-     * Plc杈撳嚭鐘舵�両O-鎶遍椄浣�
-     */
-    private Boolean plcOutputBrake;
-
-    /**
-     * Plc杈撳嚭鐘舵�両O-鍏呯數浣�
-     */
-    private Boolean plcOutputCharge;
-
-    /**
-     * 閿欒淇℃伅鐮�
-     */
-    private String statusErrorCode;
-
-    /**
-     * PLC杈撳叆鐘舵��
-     */
-    private Short plcInputStatus;
-
-    /**
-     * 褰撳墠鎴栬�呬箣鍓嶈鍒扮殑浜岀淮鐮佸��
-     */
-    private Short currentOrBeforeCode;
-
-    /**
-     * 璇诲埌鐨勪簩缁寸爜X鏂瑰悜鍋忕Щ閲�
-     */
-    private Short codeOffsetX;
-
-    /**
-     * 璇诲埌鐨勪簩缁寸爜Y鏂瑰悜鍋忕Щ閲�
-     */
-    private Short codeOffsetY;
-
-    /**
-     * 褰撳墠鐨勭數鍘嬪��
-     */
-    private Integer currentVoltage;
-
-    /**
-     * 褰撳墠鐨勬ā鎷熼噺鍊�
-     */
-    private Short currentAnalogValue;
-
-    /**
-     * 褰撳墠鐨勫崌闄嶄己鏈嶉�熷害
-     */
-    private Short currentLiftServoSpeed;
-
-    /**
-     * 褰撳墠鐨勮璧颁己鏈嶉�熷害
-     */
-    private Short currentMoveServoSpeed;
-
-    /**
-     * 褰撳墠鐨勫崌闄嶄己鏈嶈礋杞界巼
-     */
-    private Short currentLiftServoLoad;
-
-    /**
-     * 褰撳墠鐨勮璧颁己鏈嶈礋杞界巼
-     */
-    private Short currentMoveServoLoad;
-
-    /**
-     * 鍏呯數鐘舵��
-     */
-    public String chargeStatus = "-";
-
-    /**
-     * 褰撳墠浣嶇疆
-     */
-    public String loca = "-";
-
-    public String getPlcOutputLift$() {
-        if (this.plcOutputLift == null) {
-            return null;
-        }
-        return this.plcOutputLift ? "Y" : "N";
-    }
-
-    public String getPlcOutputTransfer$() {
-        if (this.plcOutputTransfer == null) {
-            return null;
-        }
-        return this.plcOutputTransfer ? "Y" : "N";
-    }
-
-    public String getPlcOutputBrake$() {
-        if (this.plcOutputBrake == null) {
-            return null;
-        }
-        return this.plcOutputBrake ? "Y" : "N";
-    }
-
-    public String getPlcOutputCharge$() {
-        if (this.plcOutputCharge == null) {
-            return null;
-        }
-        return this.plcOutputCharge ? "Y" : "N";
-    }
-
-    public String getStatus$() {
-        if (this.status == null) {
-            return ShuttleProtocolStatusType.OFFLINE.desc;
-        }
-        return ShuttleProtocolStatusType.get(this.status).desc;
-    }
-
-    public String getCurrentVoltage$() {
-        if (this.currentVoltage == null) {
-            return "";
-        }
-        return (this.currentVoltage / 1000.0) + "V";
-    }
-
-}
diff --git a/src/main/java/com/zy/asrs/entity/BasCrnp.java b/src/main/java/com/zy/asrs/entity/BasCrnp.java
new file mode 100644
index 0000000..67501b6
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/BasCrnp.java
@@ -0,0 +1,121 @@
+package com.zy.asrs.entity;
+
+import com.core.common.Cools;import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.enums.IdType;
+import com.baomidou.mybatisplus.annotations.TableField;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import com.baomidou.mybatisplus.annotations.TableName;
+import java.io.Serializable;
+
+@Data
+@TableName("asr_bas_crnp")
+public class BasCrnp implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 缂栧彿
+     */
+    @ApiModelProperty(value= "缂栧彿")
+    @TableId(value = "crn_no", type = IdType.AUTO)
+    @TableField("crn_no")
+    private Integer crnNo;
+
+    @ApiModelProperty(value= "")
+    private Integer status;
+
+    @ApiModelProperty(value= "")
+    @TableField("wrk_no")
+    private Integer wrkNo;
+
+    /**
+     * 鍙叆(checkBox)
+     */
+    @ApiModelProperty(value= "鍙叆(checkBox)")
+    @TableField("in_enable")
+    private String inEnable;
+
+    /**
+     * 鍙嚭(checkBox)
+     */
+    @ApiModelProperty(value= "鍙嚭(checkBox)")
+    @TableField("out_enable")
+    private String outEnable;
+
+    @ApiModelProperty(value= "")
+    @TableField("create_by")
+    private Long createBy;
+
+    @ApiModelProperty(value= "")
+    @TableField("create_time")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    private Date createTime;
+
+    @ApiModelProperty(value= "")
+    @TableField("update_by")
+    private Long updateBy;
+
+    @ApiModelProperty(value= "")
+    @TableField("update_time")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    private Date updateTime;
+
+    @ApiModelProperty(value= "")
+    private String memo;
+
+    public BasCrnp() {}
+
+    public BasCrnp(Integer status,Integer wrkNo,String inEnable,String outEnable,Long createBy,Date createTime,Long updateBy,Date updateTime,String memo) {
+        this.status = status;
+        this.wrkNo = wrkNo;
+        this.inEnable = inEnable;
+        this.outEnable = outEnable;
+        this.createBy = createBy;
+        this.createTime = createTime;
+        this.updateBy = updateBy;
+        this.updateTime = updateTime;
+        this.memo = memo;
+    }
+
+//    BasCrnp basCrnp = new BasCrnp(
+//            null,    // 
+//            null,    // 
+//            null,    // 鍙叆(checkBox)
+//            null,    // 鍙嚭(checkBox)
+//            null,    // 
+//            null,    // 
+//            null,    // 
+//            null,    // 
+//            null    // 
+//    );
+
+    public String getCreateTime$(){
+        if (Cools.isEmpty(this.createTime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.createTime);
+    }
+
+    public String getUpdateTime$(){
+        if (Cools.isEmpty(this.updateTime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.updateTime);
+    }
+
+    public String getStatus$(){
+        if (Cools.isEmpty(this.status)){
+            return "";
+        }
+        return this.status == 1 ? "姝e父" : "绂佺敤";
+    }
+
+
+}
diff --git a/src/main/java/com/zy/asrs/entity/BasCrnpErr.java b/src/main/java/com/zy/asrs/entity/BasCrnpErr.java
new file mode 100644
index 0000000..c0ed328
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/BasCrnpErr.java
@@ -0,0 +1,133 @@
+package com.zy.asrs.entity;
+
+import com.core.common.Cools;import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.enums.IdType;
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.core.common.SpringUtils;
+import com.zy.system.service.UserService;
+import com.zy.system.entity.User;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import org.springframework.format.annotation.DateTimeFormat;
+import com.core.common.SpringUtils;
+import com.zy.system.service.UserService;
+import com.zy.system.entity.User;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import com.baomidou.mybatisplus.annotations.TableName;
+import java.io.Serializable;
+
+@Data
+@TableName("asr_bas_crnp_err")
+public class BasCrnpErr implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 缂栧彿
+     */
+    @ApiModelProperty(value= "缂栧彿")
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 寮傚父鐮�
+     */
+    @ApiModelProperty(value= "寮傚父鐮�")
+    @TableField("error_code")
+    private Long errorCode;
+
+    /**
+     * 寮傚父
+     */
+    @ApiModelProperty(value= "寮傚父")
+    @TableField("err_name")
+    private String errName;
+
+    /**
+     * 淇敼浜哄憳
+     */
+    @ApiModelProperty(value= "淇敼浜哄憳")
+    @TableField("modi_user")
+    private Long modiUser;
+
+    /**
+     * 淇敼鏃堕棿
+     */
+    @ApiModelProperty(value= "淇敼鏃堕棿")
+    @TableField("modi_time")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    private Date modiTime;
+
+    /**
+     * 娣诲姞浜哄憳
+     */
+    @ApiModelProperty(value= "娣诲姞浜哄憳")
+    @TableField("appe_user")
+    private Long appeUser;
+
+    /**
+     * 娣诲姞鏃堕棿
+     */
+    @ApiModelProperty(value= "娣诲姞鏃堕棿")
+    @TableField("appe_time")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    private Date appeTime;
+
+    public BasCrnpErr() {}
+
+    public BasCrnpErr(Long errorCode,String errName,Long modiUser,Date modiTime,Long appeUser,Date appeTime) {
+        this.errorCode = errorCode;
+        this.errName = errName;
+        this.modiUser = modiUser;
+        this.modiTime = modiTime;
+        this.appeUser = appeUser;
+        this.appeTime = appeTime;
+    }
+
+//    BasCrnpErr basCrnpErr = new BasCrnpErr(
+//            null,    // 寮傚父鐮�
+//            null,    // 寮傚父
+//            null,    // 淇敼浜哄憳
+//            null,    // 淇敼鏃堕棿
+//            null,    // 娣诲姞浜哄憳
+//            null    // 娣诲姞鏃堕棿
+//    );
+
+    public String getModiUser$(){
+        UserService service = SpringUtils.getBean(UserService.class);
+        User user = service.selectById(this.modiUser);
+        if (!Cools.isEmpty(user)){
+            return String.valueOf(user.getId());
+        }
+        return null;
+    }
+
+    public String getModiTime$(){
+        if (Cools.isEmpty(this.modiTime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.modiTime);
+    }
+
+    public String getAppeUser$(){
+        UserService service = SpringUtils.getBean(UserService.class);
+        User user = service.selectById(this.appeUser);
+        if (!Cools.isEmpty(user)){
+            return String.valueOf(user.getId());
+        }
+        return null;
+    }
+
+    public String getAppeTime$(){
+        if (Cools.isEmpty(this.appeTime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.appeTime);
+    }
+
+
+}
diff --git a/src/main/java/com/zy/asrs/entity/BasCrnpErrLog.java b/src/main/java/com/zy/asrs/entity/BasCrnpErrLog.java
new file mode 100644
index 0000000..512ea07
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/BasCrnpErrLog.java
@@ -0,0 +1,311 @@
+package com.zy.asrs.entity;
+
+import com.core.common.Cools;import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.enums.IdType;
+import com.baomidou.mybatisplus.annotations.TableField;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import com.core.common.SpringUtils;
+import com.zy.asrs.service.BasWrkStatusService;
+import com.zy.asrs.entity.BasWrkStatus;
+import com.core.common.SpringUtils;
+import com.zy.asrs.service.BasWrkIotypeService;
+import com.zy.asrs.entity.BasWrkIotype;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import com.core.common.SpringUtils;
+import com.zy.system.service.UserService;
+import com.zy.system.entity.User;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import com.core.common.SpringUtils;
+import com.zy.system.service.UserService;
+import com.zy.system.entity.User;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import com.baomidou.mybatisplus.annotations.TableName;
+import java.io.Serializable;
+
+@Data
+@TableName("asr_bas_crnp_err_log")
+public class BasCrnpErrLog implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 缂栧彿
+     */
+    @ApiModelProperty(value= "缂栧彿")
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 宸ヤ綔鍙�
+     */
+    @ApiModelProperty(value= "宸ヤ綔鍙�")
+    @TableField("wrk_no")
+    private Integer wrkNo;
+
+    /**
+     * 鍙戠敓鏃堕棿
+     */
+    @ApiModelProperty(value= "鍙戠敓鏃堕棿")
+    @TableField("start_time")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    private Date startTime;
+
+    /**
+     * 缁撴潫鏃堕棿
+     */
+    @ApiModelProperty(value= "缁撴潫鏃堕棿")
+    @TableField("end_time")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    private Date endTime;
+
+    /**
+     * 宸ヤ綔鐘舵��
+     */
+    @ApiModelProperty(value= "宸ヤ綔鐘舵��")
+    @TableField("wrk_sts")
+    private Long wrkSts;
+
+    /**
+     * 鍏ュ嚭搴撶被鍨�
+     */
+    @ApiModelProperty(value= "鍏ュ嚭搴撶被鍨�")
+    @TableField("io_type")
+    private Integer ioType;
+
+    /**
+     * 鍫嗗灈鏈哄彿
+     */
+    @ApiModelProperty(value= "鍫嗗灈鏈哄彿")
+    @TableField("crn_no")
+    private Integer crnNo;
+
+    /**
+     * 鐩爣搴撲綅
+     */
+    @ApiModelProperty(value= "鐩爣搴撲綅")
+    @TableField("loc_no")
+    private String locNo;
+
+    /**
+     * 鐩爣绔�
+     */
+    @ApiModelProperty(value= "鐩爣绔�")
+    @TableField("sta_no")
+    private Integer staNo;
+
+    /**
+     * 婧愮珯
+     */
+    @ApiModelProperty(value= "婧愮珯")
+    @TableField("source_sta_no")
+    private Integer sourceStaNo;
+
+    /**
+     * 婧愬簱浣�
+     */
+    @ApiModelProperty(value= "婧愬簱浣�")
+    @TableField("source_loc_no")
+    private String sourceLocNo;
+
+    /**
+     * 鏉$爜
+     */
+    @ApiModelProperty(value= "鏉$爜")
+    private String barcode;
+
+    /**
+     * 寮傚父鐮�
+     */
+    @ApiModelProperty(value= "寮傚父鐮�")
+    @TableField("err_code")
+    private Integer errCode;
+
+    /**
+     * 寮傚父
+     */
+    @ApiModelProperty(value= "寮傚父")
+    private String error;
+
+    /**
+     * 寮傚父鎯呭喌 1: 鏈鐞�  2: 宸蹭慨澶�  
+     */
+    @ApiModelProperty(value= "寮傚父鎯呭喌 1: 鏈鐞�  2: 宸蹭慨澶�  ")
+    private Integer status;
+
+    /**
+     * 娣诲姞鏃堕棿
+     */
+    @ApiModelProperty(value= "娣诲姞鏃堕棿")
+    @TableField("create_time")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    private Date createTime;
+
+    /**
+     * 娣诲姞浜哄憳
+     */
+    @ApiModelProperty(value= "娣诲姞浜哄憳")
+    @TableField("create_by")
+    private Long createBy;
+
+    /**
+     * 淇敼鏃堕棿
+     */
+    @ApiModelProperty(value= "淇敼鏃堕棿")
+    @TableField("update_time")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    private Date updateTime;
+
+    /**
+     * 淇敼浜哄憳
+     */
+    @ApiModelProperty(value= "淇敼浜哄憳")
+    @TableField("update_by")
+    private Long updateBy;
+
+    /**
+     * 澶囨敞
+     */
+    @ApiModelProperty(value= "澶囨敞")
+    private String memo;
+
+    /**
+     * 绯荤粺鐘舵�佹暟鎹�
+     */
+    @ApiModelProperty(value= "绯荤粺鐘舵�佹暟鎹�")
+    @TableField("system_status")
+    private String systemStatus;
+
+    public BasCrnpErrLog() {}
+
+    public BasCrnpErrLog(Integer wrkNo,Date startTime,Date endTime,Long wrkSts,Integer ioType,Integer crnNo,String locNo,Integer staNo,Integer sourceStaNo,String sourceLocNo,String barcode,Integer errCode,String error,Integer status,Date createTime,Long createBy,Date updateTime,Long updateBy,String memo,String systemStatus) {
+        this.wrkNo = wrkNo;
+        this.startTime = startTime;
+        this.endTime = endTime;
+        this.wrkSts = wrkSts;
+        this.ioType = ioType;
+        this.crnNo = crnNo;
+        this.locNo = locNo;
+        this.staNo = staNo;
+        this.sourceStaNo = sourceStaNo;
+        this.sourceLocNo = sourceLocNo;
+        this.barcode = barcode;
+        this.errCode = errCode;
+        this.error = error;
+        this.status = status;
+        this.createTime = createTime;
+        this.createBy = createBy;
+        this.updateTime = updateTime;
+        this.updateBy = updateBy;
+        this.memo = memo;
+        this.systemStatus = systemStatus;
+    }
+
+//    BasCrnpErrLog basCrnpErrLog = new BasCrnpErrLog(
+//            null,    // 宸ヤ綔鍙�
+//            null,    // 鍙戠敓鏃堕棿
+//            null,    // 缁撴潫鏃堕棿
+//            null,    // 宸ヤ綔鐘舵��
+//            null,    // 鍏ュ嚭搴撶被鍨�
+//            null,    // 鍫嗗灈鏈哄彿
+//            null,    // 鐩爣搴撲綅
+//            null,    // 鐩爣绔�
+//            null,    // 婧愮珯
+//            null,    // 婧愬簱浣�
+//            null,    // 鏉$爜
+//            null,    // 寮傚父鐮�
+//            null,    // 寮傚父
+//            null,    // 寮傚父鎯呭喌
+//            null,    // 娣诲姞鏃堕棿
+//            null,    // 娣诲姞浜哄憳
+//            null,    // 淇敼鏃堕棿
+//            null,    // 淇敼浜哄憳
+//            null,    // 澶囨敞
+//            null    // 绯荤粺鐘舵�佹暟鎹�
+//    );
+
+    public String getStartTime$(){
+        if (Cools.isEmpty(this.startTime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.startTime);
+    }
+
+    public String getEndTime$(){
+        if (Cools.isEmpty(this.endTime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.endTime);
+    }
+
+    public String getWrkSts$(){
+        BasWrkStatusService service = SpringUtils.getBean(BasWrkStatusService.class);
+        BasWrkStatus basWrkStatus = service.selectById(this.wrkSts);
+        if (!Cools.isEmpty(basWrkStatus)){
+            return String.valueOf(basWrkStatus.getWrkDesc());
+        }
+        return null;
+    }
+
+    public String getIoType$(){
+        BasWrkIotypeService service = SpringUtils.getBean(BasWrkIotypeService.class);
+        BasWrkIotype basWrkIotype = service.selectById(this.ioType);
+        if (!Cools.isEmpty(basWrkIotype)){
+            return String.valueOf(basWrkIotype.getIoDesc());
+        }
+        return null;
+    }
+
+    public String getStatus$(){
+        if (null == this.status){ return null; }
+        switch (this.status){
+            case 1:
+                return "鏈鐞�";
+            case 2:
+                return "宸蹭慨澶�";
+            default:
+                return String.valueOf(this.status);
+        }
+    }
+
+    public String getCreateTime$(){
+        if (Cools.isEmpty(this.createTime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.createTime);
+    }
+
+    public String getCreateBy$(){
+        UserService service = SpringUtils.getBean(UserService.class);
+        User user = service.selectById(this.createBy);
+        if (!Cools.isEmpty(user)){
+            return String.valueOf(user.getId());
+        }
+        return null;
+    }
+
+    public String getUpdateTime$(){
+        if (Cools.isEmpty(this.updateTime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.updateTime);
+    }
+
+    public String getUpdateBy$(){
+        UserService service = SpringUtils.getBean(UserService.class);
+        User user = service.selectById(this.updateBy);
+        if (!Cools.isEmpty(user)){
+            return String.valueOf(user.getId());
+        }
+        return null;
+    }
+
+
+}
diff --git a/src/main/java/com/zy/asrs/entity/BasCrnpOpt.java b/src/main/java/com/zy/asrs/entity/BasCrnpOpt.java
new file mode 100644
index 0000000..cbfde43
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/BasCrnpOpt.java
@@ -0,0 +1,191 @@
+package com.zy.asrs.entity;
+
+import com.core.common.Cools;import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.enums.IdType;
+import com.baomidou.mybatisplus.annotations.TableField;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import com.core.common.SpringUtils;
+import com.zy.system.service.UserService;
+import com.zy.system.entity.User;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import com.baomidou.mybatisplus.annotations.TableName;
+import java.io.Serializable;
+
+@Data
+@TableName("asr_bas_crnp_opt")
+public class BasCrnpOpt implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 缂栧彿
+     */
+    @ApiModelProperty(value= "缂栧彿")
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 宸ヤ綔鍙�
+     */
+    @ApiModelProperty(value= "宸ヤ綔鍙�")
+    @TableField("wrk_no")
+    private Integer wrkNo;
+
+    /**
+     * 鍫嗗灈鏈哄彿
+     */
+    @ApiModelProperty(value= "鍫嗗灈鏈哄彿")
+    @TableField("crn_no")
+    private Integer crnNo;
+
+    /**
+     * 涓嬪彂鏃堕棿
+     */
+    @ApiModelProperty(value= "涓嬪彂鏃堕棿")
+    @TableField("send_time")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    private Date sendTime;
+
+    /**
+     * 浣滀笟
+     */
+    @ApiModelProperty(value= "浣滀笟")
+    private String mode;
+
+    /**
+     * 璧风偣搴撲綅
+     */
+    @ApiModelProperty(value= "璧风偣搴撲綅")
+    @TableField("source_loc_no")
+    private String sourceLocNo;
+
+    /**
+     * 鐩爣搴撲綅
+     */
+    @ApiModelProperty(value= "鐩爣搴撲綅")
+    @TableField("target_loc_no")
+    private String targetLocNo;
+
+    /**
+     * 淇敼鏃堕棿
+     */
+    @ApiModelProperty(value= "淇敼鏃堕棿")
+    @TableField("update_time")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    private Date updateTime;
+
+    /**
+     * 淇敼浜哄憳
+     */
+    @ApiModelProperty(value= "淇敼浜哄憳")
+    @TableField("update_by")
+    private Long updateBy;
+
+    /**
+     * 澶囨敞
+     */
+    @ApiModelProperty(value= "澶囨敞")
+    private String memo;
+
+    /**
+     * 鍛戒护
+     */
+    @ApiModelProperty(value= "鍛戒护")
+    private String command;
+
+    /**
+     * 绯荤粺鐘舵��
+     */
+    @ApiModelProperty(value= "绯荤粺鐘舵��")
+    @TableField("system_status")
+    private String systemStatus;
+
+    /**
+     * 涓嬪彂鐘舵�� 0: 鏈笅鍙�  1: 宸蹭笅鍙�  
+     */
+    @ApiModelProperty(value= "涓嬪彂鐘舵�� 0: 鏈笅鍙�  1: 宸蹭笅鍙�  ")
+    private Integer send;
+
+    /**
+     * 璇锋眰鍝嶅簲
+     */
+    @ApiModelProperty(value= "璇锋眰鍝嶅簲")
+    private String response;
+
+    public BasCrnpOpt() {}
+
+    public BasCrnpOpt(Integer wrkNo,Integer crnNo,Date sendTime,String mode,String sourceLocNo,String targetLocNo,Date updateTime,Long updateBy,String memo,String command,String systemStatus,Integer send,String response) {
+        this.wrkNo = wrkNo;
+        this.crnNo = crnNo;
+        this.sendTime = sendTime;
+        this.mode = mode;
+        this.sourceLocNo = sourceLocNo;
+        this.targetLocNo = targetLocNo;
+        this.updateTime = updateTime;
+        this.updateBy = updateBy;
+        this.memo = memo;
+        this.command = command;
+        this.systemStatus = systemStatus;
+        this.send = send;
+        this.response = response;
+    }
+
+//    BasCrnpOpt basCrnpOpt = new BasCrnpOpt(
+//            null,    // 宸ヤ綔鍙�
+//            null,    // 鍫嗗灈鏈哄彿
+//            null,    // 涓嬪彂鏃堕棿
+//            null,    // 浣滀笟
+//            null,    // 璧风偣搴撲綅
+//            null,    // 鐩爣搴撲綅
+//            null,    // 淇敼鏃堕棿
+//            null,    // 淇敼浜哄憳
+//            null,    // 澶囨敞
+//            null,    // 鍛戒护
+//            null,    // 绯荤粺鐘舵��
+//            null,    // 涓嬪彂鐘舵��
+//            null    // 璇锋眰鍝嶅簲
+//    );
+
+    public String getSendTime$(){
+        if (Cools.isEmpty(this.sendTime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.sendTime);
+    }
+
+    public String getUpdateTime$(){
+        if (Cools.isEmpty(this.updateTime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.updateTime);
+    }
+
+    public String getUpdateBy$(){
+        UserService service = SpringUtils.getBean(UserService.class);
+        User user = service.selectById(this.updateBy);
+        if (!Cools.isEmpty(user)){
+            return String.valueOf(user.getId());
+        }
+        return null;
+    }
+
+    public String getSend$(){
+        if (null == this.send){ return null; }
+        switch (this.send){
+            case 0:
+                return "鏈笅鍙�";
+            case 1:
+                return "宸蹭笅鍙�";
+            default:
+                return String.valueOf(this.send);
+        }
+    }
+
+
+}
diff --git a/src/main/java/com/zy/asrs/entity/BasLift.java b/src/main/java/com/zy/asrs/entity/BasLift.java
deleted file mode 100644
index 28afce3..0000000
--- a/src/main/java/com/zy/asrs/entity/BasLift.java
+++ /dev/null
@@ -1,150 +0,0 @@
-package com.zy.asrs.entity;
-
-import com.alibaba.fastjson.JSON;
-import com.core.common.Cools;import com.baomidou.mybatisplus.annotations.TableId;
-import com.baomidou.mybatisplus.enums.IdType;
-import com.baomidou.mybatisplus.annotations.TableField;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Date;
-
-import com.zy.common.model.LiftPointModel;
-import com.zy.core.model.LiftStation;
-import org.springframework.format.annotation.DateTimeFormat;
-import com.core.common.SpringUtils;
-import com.zy.system.service.UserService;
-import com.zy.system.entity.User;
-
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import com.baomidou.mybatisplus.annotations.TableName;
-import java.io.Serializable;
-import java.util.List;
-
-@Data
-@TableName("asr_bas_lift")
-public class BasLift implements Serializable {
-
-    private static final long serialVersionUID = 1L;
-
-    /**
-     * 鎻愬崌鏈哄彿
-     */
-    @ApiModelProperty(value= "鎻愬崌鏈哄彿")
-    @TableId(value = "lift_no", type = IdType.INPUT)
-    @TableField("lift_no")
-    private Integer liftNo;
-
-    /**
-     * 褰撳墠浠诲姟鐘舵��
-     */
-    @ApiModelProperty(value= "褰撳墠浠诲姟鐘舵��")
-    @TableField("status")
-    private Integer status;
-
-    /**
-     * 浠诲姟鍙�
-     */
-    @ApiModelProperty(value= "浠诲姟鍙�")
-    @TableField("wrk_no")
-    private Integer wrkNo;
-
-    /**
-     * 淇敼鏃堕棿
-     */
-    @ApiModelProperty(value= "淇敼鏃堕棿")
-    @TableField("update_time")
-    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
-    private Date updateTime;
-
-    /**
-     * 淇敼浜哄憳
-     */
-    @ApiModelProperty(value= "淇敼浜哄憳")
-    @TableField("update_by")
-    private Long updateBy;
-
-    /**
-     * 澶囨敞
-     */
-    @ApiModelProperty(value= "澶囨敞")
-    private String memo;
-
-    /**
-     * 浣滀笟鏍囪
-     */
-    @ApiModelProperty(value= "浣滀笟鏍囪")
-    @TableField("pak_mk")
-    private Boolean pakMk;
-
-    /**
-     * 璁惧鐘舵��
-     */
-    @ApiModelProperty(value= "璁惧鐘舵��")
-    @TableField("device_status")
-    private String deviceStatus;
-
-    /**
-     * 鎻愬崌鏈哄潗鏍�
-     */
-    @ApiModelProperty(value= "鎻愬崌鏈哄潗鏍�")
-    @TableField("point")
-    private String point;
-
-    /**
-     * 鎻愬崌鏈虹珯鐐�
-     */
-    @ApiModelProperty(value= "鎻愬崌鏈虹珯鐐�")
-    @TableField("station_list")
-    private String stationList;
-
-    public BasLift() {}
-
-    public BasLift(Integer liftNo, Integer status, Integer wrkNo, Date updateTime, Long updateBy, String memo, Boolean pakMk, String deviceStatus) {
-        this.liftNo = liftNo;
-        this.status = status;
-        this.wrkNo = wrkNo;
-        this.updateTime = updateTime;
-        this.updateBy = updateBy;
-        this.memo = memo;
-        this.pakMk = pakMk;
-        this.deviceStatus = deviceStatus;
-    }
-
-    public String getUpdateTime$(){
-        if (Cools.isEmpty(this.updateTime)){
-            return "";
-        }
-        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.updateTime);
-    }
-
-    public String getUpdateBy$(){
-        UserService service = SpringUtils.getBean(UserService.class);
-        User user = service.selectById(this.updateBy);
-        if (!Cools.isEmpty(user)){
-            return String.valueOf(user.getUsername());
-        }
-        return null;
-    }
-
-    public List<LiftStation> getStationList$(){
-        List<LiftStation> list = new ArrayList<>();
-        if (Cools.isEmpty(this.stationList)){
-            return list;
-        }
-
-        List<LiftStation> liftStations = JSON.parseArray(stationList, LiftStation.class);
-        list.addAll(liftStations);
-        return list;
-    }
-
-    public LiftPointModel getPoint$(){
-        if (Cools.isEmpty(this.point)){
-            return null;
-        }
-
-        LiftPointModel liftPointModel = JSON.parseObject(point, LiftPointModel.class);
-        return liftPointModel;
-    }
-
-}
diff --git a/src/main/java/com/zy/asrs/entity/BasLiftErr.java b/src/main/java/com/zy/asrs/entity/BasLiftErr.java
deleted file mode 100644
index 0105975..0000000
--- a/src/main/java/com/zy/asrs/entity/BasLiftErr.java
+++ /dev/null
@@ -1,122 +0,0 @@
-package com.zy.asrs.entity;
-
-import com.core.common.Cools;import com.baomidou.mybatisplus.annotations.TableId;
-import com.baomidou.mybatisplus.enums.IdType;
-import com.baomidou.mybatisplus.annotations.TableField;
-import com.core.common.SpringUtils;
-import com.zy.system.service.UserService;
-import com.zy.system.entity.User;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import org.springframework.format.annotation.DateTimeFormat;
-
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import com.baomidou.mybatisplus.annotations.TableName;
-import java.io.Serializable;
-
-@Data
-@TableName("asr_bas_lift_err")
-public class BasLiftErr implements Serializable {
-
-    private static final long serialVersionUID = 1L;
-
-    /**
-     * 寮傚父鐮�
-     */
-    @ApiModelProperty(value= "寮傚父鐮�")
-    @TableId(value = "error_code", type = IdType.INPUT)
-    @TableField("error_code")
-    private Long errorCode;
-
-    /**
-     * 寮傚父
-     */
-    @ApiModelProperty(value= "寮傚父")
-    @TableField("err_name")
-    private String errName;
-
-    /**
-     * 淇敼浜哄憳
-     */
-    @ApiModelProperty(value= "淇敼浜哄憳")
-    @TableField("modi_user")
-    private Long modiUser;
-
-    /**
-     * 淇敼鏃堕棿
-     */
-    @ApiModelProperty(value= "淇敼鏃堕棿")
-    @TableField("modi_time")
-    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
-    private Date modiTime;
-
-    /**
-     * 娣诲姞浜哄憳
-     */
-    @ApiModelProperty(value= "娣诲姞浜哄憳")
-    @TableField("appe_user")
-    private Long appeUser;
-
-    /**
-     * 娣诲姞鏃堕棿
-     */
-    @ApiModelProperty(value= "娣诲姞鏃堕棿")
-    @TableField("appe_time")
-    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
-    private Date appeTime;
-
-    public BasLiftErr() {}
-
-    public BasLiftErr(Long errorCode,String errName,Long modiUser,Date modiTime,Long appeUser,Date appeTime) {
-        this.errorCode = errorCode;
-        this.errName = errName;
-        this.modiUser = modiUser;
-        this.modiTime = modiTime;
-        this.appeUser = appeUser;
-        this.appeTime = appeTime;
-    }
-
-//    BasLiftErr basLiftErr = new BasLiftErr(
-//            null,    // 寮傚父鐮乕闈炵┖]
-//            null,    // 寮傚父
-//            null,    // 淇敼浜哄憳
-//            null,    // 淇敼鏃堕棿
-//            null,    // 娣诲姞浜哄憳
-//            null    // 娣诲姞鏃堕棿
-//    );
-
-    public String getModiUser$(){
-        UserService service = SpringUtils.getBean(UserService.class);
-        User user = service.selectById(this.modiUser);
-        if (!Cools.isEmpty(user)){
-            return String.valueOf(user.getUsername());
-        }
-        return null;
-    }
-
-    public String getModiTime$(){
-        if (Cools.isEmpty(this.modiTime)){
-            return "";
-        }
-        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.modiTime);
-    }
-
-    public String getAppeUser$(){
-        UserService service = SpringUtils.getBean(UserService.class);
-        User user = service.selectById(this.appeUser);
-        if (!Cools.isEmpty(user)){
-            return String.valueOf(user.getUsername());
-        }
-        return null;
-    }
-
-    public String getAppeTime$(){
-        if (Cools.isEmpty(this.appeTime)){
-            return "";
-        }
-        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.appeTime);
-    }
-
-
-}
diff --git a/src/main/java/com/zy/asrs/entity/BasLiftErrLog.java b/src/main/java/com/zy/asrs/entity/BasLiftErrLog.java
deleted file mode 100644
index 4e1e2ae..0000000
--- a/src/main/java/com/zy/asrs/entity/BasLiftErrLog.java
+++ /dev/null
@@ -1,293 +0,0 @@
-package com.zy.asrs.entity;
-
-import com.core.common.Cools;import com.baomidou.mybatisplus.annotations.TableId;
-import com.baomidou.mybatisplus.enums.IdType;
-import com.baomidou.mybatisplus.annotations.TableField;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-
-import org.springframework.format.annotation.DateTimeFormat;
-import com.core.common.SpringUtils;
-import com.zy.system.service.UserService;
-import com.zy.system.entity.User;
-
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import com.baomidou.mybatisplus.annotations.TableName;
-import java.io.Serializable;
-
-@Data
-@TableName("asr_bas_lift_err_log")
-public class BasLiftErrLog implements Serializable {
-
-    private static final long serialVersionUID = 1L;
-
-    @ApiModelProperty(value= "")
-    @TableId(value = "id", type = IdType.AUTO)
-    private Long id;
-
-    /**
-     * 缂栧彿
-     */
-    @ApiModelProperty(value= "缂栧彿")
-    private String uuid;
-
-    /**
-     * 宸ヤ綔鍙�
-     */
-    @ApiModelProperty(value= "宸ヤ綔鍙�")
-    @TableField("wrk_no")
-    private Integer wrkNo;
-
-    /**
-     * 鍙戠敓鏃堕棿
-     */
-    @ApiModelProperty(value= "鍙戠敓鏃堕棿")
-    @TableField("start_time")
-    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
-    private Date startTime;
-
-    /**
-     * 缁撴潫鏃堕棿
-     */
-    @ApiModelProperty(value= "缁撴潫鏃堕棿")
-    @TableField("end_time")
-    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
-    private Date endTime;
-
-    /**
-     * 宸ヤ綔鐘舵��
-     */
-    @ApiModelProperty(value= "宸ヤ綔鐘舵��")
-    @TableField("wrk_sts")
-    private Long wrkSts;
-
-    /**
-     * 鍏ュ嚭搴撶被鍨�
-     */
-    @ApiModelProperty(value= "鍏ュ嚭搴撶被鍨�")
-    @TableField("io_type")
-    private Integer ioType;
-
-    /**
-     * 鎻愬崌鏈哄彿
-     */
-    @ApiModelProperty(value= "鎻愬崌鏈哄彿")
-    @TableField("lift_no")
-    private Integer liftNo;
-
-    /**
-     * plc
-     */
-    @ApiModelProperty(value= "plc")
-    @TableField("plc_no")
-    private Integer plcNo;
-
-    /**
-     * 鐩爣搴撲綅
-     */
-    @ApiModelProperty(value= "鐩爣搴撲綅")
-    @TableField("loc_no")
-    private String locNo;
-
-    /**
-     * 鐩爣绔�
-     */
-    @ApiModelProperty(value= "鐩爣绔�")
-    @TableField("sta_no")
-    private Integer staNo;
-
-    /**
-     * 婧愮珯
-     */
-    @ApiModelProperty(value= "婧愮珯")
-    @TableField("source_sta_no")
-    private Integer sourceStaNo;
-
-    /**
-     * 婧愬簱浣�
-     */
-    @ApiModelProperty(value= "婧愬簱浣�")
-    @TableField("source_loc_no")
-    private String sourceLocNo;
-
-    /**
-     * 鏉$爜
-     */
-    @ApiModelProperty(value= "鏉$爜")
-    private String barcode;
-
-    /**
-     * 寮傚父鐮�
-     */
-    @ApiModelProperty(value= "寮傚父鐮�")
-    @TableField("err_code")
-    private Integer errCode;
-
-    /**
-     * 寮傚父
-     */
-    @ApiModelProperty(value= "寮傚父")
-    private String error;
-
-    /**
-     * 寮傚父鎯呭喌 1: 鏈鐞�  2: 宸蹭慨澶�  
-     */
-    @ApiModelProperty(value= "寮傚父鎯呭喌 1: 鏈鐞�  2: 宸蹭慨澶�  ")
-    private Integer status;
-
-    /**
-     * 娣诲姞鏃堕棿
-     */
-    @ApiModelProperty(value= "娣诲姞鏃堕棿")
-    @TableField("create_time")
-    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
-    private Date createTime;
-
-    /**
-     * 娣诲姞浜哄憳
-     */
-    @ApiModelProperty(value= "娣诲姞浜哄憳")
-    @TableField("create_by")
-    private Long createBy;
-
-    /**
-     * 淇敼鏃堕棿
-     */
-    @ApiModelProperty(value= "淇敼鏃堕棿")
-    @TableField("update_time")
-    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
-    private Date updateTime;
-
-    /**
-     * 淇敼浜哄憳
-     */
-    @ApiModelProperty(value= "淇敼浜哄憳")
-    @TableField("update_by")
-    private Long updateBy;
-
-    /**
-     * 澶囨敞
-     */
-    @ApiModelProperty(value= "澶囨敞")
-    private String memo;
-
-    /**
-     * 绯荤粺鐘舵�佹暟鎹�
-     */
-    @ApiModelProperty(value= "绯荤粺鐘舵�佹暟鎹�")
-    @TableField("system_status")
-    private String systemStatus;
-
-    public BasLiftErrLog() {}
-
-    public BasLiftErrLog(String uuid,Integer wrkNo,Date startTime,Date endTime,Long wrkSts,Integer ioType,Integer liftNo,Integer plcNo,String locNo,Integer staNo,Integer sourceStaNo,String sourceLocNo,String barcode,Integer errCode,String error,Integer status,Date createTime,Long createBy,Date updateTime,Long updateBy,String memo,String systemStatus) {
-        this.uuid = uuid;
-        this.wrkNo = wrkNo;
-        this.startTime = startTime;
-        this.endTime = endTime;
-        this.wrkSts = wrkSts;
-        this.ioType = ioType;
-        this.liftNo = liftNo;
-        this.plcNo = plcNo;
-        this.locNo = locNo;
-        this.staNo = staNo;
-        this.sourceStaNo = sourceStaNo;
-        this.sourceLocNo = sourceLocNo;
-        this.barcode = barcode;
-        this.errCode = errCode;
-        this.error = error;
-        this.status = status;
-        this.createTime = createTime;
-        this.createBy = createBy;
-        this.updateTime = updateTime;
-        this.updateBy = updateBy;
-        this.memo = memo;
-        this.systemStatus = systemStatus;
-    }
-
-//    BasLiftErrLog basLiftErrLog = new BasLiftErrLog(
-//            null,    // 缂栧彿
-//            null,    // 宸ヤ綔鍙�
-//            null,    // 鍙戠敓鏃堕棿
-//            null,    // 缁撴潫鏃堕棿
-//            null,    // 宸ヤ綔鐘舵��
-//            null,    // 鍏ュ嚭搴撶被鍨�
-//            null,    // 鎻愬崌鏈哄彿
-//            null,    // plc
-//            null,    // 鐩爣搴撲綅
-//            null,    // 鐩爣绔�
-//            null,    // 婧愮珯
-//            null,    // 婧愬簱浣�
-//            null,    // 鏉$爜
-//            null,    // 寮傚父鐮�
-//            null,    // 寮傚父
-//            null,    // 寮傚父鎯呭喌
-//            null,    // 娣诲姞鏃堕棿
-//            null,    // 娣诲姞浜哄憳
-//            null,    // 淇敼鏃堕棿
-//            null,    // 淇敼浜哄憳
-//            null,    // 澶囨敞
-//            null    // 绯荤粺鐘舵�佹暟鎹�
-//    );
-
-    public String getStartTime$(){
-        if (Cools.isEmpty(this.startTime)){
-            return "";
-        }
-        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.startTime);
-    }
-
-    public String getEndTime$(){
-        if (Cools.isEmpty(this.endTime)){
-            return "";
-        }
-        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.endTime);
-    }
-
-    public String getStatus$(){
-        if (null == this.status){ return null; }
-        switch (this.status){
-            case 1:
-                return "鏈鐞�";
-            case 2:
-                return "宸蹭慨澶�";
-            default:
-                return String.valueOf(this.status);
-        }
-    }
-
-    public String getCreateTime$(){
-        if (Cools.isEmpty(this.createTime)){
-            return "";
-        }
-        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.createTime);
-    }
-
-    public String getCreateBy$(){
-        UserService service = SpringUtils.getBean(UserService.class);
-        User user = service.selectById(this.createBy);
-        if (!Cools.isEmpty(user)){
-            return String.valueOf(user.getUsername());
-        }
-        return null;
-    }
-
-    public String getUpdateTime$(){
-        if (Cools.isEmpty(this.updateTime)){
-            return "";
-        }
-        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.updateTime);
-    }
-
-    public String getUpdateBy$(){
-        UserService service = SpringUtils.getBean(UserService.class);
-        User user = service.selectById(this.updateBy);
-        if (!Cools.isEmpty(user)){
-            return String.valueOf(user.getUsername());
-        }
-        return null;
-    }
-
-
-}
diff --git a/src/main/java/com/zy/asrs/entity/BasLiftOpt.java b/src/main/java/com/zy/asrs/entity/BasLiftOpt.java
deleted file mode 100644
index a77c5f2..0000000
--- a/src/main/java/com/zy/asrs/entity/BasLiftOpt.java
+++ /dev/null
@@ -1,141 +0,0 @@
-package com.zy.asrs.entity;
-
-import com.core.common.Cools;import com.baomidou.mybatisplus.annotations.TableId;
-import com.baomidou.mybatisplus.enums.IdType;
-import com.baomidou.mybatisplus.annotations.TableField;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import org.springframework.format.annotation.DateTimeFormat;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import com.core.common.SpringUtils;
-import com.zy.system.service.UserService;
-import com.zy.system.entity.User;
-
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import com.baomidou.mybatisplus.annotations.TableName;
-import java.io.Serializable;
-
-@Data
-@TableName("asr_bas_lift_opt")
-public class BasLiftOpt implements Serializable {
-
-    private static final long serialVersionUID = 1L;
-
-    @ApiModelProperty(value= "")
-    @TableId(value = "id", type = IdType.AUTO)
-    private Integer id;
-
-    /**
-     * 浠诲姟鍙�
-     */
-    @ApiModelProperty(value= "浠诲姟鍙�")
-    @TableField("wrk_no")
-    private Integer wrkNo;
-
-    /**
-     * 鎻愬崌鏈哄彿
-     */
-    @ApiModelProperty(value= "鎻愬崌鏈哄彿")
-    @TableField("lift_no")
-    private Integer liftNo;
-
-    /**
-     * 涓嬪彂鏃堕棿
-     */
-    @ApiModelProperty(value= "涓嬪彂鏃堕棿")
-    @TableField("send_time")
-    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
-    private Date sendTime;
-
-    /**
-     * 淇敼鏃堕棿
-     */
-    @ApiModelProperty(value= "淇敼鏃堕棿")
-    @TableField("update_time")
-    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
-    private Date updateTime;
-
-    /**
-     * 淇敼浜哄憳
-     */
-    @ApiModelProperty(value= "淇敼浜哄憳")
-    @TableField("update_by")
-    private Long updateBy;
-
-    /**
-     * 澶囨敞
-     */
-    @ApiModelProperty(value= "澶囨敞")
-    private String memo;
-
-    /**
-     * 鍛戒护
-     */
-    @ApiModelProperty(value= "鍛戒护")
-    private String command;
-
-    /**
-     * 绯荤粺鐘舵��
-     */
-    @ApiModelProperty(value= "绯荤粺鐘舵��")
-    @TableField("system_status")
-    private String systemStatus;
-
-    /**
-     * 璁惧宸ヤ綔鍙�
-     */
-    @ApiModelProperty(value= "璁惧宸ヤ綔鍙�")
-    @TableField("device_wrk")
-    private String deviceWrk;
-
-    public BasLiftOpt() {}
-
-    public BasLiftOpt(Integer wrkNo, Integer liftNo, Date sendTime, Date updateTime, Long updateBy, String memo, String command, String systemStatus) {
-        this.wrkNo = wrkNo;
-        this.liftNo = liftNo;
-        this.sendTime = sendTime;
-        this.updateTime = updateTime;
-        this.updateBy = updateBy;
-        this.memo = memo;
-        this.command = command;
-        this.systemStatus = systemStatus;
-    }
-
-//    BasLiftOpt basLiftOpt = new BasLiftOpt(
-//            null,    // 浠诲姟鍙�
-//            null,    // 鎻愬崌鏈哄彿
-//            null,    // 涓嬪彂鏃堕棿
-//            null,    // 浣滀笟
-//            null,    // 淇敼鏃堕棿
-//            null,    // 淇敼浜哄憳
-//            null,    // 澶囨敞
-//            null    // 鍛戒护
-//    );
-
-    public String getSendTime$(){
-        if (Cools.isEmpty(this.sendTime)){
-            return "";
-        }
-        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.sendTime);
-    }
-
-    public String getUpdateTime$(){
-        if (Cools.isEmpty(this.updateTime)){
-            return "";
-        }
-        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.updateTime);
-    }
-
-    public String getUpdateBy$(){
-        UserService service = SpringUtils.getBean(UserService.class);
-        User user = service.selectById(this.updateBy);
-        if (!Cools.isEmpty(user)){
-            return String.valueOf(user.getUsername());
-        }
-        return null;
-    }
-
-
-}
diff --git a/src/main/java/com/zy/asrs/entity/BasShuttle.java b/src/main/java/com/zy/asrs/entity/BasShuttle.java
deleted file mode 100644
index 12dafc7..0000000
--- a/src/main/java/com/zy/asrs/entity/BasShuttle.java
+++ /dev/null
@@ -1,207 +0,0 @@
-package com.zy.asrs.entity;
-
-import com.core.common.Cools;import com.baomidou.mybatisplus.annotations.TableId;
-import com.baomidou.mybatisplus.enums.IdType;
-import com.baomidou.mybatisplus.annotations.TableField;
-import com.core.common.SpringUtils;
-import com.zy.system.service.UserService;
-import com.zy.system.entity.User;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import org.springframework.format.annotation.DateTimeFormat;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import com.baomidou.mybatisplus.annotations.TableName;
-import java.io.Serializable;
-
-@Data
-@TableName("asr_bas_shuttle")
-public class BasShuttle implements Serializable {
-
-    private static final long serialVersionUID = 1L;
-
-    /**
-     * 鍥涘悜绌挎杞﹀彿
-     */
-    @ApiModelProperty(value= "鍥涘悜绌挎杞﹀彿")
-    @TableId(value = "shuttle_no", type = IdType.INPUT)
-    @TableField("shuttle_no")
-    private Integer shuttleNo;
-
-    /**
-     * 鐘舵�� 1: 姝e父  0: 绂佺敤  
-     */
-    @ApiModelProperty(value= "鐘舵�� 1: 姝e父  0: 绂佺敤  ")
-    private Integer status;
-
-    /**
-     * 褰撳墠灏忚溅鐘舵�侊紙鍐呴儴鑷垜缁存姢锛�
-     */
-    @ApiModelProperty(value= "褰撳墠灏忚溅鐘舵�侊紙鍐呴儴鑷垜缁存姢锛�")
-    @TableField("shuttle_status")
-    private Integer shuttleStatus;
-
-    /**
-     * 浠诲姟鍙�
-     */
-    @ApiModelProperty(value= "浠诲姟鍙�")
-    @TableField("wrk_no")
-    private Integer wrkNo;
-
-    /**
-     * 鏆傚瓨搴撲綅
-     */
-    @ApiModelProperty(value= "鏆傚瓨搴撲綅")
-    @TableField("idle_loc")
-    private String idleLoc;
-
-    /**
-     * 鑷姩鍏呯數
-     */
-    @ApiModelProperty(value= "鑷姩鍏呯數")
-    @TableField("auto_charge")
-    private Integer autoCharge;
-
-    /**
-     * 鐢甸噺绾�
-     */
-    @ApiModelProperty(value= "鐢甸噺绾�")
-    @TableField("charge_line")
-    private Integer chargeLine;
-
-    /**
-     * 寤鸿鐢甸噺绾�
-     */
-    @ApiModelProperty(value= "寤鸿鐢甸噺绾�")
-    @TableField("suggest_charge_line")
-    private Integer suggestChargeLine;
-
-    /**
-     * 娣诲姞浜哄憳
-     */
-    @ApiModelProperty(value= "娣诲姞浜哄憳")
-    @TableField("create_by")
-    private Long createBy;
-
-    /**
-     * 娣诲姞鏃堕棿
-     */
-    @ApiModelProperty(value= "娣诲姞鏃堕棿")
-    @TableField("create_time")
-    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
-    private Date createTime;
-
-    /**
-     * 淇敼浜哄憳
-     */
-    @ApiModelProperty(value= "淇敼浜哄憳")
-    @TableField("update_by")
-    private Long updateBy;
-
-    /**
-     * 淇敼鏃堕棿
-     */
-    @ApiModelProperty(value= "淇敼鏃堕棿")
-    @TableField("update_time")
-    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
-    private Date updateTime;
-
-    /**
-     * 澶囨敞
-     */
-    @ApiModelProperty(value= "澶囨敞")
-    private String memo;
-
-    /**
-     * 浣滀笟鏍囪
-     */
-    @ApiModelProperty(value= "浣滀笟鏍囪")
-    @TableField("pak_mk")
-    private Boolean pakMk;
-
-    /**
-     * 灏忚溅杩愯閫熷害
-     */
-    @ApiModelProperty(value= "灏忚溅杩愯閫熷害")
-    @TableField("run_speed")
-    private Integer runSpeed;
-
-    /**
-     * 璁惧鐘舵��
-     */
-    @ApiModelProperty(value= "璁惧鐘舵��")
-    @TableField("device_status")
-    private String deviceStatus;
-
-    /**
-     * 灏忚溅绂佺敤妤煎眰
-     */
-    @ApiModelProperty(value= "灏忚溅绂佺敤妤煎眰")
-    @TableField("disable_lev")
-    private String disableLev;
-
-    public BasShuttle() {}
-
-    public BasShuttle(Integer shuttleNo, Integer status, Integer shuttleStatus, Integer wrkNo, String idleLoc, Integer autoCharge, Integer chargeLine, Long createBy, Date createTime, Long updateBy, Date updateTime, String memo, Boolean pakMk, String deviceStatus) {
-        this.shuttleNo = shuttleNo;
-        this.status = status;
-        this.shuttleStatus = shuttleStatus;
-        this.wrkNo = wrkNo;
-        this.idleLoc = idleLoc;
-        this.autoCharge = autoCharge;
-        this.chargeLine = chargeLine;
-        this.createBy = createBy;
-        this.createTime = createTime;
-        this.updateBy = updateBy;
-        this.updateTime = updateTime;
-        this.memo = memo;
-        this.pakMk = pakMk;
-        this.deviceStatus = deviceStatus;
-    }
-
-    public String getStatus$(){
-        if (null == this.status){ return null; }
-        switch (this.status){
-            case 1:
-                return "姝e父";
-            case 0:
-                return "绂佺敤";
-            default:
-                return String.valueOf(this.status);
-        }
-    }
-
-    public String getCreateBy$(){
-        UserService service = SpringUtils.getBean(UserService.class);
-        User user = service.selectById(this.createBy);
-        if (!Cools.isEmpty(user)){
-            return String.valueOf(user.getUsername());
-        }
-        return null;
-    }
-
-    public String getCreateTime$(){
-        if (Cools.isEmpty(this.createTime)){
-            return "";
-        }
-        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.createTime);
-    }
-
-    public String getUpdateBy$(){
-        UserService service = SpringUtils.getBean(UserService.class);
-        User user = service.selectById(this.updateBy);
-        if (!Cools.isEmpty(user)){
-            return String.valueOf(user.getUsername());
-        }
-        return null;
-    }
-
-    public String getUpdateTime$(){
-        if (Cools.isEmpty(this.updateTime)){
-            return "";
-        }
-        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.updateTime);
-    }
-
-
-}
diff --git a/src/main/java/com/zy/asrs/entity/BasShuttleCharge.java b/src/main/java/com/zy/asrs/entity/BasShuttleCharge.java
deleted file mode 100644
index fed41da..0000000
--- a/src/main/java/com/zy/asrs/entity/BasShuttleCharge.java
+++ /dev/null
@@ -1,117 +0,0 @@
-package com.zy.asrs.entity;
-
-import com.core.common.Cools;import com.baomidou.mybatisplus.annotations.TableId;
-import com.baomidou.mybatisplus.enums.IdType;
-import com.baomidou.mybatisplus.annotations.TableField;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import org.springframework.format.annotation.DateTimeFormat;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import com.baomidou.mybatisplus.annotations.TableName;
-import java.io.Serializable;
-
-@Data
-@TableName("asr_bas_shuttle_charge")
-public class BasShuttleCharge implements Serializable {
-
-    private static final long serialVersionUID = 1L;
-
-    @ApiModelProperty(value= "")
-    @TableId(value = "id", type = IdType.AUTO)
-    private Integer id;
-
-    /**
-     * 鍏呯數妗╃紪鍙�
-     */
-    @ApiModelProperty(value= "鍏呯數妗╃紪鍙�")
-    @TableField("charge_id")
-    private Integer chargeId;
-
-    /**
-     * 搴撲綅鍙�
-     */
-    @ApiModelProperty(value= "搴撲綅鍙�")
-    @TableField("loc_no")
-    private String locNo;
-
-    /**
-     * 寰呮満浣�
-     */
-    @ApiModelProperty(value= "寰呮満浣�")
-    @TableField("wait_loc_no")
-    private String waitLocNo;
-
-    /**
-     * 鍒涘缓鏃堕棿
-     */
-    @ApiModelProperty(value= "鍒涘缓鏃堕棿")
-    @TableField("create_time")
-    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
-    private Date createTime;
-
-    /**
-     * 鏇存柊鏃堕棿
-     */
-    @ApiModelProperty(value= "鏇存柊鏃堕棿")
-    @TableField("update_time")
-    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
-    private Date updateTime;
-
-    /**
-     * 鐘舵�� 0: 绂佺敤  1: 姝e父  
-     */
-    @ApiModelProperty(value= "鐘舵�� 0: 绂佺敤  1: 姝e父  ")
-    private Integer status;
-
-    public BasShuttleCharge() {}
-
-    public BasShuttleCharge(Integer chargeId,String locNo,String waitLocNo,Date createTime,Date updateTime,Integer status) {
-        this.chargeId = chargeId;
-        this.locNo = locNo;
-        this.waitLocNo = waitLocNo;
-        this.createTime = createTime;
-        this.updateTime = updateTime;
-        this.status = status;
-    }
-
-//    BasShuttleCharge basShuttleCharge = new BasShuttleCharge(
-//            null,    // 鍏呯數妗╃紪鍙�
-//            null,    // 搴撲綅鍙�
-//            null,    // 寰呮満浣�
-//            null,    // 鍒涘缓鏃堕棿
-//            null,    // 鏇存柊鏃堕棿
-//            null    // 鐘舵��
-//    );
-
-    public String getCreateTime$(){
-        if (Cools.isEmpty(this.createTime)){
-            return "";
-        }
-        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.createTime);
-    }
-
-    public String getUpdateTime$(){
-        if (Cools.isEmpty(this.updateTime)){
-            return "";
-        }
-        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.updateTime);
-    }
-
-    public String getStatus$(){
-        if (null == this.status){ return null; }
-        switch (this.status){
-            case 0:
-                return "绂佺敤";
-            case 1:
-                return "姝e父";
-            default:
-                return String.valueOf(this.status);
-        }
-    }
-
-
-}
diff --git a/src/main/java/com/zy/asrs/entity/BasShuttleErr.java b/src/main/java/com/zy/asrs/entity/BasShuttleErr.java
deleted file mode 100644
index a885129..0000000
--- a/src/main/java/com/zy/asrs/entity/BasShuttleErr.java
+++ /dev/null
@@ -1,127 +0,0 @@
-package com.zy.asrs.entity;
-
-import com.core.common.Cools;import com.baomidou.mybatisplus.annotations.TableId;
-import com.baomidou.mybatisplus.enums.IdType;
-import com.baomidou.mybatisplus.annotations.TableField;
-import com.core.common.SpringUtils;
-import com.zy.system.service.UserService;
-import com.zy.system.entity.User;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import org.springframework.format.annotation.DateTimeFormat;
-import com.core.common.SpringUtils;
-import com.zy.system.service.UserService;
-import com.zy.system.entity.User;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import com.baomidou.mybatisplus.annotations.TableName;
-import java.io.Serializable;
-
-@Data
-@TableName("asr_bas_shuttle_err")
-public class BasShuttleErr implements Serializable {
-
-    private static final long serialVersionUID = 1L;
-
-    /**
-     * 寮傚父鐮�
-     */
-    @ApiModelProperty(value= "寮傚父鐮�")
-    @TableId(value = "error_code", type = IdType.INPUT)
-    @TableField("error_code")
-    private Long errorCode;
-
-    /**
-     * 寮傚父
-     */
-    @ApiModelProperty(value= "寮傚父")
-    @TableField("err_name")
-    private String errName;
-
-    /**
-     * 淇敼浜哄憳
-     */
-    @ApiModelProperty(value= "淇敼浜哄憳")
-    @TableField("modi_user")
-    private Long modiUser;
-
-    /**
-     * 淇敼鏃堕棿
-     */
-    @ApiModelProperty(value= "淇敼鏃堕棿")
-    @TableField("modi_time")
-    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
-    private Date modiTime;
-
-    /**
-     * 娣诲姞浜哄憳
-     */
-    @ApiModelProperty(value= "娣诲姞浜哄憳")
-    @TableField("appe_user")
-    private Long appeUser;
-
-    /**
-     * 娣诲姞鏃堕棿
-     */
-    @ApiModelProperty(value= "娣诲姞鏃堕棿")
-    @TableField("appe_time")
-    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
-    private Date appeTime;
-
-    public BasShuttleErr() {}
-
-    public BasShuttleErr(Long errorCode,String errName,Long modiUser,Date modiTime,Long appeUser,Date appeTime) {
-        this.errorCode = errorCode;
-        this.errName = errName;
-        this.modiUser = modiUser;
-        this.modiTime = modiTime;
-        this.appeUser = appeUser;
-        this.appeTime = appeTime;
-    }
-
-//    BasShuttleErr basShuttleErr = new BasShuttleErr(
-//            null,    // 寮傚父鐮乕闈炵┖]
-//            null,    // 寮傚父
-//            null,    // 淇敼浜哄憳
-//            null,    // 淇敼鏃堕棿
-//            null,    // 娣诲姞浜哄憳
-//            null    // 娣诲姞鏃堕棿
-//    );
-
-    public String getModiUser$(){
-        UserService service = SpringUtils.getBean(UserService.class);
-        User user = service.selectById(this.modiUser);
-        if (!Cools.isEmpty(user)){
-            return String.valueOf(user.getUsername());
-        }
-        return null;
-    }
-
-    public String getModiTime$(){
-        if (Cools.isEmpty(this.modiTime)){
-            return "";
-        }
-        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.modiTime);
-    }
-
-    public String getAppeUser$(){
-        UserService service = SpringUtils.getBean(UserService.class);
-        User user = service.selectById(this.appeUser);
-        if (!Cools.isEmpty(user)){
-            return String.valueOf(user.getUsername());
-        }
-        return null;
-    }
-
-    public String getAppeTime$(){
-        if (Cools.isEmpty(this.appeTime)){
-            return "";
-        }
-        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.appeTime);
-    }
-
-
-}
diff --git a/src/main/java/com/zy/asrs/entity/BasShuttleErrLog.java b/src/main/java/com/zy/asrs/entity/BasShuttleErrLog.java
deleted file mode 100644
index 34304c4..0000000
--- a/src/main/java/com/zy/asrs/entity/BasShuttleErrLog.java
+++ /dev/null
@@ -1,291 +0,0 @@
-package com.zy.asrs.entity;
-
-import com.core.common.Cools;import com.baomidou.mybatisplus.annotations.TableId;
-import com.baomidou.mybatisplus.enums.IdType;
-import com.baomidou.mybatisplus.annotations.TableField;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import org.springframework.format.annotation.DateTimeFormat;
-import com.core.common.SpringUtils;
-import com.zy.system.service.UserService;
-import com.zy.system.entity.User;
-
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import com.baomidou.mybatisplus.annotations.TableName;
-import java.io.Serializable;
-
-@Data
-@TableName("asr_bas_shuttle_err_log")
-public class BasShuttleErrLog implements Serializable {
-
-    private static final long serialVersionUID = 1L;
-
-    @ApiModelProperty(value= "")
-    @TableId(value = "id", type = IdType.AUTO)
-    private Long id;
-
-    /**
-     * 缂栧彿
-     */
-    @ApiModelProperty(value= "缂栧彿")
-    private String uuid;
-
-    /**
-     * 宸ヤ綔鍙�
-     */
-    @ApiModelProperty(value= "宸ヤ綔鍙�")
-    @TableField("wrk_no")
-    private Integer wrkNo;
-
-    /**
-     * 鍙戠敓鏃堕棿
-     */
-    @ApiModelProperty(value= "鍙戠敓鏃堕棿")
-    @TableField("start_time")
-    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
-    private Date startTime;
-
-    /**
-     * 缁撴潫鏃堕棿
-     */
-    @ApiModelProperty(value= "缁撴潫鏃堕棿")
-    @TableField("end_time")
-    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
-    private Date endTime;
-
-    /**
-     * 宸ヤ綔鐘舵��
-     */
-    @ApiModelProperty(value= "宸ヤ綔鐘舵��")
-    @TableField("wrk_sts")
-    private Long wrkSts;
-
-    /**
-     * 鍏ュ嚭搴撶被鍨�
-     */
-    @ApiModelProperty(value= "鍏ュ嚭搴撶被鍨�")
-    @TableField("io_type")
-    private Integer ioType;
-
-    /**
-     * 绌挎杞�
-     */
-    @ApiModelProperty(value= "绌挎杞�")
-    @TableField("shuttle_no")
-    private Integer shuttleNo;
-
-    /**
-     * plc
-     */
-    @ApiModelProperty(value= "plc")
-    @TableField("plc_no")
-    private Integer plcNo;
-
-    /**
-     * 鐩爣搴撲綅
-     */
-    @ApiModelProperty(value= "鐩爣搴撲綅")
-    @TableField("loc_no")
-    private String locNo;
-
-    /**
-     * 鐩爣绔�
-     */
-    @ApiModelProperty(value= "鐩爣绔�")
-    @TableField("sta_no")
-    private Integer staNo;
-
-    /**
-     * 婧愮珯
-     */
-    @ApiModelProperty(value= "婧愮珯")
-    @TableField("source_sta_no")
-    private Integer sourceStaNo;
-
-    /**
-     * 婧愬簱浣�
-     */
-    @ApiModelProperty(value= "婧愬簱浣�")
-    @TableField("source_loc_no")
-    private String sourceLocNo;
-
-    /**
-     * 鏉$爜
-     */
-    @ApiModelProperty(value= "鏉$爜")
-    private String barcode;
-
-    /**
-     * 寮傚父鐮�
-     */
-    @ApiModelProperty(value= "寮傚父鐮�")
-    @TableField("err_code")
-    private Integer errCode;
-
-    /**
-     * 寮傚父
-     */
-    @ApiModelProperty(value= "寮傚父")
-    private String error;
-
-    /**
-     * 寮傚父鎯呭喌 1: 鏈鐞�  2: 宸蹭慨澶�  
-     */
-    @ApiModelProperty(value= "寮傚父鎯呭喌 1: 鏈鐞�  2: 宸蹭慨澶�  ")
-    private Integer status;
-
-    /**
-     * 娣诲姞鏃堕棿
-     */
-    @ApiModelProperty(value= "娣诲姞鏃堕棿")
-    @TableField("create_time")
-    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
-    private Date createTime;
-
-    /**
-     * 娣诲姞浜哄憳
-     */
-    @ApiModelProperty(value= "娣诲姞浜哄憳")
-    @TableField("create_by")
-    private Long createBy;
-
-    /**
-     * 淇敼鏃堕棿
-     */
-    @ApiModelProperty(value= "淇敼鏃堕棿")
-    @TableField("update_time")
-    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
-    private Date updateTime;
-
-    /**
-     * 淇敼浜哄憳
-     */
-    @ApiModelProperty(value= "淇敼浜哄憳")
-    @TableField("update_by")
-    private Long updateBy;
-
-    /**
-     * 澶囨敞
-     */
-    @ApiModelProperty(value= "澶囨敞")
-    private String memo;
-
-    /**
-     * 绯荤粺鐘舵�佹暟鎹�
-     */
-    @ApiModelProperty(value= "绯荤粺鐘舵�佹暟鎹�")
-    @TableField("system_status")
-    private String systemStatus;
-
-    public BasShuttleErrLog() {}
-
-    public BasShuttleErrLog(String uuid, Integer wrkNo, Date startTime, Date endTime, Long wrkSts, Integer ioType, Integer shuttleNo, Integer plcNo, String locNo, Integer staNo, Integer sourceStaNo, String sourceLocNo, String barcode, Integer errCode, String error, Integer status, Date createTime, Long createBy, Date updateTime, Long updateBy, String memo, String systemStatus) {
-        this.uuid = uuid;
-        this.wrkNo = wrkNo;
-        this.startTime = startTime;
-        this.endTime = endTime;
-        this.wrkSts = wrkSts;
-        this.ioType = ioType;
-        this.shuttleNo = shuttleNo;
-        this.plcNo = plcNo;
-        this.locNo = locNo;
-        this.staNo = staNo;
-        this.sourceStaNo = sourceStaNo;
-        this.sourceLocNo = sourceLocNo;
-        this.barcode = barcode;
-        this.errCode = errCode;
-        this.error = error;
-        this.status = status;
-        this.createTime = createTime;
-        this.createBy = createBy;
-        this.updateTime = updateTime;
-        this.updateBy = updateBy;
-        this.memo = memo;
-        this.systemStatus = systemStatus;
-    }
-
-//    BasShuttleErrLog basShuttleErrLog = new BasShuttleErrLog(
-//            null,    // 缂栧彿
-//            null,    // 宸ヤ綔鍙�
-//            null,    // 鍙戠敓鏃堕棿
-//            null,    // 缁撴潫鏃堕棿
-//            null,    // 宸ヤ綔鐘舵��
-//            null,    // 鍏ュ嚭搴撶被鍨�
-//            null,    // 绌挎杞�
-//            null,    // plc
-//            null,    // 鐩爣搴撲綅
-//            null,    // 鐩爣绔�
-//            null,    // 婧愮珯
-//            null,    // 婧愬簱浣�
-//            null,    // 鏉$爜
-//            null,    // 寮傚父鐮�
-//            null,    // 寮傚父
-//            null,    // 寮傚父鎯呭喌
-//            null,    // 娣诲姞鏃堕棿
-//            null,    // 娣诲姞浜哄憳
-//            null,    // 淇敼鏃堕棿
-//            null,    // 淇敼浜哄憳
-//            null    // 澶囨敞
-//    );
-
-    public String getStartTime$(){
-        if (Cools.isEmpty(this.startTime)){
-            return "";
-        }
-        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.startTime);
-    }
-
-    public String getEndTime$(){
-        if (Cools.isEmpty(this.endTime)){
-            return "";
-        }
-        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.endTime);
-    }
-
-    public String getStatus$(){
-        if (null == this.status){ return null; }
-        switch (this.status){
-            case 1:
-                return "鏈鐞�";
-            case 2:
-                return "宸蹭慨澶�";
-            default:
-                return String.valueOf(this.status);
-        }
-    }
-
-    public String getCreateTime$(){
-        if (Cools.isEmpty(this.createTime)){
-            return "";
-        }
-        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.createTime);
-    }
-
-    public String getCreateBy$(){
-        UserService service = SpringUtils.getBean(UserService.class);
-        User user = service.selectById(this.createBy);
-        if (!Cools.isEmpty(user)){
-            return String.valueOf(user.getUsername());
-        }
-        return null;
-    }
-
-    public String getUpdateTime$(){
-        if (Cools.isEmpty(this.updateTime)){
-            return "";
-        }
-        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.updateTime);
-    }
-
-    public String getUpdateBy$(){
-        UserService service = SpringUtils.getBean(UserService.class);
-        User user = service.selectById(this.updateBy);
-        if (!Cools.isEmpty(user)){
-            return String.valueOf(user.getUsername());
-        }
-        return null;
-    }
-
-
-}
diff --git a/src/main/java/com/zy/asrs/entity/BasShuttleOpt.java b/src/main/java/com/zy/asrs/entity/BasShuttleOpt.java
deleted file mode 100644
index 2a1325f..0000000
--- a/src/main/java/com/zy/asrs/entity/BasShuttleOpt.java
+++ /dev/null
@@ -1,180 +0,0 @@
-package com.zy.asrs.entity;
-
-import com.core.common.Cools;import com.baomidou.mybatisplus.annotations.TableId;
-import com.baomidou.mybatisplus.enums.IdType;
-import com.baomidou.mybatisplus.annotations.TableField;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import org.springframework.format.annotation.DateTimeFormat;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import com.core.common.SpringUtils;
-import com.zy.system.service.UserService;
-import com.zy.system.entity.User;
-
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import com.baomidou.mybatisplus.annotations.TableName;
-import java.io.Serializable;
-
-@Data
-@TableName("asr_bas_shuttle_opt")
-public class BasShuttleOpt implements Serializable {
-
-    private static final long serialVersionUID = 1L;
-
-    @ApiModelProperty(value= "")
-    @TableId(value = "id", type = IdType.AUTO)
-    private Long id;
-
-    /**
-     * 浠诲姟鍙�
-     */
-    @ApiModelProperty(value= "浠诲姟鍙�")
-    @TableField("wrk_no")
-    private Integer wrkNo;
-
-    /**
-     * 绌挎杞﹀彿
-     */
-    @ApiModelProperty(value= "绌挎杞﹀彿")
-    @TableField("shuttle_no")
-    private Integer shuttleNo;
-
-    /**
-     * 涓嬪彂鏃堕棿
-     */
-    @ApiModelProperty(value= "涓嬪彂鏃堕棿")
-    @TableField("send_time")
-    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
-    private Date sendTime;
-
-    /**
-     * 浣滀笟
-     */
-    @ApiModelProperty(value= "浣滀笟")
-    private String mode;
-
-    /**
-     * 璧风偣搴撲綅
-     */
-    @ApiModelProperty(value= "璧风偣搴撲綅")
-    @TableField("source_loc_no")
-    private String sourceLocNo;
-
-    /**
-     * 鐩爣搴撲綅
-     */
-    @ApiModelProperty(value= "鐩爣搴撲綅")
-    @TableField("dist_loc_no")
-    private String distLocNo;
-
-    /**
-     * 淇敼鏃堕棿
-     */
-    @ApiModelProperty(value= "淇敼鏃堕棿")
-    @TableField("update_time")
-    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
-    private Date updateTime;
-
-    /**
-     * 淇敼浜哄憳
-     */
-    @ApiModelProperty(value= "淇敼浜哄憳")
-    @TableField("update_by")
-    private Long updateBy;
-
-    /**
-     * 澶囨敞
-     */
-    @ApiModelProperty(value= "澶囨敞")
-    private String memo;
-
-    /**
-     * 鍛戒护
-     */
-    @ApiModelProperty(value= "鍛戒护")
-    private String command;
-
-    /**
-     * 绯荤粺鐘舵��
-     */
-    @ApiModelProperty(value= "绯荤粺鐘舵��")
-    @TableField("system_status")
-    private String systemStatus;
-
-    /**
-     * 涓嬪彂鐘舵�亄0:鏈笅鍙�,1:宸蹭笅鍙憓
-     */
-    @ApiModelProperty(value= "涓嬪彂鐘舵�亄0:鏈笅鍙�,1:宸蹭笅鍙憓")
-    @TableField("send")
-    private Integer send;
-
-    /**
-     * 璇锋眰鍝嶅簲
-     */
-    @ApiModelProperty(value= "璇锋眰鍝嶅簲")
-    @TableField("response")
-    private String response;
-
-    /**
-     * 璁惧宸ヤ綔鍙�
-     */
-    @ApiModelProperty(value= "璁惧宸ヤ綔鍙�")
-    @TableField("device_wrk")
-    private String deviceWrk;
-
-    public BasShuttleOpt() {}
-
-    public BasShuttleOpt(Integer wrkNo, Integer shuttleNo, Date sendTime, String mode, String sourceLocNo, String distLocNo, Date updateTime, Long updateBy, String memo, String command, String systemStatus) {
-        this.wrkNo = wrkNo;
-        this.shuttleNo = shuttleNo;
-        this.sendTime = sendTime;
-        this.mode = mode;
-        this.sourceLocNo = sourceLocNo;
-        this.distLocNo = distLocNo;
-        this.updateTime = updateTime;
-        this.updateBy = updateBy;
-        this.memo = memo;
-        this.command = command;
-        this.systemStatus = systemStatus;
-    }
-
-//    BasShuttleOpt basShuttleOpt = new BasShuttleOpt(
-//            null,    // 浠诲姟鍙�
-//            null,    // 绌挎杞﹀彿
-//            null,    // 涓嬪彂鏃堕棿
-//            null,    // 浣滀笟
-//            null,    // 璧风偣搴撲綅
-//            null,    // 鐩爣搴撲綅
-//            null,    // 淇敼鏃堕棿
-//            null,    // 淇敼浜哄憳
-//            null,    // 澶囨敞
-//            null    // 鍛戒护
-//    );
-
-    public String getSendTime$(){
-        if (Cools.isEmpty(this.sendTime)){
-            return "";
-        }
-        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.sendTime);
-    }
-
-    public String getUpdateTime$(){
-        if (Cools.isEmpty(this.updateTime)){
-            return "";
-        }
-        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.updateTime);
-    }
-
-    public String getUpdateBy$(){
-        UserService service = SpringUtils.getBean(UserService.class);
-        User user = service.selectById(this.updateBy);
-        if (!Cools.isEmpty(user)){
-            return String.valueOf(user.getUsername());
-        }
-        return null;
-    }
-
-
-}
diff --git a/src/main/java/com/zy/asrs/mapper/BasCrnpErrLogMapper.java b/src/main/java/com/zy/asrs/mapper/BasCrnpErrLogMapper.java
new file mode 100644
index 0000000..7879774
--- /dev/null
+++ b/src/main/java/com/zy/asrs/mapper/BasCrnpErrLogMapper.java
@@ -0,0 +1,12 @@
+package com.zy.asrs.mapper;
+
+import com.zy.asrs.entity.BasCrnpErrLog;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import org.springframework.stereotype.Repository;
+
+@Mapper
+@Repository
+public interface BasCrnpErrLogMapper extends BaseMapper<BasCrnpErrLog> {
+
+}
diff --git a/src/main/java/com/zy/asrs/mapper/BasCrnpErrMapper.java b/src/main/java/com/zy/asrs/mapper/BasCrnpErrMapper.java
new file mode 100644
index 0000000..51bdc94
--- /dev/null
+++ b/src/main/java/com/zy/asrs/mapper/BasCrnpErrMapper.java
@@ -0,0 +1,12 @@
+package com.zy.asrs.mapper;
+
+import com.zy.asrs.entity.BasCrnpErr;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import org.springframework.stereotype.Repository;
+
+@Mapper
+@Repository
+public interface BasCrnpErrMapper extends BaseMapper<BasCrnpErr> {
+
+}
diff --git a/src/main/java/com/zy/asrs/mapper/BasCrnpMapper.java b/src/main/java/com/zy/asrs/mapper/BasCrnpMapper.java
new file mode 100644
index 0000000..30c488c
--- /dev/null
+++ b/src/main/java/com/zy/asrs/mapper/BasCrnpMapper.java
@@ -0,0 +1,12 @@
+package com.zy.asrs.mapper;
+
+import com.zy.asrs.entity.BasCrnp;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import org.springframework.stereotype.Repository;
+
+@Mapper
+@Repository
+public interface BasCrnpMapper extends BaseMapper<BasCrnp> {
+
+}
diff --git a/src/main/java/com/zy/asrs/mapper/BasCrnpOptMapper.java b/src/main/java/com/zy/asrs/mapper/BasCrnpOptMapper.java
new file mode 100644
index 0000000..08380f7
--- /dev/null
+++ b/src/main/java/com/zy/asrs/mapper/BasCrnpOptMapper.java
@@ -0,0 +1,12 @@
+package com.zy.asrs.mapper;
+
+import com.zy.asrs.entity.BasCrnpOpt;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import org.springframework.stereotype.Repository;
+
+@Mapper
+@Repository
+public interface BasCrnpOptMapper extends BaseMapper<BasCrnpOpt> {
+
+}
diff --git a/src/main/java/com/zy/asrs/mapper/BasLiftErrLogMapper.java b/src/main/java/com/zy/asrs/mapper/BasLiftErrLogMapper.java
deleted file mode 100644
index ee2206a..0000000
--- a/src/main/java/com/zy/asrs/mapper/BasLiftErrLogMapper.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package com.zy.asrs.mapper;
-
-import com.zy.asrs.entity.BasLiftErrLog;
-import com.baomidou.mybatisplus.mapper.BaseMapper;
-import org.apache.ibatis.annotations.Mapper;
-import org.springframework.stereotype.Repository;
-
-@Mapper
-@Repository
-public interface BasLiftErrLogMapper extends BaseMapper<BasLiftErrLog> {
-
-}
diff --git a/src/main/java/com/zy/asrs/mapper/BasLiftErrMapper.java b/src/main/java/com/zy/asrs/mapper/BasLiftErrMapper.java
deleted file mode 100644
index e76a8fb..0000000
--- a/src/main/java/com/zy/asrs/mapper/BasLiftErrMapper.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package com.zy.asrs.mapper;
-
-import com.zy.asrs.entity.BasLiftErr;
-import com.baomidou.mybatisplus.mapper.BaseMapper;
-import org.apache.ibatis.annotations.Mapper;
-import org.springframework.stereotype.Repository;
-
-@Mapper
-@Repository
-public interface BasLiftErrMapper extends BaseMapper<BasLiftErr> {
-
-    BasLiftErr queryByCode(Integer errorCode);
-
-}
diff --git a/src/main/java/com/zy/asrs/mapper/BasLiftMapper.java b/src/main/java/com/zy/asrs/mapper/BasLiftMapper.java
deleted file mode 100644
index 158122e..0000000
--- a/src/main/java/com/zy/asrs/mapper/BasLiftMapper.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package com.zy.asrs.mapper;
-
-import com.zy.asrs.entity.BasLift;
-import com.baomidou.mybatisplus.mapper.BaseMapper;
-import org.apache.ibatis.annotations.Mapper;
-import org.springframework.stereotype.Repository;
-
-@Mapper
-@Repository
-public interface BasLiftMapper extends BaseMapper<BasLift> {
-
-}
diff --git a/src/main/java/com/zy/asrs/mapper/BasLiftOptMapper.java b/src/main/java/com/zy/asrs/mapper/BasLiftOptMapper.java
deleted file mode 100644
index 7a8185b..0000000
--- a/src/main/java/com/zy/asrs/mapper/BasLiftOptMapper.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package com.zy.asrs.mapper;
-
-import com.zy.asrs.entity.BasLiftOpt;
-import com.baomidou.mybatisplus.mapper.BaseMapper;
-import org.apache.ibatis.annotations.Delete;
-import org.apache.ibatis.annotations.Insert;
-import org.apache.ibatis.annotations.Mapper;
-import org.springframework.stereotype.Repository;
-
-import java.util.List;
-import java.util.Map;
-
-@Mapper
-@Repository
-public interface BasLiftOptMapper extends BaseMapper<BasLiftOpt> {
-
-    BasLiftOpt selectByDeviceWrk(String deviceWrk, Integer liftNo);
-
-    List<Map<String, Object>> selectRunStatistic();//鑾峰彇鎻愬崌鏈烘瘡澶╄繍琛屾暟鎹�
-
-    List<Map<String, Object>> selectRunErrorStatistic(int time);//鑾峰彇鎻愬崌鏈烘瘡澶╄繍琛屽紓甯告暟鎹�
-
-}
diff --git a/src/main/java/com/zy/asrs/mapper/BasShuttleChargeMapper.java b/src/main/java/com/zy/asrs/mapper/BasShuttleChargeMapper.java
deleted file mode 100644
index 0836e3e..0000000
--- a/src/main/java/com/zy/asrs/mapper/BasShuttleChargeMapper.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package com.zy.asrs.mapper;
-
-import com.zy.asrs.entity.BasShuttleCharge;
-import com.baomidou.mybatisplus.mapper.BaseMapper;
-import org.apache.ibatis.annotations.Mapper;
-import org.springframework.stereotype.Repository;
-
-@Mapper
-@Repository
-public interface BasShuttleChargeMapper extends BaseMapper<BasShuttleCharge> {
-
-}
diff --git a/src/main/java/com/zy/asrs/mapper/BasShuttleErrLogMapper.java b/src/main/java/com/zy/asrs/mapper/BasShuttleErrLogMapper.java
deleted file mode 100644
index 1486327..0000000
--- a/src/main/java/com/zy/asrs/mapper/BasShuttleErrLogMapper.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package com.zy.asrs.mapper;
-
-import com.zy.asrs.entity.BasShuttleErrLog;
-import com.baomidou.mybatisplus.mapper.BaseMapper;
-import org.apache.ibatis.annotations.Mapper;
-import org.springframework.stereotype.Repository;
-
-@Mapper
-@Repository
-public interface BasShuttleErrLogMapper extends BaseMapper<BasShuttleErrLog> {
-
-}
diff --git a/src/main/java/com/zy/asrs/mapper/BasShuttleErrMapper.java b/src/main/java/com/zy/asrs/mapper/BasShuttleErrMapper.java
deleted file mode 100644
index 6e83cfb..0000000
--- a/src/main/java/com/zy/asrs/mapper/BasShuttleErrMapper.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package com.zy.asrs.mapper;
-
-import com.zy.asrs.entity.BasShuttleErr;
-import com.baomidou.mybatisplus.mapper.BaseMapper;
-import org.apache.ibatis.annotations.Mapper;
-import org.springframework.stereotype.Repository;
-
-@Mapper
-@Repository
-public interface BasShuttleErrMapper extends BaseMapper<BasShuttleErr> {
-
-    BasShuttleErr queryByCode(Integer errorCode);
-
-}
diff --git a/src/main/java/com/zy/asrs/mapper/BasShuttleMapper.java b/src/main/java/com/zy/asrs/mapper/BasShuttleMapper.java
deleted file mode 100644
index d85304a..0000000
--- a/src/main/java/com/zy/asrs/mapper/BasShuttleMapper.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package com.zy.asrs.mapper;
-
-import com.zy.asrs.entity.BasShuttle;
-import com.baomidou.mybatisplus.mapper.BaseMapper;
-import org.apache.ibatis.annotations.Mapper;
-import org.springframework.stereotype.Repository;
-
-@Mapper
-@Repository
-public interface BasShuttleMapper extends BaseMapper<BasShuttle> {
-
-}
diff --git a/src/main/java/com/zy/asrs/mapper/BasShuttleOptMapper.java b/src/main/java/com/zy/asrs/mapper/BasShuttleOptMapper.java
deleted file mode 100644
index e8eca60..0000000
--- a/src/main/java/com/zy/asrs/mapper/BasShuttleOptMapper.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package com.zy.asrs.mapper;
-
-import com.zy.asrs.entity.BasShuttleOpt;
-import com.baomidou.mybatisplus.mapper.BaseMapper;
-import org.apache.ibatis.annotations.Mapper;
-import org.springframework.stereotype.Repository;
-
-import java.util.List;
-import java.util.Map;
-
-@Mapper
-@Repository
-public interface BasShuttleOptMapper extends BaseMapper<BasShuttleOpt> {
-
-    List<Map<String, Object>> selectRunStatistic();//鑾峰彇灏忚溅姣忓ぉ杩愯鏁版嵁
-
-    List<Map<String, Object>> selectRunErrorStatistic(int time);//鑾峰彇灏忚溅姣忓ぉ杩愯寮傚父鏁版嵁
-
-}
diff --git a/src/main/java/com/zy/asrs/service/BasCrnpErrLogService.java b/src/main/java/com/zy/asrs/service/BasCrnpErrLogService.java
new file mode 100644
index 0000000..7e0fa29
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/BasCrnpErrLogService.java
@@ -0,0 +1,8 @@
+package com.zy.asrs.service;
+
+import com.zy.asrs.entity.BasCrnpErrLog;
+import com.baomidou.mybatisplus.service.IService;
+
+public interface BasCrnpErrLogService extends IService<BasCrnpErrLog> {
+
+}
diff --git a/src/main/java/com/zy/asrs/service/BasCrnpErrService.java b/src/main/java/com/zy/asrs/service/BasCrnpErrService.java
new file mode 100644
index 0000000..66801dd
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/BasCrnpErrService.java
@@ -0,0 +1,8 @@
+package com.zy.asrs.service;
+
+import com.zy.asrs.entity.BasCrnpErr;
+import com.baomidou.mybatisplus.service.IService;
+
+public interface BasCrnpErrService extends IService<BasCrnpErr> {
+
+}
diff --git a/src/main/java/com/zy/asrs/service/BasCrnpOptService.java b/src/main/java/com/zy/asrs/service/BasCrnpOptService.java
new file mode 100644
index 0000000..52634b0
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/BasCrnpOptService.java
@@ -0,0 +1,8 @@
+package com.zy.asrs.service;
+
+import com.zy.asrs.entity.BasCrnpOpt;
+import com.baomidou.mybatisplus.service.IService;
+
+public interface BasCrnpOptService extends IService<BasCrnpOpt> {
+
+}
diff --git a/src/main/java/com/zy/asrs/service/BasCrnpService.java b/src/main/java/com/zy/asrs/service/BasCrnpService.java
new file mode 100644
index 0000000..1b8fb38
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/BasCrnpService.java
@@ -0,0 +1,8 @@
+package com.zy.asrs.service;
+
+import com.zy.asrs.entity.BasCrnp;
+import com.baomidou.mybatisplus.service.IService;
+
+public interface BasCrnpService extends IService<BasCrnp> {
+
+}
diff --git a/src/main/java/com/zy/asrs/service/BasLiftErrLogService.java b/src/main/java/com/zy/asrs/service/BasLiftErrLogService.java
deleted file mode 100644
index 8a06c41..0000000
--- a/src/main/java/com/zy/asrs/service/BasLiftErrLogService.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package com.zy.asrs.service;
-
-import com.zy.asrs.entity.BasLiftErrLog;
-import com.baomidou.mybatisplus.service.IService;
-
-public interface BasLiftErrLogService extends IService<BasLiftErrLog> {
-
-    BasLiftErrLog findLatestByTaskNo(Integer crnNo, Integer taskNo);
-
-}
diff --git a/src/main/java/com/zy/asrs/service/BasLiftErrService.java b/src/main/java/com/zy/asrs/service/BasLiftErrService.java
deleted file mode 100644
index 4d64eb6..0000000
--- a/src/main/java/com/zy/asrs/service/BasLiftErrService.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package com.zy.asrs.service;
-
-import com.zy.asrs.entity.BasLiftErr;
-import com.baomidou.mybatisplus.service.IService;
-
-public interface BasLiftErrService extends IService<BasLiftErr> {
-
-    BasLiftErr queryByCode(Integer errorCode);
-
-}
diff --git a/src/main/java/com/zy/asrs/service/BasLiftOptService.java b/src/main/java/com/zy/asrs/service/BasLiftOptService.java
deleted file mode 100644
index b587e79..0000000
--- a/src/main/java/com/zy/asrs/service/BasLiftOptService.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package com.zy.asrs.service;
-
-import com.zy.asrs.entity.BasLiftOpt;
-import com.baomidou.mybatisplus.service.IService;
-
-public interface BasLiftOptService extends IService<BasLiftOpt> {
-
-    BasLiftOpt selectByDeviceWrk(String deviceWrk, Integer liftNo);
-
-}
diff --git a/src/main/java/com/zy/asrs/service/BasLiftService.java b/src/main/java/com/zy/asrs/service/BasLiftService.java
deleted file mode 100644
index 5f39b02..0000000
--- a/src/main/java/com/zy/asrs/service/BasLiftService.java
+++ /dev/null
@@ -1,8 +0,0 @@
-package com.zy.asrs.service;
-
-import com.zy.asrs.entity.BasLift;
-import com.baomidou.mybatisplus.service.IService;
-
-public interface BasLiftService extends IService<BasLift> {
-
-}
diff --git a/src/main/java/com/zy/asrs/service/BasShuttleChargeService.java b/src/main/java/com/zy/asrs/service/BasShuttleChargeService.java
deleted file mode 100644
index dbe0eb9..0000000
--- a/src/main/java/com/zy/asrs/service/BasShuttleChargeService.java
+++ /dev/null
@@ -1,8 +0,0 @@
-package com.zy.asrs.service;
-
-import com.zy.asrs.entity.BasShuttleCharge;
-import com.baomidou.mybatisplus.service.IService;
-
-public interface BasShuttleChargeService extends IService<BasShuttleCharge> {
-
-}
diff --git a/src/main/java/com/zy/asrs/service/BasShuttleErrLogService.java b/src/main/java/com/zy/asrs/service/BasShuttleErrLogService.java
deleted file mode 100644
index 6b85a7b..0000000
--- a/src/main/java/com/zy/asrs/service/BasShuttleErrLogService.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package com.zy.asrs.service;
-
-import com.zy.asrs.entity.BasShuttleErrLog;
-import com.baomidou.mybatisplus.service.IService;
-
-public interface BasShuttleErrLogService extends IService<BasShuttleErrLog> {
-
-    BasShuttleErrLog findLatestByTaskNo(Integer crnNo, Integer taskNo);
-
-    BasShuttleErrLog findLatest(Integer crnNo);
-
-}
diff --git a/src/main/java/com/zy/asrs/service/BasShuttleErrService.java b/src/main/java/com/zy/asrs/service/BasShuttleErrService.java
deleted file mode 100644
index 81aa344..0000000
--- a/src/main/java/com/zy/asrs/service/BasShuttleErrService.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package com.zy.asrs.service;
-
-import com.zy.asrs.entity.BasShuttleErr;
-import com.baomidou.mybatisplus.service.IService;
-
-public interface BasShuttleErrService extends IService<BasShuttleErr> {
-
-    BasShuttleErr queryByCode(Integer errorCode);
-
-}
diff --git a/src/main/java/com/zy/asrs/service/BasShuttleOptService.java b/src/main/java/com/zy/asrs/service/BasShuttleOptService.java
deleted file mode 100644
index 2c95587..0000000
--- a/src/main/java/com/zy/asrs/service/BasShuttleOptService.java
+++ /dev/null
@@ -1,8 +0,0 @@
-package com.zy.asrs.service;
-
-import com.zy.asrs.entity.BasShuttleOpt;
-import com.baomidou.mybatisplus.service.IService;
-
-public interface BasShuttleOptService extends IService<BasShuttleOpt> {
-
-}
diff --git a/src/main/java/com/zy/asrs/service/BasShuttleService.java b/src/main/java/com/zy/asrs/service/BasShuttleService.java
deleted file mode 100644
index ed45783..0000000
--- a/src/main/java/com/zy/asrs/service/BasShuttleService.java
+++ /dev/null
@@ -1,8 +0,0 @@
-package com.zy.asrs.service;
-
-import com.zy.asrs.entity.BasShuttle;
-import com.baomidou.mybatisplus.service.IService;
-
-public interface BasShuttleService extends IService<BasShuttle> {
-
-}
diff --git a/src/main/java/com/zy/asrs/service/impl/BasCrnpErrLogServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/BasCrnpErrLogServiceImpl.java
new file mode 100644
index 0000000..3cfbf51
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/impl/BasCrnpErrLogServiceImpl.java
@@ -0,0 +1,12 @@
+package com.zy.asrs.service.impl;
+
+import com.zy.asrs.mapper.BasCrnpErrLogMapper;
+import com.zy.asrs.entity.BasCrnpErrLog;
+import com.zy.asrs.service.BasCrnpErrLogService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+@Service("basCrnpErrLogService")
+public class BasCrnpErrLogServiceImpl extends ServiceImpl<BasCrnpErrLogMapper, BasCrnpErrLog> implements BasCrnpErrLogService {
+
+}
diff --git a/src/main/java/com/zy/asrs/service/impl/BasCrnpErrServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/BasCrnpErrServiceImpl.java
new file mode 100644
index 0000000..f1182f8
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/impl/BasCrnpErrServiceImpl.java
@@ -0,0 +1,12 @@
+package com.zy.asrs.service.impl;
+
+import com.zy.asrs.mapper.BasCrnpErrMapper;
+import com.zy.asrs.entity.BasCrnpErr;
+import com.zy.asrs.service.BasCrnpErrService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+@Service("basCrnpErrService")
+public class BasCrnpErrServiceImpl extends ServiceImpl<BasCrnpErrMapper, BasCrnpErr> implements BasCrnpErrService {
+
+}
diff --git a/src/main/java/com/zy/asrs/service/impl/BasCrnpOptServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/BasCrnpOptServiceImpl.java
new file mode 100644
index 0000000..ab475ae
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/impl/BasCrnpOptServiceImpl.java
@@ -0,0 +1,12 @@
+package com.zy.asrs.service.impl;
+
+import com.zy.asrs.mapper.BasCrnpOptMapper;
+import com.zy.asrs.entity.BasCrnpOpt;
+import com.zy.asrs.service.BasCrnpOptService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+@Service("basCrnpOptService")
+public class BasCrnpOptServiceImpl extends ServiceImpl<BasCrnpOptMapper, BasCrnpOpt> implements BasCrnpOptService {
+
+}
diff --git a/src/main/java/com/zy/asrs/service/impl/BasCrnpServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/BasCrnpServiceImpl.java
new file mode 100644
index 0000000..7068887
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/impl/BasCrnpServiceImpl.java
@@ -0,0 +1,12 @@
+package com.zy.asrs.service.impl;
+
+import com.zy.asrs.mapper.BasCrnpMapper;
+import com.zy.asrs.entity.BasCrnp;
+import com.zy.asrs.service.BasCrnpService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+@Service("basCrnpService")
+public class BasCrnpServiceImpl extends ServiceImpl<BasCrnpMapper, BasCrnp> implements BasCrnpService {
+
+}
diff --git a/src/main/java/com/zy/asrs/service/impl/BasLiftErrLogServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/BasLiftErrLogServiceImpl.java
deleted file mode 100644
index a04ea94..0000000
--- a/src/main/java/com/zy/asrs/service/impl/BasLiftErrLogServiceImpl.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package com.zy.asrs.service.impl;
-
-import com.baomidou.mybatisplus.mapper.EntityWrapper;
-import com.zy.asrs.entity.BasShuttleErrLog;
-import com.zy.asrs.mapper.BasLiftErrLogMapper;
-import com.zy.asrs.entity.BasLiftErrLog;
-import com.zy.asrs.service.BasLiftErrLogService;
-import com.baomidou.mybatisplus.service.impl.ServiceImpl;
-import org.springframework.stereotype.Service;
-
-import java.util.List;
-
-@Service("basLiftErrLogService")
-public class BasLiftErrLogServiceImpl extends ServiceImpl<BasLiftErrLogMapper, BasLiftErrLog> implements BasLiftErrLogService {
-
-    @Override
-    public BasLiftErrLog findLatestByTaskNo(Integer liftNo, Integer taskNo) {
-        List<BasLiftErrLog> basLiftErrLogs = this.baseMapper.selectList(new EntityWrapper<BasLiftErrLog>().eq("lift_no", liftNo).eq("wrk_no", taskNo).orderBy("start_time", false));
-        if (basLiftErrLogs == null || basLiftErrLogs.size() == 0) {
-            return null;
-        } else {
-            return basLiftErrLogs.get(0);
-        }
-    }
-}
diff --git a/src/main/java/com/zy/asrs/service/impl/BasLiftErrServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/BasLiftErrServiceImpl.java
deleted file mode 100644
index 26b5a56..0000000
--- a/src/main/java/com/zy/asrs/service/impl/BasLiftErrServiceImpl.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package com.zy.asrs.service.impl;
-
-import com.zy.asrs.mapper.BasLiftErrMapper;
-import com.zy.asrs.entity.BasLiftErr;
-import com.zy.asrs.service.BasLiftErrService;
-import com.baomidou.mybatisplus.service.impl.ServiceImpl;
-import org.springframework.stereotype.Service;
-
-@Service("basLiftErrService")
-public class BasLiftErrServiceImpl extends ServiceImpl<BasLiftErrMapper, BasLiftErr> implements BasLiftErrService {
-
-    @Override
-    public BasLiftErr queryByCode(Integer errorCode) {
-        return this.baseMapper.queryByCode(errorCode);
-    }
-}
diff --git a/src/main/java/com/zy/asrs/service/impl/BasLiftOptServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/BasLiftOptServiceImpl.java
deleted file mode 100644
index 4bc65fc..0000000
--- a/src/main/java/com/zy/asrs/service/impl/BasLiftOptServiceImpl.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package com.zy.asrs.service.impl;
-
-import com.zy.asrs.mapper.BasLiftOptMapper;
-import com.zy.asrs.entity.BasLiftOpt;
-import com.zy.asrs.service.BasLiftOptService;
-import com.baomidou.mybatisplus.service.impl.ServiceImpl;
-import org.springframework.stereotype.Service;
-
-@Service("basLiftOptService")
-public class BasLiftOptServiceImpl extends ServiceImpl<BasLiftOptMapper, BasLiftOpt> implements BasLiftOptService {
-
-    @Override
-    public BasLiftOpt selectByDeviceWrk(String deviceWrk, Integer liftNo) {
-        return this.baseMapper.selectByDeviceWrk(deviceWrk, liftNo);
-    }
-
-}
diff --git a/src/main/java/com/zy/asrs/service/impl/BasLiftServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/BasLiftServiceImpl.java
deleted file mode 100644
index 868706d..0000000
--- a/src/main/java/com/zy/asrs/service/impl/BasLiftServiceImpl.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package com.zy.asrs.service.impl;
-
-import com.zy.asrs.mapper.BasLiftMapper;
-import com.zy.asrs.entity.BasLift;
-import com.zy.asrs.service.BasLiftService;
-import com.baomidou.mybatisplus.service.impl.ServiceImpl;
-import org.springframework.stereotype.Service;
-
-@Service("basLiftService")
-public class BasLiftServiceImpl extends ServiceImpl<BasLiftMapper, BasLift> implements BasLiftService {
-
-}
diff --git a/src/main/java/com/zy/asrs/service/impl/BasShuttleChargeServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/BasShuttleChargeServiceImpl.java
deleted file mode 100644
index f1c6cd7..0000000
--- a/src/main/java/com/zy/asrs/service/impl/BasShuttleChargeServiceImpl.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package com.zy.asrs.service.impl;
-
-import com.zy.asrs.mapper.BasShuttleChargeMapper;
-import com.zy.asrs.entity.BasShuttleCharge;
-import com.zy.asrs.service.BasShuttleChargeService;
-import com.baomidou.mybatisplus.service.impl.ServiceImpl;
-import org.springframework.stereotype.Service;
-
-@Service("basShuttleChargeService")
-public class BasShuttleChargeServiceImpl extends ServiceImpl<BasShuttleChargeMapper, BasShuttleCharge> implements BasShuttleChargeService {
-
-}
diff --git a/src/main/java/com/zy/asrs/service/impl/BasShuttleErrLogServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/BasShuttleErrLogServiceImpl.java
deleted file mode 100644
index 7fe6ccf..0000000
--- a/src/main/java/com/zy/asrs/service/impl/BasShuttleErrLogServiceImpl.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package com.zy.asrs.service.impl;
-
-import com.baomidou.mybatisplus.mapper.EntityWrapper;
-import com.zy.asrs.mapper.BasShuttleErrLogMapper;
-import com.zy.asrs.entity.BasShuttleErrLog;
-import com.zy.asrs.service.BasShuttleErrLogService;
-import com.baomidou.mybatisplus.service.impl.ServiceImpl;
-import org.springframework.stereotype.Service;
-
-import java.util.List;
-
-@Service("basShuttleErrLogService")
-public class BasShuttleErrLogServiceImpl extends ServiceImpl<BasShuttleErrLogMapper, BasShuttleErrLog> implements BasShuttleErrLogService {
-
-    @Override
-    public BasShuttleErrLog findLatestByTaskNo(Integer shuttleNo, Integer taskNo) {
-        List<BasShuttleErrLog> basShuttleErrLogs = this.baseMapper.selectList(new EntityWrapper<BasShuttleErrLog>().eq("shuttle_no", shuttleNo).eq("wrk_no", taskNo).orderBy("start_time", false));
-        if (basShuttleErrLogs == null || basShuttleErrLogs.size() == 0) {
-            return null;
-        } else {
-            return basShuttleErrLogs.get(0);
-        }
-    }
-
-    @Override
-    public BasShuttleErrLog findLatest(Integer shuttleNo) {
-        List<BasShuttleErrLog> basShuttleErrLogs = this.baseMapper.selectList(new EntityWrapper<BasShuttleErrLog>().eq("shuttle_no", shuttleNo).orderBy("start_time", false));
-        if (basShuttleErrLogs == null || basShuttleErrLogs.size() == 0) {
-            return null;
-        } else {
-            return basShuttleErrLogs.get(0);
-        }
-    }
-
-}
diff --git a/src/main/java/com/zy/asrs/service/impl/BasShuttleErrServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/BasShuttleErrServiceImpl.java
deleted file mode 100644
index 7731ca4..0000000
--- a/src/main/java/com/zy/asrs/service/impl/BasShuttleErrServiceImpl.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package com.zy.asrs.service.impl;
-
-import com.zy.asrs.mapper.BasShuttleErrMapper;
-import com.zy.asrs.entity.BasShuttleErr;
-import com.zy.asrs.service.BasShuttleErrService;
-import com.baomidou.mybatisplus.service.impl.ServiceImpl;
-import org.springframework.stereotype.Service;
-
-@Service("basShuttleErrService")
-public class BasShuttleErrServiceImpl extends ServiceImpl<BasShuttleErrMapper, BasShuttleErr> implements BasShuttleErrService {
-
-    @Override
-    public BasShuttleErr queryByCode(Integer errorCode) {
-        return this.baseMapper.queryByCode(errorCode);
-    }
-}
diff --git a/src/main/java/com/zy/asrs/service/impl/BasShuttleOptServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/BasShuttleOptServiceImpl.java
deleted file mode 100644
index b72a156..0000000
--- a/src/main/java/com/zy/asrs/service/impl/BasShuttleOptServiceImpl.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package com.zy.asrs.service.impl;
-
-import com.zy.asrs.mapper.BasShuttleOptMapper;
-import com.zy.asrs.entity.BasShuttleOpt;
-import com.zy.asrs.service.BasShuttleOptService;
-import com.baomidou.mybatisplus.service.impl.ServiceImpl;
-import org.springframework.stereotype.Service;
-
-@Service("basShuttleOptService")
-public class BasShuttleOptServiceImpl extends ServiceImpl<BasShuttleOptMapper, BasShuttleOpt> implements BasShuttleOptService {
-
-}
diff --git a/src/main/java/com/zy/asrs/service/impl/BasShuttleServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/BasShuttleServiceImpl.java
deleted file mode 100644
index 7c3f623..0000000
--- a/src/main/java/com/zy/asrs/service/impl/BasShuttleServiceImpl.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package com.zy.asrs.service.impl;
-
-import com.zy.asrs.mapper.BasShuttleMapper;
-import com.zy.asrs.entity.BasShuttle;
-import com.zy.asrs.service.BasShuttleService;
-import com.baomidou.mybatisplus.service.impl.ServiceImpl;
-import org.springframework.stereotype.Service;
-
-@Service("basShuttleService")
-public class BasShuttleServiceImpl extends ServiceImpl<BasShuttleMapper, BasShuttle> implements BasShuttleService {
-
-}
diff --git a/src/main/java/com/zy/asrs/service/impl/ForkMainServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/ForkMainServiceImpl.java
deleted file mode 100644
index 40f5529..0000000
--- a/src/main/java/com/zy/asrs/service/impl/ForkMainServiceImpl.java
+++ /dev/null
@@ -1,2042 +0,0 @@
-package com.zy.asrs.service.impl;
-
-import com.alibaba.fastjson.JSON;
-import com.baomidou.mybatisplus.mapper.EntityWrapper;
-import com.zy.asrs.domain.enums.NotifyMsgType;
-import com.zy.asrs.entity.*;
-import com.zy.asrs.service.*;
-import com.zy.asrs.utils.NotifyUtils;
-import com.zy.asrs.utils.Utils;
-import com.zy.common.model.MapNode;
-import com.zy.common.model.enums.NavigationMapType;
-import com.zy.common.service.CommonService;
-import com.zy.common.utils.*;
-import com.zy.core.News;
-import com.zy.core.action.ForkLiftAction;
-import com.zy.core.action.ShuttleAction;
-import com.zy.core.cache.SlaveConnection;
-import com.zy.core.dispatcher.ForkLiftDispatchUtils;
-import com.zy.core.dispatcher.ShuttleDispatchUtils;
-import com.zy.core.enums.*;
-import com.zy.core.model.command.*;
-import com.zy.core.model.protocol.ForkLiftProtocol;
-import com.zy.core.model.protocol.ForkLiftStaProtocol;
-import com.zy.core.model.protocol.LiftStaProtocol;
-import com.zy.core.model.protocol.ShuttleProtocol;
-import com.zy.core.thread.ForkLiftThread;
-import com.zy.core.thread.ShuttleThread;
-import com.zy.system.entity.Config;
-import com.zy.system.service.ConfigService;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-
-/**
- * 绔嬩綋浠撳簱WCS绯荤粺涓绘祦绋嬩笟鍔�
- */
-@Slf4j
-@Service("forkMainService")
-public class ForkMainServiceImpl {
-
-    @Autowired
-    private WrkMastService wrkMastService;
-    @Autowired
-    private BasShuttleErrLogService basShuttleErrLogService;
-    @Autowired
-    private BasLiftErrLogService basLiftErrLogService;
-    @Autowired
-    private BasShuttleErrService basShuttleErrService;
-    @Autowired
-    private BasLiftErrService basLiftErrService;
-    @Autowired
-    private CommonService commonService;
-    @Autowired
-    private BasMapService basMapService;
-    @Autowired
-    private ShuttleDispatchUtils shuttleDispatchUtils;
-    @Autowired
-    private RedisUtil redisUtil;
-    @Autowired
-    private ConfigService configService;
-    @Autowired
-    private NavigateMapData navigateMapData;
-    @Autowired
-    private NavigateUtils navigateUtils;
-    @Autowired
-    private ShuttleOperaUtils shuttleOperaUtils;
-    @Autowired
-    private ShuttleAction shuttleAction;
-    @Autowired
-    private ForkLiftAction forkLiftAction;
-    @Autowired
-    private NotifyUtils notifyUtils;
-    @Autowired
-    private BasShuttleChargeService basShuttleChargeService;
-    @Autowired
-    private DeviceConfigService deviceConfigService;
-    @Autowired
-    private ForkLiftDispatchUtils forkLiftDispatchUtils;
-
-    /**
-     * 鍒濆鍖栧疄鏃跺湴鍥�
-     */
-    public synchronized void initRealtimeBasMap() {
-        try {
-
-            List<BasMap> basMaps = basMapService.selectList(new EntityWrapper<BasMap>().orderBy("lev", true));
-            for (BasMap basMap : basMaps) {
-                Integer lev = basMap.getLev();
-                Object data = redisUtil.get(RedisKeyType.MAP.key + lev);
-                if (data == null) {//redis鍦板浘鏁版嵁涓虹┖
-                    //杞藉叆鍦板浘
-                    List<List<MapNode>> lists = navigateMapData.getJsonOriginData(lev, NavigationMapType.getMapTypes(NavigationMapType.NONE), null, null);//鑾峰彇瀹屾暣鍦板浘(鍖呮嫭鍏ュ簱鍑哄簱)
-
-                    //瀛樺叆鏁版嵁搴�
-                    basMap.setData(JSON.toJSONString(lists));
-                    basMap.setCreateTime(new Date());
-                    basMap.setUpdateTime(new Date());
-                    if (!basMapService.updateById(basMap)) {
-                        log.info("鍦板浘鏁版嵁瀛樺偍澶辫触");
-                    }
-
-                    //灏嗘暟鎹簱鍦板浘鏁版嵁瀛樺叆redis
-                    redisUtil.set(RedisKeyType.MAP.key + lev, JSON.toJSONString(basMap));
-                }
-
-            }
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-    }
-
-    /**
-     * 鍏ュ簱  ===>>  鍥涘悜绌挎杞﹀叆搴撲綔涓氫笅鍙�
-     */
-    public synchronized void shuttleInExecute() {
-        try {
-            List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>()
-                    .in("wrk_sts"
-                            , WrkStsType.INBOUND_LIFT_RUN_COMPLETE.sts
-                    )
-                    .orderBy("io_pri", false)
-                    .orderBy("appe_time", true)
-            );
-            for (WrkMast wrkMast : wrkMasts) {
-                boolean step1 = this.shuttleInExecuteStep1(wrkMast);//灏忚溅鎼叆搴撲腑
-                Thread.sleep(100);
-                if (!step1) {
-                    continue;
-                }
-            }
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-    }
-
-    /**
-     * 鍏ュ簱-灏忚溅鎼叆搴撲腑
-     * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
-     * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
-     */
-    public synchronized boolean shuttleInExecuteStep1(WrkMast wrkMast) {
-        if (wrkMast.getWrkSts() == WrkStsType.INBOUND_LIFT_RUN_COMPLETE.sts) {
-            //鑾峰彇鐩爣绔�
-            ForkLiftStaProtocol liftSta = ForkLiftUtils.getLiftStaByStaNo(wrkMast.getStaNo());
-            if (liftSta == null) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛岀己灏戠珯鐐逛俊鎭紝绂佹娲惧彂", wrkMast.getWrkNo());
-                return false;
-            }
-
-            if (wrkMast.getShuttleNo() == null) {//娌℃湁缁戝畾灏忚溅锛岃繘琛岃皟搴�
-                boolean result = shuttleDispatchUtils.dispatchShuttle(wrkMast.getWrkNo(), liftSta.getLocNo());//璋冨害灏忚溅鍒拌揣鐗╂墍鍦ㄨ緭閫佺珯鐐硅繘琛屽彇璐�
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛岃皟搴﹀皬杞}绯荤粺绛夊緟涓�", wrkMast.getWrkNo(), result ? "鎴愬姛" : "澶辫触");
-                return false;
-            }
-
-            //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
-            ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
-            if (shuttleThread == null) {
-                return false;
-            }
-            ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
-            if (shuttleProtocol == null) {
-                return false;
-            }
-            if (!shuttleThread.isIdle()) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅蹇欑涓�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
-                return false;
-            }
-
-            //鍒ゆ柇灏忚溅鏄惁瀛樺湪绉诲姩浠诲姟
-            WrkMast hasMoveWorking = wrkMastService.selectShuttleHasMoveWorking(wrkMast.getShuttleNo());
-            if (hasMoveWorking != null) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}鍙峰皬杞︼紝瀛樺湪绉诲姩浠诲姟锛岀姝㈡淳鍙戜换鍔�", wrkMast.getShuttleNo());
-                return false;//瀛樺湪绉诲姩浠诲姟锛岀姝㈡墽琛屽叆搴撲换鍔�
-            }
-
-            //鍒ゆ柇灏忚溅鏄惁鍒拌揪杈撻�佺珯鐐瑰簱浣�
-            if (!shuttleProtocol.getCurrentLocNo().equals(liftSta.getLocNo())) {
-                //灏忚溅涓嶅湪杈撻�佺珯鐐逛綅缃�
-                shuttleDispatchUtils.dispatchShuttle(wrkMast.getWrkNo(), liftSta.getLocNo(), wrkMast.getShuttleNo());//璋冨害灏忚溅鍒拌揣鐗╂墍鍦ㄨ緭閫佺珯鐐硅繘琛屽彇璐�
-                News.info("{}浠诲姟锛寋}灏忚溅锛屾湭鍒拌揪杈撻�佺珯鐐癸紝绯荤粺绛夊緟涓�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
-                return false;
-            }
-
-            //妫�娴嬮殰纰嶇墿杞�
-            int checkObstacle = shuttleOperaUtils.checkObstacle(wrkMast.getLocNo(), new ArrayList<Integer>() {{
-                add(shuttleProtocol.getShuttleNo());
-            }}, new ArrayList<>());
-            if (checkObstacle > 0) {
-                News.info("{}浠诲姟锛岄伩闅滆寖鍥存湁灏忚溅锛岀瓑寰呴殰纰嶅皬杞﹁皟绂讳腑", wrkMast.getWrkNo());
-                return false;
-            }
-
-            ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
-            assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙�
-            assignCommand.setTaskMode(ShuttleTaskModeType.TRANSPORT.id);//灏忚溅绉诲簱浠诲姟
-            assignCommand.setTaskNo(wrkMast.getWrkNo());//浠诲姟鍙�
-            assignCommand.setAuto(true);//鑷姩妯″紡
-
-            //鑾峰彇灏忚溅鍒拌緭閫佺珯鐐硅璧板懡浠�
-            List<ShuttleCommand> commands = shuttleOperaUtils.getStartToTargetCommands(liftSta.getLocNo(), wrkMast.getLocNo(), NavigationMapType.getDfxWithDevice(), assignCommand, shuttleThread);
-            if (commands == null) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛岃矾寰勮绠楀け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
-                return false;
-            }
-
-            List<ShuttleCommand> liftCommand = shuttleOperaUtils.getShuttleLiftCommand(assignCommand, shuttleThread, true);
-            if (liftCommand == null) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅鑾峰彇椤跺崌鍛戒护澶辫触", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
-                return false;
-            }
-
-            List<ShuttleCommand> liftCommand2 = shuttleOperaUtils.getShuttleLiftCommand(assignCommand, shuttleThread, false);
-            if (liftCommand2 == null) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅鑾峰彇涓嬮檷鍛戒护澶辫触", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
-                return false;
-            }
-
-            commands.add(0, liftCommand.get(0));
-            commands.add(liftCommand2.get(0));
-            assignCommand.setCommands(commands);
-
-            wrkMast.setWrkSts(WrkStsType.INBOUND_SHUTTLE_RUN.sts);//灏忚溅鎼繍涓�  4.鎻愬崌鏈烘惉杩愬畬鎴� ==> 5.灏忚溅鎼繍涓�
-            wrkMast.setModiTime(new Date());
-            wrkMast.setSystemMsg("");//娓呯┖娑堟伅
-            if (wrkMastService.updateById(wrkMast)) {
-                //涓嬪彂浠诲姟
-                shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand);
-                //瑙﹀彂閫氱煡
-                notifyUtils.notify(String.valueOf(SlaveType.Shuttle), shuttleProtocol.getShuttleNo(), String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.SHUTTLE_TRANSPORT);
-                return false;
-            }
-            return false;
-        }
-        return true;
-    }
-
-    /**
-     * 鍑哄簱  ===>>  鍥涘悜绌挎杞﹀嚭搴撲綔涓氫笅鍙�
-     */
-    public synchronized void shuttleOutExecute() {
-        try {
-            List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>()
-                    .in("wrk_sts"
-                            , WrkStsType.NEW_OUTBOUND.sts
-                    )
-                    .orderBy("io_pri", false)
-                    .orderBy("appe_time", true)
-            );
-            for (WrkMast wrkMast : wrkMasts) {
-                boolean step1 = this.shuttleOutExecuteStep1(wrkMast);//灏忚溅鎼嚭搴撲腑
-                Thread.sleep(100);
-                if (!step1) {
-                    continue;
-                }
-            }
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-    }
-
-    /**
-     * 鍑哄簱-灏忚溅鎼嚭搴撲腑
-     * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
-     * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
-     */
-    public synchronized boolean shuttleOutExecuteStep1(WrkMast wrkMast) {
-        //101.鐢熸垚鍑哄簱浠诲姟 => 102.灏忚溅鎼繍涓�
-        if (wrkMast.getWrkSts() == WrkStsType.NEW_OUTBOUND.sts) {
-            Integer liftNo = wrkMast.getLiftNo();
-            if (liftNo == null) {
-                //閫氳繃杈撻�佺嚎绔欏彿鑾峰彇鎻愬崌鏈哄彿
-                liftNo = ForkLiftUtils.getConveyorBindLiftNo(wrkMast.getStaNo());
-                if (liftNo == null) {
-                    News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛屾湭鎵惧埌鍖归厤鐨勬彁鍗囨満", wrkMast.getWrkNo());
-                    return false;
-                }
-            }
-
-            ForkLiftThread forkLiftThread = (ForkLiftThread) SlaveConnection.get(SlaveType.ForkLift, liftNo);
-            if (forkLiftThread == null) {
-                return false;
-            }
-            ForkLiftProtocol forkLiftProtocol = forkLiftThread.getStatus();
-            if (forkLiftProtocol == null) {
-                return false;
-            }
-
-            //鍒ゆ柇鎻愬崌鏈烘槸鍚﹀浜庡嚭搴撴ā寮�
-            if (!forkLiftProtocol.getIOModeType().equals(ForkLiftIoModeType.OUT)) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛屾彁鍗囨満涓嶅浜庡嚭搴撴ā寮忥紝绂佹鍑哄簱", wrkMast.getWrkNo());
-                return false;
-            }
-
-            //鑾峰彇婧愮珯
-            ForkLiftStaProtocol liftSta = ForkLiftUtils.getLiftStaByLev(liftNo, Utils.getLev(wrkMast.getSourceLocNo()));
-            if (liftSta == null) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛岀己灏戠珯鐐逛俊鎭紝绂佹娲惧彂", wrkMast.getWrkNo());
-                return false;
-            }
-
-            if (liftSta.getHasCar()) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}绔欑偣瀛樺湪灏忚溅锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), liftSta.getSiteId());
-                return false;
-            }
-
-            if (liftSta.getHasTray()) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}绔欑偣鏈夋墭鐩橈紝绂佹娲惧彂", wrkMast.getWrkNo(), liftSta.getSiteId());
-                return false;
-            }
-
-            List<WrkMast> shuttleMoveList = wrkMastService.selectList(new EntityWrapper<WrkMast>()
-                    .eq("io_type", 200)
-            );
-            for (WrkMast moveWrkMast : shuttleMoveList) {
-                if(Utils.getLev(moveWrkMast.getLocNo()) != Utils.getLev(wrkMast.getSourceLocNo())) {
-                    continue;
-                }
-
-                if(Utils.getLev(moveWrkMast.getLocNo()) == Utils.getLev(moveWrkMast.getSourceLocNo())) {
-                    continue;
-                }
-
-                //瀛樺湪鎹㈠眰浠诲姟锛屽嚭搴撲换鍔℃殏鏃朵笉鎵ц
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛屽瓨鍦ㄦ崲灞備换鍔★紝鍑哄簱浠诲姟绛夊緟涓�", wrkMast.getWrkNo());
-                return false;
-            }
-
-            boolean checkLocPathIsAvailable = navigateUtils.checkLocPathIsAvailable(wrkMast.getSourceLocNo(), liftSta.getLocNo());
-            if(!checkLocPathIsAvailable) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛屾湭璁$畻鍒板彲鎵ц璺緞锛岀瓑寰呬腑", wrkMast.getWrkNo());
-                return false;
-            }
-
-            if (wrkMast.getShuttleNo() == null) {//娌℃湁缁戝畾灏忚溅锛岃繘琛岃皟搴�
-                //寮哄埗棰勭暀涓�鍙板皬杞︾粰鍏ュ簱浠诲姟
-                int lev = Utils.getLev(wrkMast.getSourceLocNo());
-                //鑾峰彇褰撳墠妤煎眰鏈夊嚑鍙板彲鐢ㄥ皬杞�
-                int shuttleCount = shuttleDispatchUtils.getShuttleEnableUseCountByLev(lev);
-                if (shuttleCount >= 2) {//鍙湁鍙敤灏忚溅鏁伴噺澶т簬2锛屾墠杩涜鍏ュ簱浠诲姟棰勭暀灏忚溅
-                    int shuttleWrkInObligateCount = 1;//棰勭暀灏忚溅鏁伴噺
-                    Config config = configService.selectOne(new EntityWrapper<Config>().eq("code", "shuttleWrkInObligateCount").eq("status", 1));
-                    if (config != null) {
-                        shuttleWrkInObligateCount = Integer.parseInt(config.getValue());
-                    }
-                    //鍙敤鍑哄簱灏忚溅鏁伴噺(缁欏叆搴撲换鍔¢鐣欎竴鍙拌溅)
-                    int useShuttleCount = shuttleCount - shuttleWrkInObligateCount;
-                    //鏌ヨ妤煎眰宸插垎閰嶈溅杈嗙殑鍑哄簱浠诲姟鏁伴噺
-                    List<WrkMast> wrkMasts = wrkMastService.selectShuttleOutWrkByLev(lev);
-                    if (wrkMasts.size() >= useShuttleCount) {
-                        News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛屽綋鍓嶆ゼ灞傚彲鐢ㄥ皬杞}鍙帮紝鍑哄簱浠诲姟宸插垎閰峽}鍙帮紝绯荤粺绛夊緟涓��", wrkMast.getWrkNo(), useShuttleCount, wrkMasts.size());
-                        return false;
-                    }
-                }
-                boolean result = shuttleDispatchUtils.dispatchShuttle(wrkMast.getWrkNo(), wrkMast.getSourceLocNo());//璋冨害灏忚溅鍒拌揣鐗╂墍鍦ㄥ簱浣嶈繘琛屽彇璐�
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛岃皟搴﹀皬杞}绯荤粺绛夊緟涓��", wrkMast.getWrkNo(), result ? "鎴愬姛" : "澶辫触");
-                return false;
-            }
-
-            //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
-            ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
-            if (shuttleThread == null) {
-                return false;
-            }
-            ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
-            if (shuttleProtocol == null) {
-                return false;
-            }
-            if (!shuttleThread.isIdle()) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛屽繖纰屼腑", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
-                return false;
-            }
-
-            //鍒ゆ柇灏忚溅鏄惁鍒拌揪璐х墿搴撲綅
-            if (!shuttleProtocol.getCurrentLocNo().equals(wrkMast.getSourceLocNo())) {
-                //妫�娴嬮殰纰嶇墿杞�
-                int checkObstacle = shuttleOperaUtils.checkObstacle(wrkMast.getSourceLocNo(), new ArrayList<Integer>() {{
-                    add(shuttleProtocol.getShuttleNo());
-                }}, new ArrayList<>());
-                if (checkObstacle > 0) {
-                    News.info("{}浠诲姟锛岄伩闅滆寖鍥存湁灏忚溅锛岀瓑寰呴殰纰嶅皬杞﹁皟绂讳腑", wrkMast.getWrkNo());
-                    return false;
-                }
-
-                //灏忚溅涓嶅湪杈撻�佺珯鐐逛綅缃�
-                shuttleDispatchUtils.dispatchShuttle(wrkMast.getWrkNo(), wrkMast.getSourceLocNo(), wrkMast.getShuttleNo());//璋冨害灏忚溅鍒拌揣鐗╂墍鍦ㄥ簱浣嶈繘琛屽彇璐�
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛屾湭鍒拌揪杈撻�佺珯鐐癸紝绯荤粺绛夊緟涓�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
-                return false;
-            }
-
-            //妫�娴嬫槸鍚﹀瓨鍦ㄧЩ鍔ㄤ换鍔�
-            WrkMast moveWorking = wrkMastService.selectShuttleHasMoveWorking(wrkMast.getShuttleNo());
-            if (moveWorking != null) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛屽皬杞﹀瓨鍦ㄧЩ鍔ㄤ换鍔�", wrkMast.getWrkNo());
-                return false;
-            }
-
-            ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
-            assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙�
-            assignCommand.setTaskMode(ShuttleTaskModeType.TRANSPORT.id);//灏忚溅绉诲簱浠诲姟
-            assignCommand.setTaskNo(wrkMast.getWrkNo());//浠诲姟鍙�
-            assignCommand.setAuto(true);//鑷姩妯″紡
-
-            //鑾峰彇灏忚溅鍒拌緭閫佺珯鐐硅璧板懡浠�
-            List<ShuttleCommand> commands = shuttleOperaUtils.getStartToTargetCommands(wrkMast.getSourceLocNo(), liftSta.getLocNo(), NavigationMapType.getDfxWithDevice(), assignCommand, shuttleThread);
-            if (commands == null) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛岃矾寰勮绠楀け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
-                return false;
-            }
-
-            List<ShuttleCommand> liftCommand = shuttleOperaUtils.getShuttleLiftCommand(assignCommand, shuttleThread, true);
-            if (liftCommand == null) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅鑾峰彇椤跺崌鍛戒护澶辫触", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
-                return false;
-            }
-
-            List<ShuttleCommand> liftCommand2 = shuttleOperaUtils.getShuttleLiftCommand(assignCommand, shuttleThread, false);
-            if (liftCommand2 == null) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅鑾峰彇涓嬮檷鍛戒护澶辫触", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
-                return false;
-            }
-
-            commands.add(0, liftCommand.get(0));
-            commands.add(liftCommand2.get(0));
-            assignCommand.setCommands(commands);
-
-            wrkMast.setWrkSts(WrkStsType.OUTBOUND_SHUTTLE_RUN.sts);//灏忚溅鎼繍涓�  101.鐢熸垚鍑哄簱浠诲姟 ==> 102.灏忚溅鎼繍涓�
-            wrkMast.setSourceStaNo(liftSta.getSiteId());
-            wrkMast.setModiTime(new Date());
-            wrkMast.setSystemMsg("");//娓呯┖娑堟伅
-            if (wrkMastService.updateById(wrkMast)) {
-                //涓嬪彂浠诲姟
-                shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand);
-                //瑙﹀彂閫氱煡
-                notifyUtils.notify(String.valueOf(SlaveType.Shuttle), shuttleProtocol.getShuttleNo(), String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.SHUTTLE_TRANSPORT);
-                return false;
-            }
-            return false;
-        }
-        return true;
-    }
-
-    /**
-     * 鎵ц绉诲簱浠诲姟
-     */
-    public synchronized void shuttleLocMoveExecute() {
-        try {
-            //鏌ヨ绉诲簱浠诲姟
-            List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>()
-                    .in("wrk_sts", WrkStsType.NEW_LOC_MOVE.sts)
-                    .orderBy("io_pri", false)
-                    .orderBy("appe_time", true)
-            );
-            for (WrkMast wrkMast : wrkMasts) {
-                boolean stepToTarget = this.shuttleLocMoveExecuteToTarget(wrkMast);//绉诲簱浠诲姟-灏忚溅鍘荤洰鏍囩偣
-                if (!stepToTarget) {
-                    continue;
-                }
-
-            }
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-    }
-
-    /**
-     * 绉诲簱浠诲姟-灏忚溅鍘荤洰鏍囩偣
-     * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
-     * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
-     */
-    private boolean shuttleLocMoveExecuteToTarget(WrkMast wrkMast) {
-        //--------------------------------------灏忚溅绉诲姩鑷崇珯鐐�-----------------------------------------//
-        Date now = new Date();
-
-        //灏忚溅绉诲姩鑷崇珯鐐�  501.鐢熸垚绉诲簱浠诲姟 ==> 502.灏忚溅鎼繍涓�
-        if (wrkMast.getWrkSts() == WrkStsType.NEW_LOC_MOVE.sts) {
-            boolean checkLocPathIsAvailable = navigateUtils.checkLocPathIsAvailable(wrkMast.getSourceLocNo(), wrkMast.getLocNo());
-            if(!checkLocPathIsAvailable) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛屾湭璁$畻鍒板彲鎵ц璺緞锛岀瓑寰呬腑", wrkMast.getWrkNo());
-                return false;
-            }
-
-            if (wrkMast.getShuttleNo() == null) {//娌℃湁缁戝畾灏忚溅锛岃繘琛岃皟搴�
-                boolean result = shuttleDispatchUtils.dispatchShuttle(wrkMast.getWrkNo(), wrkMast.getSourceLocNo());//璋冨害灏忚溅鍒拌揣鐗╃偣杩涜鍙栬揣
-                News.info("{}浠诲姟锛岃皟搴﹀皬杞}绯荤粺绛夊緟涓�", wrkMast.getWrkNo(), result ? "鎴愬姛" : "澶辫触");
-                return false;
-            }
-
-            //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
-            ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
-            if (shuttleThread == null) {
-                return false;
-            }
-            ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
-            if (shuttleProtocol == null) {
-                return false;
-            }
-
-            if (shuttleProtocol.getCurrentLocNo() == null) {
-                return false;
-            }
-
-            //鍒ゆ柇灏忚溅鏄惁鍒拌揪璐х墿搴撲綅
-            if (!shuttleProtocol.getCurrentLocNo().equals(wrkMast.getSourceLocNo())) {
-                //灏忚溅鏈埌杈惧彇璐т綅缃�
-                shuttleDispatchUtils.dispatchShuttle(wrkMast.getWrkNo(), wrkMast.getSourceLocNo(), wrkMast.getShuttleNo());//璋冨害灏忚溅鍒拌揣鐗╂墍鍦ㄥ簱浣嶈繘琛屽彇璐�
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛屽皬杞︽湭鍒拌揪鍙栬揣浣嶇疆", wrkMast.getWrkNo(), wrkMast.getSourceLocNo());
-                return false;
-            }
-
-            //妫�娴嬫槸鍚﹀瓨鍦ㄧЩ鍔ㄤ换鍔�
-            WrkMast moveWorking = wrkMastService.selectShuttleHasMoveWorking(wrkMast.getShuttleNo());
-            if (moveWorking != null) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛屽皬杞﹀瓨鍦ㄧЩ鍔ㄤ换鍔�", wrkMast.getWrkNo());
-                return false;
-            }
-
-            //妫�娴嬮殰纰嶇墿杞�
-            int checkObstacle = shuttleOperaUtils.checkObstacle(wrkMast.getLocNo(), new ArrayList<Integer>() {{
-                add(shuttleProtocol.getShuttleNo());
-            }}, new ArrayList<>());
-            if (checkObstacle > 0) {
-                News.info("{}浠诲姟锛岄伩闅滆寖鍥存湁灏忚溅锛岀瓑寰呴殰纰嶅皬杞﹁皟绂讳腑", wrkMast.getWrkNo());
-                return false;
-            }
-
-            ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
-            assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙�
-            assignCommand.setTaskMode(ShuttleTaskModeType.TRANSPORT.id);//灏忚溅绉诲簱浠诲姟
-            assignCommand.setTaskNo(wrkMast.getWrkNo());//浠诲姟鍙�
-            assignCommand.setAuto(true);//鑷姩妯″紡
-            assignCommand.setLocNo(wrkMast.getLocNo());
-
-            //鑾峰彇灏忚溅鍒拌緭閫佺珯鐐硅璧板懡浠�
-            List<ShuttleCommand> commands = shuttleOperaUtils.getStartToTargetCommands(wrkMast.getSourceLocNo(), wrkMast.getLocNo(), NavigationMapType.getMapTypes(NavigationMapType.DFX), assignCommand, shuttleThread);
-            if (commands == null) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛岃矾寰勮绠楀け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
-                return false;
-            }
-
-            List<ShuttleCommand> liftCommand = shuttleOperaUtils.getShuttleLiftCommand(assignCommand, shuttleThread, true);
-            if (liftCommand == null) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅鑾峰彇椤跺崌鍛戒护澶辫触", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
-                return false;
-            }
-
-            List<ShuttleCommand> liftCommand2 = shuttleOperaUtils.getShuttleLiftCommand(assignCommand, shuttleThread, false);
-            if (liftCommand2 == null) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅鑾峰彇涓嬮檷鍛戒护澶辫触", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
-                return false;
-            }
-
-            commands.add(0, liftCommand.get(0));
-            commands.add(liftCommand2.get(0));
-            assignCommand.setCommands(commands);
-
-            wrkMast.setWrkSts(WrkStsType.LOC_MOVE_SHUTTLE_RUN.sts);//灏忚溅鎼繍涓�  501.鐢熸垚绉诲簱浠诲姟 ==> 502.灏忚溅鎼繍涓�
-            wrkMast.setModiTime(now);
-            wrkMast.setSystemMsg("");//娓呯┖娑堟伅
-            if (wrkMastService.updateById(wrkMast)) {
-                //涓嬪彂浠诲姟
-                shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand);
-                //瑙﹀彂閫氱煡
-                notifyUtils.notify(String.valueOf(SlaveType.Shuttle), shuttleProtocol.getShuttleNo(), String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.SHUTTLE_MOVING);
-                return false;
-            }
-            return false;
-        }
-        return true;
-    }
-
-    /**
-     * 璐у弶鎻愬崌鏈轰换鍔�
-     */
-    public synchronized void forkLiftIoExecute() {
-        try {
-            //鎼滅储鏄惁鏈夊緟澶勭悊鐨勪换鍔�
-            List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>()
-                    .in("wrk_sts", WrkStsType.NEW_INBOUND.sts, WrkStsType.OUTBOUND_SHUTTLE_RUN_COMPLETE.sts));
-            if (wrkMasts.isEmpty()) {
-                return;
-            }
-
-            for (WrkMast wrkMast : wrkMasts) {
-                boolean stepIn = this.liftIoExecuteStepIn(wrkMast);//鎻愬崌鏈哄叆搴�
-                if (!stepIn) {
-                    continue;
-                }
-
-                boolean stepOut = this.liftIoExecuteStepOut(wrkMast);//鎻愬崌鏈哄嚭搴�
-                if (!stepOut) {
-                    continue;
-                }
-            }
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-    }
-
-    /**
-     * 鎻愬崌鏈哄叆搴�
-     * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
-     * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
-     */
-    private boolean liftIoExecuteStepIn(WrkMast wrkMast) {
-        //--------------------------------------鎻愬崌鏈哄叆搴�-----------------------------------------//
-        Date now = new Date();
-
-        //1.鐢熸垚鍏ュ簱浠诲姟 ==> 3.鎻愬崌鏈烘惉杩愪腑
-        if (wrkMast.getWrkSts() == WrkStsType.NEW_INBOUND.sts) {
-            //鑾峰彇鐩爣杈撻�佺珯
-            ForkLiftStaProtocol liftSta = ForkLiftUtils.getLiftStaByStaNo(wrkMast.getStaNo());
-            if (liftSta == null) {
-                return false;//鎵句笉鍒扮珯鐐�
-            }
-
-            if (liftSta.getHasTray()) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛岀洰鏍囩珯瀛樺湪鎵樼洏", wrkMast.getWrkNo());
-                return false;
-            }
-
-            if (liftSta.getHasCar()) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛岀洰鏍囩珯瀛樺湪灏忚溅", wrkMast.getWrkNo());
-                return false;
-            }
-
-            //妫�娴嬫ゼ灞傛槸鍚︽湁鍙敤绌挎杞�
-            boolean checkLevHasShuttle = Utils.checkLevHasShuttle(liftSta.getLev());
-            if (!checkLevHasShuttle) {
-                if (wrkMast.getShuttleNo() != null) {
-                    return false;
-                }
-
-                //鑾峰彇灏忚溅寰呮満浣�
-                String standbyLocNo = Utils.getShuttleStandbyLocNo(liftSta.getLocNo());
-                if (standbyLocNo == null) {
-                    News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛岃幏鍙栧皬杞﹀緟鏈轰綅澶辫触", wrkMast.getWrkNo());
-                    return false;
-                }
-
-                //璋冨害灏忚溅鍘诲緟鏈轰綅
-                boolean dispatchShuttle = shuttleDispatchUtils.dispatchShuttle(wrkMast.getWrkNo(), standbyLocNo);
-                if (!dispatchShuttle) {
-                    News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛岃皟搴﹀皬杞﹀け璐�", wrkMast.getWrkNo());
-                    return false;
-                }
-                return false;
-            }
-
-            Integer liftNo = wrkMast.getLiftNo();
-            if (liftNo == null) {
-                //鏈垎閰嶆彁鍗囨満
-                Integer staNo = wrkMast.getSourceStaNo();
-                liftNo = ForkLiftUtils.getConveyorBindLiftNo(staNo);
-                if(liftNo == null) {
-                    News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛屾湭鎵惧埌鍖归厤鐨勬彁鍗囨満", wrkMast.getWrkNo());
-                    return false;
-                }
-
-                //鐢宠鎻愬崌鏈鸿祫婧�
-                boolean applyForkLift = forkLiftAction.applyForkLift(liftNo, wrkMast.getWrkNo());
-                if(!applyForkLift) {
-                    News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛岀敵璇锋彁鍗囨満璧勬簮澶辫触锛岀姝㈠叆搴�", wrkMast.getWrkNo());
-                    return false;
-                }
-                return false;
-            }
-
-            ForkLiftThread forkLiftThread = (ForkLiftThread) SlaveConnection.get(SlaveType.ForkLift, liftNo);
-            if (forkLiftThread == null) {
-                return false;
-            }
-            ForkLiftProtocol forkLiftProtocol = forkLiftThread.getStatus();
-            if (forkLiftProtocol == null) {
-                return false;
-            }
-            if (!forkLiftThread.isIdle()) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}鍙锋彁鍗囨満锛屽繖纰屼腑", wrkMast.getWrkNo(), liftSta.getLiftNo());
-                return false;
-            }
-
-            //鍒ゆ柇鎻愬崌鏈烘槸鍚﹀浜庡叆搴撴ā寮�
-            if (!forkLiftProtocol.getIOModeType().equals(ForkLiftIoModeType.IN)) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛屾彁鍗囨満涓嶅浜庡叆搴撴ā寮忥紝绂佹鍏ュ簱", wrkMast.getWrkNo());
-                return false;
-            }
-
-            //璇锋眰涓婄骇绯荤粺锛屾槸鍚﹀厑璁稿叆搴�
-            boolean inMission = ForkLiftUtils.queryInMission(wrkMast.getSourceStaNo(), liftSta.getLiftNo(), wrkMast.getWmsWrkNo());
-            if (!inMission) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛屼笂绾х郴缁熶笉鍏佽鍏ュ簱", wrkMast.getWrkNo());
-                return false;
-            }
-
-            //鑾峰彇鎻愬崌鏈哄懡浠�
-            ForkLiftCommand liftCommand = forkLiftThread.getPickAndPutCommand(wrkMast.getWrkNo(), wrkMast.getSourceStaNo(), liftSta.getLev());
-            ArrayList<ForkLiftCommand> commands = new ArrayList<>();
-            commands.add(liftCommand);
-
-            //鎻愪氦鍒扮嚎绋嬪幓宸ヤ綔
-            ForkLiftAssignCommand assignCommand = new ForkLiftAssignCommand();
-            assignCommand.setCommands(commands);
-            assignCommand.setLiftNo(liftNo);
-            assignCommand.setTaskNo(wrkMast.getWrkNo());
-            assignCommand.setTaskMode(ForkLiftTaskModeType.PICK_PUT.id);
-
-            wrkMast.setWrkSts(WrkStsType.INBOUND_LIFT_RUN.sts);//鎻愬崌鏈烘惉杩愪腑  1.鐢熸垚鍏ュ簱浠诲姟 ==> 3.鎻愬崌鏈烘惉杩愪腑
-            wrkMast.setSystemMsg("");//娓呯┖娑堟伅
-            wrkMast.setModiTime(now);
-            if (wrkMastService.updateById(wrkMast)) {
-                //涓嬪彂浠诲姟
-                forkLiftAction.assignWork(wrkMast.getLiftNo(), assignCommand);
-            }
-            return false;
-        }
-        return true;
-    }
-
-    /**
-     * 鎻愬崌鏈哄嚭搴�
-     * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
-     * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
-     */
-    private boolean liftIoExecuteStepOut(WrkMast wrkMast) {
-        //--------------------------------------鎻愬崌鏈哄嚭搴�-----------------------------------------//
-        //103.灏忚溅鎼繍瀹屾垚 ==> 104.鎻愬崌鏈烘惉杩愪腑
-        if (wrkMast.getWrkSts() == WrkStsType.OUTBOUND_SHUTTLE_RUN_COMPLETE.sts) {
-            //鑾峰彇婧愮珯
-            ForkLiftStaProtocol liftSta = ForkLiftUtils.getLiftStaByStaNo(wrkMast.getSourceStaNo());
-            if (liftSta == null) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛屾壘涓嶅埌绔欑偣锛岀姝㈡淳鍙�", wrkMast.getWrkNo());
-                return false;//鎵句笉鍒扮珯鐐�
-            }
-
-            if(wrkMast.getShuttleNo() != null) {
-                ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
-                if (shuttleThread == null) {
-                    return false;
-                }
-                ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
-                if(shuttleProtocol == null) {
-                    return false;
-                }
-
-                if (shuttleProtocol.getCurrentLocNo().equals(liftSta.getLocNo())) {
-                    //灏忚溅杩樺湪杈撻�佺珯鐐�
-                    //鑾峰彇灏忚溅寰呮満浣�
-                    String standbyLocNo = Utils.getShuttleStandbyLocNo(liftSta.getLocNo());
-                    if (standbyLocNo == null) {
-                        News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛岃幏鍙栧皬杞﹀緟鏈轰綅澶辫触", wrkMast.getWrkNo());
-                        return false;
-                    }
-                    //璋冨害灏忚溅鍘诲緟鏈轰綅
-                    boolean dispatchShuttle = shuttleDispatchUtils.dispatchShuttle(wrkMast.getWrkNo(), standbyLocNo, wrkMast.getShuttleNo());
-                    if (!dispatchShuttle) {
-                        News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛屽皬杞﹀湪杈撻�佺珯鐐硅皟搴﹀皬杞﹂伩璁╁け璐�", wrkMast.getWrkNo());
-                        return false;
-                    }
-                } else {
-                    //灏忚溅宸蹭笉鍦ㄨ緭閫佺珯鐐逛綅缃紝閲婃斁灏忚溅
-                    wrkMast.setShuttleNo(null);//閲婃斁灏忚溅
-                    wrkMast.setModiTime(new Date());
-                    wrkMastService.updateById(wrkMast);
-                    return false;
-                }
-                return false;
-            }
-
-            if (liftSta.getHasCar()) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}绔欑偣瀛樺湪灏忚溅锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), liftSta.getSiteId());
-                return false;
-            }
-
-            if (!liftSta.getHasTray()) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}绔欑偣鏃犳墭鐩橈紝绂佹娲惧彂", wrkMast.getWrkNo(), liftSta.getSiteId());
-                return false;
-            }
-
-            Integer liftNo = wrkMast.getLiftNo();
-            if (liftNo == null) {
-                //鏈垎閰嶆彁鍗囨満
-                Integer staNo = wrkMast.getStaNo();
-                liftNo = ForkLiftUtils.getConveyorBindLiftNo(staNo);
-                if(liftNo == null) {
-                    News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛屾湭鎵惧埌鍖归厤鐨勬彁鍗囨満", wrkMast.getWrkNo());
-                    return false;
-                }
-                //鐢宠鎻愬崌鏈鸿祫婧�
-                boolean applyForkLift = forkLiftAction.applyForkLift(liftSta.getLiftNo(), wrkMast.getWrkNo());
-                if(!applyForkLift) {
-                    News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛岀敵璇锋彁鍗囨満璧勬簮澶辫触锛岀姝㈡墽琛屽嚭搴�", wrkMast.getWrkNo());
-                    return false;
-                }
-                return false;
-            }
-
-            ForkLiftThread forkLiftThread = (ForkLiftThread) SlaveConnection.get(SlaveType.ForkLift, liftNo);
-            if (forkLiftThread == null) {
-                return false;
-            }
-            ForkLiftProtocol forkLiftProtocol = forkLiftThread.getStatus();
-            if (forkLiftProtocol == null) {
-                return false;
-            }
-            if (!forkLiftThread.isIdle()) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}鍙锋彁鍗囨満锛屽繖纰屼腑", wrkMast.getWrkNo(), liftSta.getLiftNo());
-                return false;
-            }
-
-            //鍒ゆ柇鎻愬崌鏈烘槸鍚﹀浜庡嚭搴撴ā寮�
-            if (!forkLiftProtocol.getIOModeType().equals(ForkLiftIoModeType.OUT)) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛屾彁鍗囨満涓嶅浜庡嚭搴撴ā寮忥紝绂佹鍑哄簱", wrkMast.getWrkNo());
-                return false;
-            }
-
-            //璇锋眰涓婄骇绯荤粺锛屾槸鍚﹀厑璁稿嚭搴�
-            boolean outMission = ForkLiftUtils.queryOutMission(wrkMast.getStaNo());
-            if (!outMission) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛屼笂绾х郴缁熶笉鍏佽鍑哄簱", wrkMast.getWrkNo());
-                return false;
-            }
-
-            //鑾峰彇鎻愬崌鏈哄懡浠�
-            ForkLiftCommand liftCommand = forkLiftThread.getPickAndPutCommand(wrkMast.getWrkNo(), liftSta.getLev(), wrkMast.getStaNo());
-            ArrayList<ForkLiftCommand> commands = new ArrayList<>();
-            commands.add(liftCommand);
-
-            //鎻愪氦鍒扮嚎绋嬪幓宸ヤ綔
-            ForkLiftAssignCommand assignCommand = new ForkLiftAssignCommand();
-            assignCommand.setCommands(commands);
-            assignCommand.setLiftNo(liftNo);
-            assignCommand.setTaskNo(wrkMast.getWrkNo());
-            assignCommand.setTaskMode(ForkLiftTaskModeType.PICK_PUT.id);
-
-            wrkMast.setWrkSts(WrkStsType.OUTBOUND_LIFT_RUN.sts);//鎻愬崌鏈烘惉杩愪腑  103.鐢熸垚鍏ュ簱浠诲姟 ==> 104.鎻愬崌鏈烘惉杩愪腑
-            wrkMast.setShuttleNo(null);//閲婃斁灏忚溅
-            wrkMast.setSystemMsg("");//娓呯┖娑堟伅
-            wrkMast.setModiTime(new Date());
-            if (wrkMastService.updateById(wrkMast)) {
-                //涓嬪彂浠诲姟
-                forkLiftAction.assignWork(wrkMast.getLiftNo(), assignCommand);
-            }
-            return false;
-        }
-        return true;
-    }
-
-    /**
-     * 璐у弶鎻愬崌鏈轰换鍔″畬鎴�
-     */
-    public synchronized void forkLiftFinished() {
-        try {
-            List<DeviceConfig> forkliftList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>()
-                    .eq("device_type", String.valueOf(SlaveType.ForkLift)));
-            for (DeviceConfig device : forkliftList) {
-                //鑾峰彇鎻愬崌鏈轰俊鎭�
-                ForkLiftThread forkLiftThread = (ForkLiftThread) SlaveConnection.get(SlaveType.ForkLift, device.getDeviceNo());
-                if(forkLiftThread == null) {
-                    continue;
-                }
-                ForkLiftProtocol forkLiftProtocol = forkLiftThread.getStatus();
-                if (forkLiftProtocol == null) {
-                    continue;
-                }
-
-                //鎻愬崌鏈轰负绛夊緟纭涓旂┖闂�
-                if (forkLiftProtocol.getProtocolStatus() == ForkLiftProtocolStatusType.WAITING.id
-                        && forkLiftProtocol.getWrkNo() != 0
-                ) {
-                    //灏嗕换鍔℃。鏍囪涓哄畬鎴�
-                    WrkMast wrkMast = wrkMastService.selectByWorkNo(forkLiftProtocol.getWrkNo());
-                    if (wrkMast != null) {
-                        if (wrkMast.getWrkSts() == WrkStsType.INBOUND_LIFT_RUN.sts) {
-                            //3.鎻愬崌鏈烘惉杩愪腑 ==> 4.鎻愬崌鏈烘惉杩愬畬鎴�
-                            wrkMast.setWrkSts(WrkStsType.INBOUND_LIFT_RUN_COMPLETE.sts);
-                            wrkMast.setLiftNo(null);//閲婃斁鎻愬崌鏈�
-                            forkLiftThread.setSyncTaskNo(0);
-                        } else if (wrkMast.getWrkSts() == WrkStsType.OUTBOUND_LIFT_RUN.sts) {
-                            //104.鎻愬崌鏈烘惉杩愪腑 ==> 109.鍑哄簱瀹屾垚
-                            wrkMast.setWrkSts(WrkStsType.COMPLETE_OUTBOUND.sts);
-                            wrkMast.setLiftNo(null);//閲婃斁鎻愬崌鏈�
-                            forkLiftThread.setSyncTaskNo(0);
-                            redisUtil.set(RedisKeyType.FORK_LIFT_PUT_COMPLETE.key + forkLiftProtocol.getLiftNo(), wrkMast.getWmsWrkNo(), 60 * 3);
-                        } else if (wrkMast.getWrkSts() == WrkStsType.MOVE_LIFT_RUN.sts) {
-                            //306.鎻愬崌鏈烘惉杩愪腑 ==> 307.鎻愬崌鏈烘惉杩愬畬鎴�
-                            wrkMast.setWrkSts(WrkStsType.MOVE_LIFT_RUN_COMPLETE.sts);
-                            forkLiftThread.setSyncTaskNo(0);
-                        }
-                        wrkMast.setModiTime(new Date());
-                        if (wrkMastService.updateById(wrkMast)) {
-                            forkLiftThread.reset();
-                            News.info("鎻愬崌鏈哄凡纭涓斾换鍔″畬鎴愮姸鎬併�傛彁鍗囨満鍙�={}", forkLiftProtocol.getLiftNo());
-                        } else {
-                            News.error("鎻愬崌鏈哄凡纭涓斾换鍔″畬鎴愮姸鎬�,澶嶄綅澶辫触锛屼絾鏈壘鍒板伐浣滄。銆傛彁鍗囨満鍙�={}锛屽伐浣滃彿={}", forkLiftProtocol.getLiftNo(), forkLiftProtocol.getWrkNo());
-                        }
-                    }else {
-                        boolean checkPreviewDispatchForkLift = commonService.checkWorkNoContainMk(forkLiftProtocol.getWrkNo(), WrkIoType.PREVIEW_LIFT_MOVE.id);
-                        if (checkPreviewDispatchForkLift) {
-                            //灞炰簬鎻愬崌鏈洪璋冨害绉诲姩浠诲姟
-                            //鏃犲伐浣滄。鏀拺锛岀洿鎺ョ‘璁ゅ畬鎴�
-                            forkLiftThread.setSyncTaskNo(0);
-                            forkLiftThread.reset();
-                            News.info("宸茬‘璁ゆ彁鍗囨満棰勮皟搴︾Щ鍔ㄤ换鍔°�傛彁鍗囨満鍙�={}", forkLiftProtocol.getLiftNo());
-                        }
-                    }
-                }
-            }
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-    }
-
-    /**
-     * 寮傚父淇℃伅璁板綍
-     */
-    public void recErr() {
-        try {
-            this.recShuttleErr();
-            this.recLiftErr();
-        } catch (Exception e) {
-            News.error("recErr fail", e);
-        }
-    }
-
-    /**
-     * 鍥涘悜绌挎杞﹀紓甯镐俊鎭褰�
-     */
-    private void recShuttleErr() {
-        Date now = new Date();
-        List<DeviceConfig> shuttleList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>()
-                .eq("device_type", String.valueOf(SlaveType.Shuttle)));
-        for (DeviceConfig device : shuttleList) {
-            // 鑾峰彇鍥涘悜绌挎杞︿俊鎭�
-            ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, device.getDeviceNo());
-            if (shuttleThread == null) {
-                continue;
-            }
-            ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
-            if (shuttleProtocol == null) {
-                continue;
-            }
-
-            if (shuttleProtocol.getTaskNo() != 0) {
-                //鏈変换鍔�
-                BasShuttleErrLog latest = basShuttleErrLogService.findLatestByTaskNo(device.getDeviceNo(), shuttleProtocol.getTaskNo());
-                // 鏈夊紓甯�
-                if (latest == null) {
-                    if (shuttleProtocol.getErrorCode() != null && Integer.parseInt(shuttleProtocol.getErrorCode()) != 0) {
-                        WrkMast wrkMast = wrkMastService.selectByWorkNo(shuttleProtocol.getTaskNo());
-                        if (wrkMast == null) {
-                            continue;
-                        }
-                        int errorCode = Integer.parseInt(shuttleProtocol.getErrorCode());
-                        BasShuttleErr basShuttleErr = basShuttleErrService.queryByCode(errorCode);
-                        String errName = basShuttleErr==null? "鏈煡寮傚父":basShuttleErr.getErrName();
-                        BasShuttleErrLog basShuttleErrLog = new BasShuttleErrLog(
-                                null,    // 缂栧彿
-                                wrkMast.getWrkNo(),    // 宸ヤ綔鍙�
-                                now,    // 鍙戠敓鏃堕棿
-                                null,    // 缁撴潫鏃堕棿
-                                wrkMast.getWrkSts(),    // 宸ヤ綔鐘舵��
-                                wrkMast.getIoType(),    // 鍏ュ嚭搴撶被鍨�
-                                device.getDeviceNo(),    // 鍥涘悜绌挎杞�
-                                null,    // plc
-                                wrkMast.getLocNo(),    // 鐩爣搴撲綅
-                                wrkMast.getStaNo(),    // 鐩爣绔�
-                                wrkMast.getSourceStaNo(),    // 婧愮珯
-                                wrkMast.getSourceLocNo(),    // 婧愬簱浣�
-                                wrkMast.getBarcode(),    // 鏉$爜
-                                errorCode,    // 寮傚父鐮�
-                                errName,    // 寮傚父
-                                1,    // 寮傚父鎯呭喌
-                                now,    // 娣诲姞鏃堕棿
-                                null,    // 娣诲姞浜哄憳
-                                now,    // 淇敼鏃堕棿
-                                null,    // 淇敼浜哄憳
-                                "浠诲姟涓紓甯�",    // 澶囨敞
-                                JSON.toJSONString(shuttleProtocol)    // 绯荤粺鐘舵�佹暟鎹�
-                        );
-                        if (!basShuttleErrLogService.insert(basShuttleErrLog)) {
-                            News.error("鍥涘悜绌挎杞lc寮傚父璁板綍澶辫触 ===>> [id:{}] [error:{}]", device.getDeviceNo(), errName);
-                        }
-                    }
-                } else {
-                    // 寮傚父淇
-                    if (shuttleProtocol.getErrorCode() == null || Integer.parseInt(shuttleProtocol.getErrorCode()) == 0) {
-                        latest.setEndTime(now);
-                        latest.setUpdateTime(now);
-                        latest.setStatus(2);
-                        if (!basShuttleErrLogService.updateById(latest)) {
-                            News.error("鍥涘悜绌挎杞lc寮傚父璁板綍淇澶辫触 ===>> [id:{}] [errLogId:{}]", device.getDeviceNo(), latest.getId());
-                        }
-                    }
-                }
-            }
-        }
-    }
-
-    /**
-     * 鎻愬崌鏈哄紓甯镐俊鎭褰�
-     */
-    private void recLiftErr() {
-        Date now = new Date();
-        List<DeviceConfig> forkliftList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>()
-                .eq("device_type", String.valueOf(SlaveType.ForkLift)));
-        for (DeviceConfig device : forkliftList) {
-            // 鑾峰彇鎻愬崌鏈轰俊鎭�
-            ForkLiftThread forkLiftThread = (ForkLiftThread) SlaveConnection.get(SlaveType.ForkLift, device.getDeviceNo());
-            if (forkLiftThread == null) {
-                continue;
-            }
-            ForkLiftProtocol forkLiftProtocol = forkLiftThread.getStatus();
-            if (forkLiftProtocol == null) {
-                continue;
-            }
-
-            if (forkLiftProtocol.getTaskNo() != 0) {
-                //鏈変换鍔�
-                BasLiftErrLog latest = basLiftErrLogService.findLatestByTaskNo(device.getDeviceNo(), forkLiftProtocol.getTaskNo());
-                // 鏈夊紓甯�
-                if (latest == null) {
-                    if (forkLiftProtocol.getErrorCode() != null && forkLiftProtocol.getErrorCode() != 0) {
-                        WrkMast wrkMast = wrkMastService.selectByWorkNo(forkLiftProtocol.getWrkNo());
-                        if (wrkMast == null) {
-                            continue;
-                        }
-
-                        BasLiftErr basLiftErr = basLiftErrService.queryByCode(forkLiftProtocol.getErrorCode());
-                        String errName = basLiftErr==null? "鏈煡寮傚父":basLiftErr.getErrName();
-
-                        BasLiftErrLog basLiftErrLog = new BasLiftErrLog(
-                                null,    // 缂栧彿
-                                wrkMast.getWrkNo(),    // 宸ヤ綔鍙�
-                                now,    // 鍙戠敓鏃堕棿
-                                null,    // 缁撴潫鏃堕棿
-                                wrkMast.getWrkSts(),    // 宸ヤ綔鐘舵��
-                                wrkMast.getIoType(),    // 鍏ュ嚭搴撶被鍨�
-                                device.getDeviceNo(),    // 鎻愬崌鏈�
-                                null,    // plc
-                                wrkMast.getLocNo(),    // 鐩爣搴撲綅
-                                wrkMast.getStaNo(),    // 鐩爣绔�
-                                wrkMast.getSourceStaNo(),    // 婧愮珯
-                                wrkMast.getSourceLocNo(),    // 婧愬簱浣�
-                                wrkMast.getBarcode(),    // 鏉$爜
-                                null,    // 寮傚父鐮�
-                                errName,    // 寮傚父
-                                1,    // 寮傚父鎯呭喌
-                                now,    // 娣诲姞鏃堕棿
-                                null,    // 娣诲姞浜哄憳
-                                now,    // 淇敼鏃堕棿
-                                null,    // 淇敼浜哄憳
-                                "浠诲姟涓紓甯�",    // 澶囨敞
-                                JSON.toJSONString(forkLiftProtocol)    // 绯荤粺鐘舵�佹暟鎹�
-                        );
-                        if (!basLiftErrLogService.insert(basLiftErrLog)) {
-                            News.error("鎻愬崌鏈簆lc寮傚父璁板綍澶辫触 ===>> [id:{}] [error:{}]", device.getDeviceNo(), errName);
-                        }
-                    }
-                } else {
-                    // 寮傚父淇
-                    if (forkLiftProtocol.getErrorCode() == null || forkLiftProtocol.getErrorCode() == 0) {
-                        latest.setEndTime(now);
-                        latest.setUpdateTime(now);
-                        latest.setStatus(2);
-                        if (!basLiftErrLogService.updateById(latest)) {
-                            News.error("鎻愬崌鏈簆lc寮傚父璁板綍淇澶辫触 ===>> [id:{}] [errLogId:{}]", device.getDeviceNo(), latest.getId());
-                        }
-                    }
-                }
-            }
-        }
-    }
-
-    /**
-     * 鍥涘悜绌挎杞︾數閲忔娴� ===>> 鍙戣捣鍏呯數
-     */
-    public synchronized void loopShuttleCharge() {
-        try {
-
-            List<BasShuttleCharge> charges = basShuttleChargeService.selectList(new EntityWrapper<BasShuttleCharge>().orderBy("charge_id", true));
-            if (charges.isEmpty()) {
-                return;//鏃犲厖鐢垫々
-            }
-
-            List<DeviceConfig> shuttleList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>()
-                    .eq("device_type", String.valueOf(SlaveType.Shuttle)));
-            for (DeviceConfig device : shuttleList) {
-                //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
-                ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, device.getDeviceNo());
-                ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
-                if (shuttleProtocol == null) {
-                    continue;
-                }
-
-                //鍒ゆ柇褰撳墠灏忚溅鏄惁婊¤冻闇�瑕佸厖鐢佃姹�
-                if (shuttleThread.isRequireCharge().equals(ShuttleRequireChargeType.NONE)) {
-                    continue;
-                }
-
-                WrkMast wrkMast1 = wrkMastService.selectShuttleWorking(shuttleProtocol.getShuttleNo());
-                if (wrkMast1 != null) {
-                    continue;
-                }
-
-                WrkMast wrkMast2 = wrkMastService.selectShuttleHasMoveWorking(shuttleProtocol.getShuttleNo());
-                if (wrkMast2 != null) {
-                    continue;
-                }
-
-                WrkMast wrkMast = wrkMastService.selectChargeWorking(shuttleProtocol.getShuttleNo());
-                if (wrkMast != null) {//宸叉湁鍏呯數浠诲姟
-                    continue;
-                }
-
-                //灏忚溅鎵�鍦ㄦゼ灞�
-                int lev = Utils.getLev(shuttleProtocol.getCurrentLocNo());
-                BasShuttleCharge shuttleCharge = null;
-
-                //鎼滅储灏忚溅鎵�鍦ㄦゼ灞傛湁娌℃湁鍏呯數妗�
-                for (BasShuttleCharge charge : charges) {
-                    if (lev != Utils.getLev(charge.getLocNo())) {
-                        continue;//灏忚溅鍜屽厖鐢垫々涓嶅湪鍚屼竴灞�
-                    }
-
-                    if (charge.getStatus() == 0) {
-                        continue;//鍏呯數妗╄绂佺敤
-                    }
-
-                    //灏忚溅鍜屽厖鐢垫々鍦ㄥ悓涓�灞�
-                    if (wrkMastService.selectChargeWorkingByChargeSta(charge.getChargeId()) == null) {
-                        shuttleCharge = charge;
-                        break;
-                    }
-                }
-
-                if (shuttleCharge == null) {
-                    //鍚屾ゼ灞傛病鏈夋壘鍒板厖鐢垫々锛屾壘鍙敤鍏呯數妗�
-                    //灏忚溅鍚屾ゼ灞傛病鏈夊厖鐢垫々锛屽彧瑕佸厖鐢垫々鍙敤灏辩敓鎴愬厖鐢典换鍔�
-                    for (BasShuttleCharge charge : charges) {
-                        if (wrkMastService.selectChargeWorkingByChargeSta(charge.getChargeId()) == null) {
-                            //鍒ゆ柇褰撳墠鍏呯數妗╂槸鍚︽湁灏忚溅锛屽鏈夊皬杞︼紝涓嶅垎閰嶈鍏呯數妗�
-                            ArrayList<String> locs = new ArrayList<>();
-                            locs.add(charge.getLocNo());
-                            Integer checkHasShuttle = Utils.checkGroupLocHasShuttle(locs);
-                            if(checkHasShuttle != null) {
-                                //褰撳墠鍏呯數妗╂湁绌挎杞︼紝涓嶅垎閰嶈鍏呯數妗�
-                                continue;
-                            }
-
-                            if (charge.getStatus() == 0) {
-                                continue;//鍏呯數妗╄绂佺敤
-                            }
-
-                            shuttleCharge = charge;
-                            break;
-                        }
-                    }
-                }
-
-                if (shuttleCharge == null) {
-                    continue;
-                }
-
-                String chargeLocNo = shuttleCharge.getLocNo();
-                wrkMast = new WrkMast();
-                wrkMast.setMk(String.valueOf(shuttleCharge.getChargeId()));
-                wrkMast.setWrkNo(commonService.getWorkNo(WrkIoType.SHUTTLE_CHARGE.id));
-                wrkMast.setWrkSts(WrkStsType.NEW_CHARGE.sts);
-                wrkMast.setIoType(WrkIoType.SHUTTLE_CHARGE.id);//300.鍏呯數
-                wrkMast.setIoPri((double) 999);
-                wrkMast.setLocNo(chargeLocNo);
-                wrkMast.setShuttleNo(device.getDeviceNo());
-                wrkMast.setMemo("charge");
-                wrkMast.setAppeTime(new Date());
-                if (!wrkMastService.insert(wrkMast)) {
-                    News.error("淇濆瓨{}鍙峰洓鍚戠┛姊溅鍏呯數浠诲姟澶辫触!!!", device.getDeviceNo());
-                    continue;
-                }
-
-                News.info("淇濆瓨{}鍙峰洓鍚戠┛姊溅鍏呯數浠诲姟鎴愬姛!!!", device.getDeviceNo());
-            }
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-    }
-
-    /**
-     * 鎵ц鍥涘悜绌挎杞﹀厖鐢典换鍔�
-     */
-    public synchronized void executeShuttleCharge() {
-        try {
-            //鏌ヨ灏忚溅鍏呯數浠诲姟
-            List<DeviceConfig> shuttleList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>()
-                    .eq("device_type", String.valueOf(SlaveType.Shuttle)));
-            for (DeviceConfig device : shuttleList) {
-                WrkMast wrkMast = wrkMastService.selectChargeWorking(device.getDeviceNo());
-                if(wrkMast == null) {
-                    continue;
-                }
-
-                boolean result1 = this.executeShuttleChargeStepGoToChargeSta(wrkMast);//灏忚溅绛夊緟鍏呯數妗�
-                if (!result1) {
-                    continue;
-                }
-
-                boolean result2 = this.executeShuttleChargeStepArrivalChargeSta(wrkMast);//灏忚溅鍒拌揪鍏呯數妗�
-                if (!result2) {
-                    continue;
-                }
-
-                boolean result3 = this.executeShuttleChargeStepStartCharge(wrkMast);//灏忚溅寮�濮嬪厖鐢�
-                if (!result3) {
-                    continue;
-                }
-
-                boolean result4 = this.executeShuttleChargeStepStopCharge(wrkMast);//灏忚溅鍋滄鍏呯數
-                if (!result4) {
-                    continue;
-                }
-
-                boolean result5 = this.executeShuttleChargeStepLeaveCharge(wrkMast);//灏忚溅绂诲紑鍏呯數妗�
-                if (!result5) {
-                    continue;
-                }
-            }
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-    }
-
-    /**
-     * 灏忚溅鍓嶅線鍏呯數妗�
-     */
-    private synchronized boolean executeShuttleChargeStepGoToChargeSta(WrkMast wrkMast) {
-        if (wrkMast.getWrkSts() == WrkStsType.NEW_CHARGE.sts) {
-            ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
-            if (shuttleThread == null) {
-                return false;
-            }
-            ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
-            if (shuttleProtocol == null) {
-                return false;
-            }
-
-            if (wrkMast.getLocNo().equals(shuttleProtocol.getCurrentLocNo())) {
-                //灏忚溅鍦ㄥ厖鐢垫々浣嶇疆
-                wrkMast.setWrkSts(WrkStsType.CHARGE_SHUTTLE_RUN_COMPLETE.sts);
-                wrkMast.setModiTime(new Date());
-                wrkMastService.updateById(wrkMast);
-                return false;
-            }
-
-            //璋冨害灏忚溅鍘诲厖鐢垫々
-            boolean dispatched = shuttleDispatchUtils.dispatchShuttle(wrkMast.getWrkNo(), wrkMast.getLocNo(), wrkMast.getShuttleNo());
-            if (!dispatched) {
-                return false;
-            }
-
-            wrkMast.setWrkSts(WrkStsType.CHARGE_SHUTTLE_RUN.sts);//灏忚溅鍓嶅線鍏呯數妗�
-            wrkMast.setModiTime(new Date());
-            wrkMastService.updateById(wrkMast);
-            return false;
-        }
-        return true;
-    }
-
-    /**
-     * 灏忚溅鍒拌揪鍏呯數妗�
-     */
-    private synchronized boolean executeShuttleChargeStepArrivalChargeSta(WrkMast wrkMast) {
-        if (wrkMast.getWrkSts() == WrkStsType.CHARGE_SHUTTLE_RUN.sts) {
-            ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
-            if (shuttleThread == null) {
-                return false;
-            }
-            ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
-            if (shuttleProtocol == null) {
-                return false;
-            }
-
-            //鍒ゆ柇鏄惁瀛樺湪鏈畬鎴愮殑绉诲姩浠诲姟
-            WrkMast moveWrk = wrkMastService.selectShuttleHasMoveWorking(wrkMast.getShuttleNo());
-            if(moveWrk != null) {
-                return false;
-            }
-
-            if (!wrkMast.getLocNo().equals(shuttleProtocol.getCurrentLocNo())) {
-                return false;
-            }
-
-            //灏忚溅鍦ㄥ厖鐢垫々浣嶇疆
-            wrkMast.setWrkSts(WrkStsType.CHARGE_SHUTTLE_RUN_COMPLETE.sts);//灏忚溅鍒拌揪鍏呯數妗�
-            wrkMast.setModiTime(new Date());
-            wrkMastService.updateById(wrkMast);
-
-            return false;
-        }
-        return true;
-    }
-
-    //灏忚溅寮�濮嬪厖鐢�
-    private synchronized boolean executeShuttleChargeStepStartCharge(WrkMast wrkMast) {
-        if (wrkMast.getWrkSts() == WrkStsType.CHARGE_SHUTTLE_RUN_COMPLETE.sts) {
-            ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
-            if (shuttleThread == null) {
-                return false;
-            }
-            ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
-            if (shuttleProtocol == null) {
-                return false;
-            }
-
-            //灏忚溅宸茬粡鍦ㄥ厖鐢垫々浣嶇疆锛屼笅鍙戝厖鐢靛懡浠�
-            ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
-            assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo());//鍥涘悜绌挎杞﹀彿
-            assignCommand.setTaskNo(wrkMast.getWrkNo());//浠诲姟鍙�
-            assignCommand.setTaskMode(ShuttleTaskModeType.CHARGE_ON.id);//鍏呯數寮�
-            assignCommand.setSourceLocNo(shuttleProtocol.getCurrentLocNo());//婧愬簱浣�(灏忚溅褰撳墠浣嶇疆)
-
-            List<ShuttleCommand> commands = shuttleOperaUtils.getShuttleChargeCommand(assignCommand, shuttleThread, true);
-            assignCommand.setCommands(commands);//杩愯鍛戒护
-
-            wrkMast.setWrkSts(WrkStsType.CHARGE_SHUTTLE_CHARGING.sts);
-            wrkMast.setModiTime(new Date());
-            if (!wrkMastService.updateById(wrkMast)) {
-                return false;
-            }
-
-            //涓嬪彂浠诲姟
-            shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand);
-
-            notifyUtils.notify(String.valueOf(SlaveType.Shuttle), shuttleProtocol.getShuttleNo(), String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.SHUTTLE_POWER_START);//瑙﹀彂閫氱煡
-            return false;
-        }
-        return true;
-    }
-
-    //灏忚溅鍋滄鍏呯數
-    private synchronized boolean executeShuttleChargeStepStopCharge(WrkMast wrkMast) {
-        if (wrkMast.getWrkSts() == WrkStsType.CHARGE_SHUTTLE_CHARGING.sts) {
-            ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
-            if (shuttleThread == null) {
-                return false;
-            }
-            ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
-            if (shuttleProtocol == null) {
-                return false;
-            }
-
-            boolean stopCharge = false;
-            if (wrkMast.getMemo().equals("suggestChargeTaskStop")) {
-                stopCharge = true;
-            }else {
-                if (shuttleThread.isChargingCompleted()) {
-                    stopCharge = true;
-                }
-            }
-
-            if (!stopCharge) {
-                return false;
-            }
-
-            //灏忚溅宸茬粡鍦ㄥ厖鐢垫々浣嶇疆锛屼笅鍙戝仠姝㈠厖鐢靛懡浠�
-            ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
-            assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo());//鍥涘悜绌挎杞﹀彿
-            assignCommand.setTaskNo(wrkMast.getWrkNo());//浠诲姟鍙�
-            assignCommand.setTaskMode(ShuttleTaskModeType.CHARGE_OFF.id);//鍏呯數鍏�
-            assignCommand.setSourceLocNo(shuttleProtocol.getCurrentLocNo());//婧愬簱浣�(灏忚溅褰撳墠浣嶇疆)
-
-            List<ShuttleCommand> commands = shuttleOperaUtils.getShuttleChargeCommand(assignCommand, shuttleThread, false);
-            assignCommand.setCommands(commands);//杩愯鍛戒护
-
-            //涓嬪彂浠诲姟
-            shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand);
-
-            wrkMast.setWrkSts(WrkStsType.CHARGE_SHUTTLE_CHARGING_COMPLETE.sts);
-            wrkMast.setModiTime(new Date());
-            if (wrkMastService.updateById(wrkMast)) {
-                return false;
-            }
-            return false;
-        }
-        return true;
-    }
-
-    //灏忚溅绂诲紑鍏呯數妗�
-    private synchronized boolean executeShuttleChargeStepLeaveCharge(WrkMast wrkMast) {
-        if (wrkMast.getWrkSts() == WrkStsType.CHARGE_SHUTTLE_CHARGING_COMPLETE.sts) {
-            ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
-            if (shuttleThread == null) {
-                return false;
-            }
-            ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
-            if (shuttleProtocol == null) {
-                return false;
-            }
-
-            BasShuttleCharge basShuttleCharge = basShuttleChargeService.selectOne(new EntityWrapper<BasShuttleCharge>().eq("charge_id", wrkMast.getMk()));
-            if(basShuttleCharge == null) {
-                return false;
-            }
-
-            //妫�娴嬮殰纰嶇墿杞�
-            int checkObstacle = shuttleOperaUtils.checkObstacle(basShuttleCharge.getWaitLocNo(), new ArrayList<Integer>() {{
-                add(shuttleProtocol.getShuttleNo());
-            }}, new ArrayList<>());
-            if (checkObstacle > 0) {
-                News.info("{}浠诲姟锛岄伩闅滆寖鍥存湁灏忚溅锛岀瓑寰呴殰纰嶅皬杞﹁皟绂讳腑", wrkMast.getWrkNo());
-                return false;
-            }
-
-            //璋冨害灏忚溅鍘诲緟鏈轰綅
-            boolean dispatched = shuttleDispatchUtils.dispatchShuttle(wrkMast.getWrkNo(), basShuttleCharge.getWaitLocNo(), wrkMast.getShuttleNo());
-            if (!dispatched) {
-                return false;
-            }
-
-            wrkMast.setWrkSts(WrkStsType.COMPLETE_CHARGE.sts);
-            wrkMast.setModiTime(new Date());
-            if (wrkMastService.updateById(wrkMast)) {
-                return false;
-            }
-            return false;
-        }
-        return true;
-    }
-
-    /**
-     * 鎵ц灏忚溅绉诲簱浠诲姟
-     */
-    public synchronized void shuttleMoveExecute() {
-        try {
-            //鏌ヨ灏忚溅绉诲簱浠诲姟
-            List<WrkMast> wrkMasts = wrkMastService.selectShuttleMoveWrk();
-            for (WrkMast wrkMast : wrkMasts) {
-                boolean stepMoveNearby = this.shuttleMoveExecuteStepMoveNearby(wrkMast);//灏忚溅绉诲姩鍒拌繎鐐�
-                if (!stepMoveNearby) {
-                    continue;
-                }
-
-                boolean stepMoveInLift = this.shuttleMoveExecuteStepMoveInLift(wrkMast);//灏忚溅杩佸叆鎻愬崌鏈轰腑
-                if (!stepMoveInLift) {
-                    continue;
-                }
-
-                boolean stepLiftMove = this.shuttleMoveExecuteStepLiftMove(wrkMast);//鎻愬崌鏈烘惉杩愪腑
-                if (!stepLiftMove) {
-                    continue;
-                }
-
-                boolean updateShuttleLocation = this.shuttleMoveExecuteStepUpdateShuttleLocation(wrkMast);//鎻愬崌鏈烘惉杩愬畬鎴愭洿鏂板皬杞﹀潗鏍�
-                if (!updateShuttleLocation) {
-                    continue;
-                }
-
-                boolean stepMoveLoc = this.shuttleMoveExecuteStepMoveLoc(wrkMast);//灏忚溅绉诲姩鍒扮洰鏍囧簱浣嶄腑
-                if (!stepMoveLoc) {
-                    continue;
-                }
-
-            }
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-    }
-
-    /**
-     * 灏忚溅杩佺Щ-灏忚溅绉诲姩鍒拌繎鐐逛腑
-     * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
-     * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
-     */
-    private boolean shuttleMoveExecuteStepMoveNearby(WrkMast wrkMast) {
-        //--------------------------------------灏忚溅绉诲姩鍒拌繎鐐逛腑-----------------------------------------//
-        Date now = new Date();
-
-        //灏忚溅绉诲姩鍒拌繎鐐�  301.鐢熸垚灏忚溅绉诲簱浠诲姟 ==> 302.灏忚溅绉诲姩鑷崇珯鐐逛腑
-        if (wrkMast.getWrkSts() == WrkStsType.NEW_MOVE.sts) {
-            //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
-            ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
-            if (shuttleThread == null) {
-                return false;
-            }
-            ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
-            if (shuttleProtocol == null) {
-                return false;
-            }
-
-            //灏忚溅澶勪簬绌洪棽鐘舵��
-            if (!shuttleThread.isIdle()) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛屽皬杞﹀繖纰屼腑", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
-                return false;
-            }
-
-            if (Utils.getLev(wrkMast.getLocNo()) == Utils.getLev(shuttleProtocol.getCurrentLocNo())) {
-                //鐩爣搴撲綅鍜屽皬杞﹀簱浣嶅浜庡悓涓�妤煎眰锛屼笉闇�瑕侀�氳繃鎻愬崌鏈鸿皟搴�
-                wrkMast.setWrkSts(WrkStsType.MOVE_OUT_LIFT_COMPLETE.sts);// 309.灏忚溅杩佸嚭鎻愬崌鏈哄畬鎴� ==> 310.灏忚溅绉诲姩涓�
-                wrkMast.setModiTime(now);
-                if (wrkMastService.updateById(wrkMast)) {
-                    //涓嬪彂浠诲姟
-                    return true;//鐩存帴杩涘叆309.灏忚溅杩佸嚭鎻愬崌鏈哄畬鎴� ==> 310.灏忚溅绉诲姩涓�
-                }
-                return false;
-            }
-
-            //鎼滅储鏈�杩戜笖鏃犳晠闅滄彁鍗囨満
-            ForkLiftStaProtocol recentLiftStation = forkLiftDispatchUtils.getRecentLiftStation(shuttleProtocol.getShuttleNo(), Utils.getLev(wrkMast.getLocNo()));
-            if(recentLiftStation == null) {
-                News.info("{}鍙峰皬杞︼紝{}鐩爣搴撲綅锛屾病鏈夊彲鐢ㄧ┖闂茶緭閫佺珯鐐�", shuttleProtocol.getShuttleNo(), wrkMast.getLocNo());
-                return false;
-            }
-
-            if (recentLiftStation.getHasTray()) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛屾簮绔欏瓨鍦ㄦ墭鐩�", wrkMast.getWrkNo());
-                return false;
-            }
-
-            if (recentLiftStation.getHasCar()) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛屾簮绔欏瓨鍦ㄥ皬杞�", wrkMast.getWrkNo());
-                return false;
-            }
-
-            //鑾峰彇鐩爣杈撻�佺珯
-            ForkLiftStaProtocol liftStaTarget = ForkLiftUtils.getLiftStaByLev(recentLiftStation.getLiftNo(), Utils.getLev(wrkMast.getLocNo()));
-            if (liftStaTarget == null) {
-                return false;//鎵句笉鍒扮珯鐐�
-            }
-
-            if (liftStaTarget.getHasTray()) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛岀洰鏍囩珯瀛樺湪鎵樼洏", wrkMast.getWrkNo());
-                return false;
-            }
-
-            if (liftStaTarget.getHasCar()) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛岀洰鏍囩珯瀛樺湪灏忚溅", wrkMast.getWrkNo());
-                return false;
-            }
-
-            ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
-            assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙�
-            assignCommand.setTaskMode(ShuttleTaskModeType.MOVE_LOC_NO.id);//灏忚溅绉诲簱浠诲姟
-            assignCommand.setTaskNo(wrkMast.getWrkNo());//浠诲姟鍙�
-            assignCommand.setAuto(true);//鑷姩妯″紡
-
-            //璁$畻杩戠偣浣嶇疆
-            String endLocation = navigateUtils.calcEndLocation(shuttleProtocol.getCurrentLocNo(), recentLiftStation.getLocNo(), NavigationMapType.getMapTypes(NavigationMapType.NORMAL), null, null, 1);
-            if (endLocation == null) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛屽皬杞﹁繎鐐逛綅缃绠楀け璐�", wrkMast.getWrkNo());
-                return false;
-            }
-
-            //灏忚溅宸插湪杩戠偣浣嶇疆鏃犻渶鍓嶅線
-            if (shuttleProtocol.getCurrentLocNo().equals(endLocation)) {
-                wrkMast.setWrkSts(WrkStsType.MOVE_NEARBY_COMPLETE.sts);//灏忚溅绉诲姩鍒版彁鍗囨満涓�  301.鐢熸垚灏忚溅绉诲簱浠诲姟 ==> 303.灏忚溅绉诲姩鑷宠繎鐐瑰畬鎴�
-                wrkMast.setModiTime(now);
-                wrkMast.setSystemMsg("");//娓呯┖娑堟伅
-                wrkMastService.updateById(wrkMast);
-                return true;
-            }
-
-            //鑾峰彇灏忚溅鍒拌繎鐐硅璧板懡浠�
-            List<ShuttleCommand> commands = shuttleOperaUtils.getStartToTargetCommands(shuttleProtocol.getCurrentLocNo(), endLocation, NavigationMapType.getMapTypes(NavigationMapType.NORMAL, NavigationMapType.SHUTTLE), assignCommand, shuttleThread);
-            if (commands == null) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛岃矾寰勮绠楀け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
-                return false;//璺緞瑙i攣澶辫触
-            }
-
-            assignCommand.setCommands(commands);
-
-            wrkMast.setWrkSts(WrkStsType.MOVE_NEARBY.sts);//灏忚溅绉诲姩鍒版彁鍗囨満涓�  301.鐢熸垚灏忚溅绉诲簱浠诲姟 ==> 302.灏忚溅绉诲姩鑷宠繎鐐逛腑
-            wrkMast.setSourceStaNo(recentLiftStation.getSiteId());
-            wrkMast.setStaNo(liftStaTarget.getSiteId());
-            wrkMast.setModiTime(now);
-            wrkMast.setSystemMsg("");//娓呯┖娑堟伅
-            if (wrkMastService.updateById(wrkMast)) {
-                //涓嬪彂浠诲姟
-                shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand);
-                notifyUtils.notify(String.valueOf(SlaveType.Shuttle), shuttleProtocol.getShuttleNo(), String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.SHUTTLE_MOVING);
-                //瑙﹀彂閫氱煡
-                return false;
-            }
-            return false;
-        }
-        return true;
-    }
-
-    /**
-     * 灏忚溅杩佺Щ-灏忚溅杩佸叆鎻愬崌鏈轰腑
-     * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
-     * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
-     */
-    private boolean shuttleMoveExecuteStepMoveInLift(WrkMast wrkMast) {
-        //--------------------------------------灏忚溅杩佸叆鎻愬崌鏈轰腑-----------------------------------------//
-        Date now = new Date();
-
-        //灏忚溅杩佸叆鎻愬崌鏈�  303.灏忚溅绉诲姩鑷宠繎鐐瑰畬鎴� ==> 304.灏忚溅杩佸叆鎻愬崌鏈轰腑
-        if (wrkMast.getWrkSts() == WrkStsType.MOVE_NEARBY_COMPLETE.sts) {
-            //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
-            ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
-            if (shuttleThread == null) {
-                return false;
-            }
-            ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
-            if (shuttleProtocol == null) {
-                return false;
-            }
-
-            //灏忚溅澶勪簬绌洪棽鐘舵��
-            if (!shuttleThread.isIdle()) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛屽皬杞﹀繖纰屼腑", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
-                return false;
-            }
-
-            //鑾峰彇婧愯緭閫佺珯
-            ForkLiftStaProtocol liftSta = ForkLiftUtils.getLiftStaByStaNo(wrkMast.getSourceStaNo());
-            if (liftSta == null) {
-                return false;//鎵句笉鍒扮珯鐐�
-            }
-
-            if (liftSta.getHasTray()) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛屾簮绔欏瓨鍦ㄦ墭鐩�", wrkMast.getWrkNo());
-                return false;
-            }
-
-            if (liftSta.getHasCar()) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛屾簮绔欏瓨鍦ㄥ皬杞�", wrkMast.getWrkNo());
-                return false;
-            }
-
-            //鑾峰彇鐩爣杈撻�佺珯
-            ForkLiftStaProtocol liftStaTarget = ForkLiftUtils.getLiftStaByStaNo(wrkMast.getStaNo());
-            if (liftStaTarget == null) {
-                return false;//鎵句笉鍒扮珯鐐�
-            }
-
-            if (liftStaTarget.getHasTray()) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛岀洰鏍囩珯瀛樺湪鎵樼洏", wrkMast.getWrkNo());
-                return false;
-            }
-
-            if (liftStaTarget.getHasCar()) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛岀洰鏍囩珯瀛樺湪灏忚溅", wrkMast.getWrkNo());
-                return false;
-            }
-
-            List<WrkMast> outWrkMastList = wrkMastService.selectList(new EntityWrapper<WrkMast>()
-                    .eq("io_type", 101)
-                    .in("wrk_sts"
-                            , WrkStsType.OUTBOUND_SHUTTLE_RUN.sts
-                            , WrkStsType.OUTBOUND_SHUTTLE_RUN_COMPLETE.sts
-                            , WrkStsType.OUTBOUND_LIFT_RUN.sts
-                            , WrkStsType.OUTBOUND_LIFT_RUN_COMPLETE.sts
-                    )
-            );
-            for (WrkMast outWrkMast : outWrkMastList) {
-                if(Utils.getLev(outWrkMast.getSourceLocNo()) == Utils.getLev(wrkMast.getLocNo())) {
-                    News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛屽瓨鍦ㄦ鍦ㄦ墽琛岀殑灏忚溅鍑哄簱浠诲姟锛岀姝㈢Щ鍔ㄨ嚦绔欑偣", wrkMast.getWrkNo());
-                    return false;
-                }
-            }
-
-            if (wrkMast.getLiftNo() == null) {
-                //鐢宠鎻愬崌鏈鸿祫婧�(璇ヤ换鍔¢渶瑕佹崲灞傚繀椤绘彁鍓嶇嫭鍗犳彁鍗囨満)
-                boolean applyForkLift = forkLiftAction.applyForkLift(liftSta.getLiftNo(), wrkMast.getWrkNo());
-                if(!applyForkLift) {
-                    News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛岀敵璇锋彁鍗囨満璧勬簮澶辫触锛岀姝㈢Щ鍔ㄨ嚦绔欑偣", wrkMast.getWrkNo());
-                    return false;
-                }
-                return false;
-            }
-
-            ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
-            assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙�
-            assignCommand.setTaskMode(ShuttleTaskModeType.MOVE_LOC_NO.id);//灏忚溅绉诲簱浠诲姟
-            assignCommand.setTaskNo(wrkMast.getWrkNo());//浠诲姟鍙�
-            assignCommand.setAuto(true);//鑷姩妯″紡
-
-            //鑾峰彇灏忚溅鍒版彁鍗囨満琛岃蛋鍛戒护
-            List<ShuttleCommand> commands = shuttleOperaUtils.getStartToTargetCommands(shuttleProtocol.getCurrentLocNo(), liftSta.getLocNo(), NavigationMapType.getMapTypes(NavigationMapType.NORMAL), assignCommand, shuttleThread);
-            if (commands == null) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛岃矾寰勮绠楀け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
-                return false;//璺緞瑙i攣澶辫触
-            }
-
-            assignCommand.setCommands(commands);
-
-            wrkMast.setWrkSts(WrkStsType.MOVE_IN_LIFT.sts);//303.灏忚溅绉诲姩鑷宠繎鐐瑰畬鎴� ==> 304.灏忚溅杩佸叆鎻愬崌鏈轰腑
-            wrkMast.setModiTime(now);
-            wrkMast.setSystemMsg("");//娓呯┖娑堟伅
-            if (wrkMastService.updateById(wrkMast)) {
-                //涓嬪彂浠诲姟
-                shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand);
-                notifyUtils.notify(String.valueOf(SlaveType.Shuttle), shuttleProtocol.getShuttleNo(), String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.SHUTTLE_MOVING);
-                //瑙﹀彂閫氱煡
-                return false;
-            }
-            return false;
-        }
-        return true;
-    }
-
-    /**
-     * 灏忚溅杩佺Щ-鎻愬崌鏈烘惉杩愪腑
-     * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
-     * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
-     */
-    private boolean shuttleMoveExecuteStepLiftMove(WrkMast wrkMast) {
-        //--------------------------------------鎻愬崌鏈烘惉杩愪腑-----------------------------------------//
-        Date now = new Date();
-
-        //鎻愬崌鏈烘惉杩愪腑  305.灏忚溅杩佸叆鎻愬崌鏈哄畬鎴� ==> 306.鎻愬崌鏈烘惉杩愪腑
-        if (wrkMast.getWrkSts() == WrkStsType.MOVE_IN_LIFT_COMPLETE.sts) {
-            ForkLiftThread forkLiftThread = (ForkLiftThread) SlaveConnection.get(SlaveType.ForkLift, wrkMast.getLiftNo());
-            if (forkLiftThread == null) {
-                return false;
-            }
-            ForkLiftProtocol forkLiftProtocol = forkLiftThread.getStatus();
-            if (forkLiftProtocol == null) {
-                return false;
-            }
-            if (!forkLiftThread.isIdle()) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満蹇欑涓紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
-                return false;
-            }
-
-            //鑾峰彇婧愮珯
-            ForkLiftStaProtocol sourceLiftSta = ForkLiftUtils.getLiftStaByStaNo(wrkMast.getSourceStaNo());
-            //鑾峰彇鐩爣绔�
-            ForkLiftStaProtocol liftSta = ForkLiftUtils.getLiftStaByStaNo(wrkMast.getStaNo());
-            if (sourceLiftSta == null || liftSta == null) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛岀己灏戠珯鐐逛俊鎭紝绂佹娲惧彂", wrkMast.getWrkNo());
-                return false;//缂哄皯绔欑偣淇℃伅
-            }
-
-            if (liftSta.getHasTray()) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛岀洰鏍囩珯瀛樺湪鎵樼洏锛岀姝㈡淳鍙�", wrkMast.getWrkNo());
-                return false;//鏈夋墭鐩樿烦杩�
-            }
-
-            //鑾峰彇鎻愬崌鏈哄懡浠�
-            ForkLiftCommand liftCommand = forkLiftThread.getShuttleSwitchCommand(wrkMast.getWrkNo(), sourceLiftSta.getLev(), liftSta.getLev());
-            ArrayList<ForkLiftCommand> commands = new ArrayList<>();
-            commands.add(liftCommand);
-
-            //鎻愪氦鍒扮嚎绋嬪幓宸ヤ綔
-            ForkLiftAssignCommand assignCommand = new ForkLiftAssignCommand();
-            assignCommand.setCommands(commands);
-            assignCommand.setLiftNo(wrkMast.getLiftNo());
-            assignCommand.setTaskNo(wrkMast.getWrkNo());
-            assignCommand.setTaskMode(ForkLiftTaskModeType.SHUTTLE_SWITCH.id);
-
-            wrkMast.setWrkSts(WrkStsType.MOVE_LIFT_RUN.sts);//鎻愬崌鏈烘惉杩愪腑  305.灏忚溅杩佸叆鎻愬崌鏈哄畬鎴� ==> 306.鎻愬崌鏈烘惉杩愪腑
-            wrkMast.setSystemMsg("");//娓呯┖娑堟伅
-            wrkMast.setModiTime(now);
-            if (wrkMastService.updateById(wrkMast)) {
-                //涓嬪彂浠诲姟
-                forkLiftAction.assignWork(wrkMast.getLiftNo(), assignCommand);
-            }
-        }
-        return true;
-    }
-
-    /**
-     * 灏忚溅杩佺Щ-鎻愬崌鏈烘惉杩愬畬鎴愭洿鏂板皬杞﹀潗鏍�
-     * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
-     * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
-     */
-    private boolean shuttleMoveExecuteStepUpdateShuttleLocation(WrkMast wrkMast) {
-        //--------------------------------------鎻愬崌鏈烘惉杩愪腑-----------------------------------------//
-        Date now = new Date();
-
-        //鎻愬崌鏈烘惉杩愪腑  307.鎻愬崌鏈烘惉杩愬畬鎴� ==> 308.灏忚溅杩佸嚭鎻愬崌鏈轰腑
-        if (wrkMast.getWrkSts() == WrkStsType.MOVE_LIFT_RUN_COMPLETE.sts) {
-            //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
-            ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
-            if (shuttleThread == null) {
-                return false;
-            }
-            ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
-            if (shuttleProtocol == null) {
-                return false;
-            }
-
-            //灏忚溅澶勪簬绌洪棽鐘舵��
-            if (!shuttleThread.isIdle()) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛屽皬杞﹀繖纰屼腑锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
-                return false;
-            }
-
-            ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
-            assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙�
-            assignCommand.setTaskMode(ShuttleTaskModeType.UPDATE_LOCATION.id);//鏇存柊鍧愭爣
-            assignCommand.setTaskNo(wrkMast.getWrkNo());//浠诲姟鍙�
-            assignCommand.setAuto(true);//鑷姩妯″紡
-            assignCommand.setSourceLocNo(shuttleProtocol.getCurrentLocNo());//婧愬簱浣�
-            assignCommand.setLocNo(wrkMast.getLocNo());//鐩爣搴撲綅
-
-            //鏇存柊灏忚溅鍧愭爣
-            ShuttleCommand command = shuttleThread.getUpdateLocationCommand(wrkMast.getWrkNo(), wrkMast.getLocNo());
-            ArrayList<ShuttleCommand> commands = new ArrayList<>();
-            commands.add(command);
-
-            assignCommand.setCommands(commands);
-
-            wrkMast.setWrkSts(WrkStsType.MOVE_OUT_LIFT.sts);//灏忚溅杩佸嚭鎻愬崌鏈轰腑
-            wrkMast.setSystemMsg("");//娓呯┖娑堟伅
-            wrkMast.setModiTime(now);
-
-            if (wrkMastService.updateById(wrkMast)) {
-                //涓嬪彂浠诲姟
-                shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand);
-            }
-        }
-        return true;
-    }
-
-    /**
-     * 灏忚溅杩佺Щ-灏忚溅绉诲姩鍒扮洰鏍囧簱浣嶄腑
-     * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
-     * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
-     */
-    private boolean shuttleMoveExecuteStepMoveLoc(WrkMast wrkMast) {
-        //--------------------------------------灏忚溅绉诲姩鍒扮洰鏍囧簱浣嶄腑-----------------------------------------//
-        Date now = new Date();
-
-        //灏忚溅绉诲姩鍒扮洰鏍囧簱浣嶄腑  309.灏忚溅杩佸嚭鎻愬崌鏈哄畬鎴� ==> 310.灏忚溅绉诲姩涓�
-        if (wrkMast.getWrkSts() == WrkStsType.MOVE_OUT_LIFT_COMPLETE.sts) {
-
-            //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
-            ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
-            if (shuttleThread == null) {
-                return false;
-            }
-            ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
-            if (shuttleProtocol == null) {
-                return false;
-            }
-
-            //灏忚溅澶勪簬绌洪棽鐘舵��
-            if (!shuttleThread.isIdle()) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛屽皬杞﹀繖纰屼腑锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
-                return false;
-            }
-
-            //灏忚溅宸茬粡鍦ㄧ洰鏍囧簱浣嶏紝鐩存帴璁ゅ畾灏忚溅绉诲姩浠诲姟瀹屾垚
-            if (shuttleProtocol.getCurrentLocNo().equals(wrkMast.getLocNo())) {
-                wrkMast.setWrkSts(WrkStsType.COMPLETE_MOVE.sts);//311.灏忚溅绉诲姩瀹屾垚
-                wrkMast.setLiftNo(null);//閲婃斁鎻愬崌鏈�
-                wrkMast.setModiTime(now);
-                wrkMastService.updateById(wrkMast);
-                return false;
-            }
-
-            ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
-            assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙�
-            assignCommand.setTaskMode(ShuttleTaskModeType.MOVE_LOC_NO.id);//灏忚溅绉诲簱浠诲姟
-            assignCommand.setTaskNo(wrkMast.getWrkNo());//浠诲姟鍙�
-            assignCommand.setAuto(true);//鑷姩妯″紡
-            assignCommand.setSourceLocNo(shuttleProtocol.getCurrentLocNo());//婧愬簱浣�
-            assignCommand.setLocNo(wrkMast.getLocNo());//鐩爣搴撲綅
-
-            //鑾峰彇灏忚溅鍒扮洰鏍囧簱浣嶅懡浠�
-            List<ShuttleCommand> commands = shuttleOperaUtils.getStartToTargetCommands(shuttleProtocol.getCurrentLocNo(), wrkMast.getLocNo(), NavigationMapType.getMapTypes(NavigationMapType.NORMAL), assignCommand, shuttleThread);
-            if (commands == null) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛岃矾寰勮绠楀け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
-                return false;//璺緞璁$畻澶辫触
-            }
-
-            assignCommand.setCommands(commands);
-
-            wrkMast.setWrkSts(WrkStsType.MOVE_SHUTTLE.sts);//灏忚溅绉诲姩鍒扮洰鏍囧簱浣嶄腑  309.灏忚溅杩佸嚭鎻愬崌鏈哄畬鎴� ==> 310.灏忚溅绉诲姩涓�
-            wrkMast.setLiftNo(null);//閲婃斁鎻愬崌鏈�
-            wrkMast.setSystemMsg("");//娓呯┖娑堟伅
-            wrkMast.setModiTime(now);
-            if (wrkMastService.updateById(wrkMast)) {
-                //涓嬪彂浠诲姟
-                shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand);
-            }
-        }
-        return true;
-    }
-
-    //鑷姩鍒囨崲鍑哄叆搴撴ā寮�
-    public void autoSwitchForkLiftIOMode() {
-//        List<DeviceConfig> forkliftList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>()
-//                .eq("device_type", String.valueOf(SlaveType.ForkLift)));
-//        for (DeviceConfig device : forkliftList) {
-//            Integer liftNo = device.getDeviceNo();
-//            ForkLiftThread forkLiftThread = (ForkLiftThread) SlaveConnection.get(SlaveType.ForkLift, liftNo);
-//            if (forkLiftThread == null) {
-//                continue;
-//            }
-//            ForkLiftProtocol forkLiftProtocol = forkLiftThread.getStatus();
-//            if (forkLiftProtocol == null) {
-//                continue;
-//            }
-//
-//            List<Integer> liftAllStaNo = ForkLiftUtils.getLiftAllStaNo(liftNo);
-//            if (liftAllStaNo.isEmpty()) {
-//                continue;
-//            }
-//
-//            List<Integer> conveyorBindLiftAllStaNo = ForkLiftUtils.getConveyorBindLiftAllStaNo(liftNo);
-//            if (conveyorBindLiftAllStaNo.isEmpty()) {
-//                continue;
-//            }
-//
-//            //鑾峰彇鍏ュ簱浠诲姟
-//            List<WrkMast> inWrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>()
-//                    .in("sta_no", liftAllStaNo)
-//                    .in("wrk_sts"
-//                            , WrkStsType.NEW_INBOUND.sts
-//                            , WrkStsType.INBOUND_DEVICE_RUN.sts
-//                            , WrkStsType.INBOUND_LIFT_RUN.sts
-//                            , WrkStsType.INBOUND_LIFT_RUN_COMPLETE.sts
-//                            , WrkStsType.INBOUND_SHUTTLE_RUN.sts
-//                            , WrkStsType.INBOUND_SHUTTLE_RUN_COMPLETE.sts
-//                    ));
-//
-//            //鑾峰彇鍑哄簱浠诲姟
-//            List<WrkMast> outWrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>()
-//                    .in("sta_no", conveyorBindLiftAllStaNo)
-//                    .in("wrk_sts"
-//                            , WrkStsType.NEW_OUTBOUND.sts
-//                            , WrkStsType.OUTBOUND_SHUTTLE_RUN.sts
-//                            , WrkStsType.OUTBOUND_SHUTTLE_RUN_COMPLETE.sts
-//                            , WrkStsType.OUTBOUND_LIFT_RUN.sts
-//                            , WrkStsType.OUTBOUND_LIFT_RUN_COMPLETE.sts
-//                    ));
-//
-//            if (forkLiftProtocol.getIOModeType().equals(ForkLiftIoModeType.NONE)) {
-//                //鏈煡妯″紡
-//                if (!inWrkMasts.isEmpty()) {
-//                    forkLiftThread.switchIOMode(ForkLiftIoModeType.IN);
-//                } else if (!outWrkMasts.isEmpty()) {
-//                    forkLiftThread.switchIOMode(ForkLiftIoModeType.OUT);
-//                }else {
-//                    forkLiftThread.switchIOMode(ForkLiftIoModeType.IN);
-//                }
-//            } else if (forkLiftProtocol.getIOModeType().equals(ForkLiftIoModeType.IN)) {
-//                //鍏ュ簱妯″紡
-//                if (inWrkMasts.isEmpty() && !outWrkMasts.isEmpty()) {
-//                    forkLiftThread.switchIOMode(ForkLiftIoModeType.OUT);
-//                }
-//            } else if (forkLiftProtocol.getIOModeType().equals(ForkLiftIoModeType.OUT)) {
-//                //鍑哄簱妯″紡
-//                if (outWrkMasts.isEmpty() && !inWrkMasts.isEmpty()) {
-//                    forkLiftThread.switchIOMode(ForkLiftIoModeType.IN);
-//                }
-//            }
-//        }
-    }
-
-    //鍑哄簱浠诲姟棰勮皟搴︽彁鍗囨満
-    public void outTaskPreviewDispatchForkLift() {
-        List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>()
-                .in("wrk_sts"
-                        , WrkStsType.OUTBOUND_SHUTTLE_RUN_COMPLETE.sts
-                ));
-        for (WrkMast wrkMast : wrkMasts) {
-            if(wrkMast.getShuttleNo() == null){
-                continue;
-            }
-
-            //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
-            ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
-            if (shuttleThread == null) {
-                continue;
-            }
-
-            ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
-            if (shuttleProtocol == null) {
-                continue;
-            }
-
-            if(shuttleProtocol.getCurrentLocNo() == null){
-                continue;
-            }
-
-            //閫氳繃杈撻�佺嚎绔欏彿鑾峰彇鎻愬崌鏈哄彿
-            Integer liftNo = ForkLiftUtils.getConveyorBindLiftNo(wrkMast.getStaNo());
-            if (liftNo == null) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛屾湭鎵惧埌鍖归厤鐨勬彁鍗囨満", wrkMast.getWrkNo());
-                continue;
-            }
-
-            ForkLiftThread forkLiftThread = (ForkLiftThread) SlaveConnection.get(SlaveType.ForkLift, liftNo);
-            if (forkLiftThread == null) {
-                continue;
-            }
-
-            ForkLiftProtocol forkLiftProtocol = forkLiftThread.getStatus();
-            if (forkLiftProtocol == null) {
-                continue;
-            }
-
-            //瀛樺湪璋冨害閿�
-            Object object = redisUtil.get(RedisKeyType.OUT_TASK_PREVIEW_DISPATCH_FORKLIFT.key + forkLiftProtocol.getLiftNo());
-            if (object != null) {
-                continue;
-            }
-
-            //鐢宠鎻愬崌鏈鸿祫婧�
-            boolean applyForkLift = forkLiftAction.applyForkLift(liftNo, null);
-            if(!applyForkLift) {
-                continue;//鎻愬崌鏈哄凡琚粦瀹氾紝涓嶅啀鎵ц棰勮皟搴︿换鍔�
-            }
-
-            if (!forkLiftThread.isIdle()) {
-                continue;
-            }
-
-            //鎻愬崌鏈轰笉鍦ㄥ嚭搴撳眰
-            if (forkLiftProtocol.getLev().equals(Utils.getLev(wrkMast.getSourceLocNo()))) {
-                continue;
-            }
-
-            //绉诲姩
-            int workNo = commonService.getWorkNo(WrkIoType.PREVIEW_LIFT_MOVE.id);//鑾峰彇浠诲姟鍙�
-
-            //鑾峰彇鎻愬崌鏈哄懡浠�
-            ForkLiftCommand liftCommand = forkLiftThread.getMoveCommand(workNo, forkLiftProtocol.getLev(), Utils.getLev(wrkMast.getSourceLocNo()));
-            ArrayList<ForkLiftCommand> commands = new ArrayList<>();
-            commands.add(liftCommand);
-
-            //鎻愪氦鍒扮嚎绋嬪幓宸ヤ綔
-            ForkLiftAssignCommand assignCommand = new ForkLiftAssignCommand();
-            assignCommand.setCommands(commands);
-            assignCommand.setLiftNo(forkLiftProtocol.getLiftNo());
-            assignCommand.setTaskNo(workNo);
-            assignCommand.setTaskMode(ForkLiftTaskModeType.MOVE.id);
-
-            forkLiftAction.assignWork(forkLiftProtocol.getLiftNo(), assignCommand);
-
-            redisUtil.set(RedisKeyType.OUT_TASK_PREVIEW_DISPATCH_FORKLIFT.key + forkLiftProtocol.getLiftNo(), "lock", 30);//30绉掍笉鍐嶈皟搴�
-        }
-    }
-
-}
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 24d2bb0..60a07ae 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -1,33 +1,7 @@
 package com.zy.asrs.service.impl;
 
-import com.alibaba.fastjson.JSON;
-import com.baomidou.mybatisplus.mapper.EntityWrapper;
-import com.zy.asrs.domain.enums.NotifyMsgType;
-import com.zy.asrs.entity.*;
-import com.zy.asrs.service.*;
-import com.zy.asrs.utils.NotifyUtils;
-import com.zy.asrs.utils.Utils;
-import com.zy.common.model.*;
-import com.zy.common.model.enums.NavigationMapType;
-import com.zy.common.service.CommonService;
-import com.zy.common.utils.*;
-import com.zy.core.News;
-import com.zy.core.action.LiftAction;
-import com.zy.core.action.ShuttleAction;
-import com.zy.core.cache.SlaveConnection;
-import com.zy.core.dispatcher.LiftDispatchUtils;
-import com.zy.core.dispatcher.ShuttleDispatchUtils;
-import com.zy.core.enums.*;
-import com.zy.core.model.command.*;
-import com.zy.core.model.protocol.*;
-import com.zy.core.thread.*;
-import com.zy.system.entity.Config;
-import com.zy.system.service.ConfigService;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-
-import java.util.*;
 
 /**
  * 绔嬩綋浠撳簱WCS绯荤粺涓绘祦绋嬩笟鍔�
@@ -36,2009 +10,5 @@
 @Slf4j
 @Service("mainService")
 public class MainServiceImpl {
-
-    @Autowired
-    private WrkMastService wrkMastService;
-    @Autowired
-    private BasShuttleErrLogService basShuttleErrLogService;
-    @Autowired
-    private BasLiftErrLogService basLiftErrLogService;
-    @Autowired
-    private BasShuttleErrService basShuttleErrService;
-    @Autowired
-    private BasLiftErrService basLiftErrService;
-    @Autowired
-    private CommonService commonService;
-    @Autowired
-    private BasMapService basMapService;
-    @Autowired
-    private ShuttleDispatchUtils shuttleDispatchUtils;
-    @Autowired
-    private RedisUtil redisUtil;
-    @Autowired
-    private ConfigService configService;
-    @Autowired
-    private NavigateMapData navigateMapData;
-    @Autowired
-    private NavigateUtils navigateUtils;
-    @Autowired
-    private ShuttleOperaUtils shuttleOperaUtils;
-    @Autowired
-    private ShuttleAction shuttleAction;
-    @Autowired
-    private LiftAction liftAction;
-    @Autowired
-    private NotifyUtils notifyUtils;
-    @Autowired
-    private BasShuttleChargeService basShuttleChargeService;
-    @Autowired
-    private DeviceConfigService deviceConfigService;
-    @Autowired
-    private LiftDispatchUtils liftDispatchUtils;
-    @Autowired
-    private BasShuttleService basShuttleService;
-
-    /**
-     * 鍒濆鍖栧疄鏃跺湴鍥�
-     */
-    public synchronized void initRealtimeBasMap() {
-        try {
-
-            List<BasMap> basMaps = basMapService.selectList(new EntityWrapper<BasMap>().orderBy("lev", true));
-            for (BasMap basMap : basMaps) {
-                Integer lev = basMap.getLev();
-                Object data = redisUtil.get(RedisKeyType.MAP.key + lev);
-                if (data == null) {//redis鍦板浘鏁版嵁涓虹┖
-                    //杞藉叆鍦板浘
-                    List<List<MapNode>> lists = navigateMapData.getJsonOriginData(lev, NavigationMapType.getMapTypes(NavigationMapType.NONE), null, null);//鑾峰彇瀹屾暣鍦板浘(鍖呮嫭鍏ュ簱鍑哄簱)
-
-                    //瀛樺叆鏁版嵁搴�
-                    basMap.setData(JSON.toJSONString(lists));
-                    basMap.setCreateTime(new Date());
-                    basMap.setUpdateTime(new Date());
-                    if (!basMapService.updateById(basMap)) {
-                        log.info("鍦板浘鏁版嵁瀛樺偍澶辫触");
-                    }
-
-                    //灏嗘暟鎹簱鍦板浘鏁版嵁瀛樺叆redis
-                    redisUtil.set(RedisKeyType.MAP.key + lev, lists);
-                }
-
-            }
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-    }
-
-    /**
-     * 鍏ュ簱  ===>>  鍥涘悜绌挎杞﹀叆搴撲綔涓氫笅鍙�
-     */
-    public synchronized void shuttleInExecute() {
-        try {
-            List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>()
-                    .in("wrk_sts"
-                            , WrkStsType.INBOUND_LIFT_RUN_COMPLETE.sts
-                    )
-                    .orderBy("io_pri", false)
-                    .orderBy("appe_time", true)
-            );
-            for (WrkMast wrkMast : wrkMasts) {
-                boolean step1 = this.shuttleInExecuteStep1(wrkMast);//灏忚溅鎼叆搴撲腑
-                Thread.sleep(100);
-                if (!step1) {
-                    continue;
-                }
-            }
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-    }
-
-    /**
-     * 鍏ュ簱-灏忚溅鎼叆搴撲腑
-     * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
-     * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
-     */
-    public synchronized boolean shuttleInExecuteStep1(WrkMast wrkMast) {
-        if (wrkMast.getWrkSts() == WrkStsType.INBOUND_LIFT_RUN_COMPLETE.sts) {
-            //鑾峰彇鐩爣绔�
-            LiftStaProtocol liftSta = LiftUtils.getLiftStaByStaNo(wrkMast.getStaNo());
-            if (liftSta == null) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛岀己灏戠珯鐐逛俊鎭紝绂佹娲惧彂", wrkMast.getWrkNo());
-                return false;
-            }
-
-            if (wrkMast.getShuttleNo() == null) {//娌℃湁缁戝畾灏忚溅锛岃繘琛岃皟搴�
-                boolean result = shuttleDispatchUtils.dispatchShuttle(wrkMast.getWrkNo(), liftSta.getLocNo());//璋冨害灏忚溅鍒拌揣鐗╂墍鍦ㄨ緭閫佺珯鐐硅繘琛屽彇璐�
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛岃皟搴﹀皬杞}绯荤粺绛夊緟涓�", wrkMast.getWrkNo(), result ? "鎴愬姛" : "澶辫触");
-                return false;
-            }
-
-            //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
-            ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
-            if (shuttleThread == null) {
-                return false;
-            }
-            ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
-            if (shuttleProtocol == null) {
-                return false;
-            }
-            if (!shuttleThread.isIdle()) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅蹇欑涓�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
-                return false;
-            }
-
-            //鍒ゆ柇灏忚溅鏄惁瀛樺湪绉诲姩浠诲姟
-            WrkMast hasMoveWorking = wrkMastService.selectShuttleHasMoveWorking(wrkMast.getShuttleNo());
-            if (hasMoveWorking != null) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}鍙峰皬杞︼紝瀛樺湪绉诲姩浠诲姟锛岀姝㈡淳鍙戜换鍔�", wrkMast.getShuttleNo());
-                return false;//瀛樺湪绉诲姩浠诲姟锛岀姝㈡墽琛屽叆搴撲换鍔�
-            }
-
-            //鍒ゆ柇灏忚溅鏄惁鍒拌揪杈撻�佺珯鐐瑰簱浣�
-            if (!shuttleProtocol.getCurrentLocNo().equals(liftSta.getLocNo())) {
-                //灏忚溅涓嶅湪杈撻�佺珯鐐逛綅缃�
-                shuttleDispatchUtils.dispatchShuttle(wrkMast.getWrkNo(), liftSta.getLocNo(), wrkMast.getShuttleNo());//璋冨害灏忚溅鍒拌揣鐗╂墍鍦ㄨ緭閫佺珯鐐硅繘琛屽彇璐�
-                News.info("{}浠诲姟锛寋}灏忚溅锛屾湭鍒拌揪杈撻�佺珯鐐癸紝绯荤粺绛夊緟涓�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
-                return false;
-            }
-
-            //妫�娴嬮殰纰嶇墿杞�
-            int checkObstacle = shuttleOperaUtils.checkObstacle(wrkMast.getLocNo(), new ArrayList<Integer>() {{
-                add(shuttleProtocol.getShuttleNo());
-            }}, new ArrayList<>());
-            if (checkObstacle > 0) {
-                News.info("{}浠诲姟锛岄伩闅滆寖鍥存湁灏忚溅锛岀瓑寰呴殰纰嶅皬杞﹁皟绂讳腑", wrkMast.getWrkNo());
-                return false;
-            }
-
-            ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
-            assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙�
-            assignCommand.setTaskMode(ShuttleTaskModeType.TRANSPORT.id);//灏忚溅绉诲簱浠诲姟
-            assignCommand.setTaskNo(wrkMast.getWrkNo());//浠诲姟鍙�
-            assignCommand.setSourceLocNo(shuttleProtocol.getCurrentLocNo());//婧愬簱浣�
-            assignCommand.setLocNo(wrkMast.getLocNo());//鐩爣搴撲綅
-            assignCommand.setAuto(true);//鑷姩妯″紡
-
-            //鑾峰彇灏忚溅鍒扮洰鏍囧簱浣嶅懡浠�
-            List<ShuttleCommand> commands = shuttleOperaUtils.getStartToTargetCommands(liftSta.getLocNo(), wrkMast.getLocNo(), NavigationMapType.getDfxWithDevice(), assignCommand, shuttleThread);
-            if (commands == null) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛岃矾寰勮绠楀け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
-                return false;
-            }
-
-            List<ShuttleCommand> liftCommand = shuttleOperaUtils.getShuttleLiftCommand(assignCommand, shuttleThread, true);
-            if (liftCommand == null) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅鑾峰彇椤跺崌鍛戒护澶辫触", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
-                return false;
-            }
-
-            List<ShuttleCommand> liftCommand2 = shuttleOperaUtils.getShuttleLiftCommand(assignCommand, shuttleThread, false);
-            if (liftCommand2 == null) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅鑾峰彇涓嬮檷鍛戒护澶辫触", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
-                return false;
-            }
-
-            commands.add(0, liftCommand.get(0));
-            commands.add(liftCommand2.get(0));
-            assignCommand.setCommands(commands);
-
-            wrkMast.setWrkSts(WrkStsType.INBOUND_SHUTTLE_RUN.sts);//灏忚溅鎼繍涓�  4.鎻愬崌鏈烘惉杩愬畬鎴� ==> 5.灏忚溅鎼繍涓�
-            wrkMast.setModiTime(new Date());
-            wrkMast.setSystemMsg("");//娓呯┖娑堟伅
-            if (wrkMastService.updateById(wrkMast)) {
-                //涓嬪彂浠诲姟
-                shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand);
-                //瑙﹀彂閫氱煡
-                notifyUtils.notify(String.valueOf(SlaveType.Shuttle), shuttleProtocol.getShuttleNo(), String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.SHUTTLE_TRANSPORT);
-                return false;
-            }
-            return false;
-        }
-        return true;
-    }
-
-    /**
-     * 鍑哄簱  ===>>  鍥涘悜绌挎杞﹀嚭搴撲綔涓氫笅鍙�
-     */
-    public synchronized void shuttleOutExecute() {
-        try {
-            List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>()
-                    .in("wrk_sts"
-                            , WrkStsType.NEW_OUTBOUND.sts
-                    )
-                    .orderBy("io_pri", false)
-                    .orderBy("appe_time", true)
-            );
-            for (WrkMast wrkMast : wrkMasts) {
-                boolean step1 = this.shuttleOutExecuteStep1(wrkMast);//灏忚溅鎼嚭搴撲腑
-                Thread.sleep(100);
-                if (!step1) {
-                    continue;
-                }
-            }
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-    }
-
-    /**
-     * 鍑哄簱-灏忚溅鎼嚭搴撲腑
-     * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
-     * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
-     */
-    public synchronized boolean shuttleOutExecuteStep1(WrkMast wrkMast) {
-        //101.鐢熸垚鍑哄簱浠诲姟 => 102.灏忚溅鎼繍涓�
-        if (wrkMast.getWrkSts() == WrkStsType.NEW_OUTBOUND.sts) {
-            Integer liftNo = wrkMast.getLiftNo();
-            if (liftNo == null) {
-                //閫氳繃杈撻�佺嚎绔欏彿鑾峰彇鎻愬崌鏈哄彿
-                liftNo = LiftUtils.getConveyorBindLiftNo(wrkMast.getStaNo());
-                if (liftNo == null) {
-                    News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛屾湭鎵惧埌鍖归厤鐨勬彁鍗囨満", wrkMast.getWrkNo());
-                    return false;
-                }
-            }
-
-            LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, liftNo);
-            if (liftThread == null) {
-                return false;
-            }
-            LiftProtocol liftProtocol = liftThread.getStatus();
-            if (liftProtocol == null) {
-                return false;
-            }
-
-            //鍒ゆ柇鎻愬崌鏈烘槸鍚﹀浜庡嚭搴撴ā寮�
-            if (!liftProtocol.getIOModeType().equals(LiftIoModeType.OUT)) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛屾彁鍗囨満涓嶅浜庡嚭搴撴ā寮忥紝绂佹鍑哄簱", wrkMast.getWrkNo());
-                return false;
-            }
-
-            //鑾峰彇婧愮珯
-            LiftStaProtocol liftSta = LiftUtils.getLiftStaByLev(liftNo, Utils.getLev(wrkMast.getSourceLocNo()));
-            if (liftSta == null) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛岀己灏戠珯鐐逛俊鎭紝绂佹娲惧彂", wrkMast.getWrkNo());
-                return false;
-            }
-
-            if (liftSta.getHasCar()) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}绔欑偣瀛樺湪灏忚溅锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), liftSta.getSiteId());
-                return false;
-            }
-
-            if (liftSta.getHasTray()) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}绔欑偣鏈夋墭鐩橈紝绂佹娲惧彂", wrkMast.getWrkNo(), liftSta.getSiteId());
-                return false;
-            }
-
-            List<WrkMast> shuttleMoveList = wrkMastService.selectList(new EntityWrapper<WrkMast>()
-                    .eq("io_type", 200)
-            );
-            for (WrkMast moveWrkMast : shuttleMoveList) {
-                if(Utils.getLev(moveWrkMast.getLocNo()) != Utils.getLev(wrkMast.getSourceLocNo())) {
-                    continue;
-                }
-
-                if(Utils.getLev(moveWrkMast.getLocNo()) == Utils.getLev(moveWrkMast.getSourceLocNo())) {
-                    continue;
-                }
-
-                //瀛樺湪鎹㈠眰浠诲姟锛屽嚭搴撲换鍔℃殏鏃朵笉鎵ц
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛屽瓨鍦ㄦ崲灞備换鍔★紝鍑哄簱浠诲姟绛夊緟涓�", wrkMast.getWrkNo());
-                return false;
-            }
-
-            boolean checkLocPathIsAvailable = navigateUtils.checkLocPathIsAvailable(wrkMast.getSourceLocNo(), liftSta.getLocNo());
-            if(!checkLocPathIsAvailable) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛屾湭璁$畻鍒板彲鎵ц璺緞锛岀瓑寰呬腑", wrkMast.getWrkNo());
-                return false;
-            }
-
-            if (wrkMast.getShuttleNo() == null) {//娌℃湁缁戝畾灏忚溅锛岃繘琛岃皟搴�
-                //寮哄埗棰勭暀涓�鍙板皬杞︾粰鍏ュ簱浠诲姟
-                int lev = Utils.getLev(wrkMast.getSourceLocNo());
-                //鑾峰彇褰撳墠妤煎眰鏈夊嚑鍙板彲鐢ㄥ皬杞�
-                int shuttleCount = shuttleDispatchUtils.getShuttleEnableUseCountByLev(lev);
-                if (shuttleCount >= 2) {//鍙湁鍙敤灏忚溅鏁伴噺澶т簬2锛屾墠杩涜鍏ュ簱浠诲姟棰勭暀灏忚溅
-                    int shuttleWrkInObligateCount = 1;//棰勭暀灏忚溅鏁伴噺
-                    Config config = configService.selectOne(new EntityWrapper<Config>().eq("code", "shuttleWrkInObligateCount").eq("status", 1));
-                    if (config != null) {
-                        shuttleWrkInObligateCount = Integer.parseInt(config.getValue());
-                    }
-                    //鍙敤鍑哄簱灏忚溅鏁伴噺(缁欏叆搴撲换鍔¢鐣欎竴鍙拌溅)
-                    int useShuttleCount = shuttleCount - shuttleWrkInObligateCount;
-                    //鏌ヨ妤煎眰宸插垎閰嶈溅杈嗙殑鍑哄簱浠诲姟鏁伴噺
-                    List<WrkMast> wrkMasts = wrkMastService.selectShuttleOutWrkByLev(lev);
-                    if (wrkMasts.size() >= useShuttleCount) {
-                        News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛屽綋鍓嶆ゼ灞傚彲鐢ㄥ皬杞}鍙帮紝鍑哄簱浠诲姟宸插垎閰峽}鍙帮紝绯荤粺绛夊緟涓��", wrkMast.getWrkNo(), useShuttleCount, wrkMasts.size());
-                        return false;
-                    }
-                }
-                boolean result = shuttleDispatchUtils.dispatchShuttle(wrkMast.getWrkNo(), wrkMast.getSourceLocNo());//璋冨害灏忚溅鍒拌揣鐗╂墍鍦ㄥ簱浣嶈繘琛屽彇璐�
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛岃皟搴﹀皬杞}绯荤粺绛夊緟涓��", wrkMast.getWrkNo(), result ? "鎴愬姛" : "澶辫触");
-                return false;
-            }
-
-            //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
-            ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
-            if (shuttleThread == null) {
-                return false;
-            }
-            ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
-            if (shuttleProtocol == null) {
-                return false;
-            }
-            if (!shuttleThread.isIdle()) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛屽繖纰屼腑", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
-                return false;
-            }
-
-            //鍒ゆ柇灏忚溅鏄惁鍒拌揪璐х墿搴撲綅
-            if (!shuttleProtocol.getCurrentLocNo().equals(wrkMast.getSourceLocNo())) {
-                //妫�娴嬮殰纰嶇墿杞�
-                int checkObstacle = shuttleOperaUtils.checkObstacle(wrkMast.getSourceLocNo(), new ArrayList<Integer>() {{
-                    add(shuttleProtocol.getShuttleNo());
-                }}, new ArrayList<>());
-                if (checkObstacle > 0) {
-                    News.info("{}浠诲姟锛岄伩闅滆寖鍥存湁灏忚溅锛岀瓑寰呴殰纰嶅皬杞﹁皟绂讳腑", wrkMast.getWrkNo());
-                    return false;
-                }
-
-                //灏忚溅涓嶅湪杈撻�佺珯鐐逛綅缃�
-                shuttleDispatchUtils.dispatchShuttle(wrkMast.getWrkNo(), wrkMast.getSourceLocNo(), wrkMast.getShuttleNo());//璋冨害灏忚溅鍒拌揣鐗╂墍鍦ㄥ簱浣嶈繘琛屽彇璐�
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛屾湭鍒拌揪杈撻�佺珯鐐癸紝绯荤粺绛夊緟涓�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
-                return false;
-            }
-
-            //妫�娴嬫槸鍚﹀瓨鍦ㄧЩ鍔ㄤ换鍔�
-            WrkMast moveWorking = wrkMastService.selectShuttleHasMoveWorking(wrkMast.getShuttleNo());
-            if (moveWorking != null) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛屽皬杞﹀瓨鍦ㄧЩ鍔ㄤ换鍔�", wrkMast.getWrkNo());
-                return false;
-            }
-
-            ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
-            assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙�
-            assignCommand.setTaskMode(ShuttleTaskModeType.TRANSPORT.id);//灏忚溅绉诲簱浠诲姟
-            assignCommand.setTaskNo(wrkMast.getWrkNo());//浠诲姟鍙�
-            assignCommand.setSourceLocNo(shuttleProtocol.getCurrentLocNo());//婧愬簱浣�
-            assignCommand.setLocNo(liftSta.getLocNo());//鐩爣搴撲綅
-            assignCommand.setAuto(true);//鑷姩妯″紡
-
-            //鑾峰彇灏忚溅鍒拌緭閫佺珯鐐硅璧板懡浠�
-            List<ShuttleCommand> commands = shuttleOperaUtils.getStartToTargetCommands(wrkMast.getSourceLocNo(), liftSta.getLocNo(), NavigationMapType.getDfxWithDevice(), assignCommand, shuttleThread);
-            if (commands == null) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛岃矾寰勮绠楀け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
-                return false;
-            }
-
-            List<ShuttleCommand> liftCommand = shuttleOperaUtils.getShuttleLiftCommand(assignCommand, shuttleThread, true);
-            if (liftCommand == null) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅鑾峰彇椤跺崌鍛戒护澶辫触", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
-                return false;
-            }
-
-            List<ShuttleCommand> liftCommand2 = shuttleOperaUtils.getShuttleLiftCommand(assignCommand, shuttleThread, false);
-            if (liftCommand2 == null) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅鑾峰彇涓嬮檷鍛戒护澶辫触", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
-                return false;
-            }
-
-            commands.add(0, liftCommand.get(0));
-            commands.add(liftCommand2.get(0));
-            assignCommand.setCommands(commands);
-
-            wrkMast.setWrkSts(WrkStsType.OUTBOUND_SHUTTLE_RUN.sts);//灏忚溅鎼繍涓�  101.鐢熸垚鍑哄簱浠诲姟 ==> 102.灏忚溅鎼繍涓�
-            wrkMast.setSourceStaNo(liftSta.getSiteId());
-            wrkMast.setModiTime(new Date());
-            wrkMast.setSystemMsg("");//娓呯┖娑堟伅
-            if (wrkMastService.updateById(wrkMast)) {
-                //涓嬪彂浠诲姟
-                shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand);
-                //瑙﹀彂閫氱煡
-                notifyUtils.notify(String.valueOf(SlaveType.Shuttle), shuttleProtocol.getShuttleNo(), String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.SHUTTLE_TRANSPORT);
-                return false;
-            }
-            return false;
-        }
-        return true;
-    }
-
-    /**
-     * 鎵ц绉诲簱浠诲姟
-     */
-    public synchronized void shuttleLocMoveExecute() {
-        try {
-            //鏌ヨ绉诲簱浠诲姟
-            List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>()
-                    .in("wrk_sts", WrkStsType.NEW_LOC_MOVE.sts)
-                    .orderBy("io_pri", false)
-                    .orderBy("appe_time", true)
-            );
-            for (WrkMast wrkMast : wrkMasts) {
-                boolean stepToTarget = this.shuttleLocMoveExecuteToTarget(wrkMast);//绉诲簱浠诲姟-灏忚溅鍘荤洰鏍囩偣
-                if (!stepToTarget) {
-                    continue;
-                }
-
-            }
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-    }
-
-    /**
-     * 绉诲簱浠诲姟-灏忚溅鍘荤洰鏍囩偣
-     * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
-     * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
-     */
-    private boolean shuttleLocMoveExecuteToTarget(WrkMast wrkMast) {
-        //--------------------------------------灏忚溅绉诲姩鑷崇珯鐐�-----------------------------------------//
-        Date now = new Date();
-
-        //灏忚溅绉诲姩鑷崇珯鐐�  501.鐢熸垚绉诲簱浠诲姟 ==> 502.灏忚溅鎼繍涓�
-        if (wrkMast.getWrkSts() == WrkStsType.NEW_LOC_MOVE.sts) {
-            boolean checkLocPathIsAvailable = navigateUtils.checkLocPathIsAvailable(wrkMast.getSourceLocNo(), wrkMast.getLocNo());
-            if(!checkLocPathIsAvailable) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛屾湭璁$畻鍒板彲鎵ц璺緞锛岀瓑寰呬腑", wrkMast.getWrkNo());
-                return false;
-            }
-
-            if (wrkMast.getShuttleNo() == null) {//娌℃湁缁戝畾灏忚溅锛岃繘琛岃皟搴�
-                boolean result = shuttleDispatchUtils.dispatchShuttle(wrkMast.getWrkNo(), wrkMast.getSourceLocNo());//璋冨害灏忚溅鍒拌揣鐗╃偣杩涜鍙栬揣
-                News.info("{}浠诲姟锛岃皟搴﹀皬杞}绯荤粺绛夊緟涓�", wrkMast.getWrkNo(), result ? "鎴愬姛" : "澶辫触");
-                return false;
-            }
-
-            //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
-            ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
-            if (shuttleThread == null) {
-                return false;
-            }
-            ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
-            if (shuttleProtocol == null) {
-                return false;
-            }
-
-            if (shuttleProtocol.getCurrentLocNo() == null) {
-                return false;
-            }
-
-            //鍒ゆ柇灏忚溅鏄惁鍒拌揪璐х墿搴撲綅
-            if (!shuttleProtocol.getCurrentLocNo().equals(wrkMast.getSourceLocNo())) {
-                //浠诲姟琚伩闅滃彇娑�
-                Object cancelLock = redisUtil.get(RedisKeyType.TRAFFIC_CONTROL_SHUTTLE_OBSTACLE_CANCEL_TASK_LOCK.key + wrkMast.getShuttleNo());
-                if(cancelLock != null) {
-                    return false;
-                }
-
-                //灏忚溅鏈埌杈惧彇璐т綅缃�
-                shuttleDispatchUtils.dispatchShuttle(wrkMast.getWrkNo(), wrkMast.getSourceLocNo(), wrkMast.getShuttleNo());//璋冨害灏忚溅鍒拌揣鐗╂墍鍦ㄥ簱浣嶈繘琛屽彇璐�
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛屽皬杞︽湭鍒拌揪鍙栬揣浣嶇疆", wrkMast.getWrkNo(), wrkMast.getSourceLocNo());
-                return false;
-            }
-
-            //妫�娴嬫槸鍚﹀瓨鍦ㄧЩ鍔ㄤ换鍔�
-            WrkMast moveWorking = wrkMastService.selectShuttleHasMoveWorking(wrkMast.getShuttleNo());
-            if (moveWorking != null) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛屽皬杞﹀瓨鍦ㄧЩ鍔ㄤ换鍔�", wrkMast.getWrkNo());
-                return false;
-            }
-
-            //妫�娴嬮殰纰嶇墿杞�
-            int checkObstacle = shuttleOperaUtils.checkObstacle(wrkMast.getLocNo(), new ArrayList<Integer>() {{
-                add(shuttleProtocol.getShuttleNo());
-            }}, new ArrayList<>());
-            if (checkObstacle > 0) {
-                News.info("{}浠诲姟锛岄伩闅滆寖鍥存湁灏忚溅锛岀瓑寰呴殰纰嶅皬杞﹁皟绂讳腑", wrkMast.getWrkNo());
-                return false;
-            }
-
-            ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
-            assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙�
-            assignCommand.setTaskMode(ShuttleTaskModeType.TRANSPORT.id);//灏忚溅绉诲簱浠诲姟
-            assignCommand.setTaskNo(wrkMast.getWrkNo());//浠诲姟鍙�
-            assignCommand.setSourceLocNo(shuttleProtocol.getCurrentLocNo());//婧愬簱浣�
-            assignCommand.setLocNo(wrkMast.getLocNo());//鐩爣搴撲綅
-            assignCommand.setAuto(true);//鑷姩妯″紡
-
-            //鑾峰彇灏忚溅鍒拌緭閫佺珯鐐硅璧板懡浠�
-            List<ShuttleCommand> commands = shuttleOperaUtils.getStartToTargetCommands(wrkMast.getSourceLocNo(), wrkMast.getLocNo(), NavigationMapType.getMapTypes(NavigationMapType.DFX), assignCommand, shuttleThread);
-            if (commands == null) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛岃矾寰勮绠楀け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
-                return false;
-            }
-
-            List<ShuttleCommand> liftCommand = shuttleOperaUtils.getShuttleLiftCommand(assignCommand, shuttleThread, true);
-            if (liftCommand == null) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅鑾峰彇椤跺崌鍛戒护澶辫触", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
-                return false;
-            }
-
-            List<ShuttleCommand> liftCommand2 = shuttleOperaUtils.getShuttleLiftCommand(assignCommand, shuttleThread, false);
-            if (liftCommand2 == null) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅鑾峰彇涓嬮檷鍛戒护澶辫触", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
-                return false;
-            }
-
-            commands.add(0, liftCommand.get(0));
-            commands.add(liftCommand2.get(0));
-            assignCommand.setCommands(commands);
-
-            wrkMast.setWrkSts(WrkStsType.LOC_MOVE_SHUTTLE_RUN.sts);//灏忚溅鎼繍涓�  501.鐢熸垚绉诲簱浠诲姟 ==> 502.灏忚溅鎼繍涓�
-            wrkMast.setModiTime(now);
-            wrkMast.setSystemMsg("");//娓呯┖娑堟伅
-            if (wrkMastService.updateById(wrkMast)) {
-                //涓嬪彂浠诲姟
-                shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand);
-                //瑙﹀彂閫氱煡
-                notifyUtils.notify(String.valueOf(SlaveType.Shuttle), shuttleProtocol.getShuttleNo(), String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.SHUTTLE_MOVING);
-                return false;
-            }
-            return false;
-        }
-        return true;
-    }
-
-    /**
-     * 鎻愬崌鏈轰换鍔�
-     */
-    public synchronized void liftIoExecute() {
-        try {
-            //鎼滅储鏄惁鏈夊緟澶勭悊鐨勪换鍔�
-            List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>()
-                    .in("wrk_sts", WrkStsType.NEW_INBOUND.sts, WrkStsType.OUTBOUND_SHUTTLE_RUN_COMPLETE.sts));
-            if (wrkMasts.isEmpty()) {
-                return;
-            }
-
-            for (WrkMast wrkMast : wrkMasts) {
-                boolean stepIn = this.liftIoExecuteStepIn(wrkMast);//鎻愬崌鏈哄叆搴�
-                if (!stepIn) {
-                    continue;
-                }
-
-                boolean stepOut = this.liftIoExecuteStepOut(wrkMast);//鎻愬崌鏈哄嚭搴�
-                if (!stepOut) {
-                    continue;
-                }
-            }
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-    }
-
-    /**
-     * 鎻愬崌鏈哄叆搴�
-     * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
-     * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
-     */
-    private boolean liftIoExecuteStepIn(WrkMast wrkMast) {
-        //--------------------------------------鎻愬崌鏈哄叆搴�-----------------------------------------//
-        Date now = new Date();
-
-        //1.鐢熸垚鍏ュ簱浠诲姟 ==> 3.鎻愬崌鏈烘惉杩愪腑
-        if (wrkMast.getWrkSts() == WrkStsType.NEW_INBOUND.sts) {
-            //鑾峰彇婧愯緭閫佺珯
-            LiftStaProtocol sourceLiftSta = LiftUtils.getLiftStaByStaNo(wrkMast.getSourceStaNo());
-            if (sourceLiftSta == null) {
-                return false;//鎵句笉鍒扮珯鐐�
-            }
-
-            if (!sourceLiftSta.getHasTray()) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛屾簮绔欐棤鎵樼洏", wrkMast.getWrkNo());
-                return false;
-            }
-
-            //鑾峰彇鐩爣杈撻�佺珯
-            LiftStaProtocol liftSta = LiftUtils.getLiftStaByStaNo(wrkMast.getStaNo());
-            if (liftSta == null) {
-                return false;//鎵句笉鍒扮珯鐐�
-            }
-
-            if (liftSta.getHasTray()) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛岀洰鏍囩珯瀛樺湪鎵樼洏", wrkMast.getWrkNo());
-                return false;
-            }
-
-            //妫�娴嬫ゼ灞傛槸鍚︽湁鍙敤绌挎杞�
-            boolean checkLevHasShuttle = Utils.checkLevHasShuttle(liftSta.getLev());
-            if (!checkLevHasShuttle) {
-                if (wrkMast.getShuttleNo() != null) {
-                    return false;
-                }
-
-                String targetLocNo = navigateUtils.calcEndLocation(wrkMast.getLocNo(), liftSta.getLocNo(), NavigationMapType.getMapTypes(NavigationMapType.NORMAL), null, null, 2);
-                if (targetLocNo == null) {//鍑鸿緭閫佺嚎绔欑偣璁$畻澶辫触
-                    News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛岃皟搴﹀皬杞﹀幓鍏ュ簱灞傝繎鐐硅绠楀け璐�", wrkMast.getWrkNo());
-                    return false;
-                }
-
-                //璋冨害灏忚溅鍘诲緟鏈轰綅
-                boolean dispatchShuttle = shuttleDispatchUtils.dispatchShuttle(wrkMast.getWrkNo(), targetLocNo);
-                if (!dispatchShuttle) {
-                    News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛岃皟搴﹀皬杞﹀幓鍏ュ簱灞傚け璐�", wrkMast.getWrkNo());
-                    return false;
-                }
-                return false;
-            }
-
-            Integer liftNo = wrkMast.getLiftNo();
-            if (liftNo == null) {
-                //鏈垎閰嶆彁鍗囨満
-                Integer staNo = wrkMast.getSourceStaNo();
-                liftNo = LiftUtils.getConveyorBindLiftNo(staNo);
-                if(liftNo == null) {
-                    News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛屾湭鎵惧埌鍖归厤鐨勬彁鍗囨満", wrkMast.getWrkNo());
-                    return false;
-                }
-
-                //鐢宠鎻愬崌鏈鸿祫婧�
-                boolean applyLift = liftAction.applyLift(liftNo, wrkMast.getWrkNo());
-                if(!applyLift) {
-                    News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛岀敵璇锋彁鍗囨満璧勬簮澶辫触锛岀姝㈠叆搴�", wrkMast.getWrkNo());
-                    return false;
-                }
-                return false;
-            }
-
-            LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, liftNo);
-            if (liftThread == null) {
-                return false;
-            }
-            LiftProtocol liftProtocol = liftThread.getStatus();
-            if (liftProtocol == null) {
-                return false;
-            }
-            if (!liftThread.isIdle()) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}鍙锋彁鍗囨満锛屽繖纰屼腑", wrkMast.getWrkNo(), liftSta.getLiftNo());
-                return false;
-            }
-
-            //鍒ゆ柇鎻愬崌鏈烘槸鍚﹀浜庡叆搴撴ā寮�
-            if (!liftProtocol.getIOModeType().equals(LiftIoModeType.IN)) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛屾彁鍗囨満涓嶅浜庡叆搴撴ā寮忥紝绂佹鍏ュ簱", wrkMast.getWrkNo());
-                return false;
-            }
-
-            //璇锋眰涓婄骇绯荤粺锛屾槸鍚﹀厑璁稿叆搴�
-            boolean inMission = LiftUtils.queryInMission(wrkMast.getSourceStaNo(), liftSta.getLiftNo(), wrkMast.getWmsWrkNo());
-            if (!inMission) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛屼笂绾х郴缁熶笉鍏佽鍏ュ簱", wrkMast.getWrkNo());
-                return false;
-            }
-
-            //鑾峰彇鎻愬崌鏈哄懡浠�
-            LiftCommand liftCommand = liftThread.getPickAndPutCommand(wrkMast.getWrkNo(), wrkMast.getSourceStaNo(), liftSta.getSiteId());
-            ArrayList<LiftCommand> commands = new ArrayList<>();
-            commands.add(liftCommand);
-
-            //鎻愪氦鍒扮嚎绋嬪幓宸ヤ綔
-            LiftAssignCommand assignCommand = new LiftAssignCommand();
-            assignCommand.setCommands(commands);
-            assignCommand.setLiftNo(liftNo);
-            assignCommand.setTaskNo(wrkMast.getWrkNo());
-            assignCommand.setTaskMode(LiftTaskModeType.PICK_PUT.id);
-
-            wrkMast.setWrkSts(WrkStsType.INBOUND_LIFT_RUN.sts);//鎻愬崌鏈烘惉杩愪腑  1.鐢熸垚鍏ュ簱浠诲姟 ==> 3.鎻愬崌鏈烘惉杩愪腑
-            wrkMast.setSystemMsg("");//娓呯┖娑堟伅
-            wrkMast.setModiTime(now);
-            if (wrkMastService.updateById(wrkMast)) {
-                //涓嬪彂浠诲姟
-                liftAction.assignWork(wrkMast.getLiftNo(), assignCommand);
-            }
-            return false;
-        }
-        return true;
-    }
-
-    /**
-     * 鎻愬崌鏈哄嚭搴�
-     * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
-     * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
-     */
-    private boolean liftIoExecuteStepOut(WrkMast wrkMast) {
-        //--------------------------------------鎻愬崌鏈哄嚭搴�-----------------------------------------//
-        //103.灏忚溅鎼繍瀹屾垚 ==> 104.鎻愬崌鏈烘惉杩愪腑
-        if (wrkMast.getWrkSts() == WrkStsType.OUTBOUND_SHUTTLE_RUN_COMPLETE.sts) {
-            //鑾峰彇婧愮珯
-            LiftStaProtocol liftSta = LiftUtils.getLiftStaByStaNo(wrkMast.getSourceStaNo());
-            if (liftSta == null) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛屾壘涓嶅埌绔欑偣锛岀姝㈡淳鍙�", wrkMast.getWrkNo());
-                return false;//鎵句笉鍒扮珯鐐�
-            }
-
-            if(wrkMast.getShuttleNo() != null) {
-                ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
-                if (shuttleThread == null) {
-                    return false;
-                }
-                ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
-                if(shuttleProtocol == null) {
-                    return false;
-                }
-
-                if (shuttleProtocol.getCurrentLocNo().equals(liftSta.getLocNo())) {
-                    //灏忚溅杩樺湪杈撻�佺珯鐐�
-                    //灏忚溅鍑烘彁鍗囨満杩戠偣璺濈
-                    int shuttleOutLiftLocationDistance = 2;
-                    Config shuttleOutLiftLocationDistanceConfig = configService.selectOne(new EntityWrapper<Config>().eq("code", "shuttleOutLiftLocationDistance"));
-                    if (shuttleOutLiftLocationDistanceConfig != null) {
-                        shuttleOutLiftLocationDistance = Integer.parseInt(shuttleOutLiftLocationDistanceConfig.getValue());
-                    }
-
-                    String targetLocNo = navigateUtils.calcFirstLocation(shuttleProtocol.getCurrentLocNo(), wrkMast.getSourceLocNo(), NavigationMapType.getMapTypes(NavigationMapType.NORMAL), null, null, shuttleOutLiftLocationDistance);
-                    if (targetLocNo == null) {//鍑鸿緭閫佺嚎绔欑偣璁$畻澶辫触
-                        News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛屽嚭杈撻�佺嚎绔欑偣璁$畻澶辫触", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
-                        return false;
-                    }
-
-                    //璋冨害灏忚溅鍘诲緟鏈轰綅
-                    boolean dispatchShuttle = shuttleDispatchUtils.dispatchShuttle(wrkMast.getWrkNo(), targetLocNo, wrkMast.getShuttleNo());
-                    if (!dispatchShuttle) {
-                        News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛屽皬杞﹀湪杈撻�佺珯鐐硅皟搴﹀皬杞﹂伩璁╁け璐�", wrkMast.getWrkNo());
-                        return false;
-                    }
-                } else {
-                    //灏忚溅宸蹭笉鍦ㄨ緭閫佺珯鐐逛綅缃紝閲婃斁灏忚溅
-                    wrkMast.setShuttleNo(null);//閲婃斁灏忚溅
-                    wrkMast.setModiTime(new Date());
-                    wrkMastService.updateById(wrkMast);
-                    return false;
-                }
-                return false;
-            }
-
-            if (!liftSta.getHasTray()) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}绔欑偣鏃犳墭鐩橈紝绂佹娲惧彂", wrkMast.getWrkNo(), liftSta.getSiteId());
-                return false;
-            }
-
-            Integer liftNo = wrkMast.getLiftNo();
-            if (liftNo == null) {
-                //鏈垎閰嶆彁鍗囨満
-                Integer staNo = wrkMast.getStaNo();
-                liftNo = LiftUtils.getConveyorBindLiftNo(staNo);
-                if(liftNo == null) {
-                    News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛屾湭鎵惧埌鍖归厤鐨勬彁鍗囨満", wrkMast.getWrkNo());
-                    return false;
-                }
-                //鐢宠鎻愬崌鏈鸿祫婧�
-                boolean applyLift = liftAction.applyLift(liftSta.getLiftNo(), wrkMast.getWrkNo());
-                if(!applyLift) {
-                    News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛岀敵璇锋彁鍗囨満璧勬簮澶辫触锛岀姝㈡墽琛屽嚭搴�", wrkMast.getWrkNo());
-                    return false;
-                }
-                return false;
-            }
-
-            LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, liftNo);
-            if (liftThread == null) {
-                return false;
-            }
-            LiftProtocol liftProtocol = liftThread.getStatus();
-            if (liftProtocol == null) {
-                return false;
-            }
-            if (!liftThread.isIdle()) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}鍙锋彁鍗囨満锛屽繖纰屼腑", wrkMast.getWrkNo(), liftSta.getLiftNo());
-                return false;
-            }
-
-            //鍒ゆ柇鎻愬崌鏈烘槸鍚﹀浜庡嚭搴撴ā寮�
-            if (!liftProtocol.getIOModeType().equals(LiftIoModeType.OUT)) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛屾彁鍗囨満涓嶅浜庡嚭搴撴ā寮忥紝绂佹鍑哄簱", wrkMast.getWrkNo());
-                return false;
-            }
-
-            //璇锋眰涓婄骇绯荤粺锛屾槸鍚﹀厑璁稿嚭搴�
-            boolean outMission = LiftUtils.queryOutMission(wrkMast.getStaNo());
-            if (!outMission) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛屼笂绾х郴缁熶笉鍏佽鍑哄簱", wrkMast.getWrkNo());
-                return false;
-            }
-
-            //鑾峰彇鎻愬崌鏈哄懡浠�
-            LiftCommand liftCommand = liftThread.getPickAndPutCommand(wrkMast.getWrkNo(), liftSta.getSiteId(), wrkMast.getStaNo());
-            ArrayList<LiftCommand> commands = new ArrayList<>();
-            commands.add(liftCommand);
-
-            //鎻愪氦鍒扮嚎绋嬪幓宸ヤ綔
-            LiftAssignCommand assignCommand = new LiftAssignCommand();
-            assignCommand.setCommands(commands);
-            assignCommand.setLiftNo(liftNo);
-            assignCommand.setTaskNo(wrkMast.getWrkNo());
-            assignCommand.setTaskMode(LiftTaskModeType.PICK_PUT.id);
-
-            wrkMast.setWrkSts(WrkStsType.OUTBOUND_LIFT_RUN.sts);//鎻愬崌鏈烘惉杩愪腑  103.鐢熸垚鍏ュ簱浠诲姟 ==> 104.鎻愬崌鏈烘惉杩愪腑
-            wrkMast.setShuttleNo(null);//閲婃斁灏忚溅
-            wrkMast.setSystemMsg("");//娓呯┖娑堟伅
-            wrkMast.setModiTime(new Date());
-            if (wrkMastService.updateById(wrkMast)) {
-                //涓嬪彂浠诲姟
-                liftAction.assignWork(wrkMast.getLiftNo(), assignCommand);
-            }
-            return false;
-        }
-        return true;
-    }
-
-    /**
-     * 鎻愬崌鏈轰换鍔″畬鎴�
-     */
-    public synchronized void liftFinished() {
-        try {
-            List<DeviceConfig> liftList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>()
-                    .eq("device_type", String.valueOf(SlaveType.Lift)));
-            for (DeviceConfig device : liftList) {
-                //鑾峰彇鎻愬崌鏈轰俊鎭�
-                LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, device.getDeviceNo());
-                if(liftThread == null) {
-                    continue;
-                }
-                LiftProtocol liftProtocol = liftThread.getStatus();
-                if (liftProtocol == null) {
-                    continue;
-                }
-
-                if (!liftThread.isDeviceIdle()) {
-                    continue;
-                }
-
-                //鎻愬崌鏈轰负绛夊緟纭涓旂┖闂�
-                if (liftProtocol.getProtocolStatus() == LiftProtocolStatusType.WAITING.id
-                        && liftProtocol.getTaskNo() != 0
-                ) {
-                    //灏嗕换鍔℃。鏍囪涓哄畬鎴�
-                    WrkMast wrkMast = wrkMastService.selectByWorkNo(liftProtocol.getTaskNo());
-                    if (wrkMast != null) {
-                        if (wrkMast.getWrkSts() == WrkStsType.INBOUND_LIFT_RUN.sts) {
-                            //3.鎻愬崌鏈烘惉杩愪腑 ==> 4.鎻愬崌鏈烘惉杩愬畬鎴�
-                            wrkMast.setWrkSts(WrkStsType.INBOUND_LIFT_RUN_COMPLETE.sts);
-                            wrkMast.setLiftNo(null);//閲婃斁鎻愬崌鏈�
-                        }else if (wrkMast.getWrkSts() == WrkStsType.MOVE_NEARBY_COMPLETE.sts) {
-                            //303.灏忚溅绉诲姩鑷宠繎鐐瑰畬鎴� -- 璋冨害鎻愬崌鏈哄埌灏忚溅灞�
-                        } else if (wrkMast.getWrkSts() == WrkStsType.OUTBOUND_LIFT_RUN.sts) {
-                            //304.鎻愬崌鏈烘惉杩愪腑 ==> 109.鍑哄簱瀹屾垚
-                            wrkMast.setWrkSts(WrkStsType.COMPLETE_OUTBOUND.sts);
-                            wrkMast.setLiftNo(null);//閲婃斁鎻愬崌鏈�
-                        } else if (wrkMast.getWrkSts() == WrkStsType.MOVE_LIFT_RUN.sts) {
-                            //306.鎻愬崌鏈烘惉杩愪腑 ==> 307.鎻愬崌鏈烘惉杩愬畬鎴�
-                            wrkMast.setWrkSts(WrkStsType.MOVE_LIFT_RUN_COMPLETE.sts);
-                        } else {
-                            News.error("鎻愬崌鏈虹‘璁ゅけ璐ワ紝鎻愬崌鏈哄彿={}锛屽伐浣滃彿={}", liftProtocol.getLiftNo(), liftProtocol.getTaskNo());
-                            return;
-                        }
-
-                        wrkMast.setModiTime(new Date());
-                        if (wrkMastService.updateById(wrkMast)) {
-                            liftThread.reset();
-                            News.info("鎻愬崌鏈哄凡纭涓斾换鍔″畬鎴愮姸鎬併�傛彁鍗囨満鍙�={}", liftProtocol.getLiftNo());
-                        } else {
-                            News.error("鎻愬崌鏈哄凡纭涓斾换鍔″畬鎴愮姸鎬�,澶嶄綅澶辫触锛屼絾鏈壘鍒板伐浣滄。銆傛彁鍗囨満鍙�={}锛屽伐浣滃彿={}", liftProtocol.getLiftNo(), liftProtocol.getTaskNo());
-                        }
-                    }else {
-                        boolean checkPreviewDispatchLift = commonService.checkWorkNoContainMk(liftProtocol.getTaskNo(), WrkIoType.PREVIEW_LIFT_MOVE.id);
-                        if (checkPreviewDispatchLift) {
-                            //灞炰簬鎻愬崌鏈洪璋冨害绉诲姩浠诲姟
-                            //鏃犲伐浣滄。鏀拺锛岀洿鎺ョ‘璁ゅ畬鎴�
-                            liftThread.setSyncTaskNo(0);
-                            liftThread.reset();
-                            News.info("宸茬‘璁ゆ彁鍗囨満棰勮皟搴︾Щ鍔ㄤ换鍔°�傛彁鍗囨満鍙�={}", liftProtocol.getLiftNo());
-                        }
-                    }
-                }
-            }
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-    }
-
-    /**
-     * 寮傚父淇℃伅璁板綍
-     */
-    public void recErr() {
-        try {
-            this.recShuttleErr();
-            this.recLiftErr();
-        } catch (Exception e) {
-            News.error("recErr fail", e);
-        }
-    }
-
-    /**
-     * 鍥涘悜绌挎杞﹀紓甯镐俊鎭褰�
-     */
-    private void recShuttleErr() {
-        Date now = new Date();
-        List<DeviceConfig> shuttleList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>()
-                .eq("device_type", String.valueOf(SlaveType.Shuttle)));
-        for (DeviceConfig device : shuttleList) {
-            // 鑾峰彇鍥涘悜绌挎杞︿俊鎭�
-            ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, device.getDeviceNo());
-            if (shuttleThread == null) {
-                continue;
-            }
-            ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
-            if (shuttleProtocol == null) {
-                continue;
-            }
-
-            if (shuttleProtocol.getTaskNo() != 0) {
-                //鏈変换鍔�
-                BasShuttleErrLog latest = basShuttleErrLogService.findLatestByTaskNo(device.getDeviceNo(), shuttleProtocol.getTaskNo());
-                // 鏈夊紓甯�
-                if (latest == null) {
-                    if (shuttleProtocol.getErrorCode() != null && Integer.parseInt(shuttleProtocol.getErrorCode()) != 0) {
-                        WrkMast wrkMast = wrkMastService.selectByWorkNo(shuttleProtocol.getTaskNo());
-                        if (wrkMast == null) {
-                            continue;
-                        }
-                        int errorCode = Integer.parseInt(shuttleProtocol.getErrorCode());
-                        BasShuttleErr basShuttleErr = basShuttleErrService.queryByCode(errorCode);
-                        String errName = basShuttleErr==null? "鏈煡寮傚父":basShuttleErr.getErrName();
-                        BasShuttleErrLog basShuttleErrLog = new BasShuttleErrLog(
-                                null,    // 缂栧彿
-                                wrkMast.getWrkNo(),    // 宸ヤ綔鍙�
-                                now,    // 鍙戠敓鏃堕棿
-                                null,    // 缁撴潫鏃堕棿
-                                wrkMast.getWrkSts(),    // 宸ヤ綔鐘舵��
-                                wrkMast.getIoType(),    // 鍏ュ嚭搴撶被鍨�
-                                device.getDeviceNo(),    // 鍥涘悜绌挎杞�
-                                null,    // plc
-                                wrkMast.getLocNo(),    // 鐩爣搴撲綅
-                                wrkMast.getStaNo(),    // 鐩爣绔�
-                                wrkMast.getSourceStaNo(),    // 婧愮珯
-                                wrkMast.getSourceLocNo(),    // 婧愬簱浣�
-                                wrkMast.getBarcode(),    // 鏉$爜
-                                errorCode,    // 寮傚父鐮�
-                                errName,    // 寮傚父
-                                1,    // 寮傚父鎯呭喌
-                                now,    // 娣诲姞鏃堕棿
-                                null,    // 娣诲姞浜哄憳
-                                now,    // 淇敼鏃堕棿
-                                null,    // 淇敼浜哄憳
-                                "浠诲姟涓紓甯�",    // 澶囨敞
-                                JSON.toJSONString(shuttleProtocol)    // 绯荤粺鐘舵�佹暟鎹�
-                        );
-                        if (!basShuttleErrLogService.insert(basShuttleErrLog)) {
-                            News.error("鍥涘悜绌挎杞lc寮傚父璁板綍澶辫触 ===>> [id:{}] [error:{}]", device.getDeviceNo(), errName);
-                        }
-                    }
-                } else {
-                    // 寮傚父淇
-                    if (shuttleProtocol.getErrorCode() == null || Integer.parseInt(shuttleProtocol.getErrorCode()) == 0) {
-                        latest.setEndTime(now);
-                        latest.setUpdateTime(now);
-                        latest.setStatus(2);
-                        if (!basShuttleErrLogService.updateById(latest)) {
-                            News.error("鍥涘悜绌挎杞lc寮傚父璁板綍淇澶辫触 ===>> [id:{}] [errLogId:{}]", device.getDeviceNo(), latest.getId());
-                        }
-                    }
-                }
-            }
-        }
-    }
-
-    /**
-     * 鎻愬崌鏈哄紓甯镐俊鎭褰�
-     */
-    private void recLiftErr() {
-        Date now = new Date();
-        List<DeviceConfig> liftList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>()
-                .eq("device_type", String.valueOf(SlaveType.Lift)));
-        for (DeviceConfig device : liftList) {
-            // 鑾峰彇鎻愬崌鏈轰俊鎭�
-            LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, device.getDeviceNo());
-            if (liftThread == null) {
-                continue;
-            }
-            LiftProtocol liftProtocol = liftThread.getStatus();
-            if (liftProtocol == null) {
-                continue;
-            }
-
-            if (liftProtocol.getTaskNo() != 0) {
-                //鏈変换鍔�
-                BasLiftErrLog latest = basLiftErrLogService.findLatestByTaskNo(device.getDeviceNo(), liftProtocol.getTaskNo());
-                // 鏈夊紓甯�
-                if (latest == null) {
-                    if (liftProtocol.getErrorCode() != null && liftProtocol.getErrorCode() != 0) {
-                        WrkMast wrkMast = wrkMastService.selectByWorkNo(liftProtocol.getTaskNo());
-                        if (wrkMast == null) {
-                            continue;
-                        }
-
-                        BasLiftErr basLiftErr = basLiftErrService.queryByCode(liftProtocol.getErrorCode());
-                        String errName = basLiftErr==null? "鏈煡寮傚父":basLiftErr.getErrName();
-
-                        BasLiftErrLog basLiftErrLog = new BasLiftErrLog(
-                                null,    // 缂栧彿
-                                wrkMast.getWrkNo(),    // 宸ヤ綔鍙�
-                                now,    // 鍙戠敓鏃堕棿
-                                null,    // 缁撴潫鏃堕棿
-                                wrkMast.getWrkSts(),    // 宸ヤ綔鐘舵��
-                                wrkMast.getIoType(),    // 鍏ュ嚭搴撶被鍨�
-                                device.getDeviceNo(),    // 鎻愬崌鏈�
-                                null,    // plc
-                                wrkMast.getLocNo(),    // 鐩爣搴撲綅
-                                wrkMast.getStaNo(),    // 鐩爣绔�
-                                wrkMast.getSourceStaNo(),    // 婧愮珯
-                                wrkMast.getSourceLocNo(),    // 婧愬簱浣�
-                                wrkMast.getBarcode(),    // 鏉$爜
-                                null,    // 寮傚父鐮�
-                                errName,    // 寮傚父
-                                1,    // 寮傚父鎯呭喌
-                                now,    // 娣诲姞鏃堕棿
-                                null,    // 娣诲姞浜哄憳
-                                now,    // 淇敼鏃堕棿
-                                null,    // 淇敼浜哄憳
-                                "浠诲姟涓紓甯�",    // 澶囨敞
-                                JSON.toJSONString(liftProtocol)    // 绯荤粺鐘舵�佹暟鎹�
-                        );
-                        if (!basLiftErrLogService.insert(basLiftErrLog)) {
-                            News.error("鎻愬崌鏈簆lc寮傚父璁板綍澶辫触 ===>> [id:{}] [error:{}]", device.getDeviceNo(), errName);
-                        }
-                    }
-                } else {
-                    // 寮傚父淇
-                    if (liftProtocol.getErrorCode() == null || liftProtocol.getErrorCode() == 0) {
-                        latest.setEndTime(now);
-                        latest.setUpdateTime(now);
-                        latest.setStatus(2);
-                        if (!basLiftErrLogService.updateById(latest)) {
-                            News.error("鎻愬崌鏈簆lc寮傚父璁板綍淇澶辫触 ===>> [id:{}] [errLogId:{}]", device.getDeviceNo(), latest.getId());
-                        }
-                    }
-                }
-            }
-        }
-    }
-
-    /**
-     * 鍥涘悜绌挎杞︾數閲忔娴� ===>> 鍙戣捣鍏呯數
-     */
-    public synchronized void loopShuttleCharge() {
-        try {
-
-            List<BasShuttleCharge> charges = basShuttleChargeService.selectList(new EntityWrapper<BasShuttleCharge>().orderBy("charge_id", true));
-            if (charges.isEmpty()) {
-                return;//鏃犲厖鐢垫々
-            }
-
-            List<DeviceConfig> shuttleList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>()
-                    .eq("device_type", String.valueOf(SlaveType.Shuttle)));
-            for (DeviceConfig device : shuttleList) {
-                //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
-                ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, device.getDeviceNo());
-                ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
-                if (shuttleProtocol == null) {
-                    continue;
-                }
-
-                //鍒ゆ柇褰撳墠灏忚溅鏄惁婊¤冻闇�瑕佸厖鐢佃姹�
-                if (shuttleThread.isRequireCharge().equals(ShuttleRequireChargeType.NONE)) {
-                    continue;//鏃犻渶鍏呯數
-                }
-
-                boolean forceCharge = true;
-                if (shuttleThread.isRequireCharge().equals(ShuttleRequireChargeType.SUGGEST_CHARGE)) {
-                    BasShuttle basShuttle = basShuttleService.selectOne(new EntityWrapper<BasShuttle>().eq("shuttle_no", device.getDeviceNo()));
-                    if (basShuttle != null) {
-                        Integer suggestChargeLine = basShuttle.getSuggestChargeLine();
-                        boolean chargeSuggestResult = Integer.parseInt(shuttleProtocol.getBatteryPower()) < suggestChargeLine;
-                        if (chargeSuggestResult) {
-                            //妫�娴嬬郴缁熸槸鍚︽湁浠诲姟
-                            List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().in("io_type", 1, 101, 201));
-                            if (wrkMasts.isEmpty()) {
-                                forceCharge = false;
-                            }else {
-                                continue;
-                            }
-                        }
-                    }
-                }
-
-                WrkMast wrkMast1 = wrkMastService.selectShuttleWorking(shuttleProtocol.getShuttleNo());
-                if (wrkMast1 != null) {
-                    continue;
-                }
-
-                WrkMast wrkMast2 = wrkMastService.selectShuttleHasMoveWorking(shuttleProtocol.getShuttleNo());
-                if (wrkMast2 != null) {
-                    continue;
-                }
-
-                WrkMast wrkMast = wrkMastService.selectChargeWorking(shuttleProtocol.getShuttleNo());
-                if (wrkMast != null) {//宸叉湁鍏呯數浠诲姟
-                    continue;
-                }
-
-                //灏忚溅鎵�鍦ㄦゼ灞�
-                int lev = Utils.getLev(shuttleProtocol.getCurrentLocNo());
-                BasShuttleCharge shuttleCharge = null;
-
-                //鎼滅储灏忚溅鎵�鍦ㄦゼ灞傛湁娌℃湁鍏呯數妗�
-                for (BasShuttleCharge charge : charges) {
-                    if (lev != Utils.getLev(charge.getLocNo())) {
-                        continue;//灏忚溅鍜屽厖鐢垫々涓嶅湪鍚屼竴灞�
-                    }
-
-                    if (charge.getStatus() == 0) {
-                        continue;//鍏呯數妗╄绂佺敤
-                    }
-
-                    //灏忚溅鍜屽厖鐢垫々鍦ㄥ悓涓�灞�
-                    if (wrkMastService.selectChargeWorkingByChargeSta(charge.getChargeId()) == null) {
-                        shuttleCharge = charge;
-                        break;
-                    }
-                }
-
-                if (shuttleCharge == null) {
-                    //鍚屾ゼ灞傛病鏈夋壘鍒板厖鐢垫々锛屾壘鍙敤鍏呯數妗�
-                    //灏忚溅鍚屾ゼ灞傛病鏈夊厖鐢垫々锛屽彧瑕佸厖鐢垫々鍙敤灏辩敓鎴愬厖鐢典换鍔�
-                    for (BasShuttleCharge charge : charges) {
-                        if (wrkMastService.selectChargeWorkingByChargeSta(charge.getChargeId()) == null) {
-                            //鍒ゆ柇褰撳墠鍏呯數妗╂槸鍚︽湁灏忚溅锛屽鏈夊皬杞︼紝涓嶅垎閰嶈鍏呯數妗�
-                            ArrayList<String> locs = new ArrayList<>();
-                            locs.add(charge.getLocNo());
-                            Integer checkHasShuttle = Utils.checkGroupLocHasShuttle(locs);
-                            if(checkHasShuttle != null) {
-                                //褰撳墠鍏呯數妗╂湁绌挎杞︼紝涓嶅垎閰嶈鍏呯數妗�
-                                continue;
-                            }
-
-                            if (charge.getStatus() == 0) {
-                                continue;//鍏呯數妗╄绂佺敤
-                            }
-
-                            shuttleCharge = charge;
-                            break;
-                        }
-                    }
-                }
-
-                if (shuttleCharge == null) {
-                    continue;
-                }
-
-                String chargeLocNo = shuttleCharge.getLocNo();
-                wrkMast = new WrkMast();
-                wrkMast.setMk(String.valueOf(shuttleCharge.getChargeId()));
-                wrkMast.setWrkNo(commonService.getWorkNo(WrkIoType.SHUTTLE_CHARGE.id));
-                wrkMast.setWrkSts(WrkStsType.NEW_CHARGE.sts);
-                wrkMast.setIoType(WrkIoType.SHUTTLE_CHARGE.id);//300.鍏呯數
-                wrkMast.setIoPri((double) 999);
-                wrkMast.setLocNo(chargeLocNo);
-                wrkMast.setShuttleNo(device.getDeviceNo());
-                wrkMast.setMemo(forceCharge ? "forceCharge" : "suggestCharge");
-                wrkMast.setAppeTime(new Date());
-                if (!wrkMastService.insert(wrkMast)) {
-                    News.error("淇濆瓨{}鍙峰洓鍚戠┛姊溅鍏呯數浠诲姟澶辫触!!!", device.getDeviceNo());
-                    continue;
-                }
-
-                News.info("淇濆瓨{}鍙峰洓鍚戠┛姊溅鍏呯數浠诲姟鎴愬姛!!!", device.getDeviceNo());
-            }
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-    }
-
-    /**
-     * 鎵ц鍥涘悜绌挎杞﹀厖鐢典换鍔�
-     */
-    public synchronized void executeShuttleCharge() {
-        try {
-            //鏌ヨ灏忚溅鍏呯數浠诲姟
-            List<DeviceConfig> shuttleList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>()
-                    .eq("device_type", String.valueOf(SlaveType.Shuttle)));
-            for (DeviceConfig device : shuttleList) {
-                WrkMast wrkMast = wrkMastService.selectChargeWorking(device.getDeviceNo());
-                if(wrkMast == null) {
-                    continue;
-                }
-
-                boolean result1 = this.executeShuttleChargeStepGoToChargeSta(wrkMast);//灏忚溅绛夊緟鍏呯數妗�
-                if (!result1) {
-                    continue;
-                }
-
-                boolean result2 = this.executeShuttleChargeStepArrivalChargeSta(wrkMast);//灏忚溅鍒拌揪鍏呯數妗�
-                if (!result2) {
-                    continue;
-                }
-
-                boolean result3 = this.executeShuttleChargeStepStartCharge(wrkMast);//灏忚溅寮�濮嬪厖鐢�
-                if (!result3) {
-                    continue;
-                }
-
-                boolean result4 = this.executeShuttleChargeStepStopCharge(wrkMast);//灏忚溅鍋滄鍏呯數
-                if (!result4) {
-                    continue;
-                }
-
-                boolean result5 = this.executeShuttleChargeStepLeaveCharge(wrkMast);//灏忚溅绂诲紑鍏呯數妗�
-                if (!result5) {
-                    continue;
-                }
-            }
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-    }
-
-    /**
-     * 灏忚溅鍓嶅線鍏呯數妗�
-     */
-    private synchronized boolean executeShuttleChargeStepGoToChargeSta(WrkMast wrkMast) {
-        if (wrkMast.getWrkSts() == WrkStsType.NEW_CHARGE.sts) {
-            ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
-            if (shuttleThread == null) {
-                return false;
-            }
-            ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
-            if (shuttleProtocol == null) {
-                return false;
-            }
-
-            if (wrkMast.getLocNo().equals(shuttleProtocol.getCurrentLocNo())) {
-                //灏忚溅鍦ㄥ厖鐢垫々浣嶇疆
-                wrkMast.setWrkSts(WrkStsType.CHARGE_SHUTTLE_RUN_COMPLETE.sts);
-                wrkMast.setModiTime(new Date());
-                wrkMastService.updateById(wrkMast);
-                return false;
-            }
-
-            //璋冨害灏忚溅鍘诲厖鐢垫々
-            boolean dispatched = shuttleDispatchUtils.dispatchShuttle(wrkMast.getWrkNo(), wrkMast.getLocNo(), wrkMast.getShuttleNo());
-            if (!dispatched) {
-                return false;
-            }
-
-            wrkMast.setWrkSts(WrkStsType.CHARGE_SHUTTLE_RUN.sts);//灏忚溅鍓嶅線鍏呯數妗�
-            wrkMast.setModiTime(new Date());
-            wrkMastService.updateById(wrkMast);
-            return false;
-        }
-        return true;
-    }
-
-    /**
-     * 灏忚溅鍒拌揪鍏呯數妗�
-     */
-    private synchronized boolean executeShuttleChargeStepArrivalChargeSta(WrkMast wrkMast) {
-        if (wrkMast.getWrkSts() == WrkStsType.CHARGE_SHUTTLE_RUN.sts) {
-            ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
-            if (shuttleThread == null) {
-                return false;
-            }
-            ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
-            if (shuttleProtocol == null) {
-                return false;
-            }
-
-            //鍒ゆ柇鏄惁瀛樺湪鏈畬鎴愮殑绉诲姩浠诲姟
-            WrkMast moveWrk = wrkMastService.selectShuttleHasMoveWorking(wrkMast.getShuttleNo());
-            if(moveWrk != null) {
-                return false;
-            }
-
-            if (!wrkMast.getLocNo().equals(shuttleProtocol.getCurrentLocNo())) {
-                return false;
-            }
-
-            //灏忚溅鍦ㄥ厖鐢垫々浣嶇疆
-            wrkMast.setWrkSts(WrkStsType.CHARGE_SHUTTLE_RUN_COMPLETE.sts);//灏忚溅鍒拌揪鍏呯數妗�
-            wrkMast.setModiTime(new Date());
-            wrkMastService.updateById(wrkMast);
-
-            return false;
-        }
-        return true;
-    }
-
-    //灏忚溅寮�濮嬪厖鐢�
-    private synchronized boolean executeShuttleChargeStepStartCharge(WrkMast wrkMast) {
-        if (wrkMast.getWrkSts() == WrkStsType.CHARGE_SHUTTLE_RUN_COMPLETE.sts) {
-            ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
-            if (shuttleThread == null) {
-                return false;
-            }
-            ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
-            if (shuttleProtocol == null) {
-                return false;
-            }
-
-            //灏忚溅宸茬粡鍦ㄥ厖鐢垫々浣嶇疆锛屼笅鍙戝厖鐢靛懡浠�
-            ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
-            assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo());//鍥涘悜绌挎杞﹀彿
-            assignCommand.setTaskNo(wrkMast.getWrkNo());//浠诲姟鍙�
-            assignCommand.setTaskMode(ShuttleTaskModeType.CHARGE_ON.id);//鍏呯數寮�
-            assignCommand.setSourceLocNo(shuttleProtocol.getCurrentLocNo());//婧愬簱浣�(灏忚溅褰撳墠浣嶇疆)
-
-            List<ShuttleCommand> commands = shuttleOperaUtils.getShuttleChargeCommand(assignCommand, shuttleThread, true);
-            assignCommand.setCommands(commands);//杩愯鍛戒护
-
-            wrkMast.setWrkSts(WrkStsType.CHARGE_SHUTTLE_START_CHARGING.sts);
-            wrkMast.setModiTime(new Date());
-            if (!wrkMastService.updateById(wrkMast)) {
-                return false;
-            }
-
-            //涓嬪彂浠诲姟
-            shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand);
-
-            notifyUtils.notify(String.valueOf(SlaveType.Shuttle), shuttleProtocol.getShuttleNo(), String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.SHUTTLE_POWER_START);//瑙﹀彂閫氱煡
-            return false;
-        }
-        return true;
-    }
-
-    //灏忚溅鍋滄鍏呯數
-    private synchronized boolean executeShuttleChargeStepStopCharge(WrkMast wrkMast) {
-        if (wrkMast.getWrkSts() == WrkStsType.CHARGE_SHUTTLE_CHARGING.sts) {
-            ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
-            if (shuttleThread == null) {
-                return false;
-            }
-            ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
-            if (shuttleProtocol == null) {
-                return false;
-            }
-
-            boolean stopCharge = false;
-            if (wrkMast.getMemo().equals("suggestChargeTaskStop")) {
-                stopCharge = true;
-            }else {
-                if (shuttleThread.isChargingCompleted()) {
-                    stopCharge = true;
-                }
-            }
-
-            if (!stopCharge) {
-                return false;
-            }
-
-            Object limitObj = redisUtil.get(RedisKeyType.TASK_RUN_LIMIT.key + wrkMast.getWrkNo());
-            if (limitObj != null) {
-                return false;
-            }
-
-            //灏忚溅宸茬粡鍦ㄥ厖鐢垫々浣嶇疆锛屼笅鍙戝仠姝㈠厖鐢靛懡浠�
-            ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
-            assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo());//鍥涘悜绌挎杞﹀彿
-            assignCommand.setTaskNo(wrkMast.getWrkNo());//浠诲姟鍙�
-            assignCommand.setTaskMode(ShuttleTaskModeType.CHARGE_OFF.id);//鍏呯數鍏�
-            assignCommand.setSourceLocNo(shuttleProtocol.getCurrentLocNo());//婧愬簱浣�(灏忚溅褰撳墠浣嶇疆)
-
-            List<ShuttleCommand> commands = shuttleOperaUtils.getShuttleChargeCommand(assignCommand, shuttleThread, false);
-            assignCommand.setCommands(commands);//杩愯鍛戒护
-
-            //涓嬪彂浠诲姟
-            shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand);
-            redisUtil.set(RedisKeyType.TASK_RUN_LIMIT.key + wrkMast.getWrkNo(), "limit", 10);
-            return false;
-        }
-        return true;
-    }
-
-    //灏忚溅绂诲紑鍏呯數妗�
-    private synchronized boolean executeShuttleChargeStepLeaveCharge(WrkMast wrkMast) {
-        if (wrkMast.getWrkSts() == WrkStsType.CHARGE_SHUTTLE_CHARGING_COMPLETE.sts) {
-            ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
-            if (shuttleThread == null) {
-                return false;
-            }
-            ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
-            if (shuttleProtocol == null) {
-                return false;
-            }
-
-            BasShuttleCharge basShuttleCharge = basShuttleChargeService.selectOne(new EntityWrapper<BasShuttleCharge>().eq("charge_id", wrkMast.getMk()));
-            if(basShuttleCharge == null) {
-                return false;
-            }
-
-            //妫�娴嬮殰纰嶇墿杞�
-            int checkObstacle = shuttleOperaUtils.checkObstacle(basShuttleCharge.getWaitLocNo(), new ArrayList<Integer>() {{
-                add(shuttleProtocol.getShuttleNo());
-            }}, new ArrayList<>());
-            if (checkObstacle > 0) {
-                News.info("{}浠诲姟锛岄伩闅滆寖鍥存湁灏忚溅锛岀瓑寰呴殰纰嶅皬杞﹁皟绂讳腑", wrkMast.getWrkNo());
-                return false;
-            }
-
-            //璋冨害灏忚溅鍘诲緟鏈轰綅
-            boolean dispatched = shuttleDispatchUtils.dispatchShuttle(wrkMast.getWrkNo(), basShuttleCharge.getWaitLocNo(), wrkMast.getShuttleNo());
-            if (!dispatched) {
-                return false;
-            }
-
-            wrkMast.setWrkSts(WrkStsType.COMPLETE_CHARGE.sts);
-            wrkMast.setModiTime(new Date());
-            if (wrkMastService.updateById(wrkMast)) {
-                return false;
-            }
-            return false;
-        }
-        return true;
-    }
-
-    /**
-     * 鎵ц灏忚溅绉诲簱浠诲姟
-     */
-    public synchronized void shuttleMoveExecute() {
-        try {
-            //鏌ヨ灏忚溅绉诲簱浠诲姟
-            List<WrkMast> wrkMasts = wrkMastService.selectShuttleMoveWrk();
-            for (WrkMast wrkMast : wrkMasts) {
-                boolean stepMoveNearby = this.shuttleMoveExecuteStepMoveNearby(wrkMast);//灏忚溅绉诲姩鍒拌繎鐐�
-                if (!stepMoveNearby) {
-                    continue;
-                }
-
-                boolean stepMoveInLift = this.shuttleMoveExecuteStepMoveInLift(wrkMast);//灏忚溅杩佸叆鎻愬崌鏈轰腑
-                if (!stepMoveInLift) {
-                    continue;
-                }
-
-                boolean stepLiftMove = this.shuttleMoveExecuteStepLiftMove(wrkMast);//鎻愬崌鏈烘惉杩愪腑
-                if (!stepLiftMove) {
-                    continue;
-                }
-
-                boolean updateShuttleLocation = this.shuttleMoveExecuteStepUpdateShuttleLocation(wrkMast);//鎻愬崌鏈烘惉杩愬畬鎴愭洿鏂板皬杞﹀潗鏍�
-                if (!updateShuttleLocation) {
-                    continue;
-                }
-
-                boolean stepMoveLoc = this.shuttleMoveExecuteStepMoveLoc(wrkMast);//灏忚溅绉诲姩鍒扮洰鏍囧簱浣嶄腑
-                if (!stepMoveLoc) {
-                    continue;
-                }
-
-            }
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-    }
-
-    /**
-     * 灏忚溅杩佺Щ-灏忚溅绉诲姩鍒拌繎鐐逛腑
-     * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
-     * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
-     */
-    private boolean shuttleMoveExecuteStepMoveNearby(WrkMast wrkMast) {
-        //--------------------------------------灏忚溅绉诲姩鍒拌繎鐐逛腑-----------------------------------------//
-        Date now = new Date();
-
-        //灏忚溅绉诲姩鍒拌繎鐐�  301.鐢熸垚灏忚溅绉诲簱浠诲姟 ==> 302.灏忚溅绉诲姩鑷崇珯鐐逛腑
-        if (wrkMast.getWrkSts() == WrkStsType.NEW_MOVE.sts) {
-            //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
-            ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
-            if (shuttleThread == null) {
-                return false;
-            }
-            ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
-            if (shuttleProtocol == null) {
-                return false;
-            }
-
-            //灏忚溅澶勪簬绌洪棽鐘舵��
-            if (!shuttleThread.isIdle()) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛屽皬杞﹀繖纰屼腑", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
-                return false;
-            }
-
-            if (Utils.getLev(wrkMast.getLocNo()) == Utils.getLev(shuttleProtocol.getCurrentLocNo())) {
-                //鐩爣搴撲綅鍜屽皬杞﹀簱浣嶅浜庡悓涓�妤煎眰锛屼笉闇�瑕侀�氳繃鎻愬崌鏈鸿皟搴�
-                wrkMast.setWrkSts(WrkStsType.MOVE_OUT_LIFT_COMPLETE.sts);// 309.灏忚溅杩佸嚭鎻愬崌鏈哄畬鎴� ==> 310.灏忚溅绉诲姩涓�
-                wrkMast.setModiTime(now);
-                if (wrkMastService.updateById(wrkMast)) {
-                    //涓嬪彂浠诲姟
-                    return true;//鐩存帴杩涘叆309.灏忚溅杩佸嚭鎻愬崌鏈哄畬鎴� ==> 310.灏忚溅绉诲姩涓�
-                }
-                return false;
-            }
-
-            //鎼滅储鏈�杩戜笖鏃犳晠闅滄彁鍗囨満
-            LiftStaProtocol recentLiftStation = liftDispatchUtils.getRecentLiftStation(shuttleProtocol.getShuttleNo(), Utils.getLev(shuttleProtocol.getCurrentLocNo()));
-            if(recentLiftStation == null) {
-                News.info("{}鍙峰皬杞︼紝{}鐩爣搴撲綅锛屾病鏈夊彲鐢ㄧ┖闂茶緭閫佺珯鐐�", shuttleProtocol.getShuttleNo(), wrkMast.getLocNo());
-                return false;
-            }
-
-            LiftStaProtocol targetLiftSta = LiftUtils.getLiftStaByLev(recentLiftStation.getLiftNo(), Utils.getLev(wrkMast.getLocNo()));
-            if(targetLiftSta == null) {
-                return false;
-            }
-
-            //璁$畻杩戠偣浣嶇疆
-            String endLocation = navigateUtils.calcEndLocation(shuttleProtocol.getCurrentLocNo(), recentLiftStation.getLocNo(), NavigationMapType.getMapTypes(NavigationMapType.NORMAL), null, null, 1);
-            if (endLocation == null) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛屽皬杞﹁繎鐐逛綅缃绠楀け璐�", wrkMast.getWrkNo());
-                return false;
-            }
-
-            //灏忚溅宸插湪杩戠偣浣嶇疆鏃犻渶鍓嶅線
-            if (shuttleProtocol.getCurrentLocNo().equals(endLocation)) {
-                wrkMast.setWrkSts(WrkStsType.MOVE_NEARBY_COMPLETE.sts);//灏忚溅绉诲姩鍒版彁鍗囨満涓�  301.鐢熸垚灏忚溅绉诲簱浠诲姟 ==> 303.灏忚溅绉诲姩鑷宠繎鐐瑰畬鎴�
-                wrkMast.setSourceStaNo(recentLiftStation.getSiteId());
-                wrkMast.setStaNo(targetLiftSta.getSiteId());
-                wrkMast.setModiTime(now);
-                wrkMast.setSystemMsg("");//娓呯┖娑堟伅
-                wrkMastService.updateById(wrkMast);
-                return true;
-            }
-
-            ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
-            assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙�
-            assignCommand.setTaskMode(ShuttleTaskModeType.MOVE_LOC_NO.id);//灏忚溅绉诲簱浠诲姟
-            assignCommand.setTaskNo(wrkMast.getWrkNo());//浠诲姟鍙�
-            assignCommand.setSourceLocNo(shuttleProtocol.getCurrentLocNo());//婧愬簱浣�
-            assignCommand.setLocNo(endLocation);
-            assignCommand.setAuto(true);//鑷姩妯″紡
-
-            //鑾峰彇灏忚溅鍒拌繎鐐硅璧板懡浠�
-            List<ShuttleCommand> commands = shuttleOperaUtils.getStartToTargetCommands(shuttleProtocol.getCurrentLocNo(), endLocation, NavigationMapType.getMapTypes(NavigationMapType.NORMAL, NavigationMapType.SHUTTLE), assignCommand, shuttleThread);
-            if (commands == null) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛岃矾寰勮绠楀け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
-                return false;//璺緞瑙i攣澶辫触
-            }
-
-            assignCommand.setCommands(commands);
-
-            wrkMast.setWrkSts(WrkStsType.MOVE_NEARBY.sts);//灏忚溅绉诲姩鍒版彁鍗囨満涓�  301.鐢熸垚灏忚溅绉诲簱浠诲姟 ==> 302.灏忚溅绉诲姩鑷宠繎鐐逛腑
-            wrkMast.setSourceStaNo(recentLiftStation.getSiteId());
-            wrkMast.setStaNo(targetLiftSta.getSiteId());
-            wrkMast.setModiTime(now);
-            wrkMast.setSystemMsg("");//娓呯┖娑堟伅
-            if (wrkMastService.updateById(wrkMast)) {
-                //涓嬪彂浠诲姟
-                shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand);
-                notifyUtils.notify(String.valueOf(SlaveType.Shuttle), shuttleProtocol.getShuttleNo(), String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.SHUTTLE_MOVING);
-                //瑙﹀彂閫氱煡
-                return false;
-            }
-            return false;
-        }
-        return true;
-    }
-
-    /**
-     * 灏忚溅杩佺Щ-灏忚溅杩佸叆鎻愬崌鏈轰腑
-     * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
-     * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
-     */
-    private boolean shuttleMoveExecuteStepMoveInLift(WrkMast wrkMast) {
-        //--------------------------------------灏忚溅杩佸叆鎻愬崌鏈轰腑-----------------------------------------//
-        Date now = new Date();
-
-        //灏忚溅杩佸叆鎻愬崌鏈�  303.灏忚溅绉诲姩鑷宠繎鐐瑰畬鎴� ==> 304.灏忚溅杩佸叆鎻愬崌鏈轰腑
-        if (wrkMast.getWrkSts() == WrkStsType.MOVE_NEARBY_COMPLETE.sts) {
-            //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
-            ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
-            if (shuttleThread == null) {
-                return false;
-            }
-            ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
-            if (shuttleProtocol == null) {
-                return false;
-            }
-
-            //灏忚溅澶勪簬绌洪棽鐘舵��
-            if (!shuttleThread.isIdle()) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛屽皬杞﹀繖纰屼腑", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
-                return false;
-            }
-
-            //鑾峰彇婧愯緭閫佺珯
-            LiftStaProtocol liftSta = LiftUtils.getLiftStaByStaNo(wrkMast.getSourceStaNo());
-            if (liftSta == null) {
-                return false;//鎵句笉鍒扮珯鐐�
-            }
-
-            if (liftSta.getHasCar()) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛屾簮绔欏瓨鍦ㄥ皬杞�", wrkMast.getWrkNo());
-                return false;
-            }
-
-            //鑾峰彇鐩爣杈撻�佺珯
-            LiftStaProtocol liftStaTarget = LiftUtils.getLiftStaByStaNo(wrkMast.getStaNo());
-            if (liftStaTarget == null) {
-                return false;//鎵句笉鍒扮珯鐐�
-            }
-
-            if (liftStaTarget.getHasCar()) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛岀洰鏍囩珯瀛樺湪灏忚溅", wrkMast.getWrkNo());
-                return false;
-            }
-
-            if (wrkMast.getLiftNo() == null) {
-                //鐢宠鎻愬崌鏈鸿祫婧�
-                boolean applyLift = liftAction.applyLift(liftSta.getLiftNo(), wrkMast.getWrkNo());
-                if(!applyLift) {
-                    News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛岀敵璇锋彁鍗囨満璧勬簮澶辫触锛岀姝㈢Щ鍔�", wrkMast.getWrkNo());
-                    return false;
-                }
-                return false;
-            }
-
-            LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, wrkMast.getLiftNo());
-            if (liftThread == null) {
-                return false;
-            }
-
-            LiftProtocol liftProtocol = liftThread.getStatus();
-            if (liftProtocol == null) {
-                return false;
-            }
-
-            if (!liftThread.isIdle()) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満蹇欑涓紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
-                return false;
-            }
-
-            Object object = redisUtil.get(RedisKeyType.LIFT_MOVE_TO_SHUTTLE_LIMIT.key + wrkMast.getWrkNo());
-            int targetLev = Utils.getLev(shuttleProtocol.getCurrentLocNo());
-            if (object == null || liftProtocol.getLev() != targetLev) {
-                //鑾峰彇鎻愬崌鏈哄懡浠�
-                LiftStaProtocol startSta = LiftUtils.getLiftStaByLev(liftProtocol.getLiftNo(), liftProtocol.getLev());
-                LiftStaProtocol targetSta = LiftUtils.getLiftStaByLev(liftProtocol.getLiftNo(), targetLev);
-                if (startSta == null || targetSta == null) {
-                    News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}鍙锋彁鍗囨満锛岀珯鐐规暟鎹笉瀛樺湪", wrkMast.getWrkNo(), wrkMast.getLiftNo());
-                    return false;
-                }
-                LiftCommand liftCommand = liftThread.getMoveCommand(commonService.getWorkNo(WrkIoType.PREVIEW_LIFT_MOVE.id), startSta.getSiteId(), targetSta.getSiteId());
-                ArrayList<LiftCommand> commands = new ArrayList<>();
-                commands.add(liftCommand);
-
-                //鎻愪氦鍒扮嚎绋嬪幓宸ヤ綔
-                LiftAssignCommand assignCommand = new LiftAssignCommand();
-                assignCommand.setCommands(commands);
-                assignCommand.setLiftNo(wrkMast.getLiftNo());
-                assignCommand.setTaskNo(wrkMast.getWrkNo());
-                assignCommand.setTaskMode(LiftTaskModeType.MOVE.id);
-                //涓嬪彂浠诲姟
-                liftAction.assignWork(wrkMast.getLiftNo(), assignCommand);
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}鍙锋彁鍗囨満鍦▄}灞傦紝鎻愬崌鏈轰笉鍦ㄥ皬杞﹀眰锛岃皟搴︾Щ鍔ㄤ腑", wrkMast.getWrkNo(), liftProtocol.getLev(), wrkMast.getLiftNo());
-                redisUtil.set(RedisKeyType.LIFT_MOVE_TO_SHUTTLE_LIMIT.key + wrkMast.getWrkNo(), "lift_moving", 60 * 3);
-                redisUtil.set(RedisKeyType.TASK_RUN_LIMIT.key + wrkMast.getWrkNo(), "lock", 8);
-                return false;
-            }
-
-            Object limitObj = redisUtil.get(RedisKeyType.TASK_RUN_LIMIT.key + wrkMast.getWrkNo());
-            if (limitObj != null) {
-                return false;
-            }
-
-            String liftLocNo = liftThread.getCurrentLocNo();
-
-            ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
-            assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙�
-            assignCommand.setTaskMode(ShuttleTaskModeType.MOVE_LOC_NO.id);//灏忚溅绉诲簱浠诲姟
-            assignCommand.setTaskNo(wrkMast.getWrkNo());//浠诲姟鍙�
-            assignCommand.setSourceLocNo(shuttleProtocol.getCurrentLocNo());//婧愬簱浣�
-            assignCommand.setLocNo(liftLocNo);
-            assignCommand.setAuto(true);//鑷姩妯″紡
-
-            //鑾峰彇灏忚溅鍒版彁鍗囨満琛岃蛋鍛戒护
-            List<ShuttleCommand> commands = shuttleOperaUtils.getStartToTargetCommands(shuttleProtocol.getCurrentLocNo(), liftLocNo, NavigationMapType.getMapTypes(NavigationMapType.NORMAL), assignCommand, shuttleThread, "inLift");
-            if (commands == null) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛岃矾寰勮绠楀け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
-                return false;//璺緞瑙i攣澶辫触
-            }
-
-            assignCommand.setCommands(commands);
-
-            wrkMast.setWrkSts(WrkStsType.MOVE_IN_LIFT.sts);//303.灏忚溅绉诲姩鑷宠繎鐐瑰畬鎴� ==> 304.灏忚溅杩佸叆鎻愬崌鏈轰腑
-            wrkMast.setModiTime(now);
-            wrkMast.setSystemMsg("");//娓呯┖娑堟伅
-            if (wrkMastService.updateById(wrkMast)) {
-                //涓嬪彂浠诲姟
-                shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand);
-                notifyUtils.notify(String.valueOf(SlaveType.Shuttle), shuttleProtocol.getShuttleNo(), String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.SHUTTLE_MOVING);
-                //瑙﹀彂閫氱煡
-                return false;
-            }
-            return false;
-        }
-        return true;
-    }
-
-    /**
-     * 灏忚溅杩佺Щ-鎻愬崌鏈烘惉杩愪腑
-     * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
-     * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
-     */
-    private boolean shuttleMoveExecuteStepLiftMove(WrkMast wrkMast) {
-        //--------------------------------------鎻愬崌鏈烘惉杩愪腑-----------------------------------------//
-        Date now = new Date();
-
-        //鎻愬崌鏈烘惉杩愪腑  305.灏忚溅杩佸叆鎻愬崌鏈哄畬鎴� ==> 306.鎻愬崌鏈烘惉杩愪腑
-        if (wrkMast.getWrkSts() == WrkStsType.MOVE_IN_LIFT_COMPLETE.sts) {
-            LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, wrkMast.getLiftNo());
-            if (liftThread == null) {
-                return false;
-            }
-            LiftProtocol liftProtocol = liftThread.getStatus();
-            if (liftProtocol == null) {
-                return false;
-            }
-            if (!liftThread.isIdle()) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満蹇欑涓紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
-                return false;
-            }
-
-            //鑾峰彇婧愮珯
-            LiftStaProtocol sourceLiftSta = LiftUtils.getLiftStaByStaNo(wrkMast.getSourceStaNo());
-            //鑾峰彇鐩爣绔�
-            LiftStaProtocol liftSta = LiftUtils.getLiftStaByStaNo(wrkMast.getStaNo());
-            if (sourceLiftSta == null || liftSta == null) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛岀己灏戠珯鐐逛俊鎭紝绂佹娲惧彂", wrkMast.getWrkNo());
-                return false;//缂哄皯绔欑偣淇℃伅
-            }
-
-            if (liftSta.getHasCar()) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛岀洰鏍囩珯瀛樺湪灏忚溅锛岀姝㈡淳鍙�", wrkMast.getWrkNo());
-                return false;//鏈夋墭鐩樿烦杩�
-            }
-
-            //鑾峰彇鎻愬崌鏈哄懡浠�
-            LiftCommand liftCommand = liftThread.getShuttleSwitchCommand(wrkMast.getWrkNo(), sourceLiftSta.getSiteId(), liftSta.getSiteId());
-            ArrayList<LiftCommand> commands = new ArrayList<>();
-            commands.add(liftCommand);
-
-            //鎻愪氦鍒扮嚎绋嬪幓宸ヤ綔
-            LiftAssignCommand assignCommand = new LiftAssignCommand();
-            assignCommand.setCommands(commands);
-            assignCommand.setLiftNo(wrkMast.getLiftNo());
-            assignCommand.setTaskNo(wrkMast.getWrkNo());
-            assignCommand.setTaskMode(LiftTaskModeType.SHUTTLE_SWITCH.id);
-
-            wrkMast.setWrkSts(WrkStsType.MOVE_LIFT_RUN.sts);//鎻愬崌鏈烘惉杩愪腑  305.灏忚溅杩佸叆鎻愬崌鏈哄畬鎴� ==> 306.鎻愬崌鏈烘惉杩愪腑
-            wrkMast.setSystemMsg("");//娓呯┖娑堟伅
-            wrkMast.setModiTime(now);
-            if (wrkMastService.updateById(wrkMast)) {
-                //涓嬪彂浠诲姟
-                liftAction.assignWork(wrkMast.getLiftNo(), assignCommand);
-            }
-        }
-        return true;
-    }
-
-    /**
-     * 灏忚溅杩佺Щ-鎻愬崌鏈烘惉杩愬畬鎴愭洿鏂板皬杞﹀潗鏍�
-     * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
-     * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
-     */
-    private boolean shuttleMoveExecuteStepUpdateShuttleLocation(WrkMast wrkMast) {
-        //--------------------------------------鎻愬崌鏈烘惉杩愪腑-----------------------------------------//
-        Date now = new Date();
-
-        //鎻愬崌鏈烘惉杩愪腑  307.鎻愬崌鏈烘惉杩愬畬鎴� ==> 308.灏忚溅杩佸嚭鎻愬崌鏈轰腑
-        if (wrkMast.getWrkSts() == WrkStsType.MOVE_LIFT_RUN_COMPLETE.sts) {
-            //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
-            ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
-            if (shuttleThread == null) {
-                return false;
-            }
-            ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
-            if (shuttleProtocol == null) {
-                return false;
-            }
-
-            //灏忚溅澶勪簬绌洪棽鐘舵��
-            if (!shuttleThread.isIdle()) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛屽皬杞﹀繖纰屼腑锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
-                return false;
-            }
-
-            if (Utils.getLev(shuttleProtocol.getCurrentLocNo()) != Utils.getLev(wrkMast.getLocNo())) {
-                Object object = redisUtil.get(RedisKeyType.SHUTTLE_UPDATE_LOCATION.key + shuttleProtocol.getShuttleNo());
-                if(object != null) {
-                    return false;
-                }
-
-                ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
-                assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙�
-                assignCommand.setTaskMode(ShuttleTaskModeType.UPDATE_LOCATION.id);//鏇存柊鍧愭爣
-                assignCommand.setTaskNo(wrkMast.getWrkNo());//浠诲姟鍙�
-                assignCommand.setAuto(true);//鑷姩妯″紡
-                assignCommand.setSourceLocNo(shuttleProtocol.getCurrentLocNo());//婧愬簱浣�
-                assignCommand.setLocNo(wrkMast.getLocNo());//鐩爣搴撲綅
-
-                //鏇存柊灏忚溅鍧愭爣
-                ShuttleCommand command = shuttleThread.getUpdateLocationCommand(wrkMast.getWrkNo(), wrkMast.getLocNo());
-                ArrayList<ShuttleCommand> commands = new ArrayList<>();
-                commands.add(command);
-
-                assignCommand.setCommands(commands);
-                //涓嬪彂浠诲姟
-                shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand);
-                redisUtil.set(RedisKeyType.SHUTTLE_UPDATE_LOCATION.key + shuttleProtocol.getShuttleNo(), "update", 10);
-                return false;
-            }
-
-            //灏忚溅鍑烘彁鍗囨満杩戠偣璺濈
-            int shuttleOutLiftLocationDistance = 2;
-            Config shuttleOutLiftLocationDistanceConfig = configService.selectOne(new EntityWrapper<Config>().eq("code", "shuttleOutLiftLocationDistance"));
-            if (shuttleOutLiftLocationDistanceConfig != null) {
-                shuttleOutLiftLocationDistance = Integer.parseInt(shuttleOutLiftLocationDistanceConfig.getValue());
-            }
-
-            String targetLocNo = navigateUtils.calcFirstLocation(shuttleProtocol.getCurrentLocNo(), wrkMast.getLocNo(), NavigationMapType.getMapTypes(NavigationMapType.NORMAL), null, null, shuttleOutLiftLocationDistance);
-            if (targetLocNo == null) {//鍑烘彁鍗囨満杩戠偣璁$畻澶辫触
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛屽嚭鎻愬崌鏈鸿繎鐐硅绠楀け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
-                return false;
-            }
-
-            ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
-            assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙�
-            assignCommand.setTaskMode(ShuttleTaskModeType.MOVE_LOC_NO.id);//灏忚溅绉诲簱浠诲姟
-            assignCommand.setTaskNo(wrkMast.getWrkNo());//浠诲姟鍙�
-            assignCommand.setAuto(true);//鑷姩妯″紡
-            assignCommand.setSourceLocNo(shuttleProtocol.getCurrentLocNo());//婧愬簱浣�
-            assignCommand.setLocNo(targetLocNo);//鐩爣搴撲綅
-
-            //鑾峰彇灏忚溅鍒拌繎鐐瑰懡浠�
-            List<ShuttleCommand> commands = shuttleOperaUtils.getStartToTargetCommands(shuttleProtocol.getCurrentLocNo(), targetLocNo, NavigationMapType.getMapTypes(NavigationMapType.NORMAL), assignCommand, shuttleThread);
-            if (commands == null) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛岃矾寰勮绠楀け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
-                return false;//璺緞璁$畻澶辫触
-            }
-            assignCommand.setCommands(commands);
-
-            wrkMast.setWrkSts(WrkStsType.MOVE_OUT_LIFT.sts);//灏忚溅杩佸嚭鎻愬崌鏈轰腑
-            wrkMast.setSystemMsg("");//娓呯┖娑堟伅
-            wrkMast.setModiTime(now);
-            if (wrkMastService.updateById(wrkMast)) {
-                //涓嬪彂浠诲姟
-                shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand);
-            }
-        }
-        return true;
-    }
-
-    /**
-     * 灏忚溅杩佺Щ-灏忚溅绉诲姩鍒扮洰鏍囧簱浣嶄腑
-     * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
-     * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
-     */
-    private boolean shuttleMoveExecuteStepMoveLoc(WrkMast wrkMast) {
-        //--------------------------------------灏忚溅绉诲姩鍒扮洰鏍囧簱浣嶄腑-----------------------------------------//
-        Date now = new Date();
-
-        //灏忚溅绉诲姩鍒扮洰鏍囧簱浣嶄腑  309.灏忚溅杩佸嚭鎻愬崌鏈哄畬鎴� ==> 310.灏忚溅绉诲姩涓�
-        if (wrkMast.getWrkSts() == WrkStsType.MOVE_OUT_LIFT_COMPLETE.sts) {
-
-            //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
-            ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
-            if (shuttleThread == null) {
-                return false;
-            }
-            ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
-            if (shuttleProtocol == null) {
-                return false;
-            }
-
-            //灏忚溅澶勪簬绌洪棽鐘舵��
-            if (!shuttleThread.isIdle()) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛屽皬杞﹀繖纰屼腑锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
-                return false;
-            }
-
-            //灏忚溅宸茬粡鍦ㄧ洰鏍囧簱浣嶏紝鐩存帴璁ゅ畾灏忚溅绉诲姩浠诲姟瀹屾垚
-            if (shuttleProtocol.getCurrentLocNo().equals(wrkMast.getLocNo())) {
-                wrkMast.setWrkSts(WrkStsType.COMPLETE_MOVE.sts);//311.灏忚溅绉诲姩瀹屾垚
-                wrkMast.setLiftNo(null);//閲婃斁鎻愬崌鏈�
-                wrkMast.setModiTime(now);
-                wrkMastService.updateById(wrkMast);
-                return false;
-            }
-
-            ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
-            assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙�
-            assignCommand.setTaskMode(ShuttleTaskModeType.MOVE_LOC_NO.id);//灏忚溅绉诲簱浠诲姟
-            assignCommand.setTaskNo(wrkMast.getWrkNo());//浠诲姟鍙�
-            assignCommand.setAuto(true);//鑷姩妯″紡
-            assignCommand.setSourceLocNo(shuttleProtocol.getCurrentLocNo());//婧愬簱浣�
-            assignCommand.setLocNo(wrkMast.getLocNo());//鐩爣搴撲綅
-
-            //鑾峰彇灏忚溅鍒扮洰鏍囧簱浣嶅懡浠�
-            List<ShuttleCommand> commands = shuttleOperaUtils.getStartToTargetCommands(shuttleProtocol.getCurrentLocNo(), wrkMast.getLocNo(), NavigationMapType.getMapTypes(NavigationMapType.NORMAL), assignCommand, shuttleThread);
-            if (commands == null) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛岃矾寰勮绠楀け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
-                return false;//璺緞璁$畻澶辫触
-            }
-
-            assignCommand.setCommands(commands);
-
-            wrkMast.setWrkSts(WrkStsType.MOVE_SHUTTLE.sts);//灏忚溅绉诲姩鍒扮洰鏍囧簱浣嶄腑  309.灏忚溅杩佸嚭鎻愬崌鏈哄畬鎴� ==> 310.灏忚溅绉诲姩涓�
-            wrkMast.setLiftNo(null);//閲婃斁鎻愬崌鏈�
-            wrkMast.setSystemMsg("");//娓呯┖娑堟伅
-            wrkMast.setModiTime(now);
-            if (wrkMastService.updateById(wrkMast)) {
-                //涓嬪彂浠诲姟
-                shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand);
-            }
-        }
-        return true;
-    }
-
-    //鑷姩鍒囨崲鍑哄叆搴撴ā寮�
-    public void autoSwitchLiftIOMode() {
-        List<DeviceConfig> liftList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>()
-                .eq("device_type", String.valueOf(SlaveType.Lift)));
-        for (DeviceConfig device : liftList) {
-            Integer liftNo = device.getDeviceNo();
-            LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, liftNo);
-            if (liftThread == null) {
-                continue;
-            }
-            LiftProtocol liftProtocol = liftThread.getStatus();
-            if (liftProtocol == null) {
-                continue;
-            }
-
-            List<Integer> liftAllStaNo = LiftUtils.getLiftAllStaNo(liftNo);
-            if (liftAllStaNo.isEmpty()) {
-                continue;
-            }
-
-            List<Integer> conveyorBindLiftAllStaNo = LiftUtils.getConveyorBindLiftAllStaNo(liftNo);
-            if (conveyorBindLiftAllStaNo.isEmpty()) {
-                continue;
-            }
-
-            //鑾峰彇鍏ュ簱浠诲姟
-            List<WrkMast> inWrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>()
-                    .in("sta_no", liftAllStaNo)
-                    .in("wrk_sts"
-                            , WrkStsType.NEW_INBOUND.sts
-                            , WrkStsType.INBOUND_DEVICE_RUN.sts
-                            , WrkStsType.INBOUND_LIFT_RUN.sts
-                            , WrkStsType.INBOUND_LIFT_RUN_COMPLETE.sts
-                            , WrkStsType.INBOUND_SHUTTLE_RUN.sts
-                            , WrkStsType.INBOUND_SHUTTLE_RUN_COMPLETE.sts
-                    ));
-
-            //鑾峰彇鍑哄簱浠诲姟
-            List<WrkMast> outWrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>()
-                    .in("sta_no", conveyorBindLiftAllStaNo)
-                    .in("wrk_sts"
-                            , WrkStsType.NEW_OUTBOUND.sts
-                            , WrkStsType.OUTBOUND_SHUTTLE_RUN.sts
-                            , WrkStsType.OUTBOUND_SHUTTLE_RUN_COMPLETE.sts
-                            , WrkStsType.OUTBOUND_LIFT_RUN.sts
-                            , WrkStsType.OUTBOUND_LIFT_RUN_COMPLETE.sts
-                    ));
-
-            if (liftProtocol.getIOModeType().equals(LiftIoModeType.NONE)) {
-                //鏈煡妯″紡
-                if (!inWrkMasts.isEmpty()) {
-                    liftThread.switchIOMode(LiftIoModeType.IN);
-                } else if (!outWrkMasts.isEmpty()) {
-                    liftThread.switchIOMode(LiftIoModeType.OUT);
-                }else {
-                    liftThread.switchIOMode(LiftIoModeType.IN);
-                }
-            } else if (liftProtocol.getIOModeType().equals(LiftIoModeType.IN)) {
-                //鍏ュ簱妯″紡
-                if (inWrkMasts.isEmpty() && !outWrkMasts.isEmpty()) {
-                    liftThread.switchIOMode(LiftIoModeType.OUT);
-                }
-            } else if (liftProtocol.getIOModeType().equals(LiftIoModeType.OUT)) {
-                //鍑哄簱妯″紡
-                if (outWrkMasts.isEmpty() && !inWrkMasts.isEmpty()) {
-                    liftThread.switchIOMode(LiftIoModeType.IN);
-                }
-            }
-        }
-    }
 
 }
diff --git a/src/main/java/com/zy/asrs/task/NotifyScheduler.java b/src/main/java/com/zy/asrs/task/NotifyScheduler.java
index 0b318c5..271b624 100644
--- a/src/main/java/com/zy/asrs/task/NotifyScheduler.java
+++ b/src/main/java/com/zy/asrs/task/NotifyScheduler.java
@@ -39,19 +39,19 @@
 
     @Scheduled(cron = "0/3 * * * * ? ")
     public synchronized void notifyShuttle(){
-        List<DeviceConfig> shuttleList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>()
-                .eq("device_type", String.valueOf(SlaveType.Shuttle)));
-        for (DeviceConfig device : shuttleList) {
-            notifyMsg(String.valueOf(SlaveType.Shuttle), device.getDeviceNo());
+        List<DeviceConfig> deviceList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>()
+                .eq("device_type", String.valueOf(SlaveType.Crn)));
+        for (DeviceConfig device : deviceList) {
+            notifyMsg(String.valueOf(SlaveType.Crn), device.getDeviceNo());
         }
     }
 
     @Scheduled(cron = "0/3 * * * * ? ")
     public synchronized void notifyForkLift(){
-        List<DeviceConfig> forkLiftList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>()
-                .eq("device_type", String.valueOf(SlaveType.ForkLift)));
-        for (DeviceConfig device : forkLiftList) {
-            notifyMsg(String.valueOf(SlaveType.ForkLift), device.getDeviceNo());
+        List<DeviceConfig> deviceList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>()
+                .eq("device_type", String.valueOf(SlaveType.Rgv)));
+        for (DeviceConfig device : deviceList) {
+            notifyMsg(String.valueOf(SlaveType.Rgv), device.getDeviceNo());
         }
     }
 
diff --git a/src/main/java/com/zy/asrs/task/ShuttleChargePowerScheduler.java b/src/main/java/com/zy/asrs/task/ShuttleChargePowerScheduler.java
deleted file mode 100644
index 0e4fd26..0000000
--- a/src/main/java/com/zy/asrs/task/ShuttleChargePowerScheduler.java
+++ /dev/null
@@ -1,133 +0,0 @@
-package com.zy.asrs.task;
-
-import com.alibaba.fastjson.JSON;
-import com.baomidou.mybatisplus.mapper.EntityWrapper;
-import com.zy.asrs.domain.param.ShuttleTimedPowerRangeParam;
-import com.zy.asrs.entity.BasShuttle;
-import com.zy.asrs.service.BasShuttleService;
-import com.zy.common.utils.RedisUtil;
-import com.zy.system.entity.Config;
-import com.zy.system.service.ConfigService;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.scheduling.annotation.Scheduled;
-import org.springframework.stereotype.Component;
-
-import java.time.LocalTime;
-import java.util.List;
-
-@Component
-@Slf4j
-public class ShuttleChargePowerScheduler {
-
-    @Autowired
-    private ConfigService configService;
-    @Autowired
-    private BasShuttleService basShuttleService;
-    @Autowired
-    private RedisUtil redisUtil;
-
-    /**
-     * 灏忚溅鍏呯數绾胯嚜鍔ㄨ皟鑺�
-     * 姣�5閽熸墽琛屼竴娆�
-     */
-    @Scheduled(cron = "0 5 * * * ? ")
-    public void run() {
-        boolean timedCharge = false;
-        Config timedChargeConfig = configService.selectOne(new EntityWrapper<Config>()
-                .eq("code", "timedCharge")
-                .eq("status", 1));
-        if (timedChargeConfig != null) {
-            if("Y".equals(timedChargeConfig.getValue())) {
-                timedCharge = true;
-            }
-        }
-
-        if(!timedCharge) {
-            return;
-        }
-
-        Config timedChargeRangeConfig = configService.selectOne(new EntityWrapper<Config>()
-                .eq("code", "timedChargeRange")
-                .eq("status", 1));
-        if (timedChargeRangeConfig == null) {
-            return;
-        }
-
-        Integer timedChargePowerLine = 90;
-        Config timedChargePowerLineConfig = configService.selectOne(new EntityWrapper<Config>()
-                .eq("code", "timedChargePowerLine")
-                .eq("status", 1));
-        if (timedChargePowerLineConfig == null) {
-            return;
-        }
-        timedChargePowerLine = Integer.parseInt(timedChargePowerLineConfig.getValue());
-
-        Integer shuttleDefaultChargePowerLine = 70;
-        Config shuttleDefaultChargePowerLineConfig = configService.selectOne(new EntityWrapper<Config>()
-                .eq("code", "shuttleDefaultChargePowerLine")
-                .eq("status", 1));
-        if (shuttleDefaultChargePowerLineConfig != null) {
-            shuttleDefaultChargePowerLine = Integer.parseInt(shuttleDefaultChargePowerLineConfig.getValue());
-        }
-
-        List<ShuttleTimedPowerRangeParam> list = JSON.parseArray(timedChargeRangeConfig.getValue(), ShuttleTimedPowerRangeParam.class);
-        for (ShuttleTimedPowerRangeParam rangeParam : list) {
-            Object timedChargeObject = redisUtil.get("timedCharge");
-
-            LocalTime startTime = LocalTime.of(rangeParam.getStartTime(), 0);
-            LocalTime endTime = LocalTime.of(rangeParam.getEndTime(), 0);
-            boolean checkTime = checkTime(startTime, endTime);
-            if(!checkTime) {
-                if (timedChargeObject != null) {
-                    subPower(shuttleDefaultChargePowerLine);
-                }
-                continue;
-            }
-
-            if(timedChargeObject != null) {
-                continue;
-            }
-
-            addPower(timedChargePowerLine);
-        }
-
-    }
-
-    public boolean checkTime(LocalTime startTime, LocalTime endTime) {
-        LocalTime now = LocalTime.now();
-        return !now.isBefore(startTime) && !now.isAfter(endTime);
-    }
-
-    public boolean addPower(Integer timedChargePowerLine) {
-        //璋冩暣鐢甸噺绾�
-        List<BasShuttle> shuttleList = basShuttleService.selectList(new EntityWrapper<BasShuttle>().ne("charge_line", timedChargePowerLine));
-        if (shuttleList.isEmpty()) {
-            return false;
-        }
-
-        for (BasShuttle basShuttle : shuttleList) {
-            basShuttle.setChargeLine(timedChargePowerLine);
-            basShuttleService.updateById(basShuttle);
-        }
-
-        redisUtil.set("timedCharge", shuttleList.size());
-        return true;
-    }
-
-    public boolean subPower(Integer shuttleDefaultChargePowerLine) {
-        List<BasShuttle> shuttleList = basShuttleService.selectList(new EntityWrapper<BasShuttle>());
-        if (shuttleList.isEmpty()) {
-            return false;
-        }
-
-        for (BasShuttle basShuttle : shuttleList) {
-            basShuttle.setChargeLine(shuttleDefaultChargePowerLine);
-            basShuttleService.updateById(basShuttle);
-        }
-
-        redisUtil.del("timedCharge");
-        return true;
-    }
-
-}
diff --git a/src/main/java/com/zy/asrs/task/ShuttlePowerEarlyWarning.java b/src/main/java/com/zy/asrs/task/ShuttlePowerEarlyWarning.java
deleted file mode 100644
index 9af0b90..0000000
--- a/src/main/java/com/zy/asrs/task/ShuttlePowerEarlyWarning.java
+++ /dev/null
@@ -1,121 +0,0 @@
-package com.zy.asrs.task;
-
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONObject;
-import com.baomidou.mybatisplus.mapper.EntityWrapper;
-import com.zy.asrs.entity.DeviceConfig;
-import com.zy.asrs.service.DeviceConfigService;
-import com.zy.common.utils.HttpHandler;
-import com.zy.core.cache.SlaveConnection;
-import com.zy.core.enums.SlaveType;
-import com.zy.core.model.ShuttleSlave;
-import com.zy.core.model.protocol.ShuttleProtocol;
-import com.zy.core.thread.ShuttleThread;
-import com.zy.system.entity.Config;
-import com.zy.system.service.ConfigService;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.scheduling.annotation.Scheduled;
-import org.springframework.stereotype.Component;
-
-import java.util.HashMap;
-import java.util.List;
-
-/**
- * 灏忚溅鐢甸噺棰勮妫�娴� => 寮哄埗棰勮
- */
-@Component
-@Slf4j
-public class ShuttlePowerEarlyWarning {
-
-    @Autowired
-    private ConfigService configService;
-    @Autowired
-    private DeviceConfigService deviceConfigService;
-
-    /**
-     * 灏忚溅鐢甸噺棰勮妫�娴� => 寮哄埗棰勮
-     * 姣�30鍒嗛挓鎵弿涓�娆�
-     */
-    @Scheduled(cron = "0 30 * * * ? ")
-    public synchronized void shuttlePowerEarlyWarning() {
-        Config config = configService.selectOne(new EntityWrapper<Config>().eq("code","dingdingReportUrl"));
-        if (config == null) {
-            return;
-        }
-
-        if (config.getStatus() == 0) {
-            return;//閫氱煡绂佺敤
-        }
-
-        //灏忚溅鐢甸噺棰勮闃堝��
-        int shuttlePowerEarlyValue = 20;//榛樿20
-        Config shuttlePowerEarlyConfig = configService.selectOne(new EntityWrapper<Config>().eq("code", "shuttlePowerEarlyValue"));
-        if (shuttlePowerEarlyConfig != null) {
-            shuttlePowerEarlyValue = Integer.parseInt(shuttlePowerEarlyConfig.getValue());
-        }
-
-        String title = "";
-        Config dingdingReportTitleConfig = configService.selectOne(new EntityWrapper<Config>().eq("code", "dingdingReportTitle"));
-        if (dingdingReportTitleConfig != null) {
-            title = dingdingReportTitleConfig.getValue();
-        }
-
-        StringBuffer buffer = new StringBuffer();
-        buffer.append("銆愰�氱煡銆�");
-        buffer.append(title);
-        buffer.append("鍥涘悜搴揬n");//娑堟伅鏍囬
-
-        boolean hasReport = false;//鏄惁鏈夐渶瑕佹姤鍛婄殑鏁版嵁
-        List<DeviceConfig> shuttleList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>()
-                .eq("device_type", String.valueOf(SlaveType.Shuttle)));
-        for (DeviceConfig device : shuttleList) {
-            ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, device.getDeviceNo());
-            if (shuttleThread == null) {
-                continue;
-            }
-
-            ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
-            if (shuttleProtocol == null) {
-                continue;
-            }
-
-            if (shuttleThread.isCharging()) {
-                continue;//鍏呯數涓紝鏃犻渶閫氱煡
-            }
-
-            if (shuttleProtocol.getBatteryPower() == null) {
-                continue;
-            }
-
-            if (Integer.parseInt(shuttleProtocol.getBatteryPower()) < shuttlePowerEarlyValue) {
-                buffer.append(shuttleProtocol.getShuttleNo()).append("鍙峰皬杞︼紝鐢甸噺").append(shuttleProtocol.getBatteryPower()).append("锛岃娉ㄦ剰銆俓n");
-                hasReport = true;
-            }
-        }
-
-        if (hasReport) {
-            try {
-                HashMap<String, Object> param = new HashMap<>();
-                HashMap<String, Object> data = new HashMap<>();
-                data.put("content", buffer.toString());
-                param.put("msgtype", "text");
-                param.put("text", data);
-                String response = new HttpHandler.Builder()
-                        .setUri(config.getValue())
-                        .setJson(JSON.toJSONString(param))
-                        .setHttps(true)
-                        .build()
-                        .doPost();
-                JSONObject jsonObject = JSON.parseObject(response);
-                if (jsonObject.get("errmsg").equals("ok")) {
-                    return;//鍙戦�佹垚鍔�
-                }
-            } catch (Exception e) {
-                e.printStackTrace();
-            }
-        }
-
-    }
-
-}
diff --git a/src/main/java/com/zy/asrs/task/main/ShuttleTaskExecuteScheduler.java b/src/main/java/com/zy/asrs/task/main/ShuttleTaskExecuteScheduler.java
deleted file mode 100644
index 08b9822..0000000
--- a/src/main/java/com/zy/asrs/task/main/ShuttleTaskExecuteScheduler.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package com.zy.asrs.task.main;
-
-import com.zy.asrs.utils.ShuttleTaskUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.scheduling.annotation.Scheduled;
-import org.springframework.stereotype.Component;
-
-@Component
-public class ShuttleTaskExecuteScheduler {
-
-    @Autowired
-    private ShuttleTaskUtils shuttleTaskUtils;
-
-    @Scheduled(cron = "0/3 * * * * ? ")
-    public synchronized void shuttleFinished() {
-        //鍥涘悜绌挎杞︿换鍔″畬鎴�
-        shuttleTaskUtils.shuttleFinished();
-    }
-
-}
diff --git a/src/main/java/com/zy/asrs/utils/NotifyUtils.java b/src/main/java/com/zy/asrs/utils/NotifyUtils.java
index 0468a0f..5ad1a73 100644
--- a/src/main/java/com/zy/asrs/utils/NotifyUtils.java
+++ b/src/main/java/com/zy/asrs/utils/NotifyUtils.java
@@ -1,6 +1,5 @@
 package com.zy.asrs.utils;
 
-import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.core.common.SnowflakeIdWorker;
 import com.zy.asrs.domain.NotifyDto;
@@ -55,10 +54,12 @@
 
     public String getKey(String notifyType, Integer device) {
         String key = null;
-        if (notifyType.equals(String.valueOf(SlaveType.Shuttle))) {
-            key = RedisKeyType.QUEUE_SHUTTLE.key + device;
-        } else if (notifyType.equals(String.valueOf(SlaveType.ForkLift))) {
-            key = RedisKeyType.QUEUE_FORK_LIFT.key + device;
+        if (notifyType.equals(String.valueOf(SlaveType.Crn))) {
+            key = RedisKeyType.QUEUE_CRN.key + device;
+        } else if (notifyType.equals(String.valueOf(SlaveType.Devp))) {
+            key = RedisKeyType.QUEUE_DEVP.key + device;
+        } else if (notifyType.equals(String.valueOf(SlaveType.Rgv))) {
+            key = RedisKeyType.QUEUE_RGV.key + device;
         } else if (notifyType.equals("task")) {
             key = RedisKeyType.QUEUE_TASK.key + device;
         } else {
diff --git a/src/main/java/com/zy/asrs/utils/ShuttleTaskUtils.java b/src/main/java/com/zy/asrs/utils/ShuttleTaskUtils.java
deleted file mode 100644
index 2bd93fd..0000000
--- a/src/main/java/com/zy/asrs/utils/ShuttleTaskUtils.java
+++ /dev/null
@@ -1,141 +0,0 @@
-package com.zy.asrs.utils;
-
-import com.alibaba.fastjson.JSON;
-import com.baomidou.mybatisplus.mapper.EntityWrapper;
-import com.zy.asrs.domain.enums.NotifyMsgType;
-import com.zy.asrs.entity.DeviceConfig;
-import com.zy.asrs.entity.WrkMast;
-import com.zy.asrs.service.DeviceConfigService;
-import com.zy.asrs.service.WrkMastService;
-import com.zy.common.utils.RedisUtil;
-import com.zy.core.News;
-import com.zy.core.action.ShuttleAction;
-import com.zy.core.cache.SlaveConnection;
-import com.zy.core.enums.RedisKeyType;
-import com.zy.core.enums.ShuttleProtocolStatusType;
-import com.zy.core.enums.SlaveType;
-import com.zy.core.enums.WrkStsType;
-import com.zy.core.model.command.ShuttleAssignCommand;
-import com.zy.core.model.protocol.ShuttleProtocol;
-import com.zy.core.thread.ShuttleThread;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
-import java.util.List;
-
-@Component
-public class ShuttleTaskUtils {
-
-    @Autowired
-    private DeviceConfigService deviceConfigService;
-    @Autowired
-    private WrkMastService wrkMastService;
-    @Autowired
-    private NotifyUtils notifyUtils;
-    @Autowired
-    private RedisUtil redisUtil;
-    @Autowired
-    private ShuttleAction shuttleAction;
-
-    /**
-     * 鍥涘悜绌挎杞︿换鍔″畬鎴�
-     */
-    public synchronized void shuttleFinished() {
-        try {
-            List<DeviceConfig> shuttleList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>()
-                    .eq("device_type", String.valueOf(SlaveType.Shuttle)));
-            for (DeviceConfig device : shuttleList) {
-                //鑾峰彇鍥涘悜绌挎杞︿俊鎭�
-                ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, device.getDeviceNo());
-                ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
-                if (shuttleProtocol == null) {
-                    continue;
-                }
-
-                //鍥涘悜绌挎杞︾姸鎬佷负绛夊緟纭銆佸皬杞﹀浜庣┖闂茬姸鎬�
-                if (shuttleProtocol.getProtocolStatus() == ShuttleProtocolStatusType.WAITING.id  //浠诲姟瀹屾垚绛夊緟纭
-                        && shuttleProtocol.getTaskNo() != 0
-                ) {
-                    //鐢宠鍙栨秷绠″埗
-                    shuttleAction.cancelTrafficControl(shuttleProtocol.getShuttleNo(), shuttleProtocol.getTaskNo());
-
-                    //灏嗕换鍔℃。鏍囪涓哄畬鎴�
-                    WrkMast wrkMast = wrkMastService.selectByWorkNo(shuttleProtocol.getTaskNo());
-                    if (wrkMast != null) {
-                        if (wrkMast.getWrkSts() == WrkStsType.INBOUND_SHUTTLE_RUN.sts) {
-                            //5.灏忚溅鎼繍涓� ==> 9.鍏ュ簱瀹屾垚
-                            wrkMast.setWrkSts(WrkStsType.COMPLETE_INBOUND.sts);
-                            shuttleThread.setTaskNo(0);
-                        } else if (wrkMast.getWrkSts() == WrkStsType.OUTBOUND_SHUTTLE_RUN.sts) {
-                            //102.灏忚溅鎼繍涓� ==> 103.灏忚溅鎼繍瀹屾垚
-                            wrkMast.setWrkSts(WrkStsType.OUTBOUND_SHUTTLE_RUN_COMPLETE.sts);
-                            shuttleThread.setTaskNo(0);
-                        } else if (wrkMast.getWrkSts() == WrkStsType.MOVE_NEARBY.sts) {
-                            //302.灏忚溅绉诲姩鑷宠繎鐐逛腑 ==> 303.灏忚溅绉诲姩鑷宠繎鐐瑰畬鎴�
-                            wrkMast.setWrkSts(WrkStsType.MOVE_NEARBY_COMPLETE.sts);
-                            shuttleThread.setTaskNo(0);
-                        } else if (wrkMast.getWrkSts() == WrkStsType.MOVE_IN_LIFT.sts) {
-                            //304.灏忚溅杩佸叆鎻愬崌鏈轰腑 ==> 305.灏忚溅杩佸叆鎻愬崌鏈哄畬鎴�
-                            wrkMast.setWrkSts(WrkStsType.MOVE_IN_LIFT_COMPLETE.sts);
-                            shuttleThread.setTaskNo(0);
-                        } else if (wrkMast.getWrkSts() == WrkStsType.MOVE_OUT_LIFT.sts) {
-                            //308.灏忚溅杩佸嚭鎻愬崌鏈轰腑 ==> 309.灏忚溅杩佸嚭鎻愬崌鏈哄畬鎴�
-                            if (Utils.getLev(shuttleProtocol.getCurrentLocNo()) != Utils.getLev(wrkMast.getLocNo())) {
-                                continue;//灏忚溅鏈埌杈剧洰鏍囧眰
-                            }
-                            wrkMast.setWrkSts(WrkStsType.MOVE_OUT_LIFT_COMPLETE.sts);
-                            shuttleThread.setTaskNo(0);
-                        } else if (wrkMast.getWrkSts() == WrkStsType.MOVE_SHUTTLE.sts) {
-                            //310.灏忚溅绉诲姩涓� ==> 311.灏忚溅绉诲姩瀹屾垚
-                            wrkMast.setWrkSts(WrkStsType.COMPLETE_MOVE.sts);
-                            shuttleThread.setTaskNo(0);
-                            notifyUtils.notify(String.valueOf(SlaveType.Shuttle), shuttleProtocol.getShuttleNo(), String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.SHUTTLE_MOVE_COMPLETE);//瑙﹀彂閫氱煡
-                        } else if (wrkMast.getWrkSts() == WrkStsType.CHARGE_SHUTTLE_START_CHARGING.sts) {
-                            //204.灏忚溅寮�鍚厖鐢典腑 ==> 205.灏忚溅鍏呯數涓�
-                            wrkMast.setWrkSts(WrkStsType.CHARGE_SHUTTLE_CHARGING.sts);
-                            shuttleThread.setTaskNo(0);
-                            notifyUtils.notify(String.valueOf(SlaveType.Shuttle), shuttleProtocol.getShuttleNo(), String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.SHUTTLE_POWER_COMPLETE);//瑙﹀彂閫氱煡
-                        } else if (wrkMast.getWrkSts() == WrkStsType.CHARGE_SHUTTLE_CHARGING.sts) {
-                            //205.灏忚溅鍏呯數涓� ==> 206.灏忚溅鍏呯數瀹屾垚
-                            wrkMast.setWrkSts(WrkStsType.CHARGE_SHUTTLE_CHARGING_COMPLETE.sts);
-                            shuttleThread.setTaskNo(0);
-                            notifyUtils.notify(String.valueOf(SlaveType.Shuttle), shuttleProtocol.getShuttleNo(), String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.SHUTTLE_POWER_COMPLETE);//瑙﹀彂閫氱煡
-                        } else if (wrkMast.getWrkSts() == WrkStsType.LOC_MOVE_SHUTTLE_RUN.sts) {
-                            //502.灏忚溅鎼繍涓� ==> 509.绉诲簱瀹屾垚
-                            wrkMast.setWrkSts(WrkStsType.COMPLETE_LOC_MOVE.sts);
-                            shuttleThread.setTaskNo(0);
-                            notifyUtils.notify(String.valueOf(SlaveType.Shuttle), shuttleProtocol.getShuttleNo(), String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.SHUTTLE_DELIVERY);//瑙﹀彂閫氱煡
-                        } else {
-                            continue;
-                        }
-
-                        if (wrkMastService.updateById(wrkMast)) {
-                            //璁剧疆鍥涘悜绌挎杞︿负绌洪棽鐘舵��
-                            shuttleThread.setProtocolStatus(ShuttleProtocolStatusType.IDLE);
-                            News.info("鍥涘悜绌挎杞﹀凡纭涓斾换鍔″畬鎴愮姸鎬�,澶嶄綅銆傚洓鍚戠┛姊溅鍙�={}", shuttleProtocol.getShuttleNo());
-                        } else {
-                            News.error("鍥涘悜绌挎杞﹀凡纭涓斾换鍔″畬鎴愮姸鎬�,澶嶄綅澶辫触锛屼絾鏈壘鍒板伐浣滄。銆傚洓鍚戠┛姊溅鍙�={}锛屽伐浣滃彿={}", shuttleProtocol.getShuttleNo(), shuttleProtocol.getTaskNo());
-                        }
-                    } else {
-                        Object object = redisUtil.get(RedisKeyType.SHUTTLE_WORK_FLAG.key + shuttleProtocol.getTaskNo());
-                        if(object != null){
-                            ShuttleAssignCommand assignCommand = JSON.parseObject(object.toString(), ShuttleAssignCommand.class);
-                            if (!assignCommand.getAuto()) {
-                                //鎵嬪姩妯″紡
-                                //宸ヤ綔鍙锋竻闆�
-                                shuttleThread.setTaskNo(0);
-                                //璁剧疆鍥涘悜绌挎杞︿负绌洪棽鐘舵��
-                                shuttleThread.setProtocolStatus(ShuttleProtocolStatusType.IDLE);
-                                News.info("鍥涘悜绌挎杞﹀凡纭涓斾换鍔″畬鎴愮姸鎬�,澶嶄綅銆傚洓鍚戠┛姊溅鍙�={}", shuttleProtocol.getShuttleNo());
-                            }
-                        }
-                    }
-                }
-
-            }
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-    }
-
-}
diff --git a/src/main/java/com/zy/asrs/utils/Utils.java b/src/main/java/com/zy/asrs/utils/Utils.java
index 26132f4..a55a484 100644
--- a/src/main/java/com/zy/asrs/utils/Utils.java
+++ b/src/main/java/com/zy/asrs/utils/Utils.java
@@ -2,26 +2,9 @@
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
-import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.core.common.Arith;
 import com.core.common.Cools;
-import com.core.common.SpringUtils;
-import com.zy.asrs.entity.DeviceConfig;
-import com.zy.asrs.entity.LocMast;
-import com.zy.asrs.entity.WrkMast;
-import com.zy.asrs.service.DeviceConfigService;
-import com.zy.asrs.service.LocMastService;
-import com.zy.asrs.service.WrkMastService;
-import com.zy.common.model.NavigateNode;
-import com.zy.common.model.enums.NavigationMapType;
-import com.zy.common.utils.NavigatePositionConvert;
-import com.zy.common.utils.NavigateUtils;
-import com.zy.core.cache.SlaveConnection;
-import com.zy.core.enums.SlaveType;
-import com.zy.core.model.protocol.ShuttleProtocol;
-import com.zy.core.thread.ShuttleThread;
 import java.text.DecimalFormat;
-import java.util.*;
 
 public class Utils {
 
@@ -80,220 +63,6 @@
 
     public static String getLocNo(Number row, Number bay, Number lev) {
         return zerofill(String.valueOf(row), 2) + zerofill(String.valueOf(bay), 3) + zerofill(String.valueOf(lev), 2);
-    }
-
-    public static List<String> getGroupLoc(String locNo) {
-        return null;
-    }
-
-    //鑾峰彇绌挎杞y鍧愭爣鐐�
-    public static int[] getShuttlePoint(Integer shuttleNo) {
-        //鑾峰彇绌挎杞︽墍鍦ㄨ妭鐐逛綅缃�
-        ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttleNo);
-        if (shuttleThread == null) {
-            return null;
-        }
-        ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
-        if (shuttleProtocol == null) {
-            return null;
-        }
-
-        String currentLocNo = shuttleProtocol.getCurrentLocNo();
-        if (currentLocNo == null) {
-            return null;
-        }
-
-        if (shuttleProtocol.getCurrentLocNo() == null) {
-            return null;
-        }
-        return NavigatePositionConvert.positionToXY(shuttleProtocol.getCurrentLocNo());
-    }
-
-    //鑾峰彇闄ょ櫧鍚嶅崟澶栫殑鎸囧畾妤煎眰鍏ㄩ儴绌挎杞y鍧愭爣鐐�
-    public static List<int[]> getShuttlePoints(Integer whiteShuttle, Integer lev) {
-        DeviceConfigService deviceConfigService = SpringUtils.getBean(DeviceConfigService.class);
-        ArrayList<int[]> list = new ArrayList<>();
-
-        List<DeviceConfig> shuttleList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>()
-                .eq("device_type", String.valueOf(SlaveType.Shuttle)));
-        for (DeviceConfig device : shuttleList) {
-            if (device.getDeviceNo().intValue() == whiteShuttle) {
-                continue;//璺宠繃鐧藉悕鍗�
-            }
-
-            //鑾峰彇绌挎杞︽墍鍦ㄨ妭鐐逛綅缃�
-            ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, device.getDeviceNo());
-            if (shuttleThread == null) {
-                continue;
-            }
-            ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
-            if (shuttleProtocol == null) {
-                continue;
-            }
-
-            String currentLocNo = shuttleProtocol.getCurrentLocNo();
-            if (currentLocNo == null) {
-                continue;
-            }
-
-            if (lev != Utils.getLev(currentLocNo)) {
-                continue;//妤煎眰涓嶅悓
-            }
-
-            if (shuttleProtocol.getCurrentLocNo() == null) {
-                continue;
-            }
-            int[] xyPosition = NavigatePositionConvert.positionToXY(shuttleProtocol.getCurrentLocNo());//閫氳繃搴撲綅鍙疯幏鍙杧y鍧愭爣
-            list.add(xyPosition);
-        }
-        return list;
-    }
-
-    public static ShuttleThread searchShuttle(String locNo) {
-        DeviceConfigService deviceConfigService = SpringUtils.getBean(DeviceConfigService.class);
-        List<DeviceConfig> shuttleList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>()
-                .eq("device_type", String.valueOf(SlaveType.Shuttle)));
-        for (DeviceConfig device : shuttleList) {
-            //鑾峰彇绌挎杞︽墍鍦ㄨ妭鐐逛綅缃�
-            ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, device.getDeviceNo());
-            if (shuttleThread == null) {
-                continue;
-            }
-            ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
-            if (shuttleProtocol == null) {
-                continue;
-            }
-
-            String currentLocNo = shuttleProtocol.getCurrentLocNo();
-            if (currentLocNo == null) {
-                continue;
-            }
-
-            if (currentLocNo.equals(locNo)) {
-                return shuttleThread;
-            }
-        }
-
-        return null;
-    }
-
-    //妫�娴嬫ゼ灞傛槸鍚︽湁鍙敤绌挎杞�
-    public static boolean checkLevHasShuttle(Integer lev) {
-        DeviceConfigService deviceConfigService = SpringUtils.getBean(DeviceConfigService.class);
-        WrkMastService wrkMastService = SpringUtils.getBean(WrkMastService.class);
-
-        List<DeviceConfig> shuttleList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>()
-                .eq("device_type", String.valueOf(SlaveType.Shuttle)));
-        for (DeviceConfig device : shuttleList) {
-            //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
-            ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, device.getDeviceNo());
-            if (shuttleThread == null) {
-                continue;
-            }
-            ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
-            if (shuttleProtocol == null) {
-                continue;
-            }
-            String currentLocNo = shuttleProtocol.getCurrentLocNo();
-            if (currentLocNo == null) {
-                continue;
-            }
-
-            //灏忚溅姝e湪鍏呯數
-            if (shuttleThread.isCharging()) {
-                continue;
-            }
-
-            //灏忚溅鏈夊厖鐢典换鍔�
-            WrkMast chargeWorking = wrkMastService.selectChargeWorking(shuttleProtocol.getShuttleNo());
-            if (chargeWorking != null) {//宸叉湁鍏呯數浠诲姟
-                continue;
-            }
-
-            //灏忚溅澶勪簬鏁呴殰鐘舵��
-            if (shuttleThread.isFault()) {
-                continue;
-            }
-
-            if (lev == Utils.getLev(currentLocNo)) {
-                return true;//鎸囧畾妤煎眰鏈夌┛姊溅
-            }
-        }
-
-        return false;//鎸囧畾妤煎眰娌℃湁绌挎杞�
-    }
-
-    //妫�娴嬪簱浣嶇粍鏄惁瀛樺湪灏忚溅锛屽瓨鍦ㄨ繑鍥炲皬杞﹀彿銆�
-    public static Integer checkGroupLocHasShuttle(List<String> groupLoc) {
-        if (groupLoc == null) {
-            return null;
-        }
-
-        if (groupLoc.isEmpty()) {
-            return null;
-        }
-
-        DeviceConfigService deviceConfigService = SpringUtils.getBean(DeviceConfigService.class);
-        if (deviceConfigService == null) {
-            return null;
-        }
-
-        List<DeviceConfig> shuttleList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>()
-                .eq("device_type", String.valueOf(SlaveType.Shuttle)));
-
-        for (String loc : groupLoc) {
-            for (DeviceConfig device : shuttleList) {
-                ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, device.getDeviceNo());
-                if (shuttleThread == null) {
-                    continue;
-                }
-
-                ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
-                if (shuttleProtocol == null) {
-                    continue;
-                }
-
-                if (shuttleProtocol.getCurrentLocNo() == null) {
-                    continue;
-                }
-
-                if (shuttleProtocol.getCurrentLocNo().equals(loc)) {
-                    //瀛樺湪灏忚溅
-                    return device.getDeviceNo();
-                }
-            }
-        }
-
-        return null;
-    }
-
-    //鑾峰彇灏忚溅寰呮満浣�
-    public static String getShuttleStandbyLocNo(String locNo) {
-        LocMastService locMastService = SpringUtils.getBean(LocMastService.class);
-        NavigateUtils navigateUtils = SpringUtils.getBean(NavigateUtils.class);
-        List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>()
-                .eq("loc_type", "standby")
-                .eq("lev1", Utils.getLev(locNo)));
-        if (locMasts.isEmpty()) {
-            return null;
-        }
-
-        Integer recentDistance = Integer.MAX_VALUE;
-        String recentLocNo = null;
-        for (LocMast locMast : locMasts) {
-            //寰呮満浣嶅埌鐩爣鐐硅窛绂�
-            List<NavigateNode> currentShuttlePath = navigateUtils.calc(locNo, locMast.getLocNo(), NavigationMapType.getMapTypes(NavigationMapType.NORMAL), Utils.getShuttlePoints(0, Utils.getLev(locNo)), null);//鎼滅储绌洪棽绌挎杞︼紝浣跨敤姝e父閫氶亾鍦板浘
-            if (currentShuttlePath == null) {
-                continue;
-            }
-            Integer currentAllDistance = navigateUtils.getOriginPathAllDistance(currentShuttlePath);//璁$畻褰撳墠璺緞琛岃蛋鎬昏窛绂�
-            if (currentAllDistance < recentDistance) {
-                recentDistance = currentAllDistance;
-                recentLocNo = locMast.getLocNo();
-            }
-        }
-
-        return recentLocNo;
     }
 
     public static boolean isJSON(String value) {
diff --git a/src/main/java/com/zy/asrs/ws/ConsoleWebSocket.java b/src/main/java/com/zy/asrs/ws/ConsoleWebSocket.java
index d1e6de7..be15871 100644
--- a/src/main/java/com/zy/asrs/ws/ConsoleWebSocket.java
+++ b/src/main/java/com/zy/asrs/ws/ConsoleWebSocket.java
@@ -1,13 +1,6 @@
 package com.zy.asrs.ws;
 
-import com.alibaba.fastjson.JSON;
-import com.core.common.R;
-import com.core.common.SpringUtils;
-import com.zy.asrs.controller.ConsoleController;
-import com.zy.asrs.controller.ForkLiftController;
-import com.zy.asrs.controller.LiftController;
-import com.zy.asrs.controller.ShuttleController;
-import com.zy.common.model.WebSocketMessage;
+
 import lombok.Data;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Component;
@@ -71,40 +64,6 @@
      */
     @OnMessage
     public void onMessage(String message, Session session) throws IOException {
-        ShuttleController shuttleController = SpringUtils.getBean(ShuttleController.class);
-        ForkLiftController forkLiftController = SpringUtils.getBean(ForkLiftController.class);
-        LiftController liftController = SpringUtils.getBean(LiftController.class);
-        ConsoleController consoleController = SpringUtils.getBean(ConsoleController.class);
-        WebSocketMessage socketMessage = JSON.parseObject(message, WebSocketMessage.class);
-        if (socketMessage.getUrl().equals("/shuttle/table/shuttle/state")) {
-            R result = shuttleController.shuttleStateTable();
-            socketMessage.setData(JSON.toJSONString(result));
-            this.sendMessage(JSON.toJSONString(socketMessage));
-        } else if (socketMessage.getUrl().equals("/forkLift/table/lift/state")) {
-            R result = forkLiftController.liftStateTable();
-            socketMessage.setData(JSON.toJSONString(result));
-            this.sendMessage(JSON.toJSONString(socketMessage));
-        } else if (socketMessage.getUrl().equals("/lift/table/lift/state")) {
-            R result = liftController.liftStateTable();
-            socketMessage.setData(JSON.toJSONString(result));
-            this.sendMessage(JSON.toJSONString(socketMessage));
-        } else if (socketMessage.getUrl().equals("/console/map/auth")) {
-            R result = consoleController.getMapFromRedis(Integer.parseInt(socketMessage.getData()));
-            socketMessage.setData(JSON.toJSONString(result));
-            this.sendMessage(JSON.toJSONString(socketMessage));
-        } else if (socketMessage.getUrl().equals("/console/locMap/auth")) {
-            R result = consoleController.getLocMap(Integer.parseInt(socketMessage.getData()));
-            socketMessage.setData(JSON.toJSONString(result));
-            this.sendMessage(JSON.toJSONString(socketMessage));
-        } else if (socketMessage.getUrl().equals("/console/getMoveAdvancePath/auth")) {
-            R result = consoleController.getMoveAdvancePath(Integer.parseInt(socketMessage.getData()));
-            socketMessage.setData(JSON.toJSONString(result));
-            this.sendMessage(JSON.toJSONString(socketMessage));
-        } else if (socketMessage.getUrl().equals("/console/getLockPath/auth")) {
-            R result = consoleController.getLockPath(Integer.parseInt(socketMessage.getData()));
-            socketMessage.setData(JSON.toJSONString(result));
-            this.sendMessage(JSON.toJSONString(socketMessage));
-        }
 //        log.info("鏀跺埌鏉ヨ嚜杩炴帴锛�" + sessionId + "鐨勪俊鎭�:" + message);
     }
 
diff --git a/src/main/java/com/zy/asrs/ws/ShuttleWebSocket.java b/src/main/java/com/zy/asrs/ws/ShuttleWebSocket.java
deleted file mode 100644
index e8ba1d1..0000000
--- a/src/main/java/com/zy/asrs/ws/ShuttleWebSocket.java
+++ /dev/null
@@ -1,152 +0,0 @@
-package com.zy.asrs.ws;
-
-import com.alibaba.fastjson.JSON;
-import com.core.common.R;
-import com.core.common.SpringUtils;
-import com.zy.asrs.controller.ShuttleController;
-import com.zy.common.model.WebSocketMessage;
-import lombok.Data;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Component;
-import org.springframework.stereotype.Service;
-
-import javax.websocket.*;
-import javax.websocket.server.ServerEndpoint;
-import java.io.IOException;
-import java.util.concurrent.CopyOnWriteArraySet;
-
-@Component
-@Slf4j
-@Service
-@ServerEndpoint("/shuttle/websocket")
-@Data
-public class ShuttleWebSocket {
-
-    //瀹㈡埛绔湪绾夸汉鏁�
-    private static int onlineClient = 0;
-
-    //瀹㈡埛绔睜
-    private static CopyOnWriteArraySet<ShuttleWebSocket> webSocketServers = new CopyOnWriteArraySet<>();
-
-    private Session session;
-
-    //鏄惁閴存潈锛岄粯璁ゆ湭閴存潈
-    private boolean auth = false;
-
-    //鏄惁涓虹鐞嗗憳
-    private boolean isAdmin = false;
-
-    //绠¢亾ID
-    private String sessionId;
-
-    @OnOpen
-    public void onOpen(Session session) {
-        this.session = session;
-        this.sessionId = session.getId();
-
-        //灏唚ebsocket瀵硅薄杩涜淇濆瓨
-        webSocketServers.add(this);
-        //娣诲姞鍦ㄧ嚎浜烘暟
-        addOnlineClient();
-        log.info("鏈夋柊绐楀彛寮�濮嬬洃鍚�:" + session.getId() + ",褰撳墠鍦ㄧ嚎浜烘暟涓�:" + getOnlineClient());
-    }
-
-    /**
-     * 杩炴帴鍏抽棴璋冪敤鐨勬柟娉�
-     */
-    @OnClose
-    public void onClose() {
-        webSocketServers.remove(this);  //浠巗et涓垹闄�
-        subOnlineClient();           //鍦ㄧ嚎鏁板噺1
-        log.info("鍏抽棴鐨勮繛鎺ワ細" + sessionId);
-        log.info("鏈変竴杩炴帴鍏抽棴锛佸綋鍓嶅湪绾夸汉鏁颁负" + getOnlineClient());
-    }
-
-    /**
-     * 鏀跺埌瀹㈡埛绔秷鎭悗璋冪敤鐨勬柟娉�
-     * @ Param message 瀹㈡埛绔彂閫佽繃鏉ョ殑娑堟伅
-     */
-    @OnMessage
-    public void onMessage(String message, Session session) throws IOException {
-        ShuttleController shuttleController = SpringUtils.getBean(ShuttleController.class);
-        WebSocketMessage socketMessage = JSON.parseObject(message, WebSocketMessage.class);
-        if (socketMessage.getUrl().equals("/shuttle/table/shuttle/state")) {
-            R result = shuttleController.shuttleStateTable();
-            socketMessage.setData(JSON.toJSONString(result));
-            this.sendMessage(JSON.toJSONString(socketMessage));
-        } else if (socketMessage.getUrl().equals("/shuttle/output/shuttle")) {
-            R result = shuttleController.steOutput();
-            socketMessage.setData(JSON.toJSONString(result));
-            this.sendMessage(JSON.toJSONString(socketMessage));
-        }
-//        log.info("鏀跺埌鏉ヨ嚜杩炴帴锛�" + sessionId + "鐨勪俊鎭�:" + message);
-    }
-
-    /**
-     * @ Param session
-     * @ Param error
-     */
-    @OnError
-    public void onError(Session session, Throwable error) {
-        log.error("鍙戠敓閿欒");
-        error.printStackTrace();
-    }
-
-    /**
-     * 瀹炵幇鏈嶅姟鍣ㄤ富鍔ㄦ帹閫�
-     */
-    public void sendMessage(String message) throws IOException {
-        this.session.getBasicRemote().sendText(message);
-    }
-
-    /**
-     * 鏈嶅姟鍣ㄤ富鍔ㄦ帹閫佺粰鎸囧畾鐢ㄦ埛
-     */
-    public void sendMessage(String message, String account) throws IOException {
-        for (ShuttleWebSocket item : webSocketServers) {
-            item.sendMessage(message);
-        }
-    }
-
-    public void sendMessage(String message, int userId) throws IOException {
-        for (ShuttleWebSocket item : webSocketServers) {
-            item.sendMessage(message);
-        }
-    }
-
-    /**
-     * 鏈嶅姟鍣ㄤ富鍔ㄦ帹閫佺粰鎸囧畾鐢ㄦ埛
-     */
-    public static boolean sendMessageGlobal(String message, String account) throws IOException {
-        boolean tag = false;
-        for (ShuttleWebSocket item : webSocketServers) {
-            tag = true;
-            item.sendMessage(message);
-        }
-        return tag;
-    }
-
-    public static boolean sendMessageGlobal(String message, int userId) throws IOException {
-        boolean tag = false;
-        for (ShuttleWebSocket item : webSocketServers) {
-            tag = true;
-            item.sendMessage(message);
-        }
-        return tag;
-    }
-
-    public static synchronized int getOnlineClient() {
-        return onlineClient;
-    }
-
-    public static synchronized void addOnlineClient() {
-        ShuttleWebSocket.onlineClient++;
-    }
-
-    public static synchronized void subOnlineClient() {
-        if (ShuttleWebSocket.onlineClient > 0) {
-            ShuttleWebSocket.onlineClient--;
-        }
-    }
-
-}
diff --git a/src/main/java/com/zy/common/CodeBuilder.java b/src/main/java/com/zy/common/CodeBuilder.java
index 9f9e5d9..4f5ce96 100644
--- a/src/main/java/com/zy/common/CodeBuilder.java
+++ b/src/main/java/com/zy/common/CodeBuilder.java
@@ -12,10 +12,10 @@
         CoolGenerator generator = new CoolGenerator();
         // mysql
         generator.sqlOsType = SqlOsType.MYSQL;
-        generator.url="localhost:3306/shuttle_rcs";
+        generator.url="localhost:3306/wcs";
         generator.username="root";
         generator.password="root";
-        generator.table="rcs_device_config";
+        generator.table="asr_bas_crnp_opt";
         // sqlserver
 //        generator.sqlOsType = SqlOsType.SQL_SERVER;
 //        generator.url="127.0.0.1:1433;databasename=tzskasrs";
diff --git a/src/main/java/com/zy/common/model/LiftPointModel.java b/src/main/java/com/zy/common/model/LiftPointModel.java
deleted file mode 100644
index 39040ef..0000000
--- a/src/main/java/com/zy/common/model/LiftPointModel.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package com.zy.common.model;
-
-import lombok.Data;
-
-@Data
-public class LiftPointModel {
-
-    private Integer row;
-
-    private Integer bay;
-
-}
diff --git a/src/main/java/com/zy/common/model/MatDto.java b/src/main/java/com/zy/common/model/MatDto.java
deleted file mode 100644
index 27442c7..0000000
--- a/src/main/java/com/zy/common/model/MatDto.java
+++ /dev/null
@@ -1,76 +0,0 @@
-package com.zy.common.model;
-
-import lombok.Data;
-
-/**
- * Created by vincent on 2020/8/6
- */
-@Data
-public class MatDto {
-
-    // 鐗╂枡缂栧彿
-    private String matNo;
-
-    // 鐗╂枡鍚嶇О
-    private String maknx;
-
-    // 搴撲綅瑙勬牸
-    private String specs;
-
-    // 鐗╂枡鏁伴噺
-    private Double count;
-
-    // 搴撲綅鏁伴噺
-    private Double total;
-
-    // 鐗╂枡鍚嶇О
-    private String model;
-
-    // 绠辩爜
-    private String containerCode;
-
-    // 鏉$爜
-    private String batch;
-
-    // 璁㈠崟缂栧彿
-    private String orderNo;
-
-    public MatDto() {
-    }
-
-    public MatDto(String matNo, String maknx, Double count) {
-        this.matNo = matNo;
-        this.maknx = maknx;
-        this.count = count;
-    }
-    public MatDto(String matNo, String maknx, Double count,String specs) {
-        this.specs = specs;
-        this.matNo = matNo;
-        this.maknx = maknx;
-        this.count = count;
-    }
-    public MatDto(String matNo, String maknx, Double count,Double total,String specs) {
-        this.specs = specs;
-        this.matNo = matNo;
-        this.maknx = maknx;
-        this.count = count;
-        this.total = total;
-    }
-    public MatDto(String matNo, String maknx, Double count,Double total,String specs,String containerCode) {
-        this.containerCode = containerCode;
-        this.specs = specs;
-        this.matNo = matNo;
-        this.maknx = maknx;
-        this.count = count;
-        this.total = total;
-    }
-    public MatDto(String matNo, String maknx, Double count,Double total,String specs,String containerCode,String orderNo) {
-        this.containerCode = containerCode;
-        this.specs = specs;
-        this.matNo = matNo;
-        this.maknx = maknx;
-        this.count = count;
-        this.total = total;
-        this.orderNo = orderNo;
-    }
-}
diff --git a/src/main/java/com/zy/common/model/NavigateNode.java b/src/main/java/com/zy/common/model/NavigateNode.java
deleted file mode 100644
index 4ebf6d6..0000000
--- a/src/main/java/com/zy/common/model/NavigateNode.java
+++ /dev/null
@@ -1,64 +0,0 @@
-package com.zy.common.model;
-
-import lombok.Data;
-
-import java.io.Serializable;
-
-/**
- * A*瀵昏矾绠楁硶Node鑺傜偣
- */
-@Data
-public class NavigateNode implements Comparable<NavigateNode>, Cloneable, Serializable {
-
-    private int x;//鍧愭爣x
-    private int y;//鍧愭爣y
-    private int z;//鍧愭爣z(楂樺害)
-    private int F;//缁煎悎鑺辫垂鐨勬鏁�
-    private int G;//宸茬粡鑺辫垂鐨勬鏁�
-    private int H;//灏嗚鑺辫垂鐨勬鏁�
-    private NavigateNode Father;//鐖惰妭鐐�
-    private Boolean isInflectionPoint;//鏄惁涓烘嫄鐐�
-    private String direction;//琛岃蛋鏂瑰悜
-    private Integer moveDistance;//琛岃蛋璺濈
-    private Integer nodeValue;//鑺傜偣鏁版嵁
-    private Boolean linePartAllowGo = false;//鐩寸嚎娈甸儴鍒嗭紝鍏佽鐩存帴琛岃蛋
-    private Long linePartFlag;//鐩寸嚎娈垫暟鎹爣璇�
-
-    public NavigateNode(int x, int y) {
-        this.x = x;
-        this.y = y;
-    }
-
-    //閫氳繃缁撶偣鐨勫潗鏍囧拰鐩爣缁撶偣鐨勫潗鏍囧彲浠ヨ绠楀嚭F锛� G锛� H涓変釜灞炴��
-    //闇�瑕佷紶鍏ヨ繖涓妭鐐圭殑涓婁竴涓妭鐐瑰拰鏈�缁堢殑缁撶偣
-    public void init_node(NavigateNode father, NavigateNode end) {
-        this.Father = father;
-        if (this.Father != null) {
-            //璧拌繃鐨勬鏁扮瓑浜庣埗鑺傜偣璧拌繃鐨勬鏁板姞涓�
-            this.G = father.G + this.G;
-        } else { //鐖惰妭鐐逛负绌轰唬琛ㄥ畠鏄涓�涓粨鐐�
-            this.G = 0;
-        }
-
-        //浠ヤ笅璁$畻鏂规涓虹畻娉曞師濮嬫柟妗堬紝娌℃湁鍘绘嫄鐐规柟妗堛�傚凡琚玈olution璁$畻鏃惰嚜鍔ㄨ鐩栥��
-        //璁$畻閫氳繃鐜板湪鐨勭粨鐐圭殑浣嶇疆鍜屾渶缁堢粨鐐圭殑浣嶇疆璁$畻H鍊�(鏇煎搱椤挎硶锛氬潗鏍囧垎鍒彇宸�肩浉鍔�)
-        this.H = Math.abs(this.x - end.x) + Math.abs(this.y - end.y);
-        this.F = this.G + this.H;
-    }
-
-    @Override
-    public int compareTo(NavigateNode o) {
-        return Integer.compare(this.F, o.F);
-    }
-
-    @Override
-    public NavigateNode clone() {
-        try {
-            return (NavigateNode) super.clone();
-        } catch (CloneNotSupportedException e) {
-            e.printStackTrace();
-        }
-        return null;
-    }
-
-}
diff --git a/src/main/java/com/zy/common/model/SearchLocParam.java b/src/main/java/com/zy/common/model/SearchLocParam.java
deleted file mode 100644
index 835c391..0000000
--- a/src/main/java/com/zy/common/model/SearchLocParam.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package com.zy.common.model;
-
-import com.alibaba.fastjson.JSON;
-import lombok.Data;
-
-/**
- * Created by vincent on 2020/10/30
- */
-@Data
-public class SearchLocParam {
-
-    private Integer wrkNo;
-
-    private Integer ioType;
-
-    private Integer sourceStaNo;
-
-    private Integer liftNo;
-
-    private String barcode;
-
-    // 搴撲綅瑙勬牸锛� 0:鏈煡, 1:浣庡簱浣�, 2:涓簱浣�, 3:楂樺簱浣� 锛�
-    private Short locType1;
-
-    public static void main(String[] args) {
-        SearchLocParam searchLocParam = new SearchLocParam();
-        searchLocParam.setIoType(1);
-        searchLocParam.setSourceStaNo(101);
-        searchLocParam.setBarcode("10001111");
-        searchLocParam.setLocType1((short) 1);
-        System.out.println(JSON.toJSONString(searchLocParam));
-    }
-
-}
diff --git a/src/main/java/com/zy/common/model/ShuttleOperaResult.java b/src/main/java/com/zy/common/model/ShuttleOperaResult.java
deleted file mode 100644
index 82f4120..0000000
--- a/src/main/java/com/zy/common/model/ShuttleOperaResult.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package com.zy.common.model;
-
-import com.zy.core.model.command.NyShuttleHttpCommand;
-import lombok.Data;
-
-import java.util.List;
-
-@Data
-//缁撴灉闆�
-public class ShuttleOperaResult {
-    //鍛戒护闆嗗悎
-    private List<NyShuttleHttpCommand> commands;
-    //琛岃蛋璺緞闆嗗悎
-    private List<NavigateNode> nodes;
-
-    public ShuttleOperaResult(List<NyShuttleHttpCommand> commands, List<NavigateNode> nodes) {
-        this.commands = commands;
-        this.nodes = nodes;
-    }
-}
\ No newline at end of file
diff --git a/src/main/java/com/zy/common/utils/ForkLiftUtils.java b/src/main/java/com/zy/common/utils/ForkLiftUtils.java
deleted file mode 100644
index fed6942..0000000
--- a/src/main/java/com/zy/common/utils/ForkLiftUtils.java
+++ /dev/null
@@ -1,245 +0,0 @@
-package com.zy.common.utils;
-
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONObject;
-import com.baomidou.mybatisplus.mapper.EntityWrapper;
-import com.core.common.SpringUtils;
-import com.zy.asrs.entity.DeviceConfig;
-import com.zy.asrs.service.DeviceConfigService;
-import com.zy.asrs.utils.Utils;
-import com.zy.common.model.NavigateNode;
-import com.zy.core.cache.SlaveConnection;
-import com.zy.core.enums.SlaveType;
-import com.zy.core.model.protocol.ForkLiftStaProtocol;
-import com.zy.core.thread.ForkLiftThread;
-import com.zy.system.entity.Config;
-import com.zy.system.service.ConfigService;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-
-/**
- * 璐у弶鎻愬崌鏈哄伐鍏风被
- */
-public class ForkLiftUtils {
-
-    //鑾峰彇鎻愬崌鏈烘墍鏈夌珯鐐�
-    public static List<Integer> getLiftAllStaNo(Integer liftNo) {
-        List<Integer> list = new ArrayList<>();
-        ForkLiftThread forkLiftThread = (ForkLiftThread) SlaveConnection.get(SlaveType.ForkLift, liftNo);
-        if (forkLiftThread == null) {
-            return list;
-        }
-
-        for (ForkLiftStaProtocol forkLiftStaProtocol : forkLiftThread.getForkLiftStaProtocols()) {
-            list.add(forkLiftStaProtocol.getSiteId());
-        }
-
-        return list;
-    }
-
-    //鑾峰彇鎻愬崌鏈烘墍缁戝畾鐨勮緭閫佺嚎鎵�鏈夌珯鐐�
-    public static List<Integer> getConveyorBindLiftAllStaNo(Integer liftNo) {
-        List<Integer> list = new ArrayList<>();
-        ConfigService configService = SpringUtils.getBean(ConfigService.class);
-        if (configService == null) {
-            return list;
-        }
-
-        Config conveyorLiftBindConfig = configService.selectOne(new EntityWrapper<Config>().eq("code", "conveyorLiftBind"));
-        if(conveyorLiftBindConfig == null) {
-            return list;
-        }
-
-        List<JSONObject> val = JSON.parseArray(conveyorLiftBindConfig.getValue(), JSONObject.class);
-        if (val.isEmpty()) {
-            return list;
-        }
-
-        for (JSONObject data : val) {
-            if(data.getInteger("liftNo").equals(liftNo)) {
-                list.add(data.getInteger("staNo"));
-            }
-        }
-
-        return list;
-    }
-
-    //鑾峰彇鎻愬崌鏈虹珯鐐�
-    public static ForkLiftStaProtocol getLiftStaByStaNo(Integer siteId) {
-        DeviceConfigService deviceConfigService = SpringUtils.getBean(DeviceConfigService.class);
-        List<DeviceConfig> forkliftList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>()
-                .eq("device_type", String.valueOf(SlaveType.ForkLift)));
-        for (DeviceConfig device : forkliftList) {
-            ForkLiftThread forkLiftThread = (ForkLiftThread) SlaveConnection.get(SlaveType.ForkLift, device.getDeviceNo());
-            if (forkLiftThread == null) {
-                return null;
-            }
-
-            for (ForkLiftStaProtocol forkLiftStaProtocol : forkLiftThread.getForkLiftStaProtocols()) {
-                if (forkLiftStaProtocol.getSiteId().equals(siteId)) {
-                    return forkLiftStaProtocol;
-                }
-            }
-        }
-
-        return null;
-    }
-
-    //鑾峰彇鎻愬崌鏈虹珯鐐�
-    public static ForkLiftStaProtocol getLiftStaByLev(Integer liftNo, Integer lev) {
-        ForkLiftThread forkLiftThread = (ForkLiftThread) SlaveConnection.get(SlaveType.ForkLift, liftNo);
-        if (forkLiftThread == null) {
-            return null;
-        }
-
-        for (ForkLiftStaProtocol forkLiftStaProtocol : forkLiftThread.getForkLiftStaProtocols()) {
-            if (forkLiftStaProtocol.getLev().equals(lev)) {
-                return forkLiftStaProtocol;
-            }
-        }
-
-        return null;
-    }
-
-    //鑾峰彇鎻愬崌鏈鸿緭閫佺珯鍙婂叾鍓嶄竴绔欒妭鐐�
-    public static List<NavigateNode> getLiftStaNodes(Integer staNo) {
-        List<NavigateNode> targetNodes = new ArrayList<>();
-        //鑾峰彇鐩爣绔�
-        ForkLiftStaProtocol targetLiftSta = ForkLiftUtils.getLiftStaByStaNo(staNo);
-        if (targetLiftSta == null) {
-            return null;//鎵句笉鍒扮珯鐐�
-        }
-        NavigateNode targetNode = NavigatePositionConvert.locNoToNode(targetLiftSta.getLocNo());//鐩爣鑺傜偣
-        String targetLastLocNo = Utils.getLocNo(Utils.getRow(targetLiftSta.getLocNo()) - 1, Utils.getBay(targetLiftSta.getLocNo()), Utils.getLev(targetLiftSta.getLocNo()));//鐩爣鑺傜偣鍓嶄竴绔�
-        NavigateNode targetLastNode = NavigatePositionConvert.locNoToNode(targetLastLocNo);//鐩爣鑺傜偣鍓嶄竴绔�
-        targetNodes.add(targetNode);
-        targetNodes.add(targetLastNode);
-
-        return targetNodes;
-    }
-
-    //閫氳繃杈撻�佺嚎绔欏彿鑾峰彇瀵瑰簲鎻愬崌鏈哄彿
-    public static Integer getConveyorBindLiftNo(Integer staNo) {
-        ConfigService configService = SpringUtils.getBean(ConfigService.class);
-        if (configService == null) {
-            return null;
-        }
-
-        Config conveyorLiftBindConfig = configService.selectOne(new EntityWrapper<Config>().eq("code", "conveyorLiftBind"));
-        if(conveyorLiftBindConfig == null) {
-            return null;
-        }
-
-        List<JSONObject> list = JSON.parseArray(conveyorLiftBindConfig.getValue(), JSONObject.class);
-        if (list.isEmpty()) {
-            return null;
-        }
-
-        for (JSONObject data : list) {
-            if(data.getInteger("staNo").equals(staNo)) {
-                return data.getInteger("liftNo");
-            }
-        }
-
-        return null;
-    }
-
-    //璇锋眰涓婄骇绯荤粺锛屾槸鍚﹀厑璁稿嚭搴�
-    //鏌ヨ鏄惁鏈夊嚭搴撴潈闄�
-    public static boolean queryOutMission(Integer staNo) {
-        ConfigService configService = SpringUtils.getBean(ConfigService.class);
-        if (configService == null) {
-            return false;
-        }
-
-        Config queryOutMissionPathEnableConfig = configService.selectOne(new EntityWrapper<Config>().eq("code", "queryOutMissionPathEnable"));
-        if (queryOutMissionPathEnableConfig != null) {
-            String queryOutMissionPathEnable = queryOutMissionPathEnableConfig.getValue();
-            if (!queryOutMissionPathEnable.equals("Y")) {
-                return true;//鍏抽棴鏌ヨ鍑哄簱鏉冮檺鍔熻兘
-            }
-        }
-
-        Config superSystemUriConfig = configService.selectOne(new EntityWrapper<Config>().eq("code", "superSystemUri"));
-        if (superSystemUriConfig == null) {
-            return false;
-        }
-        String superSystemUri = superSystemUriConfig.getValue();
-
-        Config queryOutMissionPathConfig = configService.selectOne(new EntityWrapper<Config>().eq("code", "queryOutMissionPath"));
-        if (queryOutMissionPathConfig == null) {
-            return false;
-        }
-        String missionPath = queryOutMissionPathConfig.getValue();
-
-        try {
-            HashMap<String, Object> data = new HashMap<>();
-            data.put("staNo", staNo);
-
-            String response = new HttpHandler.Builder()
-                    .setUri(superSystemUri)
-                    .setPath(missionPath)
-                    .setJson(JSON.toJSONString(data))
-                    .build()
-                    .doPost();
-            if (response.equals("ok")) {
-                return true;//鏈夊嚭搴撴潈闄�
-            }
-        }catch (Exception e){
-            e.printStackTrace();
-        }
-        return false;
-    }
-
-    //璇锋眰涓婄骇绯荤粺锛屾槸鍚﹀厑璁稿叆搴�
-    //鏌ヨ鏄惁鏈夊叆搴撴潈闄�
-    public static boolean queryInMission(Integer sourceStaNo, Integer liftNo, String superTaskNo) {
-        ConfigService configService = SpringUtils.getBean(ConfigService.class);
-        if (configService == null) {
-            return false;
-        }
-
-        Config queryInMissionPathEnableConfig = configService.selectOne(new EntityWrapper<Config>().eq("code", "queryInMissionPathEnable"));
-        if (queryInMissionPathEnableConfig != null) {
-            String queryInMissionPathEnable = queryInMissionPathEnableConfig.getValue();
-            if (!queryInMissionPathEnable.equals("Y")) {
-                return true;//鍏抽棴鏌ヨ鍏ュ簱鏉冮檺鍔熻兘
-            }
-        }
-
-        Config superSystemUriConfig = configService.selectOne(new EntityWrapper<Config>().eq("code", "superSystemUri"));
-        if (superSystemUriConfig == null) {
-            return false;
-        }
-        String superSystemUri = superSystemUriConfig.getValue();
-
-        Config queryInMissionPathConfig = configService.selectOne(new EntityWrapper<Config>().eq("code", "queryInMissionPath"));
-        if (queryInMissionPathConfig == null) {
-            return false;
-        }
-        String missionPath = queryInMissionPathConfig.getValue();
-
-        try {
-            HashMap<String, Object> data = new HashMap<>();
-            data.put("staNo", sourceStaNo);
-            data.put("liftNo", liftNo);
-            data.put("superTaskNo", superTaskNo);
-
-            String response = new HttpHandler.Builder()
-                    .setUri(superSystemUri)
-                    .setPath(missionPath)
-                    .setJson(JSON.toJSONString(data))
-                    .build()
-                    .doPost();
-            if (response.equals("ok")) {
-                return true;//鏈夊叆搴撴潈闄�
-            }
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-        return false;
-    }
-
-}
diff --git a/src/main/java/com/zy/common/utils/LiftUtils.java b/src/main/java/com/zy/common/utils/LiftUtils.java
deleted file mode 100644
index 6a25e8c..0000000
--- a/src/main/java/com/zy/common/utils/LiftUtils.java
+++ /dev/null
@@ -1,248 +0,0 @@
-package com.zy.common.utils;
-
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONObject;
-import com.baomidou.mybatisplus.mapper.EntityWrapper;
-import com.core.common.SpringUtils;
-import com.zy.asrs.entity.DeviceConfig;
-import com.zy.asrs.service.DeviceConfigService;
-import com.zy.asrs.utils.Utils;
-import com.zy.common.model.NavigateNode;
-import com.zy.core.cache.SlaveConnection;
-import com.zy.core.enums.SlaveType;
-import com.zy.core.model.protocol.ForkLiftStaProtocol;
-import com.zy.core.model.protocol.LiftStaProtocol;
-import com.zy.core.thread.ForkLiftThread;
-import com.zy.core.thread.LiftThread;
-import com.zy.system.entity.Config;
-import com.zy.system.service.ConfigService;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-
-/**
- * 鎻愬崌鏈哄伐鍏风被
- */
-public class LiftUtils {
-
-    //鑾峰彇鎻愬崌鏈烘墍鏈夌珯鐐�
-    public static List<Integer> getLiftAllStaNo(Integer liftNo) {
-        List<Integer> list = new ArrayList<>();
-        LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, liftNo);
-        if (liftThread == null) {
-            return list;
-        }
-
-        for (LiftStaProtocol liftStaProtocol : liftThread.getLiftStaProtocols()) {
-            list.add(liftStaProtocol.getSiteId());
-        }
-
-        return list;
-    }
-
-    //鑾峰彇鎻愬崌鏈烘墍缁戝畾鐨勮緭閫佺嚎鎵�鏈夌珯鐐�
-    public static List<Integer> getConveyorBindLiftAllStaNo(Integer liftNo) {
-        List<Integer> list = new ArrayList<>();
-        ConfigService configService = SpringUtils.getBean(ConfigService.class);
-        if (configService == null) {
-            return list;
-        }
-
-        Config conveyorLiftBindConfig = configService.selectOne(new EntityWrapper<Config>().eq("code", "conveyorLiftBind"));
-        if(conveyorLiftBindConfig == null) {
-            return list;
-        }
-
-        List<JSONObject> val = JSON.parseArray(conveyorLiftBindConfig.getValue(), JSONObject.class);
-        if (val.isEmpty()) {
-            return list;
-        }
-
-        for (JSONObject data : val) {
-            if(data.getInteger("liftNo").equals(liftNo)) {
-                list.add(data.getInteger("staNo"));
-            }
-        }
-
-        return list;
-    }
-
-    //鑾峰彇鎻愬崌鏈虹珯鐐�
-    public static LiftStaProtocol getLiftStaByStaNo(Integer siteId) {
-        DeviceConfigService deviceConfigService = SpringUtils.getBean(DeviceConfigService.class);
-        List<DeviceConfig> liftList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>()
-                .eq("device_type", String.valueOf(SlaveType.Lift)));
-        for (DeviceConfig device : liftList) {
-            LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, device.getDeviceNo());
-            if (liftThread == null) {
-                return null;
-            }
-
-            for (LiftStaProtocol liftStaProtocol : liftThread.getLiftStaProtocols()) {
-                if (liftStaProtocol.getSiteId().equals(siteId)) {
-                    return liftStaProtocol;
-                }
-            }
-        }
-
-        return null;
-    }
-
-    //鑾峰彇鎻愬崌鏈虹珯鐐�
-    public static LiftStaProtocol getLiftStaByLev(Integer liftNo, Integer lev) {
-        LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, liftNo);
-        if (liftThread == null) {
-            return null;
-        }
-        for (LiftStaProtocol liftStaProtocol : liftThread.getLiftStaProtocols()) {
-            if (liftStaProtocol.getLev().equals(lev)) {
-                return liftStaProtocol;
-            }
-        }
-
-        return null;
-    }
-
-    //鑾峰彇鎻愬崌鏈鸿緭閫佺珯鍙婂叾鍓嶄竴绔欒妭鐐�
-    public static List<NavigateNode> getLiftStaNodes(Integer staNo) {
-        List<NavigateNode> targetNodes = new ArrayList<>();
-        //鑾峰彇鐩爣绔�
-        LiftStaProtocol targetLiftSta = LiftUtils.getLiftStaByStaNo(staNo);
-        if (targetLiftSta == null) {
-            return null;//鎵句笉鍒扮珯鐐�
-        }
-        NavigateNode targetNode = NavigatePositionConvert.locNoToNode(targetLiftSta.getLocNo());//鐩爣鑺傜偣
-        String targetLastLocNo = Utils.getLocNo(Utils.getRow(targetLiftSta.getLocNo()) - 1, Utils.getBay(targetLiftSta.getLocNo()), Utils.getLev(targetLiftSta.getLocNo()));//鐩爣鑺傜偣鍓嶄竴绔�
-        NavigateNode targetLastNode = NavigatePositionConvert.locNoToNode(targetLastLocNo);//鐩爣鑺傜偣鍓嶄竴绔�
-        targetNodes.add(targetNode);
-        targetNodes.add(targetLastNode);
-
-        return targetNodes;
-    }
-
-    //閫氳繃杈撻�佺嚎绔欏彿鑾峰彇瀵瑰簲鎻愬崌鏈哄彿
-    public static Integer getConveyorBindLiftNo(Integer staNo) {
-        ConfigService configService = SpringUtils.getBean(ConfigService.class);
-        if (configService == null) {
-            return null;
-        }
-
-        Config conveyorLiftBindConfig = configService.selectOne(new EntityWrapper<Config>().eq("code", "conveyorLiftBind"));
-        if(conveyorLiftBindConfig == null) {
-            return null;
-        }
-
-        List<JSONObject> list = JSON.parseArray(conveyorLiftBindConfig.getValue(), JSONObject.class);
-        if (list.isEmpty()) {
-            return null;
-        }
-
-        for (JSONObject data : list) {
-            if(data.getInteger("staNo").equals(staNo)) {
-                return data.getInteger("liftNo");
-            }
-        }
-
-        return null;
-    }
-
-    //璇锋眰涓婄骇绯荤粺锛屾槸鍚﹀厑璁稿嚭搴�
-    //鏌ヨ鏄惁鏈夊嚭搴撴潈闄�
-    public static boolean queryOutMission(Integer staNo) {
-        ConfigService configService = SpringUtils.getBean(ConfigService.class);
-        if (configService == null) {
-            return false;
-        }
-
-        Config queryOutMissionPathEnableConfig = configService.selectOne(new EntityWrapper<Config>().eq("code", "queryOutMissionPathEnable"));
-        if (queryOutMissionPathEnableConfig != null) {
-            String queryOutMissionPathEnable = queryOutMissionPathEnableConfig.getValue();
-            if (!queryOutMissionPathEnable.equals("Y")) {
-                return true;//鍏抽棴鏌ヨ鍑哄簱鏉冮檺鍔熻兘
-            }
-        }
-
-        Config superSystemUriConfig = configService.selectOne(new EntityWrapper<Config>().eq("code", "superSystemUri"));
-        if (superSystemUriConfig == null) {
-            return false;
-        }
-        String superSystemUri = superSystemUriConfig.getValue();
-
-        Config queryOutMissionPathConfig = configService.selectOne(new EntityWrapper<Config>().eq("code", "queryOutMissionPath"));
-        if (queryOutMissionPathConfig == null) {
-            return false;
-        }
-        String missionPath = queryOutMissionPathConfig.getValue();
-
-        try {
-            HashMap<String, Object> data = new HashMap<>();
-            data.put("staNo", staNo);
-
-            String response = new HttpHandler.Builder()
-                    .setUri(superSystemUri)
-                    .setPath(missionPath)
-                    .setJson(JSON.toJSONString(data))
-                    .build()
-                    .doPost();
-            JSONObject result = JSON.parseObject(response);
-            if (result.getInteger("code") == 200) {
-                return true;//鏈夊嚭搴撴潈闄�
-            }
-        }catch (Exception e){
-            e.printStackTrace();
-        }
-        return false;
-    }
-
-    //璇锋眰涓婄骇绯荤粺锛屾槸鍚﹀厑璁稿叆搴�
-    //鏌ヨ鏄惁鏈夊叆搴撴潈闄�
-    public static boolean queryInMission(Integer sourceStaNo, Integer liftNo, String superTaskNo) {
-        ConfigService configService = SpringUtils.getBean(ConfigService.class);
-        if (configService == null) {
-            return false;
-        }
-
-        Config queryInMissionPathEnableConfig = configService.selectOne(new EntityWrapper<Config>().eq("code", "queryInMissionPathEnable"));
-        if (queryInMissionPathEnableConfig != null) {
-            String queryInMissionPathEnable = queryInMissionPathEnableConfig.getValue();
-            if (!queryInMissionPathEnable.equals("Y")) {
-                return true;//鍏抽棴鏌ヨ鍏ュ簱鏉冮檺鍔熻兘
-            }
-        }
-
-        Config superSystemUriConfig = configService.selectOne(new EntityWrapper<Config>().eq("code", "superSystemUri"));
-        if (superSystemUriConfig == null) {
-            return false;
-        }
-        String superSystemUri = superSystemUriConfig.getValue();
-
-        Config queryInMissionPathConfig = configService.selectOne(new EntityWrapper<Config>().eq("code", "queryInMissionPath"));
-        if (queryInMissionPathConfig == null) {
-            return false;
-        }
-        String missionPath = queryInMissionPathConfig.getValue();
-
-        try {
-            HashMap<String, Object> data = new HashMap<>();
-            data.put("staNo", sourceStaNo);
-            data.put("liftNo", liftNo);
-            data.put("superTaskNo", superTaskNo);
-
-            String response = new HttpHandler.Builder()
-                    .setUri(superSystemUri)
-                    .setPath(missionPath)
-                    .setJson(JSON.toJSONString(data))
-                    .build()
-                    .doPost();
-            JSONObject result = JSON.parseObject(response);
-            if (result.getInteger("code") == 200) {
-                return true;//鏈夊嚭搴撴潈闄�
-            }
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-        return false;
-    }
-
-}
diff --git a/src/main/java/com/zy/common/utils/NavigateMapData.java b/src/main/java/com/zy/common/utils/NavigateMapData.java
deleted file mode 100644
index 9ad47cb..0000000
--- a/src/main/java/com/zy/common/utils/NavigateMapData.java
+++ /dev/null
@@ -1,418 +0,0 @@
-package com.zy.common.utils;
-
-import com.alibaba.fastjson.JSON;
-import com.baomidou.mybatisplus.mapper.EntityWrapper;
-import com.core.common.SpringUtils;
-import com.core.exception.CoolException;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.zy.asrs.entity.BasMap;
-import com.zy.asrs.entity.DeviceConfig;
-import com.zy.asrs.entity.LocMast;
-import com.zy.asrs.service.BasMapService;
-import com.zy.asrs.service.DeviceConfigService;
-import com.zy.asrs.service.LocMastService;
-import com.zy.asrs.utils.Utils;
-import com.zy.common.model.MapNode;
-import com.zy.common.model.NavigateNode;
-import com.zy.common.model.enums.NavigationMapType;
-import com.zy.core.cache.SlaveConnection;
-import com.zy.core.enums.MapNodeType;
-import com.zy.core.enums.RedisKeyType;
-import com.zy.core.enums.ShuttleCommandModeType;
-import com.zy.core.enums.SlaveType;
-import com.zy.core.model.TrafficControlDataModel;
-import com.zy.core.model.command.ShuttleAssignCommand;
-import com.zy.core.model.command.ShuttleCommand;
-import com.zy.core.model.command.ShuttleRedisCommand;
-import com.zy.core.model.protocol.ForkLiftStaProtocol;
-import com.zy.core.thread.ForkLiftThread;
-import com.zy.core.thread.TrafficControlThread;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-/**
- * A*绠楁硶鍦板浘鑾峰彇绫�
- */
-@Component
-public class NavigateMapData {
-
-    @Autowired
-    private RedisUtil redisUtil;
-    @Autowired
-    private DeviceConfigService deviceConfigService;
-    @Autowired
-    private BasMapService basMapService;
-    @Autowired
-    private ObjectMapper objectMapper;
-
-    /**
-     * 灏濊瘯浠巖edis鑾峰彇鏁版嵁
-     */
-    public int[][] getDataFromRedis(Integer lev, List<NavigationMapType> mapTypes, List<int[]> whitePoints, List<int[]> shuttlePoints) {
-        Object data = redisUtil.get(RedisKeyType.MAP.key + lev);
-        if (data == null) {
-            return null;
-        }
-
-        List<List<MapNode>> arrayList = (List<List<MapNode>>) data;
-        return this.getDataFormString(lev, arrayList, mapTypes, whitePoints, shuttlePoints);
-    }
-
-    /**
-     * 浠嶭ist鏁版嵁涓幏鍙栧湴鍥�
-     */
-    public int[][] getDataFormString(Integer lev, List<List<MapNode>> arrayList, List<NavigationMapType> mapTypes, List<int[]> whitePoints, List<int[]> shuttlePoints) {
-        List<List<MapNode>> lists = filterMap(mapTypes, arrayList, lev, whitePoints, shuttlePoints);//杩囨护鍦板浘鏁版嵁
-        int[][] map = new int[lists.size()][];
-        int j = 0;
-        for (List<MapNode> list : lists) {
-            int[] tmp = new int[list.size()];
-            int i = 0;
-            for (MapNode mapNode : list) {
-                //灏嗘暟鎹坊鍔犺繘浜岀淮鏁扮粍
-                tmp[i++] = mapNode.getValue();
-            }
-            //鏁版嵁娣诲姞杩涗竴缁存暟缁�
-            map[j++] = tmp;
-        }
-
-        return map;
-    }
-
-    //鑾峰彇瀹炴椂鍦板浘-JSON鏍煎紡鏁版嵁
-    public List<List<MapNode>> getJsonData(Integer lev, List<NavigationMapType> mapTypes, List<int[]> whitePoints, List<int[]> shuttlePoints) {
-        try {
-            Object data = redisUtil.get(RedisKeyType.MAP.key + lev);
-            if (data == null) {
-                return null;
-            }
-
-            List<List<MapNode>> arrayList = (List<List<MapNode>>) data;
-            List<List<MapNode>> lists = filterMap(mapTypes, arrayList, lev, whitePoints, shuttlePoints);//杩囨护鍦板浘鏁版嵁
-            return lists;
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-        return null;
-    }
-
-    //鑾峰彇鍘熷鍦板浘-JSON鏍煎紡鏁版嵁
-    public List<List<MapNode>> getJsonOriginData(Integer lev, List<NavigationMapType> mapTypes, List<int[]> whitePoints, List<int[]> shuttlePoints) {
-        try {
-            BasMap basMap = basMapService.selectLatestMap(lev);
-            String originData = basMap.getOriginData();
-            //瑙f瀽json鍦板浘鏁版嵁
-            ArrayList arrayList = JSON.parseObject(originData, ArrayList.class);
-            //閲嶅缓鏁版嵁鏍煎紡
-            List<List<MapNode>> lists = rebuildData(arrayList);
-            return lists;
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-        return null;
-    }
-
-    public int[][] parseJsonDataArr(List<List<MapNode>> lists) {
-        int[][] map = new int[lists.size()][];
-        int j = 0;
-        for (List<MapNode> list : lists) {
-            int[] tmp = new int[list.size()];
-            int i = 0;
-            for (MapNode mapNode : list) {
-                //灏嗘暟鎹坊鍔犺繘浜岀淮鏁扮粍
-                tmp[i++] = mapNode.getValue();
-            }
-            //鏁版嵁娣诲姞杩涗竴缁存暟缁�
-            map[j++] = tmp;
-        }
-
-        return map;
-    }
-
-    /**
-     * 杩囨护鍦板浘鏁版嵁
-     * mapType -1=>鏃犺繃婊わ紝1=銆嬭繃婊ゅ簱浣嶇姸鎬丏FX锛�2=銆嬭繃婊ゅ簱浣嶇姸鎬乆
-     *
-     * @param whitePoints 鐧藉悕鍗曡妭鐐癸紝涓嶉渶瑕佽杩囨护
-     * @param shuttlePoints 绌挎杞﹁妭鐐癸紝闇�瑕佸姞杞借繘鍦板浘
-     */
-    public List<List<MapNode>> filterMap(List<NavigationMapType> mapTypes, List<List<MapNode>> lists, Integer lev, List<int[]> whitePoints, List<int[]> shuttlePoints) {
-        List<NavigationMapType> locMapType = new ArrayList<>();
-        locMapType.add(NavigationMapType.DFX);
-        locMapType.add(NavigationMapType.NORMAL);
-        for (NavigationMapType mapType : mapTypes) {
-            if(locMapType.contains(mapType)) {
-                //杞藉叆搴撲綅淇℃伅
-                lists = loadLocMast(mapType.id, lists, lev, whitePoints);
-            }
-
-            if (mapType.equals(NavigationMapType.SHUTTLE)) {
-                //鍔犺浇杞﹁締
-                lists = loadShuttle(lists, shuttlePoints);
-            }
-
-            if (mapType.equals(NavigationMapType.LIFT)) {
-                //鍔犺浇璐у弶鎻愬崌鏈虹偣浣�
-                lists = loadForkLift(lists, lev);
-            }
-
-            if(mapType.equals(NavigationMapType.PATH_LOCK)) {
-                //鍔犺浇璺緞閿�
-                lists = loadPathLock(lists, lev);
-            }
-
-            if(mapType.equals(NavigationMapType.TRAFFIC_CONTROL)) {
-                //鍔犺浇浜ら�氱鍒�
-                lists = loadTrafficControl(lists, lev);
-            }
-        }
-
-        //鍔犺浇鐧藉悕鍗曡妭鐐�
-        lists = loadWhite(lists, lev, whitePoints);
-
-        return lists;
-    }
-
-    //閲嶅缓鏁版嵁鏍煎紡
-    public List<List<MapNode>> rebuildData(List arrayList) {
-        List<List<MapNode>> lists = new ArrayList<>();
-
-        //閲嶅缓鏁版嵁鏍煎紡
-        for (int i = 0; i < arrayList.size(); i++) {
-            Object obj = arrayList.get(i);
-            List<MapNode> list = JSON.parseArray(obj.toString(), MapNode.class);
-            for (int j = 0; j < list.size(); j++) {
-                MapNode mapNode = list.get(j);
-                list.set(j, mapNode);
-            }
-            lists.add(list);
-        }
-
-        return lists;
-    }
-
-    //杞藉叆搴撲綅淇℃伅
-    public List<List<MapNode>> loadLocMast(Integer mapType, List<List<MapNode>> lists, Integer lev, List<int[]> whitePoints) {
-        //杩囨护鏁版嵁
-        LocMastService locMastService = SpringUtils.getBean(LocMastService.class);
-        try {
-            //鑾峰彇褰撳墠妤煎眰搴撲綅鏁版嵁
-            List<LocMast> locMasts = locMastService.selectLocByLev(lev);
-            for (LocMast locMast : locMasts) {
-                Integer row = locMast.getRow1();
-                Integer bay = locMast.getBay1();
-
-                boolean whiteFlag = false;//榛樿涓嶅瓨鍦ㄧ櫧鍚嶅崟
-                if (whitePoints != null) {
-                    for (int[] whitePoint : whitePoints) {
-                        if (whitePoint[0] == row && whitePoint[1] == bay) {
-                            //瀛樺湪鐧藉悕鍗�
-                            whiteFlag = true;
-                            break;
-                        }
-                    }
-                }
-                if (whiteFlag) {
-                    continue;//瀛樺湪鐧藉悕鍗曪紝涓嶆墽琛屼笅鍒楄繃婊ゆ柟妗�
-                }
-
-
-                List<MapNode> list = lists.get(row);
-                MapNode mapNode = list.get(bay);
-
-                if (mapType == NavigationMapType.NONE.id) {
-                    //涓嶈繃婊や换浣曟暟鎹�
-                } else if (mapType == NavigationMapType.DFX.id) {
-                    //杞﹁締鏈夎揣
-                    //璇诲彇瀵瑰簲搴撲綅鏁版嵁锛屽皢DFX搴撲綅鐘舵�佺殑鑺傜偣缃负-1(闅滅鐗�)
-                    if (locMast.getLocSts().equals("F")
-                            || locMast.getLocSts().equals("D")
-                            || locMast.getLocSts().equals("X")
-                            || locMast.getLocSts().equals("R")
-                            || locMast.getLocSts().equals("P")
-                    ) {
-                        mapNode.setValue(MapNodeType.DISABLE.id);//绂佺敤鑺傜偣
-                    }
-                } else if (mapType == NavigationMapType.NORMAL.id) {
-                    //杩囨护搴撲綅鐘舵�乆
-                    if (locMast.getLocSts().equals("X")) {
-                        mapNode.setValue(MapNodeType.DISABLE.id);//绂佺敤鑺傜偣
-                    }
-                }
-
-                mapNode.setLocSts(locMast.getLocSts());
-                mapNode.setLocNo(locMast.getLocNo());
-
-                //鏇存柊list
-                list.set(bay, mapNode);
-                lists.set(row, list);
-            }
-        }catch (Exception e) {
-            e.printStackTrace();
-        }
-
-        return lists;
-    }
-
-    //鍔犺浇杞﹁締
-    public List<List<MapNode>> loadShuttle(List<List<MapNode>> lists, List<int[]> shuttlePoints) {
-        //鍔犺浇杞﹁締鍧愭爣鍒板湴鍥句腑
-        if (shuttlePoints != null) {
-            for (int[] points : shuttlePoints) {
-                int x = points[0];
-                int y = points[1];
-                List<MapNode> list = lists.get(x);
-                MapNode mapNode = list.get(y);
-                mapNode.setValue(MapNodeType.CAR.id);//璁剧疆涓鸿溅杈嗕唬鐮�66
-                //鏇存柊list
-                list.set(y, mapNode);
-                lists.set(x, list);
-            }
-        }
-
-        return lists;
-    }
-
-    //鍔犺浇鐧藉悕鍗曡妭鐐�
-    public List<List<MapNode>> loadWhite(List<List<MapNode>> lists, Integer lev, List<int[]> whitePoints) {
-        //鍔犺浇鐧藉悕鍗曡妭鐐�
-        if (whitePoints != null) {
-            List<List<MapNode>> realMap = getJsonData(lev, NavigationMapType.getMapTypes(NavigationMapType.NONE), null, null);//鑾峰彇瀹屾暣鍦板浘
-            for (int[] points : whitePoints) {
-                //鑾峰彇鍘熷鑺傜偣鏁版嵁
-                int x = points[0];
-                int y = points[1];
-                List<MapNode> rows = realMap.get(x);
-                MapNode col = rows.get(y);
-
-                List<MapNode> list = lists.get(x);
-                MapNode mapNode = list.get(y);
-                mapNode.setValue(col.getValue());//鎭㈠鍘熷鑺傜偣
-
-                //鏇存柊list
-                list.set(y, mapNode);
-                lists.set(x, list);
-            }
-        }
-        return lists;
-    }
-
-    //鍔犺浇璐у弶鎻愬崌鏈虹偣浣�
-    public List<List<MapNode>> loadForkLift(List<List<MapNode>> lists, Integer lev) {
-        try {
-            //鍔犺浇璐у弶鎻愬崌鏈烘斁璐х偣浣嶆暟鎹�
-            List<DeviceConfig> forkliftList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>()
-                    .eq("device_type", String.valueOf(SlaveType.ForkLift)));
-            for (DeviceConfig device : forkliftList) {
-                ForkLiftThread forkLiftThread = (ForkLiftThread) SlaveConnection.get(SlaveType.ForkLift, device.getDeviceNo());
-                if (forkLiftThread == null) {
-                    continue;
-                }
-
-                for (ForkLiftStaProtocol staProtocol : forkLiftThread.getForkLiftStaProtocols()) {
-                    if (staProtocol.getLev() != lev) {
-                        continue;
-                    }
-                    int row = Utils.getRow(staProtocol.getLocNo());
-                    int bay = Utils.getBay(staProtocol.getLocNo());
-
-                    List<MapNode> list = lists.get(row);
-                    MapNode mapNode = list.get(bay);
-
-//                    if (mapType == NavigationMapType.DFX.id) {
-//                        //杞﹁締鏈夎揣
-//                        if (staProtocol.getHasTray() != null && staProtocol.getHasTray()) {
-//                            mapNode.setValue(MapNodeType.DISABLE.id);
-//                        }
-//                    } else {
-//                        if (staProtocol.getHasCar() != null && staProtocol.getHasCar()) {
-//                            mapNode.setValue(MapNodeType.CAR.id);
-//                        }
-//                    }
-
-                    //鏇存柊list
-                    list.set(bay, mapNode);
-                    lists.set(row, list);
-                }
-
-            }
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-        return lists;
-    }
-
-    //鍔犺浇璺緞閿�
-    public List<List<MapNode>> loadPathLock(List<List<MapNode>> lists, Integer lev) {
-        try {
-            HashMap<String, Object> lockMap = new HashMap<>();
-            Object o = redisUtil.get(RedisKeyType.LOCK_MAP_NODES.key + lev);
-            if (o != null) {
-                lockMap = (HashMap<String, Object>) o;
-            }
-
-            for (Map.Entry<String, Object> entry : lockMap.entrySet()) {
-                String key = entry.getKey();
-                int row = Utils.getRow(key);
-                int bay = Utils.getBay(key);
-
-                List<MapNode> list = lists.get(row);
-                MapNode mapNode = list.get(bay);
-
-                //鑺傜偣璁剧疆鎴愯矾寰勯攣
-                mapNode.setValue(MapNodeType.LOCK.id);
-
-                //鏇存柊list
-                list.set(bay, mapNode);
-                lists.set(row, list);
-            }
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-        return lists;
-    }
-
-    //鍔犺浇浜ら�氱鍒�
-    public List<List<MapNode>> loadTrafficControl(List<List<MapNode>> lists, Integer lev) {
-        try {
-            TrafficControlThread trafficControlThread = (TrafficControlThread) SlaveConnection.get(SlaveType.TrafficControl, 1);
-            if (trafficControlThread == null) {
-                throw new CoolException("init traffic control thread error");
-            }
-
-            List<TrafficControlDataModel> trafficList = trafficControlThread.getAllTrafficControl();
-            for (TrafficControlDataModel trafficControlDataModel : trafficList) {
-                List<NavigateNode> totalNodeList = trafficControlDataModel.getTotalNodeList();
-                NavigateNode startNode = totalNodeList.get(0);
-                if (startNode.getZ() != lev) {
-                    continue;
-                }
-
-                for (NavigateNode node : totalNodeList) {
-                    int row = node.getX();
-                    int bay = node.getY();
-
-                    List<MapNode> list = lists.get(row);
-                    MapNode mapNode = list.get(bay);
-
-                    //鑺傜偣璁剧疆鎴怐isable
-                    mapNode.setValue(MapNodeType.DISABLE.id);
-
-                    //鏇存柊list
-                    list.set(bay, mapNode);
-                    lists.set(row, list);
-                }
-            }
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-        return lists;
-    }
-
-}
diff --git a/src/main/java/com/zy/common/utils/NavigateMapUtils.java b/src/main/java/com/zy/common/utils/NavigateMapUtils.java
deleted file mode 100644
index 49c72a9..0000000
--- a/src/main/java/com/zy/common/utils/NavigateMapUtils.java
+++ /dev/null
@@ -1,141 +0,0 @@
-package com.zy.common.utils;
-
-import com.zy.asrs.utils.Utils;
-import com.zy.common.model.NavigateNode;
-import com.zy.core.cache.SlaveConnection;
-import com.zy.core.enums.RedisKeyType;
-import com.zy.core.enums.SlaveType;
-import com.zy.core.model.protocol.ShuttleProtocol;
-import com.zy.core.thread.ShuttleThread;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-@Component
-public class NavigateMapUtils {
-
-    @Autowired
-    private RedisUtil redisUtil;
-
-    public synchronized boolean clearPath(Integer shuttleNo) {
-        ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttleNo);
-        if (shuttleThread == null) {
-            return false;
-        }
-
-        ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
-        if (shuttleProtocol == null) {
-            return false;
-        }
-
-        String currentLocNo = shuttleProtocol.getCurrentLocNo();
-        int lev = Utils.getLev(currentLocNo);
-
-        HashMap<String, Object> lockMap = new HashMap<>();
-        Object o = redisUtil.get(RedisKeyType.LOCK_MAP_NODES.key + lev);
-        if (o != null) {
-            lockMap = (HashMap<String, Object>) o;
-        }
-
-        List<NavigateNode> list = new ArrayList<>();
-        for (Map.Entry<String, Object> entry : lockMap.entrySet()) {
-            String locNo = entry.getKey();
-            Integer value = (Integer) entry.getValue();
-            if (value.equals(shuttleNo)) {
-                NavigateNode navigateNode = NavigatePositionConvert.locNoToNode(locNo);
-                list.add(navigateNode);
-            }
-        }
-
-        return writeNavigateNodeToRedisMap(lev, shuttleNo, list, false);
-    }
-
-    /**
-     * 鍐欏叆璺緞鑺傜偣鏁版嵁鍒皉edis鍦板浘涓�
-     * lock涓簍rue 绂佺敤搴撲綅锛宭ock涓篺alse鎭㈠搴撲綅
-     */
-    public synchronized boolean writeNavigateNodeToRedisMap(Integer lev, Integer shuttleNo, List<NavigateNode> nodes, boolean lock) {
-        if (lock) {
-            return lockNodes(lev, shuttleNo, nodes);
-        }else {
-            return unlockNodes(lev, shuttleNo, nodes);
-        }
-    }
-
-    public synchronized boolean lockNodes(Integer lev, Integer shuttleNo, List<NavigateNode> nodes) {
-        if (nodes.isEmpty()) {
-            return false;
-        }
-
-        HashMap<String, Object> lockMap = new HashMap<>();
-        Object o = redisUtil.get(RedisKeyType.LOCK_MAP_NODES.key + lev);
-        if (o != null) {
-            lockMap = (HashMap<String, Object>) o;
-        }
-
-        List<String> shuttleList = new ArrayList<>();
-        //鑾峰彇灏忚溅鑺傜偣-鑾峰彇闄ょ櫧鍚嶅崟澶栫殑鎸囧畾妤煎眰鍏ㄩ儴绌挎杞y鍧愭爣鐐�
-        List<int[]> shuttlePoints = Utils.getShuttlePoints(shuttleNo, lev);
-        for (int[] point : shuttlePoints) {
-            String key = Utils.getLocNo(point[0], point[1], lev);
-            shuttleList.add(key);
-        }
-
-        HashMap<String, Object> tmpMap = new HashMap<>();
-        for (NavigateNode node : nodes) {
-            String key = Utils.getLocNo(node.getX(), node.getY(), lev);
-
-            //鍒ゆ柇鑺傜偣鏄惁鏈夊皬杞�
-            if(shuttleList.contains(key)) {
-                return false;
-            }
-
-            //鍒ゆ柇鑺傜偣鏄惁琚攣瀹�
-            if(lockMap.containsKey(key)) {
-                Integer deviceNo = (Integer) lockMap.get(key);
-                if (!shuttleNo.equals(deviceNo)) {//绛夊緟閿佸畾鐨勮妭鐐瑰凡琚綋鍓嶅皬杞﹂攣瀹氾紝璁ゅ畾閿佸畾鎴愬姛
-                    return false;
-                }
-            }
-
-            tmpMap.put(key, shuttleNo);
-        }
-
-        lockMap.putAll(tmpMap);
-
-        redisUtil.set(RedisKeyType.LOCK_MAP_NODES.key + lev, lockMap);
-        return true;
-    }
-
-    public synchronized boolean unlockNodes(Integer lev, Integer shuttleNo, List<NavigateNode> nodes) {
-        if (nodes.isEmpty()) {
-            return false;
-        }
-
-        HashMap<String, Object> lockMap = new HashMap<>();
-        Object o = redisUtil.get(RedisKeyType.LOCK_MAP_NODES.key + lev);
-        if (o != null) {
-            lockMap = (HashMap<String, Object>) o;
-        }
-
-        for (NavigateNode node : nodes) {
-            String key = Utils.getLocNo(node.getX(), node.getY(), lev);
-
-            if(!lockMap.containsKey(key)) {
-                continue;
-            }
-
-            Integer deviceNo = (Integer) lockMap.get(key);
-            if(deviceNo.equals(shuttleNo)) {
-                lockMap.remove(key);
-            }
-        }
-        redisUtil.set(RedisKeyType.LOCK_MAP_NODES.key + lev, lockMap);
-        return true;
-    }
-
-}
diff --git a/src/main/java/com/zy/common/utils/NavigatePositionConvert.java b/src/main/java/com/zy/common/utils/NavigatePositionConvert.java
deleted file mode 100644
index b6a473c..0000000
--- a/src/main/java/com/zy/common/utils/NavigatePositionConvert.java
+++ /dev/null
@@ -1,136 +0,0 @@
-package com.zy.common.utils;
-
-import com.baomidou.mybatisplus.mapper.EntityWrapper;
-import com.core.common.SpringUtils;
-import com.zy.asrs.entity.LocMast;
-import com.zy.asrs.service.LocMastService;
-import com.zy.asrs.utils.Utils;
-import com.zy.common.model.NavigateNode;
-import com.zy.core.enums.RedisKeyType;
-
-import java.util.HashMap;
-
-/**
- * 搴撲綅缂栧彿鍜孉*绠楁硶鐨剎y杞磋浆鎹㈠伐鍏风被
- */
-public class NavigatePositionConvert {
-
-    public static String xyToPosition(int x, int y, int z) {
-        String locNo = Utils.getLocNo(x, y, z);
-        String code = null;
-
-        RedisUtil redisUtil = SpringUtils.getBean(RedisUtil.class);
-        Object object = redisUtil.get(RedisKeyType.POINT_MAP.key);
-
-        if(object == null) {
-            //搴撲綅鍙疯浆灏忚溅浜岀淮鐮�
-            LocMastService locMastService = SpringUtils.getBean(LocMastService.class);
-            LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>()
-                    .eq("loc_no", locNo)
-                    .eq("status", 1));
-            if (locMast == null) {
-                return null;
-            }
-
-            code = locMast.getQrCodeValue();
-        }else {
-            HashMap<String, String> cache = (HashMap<String, String>) object;
-            code = cache.get(locNo);
-        }
-        return code;
-    }
-
-    //灏忚溅鏉″舰鐮佽浆璺緞绠楁硶鑺傜偣
-    public static NavigateNode codeToNode(String code) {
-        NavigateNode node = null;
-
-        RedisUtil redisUtil = SpringUtils.getBean(RedisUtil.class);
-        Object object = redisUtil.get(RedisKeyType.LOC_MAP.key);
-
-        if (object == null) {
-            LocMastService locMastService = SpringUtils.getBean(LocMastService.class);
-            LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>()
-                    .eq("qr_code_value", code)
-                    .eq("status", 1));
-            if (locMast == null) {
-                return null;
-            }
-            node = new NavigateNode(locMast.getRow1(), locMast.getBay1());
-            node.setZ(locMast.getLev1());
-        } else {
-            HashMap<String, String> cache = (HashMap<String, String>) object;
-            String locNo = cache.get(code);
-
-            node = new NavigateNode(Utils.getRow(locNo), Utils.getBay(locNo));
-            node.setZ(Utils.getLev(locNo));
-        }
-        return node;
-    }
-
-    //鍧愭爣缂栧彿杞瑇y杞�
-    public static int[] positionToXY(String position) {
-        int col = Integer.parseInt(position.substring(0, 2));
-        int row = Integer.parseInt(position.substring(2, 5));
-        int[] newPosition = coverPosition(col,row);
-        //杩斿洖x鍜寉
-//        return new int[]{row, col};
-        return newPosition;
-    }
-
-    //WCS绯荤粺搴撲綅鍙疯浆璺緞绠楁硶鑺傜偣
-    public static NavigateNode locNoToNode(String locNo) {
-        int col = Integer.parseInt(locNo.substring(0, 2));
-        int row = Integer.parseInt(locNo.substring(2, 5));
-        int[] newPosition = coverPosition(col,row);
-        NavigateNode node = new NavigateNode(col, row);
-        node.setZ(Utils.getLev(locNo));
-        return node;
-    }
-
-    //璺緞绠楁硶鑺傜偣杞琖CS绯荤粺搴撲綅鍙�
-    public static String nodeToLocNo(NavigateNode node) {
-        return xyzToLocNo(node.getX(), node.getY(), node.getZ());
-    }
-
-    //WCS鍧愭爣杞琖CS搴撲綅鍙�
-    public static String xyzToLocNo(int x, int y, int z) {
-        String locNo = Utils.getLocNo(x, y, z);
-        return locNo;
-    }
-
-    //鐗涚溂鍧愭爣杞琖CS搴撲綅鍙�
-    public static String nyXyzToLocNo(int x, int y, int z) {
-        int[] ints = NyXyzToWCSXyz(x, y, z);
-        String locNo = Utils.getLocNo(ints[0],ints[1],ints[2]);
-        return locNo;
-    }
-
-    //WCS绯荤粺鍧愭爣杞墰鐪煎潗鏍�
-    public static int[] WCSXyzToNyXyz(int x, int y, int z) {
-        //WCS绯荤粺Y杞� => 鐗涚溂X杞磋浆鎹㈠叕寮�
-        int x1 = Math.abs(y - 61) + 11;
-        //WCS绯荤粺X杞� => 鐗涚溂Y杞磋浆鎹㈠叕寮�
-        int y1 = x + 10;
-        return new int[]{x1, y1, z};
-    }
-
-    //鐗涚溂鍧愭爣杞琖CS绯荤粺鍧愭爣
-    public static int[] NyXyzToWCSXyz(int x, int y, int z) {
-        //鐗涚溂X杞� => WCS绯荤粺Y杞村叕寮�
-        int y1 = Math.abs(x - 11 - 61);
-        //鐗涚溂Y杞� => WCS绯荤粺X杞村叕寮�
-        int x1 = y - 10;
-        return new int[]{x1, y1, z};
-    }
-
-    public static int[] coverPosition(int col,int row) {
-        return new int[]{col, row};
-    }
-
-    public static boolean equalsNode(NavigateNode node1, NavigateNode node2) {
-        if(node1.getX() ==  node2.getX() && node1.getY() == node2.getY() && node1.getZ() == node2.getZ()) {
-            return true;
-        }
-        return false;
-    }
-}
diff --git a/src/main/java/com/zy/common/utils/NavigateSolution.java b/src/main/java/com/zy/common/utils/NavigateSolution.java
deleted file mode 100644
index 681c54d..0000000
--- a/src/main/java/com/zy/common/utils/NavigateSolution.java
+++ /dev/null
@@ -1,303 +0,0 @@
-package com.zy.common.utils;
-
-import com.alibaba.fastjson.JSON;
-import com.baomidou.mybatisplus.mapper.EntityWrapper;
-import com.core.common.SpringUtils;
-import com.core.exception.CoolException;
-import com.zy.common.model.NavigateNode;
-import com.zy.common.model.enums.NavigationMapType;
-import com.zy.core.enums.MapNodeType;
-import com.zy.core.model.PythonResult;
-import com.zy.system.entity.Config;
-import com.zy.system.service.ConfigService;
-
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.util.*;
-
-/**
- * 鍥涘悜搴撴牳蹇�
- * A*绠楁硶瀹炵幇绫�
- */
-public class NavigateSolution {
-
-    // -1 -> 澧欏锛� 0 -> 璐т綅锛� 1 -> 璧风偣  2 -> 缁堢偣  3-> 姣嶈建  4->杈撻�佺珯鐐�  5->鍏呯數妗� 6->灏忚溅鍙蛋杈撻�佺珯鐐�  66->灏忚溅  67->鎻愬崌鏈�
-
-    int[][] map = {{}};
-
-    public NavigateSolution(List<NavigationMapType> mapTypes, Integer lev, List<int[]> whitePoints, List<int[]> shuttlePoints) {
-        //杞藉叆鍦板浘鎸囧畾灞傞珮鍦板浘
-        NavigateMapData mapData = SpringUtils.getBean(NavigateMapData.class);
-        int[][] data = mapData.getDataFromRedis(lev, mapTypes, whitePoints, shuttlePoints);
-        if (data == null) {
-            throw new CoolException("鍦板浘鏈浇鍏ワ紒");
-        }
-        this.map = data;
-    }
-
-    public NavigateSolution(int[][] data) {
-        this.map = data;
-    }
-
-    // Open琛ㄧ敤浼樺厛闃熷垪
-    public PriorityQueue<NavigateNode> Open = new PriorityQueue<NavigateNode>();
-    //Close琛ㄧ敤鏅�氱殑鏁扮粍
-    public ArrayList<NavigateNode> Close = new ArrayList<NavigateNode>();
-    //鐢ㄦ潵瀛樻斁宸茬粡鍑虹幇杩囩殑缁撶偣銆�
-    Map<String, Integer> bestGMap = new HashMap<>();
-
-    public String astarSearchPython(NavigateNode start, NavigateNode end, String pythonScriptPath) {
-        String maps = JSON.toJSONString(map);
-        String startStr = start.getX() + "-" + start.getY();
-        String targetStr = end.getX() + "-" + end.getY();
-
-        //榛樿鍦板浘姣嶈建鏂瑰悜x
-        String mapDirection = "x";
-        ConfigService configService = SpringUtils.getBean(ConfigService.class);
-        if (configService != null) {
-            Config config = configService.selectOne(new EntityWrapper<Config>()
-                    .eq("code", "direction_map")
-                    .eq("status", 1));
-            if (config != null) {
-                mapDirection = config.getValue();
-            }
-        }
-
-        ProcessBuilder processBuilder = new ProcessBuilder("python", pythonScriptPath, maps, startStr, targetStr, mapDirection);
-        processBuilder.redirectErrorStream(true);
-
-        try {
-            Process process = processBuilder.start();
-
-            // 璇诲彇Python鑴氭湰鐨勮緭鍑�
-            BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
-            String line;
-            StringBuilder builder = new StringBuilder();
-            while ((line = reader.readLine()) != null) {
-                builder.append(line);
-            }
-
-            // 绛夊緟Python鑴氭湰鎵ц瀹屾垚
-            int exitCode = process.waitFor();
-            if (exitCode != 0) {
-                System.out.println("Python script exited with error code: " + exitCode);
-                return null;
-            }
-            reader.close();
-
-            if (builder.length() <= 0) {
-                return null;
-            }
-
-            PythonResult result = JSON.parseObject(builder.toString(), PythonResult.class);
-            if (result.getCalcResult() != 200) {
-                return null;
-            }
-
-            String path = result.getPath();
-            return path;
-        } catch (IOException | InterruptedException e) {
-            e.printStackTrace();
-        }
-        return null;
-    }
-
-    public NavigateNode astarSearchJava(NavigateNode start, NavigateNode end) {
-        //榛樿鍦板浘姣嶈建鏂瑰悜x
-        String mapDirection = "x";
-        ConfigService configService = SpringUtils.getBean(ConfigService.class);
-        if (configService != null) {
-            Config config = configService.selectOne(new EntityWrapper<Config>()
-                    .eq("code", "direction_map")
-                    .eq("status", 1));
-            if (config != null) {
-                mapDirection = config.getValue();
-            }
-        }
-
-        //鎶婄涓�涓紑濮嬬殑缁撶偣鍔犲叆鍒癘pen琛ㄤ腑
-        this.Open.add(start);
-        //涓诲惊鐜�
-        while (Open.size() > 0) {
-            //鍙栦紭鍏堥槦鍒楅《閮ㄥ厓绱犲苟涓旀妸杩欎釜鍏冪礌浠嶰pen琛ㄤ腑鍒犻櫎
-            NavigateNode current_node = Open.poll();
-
-            if (current_node.getX() == end.getX() && current_node.getY() == end.getY()) {//鎵惧埌鐩爣缁撶偣灏辫繑鍥�
-                return current_node;
-            }
-
-            //灏嗚繖涓粨鐐瑰姞鍏ュ埌Close琛ㄤ腑
-            Close.add(current_node);
-            //瀵瑰綋鍓嶇粨鐐硅繘琛屾墿灞曪紝寰楀埌涓�涓洓鍛ㄧ粨鐐圭殑鏁扮粍
-            ArrayList<NavigateNode> neighbour_node = extend_current_node(current_node, mapDirection);
-            //瀵硅繖涓粨鐐归亶鍘嗭紝鐪嬫槸鍚︽湁鐩爣缁撶偣鍑虹幇
-            for (NavigateNode node : neighbour_node) {
-                // G + H + E (瀵瑰惎鍙戝嚱鏁板鍔犲幓鎷愮偣鏂规calcNodeExtraCost)
-                int gCost = calcNodeExtraCost(current_node, node, end);
-
-                //杩涜璁$畻瀵笹, F, H 绛夊��
-                node.setG(1 + gCost);
-                node.init_node(current_node, end);
-                node.setH(calcNodeCost(node, end));
-                node.setF(node.getG() + node.getH());
-
-                String key = node.getX() + "_" + node.getY();
-                Integer recordedG = bestGMap.get(key);
-                if (recordedG == null || node.getG() <= recordedG) {
-                    bestGMap.put(key, node.getG());
-
-                    Open.add(node);
-                }
-            }
-        }
-        //濡傛灉閬嶅巻瀹屾墍鏈夊嚭鐜扮殑缁撶偣閮芥病鏈夋壘鍒版渶缁堢殑缁撶偣锛岃繑鍥瀗ull
-        return null;
-    }
-
-
-    public ArrayList<NavigateNode> extend_current_node(NavigateNode current_node, String mapDirection) {
-        //鑾峰彇褰撳墠缁撶偣鐨剎, y
-        int x = current_node.getX();
-        int y = current_node.getY();
-        //濡傛灉褰撳墠缁撶偣鐨勯偦缁撶偣鍚堟硶锛屽氨鍔犲叆鍒皀eighbour_node
-        ArrayList<NavigateNode> neighbour_node = new ArrayList<NavigateNode>();
-//        if (map[x][y] == 0 || map[x][y] == 3) {
-//            //鍙湁瀛愯建鍜屾瘝杞ㄦ墠鑳借繘琛屽乏鍙崇Щ鍔�
-//            if (is_valid(x, y + 1))
-//            {
-//                Node node = new Node(x, y + 1);
-//                neighbour_node.add(node);
-//            }
-//            if (is_valid(x, y - 1))
-//            {
-//                Node node = new Node(x, y - 1);
-//                neighbour_node.add(node);
-//            }
-//        }
-//
-//        if (map[x][y] == 3) {
-//            //鍙湁姣嶈建鎵嶈兘杩涜涓婁笅绉诲姩
-//            if (is_valid(x + 1, y))
-//            {
-//                Node node = new Node(x + 1, y);
-//                neighbour_node.add(node);
-//            }
-//            if (is_valid(x - 1, y))
-//            {
-//                Node node = new Node(x -1, y);
-//                neighbour_node.add(node);
-//            }
-//        }
-
-        if (mapDirection.equals("x")) {//姣嶈建x鏂瑰悜
-            if (map[x][y] == MapNodeType.MAIN_PATH.id) {
-                //姣嶈建鎵嶈兘杩涜涓婁笅绉诲姩
-                if (is_valid(x + 1, y)) {
-                    NavigateNode node = new NavigateNode(x + 1, y);
-                    node.setNodeValue(map[x + 1][y]);
-                    neighbour_node.add(node);
-                }
-                if (is_valid(x - 1, y)) {
-                    NavigateNode node = new NavigateNode(x - 1, y);
-                    node.setNodeValue(map[x - 1][y]);
-                    neighbour_node.add(node);
-                }
-            }
-
-            if (map[x][y] == MapNodeType.NORMAL_PATH.id || map[x][y] == MapNodeType.MAIN_PATH.id || map[x][y] == MapNodeType.CONVEYOR_CAR_GO.id || map[x][y] == MapNodeType.CONVEYOR.id || map[x][y] == MapNodeType.CHARGE.id || map[x][y] == MapNodeType.LIFT.id) {
-                //瀛愯建鍜屾瘝杞ㄣ�佸皬杞﹀彲璧拌緭閫佺嚎銆佸厖鐢垫々銆佹彁鍗囨満鎵嶈兘杩涜宸﹀彸绉诲姩
-                if (is_valid(x, y + 1)) {
-                    NavigateNode node = new NavigateNode(x, y + 1);
-                    node.setNodeValue(map[x][y + 1]);
-                    neighbour_node.add(node);
-                }
-                if (is_valid(x, y - 1)) {
-                    NavigateNode node = new NavigateNode(x, y - 1);
-                    node.setNodeValue(map[x][y - 1]);
-                    neighbour_node.add(node);
-                }
-            }
-        } else if (mapDirection.equals("y")) {//姣嶈建y鏂瑰悜
-            if (map[x][y] == MapNodeType.MAIN_PATH.id) {
-                //姣嶈建鎵嶈兘杩涜宸﹀彸绉诲姩
-                if (is_valid(x, y + 1)) {
-                    NavigateNode node = new NavigateNode(x, y + 1);
-                    node.setNodeValue(map[x][y + 1]);
-                    neighbour_node.add(node);
-                }
-                if (is_valid(x, y - 1)) {
-                    NavigateNode node = new NavigateNode(x, y - 1);
-                    node.setNodeValue(map[x][y - 1]);
-                    neighbour_node.add(node);
-                }
-            }
-
-            if (map[x][y] == MapNodeType.NORMAL_PATH.id || map[x][y] == MapNodeType.MAIN_PATH.id || map[x][y] == MapNodeType.CONVEYOR_CAR_GO.id || map[x][y] == MapNodeType.CONVEYOR.id || map[x][y] == MapNodeType.CHARGE.id || map[x][y] == MapNodeType.LIFT.id) {
-                //瀛愯建鍜屾瘝杞ㄣ�佸皬杞﹀彲璧拌緭閫佺嚎銆佸厖鐢垫々銆佹彁鍗囨満鎵嶈兘杩涜涓婁笅绉诲姩
-                if (is_valid(x + 1, y)) {
-                    NavigateNode node = new NavigateNode(x + 1, y);
-                    node.setNodeValue(map[x + 1][y]);
-                    neighbour_node.add(node);
-                }
-                if (is_valid(x - 1, y)) {
-                    NavigateNode node = new NavigateNode(x - 1, y);
-                    node.setNodeValue(map[x - 1][y]);
-                    neighbour_node.add(node);
-                }
-            }
-        }
-
-        return neighbour_node;
-    }
-
-    public boolean is_valid(int x, int y) {
-        if (x < 0 || x >= this.map.length
-                || y < 0 || y >= this.map[0].length) {
-            return false;
-        }
-        // 濡傛灉缁撶偣鐨勪綅缃皬浜�0锛屽垯涓嶅悎娉�
-        if (map[x][y] < 0) {
-            return false;
-        }
-
-        if (map[x][y] == MapNodeType.CAR.id) {//鑺傜偣鏄皬杞�
-            return false;
-        }
-
-        //浠ヤ笂鎯呭喌閮芥病鏈夊垯鍚堟硶
-        return true;
-    }
-
-    //------------------A*鍚彂鍑芥暟------------------//
-
-    //璁$畻閫氳繃鐜板湪鐨勭粨鐐圭殑浣嶇疆鍜屾渶缁堢粨鐐圭殑浣嶇疆璁$畻H鍊�(鏇煎搱椤挎硶锛氬潗鏍囧垎鍒彇宸�肩浉鍔�)
-    private int calcNodeCost(NavigateNode node1, NavigateNode node2) {
-        return Math.abs(node2.getX() - node1.getX()) + Math.abs(node2.getY() - node1.getY());
-    }
-
-    //鍘婚櫎鎷愮偣绠楁硶锛岀粰鐩寸嚎澧炲姞浼樺厛绾�
-    private int calcNodeExtraCost(NavigateNode currNode, NavigateNode nextNode, NavigateNode endNode) {
-        // 绗竴涓偣鎴栫洿绾跨偣
-        if (currNode.getFather() == null || nextNode.getX() == currNode.getFather().getX()
-                || nextNode.getY() == currNode.getFather().getY()) {
-            return 0;
-        }
-
-        // 鎷愬悜缁堢偣鐨勭偣
-        if (nextNode.getX() == endNode.getX() || nextNode.getY() == endNode.getY()) {
-            return 1;
-        }
-
-        // 鏅�氭嫄鐐�
-        /*
-        鎷愮偣鍒ゆ柇閫昏緫
-        鎷垮埌鐖惰妭鐐瑰拰涓嬩竴鑺傜偣
-        閫氳繃鍒ゆ柇鐖惰妭鐐瑰拰涓嬩竴鑺傜偣鐨剎鏁版嵁鍜寉鏁版嵁閮戒笉鐩稿悓鏃讹紝鍒欒〃鏄庡綋鍓嶅潗鏍囨槸涓�涓嫄鐐�
-         */
-        return 1;
-    }
-
-    //------------------A*鍚彂鍑芥暟-end------------------//
-
-}
\ No newline at end of file
diff --git a/src/main/java/com/zy/common/utils/NavigateUtils.java b/src/main/java/com/zy/common/utils/NavigateUtils.java
deleted file mode 100644
index 9197cd8..0000000
--- a/src/main/java/com/zy/common/utils/NavigateUtils.java
+++ /dev/null
@@ -1,616 +0,0 @@
-package com.zy.common.utils;
-
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONArray;
-import com.baomidou.mybatisplus.mapper.EntityWrapper;
-import com.core.common.SnowflakeIdWorker;
-import com.core.exception.CoolException;
-import com.zy.asrs.utils.Utils;
-import com.zy.common.model.MapNode;
-import com.zy.common.model.NavigateNode;
-import com.zy.common.model.enums.NavigationMapType;
-import com.zy.core.News;
-import com.zy.core.enums.MapNodeType;
-import com.zy.core.model.PythonSimilarityResult;
-import com.zy.system.entity.Config;
-import com.zy.system.service.ConfigService;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.stereotype.Component;
-
-import java.io.BufferedReader;
-import java.io.InputStreamReader;
-import java.util.*;
-
-/**
- * A*绠楁硶浣跨敤宸ュ叿
- */
-@Component
-public class NavigateUtils {
-
-    @Value("${pythonCalcPath}")
-    private String pythonCalcPath;
-    @Value("${pythonCalcSimilarity}")
-    private String pythonCalcSimilarity;
-    @Autowired
-    private NavigateMapData navigateMapData;
-    @Autowired
-    private SnowflakeIdWorker snowflakeIdWorker;
-    @Autowired
-    private ConfigService configService;
-
-    public List<NavigateNode> calc(String startPoint, String endPoint, List<NavigationMapType> mapTypes, List<int[]> shuttlePoints, List<int[]> whites) {
-        return calcJava(startPoint, endPoint, mapTypes, shuttlePoints, whites);
-    }
-
-    public List<NavigateNode> calcJava(String startPoint, String endPoint, List<NavigationMapType> mapTypes, List<int[]> shuttlePoints, List<int[]> whites) {
-        //閫氳繃寮�濮嬬紪鍙峰拰缁撴潫缂栧彿鑾峰彇瀵瑰簲鐨剎y杞村潗鏍�
-        int[] startArr = NavigatePositionConvert.positionToXY(startPoint);//寮�濮嬭妭鐐�
-        int[] endArr = NavigatePositionConvert.positionToXY(endPoint);//缁撴潫鑺傜偣
-
-        ArrayList<int[]> whiteList = new ArrayList<>();//璁剧疆璁$畻鑺傜偣鐨勭櫧鍚嶅崟
-        whiteList.add(startArr);//灏嗗紑濮嬭妭鐐硅缃负鐧藉悕鍗曪紝浠ラ槻琚繃婊�
-        if (whites != null && !whites.isEmpty()) {
-            whiteList.addAll(whites);//鎵归噺娣诲姞鐧藉悕鍗曡妭鐐�
-        }
-
-        //鑾峰彇褰撳墠鑺傜偣璁$畻鐨勫眰楂橈紝骞惰祴鍊煎埌姣忎竴涓妭鐐逛腑
-        int lev = Utils.getLev(startPoint);
-        NavigateSolution solution = new NavigateSolution(mapTypes, lev, whiteList, shuttlePoints);
-        int[][] map = solution.map;
-
-        //鍒濆鍖栧紑濮嬭妭鐐�
-        NavigateNode start = new NavigateNode(startArr[0], startArr[1]);
-        //寮�濮嬭妭鐐规棤鐖惰妭鐐�
-        start.setFather(null);
-        start.setNodeValue(map[startArr[0]][startArr[1]]);
-
-        NavigateNode end = new NavigateNode(endArr[0], endArr[1]);
-        end.setNodeValue(map[endArr[0]][endArr[1]]);
-        //寮�濮嬭妭鐐癸紝涓嶇撼鍏ョ鐢ㄨ妭鐐瑰唴璁$畻
-
-        NavigateNode res_node = solution.astarSearchJava(start, end);
-        if (res_node == null) {
-            News.error("{} dash {} can't find navigate path!", startPoint, endPoint);
-            return null;
-        }
-
-        ArrayList<NavigateNode> list = new ArrayList<>();
-        //娓叉煋
-        NavigateNode fatherNode = null;//褰撳墠寰幆涓婁竴鑺傜偣锛岀敤浜庢嫄鐐硅绠�
-        while (res_node != null) {
-            res_node.setDirection(null);
-            res_node.setIsInflectionPoint(false);
-            res_node.setZ(lev);//璁剧疆灞傞珮
-
-            //瀵绘壘鎷愮偣
-            HashMap<String, Object> result = searchInflectionPoint(res_node, fatherNode, res_node.getFather());//鍒嗗埆浼犲叆褰撳墠鑺傜偣銆佺埗鑺傜偣銆佷笅涓�鑺傜偣
-            //鍒ゆ柇褰撳墠鑺傜偣鏄惁涓烘嫄鐐�
-            if (Boolean.parseBoolean(result.get("result").toString())) {
-                //褰撳墠涓烘嫄鐐�
-                res_node.setIsInflectionPoint(true);
-                //鎷愮偣鏂瑰悜
-                res_node.setDirection(result.get("direction").toString());
-            }
-            list.add(res_node);
-
-            fatherNode = res_node;//鎶婂綋鍓嶈妭鐐逛繚瀛樻垚涓�涓埗鑺傜偣
-            res_node = res_node.getFather();//杩唬鎿嶄綔
-        }
-
-        Collections.reverse(list);
-
-        //灏嗘瘡涓妭鐐归噷闈㈢殑fatherNode鑷充负null(鏂逛究鍚庣画璁$畻鏃剁埗鑺傜偣杩囧瀵艰嚧鏄剧ず鐨勮妭鐐瑰お澶�)
-        for (NavigateNode navigateNode : list) {
-            //鐖惰妭鐐硅缃负null锛屼笉褰卞搷璁$畻缁撴灉锛屼笉褰卞搷鍚庣画鎿嶄綔銆�
-            //姝ゆ搷浣滀粎涓哄悗缁帓鏌ュ鐞嗘彁渚涜瑙夋柟渚裤��
-            navigateNode.setFather(null);
-        }
-
-        //璧峰鑺傜偣璁$畻鏂瑰悜
-        String direction = calcDirection(list.get(0), list.get(1));
-        NavigateNode startNode = list.get(0);
-        startNode.setDirection(direction);
-        //鏇存柊鑺傜偣鍒楄〃
-        list.set(0, startNode);
-        return list;
-    }
-
-    public List<NavigateNode> calcPython(String startPoint, String endPoint, List<NavigationMapType> mapTypes, List<int[]> shuttlePoints, List<int[]> whites) {
-        //閫氳繃寮�濮嬬紪鍙峰拰缁撴潫缂栧彿鑾峰彇瀵瑰簲鐨剎y杞村潗鏍�
-        int[] startArr = NavigatePositionConvert.positionToXY(startPoint);//寮�濮嬭妭鐐�
-        int[] endArr = NavigatePositionConvert.positionToXY(endPoint);//缁撴潫鑺傜偣
-
-        ArrayList<int[]> whiteList = new ArrayList<>();//璁剧疆璁$畻鑺傜偣鐨勭櫧鍚嶅崟
-        whiteList.add(startArr);//灏嗗紑濮嬭妭鐐硅缃负鐧藉悕鍗曪紝浠ラ槻琚繃婊�
-        if (whites != null && !whites.isEmpty()) {
-            whiteList.addAll(whites);//鎵归噺娣诲姞鐧藉悕鍗曡妭鐐�
-        }
-
-        //鑾峰彇褰撳墠鑺傜偣璁$畻鐨勫眰楂橈紝骞惰祴鍊煎埌姣忎竴涓妭鐐逛腑
-        int lev = Utils.getLev(startPoint);
-        NavigateSolution solution = new NavigateSolution(mapTypes, lev, whiteList, shuttlePoints);
-        int[][] map = solution.map;
-
-        //鍒濆鍖栧紑濮嬭妭鐐�
-        NavigateNode start = new NavigateNode(startArr[0], startArr[1]);
-        start.setNodeValue(map[startArr[0]][startArr[1]]);
-        //寮�濮嬭妭鐐规棤鐖惰妭鐐�
-        start.setFather(null);
-
-        NavigateNode end = new NavigateNode(endArr[0], endArr[1]);
-        end.setNodeValue(map[endArr[0]][endArr[1]]);
-        //寮�濮嬭妭鐐癸紝涓嶇撼鍏ョ鐢ㄨ妭鐐瑰唴璁$畻
-
-        String pathStr = solution.astarSearchPython(start, end, pythonCalcPath);
-        if (pathStr == null) {
-            News.error("{} dash {} can't find navigate path!", startPoint, endPoint);
-            return null;
-        }
-
-        List<NavigateNode> list = new ArrayList<>();
-
-        NavigateNode fatherNode = null;//褰撳墠寰幆涓婁竴鑺傜偣锛岀敤浜庢嫄鐐硅绠�
-        JSONArray rows = JSON.parseArray(pathStr);
-
-        for (int i = 0; i < rows.size(); i++) {
-            Object currentObj = rows.get(i);
-
-            NavigateNode nextNode = null;
-            if ((i + 1) < rows.size()) {
-                Object object = rows.get(i + 1);
-                nextNode = pythonObjTransferNode(object, lev);
-            }
-
-            NavigateNode node = pythonObjTransferNode(currentObj, lev);
-
-            //瀵绘壘鎷愮偣
-            HashMap<String, Object> result = searchInflectionPoint(node, fatherNode, nextNode);//鍒嗗埆浼犲叆褰撳墠鑺傜偣銆佺埗鑺傜偣銆佷笅涓�鑺傜偣
-            //鍒ゆ柇褰撳墠鑺傜偣鏄惁涓烘嫄鐐�
-            if (Boolean.parseBoolean(result.get("result").toString())) {
-                //褰撳墠涓烘嫄鐐�
-                node.setIsInflectionPoint(true);
-                //鎷愮偣鏂瑰悜
-                node.setDirection(result.get("direction").toString());
-            }
-
-            list.add(node);
-
-            fatherNode = node;//鎶婂綋鍓嶈妭鐐逛繚瀛樻垚涓�涓埗鑺傜偣
-        }
-
-        //灏嗘瘡涓妭鐐归噷闈㈢殑fatherNode鑷充负null(鏂逛究鍚庣画璁$畻鏃剁埗鑺傜偣杩囧瀵艰嚧鏄剧ず鐨勮妭鐐瑰お澶�)
-        for (NavigateNode navigateNode : list) {
-            //鐖惰妭鐐硅缃负null锛屼笉褰卞搷璁$畻缁撴灉锛屼笉褰卞搷鍚庣画鎿嶄綔銆�
-            //姝ゆ搷浣滀粎涓哄悗缁帓鏌ュ鐞嗘彁渚涜瑙夋柟渚裤��
-            navigateNode.setFather(null);
-        }
-
-        //璧峰鑺傜偣璁$畻鏂瑰悜
-        String direction = calcDirection(list.get(0), list.get(1));
-        NavigateNode startNode = list.get(0);
-        startNode.setDirection(direction);
-        //鏇存柊鑺傜偣鍒楄〃
-        list.set(0, startNode);
-        return list;
-    }
-
-    //璁$畻甯︽湯绔钀借矾寰�
-    public List<List<NavigateNode>> calcEndPath(String startPoint, String endPoint, List<NavigationMapType> mapTypes, List<int[]> shuttlePoints, List<int[]> whites, int lastPathPart) {
-        //璁$畻璺緞
-        List<NavigateNode> navigateNodes = calc(startPoint, endPoint, mapTypes, shuttlePoints, whites);
-        if (navigateNodes == null) {
-            News.error("{} dash {} can't find navigate path!", startPoint, endPoint);
-            return null;
-        }
-
-        //鑾峰彇鍒嗘璺緞
-        List<List<NavigateNode>> partList = this.getSectionPath(navigateNodes);
-        //鏍规嵁浼犲叆鐨勬湯绔钀借矾寰勶紝鎵惧埌鏈鐐逛綅
-        int partResult = partList.size() - lastPathPart;
-        if (partResult == 0) {//璺緞鏁伴噺鐩稿悓鏃犻渶鍒嗗壊
-            return partList;
-        } else if (partResult < 0) {
-            throw new CoolException("鍒嗘璺緞涓庢湯绔矾寰勬暟閲忚绠楀紓甯�");
-        }
-        int pathIdx = partResult - 1;
-        List<List<NavigateNode>> filterList = new ArrayList<>();
-        for (int i = 0; i <= pathIdx; i++) {
-            filterList.add(partList.get(i));
-        }
-        return filterList;
-    }
-
-    //璁$畻鏈娈佃惤鍦板潃
-    public String calcEndLocation(String startPoint, String endPoint, List<NavigationMapType> mapTypes, List<int[]> shuttlePoints, List<int[]> whites, int lastPathPart) {
-        List<List<NavigateNode>> endPath = calcEndPath(startPoint, endPoint, mapTypes, shuttlePoints, whites, lastPathPart);
-        if (endPath == null) {
-            return null;
-        }
-
-        return findTargetLocation(endPath);
-    }
-
-    public String calcFirstLocation(String startPoint, String endPoint, List<NavigationMapType> mapTypes, List<int[]> shuttlePoints, List<int[]> whites, int firstPathNumber) {
-        //璁$畻璺緞
-        List<NavigateNode> navigateNodes = calc(startPoint, endPoint, mapTypes, shuttlePoints, whites);
-        if (navigateNodes == null) {
-            News.error("{} dash {} can't find navigate path!", startPoint, endPoint);
-            return null;
-        }
-
-        //鑾峰彇鍒嗘璺緞
-        List<List<NavigateNode>> partList = this.getSectionPath(navigateNodes);
-        List<NavigateNode> firstList = partList.get(0);
-
-        NavigateNode targetNode = null;
-        if(firstList.size() <= firstPathNumber){
-            targetNode = firstList.get(firstList.size() - 1);
-        }else {
-            targetNode = firstList.get(firstPathNumber);
-        }
-
-        String locNo = NavigatePositionConvert.nodeToLocNo(targetNode);
-        return locNo;
-    }
-
-    public String findTargetLocation(List<List<NavigateNode>> partList) {
-        NavigateNode targetNode = null;
-        for (int i = partList.size(); i > 0; i--) {
-            List<NavigateNode> nodes = partList.get(i - 1);
-            for (NavigateNode node : nodes) {
-                if (node.getNodeValue() == MapNodeType.MAIN_PATH.id) {
-                    continue;
-                }
-                targetNode = node;
-                break;
-            }
-
-            if(targetNode != null){
-                break;
-            }
-        }
-
-        if (targetNode == null) {
-            List<NavigateNode> list = partList.get(partList.size() - 1);
-            targetNode = list.get(0);
-        }
-
-        String locNo = NavigatePositionConvert.nodeToLocNo(targetNode);
-        return locNo;
-    }
-
-    //鍒ゆ柇褰撳墠鑺傜偣鍒颁笅涓�涓妭鐐规槸鍚︿负鎷愮偣
-    public HashMap<String,Object> searchInflectionPoint(NavigateNode currentNode, NavigateNode fatherNode, NavigateNode nextNode) {
-        HashMap<String, Object> map = new HashMap<>();
-        map.put("result", false);//鏄惁涓烘嫄鐐癸紝true锛氭嫄鐐癸紝false锛氱洿绾�
-        // 绗竴涓偣鎴栫洿绾跨偣
-        if (fatherNode == null || nextNode == null || nextNode.getX() == fatherNode.getX() || nextNode.getY() == fatherNode.getY()) {
-            return map;//涓嶆槸鎷愮偣鐩存帴杩斿洖
-        }
-
-        //鎷愮偣鏂瑰悜
-        String direction = calcDirection(currentNode, fatherNode);
-
-        map.put("result", true);//鎷愮偣
-        map.put("direction", direction);//鎷愮偣鏂瑰悜锛堜粠褰撳墠鑺傜偣瑙嗚鐪嬬殑鏂瑰悜锛�
-        return map;
-    }
-
-    /**
-     * 璁$畻鏂瑰悜
-     */
-    public String calcDirection(NavigateNode currentNode, NavigateNode fatherNode) {
-        //鎷愮偣鏂瑰悜
-        String direction = "";
-        // 鏅�氭嫄鐐�
-        //璁$畻鎷愮偣鏂瑰悜
-        if (fatherNode.getX() != currentNode.getX()) {
-            //x杞存暟鎹湁宸紓锛屽垽鏂瓁杞存柟鍚�
-            //褰撳墠鑺傜偣X - 鐖惰妭鐐筙
-            if (currentNode.getX() - fatherNode.getX() > 0) {
-                //澶т簬0锛屾柟鍚憈op
-                direction = "top";
-            }else {
-                //灏忎簬0锛屾柟鍚慴ottom
-                direction = "bottom";
-            }
-        }
-
-        if (fatherNode.getY() != currentNode.getY()) {
-            //y杞存暟鎹湁宸紓锛屽垽鏂瓂杞存柟鍚�
-            //褰撳墠鑺傜偣Y - 鐖惰妭鐐筜
-            if (currentNode.getY() - fatherNode.getY() > 0) {
-                //澶т簬0锛屾柟鍚憀eft
-                direction = "left";
-            }else {
-                //灏忎簬0锛屾柟鍚憆ight
-                direction = "right";
-            }
-        }
-
-        return direction;
-    }
-
-    /**
-     * 鍔犺浆寮妭鐐�
-     * 鑾峰彇鍒嗘璺緞锛屾瘡褰撴湁涓�涓嫄鐐瑰垯杩涜涓�娆″垎娈碉紝鏈�缁堣繑鍥炴�诲垎娈垫暟鎹�
-     */
-    public List<List<NavigateNode>> getSectionPath(List<NavigateNode> mapList) {
-        NavigateNode firstNode = mapList.get(0);
-        //鑾峰彇鍦板浘
-        List<List<MapNode>> mapNodes = navigateMapData.getJsonData(firstNode.getZ(), NavigationMapType.getMapTypes(NavigationMapType.NONE), null, null);
-
-        List<List<NavigateNode>> list = new ArrayList<>();
-        List<NavigateNode> data = new ArrayList<>();
-        String direction = firstNode.getDirection();//琛岃蛋鏂瑰悜
-
-        for (NavigateNode navigateNode : mapList) {
-            data.add(navigateNode);
-            //鎷愮偣
-            if (navigateNode.getIsInflectionPoint()) {
-                //鍒嗗壊鏁版嵁
-                list.add(data);//娣诲姞鏌愪竴娈垫暟鎹�
-                direction = navigateNode.getDirection();//鏇存柊琛岃蛋鏂瑰悜
-                data = new ArrayList<>();
-                data.add(navigateNode);//灏嗘嫄鐐圭殑缁堢偣锛屾洿鏂版垚涓嬩竴娈靛懡浠ょ殑璧风偣鍧愭爣
-            } else {
-                //鐩磋绾胯矾
-                navigateNode.setDirection(direction);//璁剧疆琛岃蛋鏂瑰悜
-            }
-            Integer distance = getXToNextDistance(mapNodes, navigateNode);//鑾峰彇褰撳墠鐐瑰埌涓嬩竴鐐圭殑琛岃蛋璺濈
-            navigateNode.setMoveDistance(distance);
-        }
-
-        //灏嗘渶鍚庝竴娈垫暟鎹坊鍔犺繘鍏�
-        list.add(data);
-
-        //鍒嗘璺緞-澶勭悊瓒呴暱鐩寸嚎娈佃矾寰�
-        List<List<NavigateNode>> paths = getSectionPathToSplitOverLength(list);
-        return paths;
-    }
-
-    //鍒嗘璺緞-澶勭悊瓒呴暱鐩寸嚎娈佃矾寰�
-    public List<List<NavigateNode>> getSectionPathToSplitOverLength(List<List<NavigateNode>> list) {
-        int overLength = 9;//榛樿9鑺�
-        Config shuttleMoveOverLengthConfig = configService.selectOne(new EntityWrapper<Config>().eq("code", "shuttleMoveOverLength"));
-        if (shuttleMoveOverLengthConfig != null) {
-            overLength = Integer.parseInt(shuttleMoveOverLengthConfig.getValue());
-        }
-
-        List<List<NavigateNode>> paths = new ArrayList<>();
-        for (List<NavigateNode> nodes : list) {
-            long nextId = snowflakeIdWorker.nextId();
-
-            if (nodes.size() > overLength) {
-                List<NavigateNode> copy = JSON.parseArray(JSON.toJSONString(nodes), NavigateNode.class);
-                List<NavigateNode> tmp = new ArrayList<>();
-                int tmpCount = 0;
-                NavigateNode lastNode = null;
-                for (NavigateNode node : copy) {
-                    tmp.add(node);
-                    tmpCount++;
-
-                    if(tmpCount >= overLength) {
-                        if (lastNode == null) {
-                            NavigateNode startNode = tmp.get(0);
-                            startNode.setLinePartAllowGo(true);//鐩寸嚎娈佃秴闀块儴鍒嗗厑璁哥洿鎺ヨ璧�
-                            startNode.setLinePartFlag(nextId);//鐩寸嚎娈垫暟鎹爣璇�
-                            tmp.set(0, startNode);
-                        }
-                        NavigateNode targetNode = tmp.get(tmp.size() - 1);
-                        targetNode.setLinePartAllowGo(true);//鐩寸嚎娈佃秴闀块儴鍒嗗厑璁哥洿鎺ヨ璧�
-                        targetNode.setLinePartFlag(nextId);//鐩寸嚎娈垫暟鎹爣璇�
-                        if (lastNode != null) {
-                            tmp.add(0, lastNode);
-                        }
-
-                        paths.add(tmp);
-                        tmp = new ArrayList<>();
-                        tmpCount = 0;
-                        lastNode = targetNode;
-                    }
-                }
-
-                if (tmpCount > 0) {
-                    tmp.add(0, lastNode);
-                    paths.add(tmp);
-                }
-            }else {
-                NavigateNode startNode = nodes.get(0);
-                startNode.setLinePartAllowGo(true);//鐩寸嚎娈佃秴闀块儴鍒嗗厑璁哥洿鎺ヨ璧�
-                startNode.setLinePartFlag(nextId);//鐩寸嚎娈垫暟鎹爣璇�
-                nodes.set(0, startNode);
-                paths.add(nodes);
-            }
-        }
-        return paths;
-    }
-
-    //鑾峰彇浠巟鐐瑰埌涓嬩竴鐐圭殑琛岃蛋璺濈
-    public Integer getXToNextDistance(List<List<MapNode>> mapLists, NavigateNode xNode) {
-        if (mapLists == null) {
-            return 0;
-        }
-
-        if (mapLists.isEmpty()) {
-            return 0;
-        }
-
-        MapNode mapNode = mapLists.get(xNode.getX()).get(xNode.getY());
-        if (mapNode != null) {
-            switch (xNode.getDirection()) {
-                case "top":
-                    return mapNode.getTop();
-                case "bottom":
-                    return mapNode.getBottom();
-                case "left":
-                    return mapNode.getLeft();
-                case "right":
-                    return mapNode.getRight();
-            }
-        }
-        return 0;
-    }
-
-    /**
-     * 鏍规嵁鍘熷鑺傜偣缁撴灉锛岃绠楁�昏璧拌窛绂�
-     */
-    public Integer getOriginPathAllDistance(List<NavigateNode> path) {
-        List<List<NavigateNode>> sectionPath = getSectionPath(path);
-        Integer allDistance = 0;
-        for (List<NavigateNode> navigateNodes : sectionPath) {
-            Integer distance = getCurrentPathAllDistance(navigateNodes);
-            allDistance += distance;
-        }
-        return allDistance;
-    }
-
-    /**
-     * 鑾峰彇褰撳墠璺緞鎬昏璧拌窛绂�
-     */
-    public Integer getCurrentPathAllDistance(List<NavigateNode> path) {
-        if (path.size() == 1) {
-            //璺緞鍙湁涓�鏉℃暟鎹紝鍒欑洿鎺ヨ繑鍥炶璧拌窛绂�
-            return path.get(0).getMoveDistance();
-        }
-
-        //鎬昏窛绂�
-        int allDistance = 0;
-        for (int i = 0; i < path.size() - 1; i++) {//璺緞涓渶鍚庝竴涓妭鐐逛笉缁熻鍒版�昏窛绂伙紝鏈�鍚庝竴涓妭鐐瑰苟涓嶄細鍐嶈璧�
-            allDistance += path.get(i).getMoveDistance();
-        }
-        return allDistance;
-    }
-
-    /**
-     * 鑾峰彇涓棿鐐瑰埌鐩爣鐐硅璧拌窛绂�
-     */
-    public Integer getMiddleToDistDistance(List<NavigateNode> path, NavigateNode middlePath) {
-        //鏈�鍚庝竴鏉¤妭鐐逛笉璁$畻杩涜璧拌窛绂�
-        NavigateNode lastPath = path.get(path.size() - 1);
-        //鎬昏窛绂�
-        int allDistance = 0;
-        boolean flag = false;
-        for (NavigateNode navigateNode : path) {
-            if (!flag && navigateNode.equals(middlePath)) {
-                flag = true;
-            }
-
-            if (navigateNode.equals(lastPath)) {
-                continue;//鏈�鍚庝竴鏉¤妭鐐逛笉璁$畻杩涜璧拌窛绂�
-            }
-
-            if (flag) {
-                allDistance += navigateNode.getMoveDistance();
-            }
-        }
-        return allDistance;
-    }
-
-    /**
-     * 妫�娴嬭矾寰勬槸鍚﹀彲鐢�(鍙蛋)
-     */
-    public boolean checkPathIsAvailable(List<NavigateNode> path, Integer shuttleNo, Integer lev) {
-        int[][] map = navigateMapData.getDataFromRedis(lev, NavigationMapType.getDfxWithDevice(), null, Utils.getShuttlePoints(shuttleNo, lev));
-        for (NavigateNode node : path) {
-            int value = map[node.getX()][node.getY()];
-            if (value != MapNodeType.NORMAL_PATH.id && value != MapNodeType.MAIN_PATH.id && value != MapNodeType.CHARGE.id && value != MapNodeType.CONVEYOR_CAR_GO.id) {//姣嶈建閬�3銆佸瓙杞ㄩ亾0銆佸厖鐢垫々5銆佸皬杞﹀彲璧拌緭閫佺珯
-                return false;
-            }
-        }
-        return true;
-    }
-
-    private NavigateNode pythonObjTransferNode(Object obj, Integer z) {
-        List<Integer> pathData = JSON.parseArray(obj.toString(), Integer.class);
-        Integer x = pathData.get(0);
-        Integer y = pathData.get(1);
-
-        NavigateNode node = new NavigateNode(x, y);
-        node.setDirection(null);
-        node.setIsInflectionPoint(false);
-        node.setZ(z);
-        return node;
-    }
-
-    public Double similarityPath(List<NavigateNode> firstPath, List<NavigateNode> secondPath) {
-        try {
-            List<int[]> first = new ArrayList<>();
-            for (NavigateNode node : firstPath) {
-                first.add(new int[]{node.getX(), node.getY()});
-            }
-
-            List<int[]> second = new ArrayList<>();
-            for (NavigateNode node : secondPath) {
-                second.add(new int[]{node.getX(), node.getY()});
-            }
-
-            ProcessBuilder processBuilder = new ProcessBuilder("python", pythonCalcSimilarity, JSON.toJSONString(first), JSON.toJSONString(second));
-            processBuilder.redirectErrorStream(true);
-
-            Process process = processBuilder.start();
-
-            // 璇诲彇Python鑴氭湰鐨勮緭鍑�
-            BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
-            String line;
-            StringBuilder builder = new StringBuilder();
-            while ((line = reader.readLine()) != null) {
-                builder.append(line);
-            }
-
-            // 绛夊緟Python鑴氭湰鎵ц瀹屾垚
-            int exitCode = process.waitFor();
-            if (exitCode != 0) {
-                System.out.println("Python script exited with error code: " + exitCode);
-                return null;
-            }
-            reader.close();
-
-            if (builder.length() <= 0) {
-                return null;
-            }
-
-            PythonSimilarityResult result = JSON.parseObject(builder.toString(), PythonSimilarityResult.class);
-            if (result.getCalcResult() != 200) {
-                return 0D;
-            }
-
-            Double similarity = result.getSimilarity();
-            return similarity;
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-        return 0D;
-    }
-
-    //妫�娴嬪簱浣嶈矾寰勬槸鍚﹀彲鐢�(鐢ㄤ簬搴撲綅鏄惁鍙Щ鍔ㄦ娴�)
-    public boolean checkLocPathIsAvailable(String startLocNo, String endLocNo) {
-        List<int[]> shuttlePoints = Utils.getShuttlePoints(0, Utils.getLev(startLocNo));
-        //璁$畻搴撲綅鍒版彁鍗囨満搴撲綅锛岃矾寰勬槸鍚﹀彲鐢�
-        List<NavigateNode> nodeList = this.calc(startLocNo, endLocNo, NavigationMapType.getMapTypes(NavigationMapType.DFX), shuttlePoints, null);
-        if (nodeList == null) {
-            return false;
-        }
-        return true;
-    }
-
-    public static void main(String[] args) {
-//        //璁$畻璺緞
-//        List<NavigateNode> calc = calc("1000901", "1800201", NavigationMapType.NONE.id, null);
-//        System.out.println(calc);
-//        System.out.println("------------------------");
-////        List<NavigateNode> calc = calc("0501401", "0201801", "out");
-//        //灏嗚矾寰勫垎鍓叉垚澶氭
-//        ArrayList<ArrayList<NavigateNode>> data = getSectionPath(calc);
-//        for (ArrayList<NavigateNode> list : data) {
-//            Integer currentPathAllDistance = getCurrentPathAllDistance(list);//璁$畻褰撳墠璺緞鎬昏窛绂�
-//            System.out.println(currentPathAllDistance);
-//            System.out.println(list);
-//        }
-
-        System.loadLibrary("example");
-
-    }
-
-}
diff --git a/src/main/java/com/zy/common/utils/RobotUtils.java b/src/main/java/com/zy/common/utils/RobotUtils.java
deleted file mode 100644
index 1199458..0000000
--- a/src/main/java/com/zy/common/utils/RobotUtils.java
+++ /dev/null
@@ -1,85 +0,0 @@
-package com.zy.common.utils;
-
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONObject;
-import com.core.common.SpringUtils;
-import org.springframework.core.env.Environment;
-
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * 鏈烘鎵�(Robot)宸ュ叿绫�
- */
-public class RobotUtils {
-
-    //鑾峰彇Robot绯荤粺鐘舵��
-    public static boolean getSystemStatus() {
-        Environment environment = SpringUtils.getBean(Environment.class);
-        String robotUrl = environment.getProperty("robot.url");
-
-        HashMap<String, Object> map = new HashMap<>();
-        try {
-            String response = new HttpHandler.Builder()
-                    .setUri(robotUrl)
-                    .setPath("/adaptor/api/wcs/is_vp_ready")
-                    .setJson(JSON.toJSONString(map))
-                    .build()
-                    .doPost();
-
-            JSONObject data = JSON.parseObject(response);
-            int status = Integer.parseInt(data.get("status").toString());
-            if (status == 0) {
-                return true;//绯荤粺姝e父
-            }
-        } catch (IOException e) {
-            e.printStackTrace();
-        }
-        return false;//绯荤粺寮傚父锛屾病鏈夊噯澶囧ソ
-    }
-
-    //WCS鍚戞満姊拌噦涓嬪彂鍗曟媶浠诲姟
-    public static boolean sendTask(String taskId, Integer skuNum, String from) {
-        Environment environment = SpringUtils.getBean(Environment.class);
-        String robotUrl = environment.getProperty("robot.url");
-
-        Map<String, Object> skuInfo = new HashMap<>();
-        skuInfo.put("sku_id", "1");
-        skuInfo.put("length", 500);
-        skuInfo.put("width", 350);
-        skuInfo.put("height", 280);
-        skuInfo.put("weight", 1);
-        skuInfo.put("sku_num", skuNum);
-
-        String to = "307";
-        if (from.equals("317")) {
-            to = "310";
-        }
-
-        HashMap<String, Object> map = new HashMap<>();
-        map.put("task_id", taskId);
-        map.put("sku_info", skuInfo);
-        map.put("from", from);
-        map.put("to", to);
-        try {
-            String response = new HttpHandler.Builder()
-                    .setUri(robotUrl)
-                    .setPath("/adaptor/api/wcs/task/single_depal")
-                    .setJson(JSON.toJSONString(map))
-                    .build()
-                    .doPost();
-
-            JSONObject data = JSON.parseObject(response);
-            int code = Integer.parseInt(data.get("code").toString());
-            String msg = data.get("msg").toString();
-            if (code == 0 && msg.equals("success")) {
-                return true;//鎴愬姛
-            }
-        } catch (IOException e) {
-            e.printStackTrace();
-        }
-        return false;//寮傚父
-    }
-
-}
diff --git a/src/main/java/com/zy/common/utils/ShuttleOperaUtils.java b/src/main/java/com/zy/common/utils/ShuttleOperaUtils.java
deleted file mode 100644
index c4fe002..0000000
--- a/src/main/java/com/zy/common/utils/ShuttleOperaUtils.java
+++ /dev/null
@@ -1,639 +0,0 @@
-package com.zy.common.utils;
-
-import com.baomidou.mybatisplus.mapper.EntityWrapper;
-import com.core.common.SpringUtils;
-import com.core.exception.CoolException;
-import com.zy.asrs.entity.DeviceConfig;
-import com.zy.asrs.service.DeviceConfigService;
-import com.zy.asrs.utils.Utils;
-import com.zy.common.model.MapNode;
-import com.zy.common.model.NavigateNode;
-import com.zy.common.model.enums.NavigationMapType;
-import com.zy.core.News;
-import com.zy.core.cache.SlaveConnection;
-import com.zy.core.dispatcher.ShuttleDispatchUtils;
-import com.zy.core.enums.MapNodeType;
-import com.zy.core.enums.RedisKeyType;
-import com.zy.core.enums.ShuttleRunDirection;
-import com.zy.core.enums.SlaveType;
-import com.zy.core.model.command.ShuttleAssignCommand;
-import com.zy.core.model.command.ShuttleCommand;
-import com.zy.core.model.protocol.ShuttleProtocol;
-import com.zy.core.thread.ShuttleThread;
-import com.zy.system.entity.Config;
-import com.zy.system.service.ConfigService;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
-import java.util.*;
-
-/**
- * 鍥涘悜杞︽搷浣滃伐鍏风被
- * 姝ゅ伐鍏风被鍙浣滅敤浜庤幏鍙栧皬杞︾殑鍚勭被鍛戒护List锛岀Щ鍔ㄥ懡浠ゃ�佹惉杩愯揣鐗╁懡浠ゃ�佸浣嶅懡浠ょ瓑銆傚鍛戒护涓虹Щ鍔ㄥ懡浠わ紝杩樺皢杩斿洖琛岃蛋璺緞List
- */
-@Component
-public class ShuttleOperaUtils {
-
-    @Autowired
-    private NavigateUtils navigateUtils;
-    @Autowired
-    private NavigateMapData navigateMapData;
-    @Autowired
-    private ConfigService configService;
-    @Autowired
-    private ShuttleDispatchUtils shuttleDispatchUtils;
-    @Autowired
-    private DeviceConfigService deviceConfigService;
-    @Autowired
-    private RedisUtil redisUtil;
-
-    public synchronized List<ShuttleCommand> getStartToTargetCommands(String startLocNo, String endLocNo, List<NavigationMapType> mapTypes, ShuttleAssignCommand assignCommand, ShuttleThread shuttleThread) {
-        return getStartToTargetCommands(startLocNo, endLocNo, mapTypes, null, assignCommand, shuttleThread, "move");
-    }
-
-    public synchronized List<ShuttleCommand> getStartToTargetCommands(String startLocNo, String endLocNo, List<NavigationMapType> mapTypes, ShuttleAssignCommand assignCommand, ShuttleThread shuttleThread, String moveType) {
-        return getStartToTargetCommands(startLocNo, endLocNo, mapTypes, null, assignCommand, shuttleThread, moveType);
-    }
-
-    public synchronized List<ShuttleCommand> getStartToTargetCommands(String startLocNo, String endLocNo, List<NavigationMapType> mapTypes, List<int[]> whites, ShuttleAssignCommand assignCommand, ShuttleThread shuttleThread, String moveType) {
-        ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
-        if (shuttleProtocol == null) {
-            return null;
-        }
-        Integer shuttleNo = shuttleProtocol.getShuttleNo();
-        //鑾峰彇灏忚溅绉诲姩閫熷害
-        Integer runSpeed = 1000;
-        Object speedObj = redisUtil.get(RedisKeyType.SHUTTLE_SPEED_MAP.key);
-        if (speedObj != null) {
-            HashMap<Integer, Integer> shuttleSpeedMap = (HashMap<Integer, Integer>) speedObj;
-            Integer speed = shuttleSpeedMap.get(shuttleNo);
-            if (speed != null) {
-                runSpeed = speed;
-            }
-        }
-
-        Object systemConfigMapObj = redisUtil.get(RedisKeyType.SYSTEM_CONFIG_MAP.key);
-
-        //灏忚溅(x,y)鍛戒护杩愯鏂瑰悜棰犲��
-        boolean shuttleDirectionReverse = false;
-        if (systemConfigMapObj != null) {
-            HashMap<String, String> systemConfigMap = (HashMap<String, String>) systemConfigMapObj;
-            if (systemConfigMap.get("shuttleDirectionReverse").equals("Y")) {
-                shuttleDirectionReverse = true;
-            }
-        }
-
-        long calcStartTime = System.currentTimeMillis();
-        List<NavigateNode> nodeList = navigateUtils.calc(startLocNo, endLocNo, mapTypes, Utils.getShuttlePoints(shuttleNo, Utils.getLev(startLocNo)), whites);
-        if (nodeList == null) {
-            News.error("{} dash {} can't find navigate path!", startLocNo, endLocNo);
-            shuttleThread.offerSystemMsg("{} dash {} can't find navigate path!", startLocNo, endLocNo);
-            return null;
-        }
-        News.info("[RCS Debug] Calc path time:{}", (System.currentTimeMillis() - calcStartTime));
-
-        List<NavigateNode> allNode = new ArrayList<>();
-        List<NavigateNode> lockNode = new ArrayList<>();
-        for (NavigateNode node : nodeList) {
-            allNode.add(node.clone());
-
-            if (whites != null) {
-                boolean flag = false;
-                for (int[] white : whites) {
-                    if (white[0] == node.getX() && white[1] == node.getY()) {
-                        flag = true;
-                        break;
-                    }
-                }
-
-                if (flag) {//鐧藉悕鍗曡烦杩囬攣瀹�
-                    continue;
-                }
-            }
-            lockNode.add(node.clone());
-        }
-
-        long startTime = System.currentTimeMillis();
-        List<ShuttleCommand> commands = new ArrayList<>();
-        //鑾峰彇鍒嗘璺緞
-        List<List<NavigateNode>> data = navigateUtils.getSectionPath(nodeList);
-        long endTime = System.currentTimeMillis();
-        News.info("[RCS Debug] getSection path time:{}", (endTime - startTime));
-
-        long startGetSectionCommandTime = System.currentTimeMillis();
-        //灏嗘瘡涓�娈佃矾寰勫垎鎴恈ommand鎸囦护
-        for (int i = 0; i < data.size(); i++) {
-            long startGetStartAndEndPathTime = System.currentTimeMillis();
-            List<NavigateNode> nodes = data.get(i);
-            //寮�濮嬭矾寰�
-            NavigateNode startPath = nodes.get(0);
-            //鐩爣璺緞
-            NavigateNode endPath = nodes.get(nodes.size() - 1);
-            News.info("[RCS Debug] getStartAndEndPath idx:{} time:{}", i, (System.currentTimeMillis() - startGetStartAndEndPathTime));
-
-            long startAllDistanceTime = System.currentTimeMillis();
-            Integer allDistance = navigateUtils.getCurrentPathAllDistance(nodes);//璁$畻褰撳墠璺緞琛岃蛋鎬昏窛绂�
-            News.info("[RCS Debug] getAllDistance idx:{} time:{}", i, (System.currentTimeMillis() - startAllDistanceTime));
-
-            long startGetPosition = System.currentTimeMillis();
-            //閫氳繃xy鍧愭爣灏忚溅浜岀淮鐮�
-            String startCodeNum = NavigatePositionConvert.xyToPosition(startPath.getX(), startPath.getY(), startPath.getZ());
-            //閫氳繃xy鍧愭爣灏忚溅浜岀淮鐮�
-            String distCodeNum = NavigatePositionConvert.xyToPosition(endPath.getX(), endPath.getY(), endPath.getZ());
-            News.info("[RCS Debug] xyToPosition idx:{} time:{}", i, (System.currentTimeMillis() - startGetPosition));
-
-            long startGetMoveCommandTime = System.currentTimeMillis();
-            //鑾峰彇绉诲姩鍛戒护
-            ShuttleCommand command = shuttleThread.getMoveCommand(assignCommand.getDeviceTaskNo(), startCodeNum, distCodeNum, allDistance, ShuttleRunDirection.get(startPath.getDirection()).id.intValue(), runSpeed, nodes, shuttleDirectionReverse);
-            News.info("[RCS Debug] getMoveCommand idx:{} time:{}", i, (System.currentTimeMillis() - startGetMoveCommandTime));
-
-            if (i + 1 == data.size()) {
-                long startGetInOutLiftTime = System.currentTimeMillis();
-                if (moveType.equals("inLift")) {
-                    command = shuttleThread.getMoveLiftCommand(assignCommand.getDeviceTaskNo(), startCodeNum, distCodeNum, allDistance, ShuttleRunDirection.get(startPath.getDirection()).id.intValue(), runSpeed, nodes, true, shuttleDirectionReverse);
-                }else if (moveType.equals("outLift")) {
-                    command = shuttleThread.getMoveLiftCommand(assignCommand.getDeviceTaskNo(), startCodeNum, distCodeNum, allDistance, ShuttleRunDirection.get(startPath.getDirection()).id.intValue(), runSpeed, nodes, false, shuttleDirectionReverse);
-                }
-                News.info("[RCS Debug] getInOutLiftTime idx:{} time:{}", i, (System.currentTimeMillis() - startGetInOutLiftTime));
-            }
-
-            command.setNodes(nodes);//灏嗚璧拌妭鐐规坊鍔犲埌姣忎竴姝ュ懡浠や腑
-            commands.add(command);
-        }
-        News.info("[RCS Debug] getSectionCommand path time:{}", (System.currentTimeMillis() - startGetSectionCommandTime));
-
-        assignCommand.setNodes(allNode);//褰撳墠浠诲姟鎵�鍗犵敤鐨勮妭鐐筶ist
-        assignCommand.setMapTypes(mapTypes);
-
-        //灏忚溅绉诲姩杩炵画涓嬪彂鎸囦护
-        boolean shuttleMoveCommandsContinuously = false;
-        if (systemConfigMapObj != null) {
-            HashMap<String, String> systemConfigMap = (HashMap<String, String>) systemConfigMapObj;
-            String shuttleMoveCommandsContinuouslyConfig = systemConfigMap.get("shuttleMoveCommandsContinuously");
-            if (shuttleMoveCommandsContinuouslyConfig != null && shuttleMoveCommandsContinuouslyConfig.equals("Y")) {
-                shuttleMoveCommandsContinuously = true;
-            }
-        }
-        assignCommand.setShuttleMoveCommandsContinuously(shuttleMoveCommandsContinuously);
-
-        News.info("{}浠诲姟锛寋}灏忚溅锛寋} - {} 璺緞鍛戒护鍖呰绠楁垚鍔燂紝鑰楁椂:{}ms", assignCommand.getTaskNo(), shuttleProtocol.getShuttleNo(), startLocNo, endLocNo, System.currentTimeMillis() - startTime);
-        return commands;
-    }
-
-    /**
-     * 鑾峰彇鍏呯數鍛戒护
-     */
-    public synchronized List<ShuttleCommand> getShuttleChargeCommand(ShuttleAssignCommand assignCommand, ShuttleThread shuttleThread, Boolean openCharge) {
-        List<ShuttleCommand> commands = new ArrayList<>();
-
-        //鑾峰彇鍏呯數鍛戒护
-        ShuttleCommand command = shuttleThread.getChargeCommand(assignCommand.getDeviceTaskNo(), openCharge);
-        commands.add(command);
-        return commands;
-    }
-
-    /**
-     * 鑾峰彇椤跺崌鍛戒护
-     */
-    public synchronized List<ShuttleCommand> getShuttleLiftCommand(ShuttleAssignCommand assignCommand, ShuttleThread shuttleThread, Boolean lift) {
-        List<ShuttleCommand> commands = new ArrayList<>();
-
-        //鑾峰彇椤跺崌鍛戒护
-        ShuttleCommand command = shuttleThread.getLiftCommand(assignCommand.getDeviceTaskNo(), lift);
-        commands.add(command);
-        return commands;
-    }
-
-    /**
-     * 妫�娴嬮殰纰嶇墿杞�
-     * @return 0:鏃犻殰纰� 1:鏈夐殰纰嶈皟搴︽垚鍔� 2:鏈夐殰纰嶈皟搴﹀け璐�
-     */
-    public synchronized int checkObstacle(String locNo, List<Integer> whiteShuttles, List<NavigateNode> whiteNodes) {
-        int innerCircle = 0;
-        int outerCircle = 3;
-        Config avoidInnerCircleConfig = configService.selectOne(new EntityWrapper<Config>().eq("code", "avoidInnerCircle"));
-        if (avoidInnerCircleConfig != null) {
-            innerCircle = Integer.parseInt(avoidInnerCircleConfig.getValue());
-        }
-
-        Config avoidOuterCircleConfig = configService.selectOne(new EntityWrapper<Config>().eq("code", "avoidOuterCircle"));
-        if (avoidOuterCircleConfig != null) {
-            outerCircle = Integer.parseInt(avoidOuterCircleConfig.getValue());
-        }
-
-        ArrayList<int[]> whiteShuttlePointList = new ArrayList<>();
-        for (Integer shuttle : whiteShuttles) {
-            //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
-            ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttle);
-            if (shuttleThread == null) {
-                continue;
-            }
-            ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
-            if (shuttleProtocol == null) {
-                continue;
-            }
-            String currentLocNo = shuttleProtocol.getCurrentLocNo();
-            int[] shuttleArr = NavigatePositionConvert.positionToXY(currentLocNo);
-            whiteShuttlePointList.add(shuttleArr);
-        }
-
-        //鑾峰彇鍐呭湀鑺傜偣
-        List<NavigateNode> innerNodes = getInnerNodes(locNo, innerCircle, whiteShuttlePointList);
-        List<Integer> nodesCar = findNodesCar(innerNodes);
-        if (nodesCar.isEmpty()) {
-            return 0;//鍐呭湀涓棤杞�
-        }
-
-        //鑾峰彇澶栧湀鑺傜偣
-        List<NavigateNode> outerNodes = getOuterNodes(locNo, outerCircle, whiteShuttlePointList, innerNodes, whiteNodes);
-
-        //灏嗗唴鍦堣妭鐐逛腑闅滅灏忚溅璋冪
-        for (Integer shuttleNo : nodesCar) {
-            ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttleNo);
-            if (shuttleThread == null) {
-                continue;
-            }
-            ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
-            if (shuttleProtocol == null) {
-                continue;
-            }
-            if (!shuttleThread.isIdle()) {
-                continue;
-            }
-
-            String targetLocNo = null;
-            for (NavigateNode node : outerNodes) {
-                String dispatchLocNo = NavigatePositionConvert.nodeToLocNo(node);
-                //鑾峰彇鍐呭湀鑺傜偣
-                List<NavigateNode> avoidInnerNodes = getInnerNodes(dispatchLocNo, innerCircle, new ArrayList<>());
-                //璁$畻鍐呭湀鏄惁鏈夊皬杞�
-                List<Integer> avoidNodesCar = findNodesCar(avoidInnerNodes);
-                if (!avoidNodesCar.isEmpty()) {
-                    continue;
-                }
-                targetLocNo = dispatchLocNo;
-                break;
-            }
-
-            if (targetLocNo == null) {
-                continue;
-            }
-            boolean dispatched = shuttleDispatchUtils.dispatchShuttle(null, targetLocNo, shuttleNo);
-            return dispatched ? 1 : 2;
-        }
-
-        return 2;//鍐呭湀涓湁杞�
-    }
-
-    private HashMap<String, Integer> findCarMap() {
-        HashMap<String, Integer> carMap = new HashMap<>();
-
-        List<DeviceConfig> shuttleList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>()
-                .eq("device_type", String.valueOf(SlaveType.Shuttle)));
-        for (DeviceConfig device : shuttleList) {
-            ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, device.getDeviceNo());
-            if (shuttleThread == null) {
-                continue;
-            }
-            ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
-            if (shuttleProtocol == null) {
-                continue;
-            }
-            String currentLocNo = shuttleProtocol.getCurrentLocNo();
-            if (currentLocNo == null) {
-                continue;
-            }
-
-            carMap.put(currentLocNo, device.getDeviceNo());
-        }
-        return carMap;
-    }
-
-    //鎼滅储鑺傜偣鍐呯殑灏忚溅缂栧彿
-    private List<Integer> findNodesCar(List<NavigateNode> nodes) {
-        List<Integer> list = new ArrayList<>();
-        HashMap<String, Integer> carMap = findCarMap();
-        for (NavigateNode node : nodes) {
-            String locNo = NavigatePositionConvert.nodeToLocNo(node);
-            if (carMap.containsKey(locNo)) {
-                list.add(carMap.get(locNo));
-            }
-        }
-
-        return list;
-    }
-
-    private List<NavigateNode> getOuterNodes(String locNo, int outerCircle, List<int[]> whiteShuttlePointList, List<NavigateNode> innerNodes, List<NavigateNode> whiteNodes) {
-        List<NavigateNode> outerNodes = new ArrayList<>();
-        List<NavigateNode> outerNodesTmp = new ArrayList<>();
-        int lev = Utils.getLev(locNo);
-        int[] pointArr = NavigatePositionConvert.positionToXY(locNo);
-        NavigateNode currentNode = new NavigateNode(pointArr[0], pointArr[1]);
-        currentNode.setZ(lev);
-
-        List<List<MapNode>> lists = navigateMapData.getJsonData(lev, NavigationMapType.getMapTypes(NavigationMapType.NONE), null, null);//鑾峰彇瀹屾暣鍦板浘
-        int[][] map = navigateMapData.parseJsonDataArr(lists);
-        int nodeValue = map[pointArr[0]][pointArr[1]];
-        currentNode.setNodeValue(nodeValue);
-
-        for (int i = 0; i < outerCircle; i++) {
-            int idx = i + 1;
-            List<NavigateNode> list = extend_outer_nodes(map, currentNode, idx);
-            if (list.isEmpty()) {
-                continue;
-            }
-            outerNodesTmp.addAll(list);
-        }
-
-        for (NavigateNode node : outerNodesTmp) {
-            boolean flag = false;
-            for (NavigateNode innerNode : innerNodes) {
-                if (node.getX() == innerNode.getX() && node.getY() == innerNode.getY()) {
-                    flag = true;
-                    break;
-                }
-            }
-
-            if (flag) {
-                continue;
-            }
-
-            for (NavigateNode whiteNode : whiteNodes) {
-                if (node.getX() == whiteNode.getX() && node.getY() == whiteNode.getY()) {
-                    flag = true;
-                    break;
-                }
-            }
-
-            if (flag) {
-                continue;
-            }
-
-            outerNodes.add(node);
-        }
-
-        return outerNodes;
-    }
-
-    private List<NavigateNode> getInnerNodes(String locNo, int innerCircle, List<int[]> whiteShuttlePointList) {
-        List<NavigateNode> innerNodes = new ArrayList<>();
-        int lev = Utils.getLev(locNo);
-        int[] pointArr = NavigatePositionConvert.positionToXY(locNo);
-        NavigateNode currentNode = new NavigateNode(pointArr[0], pointArr[1]);
-        currentNode.setZ(lev);
-
-        boolean addCurrentNode = true;
-        for (int[] shuttlePoint : whiteShuttlePointList) {
-            if(currentNode.getX() == shuttlePoint[0] && currentNode.getY() == shuttlePoint[1]) {
-                addCurrentNode = false;
-                break;
-            }
-        }
-        if (addCurrentNode) {
-            innerNodes.add(currentNode);
-        }
-
-        List<List<MapNode>> lists = navigateMapData.getJsonData(lev, NavigationMapType.getMapTypes(NavigationMapType.NONE), null, null);//鑾峰彇瀹屾暣鍦板浘
-        int[][] map = navigateMapData.parseJsonDataArr(lists);
-        int nodeValue = map[pointArr[0]][pointArr[1]];
-        currentNode.setNodeValue(nodeValue);
-
-        for (int i = 0; i < innerCircle; i++) {
-            int idx = i + 1;
-            List<NavigateNode> list = extend_inner_nodes(map, currentNode, idx);
-            if (list.isEmpty()) {
-                continue;
-            }
-
-            for (NavigateNode node : list) {
-                boolean flag = false;
-                for (int[] shuttlePoint : whiteShuttlePointList) {
-                    if(node.getX() == shuttlePoint[0] && node.getY() == shuttlePoint[1]) {
-                        flag = true;
-                        break;
-                    }
-                }
-                if(flag) {
-                    continue;
-                }
-                innerNodes.add(node);
-            }
-        }
-
-        return innerNodes;
-    }
-
-    private List<NavigateNode> extend_inner_nodes(int[][] map, NavigateNode startNode, int innerCircleIdx) {
-        //榛樿鍦板浘姣嶈建鏂瑰悜x
-        String mapDirection = "x";
-        ConfigService configService = SpringUtils.getBean(ConfigService.class);
-        if (configService != null) {
-            Config config = configService.selectOne(new EntityWrapper<Config>()
-                    .eq("code", "direction_map")
-                    .eq("status", 1));
-            if (config != null) {
-                mapDirection = config.getValue();
-            }
-        }
-
-        ArrayList<NavigateNode> nodes = new ArrayList<>();
-        int x = startNode.getX();
-        int y = startNode.getY();
-        int z = startNode.getZ();
-
-        if (mapDirection.equals("x")) {//姣嶈建x鏂瑰悜
-            if (map[x][y] == MapNodeType.MAIN_PATH.id) {
-                //姣嶈建鎵嶈兘杩涜涓婁笅绉诲姩
-                if (is_valid(map, x + innerCircleIdx, y)) {
-                    NavigateNode node = new NavigateNode(x + innerCircleIdx, y);
-                    node.setNodeValue(map[x + innerCircleIdx][y]);
-                    node.setZ(z);
-                    if (node.getNodeValue().equals(startNode.getNodeValue())) {
-                        nodes.add(node);
-                    }
-                }
-                if (is_valid(map, x - innerCircleIdx, y)) {
-                    NavigateNode node = new NavigateNode(x - innerCircleIdx, y);
-                    node.setNodeValue(map[x - innerCircleIdx][y]);
-                    node.setZ(z);
-                    if (node.getNodeValue().equals(startNode.getNodeValue())) {
-                        nodes.add(node);
-                    }
-                }
-            }
-
-            if (map[x][y] == MapNodeType.NORMAL_PATH.id || map[x][y] == MapNodeType.MAIN_PATH.id || map[x][y] == MapNodeType.CONVEYOR_CAR_GO.id || map[x][y] == MapNodeType.CHARGE.id || map[x][y] == MapNodeType.LIFT.id) {
-                //瀛愯建鍜屾瘝杞ㄣ�佸皬杞﹀彲璧拌緭閫佺嚎銆佸厖鐢垫々銆佹彁鍗囨満鎵嶈兘杩涜宸﹀彸绉诲姩
-                if (is_valid(map, x, y + innerCircleIdx)) {
-                    NavigateNode node = new NavigateNode(x, y + innerCircleIdx);
-                    node.setNodeValue(map[x][y + innerCircleIdx]);
-                    node.setZ(z);
-                    if (node.getNodeValue().equals(startNode.getNodeValue())) {
-                        nodes.add(node);
-                    }
-                }
-
-                if (is_valid(map, x, y - innerCircleIdx)) {
-                    NavigateNode node = new NavigateNode(x, y - innerCircleIdx);
-                    node.setNodeValue(map[x][y - innerCircleIdx]);
-                    node.setZ(z);
-                    if (node.getNodeValue().equals(startNode.getNodeValue())) {
-                        nodes.add(node);
-                    }
-                }
-            }
-        }else if (mapDirection.equals("y")) {//姣嶈建y鏂瑰悜
-            if (map[x][y] == MapNodeType.MAIN_PATH.id) {
-                //姣嶈建鎵嶈兘杩涜宸﹀彸绉诲姩
-                if (is_valid(map, x, y + innerCircleIdx)) {
-                    NavigateNode node = new NavigateNode(x, y + innerCircleIdx);
-                    node.setNodeValue(map[x][y + innerCircleIdx]);
-                    node.setZ(z);
-                    if (node.getNodeValue().equals(startNode.getNodeValue())) {
-                        nodes.add(node);
-                    }
-                }
-
-                if (is_valid(map, x, y - innerCircleIdx)) {
-                    NavigateNode node = new NavigateNode(x, y - innerCircleIdx);
-                    node.setNodeValue(map[x][y - innerCircleIdx]);
-                    node.setZ(z);
-                    if (node.getNodeValue().equals(startNode.getNodeValue())) {
-                        nodes.add(node);
-                    }
-                }
-            }
-
-            if (map[x][y] == MapNodeType.NORMAL_PATH.id || map[x][y] == MapNodeType.MAIN_PATH.id || map[x][y] == MapNodeType.CONVEYOR_CAR_GO.id || map[x][y] == MapNodeType.CHARGE.id || map[x][y] == MapNodeType.LIFT.id) {
-                //瀛愯建鍜屾瘝杞ㄣ�佸皬杞﹀彲璧拌緭閫佺嚎銆佸厖鐢垫々銆佹彁鍗囨満鎵嶈兘杩涜涓婁笅绉诲姩
-                if (is_valid(map, x + innerCircleIdx, y)) {
-                    NavigateNode node = new NavigateNode(x + innerCircleIdx, y);
-                    node.setNodeValue(map[x + innerCircleIdx][y]);
-                    node.setZ(z);
-                    if (node.getNodeValue().equals(startNode.getNodeValue())) {
-                        nodes.add(node);
-                    }
-                }
-                if (is_valid(map, x - innerCircleIdx, y)) {
-                    NavigateNode node = new NavigateNode(x - innerCircleIdx, y);
-                    node.setNodeValue(map[x - innerCircleIdx][y]);
-                    node.setZ(z);
-                    if (node.getNodeValue().equals(startNode.getNodeValue())) {
-                        nodes.add(node);
-                    }
-                }
-            }
-        }else {
-            throw new CoolException("寮傚父鍦板浘鏂瑰悜");
-        }
-
-        return nodes;
-    }
-
-    private List<NavigateNode> extend_outer_nodes(int[][] map, NavigateNode startNode, int innerCircleIdx) {
-        ArrayList<NavigateNode> nodes = new ArrayList<>();
-        int x = startNode.getX();
-        int y = startNode.getY();
-        int z = startNode.getZ();
-
-        if (is_valid(map, x + innerCircleIdx, y)) {
-            NavigateNode node = new NavigateNode(x + innerCircleIdx, y);
-            node.setNodeValue(map[x + innerCircleIdx][y]);
-            node.setZ(z);
-            if (node.getNodeValue().equals(startNode.getNodeValue())) {
-                nodes.add(node);
-            }
-        }
-
-        if (is_valid(map, x - innerCircleIdx, y)) {
-            NavigateNode node = new NavigateNode(x - innerCircleIdx, y);
-            node.setNodeValue(map[x - innerCircleIdx][y]);
-            node.setZ(z);
-            if (node.getNodeValue().equals(startNode.getNodeValue())) {
-                nodes.add(node);
-            }
-        }
-
-        if (is_valid(map, x, y + innerCircleIdx)) {
-            NavigateNode node = new NavigateNode(x, y + innerCircleIdx);
-            node.setNodeValue(map[x][y + innerCircleIdx]);
-            node.setZ(z);
-            if (node.getNodeValue().equals(startNode.getNodeValue())) {
-                nodes.add(node);
-            }
-        }
-
-        if (is_valid(map, x, y - innerCircleIdx)) {
-            NavigateNode node = new NavigateNode(x, y - innerCircleIdx);
-            node.setNodeValue(map[x][y - innerCircleIdx]);
-            node.setZ(z);
-            if (node.getNodeValue().equals(startNode.getNodeValue())) {
-                nodes.add(node);
-            }
-        }
-        return nodes;
-    }
-
-    private boolean is_valid(int[][] map, int x, int y) {
-        if (x < 0 || x >= map.length
-                || y < 0 || y >= map[1].length) {
-            return false;
-        }
-        // 濡傛灉缁撶偣鐨勪綅缃皬浜�0锛屽垯涓嶅悎娉�
-        if (map[x][y] < 0) {
-            return false;
-        }
-
-        //浠ヤ笂鎯呭喌閮芥病鏈夊垯鍚堟硶
-        return true;
-    }
-
-//    private boolean checkSimilarityPath(Motion motion, ShuttleAssignCommand assignCommand) {
-//        String movePath = motion.getMovePath();
-//        if (Cools.isEmpty(movePath)) {
-//            return false;
-//        }
-//
-//        Double similarityRef = 0.9D;
-//        Dict similarityRefDict = dictService.getOne(new LambdaQueryWrapper<Dict>()
-//                .eq(Dict::getFlag, "similarityRef")
-//                .eq(Dict::getStatus, 1));
-//        if (similarityRefDict != null) {
-//            similarityRef = Double.parseDouble(similarityRefDict.getValue());
-//        }
-//
-//        List<NavigateNode> originPath = JSON.parseArray(movePath, NavigateNode.class);
-//        List<NavigateNode> finalPath = assignCommand.getNodes();
-//
-//        if (finalPath == null) {
-//            return false;
-//        }
-//
-//        Double similarity = navigateUtils.similarityPath(originPath, finalPath);
-//        if (similarity <= similarityRef) {
-//            Object object = redisUtil.get(DeviceRedisConstant.SIMILARITY_TIMES + motion.getTaskNo());
-//            if (object == null) {
-//                redisUtil.set(DeviceRedisConstant.SIMILARITY_TIMES + motion.getTaskNo(), System.currentTimeMillis(), 60 * 60 * 24);
-//            }else {
-//                long similarityTimeoutRef = 20L;//榛樿瓒呮椂20s
-//                Dict similarityTimeoutDict = dictService.getOne(new LambdaQueryWrapper<Dict>()
-//                        .eq(Dict::getFlag, "similarityTimeout")
-//                        .eq(Dict::getStatus, 1));
-//                if (similarityTimeoutDict != null) {
-//                    similarityTimeoutRef = Long.parseLong(similarityTimeoutDict.getValue());
-//                }
-//
-//                long recordTime = Long.parseLong(object.toString());
-//                if (System.currentTimeMillis() - recordTime > (60 * similarityTimeoutRef)) {
-//                    //瓒呮椂锛岀洿鎺ユ斁琛�
-//                    return true;
-//                }
-//            }
-//            News.error("{} dash {} path similarity mismatch!", motion.getOrigin(), motion.getTarget());
-//            return false;
-//        }
-//
-//        return true;
-//    }
-
-}
diff --git a/src/main/java/com/zy/core/MainProcess.java b/src/main/java/com/zy/core/MainProcess.java
index de9f387..3376856 100644
--- a/src/main/java/com/zy/core/MainProcess.java
+++ b/src/main/java/com/zy/core/MainProcess.java
@@ -1,12 +1,10 @@
 package com.zy.core;
 
-import com.zy.asrs.service.impl.ForkMainServiceImpl;
 import com.zy.asrs.service.impl.MainServiceImpl;
 import com.zy.core.properties.SystemProperties;
 import lombok.Data;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
 
 import javax.annotation.PreDestroy;
@@ -20,12 +18,8 @@
 @Component
 public class MainProcess {
 
-    @Value("${deviceExecuteConfig.liftType}")
-    private String liftType;
     @Autowired
     private MainServiceImpl mainService;
-    @Autowired
-    private ForkMainServiceImpl forkMainService;
     // 鎵�灞炵嚎绋�
     private Thread thread;
     // 棰戠巼
@@ -35,14 +29,6 @@
      * =====>>  寮�濮嬪伐浣�
      */
     public void start(){
-        if(liftType.equals("ForkLift")){
-            initForkMain();
-        }else {
-            initMain();
-        }
-    }
-
-    private void initMain() {
         thread = new Thread(() -> {
             while (!Thread.currentThread().isInterrupted()) {
                 try {
@@ -54,84 +40,6 @@
                     if (!SystemProperties.WCS_RUNNING_STATUS.get()) {
                         continue;
                     }
-
-                    //鍒濆鍖栧疄鏃跺湴鍥�
-                    mainService.initRealtimeBasMap();
-
-                    // 鍏ュ簱  ===>>  鍥涘悜绌挎杞﹀叆搴撲綔涓氫笅鍙�
-                    mainService.shuttleInExecute();
-                    // 鍑哄簱  ===>>  鍥涘悜绌挎杞﹀嚭搴撲綔涓氫笅鍙�
-                    mainService.shuttleOutExecute();
-//                    //鍥涘悜绌挎杞︿换鍔″畬鎴�
-//                    mainService.shuttleFinished();
-                    //鎵ц绉诲簱浠诲姟
-                    mainService.shuttleLocMoveExecute();
-                    //鎻愬崌鏈轰换鍔�
-                    mainService.liftIoExecute();
-                    //鎻愬崌鏈轰换鍔″畬鎴�
-                    mainService.liftFinished();
-                    //鎵ц灏忚溅绉诲姩浠诲姟
-                    mainService.shuttleMoveExecute();
-                    // 寮傚父淇℃伅璁板綍
-                    mainService.recErr();
-                    // 绌挎杞� ===>> 灏忚溅鐢甸噺妫�娴嬪厖鐢�
-                    mainService.loopShuttleCharge();
-                    mainService.executeShuttleCharge();
-
-                    //鑷姩鍒囨崲鍑哄叆搴撴ā寮�
-                    mainService.autoSwitchLiftIOMode();
-
-                    // 闂撮殧
-                    Thread.sleep(200);
-                } catch (Exception e) {
-                    e.printStackTrace();
-                }
-            }
-        });
-        thread.start();
-    }
-
-    private void initForkMain() {
-        thread = new Thread(() -> {
-            while (!Thread.currentThread().isInterrupted()) {
-                try {
-
-                    // 闂撮殧
-                    Thread.sleep(300);
-
-                    // 绯荤粺杩愯鐘舵�佸垽鏂�
-                    if (!SystemProperties.WCS_RUNNING_STATUS.get()) {
-                        continue;
-                    }
-
-                    //鍒濆鍖栧疄鏃跺湴鍥�
-                    forkMainService.initRealtimeBasMap();
-
-                    //鍑哄簱浠诲姟棰勮皟搴︽彁鍗囨満
-                    forkMainService.outTaskPreviewDispatchForkLift();
-
-                    // 鍏ュ簱  ===>>  鍥涘悜绌挎杞﹀叆搴撲綔涓氫笅鍙�
-                    forkMainService.shuttleInExecute();
-                    // 鍑哄簱  ===>>  鍥涘悜绌挎杞﹀嚭搴撲綔涓氫笅鍙�
-                    forkMainService.shuttleOutExecute();
-//                    //鍥涘悜绌挎杞︿换鍔″畬鎴�
-//                    mainService.shuttleFinished();
-                    //鎵ц绉诲簱浠诲姟
-                    forkMainService.shuttleLocMoveExecute();
-                    //璐у弶鎻愬崌鏈轰换鍔�
-                    forkMainService.forkLiftIoExecute();
-                    //璐у弶鎻愬崌鏈轰换鍔″畬鎴�
-                    forkMainService.forkLiftFinished();
-                    //鎵ц灏忚溅绉诲姩浠诲姟
-                    forkMainService.shuttleMoveExecute();
-                    // 寮傚父淇℃伅璁板綍
-                    forkMainService.recErr();
-                    // 绌挎杞� ===>> 灏忚溅鐢甸噺妫�娴嬪厖鐢�
-                    forkMainService.loopShuttleCharge();
-                    forkMainService.executeShuttleCharge();
-
-                    //鑷姩鍒囨崲鍑哄叆搴撴ā寮�
-                    forkMainService.autoSwitchForkLiftIOMode();
 
                     // 闂撮殧
                     Thread.sleep(200);
diff --git a/src/main/java/com/zy/core/ServerBootstrap.java b/src/main/java/com/zy/core/ServerBootstrap.java
index 096e4f1..7cadf28 100644
--- a/src/main/java/com/zy/core/ServerBootstrap.java
+++ b/src/main/java/com/zy/core/ServerBootstrap.java
@@ -1,37 +1,18 @@
 package com.zy.core;
 
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
-import com.core.exception.CoolException;
-import com.zy.asrs.entity.BasLift;
 import com.zy.asrs.entity.DeviceConfig;
-import com.zy.asrs.entity.LocMast;
-import com.zy.asrs.service.BasLiftService;
 import com.zy.asrs.service.DeviceConfigService;
-import com.zy.asrs.service.LocMastService;
-import com.zy.asrs.utils.Utils;
 import com.zy.common.utils.RedisUtil;
-import com.zy.core.action.ShuttleAction;
 import com.zy.core.cache.MessageQueue;
-import com.zy.core.cache.SlaveConnection;
 import com.zy.core.enums.SlaveType;
-import com.zy.core.task.ShuttleExecuteScheduler;
-import com.zy.core.thread.TrafficControlThread;
-import com.zy.core.thread.impl.NyLiftThread;
-import com.zy.core.thread.impl.NyShuttleThread;
-import com.zy.core.thread.impl.TrafficControlImplThread;
-import com.zy.core.thread.impl.ZyForkLiftThread;
-import com.zy.core.utils.DeviceMsgUtils;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
 import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Component;
 
 import javax.annotation.PostConstruct;
 import javax.annotation.PreDestroy;
-import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -41,23 +22,12 @@
 @Component
 public class ServerBootstrap {
 
-    @Value("${deviceExecuteConfig.threadControlCount}")
-    private int threadControlCount;
-
     @Autowired
     private MainProcess mainProcess;
     @Autowired
     private RedisUtil redisUtil;
     @Autowired
     private DeviceConfigService deviceConfigService;
-    @Autowired
-    private ShuttleAction shuttleAction;
-    @Autowired
-    private DeviceMsgUtils deviceMsgUtils;
-    @Autowired
-    private BasLiftService basLiftService;
-    @Autowired
-    private LocMastService locMastService;
 
     @PostConstruct
     @Async
@@ -74,126 +44,65 @@
     }
 
     private void initMq(){
-        // 鍒濆鍖栬揣鍙夋彁鍗囨満mq
-        List<DeviceConfig> forkLiftList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>()
-                .eq("device_type", String.valueOf(SlaveType.ForkLift)));
-        for (DeviceConfig forkLift : forkLiftList) {
-            MessageQueue.init(SlaveType.ForkLift, forkLift.getDeviceNo());
+        // 鍒濆鍖栧爢鍨涙満mq
+        List<DeviceConfig> crnList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>()
+                .eq("device_type", String.valueOf(SlaveType.Crn)));
+        for (DeviceConfig crn : crnList) {
+            MessageQueue.init(SlaveType.Crn, crn.getDeviceNo());
         }
-        // 鍒濆鍖栨彁鍗囨満mq
-        List<DeviceConfig> liftList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>()
-                .eq("device_type", String.valueOf(SlaveType.Lift)));
-        for (DeviceConfig lift : liftList) {
-            MessageQueue.init(SlaveType.Lift, lift.getDeviceNo());
+        // 鍒濆鍖朢gv灏忚溅mq
+        List<DeviceConfig> rgvList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>()
+                .eq("device_type", String.valueOf(SlaveType.Rgv)));
+        for (DeviceConfig rgv : rgvList) {
+            MessageQueue.init(SlaveType.Rgv, rgv.getDeviceNo());
         }
-        // 鍒濆鍖栧洓鍚戠┛姊溅mq
-        List<DeviceConfig> shuttleList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>()
-                .eq("device_type", String.valueOf(SlaveType.Shuttle)));
-        for (DeviceConfig shuttle : shuttleList) {
-            MessageQueue.init(SlaveType.Shuttle, shuttle.getDeviceNo());
+        // 鍒濆鍖栬緭閫佺嚎mq
+        List<DeviceConfig> devpList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>()
+                .eq("device_type", String.valueOf(SlaveType.Devp)));
+        for (DeviceConfig devp : devpList) {
+            MessageQueue.init(SlaveType.Devp, devp.getDeviceNo());
         }
-
-        MessageQueue.init(SlaveType.TrafficControl, 1);
+        // 鍒濆鍖栨潯鐮佹壂鎻忎华mq
+        List<DeviceConfig> barcodeList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>()
+                .eq("device_type", String.valueOf(SlaveType.Barcode)));
+        for (DeviceConfig barcode : barcodeList) {
+            MessageQueue.init(SlaveType.Barcode, barcode.getDeviceNo());
+        }
+        // 鍒濆鍖朙ed鐏痬q
+        List<DeviceConfig> ledList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>()
+                .eq("device_type", String.valueOf(SlaveType.Led)));
+        for (DeviceConfig led : ledList) {
+            MessageQueue.init(SlaveType.Led, led.getDeviceNo());
+        }
     }
 
     private void initThread(){
-        List<DeviceConfig> allDevices = new ArrayList<>();
-        List<DeviceConfig> fakeDevices = new ArrayList<>();
+//        News.info("鍒濆鍖栧爢鍨涙満........................................................");
+//        List<DeviceConfig> crnList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>()
+//                .eq("device_type", String.valueOf(SlaveType.Crn)));
+//        for (DeviceConfig deviceConfig : crnList) {
+//            BasLift basLift = basLiftService.selectOne(new EntityWrapper<BasLift>().eq("lift_no", deviceConfig.getDeviceNo()));
+//            if (basLift == null) {
+//                throw new CoolException("鏈厤缃揣鍙夋彁鍗囨満鏁版嵁");
+//            }
+//
+//            ThreadHandler thread = null;
+//            if (deviceConfig.getThreadImpl().equals("ZyForkLiftThread")) {
+//                thread = new ZyForkLiftThread(deviceConfig, basLift.getStationList$(), redisUtil);
+//            } else {
+//                throw new CoolException("鏈煡鐨勭嚎绋嬪疄鐜�");
+//            }
+//
+//            new Thread(thread).start();
+//            SlaveConnection.put(SlaveType.ForkLift, deviceConfig.getDeviceNo(), thread);
+//
+//            if (deviceConfig.getFake() == 1) {
+//                fakeDevices.add(deviceConfig);
+//            }else {
+//                allDevices.add(deviceConfig);
+//            }
+//        }
 
-        // 鍒濆鍖栬揣鍙夋彁鍗囨満
-        News.info("鍒濆鍖栬揣鍙夋彁鍗囨満........................................................");
-        List<DeviceConfig> forkLiftList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>()
-                .eq("device_type", String.valueOf(SlaveType.ForkLift)));
-        for (DeviceConfig deviceConfig : forkLiftList) {
-            BasLift basLift = basLiftService.selectOne(new EntityWrapper<BasLift>().eq("lift_no", deviceConfig.getDeviceNo()));
-            if (basLift == null) {
-                throw new CoolException("鏈厤缃揣鍙夋彁鍗囨満鏁版嵁");
-            }
-
-            ThreadHandler thread = null;
-            if (deviceConfig.getThreadImpl().equals("ZyForkLiftThread")) {
-                thread = new ZyForkLiftThread(deviceConfig, basLift.getStationList$(), redisUtil);
-            } else {
-                throw new CoolException("鏈煡鐨勭嚎绋嬪疄鐜�");
-            }
-
-            new Thread(thread).start();
-            SlaveConnection.put(SlaveType.ForkLift, deviceConfig.getDeviceNo(), thread);
-
-            if (deviceConfig.getFake() == 1) {
-                fakeDevices.add(deviceConfig);
-            }else {
-                allDevices.add(deviceConfig);
-            }
-        }
-
-        // 鍒濆鍖栨彁鍗囨満
-        News.info("鍒濆鍖栨彁鍗囨満........................................................");
-        List<DeviceConfig> liftList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>()
-                .eq("device_type", String.valueOf(SlaveType.Lift)));
-        for (DeviceConfig deviceConfig : liftList) {
-            BasLift basLift = basLiftService.selectOne(new EntityWrapper<BasLift>().eq("lift_no", deviceConfig.getDeviceNo()));
-            if (basLift == null) {
-                throw new CoolException("鏈厤缃彁鍗囨満鏁版嵁");
-            }
-
-            ThreadHandler thread = null;
-            if (deviceConfig.getThreadImpl().equals("NyLiftThread")) {
-                thread = new NyLiftThread(deviceConfig, basLift.getPoint$(), basLift.getStationList$(), redisUtil);
-            } else {
-                throw new CoolException("鏈煡鐨勭嚎绋嬪疄鐜�");
-            }
-
-            new Thread(thread).start();
-            SlaveConnection.put(SlaveType.Lift, deviceConfig.getDeviceNo(), thread);
-
-            String locNo = Utils.getLocNo(basLift.getPoint$().getRow(), basLift.getPoint$().getBay(), 1);
-            LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", locNo));
-            JSONObject point = JSON.parseObject(locMast.getQrCodeValue());
-            if (point == null) {
-                continue;
-            }
-            deviceConfig.setOtherData(point.getInteger("x") + "-" + point.getInteger("y"));
-            if (deviceConfig.getFake() == 1) {
-                fakeDevices.add(deviceConfig);
-            }else {
-                allDevices.add(deviceConfig);
-            }
-        }
-
-        // 鍒濆鍖栧洓鍚戠┛姊溅
-        News.info("鍒濆鍖栧洓鍚戠┛姊溅......................................................");
-        List<DeviceConfig> shuttleList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>()
-                .eq("device_type", String.valueOf(SlaveType.Shuttle)));
-        for (DeviceConfig deviceConfig : shuttleList) {
-            ThreadHandler thread = null;
-            if (deviceConfig.getThreadImpl().equals("NyShuttleThread")) {
-                thread = new NyShuttleThread(deviceConfig, redisUtil);
-            } else {
-                throw new CoolException("鏈煡鐨勭嚎绋嬪疄鐜�");
-            }
-
-            new Thread(thread).start();
-            SlaveConnection.put(SlaveType.Shuttle, deviceConfig.getDeviceNo(), thread);
-
-            if (deviceConfig.getFake() == 1) {
-                fakeDevices.add(deviceConfig);
-            }else {
-                allDevices.add(deviceConfig);
-            }
-        }
-
-
-        //璁惧鍒濆鍖栧畬姣�
-        deviceMsgUtils.sendDeviceConfig(JSON.toJSONString(allDevices));
-        deviceMsgUtils.sendFakeDeviceConfig(JSON.toJSONString(fakeDevices));
-
-        TrafficControlThread trafficControlThread = new TrafficControlImplThread(redisUtil);
-        new Thread(trafficControlThread).start();
-        SlaveConnection.put(SlaveType.TrafficControl, 1, trafficControlThread);
-
-        ShuttleExecuteScheduler shuttleExecuteScheduler = new ShuttleExecuteScheduler(shuttleAction, deviceConfigService, redisUtil, threadControlCount);
-        new Thread(shuttleExecuteScheduler).start();
     }
 
 
diff --git a/src/main/java/com/zy/core/action/ForkLiftAction.java b/src/main/java/com/zy/core/action/ForkLiftAction.java
deleted file mode 100644
index 5866f9c..0000000
--- a/src/main/java/com/zy/core/action/ForkLiftAction.java
+++ /dev/null
@@ -1,187 +0,0 @@
-package com.zy.core.action;
-
-import com.alibaba.fastjson.JSON;
-import com.zy.asrs.entity.BasLiftOpt;
-import com.zy.asrs.entity.WrkMast;
-import com.zy.asrs.service.BasLiftOptService;
-import com.zy.asrs.service.WrkMastService;
-import com.zy.common.utils.RedisUtil;
-import com.zy.core.News;
-import com.zy.core.cache.SlaveConnection;
-import com.zy.core.enums.ForkLiftTaskModeType;
-import com.zy.core.enums.RedisKeyType;
-import com.zy.core.enums.SlaveType;
-import com.zy.core.model.CommandResponse;
-import com.zy.core.model.command.*;
-import com.zy.core.model.protocol.ForkLiftProtocol;
-import com.zy.core.thread.ForkLiftThread;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
-import java.util.Date;
-import java.util.List;
-
-@Component
-public class ForkLiftAction {
-
-    @Autowired
-    private RedisUtil redisUtil;
-    @Autowired
-    private WrkMastService wrkMastService;
-    @Autowired
-    private BasLiftOptService basLiftOptService;
-
-    public synchronized boolean assignWork(Integer liftNo, ForkLiftAssignCommand assignCommand) {
-        ForkLiftThread forkLiftThread = (ForkLiftThread) SlaveConnection.get(SlaveType.ForkLift, liftNo);
-        if (forkLiftThread == null) {
-            return false;
-        }
-
-        ForkLiftProtocol forkLiftProtocol = forkLiftThread.getStatus();
-        if (forkLiftProtocol == null) {
-            return false;
-        }
-
-        ForkLiftRedisCommand redisCommand = new ForkLiftRedisCommand();
-        redisCommand.setLiftNo(assignCommand.getLiftNo());//鎻愬崌鏈哄彿
-        redisCommand.setWrkNo(assignCommand.getTaskNo());//宸ヤ綔鍙�
-        redisCommand.setCommandStep(0);//鍛戒护鎵ц姝ュ簭
-        redisCommand.setAssignCommand(assignCommand);//鍛戒护
-        //浠诲姟鏁版嵁淇濆瓨鍒皉edis
-        if (redisUtil.set(RedisKeyType.FORK_LIFT_WORK_FLAG.key + assignCommand.getTaskNo(), JSON.toJSONString(redisCommand))) {
-            forkLiftThread.setSyncTaskNo(assignCommand.getTaskNo());
-            return true;
-        }
-        return false;
-    }
-
-    public synchronized boolean executeWork(Integer liftNo, Integer taskNo) {
-        Object obj = redisUtil.get(RedisKeyType.FORK_LIFT_WORK_FLAG.key + taskNo);
-        if (obj == null) {
-            return false;
-        }
-
-//        WrkMast wrkMast = wrkMastService.selectByWorkNo(taskNo);
-//        if (wrkMast == null) {
-//            return false;
-//        }
-
-        ForkLiftRedisCommand redisCommand = JSON.parseObject(obj.toString(), ForkLiftRedisCommand.class);
-        if (redisCommand == null) {
-            return false;
-        }
-
-        ForkLiftThread forkLiftThread = (ForkLiftThread) SlaveConnection.get(SlaveType.ForkLift, liftNo);
-        if (forkLiftThread == null) {
-            return false;
-        }
-
-        ForkLiftProtocol forkLiftProtocol = forkLiftThread.getStatus();
-        if (forkLiftProtocol == null) {
-            return false;
-        }
-
-        List<ForkLiftCommand> commands = redisCommand.getAssignCommand().getCommands();
-        if (commands.isEmpty()) {
-            return false;
-        }
-
-        ForkLiftAssignCommand assignCommand = redisCommand.getAssignCommand();
-        int commandStep = redisCommand.getCommandStep();
-
-        if (commandStep == 0) {
-            //鍙栧嚭鍛戒护
-            ForkLiftCommand command = commands.get(commandStep);
-
-            //鍒ゆ柇鎻愬崌鏈烘槸鍚︾┖闂�
-            if (!forkLiftThread.isDeviceIdle()) {
-                return false;
-            }
-
-            // 涓嬪彂鍛戒护
-            CommandResponse response = write(command, liftNo);
-
-            //淇濆瓨鍛戒护鏃ュ織
-            BasLiftOpt basLiftOpt = new BasLiftOpt();
-            basLiftOpt.setWrkNo(taskNo);
-            basLiftOpt.setLiftNo(liftNo);
-            basLiftOpt.setCommand(JSON.toJSONString(command));
-            basLiftOpt.setSystemStatus(JSON.toJSONString(forkLiftProtocol));
-            basLiftOpt.setDeviceWrk(String.valueOf(command.getTaskNo()));
-            basLiftOpt.setSendTime(new Date());//鎸囦护涓嬪彂鏃堕棿
-            //淇濆瓨鍛戒护娴佹按
-            basLiftOptService.insert(basLiftOpt);
-
-            if (!response.getResult()) {
-                News.error("璐у弶鎻愬崌鏈哄懡浠や笅鍙戝け璐ワ紝鎻愬崌鏈哄彿={}锛屼换鍔℃暟鎹�={}", command.getLiftNo(), JSON.toJSON(command));
-                return false;
-            } else {
-                News.info("璐у弶鎻愬崌鏈哄懡浠や笅鍙戞垚鍔燂紝鎻愬崌鏈哄彿={}锛屼换鍔℃暟鎹�={}", command.getLiftNo(), JSON.toJSON(command));
-            }
-
-            commandStep++;
-            //鏇存柊redis鏁版嵁
-            redisCommand.setCommandStep(commandStep);
-            // 鏇存柊redis鏁版嵁
-            redisUtil.set(RedisKeyType.FORK_LIFT_WORK_FLAG.key + taskNo, JSON.toJSONString(redisCommand));
-        }
-
-        return true;
-    }
-
-    private synchronized CommandResponse write(ForkLiftCommand command, Integer liftNo) {
-        CommandResponse response = new CommandResponse(false);
-        if (null == command) {
-            News.error("鎻愬崌鏈哄啓鍏ュ懡浠や负绌�");
-            response.setMessage("鎻愬崌鏈哄啓鍏ュ懡浠や负绌�");
-            return response;
-        }
-
-        ForkLiftThread forkLiftThread = (ForkLiftThread) SlaveConnection.get(SlaveType.ForkLift, liftNo);
-        if (forkLiftThread == null) {
-            return response;
-        }
-
-        if (command.getMode().intValue() == ForkLiftTaskModeType.PICK_PUT.id) {
-            response = forkLiftThread.pickAndPut(command);
-        } else if (command.getMode().intValue() == ForkLiftTaskModeType.SHUTTLE_SWITCH.id) {
-            response = forkLiftThread.shuttleSwitch(command);
-        } else if (command.getMode().intValue() == ForkLiftTaskModeType.MOVE.id) {
-            response = forkLiftThread.move(command);
-        }
-        return response;
-    }
-
-    //鐢宠鎻愬崌鏈鸿祫婧�
-    public synchronized boolean applyForkLift(Integer liftNo, Integer waitBindTaskNo) {
-        ForkLiftThread forkLiftThread = (ForkLiftThread) SlaveConnection.get(SlaveType.ForkLift, liftNo);
-        if (forkLiftThread == null) {
-            return false;
-        }
-        ForkLiftProtocol forkLiftProtocol = forkLiftThread.getStatus();
-        if (forkLiftProtocol == null) {
-            return false;
-        }
-        if (!forkLiftThread.isIdle()) {
-            return false;
-        }
-
-        List<WrkMast> wrkMasts = wrkMastService.selectLiftWrkMast(liftNo);
-        if (!wrkMasts.isEmpty()) {
-            return false;
-        }
-
-        if (waitBindTaskNo != null) {
-            WrkMast wrkMast = wrkMastService.selectByWorkNo(waitBindTaskNo);
-            if (wrkMast == null) {
-                return false;
-            }
-
-            wrkMast.setLiftNo(liftNo);
-            wrkMast.setModiTime(new Date());
-            wrkMastService.updateById(wrkMast);
-        }
-        return true;
-    }
-
-}
diff --git a/src/main/java/com/zy/core/action/LiftAction.java b/src/main/java/com/zy/core/action/LiftAction.java
deleted file mode 100644
index fa61265..0000000
--- a/src/main/java/com/zy/core/action/LiftAction.java
+++ /dev/null
@@ -1,225 +0,0 @@
-package com.zy.core.action;
-
-import com.alibaba.fastjson.JSON;
-import com.zy.asrs.entity.BasLiftOpt;
-import com.zy.asrs.entity.WrkMast;
-import com.zy.asrs.service.BasLiftOptService;
-import com.zy.asrs.service.WrkMastService;
-import com.zy.common.utils.RedisUtil;
-import com.zy.core.News;
-import com.zy.core.cache.SlaveConnection;
-import com.zy.core.enums.LiftProtocolStatusType;
-import com.zy.core.enums.LiftTaskModeType;
-import com.zy.core.enums.RedisKeyType;
-import com.zy.core.enums.SlaveType;
-import com.zy.core.model.CommandResponse;
-import com.zy.core.model.command.LiftAssignCommand;
-import com.zy.core.model.command.LiftCommand;
-import com.zy.core.model.command.LiftRedisCommand;
-import com.zy.core.model.protocol.LiftProtocol;
-import com.zy.core.thread.LiftThread;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
-import java.util.Date;
-import java.util.List;
-
-@Component
-public class LiftAction {
-
-    @Autowired
-    private RedisUtil redisUtil;
-    @Autowired
-    private WrkMastService wrkMastService;
-    @Autowired
-    private BasLiftOptService basLiftOptService;
-
-    public synchronized boolean assignWork(Integer liftNo, LiftAssignCommand assignCommand) {
-        LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, liftNo);
-        if (liftThread == null) {
-            return false;
-        }
-
-        LiftProtocol liftProtocol = liftThread.getStatus();
-        if (liftProtocol == null) {
-            return false;
-        }
-
-        LiftRedisCommand redisCommand = new LiftRedisCommand();
-        redisCommand.setLiftNo(assignCommand.getLiftNo());//鎻愬崌鏈哄彿
-        redisCommand.setWrkNo(assignCommand.getTaskNo());//宸ヤ綔鍙�
-        redisCommand.setCommandStep(0);//鍛戒护鎵ц姝ュ簭
-        redisCommand.setAssignCommand(assignCommand);//鍛戒护
-        //浠诲姟鏁版嵁淇濆瓨鍒皉edis
-        if (redisUtil.set(RedisKeyType.LIFT_WORK_FLAG.key + assignCommand.getTaskNo(), JSON.toJSONString(redisCommand))) {
-            liftThread.setSyncTaskNo(assignCommand.getTaskNo());
-            return true;
-        }
-        return false;
-    }
-
-    public synchronized boolean executeWork(Integer liftNo, Integer taskNo) {
-        Object obj = redisUtil.get(RedisKeyType.LIFT_WORK_FLAG.key + taskNo);
-        if (obj == null) {
-            return false;
-        }
-
-        LiftRedisCommand redisCommand = JSON.parseObject(obj.toString(), LiftRedisCommand.class);
-        if (redisCommand == null) {
-            return false;
-        }
-
-        LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, liftNo);
-        if (liftThread == null) {
-            return false;
-        }
-
-        LiftProtocol liftProtocol = liftThread.getStatus();
-        if (liftProtocol == null) {
-            return false;
-        }
-
-        List<LiftCommand> commands = redisCommand.getAssignCommand().getCommands();
-        if (commands.isEmpty()) {
-            return false;
-        }
-
-        LiftAssignCommand assignCommand = redisCommand.getAssignCommand();
-        int commandStep = redisCommand.getCommandStep();
-
-        if (commandStep == 0) {
-            //鍙栧嚭鍛戒护
-            LiftCommand command = commands.get(commandStep);
-
-            //鍒ゆ柇鎻愬崌鏈烘槸鍚︾┖闂�
-            if (!liftThread.isDeviceIdle()) {
-                return false;
-            }
-
-            // 涓嬪彂鍛戒护
-            CommandResponse response = write(command, liftNo);
-
-            //淇濆瓨鍛戒护鏃ュ織
-            BasLiftOpt basLiftOpt = new BasLiftOpt();
-            basLiftOpt.setWrkNo(taskNo);
-            basLiftOpt.setLiftNo(liftNo);
-            basLiftOpt.setCommand(JSON.toJSONString(command));
-            basLiftOpt.setSystemStatus(JSON.toJSONString(liftProtocol));
-            basLiftOpt.setDeviceWrk(String.valueOf(command.getTaskNo()));
-            basLiftOpt.setSendTime(new Date());//鎸囦护涓嬪彂鏃堕棿
-            //淇濆瓨鍛戒护娴佹按
-            basLiftOptService.insert(basLiftOpt);
-
-            if (!response.getResult()) {
-                News.error("鎻愬崌鏈哄懡浠や笅鍙戝け璐ワ紝鎻愬崌鏈哄彿={}锛屼换鍔℃暟鎹�={}", command.getLiftNo(), JSON.toJSON(command));
-                return false;
-            } else {
-                News.info("鎻愬崌鏈哄懡浠や笅鍙戞垚鍔燂紝鎻愬崌鏈哄彿={}锛屼换鍔℃暟鎹�={}", command.getLiftNo(), JSON.toJSON(command));
-            }
-
-            commandStep++;
-            //鏇存柊redis鏁版嵁
-            redisCommand.setCommandStep(commandStep);
-            // 鏇存柊redis鏁版嵁
-            redisUtil.set(RedisKeyType.LIFT_WORK_FLAG.key + taskNo, JSON.toJSONString(redisCommand));
-        }else {
-            if (!liftThread.isDeviceIdle()) {
-                return false;
-            }
-
-            LiftCommand lastCommand = commands.get(commandStep - 1);
-            if (lastCommand.getMode() == LiftTaskModeType.PICK_PUT.id) {
-//                if (liftProtocol.getLev() == lastCommand.getPutLev()) {
-//                    lastCommand.setComplete(true);
-//                }
-                lastCommand.setComplete(true);
-            } else if (lastCommand.getMode() == LiftTaskModeType.SHUTTLE_SWITCH.id) {
-                if (liftProtocol.getLev() == lastCommand.getPutLev()) {
-                    lastCommand.setComplete(true);
-                }
-            } else if (lastCommand.getMode() == LiftTaskModeType.MOVE.id) {
-                if (liftProtocol.getLev() == lastCommand.getPutLev()) {
-                    lastCommand.setComplete(true);
-                }
-            }
-
-            //浠诲姟鏁版嵁淇濆瓨鍒皉edis
-            redisUtil.set(RedisKeyType.LIFT_WORK_FLAG.key + redisCommand.getWrkNo(), JSON.toJSONString(redisCommand));
-
-            if (!lastCommand.getComplete()) {
-                //涓婁竴鏉′换鍔℃湭瀹屾垚锛岀姝笅鍙戝懡浠�
-                return false;
-            }
-
-            //鍒ゆ柇鏄惁涓烘渶鍚庝竴鏉″懡浠や笖鍛戒护鎵ц瀹屾垚锛屾姏鍑虹瓑寰呯‘璁ょ姸鎬�
-            LiftCommand endCommand = commands.get(commands.size() - 1);
-            if (endCommand.getComplete()) {
-                //宸叉墽琛屽畬鎴�
-                //鍒犻櫎redis
-                redisUtil.del(RedisKeyType.LIFT_WORK_FLAG.key + redisCommand.getWrkNo());
-
-                //瀵逛富绾跨▼鎶涘嚭绛夊緟纭鐘舵�亀aiting
-                liftThread.setProtocolStatus(LiftProtocolStatusType.WAITING);
-                News.info("鎻愬崌鏈轰换鍔℃墽琛屼笅鍙戝畬鎴愭墽琛岀粨鏉燂紝鎻愬崌鏈哄彿={}锛屼换鍔℃暟鎹�={}", redisCommand.getLiftNo(), JSON.toJSON(redisCommand));
-            }
-        }
-
-        return true;
-    }
-
-    private synchronized CommandResponse write(LiftCommand command, Integer liftNo) {
-        CommandResponse response = new CommandResponse(false);
-        if (null == command) {
-            News.error("鎻愬崌鏈哄啓鍏ュ懡浠や负绌�");
-            response.setMessage("鎻愬崌鏈哄啓鍏ュ懡浠や负绌�");
-            return response;
-        }
-
-        LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, liftNo);
-        if (liftThread == null) {
-            return response;
-        }
-
-        if (command.getMode() == LiftTaskModeType.PICK_PUT.id) {
-            response = liftThread.pickAndPut(command);
-        } else if (command.getMode() == LiftTaskModeType.SHUTTLE_SWITCH.id) {
-            response = liftThread.shuttleSwitch(command);
-        } else if (command.getMode() == LiftTaskModeType.MOVE.id) {
-            response = liftThread.move(command);
-        }
-        return response;
-    }
-
-    //鐢宠鎻愬崌鏈鸿祫婧�
-    public synchronized boolean applyLift(Integer liftNo, Integer waitBindTaskNo) {
-        LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, liftNo);
-        if (liftThread == null) {
-            return false;
-        }
-        LiftProtocol liftProtocol = liftThread.getStatus();
-        if (liftProtocol == null) {
-            return false;
-        }
-        if (!liftThread.isIdle()) {
-            return false;
-        }
-
-        List<WrkMast> wrkMasts = wrkMastService.selectLiftWrkMast(liftNo);
-        if (!wrkMasts.isEmpty()) {
-            return false;
-        }
-
-        if (waitBindTaskNo != null) {
-            WrkMast wrkMast = wrkMastService.selectByWorkNo(waitBindTaskNo);
-            if (wrkMast == null) {
-                return false;
-            }
-
-            wrkMast.setLiftNo(liftNo);
-            wrkMast.setModiTime(new Date());
-            wrkMastService.updateById(wrkMast);
-        }
-        return true;
-    }
-
-}
diff --git a/src/main/java/com/zy/core/action/ShuttleAction.java b/src/main/java/com/zy/core/action/ShuttleAction.java
deleted file mode 100644
index 42e4a3f..0000000
--- a/src/main/java/com/zy/core/action/ShuttleAction.java
+++ /dev/null
@@ -1,793 +0,0 @@
-package com.zy.core.action;
-
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.serializer.SerializerFeature;
-import com.baomidou.mybatisplus.mapper.EntityWrapper;
-import com.fasterxml.jackson.core.type.TypeReference;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.zy.asrs.domain.param.CreateLocMoveTaskParam;
-import com.zy.asrs.entity.BasShuttleOpt;
-import com.zy.asrs.entity.LocMast;
-import com.zy.asrs.entity.WrkMast;
-import com.zy.asrs.service.BasShuttleOptService;
-import com.zy.asrs.service.LocMastService;
-import com.zy.asrs.service.WrkMastService;
-import com.zy.asrs.utils.Utils;
-import com.zy.common.model.NavigateNode;
-import com.zy.common.service.CommonService;
-import com.zy.common.utils.NavigateMapUtils;
-import com.zy.common.utils.RedisUtil;
-import com.zy.core.News;
-import com.zy.core.cache.SlaveConnection;
-import com.zy.core.dispatcher.ShuttleDispatchUtils;
-import com.zy.core.enums.*;
-import com.zy.core.model.CommandResponse;
-import com.zy.core.model.TrafficControlDataModel;
-import com.zy.core.model.command.ShuttleAssignCommand;
-import com.zy.core.model.command.ShuttleCommand;
-import com.zy.core.model.command.ShuttleRedisCommand;
-import com.zy.core.model.protocol.ShuttleProtocol;
-import com.zy.core.thread.ShuttleThread;
-import com.zy.core.thread.TrafficControlThread;
-import com.zy.system.entity.Config;
-import com.zy.system.service.ConfigService;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
-import java.io.IOException;
-import java.util.*;
-
-@Component
-public class ShuttleAction {
-
-    @Autowired
-    private RedisUtil redisUtil;
-    @Autowired
-    private NavigateMapUtils navigateMapUtils;
-    @Autowired
-    private LocMastService locMastService;
-    @Autowired
-    private ObjectMapper objectMapper;
-    @Autowired
-    private ConfigService configService;
-    @Autowired
-    private BasShuttleOptService basShuttleOptService;
-    @Autowired
-    private WrkMastService wrkMastService;
-    @Autowired
-    private ShuttleDispatchUtils shuttleDispatchUtils;
-    @Autowired
-    private CommonService commonService;
-
-    public synchronized boolean assignWork(Integer shuttleNo, ShuttleAssignCommand assignCommand) {
-        ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttleNo);
-        if (shuttleThread == null) {
-            return false;
-        }
-
-        TrafficControlThread trafficControlThread = (TrafficControlThread) SlaveConnection.get(SlaveType.TrafficControl, 1);
-        if(trafficControlThread == null){
-            return false;
-        }
-
-        //Clear Traffic Control
-        trafficControlThread.forceCancelTrafficControl(shuttleNo);
-
-        ShuttleRedisCommand redisCommand = new ShuttleRedisCommand();
-
-        redisCommand.setShuttleNo(assignCommand.getShuttleNo());//鍥涘悜绌挎杞﹀彿
-        redisCommand.setWrkNo(assignCommand.getTaskNo());//宸ヤ綔鍙�
-        redisCommand.setCommandStep(0);//鍛戒护鎵ц姝ュ簭
-        redisCommand.setAssignCommand(assignCommand);//鍛戒护
-        //浠诲姟鏁版嵁淇濆瓨鍒皉edis
-        if (redisUtil.set(RedisKeyType.SHUTTLE_WORK_FLAG.key + assignCommand.getTaskNo(), JSON.toJSONString(redisCommand, SerializerFeature.DisableCircularReferenceDetect))) {
-            shuttleThread.setSyncTaskNo(assignCommand.getTaskNo());
-            return true;
-        }
-        return false;
-    }
-
-    public boolean executeWork(Integer shuttleNo, Integer taskNo) {
-        Object obj = redisUtil.get(RedisKeyType.SHUTTLE_WORK_FLAG.key + taskNo);
-        if (obj == null) {
-            return false;
-        }
-
-        ShuttleRedisCommand redisCommand = null;
-        try {
-            redisCommand = objectMapper.readValue(String.valueOf(obj), ShuttleRedisCommand.class);
-        } catch (IOException e) {
-            throw new RuntimeException(e);
-        }
-
-        if (redisCommand == null) {
-            return false;
-        }
-
-        ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttleNo);
-        if (shuttleThread == null) {
-            return false;
-        }
-
-        ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
-        if (shuttleProtocol == null) {
-            return false;
-        }
-
-        //鍒ゆ柇宸ヤ綔鍙锋槸鍚︾浉鍚�
-        if (!shuttleProtocol.getTaskNo().equals(taskNo)) {
-            return false;
-        }
-
-        News.info("[RCS Debug] Execute check command {},{}", shuttleNo, taskNo);
-        //妫�娴嬪懡浠�
-        ShuttleCheckCommandResultType checked = checkCommand(redisCommand, shuttleNo);
-        News.info("[RCS Debug] Execute check command complete {},{}", shuttleNo, taskNo);
-        if (checked.equals(ShuttleCheckCommandResultType.FAIL)) {
-            return false;
-        }
-
-        ShuttleAssignCommand assignCommand = redisCommand.getAssignCommand();
-        List<ShuttleCommand> commands = assignCommand.getCommands();
-        if (commands.isEmpty()) {
-            return false;
-        }
-
-        int commandStep = redisCommand.getCommandStep();
-        if(commandStep >= commands.size()){
-            return false;
-        }
-
-        //鍙栧嚭鍛戒护
-        ShuttleCommand command = null;
-        if (checked.equals(ShuttleCheckCommandResultType.SUCCESS)) {
-            //闈炶繛缁寚浠わ紝闇�瑕佹娴嬩笂涓�鏉℃寚浠ゆ槸鍚﹀畬鎴�
-            if (commandStep > 0) {
-                ShuttleCommand lastCommand = commands.get(commandStep - 1);
-                if (!lastCommand.getComplete()) {
-                    return false;//鎸囦护鏈畬鎴�
-                }
-            }
-
-            command = commands.get(commandStep);
-        } else if (checked.equals(ShuttleCheckCommandResultType.SUCCESS_GO)) {
-            //杩炵画鎸囦护鐩存帴鍙栨暟鎹�
-            command = commands.get(commandStep);
-        }
-
-        if(command == null){
-            return false;
-        }
-
-        //绉诲姩鍛戒护锛岄攣瀹氳矾寰�
-        if (command.getMode() == ShuttleCommandModeType.MOVE.id) {
-            TrafficControlThread trafficControlThread = (TrafficControlThread) SlaveConnection.get(SlaveType.TrafficControl, 1);
-            if (trafficControlThread == null) {
-                return false;
-            }
-
-            List<NavigateNode> nodes = JSON.parseArray(JSON.toJSONString(command.getNodes()), NavigateNode.class);
-
-            Object object = redisUtil.get(RedisKeyType.TRAFFIC_CONTROL_LOCK_APPLY.key + shuttleNo);
-            if (object == null) {
-                //鐢宠绠″埗
-                News.info("[RCS Debug] Execute apply control {},{}", shuttleNo, taskNo);
-                redisUtil.set(RedisKeyType.TRAFFIC_CONTROL_LOCK_APPLY.key + shuttleNo, "lock", 4);
-                applyTrafficControl(commands, nodes, shuttleNo, taskNo);
-                News.info("[RCS Debug] Execute apply control complete {},{}", shuttleNo, taskNo);
-            }
-
-            News.info("[RCS Debug] Execute query control {},{}", shuttleNo, taskNo);
-            //鏌ヨ绠″埗
-            boolean apply = queryTrafficControl(shuttleNo, taskNo);
-            News.info("[RCS Debug] Execute query control complete {},{}", shuttleNo, taskNo);
-            if(!apply){
-                return false;//鐢宠澶辫触
-            }
-
-            if (checked.equals(ShuttleCheckCommandResultType.SUCCESS_GO)) {
-                nodes.remove(0);
-            }
-
-            boolean result = navigateMapUtils.writeNavigateNodeToRedisMap(Utils.getLev(command.getTargetLocNo()), shuttleNo, nodes, true);//閿佸畾璺緞
-            if (!result) {
-                News.error("{} device can't lock path!", shuttleNo);
-                shuttleThread.offerSystemMsg("{} device can't lock path!", shuttleNo);
-                trafficControlThread.trafficReportError(shuttleNo, taskNo);
-                return false;//璺緞閿佸畾澶辫触
-            }
-        }
-
-        News.info("[RCS Debug] Execute send command {},{}", shuttleNo, taskNo);
-        // 涓嬪彂鍛戒护
-        CommandResponse response = write(command, shuttleNo);
-        News.info("[RCS Debug] Execute send command complete {},{}", shuttleNo, taskNo);
-
-        //淇濆瓨鍛戒护鏃ュ織
-        BasShuttleOpt basShuttleOpt = new BasShuttleOpt();
-        basShuttleOpt.setWrkNo(redisCommand.getWrkNo());
-        basShuttleOpt.setShuttleNo(shuttleNo);
-
-        basShuttleOpt.setMode(ShuttleTaskModeType.get(assignCommand.getTaskMode()).desc);
-        basShuttleOpt.setSourceLocNo(assignCommand.getSourceLocNo());
-        basShuttleOpt.setDistLocNo(assignCommand.getLocNo());
-        basShuttleOpt.setCommand(JSON.toJSONString(command));
-        basShuttleOpt.setSystemStatus(JSON.toJSONString(shuttleProtocol));
-        basShuttleOpt.setDeviceWrk(String.valueOf(command.getTaskNo()));
-        basShuttleOpt.setResponse(response.getMessage());//鑾峰彇鍝嶅簲
-        basShuttleOpt.setSendTime(new Date());//鎸囦护涓嬪彂鏃堕棿
-        basShuttleOpt.setSend(response.getResult() ? 1 : 0);
-        //淇濆瓨鍛戒护娴佹按
-        basShuttleOptService.insert(basShuttleOpt);
-
-        if (!response.getResult()) {
-            News.error("鍥涘悜绌挎杞﹀懡浠や笅鍙戝け璐ワ紝绌挎杞﹀彿={}锛屼换鍔℃暟鎹�={}", shuttleProtocol.getShuttleNo(), JSON.toJSON(command));
-            return false;
-        }
-
-        shuttleThread.setProtocolStatus(ShuttleProtocolStatusType.WORKING);
-
-        commandStep += 1;
-        //鏇存柊redis鏁版嵁
-        redisCommand.setCommandStep(commandStep);
-
-        //浠诲姟鏁版嵁淇濆瓨鍒皉edis
-        redisUtil.set(RedisKeyType.SHUTTLE_WORK_FLAG.key + redisCommand.getWrkNo(), JSON.toJSONString(redisCommand));
-        return true;
-    }
-
-    /**
-     * 妫�娴嬪懡浠�
-     * 0:鏈�氳繃 1:閫氳繃 2:閫氳繃涓斿彲鎻愬墠涓嬪彂鎸囦护
-     */
-    private ShuttleCheckCommandResultType checkCommand(ShuttleRedisCommand redisCommand, Integer shuttleNo) {
-        TrafficControlThread trafficControlThread = (TrafficControlThread) SlaveConnection.get(SlaveType.TrafficControl, 1);
-        if(trafficControlThread == null){
-            return ShuttleCheckCommandResultType.FAIL;
-        }
-
-        ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttleNo);
-        if (shuttleThread == null) {
-            return ShuttleCheckCommandResultType.FAIL;
-        }
-
-        ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
-        if (shuttleProtocol == null) {
-            return ShuttleCheckCommandResultType.FAIL;
-        }
-
-        int commandStep = redisCommand.getCommandStep();
-        if (commandStep == 0) {
-            return ShuttleCheckCommandResultType.SUCCESS;//绗竴鏉″懡浠ゆ棤闇�妫�娴�
-        }
-
-        ShuttleAssignCommand assignCommand = redisCommand.getAssignCommand();
-        List<ShuttleCommand> commands = assignCommand.getCommands();
-        if (commands.isEmpty()) {
-            return ShuttleCheckCommandResultType.FAIL;
-        }
-
-        boolean supportContinuously = false;
-        int checkIdx = commandStep - 2;
-        if (checkIdx < 0) {
-            supportContinuously = true;
-            checkIdx = commandStep - 1;
-        }
-
-        ShuttleCommand last2Command = commands.get(checkIdx);
-        if(last2Command.getComplete()){
-            supportContinuously = true;
-            checkIdx = commandStep - 1;
-        }
-
-        ShuttleCommand lastCommand = commands.get(checkIdx);
-        if (!lastCommand.getComplete()) {
-            //妫�娴嬫洿鏂板懡浠ゅ畬鎴�
-            boolean checked = updateCommandComplete(checkIdx, commands, shuttleNo);
-            if (checked) {
-                // 鏇存柊redis鏁版嵁
-                redisUtil.set(RedisKeyType.SHUTTLE_WORK_FLAG.key + redisCommand.getWrkNo(), JSON.toJSONString(redisCommand, SerializerFeature.DisableCircularReferenceDetect));
-            }else {
-                //灏忚溅绉诲姩杩炵画涓嬪彂鎸囦护
-                if (assignCommand.getShuttleMoveCommandsContinuously()) {
-                    if (!supportContinuously) {
-                        return ShuttleCheckCommandResultType.FAIL;
-                    }
-
-                    //绉诲姩鎸囦护
-                    if(lastCommand.getMode() != ShuttleCommandModeType.MOVE.id) {
-                        return ShuttleCheckCommandResultType.FAIL;
-                    }
-
-                    List<NavigateNode> nodes = lastCommand.getNodes();
-                    NavigateNode startNode = nodes.get(0);
-                    if (!startNode.getLinePartAllowGo()) {//鐩寸嚎娈甸儴鍒嗭紝鍏佽鐩存帴琛岃蛋
-                        return ShuttleCheckCommandResultType.FAIL;
-                    }
-
-                    //鐩寸嚎娈垫暟鎹爣璇�
-                    Long linePartFlag = startNode.getLinePartFlag();
-
-                    if(commandStep < commands.size()){
-                        //鍙栨寚浠�
-                        ShuttleCommand currentCommand = commands.get(commandStep);
-                        if(currentCommand.getMode() != ShuttleCommandModeType.MOVE.id) {
-                            return ShuttleCheckCommandResultType.FAIL;
-                        }
-
-                        List<NavigateNode> currentNodes = currentCommand.getNodes();
-                        NavigateNode currentStartNode = currentNodes.get(0);
-                        if(!currentStartNode.getLinePartAllowGo()) {//鐩寸嚎娈甸儴鍒嗭紝鍏佽鐩存帴琛岃蛋
-                            return ShuttleCheckCommandResultType.FAIL;
-                        }
-
-                        if(currentStartNode.getLinePartFlag().equals(linePartFlag)) {
-                            //鏁版嵁鏍囪瘑涓�鑷�
-                            return ShuttleCheckCommandResultType.SUCCESS_GO;//鍏佽灏忚溅绉诲姩杩炵画涓嬪彂鎸囦护
-                        }
-                    }
-                }
-
-                return ShuttleCheckCommandResultType.FAIL;
-            }
-        }
-
-        //鍒ゆ柇鏄惁涓烘渶鍚庝竴鏉″懡浠や笖鍛戒护鎵ц瀹屾垚锛屾姏鍑虹瓑寰呯‘璁ょ姸鎬�
-        ShuttleCommand endCommand = commands.get(commands.size() - 1);
-        if (endCommand.getComplete()) {
-            News.info("鍥涘悜绌挎杞︿换鍔℃墽琛屼笅鍙戝畬鎴愮瓑寰呮墽琛岀粨鏉燂紝绌挎杞﹀彿={}锛屼换鍔℃暟鎹�={}", shuttleProtocol.getShuttleNo(), JSON.toJSON(commands));
-
-            // 绯荤粺浠诲姟
-            if (assignCommand.getAuto()) {
-                if (assignCommand.getTaskMode() == ShuttleTaskModeType.UPDATE_LOCATION.id) {//鏇存柊鍧愭爣鏃犻渶绛夊緟纭
-                    //鐩存帴澶嶄綅绌洪棽鐘舵��
-                    shuttleThread.setProtocolStatus(ShuttleProtocolStatusType.IDLE);
-                    //浠诲姟鍙锋竻闆�
-                    shuttleThread.setSyncTaskNo(0);
-                    //鏍囪澶嶄綅
-                    shuttleThread.setPakMk(true);
-                    News.info("鍥涘悜绌挎杞︽洿鏂板潗鏍囦换鍔℃墽琛屽畬鎴愶紝绌挎杞﹀彿={}锛屼换鍔℃暟鎹�={}", shuttleProtocol.getShuttleNo(), JSON.toJSON(endCommand));
-                }else {
-                    if (!assignCommand.getCharge()) {
-                        //瀵逛富绾跨▼鎶涘嚭绛夊緟纭鐘舵�亀aiting
-                        shuttleThread.setProtocolStatus(ShuttleProtocolStatusType.WAITING);
-                    } else {
-                        shuttleThread.setProtocolStatus(ShuttleProtocolStatusType.CHARGING_WAITING);
-                    }
-                    News.info("鍥涘悜绌挎杞︿换鍔℃墽琛屼笅鍙戝畬鎴愮瓑寰呮墽琛岀粨鏉燂紝绌挎杞﹀彿={}锛屼换鍔℃暟鎹�={}", shuttleProtocol.getShuttleNo(), JSON.toJSON(endCommand));
-                }
-            } else {// 鎵嬪姩浠诲姟
-                //鎵嬪姩妯″紡涓嶆姏鍑虹瓑寰呯姸鎬侊紝鐩存帴澶嶄綅绌洪棽鐘舵��
-                shuttleThread.setProtocolStatus(ShuttleProtocolStatusType.IDLE);
-                //浠诲姟鍙锋竻闆�
-                shuttleThread.setSyncTaskNo(0);
-                //鏍囪澶嶄綅
-                shuttleThread.setPakMk(true);
-                News.info("鍥涘悜绌挎杞︽墜鍔ㄤ换鍔℃墽琛屽畬鎴愶紝绌挎杞﹀彿={}锛屼换鍔℃暟鎹�={}", shuttleProtocol.getShuttleNo(), JSON.toJSON(endCommand));
-            }
-
-            //鐢宠鍙栨秷绠″埗
-            cancelTrafficControl(shuttleNo, shuttleProtocol.getTaskNo());
-
-            //鍒犻櫎redis
-            redisUtil.del(RedisKeyType.SHUTTLE_WORK_FLAG.key + redisCommand.getWrkNo());
-            return ShuttleCheckCommandResultType.FAIL;//绂佹鍐嶄笅鍙戝懡浠�
-        }
-
-        return ShuttleCheckCommandResultType.SUCCESS;
-    }
-
-    //妫�娴嬫洿鏂板懡浠ゅ畬鎴�
-    private boolean updateCommandComplete(Integer commandIdx, List<ShuttleCommand> commands, Integer shuttleNo) {
-        ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttleNo);
-        if (shuttleThread == null) {
-            return false;
-        }
-
-        ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
-        if (shuttleProtocol == null) {
-            return false;
-        }
-
-        //鍒ゆ柇璁惧鏄惁绌洪棽
-        boolean deviceIdle = shuttleThread.isDeviceIdle();
-
-        ShuttleCommand command = commands.get(commandIdx);
-        if (command.getMode() == ShuttleCommandModeType.MOVE.id) {
-            // 姝e父绉诲姩
-            List<String> targetPoints = new ArrayList<>();
-
-            //瑙i攣閿佸畾璺緞锛屼笂涓�鏉¤矾寰�
-            List<NavigateNode> nodes = null;
-            try {
-                String nodesStr = objectMapper.writeValueAsString(command.getNodes());
-                nodes = objectMapper.readValue(nodesStr, new TypeReference<List<NavigateNode>>() {
-                });
-            } catch (IOException e) {
-                throw new RuntimeException(e);
-            }
-
-            NavigateNode startNode = nodes.get(0);
-            Long linePartFlag = startNode.getLinePartFlag();
-
-            NavigateNode targetNode = nodes.get(nodes.size() - 1);
-            targetPoints.add(targetNode.getX() + "-" + targetNode.getY());
-
-            for (int i = commandIdx + 1; i < commands.size(); i++) {
-                ShuttleCommand nextCommand = commands.get(i);
-                if (nextCommand.getMode() == ShuttleCommandModeType.MOVE.id) {
-                    List<NavigateNode> nextCommandNodes = nextCommand.getNodes();
-                    NavigateNode nextStartNode = nextCommandNodes.get(0);
-                    Long nextLinePartFlag = nextStartNode.getLinePartFlag();
-                    if(nextLinePartFlag.equals(linePartFlag)) {
-                        for (NavigateNode node : nextCommandNodes) {
-                            String key = node.getX() + "-" + node.getY();
-                            if(!targetPoints.contains(key)) {
-                                targetPoints.add(key);
-                            }
-                        }
-                    }
-                }
-            }
-
-            TrafficControlThread trafficControlThread = (TrafficControlThread) SlaveConnection.get(SlaveType.TrafficControl, 1);
-            if (trafficControlThread == null) {
-                return false;
-            }
-            //涓婃姤浜ょ
-            News.info("[RCS Debug] Execute check command report traffic {},{}", shuttleNo, shuttleProtocol.getTaskNo());
-            trafficControlThread.trafficReport(command.getNodesDeepCopy(), shuttleNo, shuttleProtocol.getTaskNo());
-            News.info("[RCS Debug] Execute check command report traffic complete {},{}", shuttleNo, shuttleProtocol.getTaskNo());
-
-            String currentLocNo = shuttleProtocol.getCurrentLocNo();
-            if (currentLocNo == null) {
-                return false;
-            }
-            if (targetPoints.contains(Utils.getRow(currentLocNo) + "-" + Utils.getBay(currentLocNo))) {
-                boolean result = navigateMapUtils.writeNavigateNodeToRedisMap(Utils.getLev(shuttleProtocol.getCurrentLocNo()), shuttleProtocol.getShuttleNo(), nodes, false);//瑙i攣璺緞
-                if (!result) {
-                    return false;//瑙i攣澶辫触
-                }
-                command.setComplete(true);
-            }else {
-                return false;
-            }
-        } else if (command.getMode() == ShuttleCommandModeType.PALLET_LIFT.id) {
-            // 鎵樼洏椤跺崌
-            if (!deviceIdle) {
-                return false;//璁惧涓嶇┖闂�
-            }
-
-            //鍒ゆ柇鏄惁椤跺崌鍒颁綅
-            if (shuttleProtocol.getHasLift()) {
-                command.setComplete(true);
-//                    //鍒ゆ柇鏄惁鏈夌墿
-//                    if (shuttleProtocol.getHasPallet()) {
-//                        command.setComplete(true);
-//                    }
-            }else {
-                return false;
-            }
-        } else if (command.getMode() == ShuttleCommandModeType.PALLET_DOWN.id) {
-            // 鎵樼洏涓嬮檷鍛戒护
-            if (!deviceIdle) {
-                return false;//璁惧涓嶇┖闂�
-            }
-
-            // 鍒ゆ柇鏄惁涓嬮檷鍒颁綅
-            if (!shuttleProtocol.getHasLift()) {
-                command.setComplete(true);
-            }else {
-                return false;
-            }
-        } else if (command.getMode() == ShuttleCommandModeType.CHARGE_OPEN.id) {
-            // 鍏呯數寮�
-            //鍒ゆ柇灏忚溅鍏呯數鐘舵��
-            if (shuttleProtocol.getHasCharge()) {
-                command.setComplete(true);
-            }else {
-                return false;
-            }
-        } else if (command.getMode() == ShuttleCommandModeType.CHARGE_CLOSE.id) {
-            //鍏抽棴鍏呯數
-            command.setComplete(true);
-        } else {
-            command.setComplete(true);//鍏朵粬鍛戒护榛樿璁や负瀹屾垚
-        }
-
-        return true;
-    }
-
-    //鐢宠绠″埗
-    public boolean applyTrafficControl(List<ShuttleCommand> commands, List<NavigateNode> nodeList, Integer shuttleNo, Integer taskNo) {
-        TrafficControlThread trafficControlThread = (TrafficControlThread) SlaveConnection.get(SlaveType.TrafficControl, 1);
-        if (trafficControlThread == null) {
-            return false;
-        }
-
-        List<NavigateNode> totalNodeList = new ArrayList<>();
-        for (ShuttleCommand command : commands) {
-            if (command.getMode() == ShuttleCommandModeType.MOVE.id) {
-                List<NavigateNode> deepCopy = command.getNodesDeepCopy();
-                if (deepCopy != null) {
-                    totalNodeList.addAll(deepCopy);
-                }
-            }
-        }
-        return trafficControlThread.applyTrafficControl(totalNodeList, nodeList, shuttleNo, taskNo);
-    }
-
-    //鏌ヨ鏄惁鐢宠绠″埗鎴愬姛
-    public boolean queryTrafficControl(Integer shuttleNo, Integer taskNo) {
-        Object object = redisUtil.get(RedisKeyType.TRAFFIC_CONTROL_SUCCESS_APPLY.key + shuttleNo + "_" + taskNo);
-        if (object == null) {
-            return false;
-        }
-        return true;
-    }
-
-    public boolean cancelTrafficControl(Integer shuttleNo, Integer taskNo) {
-        TrafficControlDataModel model = new TrafficControlDataModel();
-        model.setShuttleNo(shuttleNo);
-        model.setTaskNo(taskNo);
-        redisUtil.set(RedisKeyType.TRAFFIC_CONTROL_CANCEL_LIST.key + shuttleNo + "_" + taskNo, model);
-        return true;
-    }
-
-    //婕旂ず妯″紡
-    public synchronized void demo(Integer shuttleNo) {
-        ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttleNo);
-        if (shuttleThread == null) {
-            return;
-        }
-
-        ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
-        if (shuttleProtocol == null) {
-            return;
-        }
-
-        if (!shuttleProtocol.getDemo()) {
-            return;
-        }
-
-        WrkMast moveWorking = wrkMastService.selectShuttleHasMoveWorking(shuttleNo);
-        if (moveWorking != null) {
-            return;
-        }
-
-        WrkMast shuttleWorking = wrkMastService.selectShuttleWorking(shuttleNo);
-        if(shuttleWorking != null) {
-            return;
-        }
-
-        WrkMast chargeWorking = wrkMastService.selectChargeWorking(shuttleNo);
-        if (chargeWorking != null) {
-            return;
-        }
-
-        if (!shuttleThread.isRequireCharge().equals(ShuttleRequireChargeType.NONE)) {
-            return;
-        }
-
-        if (!shuttleThread.isIdle()) {
-            return;
-        }
-
-        boolean demoSwitchLev = false;
-        Config demoSwitchLevConfig = configService.selectOne(new EntityWrapper<Config>().eq("code", "demoSwitchLev"));
-        if (demoSwitchLevConfig != null) {
-            if (demoSwitchLevConfig.getValue().equals("Y")) {
-                demoSwitchLev = true;
-            }
-        }
-
-        Config demoRunLevConfig = configService.selectOne(new EntityWrapper<Config>().eq("code", "demoRunLev"));
-        if (demoRunLevConfig == null) {
-            return;
-        }
-        List<Integer> levList = JSON.parseArray(demoRunLevConfig.getValue(), Integer.class);
-
-        if (!demoSwitchLev) {
-            String currentLocNo = shuttleProtocol.getCurrentLocNo();
-            levList = new ArrayList<>();
-            levList.add(Utils.getLev(currentLocNo));
-        }
-
-        LocMast targetLoc = null;
-        EntityWrapper<LocMast> wrapper = new EntityWrapper<>();
-        wrapper.in("lev1", levList);
-        wrapper.eq("loc_sts", "O");
-        wrapper.last("ORDER BY RAND() LIMIT 1");
-        for (int i = 0; i < 3; i++) {
-            LocMast locMast = locMastService.selectOne(wrapper);
-            if(locMast == null) {
-                continue;
-            }
-
-            ArrayList<String> locs = new ArrayList<>();
-            locs.add(locMast.getLocNo());
-            Integer shuttle = Utils.checkGroupLocHasShuttle(locs);
-            if(shuttle != null) {
-                continue;
-            }
-
-            targetLoc = locMast;
-            break;
-        }
-
-        if(targetLoc == null) {
-            return;
-        }
-
-        shuttleDispatchUtils.dispatchShuttle(null, targetLoc.getLocNo(), shuttleProtocol.getShuttleNo());
-    }
-
-    public synchronized void demoModeCargoMove() {
-        Config demoCargoMoveConfig = configService.selectOne(new EntityWrapper<Config>().eq("code", "demoCargoMove"));
-        if (demoCargoMoveConfig == null) {
-            return;
-        }
-
-        if (!demoCargoMoveConfig.getValue().equals("Y")) {
-            return;
-        }
-
-
-        Config demoRunLevConfig = configService.selectOne(new EntityWrapper<Config>().eq("code", "demoRunLev"));
-        if (demoRunLevConfig == null) {
-            return;
-        }
-        List<Integer> levList = JSON.parseArray(demoRunLevConfig.getValue(), Integer.class);
-        Random random = new Random();
-        int index = random.nextInt(levList.size());
-        Integer lev = levList.get(index);
-
-        //鑾峰彇妤煎眰灏忚溅鏁伴噺
-        int shuttleCountByLev = shuttleDispatchUtils.getShuttleCountByLev(lev);
-        //鑾峰彇妤煎眰璐х墿鎼繍浠诲姟
-        int currentLevTask = 0;
-        for (WrkMast wrkMast : wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("io_type", WrkIoType.LOC_MOVE.id))) {
-            if (Utils.getLev(wrkMast.getLocNo()) == lev) {
-                currentLevTask += 1;
-            }
-        }
-
-        //鎼繍浠诲姟鏁伴噺瓒呰繃灏忚溅鏁伴噺锛屾殏鏃朵笉鐢熸垚鏂颁换鍔�
-        if (currentLevTask > shuttleCountByLev) {
-            return;
-        }
-
-        LocMast sourceLoc = null;
-        EntityWrapper<LocMast> wrapper = new EntityWrapper<>();
-        wrapper.eq("lev1", lev);
-        wrapper.eq("loc_sts", "F");
-        wrapper.last("ORDER BY RAND() LIMIT 1");
-        for (int i = 0; i < 3; i++) {
-            LocMast locMast = locMastService.selectOne(wrapper);
-            if(locMast == null) {
-                continue;
-            }
-
-            sourceLoc = locMast;
-            break;
-        }
-
-        if(sourceLoc == null) {
-            return;
-        }
-
-        LocMast targetLoc = null;
-        EntityWrapper<LocMast> targetWrapper = new EntityWrapper<>();
-        targetWrapper.eq("lev1", lev);
-        targetWrapper.eq("loc_sts", "O");
-        targetWrapper.last("ORDER BY RAND() LIMIT 1");
-        for (int i = 0; i < 3; i++) {
-            LocMast locMast = locMastService.selectOne(targetWrapper);
-            if(locMast == null) {
-                continue;
-            }
-
-            targetLoc = locMast;
-            break;
-        }
-
-        if(targetLoc == null) {
-            return;
-        }
-
-        try {
-            CreateLocMoveTaskParam param = new CreateLocMoveTaskParam();
-            param.setSourceLocNo(sourceLoc.getLocNo());
-            param.setLocNo(targetLoc.getLocNo());
-            param.setTaskPri(13);
-
-            boolean result = commonService.createLocMoveTask(param);
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-    }
-
-    public synchronized void demoModeRunLoc(Integer shuttleNo) {
-        Config demoModeRunLocConfig = configService.selectOne(new EntityWrapper<Config>().eq("code", "demoModeRunLoc"));
-        if (demoModeRunLocConfig == null) {
-            return;
-        }
-
-        if (!demoModeRunLocConfig.getValue().equals("Y")) {
-            return;
-        }
-
-        ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttleNo);
-        if (shuttleThread == null) {
-            return;
-        }
-
-        ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
-        if (shuttleProtocol == null) {
-            return;
-        }
-
-        if (!shuttleThread.isIdle()) {
-            return;
-        }
-
-        LocMast targetLoc = null;
-        EntityWrapper<LocMast> wrapper = new EntityWrapper<>();
-        wrapper.eq("lev1", Utils.getLev(shuttleProtocol.getCurrentLocNo()));
-        wrapper.notIn("loc_sts", "X");
-        wrapper.isNull("loc_type");
-        wrapper.last("ORDER BY RAND() LIMIT 1");
-        for (int i = 0; i < 3; i++) {
-            LocMast locMast = locMastService.selectOne(wrapper);
-            if(locMast == null) {
-                continue;
-            }
-
-            targetLoc = locMast;
-            break;
-        }
-
-        if(targetLoc == null) {
-            return;
-        }
-
-        boolean result = shuttleDispatchUtils.dispatchShuttle(null, targetLoc.getLocNo(), shuttleProtocol.getShuttleNo());
-        if (result) {
-            targetLoc.setLocType("Y");
-            locMastService.updateById(targetLoc);
-        }
-    }
-
-    public synchronized boolean clearPath(Integer shuttleNo) {
-        return navigateMapUtils.clearPath(shuttleNo);
-    }
-
-    private CommandResponse write(ShuttleCommand command, Integer shuttleNo) {
-        CommandResponse response = new CommandResponse(false);
-        if (null == command) {
-            News.error("鍥涘悜绌挎杞﹀啓鍏ュ懡浠や负绌�");
-            response.setMessage("鍥涘悜绌挎杞﹀啓鍏ュ懡浠や负绌�");
-            return response;
-        }
-        ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttleNo);
-        if (command.getMode() == ShuttleCommandModeType.MOVE.id
-                || command.getMode() == ShuttleCommandModeType.IN_LIFT.id
-                || command.getMode() == ShuttleCommandModeType.OUT_LIFT.id) {//绉诲姩
-            response = shuttleThread.move(command);
-        } else if (command.getMode() == ShuttleCommandModeType.PALLET_LIFT.id
-                || command.getMode() == ShuttleCommandModeType.PALLET_DOWN.id) {//椤跺崌
-            response = shuttleThread.lift(command);
-        } else if (command.getMode() == ShuttleCommandModeType.CHARGE_OPEN.id
-                || command.getMode() == ShuttleCommandModeType.CHARGE_CLOSE.id) {//鍏呯數
-            response = shuttleThread.charge(command);
-        } else if (command.getMode() == ShuttleCommandModeType.RESET.id) {//澶嶄綅
-            response = shuttleThread.reset(command);
-        } else if (command.getMode() == ShuttleCommandModeType.UPDATE_LOCATION.id) {//鏇存柊鍧愭爣
-            response = shuttleThread.updateLocation(command);
-        }
-
-        News.info("鍥涘悜绌挎杞﹀懡浠や笅鍙戯紝绌挎杞﹀彿={}锛屼换鍔℃暟鎹�={}", shuttleNo, JSON.toJSON(command));
-        return response;
-    }
-
-}
diff --git a/src/main/java/com/zy/core/cache/MessageQueue.java b/src/main/java/com/zy/core/cache/MessageQueue.java
index 9788407..fe3638b 100644
--- a/src/main/java/com/zy/core/cache/MessageQueue.java
+++ b/src/main/java/com/zy/core/cache/MessageQueue.java
@@ -6,6 +6,7 @@
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ConcurrentLinkedQueue;
+import java.util.concurrent.LinkedBlockingQueue;
 
 /**
  * 娑堟伅闃熷垪
@@ -13,36 +14,41 @@
  */
 public class MessageQueue {
 
-    //鍥涘悜绌挎杞q浜ゆ崲鏈�
-    private static final Map<Integer, ConcurrentLinkedQueue<Task>> SHUTTLE_EXCHANGE = new ConcurrentHashMap<>();
-    //鎻愬崌鏈簃q浜ゆ崲鏈�
-    private static final Map<Integer, ConcurrentLinkedQueue<Task>> LIFT_EXCHANGE = new ConcurrentHashMap<>();
-    //璐у弶鎻愬崌鏈簃q浜ゆ崲鏈�
-    private static final Map<Integer, ConcurrentLinkedQueue<Task>> FORK_LIFT_EXCHANGE = new ConcurrentHashMap<>();
-    //璐у弶鎻愬崌鏈篗aster mq浜ゆ崲鏈�
-    private static final Map<Integer, ConcurrentLinkedQueue<Task>> FORK_LIFT_MASTER_EXCHANGE = new ConcurrentHashMap<>();
-    //Traffic Control mq浜ゆ崲鏈�
-    private static final Map<Integer, ConcurrentLinkedQueue<Task>> TRAFFIC_CONTROL_EXCHANGE = new ConcurrentHashMap<>();
+    // 鍫嗗灈鏈簃q浜ゆ崲鏈�
+    private static final Map<Integer, LinkedBlockingQueue<Task>> CRN_EXCHANGE = new ConcurrentHashMap<>();
+    // 杈撻�佺嚎mq浜ゆ崲鏈�
+    private static final Map<Integer, ConcurrentLinkedQueue<Task>> DEVP_EXCHANGE = new ConcurrentHashMap<>();
+    // 鏉$爜鎵弿浠猰q浜ゆ崲鏈�
+    private static final Map<Integer, ConcurrentLinkedQueue<Task>> BARCODE_EXCHANGE = new ConcurrentHashMap<>();
+    // Led鐏� mq浜ゆ崲鏈�
+    private static final Map<Integer, LinkedBlockingQueue<Task>> LED_EXCHANGE = new ConcurrentHashMap<>();
+    // 纾呯Оmq浜ゆ崲鏈�
+    private static final Map<Integer, ConcurrentLinkedQueue<Task>> SCALE_EXCHANGE = new ConcurrentHashMap<>();
+    // RGVmq浜ゆ崲鏈�
+    private static final Map<Integer, LinkedBlockingQueue<Task>> RGV_EXCHANGE = new ConcurrentHashMap<>();
 
     /**
      * mq 浜ゆ崲鏈哄垵濮嬪寲
      */
     public static void init(SlaveType type, Integer id) {
         switch (type) {
-            case Shuttle:
-                SHUTTLE_EXCHANGE.put(id, new ConcurrentLinkedQueue<>());
+            case Crn:
+                CRN_EXCHANGE.put(id, new LinkedBlockingQueue<>(1));
                 break;
-            case ForkLift:
-                FORK_LIFT_EXCHANGE.put(id, new ConcurrentLinkedQueue<>());
+            case Rgv:
+                RGV_EXCHANGE.put(id, new LinkedBlockingQueue<>(1));
                 break;
-            case ForkLiftMaster:
-                FORK_LIFT_MASTER_EXCHANGE.put(id, new ConcurrentLinkedQueue<>());
+            case Devp:
+                DEVP_EXCHANGE.put(id, new ConcurrentLinkedQueue<>());
                 break;
-            case Lift:
-                LIFT_EXCHANGE.put(id, new ConcurrentLinkedQueue<>());
+            case Barcode:
+                BARCODE_EXCHANGE.put(id, new ConcurrentLinkedQueue<>());
                 break;
-            case TrafficControl:
-                TRAFFIC_CONTROL_EXCHANGE.put(id, new ConcurrentLinkedQueue<>());
+            case Led:
+                LED_EXCHANGE.put(id, new LinkedBlockingQueue<>(1));
+                break;
+            case Scale:
+                SCALE_EXCHANGE.put(id, new ConcurrentLinkedQueue<>());
                 break;
             default:
                 break;
@@ -55,16 +61,18 @@
      */
     public static boolean offer(SlaveType type, Integer id, Task task) {
         switch (type) {
-            case Shuttle:
-                return SHUTTLE_EXCHANGE.get(id).offer(task);
-            case ForkLift:
-                return FORK_LIFT_EXCHANGE.get(id).offer(task);
-            case ForkLiftMaster:
-                return FORK_LIFT_MASTER_EXCHANGE.get(id).offer(task);
-            case Lift:
-                return LIFT_EXCHANGE.get(id).offer(task);
-            case TrafficControl:
-                return TRAFFIC_CONTROL_EXCHANGE.get(id).offer(task);
+            case Crn:
+                return CRN_EXCHANGE.get(id).offer(task);
+            case Rgv:
+                return RGV_EXCHANGE.get(id).offer(task);
+            case Devp:
+                return DEVP_EXCHANGE.get(id).offer(task);
+            case Barcode:
+                return BARCODE_EXCHANGE.get(id).offer(task);
+            case Led:
+                return LED_EXCHANGE.get(id).offer(task);
+            case Scale:
+                return SCALE_EXCHANGE.get(id).offer(task);
             default:
                 return false;
         }
@@ -76,16 +84,18 @@
      */
     public static Task poll(SlaveType type, Integer id) {
         switch (type) {
-            case Shuttle:
-                return SHUTTLE_EXCHANGE.get(id).poll();
-            case ForkLift:
-                return FORK_LIFT_EXCHANGE.get(id).poll();
-            case ForkLiftMaster:
-                return FORK_LIFT_MASTER_EXCHANGE.get(id).poll();
-            case Lift:
-                return LIFT_EXCHANGE.get(id).poll();
-            case TrafficControl:
-                return TRAFFIC_CONTROL_EXCHANGE.get(id).poll();
+            case Crn:
+                return CRN_EXCHANGE.get(id).poll();
+            case Rgv:
+                return RGV_EXCHANGE.get(id).poll();
+            case Devp:
+                return DEVP_EXCHANGE.get(id).poll();
+            case Barcode:
+                return BARCODE_EXCHANGE.get(id).poll();
+            case Led:
+                return LED_EXCHANGE.get(id).poll();
+            case Scale:
+                return SCALE_EXCHANGE.get(id).poll();
             default:
                 return null;
         }
@@ -96,16 +106,18 @@
      */
     public static Task peek(SlaveType type, Integer id) {
         switch (type) {
-            case Shuttle:
-                return SHUTTLE_EXCHANGE.get(id).peek();
-            case ForkLift:
-                return FORK_LIFT_EXCHANGE.get(id).peek();
-            case ForkLiftMaster:
-                return FORK_LIFT_MASTER_EXCHANGE.get(id).peek();
-            case Lift:
-                return LIFT_EXCHANGE.get(id).peek();
-            case TrafficControl:
-                return TRAFFIC_CONTROL_EXCHANGE.get(id).peek();
+            case Crn:
+                return CRN_EXCHANGE.get(id).peek();
+            case Rgv:
+                return RGV_EXCHANGE.get(id).peek();
+            case Devp:
+                return DEVP_EXCHANGE.get(id).peek();
+            case Barcode:
+                return BARCODE_EXCHANGE.get(id).peek();
+            case Led:
+                return LED_EXCHANGE.get(id).peek();
+            case Scale:
+                return SCALE_EXCHANGE.get(id).peek();
             default:
                 return null;
         }
@@ -113,20 +125,23 @@
 
     public static void clear(SlaveType type, Integer id){
         switch (type) {
-            case Shuttle:
-                SHUTTLE_EXCHANGE.get(id).clear();
+            case Crn:
+                CRN_EXCHANGE.get(id).clear();
                 break;
-            case ForkLift:
-                FORK_LIFT_EXCHANGE.get(id).clear();
+            case Rgv:
+                RGV_EXCHANGE.get(id).clear();
                 break;
-            case ForkLiftMaster:
-                FORK_LIFT_MASTER_EXCHANGE.get(id).clear();
+            case Devp:
+                DEVP_EXCHANGE.get(id).clear();
                 break;
-            case Lift:
-                LIFT_EXCHANGE.get(id).clear();
+            case Barcode:
+                BARCODE_EXCHANGE.get(id).clear();
                 break;
-            case TrafficControl:
-                TRAFFIC_CONTROL_EXCHANGE.get(id).clear();
+            case Led:
+                LED_EXCHANGE.get(id).clear();
+                break;
+            case Scale:
+                SCALE_EXCHANGE.get(id).clear();
                 break;
             default:
                 break;
diff --git a/src/main/java/com/zy/core/config/PointInitializer.java b/src/main/java/com/zy/core/config/PointInitializer.java
deleted file mode 100644
index 6b83334..0000000
--- a/src/main/java/com/zy/core/config/PointInitializer.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package com.zy.core.config;
-
-import com.baomidou.mybatisplus.mapper.EntityWrapper;
-import com.zy.asrs.entity.LocMast;
-import com.zy.asrs.service.LocMastService;
-import com.zy.common.utils.RedisUtil;
-import com.zy.core.enums.RedisKeyType;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
-import javax.annotation.PostConstruct;
-import java.util.HashMap;
-import java.util.List;
-
-@Component
-public class PointInitializer {
-
-    @Autowired
-    private RedisUtil redisUtil;
-    @Autowired
-    private LocMastService locMastService;
-
-    @PostConstruct
-    public void init() {
-        HashMap<String, String> pointMap = new HashMap<>();
-        HashMap<String, String> locMap = new HashMap<>();
-
-        List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<>());
-        for (LocMast locMast : locMasts) {
-            String locNo = locMast.getLocNo();
-            String qrCodeValue = locMast.getQrCodeValue();
-            pointMap.put(locNo, qrCodeValue);
-            locMap.put(qrCodeValue, locNo);
-        }
-
-        redisUtil.set(RedisKeyType.POINT_MAP.key, pointMap);
-        redisUtil.set(RedisKeyType.LOC_MAP.key, locMap);
-    }
-
-}
diff --git a/src/main/java/com/zy/core/config/ShuttleConfigInitializer.java b/src/main/java/com/zy/core/config/ShuttleConfigInitializer.java
deleted file mode 100644
index eb70124..0000000
--- a/src/main/java/com/zy/core/config/ShuttleConfigInitializer.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package com.zy.core.config;
-
-import com.baomidou.mybatisplus.mapper.EntityWrapper;
-import com.zy.asrs.entity.BasShuttle;
-import com.zy.asrs.entity.DeviceConfig;
-import com.zy.asrs.service.BasShuttleService;
-import com.zy.asrs.service.DeviceConfigService;
-import com.zy.common.utils.RedisUtil;
-import com.zy.core.enums.RedisKeyType;
-import com.zy.core.enums.SlaveType;
-import com.zy.system.entity.Config;
-import com.zy.system.service.ConfigService;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
-import javax.annotation.PostConstruct;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Optional;
-
-@Component
-public class ShuttleConfigInitializer {
-
-    @Autowired
-    private DeviceConfigService deviceConfigService;
-    @Autowired
-    private BasShuttleService basShuttleService;
-    @Autowired
-    private RedisUtil redisUtil;
-
-    @PostConstruct
-    public void shuttleSpeedInit() {
-        HashMap<Integer, Integer> shuttleSpeedMap = new HashMap<>();
-
-        List<DeviceConfig> shuttleList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>()
-                .eq("device_type", String.valueOf(SlaveType.Shuttle)));
-        for (DeviceConfig shuttle : shuttleList) {
-            //鑾峰彇灏忚溅绉诲姩閫熷害
-            Integer runSpeed = Optional.ofNullable(basShuttleService.selectOne(new EntityWrapper<BasShuttle>().eq("shuttle_no", shuttle.getDeviceNo())).getRunSpeed()).orElse(1000);
-            shuttleSpeedMap.put(shuttle.getDeviceNo(), runSpeed);
-        }
-
-        redisUtil.set(RedisKeyType.SHUTTLE_SPEED_MAP.key, shuttleSpeedMap);
-    }
-
-}
diff --git a/src/main/java/com/zy/core/dispatcher/ForkLiftDispatchUtils.java b/src/main/java/com/zy/core/dispatcher/ForkLiftDispatchUtils.java
deleted file mode 100644
index b0bdeb8..0000000
--- a/src/main/java/com/zy/core/dispatcher/ForkLiftDispatchUtils.java
+++ /dev/null
@@ -1,127 +0,0 @@
-package com.zy.core.dispatcher;
-
-import com.baomidou.mybatisplus.mapper.EntityWrapper;
-import com.zy.asrs.entity.DeviceConfig;
-import com.zy.asrs.service.DeviceConfigService;
-import com.zy.asrs.utils.Utils;
-import com.zy.common.model.NavigateNode;
-import com.zy.common.model.enums.NavigationMapType;
-import com.zy.common.utils.ForkLiftUtils;
-import com.zy.common.utils.NavigateUtils;
-import com.zy.core.cache.SlaveConnection;
-import com.zy.core.enums.SlaveType;
-import com.zy.core.model.protocol.ForkLiftProtocol;
-import com.zy.core.model.protocol.ForkLiftStaProtocol;
-import com.zy.core.model.protocol.ShuttleProtocol;
-import com.zy.core.thread.ForkLiftThread;
-import com.zy.core.thread.ShuttleThread;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * 鎻愬崌鏈鸿皟搴﹀伐鍏�
- */
-@Component
-public class ForkLiftDispatchUtils {
-
-    @Autowired
-    private DeviceConfigService deviceConfigService;
-    @Autowired
-    private NavigateUtils navigateUtils;
-
-    /**
-     * 鑾峰彇绌挎杞︽渶杩戜笖绌洪棽鐨勬彁鍗囨満杈撻�佺珯鐐�
-     */
-    public ForkLiftStaProtocol getRecentLiftStation(Integer shuttleNo, Integer targetLev) {
-        //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
-        ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttleNo);
-        if (shuttleThread == null) {
-            return null;
-        }
-        ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
-        if (shuttleProtocol == null) {
-            return null;
-        }
-
-        List<DeviceConfig> forkliftList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>()
-                .eq("device_type", String.valueOf(SlaveType.ForkLift)));
-
-        //鑾峰彇灏忚溅鍚屼竴妤煎眰鐨勭珯鐐�
-        ArrayList<ForkLiftStaProtocol> list = new ArrayList<>();
-        int lev = Utils.getLev(shuttleProtocol.getCurrentLocNo());//灏忚溅妤煎眰
-        for (DeviceConfig device : forkliftList) {
-            ForkLiftThread forkLiftThread = (ForkLiftThread) SlaveConnection.get(SlaveType.ForkLift, device.getDeviceNo());
-            if (forkLiftThread == null) {
-                continue;
-            }
-            ForkLiftProtocol forkLiftProtocol = forkLiftThread.getStatus();
-            if (forkLiftProtocol == null) {
-                continue;
-            }
-            if (forkLiftProtocol.getErrorCode() > 0) {
-                continue;
-            }
-
-            ForkLiftStaProtocol forkLiftStaProtocol = ForkLiftUtils.getLiftStaByLev(device.getDeviceNo(), lev);
-            if (forkLiftStaProtocol == null) {
-                continue;
-            }
-
-            //鍒ゆ柇褰撳墠灞傛槸鍚︽棤鎵樼洏
-            if (forkLiftStaProtocol.getHasTray()) {
-                continue;
-            }
-
-            if (forkLiftStaProtocol.getHasCar()) {
-                continue;
-            }
-
-            //鍒ゆ柇鐩爣妤煎眰绔欑偣鏄惁鏃犳墭鐩�
-            ForkLiftStaProtocol targetLiftStaProtocol = ForkLiftUtils.getLiftStaByLev(device.getDeviceNo(), targetLev);
-            if (targetLiftStaProtocol == null) {
-                continue;
-            }
-
-            if (targetLiftStaProtocol.getHasTray()) {
-                continue;//鏈夋墭鐩樿烦杩�
-            }
-
-            if (targetLiftStaProtocol.getHasCar()) {
-                continue;
-            }
-
-            list.add(forkLiftStaProtocol);
-        }
-
-        if (list.isEmpty()) {
-            return null;
-        }
-
-        String currentLocNo = shuttleProtocol.getCurrentLocNo();//灏忚溅浣嶇疆
-        Integer recentAllDistance = 9999999;
-        ForkLiftStaProtocol recentSta = null;//鏈�杩戠珯鐐�
-        //鎼滅储璺濈灏忚溅鏈�杩戠殑绔欑偣
-        for (ForkLiftStaProtocol forkLiftStaProtocol : list) {
-            Integer siteId = forkLiftStaProtocol.getSiteId();//绔欑偣鍙�
-            String locNo = forkLiftStaProtocol.getLocNo();//绔欑偣搴撲綅鍙�
-
-            //褰撳墠绌挎杞︾嚎绋嬪埌鐩爣鍦扮偣璺濈
-            List<NavigateNode> currentShuttlePath = navigateUtils.calc(currentLocNo, locNo, NavigationMapType.getMapTypes(NavigationMapType.NORMAL), Utils.getShuttlePoints(shuttleNo, Utils.getLev(currentLocNo)), null);//浣跨敤姝e父閫氶亾鍦板浘
-            if (currentShuttlePath == null) {
-                continue;
-            }
-            Integer currentAllDistance = navigateUtils.getOriginPathAllDistance(currentShuttlePath);//璁$畻褰撳墠璺緞琛岃蛋鎬昏窛绂�
-            if (currentAllDistance < recentAllDistance) {
-                //濡傛灉褰撳墠妤煎眰鐨勮溅璺緞鏇村皬锛屽垯鏇存柊鏈�杩戠珯鐐�
-                recentSta = forkLiftStaProtocol;
-                recentAllDistance = currentAllDistance;
-            }
-        }
-
-        return recentSta;
-    }
-
-}
diff --git a/src/main/java/com/zy/core/dispatcher/LiftDispatchUtils.java b/src/main/java/com/zy/core/dispatcher/LiftDispatchUtils.java
deleted file mode 100644
index 81735bb..0000000
--- a/src/main/java/com/zy/core/dispatcher/LiftDispatchUtils.java
+++ /dev/null
@@ -1,110 +0,0 @@
-package com.zy.core.dispatcher;
-
-import com.baomidou.mybatisplus.mapper.EntityWrapper;
-import com.zy.asrs.entity.DeviceConfig;
-import com.zy.asrs.service.DeviceConfigService;
-import com.zy.asrs.utils.Utils;
-import com.zy.common.model.NavigateNode;
-import com.zy.common.model.enums.NavigationMapType;
-import com.zy.common.utils.LiftUtils;
-import com.zy.common.utils.NavigateUtils;
-import com.zy.core.cache.SlaveConnection;
-import com.zy.core.enums.SlaveType;
-import com.zy.core.model.protocol.LiftProtocol;
-import com.zy.core.model.protocol.LiftStaProtocol;
-import com.zy.core.model.protocol.ShuttleProtocol;
-import com.zy.core.thread.LiftThread;
-import com.zy.core.thread.ShuttleThread;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * 鎻愬崌鏈鸿皟搴﹀伐鍏�
- */
-@Component
-public class LiftDispatchUtils {
-
-    @Autowired
-    private DeviceConfigService deviceConfigService;
-    @Autowired
-    private NavigateUtils navigateUtils;
-
-    /**
-     * 鑾峰彇绌挎杞︽渶杩戜笖鏃犳晠闅滄彁鍗囨満杈撻�佺珯鐐�
-     */
-    public LiftStaProtocol getRecentLiftStation(Integer shuttleNo, Integer targetLev) {
-        //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
-        ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttleNo);
-        if (shuttleThread == null) {
-            return null;
-        }
-        ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
-        if (shuttleProtocol == null) {
-            return null;
-        }
-
-        List<DeviceConfig> liftList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>()
-                .eq("device_type", String.valueOf(SlaveType.Lift)));
-
-        //鑾峰彇灏忚溅鍚屼竴妤煎眰鐨勭珯鐐�
-        ArrayList<LiftStaProtocol> list = new ArrayList<>();
-        int lev = Utils.getLev(shuttleProtocol.getCurrentLocNo());//灏忚溅妤煎眰
-        for (DeviceConfig device : liftList) {
-            LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, device.getDeviceNo());
-            if (liftThread == null) {
-                continue;
-            }
-            LiftProtocol liftProtocol = liftThread.getStatus();
-            if (liftProtocol == null) {
-                continue;
-            }
-            if (liftProtocol.getErrorCode() > 0) {
-                continue;
-            }
-
-            //鍒ゆ柇鐩爣妤煎眰绔欑偣鏄惁鏃犳墭鐩�
-            LiftStaProtocol targetLiftStaProtocol = LiftUtils.getLiftStaByLev(device.getDeviceNo(), targetLev);
-            if (targetLiftStaProtocol == null) {
-                continue;
-            }
-
-            //鐩爣灞傛湁灏忚溅
-            if (targetLiftStaProtocol.getHasCar()) {
-                continue;
-            }
-
-            list.add(targetLiftStaProtocol);
-        }
-
-        if (list.isEmpty()) {
-            return null;
-        }
-
-        String currentLocNo = shuttleProtocol.getCurrentLocNo();//灏忚溅浣嶇疆
-        Integer recentAllDistance = 9999999;
-        LiftStaProtocol recentSta = null;//鏈�杩戠珯鐐�
-        //鎼滅储璺濈灏忚溅鏈�杩戠殑绔欑偣
-        for (LiftStaProtocol liftStaProtocol : list) {
-            Integer siteId = liftStaProtocol.getSiteId();//绔欑偣鍙�
-            String locNo = liftStaProtocol.getLocNo();//绔欑偣搴撲綅鍙�
-
-            //褰撳墠绌挎杞︾嚎绋嬪埌鐩爣鍦扮偣璺濈
-            List<NavigateNode> currentShuttlePath = navigateUtils.calc(currentLocNo, locNo, NavigationMapType.getMapTypes(NavigationMapType.NORMAL), Utils.getShuttlePoints(shuttleNo, Utils.getLev(currentLocNo)), null);//浣跨敤姝e父閫氶亾鍦板浘
-            if (currentShuttlePath == null) {
-                continue;
-            }
-            Integer currentAllDistance = navigateUtils.getOriginPathAllDistance(currentShuttlePath);//璁$畻褰撳墠璺緞琛岃蛋鎬昏窛绂�
-            if (currentAllDistance < recentAllDistance) {
-                //濡傛灉褰撳墠妤煎眰鐨勮溅璺緞鏇村皬锛屽垯鏇存柊鏈�杩戠珯鐐�
-                recentSta = liftStaProtocol;
-                recentAllDistance = currentAllDistance;
-            }
-        }
-
-        return recentSta;
-    }
-
-}
diff --git a/src/main/java/com/zy/core/dispatcher/ShuttleDispatchUtils.java b/src/main/java/com/zy/core/dispatcher/ShuttleDispatchUtils.java
deleted file mode 100644
index 9fbfdbe..0000000
--- a/src/main/java/com/zy/core/dispatcher/ShuttleDispatchUtils.java
+++ /dev/null
@@ -1,487 +0,0 @@
-package com.zy.core.dispatcher;
-
-import com.baomidou.mybatisplus.mapper.EntityWrapper;
-import com.baomidou.mybatisplus.mapper.Wrapper;
-import com.core.common.Cools;
-import com.core.exception.CoolException;
-import com.zy.asrs.domain.ShuttleGatherResult;
-import com.zy.asrs.domain.param.ShuttleDemoParam;
-import com.zy.asrs.domain.param.ShuttleGatherParam;
-import com.zy.asrs.entity.BasShuttle;
-import com.zy.asrs.entity.DeviceConfig;
-import com.zy.asrs.entity.WrkMast;
-import com.zy.asrs.service.BasShuttleService;
-import com.zy.asrs.service.DeviceConfigService;
-import com.zy.asrs.service.WrkMastService;
-import com.zy.asrs.utils.Utils;
-import com.zy.common.model.NavigateNode;
-import com.zy.common.model.enums.NavigationMapType;
-import com.zy.common.service.CommonService;
-import com.zy.common.utils.NavigateUtils;
-import com.zy.core.News;
-import com.zy.core.cache.SlaveConnection;
-import com.zy.core.enums.SlaveType;
-import com.zy.core.enums.WrkIoType;
-import com.zy.core.enums.WrkStsType;
-import com.zy.core.model.protocol.*;
-import com.zy.core.thread.ShuttleThread;
-import com.zy.system.entity.Config;
-import com.zy.system.service.ConfigService;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import java.util.*;
-
-/**
- * 鍥涘悜绌挎杞﹁皟搴﹀伐鍏�
- */
-@Service
-public class ShuttleDispatchUtils {
-
-    @Autowired
-    private WrkMastService wrkMastService;
-    @Autowired
-    private CommonService commonService;
-    @Autowired
-    private NavigateUtils navigateUtils;
-    @Autowired
-    private ConfigService configService;
-    @Autowired
-    private BasShuttleService basShuttleService;
-    @Autowired
-    private DeviceConfigService deviceConfigService;
-
-    /**
-     * 璋冨害杞﹁締-璋冨害鎸囧畾绌挎杞�
-     */
-    public synchronized boolean dispatchShuttle(Integer wrkNo, String locNo, Integer shuttleNo) {
-        return shuttleMoveGenerate(wrkNo, locNo, shuttleNo);
-    }
-
-    /**
-     * 璋冨害杞﹁締
-     */
-    public synchronized boolean dispatchShuttle(Integer wrkNo, String locNo) {
-        ArrayList<ShuttleThread> sameLev = new ArrayList<>();//鐩稿悓妤煎眰鐨勭┛姊溅
-        ArrayList<ShuttleThread> diffLev = new ArrayList<>();//涓嶅悓妤煎眰鐨勭┛姊溅
-
-        List<DeviceConfig> shuttleList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>()
-                .eq("device_type", String.valueOf(SlaveType.Shuttle)));
-        for (DeviceConfig device : shuttleList) {
-            //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
-            ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, device.getDeviceNo());
-            ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
-            if (shuttleProtocol == null || shuttleProtocol.getShuttleNo() == null) {
-                continue;
-            }
-
-            if (checkChargeWrk(device.getDeviceNo())) {
-                continue;//瀛樺湪鍏呯數浠诲姟锛岃繃婊ゅ皬杞�
-            }
-
-            if (!shuttleThread.isIdle()) {
-                continue;//灏忚溅蹇欑涓�
-            }
-
-            BasShuttle basShuttle = basShuttleService.selectOne(new EntityWrapper<BasShuttle>().eq("shuttle_no", device.getDeviceNo()));
-            if (basShuttle != null) {
-                if (basShuttle.getStatus() == 0) {
-                    continue;//灏忚溅琚鐢�
-                }
-            }
-
-            int currentLev = Utils.getLev(shuttleProtocol.getCurrentLocNo());//灏忚溅褰撳墠灞傞珮
-            String currentLocNo = shuttleProtocol.getCurrentLocNo();//灏忚溅褰撳墠搴撲綅鍙�
-
-            if (currentLocNo.equals(locNo)) {
-                //杞﹁締褰撳墠浣嶇疆宸茬粡鏄洰鏍囧簱浣嶏紝璋冨害璇ヨ溅
-                //缁欏伐浣滄。缁戝畾灏忚溅鍙�
-                WrkMast wrkMast1 = wrkMastService.selectByWorkNo(wrkNo);
-                if (wrkMast1 != null) {
-                    wrkMast1.setShuttleNo(shuttleProtocol.getShuttleNo());
-                    wrkMastService.updateById(wrkMast1);
-                    return true;
-                }
-                break;
-            }
-
-            if (currentLev == Utils.getLev(locNo)) {
-                //宸ヤ綔妗fゼ灞傜浉鍚岀殑绌挎杞�
-                sameLev.add(shuttleThread);
-            }else {
-                //宸ヤ綔妗d笉鍚屾ゼ灞傜殑绌挎杞�
-                diffLev.add(shuttleThread);
-            }
-
-        }
-
-        //浼樺厛璋冨害鍚屾ゼ灞傚皬杞︼紝瀵绘壘绂讳换鍔℃渶杩戠殑绌挎杞�
-        if (!sameLev.isEmpty()) {
-            Map<Integer, ShuttleThread> sameShuttles = new TreeMap<>();//鑷劧鎺掑簭灏忚溅Map
-            for (ShuttleThread shuttleThread : sameLev) {
-                ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
-                Integer shuttleNo = shuttleProtocol.getShuttleNo();
-                //褰撳墠绌挎杞﹀簱浣嶅彿
-                String currentLocNo = shuttleProtocol.getCurrentLocNo();
-                //褰撳墠绌挎杞︾嚎绋嬪埌鐩爣鍦扮偣璺濈
-                List<NavigateNode> currentShuttlePath = navigateUtils.calc(currentLocNo, locNo, NavigationMapType.getMapTypes(NavigationMapType.NORMAL), Utils.getShuttlePoints(shuttleNo, Utils.getLev(currentLocNo)), null);//鎼滅储绌洪棽绌挎杞︼紝浣跨敤姝e父閫氶亾鍦板浘
-                if (currentShuttlePath == null) {
-                    continue;
-                }
-                Integer currentAllDistance = navigateUtils.getOriginPathAllDistance(currentShuttlePath);//璁$畻褰撳墠璺緞琛岃蛋鎬昏窛绂�
-                sameShuttles.put(currentAllDistance, shuttleThread);
-            }
-
-            //灏濊瘯璋冨害鍚屾ゼ灞傚皬杞�
-            for (Map.Entry<Integer, ShuttleThread> entry : sameShuttles.entrySet()) {
-                ShuttleThread shuttleThread = entry.getValue();
-                ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
-                Integer shuttleNo = shuttleProtocol.getShuttleNo();
-                //灏濊瘯璋冨害灏忚溅
-                boolean result = shuttleMoveGenerate(wrkNo, locNo, shuttleNo);
-                if (result) {
-                    return true;//璋冨害鎴愬姛
-                }
-            }
-        }
-
-        //鎵ц鍒版澶勶紝鍚屾ゼ灞傛棤璋冨害鎴愬姛灏忚溅銆傞渶瑕佽繘琛岃法妤煎眰璋冨害灏忚溅
-        //瀵绘壘绂讳换鍔℃ゼ灞傛渶杩戠殑绌挎杞�(涓嶈�冭檻璺ㄦゼ灞傚皬杞︾Щ鍔ㄨ窛绂�)
-        if (!diffLev.isEmpty()) {
-            Map<Integer, ShuttleThread> diffShuttles = new TreeMap<>();//鑷劧鎺掑簭灏忚溅Map
-            //鑾峰彇浠诲姟
-            WrkMast wrkMast1 = wrkMastService.selectByWorkNo(wrkNo);
-            if (wrkMast1 != null) {
-                String targetLoc = wrkMast1.getIoType() < 100 ? wrkMast1.getLocNo() : wrkMast1.getSourceLocNo();
-                int lev = Utils.getLev(targetLoc);//鐩爣妤煎眰
-
-                //妫�娴嬬洰鏍囨ゼ灞傝溅鏁伴噺鏄惁灏忎簬鍏佽鐨勬渶澶ф暟閲�
-                boolean checkDispatchMaxNum = checkDispatchMaxNum(lev);
-                if (!checkDispatchMaxNum) {
-                    News.info("{}浠诲姟锛寋}灞傦紝宸茬粡杈惧埌褰撳墠妤煎眰璋冨害杞﹁締鏈�澶у��", wrkMast1.getWrkNo(), lev);
-                    return false;
-                }
-
-                for (ShuttleThread shuttleThread : diffLev) {
-                    ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
-                    //褰撳墠绌挎杞﹀簱浣嶅彿
-                    String currentLocNo = shuttleProtocol.getCurrentLocNo();
-                    int currentLev = Utils.getLev(currentLocNo);
-                    //鍒ゆ柇褰撳墠妤煎眰鏄惁鏈変换鍔★紝濡傛灉鏈夊垯涓嶅垎閰嶈繖杈嗚溅
-                    List<WrkMast> wrkMasts1 = wrkMastService.selectWrkByLev(currentLev);
-                    int shuttleCount = this.getShuttleEnableUseCountByLev(currentLev);//鑾峰彇绌挎杞︽ゼ灞傝溅杈嗘暟閲�
-                    if (!wrkMasts1.isEmpty() && shuttleCount <= 1) {
-                        //瀛樺湪鍏朵粬浠诲姟涓斿彲鐢ㄥ皬杞︽暟閲忓皬浜庣瓑浜�1锛岃烦杩囪繖杈嗚溅
-                        continue;
-                    }
-
-                    //ABS(鐩爣妤煎眰 - 褰撳墠妤煎眰) 寰楀埌宸窛锛屽彇鏈�灏忓樊鍊�
-                    int currentValue = Math.abs(lev - currentLev);
-                    diffShuttles.put(currentValue, shuttleThread);
-                }
-
-                //灏濊瘯璋冨害璺ㄦゼ灞傚皬杞�
-                for (Map.Entry<Integer, ShuttleThread> entry : diffShuttles.entrySet()) {
-                    ShuttleThread shuttleThread = entry.getValue();
-                    ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
-                    Integer shuttleNo = shuttleProtocol.getShuttleNo();
-                    //灏濊瘯璋冨害灏忚溅
-                    boolean result = shuttleMoveGenerate(wrkNo, locNo, shuttleNo);
-                    if (result) {
-                        return true;//璋冨害鎴愬姛
-                    }
-                }
-            }
-        }
-
-        News.info("{}鐩爣搴撲綅娌℃湁鎼滅储鍒板彲鐢ㄧ┛姊溅", locNo);
-        return false;
-    }
-
-    /**
-     * 灏忚溅杩佺Щ浠诲姟鐢熸垚
-     */
-    @Transactional
-    public synchronized boolean shuttleMoveGenerate(Integer wrkNo, String locNo, Integer shuttleNo) {
-        Date now = new Date();
-        //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
-        ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttleNo);
-        if (shuttleThread == null) {
-            News.info("{}鍙峰皬杞︼紝绾跨▼涓嶅瓨鍦�", shuttleNo);
-            return false;
-        }
-        ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
-        if (shuttleProtocol == null) {
-            News.info("{}鍙峰皬杞︼紝绾跨▼涓嶅瓨鍦�", shuttleNo);
-            return false;
-        }
-
-        //灏忚溅澶勪簬绌洪棽鐘舵��
-        if (!shuttleThread.isIdle()) {
-            News.info("{}鍙峰皬杞︼紝蹇欑涓�", shuttleNo);
-            return false;
-        }
-
-        if (shuttleProtocol.getCurrentLocNo().equals(locNo)) {
-            News.info("{}鍙峰皬杞︼紝绉诲姩鐩爣浣嶇疆涓庡皬杞﹀綋鍓嶄綅缃竴鑷存棤娉曠Щ鍔�", shuttleNo);
-            return false;
-        }
-
-        //鍒ゆ柇绌挎杞︽槸鍚﹀瓨鍦ㄦ湭瀹屾垚鐨勫皬杞︾Щ搴撲换鍔�
-        WrkMast hasMoveWorking = wrkMastService.selectShuttleHasMoveWorking(shuttleNo);
-        if (hasMoveWorking != null) {//灏忚溅瀛樺湪绉诲簱浠诲姟锛岀瓑寰呮墽琛屽畬鎴愬悗鍐嶇敓鎴愭柊鐨勪换鍔�
-            News.info("{}鍙峰皬杞︼紝瀛樺湪绉诲姩浠诲姟锛岀瓑寰呮墽琛屽畬鎴愬悗鍐嶇敓鎴愭柊鐨勪换鍔�", shuttleNo);
-            return false;
-        }
-
-        //鑾峰彇涓诲伐浣滄。淇℃伅
-        WrkMast mainWrkMast = wrkMastService.selectByWorkNo(wrkNo);
-
-        //鍒ゆ柇鏄惁鏈夊叾浠栦换鍔℃鍦ㄤ娇鐢ㄧ┛姊溅
-        WrkMast wrkMast2 = wrkMastService.selectShuttleWorking(shuttleNo);
-        if (wrkMast2 != null) {//灏忚溅瀛樺湪鍏朵粬宸ヤ綔妗d换鍔★紝绛夊緟鎵ц瀹屾垚鍚庡啀鐢熸垚鏂扮殑浠诲姟
-            if (mainWrkMast == null) {
-                News.info("{}鍙峰皬杞︼紝瀛樺湪鍏朵粬宸ヤ綔妗d换鍔★紝绛夊緟鎵ц瀹屾垚鍐嶇敓鎴愭柊鐨勪换鍔�", shuttleNo);
-                return false;
-            }else {
-                if (!shuttleNo.equals(mainWrkMast.getShuttleNo())) {
-                    News.info("{}鍙峰皬杞︼紝瀛樺湪鍏朵粬宸ヤ綔妗d换鍔★紝绛夊緟鎵ц瀹屾垚鍐嶇敓鎴愭柊鐨勪换鍔�", shuttleNo);
-                    return false;
-                }
-            }
-        }
-
-        // 鑾峰彇宸ヤ綔鍙�
-        int workNo = commonService.getWorkNo(WrkIoType.SHUTTLE_MOVE.id);
-        // 淇濆瓨宸ヤ綔妗�
-        WrkMast wrkMast = new WrkMast();
-        wrkMast.setWrkNo(workNo);
-        wrkMast.setIoTime(now);
-        wrkMast.setWrkSts(WrkStsType.NEW_MOVE.sts); // 宸ヤ綔鐘舵�侊細301.鐢熸垚杩佺Щ浠诲姟
-        wrkMast.setIoType(WrkIoType.SHUTTLE_MOVE.id); // 鍏ュ嚭搴撶姸鎬侊細 200.灏忚溅杩佺Щ
-        wrkMast.setIoPri(800D);
-        wrkMast.setShuttleNo(shuttleNo);//绌挎杞﹀彿
-        wrkMast.setSourceLocNo(shuttleProtocol.getCurrentLocNo()); // 婧愬簱浣� => 灏忚溅褰撳墠搴撲綅鍙�
-        wrkMast.setLocNo(locNo); // 鐩爣搴撲綅
-        wrkMast.setAppeTime(now);
-        wrkMast.setModiTime(now);
-        boolean res = wrkMastService.insert(wrkMast);
-        if (!res) {
-            News.error("灏忚溅杩佺Щ --- 淇濆瓨宸ヤ綔妗eけ璐ワ紒 绌挎杞﹀彿锛�" + shuttleNo);
-            throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
-        }
-
-        //缁欏伐浣滄。缁戝畾灏忚溅鍙�
-        if (mainWrkMast != null) {
-            mainWrkMast.setShuttleNo(shuttleNo);
-            wrkMastService.updateById(mainWrkMast);
-        }
-
-        return true;
-    }
-
-    /**
-     * 灏忚溅闆嗗悎
-     */
-    public List<ShuttleGatherResult> shuttleGather(ShuttleGatherParam param) {
-        Wrapper<BasShuttle> wrapper = new EntityWrapper<BasShuttle>().eq("status", 1);
-        if (param != null) {
-            if (!param.getShuttleNos().isEmpty()) {
-                wrapper.in("shuttle_no", param.getShuttleNos());
-            }
-        }
-
-        List<BasShuttle> basShuttles = basShuttleService.selectList(wrapper);
-        List<ShuttleGatherResult> list = new ArrayList<>();
-        for (BasShuttle basShuttle : basShuttles) {
-            String idleLoc = basShuttle.getIdleLoc();
-            if(Cools.isEmpty(idleLoc)) {
-                continue;
-            }
-
-            boolean result = shuttleMoveGenerate(null, idleLoc, basShuttle.getShuttleNo());
-
-            ShuttleGatherResult gatherResult = new ShuttleGatherResult();
-            gatherResult.setShuttleNo(basShuttle.getShuttleNo());
-            gatherResult.setIdleLoc(idleLoc);
-            gatherResult.setResult(result);
-            list.add(gatherResult);
-        }
-        return list;
-    }
-
-    /**
-     * 灏忚溅婕旂ず
-     */
-    public void shuttleDemo(ShuttleDemoParam param) {
-        List<DeviceConfig> shuttleList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>()
-                .eq("device_type", String.valueOf(SlaveType.Shuttle))
-                .in("device_no", param.getShuttleNos())
-        );
-
-        for (DeviceConfig device : shuttleList) {
-            ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, device.getDeviceNo());
-            if (shuttleThread == null) {
-                continue;
-            }
-
-            shuttleThread.enableDemo(param.getStatus() == 1);
-        }
-    }
-
-    /**
-     * 妫�娴嬬洰鏍囨ゼ灞傝溅鏁伴噺鏄惁灏忎簬鍏佽鐨勬渶澶ф暟閲�
-     * true: 灏忎簬鏈�澶ф暟閲�  false: 澶т簬鎴栫瓑浜庢渶澶ф暟閲�
-     */
-    public boolean checkDispatchMaxNum(Integer lev) {
-        EntityWrapper<Config> wrapper = new EntityWrapper<>();
-        wrapper.eq("code", "dispatchShuttleMaxNum");
-        Config config = configService.selectOne(wrapper);
-        if (config == null) {
-            return false;
-        }
-
-        List<DeviceConfig> shuttleList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>()
-                .eq("device_type", String.valueOf(SlaveType.Shuttle)));
-        int levCount = 0;//鐩爣妤煎眰杞﹁締鏁伴噺
-        for (DeviceConfig device : shuttleList) {
-            //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
-            ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, device.getDeviceNo());
-            ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
-            if (shuttleProtocol == null || shuttleProtocol.getShuttleNo() == null) {
-                continue;
-            }
-
-            //灏忚溅鏈夊厖鐢典换鍔�
-            if (shuttleThread.isCharging()) {
-                continue;
-            }
-
-            //灏忚溅鏁呴殰璺宠繃
-            if (shuttleThread.isFault()) {
-                continue;
-            }
-
-            String currentLocNo = shuttleProtocol.getCurrentLocNo();
-            if (currentLocNo == null) {
-                continue;
-            }
-            int currentLev = Utils.getLev(currentLocNo);
-
-            if (lev == currentLev) {
-                if (shuttleThread.isCharging()) {
-                    continue;
-                }
-                levCount++;//鐩爣妤煎眰鏈夎溅锛屾暟閲忓鍔�
-            }
-        }
-
-        //鎼滅储鏄惁瀛樺湪鍓嶅線鐩爣妤煎眰鐨勫皬杞︾Щ鍔ㄥ伐浣滄。
-        for (WrkMast wrkMast : wrkMastService.selectShuttleMoveWrk()) {
-            if (wrkMast.getSourceLocNo() == null || wrkMast.getLocNo() == null) {
-                continue;
-            }
-
-            int sourceLev = Utils.getLev(wrkMast.getSourceLocNo());//宸ヤ綔妗f簮妤煎眰
-            int targetLev = Utils.getLev(wrkMast.getLocNo());//宸ヤ綔妗g洰鏍囨ゼ灞�
-            if (sourceLev == lev) {
-                continue;//宸ヤ綔妗fゼ灞傚拰鐩爣妤煎眰鐩稿悓锛岃烦杩�
-            }
-
-            if (targetLev == lev) {
-                levCount++;//宸ヤ綔妗g洰鏍囨ゼ灞傚拰瀹為檯妤煎眰鐩稿悓锛屾暟閲忓鍔�
-                continue;
-            }
-        }
-
-
-        return levCount < Integer.parseInt(config.getValue());
-    }
-
-    /**
-     * 妫�娴嬫槸鍚︾┛姊溅鏄惁鏈夊厖鐢典换鍔�
-     */
-    public boolean checkChargeWrk(int shuttleNo) {
-        //鍒ゆ柇鏄惁鏈夊厖鐢典换鍔℃鍦ㄤ娇鐢ㄧ┛姊溅
-        WrkMast wrkMast = wrkMastService.selectChargeWorking(shuttleNo);
-        if (wrkMast != null) {
-            if (wrkMast.getMemo().equals("suggestCharge")) {
-                wrkMast.setMemo("suggestChargeTaskStop");//鏂紑鍏呯數
-                wrkMast.setModiTime(new Date());
-                wrkMastService.updateById(wrkMast);
-            }
-            return true;//鏈夊厖鐢典换鍔�
-        }
-        return false;//鏃犲厖鐢典换鍔�
-    }
-
-    /**
-     * 鑾峰彇妤煎眰鍙敤灏忚溅鏁伴噺
-     */
-    public int getShuttleEnableUseCountByLev(int lev) {
-        List<DeviceConfig> shuttleList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>()
-                .eq("device_type", String.valueOf(SlaveType.Shuttle)));
-        int count = 0;
-        for (DeviceConfig device : shuttleList) {
-            //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
-            ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, device.getDeviceNo());
-            if (shuttleThread == null) {
-                continue;
-            }
-
-            ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
-            if (shuttleProtocol == null || shuttleProtocol.getShuttleNo() == null) {
-                continue;
-            }
-
-            if (checkChargeWrk(device.getDeviceNo())) {
-                continue;//瀛樺湪鍏呯數浠诲姟锛岃繃婊ゅ皬杞�
-            }
-
-            if (!shuttleThread.isIdle()) {
-                continue;
-            }
-
-            if (Utils.getLev(shuttleProtocol.getCurrentLocNo()) == lev) {
-                //鍚屼竴妤煎眰鍙敤灏忚溅
-                count++;
-                continue;
-            }
-        }
-        return count;
-    }
-
-    /**
-     * 鑾峰彇妤煎眰灏忚溅鏁伴噺
-     */
-    public int getShuttleCountByLev(int lev) {
-        List<DeviceConfig> shuttleList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>()
-                .eq("device_type", String.valueOf(SlaveType.Shuttle)));
-        int count = 0;
-        for (DeviceConfig device : shuttleList) {
-            //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
-            ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, device.getDeviceNo());
-            if (shuttleThread == null) {
-                continue;
-            }
-
-            ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
-            if (shuttleProtocol == null || shuttleProtocol.getShuttleNo() == null) {
-                continue;
-            }
-
-            if (shuttleProtocol.getCurrentLocNo() == null) {
-                continue;
-            }
-
-            if (Utils.getLev(shuttleProtocol.getCurrentLocNo()) == lev) {
-                //鍚屼竴妤煎眰鍙敤灏忚溅
-                count++;
-                continue;
-            }
-        }
-        return count;
-    }
-
-}
diff --git a/src/main/java/com/zy/core/enums/CrnForkPosType.java b/src/main/java/com/zy/core/enums/CrnForkPosType.java
new file mode 100644
index 0000000..655187a
--- /dev/null
+++ b/src/main/java/com/zy/core/enums/CrnForkPosType.java
@@ -0,0 +1,43 @@
+package com.zy.core.enums;
+
+public enum CrnForkPosType {
+
+    NONE(-1, "涓嶅湪瀹氫綅"),   // 璐у弶鍘熶綅
+    HOME(0, "璐у弶鍘熶綅"),   // 璐у弶鍘熶綅
+    LEFT(1, "璐у弶鍦ㄥ乏渚�"),  // 璐у弶鍦ㄥ乏渚�
+    RIGHT(2, "璐у弶鍦ㄥ彸渚�"),   // 璐у弶鍦ㄥ彸渚�
+    _LEFT(3, "璐у弶鍦ㄥ乏渚ц繙"),   // 璐у弶鍦ㄥ彸渚ц繙
+    _RIGHT(4, "璐у弶鍦ㄥ彸渚ц繙"),   // 璐у弶鍦ㄥ彸渚ц繙
+    ;
+
+    public Integer id;
+    public String desc;
+    CrnForkPosType(Integer id, String desc) {
+        this.id = id;
+        this.desc = desc;
+    }
+
+    public static CrnForkPosType get(Integer id) {
+        if (null == id) {
+            return null;
+        }
+        for (CrnForkPosType type : CrnForkPosType.values()) {
+            if (type.id.equals(id)) {
+                return type;
+            }
+        }
+        return null;
+    }
+
+    public static CrnForkPosType get(CrnForkPosType type) {
+        if (null == type) {
+            return null;
+        }
+        for (CrnForkPosType crnForkPosType : CrnForkPosType.values()) {
+            if (crnForkPosType == type) {
+                return crnForkPosType;
+            }
+        }
+        return null;
+    }
+}
diff --git a/src/main/java/com/zy/core/enums/CrnLiftPosType.java b/src/main/java/com/zy/core/enums/CrnLiftPosType.java
new file mode 100644
index 0000000..6c24190
--- /dev/null
+++ b/src/main/java/com/zy/core/enums/CrnLiftPosType.java
@@ -0,0 +1,44 @@
+package com.zy.core.enums;
+
+public enum CrnLiftPosType {
+
+    ERROR(-1, "鏈煡"),   // 涓嶅湪瀹氫綅
+    NONE(0, "涓嶅湪瀹氫綅"),   // 涓嶅湪瀹氫綅
+    _DOWN(1, "鍙屾繁浣庝綅"),  //
+    DOWN(2, "鍗曟繁浣庝綅"),  //
+    _UP(3, "鍗曟繁楂樹綅"),   //
+    UP(4, "鍙屾繁楂樹綅"),   //
+    ;
+
+    public Integer id;
+    public String desc;
+    CrnLiftPosType(Integer id, String desc) {
+        this.id = id;
+        this.desc = desc;
+    }
+
+    public static CrnLiftPosType get(Integer id) {
+        if (null == id) {
+            return null;
+        }
+        for (CrnLiftPosType type : CrnLiftPosType.values()) {
+            if (type.id.equals(id)) {
+                return type;
+            }
+        }
+        return null;
+    }
+
+    public static CrnLiftPosType get(CrnLiftPosType type) {
+        if (null == type) {
+            return null;
+        }
+        for (CrnLiftPosType crnLiftPosType : CrnLiftPosType.values()) {
+            if (crnLiftPosType == type) {
+                return crnLiftPosType;
+            }
+        }
+        return null;
+    }
+
+}
diff --git a/src/main/java/com/zy/core/enums/CrnModeType.java b/src/main/java/com/zy/core/enums/CrnModeType.java
new file mode 100644
index 0000000..30cc8fb
--- /dev/null
+++ b/src/main/java/com/zy/core/enums/CrnModeType.java
@@ -0,0 +1,42 @@
+package com.zy.core.enums;
+
+public enum CrnModeType {
+
+    NONE(-1, "绂荤嚎"),
+    STOP(0, "缁翠慨"),
+    HAND(1, "鎵嬪姩"),
+    HALF_AUTO(2, "鍗婅嚜鍔�"),
+    AUTO(3, "鑷姩"),
+    ;
+
+    public Integer id;
+    public String desc;
+    CrnModeType(Integer id, String desc) {
+        this.id = id;
+        this.desc = desc;
+    }
+
+    public static CrnModeType get(Integer id) {
+        if (null == id) {
+            return null;
+        }
+        for (CrnModeType type : CrnModeType.values()) {
+            if (type.id.equals(id)) {
+                return type;
+            }
+        }
+        return null;
+    }
+
+    public static CrnModeType get(CrnModeType type) {
+        if (null == type) {
+            return null;
+        }
+        for (CrnModeType crnModeType : CrnModeType.values()) {
+            if (crnModeType == type) {
+                return crnModeType;
+            }
+        }
+        return null;
+    }
+}
diff --git a/src/main/java/com/zy/core/enums/CrnStatusType.java b/src/main/java/com/zy/core/enums/CrnStatusType.java
new file mode 100644
index 0000000..42c6f37
--- /dev/null
+++ b/src/main/java/com/zy/core/enums/CrnStatusType.java
@@ -0,0 +1,52 @@
+package com.zy.core.enums;
+
+public enum CrnStatusType {
+
+    NONE(-1, "绂荤嚎"),
+    IDLE(0, "绌洪棽"),
+    FETCH_MOVING(1, "鍙栬揣琛岃蛋"),
+    FETCH_WAITING(2, "鍙栬揣绛夊緟"),
+    FETCHING(3, "鍙栬揣涓�"),
+    PUT_MOVING(4, "鏀捐揣璧拌"),
+    PUT_WAITING(5, "鏀捐揣绛夊緟"),
+    PUTTING(6, "鏀捐揣涓�"),
+    ORIGIN_GO(7, "鍥炲師鐐�"),
+    ORIGIN_BACK(8, "鍥炲弽鍘熺偣"),
+    MOVING(9, "璧拌涓�"),
+    WAITING(90, "浠诲姟瀹屾垚绛夊緟WCS纭"),
+    PAUSE(11, "浠诲姟鏆傚仠"),
+    SOS(99, "鎶ヨ"),
+    UNKNOW(100, "鍏朵粬"),
+    ;
+
+    public Integer id;
+    public String desc;
+    CrnStatusType(Integer id, String desc) {
+        this.id = id;
+        this.desc = desc;
+    }
+
+    public static CrnStatusType get(Integer id) {
+        if (null == id) {
+            return null;
+        }
+        for (CrnStatusType type : CrnStatusType.values()) {
+            if (type.id.equals(id)) {
+                return type;
+            }
+        }
+        return NONE;
+    }
+
+    public static CrnStatusType get(CrnStatusType type) {
+        if (null == type) {
+            return null;
+        }
+        for (CrnStatusType crnStatusType : CrnStatusType.values()) {
+            if (crnStatusType == type) {
+                return crnStatusType;
+            }
+        }
+        return null;
+    }
+}
diff --git a/src/main/java/com/zy/core/enums/ForkLiftIoModeType.java b/src/main/java/com/zy/core/enums/ForkLiftIoModeType.java
deleted file mode 100644
index a2d9a10..0000000
--- a/src/main/java/com/zy/core/enums/ForkLiftIoModeType.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package com.zy.core.enums;
-
-//璐у弶鎻愬崌鏈哄嚭鍏ュ簱妯″紡
-public enum ForkLiftIoModeType {
-    NONE(0, "鏈煡"),
-    IN(1, "鍏ュ簱"),
-    OUT(2, "鍑哄簱"),
-    ;
-
-    public Integer id;
-    public String desc;
-
-    ForkLiftIoModeType(Integer id, String desc) {
-        this.id = id;
-        this.desc = desc;
-    }
-
-    public static ForkLiftIoModeType get(Integer id) {
-        if (null == id) {
-            return null;
-        }
-        for (ForkLiftIoModeType type : ForkLiftIoModeType.values()) {
-            if (type.id.equals(id)) {
-                return type;
-            }
-        }
-        return null;
-    }
-
-    public static ForkLiftIoModeType get(ForkLiftIoModeType type) {
-        if (null == type) {
-            return null;
-        }
-        for (ForkLiftIoModeType type2 : ForkLiftIoModeType.values()) {
-            if (type2 == type) {
-                return type2;
-            }
-        }
-        return null;
-    }
-}
diff --git a/src/main/java/com/zy/core/enums/ForkLiftProtocolStatusType.java b/src/main/java/com/zy/core/enums/ForkLiftProtocolStatusType.java
deleted file mode 100644
index 4bfa221..0000000
--- a/src/main/java/com/zy/core/enums/ForkLiftProtocolStatusType.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package com.zy.core.enums;
-
-public enum ForkLiftProtocolStatusType {
-    NONE(-1, "绂荤嚎"),
-    IDLE(0, "绌洪棽"),
-    PICK_UP(1, "鍙栬揣涓�"),
-    PUT_DOWN(2, "鏀捐揣涓�"),
-    MOVING(3, "绉诲姩涓�"),
-    WAITING(98, "绛夊緟纭"),
-    ERROR(99, "鏁呴殰"),
-    ;
-
-    public Integer id;
-    public String desc;
-
-    ForkLiftProtocolStatusType(Integer id, String desc) {
-        this.id = id;
-        this.desc = desc;
-    }
-
-    public static ForkLiftProtocolStatusType get(Integer id) {
-        if (null == id) {
-            return null;
-        }
-        for (ForkLiftProtocolStatusType type : ForkLiftProtocolStatusType.values()) {
-            if (type.id.equals(id)) {
-                return type;
-            }
-        }
-        return null;
-    }
-
-    public static ForkLiftProtocolStatusType get(ForkLiftProtocolStatusType type) {
-        if (null == type) {
-            return null;
-        }
-        for (ForkLiftProtocolStatusType type2 : ForkLiftProtocolStatusType.values()) {
-            if (type2 == type) {
-                return type2;
-            }
-        }
-        return null;
-    }
-}
diff --git a/src/main/java/com/zy/core/enums/ForkLiftTaskModeType.java b/src/main/java/com/zy/core/enums/ForkLiftTaskModeType.java
deleted file mode 100644
index adcbc6b..0000000
--- a/src/main/java/com/zy/core/enums/ForkLiftTaskModeType.java
+++ /dev/null
@@ -1,49 +0,0 @@
-package com.zy.core.enums;
-
-//璐у弶鎻愬崌鏈轰换鍔℃ā寮�
-public enum ForkLiftTaskModeType {
-
-    NONE(0, "鏈煡"),
-    PICK_UP(1, "鍙栬揣"),
-    PUT_DOWN(2, "鏀捐揣"),
-    PICK_PUT(3, "鍙栨斁璐�"),
-    SHUTTLE_SWITCH(4, "灏忚溅鎹㈠眰"),
-    MOVE(5, "鎻愬崌鏈虹Щ鍔�"),
-    RESET(9996, "澶嶄綅"),
-    SWITCH_IN(9997, "鍒囨崲鍏ュ簱妯″紡"),
-    SWITCH_OUt(9998, "鍒囨崲鍑哄簱妯″紡"),
-    READ_STATUS(9999, "璇诲彇鐘舵��"),
-    ;
-
-    public Integer id;
-    public String desc;
-
-    ForkLiftTaskModeType(Integer id, String desc) {
-        this.id = id;
-        this.desc = desc;
-    }
-
-    public static ForkLiftTaskModeType get(Integer id) {
-        if (null == id) {
-            return null;
-        }
-        for (ForkLiftTaskModeType type : ForkLiftTaskModeType.values()) {
-            if (type.id.equals(id)) {
-                return type;
-            }
-        }
-        return null;
-    }
-
-    public static ForkLiftTaskModeType get(ForkLiftTaskModeType type) {
-        if (null == type) {
-            return null;
-        }
-        for (ForkLiftTaskModeType type2 : ForkLiftTaskModeType.values()) {
-            if (type2 == type) {
-                return type2;
-            }
-        }
-        return null;
-    }
-}
diff --git a/src/main/java/com/zy/core/enums/LiftDeviceStatusType.java b/src/main/java/com/zy/core/enums/LiftDeviceStatusType.java
deleted file mode 100644
index 8d80cd2..0000000
--- a/src/main/java/com/zy/core/enums/LiftDeviceStatusType.java
+++ /dev/null
@@ -1,42 +0,0 @@
-package com.zy.core.enums;
-
-public enum LiftDeviceStatusType {
-    NONE(-1, "绂荤嚎"),
-    IDLE(0, "绌洪棽"),
-    BUSY(1, "蹇欑"),
-    WAITING(98, "绛夊緟纭"),
-    ERROR(99, "鏁呴殰"),
-    ;
-
-    public Integer id;
-    public String desc;
-
-    LiftDeviceStatusType(Integer id, String desc) {
-        this.id = id;
-        this.desc = desc;
-    }
-
-    public static LiftDeviceStatusType get(Integer id) {
-        if (null == id) {
-            return NONE;
-        }
-        for (LiftDeviceStatusType type : LiftDeviceStatusType.values()) {
-            if (type.id.equals(id)) {
-                return type;
-            }
-        }
-        return NONE;
-    }
-
-    public static LiftDeviceStatusType get(LiftDeviceStatusType type) {
-        if (null == type) {
-            return NONE;
-        }
-        for (LiftDeviceStatusType type2 : LiftDeviceStatusType.values()) {
-            if (type2 == type) {
-                return type2;
-            }
-        }
-        return NONE;
-    }
-}
diff --git a/src/main/java/com/zy/core/enums/LiftIoModeType.java b/src/main/java/com/zy/core/enums/LiftIoModeType.java
deleted file mode 100644
index 053943e..0000000
--- a/src/main/java/com/zy/core/enums/LiftIoModeType.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package com.zy.core.enums;
-
-//鎻愬崌鏈哄嚭鍏ュ簱妯″紡
-public enum LiftIoModeType {
-    NONE(0, "鏈煡"),
-    IN(1, "鍏ュ簱"),
-    OUT(2, "鍑哄簱"),
-    ;
-
-    public Integer id;
-    public String desc;
-
-    LiftIoModeType(Integer id, String desc) {
-        this.id = id;
-        this.desc = desc;
-    }
-
-    public static LiftIoModeType get(Integer id) {
-        if (null == id) {
-            return null;
-        }
-        for (LiftIoModeType type : LiftIoModeType.values()) {
-            if (type.id.equals(id)) {
-                return type;
-            }
-        }
-        return null;
-    }
-
-    public static LiftIoModeType get(LiftIoModeType type) {
-        if (null == type) {
-            return null;
-        }
-        for (LiftIoModeType type2 : LiftIoModeType.values()) {
-            if (type2 == type) {
-                return type2;
-            }
-        }
-        return null;
-    }
-}
diff --git a/src/main/java/com/zy/core/enums/LiftProtocolStatusType.java b/src/main/java/com/zy/core/enums/LiftProtocolStatusType.java
deleted file mode 100644
index 9f23cdb..0000000
--- a/src/main/java/com/zy/core/enums/LiftProtocolStatusType.java
+++ /dev/null
@@ -1,42 +0,0 @@
-package com.zy.core.enums;
-
-public enum LiftProtocolStatusType {
-    NONE(-1, "绂荤嚎"),
-    IDLE(0, "绌洪棽"),
-    WORKING(1, "浣滀笟涓�"),
-    WAITING(98, "绛夊緟纭"),
-    ERROR(99, "鏁呴殰"),
-    ;
-
-    public Integer id;
-    public String desc;
-
-    LiftProtocolStatusType(Integer id, String desc) {
-        this.id = id;
-        this.desc = desc;
-    }
-
-    public static LiftProtocolStatusType get(Integer id) {
-        if (null == id) {
-            return NONE;
-        }
-        for (LiftProtocolStatusType type : LiftProtocolStatusType.values()) {
-            if (type.id.equals(id)) {
-                return type;
-            }
-        }
-        return NONE;
-    }
-
-    public static LiftProtocolStatusType get(LiftProtocolStatusType type) {
-        if (null == type) {
-            return NONE;
-        }
-        for (LiftProtocolStatusType type2 : LiftProtocolStatusType.values()) {
-            if (type2 == type) {
-                return type2;
-            }
-        }
-        return NONE;
-    }
-}
diff --git a/src/main/java/com/zy/core/enums/LiftTaskModeType.java b/src/main/java/com/zy/core/enums/LiftTaskModeType.java
deleted file mode 100644
index 1172351..0000000
--- a/src/main/java/com/zy/core/enums/LiftTaskModeType.java
+++ /dev/null
@@ -1,47 +0,0 @@
-package com.zy.core.enums;
-
-//鎻愬崌鏈轰换鍔℃ā寮�
-public enum LiftTaskModeType {
-
-    NONE(0, "鏈煡"),
-    PICK_PUT(1, "鍙栨斁璐�"),
-    SHUTTLE_SWITCH(2, "灏忚溅鎹㈠眰"),
-    MOVE(3, "鎻愬崌鏈虹Щ鍔�"),
-    RESET(9996, "澶嶄綅"),
-    SWITCH_IN(9997, "鍒囨崲鍏ュ簱妯″紡"),
-    SWITCH_OUt(9998, "鍒囨崲鍑哄簱妯″紡"),
-    READ_STATUS(9999, "璇诲彇鐘舵��"),
-    ;
-
-    public Integer id;
-    public String desc;
-
-    LiftTaskModeType(Integer id, String desc) {
-        this.id = id;
-        this.desc = desc;
-    }
-
-    public static LiftTaskModeType get(Integer id) {
-        if (null == id) {
-            return null;
-        }
-        for (LiftTaskModeType type : LiftTaskModeType.values()) {
-            if (type.id.equals(id)) {
-                return type;
-            }
-        }
-        return null;
-    }
-
-    public static LiftTaskModeType get(LiftTaskModeType type) {
-        if (null == type) {
-            return null;
-        }
-        for (LiftTaskModeType type2 : LiftTaskModeType.values()) {
-            if (type2 == type) {
-                return type2;
-            }
-        }
-        return null;
-    }
-}
diff --git a/src/main/java/com/zy/core/enums/RedisKeyType.java b/src/main/java/com/zy/core/enums/RedisKeyType.java
index 4b69139..ada9cba 100644
--- a/src/main/java/com/zy/core/enums/RedisKeyType.java
+++ b/src/main/java/com/zy/core/enums/RedisKeyType.java
@@ -9,58 +9,12 @@
     LIFT_WORK_FLAG("lift_wrk_no_"),
     LIFT_FLAG("lift_"),
 
-    MAP("realtimeBasMap_"),
-    BASIC_MAP("basicMap_"),
-    QUEUE_SHUTTLE("queue_shuttle_"),
-    QUEUE_FORK_LIFT("queue_fork_lift_"),
+    QUEUE_CRN("queue_crn_"),
+    QUEUE_DEVP("queue_devp_"),
+    QUEUE_RGV("queue_rgv_"),
     QUEUE_TASK("queue_task_"),
-    FORK_LIFT_PUT_COMPLETE("fork_lift_put_complete_"),
-    OUT_TASK_PREVIEW_DISPATCH_FORKLIFT("out_task_preview_dispatch_forklift_"),
-
-    //灏忚溅閲嶆柊瑙勫垝璺緞棰戠巼
-    SHUTTLE_RESTART_CALC_PATH("shuttle_restart_calc_path_"),
-    //灏忚溅鏇存柊妤煎眰鍧愭爣棰戠巼
-    SHUTTLE_UPDATE_LOCATION("shuttle_update_location_"),
-
-    //鎻愬崌鏈虹Щ鍔ㄨ嚦灏忚溅灞傞鐜�
-    LIFT_MOVE_TO_SHUTTLE_LIMIT("lift_move_to_shuttle_LIMIT_"),
-    //浠诲姟杩愯闄愬埗
-    TASK_RUN_LIMIT("task_run_limit_"),
-
-    //浜ょ淇℃伅
-    TRAFFIC_CONTROL_MAP("traffic_control_map"),
-    TRAFFIC_CONTROL_APPLY("traffic_control_apply_"),
-    TRAFFIC_CONTROL_SUCCESS_APPLY("traffic_control_success_apply_"),
-    TRAFFIC_CONTROL_REPORT_LIST("traffic_control_report_list_"),
-    TRAFFIC_CONTROL_CANCEL_LIST("traffic_control_cancel_list_"),
-    TRAFFIC_CONTROL_LOCK_APPLY("traffic_control_lock_apply_"),
-    TRAFFIC_CONTROL_SHUTTLE_APPLY_COUNT("traffic_control_shuttle_apply_count_"),
-    TRAFFIC_CONTROL_SHUTTLE_OBSTACLE_CANCEL_TASK("traffic_control_shuttle_obstacle_cancel_task_"),
-    TRAFFIC_CONTROL_SHUTTLE_OBSTACLE_CANCEL_TASK_LOCK("traffic_control_shuttle_obstacle_cancel_task_lock_"),
-
-    //鍦板浘閿佸畾鑺傜偣
-    LOCK_MAP_NODES("lock_map_nodes_"),
-
-    //璁惧娑堟伅KEY
-    DEVICE_SHUTTLE_MSG_KEY_("deviceShuttleMsgKey_"),
-    DEVICE_FORK_LIFT_MSG_KEY_("deviceForkLiftMsgKey_"),
-    DEVICE_LIFT_MSG_KEY_("deviceLiftMsgKey_"),
-
-    //璁惧鎸囦护娑堟伅KEY
-    DEVICE_SHUTTLE_COMMAND_MSG_KEY("deviceShuttleCommandMsgKey_"),
-    DEVICE_FORK_LIFT_COMMAND_MSG_KEY("deviceForkLiftCommandMsgKey_"),
-    DEVICE_LIFT_COMMAND_MSG_KEY("deviceLiftCommandMsgKey_"),
-
-    //璁惧閰嶇疆鏂囦欢
-    DEVICE_CONFIG("deviceConfig"),
-    //铏氭嫙璁惧閰嶇疆鏂囦欢
-    FAKE_DEVICE_CONFIG("fakeDeviceConfig"),
 
     LOG_LIMIT("log_limit_"),
-
-    POINT_MAP("point_map"),
-    LOC_MAP("loc_map"),
-    SHUTTLE_SPEED_MAP("shuttle_speed_map"),
     SYSTEM_CONFIG_MAP("system_config_map"),
     ;
 
diff --git a/src/main/java/com/zy/core/enums/ShuttleCheckCommandResultType.java b/src/main/java/com/zy/core/enums/ShuttleCheckCommandResultType.java
deleted file mode 100644
index da6a78a..0000000
--- a/src/main/java/com/zy/core/enums/ShuttleCheckCommandResultType.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package com.zy.core.enums;
-
-public enum ShuttleCheckCommandResultType {
-
-    FAIL(0, "鏈�氳繃"),
-    SUCCESS(1, "閫氳繃"),
-    SUCCESS_GO(2, "閫氳繃涓斿彲鎻愬墠涓嬪彂鎸囦护")
-    ;
-
-    public Integer id;
-    public String desc;
-
-    ShuttleCheckCommandResultType(Integer id, String desc) {
-        this.id = id;
-        this.desc = desc;
-    }
-
-    public static ShuttleCheckCommandResultType get(Short id) {
-        if (null == id) {
-            return null;
-        }
-        for (ShuttleCheckCommandResultType type : ShuttleCheckCommandResultType.values()) {
-            if (type.id.equals(id.intValue())) {
-                return type;
-            }
-        }
-        return null;
-    }
-
-    public static ShuttleCheckCommandResultType get(ShuttleCheckCommandResultType type) {
-        if (null == type) {
-            return null;
-        }
-        for (ShuttleCheckCommandResultType type1 : ShuttleCheckCommandResultType.values()) {
-            if (type1 == type) {
-                return type1;
-            }
-        }
-        return null;
-    }
-}
diff --git a/src/main/java/com/zy/core/enums/ShuttleCommandModeType.java b/src/main/java/com/zy/core/enums/ShuttleCommandModeType.java
deleted file mode 100644
index 082aa68..0000000
--- a/src/main/java/com/zy/core/enums/ShuttleCommandModeType.java
+++ /dev/null
@@ -1,53 +0,0 @@
-package com.zy.core.enums;
-
-/**
- * 鍥涘悜绌挎杞﹀懡浠ょ被鍨�
- */
-public enum ShuttleCommandModeType {
-
-    NONE(-1, "鏈煡绫诲瀷"),
-    MOVE(1, "绉诲姩"),
-    IN_LIFT(2, "杩涙彁鍗囨満"),
-    OUT_LIFT(3, "鍑烘彁鍗囨満"),
-    CHARGE_OPEN(4, "鍏呯數寮�"),
-    CHARGE_CLOSE(5, "鍏呯數鍏�"),
-    PALLET_LIFT(6, "鎵樼洏椤跺崌"),
-    PALLET_DOWN(7, "鎵樼洏涓嬮檷"),
-    RESET(8, "澶嶄綅"),
-    UPDATE_LOCATION(9, "鏇存柊鍧愭爣"),
-    ;
-
-    public Integer id;
-    public String desc;
-
-    ShuttleCommandModeType(Integer id, String desc) {
-        this.id = id;
-        this.desc = desc;
-    }
-
-    public static ShuttleCommandModeType get(Integer id) {
-        if (null == id) {
-            return null;
-        }
-        for (ShuttleCommandModeType type : ShuttleCommandModeType.values()) {
-            if (type.id.equals(id)) {
-                return type;
-            }
-        }
-        return null;
-    }
-
-    public static ShuttleCommandModeType get(ShuttleCommandModeType type) {
-        if (null == type) {
-            return null;
-        }
-        for (ShuttleCommandModeType type1 : ShuttleCommandModeType.values()) {
-            if (type1 == type) {
-                return type1;
-            }
-        }
-        return null;
-    }
-
-
-}
diff --git a/src/main/java/com/zy/core/enums/ShuttleProtocolStatusType.java b/src/main/java/com/zy/core/enums/ShuttleProtocolStatusType.java
deleted file mode 100644
index f30c523..0000000
--- a/src/main/java/com/zy/core/enums/ShuttleProtocolStatusType.java
+++ /dev/null
@@ -1,49 +0,0 @@
-package com.zy.core.enums;
-
-/**
- * 鍥涘悜绌挎杞﹀唴閮ㄧ姸鎬佹灇涓�
- */
-public enum ShuttleProtocolStatusType {
-
-    IDLE(1, "绌洪棽"),
-    WORKING(2, "浣滀笟涓�"),
-    WAITING(3, "绛夊緟纭"),
-    CHARGING(4, "鍏呯數涓�"),
-    CHARGING_WAITING(5, "鍏呯數浠诲姟绛夊緟纭"),
-    FIXING(6, "鏁呴殰淇涓�"),
-    OFFLINE(7, "绂荤嚎"),
-    ;
-
-    public Integer id;
-    public String desc;
-
-    ShuttleProtocolStatusType(Integer id, String desc) {
-        this.id = id;
-        this.desc = desc;
-    }
-
-    public static ShuttleProtocolStatusType get(Integer id) {
-        if (null == id) {
-            return null;
-        }
-        for (ShuttleProtocolStatusType type : ShuttleProtocolStatusType.values()) {
-            if (type.id.equals(id.intValue())) {
-                return type;
-            }
-        }
-        return null;
-    }
-
-    public static ShuttleProtocolStatusType get(ShuttleProtocolStatusType type) {
-        if (null == type) {
-            return null;
-        }
-        for (ShuttleProtocolStatusType type2 : ShuttleProtocolStatusType.values()) {
-            if (type2 == type) {
-                return type2;
-            }
-        }
-        return null;
-    }
-
-}
diff --git a/src/main/java/com/zy/core/enums/ShuttleRequireChargeType.java b/src/main/java/com/zy/core/enums/ShuttleRequireChargeType.java
deleted file mode 100644
index f2b7530..0000000
--- a/src/main/java/com/zy/core/enums/ShuttleRequireChargeType.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package com.zy.core.enums;
-
-public enum ShuttleRequireChargeType {
-
-    NONE(0, "鏃犻渶鍏呯數"),
-    FORCE_CHARGE(1, "寮哄埗鍏呯數"),
-    SUGGEST_CHARGE(2, "寤鸿鍏呯數")
-    ;
-
-    public Integer id;
-    public String desc;
-
-    ShuttleRequireChargeType(Integer id, String desc) {
-        this.id = id;
-        this.desc = desc;
-    }
-
-    public static ShuttleRequireChargeType get(Short id) {
-        if (null == id) {
-            return null;
-        }
-        for (ShuttleRequireChargeType type : ShuttleRequireChargeType.values()) {
-            if (type.id.equals(id.intValue())) {
-                return type;
-            }
-        }
-        return null;
-    }
-
-    public static ShuttleRequireChargeType get(ShuttleRequireChargeType type) {
-        if (null == type) {
-            return null;
-        }
-        for (ShuttleRequireChargeType type1 : ShuttleRequireChargeType.values()) {
-            if (type1 == type) {
-                return type1;
-            }
-        }
-        return null;
-    }
-}
diff --git a/src/main/java/com/zy/core/enums/ShuttleRunDirection.java b/src/main/java/com/zy/core/enums/ShuttleRunDirection.java
deleted file mode 100644
index ac8b1d7..0000000
--- a/src/main/java/com/zy/core/enums/ShuttleRunDirection.java
+++ /dev/null
@@ -1,63 +0,0 @@
-package com.zy.core.enums;
-
-/**
- * 鍥涘悜绌挎杞﹁繍琛屾柟鍚�
- */
-public enum ShuttleRunDirection {
-
-    TOP((short)2, "璐х墿鏂瑰悜-"),
-    BOTTOM((short)1, "璐х墿鏂瑰悜+"),
-    LEFT((short)3, "杩囬亾鏂瑰悜-"),
-    RIGHT((short)4, "杩囬亾鏂瑰悜+"),
-    ;
-
-    public Short id;
-    public String desc;
-
-    ShuttleRunDirection(Short id,String desc) {
-        this.id = id;
-        this.desc = desc;
-    }
-
-    public static ShuttleRunDirection get(String direction) {
-        if (null == direction) {
-            return null;
-        }
-        if (direction.equals("top")) {
-            return TOP;
-        } else if (direction.equals("bottom")) {
-            return BOTTOM;
-        } else if (direction.equals("left")) {
-            return LEFT;
-        } else if (direction.equals("right")) {
-            return RIGHT;
-        }else {
-            return null;
-        }
-    }
-
-    public static ShuttleRunDirection get(Short id) {
-        if (null == id) {
-            return null;
-        }
-        for (ShuttleRunDirection type : ShuttleRunDirection.values()) {
-            if (type.id.equals(id.shortValue())) {
-                return type;
-            }
-        }
-        return null;
-    }
-
-    public static ShuttleRunDirection get(ShuttleRunDirection type) {
-        if (null == type) {
-            return null;
-        }
-        for (ShuttleRunDirection shuttleRunDirection : ShuttleRunDirection.values()) {
-            if (shuttleRunDirection == type) {
-                return shuttleRunDirection;
-            }
-        }
-        return null;
-    }
-
-}
diff --git a/src/main/java/com/zy/core/enums/ShuttleStatusType.java b/src/main/java/com/zy/core/enums/ShuttleStatusType.java
deleted file mode 100644
index 5c1f5e7..0000000
--- a/src/main/java/com/zy/core/enums/ShuttleStatusType.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package com.zy.core.enums;
-
-/**
- * 鍥涘悜绌挎杞�
- */
-public enum ShuttleStatusType {
-
-    IDLE(1, "绌洪棽"),
-    BUSY(0, "蹇�"),
-    ;
-
-    public Integer id;
-    public String desc;
-
-    ShuttleStatusType(Integer id,String desc) {
-        this.id = id;
-        this.desc = desc;
-    }
-
-    public static ShuttleStatusType get(Integer id) {
-        if (null == id) {
-            return null;
-        }
-        for (ShuttleStatusType type : ShuttleStatusType.values()) {
-            if (type.id == id) {
-                return type;
-            }
-        }
-        return BUSY;
-    }
-
-    public static ShuttleStatusType get(ShuttleStatusType type) {
-        if (null == type) {
-            return null;
-        }
-        for (ShuttleStatusType shuttleStatusType : ShuttleStatusType.values()) {
-            if (shuttleStatusType == type) {
-                return shuttleStatusType;
-            }
-        }
-        return null;
-    }
-
-}
diff --git a/src/main/java/com/zy/core/enums/ShuttleTaskModeType.java b/src/main/java/com/zy/core/enums/ShuttleTaskModeType.java
deleted file mode 100644
index f2d1ae4..0000000
--- a/src/main/java/com/zy/core/enums/ShuttleTaskModeType.java
+++ /dev/null
@@ -1,58 +0,0 @@
-package com.zy.core.enums;
-
-public enum ShuttleTaskModeType {
-
-    INIT(0, "鍒濆"),    // 鍒濆
-    PALLET_LIFT(1, "鎵樼洏椤跺崌"),
-    PALLET_DOWN(2, "鎵樼洏涓嬮檷"),
-    RESET(3, "鐘舵�佸浣�"),
-    MOVE_LOC_NO(4, "绉诲姩鍒扮洰鏍囧簱浣�"),
-    MOVE_LOC_NO_TASK(5, "绉诲姩鍒扮洰鏍囧簱浣�(鐢熸垚绉诲姩浠诲姟)"),
-
-    MOVE_LIFT(7, "绉诲姩鍒版彁鍗囨満"),
-    AVOID(8, "閬胯浠诲姟"),
-    TRANSPORT(9, "鎼繍浠诲姟"),
-    SHUTTLE_CONTROL(10, "灏忚溅绠″埗"),
-    SHUTTLE_CANCEL_CONTROL(11, "灏忚溅鍙栨秷绠″埗"),
-    SHUTTLE_DEMO_OPEN(12, "婕旂ず妯″紡-寮�"),
-    SHUTTLE_DEMO_CLOSE(13, "婕旂ず妯″紡-鍏�"),
-    UPDATE_LOCATION(14, "鏇存柊鍧愭爣"),
-    CHARGE_ON(15, "鍏呯數-寮�"),
-    CHARGE_OFF(16, "鍏呯數-鍏�"),
-    CLEAR_PATH(17, "娓呴櫎璺緞"),
-    RESTART_CALC_PATH(18, "閲嶆柊璁$畻璺緞"),
-    ;
-
-    public Integer id;
-    public String desc;
-
-    ShuttleTaskModeType(Integer id, String desc) {
-        this.id = id;
-        this.desc = desc;
-    }
-
-    public static ShuttleTaskModeType get(Integer id) {
-        if (null == id) {
-            return null;
-        }
-        for (ShuttleTaskModeType type : ShuttleTaskModeType.values()) {
-            if (type.id.equals(id)) {
-                return type;
-            }
-        }
-        return null;
-    }
-
-    public static ShuttleTaskModeType get(ShuttleTaskModeType type) {
-        if (null == type) {
-            return null;
-        }
-        for (ShuttleTaskModeType shuttleTaskModeType : ShuttleTaskModeType.values()) {
-            if (shuttleTaskModeType == type) {
-                return shuttleTaskModeType;
-            }
-        }
-        return null;
-    }
-
-}
diff --git a/src/main/java/com/zy/core/enums/ShuttleTaskNoType.java b/src/main/java/com/zy/core/enums/ShuttleTaskNoType.java
deleted file mode 100644
index 5f50b41..0000000
--- a/src/main/java/com/zy/core/enums/ShuttleTaskNoType.java
+++ /dev/null
@@ -1,48 +0,0 @@
-package com.zy.core.enums;
-
-/**
- * 鍥涘悜绌挎杞︿换鍔″彿绫诲瀷
- */
-public enum ShuttleTaskNoType {
-
-    IN(1, "鍏ュ簱"),
-    OUT(2, "鍑哄簱"),
-    MOVE(3, "绉诲姩"),
-    CHARGE(4, "鍏呯數"),
-    RESET(5, "澶嶄綅"),
-    ;
-
-    public Integer id;
-    public String desc;
-
-    ShuttleTaskNoType(Integer id, String desc) {
-        this.id = id;
-        this.desc = desc;
-    }
-
-    public static ShuttleTaskNoType get(Integer id) {
-        if (null == id) {
-            return null;
-        }
-        for (ShuttleTaskNoType type : ShuttleTaskNoType.values()) {
-            if (type.id.equals(id)) {
-                return type;
-            }
-        }
-        return null;
-    }
-
-    public static ShuttleTaskNoType get(ShuttleTaskNoType type) {
-        if (null == type) {
-            return null;
-        }
-        for (ShuttleTaskNoType type1 : ShuttleTaskNoType.values()) {
-            if (type1 == type) {
-                return type1;
-            }
-        }
-        return null;
-    }
-
-
-}
diff --git a/src/main/java/com/zy/core/enums/SlaveType.java b/src/main/java/com/zy/core/enums/SlaveType.java
index 0412a07..7313e86 100644
--- a/src/main/java/com/zy/core/enums/SlaveType.java
+++ b/src/main/java/com/zy/core/enums/SlaveType.java
@@ -2,11 +2,12 @@
 
 public enum SlaveType {
 
-    Shuttle,
-    Lift,
-    ForkLift,
-    ForkLiftMaster,
-    TrafficControl,
+    Crn,
+    Devp,
+    Barcode,
+    Led,
+    Scale,
+    Rgv
     ;
 
     public static SlaveType findInstance(String s){
diff --git a/src/main/java/com/zy/core/model/ForkLiftSlave.java b/src/main/java/com/zy/core/model/ForkLiftSlave.java
deleted file mode 100644
index 4e5e184..0000000
--- a/src/main/java/com/zy/core/model/ForkLiftSlave.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package com.zy.core.model;
-
-import com.zy.core.Slave;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-
-import java.util.ArrayList;
-import java.util.List;
-
-@EqualsAndHashCode(callSuper = true)
-@Data
-public class ForkLiftSlave extends Slave {
-
-    private Integer rack;
-
-    private Integer slot;
-
-    //涓荤嚎绋媔d(鐢ㄤ簬澶氳澶囧叡鐢ㄤ竴鍧梡lc鎯呭喌)
-    private Integer masterId;
-
-    //鎻愬崌鏈虹珯鐐�
-    private List<Sta> sta = new ArrayList<>();
-
-    //杈撻�佺珯鐐规帓
-    private Integer staRow;
-
-    //杈撻�佺珯鐐瑰垪
-    private Integer staBay;
-
-    @Data
-    public static class Sta {
-
-        // 鎻愬崌鏈虹珯鐐瑰彿
-        private Integer staNo;
-
-        // 灞�
-        private Integer lev;
-
-        // 鎻愬崌鏈哄彿
-        private Integer liftNo;
-
-    }
-
-}
diff --git a/src/main/java/com/zy/core/model/LiftSlave.java b/src/main/java/com/zy/core/model/LiftSlave.java
deleted file mode 100644
index 6070ea0..0000000
--- a/src/main/java/com/zy/core/model/LiftSlave.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package com.zy.core.model;
-
-import com.zy.core.Slave;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-
-import java.util.ArrayList;
-import java.util.List;
-
-@EqualsAndHashCode(callSuper = true)
-@Data
-public class LiftSlave extends Slave {
-
-    //鎻愬崌鏈虹珯鐐�
-    private List<Sta> sta = new ArrayList<>();
-
-    //杈撻�佺珯鐐规帓
-    private Integer staRow;
-
-    //杈撻�佺珯鐐瑰垪
-    private Integer staBay;
-
-    @Data
-    public static class Sta {
-
-        // 鎻愬崌鏈虹珯鐐瑰彿
-        private Integer staNo;
-
-        // 灞�
-        private Integer lev;
-
-        // 鎻愬崌鏈哄彿
-        private Integer liftNo;
-
-    }
-
-}
diff --git a/src/main/java/com/zy/core/model/LiftStation.java b/src/main/java/com/zy/core/model/LiftStation.java
deleted file mode 100644
index e2844f3..0000000
--- a/src/main/java/com/zy/core/model/LiftStation.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package com.zy.core.model;
-
-import lombok.Data;
-
-@Data
-public class LiftStation {
-
-    // 鎻愬崌鏈哄彿
-    private Integer liftNo;
-
-    // 鎻愬崌鏈虹珯鐐瑰彿
-    private Integer siteId;
-
-    // 鎺�
-    private Integer row;
-
-    // 鍒�
-    private Integer bay;
-
-    // 灞�
-    private Integer lev;
-
-}
diff --git a/src/main/java/com/zy/core/model/PythonResult.java b/src/main/java/com/zy/core/model/PythonResult.java
deleted file mode 100644
index 91b4c1f..0000000
--- a/src/main/java/com/zy/core/model/PythonResult.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package com.zy.core.model;
-
-import lombok.Data;
-
-@Data
-public class PythonResult {
-
-    private String start;
-
-    private String target;
-
-    private String path;
-
-    private Double time;
-
-    private Integer calcResult;
-
-}
diff --git a/src/main/java/com/zy/core/model/PythonSimilarityResult.java b/src/main/java/com/zy/core/model/PythonSimilarityResult.java
deleted file mode 100644
index 5ce03c7..0000000
--- a/src/main/java/com/zy/core/model/PythonSimilarityResult.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package com.zy.core.model;
-
-import lombok.Data;
-
-@Data
-public class PythonSimilarityResult {
-
-    private String firstPath;
-
-    private String secondPath;
-
-    private Double similarity;
-
-    private Integer calcResult;
-
-}
diff --git a/src/main/java/com/zy/core/model/ShuttleSlave.java b/src/main/java/com/zy/core/model/ShuttleSlave.java
deleted file mode 100644
index 2635e5f..0000000
--- a/src/main/java/com/zy/core/model/ShuttleSlave.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package com.zy.core.model;
-
-import com.zy.core.Slave;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-
-import java.util.ArrayList;
-import java.util.List;
-
-@EqualsAndHashCode(callSuper = true)
-@Data
-public class ShuttleSlave extends Slave {
-
-    private Integer rack;
-
-    private Integer slot;
-
-    private Boolean demo;
-
-    // 绌挎杞﹀叆搴撶珯鐐�
-    private List<Sta> shuttleInStn = new ArrayList<>();
-
-    // 绌挎杞﹀嚭搴撶珯鐐�
-    private List<Sta> shuttleOutStn = new ArrayList<>();
-
-    @Data
-    public static class Sta {
-
-        // 杈撻�佺嚎plc缂栧彿
-        private Integer devpPlcId;
-
-        // 绌挎杞︾珯鐐圭紪鍙�
-        private Integer staNo;
-
-        // 鎺�
-        private Integer row;
-
-        // 鍒�
-        private Integer bay;
-
-        // 灞�
-        private Integer lev;
-
-    }
-
-}
diff --git a/src/main/java/com/zy/core/model/TrafficControlDataModel.java b/src/main/java/com/zy/core/model/TrafficControlDataModel.java
deleted file mode 100644
index 62ccbad..0000000
--- a/src/main/java/com/zy/core/model/TrafficControlDataModel.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package com.zy.core.model;
-
-import com.zy.common.model.NavigateNode;
-import lombok.Data;
-
-import java.util.List;
-
-@Data
-public class TrafficControlDataModel {
-
-    private Integer shuttleNo;
-
-    private Integer taskNo;
-
-    private List<NavigateNode> nodeList;
-
-    private List<NavigateNode> totalNodeList;
-
-    private Integer applyCount = 0;
-
-    private Boolean taskExist;
-
-    public TrafficControlDataModel() {
-
-    }
-
-    public TrafficControlDataModel(Integer shuttleNo, Integer taskNo, List<NavigateNode> nodeList, List<NavigateNode> totalNodeList) {
-        this.shuttleNo = shuttleNo;
-        this.taskNo = taskNo;
-        this.nodeList = nodeList;
-        this.totalNodeList = totalNodeList;
-    }
-
-}
diff --git a/src/main/java/com/zy/core/model/command/ForkLiftAssignCommand.java b/src/main/java/com/zy/core/model/command/ForkLiftAssignCommand.java
deleted file mode 100644
index 3ff987a..0000000
--- a/src/main/java/com/zy/core/model/command/ForkLiftAssignCommand.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package com.zy.core.model.command;
-
-import lombok.Data;
-
-import java.util.List;
-
-@Data
-public class ForkLiftAssignCommand {
-
-    /**
-     * 鎻愬崌鏈哄彿
-     */
-    private Integer liftNo = 0;
-
-    /**
-     * 浠诲姟鍙�
-     */
-    private Integer taskNo = 0;
-
-    /**
-     * 鍛戒护list
-     */
-    private List<ForkLiftCommand> commands;
-
-    /**
-     * 浣滀笟绫诲瀷
-     */
-    private Integer taskMode = 0;
-
-    /**
-     * 鏄惁鑷姩锛宼rue锛氳嚜鍔ㄦā寮忥紝false锛氭墜鍔ㄦā寮�
-     */
-    private Boolean auto = true;
-
-    /**
-     * 鎻愬崌鏈烘ゼ灞�
-     */
-    private Integer lev;
-
-}
diff --git a/src/main/java/com/zy/core/model/command/ForkLiftCommand.java b/src/main/java/com/zy/core/model/command/ForkLiftCommand.java
deleted file mode 100644
index aba270a..0000000
--- a/src/main/java/com/zy/core/model/command/ForkLiftCommand.java
+++ /dev/null
@@ -1,47 +0,0 @@
-package com.zy.core.model.command;
-
-import lombok.Data;
-
-
-/**
- * 璐у弶鎻愬崌鏈哄懡浠ゆ姤鏂�
- */
-@Data
-public class ForkLiftCommand {
-
-    /**
-     * 鎻愬崌鏈哄彿
-     */
-    private Integer liftNo;
-
-    /**
-     * 浠诲姟鍙�
-     */
-    private Integer taskNo;
-
-    /**
-     * 浠诲姟妯″紡
-     */
-    private Integer mode;
-
-    /**
-     * 鍙栬揣鏁版嵁
-     */
-    private Integer pick;
-
-    /**
-     * 鏀捐揣鏁版嵁
-     */
-    private Integer put;
-
-    /**
-     * 浠诲姟纭
-     */
-    private Integer confirm;
-
-    /**
-     * 鍛戒护鏄惁瀹屾垚,榛樿false鏈畬鎴�
-     */
-    private Boolean complete = false;
-
-}
diff --git a/src/main/java/com/zy/core/model/command/ForkLiftRedisCommand.java b/src/main/java/com/zy/core/model/command/ForkLiftRedisCommand.java
deleted file mode 100644
index d79a724..0000000
--- a/src/main/java/com/zy/core/model/command/ForkLiftRedisCommand.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package com.zy.core.model.command;
-
-import lombok.Data;
-
-import java.io.Serializable;
-
-@Data
-public class ForkLiftRedisCommand implements Serializable {
-
-    //鎻愬崌鏈哄彿
-    private Integer liftNo;
-
-    //宸ヤ綔鍙�
-    private Integer wrkNo;
-
-    //鍛戒护鎵ц姝ュ簭
-    private Integer commandStep;
-
-    //鍛戒护
-    private ForkLiftAssignCommand assignCommand;
-
-}
diff --git a/src/main/java/com/zy/core/model/command/LiftAssignCommand.java b/src/main/java/com/zy/core/model/command/LiftAssignCommand.java
deleted file mode 100644
index aa83b4b..0000000
--- a/src/main/java/com/zy/core/model/command/LiftAssignCommand.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package com.zy.core.model.command;
-
-import lombok.Data;
-
-import java.util.List;
-
-@Data
-public class LiftAssignCommand {
-
-    /**
-     * 鎻愬崌鏈哄彿
-     */
-    private Integer liftNo = 0;
-
-    /**
-     * 浠诲姟鍙�
-     */
-    private Integer taskNo = 0;
-
-    /**
-     * 鍛戒护list
-     */
-    private List<LiftCommand> commands;
-
-    /**
-     * 浣滀笟绫诲瀷
-     */
-    private Integer taskMode = 0;
-
-    /**
-     * 鏄惁鑷姩锛宼rue锛氳嚜鍔ㄦā寮忥紝false锛氭墜鍔ㄦā寮�
-     */
-    private Boolean auto = true;
-
-    /**
-     * 鎻愬崌鏈烘ゼ灞�
-     */
-    private Integer lev;
-
-}
diff --git a/src/main/java/com/zy/core/model/command/LiftCommand.java b/src/main/java/com/zy/core/model/command/LiftCommand.java
deleted file mode 100644
index 44c24a5..0000000
--- a/src/main/java/com/zy/core/model/command/LiftCommand.java
+++ /dev/null
@@ -1,52 +0,0 @@
-package com.zy.core.model.command;
-
-import lombok.Data;
-
-
-/**
- * 鎻愬崌鏈哄懡浠ゆ姤鏂�
- */
-@Data
-public class LiftCommand {
-
-    /**
-     * 鎻愬崌鏈哄彿
-     */
-    private Integer liftNo;
-
-    /**
-     * 浠诲姟鍙�
-     */
-    private Integer taskNo;
-
-    /**
-     * 浠诲姟妯″紡
-     */
-    private Integer mode;
-
-    /**
-     * 鍙栬揣鏁版嵁
-     */
-    private Integer pick;
-
-    /**
-     * 鍙栬揣灞�
-     */
-    private Integer pickLev;
-
-    /**
-     * 鏀捐揣鏁版嵁
-     */
-    private Integer put;
-
-    /**
-     * 鏀捐揣灞�
-     */
-    private Integer putLev;
-
-    /**
-     * 鍛戒护鏄惁瀹屾垚,榛樿false鏈畬鎴�
-     */
-    private Boolean complete = false;
-
-}
diff --git a/src/main/java/com/zy/core/model/command/LiftRedisCommand.java b/src/main/java/com/zy/core/model/command/LiftRedisCommand.java
deleted file mode 100644
index 292bb11..0000000
--- a/src/main/java/com/zy/core/model/command/LiftRedisCommand.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package com.zy.core.model.command;
-
-import lombok.Data;
-
-import java.io.Serializable;
-
-@Data
-public class LiftRedisCommand implements Serializable {
-
-    //鎻愬崌鏈哄彿
-    private Integer liftNo;
-
-    //宸ヤ綔鍙�
-    private Integer wrkNo;
-
-    //鍛戒护鎵ц姝ュ簭
-    private Integer commandStep;
-
-    //鍛戒护
-    private LiftAssignCommand assignCommand;
-
-}
diff --git a/src/main/java/com/zy/core/model/command/NyShuttleHttpCommand.java b/src/main/java/com/zy/core/model/command/NyShuttleHttpCommand.java
deleted file mode 100644
index ce5c165..0000000
--- a/src/main/java/com/zy/core/model/command/NyShuttleHttpCommand.java
+++ /dev/null
@@ -1,56 +0,0 @@
-package com.zy.core.model.command;
-
-import com.zy.common.model.NavigateNode;
-import lombok.Data;
-
-import java.util.List;
-import java.util.Map;
-
-@Data
-public class NyShuttleHttpCommand {
-
-    //娑堟伅绫诲瀷
-    private String msgType;
-
-    //杞﹁締缂栧彿
-    private Integer robotId;
-
-    //璇锋眰娑堟伅
-    private NyRequest request;
-
-    //宸ヤ綔鍙�
-    private Integer taskNo;
-
-    @Data
-    public static class NyRequest {
-
-        //娑堟伅澶�
-        private NyHeader header;
-
-        //娑堟伅浣�
-        private Map<String, Object> body;
-
-        //HTTP璇锋眰澶�
-        @Data
-        public static class NyHeader {
-            //璇锋眰缂栧彿锛屽敮涓�缂栧彿
-            private Integer requestId;
-
-            //鐗堟湰鍙�
-            private String version;
-        }
-
-    }
-
-    /**
-     * 鍛戒护鏄惁瀹屾垚,榛樿false鏈畬鎴�
-     */
-    private Boolean complete = false;
-
-    /**
-     * 琛岃蛋鍛戒护鎵�鍗犵敤鐨勮妭鐐筶ist
-     */
-    private List<NavigateNode> nodes;
-
-
-}
diff --git a/src/main/java/com/zy/core/model/command/ShuttleAssignCommand.java b/src/main/java/com/zy/core/model/command/ShuttleAssignCommand.java
deleted file mode 100644
index b024e6d..0000000
--- a/src/main/java/com/zy/core/model/command/ShuttleAssignCommand.java
+++ /dev/null
@@ -1,89 +0,0 @@
-package com.zy.core.model.command;
-
-import com.zy.common.model.NavigateNode;
-import com.zy.common.model.enums.NavigationMapType;
-import lombok.Data;
-
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.List;
-
-@Data
-public class ShuttleAssignCommand implements Serializable {
-
-    private static final long serialVersionUID = 1L;
-
-    /**
-     * 鍥涘悜绌挎杞﹀彿
-     */
-    private Integer shuttleNo = 0;
-
-    /**
-     * 璁惧ID
-     */
-    private Integer deviceId;
-
-    /**
-     * 浠诲姟鍙�
-     */
-    private Integer taskNo = 0;
-
-    /**
-     * 璁惧宸ヤ綔鍙�
-     */
-    private Integer deviceTaskNo = 0;
-
-    /**
-     * 浣滀笟绫诲瀷 ShuttleTaskModeType
-     */
-    private Integer taskMode = 0;
-
-    /**
-     * 婧愬簱浣�
-     */
-    private String sourceLocNo;
-
-    /**
-     * 鐩爣搴撲綅
-     */
-    private String locNo;
-
-    /**
-     * 鍛戒护list
-     */
-    private List<ShuttleCommand> commands = new ArrayList<>();
-
-    /**
-     * 鏄惁鑷姩锛宼rue锛氳嚜鍔ㄦā寮忥紝false锛氭墜鍔ㄦā寮�
-     */
-    private Boolean auto = true;
-
-
-    /**
-     * 鏄惁涓哄厖鐢典换鍔°�倀rue锛氭槸锛宖alse锛氬惁
-     */
-    private Boolean charge = false;
-
-    /**
-     * 褰撳墠浠诲姟鎵�鍗犵敤鐨勮妭鐐筶ist
-     */
-    private List<NavigateNode> nodes;
-
-    //鍛戒护浣跨敤鐨勫湴鍥剧被鍨�
-    private List<NavigationMapType> mapTypes;
-
-    //灏忚溅绉诲姩杩炵画涓嬪彂鎸囦护
-    private Boolean shuttleMoveCommandsContinuously = false;
-
-    public List<NavigateNode> getNodesDeepCopy() {
-        if (this.nodes == null) {
-            return null;
-        }
-        List<NavigateNode> navigateNodes = new ArrayList<>();
-        for (NavigateNode node : nodes) {
-            navigateNodes.add(node.clone());
-        }
-        return navigateNodes;
-    }
-
-}
\ No newline at end of file
diff --git a/src/main/java/com/zy/core/model/command/ShuttleCommand.java b/src/main/java/com/zy/core/model/command/ShuttleCommand.java
deleted file mode 100644
index 8e420f9..0000000
--- a/src/main/java/com/zy/core/model/command/ShuttleCommand.java
+++ /dev/null
@@ -1,69 +0,0 @@
-package com.zy.core.model.command;
-
-import com.zy.common.model.NavigateNode;
-import com.zy.core.enums.ShuttleCommandModeType;
-import lombok.Data;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * 鍥涘悜绌挎杞﹀懡浠ゆ姤鏂�
- */
-@Data
-public class ShuttleCommand {
-
-    /**
-     * 鍥涘悜绌挎杞﹀彿
-     */
-    private Integer shuttleNo;
-
-    /**
-     * 浠诲姟鍙�
-     */
-    private Integer taskNo = 0;
-
-    /**
-     * 鍛戒护绫诲瀷
-     */
-    private Integer mode = ShuttleCommandModeType.NONE.id;
-
-    /**
-     * 鐩爣搴撲綅
-     */
-    private String targetLocNo;
-
-    /**
-     * 鎶ユ枃鍐呭
-     */
-    private String body;
-
-    /**
-     * 鍛戒护鏄惁瀹屾垚,榛樿false鏈畬鎴�
-     */
-    private Boolean complete = false;
-
-    /**
-     * 琛岃蛋鍛戒护鎵�鍗犵敤鐨勮妭鐐筶ist
-     */
-    private List<NavigateNode> nodes;
-
-    public String getMode$() {
-        if (this.mode == null) {
-            return null;
-        }
-        return ShuttleCommandModeType.get(this.mode).desc;
-    }
-
-    public List<NavigateNode> getNodesDeepCopy() {
-        if (this.nodes == null) {
-            return null;
-        }
-        List<NavigateNode> navigateNodes = new ArrayList<>();
-        for (NavigateNode node : nodes) {
-            navigateNodes.add(node.clone());
-        }
-        return navigateNodes;
-    }
-
-}
diff --git a/src/main/java/com/zy/core/model/command/ShuttleRedisCommand.java b/src/main/java/com/zy/core/model/command/ShuttleRedisCommand.java
deleted file mode 100644
index d197c86..0000000
--- a/src/main/java/com/zy/core/model/command/ShuttleRedisCommand.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package com.zy.core.model.command;
-
-import lombok.Data;
-
-import java.io.Serializable;
-
-/**
- * 鍥涘悜绌挎杞﹀懡浠�-瀛樺偍鍦╮edis
- */
-@Data
-public class ShuttleRedisCommand implements Serializable {
-
-    //鍥涘悜绌挎杞﹀彿
-    private Integer shuttleNo;
-
-    //宸ヤ綔鍙�
-    private Integer wrkNo;
-
-    //鍛戒护鎵ц姝ュ簭
-    private Integer commandStep;
-
-    //鍛戒护
-    private ShuttleAssignCommand assignCommand;
-
-}
diff --git a/src/main/java/com/zy/core/model/param/OperateTrafficControlParam.java b/src/main/java/com/zy/core/model/param/OperateTrafficControlParam.java
deleted file mode 100644
index 0ac1da1..0000000
--- a/src/main/java/com/zy/core/model/param/OperateTrafficControlParam.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package com.zy.core.model.param;
-
-import com.zy.common.model.NavigateNode;
-import com.zy.core.model.TrafficControlDataModel;
-import lombok.Data;
-
-import java.util.List;
-
-@Data
-public class OperateTrafficControlParam {
-
-    private TrafficControlDataModel dataModel;
-
-    private String operaType;
-
-    private Boolean forceCancel;
-
-    private List<NavigateNode> reportNodeList;
-
-}
diff --git a/src/main/java/com/zy/core/model/param/ShuttleMoveLocParam.java b/src/main/java/com/zy/core/model/param/ShuttleMoveLocParam.java
deleted file mode 100644
index 402d32e..0000000
--- a/src/main/java/com/zy/core/model/param/ShuttleMoveLocParam.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package com.zy.core.model.param;
-
-import lombok.Data;
-
-@Data
-public class ShuttleMoveLocParam {
-
-    private Integer shuttleNo;
-
-    private Integer moveType;
-
-    private Integer startX;
-
-    private Integer targetX;
-
-    private Integer startY;
-
-    private Integer targetY;
-
-}
diff --git a/src/main/java/com/zy/core/model/protocol/CrnProtocol.java b/src/main/java/com/zy/core/model/protocol/CrnProtocol.java
new file mode 100644
index 0000000..43d6ec0
--- /dev/null
+++ b/src/main/java/com/zy/core/model/protocol/CrnProtocol.java
@@ -0,0 +1,207 @@
+package com.zy.core.model.protocol;
+
+import com.zy.core.enums.CrnForkPosType;
+import com.zy.core.enums.CrnLiftPosType;
+import com.zy.core.enums.CrnModeType;
+import com.zy.core.enums.CrnStatusType;
+import lombok.Data;
+
+/**
+ * Created by vincent on 2020/8/7
+ */
+@Data
+public class CrnProtocol {
+
+    private Integer crnNo;
+
+    /**
+     * 1 = 鎵嬪姩妯″紡
+     * 2 = 鑷姩妯″紡
+     * 3 = 鐢佃剳妯″紡
+     */
+    public Integer mode;
+
+    public CrnModeType modeType;
+
+    /**
+     * 1 = 鎬ュ仠
+     */
+    public Integer eStop;
+
+    /**
+     * 寮傚父鐮�
+     */
+    public Integer alarm;
+
+    /**
+     * 浠诲姟鍙�
+     */
+    public Integer taskNo = 0;
+
+    /**
+     * 鍫嗗灈鏈哄綋鍓嶇姸鎬�
+     * 0锛氱┖闂诧紝鏃犱换鍔�
+     * 1锛氬彇璐у畾浣嶄腑
+     * 2锛氬彇璐т腑
+     * 3锛氬彇璐у畬鎴愶紝鏀捐揣瀹氫綅涓�
+     * 4锛氭斁璐т腑
+     * 5锛氬洖鍘熺偣涓�
+     * 6锛氬弽鍘熺偣
+     * 7锛氬簱浣嶇Щ浣�
+     * 90锛氫换鍔″畬鎴愮瓑寰匴CS纭
+     * 99锛氭姤璀�
+     */
+    public Integer status;
+
+    /**
+     * 鐘舵�佹灇涓�
+     */
+    public CrnStatusType statusType;
+
+    /**
+     * 鍫嗗灈鏈哄綋鍓嶅垪鍙�
+     */
+    public Integer bay;
+
+    /**
+     * 鍫嗗灈鏈哄綋鍓嶅眰鍙�
+     */
+    public Integer level;
+
+    /**
+     * 褰撳墠璐у弶浣嶇疆
+     * 0 = 璐у弶鍘熶綅
+     * 1 = 璐у弶鍦ㄥ乏渚�
+     * 2 = 璐у弶鍦ㄥ彸渚�
+     */
+    public Integer forkPos;
+
+    public CrnForkPosType forkPosType;
+
+    /**
+     * 褰撳墠杞借揣鍙颁綅缃�
+     * 0 = 涓嬪畾浣�
+     * 1 = 涓婂畾浣�
+     */
+    public Integer liftPos;
+
+    public CrnLiftPosType liftPosType;
+
+    /**
+     * 璧拌鍦ㄥ畾浣�
+     * 0 = 鍦ㄥ畾浣�
+     * 1 = 涓嶅湪瀹氫綅
+     */
+    public Integer walkPos;
+
+    /**
+     * 杞借揣鍙版湁鐗�
+     */
+    public Integer loaded;
+
+    private Integer temp1;
+
+    private Integer temp2;
+
+    private Integer temp3;
+
+    private Integer temp4;
+
+    /**
+     * X琛岃蛋绾块�熷害m/min
+     */
+    private Float xSpeed;
+
+    /**
+     * Y琛岃蛋绾块�熷害m/min
+     */
+    private Float ySpeed;
+
+    /**
+     * Z琛岃蛋绾块�熷害m/min
+     */
+    private Float zSpeed;
+
+    /**
+     * 鍫嗗灈鏈虹疮璁¤蛋琛岃窛绂籯m
+     */
+    public Float xDistance;
+
+    /**
+     * 鍫嗗灈鏈虹疮璁″崌闄嶈窛绂籯m
+     */
+    public Float yDistance;
+
+    /**
+     * 鍫嗗灈鏈虹疮璁¤蛋琛屾椂闀縣
+     */
+    public Float xDuration;
+
+    /**
+     * 鍫嗗灈鏈虹疮璁″崌闄嶆椂闀縣
+     */
+    public Float yDuration;
+
+    /**
+     * 鏈�杩戜竴娆″叆鍑哄簱绫诲瀷
+     *       I:鍏ュ簱
+     *       O:鍑哄簱
+     */
+    private String lastIo = "I";
+
+    /**
+     * 鍫嗗灈鏈烘墍鍦ㄥ贩閬�
+     */
+    private Integer crnLane = 1;
+
+    /**
+     * 鏃ュ織閲囬泦鏃堕棿
+     */
+    private Long deviceDataLog = System.currentTimeMillis();
+
+    /**
+     * 涓婁竴娆℃寚浠や笅鍙戞椂闂�
+     */
+    private Long lastCommandTime = System.currentTimeMillis();
+
+    public void setMode(Integer mode) {
+        this.mode = mode;
+        this.modeType = CrnModeType.get(mode);
+    }
+
+    public void setMode(CrnModeType type) {
+        this.modeType = type;
+        this.mode = CrnModeType.get(type).id;
+    }
+
+    public void setForkPos(Integer forkPos) {
+        this.forkPos = forkPos;
+        this.forkPosType = CrnForkPosType.get(forkPos);
+    }
+
+    public void setForkPos(CrnForkPosType type) {
+        this.forkPosType = type;
+        this.forkPos = CrnForkPosType.get(type).id;
+    }
+
+    public void setLiftPos(Integer liftPos) {
+        this.liftPos = liftPos;
+        this.liftPosType = CrnLiftPosType.get(liftPos);
+    }
+
+    public void setLiftPos(CrnLiftPosType type) {
+        this.liftPosType = type;
+        this.liftPos = CrnLiftPosType.get(type).id;
+    }
+
+    public void setStatus(Integer status){
+        this.status = status;
+        this.statusType = CrnStatusType.get(status);
+    }
+
+    public void setStatus(CrnStatusType type){
+        this.statusType = type;
+        this.status = CrnStatusType.get(type).id;
+    }
+
+}
diff --git a/src/main/java/com/zy/core/model/protocol/ForkLiftProtocol.java b/src/main/java/com/zy/core/model/protocol/ForkLiftProtocol.java
deleted file mode 100644
index 36a6e91..0000000
--- a/src/main/java/com/zy/core/model/protocol/ForkLiftProtocol.java
+++ /dev/null
@@ -1,245 +0,0 @@
-package com.zy.core.model.protocol;
-
-import com.core.common.Cools;
-import com.core.common.SpringUtils;
-import com.zy.asrs.entity.BasLiftErr;
-import com.zy.asrs.service.BasLiftErrService;
-import com.zy.common.utils.RedisUtil;
-import com.zy.core.enums.ForkLiftIoModeType;
-import com.zy.core.enums.ForkLiftProtocolStatusType;
-import com.zy.core.enums.ForkLiftTaskModeType;
-import com.zy.core.enums.RedisKeyType;
-import lombok.Data;
-import lombok.extern.slf4j.Slf4j;
-
-/**
- * 璐у弶鎻愬崌鏈�
- */
-@Slf4j
-@Data
-public class ForkLiftProtocol implements Cloneable {
-
-    /**
-     * 鎻愬崌鏈哄彿
-     */
-    private Integer liftNo;
-
-    /**
-     * 妯″紡0鎵嬪姩 1鍗曟満 2鑱旀満
-     */
-    private Integer model;
-
-    /**
-     * 浠诲姟鍙�
-     */
-    private Integer taskNo = 0;
-
-    /**
-     * PLC浠诲姟鍙�
-     */
-    private Integer wrkNo;
-
-    /**
-     * 浠诲姟鐘舵��
-     */
-    private Integer protocolStatus = ForkLiftProtocolStatusType.NONE.id;
-
-    /**
-     * 浠诲姟鐘舵�佹灇涓�
-     */
-    private ForkLiftProtocolStatusType protocolStatusType = ForkLiftProtocolStatusType.NONE;
-
-    /**
-     * 浠诲姟妯″紡
-     */
-    private Integer taskMode = ForkLiftTaskModeType.NONE.id;
-
-    /**
-     * 浠诲姟妯″紡鏋氫妇
-     */
-    private ForkLiftTaskModeType modeType = ForkLiftTaskModeType.NONE;
-
-    /**
-     * 鍙栬揣鏁版嵁
-     */
-    private Integer pick;
-
-    /**
-     * 鏀捐揣鏁版嵁
-     */
-    private Integer put;
-
-    /**
-     * 鍑哄叆搴撴ā寮�
-     */
-    private Integer iOMode = ForkLiftIoModeType.NONE.id;
-
-    /**
-     * 鍑哄叆搴撴ā寮忔灇涓�
-     */
-    private ForkLiftIoModeType iOModeType = ForkLiftIoModeType.NONE;
-
-    /**
-     * 鏁呴殰鐮�
-     */
-    private Integer errorCode;
-
-    /**
-     * 褰撳墠灞�
-     */
-    private Integer lev;
-
-    /**
-     * 浣滀笟鏍囪
-     */
-    private Boolean pakMk = false;
-
-    /**
-     * 鎸囦护涓嬪彂鏃堕棿
-     */
-    private Long sendTime = 0L;
-
-    /**
-     * 鏃ュ織閲囬泦鏃堕棿
-     */
-    private Long deviceDataLog = System.currentTimeMillis();
-
-    /**
-     * 鎵╁睍瀛楁
-     */
-    private Object extend;
-
-    /**
-     * 璁剧疆浠诲姟鐘舵��
-     */
-    public void setProtocolStatus(Integer status) {
-        this.protocolStatus = status;
-        this.protocolStatusType = ForkLiftProtocolStatusType.get(status);
-    }
-
-    /**
-     * 璁剧疆浠诲姟鐘舵��
-     */
-    public void setProtocolStatus(ForkLiftProtocolStatusType status) {
-        this.protocolStatus = status.id;
-        this.protocolStatusType = status;
-    }
-
-    /**
-     * 璁剧疆浠诲姟妯″紡
-     */
-    public void setTaskMode(Integer taskMode) {
-        this.taskMode = taskMode;
-        this.modeType = ForkLiftTaskModeType.get(taskMode);
-    }
-
-    /**
-     * 璁剧疆浠诲姟妯″紡
-     */
-    public void setMode(ForkLiftTaskModeType taskMode) {
-        this.taskMode = taskMode.id;
-        this.modeType = taskMode;
-    }
-
-    /**
-     * 璁剧疆鍑哄叆搴撴ā寮�
-     */
-    public void setIOMode(Integer ioMode) {
-        this.iOMode = ioMode;
-        this.iOModeType = ForkLiftIoModeType.get(ioMode);
-    }
-
-    /**
-     * 璁剧疆鍑哄叆搴撴ā寮�
-     */
-    public void setIOMode(ForkLiftIoModeType ioMode) {
-        this.iOMode = ioMode.id;
-        this.iOModeType = ioMode;
-    }
-
-    /**
-     * 閿欒鐮�
-     */
-    public String getErrCode$() {
-        if (this.errorCode == null) {
-            return "";
-        }
-        BasLiftErrService basLiftErrService = SpringUtils.getBean(BasLiftErrService.class);
-        BasLiftErr basLiftErr = basLiftErrService.selectById(this.errorCode);
-        if (basLiftErr == null) {
-            return String.valueOf(this.errorCode);
-        }
-        return basLiftErr.getErrName();
-    }
-
-    public Integer getTaskNo() {
-        RedisUtil redisUtil = SpringUtils.getBean(RedisUtil.class);
-        if (null != redisUtil) {
-            Object o = redisUtil.get(RedisKeyType.FORK_LIFT_FLAG.key + this.liftNo);
-            if (!Cools.isEmpty(o)) {
-                this.taskNo = Integer.parseInt(String.valueOf(o));
-            }
-        }
-        return this.taskNo == null ? 0 : this.taskNo;
-    }
-
-    public synchronized void setSyncTaskNo(Integer taskNo) {
-        RedisUtil redisUtil = SpringUtils.getBean(RedisUtil.class);
-        if (null != redisUtil) {
-            redisUtil.set(RedisKeyType.FORK_LIFT_FLAG.key + this.liftNo, taskNo);
-            this.taskNo = taskNo;
-        }
-    }
-
-    public String getModel$() {
-        if (this.model == null) {
-            return "";
-        }
-
-        String name = "";
-        if (this.model == 0) {
-            name = "鎵嬪姩";
-        } else if (this.model == 1) {
-            name = "鍗曟満";
-        }else if (this.model == 2) {
-            name = "鑱旀満";
-        }
-        return name;
-    }
-
-    public String getProtocolStatus$() {
-        if (this.protocolStatus == null) {
-            return "";
-        }
-
-        return ForkLiftProtocolStatusType.get(this.protocolStatus).desc;
-    }
-
-    public String getTaskMode$() {
-        if (this.taskMode == null) {
-            return "";
-        }
-
-        return ForkLiftTaskModeType.get(this.taskMode).desc;
-    }
-
-    public String getIOMode$() {
-        if (this.iOMode == null) {
-            return "";
-        }
-
-        return ForkLiftIoModeType.get(this.iOMode).desc;
-    }
-
-    @Override
-    public ForkLiftProtocol clone() {
-        try {
-            return (ForkLiftProtocol) super.clone();
-        } catch (CloneNotSupportedException e) {
-            e.printStackTrace();
-        }
-        return null;
-    }
-
-
-}
diff --git a/src/main/java/com/zy/core/model/protocol/ForkLiftStaProtocol.java b/src/main/java/com/zy/core/model/protocol/ForkLiftStaProtocol.java
deleted file mode 100644
index 5587ab2..0000000
--- a/src/main/java/com/zy/core/model/protocol/ForkLiftStaProtocol.java
+++ /dev/null
@@ -1,53 +0,0 @@
-package com.zy.core.model.protocol;
-
-import lombok.Data;
-import lombok.extern.slf4j.Slf4j;
-
-/**
- * 璐у弶鎻愬崌鏈虹珯鐐�
- */
-@Slf4j
-@Data
-public class ForkLiftStaProtocol {
-
-    /**
-     * 绔欑偣鍙�
-     */
-    private Integer siteId;
-
-    /**
-     * 鏈夋墭鐩�
-     */
-    private Boolean hasTray;
-
-    /**
-     * 鏈夊皬杞�
-     */
-    private Boolean hasCar;
-
-    /**
-     * 浠诲姟鍙�
-     */
-    private Short taskNo;
-
-    /**
-     * 鐩爣绔�
-     */
-    private Integer staNo;
-
-    /**
-     * 灞�
-     */
-    private Integer lev;
-
-    /**
-     * 绔欑偣搴撲綅鍙�
-     */
-    private String locNo;
-
-    /**
-     * 鎻愬崌鏈哄彿
-     */
-    private Integer liftNo;
-
-}
diff --git a/src/main/java/com/zy/core/model/protocol/LiftProtocol.java b/src/main/java/com/zy/core/model/protocol/LiftProtocol.java
deleted file mode 100644
index 08041ee..0000000
--- a/src/main/java/com/zy/core/model/protocol/LiftProtocol.java
+++ /dev/null
@@ -1,262 +0,0 @@
-package com.zy.core.model.protocol;
-
-import com.core.common.Cools;
-import com.core.common.SpringUtils;
-import com.zy.asrs.entity.BasLiftErr;
-import com.zy.asrs.service.BasLiftErrService;
-import com.zy.common.utils.RedisUtil;
-import com.zy.core.enums.*;
-import lombok.Data;
-import lombok.extern.slf4j.Slf4j;
-
-/**
- * 鎻愬崌鏈�
- */
-@Slf4j
-@Data
-public class LiftProtocol implements Cloneable {
-
-    /**
-     * 鎻愬崌鏈哄彿
-     */
-    private Integer liftNo;
-
-    /**
-     * 妯″紡0鎵嬪姩 1鍗曟満 2鑱旀満
-     */
-    private Integer model;
-
-    /**
-     * 浠诲姟鍙�
-     */
-    private Integer taskNo = 0;
-
-    /**
-     * PLC浠诲姟鍙�
-     */
-    private Integer plcTaskNo;
-
-    /**
-     * 浠诲姟鐘舵��
-     */
-    private Integer protocolStatus = LiftProtocolStatusType.IDLE.id;
-
-    /**
-     * 浠诲姟鐘舵�佹灇涓�
-     */
-    private LiftProtocolStatusType protocolStatusType = LiftProtocolStatusType.IDLE;
-
-    /**
-     * 璁惧鐘舵��
-     */
-    private Integer deviceStatus = LiftDeviceStatusType.NONE.id;
-
-    /**
-     * 璁惧鐘舵�佹灇涓�
-     */
-    private LiftDeviceStatusType deviceStatusType = LiftDeviceStatusType.NONE;
-
-    /**
-     * 浠诲姟妯″紡
-     */
-    private Integer taskMode = LiftTaskModeType.NONE.id;
-
-    /**
-     * 浠诲姟妯″紡鏋氫妇
-     */
-    private LiftTaskModeType modeType = LiftTaskModeType.NONE;
-
-    /**
-     * 鍙栬揣鏁版嵁
-     */
-    private Integer pick;
-
-    /**
-     * 鏀捐揣鏁版嵁
-     */
-    private Integer put;
-
-    /**
-     * 鏈夋墭鐩�
-     */
-    private Boolean hasTray;
-
-    /**
-     * 鏈夊皬杞�
-     */
-    private Boolean hasCar;
-
-    /**
-     * 鍑哄叆搴撴ā寮�
-     */
-    private Integer iOMode = LiftIoModeType.NONE.id;
-
-    /**
-     * 鍑哄叆搴撴ā寮忔灇涓�
-     */
-    private LiftIoModeType iOModeType = LiftIoModeType.NONE;
-
-    /**
-     * 鏁呴殰鐮�
-     */
-    private Integer errorCode;
-
-    /**
-     * 褰撳墠灞�
-     */
-    private Integer lev;
-
-    /**
-     * 浣滀笟鏍囪
-     */
-    private Boolean pakMk = false;
-
-    /**
-     * 鎸囦护涓嬪彂鏃堕棿
-     */
-    private Long sendTime = 0L;
-
-    /**
-     * 鏃ュ織閲囬泦鏃堕棿
-     */
-    private Long deviceDataLog = System.currentTimeMillis();
-
-    /**
-     * 鎵╁睍瀛楁
-     */
-    private Object extend;
-
-    /**
-     * 璁剧疆浠诲姟鐘舵��
-     */
-    public void setProtocolStatus(Integer status) {
-        this.protocolStatus = status;
-        this.protocolStatusType = LiftProtocolStatusType.get(status);
-    }
-
-    /**
-     * 璁剧疆浠诲姟鐘舵��
-     */
-    public void setProtocolStatus(LiftProtocolStatusType status) {
-        this.protocolStatus = status.id;
-        this.protocolStatusType = status;
-    }
-
-    /**
-     * 璁剧疆浠诲姟妯″紡
-     */
-    public void setTaskMode(Integer taskMode) {
-        this.taskMode = taskMode;
-        this.modeType = LiftTaskModeType.get(taskMode);
-    }
-
-    /**
-     * 璁剧疆浠诲姟妯″紡
-     */
-    public void setMode(LiftTaskModeType taskMode) {
-        this.taskMode = taskMode.id;
-        this.modeType = taskMode;
-    }
-
-    /**
-     * 璁剧疆鍑哄叆搴撴ā寮�
-     */
-    public void setIOMode(Integer ioMode) {
-        this.iOMode = ioMode;
-        this.iOModeType = LiftIoModeType.get(ioMode);
-    }
-
-    /**
-     * 璁剧疆鍑哄叆搴撴ā寮�
-     */
-    public void setIOMode(LiftIoModeType ioMode) {
-        this.iOMode = ioMode.id;
-        this.iOModeType = ioMode;
-    }
-
-    /**
-     * 閿欒鐮�
-     */
-    public String getErrCode$() {
-        if (this.errorCode == null) {
-            return "";
-        }
-        BasLiftErrService basLiftErrService = SpringUtils.getBean(BasLiftErrService.class);
-        BasLiftErr basLiftErr = basLiftErrService.selectById(this.errorCode);
-        if (basLiftErr == null) {
-            return String.valueOf(this.errorCode);
-        }
-        return basLiftErr.getErrName();
-    }
-
-    public Integer getTaskNo() {
-        RedisUtil redisUtil = SpringUtils.getBean(RedisUtil.class);
-        if (null != redisUtil) {
-            Object o = redisUtil.get(RedisKeyType.LIFT_FLAG.key + this.liftNo);
-            if (!Cools.isEmpty(o)) {
-                this.taskNo = Integer.parseInt(String.valueOf(o));
-            }
-        }
-        return this.taskNo == null ? 0 : this.taskNo;
-    }
-
-    public String getModel$() {
-        if (this.model == null) {
-            return "";
-        }
-
-        String name = "";
-        if (this.model == 0) {
-            name = "鎵嬪姩";
-        } else if (this.model == 1) {
-            name = "鍗曟満";
-        }else if (this.model == 2) {
-            name = "鑱旀満";
-        }
-        return name;
-    }
-
-    public String getProtocolStatus$() {
-        if (this.protocolStatus == null) {
-            return "";
-        }
-
-        return LiftProtocolStatusType.get(this.protocolStatus).desc;
-    }
-
-    public String getDeviceStatus$() {
-        if (this.deviceStatus == null) {
-            return "";
-        }
-
-        return LiftDeviceStatusType.get(this.deviceStatus).desc;
-    }
-
-    public String getTaskMode$() {
-        if (this.taskMode == null) {
-            return "";
-        }
-
-        return LiftTaskModeType.get(this.taskMode).desc;
-    }
-
-    public String getIOMode$() {
-        if (this.iOMode == null) {
-            return "";
-        }
-
-        return LiftIoModeType.get(this.iOMode).desc;
-    }
-
-    @Override
-    public LiftProtocol clone() {
-        try {
-            return (LiftProtocol) super.clone();
-        } catch (CloneNotSupportedException e) {
-            e.printStackTrace();
-        }
-        return null;
-    }
-
-
-}
diff --git a/src/main/java/com/zy/core/model/protocol/LiftStaProtocol.java b/src/main/java/com/zy/core/model/protocol/LiftStaProtocol.java
deleted file mode 100644
index ddf2c88..0000000
--- a/src/main/java/com/zy/core/model/protocol/LiftStaProtocol.java
+++ /dev/null
@@ -1,87 +0,0 @@
-package com.zy.core.model.protocol;
-
-import lombok.Data;
-import lombok.extern.slf4j.Slf4j;
-
-/**
- * 鎻愬崌鏈鸿緭閫佺珯鐐�
- */
-@Slf4j
-@Data
-public class LiftStaProtocol {
-
-    /**
-     * 绔欑偣鍙�
-     */
-    private Integer siteId;
-
-    /**
-     * 妯″紡 1:鑷姩 0:鎵嬪姩
-     */
-    private Boolean model;
-
-    /**
-     * 蹇欓棽
-     */
-    private Boolean busy;
-
-    /**
-     * 鏈夋墭鐩�
-     */
-    private Boolean hasTray;
-
-    /**
-     * 鏈夊皬杞�
-     */
-    private Boolean hasCar;
-
-    /**
-     * 璁惧鏁呴殰
-     */
-    private Boolean deviceError;
-
-    /**
-     * 浠诲姟鍙�
-     */
-    private Integer taskNo;
-
-    /**
-     * 鏉$爜
-     */
-    private String barcode;
-
-    /**
-     * 鐩爣浣嶇疆
-     */
-    private Integer staNo;
-
-    /**
-     * 灞�
-     */
-    private Integer lev;
-
-    /**
-     * 绔欑偣搴撲綅鍙�
-     */
-    private String locNo;
-
-    /**
-     * 鎻愬崌鏈哄彿
-     */
-    private Integer liftNo;
-
-    public boolean getHasCar() {
-        if (this.hasCar == null) {
-            return false;
-        }
-        return this.hasCar;
-    }
-
-    public boolean getHasTray() {
-        if (this.hasTray == null) {
-            return false;
-        }
-        return this.hasTray;
-    }
-
-}
diff --git a/src/main/java/com/zy/core/model/protocol/ShuttleProtocol.java b/src/main/java/com/zy/core/model/protocol/ShuttleProtocol.java
deleted file mode 100644
index 126af7d..0000000
--- a/src/main/java/com/zy/core/model/protocol/ShuttleProtocol.java
+++ /dev/null
@@ -1,387 +0,0 @@
-package com.zy.core.model.protocol;
-
-import com.core.common.Cools;
-import com.core.common.SpringUtils;
-import com.zy.asrs.entity.BasShuttleErr;
-import com.zy.asrs.entity.LocMast;
-import com.zy.asrs.service.BasShuttleErrService;
-import com.zy.asrs.service.LocMastService;
-import com.zy.common.model.NavigateNode;
-import com.zy.common.utils.RedisUtil;
-import com.zy.core.enums.RedisKeyType;
-import com.zy.core.enums.ShuttleProtocolStatusType;
-import lombok.Data;
-import lombok.extern.slf4j.Slf4j;
-
-import java.util.HashMap;
-import java.util.List;
-
-/**
- * 鍥涘悜绌挎杞�
- */
-@Slf4j
-@Data
-public class ShuttleProtocol implements Cloneable {
-
-    //**********************蹇呴』瀛樺湪灞炴��**********************
-    /**
-     * 鍥涘悜绌挎杞﹀彿
-     */
-    private Integer shuttleNo;
-
-    /**
-     * 浠诲姟鍙�
-     */
-    private Integer taskNo;
-
-    /**
-     * 褰撳墠灏忚溅鐘舵�侊紙鍐呴儴鑷垜缁存姢锛�
-     */
-    private Integer protocolStatus;
-
-    /**
-     * 褰撳墠灏忚溅浣滀笟鐘舵�佹灇涓�
-     */
-    private ShuttleProtocolStatusType protocolStatusType;
-
-    /**
-     * 婧愬簱浣�
-     */
-    private String sourceLocNo;
-
-    /**
-     * 鐩爣搴撲綅
-     */
-    private String locNo;
-
-    /**
-     * 灏忚溅璁惧鐘舵��0:蹇欑 1:绌洪棽
-     */
-    private Integer deviceStatus;
-
-    /**
-     * 灏忚溅妯″紡锛�0锛氭墜鍔� 1锛氳嚜鍔�
-     */
-    private Integer mode;
-
-    /**
-     * 褰撳墠浜岀淮鐮�
-     * 0涓虹┖
-     */
-    private String currentCode;
-
-    /**
-     * 鐢垫睜鐢甸噺
-     */
-    private String batteryPower;
-
-    /**
-     * 閿欒缂栧彿
-     */
-    private String errorCode;
-
-
-    //**********************闈炲繀椤诲睘鎬э紝瀹為檯浣跨敤涓彲鑳藉瓨鍦ㄧ┖鍊�**********************
-
-    /**
-     * 鐢垫睜娓╁害
-     */
-    private String batteryTemp;
-
-    /**
-     * 鏄惁椤跺崌
-     */
-    private Boolean hasLift;
-
-    /**
-     * 鏄惁鏈夋墭鐩�
-     */
-    private Boolean hasPallet;
-
-    /**
-     * 琛岄┒鏂瑰悜
-     */
-    private String runDirection;
-
-    /**
-     * 鏄惁涓哄厖鐢电姸鎬�
-     */
-    private Boolean hasCharge;
-
-    /**
-     * 鐢垫睜鐢靛帇
-     */
-    private Integer batteryVoltage;
-
-    /**
-     * 杩愯閫熷害
-     */
-    private Integer speed;
-
-
-    //**********************绯荤粺鑷韩鎵�闇�灞炴��**********************
-    /**
-     * 浣滀笟鏍囪 false琛ㄧず姝e湪浣滀笟
-     */
-    private Boolean pakMk = true;
-
-    /**
-     * 璺戝簱鐘舵��
-     */
-    private Boolean moveLoc = false;
-
-    /**
-     * 璺戝簱绫诲瀷锛�0:璺戣建閬擄紝1锛氳窇搴撲綅
-     */
-    private Integer moveType = 0;
-
-    /**
-     * 璺戝簱X璧风偣
-     */
-    private Integer xStart = 0;
-
-    /**
-     * 璺戝簱X缁堢偣
-     */
-    private Integer xTarget = 0;
-
-    /**
-     * 璺戝簱X褰撳墠鐐逛綅
-     */
-    private Integer xCurrent = 0;
-
-    /**
-     * 璺戝簱Y璧风偣
-     */
-    private Integer yStart = 0;
-
-    /**
-     * 璺戝簱Y缁堢偣
-     */
-    private Integer yTarget = 0;
-
-    /**
-     * 璺戝簱Y褰撳墠鐐逛綅
-     */
-    private Integer yCurrent = 0;
-
-    /**
-     * 婕旂ず妯″紡
-     */
-    private Boolean demo = false;
-
-    /**
-     * 鏃ュ織閲囬泦鏃堕棿
-     */
-    private Long deviceDataLog = System.currentTimeMillis();
-
-    /**
-     * 鎸囦护涓嬪彂鏃堕棿
-     */
-    private Long sendTime = 0L;
-
-    /**
-     * 鏈�杩戜竴娆″湪绾挎椂闂�
-     */
-    private Long lastOnlineTime = System.currentTimeMillis();
-
-    /**
-     * 灏忚溅绌洪棽鏃堕棿
-     */
-    private Long idleTime = System.currentTimeMillis();
-
-    /**
-     * 鎵╁睍瀛楁
-     */
-    private Object extend;
-
-    /**
-     * 绯荤粺娑堟伅
-     */
-    private String systemMsg;
-
-    /**
-     * 浜ら�氱鍒�
-     */
-    private Boolean trafficControl = false;
-
-    /**
-     * 浜ら�氱鍒禢odes
-     */
-    private List<NavigateNode> trafficControlNodes = null;
-
-    public String getProtocolStatus$() {
-        if (this.protocolStatusType == null) {
-            return "";
-        }
-        return this.protocolStatusType.desc;
-    }
-
-    /**
-     * 璁剧疆灏忚溅鐘舵��
-     */
-    public void setProtocolStatus(Integer status) {
-        this.protocolStatus = status;
-        this.protocolStatusType = ShuttleProtocolStatusType.get(status);
-    }
-
-    /**
-     * 璁剧疆灏忚溅鐘舵��
-     */
-    public void setProtocolStatus(ShuttleProtocolStatusType status) {
-        this.protocolStatus = status.id;
-        this.protocolStatusType = status;
-    }
-
-    public Integer getTaskNo() {
-        RedisUtil redisUtil = null;
-        try {
-            redisUtil = SpringUtils.getBean(RedisUtil.class);
-        }catch (Exception e) {}
-        if (null != redisUtil) {
-            Object o = redisUtil.get(RedisKeyType.SHUTTLE_FLAG.key + this.shuttleNo);
-            if (!Cools.isEmpty(o)) {
-                this.taskNo = Integer.parseInt(String.valueOf(o));
-            }
-        }
-        return this.taskNo == null ? 0 : this.taskNo;
-    }
-
-    @Override
-    public ShuttleProtocol clone() {
-        try {
-            return (ShuttleProtocol) super.clone();
-        } catch (CloneNotSupportedException e) {
-            e.printStackTrace();
-        }
-        return null;
-    }
-
-    //閫氳繃褰撳墠浜岀淮鐮佽幏鍙栧綋鍓嶅簱浣嶅彿
-    public String getCurrentLocNo() {
-        LocMastService locMastService = null;
-        try {
-            locMastService = SpringUtils.getBean(LocMastService.class);
-        }catch (Exception e) {}
-        if (locMastService == null) {
-            return null;
-        }
-        //婧愬簱浣�(灏忚溅褰撳墠浣嶇疆)
-        LocMast currentLocMast = locMastService.queryByQrCode(this.currentCode);
-        if (currentLocMast == null) {
-            return null;
-        }
-        return currentLocMast.getLocNo();
-    }
-
-    public String getStatusErrorCode$() {
-        BasShuttleErrService basShuttleErrService = null;
-        try {
-            basShuttleErrService = SpringUtils.getBean(BasShuttleErrService.class);
-        }catch (Exception e) {}
-        if (basShuttleErrService == null) {
-            return "";
-        }
-        if (this.errorCode == null) {
-            return "";
-        }
-        BasShuttleErr basShuttleErr = basShuttleErrService.queryByCode(Integer.valueOf(this.errorCode));
-        if (basShuttleErr == null) {
-            return this.errorCode;
-        }
-        return basShuttleErr.getErrName();
-    }
-
-    public String getMode$() {
-        if (this.mode == null) {
-            return "";
-        }
-        if (this.mode == 0) {
-            return "鎵嬪姩";
-        } else if (this.mode == 1) {
-            return "鑷姩";
-        }
-
-        return "";
-    }
-
-    public String getDeviceStatus$() {
-        if (this.deviceStatus == null) {
-            return "";
-        }
-        if (this.deviceStatus == 0) {
-            return "蹇欑";
-        } else if (this.deviceStatus == 1) {
-            return "绌洪棽";
-        }
-
-        return "";
-    }
-
-    public String getHasLift$() {
-        if (this.hasLift == null) {
-            return "";
-        }
-
-        return this.hasLift ? "Y" : "N";
-    }
-
-    public String getHasCharge$() {
-        if (this.hasCharge == null) {
-            return "";
-        }
-
-        return this.hasCharge ? "Y" : "N";
-    }
-
-    public String getHasPallet$() {
-        if (this.hasPallet == null) {
-            return "";
-        }
-
-        return this.hasPallet ? "Y" : "N";
-    }
-
-    public String getPakMk$() {
-        if (this.pakMk == null) {
-            return "";
-        }
-
-        return this.pakMk ? "Y" : "N";
-    }
-
-    public String getDemo$() {
-        if (this.demo == null) {
-            return "";
-        }
-
-        return this.demo ? "Y" : "N";
-    }
-
-    public HashMap<String, Object> getPoint() {
-        HashMap<String, Object> map = new HashMap<>();
-        LocMastService locMastService = null;
-        try {
-            locMastService = SpringUtils.getBean(LocMastService.class);
-        }catch (Exception e) {}
-        if (locMastService == null) {
-            return map;
-        }
-
-        if (this.currentCode == null) {
-            return map;
-        }
-
-        //婧愬簱浣�(灏忚溅褰撳墠浣嶇疆)
-        LocMast currentLocMast = locMastService.queryByQrCode(this.currentCode);
-        if (currentLocMast == null) {
-            return map;
-        }
-
-        map.put("x", currentLocMast.getRow1());
-        map.put("y", currentLocMast.getBay1());
-        map.put("z", currentLocMast.getLev1());
-        return map;
-    }
-
-}
diff --git a/src/main/java/com/zy/core/properties/SlaveProperties.java b/src/main/java/com/zy/core/properties/SlaveProperties.java
deleted file mode 100644
index 74910e7..0000000
--- a/src/main/java/com/zy/core/properties/SlaveProperties.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package com.zy.core.properties;
-
-import com.zy.core.Slave;
-import com.zy.core.model.*;
-import lombok.Data;
-import org.springframework.boot.context.properties.ConfigurationProperties;
-import org.springframework.context.annotation.Configuration;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Created by vincent on 2020/8/4
- */
-@Data
-@Configuration
-@ConfigurationProperties(prefix = "wcs-slave")
-public class SlaveProperties {
-
-    private boolean doubleDeep;
-
-    private List<Integer> doubleLocs = new ArrayList<>();
-
-    private int groupCount;
-
-    private List<ShuttleSlave> shuttle = new ArrayList<>();
-
-    private List<ForkLiftSlave> forkLift = new ArrayList<>();
-
-    private List<ForkLiftSlave> forkLiftMaster = new ArrayList<>();
-
-}
diff --git a/src/main/java/com/zy/core/task/DeviceLogScheduler.java b/src/main/java/com/zy/core/task/DeviceLogScheduler.java
new file mode 100644
index 0000000..f9fa68a
--- /dev/null
+++ b/src/main/java/com/zy/core/task/DeviceLogScheduler.java
@@ -0,0 +1,69 @@
+package com.zy.core.task;
+
+import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.zy.asrs.entity.DeviceConfig;
+import com.zy.asrs.entity.DeviceDataLog;
+import com.zy.asrs.service.DeviceConfigService;
+import com.zy.asrs.service.DeviceDataLogService;
+import com.zy.core.cache.SlaveConnection;
+import com.zy.core.enums.SlaveType;
+import com.zy.core.thread.ShuttleThread;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import java.util.Date;
+import java.util.List;
+
+@Slf4j
+@Component
+public class DeviceLogScheduler {
+
+    @Autowired
+    private DeviceConfigService deviceConfigService;
+    @Autowired
+    private DeviceDataLogService deviceDataLogService;
+
+    @Scheduled(cron = "0/3 * * * * ? ")
+    public void execute() {
+//        List<DeviceConfig> shuttleList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>()
+//                .eq("device_type", String.valueOf(SlaveType.Shuttle)));
+//        for (DeviceConfig deviceConfig : shuttleList) {
+//            ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, deviceConfig.getDeviceNo());
+//            if(shuttleThread == null){
+//                continue;
+//            }
+//
+//            ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
+//            if (shuttleProtocol == null) {
+//                continue;
+//            }
+//
+//            if (System.currentTimeMillis() - shuttleProtocol.getDeviceDataLog() > 500) {
+//                if (shuttleThread.getOriginDeviceData() != null) {
+//                    //閲囬泦鏃堕棿瓒呰繃5s锛屼繚瀛樹竴娆℃暟鎹褰�
+//
+//                    //绂荤嚎涓嶅仛鏃ュ織瀛樺偍
+//                    if (shuttleProtocol.getProtocolStatusType().equals(ShuttleProtocolStatusType.OFFLINE)) {
+//                        continue;
+//                    }
+//
+//                    //淇濆瓨鏁版嵁璁板綍
+//                    DeviceDataLog deviceDataLog = new DeviceDataLog();
+//                    deviceDataLog.setOriginData(JSON.toJSONString(shuttleThread.getOriginDeviceData()));
+//                    deviceDataLog.setWcsData(JSON.toJSONString(shuttleProtocol));
+//                    deviceDataLog.setType(String.valueOf(SlaveType.Shuttle));
+//                    deviceDataLog.setDeviceNo(deviceConfig.getDeviceNo());
+//                    deviceDataLog.setCreateTime(new Date());
+//                    deviceDataLogService.insert(deviceDataLog);
+//
+//                    //鏇存柊閲囬泦鏃堕棿
+//                    shuttleThread.updateDeviceDataLogTime(System.currentTimeMillis());
+//                }
+//            }
+//        }
+    }
+
+}
diff --git a/src/main/java/com/zy/core/task/ShuttleDemoScheduler.java b/src/main/java/com/zy/core/task/ShuttleDemoScheduler.java
deleted file mode 100644
index b22cd09..0000000
--- a/src/main/java/com/zy/core/task/ShuttleDemoScheduler.java
+++ /dev/null
@@ -1,47 +0,0 @@
-package com.zy.core.task;
-
-import com.baomidou.mybatisplus.mapper.EntityWrapper;
-import com.zy.asrs.entity.DeviceConfig;
-import com.zy.asrs.service.DeviceConfigService;
-import com.zy.core.action.ShuttleAction;
-import com.zy.core.enums.SlaveType;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.scheduling.annotation.Scheduled;
-import org.springframework.stereotype.Component;
-
-import java.util.List;
-
-@Component
-@Slf4j
-public class ShuttleDemoScheduler {
-
-    @Autowired
-    private DeviceConfigService deviceConfigService;
-    @Autowired
-    private ShuttleAction shuttleAction;
-
-    @Scheduled(cron = "0/3 * * * * ? ")
-    public synchronized void execute() {
-        List<DeviceConfig> shuttleList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>()
-                .eq("device_type", String.valueOf(SlaveType.Shuttle)));
-        for (DeviceConfig device : shuttleList) {
-            shuttleAction.demo(device.getDeviceNo());
-        }
-    }
-
-    @Scheduled(cron = "0/3 * * * * ? ")
-    public synchronized void executeCargoMove() {
-        shuttleAction.demoModeCargoMove();
-    }
-
-    @Scheduled(cron = "0/3 * * * * ? ")
-    public synchronized void executeRunLoc() {
-        List<DeviceConfig> shuttleList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>()
-                .eq("device_type", String.valueOf(SlaveType.Shuttle)));
-        for (DeviceConfig device : shuttleList) {
-            shuttleAction.demoModeRunLoc(device.getDeviceNo());
-        }
-    }
-
-}
diff --git a/src/main/java/com/zy/core/task/ShuttleDeviceLogScheduler.java b/src/main/java/com/zy/core/task/ShuttleDeviceLogScheduler.java
deleted file mode 100644
index b4f0806..0000000
--- a/src/main/java/com/zy/core/task/ShuttleDeviceLogScheduler.java
+++ /dev/null
@@ -1,71 +0,0 @@
-package com.zy.core.task;
-
-import com.alibaba.fastjson.JSON;
-import com.baomidou.mybatisplus.mapper.EntityWrapper;
-import com.zy.asrs.entity.DeviceConfig;
-import com.zy.asrs.entity.DeviceDataLog;
-import com.zy.asrs.service.DeviceConfigService;
-import com.zy.asrs.service.DeviceDataLogService;
-import com.zy.core.cache.SlaveConnection;
-import com.zy.core.enums.ShuttleProtocolStatusType;
-import com.zy.core.enums.SlaveType;
-import com.zy.core.model.protocol.ShuttleProtocol;
-import com.zy.core.thread.ShuttleThread;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.scheduling.annotation.Scheduled;
-import org.springframework.stereotype.Component;
-
-import java.util.Date;
-import java.util.List;
-
-@Slf4j
-@Component
-public class ShuttleDeviceLogScheduler {
-
-    @Autowired
-    private DeviceConfigService deviceConfigService;
-    @Autowired
-    private DeviceDataLogService deviceDataLogService;
-
-    @Scheduled(cron = "0/3 * * * * ? ")
-    public void execute() {
-        List<DeviceConfig> shuttleList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>()
-                .eq("device_type", String.valueOf(SlaveType.Shuttle)));
-        for (DeviceConfig deviceConfig : shuttleList) {
-            ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, deviceConfig.getDeviceNo());
-            if(shuttleThread == null){
-                continue;
-            }
-
-            ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
-            if (shuttleProtocol == null) {
-                continue;
-            }
-
-            if (System.currentTimeMillis() - shuttleProtocol.getDeviceDataLog() > 500) {
-                if (shuttleThread.getOriginDeviceData() != null) {
-                    //閲囬泦鏃堕棿瓒呰繃5s锛屼繚瀛樹竴娆℃暟鎹褰�
-
-                    //绂荤嚎涓嶅仛鏃ュ織瀛樺偍
-                    if (shuttleProtocol.getProtocolStatusType().equals(ShuttleProtocolStatusType.OFFLINE)) {
-                        continue;
-                    }
-
-                    //淇濆瓨鏁版嵁璁板綍
-                    DeviceDataLog deviceDataLog = new DeviceDataLog();
-                    deviceDataLog.setOriginData(JSON.toJSONString(shuttleThread.getOriginDeviceData()));
-                    deviceDataLog.setWcsData(JSON.toJSONString(shuttleProtocol));
-                    deviceDataLog.setType(String.valueOf(SlaveType.Shuttle));
-                    deviceDataLog.setDeviceNo(deviceConfig.getDeviceNo());
-                    deviceDataLog.setCreateTime(new Date());
-                    deviceDataLogService.insert(deviceDataLog);
-
-                    //鏇存柊閲囬泦鏃堕棿
-                    shuttleThread.updateDeviceDataLogTime(System.currentTimeMillis());
-                }
-            }
-        }
-    }
-
-}
diff --git a/src/main/java/com/zy/core/task/ShuttleExecuteScheduler.java b/src/main/java/com/zy/core/task/ShuttleExecuteScheduler.java
deleted file mode 100644
index df063f7..0000000
--- a/src/main/java/com/zy/core/task/ShuttleExecuteScheduler.java
+++ /dev/null
@@ -1,86 +0,0 @@
-package com.zy.core.task;
-
-import com.baomidou.mybatisplus.mapper.EntityWrapper;
-import com.zy.asrs.entity.DeviceConfig;
-import com.zy.asrs.service.DeviceConfigService;
-import com.zy.common.utils.RedisUtil;
-import com.zy.core.News;
-import com.zy.core.action.ShuttleAction;
-import com.zy.core.enums.RedisKeyType;
-import com.zy.core.enums.SlaveType;
-import com.zy.core.utils.TimeoutExecutor;
-import org.springframework.scheduling.annotation.Scheduled;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.concurrent.TimeUnit;
-
-public class ShuttleExecuteScheduler implements Runnable {
-
-    private ShuttleAction shuttleAction;
-    private DeviceConfigService deviceConfigService;
-    private RedisUtil redisUtil;
-    private int threadControlCount;
-
-    public ShuttleExecuteScheduler(ShuttleAction shuttleAction, DeviceConfigService deviceConfigService, RedisUtil redisUtil, int threadControlCount) {
-        this.shuttleAction = shuttleAction;
-        this.deviceConfigService = deviceConfigService;
-        this.redisUtil = redisUtil;
-        this.threadControlCount = threadControlCount;
-    }
-
-    @Override
-    public void run() {
-        List<DeviceConfig> shuttleList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>()
-                .eq("device_type", String.valueOf(SlaveType.Shuttle)));
-
-        List<List<DeviceConfig>> lists = new ArrayList<>();
-        List<DeviceConfig> tmp = new ArrayList<>();
-
-        for (int i = 0; i < shuttleList.size(); i++) {
-            DeviceConfig deviceConfig = shuttleList.get(i);
-            if (i != 0 && i % threadControlCount == 0) {
-                lists.add(tmp);
-                tmp = new ArrayList<>();
-            }
-            tmp.add(deviceConfig);
-        }
-        lists.add(tmp);
-
-        for (List<DeviceConfig> list : lists) {
-            if (list.isEmpty()) {
-                continue;
-            }
-
-            new Thread(() -> {
-                while (true) {
-                    try {
-                        for (DeviceConfig deviceConfig : list) {
-                            Object object = redisUtil.get(RedisKeyType.SHUTTLE_FLAG.key + deviceConfig.getDeviceNo());
-                            if (object == null) {
-                                continue;
-                            }
-
-                            int taskNo = Integer.parseInt(String.valueOf(object));
-                            if (taskNo != 0) {
-                                //瀛樺湪浠诲姟闇�瑕佹墽琛�
-                                long startTime = System.currentTimeMillis();
-                                News.info("[RCS Debug] Execute {},{}", deviceConfig.getDeviceNo(), taskNo);
-                                // 鍦ㄥ惊鐜腑浣跨敤
-                                boolean result = TimeoutExecutor.executeWithTimeout(
-                                        () -> shuttleAction.executeWork(deviceConfig.getDeviceNo(), taskNo),
-                                        30,  // 30绉掕秴鏃�
-                                        TimeUnit.SECONDS
-                                );
-                                Thread.sleep(100);
-                                News.info("[RCS Debug] Execute end {},{},{}", deviceConfig.getDeviceNo(), taskNo, System.currentTimeMillis() - startTime);
-                            }
-                        }
-                    }catch (Exception e){
-                        e.printStackTrace();
-                    }
-                }
-            }).start();
-        }
-    }
-}
diff --git a/src/main/java/com/zy/core/task/TrafficApplyProcess.java b/src/main/java/com/zy/core/task/TrafficApplyProcess.java
deleted file mode 100644
index 7b7e79d..0000000
--- a/src/main/java/com/zy/core/task/TrafficApplyProcess.java
+++ /dev/null
@@ -1,119 +0,0 @@
-package com.zy.core.task;
-
-import com.zy.common.utils.RedisUtil;
-import com.zy.core.cache.SlaveConnection;
-import com.zy.core.enums.RedisKeyType;
-import com.zy.core.enums.SlaveType;
-import com.zy.core.model.TrafficControlDataModel;
-import com.zy.core.model.param.OperateTrafficControlParam;
-import com.zy.core.thread.TrafficControlThread;
-import lombok.Getter;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.scheduling.annotation.Scheduled;
-import org.springframework.stereotype.Component;
-
-import java.util.ArrayList;
-import java.util.Comparator;
-import java.util.List;
-import java.util.Set;
-
-@Slf4j
-@Component
-public class TrafficApplyProcess {
-
-    @Autowired
-    private RedisUtil redisUtil;
-
-    @Scheduled(cron = "0/3 * * * * ? ")
-    public void processApply() {
-        TrafficControlThread trafficControlThread = (TrafficControlThread) SlaveConnection.get(SlaveType.TrafficControl, 1);
-        if (trafficControlThread == null) {
-            return;
-        }
-        Set<String> keys = redisUtil.searchKeys(RedisKeyType.TRAFFIC_CONTROL_APPLY.key);
-
-        List<ApplyKey> sortList = new ArrayList<>();
-        for (String key : keys) {
-            String[] split = key.split(RedisKeyType.TRAFFIC_CONTROL_APPLY.key);
-            String[] split1 = split[1].split("_");
-            String shuttleNo = split1[0];
-
-            int count = 0;
-            String applyCountKey = RedisKeyType.TRAFFIC_CONTROL_SHUTTLE_APPLY_COUNT.key + shuttleNo;
-            Object object = redisUtil.get(applyCountKey);
-            if(object != null) {
-                count = (Integer) object;
-            }
-
-            sortList.add(new ApplyKey(key, count));
-        }
-
-        sortList.sort(Comparator.comparing(ApplyKey::getCount).reversed());
-
-        for (ApplyKey applyKey : sortList) {
-            String key = applyKey.getKey();
-            TrafficControlDataModel dataModel = (TrafficControlDataModel) redisUtil.get(key);
-            redisUtil.del(key);
-
-            boolean apply = trafficControlThread.processApply(dataModel);
-
-            String applyCountKey = RedisKeyType.TRAFFIC_CONTROL_SHUTTLE_APPLY_COUNT.key + dataModel.getShuttleNo();
-            if (apply) {
-                redisUtil.del(applyCountKey);
-            }else {
-                Object object = redisUtil.get(applyCountKey);
-                if (object == null) {
-                    redisUtil.set(applyCountKey, 0, 60 * 60);
-                }else {
-                    Integer count = (Integer) object;
-                    redisUtil.set(applyCountKey, count + 1, 60 * 60);
-                }
-            }
-        }
-    }
-
-    @Scheduled(cron = "0/3 * * * * ? ")
-    public void processReport() {
-        TrafficControlThread trafficControlThread = (TrafficControlThread) SlaveConnection.get(SlaveType.TrafficControl, 1);
-        if (trafficControlThread == null) {
-            return;
-        }
-        Set<String> keys = redisUtil.searchKeys(RedisKeyType.TRAFFIC_CONTROL_REPORT_LIST.key);
-
-        for (String key : keys) {
-            OperateTrafficControlParam param = (OperateTrafficControlParam) redisUtil.get(key);
-            redisUtil.del(key);
-            boolean apply = trafficControlThread.operateTrafficControl(param);
-        }
-    }
-
-    @Scheduled(cron = "0/3 * * * * ? ")
-    public void processCancel() {
-        TrafficControlThread trafficControlThread = (TrafficControlThread) SlaveConnection.get(SlaveType.TrafficControl, 1);
-        if (trafficControlThread == null) {
-            return;
-        }
-        Set<String> keys = redisUtil.searchKeys(RedisKeyType.TRAFFIC_CONTROL_CANCEL_LIST.key);
-
-        for (String key : keys) {
-            TrafficControlDataModel param = (TrafficControlDataModel) redisUtil.get(key);
-            redisUtil.del(key);
-            boolean apply = trafficControlThread.cancelTrafficControl(param.getShuttleNo(), param.getTaskNo());
-        }
-    }
-
-    class ApplyKey{
-        @Getter
-        String key;
-        @Getter
-        Integer count;
-
-        public ApplyKey(String key, Integer count) {
-            this.key = key;
-            this.count = count;
-        }
-
-    }
-
-}
diff --git a/src/main/java/com/zy/core/thread/CrnThread.java b/src/main/java/com/zy/core/thread/CrnThread.java
new file mode 100644
index 0000000..3c9d73d
--- /dev/null
+++ b/src/main/java/com/zy/core/thread/CrnThread.java
@@ -0,0 +1,10 @@
+package com.zy.core.thread;
+
+import com.zy.core.ThreadHandler;
+import com.zy.core.model.protocol.CrnProtocol;
+
+public interface CrnThread extends ThreadHandler {
+
+    CrnProtocol getCrnProtocol();
+
+}
diff --git a/src/main/java/com/zy/core/thread/ForkLiftThread.java b/src/main/java/com/zy/core/thread/ForkLiftThread.java
deleted file mode 100644
index 62fe964..0000000
--- a/src/main/java/com/zy/core/thread/ForkLiftThread.java
+++ /dev/null
@@ -1,57 +0,0 @@
-package com.zy.core.thread;
-
-import com.zy.common.ExecuteSupport;
-import com.zy.core.ThreadHandler;
-import com.zy.core.enums.ForkLiftIoModeType;
-import com.zy.core.enums.ForkLiftProtocolStatusType;
-import com.zy.core.enums.ForkLiftTaskModeType;
-import com.zy.core.model.CommandResponse;
-import com.zy.core.model.command.ForkLiftCommand;
-import com.zy.core.model.protocol.ForkLiftProtocol;
-import com.zy.core.model.protocol.ForkLiftStaProtocol;
-
-import java.util.List;
-
-public interface ForkLiftThread extends ThreadHandler {
-
-    ForkLiftProtocol getStatus();//鑾峰彇鎻愬崌鏈虹姸鎬�
-
-    ForkLiftProtocol getStatus(boolean clone);//鑾峰彇鎻愬崌鏈虹姸鎬�
-
-    List<ForkLiftStaProtocol> getForkLiftStaProtocols();
-
-    CommandResponse pickAndPut(ForkLiftCommand command);//鍙栨斁璐ф寚浠�
-
-    CommandResponse shuttleSwitch(ForkLiftCommand command);//灏忚溅鎹㈠眰
-
-    CommandResponse move(ForkLiftCommand command);//灏忚溅鎹㈠眰
-
-    CommandResponse switchIOMode(ForkLiftCommand command);//鍒囨崲鍑哄叆搴撴ā寮�
-
-    CommandResponse reset();//澶嶄綅
-
-    boolean isIdle();//鏄惁绌洪棽
-
-    boolean isDeviceIdle();//璁惧鏄惁绌洪棽
-
-    boolean isDeviceIdle(ExecuteSupport support);//璁惧鏄惁绌洪棽
-
-    boolean setProtocolStatus(ForkLiftProtocolStatusType status);//璁剧疆宸ヤ綔鐘舵��
-
-    boolean setSyncTaskNo(Integer taskNo);//璁剧疆宸ヤ綔鍙�
-
-    int generateDeviceTaskNo(int taskNo, ForkLiftTaskModeType type);//鐢熸垚纭欢璁惧宸ヤ綔鍙�
-
-    //***************鑾峰彇鍛戒护*****************
-
-    ForkLiftCommand getPickAndPutCommand(Integer taskNo, Integer pick, Integer put);//鍙栨斁璐ф寚浠�
-
-    ForkLiftCommand getShuttleSwitchCommand(Integer taskNo, Integer pick, Integer put);//灏忚溅鎹㈠眰
-
-    ForkLiftCommand getMoveCommand(Integer taskNo, Integer pick, Integer put);//鎻愬崌鏈虹Щ鍔�
-
-    ForkLiftCommand getSwitchIOCommand(Integer taskNo, ForkLiftIoModeType mode);
-
-    ForkLiftCommand getResetCommand(Integer taskNo);
-
-}
diff --git a/src/main/java/com/zy/core/thread/LiftThread.java b/src/main/java/com/zy/core/thread/LiftThread.java
deleted file mode 100644
index df824d9..0000000
--- a/src/main/java/com/zy/core/thread/LiftThread.java
+++ /dev/null
@@ -1,59 +0,0 @@
-package com.zy.core.thread;
-
-import com.zy.common.ExecuteSupport;
-import com.zy.core.ThreadHandler;
-import com.zy.core.enums.*;
-import com.zy.core.model.CommandResponse;
-import com.zy.core.model.command.LiftCommand;
-import com.zy.core.model.protocol.LiftProtocol;
-import com.zy.core.model.protocol.LiftStaProtocol;
-
-import java.util.List;
-
-public interface LiftThread extends ThreadHandler {
-
-    LiftProtocol getStatus();//鑾峰彇鎻愬崌鏈虹姸鎬�
-
-    LiftProtocol getStatus(boolean clone);//鑾峰彇鎻愬崌鏈虹姸鎬�
-
-    List<LiftStaProtocol> getLiftStaProtocols();
-
-    CommandResponse pickAndPut(LiftCommand command);//鍙栨斁璐ф寚浠�
-
-    CommandResponse shuttleSwitch(LiftCommand command);//灏忚溅鎹㈠眰
-
-    CommandResponse move(LiftCommand command);//灏忚溅绉诲姩
-
-    CommandResponse switchIOMode(LiftIoModeType type);//鍒囨崲鍑哄叆搴撴ā寮�
-
-    CommandResponse reset();//澶嶄綅
-
-    boolean isIdle();//鏄惁绌洪棽
-
-    boolean isDeviceIdle();//璁惧鏄惁绌洪棽
-
-    boolean isDeviceIdle(ExecuteSupport support);//璁惧鏄惁绌洪棽
-
-    boolean setProtocolStatus(LiftProtocolStatusType status);//璁剧疆宸ヤ綔鐘舵��
-
-    boolean setSyncTaskNo(Integer taskNo);//璁剧疆宸ヤ綔鍙�
-
-    int generateDeviceTaskNo(int taskNo, LiftTaskModeType type);//鐢熸垚纭欢璁惧宸ヤ綔鍙�
-
-    String getCurrentLocNo();
-
-    String getRealtimeOriginData();//鑾峰彇瀹炴椂鍘熷鏁版嵁
-
-    //***************鑾峰彇鍛戒护*****************
-
-    LiftCommand getPickAndPutCommand(Integer taskNo, Integer pick, Integer put);//鍙栨斁璐ф寚浠�
-
-    LiftCommand getShuttleSwitchCommand(Integer taskNo, Integer pick, Integer put);//灏忚溅鎹㈠眰
-
-    LiftCommand getMoveCommand(Integer taskNo, Integer pick, Integer put);//鎻愬崌鏈虹Щ鍔�
-
-    LiftCommand getSwitchIOCommand(Integer taskNo, LiftIoModeType mode);
-
-    LiftCommand getResetCommand(Integer taskNo);
-
-}
diff --git a/src/main/java/com/zy/core/thread/ShuttleThread.java b/src/main/java/com/zy/core/thread/ShuttleThread.java
index 861cbb1..a6a8562 100644
--- a/src/main/java/com/zy/core/thread/ShuttleThread.java
+++ b/src/main/java/com/zy/core/thread/ShuttleThread.java
@@ -1,94 +1,10 @@
 package com.zy.core.thread;
 
 
-import com.alibaba.fastjson.JSONObject;
-import com.zy.common.ExecuteSupport;
-import com.zy.common.model.NavigateNode;
-import com.zy.core.ThreadHandler;
-import com.zy.core.enums.ShuttleProtocolStatusType;
-import com.zy.core.enums.ShuttleRequireChargeType;
-import com.zy.core.enums.ShuttleTaskNoType;
-import com.zy.core.model.CommandResponse;
-import com.zy.core.model.command.ShuttleCommand;
-import com.zy.core.model.param.ShuttleMoveLocParam;
-import com.zy.core.model.protocol.ShuttleProtocol;
 
-import java.util.List;
+import com.zy.core.ThreadHandler;
 
 public interface ShuttleThread extends ThreadHandler {
 
-    ShuttleProtocol getStatus(boolean clone);//鑾峰彇鍥涘悜绌挎杞︾姸鎬�
-
-    ShuttleProtocol getStatus();//鑾峰彇鍥涘悜绌挎杞︾姸鎬�-榛樿clone
-
-    Object getOriginDeviceData();
-
-    CommandResponse movePath(List<NavigateNode> nodes, Integer taskNo);//璺緞涓嬪彂
-
-    CommandResponse move(ShuttleCommand command);//绉诲姩
-
-    CommandResponse lift(ShuttleCommand command);//椤跺崌
-
-    CommandResponse charge(ShuttleCommand command);//鍏呯數寮�鍏�
-
-    CommandResponse reset(ShuttleCommand command);//澶嶄綅寮�鍏�
-
-    CommandResponse updateLocation(ShuttleCommand command);//鏇存柊鍧愭爣
-
-    boolean isIdle();
-
-    boolean isIdle(ExecuteSupport support);//鏄惁绌洪棽
-
-    boolean isDeviceIdle();//璁惧鏄惁绌洪棽
-
-    boolean isDeviceIdle(ExecuteSupport support);//璁惧鏄惁绌洪棽
-
-    ShuttleRequireChargeType isRequireCharge();//鏄惁婊¤冻鍏呯數鐘舵��
-
-    boolean isCharging();//鏄惁鍏呯數涓�
-
-    boolean isChargingCompleted();//鏄惁鍏呯數瀹屾垚
-
-    boolean isFault();//鏄惁鏁呴殰
-
-    List<NavigateNode> getMoveAdvancePath();//鑾峰彇绌挎杞︿换鍔¤矾寰�
-
-    int generateDeviceTaskNo(int taskNo, ShuttleTaskNoType type);//鐢熸垚纭欢璁惧宸ヤ綔鍙�
-
-    boolean setProtocolStatus(ShuttleProtocolStatusType status);//璁剧疆宸ヤ綔鐘舵��
-
-    boolean setTaskNo(Integer taskNo);//璁剧疆宸ヤ綔鍙�
-
-    boolean setSyncTaskNo(Integer taskNo);//璁剧疆宸ヤ綔鍙�
-
-    boolean setPakMk(boolean pakMk);//璁剧疆鏍囪
-
-    boolean enableMoveLoc(ShuttleMoveLocParam param, boolean enable);
-
-    boolean requestWaiting();
-
-    boolean enableDemo(boolean enable);//婕旂ず妯″紡
-
-    boolean offerSystemMsg(String format, Object... arguments);
-
-    boolean setTrafficControl(boolean enable, List<NavigateNode> nodeList);
-
-    void updateDeviceDataLogTime(long time);
-
-    JSONObject parseStatusToMsg(ShuttleProtocol shuttleProtocol);
-
-    boolean restartCalcPath();//閲嶆柊瑙勫垝璺緞
-
-    //***************鑾峰彇鍛戒护*****************
-
-    ShuttleCommand getMoveCommand(Integer taskNo, String startCodeNum, String distCodeNum, Integer allDistance, Integer runDirection, Integer runSpeed, List<NavigateNode> nodes, Boolean shuttleDirectionReverse);//鑾峰彇绉诲姩鍛戒护
-
-    ShuttleCommand getMoveLiftCommand(Integer taskNo, String startCodeNum, String distCodeNum, Integer allDistance, Integer runDirection, Integer runSpeed, List<NavigateNode> nodes, Boolean moveIn, Boolean shuttleDirectionReverse);//鑾峰彇绉诲姩鍛戒护
-
-    ShuttleCommand getLiftCommand(Integer taskNo, Boolean lift);//椤跺崌鍛戒护 true=>椤跺崌 false=>涓嬮檷
-
-    ShuttleCommand getChargeCommand(Integer taskNo, Boolean charge);//鍏呯數寮�鍏冲懡浠� true=>寮� false=>鍏�
-
-    ShuttleCommand getUpdateLocationCommand(Integer taskNo, String locNo);//鑾峰彇鏇存柊鍧愭爣鍛戒护
 
 }
diff --git a/src/main/java/com/zy/core/thread/TrafficControlThread.java b/src/main/java/com/zy/core/thread/TrafficControlThread.java
deleted file mode 100644
index 1c9cb6e..0000000
--- a/src/main/java/com/zy/core/thread/TrafficControlThread.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package com.zy.core.thread;
-
-
-import com.zy.common.model.NavigateNode;
-import com.zy.core.ThreadHandler;
-import com.zy.core.model.TrafficControlDataModel;
-import com.zy.core.model.param.OperateTrafficControlParam;
-
-import java.util.List;
-
-public interface TrafficControlThread extends ThreadHandler {
-
-    boolean processApply(TrafficControlDataModel applyData);
-
-    boolean operateTrafficControl(OperateTrafficControlParam param);
-
-    boolean applyTrafficControl(List<NavigateNode> totalNodeList, List<NavigateNode> nodeList, Integer shuttleNo, Integer taskNo);
-
-    boolean trafficReport(List<NavigateNode> nodeList, Integer shuttleNo, Integer taskNo);
-
-    boolean trafficReportError(Integer shuttleNo, Integer taskNo);
-
-    boolean cancelTrafficControl(Integer shuttleNo, Integer taskNo);
-
-    boolean forceCancelTrafficControl(Integer shuttleNo);
-
-    TrafficControlDataModel queryTrafficControl(Integer shuttleNo, Integer taskNo);
-
-    TrafficControlDataModel queryTrafficControl(Integer shuttleNo);
-
-    List<TrafficControlDataModel> getAllTrafficControl();
-}
diff --git a/src/main/java/com/zy/core/thread/impl/LfdZyForkLiftMasterThread.java b/src/main/java/com/zy/core/thread/impl/LfdZyForkLiftMasterThread.java
deleted file mode 100644
index fbf2829..0000000
--- a/src/main/java/com/zy/core/thread/impl/LfdZyForkLiftMasterThread.java
+++ /dev/null
@@ -1,153 +0,0 @@
-//package com.zy.core.thread.impl;
-//
-//import HslCommunication.Core.Types.OperateResult;
-//import HslCommunication.Core.Types.OperateResultExOne;
-//import HslCommunication.Profinet.Siemens.SiemensPLCS;
-//import HslCommunication.Profinet.Siemens.SiemensS7Net;
-//import com.core.common.DateUtils;
-//import com.zy.common.utils.RedisUtil;
-//import com.zy.core.News;
-//import com.zy.core.ThreadHandler;
-//import com.zy.core.cache.OutputQueue;
-//import com.zy.core.model.ForkLiftSlave;
-//import com.zy.core.model.protocol.ForkLiftProtocol;
-//import lombok.extern.slf4j.Slf4j;
-//
-//import java.text.MessageFormat;
-//import java.util.ArrayList;
-//import java.util.Date;
-//import java.util.HashMap;
-//import java.util.List;
-//
-//@Slf4j
-//@SuppressWarnings("all")
-//public class LfdZyForkLiftMasterThread implements ThreadHandler {
-//
-//    private ForkLiftSlave slave;
-//    private ForkLiftProtocol forkLiftProtocol;
-//    private RedisUtil redisUtil;
-//    private SiemensS7Net siemensS7Net;
-//    private List<HashMap<String,Object>> slaveAddressList = null;
-//    private boolean connect = false;
-//
-//    public LfdZyForkLiftMasterThread(ForkLiftSlave slave, RedisUtil redisUtil) {
-//        this.slave = slave;
-//        this.redisUtil = redisUtil;
-//        ArrayList<HashMap<String, Object>> addressList = new ArrayList<>();
-//
-//        HashMap<String, Object> lift1 = new HashMap<>();
-//        lift1.put("status", new DbData("DB101.0", (short) 18));//鎻愬崌鏈烘暟鎹�
-//        lift1.put("staStatusTray", new DbData("DB102.0", (short) 14));//绔欑偣鏁版嵁
-//        lift1.put("staStatusCar", new DbData("DB102.50", (short) 14));//绔欑偣鏁版嵁
-//        lift1.put("write", new DbData("DB103.0", null));//鍐欏叆鏁版嵁
-//        lift1.put("writeConfirm", new DbData("DB103.8", null));//鍐欏叆纭鏁版嵁
-//        lift1.put("confirm", new DbData("DB103.10", null));//纭鍛戒护
-//        lift1.put("switchIOMode", new DbData("DB103.12", null));//鍑哄叆搴撴ā寮�
-//
-//        HashMap<String, Object> lift2 = new HashMap<>();
-//        lift2.put("status", new DbData("DB104.0", (short) 18));//鎻愬崌鏈烘暟鎹�
-//        lift2.put("staStatusTray", new DbData("DB105.0", (short) 14));//绔欑偣鏁版嵁
-//        lift2.put("staStatusCar", new DbData("DB105.50", (short) 14));//绔欑偣鏁版嵁
-//        lift2.put("write", new DbData("DB106.0", null));//鍐欏叆鏁版嵁
-//        lift2.put("writeConfirm", new DbData("DB106.8", null));//鍐欏叆纭鏁版嵁
-//        lift2.put("confirm", new DbData("DB106.10", null));//纭鍛戒护
-//        lift2.put("switchIOMode", new DbData("DB106.12", null));//鍑哄叆搴撴ā寮�
-//
-//        addressList.add(lift1);
-//        addressList.add(lift2);
-//        this.slaveAddressList = addressList;
-//    }
-//
-//    @Override
-//    public boolean connect() {
-//        boolean result = false;
-//        siemensS7Net = new SiemensS7Net(SiemensPLCS.S1200, slave.getIp());
-//        siemensS7Net.setRack(slave.getRack().byteValue());
-//        siemensS7Net.setSlot(slave.getSlot().byteValue());
-//        OperateResult connect = siemensS7Net.ConnectServer();
-//        if(connect.IsSuccess){
-//            result = true;
-//            OutputQueue.FORKLIFT.offer(MessageFormat.format( "銆恵0}銆戣揣鍙夋彁鍗囨満杩炴帴鎴愬姛 ===>> [id:{1}] [ip:{2}] [port:{3}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()));
-//            News.info("璐у弶鎻愬崌鏈鸿繛鎺ユ垚鍔� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
-//        } else {
-//            OutputQueue.FORKLIFT.offer(MessageFormat.format( "銆恵0}銆戣揣鍙夋彁鍗囨満杩炴帴澶辫触锛侊紒锛� ===>> [id:{1}] [ip:{2}] [port:{3}]  [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()));
-//            News.error("璐у弶鎻愬崌鏈鸿繛鎺ュけ璐ワ紒锛侊紒 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
-//        }
-//        // siemensS7Net.ConnectClose();
-//        this.connect = result;
-//        return result;
-//    }
-//
-//    @Override
-//    public void close() {
-//
-//    }
-//
-//    @Override
-//    public void run() {
-//        News.info("{}鍙疯揣鍙夋彁鍗囨満Master绾跨▼鍚姩", slave.getId());
-//        this.connect();
-//        while (true) {
-//            try {
-//                if (!this.connect) {
-//                    this.connect();
-//                }
-//
-//                Thread.sleep(500);
-//            }catch (Exception e){
-//                e.printStackTrace();
-//            }
-//        }
-//    }
-//
-//    public SiemensS7Net getSiemensS7Net() {
-//        return siemensS7Net;
-//    }
-//
-//    public synchronized OperateResultExOne<byte[]> read(Integer slaveId, String dbTag) {
-//        try {
-//            HashMap<String, Object> map = this.slaveAddressList.get(slaveId - 1);
-//            DbData dbData = (DbData) map.get(dbTag);
-//            OperateResultExOne<byte[]> result = siemensS7Net.Read(dbData.dbAddress, dbData.dbAddressLength);
-//            return result;
-//        } catch (Exception e) {
-//            OutputQueue.FORKLIFT.offer(MessageFormat.format("銆恵0}銆戣鍙栨彁鍗囨満鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort()));
-//        }
-//        return null;
-//    }
-//
-//    public synchronized OperateResult write(Integer slaveId, String dbTag, short[] array) {
-//        try {
-//            HashMap<String, Object> map = this.slaveAddressList.get(slaveId - 1);
-//            DbData dbData = (DbData) map.get(dbTag);
-//            OperateResult result = siemensS7Net.Write(dbData.dbAddress, array);
-//            return result;
-//        } catch (Exception e) {
-//            OutputQueue.FORKLIFT.offer(MessageFormat.format("銆恵0}銆戝啓鍏ユ彁鍗囨満鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort()));
-//        }
-//        return null;
-//    }
-//
-//    public synchronized OperateResult write(Integer slaveId, String dbTag, short val) {
-//        try {
-//            HashMap<String, Object> map = this.slaveAddressList.get(slaveId - 1);
-//            DbData dbData = (DbData) map.get(dbTag);
-//            OperateResult result = siemensS7Net.Write(dbData.dbAddress, val);
-//            return result;
-//        } catch (Exception e) {
-//            OutputQueue.FORKLIFT.offer(MessageFormat.format("銆恵0}銆戝啓鍏ユ彁鍗囨満鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort()));
-//        }
-//        return null;
-//    }
-//
-//    private class DbData {
-//        private String dbAddress;
-//        private Short dbAddressLength;
-//
-//        public DbData(String dbAddress, Short dbAddressLength) {
-//            this.dbAddress = dbAddress;
-//            this.dbAddressLength = dbAddressLength;
-//        }
-//
-//    }
-//}
diff --git a/src/main/java/com/zy/core/thread/impl/LfdZyForkLiftSlaveThread.java b/src/main/java/com/zy/core/thread/impl/LfdZyForkLiftSlaveThread.java
deleted file mode 100644
index ae2b966..0000000
--- a/src/main/java/com/zy/core/thread/impl/LfdZyForkLiftSlaveThread.java
+++ /dev/null
@@ -1,475 +0,0 @@
-//package com.zy.core.thread.impl;
-//
-//import HslCommunication.Core.Types.OperateResult;
-//import HslCommunication.Core.Types.OperateResultExOne;
-//import HslCommunication.Profinet.Siemens.SiemensPLCS;
-//import HslCommunication.Profinet.Siemens.SiemensS7Net;
-//import com.alibaba.fastjson.JSON;
-//import com.baomidou.mybatisplus.mapper.EntityWrapper;
-//import com.core.common.DateUtils;
-//import com.core.common.SpringUtils;
-//import com.zy.asrs.entity.BasLift;
-//import com.zy.asrs.entity.DeviceDataLog;
-//import com.zy.asrs.service.BasLiftService;
-//import com.zy.asrs.service.DeviceDataLogService;
-//import com.zy.asrs.utils.Utils;
-//import com.zy.common.ExecuteSupport;
-//import com.zy.common.utils.RedisUtil;
-//import com.zy.core.News;
-//import com.zy.core.action.ForkLiftAction;
-//import com.zy.core.cache.OutputQueue;
-//import com.zy.core.cache.SlaveConnection;
-//import com.zy.core.enums.*;
-//import com.zy.core.model.CommandResponse;
-//import com.zy.core.model.ForkLiftSlave;
-//import com.zy.core.model.command.ForkLiftCommand;
-//import com.zy.core.model.protocol.ForkLiftProtocol;
-//import com.zy.core.model.protocol.ForkLiftStaProtocol;
-//import com.zy.core.thread.ForkLiftThread;
-//import lombok.Data;
-//import lombok.extern.slf4j.Slf4j;
-//
-//import java.text.MessageFormat;
-//import java.util.*;
-//
-//@Slf4j
-//@SuppressWarnings("all")
-//public class LfdZyForkLiftSlaveThread implements ForkLiftThread {
-//
-//    private Integer masterId;
-//    private ForkLiftSlave slave;
-//    private ForkLiftProtocol forkLiftProtocol;
-//    private RedisUtil redisUtil;
-//    private List<ForkLiftStaProtocol> forkLiftStaProtocols = new ArrayList<>();
-//    private LfdZyForkLiftMasterThread masterThread;
-//
-//    public LfdZyForkLiftSlaveThread(ForkLiftSlave slave, RedisUtil redisUtil, Integer masterId) {
-//        this.slave = slave;
-//        this.redisUtil = redisUtil;
-//        this.masterId = masterId;
-//        //鍒濆鍖栫珯鐐�
-//        for (ForkLiftSlave.Sta sta : this.slave.getSta()) {
-//            ForkLiftStaProtocol forkLiftStaProtocol = new ForkLiftStaProtocol();
-//            forkLiftStaProtocol.setStaNo(sta.getStaNo());//绔欑偣鍙�
-//            forkLiftStaProtocol.setLev(sta.getLev());//绔欑偣妤煎眰
-//            String locNo = Utils.getLocNo(this.slave.getStaRow(), this.slave.getStaBay(), sta.getLev());
-//            forkLiftStaProtocol.setLocNo(locNo);//绔欑偣搴撲綅鍙�
-//            forkLiftStaProtocol.setLiftNo(sta.getLiftNo());//鎻愬崌鏈哄彿
-//            forkLiftStaProtocols.add(forkLiftStaProtocol);
-//        }
-//    }
-//
-//    @Override
-//    public boolean connect() {
-//        boolean result = false;
-//        LfdZyForkLiftMasterThread masterThread = (LfdZyForkLiftMasterThread) SlaveConnection.get(SlaveType.ForkLiftMaster, masterId);
-//        if(masterThread != null) {
-//            result = true;
-//            this.masterThread = masterThread;
-//        }
-//        return result;
-//    }
-//
-//    @Override
-//    public void close() {
-//
-//    }
-//
-//    @Override
-//    public void run() {
-//        News.info("{}鍙疯揣鍙夋彁鍗囨満绾跨▼鍚姩", slave.getId());
-//        this.connect();
-//        while (true) {
-//            try {
-//                if (this.masterThread == null) {
-//                    this.connect();
-//                    continue;
-//                }
-//
-//                read();
-//                Thread.sleep(300);
-//                execute();
-//            } catch (Exception e) {
-//                e.printStackTrace();
-//            }
-//        }
-//    }
-//
-//    private void execute() {
-//        ForkLiftAction forkLiftAction = null;
-//        try {
-//            forkLiftAction = SpringUtils.getBean(ForkLiftAction.class);
-//        }catch (Exception e){}
-//        if (forkLiftAction == null) {
-//            return;
-//        }
-//
-//        Object object = redisUtil.get(RedisKeyType.FORK_LIFT_FLAG.key + slave.getId());
-//        if (object == null) {
-//            return;
-//        }
-//
-//        Integer taskNo = Integer.valueOf(String.valueOf(object));
-//        if (taskNo != 0) {
-//            //瀛樺湪浠诲姟闇�瑕佹墽琛�
-//            boolean result = forkLiftAction.executeWork(slave.getId(), taskNo);
-//        }
-//    }
-//
-//    private void read() {
-//        try {
-//            readStatus();
-//
-//            //鎻愬崌鏈哄浜庤繍琛岀姸鎬侊紝灏嗘爣璁扮疆涓簍rue
-//            if (forkLiftProtocol.getProtocolStatusType().equals(ForkLiftProtocolStatusType.PICK_UP)
-//                    || forkLiftProtocol.getProtocolStatusType().equals(ForkLiftProtocolStatusType.PUT_DOWN)
-//                    || forkLiftProtocol.getProtocolStatusType().equals(ForkLiftProtocolStatusType.WAITING)) {
-//                forkLiftProtocol.setPakMk(true);
-//            }
-//        } catch (Exception e) {
-//            OutputQueue.FORKLIFT.offer(MessageFormat.format("銆恵0}銆戣鍙栨彁鍗囨満鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort()));
-//        }
-//    }
-//
-//    private void readStatus() {
-//        try {
-//            //鑾峰彇鎻愬崌鏈烘暟鎹�
-//            OperateResultExOne<byte[]> result1 = this.masterThread.read(this.slave.getId(), "status");
-//            SiemensS7Net siemensS7Net = this.masterThread.getSiemensS7Net();
-//            if (result1.IsSuccess) {
-//                if (null == forkLiftProtocol) {
-//                    forkLiftProtocol = new ForkLiftProtocol();
-//                    forkLiftProtocol.setLiftNo(slave.getId());
-//                    forkLiftProtocol.setProtocolStatus(ForkLiftProtocolStatusType.NONE);
-//
-//                    InnerForkLiftExtend innerForkLiftExtend = new InnerForkLiftExtend();
-//                }
-//
-//                //----------璇诲彇鎻愬崌鏈虹姸鎬�-----------
-//                //妯″紡
-//                forkLiftProtocol.setModel((int) siemensS7Net.getByteTransform().TransInt16(result1.Content, 0));
-//                //PLC浠诲姟鍙�
-//                forkLiftProtocol.setWrkNo((int) siemensS7Net.getByteTransform().TransInt16(result1.Content, 2));
-//                //浠诲姟鐘舵��
-//                forkLiftProtocol.setProtocolStatus((int) siemensS7Net.getByteTransform().TransInt16(result1.Content, 4));
-//                //浠诲姟妯″紡
-//                forkLiftProtocol.setTaskMode((int) siemensS7Net.getByteTransform().TransInt16(result1.Content, 6));
-//                //鍙栬揣鏁版嵁
-//                forkLiftProtocol.setPick((int) siemensS7Net.getByteTransform().TransInt16(result1.Content, 8));
-//                //鏀捐揣鏁版嵁
-//                forkLiftProtocol.setPut((int) siemensS7Net.getByteTransform().TransInt16(result1.Content, 10));
-//                //鍑哄叆搴撴ā寮�
-//                forkLiftProtocol.setIOMode((int) siemensS7Net.getByteTransform().TransInt16(result1.Content, 12));
-//                //鏁呴殰鐮�
-//                forkLiftProtocol.setErrorCode((int) siemensS7Net.getByteTransform().TransInt16(result1.Content, 14));
-//                //褰撳墠灞�
-//                forkLiftProtocol.setLev((int) siemensS7Net.getByteTransform().TransInt16(result1.Content, 16));
-//
-//                //************琛ュ厖鎵╁睍瀛楁*************
-//                InnerForkLiftExtend forkLiftExtend = (InnerForkLiftExtend) forkLiftProtocol.getExtend();
-//                forkLiftProtocol.setExtend(forkLiftExtend);
-//
-//            }else {
-//                OutputQueue.FORKLIFT.offer(MessageFormat.format("銆恵0}銆憑1}璇诲彇璐у弶鎻愬崌鏈虹姸鎬佷俊鎭け璐�", DateUtils.convert(new Date()), slave.getId()));
-//            }
-//
-//            OperateResultExOne<byte[]> result2 = this.masterThread.read(this.slave.getId(), "staStatusTray");
-//            if (result2.IsSuccess) {
-//                for (int i = 0; i < this.slave.getSta().size(); i++) {
-//                    ForkLiftSlave.Sta sta = this.slave.getSta().get(i);
-//                    if (forkLiftStaProtocols.isEmpty()) {
-//                        continue;
-//                    }
-//
-//                    short val = siemensS7Net.getByteTransform().TransInt16(result2.Content, i * 2);
-//                    ForkLiftStaProtocol forkLiftStaProtocol = forkLiftStaProtocols.get(i);
-//                    forkLiftStaProtocol.setHasTray(val == 1);
-//                }
-//            }
-//
-//            OperateResultExOne<byte[]> result3 = this.masterThread.read(this.slave.getId(), "staStatusCar");
-//            if (result3.IsSuccess) {
-//                for (int i = 0; i < this.slave.getSta().size(); i++) {
-//                    ForkLiftSlave.Sta sta = this.slave.getSta().get(i);
-//                    if (forkLiftStaProtocols.isEmpty()) {
-//                        continue;
-//                    }
-//
-//                    short val = siemensS7Net.getByteTransform().TransInt16(result3.Content, i * 2);
-//                    ForkLiftStaProtocol forkLiftStaProtocol = forkLiftStaProtocols.get(i);
-//                    forkLiftStaProtocol.setHasCar(val == 1);
-//                }
-//            }
-//
-//            if (System.currentTimeMillis() - forkLiftProtocol.getDeviceDataLog() > 1000 * 5) {
-//                //閲囬泦鏃堕棿瓒呰繃5s锛屼繚瀛樹竴娆℃暟鎹褰�
-//                //淇濆瓨鏁版嵁璁板綍
-//                DeviceDataLogService deviceDataLogService = SpringUtils.getBean(DeviceDataLogService.class);
-//                DeviceDataLog deviceDataLog = new DeviceDataLog();
-//                deviceDataLog.setOriginData(Base64.getEncoder().encodeToString(result1.Content));
-//                deviceDataLog.setWcsData(JSON.toJSONString(forkLiftProtocol));
-//                deviceDataLog.setType("forkLift");
-//                deviceDataLog.setDeviceNo(forkLiftProtocol.getLiftNo());
-//                deviceDataLog.setCreateTime(new Date());
-//                deviceDataLogService.insert(deviceDataLog);
-//
-//                //淇濆瓨鏁版嵁璁板綍
-//                DeviceDataLog deviceDataLog2 = new DeviceDataLog();
-//                deviceDataLog2.setOriginData(Base64.getEncoder().encodeToString(result2.Content));
-//                deviceDataLog2.setWcsData(JSON.toJSONString(forkLiftStaProtocols));
-//                deviceDataLog2.setType("forkLiftStaProtocols");
-//                deviceDataLog2.setDeviceNo(forkLiftProtocol.getLiftNo());
-//                deviceDataLog2.setCreateTime(new Date());
-//                deviceDataLogService.insert(deviceDataLog2);
-//
-//                //鏇存柊閲囬泦鏃堕棿
-//                forkLiftProtocol.setDeviceDataLog(System.currentTimeMillis());
-//            }
-//
-//            //灏嗘彁鍗囨満鐘舵�佷繚瀛樿嚦鏁版嵁搴�
-//            BasLiftService basLiftService = SpringUtils.getBean(BasLiftService.class);
-//            BasLift basLift = basLiftService.selectOne(new EntityWrapper<BasLift>()
-//                    .eq("lift_no", slave.getId()));
-//            if (basLift == null) {
-//                basLift = new BasLift();
-//                //鎻愬崌鏈哄彿
-//                basLift.setLiftNo(forkLiftProtocol.getLiftNo());
-//                basLift.setStatus(1);
-//                basLiftService.insert(basLift);
-//            }
-//            //浠诲姟鍙�
-//            basLift.setWrkNo(forkLiftProtocol.getTaskNo());
-//            //淇敼鏃堕棿
-//            basLift.setUpdateTime(new Date());
-//            //璁惧鐘舵��
-//            basLift.setDeviceStatus(JSON.toJSONString(forkLiftProtocol));
-//            if (basLiftService.updateById(basLift)) {
-//                OutputQueue.FORKLIFT.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), forkLiftProtocol.getLiftNo()));
-//            }
-//
-//        } catch (Exception e) {
-//            OutputQueue.FORKLIFT.offer(MessageFormat.format("銆恵0}銆戣鍙栬揣鍙夋彁鍗囨満鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort()));
-//        }
-//    }
-//
-//    @Override
-//    public ForkLiftProtocol getStatus(boolean clone) {
-//        if (this.forkLiftProtocol == null) {
-//            return null;
-//        }
-//        return clone ? this.forkLiftProtocol.clone() : this.forkLiftProtocol;
-//    }
-//
-//    @Override
-//    public List<ForkLiftStaProtocol> getForkLiftStaProtocols() {
-//        return this.forkLiftStaProtocols;
-//    }
-//
-//    @Override
-//    public ForkLiftProtocol getStatus() {
-//        return getStatus(true);
-//    }
-//
-//    @Override
-//    public CommandResponse pickAndPut(ForkLiftCommand command) {
-//        CommandResponse response = new CommandResponse(false);
-//
-//        short[] array = new short[4];
-//        array[0] = command.getTaskNo();//浠诲姟鍙�
-//        array[1] = command.getMode();//浠诲姟妯″紡
-//        array[2] = command.getPick();//鍙栬揣鏁版嵁
-//        array[3] = command.getPut();//鏀捐揣鏁版嵁
-//        OperateResult result = this.masterThread.write(this.slave.getId(), "write", array);
-//        if (result.IsSuccess) {
-//            OperateResult result2 = this.masterThread.write(this.slave.getId(), "writeConfirm", command.getConfirm());
-//            if (result2.IsSuccess) {
-//                response.setResult(true);
-//            }
-//        }
-//        return response;
-//    }
-//
-//    @Override
-//    public CommandResponse shuttleSwitch(ForkLiftCommand command) {
-//        CommandResponse response = new CommandResponse(false);
-//
-//        short[] array = new short[4];
-//        array[0] = command.getTaskNo();//浠诲姟鍙�
-//        array[1] = command.getMode();//浠诲姟妯″紡
-//        array[2] = command.getPick();//鍙栬揣鏁版嵁
-//        array[3] = command.getPut();//鏀捐揣鏁版嵁
-//        OperateResult result = this.masterThread.write(this.slave.getId(), "write", array);
-//        if (result.IsSuccess) {
-//            OperateResult result2 = this.masterThread.write(this.slave.getId(), "writeConfirm", command.getConfirm());
-//            if (result2.IsSuccess) {
-//                response.setResult(true);
-//            }
-//        }
-//        return response;
-//    }
-//
-//    @Override
-//    public CommandResponse move(ForkLiftCommand command) {
-//        CommandResponse response = new CommandResponse(false);
-//
-//        short[] array = new short[4];
-//        array[0] = command.getTaskNo();//浠诲姟鍙�
-//        array[1] = command.getMode();//浠诲姟妯″紡
-//        array[2] = command.getPut();//鏀捐揣鏁版嵁
-//        OperateResult result = this.masterThread.write(this.slave.getId(), "write", array);
-//        if (result.IsSuccess) {
-//            OperateResult result2 = this.masterThread.write(this.slave.getId(), "writeConfirm", command.getConfirm());
-//            if (result2.IsSuccess) {
-//                response.setResult(true);
-//            }
-//        }
-//        return response;
-//    }
-//
-//    @Override
-//    public CommandResponse reset() {
-//        CommandResponse response = new CommandResponse(false);
-//        OperateResult result = this.masterThread.write(this.slave.getId(), "confirm", (short) 1);
-//        if (result.IsSuccess) {
-//            News.info("璐у弶鎻愬崌鏈虹‘璁ゅ懡浠や笅鍙戞垚鍔燂紝鎻愬崌鏈哄彿={}", forkLiftProtocol.getLiftNo());
-//            response.setResult(true);
-//        }
-//        return response;
-//    }
-//
-//    @Override
-//    public boolean isIdle() {
-//        if (this.forkLiftProtocol.getTaskNo() == null
-//                || this.forkLiftProtocol.getProtocolStatus() == null
-//                || this.forkLiftProtocol.getModel() == null
-//                || this.forkLiftProtocol.getErrorCode() == null
-//        ) {
-//            return false;
-//        }
-//
-//        boolean res = this.forkLiftProtocol.getProtocolStatus() == ForkLiftProtocolStatusType.IDLE.id
-//                && this.forkLiftProtocol.getWrkNo() == 0
-//                && this.forkLiftProtocol.getTaskNo() == 0
-//                && this.forkLiftProtocol.getModel() == 2
-//                && this.forkLiftProtocol.getErrorCode() == 0
-//                ;
-//        return res;
-//    }
-//
-//    @Override
-//    public boolean isDeviceIdle() {
-//        return isDeviceIdle(null);
-//    }
-//
-//    @Override
-//    public boolean isDeviceIdle(ExecuteSupport support) {
-//        if (null != support) {
-//            Boolean judgement = support.judgement();
-//            if (judgement != null && !judgement) {
-//                return true;
-//            }
-//        }
-//
-//        if (this.forkLiftProtocol.getTaskNo() == null
-//                || this.forkLiftProtocol.getProtocolStatus() == null
-//                || this.forkLiftProtocol.getModel() == null
-//                || this.forkLiftProtocol.getErrorCode() == null
-//        ) {
-//            return false;
-//        }
-//
-//        boolean res = this.forkLiftProtocol.getProtocolStatus() == ForkLiftProtocolStatusType.IDLE.id
-//                && this.forkLiftProtocol.getWrkNo() == 0
-//                && this.forkLiftProtocol.getModel() == 2
-//                && this.forkLiftProtocol.getErrorCode() == 0
-//                ;
-//        return res;
-//    }
-//
-//    @Override
-//    public boolean setProtocolStatus(ForkLiftProtocolStatusType status) {
-//        return false;
-//    }
-//
-//    @Override
-//    public boolean setSyncTaskNo(Integer taskNo) {
-//        this.forkLiftProtocol.setSyncTaskNo(taskNo);
-//        return true;
-//    }
-//
-//    @Override
-//    public boolean switchIOMode(ForkLiftIoModeType type) {
-//        OperateResult result = this.masterThread.write(this.slave.getId(), "switchIOMode", type.id.shortValue());
-//        if (result.IsSuccess) {
-//            return true;
-//        }
-//        return false;
-//    }
-//
-//    @Override
-//    public int generateDeviceTaskNo(int taskNo, ForkLiftTaskModeType type) {
-//        return taskNo;
-//    }
-//
-//    @Override
-//    public List<ForkLiftCommand> getPickAndPutCommand(Integer taskNo, Integer pick, Integer put) {
-//        Integer realPick = pick % 1000;
-//        Integer realPut = put % 1000;
-//
-//        List<ForkLiftCommand> commands = new ArrayList<>();
-//        ForkLiftCommand command = new ForkLiftCommand();
-//        command.setLiftNo(slave.getId());
-//        command.setTaskNo(taskNo.shortValue());
-//        command.setMode(ForkLiftTaskModeType.PICK_PUT.id.shortValue());
-//        command.setPick(realPick.shortValue());
-//        command.setPut(realPut.shortValue());
-//        command.setConfirm((short) 1);
-//
-//        commands.add(command);
-//        return commands;
-//    }
-//
-//    @Override
-//    public List<ForkLiftCommand> getShuttleSwitchCommand(Integer taskNo, Integer pick, Integer put) {
-//        Integer realPick = pick % 1000;
-//        Integer realPut = put % 1000;
-//
-//        List<ForkLiftCommand> commands = new ArrayList<>();
-//        ForkLiftCommand command = new ForkLiftCommand();
-//        command.setLiftNo(slave.getId());
-//        command.setTaskNo(taskNo.shortValue());
-//        command.setMode(ForkLiftTaskModeType.SHUTTLE_SWITCH.id.shortValue());
-//        command.setPick(realPick.shortValue());
-//        command.setPut(realPut.shortValue());
-//        command.setConfirm((short) 1);
-//
-//        commands.add(command);
-//        return commands;
-//    }
-//
-//    @Override
-//    public List<ForkLiftCommand> getMoveCommand(Integer taskNo, Integer pick, Integer put) {
-//        Integer realPick = pick % 1000;
-//        Integer realPut = put % 1000;
-//
-//        List<ForkLiftCommand> commands = new ArrayList<>();
-//        ForkLiftCommand command = new ForkLiftCommand();
-//        command.setLiftNo(slave.getId());
-//        command.setTaskNo(taskNo.shortValue());
-//        command.setMode(ForkLiftTaskModeType.MOVE.id.shortValue());
-//        command.setPick(realPick.shortValue());
-//        command.setPut(realPut.shortValue());
-//        command.setConfirm((short) 1);
-//
-//        commands.add(command);
-//        return commands;
-//    }
-//
-//    /**
-//     * 鎵╁睍瀛楁
-//     */
-//    @Data
-//    private class InnerForkLiftExtend {
-//
-//    }
-//}
diff --git a/src/main/java/com/zy/core/thread/impl/NyLiftThread.java b/src/main/java/com/zy/core/thread/impl/NyLiftThread.java
deleted file mode 100644
index 1387deb..0000000
--- a/src/main/java/com/zy/core/thread/impl/NyLiftThread.java
+++ /dev/null
@@ -1,747 +0,0 @@
-package com.zy.core.thread.impl;
-
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONArray;
-import com.alibaba.fastjson.JSONObject;
-import com.core.common.DateUtils;
-import com.core.common.SpringUtils;
-import com.zy.asrs.entity.DeviceConfig;
-import com.zy.asrs.entity.DeviceDataLog;
-import com.zy.asrs.service.DeviceDataLogService;
-import com.zy.asrs.utils.Utils;
-import com.zy.common.ExecuteSupport;
-import com.zy.common.model.LiftPointModel;
-import com.zy.common.utils.RedisUtil;
-import com.zy.core.News;
-import com.zy.core.action.LiftAction;
-import com.zy.core.cache.OutputQueue;
-import com.zy.core.enums.*;
-import com.zy.core.model.CommandResponse;
-import com.zy.core.model.DeviceCommandMsgModel;
-import com.zy.core.model.DeviceMsgModel;
-import com.zy.core.model.LiftStation;
-import com.zy.core.model.command.LiftCommand;
-import com.zy.core.model.protocol.LiftProtocol;
-import com.zy.core.model.protocol.LiftStaProtocol;
-import com.zy.core.thread.LiftThread;
-import com.zy.core.utils.DeviceMsgUtils;
-import lombok.Data;
-import lombok.extern.slf4j.Slf4j;
-
-import java.io.IOException;
-import java.text.MessageFormat;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.TreeSet;
-
-@Slf4j
-@SuppressWarnings("all")
-public class NyLiftThread implements LiftThread {
-
-    private DeviceConfig device;
-    private LiftProtocol liftProtocol;
-    private RedisUtil redisUtil;
-    private LiftPointModel liftPointModel;
-    private List<LiftStaProtocol> liftStaProtocols = new ArrayList<>();
-    private List<DeviceMsgModel> readResultList = new ArrayList<>();
-    private List<DeviceMsgModel> resultList = new ArrayList<>();
-    private String realtimeOriginData = "";
-
-    public NyLiftThread(DeviceConfig device, LiftPointModel liftPointModel, List<LiftStation> stationList, RedisUtil redisUtil) {
-        this.device = device;
-        this.redisUtil = redisUtil;
-        this.liftPointModel = liftPointModel;
-        //鍒濆鍖栫珯鐐�
-        for (LiftStation station : stationList) {
-            LiftStaProtocol liftStaProtocol = new LiftStaProtocol();
-            liftStaProtocol.setSiteId(station.getSiteId());//绔欑偣鍙�
-            liftStaProtocol.setLev(station.getLev());//绔欑偣妤煎眰
-            String locNo = Utils.getLocNo(station.getRow(), station.getBay(), station.getLev());
-            liftStaProtocol.setLocNo(locNo);//绔欑偣搴撲綅鍙�
-            liftStaProtocol.setLiftNo(station.getLiftNo());//鎻愬崌鏈哄彿
-            liftStaProtocols.add(liftStaProtocol);
-        }
-    }
-
-    @Override
-    public boolean connect() {
-        return true;
-    }
-
-    @Override
-    public void close() {
-
-    }
-
-    @Override
-    public void run() {
-        News.info("{}鍙锋彁鍗囨満绾跨▼鍚姩", device.getDeviceNo());
-
-        this.connect();
-        //璁惧璇诲彇
-        Thread readThread = new Thread(() -> {
-            while (true) {
-                try {
-                    listenMessageFromRedis();
-                    readStatus();
-                    Thread.sleep(200);
-                } catch (Exception e) {
-                    log.error("LiftThread Fail", e);
-                }
-            }
-        });
-        readThread.start();
-
-        //璁惧鎵ц
-        Thread executeThread = new Thread(() -> {
-            while (true) {
-                try {
-                    execute();
-                    Thread.sleep(200);
-                } catch (Exception e) {
-                    e.printStackTrace();
-                }
-            }
-        });
-        executeThread.start();
-    }
-
-    private void execute() {
-        LiftAction liftAction = null;
-        try {
-            liftAction = SpringUtils.getBean(LiftAction.class);
-        }catch (Exception e){}
-        if (liftAction == null) {
-            return;
-        }
-
-        Object object = redisUtil.get(RedisKeyType.LIFT_FLAG.key + device.getDeviceNo());
-        if (object == null) {
-            return;
-        }
-
-        Integer taskNo = Integer.valueOf(String.valueOf(object));
-        if (taskNo != 0) {
-            //瀛樺湪浠诲姟闇�瑕佹墽琛�
-            boolean result = liftAction.executeWork(device.getDeviceNo(), taskNo);
-        }
-    }
-
-    private void readStatus() {
-        try {
-            //鑾峰彇鎻愬崌鏈烘暟鎹�
-            DeviceMsgUtils deviceMsgUtils = null;
-            try {
-                deviceMsgUtils = SpringUtils.getBean(DeviceMsgUtils.class);
-            }catch (Exception e){
-
-            }
-            if(deviceMsgUtils == null){
-                return;
-            }
-
-            LiftCommand readStatusCommand = getReadStatusCommand();
-            //鎸囦护瓒呰繃2鏉★紝涓嶅啀涓嬪彂浠诲姟鐘舵�佽姹�
-            TreeSet<String> deviceCommandMsgListKey = deviceMsgUtils.getDeviceCommandMsgListKey(SlaveType.Lift, device.getDeviceNo());
-            if (deviceCommandMsgListKey.size() < 2) {
-                requestCommand(readStatusCommand);//璇锋眰鐘舵��
-            }
-
-            if (this.readResultList.isEmpty()) {
-                return;
-            }
-
-            DeviceMsgModel deviceMsgModel = this.readResultList.get(0);
-            this.readResultList.remove(0);
-            JSONObject deviceMsg = JSON.parseObject(JSON.toJSONString(deviceMsgModel.getDeviceMsg()));
-            if (!deviceMsg.getString("result").equals("success")) {
-                return;
-            }
-            JSONObject data = deviceMsg.getJSONObject("deviceStatus");
-
-            if (null == liftProtocol) {
-                liftProtocol = new LiftProtocol();
-                liftProtocol.setLiftNo(device.getDeviceNo());
-                liftProtocol.setProtocolStatus(LiftProtocolStatusType.IDLE);
-
-                InnerLiftExtend innerLiftExtend = new InnerLiftExtend();
-                liftProtocol.setExtend(innerLiftExtend);
-            }
-
-            //----------璇诲彇鎻愬崌鏈虹姸鎬�-----------
-            //妯″紡
-            liftProtocol.setModel(data.getInteger("model"));
-            //PLC浠诲姟鍙�
-            liftProtocol.setPlcTaskNo(data.getInteger("plcTaskNo"));
-            //璁惧鐘舵��
-            liftProtocol.setDeviceStatus(data.getInteger("deviceStatus"));
-            //浠诲姟妯″紡
-            liftProtocol.setTaskMode(data.getInteger("taskMode"));
-            //鍙栬揣鏁版嵁
-            liftProtocol.setPick(data.getInteger("pick"));
-            //鏀捐揣鏁版嵁
-            liftProtocol.setPut(data.getInteger("put"));
-            //鏈夋墭鐩�
-            liftProtocol.setHasTray(data.getInteger("hasTray") == 1);
-            //鏈夊皬杞�
-            liftProtocol.setHasCar(data.getInteger("hasCar") == 1);
-            //鏁呴殰鐮�
-            liftProtocol.setErrorCode(data.getInteger("errorCode"));
-            //褰撳墠灞�
-            liftProtocol.setLev(data.getInteger("lev"));
-
-            //************琛ュ厖鎵╁睍瀛楁*************
-            InnerLiftExtend liftExtend = (InnerLiftExtend) liftProtocol.getExtend();
-            liftProtocol.setExtend(liftExtend);
-            JSONObject extend = data.getJSONObject("extend");
-            liftExtend.setFrontOverrun(extend.getInteger("frontOverrun") == 1);
-            liftExtend.setBackOverrun(extend.getInteger("backOverrun") == 1);
-            liftExtend.setLeftOverrun(extend.getInteger("leftOverrun") == 1);
-            liftExtend.setRightOverrun(extend.getInteger("rightOverrun") == 1);
-            liftExtend.setOverHeight(extend.getInteger("overHeight") == 1);
-            liftExtend.setOverWeight(extend.getInteger("overWeight") == 1);
-            liftExtend.setPlcTaskNoComplete(extend.getInteger("plcTaskNoComplete"));
-
-            if (!liftExtend.getPlcTaskNoComplete().equals(liftProtocol.getPlcTaskNo())) {
-                //璁惧鐘舵��
-                liftProtocol.setDeviceStatus(LiftDeviceStatusType.BUSY.id);
-            }
-
-            //璇诲彇绔欑偣
-            JSONArray stationList = data.getJSONArray("stationList");
-            if (stationList != null) {
-                for (int i = 0; i < stationList.size(); i++) {
-                    JSONObject staObj = stationList.getJSONObject(i);
-                    LiftStaProtocol liftStaProtocol = null;
-                    for (LiftStaProtocol staProtocol : liftStaProtocols) {
-                        if(staProtocol.getSiteId().equals(staObj.getInteger("siteId"))){
-                            liftStaProtocol = staProtocol;
-                            break;
-                        }
-                    }
-
-                    if(liftStaProtocol == null){
-                        continue;
-                    }
-
-                    liftStaProtocol.setModel(staObj.getInteger("model") == 1);
-                    liftStaProtocol.setBusy(staObj.getInteger("busy") == 1);
-                    liftStaProtocol.setHasTray(staObj.getInteger("hasTray") == 1);
-                    liftStaProtocol.setDeviceError(staObj.getInteger("deviceError") == 1);
-                    liftStaProtocol.setTaskNo(staObj.getInteger("taskNo"));
-                    liftStaProtocol.setBarcode(staObj.getString("barcode"));
-                }
-            }
-
-            this.realtimeOriginData = JSON.toJSONString(data);
-
-            if (System.currentTimeMillis() - liftProtocol.getDeviceDataLog() > 1000 * 2) {
-                //閲囬泦鏃堕棿瓒呰繃5s锛屼繚瀛樹竴娆℃暟鎹褰�
-                //淇濆瓨鏁版嵁璁板綍
-                DeviceDataLogService deviceDataLogService = SpringUtils.getBean(DeviceDataLogService.class);
-                DeviceDataLog deviceDataLog = new DeviceDataLog();
-                deviceDataLog.setOriginData(JSON.toJSONString(data));
-                deviceDataLog.setWcsData(JSON.toJSONString(liftProtocol));
-                deviceDataLog.setType("lift");
-                deviceDataLog.setDeviceNo(liftProtocol.getLiftNo());
-                deviceDataLog.setCreateTime(new Date());
-                deviceDataLogService.insert(deviceDataLog);
-
-                //鏇存柊閲囬泦鏃堕棿
-                liftProtocol.setDeviceDataLog(System.currentTimeMillis());
-            }
-
-            OutputQueue.LIFT.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), liftProtocol.getLiftNo()));
-        } catch (Exception e) {
-            e.printStackTrace();
-            OutputQueue.LIFT.offer(MessageFormat.format("銆恵0}銆戣鍙栨彁鍗囨満鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), device.getDeviceNo(), device.getIp(), device.getPort()));
-        }
-    }
-
-    @Override
-    public LiftProtocol getStatus(boolean clone) {
-        if (this.liftProtocol == null) {
-            return null;
-        }
-        return clone ? this.liftProtocol.clone() : this.liftProtocol;
-    }
-
-    @Override
-    public List<LiftStaProtocol> getLiftStaProtocols() {
-        return this.liftStaProtocols;
-    }
-
-    @Override
-    public LiftProtocol getStatus() {
-        return getStatus(true);
-    }
-
-    @Override
-    public CommandResponse pickAndPut(LiftCommand command) {
-        CommandResponse response = new CommandResponse(false);
-        try {
-            //鍙戝嚭璇锋眰
-            String resultKey = requestCommand(command);
-            //鏌ヨ璇锋眰缁撴灉
-            JSONObject result = queryCommandStatus(resultKey);
-            if (result == null) {
-                return response;//璇锋眰澶辫触
-            }
-            if(!result.getString("result").equals("success")) {
-                return response;//璇锋眰澶辫触
-            }
-
-            this.liftProtocol.setSendTime(System.currentTimeMillis());//鎸囦护涓嬪彂鏃堕棿
-            response.setMessage(JSON.toJSONString(result));
-            response.setResult(true);
-            return response;
-        } catch (Exception e) {
-            e.printStackTrace();
-            response.setMessage(e.getMessage());
-            return response;
-        }
-    }
-
-    @Override
-    public CommandResponse shuttleSwitch(LiftCommand command) {
-        CommandResponse response = new CommandResponse(false);
-        try {
-            //鍙戝嚭璇锋眰
-            String resultKey = requestCommand(command);
-            //鏌ヨ璇锋眰缁撴灉
-            JSONObject result = queryCommandStatus(resultKey);
-            if (result == null) {
-                return response;//璇锋眰澶辫触
-            }
-            if(!result.getString("result").equals("success")) {
-                return response;//璇锋眰澶辫触
-            }
-
-            this.liftProtocol.setSendTime(System.currentTimeMillis());//鎸囦护涓嬪彂鏃堕棿
-            response.setMessage(JSON.toJSONString(result));
-            response.setResult(true);
-            return response;
-        } catch (Exception e) {
-            e.printStackTrace();
-            response.setMessage(e.getMessage());
-            return response;
-        }
-    }
-
-    @Override
-    public CommandResponse move(LiftCommand command) {
-        CommandResponse response = new CommandResponse(false);
-        try {
-            //鍙戝嚭璇锋眰
-            String resultKey = requestCommand(command);
-            //鏌ヨ璇锋眰缁撴灉
-            JSONObject result = queryCommandStatus(resultKey);
-            if (result == null) {
-                return response;//璇锋眰澶辫触
-            }
-            if(!result.getString("result").equals("success")) {
-                return response;//璇锋眰澶辫触
-            }
-
-            this.liftProtocol.setSendTime(System.currentTimeMillis());//鎸囦护涓嬪彂鏃堕棿
-            response.setMessage(JSON.toJSONString(result));
-            response.setResult(true);
-            return response;
-        } catch (Exception e) {
-            e.printStackTrace();
-            response.setMessage(e.getMessage());
-            return response;
-        }
-    }
-
-    @Override
-    public CommandResponse switchIOMode(LiftIoModeType type) {
-        CommandResponse response = new CommandResponse(true);
-        liftProtocol.setIOMode(type);
-        return response;
-    }
-
-    @Override
-    public CommandResponse reset() {
-        CommandResponse response = new CommandResponse(true);
-        this.setSyncTaskNo(0);
-        this.setProtocolStatus(LiftProtocolStatusType.IDLE);
-        return response;
-    }
-
-    @Override
-    public boolean isIdle() {
-        if (this.liftProtocol.getTaskNo() == null
-                || this.liftProtocol.getPlcTaskNo() == null
-                || this.liftProtocol.getProtocolStatus() == null
-                || this.liftProtocol.getModel() == null
-                || this.liftProtocol.getDeviceStatus() == null
-                || this.liftProtocol.getErrorCode() == null
-                || this.liftProtocol.getExtend() == null
-        ) {
-            return false;
-        }
-
-        InnerLiftExtend extend = (InnerLiftExtend) this.liftProtocol.getExtend();
-
-        if (this.liftProtocol.getProtocolStatus() != LiftProtocolStatusType.IDLE.id) {
-            return false;//浠诲姟涓嶇┖闂�
-        }
-
-        if (this.liftProtocol.getTaskNo() != 0) {
-            return false;//鏈変换鍔″彿
-        }
-
-        if (this.liftProtocol.getModel() != 2) {
-            return false;//闈炶嚜鍔�
-        }
-
-        if (this.liftProtocol.getDeviceStatus() != LiftDeviceStatusType.IDLE.id) {
-            return false;//闈炵┖闂�
-        }
-
-        if (this.liftProtocol.getErrorCode() != 0) {
-            return false;//鏈夋晠闅�
-        }
-
-        if (extend.getFrontOverrun()) {
-            return false;
-        }
-
-        if (extend.getBackOverrun()) {
-            return false;
-        }
-
-        if (extend.getLeftOverrun()) {
-            return false;
-        }
-
-        if (extend.getRightOverrun()) {
-            return false;
-        }
-
-        if (extend.getOverHeight()) {
-            return false;
-        }
-
-        if (extend.getOverWeight()) {
-            return false;
-        }
-
-        return true;
-    }
-
-    @Override
-    public boolean isDeviceIdle() {
-        return isDeviceIdle(null);
-    }
-
-    @Override
-    public boolean isDeviceIdle(ExecuteSupport support) {
-        if (null != support) {
-            Boolean judgement = support.judgement();
-            if (judgement != null && !judgement) {
-                return true;
-            }
-        }
-
-        if (this.liftProtocol.getModel() == null
-                || this.liftProtocol.getDeviceStatus() == null
-                || this.liftProtocol.getErrorCode() == null
-                || this.liftProtocol.getExtend() == null
-        ) {
-            return false;
-        }
-
-        InnerLiftExtend extend = (InnerLiftExtend) this.liftProtocol.getExtend();
-
-        if (this.liftProtocol.getModel() != 2) {
-            return false;//闈炶嚜鍔�
-        }
-
-        if (this.liftProtocol.getDeviceStatus() != LiftDeviceStatusType.IDLE.id) {
-            return false;//闈炵┖闂�
-        }
-
-        if (this.liftProtocol.getErrorCode() != 0) {
-            return false;//鏈夋晠闅�
-        }
-
-        if (extend.getFrontOverrun() == null || extend.getFrontOverrun()) {
-            return false;
-        }
-
-        if (extend.getBackOverrun() == null || extend.getBackOverrun()) {
-            return false;
-        }
-
-        if (extend.getLeftOverrun() == null || extend.getLeftOverrun()) {
-            return false;
-        }
-
-        if (extend.getRightOverrun() == null || extend.getRightOverrun()) {
-            return false;
-        }
-
-        if (extend.getOverHeight() == null || extend.getOverHeight()) {
-            return false;
-        }
-
-        if (extend.getOverWeight() == null || extend.getOverWeight()) {
-            return false;
-        }
-
-        return true;
-    }
-
-    @Override
-    public boolean setProtocolStatus(LiftProtocolStatusType status) {
-        this.liftProtocol.setProtocolStatus(status);
-        return true;
-    }
-
-    @Override
-    public boolean setSyncTaskNo(Integer taskNo) {
-        redisUtil.setSync(RedisKeyType.LIFT_FLAG.key + liftProtocol.getLiftNo(), taskNo);
-        this.liftProtocol.setTaskNo(taskNo);
-        return true;
-    }
-
-    @Override
-    public int generateDeviceTaskNo(int taskNo, LiftTaskModeType type) {
-        return taskNo;
-    }
-
-    @Override
-    public String getCurrentLocNo() {
-        if (liftProtocol.getLev() == null) {
-            return null;
-        }
-        return Utils.getLocNo(liftPointModel.getRow(), liftPointModel.getBay(), liftProtocol.getLev());
-    }
-
-    @Override
-    public String getRealtimeOriginData() {
-        return this.realtimeOriginData;
-    }
-
-    @Override
-    public LiftCommand getPickAndPutCommand(Integer taskNo, Integer pick, Integer put) {
-        LiftCommand command = new LiftCommand();
-        command.setLiftNo(device.getDeviceNo());
-        command.setTaskNo(taskNo);
-        command.setMode(LiftTaskModeType.PICK_PUT.id);
-        command.setPick(pick);
-        command.setPut(put);
-
-        LiftStaProtocol pickSta = findSta(pick);
-        LiftStaProtocol putSta = findSta(put);
-        command.setPickLev(pickSta.getLev());
-        command.setPutLev(putSta.getLev());
-        return command;
-    }
-
-    @Override
-    public LiftCommand getShuttleSwitchCommand(Integer taskNo, Integer pick, Integer put) {
-        LiftCommand command = new LiftCommand();
-        command.setLiftNo(device.getDeviceNo());
-        command.setTaskNo(taskNo);
-        command.setMode(LiftTaskModeType.SHUTTLE_SWITCH.id);
-        command.setPick(pick);
-        command.setPut(put);
-
-        LiftStaProtocol pickSta = findSta(pick);
-        LiftStaProtocol putSta = findSta(put);
-        command.setPickLev(pickSta.getLev());
-        command.setPutLev(putSta.getLev());
-        return command;
-    }
-
-    @Override
-    public LiftCommand getMoveCommand(Integer taskNo, Integer pick, Integer put) {
-        LiftCommand command = new LiftCommand();
-        command.setLiftNo(device.getDeviceNo());
-        command.setTaskNo(taskNo);
-        command.setMode(LiftTaskModeType.MOVE.id);
-        command.setPick(pick);
-        command.setPut(put);
-
-        LiftStaProtocol pickSta = findSta(pick);
-        LiftStaProtocol putSta = findSta(put);
-        command.setPickLev(pickSta.getLev());
-        command.setPutLev(putSta.getLev());
-        return command;
-    }
-
-    @Override
-    public LiftCommand getSwitchIOCommand(Integer taskNo, LiftIoModeType mode) {
-        LiftCommand command = new LiftCommand();
-        command.setLiftNo(device.getDeviceNo());
-        if (mode.equals(LiftIoModeType.IN)) {
-            command.setMode(LiftIoModeType.IN.id);
-        } else {
-            command.setMode(LiftIoModeType.OUT.id);
-        }
-        return command;
-    }
-
-    @Override
-    public LiftCommand getResetCommand(Integer taskNo) {
-        LiftCommand command = new LiftCommand();
-        command.setLiftNo(device.getDeviceNo());
-        command.setMode(LiftTaskModeType.RESET.id);
-        return command;
-    }
-
-    //鑾峰彇璇荤姸鎬佷俊鎭懡浠�
-    private LiftCommand getReadStatusCommand() {
-        LiftCommand command = new LiftCommand();
-        command.setLiftNo(device.getDeviceNo());
-        command.setMode(LiftTaskModeType.READ_STATUS.id);
-        return command;
-    }
-
-    //鍙戝嚭璇锋眰
-    private String requestCommand(LiftCommand command) throws IOException {
-        try {
-            DeviceMsgUtils deviceMsgUtils = SpringUtils.getBean(DeviceMsgUtils.class);
-            if (deviceMsgUtils == null) {
-                return null;
-            }
-
-            //鍘嬬缉鏁版嵁鍖�
-            JSONObject data = JSON.parseObject(JSON.toJSONString(command));
-
-            DeviceCommandMsgModel commandMsgModel = new DeviceCommandMsgModel();
-            commandMsgModel.setDeviceId(device.getDeviceNo());
-            commandMsgModel.setDeviceType(String.valueOf(SlaveType.Lift));
-            commandMsgModel.setCommand(data);
-            String key = deviceMsgUtils.sendDeviceCommand(SlaveType.Lift, device.getDeviceNo(), commandMsgModel);
-            return key;
-        }catch (Exception e) {
-            e.printStackTrace();
-        }
-        return null;
-    }
-
-    private JSONObject queryCommandStatus(String resultKey) {
-        // 鑾峰彇鏈嶅姟鍣ㄥ搷搴�
-        // 灏濊瘯50娆�
-        JSONObject result = null;
-        for (int i = 0; i < 50; i++) {
-            result = getRequestBody(resultKey);
-            if (result == null) {
-                try {
-                    Thread.sleep(500);
-                } catch (Exception e) {
-                    e.printStackTrace();
-                }
-            }else {
-                break;
-            }
-        }
-        return result;
-    }
-
-    public JSONObject getRequestBody(String resultKey) {
-        try {
-            // 鑾峰彇鏈嶅姟鍣ㄥ搷搴�
-            JSONObject result = null;
-            int idx = -1;
-            for (int i = 0; i < resultList.size(); i++) {
-                DeviceMsgModel deviceMsgModel = resultList.get(i);
-                if(deviceMsgModel.getResultKey().equals(resultKey)){
-                    idx = i;
-                    result = JSON.parseObject(JSON.toJSONString(deviceMsgModel.getDeviceMsg()));
-                    break;
-                }
-            }
-
-            if (result == null) {
-                return null;//鏃犲搷搴旂粨鏋�
-            }
-
-            resultList.remove(idx);
-            return result;
-        } catch (Exception e) {
-            return null;
-        }
-    }
-
-    private void listenMessageFromRedis() {
-        try {
-            DeviceMsgUtils deviceMsgUtils = null;
-            try {
-                deviceMsgUtils = SpringUtils.getBean(DeviceMsgUtils.class);
-            }catch (Exception e){
-
-            }
-            if (deviceMsgUtils == null) {
-                return;
-            }
-            DeviceMsgModel deviceMsg = deviceMsgUtils.getDeviceMsg(SlaveType.Lift, device.getDeviceNo());
-            if(deviceMsg == null){
-                return;
-            }
-
-            if (deviceMsg.getDeviceMsgType().equals("status")) {
-                readResultList.add(deviceMsg);
-            }else {
-                resultList.add(deviceMsg);
-            }
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-    }
-
-    private LiftStaProtocol findSta(Integer staNo) {
-        for (LiftStaProtocol liftStaProtocol : this.liftStaProtocols) {
-            if (liftStaProtocol.getSiteId().equals(staNo)) {
-                return liftStaProtocol;
-            }
-        }
-        return null;
-    }
-
-    /**
-     * 鎵╁睍瀛楁
-     */
-    @Data
-    private class InnerLiftExtend {
-
-        /**
-         * 鍓嶈秴闄�
-         */
-        private Boolean frontOverrun;
-
-        /**
-         * 鍚庤秴闄�
-         */
-        private Boolean backOverrun;
-
-        /**
-         * 宸﹁秴闄�
-         */
-        private Boolean leftOverrun;
-
-        /**
-         * 鍙宠秴闄�
-         */
-        private Boolean rightOverrun;
-
-        /**
-         * 瓒呴珮
-         */
-        private Boolean overHeight;
-
-        /**
-         * 瓒呴噸
-         */
-        private Boolean overWeight;
-
-        //PLC宸插畬鎴愪换鍔″彿
-        private Integer plcTaskNoComplete;
-
-    }
-}
diff --git a/src/main/java/com/zy/core/thread/impl/NyShuttleThread.java b/src/main/java/com/zy/core/thread/impl/NyShuttleThread.java
index bf7a896..65cb21e 100644
--- a/src/main/java/com/zy/core/thread/impl/NyShuttleThread.java
+++ b/src/main/java/com/zy/core/thread/impl/NyShuttleThread.java
@@ -1,1235 +1,15 @@
 package com.zy.core.thread.impl;
 
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONObject;
-import com.baomidou.mybatisplus.mapper.EntityWrapper;
-import com.core.common.DateUtils;
-import com.core.common.SpringUtils;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.zy.asrs.entity.BasShuttle;
-import com.zy.asrs.entity.DeviceConfig;
-import com.zy.asrs.entity.LocMast;
-import com.zy.asrs.service.BasShuttleService;
-import com.zy.asrs.service.LocMastService;
-import com.zy.asrs.utils.Utils;
-import com.zy.common.ExecuteSupport;
-import com.zy.common.model.MapNode;
-import com.zy.common.model.NavigateNode;
-import com.zy.common.model.enums.NavigationMapType;
-import com.zy.common.utils.NavigateMapData;
-import com.zy.common.utils.NavigatePositionConvert;
-import com.zy.common.utils.RedisUtil;
-import com.zy.common.utils.ShuttleOperaUtils;
-import com.zy.core.News;
-import com.zy.core.action.ShuttleAction;
-import com.zy.core.model.DeviceCommandMsgModel;
-import com.zy.core.model.command.ShuttleAssignCommand;
-import com.zy.core.utils.DeviceMsgUtils;
-import com.zy.core.cache.OutputQueue;
-import com.zy.core.enums.*;
-import com.zy.core.model.CommandResponse;
-import com.zy.core.model.DeviceMsgModel;
-import com.zy.core.model.command.NyShuttleHttpCommand;
-import com.zy.core.model.command.ShuttleCommand;
-import com.zy.core.model.command.ShuttleRedisCommand;
-import com.zy.core.model.param.ShuttleMoveLocParam;
-import com.zy.core.model.protocol.ShuttleProtocol;
 import com.zy.core.thread.ShuttleThread;
-import com.zy.system.entity.Config;
-import com.zy.system.service.ConfigService;
-import lombok.Data;
 import lombok.extern.slf4j.Slf4j;
-
-import java.io.IOException;
-import java.text.MessageFormat;
-import java.util.*;
 
 @Slf4j
 @SuppressWarnings("all")
 public class NyShuttleThread implements ShuttleThread {
 
-    private DeviceConfig deviceConfig;
-    private RedisUtil redisUtil;
-    private ShuttleProtocol shuttleProtocol;
-    private ShuttleAction shuttleAction = null;
-
-    private static final boolean DEBUG = false;//璋冭瘯妯″紡
-
-    private List<JSONObject> socketReadResults = new ArrayList<>();
-    private List<DeviceMsgModel> socketResults = new ArrayList<>();
-
-    private Long requestReadTime = System.currentTimeMillis();
-    //鍘熷璁惧鏁版嵁
-    private Object originDeviceData;
-
-    public NyShuttleThread(DeviceConfig deviceConfig, RedisUtil redisUtil) {
-        this.deviceConfig = deviceConfig;
-        this.redisUtil = redisUtil;
-    }
-
-    @Override
-    public void run() {
-        News.info("{}鍙峰洓鍚戣溅绾跨▼鍚姩", deviceConfig.getDeviceNo());
-
-        //璁惧璇诲彇
-        Thread readThread = new Thread(() -> {
-            while (true) {
-                try {
-                    listenMessageFromRedis();
-                    listenInit();//鐩戝惉鍒濆鍖栦簨浠�
-                    readStatus();
-                    Thread.sleep(100);
-
-//                    //灏忚溅绌洪棽涓旀湁璺戝簱绋嬪簭
-//                    shuttleAction.moveLoc(deviceConfig.getDeviceNo());
-                } catch (Exception e) {
-                    log.error("ShuttleThread Fail", e);
-                }
-            }
-        });
-        readThread.start();
-
-//        //璁惧鎵ц
-//        Thread executeThread = new Thread(() -> {
-//            while (true) {
-//                try {
-//                    if (shuttleAction == null) {
-//                        try {
-//                            shuttleAction = SpringUtils.getBean(ShuttleAction.class);
-//                        }catch (Exception e){
-//                        }
-//                        continue;
-//                    }
-//
-//                    Object object = redisUtil.get(RedisKeyType.SHUTTLE_FLAG.key + deviceConfig.getDeviceNo());
-//                    if (object == null) {
-//                        continue;
-//                    }
-//
-//                    Integer taskNo = Integer.valueOf(String.valueOf(object));
-//                    if (taskNo != 0) {
-//                        //瀛樺湪浠诲姟闇�瑕佹墽琛�
-//                        boolean result = shuttleAction.executeWork(deviceConfig.getDeviceNo(), taskNo);
-//                    }
-//                    Thread.sleep(100);
-//                } catch (Exception e) {
-//                    e.printStackTrace();
-//                }
-//            }
-//        });
-//        executeThread.start();
-    }
-
-    private void listenMessageFromRedis() {
-        try {
-            DeviceMsgUtils deviceMsgUtils = null;
-            try {
-                deviceMsgUtils = SpringUtils.getBean(DeviceMsgUtils.class);
-            }catch (Exception e){
-
-            }
-            if (deviceMsgUtils == null) {
-                return;
-            }
-            DeviceMsgModel deviceMsg = deviceMsgUtils.getDeviceMsg(SlaveType.Shuttle, deviceConfig.getDeviceNo());
-            if(deviceMsg == null){
-                return;
-            }
-
-            JSONObject data = JSON.parseObject(JSON.toJSONString(deviceMsg.getDeviceMsg()));
-
-            if (deviceMsg.getDeviceMsgType().equals("status")) {
-                data.put("originDeviceData", deviceMsg.getDeviceOriginMsg());
-                socketReadResults.add(data);
-            } else {
-                socketResults.add(deviceMsg);//娣诲姞鏁版嵁
-            }
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-    }
-
-    public JSONObject getRequestBody(String resultKey) {
-        try {
-            // 鑾峰彇鏈嶅姟鍣ㄥ搷搴�
-            JSONObject result = null;
-            int idx = -1;
-            for (int i = 0; i < socketResults.size(); i++) {
-                DeviceMsgModel deviceMsgModel = socketResults.get(i);
-                if(deviceMsgModel.getResultKey().equals(resultKey)){
-                    idx = i;
-                    result = JSON.parseObject(JSON.toJSONString(deviceMsgModel.getDeviceMsg()));
-                    break;
-                }
-            }
-
-            if (result == null) {
-                return null;//鏃犲搷搴旂粨鏋�
-            }
-
-            socketResults.remove(idx);
-            return filterBodyData(result);//杩斿洖Body缁撴灉闆�
-        } catch (Exception e) {
-            return null;
-        }
-    }
-
-    private void readStatus() {
-        try {
-            if (null == shuttleProtocol) {
-                shuttleProtocol = new ShuttleProtocol();
-                shuttleProtocol.setShuttleNo(deviceConfig.getDeviceNo());
-                shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.IDLE);
-
-                InnerSuhttleExtend extend = new InnerSuhttleExtend();
-                shuttleProtocol.setExtend(extend);
-            }
-
-            //----------璇诲彇鍥涘悜绌挎杞︾姸鎬�-----------
-            DeviceMsgUtils deviceMsgUtils = null;
-            try {
-                deviceMsgUtils = SpringUtils.getBean(DeviceMsgUtils.class);
-            }catch (Exception e){
-
-            }
-            if(deviceMsgUtils == null){
-                return;
-            }
-
-            NyShuttleHttpCommand readStatusCommand = getReadStatusCommand(deviceConfig.getDeviceNo());
-            //鎸囦护瓒呰繃2鏉★紝涓嶅啀涓嬪彂浠诲姟鐘舵�佽姹�
-            TreeSet<String> deviceCommandMsgListKey = deviceMsgUtils.getDeviceCommandMsgListKey(SlaveType.Shuttle, deviceConfig.getDeviceNo());
-            if (deviceCommandMsgListKey.size() < 2) {
-                if ((System.currentTimeMillis() - requestReadTime) > 500) {
-                    requestCommand(readStatusCommand);//璇锋眰鐘舵��
-                    requestReadTime = System.currentTimeMillis();
-                }
-            }
-
-            if (this.socketReadResults.isEmpty()) {
-                if (System.currentTimeMillis() - shuttleProtocol.getLastOnlineTime() > 1000 * 60) {
-                    //鏈�鍚庝竴娆′笂绾挎椂闂磋秴杩�60s锛岃瀹氱绾�
-                    this.shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.OFFLINE);
-                }
-                return;
-            }
-
-            JSONObject data = this.socketReadResults.get(0);
-            this.socketReadResults.remove(0);
-            //----------璇诲彇鍥涘悜绌挎杞︾姸鎬�-----------
-            //灏忚溅璁惧鐘舵��
-            shuttleProtocol.setDeviceStatus(data.getInteger("deviceStatus"));
-            //灏忚溅妯″紡
-            shuttleProtocol.setMode(data.getInteger("mode"));
-            //褰撳墠浜岀淮鐮�
-            shuttleProtocol.setCurrentCode(data.getString("currentCode"));
-            //鐢垫睜鐢甸噺
-            shuttleProtocol.setBatteryPower(data.getString("batteryPower"));
-            //鐢垫睜鐢靛帇
-            shuttleProtocol.setBatteryVoltage(data.getInteger("batteryVoltage"));
-            //鏁呴殰
-            shuttleProtocol.setErrorCode(data.getString("errorCode"));
-            //鏄惁椤跺崌
-            shuttleProtocol.setHasLift(data.getBoolean("hasLift"));
-            //鏄惁鏈夋墭鐩�
-            shuttleProtocol.setHasPallet(data.getBoolean("hasPallet"));
-            //琛岄┒鏂瑰悜
-            shuttleProtocol.setRunDirection(data.getString("runDirection"));
-            //鏄惁涓哄厖鐢电姸鎬�
-            shuttleProtocol.setHasCharge(data.getBoolean("hasCharge"));
-            //杩愯閫熷害
-            shuttleProtocol.setSpeed(data.getInteger("speed"));
-
-            //*********璇诲彇鎵╁睍瀛楁**********
-            JSONObject extendData = data.getJSONObject("extend");
-            InnerSuhttleExtend extend = (InnerSuhttleExtend) shuttleProtocol.getExtend();
-            //绠″埗鐘舵��
-            extend.setSuspendState(extendData.getInteger("suspendState"));
-            //鏈�楂樼數鑺數鍘�(mV)
-            extend.setMaxCellVoltage(extendData.getInteger("maxCellVoltage"));
-            //鏈�浣庣數鑺數鍘�(mV)
-            extend.setMinCellVoltage(extendData.getInteger("minCellVoltage"));
-            //鐢垫睜鐢靛帇
-            extend.setVoltage(extendData.getInteger("voltage"));
-            //鍏呮斁鐢靛惊鐜鏁�
-            extend.setChargeCycleTimes(extendData.getInteger("chargeCycleTimes"));
-            //鍓╀綑鐢甸噺
-            extend.setSurplusQuantity(extendData.getInteger("surplusQuantity"));
-            //鎬荤數閲�
-            extend.setCountQuantity(extendData.getInteger("countQuantity"));
-            shuttleProtocol.setExtend(extend);//鎵╁睍瀛楁
-
-            //鏈�杩戜竴娆″湪绾挎椂闂�
-            shuttleProtocol.setLastOnlineTime(System.currentTimeMillis());
-            //璇诲彇鍥涘悜绌挎杞︾姸鎬�-end
-
-            //灏忚溅澶勪簬杩愯涓紝灏嗘爣璁扮疆涓簍rue
-            if (shuttleProtocol.getDeviceStatus() == 0) {
-                shuttleProtocol.setPakMk(true);
-            }
-
-            if (shuttleProtocol.getProtocolStatusType() == null && shuttleProtocol.getDeviceStatus().intValue() == 1) {
-                //灏忚溅绌洪棽鐘舵�併�佸皬杞︿换鍔$姸鎬佷负鏈煡锛岃瀹氭浘绂荤嚎杩囷紝闇�瑕佸浣嶆垚绌洪棽
-                this.shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.IDLE);
-            }
-
-            if (shuttleProtocol.getProtocolStatusType().equals(ShuttleProtocolStatusType.OFFLINE) && shuttleProtocol.getDeviceStatus().intValue() == 1) {
-                this.shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.IDLE);
-            }
-
-            this.originDeviceData = data.getString("originDeviceData");
-
-            OutputQueue.SHUTTLE.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), deviceConfig.getDeviceNo()));
-        } catch (Exception e) {
-            e.printStackTrace();
-            OutputQueue.SHUTTLE.offer(MessageFormat.format("銆恵0}銆戝洓鍚戠┛姊溅Socket鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), deviceConfig.getDeviceNo(), deviceConfig.getIp(), deviceConfig.getPort()));
-        }
-    }
-
-    /**
-     * 鐩戝惉灏忚溅澶嶄綅鍒濆鍖栦俊鍙�
-     */
-    public void listenInit() {
-        try {
-            // 鑾峰彇鏈嶅姟鍣ㄥ搷搴�
-            JSONObject result = null;
-            int removeIdx = -1;
-            JSONObject socketResult = null;
-            for (int i = 0; i < socketResults.size(); i++) {
-                DeviceMsgModel deviceMsgModel = socketResults.get(i);
-                if (!deviceMsgModel.getDeviceMsgType().equals("shuttleInit")) {
-                    continue;
-                }
-                removeIdx = i;
-                socketResult = JSON.parseObject(JSON.toJSONString(deviceMsgModel.getDeviceMsg()));
-                break;
-            }
-
-            if (socketResult == null) {
-                return;
-            }
-
-            JSONObject resultResponse = JSON.parseObject(socketResult.get("request").toString());
-            JSONObject resultHeader = JSON.parseObject(resultResponse.get("header").toString());
-            JSONObject resultBody = JSON.parseObject(resultResponse.get("body").toString());
-            String requestType = resultBody.getString("requestType");
-            Integer requestId = resultHeader.getInteger("requestId");
-            if (requestType.equals("init")) {
-                socketResults.remove(removeIdx);
-
-                Integer code = resultBody.getInteger("code");
-                //灏忚溅澶嶄綅璇锋眰
-                ShuttleCommand initCommand = getInitCommand(requestId, code);
-                //鍙戝嚭璇锋眰
-                NyShuttleHttpCommand httpCommand = JSON.parseObject(initCommand.getBody(), NyShuttleHttpCommand.class);
-                requestCommand(httpCommand);
-
-                log.info(MessageFormat.format("銆恵0}銆戝洓鍚戣溅澶嶄綅涓婃姤 ===>> [code:{1}] [ip:{2}] [port:{3}]", deviceConfig.getDeviceNo(), code, deviceConfig.getIp(), deviceConfig.getPort()));
-                OutputQueue.SHUTTLE.offer(MessageFormat.format("銆恵0}銆戝洓鍚戣溅澶嶄綅涓婃姤 ===>> [code:{1}] [ip:{2}] [port:{3}]", deviceConfig.getDeviceNo(), code, deviceConfig.getIp(), deviceConfig.getPort()));
-            }
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-    }
-
-    @Override
-    public ShuttleProtocol getStatus() {
-        return getStatus(true);
-    }
-
-    @Override
-    public ShuttleProtocol getStatus(boolean clone) {
-        if (this.shuttleProtocol == null) {
-            return null;
-        }
-        return clone ? this.shuttleProtocol.clone() : this.shuttleProtocol;
-    }
-
-    @Override
-    public CommandResponse movePath(List<NavigateNode> nodes, Integer taskNo) {
-        CommandResponse response = new CommandResponse(true);
-        return response;
-    }
-
-//    @Override
-//    public CommandResponse move(ShuttleCommand command) {
-//        CommandResponse response = new CommandResponse(false);
-//        try {
-//            //鍙戝嚭璇锋眰
-//            NyShuttleHttpCommand httpCommand = JSON.parseObject(command.getBody(), NyShuttleHttpCommand.class);
-//            Map<String, Object> body = httpCommand.getRequest().getBody();
-//            Object pathObj = body.get("path");
-//            int taskId = Integer.parseInt(body.get("taskId").toString());
-//            List<JSONObject> path = JSON.parseArray(JSON.toJSONString(pathObj), JSONObject.class);
-//            ArrayList<NyShuttleHttpCommand> commandList = new ArrayList<>();
-//            while (!path.isEmpty()) {
-//                ArrayList<Map<String, Object>> list = new ArrayList<>();
-//                if (path.size() > 10) {
-//                    List<JSONObject> subList = path.subList(0, 10);
-//                    list.addAll(subList);
-//
-//                    List<JSONObject> tmp = new ArrayList<>();
-//                    for (int i = 10; i < path.size(); i++) {
-//                        tmp.add(path.get(i));
-//                    }
-//                    path = tmp;
-//                }else  {
-//                    list.addAll(path);
-//                    path.clear();
-//                }
-//
-//                NyShuttleHttpCommand httpCommandCopy = JSON.parseObject(JSON.toJSONString(httpCommand), NyShuttleHttpCommand.class);
-//                JSONObject bodyCopy = JSON.parseObject(JSON.toJSONString(body));
-//
-//                NyShuttleHttpCommand.NyRequest request = httpCommandCopy.getRequest();
-//                bodyCopy.put("path", list);
-//                bodyCopy.put("taskId", taskId++);
-//                request.setBody(bodyCopy);
-//                httpCommandCopy.setRequest(request);
-//
-//                commandList.add(httpCommandCopy);//add copy
-//            }
-//
-//            for (NyShuttleHttpCommand requestCommand : commandList) {
-//                while (true) {
-//                    JSONObject result = requestCommand(requestCommand);
-//                    if (result == null) {
-////                        return response;//璇锋眰澶辫触
-//                        continue;//璇锋眰澶辫触灏濊瘯閲嶆柊璇锋眰
-//                    }
-//                    this.shuttleProtocol.setSendTime(System.currentTimeMillis());//鎸囦护涓嬪彂鏃堕棿
-//                    response.setMessage(JSON.toJSONString(result));
-//                    response.setResult(true);
-//                    break;
-//                }
-//            }
-//            return response;
-//        } catch (Exception e) {
-//            e.printStackTrace();
-//            response.setMessage(e.getMessage());
-//            return response;
-//        }
-//    }
-
-    @Override
-    public CommandResponse move(ShuttleCommand command) {
-        CommandResponse response = new CommandResponse(false);
-        try {
-            //鍙戝嚭璇锋眰
-            NyShuttleHttpCommand httpCommand = JSON.parseObject(command.getBody(), NyShuttleHttpCommand.class);
-            String resultKey = requestCommand(httpCommand);
-            //鏌ヨ璇锋眰缁撴灉
-            JSONObject result = queryCommandStatus(resultKey);
-            if (result == null) {
-                return response;//璇锋眰澶辫触
-            }
-            this.shuttleProtocol.setSendTime(System.currentTimeMillis());//鎸囦护涓嬪彂鏃堕棿
-            response.setMessage(JSON.toJSONString(result));
-            response.setResult(true);
-            return response;
-        } catch (Exception e) {
-            e.printStackTrace();
-            response.setMessage(e.getMessage());
-            return response;
-        }
-    }
-
-    @Override
-    public CommandResponse lift(ShuttleCommand command) {
-        CommandResponse response = new CommandResponse(false);
-        try {
-            //鍙戝嚭璇锋眰
-            NyShuttleHttpCommand httpCommand = JSON.parseObject(command.getBody(), NyShuttleHttpCommand.class);
-            String resultKey = requestCommand(httpCommand);
-            //鏌ヨ璇锋眰缁撴灉
-            JSONObject result = queryCommandStatus(resultKey);
-            if (result == null) {
-                return response;//璇锋眰澶辫触
-            }
-            this.shuttleProtocol.setSendTime(System.currentTimeMillis());//鎸囦护涓嬪彂鏃堕棿
-            response.setMessage(JSON.toJSONString(result));
-            response.setResult(true);
-            return response;
-        } catch (Exception e) {
-            e.printStackTrace();
-            return response;
-        }
-    }
-
-    @Override
-    public CommandResponse charge(ShuttleCommand command) {
-        CommandResponse response = new CommandResponse(false);
-        try {
-            //鍙戝嚭璇锋眰
-            NyShuttleHttpCommand httpCommand = JSON.parseObject(command.getBody(), NyShuttleHttpCommand.class);
-            String resultKey = requestCommand(httpCommand);
-            //鏌ヨ璇锋眰缁撴灉
-            JSONObject result = queryCommandStatus(resultKey);
-            if (result == null) {
-                return response;//璇锋眰澶辫触
-            }
-            this.shuttleProtocol.setSendTime(System.currentTimeMillis());//鎸囦护涓嬪彂鏃堕棿
-            response.setMessage(JSON.toJSONString(result));
-            response.setResult(true);
-            return response;
-        } catch (Exception e) {
-            e.printStackTrace();
-            return response;
-        }
-    }
-
-    @Override
-    public CommandResponse reset(ShuttleCommand command) {
-        setSyncTaskNo(0);
-        setProtocolStatus(ShuttleProtocolStatusType.IDLE);
-        enableMoveLoc(null, false);
-        return new CommandResponse(true, JSON.toJSONString(command));
-    }
-
-    @Override
-    public CommandResponse updateLocation(ShuttleCommand command) {
-        CommandResponse response = new CommandResponse(false);
-        try {
-            //鍙戝嚭璇锋眰
-            NyShuttleHttpCommand httpCommand = JSON.parseObject(command.getBody(), NyShuttleHttpCommand.class);
-            String resultKey = requestCommand(httpCommand);
-            //鏌ヨ璇锋眰缁撴灉
-            JSONObject result = queryCommandStatus(resultKey);
-            if (result == null) {
-                return response;//璇锋眰澶辫触
-            }
-            this.shuttleProtocol.setSendTime(System.currentTimeMillis());//鎸囦护涓嬪彂鏃堕棿
-            response.setMessage(JSON.toJSONString(result));
-            response.setResult(true);
-            return response;
-        } catch (Exception e) {
-            e.printStackTrace();
-            return response;
-        }
-    }
-
-    @Override
-    public boolean isIdle() {
-        return this.isIdle(null);
-    }
-
-    @Override
-    public boolean isIdle(ExecuteSupport support) {
-        if (null != support) {
-            Boolean judgement = support.judgement();
-            if (judgement != null && !judgement) {
-                return true;
-            }
-        }
-
-        if (this.shuttleProtocol.getDeviceStatus() == null
-                || this.shuttleProtocol.getPakMk() == null
-                || this.shuttleProtocol.getErrorCode() == null
-                || this.shuttleProtocol.getProtocolStatus() == null
-                || this.shuttleProtocol.getMode() == null
-                || this.shuttleProtocol.getExtend() == null
-        ) {
-            return false;
-        }
-
-        InnerSuhttleExtend extend = (InnerSuhttleExtend) this.shuttleProtocol.getExtend();
-
-        boolean res = this.shuttleProtocol.getDeviceStatus() == 1
-                && this.shuttleProtocol.getMode() == 1
-                && this.shuttleProtocol.getPakMk()
-                && this.shuttleProtocol.getErrorCode().equals("0")
-                && this.shuttleProtocol.getTaskNo() == 0
-                && (this.shuttleProtocol.getProtocolStatus() == ShuttleProtocolStatusType.IDLE.id
-                || this.shuttleProtocol.getProtocolStatus() == ShuttleProtocolStatusType.WAITING.id
-                || this.shuttleProtocol.getProtocolStatus() == ShuttleProtocolStatusType.CHARGING_WAITING.id)
-                && extend.getSuspendState() == 0;
-        return res;
-    }
-
-    @Override
-    public boolean isDeviceIdle() {
-        return isDeviceIdle(null);
-    }
-
-    @Override
-    public boolean isDeviceIdle(ExecuteSupport support) {
-        if (null != support) {
-            Boolean judgement = support.judgement();
-            if (judgement != null && !judgement) {
-                return true;
-            }
-        }
-
-        if (this.shuttleProtocol.getDeviceStatus() == null
-                || this.shuttleProtocol.getPakMk() == null
-                || this.shuttleProtocol.getErrorCode() == null
-                || this.shuttleProtocol.getMode() == null
-                || this.shuttleProtocol.getExtend() == null
-        ) {
-            return false;
-        }
-
-        InnerSuhttleExtend extend = (InnerSuhttleExtend) this.shuttleProtocol.getExtend();
-
-        boolean res = this.shuttleProtocol.getDeviceStatus() == 1
-                && this.shuttleProtocol.getMode() == 1
-                && this.shuttleProtocol.getPakMk()
-                && this.shuttleProtocol.getErrorCode().equals("0")
-                && extend.getSuspendState() == 0
-                ;
-        return res;
-    }
-
-    @Override
-    public ShuttleRequireChargeType isRequireCharge() {
-        if (this.shuttleProtocol.getDeviceStatus() == null
-                || this.shuttleProtocol.getPakMk() == null
-                || this.shuttleProtocol.getErrorCode() == null
-                || this.shuttleProtocol.getProtocolStatus() == null
-                || this.shuttleProtocol.getMode() == null
-                || this.shuttleProtocol.getExtend() == null
-        ) {
-            return ShuttleRequireChargeType.NONE;
-        }
-
-        InnerSuhttleExtend extend = (InnerSuhttleExtend) this.shuttleProtocol.getExtend();
-
-        boolean res = this.shuttleProtocol.getDeviceStatus() == 1
-                && this.shuttleProtocol.getMode() == 1
-                && this.shuttleProtocol.getPakMk()
-                && this.shuttleProtocol.getErrorCode().equals("0")
-                && this.shuttleProtocol.getProtocolStatus() == ShuttleProtocolStatusType.IDLE.id
-                && extend.getSuspendState() == 0
-                ;
-        if (!res) {
-            return ShuttleRequireChargeType.NONE;
-        } else {
-            // 鐢甸噺灏忎簬闃堝�奸渶瑕佽繘琛屽厖鐢�
-            try {
-                BasShuttleService shuttleService = SpringUtils.getBean(BasShuttleService.class);
-                if (shuttleService == null) {
-                    return ShuttleRequireChargeType.NONE;
-                }
-
-                BasShuttle basShuttle = shuttleService.selectOne(new EntityWrapper<BasShuttle>().eq("shuttle_no", deviceConfig.getDeviceNo()));
-                if (basShuttle == null) {
-                    return ShuttleRequireChargeType.NONE;
-                }
-
-                Integer chargeLine = basShuttle.getChargeLine();
-                if (chargeLine == null) {
-                    return ShuttleRequireChargeType.NONE;
-                }
-
-                boolean chargeResult = Integer.valueOf(this.shuttleProtocol.getBatteryPower()) < chargeLine;
-                if (chargeResult) {
-                    return ShuttleRequireChargeType.FORCE_CHARGE;//闇�瑕佸己鍒跺厖鐢�
-                }
-
-                Integer suggestChargeLine = basShuttle.getSuggestChargeLine();
-                if (suggestChargeLine == null) {
-                    return ShuttleRequireChargeType.NONE;
-                }
-
-                boolean suggestChargeResult = Integer.valueOf(this.shuttleProtocol.getBatteryPower()) < suggestChargeLine;
-                if (suggestChargeResult) {
-                    return ShuttleRequireChargeType.SUGGEST_CHARGE;//寤鸿鍏呯數
-                }
-
-                return ShuttleRequireChargeType.NONE;
-            } catch (Exception e) {
-                return ShuttleRequireChargeType.NONE;
-            }
-        }
-    }
-
-    @Override
-    public boolean isCharging() {
-        if (this.shuttleProtocol.getDeviceStatus() == null || this.shuttleProtocol.getHasCharge() == null) {
-            return false;
-        }
-
-        if (this.shuttleProtocol.getDeviceStatus() == 0 && this.shuttleProtocol.getHasCharge()) {
-            //杩愯涓� && 鍏呯數涓�
-            return true;
-        }
-        return false;
-    }
-
-    @Override
-    public boolean isChargingCompleted() {
-        Integer maxPower = 100;
-        ConfigService configService = SpringUtils.getBean(ConfigService.class);
-        if (configService != null) {
-            Config chargeMaxValue = configService.selectOne(new EntityWrapper<Config>()
-                    .eq("code", "chargeMaxValue")
-                    .eq("status", 1));
-            if (chargeMaxValue != null) {
-                maxPower = Integer.parseInt(chargeMaxValue.getValue());
-            }
-        }
-
-        //***************鍒ゆ柇鏄惁婊″厖鏍″噯***************
-        Config shuttleMaxPowerVerifyConfig = configService.selectOne(new EntityWrapper<Config>()
-                .eq("code", "shuttleMaxPowerVerify")
-                .eq("status", 1));
-        if (shuttleMaxPowerVerifyConfig != null) {
-            if (shuttleMaxPowerVerifyConfig.getValue().equals("true")) {
-                if (this.shuttleProtocol.getBatteryPower() == null) {
-                    return false;
-                }
-
-                if (this.shuttleProtocol.getBatteryVoltage() < 5630) {
-                    return false;//鐢靛帇涓嶅缁х画鍏呯數
-                }
-            }
-        }
-        //***************鍒ゆ柇鏄惁婊″厖鏍″噯***************
-
-        if (this.shuttleProtocol.getHasCharge() == null) {
-            return false;
-        }
-
-        if (this.shuttleProtocol.getBatteryPower() == null) {
-            return false;
-        }
-
-        if (!this.shuttleProtocol.getHasCharge()) {
-            return false;
-        }
-
-        if (Integer.valueOf(this.shuttleProtocol.getBatteryPower()) >= maxPower) {
-            return true;
-        }
-        return false;
-    }
-
-    @Override
-    public boolean isFault() {
-        if (this.shuttleProtocol.getErrorCode() == null
-                || this.shuttleProtocol.getMode() == null
-                || this.shuttleProtocol.getExtend() == null
-        ) {
-            return false;
-        }
-
-        if (this.shuttleProtocol.getMode() == 0) {
-            return true;
-        }
-
-        if (!this.shuttleProtocol.getErrorCode().equals("0")) {
-            return true;
-        }
-
-        InnerSuhttleExtend extend = (InnerSuhttleExtend) this.shuttleProtocol.getExtend();
-
-        if (extend.getSuspendState() == 1) {
-            return true;
-        }
-
-        return false;
-    }
-
-    @Override
-    public List<NavigateNode> getMoveAdvancePath() {
-        ObjectMapper objectMapper = SpringUtils.getBean(ObjectMapper.class);
-        NavigateMapData navigateMapData = SpringUtils.getBean(NavigateMapData.class);
-        ArrayList<NavigateNode> path = new ArrayList<>();
-        if (shuttleProtocol.getTaskNo() != 0) {
-            //瀛樺湪浠诲姟锛岃幏鍙栨寚浠�
-            Object object = redisUtil.get(RedisKeyType.SHUTTLE_WORK_FLAG.key + shuttleProtocol.getTaskNo());
-            if (object != null) {
-                ShuttleRedisCommand redisCommand = null;
-                try {
-                    redisCommand = objectMapper.readValue(String.valueOf(object), ShuttleRedisCommand.class);
-                } catch (IOException e) {
-                    return path;
-                }
-                List<NavigateNode> nodes = redisCommand.getAssignCommand().getNodes();//绌挎杞﹂璁¤矾寰�
-                if (nodes == null) {
-                    return path;
-                }
-                if (!nodes.isEmpty()) {
-                    path.addAll(nodes);
-                }
-                NavigateNode navigateNode = path.get(0);
-                int lev = navigateNode.getZ();
-
-                //灏嗚矾寰勯攣涓庡皬杞﹁矾寰勮繘琛屽尮閰�
-                ArrayList<NavigateNode> tmp = new ArrayList<>();
-                //妫�娴嬭矾寰勬槸鍚﹁閿佸畾
-                int[][] map = navigateMapData.getDataFromRedis(lev, NavigationMapType.getDfxWithDevice(), null, null);
-                for (NavigateNode node : path) {
-                    if(map[node.getX()][node.getY()] == -999) {
-                        tmp.add(node);
-                    }
-                }
-
-                path = tmp;
-            }
-        }
-        return path;
-    }
-
-    @Override
-    public int generateDeviceTaskNo(int taskNo, ShuttleTaskNoType type) {
-        return taskNo;
-    }
-
-    @Override
-    public synchronized boolean setProtocolStatus(ShuttleProtocolStatusType status) {
-        if (status.equals(ShuttleProtocolStatusType.IDLE)) {
-            this.shuttleProtocol.setIdleTime(System.currentTimeMillis());
-        }
-        this.shuttleProtocol.setProtocolStatus(status);
-        return true;
-    }
-
-    @Override
-    public synchronized boolean setTaskNo(Integer taskNo) {
-        redisUtil.set(RedisKeyType.SHUTTLE_FLAG.key + shuttleProtocol.getShuttleNo(), taskNo);
-        this.shuttleProtocol.setTaskNo(taskNo);
-        return true;
-    }
-
-    @Override
-    public synchronized boolean setSyncTaskNo(Integer taskNo) {
-        redisUtil.setSync(RedisKeyType.SHUTTLE_FLAG.key + shuttleProtocol.getShuttleNo(), taskNo);
-        this.shuttleProtocol.setTaskNo(taskNo);
-        return true;
-    }
-
-    @Override
-    public synchronized boolean setPakMk(boolean pakMk) {
-        this.shuttleProtocol.setPakMk(pakMk);
-        return true;
-    }
-
-    @Override
-    public boolean enableMoveLoc(ShuttleMoveLocParam param, boolean enable) {
-        if (enable) {
-            shuttleProtocol.setMoveLoc(true);//寮�鍚窇搴�
-            shuttleProtocol.setMoveType(param.getMoveType());
-            shuttleProtocol.setXStart(param.getStartX());
-            shuttleProtocol.setXTarget(param.getTargetX());
-            shuttleProtocol.setXCurrent(param.getStartX());
-            shuttleProtocol.setYStart(param.getStartY());
-            shuttleProtocol.setYTarget(param.getTargetY());
-            shuttleProtocol.setYCurrent(param.getStartY());
-        }else {
-            shuttleProtocol.setMoveLoc(false);
-            shuttleProtocol.setMoveType(0);
-            shuttleProtocol.setXStart(0);
-            shuttleProtocol.setXTarget(0);
-            shuttleProtocol.setXCurrent(0);
-            shuttleProtocol.setYStart(0);
-            shuttleProtocol.setYTarget(0);
-            shuttleProtocol.setYCurrent(0);
-        }
-        return true;
-    }
-
-    @Override
-    public boolean requestWaiting() {
-        if (this.shuttleProtocol.getProtocolStatusType().equals(ShuttleProtocolStatusType.IDLE)) {
-            this.shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.WAITING);
-            return true;
-        }
-        return false;
-    }
-
-    @Override
-    public boolean enableDemo(boolean enable) {
-        shuttleProtocol.setDemo(enable);
-        return true;
-    }
-
-    @Override
-    public boolean offerSystemMsg(String format, Object... arguments) {
-        String msg = News.replace(format, arguments);
-        shuttleProtocol.setSystemMsg(msg);
-        return true;
-    }
-
-    @Override
-    public boolean setTrafficControl(boolean enable, List<NavigateNode> nodeList) {
-        shuttleProtocol.setTrafficControl(enable);
-        shuttleProtocol.setTrafficControlNodes(nodeList);
-        return true;
-    }
-
-    @Override
-    public void updateDeviceDataLogTime(long time) {
-        shuttleProtocol.setDeviceDataLog(time);
-    }
-
-    @Override
-    public JSONObject parseStatusToMsg(ShuttleProtocol shuttleProtocol) {
-        JSONObject result = new JSONObject();
-        result.put("msgType", "responseMsg");
-        result.put("robotId", 5002);
-
-        JSONObject header = new JSONObject();
-        header.put("responseId", 5005631);
-        header.put("version", "RGV-APP-F427-N24036-1112");
-
-        JSONObject body = new JSONObject();
-        body.put("responseType", "state");
-
-        return null;
-    }
-
-    @Override
-    public boolean restartCalcPath() {
-        ConfigService configService = SpringUtils.getBean(ConfigService.class);
-        if (configService == null) {
-            return false;
-        }
-
-        ShuttleAction shuttleAction = SpringUtils.getBean(ShuttleAction.class);
-        if (shuttleAction == null) {
-            return false;
-        }
-
-        ShuttleOperaUtils shuttleOperaUtils = SpringUtils.getBean(ShuttleOperaUtils.class);
-        if (shuttleOperaUtils == null) {
-            return false;
-        }
-
-        ObjectMapper objectMapper = SpringUtils.getBean(ObjectMapper.class);
-        if (objectMapper == null) {
-            return false;
-        }
-
-        boolean trafficControlRestartCalcPath = false;
-        Config trafficControlRestartCalcPathConfig = configService.selectOne(new EntityWrapper<Config>()
-                .eq("code", "trafficControlRestartCalcPath")
-        );
-        if(trafficControlRestartCalcPathConfig != null) {
-            trafficControlRestartCalcPath = trafficControlRestartCalcPathConfig.getValue().equals("Y") ? true : false;
-        }
-
-        if (!trafficControlRestartCalcPath) {
-            return false;
-        }
-
-        if (shuttleProtocol.getTaskNo() == 0) {
-            return false;
-        }
-
-        if (!this.isDeviceIdle()) {
-            return false;
-        }
-
-        Object object = redisUtil.get(RedisKeyType.SHUTTLE_RESTART_CALC_PATH.key + shuttleProtocol.getShuttleNo());
-        if (object != null) {
-            return false;
-        }
-
-        Integer taskNo = shuttleProtocol.getTaskNo();
-        Object obj = redisUtil.get(RedisKeyType.SHUTTLE_WORK_FLAG.key + taskNo);
-        if (obj == null) {
-            return false;
-        }
-
-        ShuttleRedisCommand redisCommand = null;
-        try {
-            redisCommand = objectMapper.readValue(String.valueOf(obj), ShuttleRedisCommand.class);
-        } catch (IOException e) {
-            throw new RuntimeException(e);
-        }
-
-        if (redisCommand == null) {
-            return false;
-        }
-
-        ShuttleAssignCommand assignCommand = redisCommand.getAssignCommand();
-        String locNo = assignCommand.getLocNo();
-        List<NavigationMapType> mapTypes = assignCommand.getMapTypes();
-        if (locNo == null) {
-            return false;
-        }
-
-        if (mapTypes == null) {
-            return false;
-        }
-
-        List<NavigationMapType> restartCalcMapTypes = new ArrayList<>(mapTypes);
-        restartCalcMapTypes.add(NavigationMapType.SHUTTLE);
-
-        if (assignCommand.getTaskMode() == ShuttleTaskModeType.TRANSPORT.id) {
-            restartCalcMapTypes.add(NavigationMapType.DFX);
-        }
-
-        String currentLocNo = shuttleProtocol.getCurrentLocNo();
-        List<ShuttleCommand> commands = shuttleOperaUtils.getStartToTargetCommands(currentLocNo, locNo, restartCalcMapTypes, assignCommand, this);
-        if (commands == null) {
-            return false;
-        }
-
-        if (assignCommand.getTaskMode() == ShuttleTaskModeType.TRANSPORT.id) {
-            List<ShuttleCommand> originCommands = assignCommand.getCommands();
-            if (originCommands == null) {
-                return false;
-            }
-
-            ShuttleCommand firstCommand = originCommands.get(0);
-            ShuttleCommand endCommand = originCommands.get(originCommands.size() - 1);
-
-            if (firstCommand.getMode() != ShuttleCommandModeType.PALLET_LIFT.id) {
-                return false;
-            }
-
-            if (endCommand.getMode() != ShuttleCommandModeType.PALLET_DOWN.id) {
-                return false;
-            }
-
-            commands.add(0, firstCommand);
-            commands.add(endCommand);
-        }
-
-        assignCommand.setCommands(commands);
-
-        //涓嬪彂浠诲姟
-        shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand);
-        redisUtil.set(RedisKeyType.SHUTTLE_RESTART_CALC_PATH.key + shuttleProtocol.getShuttleNo(), true, 60);
-        return true;
-    }
-
-    @Override
-    public ShuttleCommand getMoveCommand(Integer taskNo, String startCodeNum, String distCodeNum, Integer allDistance, Integer runDirection, Integer runSpeed, List<NavigateNode> nodes, Boolean shuttleDirectionReverse) {
-        NavigateMapData navigateMapData = SpringUtils.getBean(NavigateMapData.class);
-        NyShuttleHttpCommand httpStandard = getHttpStandard(deviceConfig.getDeviceNo(), taskNo);
-        NyShuttleHttpCommand.NyRequest request = httpStandard.getRequest();
-
-        ArrayList<HashMap<String, Object>> path = new ArrayList<>();
-
-        Integer taskId = getTaskId();
-        HashMap<String, Object> body = new HashMap<>();
-        body.put("requestType", "move");//绉诲姩鍛戒护
-        body.put("taskId", taskId);//TaskID闇�瑕侀殢鏈�
-        body.put("path", path);
-        request.setBody(body);
-
-        NavigateNode startNode = nodes.get(0);
-        List<List<MapNode>> mapData = navigateMapData.getJsonData(startNode.getZ(), NavigationMapType.getMapTypes(NavigationMapType.NONE), null, null);
-        for (NavigateNode node : nodes) {
-            HashMap<String, Object> data = new HashMap<>();
-            String codeNum = NavigatePositionConvert.xyToPosition(node.getX(), node.getY(), node.getZ());
-            Map<String, Object> nyNode = navigateNodeToNyPointNode(NavigatePositionConvert.codeToNode(codeNum));
-
-            int xp = Integer.parseInt(String.valueOf(nyNode.get("x")));
-            int yp = Integer.parseInt(String.valueOf(nyNode.get("y")));
-            if (shuttleDirectionReverse) {
-                xp = Integer.parseInt(String.valueOf(nyNode.get("y")));
-                yp = Integer.parseInt(String.valueOf(nyNode.get("x")));
-            }
-
-            int z = Integer.parseInt(String.valueOf(nyNode.get("z")));
-
-            List<MapNode> mapNodes = mapData.get(node.getX());
-            MapNode mapNode = mapNodes.get(node.getY());
-
-            data.put("xp", xp);
-            data.put("yp", yp);
-            data.put("z", z);
-            data.put("x", mapNode.getXBase());
-            data.put("y", mapNode.getYBase());
-            path.add(data);
-        }
-
-        httpStandard.setRequest(request);
-
-        Object object = redisUtil.get(RedisKeyType.LOC_MAP.key);
-        HashMap<String, String> locMap = (HashMap<String, String>) object;
-        String targetLocNo = locMap.get(distCodeNum);
-
-        ShuttleCommand command = new ShuttleCommand();
-        command.setShuttleNo(deviceConfig.getDeviceNo());
-        command.setBody(JSON.toJSONString(httpStandard));
-        command.setMode(ShuttleCommandModeType.MOVE.id);
-        command.setTargetLocNo(targetLocNo);
-        command.setTaskNo(taskId);
-        return command;
-    }
-
-    @Override
-    public ShuttleCommand getMoveLiftCommand(Integer taskNo, String startCodeNum, String distCodeNum, Integer allDistance, Integer runDirection, Integer runSpeed, List<NavigateNode> nodes, Boolean moveIn, Boolean shuttleDirectionReverse) {
-        NavigateMapData navigateMapData = SpringUtils.getBean(NavigateMapData.class);
-        NyShuttleHttpCommand httpStandard = getHttpStandard(deviceConfig.getDeviceNo(), taskNo);
-        NyShuttleHttpCommand.NyRequest request = httpStandard.getRequest();
-
-        ArrayList<HashMap<String, Object>> path = new ArrayList<>();
-
-        Integer taskId = getTaskId();
-        HashMap<String, Object> body = new HashMap<>();
-//        if (moveIn) {
-//            body.put("requestType", "intoLift");//杩涙彁鍗囨満
-//        } else {
-//            body.put("requestType", "outLift");//鍑烘彁鍗囨満
-//        }
-        body.put("requestType", "move");//绉诲姩鍛戒护
-        body.put("taskId", taskId);//TaskID闇�瑕侀殢鏈�
-        body.put("path", path);
-        request.setBody(body);
-
-        NavigateNode startNode = nodes.get(0);
-        List<List<MapNode>> mapData = navigateMapData.getJsonData(startNode.getZ(), NavigationMapType.getMapTypes(NavigationMapType.NONE), null, null);
-        for (NavigateNode node : nodes) {
-            HashMap<String, Object> data = new HashMap<>();
-            String codeNum = NavigatePositionConvert.xyToPosition(node.getX(), node.getY(), node.getZ());
-            Map<String, Object> nyNode = navigateNodeToNyPointNode(NavigatePositionConvert.codeToNode(codeNum));
-
-            int xp = Integer.parseInt(String.valueOf(nyNode.get("x")));
-            int yp = Integer.parseInt(String.valueOf(nyNode.get("y")));
-            if (shuttleDirectionReverse) {
-                xp = Integer.parseInt(String.valueOf(nyNode.get("y")));
-                yp = Integer.parseInt(String.valueOf(nyNode.get("x")));
-            }
-
-            int z = Integer.parseInt(String.valueOf(nyNode.get("z")));
-
-            List<MapNode> mapNodes = mapData.get(node.getX());
-            MapNode mapNode = mapNodes.get(node.getY());
-
-            data.put("xp", xp);
-            data.put("yp", yp);
-            data.put("z", z);
-            data.put("x", mapNode.getXBase());
-            data.put("y", mapNode.getYBase());
-            path.add(data);
-        }
-
-        httpStandard.setRequest(request);
-
-        Object object = redisUtil.get(RedisKeyType.LOC_MAP.key);
-        HashMap<String, String> locMap = (HashMap<String, String>) object;
-        String targetLocNo = locMap.get(distCodeNum);
-
-        ShuttleCommand command = new ShuttleCommand();
-        command.setShuttleNo(deviceConfig.getDeviceNo());
-        command.setBody(JSON.toJSONString(httpStandard));
-        command.setMode(ShuttleCommandModeType.MOVE.id);
-        command.setTargetLocNo(targetLocNo);
-        command.setTaskNo(taskId);
-        return command;
-    }
-
-    @Override
-    public ShuttleCommand getLiftCommand(Integer taskNo, Boolean lift) {
-        NyShuttleHttpCommand httpStandard = getHttpStandard(deviceConfig.getDeviceNo(), taskNo);
-        NyShuttleHttpCommand.NyRequest request = httpStandard.getRequest();
-
-        Integer taskId = getTaskId();//TaskID闇�瑕侀殢鏈�
-        HashMap<String, Object> body = new HashMap<>();
-        body.put("requestType", lift ? "liftUp" : "liftDown");//椤跺崌鎴栦笅闄嶅懡浠�
-        body.put("taskId", taskId);
-        request.setBody(body);
-
-        httpStandard.setRequest(request);
-
-        ShuttleCommand command = new ShuttleCommand();
-        command.setShuttleNo(deviceConfig.getDeviceNo());
-        command.setBody(JSON.toJSONString(httpStandard));
-        command.setMode(lift ? ShuttleCommandModeType.PALLET_LIFT.id : ShuttleCommandModeType.PALLET_DOWN.id);
-        command.setTaskNo(taskId);
-        return command;
-    }
-
-    @Override
-    public ShuttleCommand getChargeCommand(Integer taskNo, Boolean charge) {
-        NyShuttleHttpCommand httpStandard = getHttpStandard(deviceConfig.getDeviceNo(), taskNo);
-        NyShuttleHttpCommand.NyRequest request = httpStandard.getRequest();
-
-        Integer taskId = getTaskId();//TaskID闇�瑕侀殢鏈�
-        HashMap<String, Object> body = new HashMap<>();
-        body.put("requestType", charge ? "charge" : "stopCharge");//鍏呯數鎴栧仠姝㈠厖鐢�
-        body.put("taskId", taskId);
-        request.setBody(body);
-
-        httpStandard.setRequest(request);
-
-        ShuttleCommand command = new ShuttleCommand();
-        command.setShuttleNo(deviceConfig.getDeviceNo());
-        command.setBody(JSON.toJSONString(httpStandard));
-        command.setMode(charge ? ShuttleCommandModeType.CHARGE_OPEN.id : ShuttleCommandModeType.CHARGE_CLOSE.id);
-        command.setTaskNo(taskId);
-        return command;
-    }
-
-    @Override
-    public ShuttleCommand getUpdateLocationCommand(Integer taskNo, String locNo) {
-        NyShuttleHttpCommand httpStandard = getHttpStandard(deviceConfig.getDeviceNo(), taskNo);
-        NyShuttleHttpCommand.NyRequest request = httpStandard.getRequest();
-
-        HashMap<String, Object> body = new HashMap<>();
-        body.put("requestType", "updateFloor");//鏇存柊灞俍
-        body.put("z", Utils.getLev(locNo));//鍧愭爣Z
-        request.setBody(body);
-
-        httpStandard.setRequest(request);
-
-        ShuttleCommand command = new ShuttleCommand();
-        command.setShuttleNo(deviceConfig.getDeviceNo());
-        command.setBody(JSON.toJSONString(httpStandard));
-        command.setMode(ShuttleCommandModeType.UPDATE_LOCATION.id);
-        command.setTaskNo(taskNo);
-        return command;
-    }
-
-    //鑾峰彇灏忚溅澶嶄綅鍝嶅簲鍛戒护
-    public ShuttleCommand getInitCommand(Integer taskNo, Integer code) {
-        NavigateMapData navigateMapData = SpringUtils.getBean(NavigateMapData.class);
-        NyShuttleHttpCommand httpStandard = getHttpStandard(deviceConfig.getDeviceNo(), taskNo);
-        NyShuttleHttpCommand.NyRequest request = httpStandard.getRequest();
-
-        //code -> {Integer@13781} 1101101
-        int lev = code % 100;
-        int bay = code / 100 % 1000;
-        int row = code / 100000;
-
-        HashMap<String, Object> map = new HashMap<>();
-        map.put("x", row);
-        map.put("y", bay);
-        map.put("z", lev);
-
-        String mapStr = JSON.toJSONString(map);
-
-        Object object = redisUtil.get(RedisKeyType.LOC_MAP.key);
-        HashMap<String, String> locMap = (HashMap<String, String>) object;
-        String targetLocNo = locMap.get(mapStr);
-
-        List<List<MapNode>> mapData = navigateMapData.getJsonData(lev, NavigationMapType.getMapTypes(NavigationMapType.NONE), null, null);
-        List<MapNode> mapNodes = mapData.get(Utils.getRow(targetLocNo));
-        MapNode mapNode = mapNodes.get(Utils.getBay(targetLocNo));
-
-        HashMap<String, Object> location = new HashMap<>();
-        location.put("xp", row);
-        location.put("yp", bay);
-        location.put("z", lev);
-        location.put("x", mapNode.getXBase());
-        location.put("y", mapNode.getYBase());
-
-        HashMap<String, Object> body = new HashMap<>();
-        body.put("responseType", "init");//澶嶄綅
-        body.put("location", location);//鍒濆鍖栧潗鏍�
-        body.put("devicePoints", new ArrayList<>());//鎻愬崌鏈虹偣浣�
-        body.put("specialPoints", new ArrayList<>());//鐗规畩鏉$爜鍧愭爣
-        request.setBody(body);
-
-        httpStandard.setRequest(request);
-
-        ShuttleCommand command = new ShuttleCommand();
-        command.setShuttleNo(deviceConfig.getDeviceNo());
-        command.setBody(JSON.toJSONString(httpStandard));
-        command.setMode(ShuttleCommandModeType.RESET.id);
-        command.setTaskNo(taskNo);
-        return command;
-    }
-
     @Override
     public boolean connect() {
-        return true;
+        return false;
     }
 
     @Override
@@ -1237,178 +17,8 @@
 
     }
 
-    //鑾峰彇HTTP璇锋眰鏍囧噯缁撴瀯浣�
-    private NyShuttleHttpCommand getHttpStandard(Integer shuttleNo, Integer taskNo) {
-        NyShuttleHttpCommand httpStandard = new NyShuttleHttpCommand();
-        httpStandard.setMsgType("requestMsg");//璇锋眰娑堟伅
-        httpStandard.setRobotId(shuttleNo);//杞﹁締缂栧彿
-        httpStandard.setTaskNo(taskNo);//宸ヤ綔鍙�
-
-        //璁剧疆璇锋眰娑堟伅
-        NyShuttleHttpCommand.NyRequest request = new NyShuttleHttpCommand.NyRequest();
-        NyShuttleHttpCommand.NyRequest.NyHeader header = new NyShuttleHttpCommand.NyRequest.NyHeader();
-        header.setVersion("1.0");//鐗堟湰鍙�
-        header.setRequestId(getRequestId());//娑堟伅缂栧彿
-
-        //璁剧疆璇锋眰澶�
-        request.setHeader(header);
-        httpStandard.setRequest(request);
-        return httpStandard;
-    }
-
-    //鑾峰彇璇锋眰缂栧彿
-    private Integer getRequestId() {
-        Random random = new Random();
-        return random.nextInt(9999999);
-    }
-
-    //鑾峰彇TaskId
-    private static Integer getTaskId() {
-        Random random = new Random();
-        return random.nextInt(999999);
-    }
-
-    //鑾峰彇璇籉AS鐘舵�佷俊鎭懡浠�
-    private NyShuttleHttpCommand getReadStatusCommand(Integer shuttleNo) {
-        NyShuttleHttpCommand httpStandard = getHttpStandard(shuttleNo, 9999);
-        NyShuttleHttpCommand.NyRequest request = httpStandard.getRequest();
-
-        HashMap<String, Object> body = new HashMap<>();
-        body.put("requestType", "readState");//璇籉AS鐘舵�佷俊鎭�
-        request.setBody(body);
-
-        httpStandard.setRequest(request);
-        return httpStandard;
-    }
-
-    //鍙戝嚭璇锋眰
-    private String requestCommand(NyShuttleHttpCommand httpCommand) throws IOException {
-        try {
-            DeviceMsgUtils deviceMsgUtils = SpringUtils.getBean(DeviceMsgUtils.class);
-            if (deviceMsgUtils == null) {
-                return null;
-            }
-
-            //鍘嬬缉鏁版嵁鍖�
-            JSONObject data = JSON.parseObject(JSON.toJSONString(httpCommand));
-            data.remove("nodes");
-
-            DeviceCommandMsgModel commandMsgModel = new DeviceCommandMsgModel();
-            commandMsgModel.setDeviceId(deviceConfig.getDeviceNo());
-            commandMsgModel.setDeviceType(String.valueOf(SlaveType.Shuttle));
-            commandMsgModel.setCommand(data);
-            String key = deviceMsgUtils.sendDeviceCommand(SlaveType.Shuttle, deviceConfig.getDeviceNo(), commandMsgModel);
-            return key;
-        }catch (Exception e) {
-            e.printStackTrace();
-        }
-        return null;
-    }
-
-    private JSONObject queryCommandStatus(String resultKey) {
-        // 鑾峰彇鏈嶅姟鍣ㄥ搷搴�
-        JSONObject result = null;
-        long startTime = System.currentTimeMillis();
-        while (true) {
-            if((System.currentTimeMillis() - startTime) > 1000 * 10) {
-                break;
-            }
-
-            result = getRequestBody(resultKey);
-            if (result == null) {
-                continue;
-            }else {
-                break;
-            }
-        }
-        return result;
-    }
-
-    private JSONObject filterBodyData(JSONObject data) {
-        Object response = data.get("response");
-        if (response == null) {
-            return null;
-        }
-
-        JSONObject result = JSON.parseObject(response.toString());
-        Object body = result.get("body");
-        if (body == null) {
-            return null;
-        }
-        JSONObject jsonBody = JSON.parseObject(body.toString());
-        return jsonBody;
-    }
-
-    //鍦板浘鑺傜偣杞崲鐗涚溂鑺傜偣
-    private static Map<String, Object> navigateNodeToNyPointNode(NavigateNode node) {
-        int[] NyPosition = WCSXyzToNyXyz(node.getX(), node.getY(), node.getZ());//WCS绯荤粺鍧愭爣杞墰鐪煎潗鏍�
-        HashMap<String, Object> point = new HashMap<>();
-        point.put("x", NyPosition[0]);
-        point.put("y", NyPosition[1]);
-        point.put("z", NyPosition[2]);
-        return point;
-    }
-
-    //WCS绯荤粺鍧愭爣杞墰鐪煎潗鏍�
-    private static int[] WCSXyzToNyXyz(int x, int y, int z) {
-        LocMastService locMastService = SpringUtils.getBean(LocMastService.class);
-        LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>()
-                .eq("row1", x)
-                .eq("bay1", y)
-                .eq("lev1", z)
-                .eq("status", 1));
-        if (locMast == null) {
-            return null;
-        }
-
-        String qrCodeValue = locMast.getQrCodeValue();
-        JSONObject data = JSON.parseObject(qrCodeValue);
-        return new int[]{data.getInteger("x"), data.getInteger("y"), z};
-    }
-
     @Override
-    public Object getOriginDeviceData() {
-        return this.originDeviceData;
-    }
-
-    @Data
-    private class InnerSuhttleExtend {
-
-        /**
-         * 绠″埗鐘舵�佷笉鍦ㄧ鍒朵笅/琚鍒朵腑
-         * 0/1
-         */
-        private Integer suspendState;
-
-        /**
-         * 鏈�楂樼數鑺數鍘�(mV)
-         */
-        private Integer maxCellVoltage;
-
-        /**
-         * 鏈�浣庣數鑺數鍘�(mV)锛屼綆浜�2900mv闇�瑕佺珛鍗冲厖鐢�
-         */
-        private Integer minCellVoltage;
-
-        /**
-         * 鐢垫睜鐢靛帇锛坢V锛�
-         */
-        private Integer voltage;
-
-        /**
-         * 鍏呮斁鐢靛惊鐜鏁�
-         */
-        private Integer chargeCycleTimes;
-
-        /**
-         * 鍓╀綑鐢甸噺/10(A)
-         */
-        private Integer surplusQuantity;
-
-        /**
-         * 鎬荤數閲�/10(A)
-         */
-        private Integer countQuantity;
+    public void run() {
 
     }
 }
diff --git a/src/main/java/com/zy/core/thread/impl/NyShuttleThread2.java b/src/main/java/com/zy/core/thread/impl/NyShuttleThread2.java
deleted file mode 100644
index 6f0cdee..0000000
--- a/src/main/java/com/zy/core/thread/impl/NyShuttleThread2.java
+++ /dev/null
@@ -1,1302 +0,0 @@
-//package com.zy.core.thread.impl;
-//
-//import com.alibaba.fastjson.JSON;
-//import com.alibaba.fastjson.JSONObject;
-//import com.baomidou.mybatisplus.mapper.EntityWrapper;
-//import com.core.common.DateUtils;
-//import com.core.common.SpringUtils;
-//import com.core.exception.CoolException;
-//import com.fasterxml.jackson.databind.ObjectMapper;
-//import com.zy.asrs.entity.BasShuttle;
-//import com.zy.asrs.entity.DeviceDataLog;
-//import com.zy.asrs.entity.LocMast;
-//import com.zy.asrs.service.BasShuttleService;
-//import com.zy.asrs.service.DeviceDataLogService;
-//import com.zy.asrs.service.LocMastService;
-//import com.zy.asrs.utils.Utils;
-//import com.zy.common.ExecuteSupport;
-//import com.zy.common.model.MapNode;
-//import com.zy.common.model.NavigateNode;
-//import com.zy.common.model.enums.NavigationMapType;
-//import com.zy.common.utils.NavigateMapData;
-//import com.zy.common.utils.NavigatePositionConvert;
-//import com.zy.common.utils.RedisUtil;
-//import com.zy.core.News;
-//import com.zy.core.action.ShuttleAction;
-//import com.zy.core.cache.OutputQueue;
-//import com.zy.core.enums.*;
-//import com.zy.core.model.CommandResponse;
-//import com.zy.core.model.ShuttleSlave;
-//import com.zy.core.model.command.NyShuttleHttpCommand;
-//import com.zy.core.model.command.ShuttleCommand;
-//import com.zy.core.model.command.ShuttleRedisCommand;
-//import com.zy.core.model.param.ShuttleMoveLocParam;
-//import com.zy.core.model.protocol.ShuttleProtocol;
-//import com.zy.core.thread.ShuttleThread;
-//import com.zy.system.entity.Config;
-//import com.zy.system.service.ConfigService;
-//import lombok.Data;
-//import lombok.extern.slf4j.Slf4j;
-//
-//import java.io.BufferedReader;
-//import java.io.IOException;
-//import java.io.InputStreamReader;
-//import java.io.OutputStreamWriter;
-//import java.net.InetAddress;
-//import java.net.Socket;
-//import java.text.MessageFormat;
-//import java.util.*;
-//
-//@Slf4j
-//@SuppressWarnings("all")
-//public class NyShuttleThread2 implements ShuttleThread {
-//
-//    private ShuttleSlave slave;
-//    private RedisUtil redisUtil;
-//    private ShuttleProtocol shuttleProtocol;
-//    private Socket socket;
-//
-//    private static final boolean DEBUG = false;//璋冭瘯妯″紡
-//
-//    private List<JSONObject> socketReadResults = new ArrayList<>();
-//    private List<JSONObject> socketResults = new ArrayList<>();
-//
-//    //鍘熷璁惧鏁版嵁
-//    private Object originDeviceData;
-//
-//    public NyShuttleThread2(ShuttleSlave slave, RedisUtil redisUtil) {
-//        this.slave = slave;
-//        this.redisUtil = redisUtil;
-//    }
-//
-//    @Override
-//    public void run() {
-//        News.info("{}鍙峰洓鍚戣溅绾跨▼鍚姩", slave.getId());
-//        this.connect();
-//
-//        //鐩戝惉娑堟伅骞跺瓨鍌�
-//        Thread innerThread = new Thread(() -> {
-//            while (true) {
-//                try {
-//                    listenSocketMessage();
-//                    listenInit();//鐩戝惉鍒濆鍖栦簨浠�
-//                } catch (Exception e) {
-//                    e.printStackTrace();
-//                }
-//            }
-//        });
-//        innerThread.start();
-//
-//        //璁惧璇诲彇
-//        Thread readThread = new Thread(() -> {
-//            while (true) {
-//                try {
-//                    read();
-//                    Thread.sleep(50);
-//                } catch (Exception e) {
-//                    log.error("ShuttleThread Fail", e);
-//                }
-//            }
-//        });
-//        readThread.start();
-//
-//        //璁惧鎵ц
-//        Thread executeThread = new Thread(() -> {
-//            while (true) {
-//                try {
-//                    ShuttleAction shuttleAction = SpringUtils.getBean(ShuttleAction.class);
-//                    if (shuttleAction == null) {
-//                        continue;
-//                    }
-//
-//                    Object object = redisUtil.get(RedisKeyType.SHUTTLE_FLAG.key + slave.getId());
-//                    if (object == null) {
-//                        continue;
-//                    }
-//
-//                    Integer taskNo = Integer.valueOf(String.valueOf(object));
-//                    if (taskNo != 0) {
-//                        //瀛樺湪浠诲姟闇�瑕佹墽琛�
-//                        boolean result = shuttleAction.executeWork(slave.getId(), taskNo);
-//                    }
-//
-////                    //灏忚溅绌洪棽涓旀湁璺戝簱绋嬪簭
-////                    shuttleAction.moveLoc(slave.getId());
-//
-//                    //婕旂ず妯″紡
-//                    shuttleAction.demo(slave.getId());
-//
-//                    Thread.sleep(200);
-//                } catch (Exception e) {
-//                    e.printStackTrace();
-//                }
-//            }
-//        });
-//        executeThread.start();
-//
-//        //鍏朵粬浠诲姟
-//        Thread otherThread = new Thread(() -> {
-//            while (true) {
-//                try {
-//                    saveLog();//淇濆瓨鏁版嵁
-//                } catch (Exception e) {
-//                    e.printStackTrace();
-//                }
-//            }
-//        });
-//        otherThread.start();
-//    }
-//
-//    private void saveLog() {
-//        if (shuttleProtocol == null) {
-//            return;
-//        }
-//
-//        if (System.currentTimeMillis() - shuttleProtocol.getDeviceDataLog() > 1000 * 5) {
-//            if (this.originDeviceData != null) {
-//                //閲囬泦鏃堕棿瓒呰繃5s锛屼繚瀛樹竴娆℃暟鎹褰�
-//                //淇濆瓨鏁版嵁璁板綍
-//                DeviceDataLogService deviceDataLogService = SpringUtils.getBean(DeviceDataLogService.class);
-//                if (deviceDataLogService == null) {
-//                    return;
-//                }
-//                DeviceDataLog deviceDataLog = new DeviceDataLog();
-//                deviceDataLog.setOriginData(JSON.toJSONString(this.originDeviceData));
-//                deviceDataLog.setWcsData(JSON.toJSONString(shuttleProtocol));
-//                deviceDataLog.setType(String.valueOf(SlaveType.Shuttle));
-//                deviceDataLog.setDeviceNo(slave.getId());
-//                deviceDataLog.setCreateTime(new Date());
-//                deviceDataLogService.insert(deviceDataLog);
-//
-//                //鏇存柊閲囬泦鏃堕棿
-//                shuttleProtocol.setDeviceDataLog(System.currentTimeMillis());
-//                OutputQueue.SHUTTLE.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId()));
-//            }
-//        }
-//    }
-//
-//    private void listenSocketMessage() {
-//        try {
-//            if (this.socket == null) {
-//                return;
-//            }
-//
-//            // 鑾峰彇杈撳叆娴�
-//            BufferedReader reader = new BufferedReader(new InputStreamReader(this.socket.getInputStream()));
-//            // 璇诲彇鏈嶅姟鍣ㄧ殑鍝嶅簲
-//            StringBuffer sb = new StringBuffer();
-//            char[] chars = new char[2048];//缂撳啿鍖�
-//            while (true) {
-//                reader.read(chars);
-//                String trim = new String(chars);
-//                sb.append(trim);
-//                if (trim.lastIndexOf("\r\n") != -1) {
-//                    break;
-//                }
-//            }
-//
-//            JSONObject result = JSON.parseObject(sb.toString());//寰楀埌鍝嶅簲缁撴灉闆�
-//
-//            String msgType = result.getString("msgType");
-//            if ("responseMsg".equals(msgType)) {
-//                JSONObject response = result.getJSONObject("response");
-//                JSONObject body = response.getJSONObject("body");
-//                if (body.containsKey("workingMode")) {
-//                    //read
-//                    socketReadResults.add(body);
-//                    return;
-//                }
-//            }
-//
-//            if (!socketResults.isEmpty() && socketResults.size() >= 20) {
-//                socketResults.remove(0);//娓呯悊澶磋妭鐐�
-//            }
-//            socketResults.add(result);//娣诲姞鏁版嵁
-//        } catch (Exception e) {
-////            e.printStackTrace();
-//        }
-//    }
-//
-//    public JSONObject getRequestBody(String type, String taskId) {
-//        try {
-//            // 鑾峰彇鏈嶅姟鍣ㄥ搷搴�
-//            JSONObject result = null;
-//            if (type.equals("readState")) {
-//                type = "state";
-//            }
-//
-//            for (int i = 0; i < socketResults.size(); i++) {
-//                JSONObject socketResult = socketResults.get(i);
-//                if (!socketResult.get("msgType").equals("responseMsg")) {//涓嶆槸鍝嶅簲鍐呭
-//                    continue;
-//                }
-//
-//                JSONObject resultResponse = JSON.parseObject(socketResult.get("response").toString());
-//                JSONObject resultBody = JSON.parseObject(resultResponse.get("body").toString());
-//                String responseType = resultBody.get("responseType").toString();
-//                if (DEBUG) {
-//                    result = socketResult;
-//                    break;
-//                }
-//
-//                if (!responseType.equals(type)) {
-//                    continue;//鍝嶅簲绫诲瀷涓庤姹傜被鍨嬩笉涓�鑷达紝涓嶅湪璋冭瘯妯″紡涓�
-//                }
-//
-//                if (taskId != null) {
-//                    String responseTaskId = resultBody.get("taskId").toString();
-//                    if (!responseTaskId.equals(taskId)) {
-//                        continue;//鍝嶅簲ID涓庤姹侷D涓嶄竴鑷达紝涓嶅湪璋冭瘯妯″紡涓�
-//                    }
-//                }
-//
-//                result = socketResult;
-//                break;
-//            }
-//
-//            if (result == null) {
-//                return null;//鏃犲搷搴旂粨鏋�
-//            }
-//
-//            return filterBodyData(result);//杩斿洖Body缁撴灉闆�
-//        } catch (Exception e) {
-//            return null;
-//        }
-//    }
-//
-//    private void read() {
-//        try {
-//            if (this.socket == null || this.socket.isClosed()) {
-//                //閾炬帴鏂紑閲嶆柊閾炬帴
-//                this.connect();
-//            }
-//            readStatus();
-//        } catch (Exception e) {
-//            e.printStackTrace();
-//            OutputQueue.SHUTTLE.offer(MessageFormat.format("銆恵0}銆戣鍙栧洓鍚戠┛姊溅鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort()));
-//        }
-//    }
-//
-//    private void readStatus() {
-//        try {
-//            if (null == shuttleProtocol) {
-//                shuttleProtocol = new ShuttleProtocol();
-//                shuttleProtocol.setShuttleNo(slave.getId());
-//                shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.IDLE);
-//
-//                InnerSuhttleExtend extend = new InnerSuhttleExtend();
-//                shuttleProtocol.setExtend(extend);
-//            }
-//
-//            //----------璇诲彇鍥涘悜绌挎杞︾姸鎬�-----------
-//            NyShuttleHttpCommand readStatusCommand = getReadStatusCommand(slave.getId());
-//            requestCommandAsync(readStatusCommand);//璇锋眰鐘舵��
-//
-//            if (this.socketReadResults.isEmpty()) {
-//                if (System.currentTimeMillis() - shuttleProtocol.getLastOnlineTime() > 1000 * 60) {
-//                    //鏈�鍚庝竴娆′笂绾挎椂闂磋秴杩�60s锛岃瀹氱绾�
-//                    this.shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.OFFLINE);
-//                }
-//                return;
-//            }
-//
-//            JSONObject data = this.socketReadResults.get(0);
-//            this.socketReadResults.remove(0);
-//            if (data == null) {
-//                if (System.currentTimeMillis() - shuttleProtocol.getLastOnlineTime() > 1000 * 60) {
-//                    //鏈�鍚庝竴娆′笂绾挎椂闂磋秴杩�60s锛岃瀹氱绾�
-//                    this.shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.OFFLINE);
-//                }
-//                OutputQueue.SHUTTLE.offer(MessageFormat.format("銆恵0}銆戝洓鍚戠┛姊溅Socket鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort()));
-//            }else {
-//
-//                //----------璇诲彇鍥涘悜绌挎杞︾姸鎬�-----------
-//                //灏忚溅璁惧鐘舵��
-//                shuttleProtocol.setDeviceStatus(data.getInteger("free"));
-//                //灏忚溅妯″紡
-//                shuttleProtocol.setMode(data.getInteger("workingMode"));
-//                //褰撳墠浜岀淮鐮�
-//                shuttleProtocol.setCurrentCode(data.getString("point"));
-//                //鐢垫睜鐢甸噺
-//                shuttleProtocol.setBatteryPower(data.getString("powerPercent"));
-//                //鐢垫睜鐢靛帇
-//                shuttleProtocol.setBatteryVoltage(data.getInteger("voltage"));
-//                //鏁呴殰
-//                shuttleProtocol.setErrorCode(data.getJSONArray("errCode").getString(0));
-//
-//                //鏄惁椤跺崌
-//                shuttleProtocol.setHasLift(data.getInteger("liftPosition") == 2 ? true : false);
-//                //鏄惁鏈夋墭鐩�
-//                shuttleProtocol.setHasPallet(data.getInteger("loadState") == 1 ? true : false);
-//                //琛岄┒鏂瑰悜
-//                shuttleProtocol.setRunDirection(data.getString("runDir") == null ? "none" : data.getString("runDir"));
-//                //鏄惁涓哄厖鐢电姸鎬�
-//                shuttleProtocol.setHasCharge(data.getInteger("chargState") == 1 ? true : false);
-//                //杩愯閫熷害
-//                shuttleProtocol.setSpeed(data.getInteger("speed"));
-//
-//                //*********璇诲彇鎵╁睍瀛楁**********
-//                InnerSuhttleExtend extend = (InnerSuhttleExtend) shuttleProtocol.getExtend();
-//                //绠″埗鐘舵��
-//                extend.setSuspendState(data.getInteger("suspendState"));
-//                //鏈�楂樼數鑺數鍘�(mV)
-//                extend.setMaxCellVoltage(data.getInteger("maxCellVoltage"));
-//                //鏈�浣庣數鑺數鍘�(mV)
-//                extend.setMinCellVoltage(data.getInteger("minCellVoltage"));
-//                //鐢垫睜鐢靛帇
-//                extend.setVoltage(data.getInteger("voltage"));
-//                //鍏呮斁鐢靛惊鐜鏁�
-//                extend.setChargeCycleTimes(data.getInteger("chargeCycleTimes"));
-//                //鍓╀綑鐢甸噺
-//                extend.setSurplusQuantity(data.getInteger("surplusQuantity"));
-//                //鎬荤數閲�
-//                extend.setCountQuantity(data.getInteger("countQuantity"));
-//                shuttleProtocol.setExtend(extend);//鎵╁睍瀛楁
-//
-//                //鏈�杩戜竴娆″湪绾挎椂闂�
-//                shuttleProtocol.setLastOnlineTime(System.currentTimeMillis());
-//                ///璇诲彇鍥涘悜绌挎杞︾姸鎬�-end
-//
-//                //灏忚溅澶勪簬杩愯涓紝灏嗘爣璁扮疆涓簍rue
-//                if (shuttleProtocol.getDeviceStatus() == 0) {
-//                    shuttleProtocol.setPakMk(true);
-//                }
-//
-//                if (shuttleProtocol.getProtocolStatusType() == null && shuttleProtocol.getDeviceStatus().intValue() == 1) {
-//                    //灏忚溅绌洪棽鐘舵�併�佸皬杞︿换鍔$姸鎬佷负鏈煡锛岃瀹氭浘绂荤嚎杩囷紝闇�瑕佸浣嶆垚绌洪棽
-//                    this.shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.IDLE);
-//                }
-//
-//                if (shuttleProtocol.getProtocolStatusType().equals(ShuttleProtocolStatusType.OFFLINE) && shuttleProtocol.getDeviceStatus().intValue() == 1) {
-//                    this.shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.IDLE);
-//                }
-//
-//                this.originDeviceData = data;
-//
-//                OutputQueue.SHUTTLE.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId()));
-//            }
-//        } catch (Exception e) {
-//            e.printStackTrace();
-//            OutputQueue.SHUTTLE.offer(MessageFormat.format("銆恵0}銆戝洓鍚戠┛姊溅Socket鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort()));
-//            try {
-//                this.socket.close();
-//                this.socket = null;
-//                Thread.sleep(1000);
-//                this.connect();
-//            } catch (IOException | InterruptedException exception) {
-//                e.printStackTrace();
-//            }
-//        }
-//    }
-//
-//    /**
-//     * 鐩戝惉灏忚溅澶嶄綅鍒濆鍖栦俊鍙�
-//     */
-//    public void listenInit() {
-//        try {
-//            // 鑾峰彇鏈嶅姟鍣ㄥ搷搴�
-//            JSONObject result = null;
-//            int removeIdx = -1;
-//            for (int i = 0; i < socketResults.size(); i++) {
-//                JSONObject socketResult = socketResults.get(i);
-//                if (socketResult == null) {
-//                    continue;
-//                }
-//                if (!socketResult.get("msgType").equals("requestMsg")) {//涓嶆槸璇锋眰鍐呭
-//                    continue;
-//                }
-//
-//                JSONObject resultResponse = JSON.parseObject(socketResult.get("request").toString());
-//                JSONObject resultHeader = JSON.parseObject(resultResponse.get("header").toString());
-//                JSONObject resultBody = JSON.parseObject(resultResponse.get("body").toString());
-//                String requestType = resultBody.getString("requestType");
-//                Integer requestId = resultHeader.getInteger("requestId");
-//                if (requestType.equals("init")) {
-//                    removeIdx = i;//姝ゆ暟鎹凡缁忓鐞嗭紝浠庣粨鏋滈泦涓墧闄�
-//                    socketResults.remove(removeIdx);
-//
-//                    Integer code = resultBody.getInteger("code");
-//                    //灏忚溅澶嶄綅璇锋眰
-//                    ShuttleCommand initCommand = getInitCommand(requestId, code);
-//                    //鍙戝嚭璇锋眰
-//                    NyShuttleHttpCommand httpCommand = JSON.parseObject(initCommand.getBody(), NyShuttleHttpCommand.class);
-//                    JSONObject requestResult = requestCommand(httpCommand);
-//
-//                    log.info(MessageFormat.format("銆恵0}銆戝洓鍚戣溅澶嶄綅涓婃姤 ===>> [code:{1}] [ip:{2}] [port:{3}]", slave.getId(), code, slave.getIp(), slave.getPort()));
-//                    OutputQueue.SHUTTLE.offer(MessageFormat.format("銆恵0}銆戝洓鍚戣溅澶嶄綅涓婃姤 ===>> [code:{1}] [ip:{2}] [port:{3}]", slave.getId(), code, slave.getIp(), slave.getPort()));
-//                    break;
-//                }
-//            }
-//        } catch (Exception e) {
-//            e.printStackTrace();
-//        }
-//    }
-//
-//    @Override
-//    public ShuttleProtocol getStatus() {
-//        return getStatus(true);
-//    }
-//
-//    @Override
-//    public ShuttleProtocol getStatus(boolean clone) {
-//        if (this.shuttleProtocol == null) {
-//            return null;
-//        }
-//        return clone ? this.shuttleProtocol.clone() : this.shuttleProtocol;
-//    }
-//
-//    @Override
-//    public CommandResponse movePath(List<NavigateNode> nodes, Integer taskNo) {
-//        CommandResponse response = new CommandResponse(true);
-//        return response;
-//    }
-//
-//    @Override
-//    public CommandResponse move(ShuttleCommand command) {
-//        CommandResponse response = new CommandResponse(false);
-//        try {
-//            //鍙戝嚭璇锋眰
-//            NyShuttleHttpCommand httpCommand = JSON.parseObject(command.getBody(), NyShuttleHttpCommand.class);
-//            Map<String, Object> body = httpCommand.getRequest().getBody();
-//            Object pathObj = body.get("path");
-//            int taskId = Integer.parseInt(body.get("taskId").toString());
-//            List<JSONObject> path = JSON.parseArray(JSON.toJSONString(pathObj), JSONObject.class);
-//            ArrayList<NyShuttleHttpCommand> commandList = new ArrayList<>();
-//            while (!path.isEmpty()) {
-//                ArrayList<Map<String, Object>> list = new ArrayList<>();
-//                if (path.size() > 10) {
-//                    List<JSONObject> subList = path.subList(0, 10);
-//                    list.addAll(subList);
-//
-//                    List<JSONObject> tmp = new ArrayList<>();
-//                    for (int i = 10; i < path.size(); i++) {
-//                        tmp.add(path.get(i));
-//                    }
-//                    path = tmp;
-//                }else  {
-//                    list.addAll(path);
-//                    path.clear();
-//                }
-//
-//                NyShuttleHttpCommand httpCommandCopy = JSON.parseObject(JSON.toJSONString(httpCommand), NyShuttleHttpCommand.class);
-//                JSONObject bodyCopy = JSON.parseObject(JSON.toJSONString(body));
-//
-//                NyShuttleHttpCommand.NyRequest request = httpCommandCopy.getRequest();
-//                bodyCopy.put("path", list);
-//                bodyCopy.put("taskId", taskId++);
-//                request.setBody(bodyCopy);
-//                httpCommandCopy.setRequest(request);
-//
-//                commandList.add(httpCommandCopy);//add copy
-//            }
-//
-//            for (NyShuttleHttpCommand requestCommand : commandList) {
-//                while (true) {
-//                    JSONObject result = requestCommand(requestCommand);
-//                    if (result == null) {
-////                        return response;//璇锋眰澶辫触
-//                        continue;//璇锋眰澶辫触灏濊瘯閲嶆柊璇锋眰
-//                    }
-//                    this.shuttleProtocol.setSendTime(System.currentTimeMillis());//鎸囦护涓嬪彂鏃堕棿
-//                    response.setMessage(JSON.toJSONString(result));
-//                    response.setResult(true);
-//                    break;
-//                }
-//            }
-//            return response;
-//        } catch (Exception e) {
-//            e.printStackTrace();
-//            response.setMessage(e.getMessage());
-//            return response;
-//        }
-//    }
-//
-//    @Override
-//    public CommandResponse lift(ShuttleCommand command) {
-//        CommandResponse response = new CommandResponse(false);
-//        try {
-//            //鍙戝嚭璇锋眰
-//            NyShuttleHttpCommand httpCommand = JSON.parseObject(command.getBody(), NyShuttleHttpCommand.class);
-//            JSONObject result = requestCommand(httpCommand);
-//            if (result == null) {
-//                return response;//璇锋眰澶辫触
-//            }
-//            this.shuttleProtocol.setSendTime(System.currentTimeMillis());//鎸囦护涓嬪彂鏃堕棿
-//            response.setMessage(JSON.toJSONString(result));
-//            response.setResult(true);
-//            return response;
-//        } catch (Exception e) {
-//            e.printStackTrace();
-//            return response;
-//        }
-//    }
-//
-//    @Override
-//    public CommandResponse charge(ShuttleCommand command) {
-//        CommandResponse response = new CommandResponse(false);
-//        try {
-//            //鍙戝嚭璇锋眰
-//            NyShuttleHttpCommand httpCommand = JSON.parseObject(command.getBody(), NyShuttleHttpCommand.class);
-//            JSONObject result = requestCommand(httpCommand);
-//            if (result == null) {
-//                return response;//璇锋眰澶辫触
-//            }
-//            this.shuttleProtocol.setSendTime(System.currentTimeMillis());//鎸囦护涓嬪彂鏃堕棿
-//            response.setMessage(JSON.toJSONString(result));
-//            response.setResult(true);
-//            return response;
-//        } catch (Exception e) {
-//            e.printStackTrace();
-//            return response;
-//        }
-//    }
-//
-//    @Override
-//    public CommandResponse reset(ShuttleCommand command) {
-//        setSyncTaskNo(0);
-//        setProtocolStatus(ShuttleProtocolStatusType.IDLE);
-//        enableMoveLoc(null, false);
-//        return new CommandResponse(true, JSON.toJSONString(command));
-//    }
-//
-//    @Override
-//    public CommandResponse updateLocation(ShuttleCommand command) {
-//        CommandResponse response = new CommandResponse(false);
-//        try {
-//            //鍙戝嚭璇锋眰
-//            NyShuttleHttpCommand httpCommand = JSON.parseObject(command.getBody(), NyShuttleHttpCommand.class);
-//            JSONObject result = requestCommand(httpCommand);
-//            if (result == null) {
-//                return response;//璇锋眰澶辫触
-//            }
-//            this.shuttleProtocol.setSendTime(System.currentTimeMillis());//鎸囦护涓嬪彂鏃堕棿
-//            response.setMessage(JSON.toJSONString(result));
-//            response.setResult(true);
-//            return response;
-//        } catch (Exception e) {
-//            e.printStackTrace();
-//            return response;
-//        }
-//    }
-//
-//    @Override
-//    public boolean isIdle() {
-//        return this.isIdle(null);
-//    }
-//
-//    @Override
-//    public boolean isIdle(ExecuteSupport support) {
-//        if (null != support) {
-//            Boolean judgement = support.judgement();
-//            if (judgement != null && !judgement) {
-//                return true;
-//            }
-//        }
-//
-//        if (this.shuttleProtocol.getDeviceStatus() == null
-//                || this.shuttleProtocol.getPakMk() == null
-//                || this.shuttleProtocol.getErrorCode() == null
-//                || this.shuttleProtocol.getProtocolStatus() == null
-//                || this.shuttleProtocol.getMode() == null
-//                || this.shuttleProtocol.getExtend() == null
-//        ) {
-//            return false;
-//        }
-//
-//        InnerSuhttleExtend extend = (InnerSuhttleExtend) this.shuttleProtocol.getExtend();
-//
-//        boolean res = this.shuttleProtocol.getDeviceStatus() == 1
-//                && this.shuttleProtocol.getMode() == 1
-//                && this.shuttleProtocol.getPakMk()
-//                && this.shuttleProtocol.getErrorCode().equals("0")
-//                && this.shuttleProtocol.getTaskNo() == 0
-//                && (this.shuttleProtocol.getProtocolStatus() == ShuttleProtocolStatusType.IDLE.id
-//                || this.shuttleProtocol.getProtocolStatus() == ShuttleProtocolStatusType.WAITING.id
-//                || this.shuttleProtocol.getProtocolStatus() == ShuttleProtocolStatusType.CHARGING_WAITING.id)
-//                && extend.getSuspendState() == 0;
-//        return res;
-//    }
-//
-//    @Override
-//    public boolean isDeviceIdle() {
-//        return isDeviceIdle(null);
-//    }
-//
-//    @Override
-//    public boolean isDeviceIdle(ExecuteSupport support) {
-//        if (null != support) {
-//            Boolean judgement = support.judgement();
-//            if (judgement != null && !judgement) {
-//                return true;
-//            }
-//        }
-//
-//        if (this.shuttleProtocol.getDeviceStatus() == null
-//                || this.shuttleProtocol.getPakMk() == null
-//                || this.shuttleProtocol.getErrorCode() == null
-//                || this.shuttleProtocol.getMode() == null
-//                || this.shuttleProtocol.getExtend() == null
-//        ) {
-//            return false;
-//        }
-//
-//        InnerSuhttleExtend extend = (InnerSuhttleExtend) this.shuttleProtocol.getExtend();
-//
-//        boolean res = this.shuttleProtocol.getDeviceStatus() == 1
-//                && this.shuttleProtocol.getMode() == 1
-//                && this.shuttleProtocol.getPakMk()
-//                && this.shuttleProtocol.getErrorCode().equals("0")
-//                && extend.getSuspendState() == 0
-//                ;
-//        return res;
-//    }
-//
-//    @Override
-//    public boolean isRequireCharge() {
-//        if (this.shuttleProtocol.getDeviceStatus() == null
-//                || this.shuttleProtocol.getPakMk() == null
-//                || this.shuttleProtocol.getErrorCode() == null
-//                || this.shuttleProtocol.getProtocolStatus() == null
-//                || this.shuttleProtocol.getMode() == null
-//                || this.shuttleProtocol.getExtend() == null
-//        ) {
-//            return false;
-//        }
-//
-//        InnerSuhttleExtend extend = (InnerSuhttleExtend) this.shuttleProtocol.getExtend();
-//
-//        boolean res = this.shuttleProtocol.getDeviceStatus() == 1
-//                && this.shuttleProtocol.getMode() == 1
-//                && this.shuttleProtocol.getPakMk()
-//                && this.shuttleProtocol.getErrorCode().equals("0")
-//                && this.shuttleProtocol.getProtocolStatus() == ShuttleProtocolStatusType.IDLE.id
-//                && extend.getSuspendState() == 0
-//                ;
-//        if (!res) {
-//            return res;
-//        } else {
-//            // 鐢甸噺灏忎簬闃堝�奸渶瑕佽繘琛屽厖鐢�
-//            try {
-//                BasShuttleService shuttleService = SpringUtils.getBean(BasShuttleService.class);
-//                if (shuttleService == null) {
-//                    return false;
-//                }
-//                BasShuttle basShuttle = shuttleService.selectOne(new EntityWrapper<BasShuttle>().eq("shuttle_no", slave.getId()));
-//                if (basShuttle == null) {
-//                    return false;
-//                }
-//                Integer chargeLine = basShuttle.getChargeLine();
-//                if (chargeLine == null) {
-//                    return false;
-//                }
-//                return Integer.valueOf(this.shuttleProtocol.getBatteryPower()) < chargeLine;
-//            } catch (Exception e) {
-//                return false;
-//            }
-//        }
-//    }
-//
-//    @Override
-//    public boolean isCharging() {
-//        if (this.shuttleProtocol.getDeviceStatus() == null || this.shuttleProtocol.getHasCharge() == null) {
-//            return false;
-//        }
-//
-//        if (this.shuttleProtocol.getDeviceStatus() == 0 && this.shuttleProtocol.getHasCharge()) {
-//            //杩愯涓� && 鍏呯數涓�
-//            return true;
-//        }
-//        return false;
-//    }
-//
-//    @Override
-//    public boolean isChargingCompleted() {
-//        Integer maxPower = 100;
-//        ConfigService configService = SpringUtils.getBean(ConfigService.class);
-//        if (configService != null) {
-//            Config chargeMaxValue = configService.selectOne(new EntityWrapper<Config>()
-//                    .eq("code", "chargeMaxValue")
-//                    .eq("status", 1));
-//            if (chargeMaxValue != null) {
-//                maxPower = Integer.parseInt(chargeMaxValue.getValue());
-//            }
-//        }
-//
-//        //***************鍒ゆ柇鏄惁婊″厖鏍″噯***************
-//        Config shuttleMaxPowerVerifyConfig = configService.selectOne(new EntityWrapper<Config>()
-//                .eq("code", "shuttleMaxPowerVerify")
-//                .eq("status", 1));
-//        if (shuttleMaxPowerVerifyConfig != null) {
-//            if (shuttleMaxPowerVerifyConfig.getValue().equals("true")) {
-//                if (this.shuttleProtocol.getBatteryVoltage() < 5630) {
-//                    return false;//鐢靛帇涓嶅缁х画鍏呯數
-//                }
-//            }
-//        }
-//        //***************鍒ゆ柇鏄惁婊″厖鏍″噯***************
-//
-//        if (this.shuttleProtocol.getHasCharge() == null) {
-//            return false;
-//        }
-//
-//        if (this.shuttleProtocol.getBatteryPower() == null) {
-//            return false;
-//        }
-//
-//        if (!this.shuttleProtocol.getHasCharge()) {
-//            return false;
-//        }
-//
-//        if (Integer.valueOf(this.shuttleProtocol.getBatteryPower()) >= maxPower) {
-//            return true;
-//        }
-//        return false;
-//    }
-//
-//    @Override
-//    public boolean isFault() {
-//        if (this.shuttleProtocol.getErrorCode() == null
-//                || this.shuttleProtocol.getMode() == null
-//                || this.shuttleProtocol.getExtend() == null
-//        ) {
-//            return false;
-//        }
-//
-//        if (this.shuttleProtocol.getMode() == 0) {
-//            return true;
-//        }
-//
-//        if (!this.shuttleProtocol.getErrorCode().equals("0")) {
-//            return true;
-//        }
-//
-//        InnerSuhttleExtend extend = (InnerSuhttleExtend) this.shuttleProtocol.getExtend();
-//
-//        if (extend.getSuspendState() == 1) {
-//            return true;
-//        }
-//
-//        return false;
-//    }
-//
-//    @Override
-//    public List<NavigateNode> getMoveAdvancePath() {
-//        ObjectMapper objectMapper = SpringUtils.getBean(ObjectMapper.class);
-//        NavigateMapData navigateMapData = SpringUtils.getBean(NavigateMapData.class);
-//        ArrayList<NavigateNode> path = new ArrayList<>();
-//        if (shuttleProtocol.getTaskNo() != 0) {
-//            //瀛樺湪浠诲姟锛岃幏鍙栨寚浠�
-//            Object object = redisUtil.get(RedisKeyType.SHUTTLE_WORK_FLAG.key + shuttleProtocol.getTaskNo());
-//            if (object != null) {
-//                ShuttleRedisCommand redisCommand = null;
-//                try {
-//                    redisCommand = objectMapper.readValue(String.valueOf(object), ShuttleRedisCommand.class);
-//                } catch (IOException e) {
-//                    return path;
-//                }
-//                List<NavigateNode> nodes = redisCommand.getAssignCommand().getNodes();//绌挎杞﹂璁¤矾寰�
-//                if (nodes == null) {
-//                    return path;
-//                }
-//                if (!nodes.isEmpty()) {
-//                    path.addAll(nodes);
-//                }
-//                NavigateNode navigateNode = path.get(0);
-//                int lev = navigateNode.getZ();
-//
-//                //灏嗚矾寰勯攣涓庡皬杞﹁矾寰勮繘琛屽尮閰�
-//                ArrayList<NavigateNode> tmp = new ArrayList<>();
-//                //妫�娴嬭矾寰勬槸鍚﹁閿佸畾
-//                int[][] map = navigateMapData.getDataFromRedis(lev, NavigationMapType.DFX.id, null, null);
-//                for (NavigateNode node : path) {
-//                    if(map[node.getX()][node.getY()] == -999) {
-//                        tmp.add(node);
-//                    }
-//                }
-//
-//                path = tmp;
-//            }
-//        }
-//        return path;
-//    }
-//
-//    @Override
-//    public int generateDeviceTaskNo(int taskNo, ShuttleTaskNoType type) {
-//        return taskNo;
-//    }
-//
-//    @Override
-//    public synchronized boolean setProtocolStatus(ShuttleProtocolStatusType status) {
-//        this.shuttleProtocol.setProtocolStatus(status);
-//        return true;
-//    }
-//
-//    @Override
-//    public synchronized boolean setTaskNo(Integer taskNo) {
-//        this.shuttleProtocol.setTaskNo(taskNo);
-//        return true;
-//    }
-//
-//    @Override
-//    public synchronized boolean setSyncTaskNo(Integer taskNo) {
-//        this.shuttleProtocol.setSyncTaskNo(taskNo);
-//        return true;
-//    }
-//
-//    @Override
-//    public synchronized boolean setPakMk(boolean pakMk) {
-//        this.shuttleProtocol.setPakMk(pakMk);
-//        return true;
-//    }
-//
-//    @Override
-//    public boolean enableMoveLoc(ShuttleMoveLocParam param, boolean enable) {
-//        if (enable) {
-//            shuttleProtocol.setMoveLoc(true);//寮�鍚窇搴�
-//            shuttleProtocol.setMoveType(param.getMoveType());
-//            shuttleProtocol.setXStart(param.getStartX());
-//            shuttleProtocol.setXTarget(param.getTargetX());
-//            shuttleProtocol.setXCurrent(param.getStartX());
-//            shuttleProtocol.setYStart(param.getStartY());
-//            shuttleProtocol.setYTarget(param.getTargetY());
-//            shuttleProtocol.setYCurrent(param.getStartY());
-//        }else {
-//            shuttleProtocol.setMoveLoc(false);
-//            shuttleProtocol.setMoveType(0);
-//            shuttleProtocol.setXStart(0);
-//            shuttleProtocol.setXTarget(0);
-//            shuttleProtocol.setXCurrent(0);
-//            shuttleProtocol.setYStart(0);
-//            shuttleProtocol.setYTarget(0);
-//            shuttleProtocol.setYCurrent(0);
-//        }
-//        return true;
-//    }
-//
-//    @Override
-//    public boolean requestWaiting() {
-//        if (this.shuttleProtocol.getProtocolStatusType().equals(ShuttleProtocolStatusType.IDLE)) {
-//            this.shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.WAITING);
-//            return true;
-//        }
-//        return false;
-//    }
-//
-//    @Override
-//    public boolean enableDemo(boolean enable) {
-//        shuttleProtocol.setDemo(enable);
-//        return true;
-//    }
-//
-//    @Override
-//    public boolean offerSystemMsg(String format, Object... arguments) {
-//        String msg = News.replace(format, arguments);
-//        shuttleProtocol.setSystemMsg(msg);
-//        return true;
-//    }
-//
-//    @Override
-//    public JSONObject parseStatusToMsg(ShuttleProtocol shuttleProtocol) {
-//        return null;
-//    }
-//
-//    @Override
-//    public ShuttleCommand getMoveCommand(Integer taskNo, String startCodeNum, String distCodeNum, Integer allDistance, Integer runDirection, Integer runSpeed, List<NavigateNode> nodes) {
-//        NavigateMapData navigateMapData = SpringUtils.getBean(NavigateMapData.class);
-//        NyShuttleHttpCommand httpStandard = getHttpStandard(slave.getId(), taskNo);
-//        NyShuttleHttpCommand.NyRequest request = httpStandard.getRequest();
-//
-//        ArrayList<HashMap<String, Object>> path = new ArrayList<>();
-//
-//        Integer taskId = getTaskId();
-//        HashMap<String, Object> body = new HashMap<>();
-//        body.put("requestType", "move");//绉诲姩鍛戒护
-//        body.put("taskId", taskId);//TaskID闇�瑕侀殢鏈�
-////        body.put("start", navigateNodeToNyPointNode(NavigatePositionConvert.codeToNode(startCodeNum, device.getHostId())));//璧风偣
-////        body.put("target", navigateNodeToNyPointNode(NavigatePositionConvert.codeToNode(distCodeNum, device.getHostId())));//缁堢偣
-//        body.put("path", path);
-//        request.setBody(body);
-//
-//        NavigateNode startNode = nodes.get(0);
-//        for (NavigateNode node : nodes) {
-//            HashMap<String, Object> data = new HashMap<>();
-//            String codeNum = NavigatePositionConvert.xyToPosition(node.getX(), node.getY(), node.getZ());
-//            Map<String, Object> nyNode = navigateNodeToNyPointNode(NavigatePositionConvert.codeToNode(codeNum));
-//            int xp = Integer.parseInt(String.valueOf(nyNode.get("y")));
-//            int yp = Integer.parseInt(String.valueOf(nyNode.get("x")));
-//            int z = Integer.parseInt(String.valueOf(nyNode.get("z")));
-//
-//            List<List<MapNode>> mapData = navigateMapData.getJsonData(startNode.getZ(), NavigationMapType.NONE.id, null, null);
-//            List<MapNode> mapNodes = mapData.get(node.getX());
-//            MapNode mapNode = mapNodes.get(node.getY());
-//
-//            data.put("xp", xp);
-//            data.put("yp", yp);
-//            data.put("z", z);
-//            data.put("x", mapNode.getXBase());
-//            data.put("y", mapNode.getYBase());
-//            path.add(data);
-//        }
-//
-//        httpStandard.setRequest(request);
-//
-//        LocMastService locMastService = SpringUtils.getBean(LocMastService.class);
-//        LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>()
-//                .eq("qr_code_value", distCodeNum));
-//        if (locMast == null) {
-//            throw new CoolException("搴撲綅淇℃伅涓嶅瓨鍦�");
-//        }
-//
-//        ShuttleCommand command = new ShuttleCommand();
-//        command.setShuttleNo(slave.getId());
-//        command.setBody(JSON.toJSONString(httpStandard));
-//        command.setMode(ShuttleCommandModeType.MOVE.id);
-//        command.setTargetLocNo(locMast.getLocNo());
-//        command.setTaskNo(taskId);
-//        return command;
-//    }
-//
-//    @Override
-//    public ShuttleCommand getLiftCommand(Integer taskNo, Boolean lift) {
-//        NyShuttleHttpCommand httpStandard = getHttpStandard(slave.getId(), taskNo);
-//        NyShuttleHttpCommand.NyRequest request = httpStandard.getRequest();
-//
-//        Integer taskId = getTaskId();//TaskID闇�瑕侀殢鏈�
-//        HashMap<String, Object> body = new HashMap<>();
-//        body.put("requestType", lift ? "liftUp" : "liftDown");//椤跺崌鎴栦笅闄嶅懡浠�
-//        body.put("taskId", taskId);
-//        request.setBody(body);
-//
-//        httpStandard.setRequest(request);
-//
-//        ShuttleCommand command = new ShuttleCommand();
-//        command.setShuttleNo(slave.getId());
-//        command.setBody(JSON.toJSONString(httpStandard));
-//        command.setMode(lift ? ShuttleCommandModeType.PALLET_LIFT.id : ShuttleCommandModeType.PALLET_DOWN.id);
-//        command.setTaskNo(taskId);
-//        return command;
-//    }
-//
-//    @Override
-//    public ShuttleCommand getChargeCommand(Integer taskNo, Boolean charge) {
-//        NyShuttleHttpCommand httpStandard = getHttpStandard(slave.getId(), taskNo);
-//        NyShuttleHttpCommand.NyRequest request = httpStandard.getRequest();
-//
-//        Integer taskId = getTaskId();//TaskID闇�瑕侀殢鏈�
-//        HashMap<String, Object> body = new HashMap<>();
-//        body.put("requestType", charge ? "charge" : "stopCharge");//鍏呯數鎴栧仠姝㈠厖鐢�
-//        body.put("taskId", taskId);
-//        request.setBody(body);
-//
-//        httpStandard.setRequest(request);
-//
-//        ShuttleCommand command = new ShuttleCommand();
-//        command.setShuttleNo(slave.getId());
-//        command.setBody(JSON.toJSONString(httpStandard));
-//        command.setMode(charge ? ShuttleCommandModeType.CHARGE_OPEN.id : ShuttleCommandModeType.CHARGE_CLOSE.id);
-//        command.setTaskNo(taskId);
-//        return command;
-//    }
-//
-//    @Override
-//    public ShuttleCommand getUpdateLocationCommand(Integer taskNo, String locNo) {
-//        NyShuttleHttpCommand httpStandard = getHttpStandard(slave.getId(), taskNo);
-//        NyShuttleHttpCommand.NyRequest request = httpStandard.getRequest();
-//
-//        HashMap<String, Object> body = new HashMap<>();
-//        body.put("requestType", "updateFloor");//鏇存柊灞俍
-//        body.put("z", Utils.getLev(locNo));//鍧愭爣Z
-//        request.setBody(body);
-//
-//        httpStandard.setRequest(request);
-//
-//        ShuttleCommand command = new ShuttleCommand();
-//        command.setShuttleNo(slave.getId());
-//        command.setBody(JSON.toJSONString(httpStandard));
-//        command.setMode(ShuttleCommandModeType.UPDATE_LOCATION.id);
-//        command.setTaskNo(taskNo);
-//        return command;
-//    }
-//
-//    //鑾峰彇灏忚溅澶嶄綅鍝嶅簲鍛戒护
-//    public ShuttleCommand getInitCommand(Integer taskNo, Integer code) {
-//        LocMastService locMastService = SpringUtils.getBean(LocMastService.class);
-//        NavigateMapData navigateMapData = SpringUtils.getBean(NavigateMapData.class);
-//        NyShuttleHttpCommand httpStandard = getHttpStandard(slave.getId(), taskNo);
-//        NyShuttleHttpCommand.NyRequest request = httpStandard.getRequest();
-//
-//        //code -> {Integer@13781} 1101101
-//        int lev = code % 100;
-//        int bay = code / 100 % 1000;
-//        int row = code / 100000;
-//
-//        HashMap<String, Object> map = new HashMap<>();
-//        map.put("x", row);
-//        map.put("y", bay);
-//        map.put("z", lev);
-//
-//        String mapStr = JSON.toJSONString(map);
-//        LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>()
-//                .eq("qr_code_value", mapStr));
-//        if (locMast == null) {
-//            throw new CoolException("鍦板潃鐮佷笉瀛樺湪");
-//        }
-//
-//        List<List<MapNode>> mapData = navigateMapData.getJsonData(lev, NavigationMapType.NONE.id, null, null);
-//        List<MapNode> mapNodes = mapData.get(locMast.getRow1());
-//        MapNode mapNode = mapNodes.get(locMast.getBay1());
-//
-//        HashMap<String, Object> location = new HashMap<>();
-//        location.put("xp", row);
-//        location.put("yp", bay);
-//        location.put("z", lev);
-//        location.put("x", mapNode.getXBase());
-//        location.put("y", mapNode.getYBase());
-//
-//        HashMap<String, Object> body = new HashMap<>();
-//        body.put("responseType", "init");//澶嶄綅
-//        body.put("location", location);//鍒濆鍖栧潗鏍�
-//        body.put("devicePoints", new ArrayList<>());//鎻愬崌鏈虹偣浣�
-//        body.put("specialPoints", new ArrayList<>());//鐗规畩鏉$爜鍧愭爣
-//        request.setBody(body);
-//
-//        httpStandard.setRequest(request);
-//
-//        ShuttleCommand command = new ShuttleCommand();
-//        command.setShuttleNo(slave.getId());
-//        command.setBody(JSON.toJSONString(httpStandard));
-//        command.setMode(ShuttleCommandModeType.RESET.id);
-//        command.setTaskNo(taskNo);
-//        return command;
-//    }
-//
-//    @Override
-//    public boolean connect() {
-//        try {
-//            InetAddress address = InetAddress.getByName(slave.getIp());
-//            if (address.isReachable(10000)) {
-//                Socket socket = new Socket(slave.getIp(), slave.getPort());
-//                socket.setSoTimeout(10000);
-//                socket.setKeepAlive(true);
-//                this.socket = socket;
-//                log.info(MessageFormat.format("銆恵0}銆戝洓鍚戠┛姊溅Socket閾炬帴鎴愬姛 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort()));
-//            }
-//        } catch (Exception e) {
-//            OutputQueue.SHUTTLE.offer(MessageFormat.format("銆恵0}銆戝洓鍚戠┛姊溅Socket閾炬帴澶辫触 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort()));
-//            return false;
-//        }
-//
-//        return true;
-//    }
-//
-//    @Override
-//    public void close() {
-//
-//    }
-//
-//    //鑾峰彇HTTP璇锋眰鏍囧噯缁撴瀯浣�
-//    private NyShuttleHttpCommand getHttpStandard(Integer shuttleNo, Integer taskNo) {
-//        NyShuttleHttpCommand httpStandard = new NyShuttleHttpCommand();
-//        httpStandard.setMsgType("requestMsg");//璇锋眰娑堟伅
-//        httpStandard.setRobotId(shuttleNo);//杞﹁締缂栧彿
-//        httpStandard.setTaskNo(taskNo);//宸ヤ綔鍙�
-//
-//        //璁剧疆璇锋眰娑堟伅
-//        NyShuttleHttpCommand.NyRequest request = new NyShuttleHttpCommand.NyRequest();
-//        NyShuttleHttpCommand.NyRequest.NyHeader header = new NyShuttleHttpCommand.NyRequest.NyHeader();
-//        header.setVersion("1.0");//鐗堟湰鍙�
-//        header.setRequestId(getRequestId());//娑堟伅缂栧彿
-//
-//        //璁剧疆璇锋眰澶�
-//        request.setHeader(header);
-//        httpStandard.setRequest(request);
-//        return httpStandard;
-//    }
-//
-//    //鑾峰彇璇锋眰缂栧彿
-//    private Integer getRequestId() {
-//        Random random = new Random();
-//        return random.nextInt(9999999);
-//    }
-//
-//    //鑾峰彇TaskId
-//    private static Integer getTaskId() {
-//        Random random = new Random();
-//        return random.nextInt(999999);
-//    }
-//
-//    //鑾峰彇璇籉AS鐘舵�佷俊鎭懡浠�
-//    private NyShuttleHttpCommand getReadStatusCommand(Integer shuttleNo) {
-//        NyShuttleHttpCommand httpStandard = getHttpStandard(shuttleNo, 9999);
-//        NyShuttleHttpCommand.NyRequest request = httpStandard.getRequest();
-//
-//        HashMap<String, Object> body = new HashMap<>();
-//        body.put("requestType", "readState");//璇籉AS鐘舵�佷俊鎭�
-//        request.setBody(body);
-//
-//        httpStandard.setRequest(request);
-//        return httpStandard;
-//    }
-//
-//    //鍙戝嚭璇锋眰
-//    private JSONObject requestCommand(NyShuttleHttpCommand httpCommand) throws IOException {
-//        try {
-//            if (this.socket == null) {
-//                return null;
-//            }
-//
-//            //鍘嬬缉鏁版嵁鍖�
-//            JSONObject data = JSON.parseObject(JSON.toJSONString(httpCommand));
-//            data.remove("nodes");
-//
-//            // 鑾峰彇杈撳嚭娴�
-//            OutputStreamWriter writer = new OutputStreamWriter(this.socket.getOutputStream());
-//            writer.write(JSON.toJSONString(data) + "\r\n");
-//            writer.flush();
-////            System.out.println("Sent message to server: " + JSON.toJSONString(httpCommand));
-//
-//            String requestType = null;
-//            String taskId = null;
-//            try {
-//                requestType = httpCommand.getRequest().getBody().get("requestType").toString();
-//                taskId = httpCommand.getRequest().getBody().get("taskId").toString();
-//            } catch (Exception e) {
-////            return null;
-//                //taskId鍙兘鍙栫┖锛屼笉鎶ラ敊锛屾甯告儏鍐�
-//            }
-//
-//            // 鑾峰彇鏈嶅姟鍣ㄥ搷搴�
-//            // 灏濊瘯10娆�
-//            JSONObject result = null;
-//            for (int i = 0; i < 10; i++) {
-//                result = getRequestBody(requestType, taskId);
-//                if (result == null) {
-//                    try {
-//                        Thread.sleep(100);
-//                    } catch (Exception e) {
-//                        e.printStackTrace();
-//                    }
-//                }else {
-//                    break;
-//                }
-//            }
-//            return result;//杩斿洖Body缁撴灉闆�
-//        }catch (Exception e) {
-//            e.printStackTrace();
-//        }
-//        return null;
-//    }
-//
-//    private void requestCommandAsync(NyShuttleHttpCommand httpCommand) throws IOException {
-//        if (this.socket == null) {
-//            return;
-//        }
-//
-//       try {
-//           //鍘嬬缉鏁版嵁鍖�
-//           JSONObject data = JSON.parseObject(JSON.toJSONString(httpCommand));
-//           data.remove("nodes");
-//
-//           // 鑾峰彇杈撳嚭娴�
-//           OutputStreamWriter writer = new OutputStreamWriter(this.socket.getOutputStream());
-//           writer.write(JSON.toJSONString(data) + "\r\n");
-//           writer.flush();
-////            System.out.println("Sent message to server: " + JSON.toJSONString(httpCommand));
-//       }catch (Exception e) {
-////           e.printStackTrace();
-////           System.out.println("socket write error");
-//           this.socket.close();
-//           this.socket = null;
-//       }
-//    }
-//
-//    private JSONObject filterBodyData(JSONObject data) {
-//        Object response = data.get("response");
-//        if (response == null) {
-//            return null;
-//        }
-//
-//        JSONObject result = JSON.parseObject(response.toString());
-//        Object body = result.get("body");
-//        if (body == null) {
-//            return null;
-//        }
-//        JSONObject jsonBody = JSON.parseObject(body.toString());
-//        return jsonBody;
-//    }
-//
-//    //鍦板浘鑺傜偣杞崲鐗涚溂鑺傜偣
-//    private static Map<String, Object> navigateNodeToNyPointNode(NavigateNode node) {
-//        int[] NyPosition = WCSXyzToNyXyz(node.getX(), node.getY(), node.getZ());//WCS绯荤粺鍧愭爣杞墰鐪煎潗鏍�
-//        HashMap<String, Object> point = new HashMap<>();
-//        point.put("x", NyPosition[0]);
-//        point.put("y", NyPosition[1]);
-//        point.put("z", NyPosition[2]);
-//        return point;
-//    }
-//
-//    //WCS绯荤粺鍧愭爣杞墰鐪煎潗鏍�
-//    private static int[] WCSXyzToNyXyz(int x, int y, int z) {
-////        //WCS绯荤粺Y杞� => 鐗涚溂X杞磋浆鎹㈠叕寮�
-////        int x1 = Math.abs(y - 61) + 11;
-////        //WCS绯荤粺X杞� => 鐗涚溂Y杞磋浆鎹㈠叕寮�
-////        int y1 = x + 10;
-//
-////        int x1 = x + 10;
-////        int y1 = y + 10;
-//        LocMastService locMastService = SpringUtils.getBean(LocMastService.class);
-//        LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>()
-//                .eq("row1", x)
-//                .eq("bay1", y)
-//                .eq("lev1", z)
-//                .eq("status", 1));
-//        if (locMast == null) {
-//            return null;
-//        }
-//
-//        String qrCodeValue = locMast.getQrCodeValue();
-//        JSONObject data = JSON.parseObject(qrCodeValue);
-//        return new int[]{data.getInteger("y"), data.getInteger("x"), z};
-//    }
-//
-//    @Data
-//    private class InnerSuhttleExtend {
-//
-//        /**
-//         * 绠″埗鐘舵�佷笉鍦ㄧ鍒朵笅/琚鍒朵腑
-//         * 0/1
-//         */
-//        private Integer suspendState;
-//
-//        /**
-//         * 鏈�楂樼數鑺數鍘�(mV)
-//         */
-//        private Integer maxCellVoltage;
-//
-//        /**
-//         * 鏈�浣庣數鑺數鍘�(mV)锛屼綆浜�2900mv闇�瑕佺珛鍗冲厖鐢�
-//         */
-//        private Integer minCellVoltage;
-//
-//        /**
-//         * 鐢垫睜鐢靛帇锛坢V锛�
-//         */
-//        private Integer voltage;
-//
-//        /**
-//         * 鍏呮斁鐢靛惊鐜鏁�
-//         */
-//        private Integer chargeCycleTimes;
-//
-//        /**
-//         * 鍓╀綑鐢甸噺/10(A)
-//         */
-//        private Integer surplusQuantity;
-//
-//        /**
-//         * 鎬荤數閲�/10(A)
-//         */
-//        private Integer countQuantity;
-//
-//    }
-//}
diff --git a/src/main/java/com/zy/core/thread/impl/TrafficControlImplThread.java b/src/main/java/com/zy/core/thread/impl/TrafficControlImplThread.java
deleted file mode 100644
index bcd0c2d..0000000
--- a/src/main/java/com/zy/core/thread/impl/TrafficControlImplThread.java
+++ /dev/null
@@ -1,529 +0,0 @@
-package com.zy.core.thread.impl;
-
-import com.core.common.SpringUtils;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.zy.asrs.entity.WrkMast;
-import com.zy.asrs.service.WrkMastService;
-import com.zy.asrs.utils.Utils;
-import com.zy.common.model.NavigateNode;
-import com.zy.common.model.enums.NavigationMapType;
-import com.zy.common.utils.NavigateUtils;
-import com.zy.common.utils.RedisUtil;
-import com.zy.common.utils.ShuttleOperaUtils;
-import com.zy.core.News;
-import com.zy.core.cache.SlaveConnection;
-import com.zy.core.dispatcher.ShuttleDispatchUtils;
-import com.zy.core.enums.RedisKeyType;
-import com.zy.core.enums.ShuttleProtocolStatusType;
-import com.zy.core.enums.SlaveType;
-import com.zy.core.enums.WrkStsType;
-import com.zy.core.model.TrafficControlDataModel;
-import com.zy.core.model.command.ShuttleRedisCommand;
-import com.zy.core.model.param.OperateTrafficControlParam;
-import com.zy.core.model.protocol.ShuttleProtocol;
-import com.zy.core.thread.ShuttleThread;
-import com.zy.core.thread.TrafficControlThread;
-
-import java.io.IOException;
-import java.util.*;
-import java.util.stream.Collectors;
-
-public class TrafficControlImplThread implements TrafficControlThread {
-
-    private RedisUtil redisUtil;
-
-    private List<TrafficControlDataModel> applyList = new ArrayList<>();
-    private HashMap<Integer,Long> shuttleReportErrorMap = new HashMap<>();
-    private HashMap<Integer,Long> pathIdleShuttleMap = new HashMap<>();
-    private HashMap<Integer,Long> applyRecordsMap = new HashMap<>();
-    private HashMap<String, List<NavigateNode>> taskNodesMap = new HashMap<>();
-    private List<TrafficControlDataModel> trafficControlDataList = new ArrayList<>();
-    private List<TrafficControlDataModel> trafficControlDataListRead = new ArrayList<>();
-
-    public TrafficControlImplThread(RedisUtil redisUtil) {
-        this.redisUtil = redisUtil;
-    }
-
-    @Override
-    public void run() {
-        //浠庣紦瀛樻仮澶嶄氦绠′俊鎭�
-        Object object = redisUtil.get(RedisKeyType.TRAFFIC_CONTROL_MAP.key);
-        if(object != null) {
-            trafficControlDataList = (List<TrafficControlDataModel>) object;
-            trafficControlDataListRead = trafficControlDataList.stream()
-                    .map(model -> new TrafficControlDataModel(
-                            model.getShuttleNo(),
-                            model.getTaskNo(),
-                            new ArrayList<>(model.getNodeList()),
-                            new ArrayList<>(model.getTotalNodeList())
-                    ))
-                    .collect(Collectors.toList());
-        }
-
-        while (true) {
-            try {
-                List<TrafficControlDataModel> allTrafficControl = getAllTrafficControl();
-                //鏇存柊浜ょ淇℃伅
-                redisUtil.set(RedisKeyType.TRAFFIC_CONTROL_MAP.key, allTrafficControl);
-
-                for (TrafficControlDataModel dataModel : allTrafficControl) {
-                    Integer shuttleNo = dataModel.getShuttleNo();
-                    Integer taskNo = dataModel.getTaskNo();
-
-                    Object object1 = redisUtil.get(RedisKeyType.TRAFFIC_CONTROL_SUCCESS_APPLY.key + shuttleNo + "_" + taskNo);
-                    if(object1 == null) {
-                        redisUtil.set(RedisKeyType.TRAFFIC_CONTROL_SUCCESS_APPLY.key + shuttleNo + "_" + taskNo, 1, 60 * 60);
-                    }
-                }
-
-                Thread.sleep(200);
-            }catch (Exception e){
-                e.printStackTrace();
-            }
-        }
-
-    }
-
-    @Override
-    public synchronized boolean processApply(TrafficControlDataModel applyData) {
-        ShuttleOperaUtils shuttleOperaUtils = SpringUtils.getBean(ShuttleOperaUtils.class);
-        WrkMastService wrkMastService = SpringUtils.getBean(WrkMastService.class);
-        ObjectMapper objectMapper = SpringUtils.getBean(ObjectMapper.class);
-        NavigateUtils navigateUtils = SpringUtils.getBean(NavigateUtils.class);
-        ShuttleDispatchUtils shuttleDispatchUtils = SpringUtils.getBean(ShuttleDispatchUtils.class);
-        if (shuttleOperaUtils == null || wrkMastService == null || objectMapper == null || navigateUtils == null || shuttleDispatchUtils == null) {
-            return false;
-        }
-
-        if (applyData == null) {
-            return false;
-        }
-
-        if (applyData.getShuttleNo() == null || applyData.getTaskNo() == null || applyData.getNodeList() == null || applyData.getTotalNodeList() == null) {
-            return false;
-        }
-
-        List<TrafficControlDataModel> allTrafficControlList = getAllTrafficControl();
-
-        Integer shuttleNo = applyData.getShuttleNo();
-        Integer taskNo = applyData.getTaskNo();
-        List<NavigateNode> nodeList = applyData.getNodeList();
-        List<NavigateNode> totalNodeList = applyData.getTotalNodeList();
-
-        NavigateNode startNode = totalNodeList.get(0);
-        List<int[]> shuttlePoints = Utils.getShuttlePoints(shuttleNo, startNode.getZ());
-
-        int[] currentShuttlePoint = Utils.getShuttlePoint(shuttleNo);
-        if(currentShuttlePoint == null) {
-            return false;
-        }
-        String currentShuttleLoc = Utils.getLocNo(currentShuttlePoint[0], currentShuttlePoint[1], startNode.getZ());
-
-        List<String> shuttleLocList = new ArrayList<>();
-        for (int[] shuttlePoint : shuttlePoints) {
-            String locNo = Utils.getLocNo(shuttlePoint[0], shuttlePoint[1], startNode.getZ());
-            shuttleLocList.add(locNo);
-        }
-
-        //妫�娴嬭溅瀛愭槸鍚﹀瓨鍦ㄧ鍒�
-        for (int i = 0; i < allTrafficControlList.size(); i++) {
-            TrafficControlDataModel controlDataModel = allTrafficControlList.get(i);
-            if(shuttleNo.equals(controlDataModel.getShuttleNo())) {
-                //瀛樺湪绠″埗
-                if(!controlDataModel.getTaskNo().equals(taskNo)) {
-                    return false;
-                }
-
-                for (NavigateNode node : nodeList) {
-                    String locNo = Utils.getLocNo(node.getX(), node.getY(), node.getZ());
-                    if(shuttleLocList.contains(locNo)) {
-                        ShuttleThread shuttleThread = Utils.searchShuttle(locNo);
-                        if(shuttleThread != null) {
-                            shuttleThread.restartCalcPath();
-                        }
-                    }
-                }
-
-//                News.info("traffic running {},{}", shuttleNo, taskNo);
-                return true;//宸茬粡绠″埗鍏佽鎵ц
-            }
-        }
-
-        ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttleNo);
-        if (shuttleThread == null) {
-            return false;
-        }
-
-        if (!applyRecordsMap.containsKey(shuttleNo)) {
-            applyRecordsMap.put(shuttleNo, System.currentTimeMillis());
-        }
-
-        Long applyRecordTime = applyRecordsMap.get(shuttleNo);
-        if ((System.currentTimeMillis() - applyRecordTime) > 1000 * 10) {
-            shuttleThread.restartCalcPath();
-        }
-
-        List<String> totalLocList = new ArrayList<>();
-        for (NavigateNode node : totalNodeList) {
-            String locNo = Utils.getLocNo(node.getX(), node.getY(), node.getZ());
-            totalLocList.add(locNo);
-        }
-
-        //妫�娴嬭矾寰勬槸鍚︽湁灏忚溅
-        for (String loc : totalLocList) {
-            if(shuttleLocList.contains(loc)) {
-                ShuttleThread pathShuttleThread = Utils.searchShuttle(loc);
-                if (pathShuttleThread == null) {
-                    return false;
-                }
-
-                ShuttleProtocol shuttleProtocol = pathShuttleThread.getStatus();
-                if(shuttleProtocol == null) {
-                    return false;
-                }
-
-                if (pathShuttleThread.isIdle()) {
-                    if(pathIdleShuttleMap.containsKey(shuttleProtocol.getShuttleNo())) {
-                        Long idleTime = pathIdleShuttleMap.get(shuttleProtocol.getShuttleNo());
-                        if((System.currentTimeMillis() - idleTime) > 1000 * 10) {
-                            //妫�娴嬮殰纰嶇墿杞�
-                            int checkObstacle = shuttleOperaUtils.checkObstacle(shuttleProtocol.getCurrentLocNo(), new ArrayList<Integer>() {{
-                                add(shuttleNo);
-                            }}, totalNodeList);
-                            pathIdleShuttleMap.remove(shuttleProtocol.getShuttleNo());
-
-                            if (checkObstacle == 2) {
-                                pathShuttleThread.restartCalcPath();
-                            }
-                        }
-                    }else {
-                        pathIdleShuttleMap.put(shuttleProtocol.getShuttleNo(), System.currentTimeMillis());
-                    }
-                }else {
-                    Object cancelTaskLock = redisUtil.get(RedisKeyType.TRAFFIC_CONTROL_SHUTTLE_OBSTACLE_CANCEL_TASK_LOCK.key + shuttleProtocol.getShuttleNo());
-                    if(cancelTaskLock != null) {
-                        return false;
-                    }
-
-                    Object obj = redisUtil.get(RedisKeyType.SHUTTLE_WORK_FLAG.key + shuttleProtocol.getTaskNo());
-                    if (obj == null) {
-                        return false;
-                    }
-
-                    ShuttleRedisCommand redisCommand = null;
-                    try {
-                        redisCommand = objectMapper.readValue(String.valueOf(obj), ShuttleRedisCommand.class);
-                    } catch (IOException e) {
-                        throw new RuntimeException(e);
-                    }
-
-                    if (redisCommand == null) {
-                        return false;
-                    }
-
-                    if (redisCommand.getCommandStep() != 0) {
-                        return false;
-                    }
-
-                    long recordTime = System.currentTimeMillis();
-                    if (pathShuttleThread.isDeviceIdle()) {
-                        Object object = redisUtil.get(RedisKeyType.TRAFFIC_CONTROL_SHUTTLE_OBSTACLE_CANCEL_TASK.key + shuttleProtocol.getShuttleNo());
-                        if(object == null) {
-                            redisUtil.set(RedisKeyType.TRAFFIC_CONTROL_SHUTTLE_OBSTACLE_CANCEL_TASK.key + shuttleProtocol.getShuttleNo(), recordTime, 60 * 3);
-                        }else {
-                            recordTime = (long) object;
-                        }
-                    }else {
-                        redisUtil.del(RedisKeyType.TRAFFIC_CONTROL_SHUTTLE_OBSTACLE_CANCEL_TASK.key + shuttleProtocol.getShuttleNo());
-                        return false;
-                    }
-
-                    if(System.currentTimeMillis() - recordTime > 1000 * 15) {
-                        WrkMast wrkMast = wrkMastService.selectShuttleHasMoveWorking(shuttleProtocol.getShuttleNo());
-                        if(wrkMast != null) {
-                            if (wrkMast.getWrkSts() == WrkStsType.MOVE_SHUTTLE.sts) {
-                                if (shuttleProtocol.getTaskNo().equals(wrkMast.getWrkNo())) {
-                                    //璁$畻杩戠偣浣嶇疆
-                                    String endLocation = navigateUtils.calcEndLocation(shuttleProtocol.getCurrentLocNo(), wrkMast.getLocNo(), NavigationMapType.getMapTypes(NavigationMapType.NORMAL), null, null, 2);
-                                    if (endLocation == null) {
-                                        News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛岄殰纰嶇墿灏忚溅閬块殰杩戠偣浣嶇疆璁$畻澶辫触", wrkMast.getWrkNo());
-                                        return false;
-                                    }
-
-                                    pathShuttleThread.setSyncTaskNo(0);
-                                    pathShuttleThread.setProtocolStatus(ShuttleProtocolStatusType.IDLE);
-                                    wrkMastService.deleteById(wrkMast);
-                                    shuttleDispatchUtils.dispatchShuttle(null, endLocation, shuttleProtocol.getShuttleNo());//璋冨害灏忚溅鍒拌揣鐗╄繎鐐�
-                                    redisUtil.set(RedisKeyType.TRAFFIC_CONTROL_SHUTTLE_OBSTACLE_CANCEL_TASK_LOCK.key + shuttleProtocol.getShuttleNo(), "cancelLock", 60);
-                                }
-                            }
-                        }
-                    }
-                }
-                return false;//node has shuttle
-            }
-        }
-
-        //妫�娴嬭妭鐐规槸鍚﹁浣跨敤
-        for (TrafficControlDataModel controlDataModel : allTrafficControlList) {
-            List<NavigateNode> list = controlDataModel.getTotalNodeList();
-            for (int i = 0; i < list.size(); i++) {
-                NavigateNode node = list.get(i);
-                String locNo = Utils.getLocNo(node.getX(), node.getY(), node.getZ());
-                if (i == 0 && currentShuttleLoc.equals(locNo)) {
-                    continue;//..todo wait watch problem
-                }
-
-                if(totalLocList.contains(locNo)) {
-                    String first = totalLocList.get(0);
-                    if(first.equals(locNo)) {//filter first node
-                       continue;
-                    }
-                    return false;
-                }
-            }
-        }
-
-        //浜ょ鎺ユ敹
-        OperateTrafficControlParam param = new OperateTrafficControlParam();
-        param.setDataModel(applyData);
-        param.setOperaType("add");
-        operateTrafficControl(param);
-
-        applyRecordsMap.remove(shuttleNo);
-        redisUtil.set(RedisKeyType.TRAFFIC_CONTROL_SUCCESS_APPLY.key + shuttleNo + "_" + taskNo, 1, 60 * 60);
-        News.info("[RCS Debug] receipt traffic {},{}", shuttleNo, taskNo);
-        return true;
-    }
-
-    @Override
-    public boolean applyTrafficControl(List<NavigateNode> totalNodeList, List<NavigateNode> nodeList, Integer shuttleNo, Integer taskNo) {
-        Set<String> keys = redisUtil.searchKeys(RedisKeyType.TRAFFIC_CONTROL_APPLY.key + shuttleNo + "_");
-        if (!keys.isEmpty()) {
-            return false;
-        }
-
-        TrafficControlDataModel model = new TrafficControlDataModel();
-        model.setShuttleNo(shuttleNo);
-        model.setTaskNo(taskNo);
-        model.setNodeList(nodeList);
-        model.setTotalNodeList(totalNodeList);
-        redisUtil.set(RedisKeyType.TRAFFIC_CONTROL_APPLY.key + shuttleNo + "_" + System.currentTimeMillis(), model);
-        return true;
-    }
-
-    @Override
-    public boolean trafficReport(List<NavigateNode> nodeList, Integer shuttleNo, Integer taskNo) {
-        //妫�娴嬭溅瀛愭槸鍚﹀瓨鍦ㄧ鍒�
-        List<TrafficControlDataModel> allTrafficControlList = getAllTrafficControl();
-        for (int i = 0; i < allTrafficControlList.size(); i++) {
-            TrafficControlDataModel controlDataModel = allTrafficControlList.get(i);
-            if(shuttleNo.equals(controlDataModel.getShuttleNo())) {
-                if(controlDataModel.getTaskNo().equals(taskNo)) {
-                    OperateTrafficControlParam param = new OperateTrafficControlParam();
-                    param.setDataModel(controlDataModel);
-                    param.setOperaType("report");
-                    param.setReportNodeList(nodeList);
-                    redisUtil.set(RedisKeyType.TRAFFIC_CONTROL_REPORT_LIST.key + shuttleNo + "_" + System.currentTimeMillis(), param);
-                    return true;
-                }
-            }
-        }
-        return false;
-    }
-
-    @Override
-    public synchronized boolean trafficReportError(Integer shuttleNo, Integer taskNo) {
-        ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttleNo);
-        if (shuttleThread == null) {
-            return false;
-        }
-
-        if(shuttleReportErrorMap.containsKey(shuttleNo)) {
-            Long errorTime = shuttleReportErrorMap.get(shuttleNo);
-            if((System.currentTimeMillis() - errorTime) > 1000 * 10) {
-                shuttleReportErrorMap.remove(shuttleNo);
-                shuttleThread.restartCalcPath();
-            }
-        }else {
-            shuttleReportErrorMap.put(shuttleNo, System.currentTimeMillis());
-        }
-        return true;
-    }
-
-    @Override
-    public boolean cancelTrafficControl(Integer shuttleNo, Integer taskNo) {
-        TrafficControlDataModel dataModel = queryTrafficControl(shuttleNo, taskNo);
-        if (dataModel == null) {
-            return false;
-        }
-
-        OperateTrafficControlParam param = new OperateTrafficControlParam();
-        param.setDataModel(dataModel);
-        param.setOperaType("cancel");
-        param.setForceCancel(false);
-        return operateTrafficControl(param);
-    }
-
-    @Override
-    public boolean forceCancelTrafficControl(Integer shuttleNo) {
-        TrafficControlDataModel dataModel = queryTrafficControl(shuttleNo);
-        if (dataModel == null) {
-            return false;
-        }
-
-        OperateTrafficControlParam param = new OperateTrafficControlParam();
-        param.setDataModel(dataModel);
-        param.setOperaType("cancel");
-        param.setForceCancel(true);
-        return operateTrafficControl(param);
-    }
-
-    @Override
-    public TrafficControlDataModel queryTrafficControl(Integer shuttleNo, Integer taskNo) {
-        //妫�娴嬭溅瀛愭槸鍚﹀瓨鍦ㄧ鍒�
-        List<TrafficControlDataModel> allTrafficControlList = getAllTrafficControl();
-        for (int i = 0; i < allTrafficControlList.size(); i++) {
-            TrafficControlDataModel controlDataModel = allTrafficControlList.get(i);
-            if(shuttleNo.equals(controlDataModel.getShuttleNo())) {
-                if(controlDataModel.getTaskNo().equals(taskNo)) {
-                    return controlDataModel;
-                }
-            }
-        }
-        return null;
-    }
-
-    @Override
-    public TrafficControlDataModel queryTrafficControl(Integer shuttleNo) {
-        //妫�娴嬭溅瀛愭槸鍚﹀瓨鍦ㄧ鍒�
-        List<TrafficControlDataModel> allTrafficControlList = getAllTrafficControl();
-        for (int i = 0; i < allTrafficControlList.size(); i++) {
-            TrafficControlDataModel controlDataModel = allTrafficControlList.get(i);
-            if(shuttleNo.equals(controlDataModel.getShuttleNo())) {
-                return controlDataModel;
-            }
-        }
-        return null;
-    }
-
-    @Override
-    public List<TrafficControlDataModel> getAllTrafficControl() {
-        return trafficControlDataListRead;
-    }
-
-    @Override
-    public synchronized boolean operateTrafficControl(OperateTrafficControlParam param) {
-        long startTime = System.currentTimeMillis();
-        String operaType = param.getOperaType();
-        News.info("[RCS Debug] Operate Traffic Control is Start " + operaType);
-
-        boolean result = false;
-        if (operaType.equals("add")) {
-            result = addTrafficControlDataList(param);
-        } else if (operaType.equals("cancel")) {
-            result = removeTrafficControlDataList(param);
-        } else if (operaType.equals("report")) {
-            result = reportTrafficControlDataList(param);
-        }
-
-        this.trafficControlDataListRead = trafficControlDataList.stream()
-                .map(model -> new TrafficControlDataModel(
-                        model.getShuttleNo(),
-                        model.getTaskNo(),
-                        new ArrayList<>(model.getNodeList()),
-                        new ArrayList<>(model.getTotalNodeList())
-                ))
-                .collect(Collectors.toList());
-        News.info("[RCS Debug] Operate Traffic Control is end " + (System.currentTimeMillis() - startTime) + "ms");
-        return result;
-    }
-
-    public synchronized boolean addTrafficControlDataList(OperateTrafficControlParam param) {
-        TrafficControlDataModel dataModel = param.getDataModel();
-        trafficControlDataList.add(dataModel);
-        return true;
-    }
-
-    public synchronized boolean removeTrafficControlDataList(OperateTrafficControlParam param) {
-        //妫�娴嬭溅瀛愭槸鍚﹀瓨鍦ㄧ鍒�
-        TrafficControlDataModel dataModel = param.getDataModel();
-        Boolean forceCancel = param.getForceCancel();
-
-        Integer shuttleNo = dataModel.getShuttleNo();
-        Integer taskNo = dataModel.getTaskNo();
-
-        int idx = -1;
-        for (int i = 0; i < trafficControlDataList.size(); i++) {
-            TrafficControlDataModel controlDataModel = trafficControlDataList.get(i);
-            if(shuttleNo.equals(controlDataModel.getShuttleNo())) {
-                if (forceCancel) {
-                    idx = i;
-                    break;
-                }else {
-                    if(controlDataModel.getTaskNo().equals(taskNo)) {
-                        idx = i;
-                        break;
-                    }
-                }
-            }
-        }
-
-        if(idx == -1) {
-            return false;
-        }
-
-        trafficControlDataList.remove(idx);//鍙栨秷绠″埗
-        redisUtil.del(RedisKeyType.TRAFFIC_CONTROL_SUCCESS_APPLY.key + shuttleNo + "_" + taskNo);
-        return true;
-    }
-
-    public synchronized boolean reportTrafficControlDataList(OperateTrafficControlParam param) {
-        //妫�娴嬭溅瀛愭槸鍚﹀瓨鍦ㄧ鍒�
-        TrafficControlDataModel dataModel = param.getDataModel();
-        List<NavigateNode> reportNodeList = param.getReportNodeList();
-
-        Integer shuttleNo = dataModel.getShuttleNo();
-        Integer taskNo = dataModel.getTaskNo();
-
-        for (int i = 0; i < trafficControlDataList.size(); i++) {
-            TrafficControlDataModel controlDataModel = trafficControlDataList.get(i);
-            if(shuttleNo.equals(controlDataModel.getShuttleNo())) {
-                if(controlDataModel.getTaskNo().equals(taskNo)) {
-                    List<NavigateNode> newTotalNodeList = new ArrayList<>();
-                    List<NavigateNode> totalNodeList = controlDataModel.getTotalNodeList();
-
-                    List<String> reportList = new ArrayList<>();
-                    for (NavigateNode node : reportNodeList) {
-                        reportList.add(Utils.getLocNo(node.getX(), node.getY(), node.getZ()));
-                    }
-
-                    for (NavigateNode node : totalNodeList) {
-                        String locNo = Utils.getLocNo(node.getX(), node.getY(), node.getZ());
-                        if(reportList.contains(locNo)) {
-                            continue;
-                        }
-                        newTotalNodeList.add(node);
-                    }
-
-                    controlDataModel.setTotalNodeList(newTotalNodeList);
-                    trafficControlDataList.set(i, controlDataModel);
-                    shuttleReportErrorMap.remove(shuttleNo);
-                    return true;
-                }
-            }
-        }
-        return false;
-    }
-
-    @Override
-    public boolean connect() {
-        return false;
-    }
-
-    @Override
-    public void close() {
-
-    }
-
-}
diff --git a/src/main/java/com/zy/core/thread/impl/ZyForkLiftThread.java b/src/main/java/com/zy/core/thread/impl/ZyForkLiftThread.java
deleted file mode 100644
index 2a3b70d..0000000
--- a/src/main/java/com/zy/core/thread/impl/ZyForkLiftThread.java
+++ /dev/null
@@ -1,650 +0,0 @@
-package com.zy.core.thread.impl;
-
-import HslCommunication.Core.Types.OperateResult;
-import HslCommunication.Core.Types.OperateResultExOne;
-import HslCommunication.Profinet.Siemens.SiemensS7Net;
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONArray;
-import com.alibaba.fastjson.JSONObject;
-import com.baomidou.mybatisplus.mapper.EntityWrapper;
-import com.core.common.DateUtils;
-import com.core.common.SpringUtils;
-import com.zy.asrs.entity.BasLift;
-import com.zy.asrs.entity.DeviceConfig;
-import com.zy.asrs.entity.DeviceDataLog;
-import com.zy.asrs.service.BasLiftService;
-import com.zy.asrs.service.DeviceDataLogService;
-import com.zy.asrs.utils.Utils;
-import com.zy.common.ExecuteSupport;
-import com.zy.common.utils.RedisUtil;
-import com.zy.core.News;
-import com.zy.core.action.ForkLiftAction;
-import com.zy.core.cache.OutputQueue;
-import com.zy.core.enums.*;
-import com.zy.core.model.*;
-import com.zy.core.model.command.ForkLiftCommand;
-import com.zy.core.model.protocol.ForkLiftProtocol;
-import com.zy.core.model.protocol.ForkLiftStaProtocol;
-import com.zy.core.thread.ForkLiftThread;
-import com.zy.core.utils.DeviceMsgUtils;
-import lombok.Data;
-import lombok.extern.slf4j.Slf4j;
-
-import java.io.IOException;
-import java.text.MessageFormat;
-import java.util.*;
-
-@Slf4j
-@SuppressWarnings("all")
-public class ZyForkLiftThread implements ForkLiftThread {
-
-    private DeviceConfig device;
-    private ForkLiftProtocol forkLiftProtocol;
-    private RedisUtil redisUtil;
-    private List<ForkLiftStaProtocol> forkLiftStaProtocols = new ArrayList<>();
-    private List<DeviceMsgModel> readResultList = new ArrayList<>();
-    private List<DeviceMsgModel> resultList = new ArrayList<>();
-
-    public ZyForkLiftThread(DeviceConfig device, List<LiftStation> stationList, RedisUtil redisUtil) {
-        this.device = device;
-        this.redisUtil = redisUtil;
-        //鍒濆鍖栫珯鐐�
-        for (LiftStation station : stationList) {
-            ForkLiftStaProtocol forkLiftStaProtocol = new ForkLiftStaProtocol();
-            forkLiftStaProtocol.setSiteId(station.getSiteId());//绔欑偣鍙�
-            forkLiftStaProtocol.setLev(station.getLev());//绔欑偣妤煎眰
-            String locNo = Utils.getLocNo(station.getRow(), station.getBay(), station.getLev());
-            forkLiftStaProtocol.setLocNo(locNo);//绔欑偣搴撲綅鍙�
-            forkLiftStaProtocol.setLiftNo(station.getLiftNo());//鎻愬崌鏈哄彿
-            forkLiftStaProtocols.add(forkLiftStaProtocol);
-        }
-    }
-
-    @Override
-    public boolean connect() {
-        return true;
-    }
-
-    @Override
-    public void close() {
-
-    }
-
-    @Override
-    public void run() {
-        News.info("{}鍙疯揣鍙夋彁鍗囨満绾跨▼鍚姩", device.getDeviceNo());
-
-        this.connect();
-        //璁惧璇诲彇
-        Thread readThread = new Thread(() -> {
-            while (true) {
-                try {
-                    listenMessageFromRedis();
-                    read();
-                    Thread.sleep(100);
-                } catch (Exception e) {
-                    log.error("ForkliftThread Fail", e);
-                }
-            }
-        });
-        readThread.start();
-
-        while (true) {
-            try {
-                execute();
-            } catch (Exception e) {
-                e.printStackTrace();
-            }
-        }
-    }
-
-    private void execute() {
-        ForkLiftAction forkLiftAction = null;
-        try {
-            forkLiftAction = SpringUtils.getBean(ForkLiftAction.class);
-        }catch (Exception e){}
-        if (forkLiftAction == null) {
-            return;
-        }
-
-        Object object = redisUtil.get(RedisKeyType.FORK_LIFT_FLAG.key + device.getDeviceNo());
-        if (object == null) {
-            return;
-        }
-
-        Integer taskNo = Integer.valueOf(String.valueOf(object));
-        if (taskNo != 0) {
-            //瀛樺湪浠诲姟闇�瑕佹墽琛�
-            boolean result = forkLiftAction.executeWork(device.getDeviceNo(), taskNo);
-        }
-    }
-
-    private void read() {
-        try {
-            readStatus();
-
-            //鎻愬崌鏈哄浜庤繍琛岀姸鎬侊紝灏嗘爣璁扮疆涓簍rue
-            if (forkLiftProtocol.getProtocolStatusType().equals(ForkLiftProtocolStatusType.PICK_UP)
-                    || forkLiftProtocol.getProtocolStatusType().equals(ForkLiftProtocolStatusType.PUT_DOWN)
-                    || forkLiftProtocol.getProtocolStatusType().equals(ForkLiftProtocolStatusType.WAITING)) {
-                forkLiftProtocol.setPakMk(true);
-            }
-        } catch (Exception e) {
-            OutputQueue.FORKLIFT.offer(MessageFormat.format("銆恵0}銆戣鍙栨彁鍗囨満鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), device.getDeviceNo(), device.getIp(), device.getPort()));
-        }
-    }
-
-    private void readStatus() {
-        try {
-            //鑾峰彇鎻愬崌鏈烘暟鎹�
-
-            DeviceMsgUtils deviceMsgUtils = null;
-            try {
-                deviceMsgUtils = SpringUtils.getBean(DeviceMsgUtils.class);
-            }catch (Exception e){
-
-            }
-            if(deviceMsgUtils == null){
-                return;
-            }
-
-            ForkLiftCommand readStatusCommand = getReadStatusCommand();
-            //鎸囦护瓒呰繃2鏉★紝涓嶅啀涓嬪彂浠诲姟鐘舵�佽姹�
-            TreeSet<String> deviceCommandMsgListKey = deviceMsgUtils.getDeviceCommandMsgListKey(SlaveType.ForkLift, device.getDeviceNo());
-            if (deviceCommandMsgListKey.size() < 2) {
-                requestCommand(readStatusCommand);//璇锋眰鐘舵��
-            }
-
-            if (this.readResultList.isEmpty()) {
-                return;
-            }
-
-            DeviceMsgModel deviceMsgModel = this.readResultList.get(0);
-            this.readResultList.remove(0);
-            JSONObject deviceMsg = JSON.parseObject(JSON.toJSONString(deviceMsgModel.getDeviceMsg()));
-            if (!deviceMsg.getString("result").equals("success")) {
-                return;
-            }
-            JSONObject data = deviceMsg.getJSONObject("deviceStatus");
-
-            if (null == forkLiftProtocol) {
-                forkLiftProtocol = new ForkLiftProtocol();
-                forkLiftProtocol.setLiftNo(device.getDeviceNo());
-                forkLiftProtocol.setProtocolStatus(ForkLiftProtocolStatusType.NONE);
-
-                InnerForkLiftExtend innerForkLiftExtend = new InnerForkLiftExtend();
-            }
-
-            //----------璇诲彇鎻愬崌鏈虹姸鎬�-----------
-            //妯″紡
-            forkLiftProtocol.setModel(data.getInteger("model"));
-            //PLC浠诲姟鍙�
-            forkLiftProtocol.setWrkNo(data.getInteger("wrkNo"));
-            //浠诲姟鐘舵��
-            forkLiftProtocol.setProtocolStatus(data.getInteger("protocolStatus"));
-            //浠诲姟妯″紡
-            forkLiftProtocol.setTaskMode(data.getInteger("taskMode"));
-            //鍙栬揣鏁版嵁
-            forkLiftProtocol.setPick(data.getInteger("pick"));
-            //鏀捐揣鏁版嵁
-            forkLiftProtocol.setPut(data.getInteger("put"));
-            //鍑哄叆搴撴ā寮�
-            forkLiftProtocol.setIOMode(data.getInteger("iOMode"));
-            //鏁呴殰鐮�
-            forkLiftProtocol.setErrorCode(data.getInteger("errorCode"));
-            //褰撳墠灞�
-            forkLiftProtocol.setLev(data.getInteger("lev"));
-
-            //************琛ュ厖鎵╁睍瀛楁*************
-            InnerForkLiftExtend forkLiftExtend = (InnerForkLiftExtend) forkLiftProtocol.getExtend();
-            forkLiftProtocol.setExtend(forkLiftExtend);
-
-            JSONArray trayList = data.getJSONArray("trayList");
-            for (int i = 0; i < trayList.size(); i++) {
-                int hasTray = (int) trayList.get(i);
-                ForkLiftStaProtocol forkLiftStaProtocol = forkLiftStaProtocols.get(i);
-                forkLiftStaProtocol.setHasTray(hasTray == 1);
-            }
-
-            JSONArray carList = data.getJSONArray("carList");
-            for (int i = 0; i < carList.size(); i++) {
-                int hasCar = (int) carList.get(i);
-                ForkLiftStaProtocol forkLiftStaProtocol = forkLiftStaProtocols.get(i);
-                forkLiftStaProtocol.setHasCar(hasCar == 1);
-            }
-
-            if (System.currentTimeMillis() - forkLiftProtocol.getDeviceDataLog() > 1000 * 5) {
-                //閲囬泦鏃堕棿瓒呰繃5s锛屼繚瀛樹竴娆℃暟鎹褰�
-                //淇濆瓨鏁版嵁璁板綍
-                DeviceDataLogService deviceDataLogService = SpringUtils.getBean(DeviceDataLogService.class);
-                DeviceDataLog deviceDataLog = new DeviceDataLog();
-                deviceDataLog.setOriginData(JSON.toJSONString(data));
-                deviceDataLog.setWcsData(JSON.toJSONString(forkLiftProtocol));
-                deviceDataLog.setType("forkLift");
-                deviceDataLog.setDeviceNo(forkLiftProtocol.getLiftNo());
-                deviceDataLog.setCreateTime(new Date());
-                deviceDataLogService.insert(deviceDataLog);
-
-                //鏇存柊閲囬泦鏃堕棿
-                forkLiftProtocol.setDeviceDataLog(System.currentTimeMillis());
-            }
-
-            //灏嗘彁鍗囨満鐘舵�佷繚瀛樿嚦鏁版嵁搴�
-            BasLiftService basLiftService = SpringUtils.getBean(BasLiftService.class);
-            BasLift basLift = basLiftService.selectOne(new EntityWrapper<BasLift>()
-                    .eq("lift_no", device.getDeviceNo()));
-            if (basLift == null) {
-                basLift = new BasLift();
-                //鎻愬崌鏈哄彿
-                basLift.setLiftNo(forkLiftProtocol.getLiftNo());
-                basLift.setStatus(1);
-                basLiftService.insert(basLift);
-            }
-            //浠诲姟鍙�
-            basLift.setWrkNo(forkLiftProtocol.getTaskNo());
-            //淇敼鏃堕棿
-            basLift.setUpdateTime(new Date());
-            //璁惧鐘舵��
-            basLift.setDeviceStatus(JSON.toJSONString(forkLiftProtocol));
-            if (basLiftService.updateById(basLift)) {
-                OutputQueue.FORKLIFT.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), forkLiftProtocol.getLiftNo()));
-            }
-
-        } catch (Exception e) {
-            e.printStackTrace();
-            OutputQueue.FORKLIFT.offer(MessageFormat.format("銆恵0}銆戣鍙栬揣鍙夋彁鍗囨満鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), device.getDeviceNo(), device.getIp(), device.getPort()));
-        }
-    }
-
-    @Override
-    public ForkLiftProtocol getStatus(boolean clone) {
-        if (this.forkLiftProtocol == null) {
-            return null;
-        }
-        return clone ? this.forkLiftProtocol.clone() : this.forkLiftProtocol;
-    }
-
-    @Override
-    public List<ForkLiftStaProtocol> getForkLiftStaProtocols() {
-        return this.forkLiftStaProtocols;
-    }
-
-    @Override
-    public ForkLiftProtocol getStatus() {
-        return getStatus(true);
-    }
-
-    @Override
-    public CommandResponse pickAndPut(ForkLiftCommand command) {
-        CommandResponse response = new CommandResponse(false);
-        try {
-            //鍙戝嚭璇锋眰
-            String resultKey = requestCommand(command);
-            //鏌ヨ璇锋眰缁撴灉
-            JSONObject result = queryCommandStatus(resultKey);
-            if (result == null) {
-                return response;//璇锋眰澶辫触
-            }
-            if(!result.getString("result").equals("success")) {
-                return response;//璇锋眰澶辫触
-            }
-
-            this.forkLiftProtocol.setSendTime(System.currentTimeMillis());//鎸囦护涓嬪彂鏃堕棿
-            response.setMessage(JSON.toJSONString(result));
-            response.setResult(true);
-            return response;
-        } catch (Exception e) {
-            e.printStackTrace();
-            response.setMessage(e.getMessage());
-            return response;
-        }
-    }
-
-    @Override
-    public CommandResponse shuttleSwitch(ForkLiftCommand command) {
-        CommandResponse response = new CommandResponse(false);
-        try {
-            //鍙戝嚭璇锋眰
-            String resultKey = requestCommand(command);
-            //鏌ヨ璇锋眰缁撴灉
-            JSONObject result = queryCommandStatus(resultKey);
-            if (result == null) {
-                return response;//璇锋眰澶辫触
-            }
-            if(!result.getString("result").equals("success")) {
-                return response;//璇锋眰澶辫触
-            }
-
-            this.forkLiftProtocol.setSendTime(System.currentTimeMillis());//鎸囦护涓嬪彂鏃堕棿
-            response.setMessage(JSON.toJSONString(result));
-            response.setResult(true);
-            return response;
-        } catch (Exception e) {
-            e.printStackTrace();
-            response.setMessage(e.getMessage());
-            return response;
-        }
-    }
-
-    @Override
-    public CommandResponse move(ForkLiftCommand command) {
-        CommandResponse response = new CommandResponse(false);
-        try {
-            //鍙戝嚭璇锋眰
-            String resultKey = requestCommand(command);
-            //鏌ヨ璇锋眰缁撴灉
-            JSONObject result = queryCommandStatus(resultKey);
-            if (result == null) {
-                return response;//璇锋眰澶辫触
-            }
-            if(!result.getString("result").equals("success")) {
-                return response;//璇锋眰澶辫触
-            }
-
-            this.forkLiftProtocol.setSendTime(System.currentTimeMillis());//鎸囦护涓嬪彂鏃堕棿
-            response.setMessage(JSON.toJSONString(result));
-            response.setResult(true);
-            return response;
-        } catch (Exception e) {
-            e.printStackTrace();
-            response.setMessage(e.getMessage());
-            return response;
-        }
-    }
-
-    @Override
-    public CommandResponse switchIOMode(ForkLiftCommand command) {
-        CommandResponse response = new CommandResponse(false);
-        try {
-            //鍙戝嚭璇锋眰
-            String resultKey = requestCommand(command);
-            //鏌ヨ璇锋眰缁撴灉
-            JSONObject result = queryCommandStatus(resultKey);
-            if (result == null) {
-                return response;//璇锋眰澶辫触
-            }
-            if(!result.getString("result").equals("success")) {
-                return response;//璇锋眰澶辫触
-            }
-
-            this.forkLiftProtocol.setSendTime(System.currentTimeMillis());//鎸囦护涓嬪彂鏃堕棿
-            response.setMessage(JSON.toJSONString(result));
-            response.setResult(true);
-            return response;
-        } catch (Exception e) {
-            e.printStackTrace();
-            response.setMessage(e.getMessage());
-            return response;
-        }
-    }
-
-    @Override
-    public CommandResponse reset() {
-        CommandResponse response = new CommandResponse(false);
-        try {
-            ForkLiftCommand resetCommand = getResetCommand(9999);
-
-            //鍙戝嚭璇锋眰
-            String resultKey = requestCommand(resetCommand);
-            //鏌ヨ璇锋眰缁撴灉
-            JSONObject result = queryCommandStatus(resultKey);
-            if (result == null) {
-                return response;//璇锋眰澶辫触
-            }
-            if(!result.getString("result").equals("success")) {
-                return response;//璇锋眰澶辫触
-            }
-
-            this.forkLiftProtocol.setSendTime(System.currentTimeMillis());//鎸囦护涓嬪彂鏃堕棿
-            response.setMessage(JSON.toJSONString(result));
-            response.setResult(true);
-            return response;
-        } catch (Exception e) {
-            e.printStackTrace();
-            response.setMessage(e.getMessage());
-            return response;
-        }
-    }
-
-    @Override
-    public boolean isIdle() {
-        if (this.forkLiftProtocol.getTaskNo() == null
-                || this.forkLiftProtocol.getProtocolStatus() == null
-                || this.forkLiftProtocol.getModel() == null
-                || this.forkLiftProtocol.getErrorCode() == null
-        ) {
-            return false;
-        }
-
-        boolean res = this.forkLiftProtocol.getProtocolStatus() == ForkLiftProtocolStatusType.IDLE.id
-                && this.forkLiftProtocol.getWrkNo() == 0
-                && this.forkLiftProtocol.getTaskNo() == 0
-                && this.forkLiftProtocol.getModel() == 2
-                && this.forkLiftProtocol.getErrorCode() == 0
-                ;
-        return res;
-    }
-
-    @Override
-    public boolean isDeviceIdle() {
-        return isDeviceIdle(null);
-    }
-
-    @Override
-    public boolean isDeviceIdle(ExecuteSupport support) {
-        if (null != support) {
-            Boolean judgement = support.judgement();
-            if (judgement != null && !judgement) {
-                return true;
-            }
-        }
-
-        if (this.forkLiftProtocol.getTaskNo() == null
-                || this.forkLiftProtocol.getProtocolStatus() == null
-                || this.forkLiftProtocol.getModel() == null
-                || this.forkLiftProtocol.getErrorCode() == null
-        ) {
-            return false;
-        }
-
-        boolean res = this.forkLiftProtocol.getProtocolStatus() == ForkLiftProtocolStatusType.IDLE.id
-                && this.forkLiftProtocol.getWrkNo() == 0
-                && this.forkLiftProtocol.getModel() == 2
-                && this.forkLiftProtocol.getErrorCode() == 0
-                ;
-        return res;
-    }
-
-    @Override
-    public boolean setProtocolStatus(ForkLiftProtocolStatusType status) {
-        return false;
-    }
-
-    @Override
-    public boolean setSyncTaskNo(Integer taskNo) {
-        this.forkLiftProtocol.setSyncTaskNo(taskNo);
-        return true;
-    }
-
-    @Override
-    public int generateDeviceTaskNo(int taskNo, ForkLiftTaskModeType type) {
-        return taskNo;
-    }
-
-    @Override
-    public ForkLiftCommand getPickAndPutCommand(Integer taskNo, Integer pick, Integer put) {
-        Integer realPick = pick % 1000;
-        Integer realPut = put % 1000;
-
-        ForkLiftCommand command = new ForkLiftCommand();
-        command.setLiftNo(device.getDeviceNo());
-        command.setTaskNo(taskNo);
-        command.setMode(ForkLiftTaskModeType.PICK_PUT.id);
-        command.setPick(realPick);
-        command.setPut(realPut);
-        command.setConfirm(1);
-
-        return command;
-    }
-
-    @Override
-    public ForkLiftCommand getShuttleSwitchCommand(Integer taskNo, Integer pick, Integer put) {
-        Integer realPick = pick % 1000;
-        Integer realPut = put % 1000;
-
-        ForkLiftCommand command = new ForkLiftCommand();
-        command.setLiftNo(device.getDeviceNo());
-        command.setTaskNo(taskNo);
-        command.setMode(ForkLiftTaskModeType.SHUTTLE_SWITCH.id);
-        command.setPick(realPick);
-        command.setPut(realPut);
-        command.setConfirm(1);
-
-        return command;
-    }
-
-    @Override
-    public ForkLiftCommand getMoveCommand(Integer taskNo, Integer pick, Integer put) {
-        Integer realPick = pick % 1000;
-        Integer realPut = put % 1000;
-
-        ForkLiftCommand command = new ForkLiftCommand();
-        command.setLiftNo(device.getDeviceNo());
-        command.setTaskNo(taskNo);
-        command.setMode(ForkLiftTaskModeType.MOVE.id);
-        command.setPick(realPick);
-        command.setPut(realPut);
-        command.setConfirm(1);
-
-        return command;
-    }
-
-    @Override
-    public ForkLiftCommand getSwitchIOCommand(Integer taskNo, ForkLiftIoModeType mode) {
-        ForkLiftCommand command = new ForkLiftCommand();
-        command.setLiftNo(device.getDeviceNo());
-        if (mode.equals(ForkLiftIoModeType.IN)) {
-            command.setMode(ForkLiftTaskModeType.SWITCH_IN.id);
-        } else {
-            command.setMode(ForkLiftTaskModeType.SWITCH_OUt.id);
-        }
-        return command;
-    }
-
-    @Override
-    public ForkLiftCommand getResetCommand(Integer taskNo) {
-        ForkLiftCommand command = new ForkLiftCommand();
-        command.setLiftNo(device.getDeviceNo());
-        command.setMode(ForkLiftTaskModeType.RESET.id);
-        return command;
-    }
-
-    //鑾峰彇璇荤姸鎬佷俊鎭懡浠�
-    private ForkLiftCommand getReadStatusCommand() {
-        ForkLiftCommand command = new ForkLiftCommand();
-        command.setLiftNo(device.getDeviceNo());
-        command.setMode(ForkLiftTaskModeType.READ_STATUS.id);
-        return command;
-    }
-
-    //鍙戝嚭璇锋眰
-    private String requestCommand(ForkLiftCommand command) throws IOException {
-        try {
-            DeviceMsgUtils deviceMsgUtils = SpringUtils.getBean(DeviceMsgUtils.class);
-            if (deviceMsgUtils == null) {
-                return null;
-            }
-
-            //鍘嬬缉鏁版嵁鍖�
-            JSONObject data = JSON.parseObject(JSON.toJSONString(command));
-
-            DeviceCommandMsgModel commandMsgModel = new DeviceCommandMsgModel();
-            commandMsgModel.setDeviceId(device.getDeviceNo());
-            commandMsgModel.setDeviceType(String.valueOf(SlaveType.ForkLift));
-            commandMsgModel.setCommand(data);
-            String key = deviceMsgUtils.sendDeviceCommand(SlaveType.ForkLift, device.getDeviceNo(), commandMsgModel);
-            return key;
-        }catch (Exception e) {
-            e.printStackTrace();
-        }
-        return null;
-    }
-
-    private JSONObject queryCommandStatus(String resultKey) {
-        // 鑾峰彇鏈嶅姟鍣ㄥ搷搴�
-        // 灏濊瘯50娆�
-        JSONObject result = null;
-        for (int i = 0; i < 50; i++) {
-            result = getRequestBody(resultKey);
-            if (result == null) {
-                try {
-                    Thread.sleep(500);
-                } catch (Exception e) {
-                    e.printStackTrace();
-                }
-            }else {
-                break;
-            }
-        }
-        return result;
-    }
-
-    public JSONObject getRequestBody(String resultKey) {
-        try {
-            // 鑾峰彇鏈嶅姟鍣ㄥ搷搴�
-            JSONObject result = null;
-            int idx = -1;
-            for (int i = 0; i < resultList.size(); i++) {
-                DeviceMsgModel deviceMsgModel = resultList.get(i);
-                if(deviceMsgModel.getResultKey().equals(resultKey)){
-                    idx = i;
-                    result = JSON.parseObject(JSON.toJSONString(deviceMsgModel.getDeviceMsg()));
-                    break;
-                }
-            }
-
-            if (result == null) {
-                return null;//鏃犲搷搴旂粨鏋�
-            }
-
-            resultList.remove(idx);
-            return result;
-        } catch (Exception e) {
-            return null;
-        }
-    }
-
-    private void listenMessageFromRedis() {
-        try {
-            DeviceMsgUtils deviceMsgUtils = null;
-            try {
-                deviceMsgUtils = SpringUtils.getBean(DeviceMsgUtils.class);
-            }catch (Exception e){
-
-            }
-            if (deviceMsgUtils == null) {
-                return;
-            }
-            DeviceMsgModel deviceMsg = deviceMsgUtils.getDeviceMsg(SlaveType.ForkLift, device.getDeviceNo());
-            if(deviceMsg == null){
-                return;
-            }
-
-            if (deviceMsg.getDeviceMsgType().equals("status")) {
-                readResultList.add(deviceMsg);
-            }else {
-                resultList.add(deviceMsg);
-            }
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-    }
-
-    /**
-     * 鎵╁睍瀛楁
-     */
-    @Data
-    private class InnerForkLiftExtend {
-
-    }
-}
diff --git a/src/main/java/com/zy/core/thread/impl/ZyForkLiftThread2.java b/src/main/java/com/zy/core/thread/impl/ZyForkLiftThread2.java
deleted file mode 100644
index 84c661e..0000000
--- a/src/main/java/com/zy/core/thread/impl/ZyForkLiftThread2.java
+++ /dev/null
@@ -1,451 +0,0 @@
-//package com.zy.core.thread.impl;
-//
-//import HslCommunication.Core.Types.OperateResult;
-//import HslCommunication.Core.Types.OperateResultExOne;
-//import HslCommunication.Profinet.Siemens.SiemensPLCS;
-//import HslCommunication.Profinet.Siemens.SiemensS7Net;
-//import com.alibaba.fastjson.JSON;
-//import com.baomidou.mybatisplus.mapper.EntityWrapper;
-//import com.core.common.DateUtils;
-//import com.core.common.SpringUtils;
-//import com.zy.asrs.entity.BasLift;
-//import com.zy.asrs.entity.DeviceDataLog;
-//import com.zy.asrs.service.BasLiftService;
-//import com.zy.asrs.service.DeviceDataLogService;
-//import com.zy.asrs.utils.Utils;
-//import com.zy.common.ExecuteSupport;
-//import com.zy.common.utils.RedisUtil;
-//import com.zy.core.News;
-//import com.zy.core.action.ForkLiftAction;
-//import com.zy.core.cache.OutputQueue;
-//import com.zy.core.enums.ForkLiftIoModeType;
-//import com.zy.core.enums.ForkLiftProtocolStatusType;
-//import com.zy.core.enums.ForkLiftTaskModeType;
-//import com.zy.core.enums.RedisKeyType;
-//import com.zy.core.model.CommandResponse;
-//import com.zy.core.model.ForkLiftSlave;
-//import com.zy.core.model.command.ForkLiftCommand;
-//import com.zy.core.model.protocol.ForkLiftProtocol;
-//import com.zy.core.model.protocol.ForkLiftStaProtocol;
-//import com.zy.core.thread.ForkLiftThread;
-//import lombok.Data;
-//import lombok.extern.slf4j.Slf4j;
-//
-//import java.text.MessageFormat;
-//import java.util.*;
-//
-//@Slf4j
-//@SuppressWarnings("all")
-//public class ZyForkLiftThread2 implements ForkLiftThread {
-//
-//    private ForkLiftSlave slave;
-//    private ForkLiftProtocol forkLiftProtocol;
-//    private RedisUtil redisUtil;
-//    private SiemensS7Net siemensS7Net;
-//    private List<ForkLiftStaProtocol> forkLiftStaProtocols = new ArrayList<>();
-//
-//    public ZyForkLiftThread2(ForkLiftSlave slave, RedisUtil redisUtil) {
-//        this.slave = slave;
-//        this.redisUtil = redisUtil;
-//        //鍒濆鍖栫珯鐐�
-//        for (ForkLiftSlave.Sta sta : this.slave.getSta()) {
-//            ForkLiftStaProtocol forkLiftStaProtocol = new ForkLiftStaProtocol();
-//            forkLiftStaProtocol.setStaNo(sta.getStaNo());//绔欑偣鍙�
-//            forkLiftStaProtocol.setLev(sta.getLev());//绔欑偣妤煎眰
-//            String locNo = Utils.getLocNo(this.slave.getStaRow(), this.slave.getStaBay(), sta.getLev());
-//            forkLiftStaProtocol.setLocNo(locNo);//绔欑偣搴撲綅鍙�
-//            forkLiftStaProtocol.setLiftNo(sta.getLiftNo());//鎻愬崌鏈哄彿
-//            forkLiftStaProtocols.add(forkLiftStaProtocol);
-//        }
-//    }
-//
-//    @Override
-//    public boolean connect() {
-//        boolean result = false;
-//        siemensS7Net = new SiemensS7Net(SiemensPLCS.S1200, slave.getIp());
-//        siemensS7Net.setRack(slave.getRack().byteValue());
-//        siemensS7Net.setSlot(slave.getSlot().byteValue());
-//        OperateResult connect = siemensS7Net.ConnectServer();
-//        if(connect.IsSuccess){
-//            result = true;
-//            OutputQueue.FORKLIFT.offer(MessageFormat.format( "銆恵0}銆戣揣鍙夋彁鍗囨満杩炴帴鎴愬姛 ===>> [id:{1}] [ip:{2}] [port:{3}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()));
-//            News.info("璐у弶鎻愬崌鏈鸿繛鎺ユ垚鍔� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
-//        } else {
-//            OutputQueue.FORKLIFT.offer(MessageFormat.format( "銆恵0}銆戣揣鍙夋彁鍗囨満杩炴帴澶辫触锛侊紒锛� ===>> [id:{1}] [ip:{2}] [port:{3}]  [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()));
-//            News.error("璐у弶鎻愬崌鏈鸿繛鎺ュけ璐ワ紒锛侊紒 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
-//        }
-//        // siemensS7Net.ConnectClose();
-//        return result;
-//    }
-//
-//    @Override
-//    public void close() {
-//
-//    }
-//
-//    @Override
-//    public void run() {
-//        News.info("{}鍙疯揣鍙夋彁鍗囨満绾跨▼鍚姩", slave.getId());
-//        this.connect();
-//        while (true) {
-//            try {
-//                read();
-//                Thread.sleep(200);
-//                execute();
-//            } catch (Exception e) {
-//                e.printStackTrace();
-//            }
-//        }
-//    }
-//
-//    private void execute() {
-//        ForkLiftAction forkLiftAction = SpringUtils.getBean(ForkLiftAction.class);
-//        if (forkLiftAction == null) {
-//            return;
-//        }
-//
-//        Object object = redisUtil.get(RedisKeyType.FORK_LIFT_FLAG.key + slave.getId());
-//        if (object == null) {
-//            return;
-//        }
-//
-//        Integer taskNo = Integer.valueOf(String.valueOf(object));
-//        if (taskNo != 0) {
-//            //瀛樺湪浠诲姟闇�瑕佹墽琛�
-//            boolean result = forkLiftAction.executeWork(slave.getId(), taskNo);
-//        }
-//    }
-//
-//    private void read() {
-//        try {
-//            readStatus();
-//
-//            //鎻愬崌鏈哄浜庤繍琛岀姸鎬侊紝灏嗘爣璁扮疆涓簍rue
-//            if (forkLiftProtocol.getProtocolStatusType().equals(ForkLiftProtocolStatusType.PICK_UP)
-//                    || forkLiftProtocol.getProtocolStatusType().equals(ForkLiftProtocolStatusType.PUT_DOWN)
-//                    || forkLiftProtocol.getProtocolStatusType().equals(ForkLiftProtocolStatusType.WAITING)) {
-//                forkLiftProtocol.setPakMk(true);
-//            }
-//        } catch (Exception e) {
-//            OutputQueue.FORKLIFT.offer(MessageFormat.format("銆恵0}銆戣鍙栨彁鍗囨満鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort()));
-//        }
-//    }
-//
-//    private void readStatus() {
-//        try {
-//            //鑾峰彇鎻愬崌鏈烘暟鎹�
-//            OperateResultExOne<byte[]> result1 = siemensS7Net.Read("DB101.0", (short) 16);
-//            if (result1.IsSuccess) {
-//                if (null == forkLiftProtocol) {
-//                    forkLiftProtocol = new ForkLiftProtocol();
-//                    forkLiftProtocol.setLiftNo(slave.getId());
-//                    forkLiftProtocol.setProtocolStatus(ForkLiftProtocolStatusType.NONE);
-//
-//                    InnerForkLiftExtend innerForkLiftExtend = new InnerForkLiftExtend();
-//                }
-//
-//                //----------璇诲彇鎻愬崌鏈虹姸鎬�-----------
-//                //妯″紡
-//                forkLiftProtocol.setModel((int) siemensS7Net.getByteTransform().TransInt16(result1.Content, 0));
-//                //PLC浠诲姟鍙�
-//                forkLiftProtocol.setWrkNo((int) siemensS7Net.getByteTransform().TransInt16(result1.Content, 2));
-//                //浠诲姟鐘舵��
-//                forkLiftProtocol.setProtocolStatus((int) siemensS7Net.getByteTransform().TransInt16(result1.Content, 4));
-//                //浠诲姟妯″紡
-//                forkLiftProtocol.setTaskMode((int) siemensS7Net.getByteTransform().TransInt16(result1.Content, 6));
-//                //鍙栬揣鏁版嵁
-//                forkLiftProtocol.setPick((int) siemensS7Net.getByteTransform().TransInt16(result1.Content, 8));
-//                //鏀捐揣鏁版嵁
-//                forkLiftProtocol.setPut((int) siemensS7Net.getByteTransform().TransInt16(result1.Content, 10));
-//                //鍑哄叆搴撴ā寮�
-//                forkLiftProtocol.setIOMode((int) siemensS7Net.getByteTransform().TransInt16(result1.Content, 12));
-//                //鏁呴殰鐮�
-//                forkLiftProtocol.setErrorCode((int) siemensS7Net.getByteTransform().TransInt16(result1.Content, 14));
-//
-//                //************琛ュ厖鎵╁睍瀛楁*************
-//                InnerForkLiftExtend forkLiftExtend = (InnerForkLiftExtend) forkLiftProtocol.getExtend();
-//                forkLiftProtocol.setExtend(forkLiftExtend);
-//
-//            }else {
-//                OutputQueue.FORKLIFT.offer(MessageFormat.format("銆恵0}銆憑1}璇诲彇璐у弶鎻愬崌鏈虹姸鎬佷俊鎭け璐�", DateUtils.convert(new Date()), slave.getId()));
-//            }
-//
-//            OperateResultExOne<byte[]> result2 = siemensS7Net.Read("DB102.0", (short) 8);
-//            if (result2.IsSuccess) {
-//                for (int i = 0; i < this.slave.getSta().size(); i++) {
-//                    ForkLiftSlave.Sta sta = this.slave.getSta().get(i);
-//                    if (forkLiftStaProtocols.isEmpty()) {
-//                        continue;
-//                    }
-//
-//                    ForkLiftStaProtocol forkLiftStaProtocol = forkLiftStaProtocols.get(i);
-//                    boolean[] status1 = siemensS7Net.getByteTransform().TransBool(result2.Content, i * 2, 2);
-//                    forkLiftStaProtocol.setHasTray(status1[0]);
-//                    forkLiftStaProtocol.setHasCar(status1[1]);
-//                }
-//            }
-//
-//            if (System.currentTimeMillis() - forkLiftProtocol.getDeviceDataLog() > 1000 * 5) {
-//                //閲囬泦鏃堕棿瓒呰繃5s锛屼繚瀛樹竴娆℃暟鎹褰�
-//                //淇濆瓨鏁版嵁璁板綍
-//                DeviceDataLogService deviceDataLogService = SpringUtils.getBean(DeviceDataLogService.class);
-//                DeviceDataLog deviceDataLog = new DeviceDataLog();
-//                deviceDataLog.setOriginData(Base64.getEncoder().encodeToString(result1.Content));
-//                deviceDataLog.setWcsData(JSON.toJSONString(forkLiftProtocol));
-//                deviceDataLog.setType("forkLift");
-//                deviceDataLog.setDeviceNo(forkLiftProtocol.getLiftNo());
-//                deviceDataLog.setCreateTime(new Date());
-//                deviceDataLogService.insert(deviceDataLog);
-//
-//                //鏇存柊閲囬泦鏃堕棿
-//                forkLiftProtocol.setDeviceDataLog(System.currentTimeMillis());
-//            }
-//
-//            //灏嗘彁鍗囨満鐘舵�佷繚瀛樿嚦鏁版嵁搴�
-//            BasLiftService basLiftService = SpringUtils.getBean(BasLiftService.class);
-//            BasLift basLift = basLiftService.selectOne(new EntityWrapper<BasLift>()
-//                    .eq("lift_no", slave.getId()));
-//            if (basLift == null) {
-//                basLift = new BasLift();
-//                //鎻愬崌鏈哄彿
-//                basLift.setLiftNo(forkLiftProtocol.getLiftNo());
-//                basLift.setStatus(1);
-//                basLiftService.insert(basLift);
-//            }
-//            //浠诲姟鍙�
-//            basLift.setWrkNo(forkLiftProtocol.getTaskNo());
-//            //淇敼鏃堕棿
-//            basLift.setUpdateTime(new Date());
-//            //璁惧鐘舵��
-//            basLift.setDeviceStatus(JSON.toJSONString(forkLiftProtocol));
-//            if (basLiftService.updateById(basLift)) {
-//                OutputQueue.FORKLIFT.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), forkLiftProtocol.getLiftNo()));
-//            }
-//
-//        } catch (Exception e) {
-//            OutputQueue.FORKLIFT.offer(MessageFormat.format("銆恵0}銆戣鍙栬揣鍙夋彁鍗囨満鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort()));
-//        }
-//    }
-//
-//    @Override
-//    public ForkLiftProtocol getStatus(boolean clone) {
-//        if (this.forkLiftProtocol == null) {
-//            return null;
-//        }
-//        return clone ? this.forkLiftProtocol.clone() : this.forkLiftProtocol;
-//    }
-//
-//    @Override
-//    public List<ForkLiftStaProtocol> getForkLiftStaProtocols() {
-//        return this.forkLiftStaProtocols;
-//    }
-//
-//    @Override
-//    public ForkLiftProtocol getStatus() {
-//        return getStatus(true);
-//    }
-//
-//    @Override
-//    public CommandResponse pickAndPut(ForkLiftCommand command) {
-//        CommandResponse response = new CommandResponse(false);
-//
-//        short[] array = new short[4];
-//        array[0] = command.getTaskNo();//浠诲姟鍙�
-//        array[1] = command.getMode();//浠诲姟妯″紡
-//        array[2] = command.getPick();//鍙栬揣鏁版嵁
-//        array[3] = command.getPut();//鏀捐揣鏁版嵁
-//        OperateResult result = siemensS7Net.Write("DB103.0", array);
-//        if (result.IsSuccess) {
-//            OperateResult result2 = siemensS7Net.Write("DB103.8", command.getConfirm());
-//            if (result2.IsSuccess) {
-//                response.setResult(true);
-//            }
-//        }
-//        return response;
-//    }
-//
-//    @Override
-//    public CommandResponse shuttleSwitch(ForkLiftCommand command) {
-//        CommandResponse response = new CommandResponse(false);
-//
-//        short[] array = new short[4];
-//        array[0] = command.getTaskNo();//浠诲姟鍙�
-//        array[1] = command.getMode();//浠诲姟妯″紡
-//        array[2] = command.getPick();//鍙栬揣鏁版嵁
-//        array[3] = command.getPut();//鏀捐揣鏁版嵁
-//        OperateResult result = siemensS7Net.Write("DB103.0", array);
-//        if (result.IsSuccess) {
-//            OperateResult result2 = siemensS7Net.Write("DB103.8", command.getConfirm());
-//            if (result2.IsSuccess) {
-//                response.setResult(true);
-//            }
-//        }
-//        return response;
-//    }
-//
-//    @Override
-//    public CommandResponse move(ForkLiftCommand command) {
-//        CommandResponse response = new CommandResponse(false);
-//
-//        short[] array = new short[4];
-//        array[0] = command.getTaskNo();//浠诲姟鍙�
-//        array[1] = command.getMode();//浠诲姟妯″紡
-//        array[2] = command.getPick();//鍙栬揣鏁版嵁
-//        array[3] = command.getPut();//鏀捐揣鏁版嵁
-//        OperateResult result = siemensS7Net.Write("DB103.0", array);
-//        if (result.IsSuccess) {
-//            OperateResult result2 = siemensS7Net.Write("DB103.8", command.getConfirm());
-//            if (result2.IsSuccess) {
-//                response.setResult(true);
-//            }
-//        }
-//        return response;
-//    }
-//
-//    @Override
-//    public CommandResponse reset() {
-//        CommandResponse response = new CommandResponse(false);
-//        OperateResult result = siemensS7Net.Write("DB103.10", (short) 1);
-//        if (result.IsSuccess) {
-//            News.info("璐у弶鎻愬崌鏈虹‘璁ゅ懡浠や笅鍙戞垚鍔燂紝鎻愬崌鏈哄彿={}", forkLiftProtocol.getLiftNo());
-//            response.setResult(true);
-//        }
-//        return response;
-//    }
-//
-//    @Override
-//    public boolean isIdle() {
-//        if (this.forkLiftProtocol.getTaskNo() == null
-//                || this.forkLiftProtocol.getProtocolStatus() == null
-//                || this.forkLiftProtocol.getModel() == null
-//                || this.forkLiftProtocol.getErrorCode() == null
-//        ) {
-//            return false;
-//        }
-//
-//        boolean res = this.forkLiftProtocol.getProtocolStatus() == ForkLiftProtocolStatusType.IDLE.id
-//                && this.forkLiftProtocol.getWrkNo() == 0
-//                && this.forkLiftProtocol.getTaskNo() == 0
-//                && this.forkLiftProtocol.getModel() == 2
-//                && this.forkLiftProtocol.getErrorCode() == 0
-//                ;
-//        return res;
-//    }
-//
-//    @Override
-//    public boolean isDeviceIdle() {
-//        return isDeviceIdle(null);
-//    }
-//
-//    @Override
-//    public boolean isDeviceIdle(ExecuteSupport support) {
-//        if (null != support) {
-//            Boolean judgement = support.judgement();
-//            if (judgement != null && !judgement) {
-//                return true;
-//            }
-//        }
-//
-//        if (this.forkLiftProtocol.getTaskNo() == null
-//                || this.forkLiftProtocol.getProtocolStatus() == null
-//                || this.forkLiftProtocol.getModel() == null
-//                || this.forkLiftProtocol.getErrorCode() == null
-//        ) {
-//            return false;
-//        }
-//
-//        boolean res = this.forkLiftProtocol.getProtocolStatus() == ForkLiftProtocolStatusType.IDLE.id
-//                && this.forkLiftProtocol.getWrkNo() == 0
-//                && this.forkLiftProtocol.getModel() == 2
-//                && this.forkLiftProtocol.getErrorCode() == 0
-//                ;
-//        return res;
-//    }
-//
-//    @Override
-//    public boolean setProtocolStatus(ForkLiftProtocolStatusType status) {
-//        return false;
-//    }
-//
-//    @Override
-//    public boolean setSyncTaskNo(Integer taskNo) {
-//        this.forkLiftProtocol.setSyncTaskNo(taskNo);
-//        return true;
-//    }
-//
-//    @Override
-//    public boolean switchIOMode(ForkLiftIoModeType type) {
-//        OperateResult result = siemensS7Net.Write("DB103.12", type.id.shortValue());
-//        if (result.IsSuccess) {
-//            return true;
-//        }
-//        return false;
-//    }
-//
-//    @Override
-//    public int generateDeviceTaskNo(int taskNo, ForkLiftTaskModeType type) {
-//        return taskNo;
-//    }
-//
-//    @Override
-//    public List<ForkLiftCommand> getPickAndPutCommand(Integer taskNo, Integer pick, Integer put) {
-//        Integer realPick = pick % 1000;
-//        Integer realPut = put % 1000;
-//
-//        List<ForkLiftCommand> commands = new ArrayList<>();
-//        ForkLiftCommand command = new ForkLiftCommand();
-//        command.setLiftNo(slave.getId());
-//        command.setTaskNo(taskNo.shortValue());
-//        command.setMode(ForkLiftTaskModeType.PICK_PUT.id.shortValue());
-//        command.setPick(realPick.shortValue());
-//        command.setPut(realPut.shortValue());
-//        command.setConfirm((short) 1);
-//
-//        commands.add(command);
-//        return commands;
-//    }
-//
-//    @Override
-//    public List<ForkLiftCommand> getShuttleSwitchCommand(Integer taskNo, Integer pick, Integer put) {
-//        Integer realPick = pick % 1000;
-//        Integer realPut = put % 1000;
-//
-//        List<ForkLiftCommand> commands = new ArrayList<>();
-//        ForkLiftCommand command = new ForkLiftCommand();
-//        command.setLiftNo(slave.getId());
-//        command.setTaskNo(taskNo.shortValue());
-//        command.setMode(ForkLiftTaskModeType.SHUTTLE_SWITCH.id.shortValue());
-//        command.setPick(realPick.shortValue());
-//        command.setPut(realPut.shortValue());
-//        command.setConfirm((short) 1);
-//
-//        commands.add(command);
-//        return commands;
-//    }
-//
-//    @Override
-//    public List<ForkLiftCommand> getMoveCommand(Integer taskNo, Integer pick, Integer put) {
-//        Integer realPick = pick % 1000;
-//        Integer realPut = put % 1000;
-//
-//        List<ForkLiftCommand> commands = new ArrayList<>();
-//        ForkLiftCommand command = new ForkLiftCommand();
-//        command.setLiftNo(slave.getId());
-//        command.setTaskNo(taskNo.shortValue());
-//        command.setMode(ForkLiftTaskModeType.MOVE.id.shortValue());
-//        command.setPick(realPick.shortValue());
-//        command.setPut(realPut.shortValue());
-//        command.setConfirm((short) 1);
-//
-//        commands.add(command);
-//        return commands;
-//    }
-//
-//    /**
-//     * 鎵╁睍瀛楁
-//     */
-//    @Data
-//    private class InnerForkLiftExtend {
-//
-//    }
-//}
diff --git a/src/main/java/com/zy/core/utils/DeviceMsgUtils.java b/src/main/java/com/zy/core/utils/DeviceMsgUtils.java
deleted file mode 100644
index dd78cef..0000000
--- a/src/main/java/com/zy/core/utils/DeviceMsgUtils.java
+++ /dev/null
@@ -1,157 +0,0 @@
-package com.zy.core.utils;
-
-import com.core.exception.CoolException;
-import com.zy.common.utils.RedisUtil;
-import com.zy.core.enums.RedisKeyType;
-import com.zy.core.enums.SlaveType;
-import com.zy.core.model.DeviceCommandMsgModel;
-import com.zy.core.model.DeviceMsgModel;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.stereotype.Component;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Set;
-import java.util.TreeSet;
-
-@Component
-public class DeviceMsgUtils {
-
-    @Value("${deviceMsgConfig.destroyAfterReading}")
-    private boolean destroyAfterReading;
-
-    @Autowired
-    private RedisUtil redisUtil;
-
-    public String getDeviceConfig() {
-        Object obj = redisUtil.get(RedisKeyType.DEVICE_CONFIG.key);
-        if(null == obj){
-            return null;
-        }
-        return obj.toString();
-    }
-
-    public DeviceCommandMsgModel getDeviceCommandMsg(SlaveType deviceType, Integer deviceId) {
-        TreeSet<String> listKey = getDeviceCommandMsgListKey(deviceType, deviceId);
-        if (listKey.isEmpty()) {
-            return null;
-        }
-
-        String firstKey = listKey.first();
-        DeviceCommandMsgModel commandMsgModel = (DeviceCommandMsgModel) redisUtil.get(firstKey);
-        if (destroyAfterReading) {
-            redisUtil.del(firstKey);
-        }
-        return commandMsgModel;
-    }
-
-    public DeviceMsgModel getDeviceMsg(SlaveType deviceType, Integer deviceId) {
-        TreeSet<String> listKey = getDeviceMsgListKey(deviceType, deviceId);
-        if (listKey.isEmpty()) {
-            return null;
-        }
-
-        String firstKey = listKey.first();
-        DeviceMsgModel deviceMsgModel = (DeviceMsgModel) redisUtil.get(firstKey);
-        if (destroyAfterReading) {
-            redisUtil.del(firstKey);
-        }
-        return deviceMsgModel;
-    }
-
-    public List<DeviceMsgModel> getDeviceMsgList(SlaveType deviceType, Integer deviceId) {
-        TreeSet<String> listKey = getDeviceMsgListKey(deviceType, deviceId);
-        List<DeviceMsgModel> deviceMsgModels = new ArrayList<>();
-        for (String key : listKey) {
-            DeviceMsgModel deviceMsgModel = (DeviceMsgModel) redisUtil.get(key);
-            deviceMsgModels.add(deviceMsgModel);
-        }
-        return deviceMsgModels;
-    }
-
-    public void pushDeviceMsg(SlaveType deviceType, Integer deviceId, DeviceMsgModel msgModel) {
-        String deviceMsgKey = parseDeviceMsgKey(deviceType, deviceId);
-        String key = deviceMsgKey + System.currentTimeMillis();
-        redisUtil.set(key, msgModel, 60 * 60);
-    }
-
-    public String sendDeviceMsg(SlaveType deviceType, Integer deviceId, DeviceMsgModel deviceMsgModel) {
-        String key = parseDeviceMsgKey(deviceType, deviceId) + System.currentTimeMillis();
-        redisUtil.set(key, deviceMsgModel, 60 * 60);
-        return key;
-    }
-
-    public String sendDeviceCommand(SlaveType deviceType, Integer deviceId, DeviceCommandMsgModel command) {
-        String key = parseDeviceCommandMsgKey(deviceType, deviceId) + System.currentTimeMillis();
-        command.setResultKey(key);
-        redisUtil.set(key, command, 60 * 60);
-        return key;
-    }
-
-    public void sendDeviceConfig(String allDevices) {
-        redisUtil.set(RedisKeyType.DEVICE_CONFIG.key,  allDevices);
-    }
-
-    public void sendFakeDeviceConfig(String fakeDevices) {
-        redisUtil.set(RedisKeyType.FAKE_DEVICE_CONFIG.key,  fakeDevices);
-    }
-
-    public TreeSet<String> getDeviceMsgListKey(SlaveType deviceType, Integer deviceId) {
-        String listKey = parseDeviceMsgKey(deviceType, deviceId);
-        Set<String> keys = redisUtil.searchKeys(listKey);
-
-        TreeSet<String> treeSet = new TreeSet<>();
-        for (String key : keys) {
-            treeSet.add(key);
-        }
-
-        return treeSet;
-    }
-
-    public TreeSet<String> getDeviceCommandMsgListKey(SlaveType deviceType, Integer deviceId) {
-        String listKey = parseDeviceCommandMsgKey(deviceType, deviceId);
-        Set<String> keys = redisUtil.searchKeys(listKey);
-
-        TreeSet<String> treeSet = new TreeSet<>();
-        for (String key : keys) {
-            treeSet.add(key);
-        }
-
-        return treeSet;
-    }
-
-    public String parseDeviceMsgKey(SlaveType deviceType, Integer deviceId) {
-        if (deviceType == null) {
-            throw new CoolException("璁惧绫诲瀷涓虹┖");
-        }
-
-        if (deviceType.equals(SlaveType.Shuttle)) {
-            return RedisKeyType.DEVICE_SHUTTLE_MSG_KEY_.key + deviceId + "_";
-        } else if (deviceType.equals(SlaveType.ForkLift)) {
-            return RedisKeyType.DEVICE_FORK_LIFT_MSG_KEY_.key + deviceId + "_";
-        } else if (deviceType.equals(SlaveType.Lift)) {
-            return RedisKeyType.DEVICE_LIFT_MSG_KEY_.key + deviceId + "_";
-        }else {
-            throw new CoolException("璁惧绫诲瀷鏈畾涔�");
-        }
-    }
-
-    public String parseDeviceCommandMsgKey(SlaveType deviceType, Integer deviceId) {
-        if (deviceType == null) {
-            throw new CoolException("璁惧绫诲瀷涓虹┖");
-        }
-
-        if (deviceType.equals(SlaveType.Shuttle)) {
-            return RedisKeyType.DEVICE_SHUTTLE_COMMAND_MSG_KEY.key + deviceId + "_";
-        } else if (deviceType.equals(SlaveType.ForkLift)) {
-            return RedisKeyType.DEVICE_FORK_LIFT_COMMAND_MSG_KEY.key + deviceId + "_";
-        } else if (deviceType.equals(SlaveType.Lift)) {
-            return RedisKeyType.DEVICE_LIFT_COMMAND_MSG_KEY.key + deviceId + "_";
-        }else {
-            throw new CoolException("璁惧绫诲瀷鏈畾涔�");
-        }
-    }
-
-
-}
diff --git a/src/main/java/com/zy/core/utils/TrafficControlUtils.java b/src/main/java/com/zy/core/utils/TrafficControlUtils.java
deleted file mode 100644
index d67e225..0000000
--- a/src/main/java/com/zy/core/utils/TrafficControlUtils.java
+++ /dev/null
@@ -1,81 +0,0 @@
-package com.zy.core.utils;
-
-import java.util.*;
-
-public class TrafficControlUtils {
-
-    public static List<List<String>> groupNodes(Collection<String> keys) {
-        // 1. 鎸変綅缃仛绫伙細Map<浣嶇疆閿�, 鑺傜偣鍒楄〃>
-        Map<String, List<String>> clusterMap = new HashMap<>();
-        for (String key : keys) {
-            String rowStr = key.substring(0, 2);
-            String colStr = key.substring(2, 5);
-            String posKey = rowStr + "_" + colStr; // 浣嶇疆閿牸寮�: "RR_CCC"
-            clusterMap.computeIfAbsent(posKey, k -> new ArrayList<>()).add(key);
-        }
-
-        // 2. 鍒濆鍖栧苟鏌ラ泦
-        Map<String, String> parentMap = new HashMap<>();
-        Map<String, Integer> rankMap = new HashMap<>();
-        for (String posKey : clusterMap.keySet()) {
-            parentMap.put(posKey, posKey); // 鍒濆鐖惰妭鐐规寚鍚戣嚜宸�
-            rankMap.put(posKey, 0);
-        }
-
-        // 3. 閬嶅巻鎵�鏈変綅缃敭锛屽悎骞剁浉閭荤皣
-        for (String posKey : clusterMap.keySet()) {
-            String[] parts = posKey.split("_");
-            int row = Integer.parseInt(parts[0]);
-            int col = Integer.parseInt(parts[1]);
-
-            // 妫�鏌ュ洓涓柟鍚戯細宸︺�佸彸銆佷笂銆佷笅
-            int[][] directions = {{-1, 0}, {1, 0}, {0, -1}, {0, 1}}; // {dRow, dCol}
-            for (int[] dir : directions) {
-                int newRow = row + dir[0];
-                int newCol = col + dir[1];
-                String neighborKey = String.format("%02d_%03d", newRow, newCol);
-
-                if (parentMap.containsKey(neighborKey)) {
-                    union(posKey, neighborKey, parentMap, rankMap);
-                }
-            }
-        }
-
-        // 4. 鐢熸垚鍒嗙粍缁撴灉
-        Map<String, List<String>> groupMap = new HashMap<>();
-        for (String posKey : clusterMap.keySet()) {
-            String root = find(posKey, parentMap);
-            groupMap.computeIfAbsent(root, k -> new ArrayList<>())
-                    .addAll(clusterMap.get(posKey));
-        }
-
-        return new ArrayList<>(groupMap.values());
-    }
-
-    // 骞舵煡闆嗭細鏌ユ壘鏍硅妭鐐癸紙甯﹁矾寰勫帇缂╋級
-    private static String find(String x, Map<String, String> parentMap) {
-        if (!parentMap.get(x).equals(x)) {
-            parentMap.put(x, find(parentMap.get(x), parentMap));
-        }
-        return parentMap.get(x);
-    }
-
-    // 骞舵煡闆嗭細鎸夌З鍚堝苟
-    private static void union(String x, String y, Map<String, String> parentMap, Map<String, Integer> rankMap) {
-        String rootX = find(x, parentMap);
-        String rootY = find(y, parentMap);
-        if (rootX.equals(rootY)) return;
-
-        int rankX = rankMap.get(rootX);
-        int rankY = rankMap.get(rootY);
-        if (rankX < rankY) {
-            parentMap.put(rootX, rootY);
-        } else if (rankX > rankY) {
-            parentMap.put(rootY, rootX);
-        } else {
-            parentMap.put(rootY, rootX);
-            rankMap.put(rootX, rankX + 1);
-        }
-    }
-
-}
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 90ad732..46ac0a8 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -43,13 +43,6 @@
 swagger:
   enable: false
 
-pythonCalcPath: D:\\path\\cpu.py
-pythonCalcSimilarity: D:\\path\\similarity.py
-
-deviceMsgConfig:
-  # 璇诲彇鏁版嵁鍚庤嚜鍔ㄥ垹闄�
-  destroyAfterReading: true
-
 deviceExecuteConfig:
   # 姣忎釜绾跨▼绠℃帶璁惧鎵ц鏁伴噺
   threadControlCount: 10
diff --git "a/src/main/resources/docs/\345\217\260\345\215\207\345\233\233\345\220\221\345\272\223WCS\344\270\216\350\264\247\345\217\211\346\217\220\345\215\207\346\234\272PLC\351\200\232\350\256\257\346\216\245\345\217\243\345\215\217\350\256\2561.0.docx" "b/src/main/resources/docs/\345\217\260\345\215\207\345\233\233\345\220\221\345\272\223WCS\344\270\216\350\264\247\345\217\211\346\217\220\345\215\207\346\234\272PLC\351\200\232\350\256\257\346\216\245\345\217\243\345\215\217\350\256\2561.0.docx"
deleted file mode 100644
index 7387c6b..0000000
--- "a/src/main/resources/docs/\345\217\260\345\215\207\345\233\233\345\220\221\345\272\223WCS\344\270\216\350\264\247\345\217\211\346\217\220\345\215\207\346\234\272PLC\351\200\232\350\256\257\346\216\245\345\217\243\345\215\217\350\256\2561.0.docx"
+++ /dev/null
Binary files differ
diff --git "a/src/main/resources/docs/\345\217\260\345\215\207\345\233\233\345\220\221\345\272\223WCS\344\270\216\350\264\247\345\217\211\346\217\220\345\215\207\346\234\272PLC\351\200\232\350\256\257\346\216\245\345\217\243\345\215\217\350\256\2561.1.docx" "b/src/main/resources/docs/\345\217\260\345\215\207\345\233\233\345\220\221\345\272\223WCS\344\270\216\350\264\247\345\217\211\346\217\220\345\215\207\346\234\272PLC\351\200\232\350\256\257\346\216\245\345\217\243\345\215\217\350\256\2561.1.docx"
deleted file mode 100644
index bdd75fd..0000000
--- "a/src/main/resources/docs/\345\217\260\345\215\207\345\233\233\345\220\221\345\272\223WCS\344\270\216\350\264\247\345\217\211\346\217\220\345\215\207\346\234\272PLC\351\200\232\350\256\257\346\216\245\345\217\243\345\215\217\350\256\2561.1.docx"
+++ /dev/null
Binary files differ
diff --git "a/src/main/resources/docs/\345\233\233\345\220\221\350\275\246\350\264\247\345\217\211\345\274\217\346\217\220\345\215\207\346\234\272WCS\346\216\245\345\217\243V1.0.docx" "b/src/main/resources/docs/\345\233\233\345\220\221\350\275\246\350\264\247\345\217\211\345\274\217\346\217\220\345\215\207\346\234\272WCS\346\216\245\345\217\243V1.0.docx"
deleted file mode 100644
index 20ff24e..0000000
--- "a/src/main/resources/docs/\345\233\233\345\220\221\350\275\246\350\264\247\345\217\211\345\274\217\346\217\220\345\215\207\346\234\272WCS\346\216\245\345\217\243V1.0.docx"
+++ /dev/null
Binary files differ
diff --git "a/src/main/resources/docs/\345\233\233\345\220\221\350\275\246\350\264\247\345\217\211\345\274\217\346\217\220\345\215\207\346\234\272WCS\346\216\245\345\217\243V1.1.docx" "b/src/main/resources/docs/\345\233\233\345\220\221\350\275\246\350\264\247\345\217\211\345\274\217\346\217\220\345\215\207\346\234\272WCS\346\216\245\345\217\243V1.1.docx"
deleted file mode 100644
index c8d3d82..0000000
--- "a/src/main/resources/docs/\345\233\233\345\220\221\350\275\246\350\264\247\345\217\211\345\274\217\346\217\220\345\215\207\346\234\272WCS\346\216\245\345\217\243V1.1.docx"
+++ /dev/null
Binary files differ
diff --git "a/src/main/resources/docs/\345\233\233\345\220\221\350\275\246\350\264\247\345\217\211\345\274\217\346\217\220\345\215\207\346\234\272WCS\346\216\245\345\217\243V1.2.docx" "b/src/main/resources/docs/\345\233\233\345\220\221\350\275\246\350\264\247\345\217\211\345\274\217\346\217\220\345\215\207\346\234\272WCS\346\216\245\345\217\243V1.2.docx"
deleted file mode 100644
index bc46470..0000000
--- "a/src/main/resources/docs/\345\233\233\345\220\221\350\275\246\350\264\247\345\217\211\345\274\217\346\217\220\345\215\207\346\234\272WCS\346\216\245\345\217\243V1.2.docx"
+++ /dev/null
Binary files differ
diff --git "a/src/main/resources/docs/\345\233\233\345\220\221\350\275\246\350\264\247\345\217\211\345\274\217\346\217\220\345\215\207\346\234\272WCS\346\216\245\345\217\243V1.3.docx" "b/src/main/resources/docs/\345\233\233\345\220\221\350\275\246\350\264\247\345\217\211\345\274\217\346\217\220\345\215\207\346\234\272WCS\346\216\245\345\217\243V1.3.docx"
deleted file mode 100644
index 3b9a4bf..0000000
--- "a/src/main/resources/docs/\345\233\233\345\220\221\350\275\246\350\264\247\345\217\211\345\274\217\346\217\220\345\215\207\346\234\272WCS\346\216\245\345\217\243V1.3.docx"
+++ /dev/null
Binary files differ
diff --git "a/src/main/resources/docs/\345\233\233\345\220\221\350\275\246\350\264\247\345\217\211\345\274\217\346\217\220\345\215\207\346\234\272WCS\346\216\245\345\217\243V1.4.docx" "b/src/main/resources/docs/\345\233\233\345\220\221\350\275\246\350\264\247\345\217\211\345\274\217\346\217\220\345\215\207\346\234\272WCS\346\216\245\345\217\243V1.4.docx"
deleted file mode 100644
index 2cc3046..0000000
--- "a/src/main/resources/docs/\345\233\233\345\220\221\350\275\246\350\264\247\345\217\211\345\274\217\346\217\220\345\215\207\346\234\272WCS\346\216\245\345\217\243V1.4.docx"
+++ /dev/null
Binary files differ
diff --git a/src/main/resources/map/qlsxk_map.xlsx b/src/main/resources/map/qlsxk_map.xlsx
deleted file mode 100644
index 5324b9c..0000000
--- a/src/main/resources/map/qlsxk_map.xlsx
+++ /dev/null
Binary files differ
diff --git a/src/main/resources/mapper/BasCrnpErrLogMapper.xml b/src/main/resources/mapper/BasCrnpErrLogMapper.xml
new file mode 100644
index 0000000..de2cfe3
--- /dev/null
+++ b/src/main/resources/mapper/BasCrnpErrLogMapper.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.zy.asrs.mapper.BasCrnpErrLogMapper">
+
+    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+    <resultMap id="BaseResultMap" type="com.zy.asrs.entity.BasCrnpErrLog">
+        <id column="id" property="id" />
+        <result column="wrk_no" property="wrkNo" />
+        <result column="start_time" property="startTime" />
+        <result column="end_time" property="endTime" />
+        <result column="wrk_sts" property="wrkSts" />
+        <result column="io_type" property="ioType" />
+        <result column="crn_no" property="crnNo" />
+        <result column="loc_no" property="locNo" />
+        <result column="sta_no" property="staNo" />
+        <result column="source_sta_no" property="sourceStaNo" />
+        <result column="source_loc_no" property="sourceLocNo" />
+        <result column="barcode" property="barcode" />
+        <result column="err_code" property="errCode" />
+        <result column="error" property="error" />
+        <result column="status" property="status" />
+        <result column="create_time" property="createTime" />
+        <result column="create_by" property="createBy" />
+        <result column="update_time" property="updateTime" />
+        <result column="update_by" property="updateBy" />
+        <result column="memo" property="memo" />
+        <result column="system_status" property="systemStatus" />
+
+    </resultMap>
+
+</mapper>
diff --git a/src/main/resources/mapper/BasCrnpErrMapper.xml b/src/main/resources/mapper/BasCrnpErrMapper.xml
new file mode 100644
index 0000000..6428f0e
--- /dev/null
+++ b/src/main/resources/mapper/BasCrnpErrMapper.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.zy.asrs.mapper.BasCrnpErrMapper">
+
+    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+    <resultMap id="BaseResultMap" type="com.zy.asrs.entity.BasCrnpErr">
+        <id column="id" property="id" />
+        <result column="error_code" property="errorCode" />
+        <result column="err_name" property="errName" />
+        <result column="modi_user" property="modiUser" />
+        <result column="modi_time" property="modiTime" />
+        <result column="appe_user" property="appeUser" />
+        <result column="appe_time" property="appeTime" />
+
+    </resultMap>
+
+</mapper>
diff --git a/src/main/resources/mapper/BasCrnpMapper.xml b/src/main/resources/mapper/BasCrnpMapper.xml
new file mode 100644
index 0000000..fbba1f7
--- /dev/null
+++ b/src/main/resources/mapper/BasCrnpMapper.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.zy.asrs.mapper.BasCrnpMapper">
+
+    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+    <resultMap id="BaseResultMap" type="com.zy.asrs.entity.BasCrnp">
+        <id column="crn_no" property="crnNo" />
+        <result column="status" property="status" />
+        <result column="wrk_no" property="wrkNo" />
+        <result column="in_enable" property="inEnable" />
+        <result column="out_enable" property="outEnable" />
+        <result column="create_by" property="createBy" />
+        <result column="create_time" property="createTime" />
+        <result column="update_by" property="updateBy" />
+        <result column="update_time" property="updateTime" />
+        <result column="memo" property="memo" />
+
+    </resultMap>
+
+</mapper>
diff --git a/src/main/resources/mapper/BasCrnpOptMapper.xml b/src/main/resources/mapper/BasCrnpOptMapper.xml
new file mode 100644
index 0000000..acbb95f
--- /dev/null
+++ b/src/main/resources/mapper/BasCrnpOptMapper.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.zy.asrs.mapper.BasCrnpOptMapper">
+
+    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+    <resultMap id="BaseResultMap" type="com.zy.asrs.entity.BasCrnpOpt">
+        <id column="id" property="id" />
+        <result column="wrk_no" property="wrkNo" />
+        <result column="crn_no" property="crnNo" />
+        <result column="send_time" property="sendTime" />
+        <result column="mode" property="mode" />
+        <result column="source_loc_no" property="sourceLocNo" />
+        <result column="target_loc_no" property="targetLocNo" />
+        <result column="update_time" property="updateTime" />
+        <result column="update_by" property="updateBy" />
+        <result column="memo" property="memo" />
+        <result column="command" property="command" />
+        <result column="system_status" property="systemStatus" />
+        <result column="send" property="send" />
+        <result column="response" property="response" />
+
+    </resultMap>
+
+</mapper>
diff --git a/src/main/resources/mapper/BasLiftErrLogMapper.xml b/src/main/resources/mapper/BasLiftErrLogMapper.xml
deleted file mode 100644
index 68c620f..0000000
--- a/src/main/resources/mapper/BasLiftErrLogMapper.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.zy.asrs.mapper.BasLiftErrLogMapper">
-
-    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
-    <resultMap id="BaseResultMap" type="com.zy.asrs.entity.BasLiftErrLog">
-        <id column="id" property="id" />
-        <result column="uuid" property="uuid" />
-        <result column="wrk_no" property="wrkNo" />
-        <result column="start_time" property="startTime" />
-        <result column="end_time" property="endTime" />
-        <result column="wrk_sts" property="wrkSts" />
-        <result column="io_type" property="ioType" />
-        <result column="lift_no" property="liftNo" />
-        <result column="plc_no" property="plcNo" />
-        <result column="loc_no" property="locNo" />
-        <result column="sta_no" property="staNo" />
-        <result column="source_sta_no" property="sourceStaNo" />
-        <result column="source_loc_no" property="sourceLocNo" />
-        <result column="barcode" property="barcode" />
-        <result column="err_code" property="errCode" />
-        <result column="error" property="error" />
-        <result column="status" property="status" />
-        <result column="create_time" property="createTime" />
-        <result column="create_by" property="createBy" />
-        <result column="update_time" property="updateTime" />
-        <result column="update_by" property="updateBy" />
-        <result column="memo" property="memo" />
-        <result column="system_status" property="systemStatus" />
-
-    </resultMap>
-
-</mapper>
diff --git a/src/main/resources/mapper/BasLiftErrMapper.xml b/src/main/resources/mapper/BasLiftErrMapper.xml
deleted file mode 100644
index 1592f47..0000000
--- a/src/main/resources/mapper/BasLiftErrMapper.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.zy.asrs.mapper.BasLiftErrMapper">
-
-    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
-    <resultMap id="BaseResultMap" type="com.zy.asrs.entity.BasLiftErr">
-        <result column="error_code" property="errorCode" />
-        <result column="err_name" property="errName" />
-        <result column="modi_user" property="modiUser" />
-        <result column="modi_time" property="modiTime" />
-        <result column="appe_user" property="appeUser" />
-        <result column="appe_time" property="appeTime" />
-
-    </resultMap>
-
-    <select id="queryByCode" resultMap="BaseResultMap">
-        select *
-        from asr_bas_lift_err
-        where error_code = #{errorCode}
-        limit 0,1
-    </select>
-
-</mapper>
diff --git a/src/main/resources/mapper/BasLiftMapper.xml b/src/main/resources/mapper/BasLiftMapper.xml
deleted file mode 100644
index 3975d12..0000000
--- a/src/main/resources/mapper/BasLiftMapper.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.zy.asrs.mapper.BasLiftMapper">
-
-    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
-    <resultMap id="BaseResultMap" type="com.zy.asrs.entity.BasLift">
-        <result column="lift_no" property="liftNo" />
-        <result column="wrk_no" property="wrkNo" />
-        <result column="update_time" property="updateTime" />
-        <result column="update_by" property="updateBy" />
-        <result column="memo" property="memo" />
-        <result column="pak_mk" property="pakMk" />
-        <result column="point" property="point" />
-        <result column="station_list" property="stationList" />
-
-    </resultMap>
-
-</mapper>
diff --git a/src/main/resources/mapper/BasLiftOptMapper.xml b/src/main/resources/mapper/BasLiftOptMapper.xml
deleted file mode 100644
index 763bf2c..0000000
--- a/src/main/resources/mapper/BasLiftOptMapper.xml
+++ /dev/null
@@ -1,41 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.zy.asrs.mapper.BasLiftOptMapper">
-
-    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
-    <resultMap id="BaseResultMap" type="com.zy.asrs.entity.BasLiftOpt">
-        <id column="id" property="id" />
-        <result column="wrk_no" property="wrkNo" />
-        <result column="lift_no" property="liftNo" />
-        <result column="send_time" property="sendTime" />
-        <result column="update_time" property="updateTime" />
-        <result column="update_by" property="updateBy" />
-        <result column="memo" property="memo" />
-        <result column="command" property="command" />
-        <result column="system_status" property="systemStatus" />
-        <result column="device_wrk" property="deviceWrk" />
-
-    </resultMap>
-
-    <select id="selectByDeviceWrk" resultMap="BaseResultMap">
-        select top 1 * from asr_bas_lift_opt
-        where device_wrk = #{deviceWrk}
-        and lift_no = #{liftNo}
-        order by send_time desc
-    </select>
-
-    <select id="selectRunStatistic" resultType="map">
-        select lift_no,count(*) count from asr_bas_lift_opt
-        where send_time &gt; DATEADD(day, DATEDIFF(day, 0, GETDATE()), 0)
-        and send_time &lt; DATEADD(day, DATEDIFF(day, 0, GETDATE())+1, 0)
-        group by lift_no
-    </select>
-
-    <select id="selectRunErrorStatistic" resultType="map">
-        select lift_no,count(*) count from asr_bas_lift_err_log
-        where start_time &gt; DATEADD(day, DATEDIFF(day, 0, GETDATE())-#{time}, 0)
-          and start_time &lt; DATEADD(day, DATEDIFF(day, 0, GETDATE()), 0)
-        GROUP BY lift_no
-    </select>
-
-</mapper>
diff --git a/src/main/resources/mapper/BasShuttleChargeMapper.xml b/src/main/resources/mapper/BasShuttleChargeMapper.xml
deleted file mode 100644
index 813471f..0000000
--- a/src/main/resources/mapper/BasShuttleChargeMapper.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.zy.asrs.mapper.BasShuttleChargeMapper">
-
-    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
-    <resultMap id="BaseResultMap" type="com.zy.asrs.entity.BasShuttleCharge">
-        <id column="id" property="id" />
-        <result column="charge_id" property="chargeId" />
-        <result column="loc_no" property="locNo" />
-        <result column="wait_loc_no" property="waitLocNo" />
-        <result column="create_time" property="createTime" />
-        <result column="update_time" property="updateTime" />
-        <result column="status" property="status" />
-
-    </resultMap>
-
-</mapper>
diff --git a/src/main/resources/mapper/BasShuttleErrLogMapper.xml b/src/main/resources/mapper/BasShuttleErrLogMapper.xml
deleted file mode 100644
index ba98429..0000000
--- a/src/main/resources/mapper/BasShuttleErrLogMapper.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.zy.asrs.mapper.BasShuttleErrLogMapper">
-
-    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
-    <resultMap id="BaseResultMap" type="com.zy.asrs.entity.BasShuttleErrLog">
-        <id column="id" property="id" />
-        <result column="uuid" property="uuid" />
-        <result column="wrk_no" property="wrkNo" />
-        <result column="start_time" property="startTime" />
-        <result column="end_time" property="endTime" />
-        <result column="wrk_sts" property="wrkSts" />
-        <result column="io_type" property="ioType" />
-        <result column="plc_no" property="plcNo" />
-        <result column="loc_no" property="locNo" />
-        <result column="sta_no" property="staNo" />
-        <result column="source_sta_no" property="sourceStaNo" />
-        <result column="source_loc_no" property="sourceLocNo" />
-        <result column="barcode" property="barcode" />
-        <result column="err_code" property="errCode" />
-        <result column="error" property="error" />
-        <result column="status" property="status" />
-        <result column="create_time" property="createTime" />
-        <result column="create_by" property="createBy" />
-        <result column="update_time" property="updateTime" />
-        <result column="update_by" property="updateBy" />
-        <result column="memo" property="memo" />
-        <result column="system_status" property="systemStatus" />
-
-    </resultMap>
-
-</mapper>
diff --git a/src/main/resources/mapper/BasShuttleErrMapper.xml b/src/main/resources/mapper/BasShuttleErrMapper.xml
deleted file mode 100644
index 4958202..0000000
--- a/src/main/resources/mapper/BasShuttleErrMapper.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.zy.asrs.mapper.BasShuttleErrMapper">
-
-    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
-    <resultMap id="BaseResultMap" type="com.zy.asrs.entity.BasShuttleErr">
-        <result column="error_code" property="errorCode" />
-        <result column="err_name" property="errName" />
-        <result column="modi_user" property="modiUser" />
-        <result column="modi_time" property="modiTime" />
-        <result column="appe_user" property="appeUser" />
-        <result column="appe_time" property="appeTime" />
-
-    </resultMap>
-
-    <select id="queryByCode" resultMap="BaseResultMap">
-        select *
-        from asr_bas_shuttle_err
-        where error_code = #{errorCode}
-        limit 0,1
-    </select>
-
-</mapper>
diff --git a/src/main/resources/mapper/BasShuttleMapper.xml b/src/main/resources/mapper/BasShuttleMapper.xml
deleted file mode 100644
index 4860a85..0000000
--- a/src/main/resources/mapper/BasShuttleMapper.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.zy.asrs.mapper.BasShuttleMapper">
-
-    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
-    <resultMap id="BaseResultMap" type="com.zy.asrs.entity.BasShuttle">
-        <result column="shuttle_no" property="shuttleNo" />
-        <result column="status" property="status" />
-        <result column="shuttle_status" property="shuttleStatus" />
-        <result column="wrk_no" property="wrkNo" />
-        <result column="idle_loc" property="idleLoc" />
-        <result column="auto_charge" property="autoCharge" />
-        <result column="charge_line" property="chargeLine" />
-        <result column="suggest_charge_line" property="suggestChargeLine" />
-        <result column="create_by" property="createBy" />
-        <result column="create_time" property="createTime" />
-        <result column="update_by" property="updateBy" />
-        <result column="update_time" property="updateTime" />
-        <result column="memo" property="memo" />
-        <result column="pak_mk" property="pakMk" />
-
-        <result column="run_speed" property="runSpeed" />
-        <result column="device_status" property="deviceStatus" />
-        <result column="disable_lev" property="disableLev" />
-
-    </resultMap>
-
-</mapper>
diff --git a/src/main/resources/mapper/BasShuttleOptMapper.xml b/src/main/resources/mapper/BasShuttleOptMapper.xml
deleted file mode 100644
index b49d0d1..0000000
--- a/src/main/resources/mapper/BasShuttleOptMapper.xml
+++ /dev/null
@@ -1,39 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.zy.asrs.mapper.BasShuttleOptMapper">
-
-    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
-    <resultMap id="BaseResultMap" type="com.zy.asrs.entity.BasShuttleOpt">
-        <id column="id" property="id" />
-        <result column="wrk_no" property="wrkNo" />
-        <result column="shuttle_no" property="shuttleNo" />
-        <result column="send_time" property="sendTime" />
-        <result column="mode" property="mode" />
-        <result column="source_loc_no" property="sourceLocNo" />
-        <result column="dist_loc_no" property="distLocNo" />
-        <result column="update_time" property="updateTime" />
-        <result column="update_by" property="updateBy" />
-        <result column="memo" property="memo" />
-        <result column="command" property="command" />
-        <result column="system_status" property="systemStatus" />
-        <result column="send" property="send" />
-        <result column="response" property="response" />
-        <result column="device_wrk" property="deviceWrk" />
-
-    </resultMap>
-
-    <select id="selectRunStatistic" resultType="map">
-        select shuttle_no,count(*) count from asr_bas_shuttle_opt
-        where send_time &gt;= DATEADD(day, DATEDIFF(day, 0, GETDATE()), 0)
-        and send_time &lt; DATEADD(day, DATEDIFF(day, 0, GETDATE())+1, 0)
-        group by shuttle_no
-    </select>
-
-    <select id="selectRunErrorStatistic" resultType="map">
-        select shuttle_no,count(*) count from asr_bas_shuttle_err_log
-        where start_time &gt; DATEADD(day, DATEDIFF(day, 0, GETDATE())-#{time}, 0)
-        and start_time &lt; DATEADD(day, DATEDIFF(day, 0, GETDATE()), 0)
-        GROUP BY shuttle_no
-    </select>
-
-</mapper>
diff --git a/src/main/resources/sql/20251016145740_qlsxk.nb3 b/src/main/resources/sql/20251016145740_qlsxk.nb3
deleted file mode 100644
index 93ef9a9..0000000
--- a/src/main/resources/sql/20251016145740_qlsxk.nb3
+++ /dev/null
Binary files differ
diff --git "a/src/main/resources/sql/30\345\217\260\350\275\246\346\225\260\346\215\256\345\272\223.nb3" "b/src/main/resources/sql/30\345\217\260\350\275\246\346\225\260\346\215\256\345\272\223.nb3"
deleted file mode 100644
index b9cfdb0..0000000
--- "a/src/main/resources/sql/30\345\217\260\350\275\246\346\225\260\346\215\256\345\272\223.nb3"
+++ /dev/null
Binary files differ
diff --git "a/src/main/resources/sql/40\345\217\260\350\275\246\346\225\260\346\215\256\345\272\223.nb3" "b/src/main/resources/sql/40\345\217\260\350\275\246\346\225\260\346\215\256\345\272\223.nb3"
deleted file mode 100644
index e203743..0000000
--- "a/src/main/resources/sql/40\345\217\260\350\275\246\346\225\260\346\215\256\345\272\223.nb3"
+++ /dev/null
Binary files differ
diff --git "a/src/main/resources/sql/5\345\217\260\350\275\246\346\225\260\346\215\256\345\272\223.nb3" "b/src/main/resources/sql/5\345\217\260\350\275\246\346\225\260\346\215\256\345\272\223.nb3"
deleted file mode 100644
index d1d5651..0000000
--- "a/src/main/resources/sql/5\345\217\260\350\275\246\346\225\260\346\215\256\345\272\223.nb3"
+++ /dev/null
Binary files differ
diff --git "a/src/main/resources/sql/\345\207\272\345\272\223\344\273\273\345\212\241\351\242\204\350\260\203\345\272\246\346\217\220\345\215\207\346\234\272sql" "b/src/main/resources/sql/\345\207\272\345\272\223\344\273\273\345\212\241\351\242\204\350\260\203\345\272\246\346\217\220\345\215\207\346\234\272sql"
deleted file mode 100644
index 3854a00..0000000
--- "a/src/main/resources/sql/\345\207\272\345\272\223\344\273\273\345\212\241\351\242\204\350\260\203\345\272\246\346\217\220\345\215\207\346\234\272sql"
+++ /dev/null
@@ -1 +0,0 @@
-INSERT INTO `asr_wrk_lastno` (`wrk_mk`, `wrk_no`, `modi_user`, `modi_time`, `appe_user`, `appe_time`, `s_no`, `e_no`, `memo_m`) VALUES (98, 8001, 9527, '2025-04-24 14:57:34', 9527, '2025-04-24 14:57:39', 8001, 1000, NULL);
\ No newline at end of file
diff --git "a/src/main/resources/sql/\345\260\217\350\275\246\351\201\277\351\232\234\351\205\215\347\275\256sql" "b/src/main/resources/sql/\345\260\217\350\275\246\351\201\277\351\232\234\351\205\215\347\275\256sql"
deleted file mode 100644
index 7fe957a..0000000
--- "a/src/main/resources/sql/\345\260\217\350\275\246\351\201\277\351\232\234\351\205\215\347\275\256sql"
+++ /dev/null
@@ -1,2 +0,0 @@
-INSERT INTO `sys_config` (`name`, `code`, `value`, `type`, `status`) VALUES ('閬块殰鍐呭湀鍗婂緞', 'avoidInnerCircle', '1', 1, 1);
-INSERT INTO `sys_config` (`name`, `code`, `value`, `type`, `status`) VALUES ('閬块殰澶栧湀鍗婂緞', 'avoidOuterCircle', '3', 1, 1);
\ No newline at end of file
diff --git "a/src/main/resources/sql/\345\272\223\344\275\215\345\234\260\345\233\276sql" "b/src/main/resources/sql/\345\272\223\344\275\215\345\234\260\345\233\276sql"
deleted file mode 100644
index b56b4d1..0000000
--- "a/src/main/resources/sql/\345\272\223\344\275\215\345\234\260\345\233\276sql"
+++ /dev/null
@@ -1,2 +0,0 @@
-INSERT INTO `shuttle_rcs`.`sys_resource` (`code`, `name`, `resource_id`, `level`, `sort`, `status`) VALUES ('locMap/locMap.html', '搴撲綅鍦板浘', 40541, 2, 8, 1);
-INSERT INTO `shuttle_rcs`.`sys_resource` (`code`, `name`, `resource_id`, `level`, `sort`, `status`) VALUES ('locMap#query', '鏌ヨ', '', 3, 0, 1);
\ No newline at end of file
diff --git "a/src/main/resources/sql/\350\264\247\345\217\211\346\217\220\345\215\207\346\234\272\345\274\202\345\270\270\347\240\201sql" "b/src/main/resources/sql/\350\264\247\345\217\211\346\217\220\345\215\207\346\234\272\345\274\202\345\270\270\347\240\201sql"
deleted file mode 100644
index 8c52d07..0000000
--- "a/src/main/resources/sql/\350\264\247\345\217\211\346\217\220\345\215\207\346\234\272\345\274\202\345\270\270\347\240\201sql"
+++ /dev/null
@@ -1,49 +0,0 @@
-INSERT INTO `shuttle_rcs`.`asr_bas_lift_err` (`error_code`, `err_name`, `modi_user`, `modi_time`, `appe_user`, `appe_time`) VALUES (1, '鏈鸿浇鏌滄�ュ仠', NULL, NULL, NULL, NULL);
-INSERT INTO `shuttle_rcs`.`asr_bas_lift_err` (`error_code`, `err_name`, `modi_user`, `modi_time`, `appe_user`, `appe_time`) VALUES (2, '鏉剧怀妫�娴�', NULL, NULL, NULL, NULL);
-INSERT INTO `shuttle_rcs`.`asr_bas_lift_err` (`error_code`, `err_name`, `modi_user`, `modi_time`, `appe_user`, `appe_time`) VALUES (3, '閲嶉噺妫�娴�', NULL, NULL, NULL, NULL);
-INSERT INTO `shuttle_rcs`.`asr_bas_lift_err` (`error_code`, `err_name`, `modi_user`, `modi_time`, `appe_user`, `appe_time`) VALUES (11, '鏈烘鏋侀檺', NULL, NULL, NULL, NULL);
-INSERT INTO `shuttle_rcs`.`asr_bas_lift_err` (`error_code`, `err_name`, `modi_user`, `modi_time`, `appe_user`, `appe_time`) VALUES (12, '涓嬩綅杞瀬闄�', NULL, NULL, NULL, NULL);
-INSERT INTO `shuttle_rcs`.`asr_bas_lift_err` (`error_code`, `err_name`, `modi_user`, `modi_time`, `appe_user`, `appe_time`) VALUES (13, '涓婁綅杞瀬闄�', NULL, NULL, NULL, NULL);
-INSERT INTO `shuttle_rcs`.`asr_bas_lift_err` (`error_code`, `err_name`, `modi_user`, `modi_time`, `appe_user`, `appe_time`) VALUES (14, '璐у弶宸︽瀬闄�', NULL, NULL, NULL, NULL);
-INSERT INTO `shuttle_rcs`.`asr_bas_lift_err` (`error_code`, `err_name`, `modi_user`, `modi_time`, `appe_user`, `appe_time`) VALUES (15, '璐у弶宸︽瀬闄�', NULL, NULL, NULL, NULL);
-INSERT INTO `shuttle_rcs`.`asr_bas_lift_err` (`error_code`, `err_name`, `modi_user`, `modi_time`, `appe_user`, `appe_time`) VALUES (21, '鎻愬崌_杩愯妯″紡鍒囨崲瓒呮椂', NULL, NULL, NULL, NULL);
-INSERT INTO `shuttle_rcs`.`asr_bas_lift_err` (`error_code`, `err_name`, `modi_user`, `modi_time`, `appe_user`, `appe_time`) VALUES (22, '鎻愬崌_鐩爣浣嶇疆鍊艰瀹氶敊璇�', NULL, NULL, NULL, NULL);
-INSERT INTO `shuttle_rcs`.`asr_bas_lift_err` (`error_code`, `err_name`, `modi_user`, `modi_time`, `appe_user`, `appe_time`) VALUES (23, '鎻愬崌_閫熷害鍊嶇巼璁剧疆閿欒', NULL, NULL, NULL, NULL);
-INSERT INTO `shuttle_rcs`.`asr_bas_lift_err` (`error_code`, `err_name`, `modi_user`, `modi_time`, `appe_user`, `appe_time`) VALUES (24, '鎻愬崌_鍙橀鍣ㄥ姳纾佸搷搴旇秴鏃�', NULL, NULL, NULL, NULL);
-INSERT INTO `shuttle_rcs`.`asr_bas_lift_err` (`error_code`, `err_name`, `modi_user`, `modi_time`, `appe_user`, `appe_time`) VALUES (25, '鎻愬崌_瀹氫綅澶辫触', NULL, NULL, NULL, NULL);
-INSERT INTO `shuttle_rcs`.`asr_bas_lift_err` (`error_code`, `err_name`, `modi_user`, `modi_time`, `appe_user`, `appe_time`) VALUES (26, '鎻愬崌_鍙橀涓嶱LC閫氳澶辫触', NULL, NULL, NULL, NULL);
-INSERT INTO `shuttle_rcs`.`asr_bas_lift_err` (`error_code`, `err_name`, `modi_user`, `modi_time`, `appe_user`, `appe_time`) VALUES (41, '鎻愬崌浣嶇疆鐜�: 闈欐�佺洃鎺у凡鍝嶅簲', NULL, NULL, NULL, NULL);
-INSERT INTO `shuttle_rcs`.`asr_bas_lift_err` (`error_code`, `err_name`, `modi_user`, `modi_time`, `appe_user`, `appe_time`) VALUES (42, '鎻愬崌浣嶇疆鐜�: 瀹氫綅鐩戞帶宸插搷搴�', NULL, NULL, NULL, NULL);
-INSERT INTO `shuttle_rcs`.`asr_bas_lift_err` (`error_code`, `err_name`, `modi_user`, `modi_time`, `appe_user`, `appe_time`) VALUES (43, '鎻愬崌浣嶇疆鐜�:璺熼殢璇樊杩囧ぇ', NULL, NULL, NULL, NULL);
-INSERT INTO `shuttle_rcs`.`asr_bas_lift_err` (`error_code`, `err_name`, `modi_user`, `modi_time`, `appe_user`, `appe_time`) VALUES (44, '鎻愬崌EPOS锛氳瀹氶�熷害鍙楀埌闄愬埗', NULL, NULL, NULL, NULL);
-INSERT INTO `shuttle_rcs`.`asr_bas_lift_err` (`error_code`, `err_name`, `modi_user`, `modi_time`, `appe_user`, `appe_time`) VALUES (45, '鎻愬崌EPOS锛氭湭璁剧疆鍙傝�冪偣', NULL, NULL, NULL, NULL);
-INSERT INTO `shuttle_rcs`.`asr_bas_lift_err` (`error_code`, `err_name`, `modi_user`, `modi_time`, `appe_user`, `appe_time`) VALUES (46, '鎻愬崌浣嶇疆鐜細浣嶇疆瀹為檯鍊肩殑鍊艰寖鍥存孩鍑�', NULL, NULL, NULL, NULL);
-INSERT INTO `shuttle_rcs`.`asr_bas_lift_err` (`error_code`, `err_name`, `modi_user`, `modi_time`, `appe_user`, `appe_time`) VALUES (47, '鎻愬崌椹卞姩锛氱數鏈鸿繃鐢垫祦', NULL, NULL, NULL, NULL);
-INSERT INTO `shuttle_rcs`.`asr_bas_lift_err` (`error_code`, `err_name`, `modi_user`, `modi_time`, `appe_user`, `appe_time`) VALUES (48, '鎻愬崌椹卞姩锛氬姛鐜囧崟鍏冭繃杞�', NULL, NULL, NULL, NULL);
-INSERT INTO `shuttle_rcs`.`asr_bas_lift_err` (`error_code`, `err_name`, `modi_user`, `modi_time`, `appe_user`, `appe_time`) VALUES (49, '鎻愬崌椹卞姩锛氭娴嬪嚭鐭矾/鎺ュ湴', NULL, NULL, NULL, NULL);
-INSERT INTO `shuttle_rcs`.`asr_bas_lift_err` (`error_code`, `err_name`, `modi_user`, `modi_time`, `appe_user`, `appe_time`) VALUES (50, '鎻愬崌椹卞姩锛氱數鏈哄牭杞�', NULL, NULL, NULL, NULL);
-INSERT INTO `shuttle_rcs`.`asr_bas_lift_err` (`error_code`, `err_name`, `modi_user`, `modi_time`, `appe_user`, `appe_time`) VALUES (51, '鎻愬崌椹卞姩锛氱數鏈鸿浆閫熻繃蹇�', NULL, NULL, NULL, NULL);
-INSERT INTO `shuttle_rcs`.`asr_bas_lift_err` (`error_code`, `err_name`, `modi_user`, `modi_time`, `appe_user`, `appe_time`) VALUES (52, '鎻愬崌椹卞姩锛氱數鏈哄け姝�', NULL, NULL, NULL, NULL);
-INSERT INTO `shuttle_rcs`.`asr_bas_lift_err` (`error_code`, `err_name`, `modi_user`, `modi_time`, `appe_user`, `appe_time`) VALUES (53, '鎻愬崌鍔熺巼鍗曞厓锛氳繃鐢垫祦', NULL, NULL, NULL, NULL);
-INSERT INTO `shuttle_rcs`.`asr_bas_lift_err` (`error_code`, `err_name`, `modi_user`, `modi_time`, `appe_user`, `appe_time`) VALUES (54, '鎻愬崌鍔熺巼鍗曞厓锛氱洿娴佹瘝绾胯繃鐢靛帇', NULL, NULL, NULL, NULL);
-INSERT INTO `shuttle_rcs`.`asr_bas_lift_err` (`error_code`, `err_name`, `modi_user`, `modi_time`, `appe_user`, `appe_time`) VALUES (55, '鎻愬崌鍔熺巼鍗曞厓锛氱洿娴佹瘝绾挎瑺鐢靛帇', NULL, NULL, NULL, NULL);
-INSERT INTO `shuttle_rcs`.`asr_bas_lift_err` (`error_code`, `err_name`, `modi_user`, `modi_time`, `appe_user`, `appe_time`) VALUES (61, '璐у弶_鐢垫満鍫佃浆鏁呴殰', NULL, NULL, NULL, NULL);
-INSERT INTO `shuttle_rcs`.`asr_bas_lift_err` (`error_code`, `err_name`, `modi_user`, `modi_time`, `appe_user`, `appe_time`) VALUES (62, '璐у弶_涓�浼告鍚戣蒋鏋侀檺', NULL, NULL, NULL, NULL);
-INSERT INTO `shuttle_rcs`.`asr_bas_lift_err` (`error_code`, `err_name`, `modi_user`, `modi_time`, `appe_user`, `appe_time`) VALUES (63, '璐у弶_涓�浼稿弽鍚戣蒋鏋侀檺', NULL, NULL, NULL, NULL);
-INSERT INTO `shuttle_rcs`.`asr_bas_lift_err` (`error_code`, `err_name`, `modi_user`, `modi_time`, `appe_user`, `appe_time`) VALUES (64, '璐у弶_椹卞姩锛氱己灏戔�滈�氳繃PLC鎺у埗', NULL, NULL, NULL, NULL);
-INSERT INTO `shuttle_rcs`.`asr_bas_lift_err` (`error_code`, `err_name`, `modi_user`, `modi_time`, `appe_user`, `appe_time`) VALUES (65, '璐у弶_鍙橀鏁呴殰', NULL, NULL, NULL, NULL);
-INSERT INTO `shuttle_rcs`.`asr_bas_lift_err` (`error_code`, `err_name`, `modi_user`, `modi_time`, `appe_user`, `appe_time`) VALUES (71, '鍙栬揣鏃惰浇璐у彴鏈夎揣', NULL, NULL, NULL, NULL);
-INSERT INTO `shuttle_rcs`.`asr_bas_lift_err` (`error_code`, `err_name`, `modi_user`, `modi_time`, `appe_user`, `appe_time`) VALUES (72, '鍙虫斁璐ф椂搴撲綅鏈夎揣', NULL, NULL, NULL, NULL);
-INSERT INTO `shuttle_rcs`.`asr_bas_lift_err` (`error_code`, `err_name`, `modi_user`, `modi_time`, `appe_user`, `appe_time`) VALUES (73, '璐х墿宸﹁秴瀹�', NULL, NULL, NULL, NULL);
-INSERT INTO `shuttle_rcs`.`asr_bas_lift_err` (`error_code`, `err_name`, `modi_user`, `modi_time`, `appe_user`, `appe_time`) VALUES (74, '璐х墿鍙宠秴瀹�', NULL, NULL, NULL, NULL);
-INSERT INTO `shuttle_rcs`.`asr_bas_lift_err` (`error_code`, `err_name`, `modi_user`, `modi_time`, `appe_user`, `appe_time`) VALUES (75, '璐х墿鍓嶈秴鍙�', NULL, NULL, NULL, NULL);
-INSERT INTO `shuttle_rcs`.`asr_bas_lift_err` (`error_code`, `err_name`, `modi_user`, `modi_time`, `appe_user`, `appe_time`) VALUES (76, '璐х墿鍚庤秴鍙�', NULL, NULL, NULL, NULL);
-INSERT INTO `shuttle_rcs`.`asr_bas_lift_err` (`error_code`, `err_name`, `modi_user`, `modi_time`, `appe_user`, `appe_time`) VALUES (77, '鏀捐揣鏃惰浇璐у彴鏃犺揣', NULL, NULL, NULL, NULL);
-INSERT INTO `shuttle_rcs`.`asr_bas_lift_err` (`error_code`, `err_name`, `modi_user`, `modi_time`, `appe_user`, `appe_time`) VALUES (78, '涓嶅湪灞傚畾浣嶇姝几鍙�', NULL, NULL, NULL, NULL);
-INSERT INTO `shuttle_rcs`.`asr_bas_lift_err` (`error_code`, `err_name`, `modi_user`, `modi_time`, `appe_user`, `appe_time`) VALUES (79, '璐у弶涓嶅湪瀹氫綅绂佹鎻愬崌', NULL, NULL, NULL, NULL);
-INSERT INTO `shuttle_rcs`.`asr_bas_lift_err` (`error_code`, `err_name`, `modi_user`, `modi_time`, `appe_user`, `appe_time`) VALUES (80, '鍙栬揣涓虹┖', NULL, NULL, NULL, NULL);
-INSERT INTO `shuttle_rcs`.`asr_bas_lift_err` (`error_code`, `err_name`, `modi_user`, `modi_time`, `appe_user`, `appe_time`) VALUES (81, '宸︽斁璐ф椂璁惧鏈夎揣', NULL, NULL, NULL, NULL);
-INSERT INTO `shuttle_rcs`.`asr_bas_lift_err` (`error_code`, `err_name`, `modi_user`, `modi_time`, `appe_user`, `appe_time`) VALUES (82, '绂佹浼稿樊,鍦ㄥ彸鍙栬揣鏃舵娴嬪埌灏忚溅鍜屾墭鐩�', NULL, NULL, NULL, NULL);
-INSERT INTO `shuttle_rcs`.`asr_bas_lift_err` (`error_code`, `err_name`, `modi_user`, `modi_time`, `appe_user`, `appe_time`) VALUES (83, '绂佹浼稿樊,鍦ㄥ彇鏀炬椂妫�娴嬪埌灏忚溅鍜屾墭鐩�', NULL, NULL, NULL, NULL);
-INSERT INTO `shuttle_rcs`.`asr_bas_lift_err` (`error_code`, `err_name`, `modi_user`, `modi_time`, `appe_user`, `appe_time`) VALUES (84, '璐х墿瓒呴珮', NULL, NULL, NULL, NULL);
-INSERT INTO `shuttle_rcs`.`asr_bas_lift_err` (`error_code`, `err_name`, `modi_user`, `modi_time`, `appe_user`, `appe_time`) VALUES (85, '瓒呭樊灞忚斀', NULL, NULL, NULL, NULL);
\ No newline at end of file
diff --git a/src/main/webapp/static/css/console_vue.css b/src/main/webapp/static/css/console_vue.css
index 3978e49..66220e8 100644
--- a/src/main/webapp/static/css/console_vue.css
+++ b/src/main/webapp/static/css/console_vue.css
@@ -22,11 +22,39 @@
 	background: #f0f0f0;
 }
 
+.shelf {
+	height: 35px;
+	border-right: none;
+	cursor: default;
+	color: rgb(194, 76, 65);
+	display: flex;
+	justify-content: center;
+	align-items: center;
+	user-select: none;
+	background: #f0f0f0;
+}
+
+.track-item {
+	width: 100%;
+	height: 35px;
+	border-right: none;
+	cursor: default;
+	color: rgb(194, 76, 65);
+	display: flex;
+	justify-content: center;
+	align-items: center;
+	user-select: none;
+	background: #f5d88f;;
+	padding: 0;
+	margin: 0;
+	position: relative;
+	z-index: 1;
+}
+
 /* 绔欑偣 */
 .site {
 	color: #333;
-	height: 35px;
-	width: 35px;
+	height: 100%;
 	cursor: pointer;
 	text-align: center;
 	background-color: rgb(120, 255, 129);
@@ -37,10 +65,88 @@
 	user-select: none;
 }
 
+.crn-item {
+	color: #333;
+	height: 35px;
+	cursor: pointer;
+	text-align: center;
+	background-color: rgb(120, 255, 129);
+	font-size: 13px;
+	display: flex;
+	justify-content: center;
+	align-items: center;
+	user-select: none;
+	margin: 1px;
+	position: absolute;
+	z-index: 2;
+}
+
+/* rgv */
+.rgv-item {
+	color: #333;
+	height: 35px;
+	cursor: pointer;
+	text-align: center;
+	background-color: rgb(120, 255, 129);
+	font-size: 13px;
+	display: flex;
+	justify-content: center;
+	align-items: center;
+	user-select: none;
+	padding: 0;
+	margin: 0;
+	position: absolute;
+	z-index: 2;
+}
+
 /*绌虹珯鐐�*/
 .site-k {
-	border: 1px solid rgb(108, 167, 168);
+	/*border: 1px solid rgb(108, 167, 168);*/
 	background-color: rgb(108, 167, 168);
+}
+
+/* 鍏ュ簱 */
+.machine-pakin {
+	background-color: rgb(163, 214, 242);
+}
+
+/* 鍑哄簱 */
+.machine-pakout {
+	background-color: rgb(151, 180, 0);
+}
+
+/* 搴撳埌搴� */
+.machine-stock-move {
+	background-color: rgb(58, 77, 249);
+}
+
+/* 绔欏埌绔� */
+.machine-site-move {
+	background-color: rgb(240, 140, 10);
+}
+
+/* PToP */
+.machine-p-move {
+	background-color: rgb(29, 152, 23);
+}
+
+/* 寮傚父 */
+.machine-error {
+	background-color: rgb(252, 48, 48);
+}
+
+/* 鑷姩 */
+.machine-auto {
+	background-color: rgb(132, 255, 115);
+}
+
+/* 闈炶嚜鍔�/鎵嬪姩 */
+.machine-un-auto {
+	background-color: rgb(184, 184, 184);
+}
+
+.machine-working {
+	background-color: rgb(255, 214, 11);
 }
 
 /* 鍏ュ簱 */
@@ -171,6 +277,19 @@
 	background-color: rgb(0, 0, 0);
 }
 
+/* 鍫嗗灈鏈哄脊绐� */
+#crnWindow {
+	width: 291px;
+	height: 365px;
+	background-image: url(../images/Popup-yellow.png);
+	position: fixed;
+	color:white;
+	left: 50%;
+	top: 50%;
+	transform: translate(-50%,-50%);
+	z-index: 101;
+}
+
 /* 杈撻�佽澶囧脊绐� */
 #siteWindow {
 	width: 300px;
@@ -181,6 +300,19 @@
 	transform: translate(-50%, -50%);
 	border-radius: 20px 20px 0 0;
 	overflow: hidden;
+}
+
+/* RGV寮圭獥 */
+#rgvWindow {
+	width: 291px;
+	height: 365px;
+	background-image: url(../images/Popup-yellow.png);
+	position: fixed;
+	color:white;
+	left: 50%;
+	top: 50%;
+	transform: translate(-50%,-50%);
+	z-index: 101;
 }
 
 #siteWindow-head {
@@ -210,6 +342,58 @@
 	display: inline-block;
 	float: right;
 	margin-right: 20px;
+}
+
+#crnWindow-head {
+	width: 291px;
+	height: 55px;
+	line-height: 55px;
+	margin-left: 55px;
+	color: #000000;
+	font-weight: 700;
+	letter-spacing: 2px;
+
+}
+#crnWindow-head .detailed {
+	display: inline-block;
+}
+#crnWindow-head button {
+	width: 25px;
+	height: 25px;
+	padding: 0px;
+	border: none;
+	border-radius: 25px;
+	background-image: url(../images/siteclose.png);
+	display: inline-block;
+	float: right;
+	margin-top: 15px;
+	margin-right: 80px;
+}
+
+#rgvWindow-head {
+	width: 291px;
+	height: 55px;
+	line-height: 55px;
+	margin-left: 55px;
+	color: #000000;
+	font-weight: 700;
+	letter-spacing: 2px;
+
+}
+#rgvWindow-head .detailed {
+	display: inline-block;
+}
+#rgvWindow-head button {
+	width: 25px;
+	height: 25px;
+	padding: 0px;
+	border: none;
+	border-radius: 25px;
+	background-image: url(../images/siteclose.png);
+	display: inline-block;
+	float: right;
+	margin-top: 15px;
+	margin-right: 80px;
 }
 
 .siteWindow-body {
@@ -434,3 +618,60 @@
 	transform: translate(var(--x-pos), var(--y-pos));
 	transition: transform 0.5s ease-in-out;
 }
+
+/* 寮圭獥 */
+form .form-item {
+	display: inline-block;
+	padding-left: 10px;
+}
+form .form-item-label {
+	display: inline-block;
+	width: 90px;
+	font-size: 10px;
+}
+form .form-item-input {
+	display: inline-block;
+	width: 180px;
+
+}
+form .form-item-input input {
+	background-color: rgba(255,255,255,.3);
+	color: #FFFFFF;
+	padding: 0;
+	border: none;
+	border-radius: 2px;
+	height: 18px;
+	padding-left: 10px;
+}
+/* checkbox */
+form .form-item-checkbox {
+	display: inline-block;
+	padding-left: 10px;
+	width: 20%;
+}
+form .form-item-label-checkbox {
+	display: inline-block;
+	width: auto;
+	font-size: 14px;
+}
+form .form-item-input-checkbox {
+	display: inline-block;
+	width: auto;
+}
+
+.excel-table {
+	border-collapse: collapse;
+	width: 100%;
+	padding: 0;
+	margin: 0;
+}
+
+.excel-table td {
+	padding: 0;
+	margin: 0;
+	text-align: center;
+}
+
+.excel-table .merged {
+	display: none;
+}
diff --git a/src/main/webapp/static/js/basCrnp/basCrnp.js b/src/main/webapp/static/js/basCrnp/basCrnp.js
new file mode 100644
index 0000000..6834467
--- /dev/null
+++ b/src/main/webapp/static/js/basCrnp/basCrnp.js
@@ -0,0 +1,264 @@
+var pageCurr;
+layui.config({
+    base: baseUrl + "/static/layui/lay/modules/"
+}).use(['table','laydate', 'form', 'admin'], function(){
+    var table = layui.table;
+    var $ = layui.jquery;
+    var layer = layui.layer;
+    var layDate = layui.laydate;
+    var form = layui.form;
+    var admin = layui.admin;
+
+    // 鏁版嵁娓叉煋
+    tableIns = table.render({
+        elem: '#basCrnp',
+        headers: {token: localStorage.getItem('token')},
+        url: baseUrl+'/basCrnp/list/auth',
+        page: true,
+        limit: 15,
+        limits: [15, 30, 50, 100, 200, 500],
+        toolbar: '#toolbar',
+        cellMinWidth: 50,
+        height: 'full-120',
+        cols: [[
+            {type: 'checkbox'}
+            ,{field: 'crnNo', align: 'center',title: '缂栧彿'}
+            ,{field: 'status$', align: 'center',title: '鐘舵��'}
+            ,{field: 'wrkNo', align: 'center',title: '宸ヤ綔鍙�'}
+            ,{field: 'inEnable', align: 'center',title: '鍙叆(checkBox)'}
+            ,{field: 'outEnable', align: 'center',title: '鍙嚭(checkBox)'}
+            ,{field: 'createBy', align: 'center',title: '鍒涘缓浜哄憳'}
+            ,{field: 'createTime$', align: 'center',title: '鍒涘缓鏃堕棿'}
+            ,{field: 'updateBy', align: 'center',title: '淇敼浜哄憳'}
+            ,{field: 'updateTime$', align: 'center',title: '淇敼鏃堕棿'}
+            ,{field: 'memo', align: 'center',title: '澶囨敞'}
+
+            ,{fixed: 'right', title:'鎿嶄綔', align: 'center', toolbar: '#operate', width:120}
+        ]],
+        request: {
+            pageName: 'curr',
+            pageSize: 'limit'
+        },
+        parseData: function (res) {
+            return {
+                'code': res.code,
+                'msg': res.msg,
+                'count': res.data.total,
+                'data': res.data.records
+            }
+        },
+        response: {
+            statusCode: 200
+        },
+        done: function(res, curr, count) {
+            if (res.code === 403) {
+                top.location.href = baseUrl+"/";
+            }
+            pageCurr=curr;
+            limit();
+        }
+    });
+
+    // 鐩戝惉鎺掑簭浜嬩欢
+    table.on('sort(basCrnp)', function (obj) {
+        var searchData = {};
+        $.each($('#search-box [name]').serializeArray(), function() {
+            searchData[this.name] = this.value;
+        });
+        searchData['orderByField'] = obj.field;
+        searchData['orderByType'] = obj.type;
+        tableIns.reload({
+            where: searchData,
+            page: {curr: 1}
+        });
+    });
+
+    // 鐩戝惉澶村伐鍏锋爮浜嬩欢
+    table.on('toolbar(basCrnp)', function (obj) {
+        var checkStatus = table.checkStatus(obj.config.id).data;
+        switch(obj.event) {
+            case 'addData':
+                showEditModel();
+                break;
+            case 'deleteData':
+               if (checkStatus.length === 0) {
+                   layer.msg('璇烽�夋嫨瑕佸垹闄ょ殑鏁版嵁', {icon: 2});
+                   return;
+               }
+               del(checkStatus.map(function (d) {
+                   return d.crnNo;
+               }));
+               break;
+            case 'exportData':
+                admin.confirm('纭畾瀵煎嚭Excel鍚�', {shadeClose: true}, function(){
+                    var titles=[];
+                    var fields=[];
+                    obj.config.cols[0].map(function (col) {
+                        if (col.type === 'normal' && col.hide === false && col.toolbar == null) {
+                            titles.push(col.title);
+                            fields.push(col.field);
+                        }
+                    });
+                    var exportData = {};
+                    $.each($('#search-box [name]').serializeArray(), function() {
+                        exportData[this.name] = this.value;
+                    });
+                    var param = {
+                        'basCrnp': exportData,
+                        'fields': fields
+                    };
+                    $.ajax({
+                        url: baseUrl+"/basCrnp/export/auth",
+                        headers: {'token': localStorage.getItem('token')},
+                        data: JSON.stringify(param),
+                        dataType:'json',
+                        contentType:'application/json;charset=UTF-8',
+                        method: 'POST',
+                        success: function (res) {
+                            layer.closeAll();
+                            if (res.code === 200) {
+                                table.exportFile(titles,res.data,'xls');
+                            } else if (res.code === 403) {
+                                top.location.href = baseUrl+"/";
+                            } else {
+                                layer.msg(res.msg, {icon: 2})
+                            }
+                        }
+                    });
+                });
+                break;
+        }
+    });
+
+    // 鐩戝惉琛屽伐鍏蜂簨浠�
+    table.on('tool(basCrnp)', function(obj){
+        var data = obj.data;
+        switch (obj.event) {
+            case 'edit':
+                showEditModel(data);
+                break;
+            case "del":
+                del([data.crnNo]);
+                break;
+        }
+    });
+
+    /* 寮圭獥 - 鏂板銆佷慨鏀� */
+    function showEditModel(mData) {
+        admin.open({
+            type: 1,
+            area: '600px',
+            title: (mData ? '淇敼' : '娣诲姞') + '璁㈠崟鐘舵��',
+            content: $('#editDialog').html(),
+            success: function (layero, dIndex) {
+                layDateRender(mData);
+                form.val('detail', mData);
+                form.on('submit(editSubmit)', function (data) {
+                    var loadIndex = layer.load(2);
+                    $.ajax({
+                        url: baseUrl+"/basCrnp/"+(mData?'update':'add')+"/auth",
+                        headers: {'token': localStorage.getItem('token')},
+                        data: data.field,
+                        method: 'POST',
+                        success: function (res) {
+                            layer.close(loadIndex);
+                            if (res.code === 200){
+                                layer.close(dIndex);
+                                layer.msg(res.msg, {icon: 1});
+                                tableReload();
+                            } else if (res.code === 403){
+                                top.location.href = baseUrl+"/";
+                            }else {
+                                layer.msg(res.msg, {icon: 2});
+                            }
+                        }
+                    })
+                    return false;
+                });
+                $(layero).children('.layui-layer-content').css('overflow', 'visible');
+                layui.form.render('select');
+            }
+        });
+    }
+
+    /* 鍒犻櫎 */
+    function del(ids) {
+        layer.confirm('纭畾瑕佸垹闄ら�変腑鏁版嵁鍚楋紵', {
+            skin: 'layui-layer-admin',
+            shade: .1
+        }, function (i) {
+            layer.close(i);
+            var loadIndex = layer.load(2);
+            $.ajax({
+                url: baseUrl+"/basCrnp/delete/auth",
+                headers: {'token': localStorage.getItem('token')},
+                data: {ids: ids},
+                method: 'POST',
+                success: function (res) {
+                    layer.close(loadIndex);
+                    if (res.code === 200){
+                        layer.msg(res.msg, {icon: 1});
+                        tableReload();
+                    } else if (res.code === 403){
+                        top.location.href = baseUrl+"/";
+                    } else {
+                        layer.msg(res.msg, {icon: 2});
+                    }
+                }
+            })
+        });
+    }
+
+    // 鎼滅储
+    form.on('submit(search)', function (data) {
+        pageCurr = 1;
+        tableReload(false);
+    });
+
+    // 閲嶇疆
+    form.on('submit(reset)', function (data) {
+        pageCurr = 1;
+        clearFormVal($('#search-box'));
+        tableReload(false);
+    });
+
+    // 鏃堕棿閫夋嫨鍣�
+    function layDateRender(data) {
+        setTimeout(function () {
+            layDate.render({
+                elem: '.layui-laydate-range'
+                ,type: 'datetime'
+                ,range: true
+            });
+            layDate.render({
+                elem: '#createTime\\$',
+                type: 'datetime',
+                value: data!==undefined?data['createTime\\$']:null
+            });
+            layDate.render({
+                elem: '#updateTime\\$',
+                type: 'datetime',
+                value: data!==undefined?data['updateTime\\$']:null
+            });
+
+        }, 300);
+    }
+    layDateRender();
+
+});
+
+// 鍏抽棴鍔ㄤ綔
+$(document).on('click','#data-detail-close', function () {
+    parent.layer.closeAll();
+});
+
+function tableReload(child) {
+    var searchData = {};
+    $.each($('#search-box [name]').serializeArray(), function() {
+        searchData[this.name] = this.value;
+    });
+    tableIns.reload({
+        where: searchData,
+        page: {curr: pageCurr}
+     });
+}
diff --git a/src/main/webapp/static/js/basCrnpErr/basCrnpErr.js b/src/main/webapp/static/js/basCrnpErr/basCrnpErr.js
new file mode 100644
index 0000000..4784f1c
--- /dev/null
+++ b/src/main/webapp/static/js/basCrnpErr/basCrnpErr.js
@@ -0,0 +1,261 @@
+var pageCurr;
+layui.config({
+    base: baseUrl + "/static/layui/lay/modules/"
+}).use(['table','laydate', 'form', 'admin'], function(){
+    var table = layui.table;
+    var $ = layui.jquery;
+    var layer = layui.layer;
+    var layDate = layui.laydate;
+    var form = layui.form;
+    var admin = layui.admin;
+
+    // 鏁版嵁娓叉煋
+    tableIns = table.render({
+        elem: '#basCrnpErr',
+        headers: {token: localStorage.getItem('token')},
+        url: baseUrl+'/basCrnpErr/list/auth',
+        page: true,
+        limit: 15,
+        limits: [15, 30, 50, 100, 200, 500],
+        toolbar: '#toolbar',
+        cellMinWidth: 50,
+        height: 'full-120',
+        cols: [[
+            {type: 'checkbox'}
+            ,{field: 'id', align: 'center',title: '缂栧彿'}
+            ,{field: 'errorCode', align: 'center',title: '寮傚父鐮�'}
+            ,{field: 'errName', align: 'center',title: '寮傚父'}
+            ,{field: 'modiUser$', align: 'center',title: '淇敼浜哄憳'}
+            ,{field: 'modiTime$', align: 'center',title: '淇敼鏃堕棿'}
+            ,{field: 'appeUser$', align: 'center',title: '娣诲姞浜哄憳'}
+            ,{field: 'appeTime$', align: 'center',title: '娣诲姞鏃堕棿'}
+
+            ,{fixed: 'right', title:'鎿嶄綔', align: 'center', toolbar: '#operate', width:120}
+        ]],
+        request: {
+            pageName: 'curr',
+            pageSize: 'limit'
+        },
+        parseData: function (res) {
+            return {
+                'code': res.code,
+                'msg': res.msg,
+                'count': res.data.total,
+                'data': res.data.records
+            }
+        },
+        response: {
+            statusCode: 200
+        },
+        done: function(res, curr, count) {
+            if (res.code === 403) {
+                top.location.href = baseUrl+"/";
+            }
+            pageCurr=curr;
+            limit();
+        }
+    });
+
+    // 鐩戝惉鎺掑簭浜嬩欢
+    table.on('sort(basCrnpErr)', function (obj) {
+        var searchData = {};
+        $.each($('#search-box [name]').serializeArray(), function() {
+            searchData[this.name] = this.value;
+        });
+        searchData['orderByField'] = obj.field;
+        searchData['orderByType'] = obj.type;
+        tableIns.reload({
+            where: searchData,
+            page: {curr: 1}
+        });
+    });
+
+    // 鐩戝惉澶村伐鍏锋爮浜嬩欢
+    table.on('toolbar(basCrnpErr)', function (obj) {
+        var checkStatus = table.checkStatus(obj.config.id).data;
+        switch(obj.event) {
+            case 'addData':
+                showEditModel();
+                break;
+            case 'deleteData':
+               if (checkStatus.length === 0) {
+                   layer.msg('璇烽�夋嫨瑕佸垹闄ょ殑鏁版嵁', {icon: 2});
+                   return;
+               }
+               del(checkStatus.map(function (d) {
+                   return d.id;
+               }));
+               break;
+            case 'exportData':
+                admin.confirm('纭畾瀵煎嚭Excel鍚�', {shadeClose: true}, function(){
+                    var titles=[];
+                    var fields=[];
+                    obj.config.cols[0].map(function (col) {
+                        if (col.type === 'normal' && col.hide === false && col.toolbar == null) {
+                            titles.push(col.title);
+                            fields.push(col.field);
+                        }
+                    });
+                    var exportData = {};
+                    $.each($('#search-box [name]').serializeArray(), function() {
+                        exportData[this.name] = this.value;
+                    });
+                    var param = {
+                        'basCrnpErr': exportData,
+                        'fields': fields
+                    };
+                    $.ajax({
+                        url: baseUrl+"/basCrnpErr/export/auth",
+                        headers: {'token': localStorage.getItem('token')},
+                        data: JSON.stringify(param),
+                        dataType:'json',
+                        contentType:'application/json;charset=UTF-8',
+                        method: 'POST',
+                        success: function (res) {
+                            layer.closeAll();
+                            if (res.code === 200) {
+                                table.exportFile(titles,res.data,'xls');
+                            } else if (res.code === 403) {
+                                top.location.href = baseUrl+"/";
+                            } else {
+                                layer.msg(res.msg, {icon: 2})
+                            }
+                        }
+                    });
+                });
+                break;
+        }
+    });
+
+    // 鐩戝惉琛屽伐鍏蜂簨浠�
+    table.on('tool(basCrnpErr)', function(obj){
+        var data = obj.data;
+        switch (obj.event) {
+            case 'edit':
+                showEditModel(data);
+                break;
+            case "del":
+                del([data.id]);
+                break;
+        }
+    });
+
+    /* 寮圭獥 - 鏂板銆佷慨鏀� */
+    function showEditModel(mData) {
+        admin.open({
+            type: 1,
+            area: '600px',
+            title: (mData ? '淇敼' : '娣诲姞') + '璁㈠崟鐘舵��',
+            content: $('#editDialog').html(),
+            success: function (layero, dIndex) {
+                layDateRender(mData);
+                form.val('detail', mData);
+                form.on('submit(editSubmit)', function (data) {
+                    var loadIndex = layer.load(2);
+                    $.ajax({
+                        url: baseUrl+"/basCrnpErr/"+(mData?'update':'add')+"/auth",
+                        headers: {'token': localStorage.getItem('token')},
+                        data: data.field,
+                        method: 'POST',
+                        success: function (res) {
+                            layer.close(loadIndex);
+                            if (res.code === 200){
+                                layer.close(dIndex);
+                                layer.msg(res.msg, {icon: 1});
+                                tableReload();
+                            } else if (res.code === 403){
+                                top.location.href = baseUrl+"/";
+                            }else {
+                                layer.msg(res.msg, {icon: 2});
+                            }
+                        }
+                    })
+                    return false;
+                });
+                $(layero).children('.layui-layer-content').css('overflow', 'visible');
+                layui.form.render('select');
+            }
+        });
+    }
+
+    /* 鍒犻櫎 */
+    function del(ids) {
+        layer.confirm('纭畾瑕佸垹闄ら�変腑鏁版嵁鍚楋紵', {
+            skin: 'layui-layer-admin',
+            shade: .1
+        }, function (i) {
+            layer.close(i);
+            var loadIndex = layer.load(2);
+            $.ajax({
+                url: baseUrl+"/basCrnpErr/delete/auth",
+                headers: {'token': localStorage.getItem('token')},
+                data: {ids: ids},
+                method: 'POST',
+                success: function (res) {
+                    layer.close(loadIndex);
+                    if (res.code === 200){
+                        layer.msg(res.msg, {icon: 1});
+                        tableReload();
+                    } else if (res.code === 403){
+                        top.location.href = baseUrl+"/";
+                    } else {
+                        layer.msg(res.msg, {icon: 2});
+                    }
+                }
+            })
+        });
+    }
+
+    // 鎼滅储
+    form.on('submit(search)', function (data) {
+        pageCurr = 1;
+        tableReload(false);
+    });
+
+    // 閲嶇疆
+    form.on('submit(reset)', function (data) {
+        pageCurr = 1;
+        clearFormVal($('#search-box'));
+        tableReload(false);
+    });
+
+    // 鏃堕棿閫夋嫨鍣�
+    function layDateRender(data) {
+        setTimeout(function () {
+            layDate.render({
+                elem: '.layui-laydate-range'
+                ,type: 'datetime'
+                ,range: true
+            });
+            layDate.render({
+                elem: '#modiTime\\$',
+                type: 'datetime',
+                value: data!==undefined?data['modiTime\\$']:null
+            });
+            layDate.render({
+                elem: '#appeTime\\$',
+                type: 'datetime',
+                value: data!==undefined?data['appeTime\\$']:null
+            });
+
+        }, 300);
+    }
+    layDateRender();
+
+});
+
+// 鍏抽棴鍔ㄤ綔
+$(document).on('click','#data-detail-close', function () {
+    parent.layer.closeAll();
+});
+
+function tableReload(child) {
+    var searchData = {};
+    $.each($('#search-box [name]').serializeArray(), function() {
+        searchData[this.name] = this.value;
+    });
+    tableIns.reload({
+        where: searchData,
+        page: {curr: pageCurr}
+     });
+}
diff --git a/src/main/webapp/static/js/basCrnpErrLog/basCrnpErrLog.js b/src/main/webapp/static/js/basCrnpErrLog/basCrnpErrLog.js
new file mode 100644
index 0000000..4aaaad2
--- /dev/null
+++ b/src/main/webapp/static/js/basCrnpErrLog/basCrnpErrLog.js
@@ -0,0 +1,285 @@
+var pageCurr;
+layui.config({
+    base: baseUrl + "/static/layui/lay/modules/"
+}).use(['table','laydate', 'form', 'admin'], function(){
+    var table = layui.table;
+    var $ = layui.jquery;
+    var layer = layui.layer;
+    var layDate = layui.laydate;
+    var form = layui.form;
+    var admin = layui.admin;
+
+    // 鏁版嵁娓叉煋
+    tableIns = table.render({
+        elem: '#basCrnpErrLog',
+        headers: {token: localStorage.getItem('token')},
+        url: baseUrl+'/basCrnpErrLog/list/auth',
+        page: true,
+        limit: 15,
+        limits: [15, 30, 50, 100, 200, 500],
+        toolbar: '#toolbar',
+        cellMinWidth: 50,
+        height: 'full-120',
+        cols: [[
+            {type: 'checkbox'}
+            ,{field: 'id', align: 'center',title: '缂栧彿'}
+            ,{field: 'wrkNo', align: 'center',title: '宸ヤ綔鍙�'}
+            ,{field: 'startTime$', align: 'center',title: '鍙戠敓鏃堕棿'}
+            ,{field: 'endTime$', align: 'center',title: '缁撴潫鏃堕棿'}
+            ,{field: 'wrkSts$', align: 'center',title: '宸ヤ綔鐘舵��'}
+            ,{field: 'ioType$', align: 'center',title: '鍏ュ嚭搴撶被鍨�'}
+            ,{field: 'crnNo', align: 'center',title: '鍫嗗灈鏈哄彿'}
+            ,{field: 'locNo', align: 'center',title: '鐩爣搴撲綅'}
+            ,{field: 'staNo', align: 'center',title: '鐩爣绔�'}
+            ,{field: 'sourceStaNo', align: 'center',title: '婧愮珯'}
+            ,{field: 'sourceLocNo', align: 'center',title: '婧愬簱浣�'}
+            ,{field: 'barcode', align: 'center',title: '鏉$爜'}
+            ,{field: 'errCode', align: 'center',title: '寮傚父鐮�'}
+            ,{field: 'error', align: 'center',title: '寮傚父'}
+            ,{field: 'status$', align: 'center',title: '寮傚父鎯呭喌'}
+            ,{field: 'createTime$', align: 'center',title: '娣诲姞鏃堕棿'}
+            ,{field: 'createBy$', align: 'center',title: '娣诲姞浜哄憳'}
+            ,{field: 'updateTime$', align: 'center',title: '淇敼鏃堕棿'}
+            ,{field: 'updateBy$', align: 'center',title: '淇敼浜哄憳'}
+            ,{field: 'memo', align: 'center',title: '澶囨敞'}
+            ,{field: 'systemStatus', align: 'center',title: '绯荤粺鐘舵�佹暟鎹�'}
+
+            ,{fixed: 'right', title:'鎿嶄綔', align: 'center', toolbar: '#operate', width:120}
+        ]],
+        request: {
+            pageName: 'curr',
+            pageSize: 'limit'
+        },
+        parseData: function (res) {
+            return {
+                'code': res.code,
+                'msg': res.msg,
+                'count': res.data.total,
+                'data': res.data.records
+            }
+        },
+        response: {
+            statusCode: 200
+        },
+        done: function(res, curr, count) {
+            if (res.code === 403) {
+                top.location.href = baseUrl+"/";
+            }
+            pageCurr=curr;
+            limit();
+        }
+    });
+
+    // 鐩戝惉鎺掑簭浜嬩欢
+    table.on('sort(basCrnpErrLog)', function (obj) {
+        var searchData = {};
+        $.each($('#search-box [name]').serializeArray(), function() {
+            searchData[this.name] = this.value;
+        });
+        searchData['orderByField'] = obj.field;
+        searchData['orderByType'] = obj.type;
+        tableIns.reload({
+            where: searchData,
+            page: {curr: 1}
+        });
+    });
+
+    // 鐩戝惉澶村伐鍏锋爮浜嬩欢
+    table.on('toolbar(basCrnpErrLog)', function (obj) {
+        var checkStatus = table.checkStatus(obj.config.id).data;
+        switch(obj.event) {
+            case 'addData':
+                showEditModel();
+                break;
+            case 'deleteData':
+               if (checkStatus.length === 0) {
+                   layer.msg('璇烽�夋嫨瑕佸垹闄ょ殑鏁版嵁', {icon: 2});
+                   return;
+               }
+               del(checkStatus.map(function (d) {
+                   return d.id;
+               }));
+               break;
+            case 'exportData':
+                admin.confirm('纭畾瀵煎嚭Excel鍚�', {shadeClose: true}, function(){
+                    var titles=[];
+                    var fields=[];
+                    obj.config.cols[0].map(function (col) {
+                        if (col.type === 'normal' && col.hide === false && col.toolbar == null) {
+                            titles.push(col.title);
+                            fields.push(col.field);
+                        }
+                    });
+                    var exportData = {};
+                    $.each($('#search-box [name]').serializeArray(), function() {
+                        exportData[this.name] = this.value;
+                    });
+                    var param = {
+                        'basCrnpErrLog': exportData,
+                        'fields': fields
+                    };
+                    $.ajax({
+                        url: baseUrl+"/basCrnpErrLog/export/auth",
+                        headers: {'token': localStorage.getItem('token')},
+                        data: JSON.stringify(param),
+                        dataType:'json',
+                        contentType:'application/json;charset=UTF-8',
+                        method: 'POST',
+                        success: function (res) {
+                            layer.closeAll();
+                            if (res.code === 200) {
+                                table.exportFile(titles,res.data,'xls');
+                            } else if (res.code === 403) {
+                                top.location.href = baseUrl+"/";
+                            } else {
+                                layer.msg(res.msg, {icon: 2})
+                            }
+                        }
+                    });
+                });
+                break;
+        }
+    });
+
+    // 鐩戝惉琛屽伐鍏蜂簨浠�
+    table.on('tool(basCrnpErrLog)', function(obj){
+        var data = obj.data;
+        switch (obj.event) {
+            case 'edit':
+                showEditModel(data);
+                break;
+            case "del":
+                del([data.id]);
+                break;
+        }
+    });
+
+    /* 寮圭獥 - 鏂板銆佷慨鏀� */
+    function showEditModel(mData) {
+        admin.open({
+            type: 1,
+            area: '600px',
+            title: (mData ? '淇敼' : '娣诲姞') + '璁㈠崟鐘舵��',
+            content: $('#editDialog').html(),
+            success: function (layero, dIndex) {
+                layDateRender(mData);
+                form.val('detail', mData);
+                form.on('submit(editSubmit)', function (data) {
+                    var loadIndex = layer.load(2);
+                    $.ajax({
+                        url: baseUrl+"/basCrnpErrLog/"+(mData?'update':'add')+"/auth",
+                        headers: {'token': localStorage.getItem('token')},
+                        data: data.field,
+                        method: 'POST',
+                        success: function (res) {
+                            layer.close(loadIndex);
+                            if (res.code === 200){
+                                layer.close(dIndex);
+                                layer.msg(res.msg, {icon: 1});
+                                tableReload();
+                            } else if (res.code === 403){
+                                top.location.href = baseUrl+"/";
+                            }else {
+                                layer.msg(res.msg, {icon: 2});
+                            }
+                        }
+                    })
+                    return false;
+                });
+                $(layero).children('.layui-layer-content').css('overflow', 'visible');
+                layui.form.render('select');
+            }
+        });
+    }
+
+    /* 鍒犻櫎 */
+    function del(ids) {
+        layer.confirm('纭畾瑕佸垹闄ら�変腑鏁版嵁鍚楋紵', {
+            skin: 'layui-layer-admin',
+            shade: .1
+        }, function (i) {
+            layer.close(i);
+            var loadIndex = layer.load(2);
+            $.ajax({
+                url: baseUrl+"/basCrnpErrLog/delete/auth",
+                headers: {'token': localStorage.getItem('token')},
+                data: {ids: ids},
+                method: 'POST',
+                success: function (res) {
+                    layer.close(loadIndex);
+                    if (res.code === 200){
+                        layer.msg(res.msg, {icon: 1});
+                        tableReload();
+                    } else if (res.code === 403){
+                        top.location.href = baseUrl+"/";
+                    } else {
+                        layer.msg(res.msg, {icon: 2});
+                    }
+                }
+            })
+        });
+    }
+
+    // 鎼滅储
+    form.on('submit(search)', function (data) {
+        pageCurr = 1;
+        tableReload(false);
+    });
+
+    // 閲嶇疆
+    form.on('submit(reset)', function (data) {
+        pageCurr = 1;
+        clearFormVal($('#search-box'));
+        tableReload(false);
+    });
+
+    // 鏃堕棿閫夋嫨鍣�
+    function layDateRender(data) {
+        setTimeout(function () {
+            layDate.render({
+                elem: '.layui-laydate-range'
+                ,type: 'datetime'
+                ,range: true
+            });
+            layDate.render({
+                elem: '#startTime\\$',
+                type: 'datetime',
+                value: data!==undefined?data['startTime\\$']:null
+            });
+            layDate.render({
+                elem: '#endTime\\$',
+                type: 'datetime',
+                value: data!==undefined?data['endTime\\$']:null
+            });
+            layDate.render({
+                elem: '#createTime\\$',
+                type: 'datetime',
+                value: data!==undefined?data['createTime\\$']:null
+            });
+            layDate.render({
+                elem: '#updateTime\\$',
+                type: 'datetime',
+                value: data!==undefined?data['updateTime\\$']:null
+            });
+
+        }, 300);
+    }
+    layDateRender();
+
+});
+
+// 鍏抽棴鍔ㄤ綔
+$(document).on('click','#data-detail-close', function () {
+    parent.layer.closeAll();
+});
+
+function tableReload(child) {
+    var searchData = {};
+    $.each($('#search-box [name]').serializeArray(), function() {
+        searchData[this.name] = this.value;
+    });
+    tableIns.reload({
+        where: searchData,
+        page: {curr: pageCurr}
+     });
+}
diff --git a/src/main/webapp/static/js/basCrnpOpt/basCrnpOpt.js b/src/main/webapp/static/js/basCrnpOpt/basCrnpOpt.js
new file mode 100644
index 0000000..4fd5a85
--- /dev/null
+++ b/src/main/webapp/static/js/basCrnpOpt/basCrnpOpt.js
@@ -0,0 +1,268 @@
+var pageCurr;
+layui.config({
+    base: baseUrl + "/static/layui/lay/modules/"
+}).use(['table','laydate', 'form', 'admin'], function(){
+    var table = layui.table;
+    var $ = layui.jquery;
+    var layer = layui.layer;
+    var layDate = layui.laydate;
+    var form = layui.form;
+    var admin = layui.admin;
+
+    // 鏁版嵁娓叉煋
+    tableIns = table.render({
+        elem: '#basCrnpOpt',
+        headers: {token: localStorage.getItem('token')},
+        url: baseUrl+'/basCrnpOpt/list/auth',
+        page: true,
+        limit: 15,
+        limits: [15, 30, 50, 100, 200, 500],
+        toolbar: '#toolbar',
+        cellMinWidth: 50,
+        height: 'full-120',
+        cols: [[
+            {type: 'checkbox'}
+            ,{field: 'id', align: 'center',title: '缂栧彿'}
+            ,{field: 'wrkNo', align: 'center',title: '宸ヤ綔鍙�'}
+            ,{field: 'crnNo', align: 'center',title: '鍫嗗灈鏈哄彿'}
+            ,{field: 'sendTime$', align: 'center',title: '涓嬪彂鏃堕棿'}
+            ,{field: 'mode', align: 'center',title: '浣滀笟'}
+            ,{field: 'sourceLocNo', align: 'center',title: '璧风偣搴撲綅'}
+            ,{field: 'targetLocNo', align: 'center',title: '鐩爣搴撲綅'}
+            ,{field: 'updateTime$', align: 'center',title: '淇敼鏃堕棿'}
+            ,{field: 'updateBy$', align: 'center',title: '淇敼浜哄憳'}
+            ,{field: 'memo', align: 'center',title: '澶囨敞'}
+            ,{field: 'command', align: 'center',title: '鍛戒护'}
+            ,{field: 'systemStatus', align: 'center',title: '绯荤粺鐘舵��'}
+            ,{field: 'send$', align: 'center',title: '涓嬪彂鐘舵��'}
+            ,{field: 'response', align: 'center',title: '璇锋眰鍝嶅簲'}
+
+            ,{fixed: 'right', title:'鎿嶄綔', align: 'center', toolbar: '#operate', width:120}
+        ]],
+        request: {
+            pageName: 'curr',
+            pageSize: 'limit'
+        },
+        parseData: function (res) {
+            return {
+                'code': res.code,
+                'msg': res.msg,
+                'count': res.data.total,
+                'data': res.data.records
+            }
+        },
+        response: {
+            statusCode: 200
+        },
+        done: function(res, curr, count) {
+            if (res.code === 403) {
+                top.location.href = baseUrl+"/";
+            }
+            pageCurr=curr;
+            limit();
+        }
+    });
+
+    // 鐩戝惉鎺掑簭浜嬩欢
+    table.on('sort(basCrnpOpt)', function (obj) {
+        var searchData = {};
+        $.each($('#search-box [name]').serializeArray(), function() {
+            searchData[this.name] = this.value;
+        });
+        searchData['orderByField'] = obj.field;
+        searchData['orderByType'] = obj.type;
+        tableIns.reload({
+            where: searchData,
+            page: {curr: 1}
+        });
+    });
+
+    // 鐩戝惉澶村伐鍏锋爮浜嬩欢
+    table.on('toolbar(basCrnpOpt)', function (obj) {
+        var checkStatus = table.checkStatus(obj.config.id).data;
+        switch(obj.event) {
+            case 'addData':
+                showEditModel();
+                break;
+            case 'deleteData':
+               if (checkStatus.length === 0) {
+                   layer.msg('璇烽�夋嫨瑕佸垹闄ょ殑鏁版嵁', {icon: 2});
+                   return;
+               }
+               del(checkStatus.map(function (d) {
+                   return d.id;
+               }));
+               break;
+            case 'exportData':
+                admin.confirm('纭畾瀵煎嚭Excel鍚�', {shadeClose: true}, function(){
+                    var titles=[];
+                    var fields=[];
+                    obj.config.cols[0].map(function (col) {
+                        if (col.type === 'normal' && col.hide === false && col.toolbar == null) {
+                            titles.push(col.title);
+                            fields.push(col.field);
+                        }
+                    });
+                    var exportData = {};
+                    $.each($('#search-box [name]').serializeArray(), function() {
+                        exportData[this.name] = this.value;
+                    });
+                    var param = {
+                        'basCrnpOpt': exportData,
+                        'fields': fields
+                    };
+                    $.ajax({
+                        url: baseUrl+"/basCrnpOpt/export/auth",
+                        headers: {'token': localStorage.getItem('token')},
+                        data: JSON.stringify(param),
+                        dataType:'json',
+                        contentType:'application/json;charset=UTF-8',
+                        method: 'POST',
+                        success: function (res) {
+                            layer.closeAll();
+                            if (res.code === 200) {
+                                table.exportFile(titles,res.data,'xls');
+                            } else if (res.code === 403) {
+                                top.location.href = baseUrl+"/";
+                            } else {
+                                layer.msg(res.msg, {icon: 2})
+                            }
+                        }
+                    });
+                });
+                break;
+        }
+    });
+
+    // 鐩戝惉琛屽伐鍏蜂簨浠�
+    table.on('tool(basCrnpOpt)', function(obj){
+        var data = obj.data;
+        switch (obj.event) {
+            case 'edit':
+                showEditModel(data);
+                break;
+            case "del":
+                del([data.id]);
+                break;
+        }
+    });
+
+    /* 寮圭獥 - 鏂板銆佷慨鏀� */
+    function showEditModel(mData) {
+        admin.open({
+            type: 1,
+            area: '600px',
+            title: (mData ? '淇敼' : '娣诲姞') + '璁㈠崟鐘舵��',
+            content: $('#editDialog').html(),
+            success: function (layero, dIndex) {
+                layDateRender(mData);
+                form.val('detail', mData);
+                form.on('submit(editSubmit)', function (data) {
+                    var loadIndex = layer.load(2);
+                    $.ajax({
+                        url: baseUrl+"/basCrnpOpt/"+(mData?'update':'add')+"/auth",
+                        headers: {'token': localStorage.getItem('token')},
+                        data: data.field,
+                        method: 'POST',
+                        success: function (res) {
+                            layer.close(loadIndex);
+                            if (res.code === 200){
+                                layer.close(dIndex);
+                                layer.msg(res.msg, {icon: 1});
+                                tableReload();
+                            } else if (res.code === 403){
+                                top.location.href = baseUrl+"/";
+                            }else {
+                                layer.msg(res.msg, {icon: 2});
+                            }
+                        }
+                    })
+                    return false;
+                });
+                $(layero).children('.layui-layer-content').css('overflow', 'visible');
+                layui.form.render('select');
+            }
+        });
+    }
+
+    /* 鍒犻櫎 */
+    function del(ids) {
+        layer.confirm('纭畾瑕佸垹闄ら�変腑鏁版嵁鍚楋紵', {
+            skin: 'layui-layer-admin',
+            shade: .1
+        }, function (i) {
+            layer.close(i);
+            var loadIndex = layer.load(2);
+            $.ajax({
+                url: baseUrl+"/basCrnpOpt/delete/auth",
+                headers: {'token': localStorage.getItem('token')},
+                data: {ids: ids},
+                method: 'POST',
+                success: function (res) {
+                    layer.close(loadIndex);
+                    if (res.code === 200){
+                        layer.msg(res.msg, {icon: 1});
+                        tableReload();
+                    } else if (res.code === 403){
+                        top.location.href = baseUrl+"/";
+                    } else {
+                        layer.msg(res.msg, {icon: 2});
+                    }
+                }
+            })
+        });
+    }
+
+    // 鎼滅储
+    form.on('submit(search)', function (data) {
+        pageCurr = 1;
+        tableReload(false);
+    });
+
+    // 閲嶇疆
+    form.on('submit(reset)', function (data) {
+        pageCurr = 1;
+        clearFormVal($('#search-box'));
+        tableReload(false);
+    });
+
+    // 鏃堕棿閫夋嫨鍣�
+    function layDateRender(data) {
+        setTimeout(function () {
+            layDate.render({
+                elem: '.layui-laydate-range'
+                ,type: 'datetime'
+                ,range: true
+            });
+            layDate.render({
+                elem: '#sendTime\\$',
+                type: 'datetime',
+                value: data!==undefined?data['sendTime\\$']:null
+            });
+            layDate.render({
+                elem: '#updateTime\\$',
+                type: 'datetime',
+                value: data!==undefined?data['updateTime\\$']:null
+            });
+
+        }, 300);
+    }
+    layDateRender();
+
+});
+
+// 鍏抽棴鍔ㄤ綔
+$(document).on('click','#data-detail-close', function () {
+    parent.layer.closeAll();
+});
+
+function tableReload(child) {
+    var searchData = {};
+    $.each($('#search-box [name]').serializeArray(), function() {
+        searchData[this.name] = this.value;
+    });
+    tableIns.reload({
+        where: searchData,
+        page: {curr: pageCurr}
+     });
+}
diff --git a/src/main/webapp/static/js/basLift/basLift.js b/src/main/webapp/static/js/basLift/basLift.js
deleted file mode 100644
index 80ae9a6..0000000
--- a/src/main/webapp/static/js/basLift/basLift.js
+++ /dev/null
@@ -1,258 +0,0 @@
-var pageCurr;
-layui.config({
-    base: baseUrl + "/static/layui/lay/modules/"
-}).use(['table','laydate', 'form', 'admin'], function(){
-    var table = layui.table;
-    var $ = layui.jquery;
-    var layer = layui.layer;
-    var layDate = layui.laydate;
-    var form = layui.form;
-    var admin = layui.admin;
-
-    // 鏁版嵁娓叉煋
-    tableIns = table.render({
-        elem: '#basLift',
-        headers: {token: localStorage.getItem('token')},
-        url: baseUrl+'/basLift/list/auth',
-        page: true,
-        limit: 15,
-        limits: [15, 30, 50, 100, 200, 500],
-        toolbar: '#toolbar',
-        cellMinWidth: 50,
-        height: 'full-120',
-        cols: [[
-            {type: 'checkbox'}
-            ,{field: 'liftNo', align: 'center',title: '鎻愬崌鏈哄彿'}
-            ,{field: 'status', align: 'center',title: '褰撳墠浠诲姟鐘舵��'}
-            ,{field: 'wrkNo', align: 'center',title: '浠诲姟鍙�'}
-            ,{field: 'point', align: 'center',title: '鎻愬崌鏈哄潗鏍�'}
-            ,{field: 'stationList', align: 'center',title: '绔欑偣鍒楄〃'}
-            // ,{field: 'updateTime$', align: 'center',title: '淇敼鏃堕棿'}
-            // ,{field: 'updateBy$', align: 'center',title: '淇敼浜哄憳'}
-            ,{field: 'memo', align: 'center',title: '澶囨敞'}
-            // ,{field: 'pakMk', align: 'center',title: '浣滀笟鏍囪'}
-
-            ,{fixed: 'right', title:'鎿嶄綔', align: 'center', toolbar: '#operate', width:120}
-        ]],
-        request: {
-            pageName: 'curr',
-            pageSize: 'limit'
-        },
-        parseData: function (res) {
-            return {
-                'code': res.code,
-                'msg': res.msg,
-                'count': res.data.total,
-                'data': res.data.records
-            }
-        },
-        response: {
-            statusCode: 200
-        },
-        done: function(res, curr, count) {
-            if (res.code === 403) {
-                top.location.href = baseUrl+"/";
-            }
-            pageCurr=curr;
-            limit();
-        }
-    });
-
-    // 鐩戝惉鎺掑簭浜嬩欢
-    table.on('sort(basLift)', function (obj) {
-        var searchData = {};
-        $.each($('#search-box [name]').serializeArray(), function() {
-            searchData[this.name] = this.value;
-        });
-        searchData['orderByField'] = obj.field;
-        searchData['orderByType'] = obj.type;
-        tableIns.reload({
-            where: searchData,
-            page: {curr: 1}
-        });
-    });
-
-    // 鐩戝惉澶村伐鍏锋爮浜嬩欢
-    table.on('toolbar(basLift)', function (obj) {
-        var checkStatus = table.checkStatus(obj.config.id).data;
-        switch(obj.event) {
-            case 'addData':
-                showEditModel();
-                break;
-            case 'deleteData':
-               if (checkStatus.length === 0) {
-                   layer.msg('璇烽�夋嫨瑕佸垹闄ょ殑鏁版嵁', {icon: 2});
-                   return;
-               }
-               del(checkStatus.map(function (d) {
-                   return d.liftNo;
-               }));
-               break;
-            case 'exportData':
-                admin.confirm('纭畾瀵煎嚭Excel鍚�', {shadeClose: true}, function(){
-                    var titles=[];
-                    var fields=[];
-                    obj.config.cols[0].map(function (col) {
-                        if (col.type === 'normal' && col.hide === false && col.toolbar == null) {
-                            titles.push(col.title);
-                            fields.push(col.field);
-                        }
-                    });
-                    var exportData = {};
-                    $.each($('#search-box [name]').serializeArray(), function() {
-                        exportData[this.name] = this.value;
-                    });
-                    var param = {
-                        'basLift': exportData,
-                        'fields': fields
-                    };
-                    $.ajax({
-                        url: baseUrl+"/basLift/export/auth",
-                        headers: {'token': localStorage.getItem('token')},
-                        data: JSON.stringify(param),
-                        dataType:'json',
-                        contentType:'application/json;charset=UTF-8',
-                        method: 'POST',
-                        success: function (res) {
-                            layer.closeAll();
-                            if (res.code === 200) {
-                                table.exportFile(titles,res.data,'xls');
-                            } else if (res.code === 403) {
-                                top.location.href = baseUrl+"/";
-                            } else {
-                                layer.msg(res.msg, {icon: 2})
-                            }
-                        }
-                    });
-                });
-                break;
-        }
-    });
-
-    // 鐩戝惉琛屽伐鍏蜂簨浠�
-    table.on('tool(basLift)', function(obj){
-        var data = obj.data;
-        switch (obj.event) {
-            case 'edit':
-                showEditModel(data);
-                break;
-            case "del":
-                del([data.liftNo]);
-                break;
-        }
-    });
-
-    /* 寮圭獥 - 鏂板銆佷慨鏀� */
-    function showEditModel(mData) {
-        admin.open({
-            type: 1,
-            area: '600px',
-            title: (mData ? '淇敼' : '娣诲姞') + '璁㈠崟鐘舵��',
-            content: $('#editDialog').html(),
-            success: function (layero, dIndex) {
-                layDateRender(mData);
-                form.val('detail', mData);
-                form.on('submit(editSubmit)', function (data) {
-                    var loadIndex = layer.load(2);
-                    $.ajax({
-                        url: baseUrl+"/basLift/"+(mData?'update':'add')+"/auth",
-                        headers: {'token': localStorage.getItem('token')},
-                        data: data.field,
-                        method: 'POST',
-                        success: function (res) {
-                            layer.close(loadIndex);
-                            if (res.code === 200){
-                                layer.close(dIndex);
-                                layer.msg(res.msg, {icon: 1});
-                                tableReload();
-                            } else if (res.code === 403){
-                                top.location.href = baseUrl+"/";
-                            }else {
-                                layer.msg(res.msg, {icon: 2});
-                            }
-                        }
-                    })
-                    return false;
-                });
-                $(layero).children('.layui-layer-content').css('overflow', 'visible');
-                layui.form.render('select');
-            }
-        });
-    }
-
-    /* 鍒犻櫎 */
-    function del(ids) {
-        layer.confirm('纭畾瑕佸垹闄ら�変腑鏁版嵁鍚楋紵', {
-            skin: 'layui-layer-admin',
-            shade: .1
-        }, function (i) {
-            layer.close(i);
-            var loadIndex = layer.load(2);
-            $.ajax({
-                url: baseUrl+"/basLift/delete/auth",
-                headers: {'token': localStorage.getItem('token')},
-                data: {ids: ids},
-                method: 'POST',
-                success: function (res) {
-                    layer.close(loadIndex);
-                    if (res.code === 200){
-                        layer.msg(res.msg, {icon: 1});
-                        tableReload();
-                    } else if (res.code === 403){
-                        top.location.href = baseUrl+"/";
-                    } else {
-                        layer.msg(res.msg, {icon: 2});
-                    }
-                }
-            })
-        });
-    }
-
-    // 鎼滅储
-    form.on('submit(search)', function (data) {
-        pageCurr = 1;
-        tableReload(false);
-    });
-
-    // 閲嶇疆
-    form.on('submit(reset)', function (data) {
-        pageCurr = 1;
-        clearFormVal($('#search-box'));
-        tableReload(false);
-    });
-
-    // 鏃堕棿閫夋嫨鍣�
-    function layDateRender(data) {
-        setTimeout(function () {
-            layDate.render({
-                elem: '.layui-laydate-range'
-                ,type: 'datetime'
-                ,range: true
-            });
-            layDate.render({
-                elem: '#updateTime\\$',
-                type: 'datetime',
-                value: data!==undefined?data['updateTime\\$']:null
-            });
-
-        }, 300);
-    }
-    layDateRender();
-
-});
-
-// 鍏抽棴鍔ㄤ綔
-$(document).on('click','#data-detail-close', function () {
-    parent.layer.closeAll();
-});
-
-function tableReload(child) {
-    var searchData = {};
-    $.each($('#search-box [name]').serializeArray(), function() {
-        searchData[this.name] = this.value;
-    });
-    tableIns.reload({
-        where: searchData,
-        page: {curr: pageCurr}
-     });
-}
diff --git a/src/main/webapp/static/js/basLiftErr/basLiftErr.js b/src/main/webapp/static/js/basLiftErr/basLiftErr.js
deleted file mode 100644
index 8014559..0000000
--- a/src/main/webapp/static/js/basLiftErr/basLiftErr.js
+++ /dev/null
@@ -1,260 +0,0 @@
-var pageCurr;
-layui.config({
-    base: baseUrl + "/static/layui/lay/modules/"
-}).use(['table','laydate', 'form', 'admin'], function(){
-    var table = layui.table;
-    var $ = layui.jquery;
-    var layer = layui.layer;
-    var layDate = layui.laydate;
-    var form = layui.form;
-    var admin = layui.admin;
-
-    // 鏁版嵁娓叉煋
-    tableIns = table.render({
-        elem: '#basLiftErr',
-        headers: {token: localStorage.getItem('token')},
-        url: baseUrl+'/basLiftErr/list/auth',
-        page: true,
-        limit: 15,
-        limits: [15, 30, 50, 100, 200, 500],
-        toolbar: '#toolbar',
-        cellMinWidth: 50,
-        height: 'full-120',
-        cols: [[
-            {type: 'checkbox'}
-            ,{field: 'errorCode', align: 'center',title: '寮傚父鐮�'}
-            ,{field: 'errName', align: 'center',title: '寮傚父'}
-            ,{field: 'modiUser$', align: 'center',title: '淇敼浜哄憳'}
-            ,{field: 'modiTime$', align: 'center',title: '淇敼鏃堕棿'}
-            ,{field: 'appeUser$', align: 'center',title: '娣诲姞浜哄憳'}
-            ,{field: 'appeTime$', align: 'center',title: '娣诲姞鏃堕棿'}
-
-            ,{fixed: 'right', title:'鎿嶄綔', align: 'center', toolbar: '#operate', width:120}
-        ]],
-        request: {
-            pageName: 'curr',
-            pageSize: 'limit'
-        },
-        parseData: function (res) {
-            return {
-                'code': res.code,
-                'msg': res.msg,
-                'count': res.data.total,
-                'data': res.data.records
-            }
-        },
-        response: {
-            statusCode: 200
-        },
-        done: function(res, curr, count) {
-            if (res.code === 403) {
-                top.location.href = baseUrl+"/";
-            }
-            pageCurr=curr;
-            limit();
-        }
-    });
-
-    // 鐩戝惉鎺掑簭浜嬩欢
-    table.on('sort(basLiftErr)', function (obj) {
-        var searchData = {};
-        $.each($('#search-box [name]').serializeArray(), function() {
-            searchData[this.name] = this.value;
-        });
-        searchData['orderByField'] = obj.field;
-        searchData['orderByType'] = obj.type;
-        tableIns.reload({
-            where: searchData,
-            page: {curr: 1}
-        });
-    });
-
-    // 鐩戝惉澶村伐鍏锋爮浜嬩欢
-    table.on('toolbar(basLiftErr)', function (obj) {
-        var checkStatus = table.checkStatus(obj.config.id).data;
-        switch(obj.event) {
-            case 'addData':
-                showEditModel();
-                break;
-            case 'deleteData':
-               if (checkStatus.length === 0) {
-                   layer.msg('璇烽�夋嫨瑕佸垹闄ょ殑鏁版嵁', {icon: 2});
-                   return;
-               }
-               del(checkStatus.map(function (d) {
-                   return d.errorCode;
-               }));
-               break;
-            case 'exportData':
-                admin.confirm('纭畾瀵煎嚭Excel鍚�', {shadeClose: true}, function(){
-                    var titles=[];
-                    var fields=[];
-                    obj.config.cols[0].map(function (col) {
-                        if (col.type === 'normal' && col.hide === false && col.toolbar == null) {
-                            titles.push(col.title);
-                            fields.push(col.field);
-                        }
-                    });
-                    var exportData = {};
-                    $.each($('#search-box [name]').serializeArray(), function() {
-                        exportData[this.name] = this.value;
-                    });
-                    var param = {
-                        'basLiftErr': exportData,
-                        'fields': fields
-                    };
-                    $.ajax({
-                        url: baseUrl+"/basLiftErr/export/auth",
-                        headers: {'token': localStorage.getItem('token')},
-                        data: JSON.stringify(param),
-                        dataType:'json',
-                        contentType:'application/json;charset=UTF-8',
-                        method: 'POST',
-                        success: function (res) {
-                            layer.closeAll();
-                            if (res.code === 200) {
-                                table.exportFile(titles,res.data,'xls');
-                            } else if (res.code === 403) {
-                                top.location.href = baseUrl+"/";
-                            } else {
-                                layer.msg(res.msg, {icon: 2})
-                            }
-                        }
-                    });
-                });
-                break;
-        }
-    });
-
-    // 鐩戝惉琛屽伐鍏蜂簨浠�
-    table.on('tool(basLiftErr)', function(obj){
-        var data = obj.data;
-        switch (obj.event) {
-            case 'edit':
-                showEditModel(data);
-                break;
-            case "del":
-                del([data.errorCode]);
-                break;
-        }
-    });
-
-    /* 寮圭獥 - 鏂板銆佷慨鏀� */
-    function showEditModel(mData) {
-        admin.open({
-            type: 1,
-            area: '600px',
-            title: (mData ? '淇敼' : '娣诲姞') + '鎻愬崌鏈哄紓甯哥爜',
-            content: $('#editDialog').html(),
-            success: function (layero, dIndex) {
-                layDateRender(mData);
-                form.val('detail', mData);
-                form.on('submit(editSubmit)', function (data) {
-                    var loadIndex = layer.load(2);
-                    $.ajax({
-                        url: baseUrl+"/basLiftErr/"+(mData?'update':'add')+"/auth",
-                        headers: {'token': localStorage.getItem('token')},
-                        data: data.field,
-                        method: 'POST',
-                        success: function (res) {
-                            layer.close(loadIndex);
-                            if (res.code === 200){
-                                layer.close(dIndex);
-                                layer.msg(res.msg, {icon: 1});
-                                tableReload();
-                            } else if (res.code === 403){
-                                top.location.href = baseUrl+"/";
-                            }else {
-                                layer.msg(res.msg, {icon: 2});
-                            }
-                        }
-                    })
-                    return false;
-                });
-                $(layero).children('.layui-layer-content').css('overflow', 'visible');
-                layui.form.render('select');
-            }
-        });
-    }
-
-    /* 鍒犻櫎 */
-    function del(ids) {
-        layer.confirm('纭畾瑕佸垹闄ら�変腑鏁版嵁鍚楋紵', {
-            skin: 'layui-layer-admin',
-            shade: .1
-        }, function (i) {
-            layer.close(i);
-            var loadIndex = layer.load(2);
-            $.ajax({
-                url: baseUrl+"/basLiftErr/delete/auth",
-                headers: {'token': localStorage.getItem('token')},
-                data: {ids: ids},
-                method: 'POST',
-                success: function (res) {
-                    layer.close(loadIndex);
-                    if (res.code === 200){
-                        layer.msg(res.msg, {icon: 1});
-                        tableReload();
-                    } else if (res.code === 403){
-                        top.location.href = baseUrl+"/";
-                    } else {
-                        layer.msg(res.msg, {icon: 2});
-                    }
-                }
-            })
-        });
-    }
-
-    // 鎼滅储
-    form.on('submit(search)', function (data) {
-        pageCurr = 1;
-        tableReload(false);
-    });
-
-    // 閲嶇疆
-    form.on('submit(reset)', function (data) {
-        pageCurr = 1;
-        clearFormVal($('#search-box'));
-        tableReload(false);
-    });
-
-    // 鏃堕棿閫夋嫨鍣�
-    function layDateRender(data) {
-        setTimeout(function () {
-            layDate.render({
-                elem: '.layui-laydate-range'
-                ,type: 'datetime'
-                ,range: true
-            });
-            layDate.render({
-                elem: '#modiTime\\$',
-                type: 'datetime',
-                value: data!==undefined?data['modiTime\\$']:null
-            });
-            layDate.render({
-                elem: '#appeTime\\$',
-                type: 'datetime',
-                value: data!==undefined?data['appeTime\\$']:null
-            });
-
-        }, 300);
-    }
-    layDateRender();
-
-});
-
-// 鍏抽棴鍔ㄤ綔
-$(document).on('click','#data-detail-close', function () {
-    parent.layer.closeAll();
-});
-
-function tableReload(child) {
-    var searchData = {};
-    $.each($('#search-box [name]').serializeArray(), function() {
-        searchData[this.name] = this.value;
-    });
-    tableIns.reload({
-        where: searchData,
-        page: {curr: pageCurr}
-     });
-}
diff --git a/src/main/webapp/static/js/basLiftErrLog/basLiftErrLog.js b/src/main/webapp/static/js/basLiftErrLog/basLiftErrLog.js
deleted file mode 100644
index 6406a58..0000000
--- a/src/main/webapp/static/js/basLiftErrLog/basLiftErrLog.js
+++ /dev/null
@@ -1,287 +0,0 @@
-var pageCurr;
-layui.config({
-    base: baseUrl + "/static/layui/lay/modules/"
-}).use(['table','laydate', 'form', 'admin'], function(){
-    var table = layui.table;
-    var $ = layui.jquery;
-    var layer = layui.layer;
-    var layDate = layui.laydate;
-    var form = layui.form;
-    var admin = layui.admin;
-
-    // 鏁版嵁娓叉煋
-    tableIns = table.render({
-        elem: '#basLiftErrLog',
-        headers: {token: localStorage.getItem('token')},
-        url: baseUrl+'/basLiftErrLog/list/auth',
-        page: true,
-        limit: 15,
-        limits: [15, 30, 50, 100, 200, 500],
-        toolbar: '#toolbar',
-        cellMinWidth: 50,
-        height: 'full-120',
-        cols: [[
-            // {type: 'checkbox'}
-            {field: 'id', align: 'center',title: '缂栧彿'}
-            // ,{field: 'uuid', align: 'center',title: '缂栧彿'}
-            ,{field: 'wrkNo', align: 'center',title: '宸ヤ綔鍙�'}
-            ,{field: 'startTime$', align: 'center',title: '鍙戠敓鏃堕棿'}
-            ,{field: 'endTime$', align: 'center',title: '缁撴潫鏃堕棿'}
-            ,{field: 'wrkSts$', align: 'center',title: '宸ヤ綔鐘舵��'}
-            ,{field: 'ioType$', align: 'center',title: '鍏ュ嚭搴撶被鍨�'}
-            ,{field: 'liftNo', align: 'center',title: '鎻愬崌鏈�'}
-            ,{field: 'plcNo', align: 'center',title: 'plc'}
-            ,{field: 'locNo', align: 'center',title: '鐩爣搴撲綅'}
-            ,{field: 'staNo', align: 'center',title: '鐩爣绔�'}
-            ,{field: 'sourceStaNo', align: 'center',title: '婧愮珯'}
-            ,{field: 'sourceLocNo', align: 'center',title: '婧愬簱浣�'}
-            ,{field: 'barcode', align: 'center',title: '鏉$爜'}
-            ,{field: 'errCode', align: 'center',title: '寮傚父鐮�'}
-            ,{field: 'error', align: 'center',title: '寮傚父'}
-            ,{field: 'status$', align: 'center',title: '寮傚父鎯呭喌'}
-            ,{field: 'systemStatus', align: 'center',title: '绯荤粺鐘舵��'}
-            ,{field: 'createTime$', align: 'center',title: '娣诲姞鏃堕棿'}
-            ,{field: 'createBy$', align: 'center',title: '娣诲姞浜哄憳'}
-            ,{field: 'updateTime$', align: 'center',title: '淇敼鏃堕棿'}
-            ,{field: 'updateBy$', align: 'center',title: '淇敼浜哄憳'}
-            ,{field: 'memo', align: 'center',title: '澶囨敞'}
-
-            // ,{fixed: 'right', title:'鎿嶄綔', align: 'center', toolbar: '#operate', width:120}
-        ]],
-        request: {
-            pageName: 'curr',
-            pageSize: 'limit'
-        },
-        parseData: function (res) {
-            return {
-                'code': res.code,
-                'msg': res.msg,
-                'count': res.data.total,
-                'data': res.data.records
-            }
-        },
-        response: {
-            statusCode: 200
-        },
-        done: function(res, curr, count) {
-            if (res.code === 403) {
-                top.location.href = baseUrl+"/";
-            }
-            pageCurr=curr;
-            limit();
-        }
-    });
-
-    // 鐩戝惉鎺掑簭浜嬩欢
-    table.on('sort(basLiftErrLog)', function (obj) {
-        var searchData = {};
-        $.each($('#search-box [name]').serializeArray(), function() {
-            searchData[this.name] = this.value;
-        });
-        searchData['orderByField'] = obj.field;
-        searchData['orderByType'] = obj.type;
-        tableIns.reload({
-            where: searchData,
-            page: {curr: 1}
-        });
-    });
-
-    // 鐩戝惉澶村伐鍏锋爮浜嬩欢
-    table.on('toolbar(basLiftErrLog)', function (obj) {
-        var checkStatus = table.checkStatus(obj.config.id).data;
-        switch(obj.event) {
-            case 'addData':
-                showEditModel();
-                break;
-            case 'deleteData':
-               if (checkStatus.length === 0) {
-                   layer.msg('璇烽�夋嫨瑕佸垹闄ょ殑鏁版嵁', {icon: 2});
-                   return;
-               }
-               del(checkStatus.map(function (d) {
-                   return d.id;
-               }));
-               break;
-            case 'exportData':
-                admin.confirm('纭畾瀵煎嚭Excel鍚�', {shadeClose: true}, function(){
-                    var titles=[];
-                    var fields=[];
-                    obj.config.cols[0].map(function (col) {
-                        if (col.type === 'normal' && col.hide === false && col.toolbar == null) {
-                            titles.push(col.title);
-                            fields.push(col.field);
-                        }
-                    });
-                    var exportData = {};
-                    $.each($('#search-box [name]').serializeArray(), function() {
-                        exportData[this.name] = this.value;
-                    });
-                    var param = {
-                        'basLiftErrLog': exportData,
-                        'fields': fields
-                    };
-                    $.ajax({
-                        url: baseUrl+"/basLiftErrLog/export/auth",
-                        headers: {'token': localStorage.getItem('token')},
-                        data: JSON.stringify(param),
-                        dataType:'json',
-                        contentType:'application/json;charset=UTF-8',
-                        method: 'POST',
-                        success: function (res) {
-                            layer.closeAll();
-                            if (res.code === 200) {
-                                table.exportFile(titles,res.data,'xls');
-                            } else if (res.code === 403) {
-                                top.location.href = baseUrl+"/";
-                            } else {
-                                layer.msg(res.msg, {icon: 2})
-                            }
-                        }
-                    });
-                });
-                break;
-        }
-    });
-
-    // 鐩戝惉琛屽伐鍏蜂簨浠�
-    table.on('tool(basLiftErrLog)', function(obj){
-        var data = obj.data;
-        switch (obj.event) {
-            case 'edit':
-                showEditModel(data);
-                break;
-            case "del":
-                del([data.id]);
-                break;
-        }
-    });
-
-    /* 寮圭獥 - 鏂板銆佷慨鏀� */
-    function showEditModel(mData) {
-        admin.open({
-            type: 1,
-            area: '600px',
-            title: (mData ? '淇敼' : '娣诲姞') + '璁㈠崟鐘舵��',
-            content: $('#editDialog').html(),
-            success: function (layero, dIndex) {
-                layDateRender(mData);
-                form.val('detail', mData);
-                form.on('submit(editSubmit)', function (data) {
-                    var loadIndex = layer.load(2);
-                    $.ajax({
-                        url: baseUrl+"/basLiftErrLog/"+(mData?'update':'add')+"/auth",
-                        headers: {'token': localStorage.getItem('token')},
-                        data: data.field,
-                        method: 'POST',
-                        success: function (res) {
-                            layer.close(loadIndex);
-                            if (res.code === 200){
-                                layer.close(dIndex);
-                                layer.msg(res.msg, {icon: 1});
-                                tableReload();
-                            } else if (res.code === 403){
-                                top.location.href = baseUrl+"/";
-                            }else {
-                                layer.msg(res.msg, {icon: 2});
-                            }
-                        }
-                    })
-                    return false;
-                });
-                $(layero).children('.layui-layer-content').css('overflow', 'visible');
-                layui.form.render('select');
-            }
-        });
-    }
-
-    /* 鍒犻櫎 */
-    function del(ids) {
-        layer.confirm('纭畾瑕佸垹闄ら�変腑鏁版嵁鍚楋紵', {
-            skin: 'layui-layer-admin',
-            shade: .1
-        }, function (i) {
-            layer.close(i);
-            var loadIndex = layer.load(2);
-            $.ajax({
-                url: baseUrl+"/basLiftErrLog/delete/auth",
-                headers: {'token': localStorage.getItem('token')},
-                data: {ids: ids},
-                method: 'POST',
-                success: function (res) {
-                    layer.close(loadIndex);
-                    if (res.code === 200){
-                        layer.msg(res.msg, {icon: 1});
-                        tableReload();
-                    } else if (res.code === 403){
-                        top.location.href = baseUrl+"/";
-                    } else {
-                        layer.msg(res.msg, {icon: 2});
-                    }
-                }
-            })
-        });
-    }
-
-    // 鎼滅储
-    form.on('submit(search)', function (data) {
-        pageCurr = 1;
-        tableReload(false);
-    });
-
-    // 閲嶇疆
-    form.on('submit(reset)', function (data) {
-        pageCurr = 1;
-        clearFormVal($('#search-box'));
-        tableReload(false);
-    });
-
-    // 鏃堕棿閫夋嫨鍣�
-    function layDateRender(data) {
-        setTimeout(function () {
-            layDate.render({
-                elem: '.layui-laydate-range'
-                ,type: 'datetime'
-                ,range: true
-            });
-            layDate.render({
-                elem: '#startTime\\$',
-                type: 'datetime',
-                value: data!==undefined?data['startTime\\$']:null
-            });
-            layDate.render({
-                elem: '#endTime\\$',
-                type: 'datetime',
-                value: data!==undefined?data['endTime\\$']:null
-            });
-            layDate.render({
-                elem: '#createTime\\$',
-                type: 'datetime',
-                value: data!==undefined?data['createTime\\$']:null
-            });
-            layDate.render({
-                elem: '#updateTime\\$',
-                type: 'datetime',
-                value: data!==undefined?data['updateTime\\$']:null
-            });
-
-        }, 300);
-    }
-    layDateRender();
-
-});
-
-// 鍏抽棴鍔ㄤ綔
-$(document).on('click','#data-detail-close', function () {
-    parent.layer.closeAll();
-});
-
-function tableReload(child) {
-    var searchData = {};
-    $.each($('#search-box [name]').serializeArray(), function() {
-        searchData[this.name] = this.value;
-    });
-    tableIns.reload({
-        where: searchData,
-        page: {curr: pageCurr}
-     });
-}
diff --git a/src/main/webapp/static/js/basLiftOpt/basLiftOpt.js b/src/main/webapp/static/js/basLiftOpt/basLiftOpt.js
deleted file mode 100644
index 977e32f..0000000
--- a/src/main/webapp/static/js/basLiftOpt/basLiftOpt.js
+++ /dev/null
@@ -1,264 +0,0 @@
-var pageCurr;
-layui.config({
-    base: baseUrl + "/static/layui/lay/modules/"
-}).use(['table','laydate', 'form', 'admin'], function(){
-    var table = layui.table;
-    var $ = layui.jquery;
-    var layer = layui.layer;
-    var layDate = layui.laydate;
-    var form = layui.form;
-    var admin = layui.admin;
-
-    // 鏁版嵁娓叉煋
-    tableIns = table.render({
-        elem: '#basLiftOpt',
-        headers: {token: localStorage.getItem('token')},
-        url: baseUrl+'/basLiftOpt/list/auth',
-        page: true,
-        limit: 15,
-        limits: [15, 30, 50, 100, 200, 500],
-        toolbar: '#toolbar',
-        cellMinWidth: 50,
-        height: 'full-120',
-        cols: [[
-            // {type: 'checkbox'}
-            {field: 'id', align: 'center',title: '缂栧彿'}
-            ,{field: 'wrkNo', align: 'center',title: '浠诲姟鍙�'}
-            ,{field: 'liftNo', align: 'center',title: '鎻愬崌鏈哄彿'}
-            ,{field: 'command', align: 'center',title: '鍛戒护'}
-            ,{field: 'systemStatus', align: 'center',title: '绯荤粺鐘舵��'}
-            ,{field: 'deviceWrk', align: 'center',title: '璁惧宸ヤ綔鍙�'}
-            ,{field: 'sendTime$', align: 'center',title: '涓嬪彂鏃堕棿'}
-            ,{field: 'updateTime$', align: 'center',title: '淇敼鏃堕棿'}
-            ,{field: 'updateBy$', align: 'center',title: '淇敼浜哄憳'}
-            ,{field: 'memo', align: 'center',title: '澶囨敞'}
-
-            // ,{fixed: 'right', title:'鎿嶄綔', align: 'center', toolbar: '#operate', width:120}
-        ]],
-        request: {
-            pageName: 'curr',
-            pageSize: 'limit'
-        },
-        parseData: function (res) {
-            return {
-                'code': res.code,
-                'msg': res.msg,
-                'count': res.data.total,
-                'data': res.data.records
-            }
-        },
-        response: {
-            statusCode: 200
-        },
-        done: function(res, curr, count) {
-            if (res.code === 403) {
-                top.location.href = baseUrl+"/";
-            }
-            pageCurr=curr;
-            limit();
-        }
-    });
-
-    // 鐩戝惉鎺掑簭浜嬩欢
-    table.on('sort(basLiftOpt)', function (obj) {
-        var searchData = {};
-        $.each($('#search-box [name]').serializeArray(), function() {
-            searchData[this.name] = this.value;
-        });
-        searchData['orderByField'] = obj.field;
-        searchData['orderByType'] = obj.type;
-        tableIns.reload({
-            where: searchData,
-            page: {curr: 1}
-        });
-    });
-
-    // 鐩戝惉澶村伐鍏锋爮浜嬩欢
-    table.on('toolbar(basLiftOpt)', function (obj) {
-        var checkStatus = table.checkStatus(obj.config.id).data;
-        switch(obj.event) {
-            case 'addData':
-                showEditModel();
-                break;
-            case 'deleteData':
-               if (checkStatus.length === 0) {
-                   layer.msg('璇烽�夋嫨瑕佸垹闄ょ殑鏁版嵁', {icon: 2});
-                   return;
-               }
-               del(checkStatus.map(function (d) {
-                   return d.id;
-               }));
-               break;
-            case 'exportData':
-                admin.confirm('纭畾瀵煎嚭Excel鍚�', {shadeClose: true}, function(){
-                    var titles=[];
-                    var fields=[];
-                    obj.config.cols[0].map(function (col) {
-                        if (col.type === 'normal' && col.hide === false && col.toolbar == null) {
-                            titles.push(col.title);
-                            fields.push(col.field);
-                        }
-                    });
-                    var exportData = {};
-                    $.each($('#search-box [name]').serializeArray(), function() {
-                        exportData[this.name] = this.value;
-                    });
-                    var param = {
-                        'basLiftOpt': exportData,
-                        'fields': fields
-                    };
-                    $.ajax({
-                        url: baseUrl+"/basLiftOpt/export/auth",
-                        headers: {'token': localStorage.getItem('token')},
-                        data: JSON.stringify(param),
-                        dataType:'json',
-                        contentType:'application/json;charset=UTF-8',
-                        method: 'POST',
-                        success: function (res) {
-                            layer.closeAll();
-                            if (res.code === 200) {
-                                table.exportFile(titles,res.data,'xls');
-                            } else if (res.code === 403) {
-                                top.location.href = baseUrl+"/";
-                            } else {
-                                layer.msg(res.msg, {icon: 2})
-                            }
-                        }
-                    });
-                });
-                break;
-        }
-    });
-
-    // 鐩戝惉琛屽伐鍏蜂簨浠�
-    table.on('tool(basLiftOpt)', function(obj){
-        var data = obj.data;
-        switch (obj.event) {
-            case 'edit':
-                showEditModel(data);
-                break;
-            case "del":
-                del([data.id]);
-                break;
-        }
-    });
-
-    /* 寮圭獥 - 鏂板銆佷慨鏀� */
-    function showEditModel(mData) {
-        admin.open({
-            type: 1,
-            area: '600px',
-            title: (mData ? '淇敼' : '娣诲姞') + '璁㈠崟鐘舵��',
-            content: $('#editDialog').html(),
-            success: function (layero, dIndex) {
-                layDateRender(mData);
-                form.val('detail', mData);
-                form.on('submit(editSubmit)', function (data) {
-                    var loadIndex = layer.load(2);
-                    $.ajax({
-                        url: baseUrl+"/basLiftOpt/"+(mData?'update':'add')+"/auth",
-                        headers: {'token': localStorage.getItem('token')},
-                        data: data.field,
-                        method: 'POST',
-                        success: function (res) {
-                            layer.close(loadIndex);
-                            if (res.code === 200){
-                                layer.close(dIndex);
-                                layer.msg(res.msg, {icon: 1});
-                                tableReload();
-                            } else if (res.code === 403){
-                                top.location.href = baseUrl+"/";
-                            }else {
-                                layer.msg(res.msg, {icon: 2});
-                            }
-                        }
-                    })
-                    return false;
-                });
-                $(layero).children('.layui-layer-content').css('overflow', 'visible');
-                layui.form.render('select');
-            }
-        });
-    }
-
-    /* 鍒犻櫎 */
-    function del(ids) {
-        layer.confirm('纭畾瑕佸垹闄ら�変腑鏁版嵁鍚楋紵', {
-            skin: 'layui-layer-admin',
-            shade: .1
-        }, function (i) {
-            layer.close(i);
-            var loadIndex = layer.load(2);
-            $.ajax({
-                url: baseUrl+"/basLiftOpt/delete/auth",
-                headers: {'token': localStorage.getItem('token')},
-                data: {ids: ids},
-                method: 'POST',
-                success: function (res) {
-                    layer.close(loadIndex);
-                    if (res.code === 200){
-                        layer.msg(res.msg, {icon: 1});
-                        tableReload();
-                    } else if (res.code === 403){
-                        top.location.href = baseUrl+"/";
-                    } else {
-                        layer.msg(res.msg, {icon: 2});
-                    }
-                }
-            })
-        });
-    }
-
-    // 鎼滅储
-    form.on('submit(search)', function (data) {
-        pageCurr = 1;
-        tableReload(false);
-    });
-
-    // 閲嶇疆
-    form.on('submit(reset)', function (data) {
-        pageCurr = 1;
-        clearFormVal($('#search-box'));
-        tableReload(false);
-    });
-
-    // 鏃堕棿閫夋嫨鍣�
-    function layDateRender(data) {
-        setTimeout(function () {
-            layDate.render({
-                elem: '.layui-laydate-range'
-                ,type: 'datetime'
-                ,range: true
-            });
-            layDate.render({
-                elem: '#sendTime\\$',
-                type: 'datetime',
-                value: data!==undefined?data['sendTime\\$']:null
-            });
-            layDate.render({
-                elem: '#updateTime\\$',
-                type: 'datetime',
-                value: data!==undefined?data['updateTime\\$']:null
-            });
-
-        }, 300);
-    }
-    layDateRender();
-
-});
-
-// 鍏抽棴鍔ㄤ綔
-$(document).on('click','#data-detail-close', function () {
-    parent.layer.closeAll();
-});
-
-function tableReload(child) {
-    var searchData = {};
-    $.each($('#search-box [name]').serializeArray(), function() {
-        searchData[this.name] = this.value;
-    });
-    tableIns.reload({
-        where: searchData,
-        page: {curr: pageCurr}
-     });
-}
diff --git a/src/main/webapp/static/js/basShuttle/basShuttle.js b/src/main/webapp/static/js/basShuttle/basShuttle.js
deleted file mode 100644
index ace1ac3..0000000
--- a/src/main/webapp/static/js/basShuttle/basShuttle.js
+++ /dev/null
@@ -1,399 +0,0 @@
-var pageCurr;
-layui.config({
-    base: baseUrl + "/static/layui/lay/modules/"
-}).use(['table','laydate', 'form', 'admin'], function(){
-    var table = layui.table;
-    var $ = layui.jquery;
-    var layer = layui.layer;
-    var layDate = layui.laydate;
-    var form = layui.form;
-    var admin = layui.admin;
-
-    // 鏁版嵁娓叉煋
-    tableIns = table.render({
-        elem: '#basShuttle',
-        headers: {token: localStorage.getItem('token')},
-        url: baseUrl+'/basShuttle/list/auth',
-        page: true,
-        limit: 15,
-        limits: [15, 30, 50, 100, 200, 500],
-        toolbar: '#toolbar',
-        cellMinWidth: 50,
-        height: 'full-120',
-        cols: [[
-            {type: 'checkbox'}
-            ,{field: 'shuttleNo', align: 'center',title: '鍥涘悜绌挎杞﹀彿', width: 120}
-            ,{field: 'status$', align: 'center',title: '鐘舵��'}
-            ,{field: 'idleLoc', align: 'center',title: '寰呮満浣�'}
-            ,{field: 'chargeLine', align: 'center',title: '鐢甸噺绾�'}
-            ,{field: 'suggestChargeLine', align: 'center',title: '寤鸿鐢甸噺绾�'}
-            // ,{field: 'createBy$', align: 'center',title: '娣诲姞浜哄憳'}
-            // ,{field: 'createTime$', align: 'center',title: '娣诲姞鏃堕棿'}
-            // ,{field: 'updateBy$', align: 'center',title: '淇敼浜哄憳'}
-            // ,{field: 'updateTime$', align: 'center',title: '淇敼鏃堕棿'}
-            ,{field: 'memo', align: 'center',title: '澶囨敞'}
-
-            ,{fixed: 'right', title:'鎿嶄綔', align: 'center', toolbar: '#operate', width:120}
-        ]],
-        request: {
-            pageName: 'curr',
-            pageSize: 'limit'
-        },
-        parseData: function (res) {
-            return {
-                'code': res.code,
-                'msg': res.msg,
-                'count': res.data.total,
-                'data': res.data.records
-            }
-        },
-        response: {
-            statusCode: 200
-        },
-        done: function(res, curr, count) {
-            if (res.code === 403) {
-                top.location.href = baseUrl+"/";
-            }
-            pageCurr=curr;
-            limit();
-        }
-    });
-
-    // 鐩戝惉鎺掑簭浜嬩欢
-    table.on('sort(basShuttle)', function (obj) {
-        var searchData = {};
-        $.each($('#search-box [name]').serializeArray(), function() {
-            searchData[this.name] = this.value;
-        });
-        searchData['orderByField'] = obj.field;
-        searchData['orderByType'] = obj.type;
-        tableIns.reload({
-            where: searchData,
-            page: {curr: 1}
-        });
-    });
-
-    // 鐩戝惉澶村伐鍏锋爮浜嬩欢
-    table.on('toolbar(basShuttle)', function (obj) {
-        var checkStatus = table.checkStatus(obj.config.id).data;
-        switch(obj.event) {
-            case 'addData':
-                showEditModel();
-                break;
-            case 'deleteData':
-               if (checkStatus.length === 0) {
-                   layer.msg('璇烽�夋嫨瑕佸垹闄ょ殑鏁版嵁', {icon: 2});
-                   return;
-               }
-               del(checkStatus.map(function (d) {
-                   return d.shuttleNo;
-               }));
-               break;
-            case 'oneUpdateCharge':
-                showUpdateCharge();
-                break;
-            case 'shuttleGather':
-                shuttleNos = []
-                checkStatus.map(function (d) {
-                    shuttleNos.push(d.shuttleNo)
-                })
-
-                admin.confirm('纭畾闆嗗悎鍏ㄩ儴灏忚溅鍚楋紵', {shadeClose: true}, function(){
-                    $.ajax({
-                        url: baseUrl+"/openapi/shuttleGather",
-                        headers: {'token': localStorage.getItem('token')},
-                        dataType:'json',
-                        data: JSON.stringify({
-                            shuttleNos: shuttleNos
-                        }),
-                        contentType:'application/json;charset=UTF-8',
-                        method: 'POST',
-                        success: function (res) {
-                            layer.closeAll();
-                            if (res.code === 200) {
-                                layer.msg("璇锋眰鎴愬姛", {icon: 1});
-                                tableReload();
-                            } else if (res.code === 403) {
-                                top.location.href = baseUrl+"/";
-                            } else {
-                                layer.msg(res.msg, {icon: 2})
-                            }
-                        }
-                    });
-                });
-                break;
-            case 'demoOpen':
-                shuttleNos = []
-                checkStatus.map(function (d) {
-                    shuttleNos.push(d.shuttleNo)
-                })
-
-                admin.confirm('纭畾寮�鍚紨绀烘ā寮忓悧锛�', {shadeClose: true}, function(){
-                    $.ajax({
-                        url: baseUrl+"/openapi/shuttleDemo",
-                        headers: {'token': localStorage.getItem('token')},
-                        dataType:'json',
-                        data: JSON.stringify({
-                            shuttleNos: shuttleNos,
-                            status: 1
-                        }),
-                        contentType:'application/json;charset=UTF-8',
-                        method: 'POST',
-                        success: function (res) {
-                            layer.closeAll();
-                            if (res.code === 200) {
-                                layer.msg("璇锋眰鎴愬姛", {icon: 1});
-                                tableReload();
-                            } else if (res.code === 403) {
-                                top.location.href = baseUrl+"/";
-                            } else {
-                                layer.msg(res.msg, {icon: 2})
-                            }
-                        }
-                    });
-                });
-                break;
-            case 'demoClose':
-                shuttleNos = []
-                checkStatus.map(function (d) {
-                    shuttleNos.push(d.shuttleNo)
-                })
-
-                admin.confirm('纭畾鍏抽棴婕旂ず妯″紡鍚楋紵', {shadeClose: true}, function(){
-                    $.ajax({
-                        url: baseUrl+"/openapi/shuttleDemo",
-                        headers: {'token': localStorage.getItem('token')},
-                        dataType:'json',
-                        data: JSON.stringify({
-                            shuttleNos: shuttleNos,
-                            status: 0
-                        }),
-                        contentType:'application/json;charset=UTF-8',
-                        method: 'POST',
-                        success: function (res) {
-                            layer.closeAll();
-                            if (res.code === 200) {
-                                layer.msg("璇锋眰鎴愬姛", {icon: 1});
-                                tableReload();
-                            } else if (res.code === 403) {
-                                top.location.href = baseUrl+"/";
-                            } else {
-                                layer.msg(res.msg, {icon: 2})
-                            }
-                        }
-                    });
-                });
-                break;
-            case 'exportData':
-                admin.confirm('纭畾瀵煎嚭Excel鍚�', {shadeClose: true}, function(){
-                    var titles=[];
-                    var fields=[];
-                    obj.config.cols[0].map(function (col) {
-                        if (col.type === 'normal' && col.hide === false && col.toolbar == null) {
-                            titles.push(col.title);
-                            fields.push(col.field);
-                        }
-                    });
-                    var exportData = {};
-                    $.each($('#search-box [name]').serializeArray(), function() {
-                        exportData[this.name] = this.value;
-                    });
-                    var param = {
-                        'basShuttle': exportData,
-                        'fields': fields
-                    };
-                    $.ajax({
-                        url: baseUrl+"/basShuttle/export/auth",
-                        headers: {'token': localStorage.getItem('token')},
-                        data: JSON.stringify(param),
-                        dataType:'json',
-                        contentType:'application/json;charset=UTF-8',
-                        method: 'POST',
-                        success: function (res) {
-                            layer.closeAll();
-                            if (res.code === 200) {
-                                table.exportFile(titles,res.data,'xls');
-                            } else if (res.code === 403) {
-                                top.location.href = baseUrl+"/";
-                            } else {
-                                layer.msg(res.msg, {icon: 2})
-                            }
-                        }
-                    });
-                });
-                break;
-        }
-    });
-
-    // 鐩戝惉琛屽伐鍏蜂簨浠�
-    table.on('tool(basShuttle)', function(obj){
-        var data = obj.data;
-        switch (obj.event) {
-            case 'edit':
-                showEditModel(data);
-                break;
-            case "del":
-                del([data.shuttleNo]);
-                break;
-        }
-    });
-
-    function showUpdateCharge() {
-        admin.open({
-            type: 1,
-            area: '600px',
-            title: '涓�閿慨鏀圭數閲忕嚎',
-            content: $('#updateChargeDialog').html(),
-            success: function (layero, dIndex) {
-                form.on('submit(editSubmit)', function (data) {
-                    var loadIndex = layer.load(2);
-                    $.ajax({
-                        url: baseUrl+"/basShuttle/updateCharge",
-                        headers: {'token': localStorage.getItem('token')},
-                        data: data.field,
-                        method: 'POST',
-                        success: function (res) {
-                            layer.close(loadIndex);
-                            if (res.code === 200){
-                                layer.close(dIndex);
-                                layer.msg(res.msg, {icon: 1});
-                                tableReload();
-                            } else if (res.code === 403){
-                                top.location.href = baseUrl+"/";
-                            }else {
-                                layer.msg(res.msg, {icon: 2});
-                            }
-                        }
-                    })
-                    return false;
-                });
-            }
-        });
-    }
-
-    /* 寮圭獥 - 鏂板銆佷慨鏀� */
-    function showEditModel(mData) {
-        admin.open({
-            type: 1,
-            area: '600px',
-            title: (mData ? '淇敼' : '娣诲姞') + '灏忚溅鏁版嵁',
-            content: $('#editDialog').html(),
-            success: function (layero, dIndex) {
-                layDateRender(mData);
-                form.val('detail', mData);
-                form.on('submit(editSubmit)', function (data) {
-                    var loadIndex = layer.load(2);
-                    $.ajax({
-                        url: baseUrl+"/basShuttle/"+(mData?'update':'add')+"/auth",
-                        headers: {'token': localStorage.getItem('token')},
-                        data: data.field,
-                        method: 'POST',
-                        success: function (res) {
-                            layer.close(loadIndex);
-                            if (res.code === 200){
-                                layer.close(dIndex);
-                                layer.msg(res.msg, {icon: 1});
-                                tableReload();
-                            } else if (res.code === 403){
-                                top.location.href = baseUrl+"/";
-                            }else {
-                                layer.msg(res.msg, {icon: 2});
-                            }
-                        }
-                    })
-                    return false;
-                });
-                $(layero).children('.layui-layer-content').css('overflow', 'visible');
-                layui.form.render('select');
-            }
-        });
-    }
-
-    /* 鍒犻櫎 */
-    function del(ids) {
-        layer.confirm('纭畾瑕佸垹闄ら�変腑鏁版嵁鍚楋紵', {
-            skin: 'layui-layer-admin',
-            shade: .1
-        }, function (i) {
-            layer.close(i);
-            var loadIndex = layer.load(2);
-            $.ajax({
-                url: baseUrl+"/basShuttle/delete/auth",
-                headers: {'token': localStorage.getItem('token')},
-                data: {ids: ids},
-                method: 'POST',
-                success: function (res) {
-                    layer.close(loadIndex);
-                    if (res.code === 200){
-                        layer.msg(res.msg, {icon: 1});
-                        tableReload();
-                    } else if (res.code === 403){
-                        top.location.href = baseUrl+"/";
-                    } else {
-                        layer.msg(res.msg, {icon: 2});
-                    }
-                }
-            })
-        });
-    }
-
-    // 鎼滅储
-    form.on('submit(search)', function (data) {
-        pageCurr = 1;
-        tableReload(false);
-    });
-
-    // 閲嶇疆
-    form.on('submit(reset)', function (data) {
-        pageCurr = 1;
-        clearFormVal($('#search-box'));
-        tableReload(false);
-    });
-
-    function clearFormVal(el) {
-        $(':input', el)
-            .val('')
-            .removeAttr('checked')
-            .removeAttr('selected');
-    }
-
-    // 鏃堕棿閫夋嫨鍣�
-    function layDateRender(data) {
-        setTimeout(function () {
-            layDate.render({
-                elem: '.layui-laydate-range'
-                ,type: 'datetime'
-                ,range: true
-            });
-            layDate.render({
-                elem: '#createTime\\$',
-                type: 'datetime',
-                value: data!==undefined?data['createTime\\$']:null
-            });
-            layDate.render({
-                elem: '#updateTime\\$',
-                type: 'datetime',
-                value: data!==undefined?data['updateTime\\$']:null
-            });
-
-        }, 300);
-    }
-    layDateRender();
-
-});
-
-// 鍏抽棴鍔ㄤ綔
-$(document).on('click','#data-detail-close', function () {
-    parent.layer.closeAll();
-});
-
-function tableReload(child) {
-    var searchData = {};
-    $.each($('#search-box [name]').serializeArray(), function() {
-        searchData[this.name] = this.value;
-    });
-    tableIns.reload({
-        where: searchData,
-        page: {curr: pageCurr}
-     });
-}
diff --git a/src/main/webapp/static/js/basShuttleCharge/basShuttleCharge.js b/src/main/webapp/static/js/basShuttleCharge/basShuttleCharge.js
deleted file mode 100644
index 9dda313..0000000
--- a/src/main/webapp/static/js/basShuttleCharge/basShuttleCharge.js
+++ /dev/null
@@ -1,261 +0,0 @@
-var pageCurr;
-layui.config({
-    base: baseUrl + "/static/layui/lay/modules/"
-}).use(['table','laydate', 'form', 'admin'], function(){
-    var table = layui.table;
-    var $ = layui.jquery;
-    var layer = layui.layer;
-    var layDate = layui.laydate;
-    var form = layui.form;
-    var admin = layui.admin;
-
-    // 鏁版嵁娓叉煋
-    tableIns = table.render({
-        elem: '#basShuttleCharge',
-        headers: {token: localStorage.getItem('token')},
-        url: baseUrl+'/basShuttleCharge/list/auth',
-        page: true,
-        limit: 15,
-        limits: [15, 30, 50, 100, 200, 500],
-        toolbar: '#toolbar',
-        cellMinWidth: 50,
-        height: 'full-120',
-        cols: [[
-            {type: 'checkbox'}
-            ,{field: 'id', align: 'center',title: '#'}
-            ,{field: 'chargeId', align: 'center',title: '鍏呯數妗╃紪鍙�'}
-            ,{field: 'locNo', align: 'center',title: '搴撲綅鍙�'}
-            ,{field: 'waitLocNo', align: 'center',title: '寰呮満浣�'}
-            // ,{field: 'createTime$', align: 'center',title: '鍒涘缓鏃堕棿'}
-            // ,{field: 'updateTime$', align: 'center',title: '鏇存柊鏃堕棿'}
-            ,{field: 'status$', align: 'center',title: '鐘舵��'}
-
-            ,{fixed: 'right', title:'鎿嶄綔', align: 'center', toolbar: '#operate', width:120}
-        ]],
-        request: {
-            pageName: 'curr',
-            pageSize: 'limit'
-        },
-        parseData: function (res) {
-            return {
-                'code': res.code,
-                'msg': res.msg,
-                'count': res.data.total,
-                'data': res.data.records
-            }
-        },
-        response: {
-            statusCode: 200
-        },
-        done: function(res, curr, count) {
-            if (res.code === 403) {
-                top.location.href = baseUrl+"/";
-            }
-            pageCurr=curr;
-            limit();
-        }
-    });
-
-    // 鐩戝惉鎺掑簭浜嬩欢
-    table.on('sort(basShuttleCharge)', function (obj) {
-        var searchData = {};
-        $.each($('#search-box [name]').serializeArray(), function() {
-            searchData[this.name] = this.value;
-        });
-        searchData['orderByField'] = obj.field;
-        searchData['orderByType'] = obj.type;
-        tableIns.reload({
-            where: searchData,
-            page: {curr: 1}
-        });
-    });
-
-    // 鐩戝惉澶村伐鍏锋爮浜嬩欢
-    table.on('toolbar(basShuttleCharge)', function (obj) {
-        var checkStatus = table.checkStatus(obj.config.id).data;
-        switch(obj.event) {
-            case 'addData':
-                showEditModel();
-                break;
-            case 'deleteData':
-               if (checkStatus.length === 0) {
-                   layer.msg('璇烽�夋嫨瑕佸垹闄ょ殑鏁版嵁', {icon: 2});
-                   return;
-               }
-               del(checkStatus.map(function (d) {
-                   return d.id;
-               }));
-               break;
-            case 'exportData':
-                admin.confirm('纭畾瀵煎嚭Excel鍚�', {shadeClose: true}, function(){
-                    var titles=[];
-                    var fields=[];
-                    obj.config.cols[0].map(function (col) {
-                        if (col.type === 'normal' && col.hide === false && col.toolbar == null) {
-                            titles.push(col.title);
-                            fields.push(col.field);
-                        }
-                    });
-                    var exportData = {};
-                    $.each($('#search-box [name]').serializeArray(), function() {
-                        exportData[this.name] = this.value;
-                    });
-                    var param = {
-                        'basShuttleCharge': exportData,
-                        'fields': fields
-                    };
-                    $.ajax({
-                        url: baseUrl+"/basShuttleCharge/export/auth",
-                        headers: {'token': localStorage.getItem('token')},
-                        data: JSON.stringify(param),
-                        dataType:'json',
-                        contentType:'application/json;charset=UTF-8',
-                        method: 'POST',
-                        success: function (res) {
-                            layer.closeAll();
-                            if (res.code === 200) {
-                                table.exportFile(titles,res.data,'xls');
-                            } else if (res.code === 403) {
-                                top.location.href = baseUrl+"/";
-                            } else {
-                                layer.msg(res.msg, {icon: 2})
-                            }
-                        }
-                    });
-                });
-                break;
-        }
-    });
-
-    // 鐩戝惉琛屽伐鍏蜂簨浠�
-    table.on('tool(basShuttleCharge)', function(obj){
-        var data = obj.data;
-        switch (obj.event) {
-            case 'edit':
-                showEditModel(data);
-                break;
-            case "del":
-                del([data.id]);
-                break;
-        }
-    });
-
-    /* 寮圭獥 - 鏂板銆佷慨鏀� */
-    function showEditModel(mData) {
-        admin.open({
-            type: 1,
-            area: '600px',
-            title: (mData ? '淇敼' : '娣诲姞') + '璁㈠崟鐘舵��',
-            content: $('#editDialog').html(),
-            success: function (layero, dIndex) {
-                layDateRender(mData);
-                form.val('detail', mData);
-                form.on('submit(editSubmit)', function (data) {
-                    var loadIndex = layer.load(2);
-                    $.ajax({
-                        url: baseUrl+"/basShuttleCharge/"+(mData?'update':'add')+"/auth",
-                        headers: {'token': localStorage.getItem('token')},
-                        data: data.field,
-                        method: 'POST',
-                        success: function (res) {
-                            layer.close(loadIndex);
-                            if (res.code === 200){
-                                layer.close(dIndex);
-                                layer.msg(res.msg, {icon: 1});
-                                tableReload();
-                            } else if (res.code === 403){
-                                top.location.href = baseUrl+"/";
-                            }else {
-                                layer.msg(res.msg, {icon: 2});
-                            }
-                        }
-                    })
-                    return false;
-                });
-                $(layero).children('.layui-layer-content').css('overflow', 'visible');
-                layui.form.render('select');
-            }
-        });
-    }
-
-    /* 鍒犻櫎 */
-    function del(ids) {
-        layer.confirm('纭畾瑕佸垹闄ら�変腑鏁版嵁鍚楋紵', {
-            skin: 'layui-layer-admin',
-            shade: .1
-        }, function (i) {
-            layer.close(i);
-            var loadIndex = layer.load(2);
-            $.ajax({
-                url: baseUrl+"/basShuttleCharge/delete/auth",
-                headers: {'token': localStorage.getItem('token')},
-                data: {ids: ids},
-                method: 'POST',
-                success: function (res) {
-                    layer.close(loadIndex);
-                    if (res.code === 200){
-                        layer.msg(res.msg, {icon: 1});
-                        tableReload();
-                    } else if (res.code === 403){
-                        top.location.href = baseUrl+"/";
-                    } else {
-                        layer.msg(res.msg, {icon: 2});
-                    }
-                }
-            })
-        });
-    }
-
-    // 鎼滅储
-    form.on('submit(search)', function (data) {
-        pageCurr = 1;
-        tableReload(false);
-    });
-
-    // 閲嶇疆
-    form.on('submit(reset)', function (data) {
-        pageCurr = 1;
-        clearFormVal($('#search-box'));
-        tableReload(false);
-    });
-
-    // 鏃堕棿閫夋嫨鍣�
-    function layDateRender(data) {
-        setTimeout(function () {
-            layDate.render({
-                elem: '.layui-laydate-range'
-                ,type: 'datetime'
-                ,range: true
-            });
-            layDate.render({
-                elem: '#createTime\\$',
-                type: 'datetime',
-                value: data!==undefined?data['createTime\\$']:null
-            });
-            layDate.render({
-                elem: '#updateTime\\$',
-                type: 'datetime',
-                value: data!==undefined?data['updateTime\\$']:null
-            });
-
-        }, 300);
-    }
-    layDateRender();
-
-});
-
-// 鍏抽棴鍔ㄤ綔
-$(document).on('click','#data-detail-close', function () {
-    parent.layer.closeAll();
-});
-
-function tableReload(child) {
-    var searchData = {};
-    $.each($('#search-box [name]').serializeArray(), function() {
-        searchData[this.name] = this.value;
-    });
-    tableIns.reload({
-        where: searchData,
-        page: {curr: pageCurr}
-     });
-}
diff --git a/src/main/webapp/static/js/basShuttleErr/basShuttleErr.js b/src/main/webapp/static/js/basShuttleErr/basShuttleErr.js
deleted file mode 100644
index 72559a6..0000000
--- a/src/main/webapp/static/js/basShuttleErr/basShuttleErr.js
+++ /dev/null
@@ -1,267 +0,0 @@
-var pageCurr;
-layui.config({
-    base: baseUrl + "/static/layui/lay/modules/"
-}).use(['table','laydate', 'form', 'admin'], function(){
-    var table = layui.table;
-    var $ = layui.jquery;
-    var layer = layui.layer;
-    var layDate = layui.laydate;
-    var form = layui.form;
-    var admin = layui.admin;
-
-    // 鏁版嵁娓叉煋
-    tableIns = table.render({
-        elem: '#basShuttleErr',
-        headers: {token: localStorage.getItem('token')},
-        url: baseUrl+'/basShuttleErr/list/auth',
-        page: true,
-        limit: 15,
-        limits: [15, 30, 50, 100, 200, 500],
-        toolbar: '#toolbar',
-        cellMinWidth: 50,
-        height: 'full-120',
-        cols: [[
-            {type: 'checkbox'}
-            ,{field: 'errorCode', align: 'center',title: '寮傚父鐮�'}
-            ,{field: 'errName', align: 'center',title: '寮傚父'}
-            ,{field: 'modiUser$', align: 'center',title: '淇敼浜哄憳'}
-            ,{field: 'modiTime$', align: 'center',title: '淇敼鏃堕棿'}
-            ,{field: 'appeUser$', align: 'center',title: '娣诲姞浜哄憳'}
-            ,{field: 'appeTime$', align: 'center',title: '娣诲姞鏃堕棿'}
-
-            ,{fixed: 'right', title:'鎿嶄綔', align: 'center', toolbar: '#operate', width:120}
-        ]],
-        request: {
-            pageName: 'curr',
-            pageSize: 'limit'
-        },
-        parseData: function (res) {
-            return {
-                'code': res.code,
-                'msg': res.msg,
-                'count': res.data.total,
-                'data': res.data.records
-            }
-        },
-        response: {
-            statusCode: 200
-        },
-        done: function(res, curr, count) {
-            if (res.code === 403) {
-                top.location.href = baseUrl+"/";
-            }
-            pageCurr=curr;
-            limit();
-        }
-    });
-
-    // 鐩戝惉鎺掑簭浜嬩欢
-    table.on('sort(basShuttleErr)', function (obj) {
-        var searchData = {};
-        $.each($('#search-box [name]').serializeArray(), function() {
-            searchData[this.name] = this.value;
-        });
-        searchData['orderByField'] = obj.field;
-        searchData['orderByType'] = obj.type;
-        tableIns.reload({
-            where: searchData,
-            page: {curr: 1}
-        });
-    });
-
-    // 鐩戝惉澶村伐鍏锋爮浜嬩欢
-    table.on('toolbar(basShuttleErr)', function (obj) {
-        var checkStatus = table.checkStatus(obj.config.id).data;
-        switch(obj.event) {
-            case 'addData':
-                showEditModel();
-                break;
-            case 'deleteData':
-               if (checkStatus.length === 0) {
-                   layer.msg('璇烽�夋嫨瑕佸垹闄ょ殑鏁版嵁', {icon: 2});
-                   return;
-               }
-               del(checkStatus.map(function (d) {
-                   return d.errorCode;
-               }));
-               break;
-            case 'exportData':
-                admin.confirm('纭畾瀵煎嚭Excel鍚�', {shadeClose: true}, function(){
-                    var titles=[];
-                    var fields=[];
-                    obj.config.cols[0].map(function (col) {
-                        if (col.type === 'normal' && col.hide === false && col.toolbar == null) {
-                            titles.push(col.title);
-                            fields.push(col.field);
-                        }
-                    });
-                    var exportData = {};
-                    $.each($('#search-box [name]').serializeArray(), function() {
-                        exportData[this.name] = this.value;
-                    });
-                    var param = {
-                        'basShuttleErr': exportData,
-                        'fields': fields
-                    };
-                    $.ajax({
-                        url: baseUrl+"/basShuttleErr/export/auth",
-                        headers: {'token': localStorage.getItem('token')},
-                        data: JSON.stringify(param),
-                        dataType:'json',
-                        contentType:'application/json;charset=UTF-8',
-                        method: 'POST',
-                        success: function (res) {
-                            layer.closeAll();
-                            if (res.code === 200) {
-                                table.exportFile(titles,res.data,'xls');
-                            } else if (res.code === 403) {
-                                top.location.href = baseUrl+"/";
-                            } else {
-                                layer.msg(res.msg, {icon: 2})
-                            }
-                        }
-                    });
-                });
-                break;
-        }
-    });
-
-    // 鐩戝惉琛屽伐鍏蜂簨浠�
-    table.on('tool(basShuttleErr)', function(obj){
-        var data = obj.data;
-        switch (obj.event) {
-            case 'edit':
-                showEditModel(data);
-                break;
-            case "del":
-                del([data.errorCode]);
-                break;
-        }
-    });
-
-    /* 寮圭獥 - 鏂板銆佷慨鏀� */
-    function showEditModel(mData) {
-        admin.open({
-            type: 1,
-            area: '600px',
-            title: (mData ? '淇敼' : '娣诲姞') + '鍥涘悜杞﹀紓甯哥爜',
-            content: $('#editDialog').html(),
-            success: function (layero, dIndex) {
-                layDateRender(mData);
-                form.val('detail', mData);
-                form.on('submit(editSubmit)', function (data) {
-                    var loadIndex = layer.load(2);
-                    $.ajax({
-                        url: baseUrl+"/basShuttleErr/"+(mData?'update':'add')+"/auth",
-                        headers: {'token': localStorage.getItem('token')},
-                        data: data.field,
-                        method: 'POST',
-                        success: function (res) {
-                            layer.close(loadIndex);
-                            if (res.code === 200){
-                                layer.close(dIndex);
-                                layer.msg(res.msg, {icon: 1});
-                                tableReload();
-                            } else if (res.code === 403){
-                                top.location.href = baseUrl+"/";
-                            }else {
-                                layer.msg(res.msg, {icon: 2});
-                            }
-                        }
-                    })
-                    return false;
-                });
-                $(layero).children('.layui-layer-content').css('overflow', 'visible');
-                layui.form.render('select');
-            }
-        });
-    }
-
-    /* 鍒犻櫎 */
-    function del(ids) {
-        layer.confirm('纭畾瑕佸垹闄ら�変腑鏁版嵁鍚楋紵', {
-            skin: 'layui-layer-admin',
-            shade: .1
-        }, function (i) {
-            layer.close(i);
-            var loadIndex = layer.load(2);
-            $.ajax({
-                url: baseUrl+"/basShuttleErr/delete/auth",
-                headers: {'token': localStorage.getItem('token')},
-                data: {ids: ids},
-                method: 'POST',
-                success: function (res) {
-                    layer.close(loadIndex);
-                    if (res.code === 200){
-                        layer.msg(res.msg, {icon: 1});
-                        tableReload();
-                    } else if (res.code === 403){
-                        top.location.href = baseUrl+"/";
-                    } else {
-                        layer.msg(res.msg, {icon: 2});
-                    }
-                }
-            })
-        });
-    }
-
-    // 鎼滅储
-    form.on('submit(search)', function (data) {
-        pageCurr = 1;
-        tableReload(false);
-    });
-
-    // 閲嶇疆
-    form.on('submit(reset)', function (data) {
-        pageCurr = 1;
-        clearFormVal($('#search-box'));
-        tableReload(false);
-    });
-
-    function clearFormVal(el) {
-        $(':input', el)
-            .val('')
-            .removeAttr('checked')
-            .removeAttr('selected');
-    }
-
-    // 鏃堕棿閫夋嫨鍣�
-    function layDateRender(data) {
-        setTimeout(function () {
-            layDate.render({
-                elem: '.layui-laydate-range'
-                ,type: 'datetime'
-                ,range: true
-            });
-            layDate.render({
-                elem: '#modiTime\\$',
-                type: 'datetime',
-                value: data!==undefined?data['modiTime\\$']:null
-            });
-            layDate.render({
-                elem: '#appeTime\\$',
-                type: 'datetime',
-                value: data!==undefined?data['appeTime\\$']:null
-            });
-
-        }, 300);
-    }
-    layDateRender();
-
-});
-
-// 鍏抽棴鍔ㄤ綔
-$(document).on('click','#data-detail-close', function () {
-    parent.layer.closeAll();
-});
-
-function tableReload(child) {
-    var searchData = {};
-    $.each($('#search-box [name]').serializeArray(), function() {
-        searchData[this.name] = this.value;
-    });
-    tableIns.reload({
-        where: searchData,
-        page: {curr: pageCurr}
-     });
-}
diff --git a/src/main/webapp/static/js/basShuttleErrLog/basShuttleErrLog.js b/src/main/webapp/static/js/basShuttleErrLog/basShuttleErrLog.js
deleted file mode 100644
index 241c6bb..0000000
--- a/src/main/webapp/static/js/basShuttleErrLog/basShuttleErrLog.js
+++ /dev/null
@@ -1,287 +0,0 @@
-var pageCurr;
-layui.config({
-    base: baseUrl + "/static/layui/lay/modules/"
-}).use(['table','laydate', 'form', 'admin'], function(){
-    var table = layui.table;
-    var $ = layui.jquery;
-    var layer = layui.layer;
-    var layDate = layui.laydate;
-    var form = layui.form;
-    var admin = layui.admin;
-
-    // 鏁版嵁娓叉煋
-    tableIns = table.render({
-        elem: '#basShuttleErrLog',
-        headers: {token: localStorage.getItem('token')},
-        url: baseUrl+'/basShuttleErrLog/list/auth',
-        page: true,
-        limit: 15,
-        limits: [15, 30, 50, 100, 200, 500],
-        toolbar: '#toolbar',
-        cellMinWidth: 50,
-        height: 'full-120',
-        cols: [[
-            // {type: 'checkbox'}
-            {field: 'id', align: 'center',title: '缂栧彿'}
-            // ,{field: 'uuid', align: 'center',title: '缂栧彿'}
-            ,{field: 'wrkNo', align: 'center',title: '宸ヤ綔鍙�'}
-            ,{field: 'startTime$', align: 'center',title: '鍙戠敓鏃堕棿'}
-            ,{field: 'endTime$', align: 'center',title: '缁撴潫鏃堕棿'}
-            ,{field: 'wrkSts$', align: 'center',title: '宸ヤ綔鐘舵��'}
-            ,{field: 'ioType$', align: 'center',title: '鍏ュ嚭搴撶被鍨�'}
-            ,{field: 'steNo', align: 'center',title: '绌挎杞�'}
-            ,{field: 'plcNo', align: 'center',title: 'plc'}
-            ,{field: 'locNo', align: 'center',title: '鐩爣搴撲綅'}
-            ,{field: 'staNo', align: 'center',title: '鐩爣绔�'}
-            ,{field: 'sourceStaNo', align: 'center',title: '婧愮珯'}
-            ,{field: 'sourceLocNo', align: 'center',title: '婧愬簱浣�'}
-            ,{field: 'barcode', align: 'center',title: '鏉$爜'}
-            ,{field: 'errCode', align: 'center',title: '寮傚父鐮�'}
-            ,{field: 'error', align: 'center',title: '寮傚父'}
-            ,{field: 'status$', align: 'center',title: '寮傚父鎯呭喌'}
-            ,{field: 'systemStatus', align: 'center',title: '绯荤粺鐘舵��'}
-            ,{field: 'createTime$', align: 'center',title: '娣诲姞鏃堕棿'}
-            ,{field: 'createBy$', align: 'center',title: '娣诲姞浜哄憳'}
-            ,{field: 'updateTime$', align: 'center',title: '淇敼鏃堕棿'}
-            ,{field: 'updateBy$', align: 'center',title: '淇敼浜哄憳'}
-            ,{field: 'memo', align: 'center',title: '澶囨敞'}
-
-            // ,{fixed: 'right', title:'鎿嶄綔', align: 'center', toolbar: '#operate', width:120}
-        ]],
-        request: {
-            pageName: 'curr',
-            pageSize: 'limit'
-        },
-        parseData: function (res) {
-            return {
-                'code': res.code,
-                'msg': res.msg,
-                'count': res.data.total,
-                'data': res.data.records
-            }
-        },
-        response: {
-            statusCode: 200
-        },
-        done: function(res, curr, count) {
-            if (res.code === 403) {
-                top.location.href = baseUrl+"/";
-            }
-            pageCurr=curr;
-            limit();
-        }
-    });
-
-    // 鐩戝惉鎺掑簭浜嬩欢
-    table.on('sort(basShuttleErrLog)', function (obj) {
-        var searchData = {};
-        $.each($('#search-box [name]').serializeArray(), function() {
-            searchData[this.name] = this.value;
-        });
-        searchData['orderByField'] = obj.field;
-        searchData['orderByType'] = obj.type;
-        tableIns.reload({
-            where: searchData,
-            page: {curr: 1}
-        });
-    });
-
-    // 鐩戝惉澶村伐鍏锋爮浜嬩欢
-    table.on('toolbar(basShuttleErrLog)', function (obj) {
-        var checkStatus = table.checkStatus(obj.config.id).data;
-        switch(obj.event) {
-            case 'addData':
-                showEditModel();
-                break;
-            case 'deleteData':
-               if (checkStatus.length === 0) {
-                   layer.msg('璇烽�夋嫨瑕佸垹闄ょ殑鏁版嵁', {icon: 2});
-                   return;
-               }
-               del(checkStatus.map(function (d) {
-                   return d.id;
-               }));
-               break;
-            case 'exportData':
-                admin.confirm('纭畾瀵煎嚭Excel鍚�', {shadeClose: true}, function(){
-                    var titles=[];
-                    var fields=[];
-                    obj.config.cols[0].map(function (col) {
-                        if (col.type === 'normal' && col.hide === false && col.toolbar == null) {
-                            titles.push(col.title);
-                            fields.push(col.field);
-                        }
-                    });
-                    var exportData = {};
-                    $.each($('#search-box [name]').serializeArray(), function() {
-                        exportData[this.name] = this.value;
-                    });
-                    var param = {
-                        'basShuttleErrLog': exportData,
-                        'fields': fields
-                    };
-                    $.ajax({
-                        url: baseUrl+"/basShuttleErrLog/export/auth",
-                        headers: {'token': localStorage.getItem('token')},
-                        data: JSON.stringify(param),
-                        dataType:'json',
-                        contentType:'application/json;charset=UTF-8',
-                        method: 'POST',
-                        success: function (res) {
-                            layer.closeAll();
-                            if (res.code === 200) {
-                                table.exportFile(titles,res.data,'xls');
-                            } else if (res.code === 403) {
-                                top.location.href = baseUrl+"/";
-                            } else {
-                                layer.msg(res.msg, {icon: 2})
-                            }
-                        }
-                    });
-                });
-                break;
-        }
-    });
-
-    // 鐩戝惉琛屽伐鍏蜂簨浠�
-    table.on('tool(basShuttleErrLog)', function(obj){
-        var data = obj.data;
-        switch (obj.event) {
-            case 'edit':
-                showEditModel(data);
-                break;
-            case "del":
-                del([data.id]);
-                break;
-        }
-    });
-
-    /* 寮圭獥 - 鏂板銆佷慨鏀� */
-    function showEditModel(mData) {
-        admin.open({
-            type: 1,
-            area: '600px',
-            title: (mData ? '淇敼' : '娣诲姞') + '璁㈠崟鐘舵��',
-            content: $('#editDialog').html(),
-            success: function (layero, dIndex) {
-                layDateRender(mData);
-                form.val('detail', mData);
-                form.on('submit(editSubmit)', function (data) {
-                    var loadIndex = layer.load(2);
-                    $.ajax({
-                        url: baseUrl+"/basShuttleErrLog/"+(mData?'update':'add')+"/auth",
-                        headers: {'token': localStorage.getItem('token')},
-                        data: data.field,
-                        method: 'POST',
-                        success: function (res) {
-                            layer.close(loadIndex);
-                            if (res.code === 200){
-                                layer.close(dIndex);
-                                layer.msg(res.msg, {icon: 1});
-                                tableReload();
-                            } else if (res.code === 403){
-                                top.location.href = baseUrl+"/";
-                            }else {
-                                layer.msg(res.msg, {icon: 2});
-                            }
-                        }
-                    })
-                    return false;
-                });
-                $(layero).children('.layui-layer-content').css('overflow', 'visible');
-                layui.form.render('select');
-            }
-        });
-    }
-
-    /* 鍒犻櫎 */
-    function del(ids) {
-        layer.confirm('纭畾瑕佸垹闄ら�変腑鏁版嵁鍚楋紵', {
-            skin: 'layui-layer-admin',
-            shade: .1
-        }, function (i) {
-            layer.close(i);
-            var loadIndex = layer.load(2);
-            $.ajax({
-                url: baseUrl+"/basShuttleErrLog/delete/auth",
-                headers: {'token': localStorage.getItem('token')},
-                data: {ids: ids},
-                method: 'POST',
-                success: function (res) {
-                    layer.close(loadIndex);
-                    if (res.code === 200){
-                        layer.msg(res.msg, {icon: 1});
-                        tableReload();
-                    } else if (res.code === 403){
-                        top.location.href = baseUrl+"/";
-                    } else {
-                        layer.msg(res.msg, {icon: 2});
-                    }
-                }
-            })
-        });
-    }
-
-    // 鎼滅储
-    form.on('submit(search)', function (data) {
-        pageCurr = 1;
-        tableReload(false);
-    });
-
-    // 閲嶇疆
-    form.on('submit(reset)', function (data) {
-        pageCurr = 1;
-        clearFormVal($('#search-box'));
-        tableReload(false);
-    });
-
-    // 鏃堕棿閫夋嫨鍣�
-    function layDateRender(data) {
-        setTimeout(function () {
-            layDate.render({
-                elem: '.layui-laydate-range'
-                ,type: 'datetime'
-                ,range: true
-            });
-            layDate.render({
-                elem: '#startTime\\$',
-                type: 'datetime',
-                value: data!==undefined?data['startTime\\$']:null
-            });
-            layDate.render({
-                elem: '#endTime\\$',
-                type: 'datetime',
-                value: data!==undefined?data['endTime\\$']:null
-            });
-            layDate.render({
-                elem: '#createTime\\$',
-                type: 'datetime',
-                value: data!==undefined?data['createTime\\$']:null
-            });
-            layDate.render({
-                elem: '#updateTime\\$',
-                type: 'datetime',
-                value: data!==undefined?data['updateTime\\$']:null
-            });
-
-        }, 300);
-    }
-    layDateRender();
-
-});
-
-// 鍏抽棴鍔ㄤ綔
-$(document).on('click','#data-detail-close', function () {
-    parent.layer.closeAll();
-});
-
-function tableReload(child) {
-    var searchData = {};
-    $.each($('#search-box [name]').serializeArray(), function() {
-        searchData[this.name] = this.value;
-    });
-    tableIns.reload({
-        where: searchData,
-        page: {curr: pageCurr}
-     });
-}
diff --git a/src/main/webapp/static/js/basShuttleErrLog/basShuttleOpt.js b/src/main/webapp/static/js/basShuttleErrLog/basShuttleOpt.js
deleted file mode 100644
index aa8aead..0000000
--- a/src/main/webapp/static/js/basShuttleErrLog/basShuttleOpt.js
+++ /dev/null
@@ -1,275 +0,0 @@
-var pageCurr;
-layui.config({
-    base: baseUrl + "/static/layui/lay/modules/"
-}).use(['table','laydate', 'form', 'admin'], function(){
-    var table = layui.table;
-    var $ = layui.jquery;
-    var layer = layui.layer;
-    var layDate = layui.laydate;
-    var form = layui.form;
-    var admin = layui.admin;
-
-    // 鏁版嵁娓叉煋
-    tableIns = table.render({
-        elem: '#basShuttleOpt',
-        headers: {token: localStorage.getItem('token')},
-        url: baseUrl+'/basShuttleOpt/list/auth',
-        page: true,
-        limit: 15,
-        limits: [15, 30, 50, 100, 200, 500],
-        toolbar: '#toolbar',
-        cellMinWidth: 50,
-        height: 'full-120',
-        cols: [[
-            {field: 'wrkNo', align: 'center',title: '宸ヤ綔鍙�'}
-            ,{field: 'shuttleNo', align: 'center',title: '鍥涘悜杞�'}
-            ,{field: 'mode', align: 'center',title: '浣滀笟'}
-            ,{field: 'sourceLocNo', align: 'center',title: '璧风偣搴撲綅'}
-            ,{field: 'distLocNo', align: 'center',title: '鐩爣搴撲綅'}
-            ,{field: 'command', align: 'center',title: '鍛戒护'}
-            ,{field: 'systemStatus', align: 'center',title: '绯荤粺鐘舵��'}
-            ,{field: 'deviceWrk', align: 'center',title: '璁惧宸ヤ綔鍙�'}
-            ,{field: 'sendTime$', align: 'center',title: '涓嬪彂鏃堕棿'}
-            ,{field: 'updateTime$', align: 'center',title: '淇敼鏃堕棿'}
-            ,{field: 'updateBy$', align: 'center',title: '淇敼浜哄憳'}
-            ,{field: 'memo', align: 'center',title: '澶囨敞'}
-
-            // ,{fixed: 'right', title:'鎿嶄綔', align: 'center', toolbar: '#operate', width:120}
-        ]],
-        request: {
-            pageName: 'curr',
-            pageSize: 'limit'
-        },
-        parseData: function (res) {
-            return {
-                'code': res.code,
-                'msg': res.msg,
-                'count': res.data.total,
-                'data': res.data.records
-            }
-        },
-        response: {
-            statusCode: 200
-        },
-        done: function(res, curr, count) {
-            if (res.code === 403) {
-                top.location.href = baseUrl+"/";
-            }
-            pageCurr=curr;
-            limit();
-        }
-    });
-
-    // 鐩戝惉鎺掑簭浜嬩欢
-    table.on('sort(basShuttleOpt)', function (obj) {
-        var searchData = {};
-        $.each($('#search-box [name]').serializeArray(), function() {
-            searchData[this.name] = this.value;
-        });
-        searchData['orderByField'] = obj.field;
-        searchData['orderByType'] = obj.type;
-        tableIns.reload({
-            where: searchData,
-            page: {curr: 1}
-        });
-    });
-
-    // 鐩戝惉澶村伐鍏锋爮浜嬩欢
-    table.on('toolbar(basShuttleOpt)', function (obj) {
-        var checkStatus = table.checkStatus(obj.config.id).data;
-        switch(obj.event) {
-            case 'addData':
-                showEditModel();
-                break;
-            case 'deleteData':
-               if (checkStatus.length === 0) {
-                   layer.msg('璇烽�夋嫨瑕佸垹闄ょ殑鏁版嵁', {icon: 2});
-                   return;
-               }
-               del(checkStatus.map(function (d) {
-                   return d.id;
-               }));
-               break;
-            case 'exportData':
-                admin.confirm('纭畾瀵煎嚭Excel鍚�', {shadeClose: true}, function(){
-                    var titles=[];
-                    var fields=[];
-                    obj.config.cols[0].map(function (col) {
-                        if (col.type === 'normal' && col.hide === false && col.toolbar == null) {
-                            titles.push(col.title);
-                            fields.push(col.field);
-                        }
-                    });
-                    var exportData = {};
-                    $.each($('#search-box [name]').serializeArray(), function() {
-                        exportData[this.name] = this.value;
-                    });
-                    var param = {
-                        'basShuttleOpt': exportData,
-                        'fields': fields
-                    };
-                    $.ajax({
-                        url: baseUrl+"/basShuttleOpt/export/auth",
-                        headers: {'token': localStorage.getItem('token')},
-                        data: JSON.stringify(param),
-                        dataType:'json',
-                        contentType:'application/json;charset=UTF-8',
-                        method: 'POST',
-                        success: function (res) {
-                            layer.closeAll();
-                            if (res.code === 200) {
-                                table.exportFile(titles,res.data,'xls');
-                            } else if (res.code === 403) {
-                                top.location.href = baseUrl+"/";
-                            } else {
-                                layer.msg(res.msg, {icon: 2})
-                            }
-                        }
-                    });
-                });
-                break;
-        }
-    });
-
-    // 鐩戝惉琛屽伐鍏蜂簨浠�
-    table.on('tool(basShuttleOpt)', function(obj){
-        var data = obj.data;
-        switch (obj.event) {
-            case 'edit':
-                showEditModel(data);
-                break;
-            case "del":
-                del([data.id]);
-                break;
-        }
-    });
-
-    /* 寮圭獥 - 鏂板銆佷慨鏀� */
-    function showEditModel(mData) {
-        admin.open({
-            type: 1,
-            area: '600px',
-            title: (mData ? '淇敼' : '娣诲姞') + '璁㈠崟鐘舵��',
-            content: $('#editDialog').html(),
-            success: function (layero, dIndex) {
-                layDateRender(mData);
-                form.val('detail', mData);
-                form.on('submit(editSubmit)', function (data) {
-                    var loadIndex = layer.load(2);
-                    $.ajax({
-                        url: baseUrl+"/basShuttleOpt/"+(mData?'update':'add')+"/auth",
-                        headers: {'token': localStorage.getItem('token')},
-                        data: data.field,
-                        method: 'POST',
-                        success: function (res) {
-                            layer.close(loadIndex);
-                            if (res.code === 200){
-                                layer.close(dIndex);
-                                layer.msg(res.msg, {icon: 1});
-                                tableReload();
-                            } else if (res.code === 403){
-                                top.location.href = baseUrl+"/";
-                            }else {
-                                layer.msg(res.msg, {icon: 2});
-                            }
-                        }
-                    })
-                    return false;
-                });
-                $(layero).children('.layui-layer-content').css('overflow', 'visible');
-                layui.form.render('select');
-            }
-        });
-    }
-
-    /* 鍒犻櫎 */
-    function del(ids) {
-        layer.confirm('纭畾瑕佸垹闄ら�変腑鏁版嵁鍚楋紵', {
-            skin: 'layui-layer-admin',
-            shade: .1
-        }, function (i) {
-            layer.close(i);
-            var loadIndex = layer.load(2);
-            $.ajax({
-                url: baseUrl+"/basShuttleOpt/delete/auth",
-                headers: {'token': localStorage.getItem('token')},
-                data: {ids: ids},
-                method: 'POST',
-                success: function (res) {
-                    layer.close(loadIndex);
-                    if (res.code === 200){
-                        layer.msg(res.msg, {icon: 1});
-                        tableReload();
-                    } else if (res.code === 403){
-                        top.location.href = baseUrl+"/";
-                    } else {
-                        layer.msg(res.msg, {icon: 2});
-                    }
-                }
-            })
-        });
-    }
-
-    // 鎼滅储
-    form.on('submit(search)', function (data) {
-        pageCurr = 1;
-        tableReload(false);
-    });
-
-    // 閲嶇疆
-    form.on('submit(reset)', function (data) {
-        pageCurr = 1;
-        clearFormVal($('#search-box'));
-        tableReload(false);
-    });
-
-    // 鏃堕棿閫夋嫨鍣�
-    function layDateRender(data) {
-        setTimeout(function () {
-            layDate.render({
-                elem: '.layui-laydate-range'
-                ,type: 'datetime'
-                ,range: true
-            });
-            layDate.render({
-                elem: '#startTime\\$',
-                type: 'datetime',
-                value: data!==undefined?data['startTime\\$']:null
-            });
-            layDate.render({
-                elem: '#endTime\\$',
-                type: 'datetime',
-                value: data!==undefined?data['endTime\\$']:null
-            });
-            layDate.render({
-                elem: '#createTime\\$',
-                type: 'datetime',
-                value: data!==undefined?data['createTime\\$']:null
-            });
-            layDate.render({
-                elem: '#updateTime\\$',
-                type: 'datetime',
-                value: data!==undefined?data['updateTime\\$']:null
-            });
-
-        }, 300);
-    }
-    layDateRender();
-
-});
-
-// 鍏抽棴鍔ㄤ綔
-$(document).on('click','#data-detail-close', function () {
-    parent.layer.closeAll();
-});
-
-function tableReload(child) {
-    var searchData = {};
-    $.each($('#search-box [name]').serializeArray(), function() {
-        searchData[this.name] = this.value;
-    });
-    tableIns.reload({
-        where: searchData,
-        page: {curr: pageCurr}
-     });
-}
diff --git a/src/main/webapp/static/js/common.js b/src/main/webapp/static/js/common.js
index 4d3f029..2a45d7e 100644
--- a/src/main/webapp/static/js/common.js
+++ b/src/main/webapp/static/js/common.js
@@ -1,4 +1,4 @@
-var baseUrl = "/rcs";
+var baseUrl = "/wcs";
 
 // 璧嬪��
 function setVal(el, val) {
diff --git a/src/main/webapp/views/admin/basCrnp/basCrnp.html b/src/main/webapp/views/admin/basCrnp/basCrnp.html
new file mode 100644
index 0000000..17f65a9
--- /dev/null
+++ b/src/main/webapp/views/admin/basCrnp/basCrnp.html
@@ -0,0 +1,120 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="utf-8">
+    <title></title>
+    <meta name="renderer" content="webkit">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+    <link rel="stylesheet" href="../../../static/layui/css/layui.css" media="all">
+    <link rel="stylesheet" href="../../../static/css/admin.css?v=318" media="all">
+    <link rel="stylesheet" href="../../../static/css/cool.css" media="all">
+</head>
+<body>
+
+<div class="layui-fluid">
+    <div class="layui-card">
+        <div class="layui-card-body">
+            <div class="layui-form toolbar" id="search-box">
+                <div class="layui-form-item">
+                    <div class="layui-inline">
+                        <div class="layui-input-inline">
+                            <input class="layui-input" type="text" name="id" placeholder="缂栧彿" autocomplete="off">
+                        </div>
+                    </div>
+                     <div class="layui-inline" style="width: 300px">
+                        <div class="layui-input-inline">
+                            <input class="layui-input layui-laydate-range" name="create_time" type="text" placeholder="璧峰鏃堕棿 - 缁堟鏃堕棿" autocomplete="off" style="width: 300px">
+                        </div>
+                    </div>
+                    <div class="layui-inline">
+                        <div class="layui-input-inline">
+                            <input class="layui-input" type="text" name="condition" placeholder="璇疯緭鍏�" autocomplete="off">
+                        </div>
+                    </div>
+                    <div class="layui-inline">&emsp;
+                        <button class="layui-btn icon-btn" lay-filter="search" lay-submit>
+                            <i class="layui-icon">&#xe615;</i>鎼滅储
+                        </button>
+                        <button class="layui-btn icon-btn" lay-filter="reset" lay-submit>
+                            <i class="layui-icon">&#xe666;</i>閲嶇疆
+                        </button>
+                    </div>
+                </div>
+            </div>
+            <table class="layui-hide" id="basCrnp" lay-filter="basCrnp"></table>
+        </div>
+    </div>
+</div>
+
+<script type="text/html" id="toolbar">
+    <div class="layui-btn-container">
+        <button class="layui-btn layui-btn-sm" id="btn-add" lay-event="addData">鏂板</button>
+        <button class="layui-btn layui-btn-sm layui-btn-danger" id="btn-delete" lay-event="deleteData">鍒犻櫎</button>
+        <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData" style="float: right">瀵煎嚭</button>
+    </div>
+</script>
+
+<script type="text/html" id="operate">
+    <a class="layui-btn layui-btn-primary layui-btn-xs btn-edit" lay-event="edit">淇敼</a>
+    <a class="layui-btn layui-btn-danger layui-btn-xs btn-edit" lay-event="del">鍒犻櫎</a>
+</script>
+
+<script type="text/javascript" src="../../../static/js/jquery/jquery-3.3.1.min.js"></script>
+<script type="text/javascript" src="../../../static/layui/layui.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../../static/js/common.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../../static/js/cool.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../../static/js/basCrnp/basCrnp.js" charset="utf-8"></script>
+</body>
+<!-- 琛ㄥ崟寮圭獥 -->
+<script type="text/html" id="editDialog">
+    <form id="detail" lay-filter="detail" class="layui-form admin-form model-form">
+        <input name="crnNo" type="hidden">
+        <div class="layui-row">
+            <div class="layui-col-md12">
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鐘舵��: </label>
+                    <div class="layui-input-block">
+                        <select name="status">
+                            <option value="">璇烽�夋嫨鐘舵��</option>
+                            <option value="1">姝e父</option>
+                            <option value="0">绂佺敤</option>
+                        </select>
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">宸ヤ綔鍙�: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="wrkNo" placeholder="璇疯緭鍏ュ伐浣滃彿">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鍙叆(checkBox): </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="inEnable" placeholder="璇疯緭鍏ュ彲鍏�(checkBox)">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鍙嚭(checkBox): </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="outEnable" placeholder="璇疯緭鍏ュ彲鍑�(checkBox)">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">澶囨敞: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="memo" placeholder="璇疯緭鍏ュ娉�">
+                    </div>
+                </div>
+
+             </div>
+        </div>
+        <hr class="layui-bg-gray">
+        <div class="layui-form-item text-right">
+            <button class="layui-btn" lay-filter="editSubmit" lay-submit="">淇濆瓨</button>
+            <button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">鍙栨秷</button>
+        </div>
+    </form>
+</script>
+</html>
+
diff --git a/src/main/webapp/views/admin/basCrnp/basCrnp_detail.html b/src/main/webapp/views/admin/basCrnp/basCrnp_detail.html
new file mode 100644
index 0000000..9c2f438
--- /dev/null
+++ b/src/main/webapp/views/admin/basCrnp/basCrnp_detail.html
@@ -0,0 +1,112 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="utf-8">
+    <title></title>
+    <meta name="renderer" content="webkit">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+    <link rel="stylesheet" href="../../static/layui/css/layui.css" media="all">
+    <link rel="stylesheet" href="../../static/css/cool.css" media="all">
+    <link rel="stylesheet" href="../../static/css/common.css" media="all">
+</head>
+<body>
+
+<!-- 璇︽儏 -->
+<div id="data-detail" class="layer_self_wrap">
+    <form id="detail" class="layui-form">
+    <!--
+        <div class="layui-inline"  style="display: none">
+            <label class="layui-form-label"><span class="not-null">*</span>缂栥��銆�鍙凤細</label>
+            <div class="layui-input-inline">
+                <input id="id" class="layui-input" type="text" placeholder="缂栧彿">
+            </div>
+        </div>
+    -->
+        <div class="layui-inline"  style="width:31%;">
+            <label class="layui-form-label"><span class="not-null">*</span>缂栥��銆�鍙凤細</label>
+            <div class="layui-input-inline">
+                <input id="crnNo" class="layui-input" type="text" onkeyup="check(this.id, 'basCrnp')" lay-verify="number" >
+            </div>
+        </div>
+        <div class="layui-inline"  style="width:31%;">
+            <label class="layui-form-label">鐘躲��銆�鎬侊細</label>
+            <div class="layui-input-inline">
+                <select id="status">
+                    <option value="" style="display: none"></option>
+                    <option value="1">姝e父</option>
+                    <option value="0">绂佺敤</option>
+                </select>
+            </div>
+        </div>
+        <div class="layui-inline"  style="width:31%;">
+            <label class="layui-form-label">宸� 浣� 鍙凤細</label>
+            <div class="layui-input-inline">
+                <input id="wrkNo" class="layui-input" type="text" lay-verify="number" >
+            </div>
+        </div>
+        <div class="layui-inline"  style="width:31%;">
+            <label class="layui-form-label" style="font-size: x-small">鍙叆(checkBox)锛�</label>
+            <div class="layui-input-inline">
+                <input id="inEnable" class="layui-input" type="text">
+            </div>
+        </div>
+        <div class="layui-inline"  style="width:31%;">
+            <label class="layui-form-label" style="font-size: x-small">鍙嚭(checkBox)锛�</label>
+            <div class="layui-input-inline">
+                <input id="outEnable" class="layui-input" type="text">
+            </div>
+        </div>
+        <div class="layui-inline"  style="width:31%;">
+            <label class="layui-form-label">鍒涘缓浜哄憳锛�</label>
+            <div class="layui-input-inline">
+                <input id="createBy" class="layui-input" type="text" lay-verify="number" >
+            </div>
+        </div>
+        <div class="layui-inline"  style="width:31%;">
+            <label class="layui-form-label">鍒涘缓鏃堕棿锛�</label>
+            <div class="layui-input-inline">
+                <input id="createTime$" class="layui-input" type="text" autocomplete="off">
+            </div>
+        </div>
+        <div class="layui-inline"  style="width:31%;">
+            <label class="layui-form-label">淇敼浜哄憳锛�</label>
+            <div class="layui-input-inline">
+                <input id="updateBy" class="layui-input" type="text" lay-verify="number" >
+            </div>
+        </div>
+        <div class="layui-inline"  style="width:31%;">
+            <label class="layui-form-label">淇敼鏃堕棿锛�</label>
+            <div class="layui-input-inline">
+                <input id="updateTime$" class="layui-input" type="text" autocomplete="off">
+            </div>
+        </div>
+        <div class="layui-inline"  style="width:31%;">
+            <label class="layui-form-label">澶囥��銆�娉細</label>
+            <div class="layui-input-inline">
+                <input id="memo" class="layui-input" type="text">
+            </div>
+        </div>
+
+
+        <hr class="layui-bg-gray">
+
+        <div id="data-detail-btn" class="layui-btn-container layui-form-item">
+            <div id="data-detail-submit-save" type="button" class="layui-btn layui-btn-normal" lay-submit lay-filter="save">淇濆瓨</div>
+            <div id="data-detail-submit-edit" type="button" class="layui-btn layui-btn-normal" lay-submit lay-filter="edit">淇敼</div>
+            <div id="data-detail-close" type="button" class="layui-btn" lay-submit lay-filter="close">鍏抽棴</div>
+        </div>
+
+        <div id="prompt">
+            娓╅Θ鎻愮ず锛氳浠旂粏濉啓鐩稿叧淇℃伅锛�<span class="extrude"><span class="not-null">*</span> 涓哄繀濉�夐」銆�</span>
+        </div>
+    </form>
+</div>
+</body>
+<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
+<script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/basCrnp/basCrnp.js" charset="utf-8"></script>
+</html>
+
diff --git a/src/main/webapp/views/admin/basCrnpErr/basCrnpErr.html b/src/main/webapp/views/admin/basCrnpErr/basCrnpErr.html
new file mode 100644
index 0000000..feb4e54
--- /dev/null
+++ b/src/main/webapp/views/admin/basCrnpErr/basCrnpErr.html
@@ -0,0 +1,98 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="utf-8">
+    <title></title>
+    <meta name="renderer" content="webkit">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+    <link rel="stylesheet" href="../../../static/layui/css/layui.css" media="all">
+    <link rel="stylesheet" href="../../../static/css/admin.css?v=318" media="all">
+    <link rel="stylesheet" href="../../../static/css/cool.css" media="all">
+</head>
+<body>
+
+<div class="layui-fluid">
+    <div class="layui-card">
+        <div class="layui-card-body">
+            <div class="layui-form toolbar" id="search-box">
+                <div class="layui-form-item">
+                    <div class="layui-inline">
+                        <div class="layui-input-inline">
+                            <input class="layui-input" type="text" name="id" placeholder="缂栧彿" autocomplete="off">
+                        </div>
+                    </div>
+                     <div class="layui-inline" style="width: 300px">
+                        <div class="layui-input-inline">
+                            <input class="layui-input layui-laydate-range" name="create_time" type="text" placeholder="璧峰鏃堕棿 - 缁堟鏃堕棿" autocomplete="off" style="width: 300px">
+                        </div>
+                    </div>
+                    <div class="layui-inline">
+                        <div class="layui-input-inline">
+                            <input class="layui-input" type="text" name="condition" placeholder="璇疯緭鍏�" autocomplete="off">
+                        </div>
+                    </div>
+                    <div class="layui-inline">&emsp;
+                        <button class="layui-btn icon-btn" lay-filter="search" lay-submit>
+                            <i class="layui-icon">&#xe615;</i>鎼滅储
+                        </button>
+                        <button class="layui-btn icon-btn" lay-filter="reset" lay-submit>
+                            <i class="layui-icon">&#xe666;</i>閲嶇疆
+                        </button>
+                    </div>
+                </div>
+            </div>
+            <table class="layui-hide" id="basCrnpErr" lay-filter="basCrnpErr"></table>
+        </div>
+    </div>
+</div>
+
+<script type="text/html" id="toolbar">
+    <div class="layui-btn-container">
+        <button class="layui-btn layui-btn-sm" id="btn-add" lay-event="addData">鏂板</button>
+        <button class="layui-btn layui-btn-sm layui-btn-danger" id="btn-delete" lay-event="deleteData">鍒犻櫎</button>
+        <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData" style="float: right">瀵煎嚭</button>
+    </div>
+</script>
+
+<script type="text/html" id="operate">
+    <a class="layui-btn layui-btn-primary layui-btn-xs btn-edit" lay-event="edit">淇敼</a>
+    <a class="layui-btn layui-btn-danger layui-btn-xs btn-edit" lay-event="del">鍒犻櫎</a>
+</script>
+
+<script type="text/javascript" src="../../../static/js/jquery/jquery-3.3.1.min.js"></script>
+<script type="text/javascript" src="../../../static/layui/layui.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../../static/js/common.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../../static/js/cool.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../../static/js/basCrnpErr/basCrnpErr.js" charset="utf-8"></script>
+</body>
+<!-- 琛ㄥ崟寮圭獥 -->
+<script type="text/html" id="editDialog">
+    <form id="detail" lay-filter="detail" class="layui-form admin-form model-form">
+        <input name="id" type="hidden">
+        <div class="layui-row">
+            <div class="layui-col-md12">
+                <div class="layui-form-item">
+                    <label class="layui-form-label">寮傚父鐮�: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="errorCode" placeholder="璇疯緭鍏ュ紓甯哥爜">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">寮傚父: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="errName" placeholder="璇疯緭鍏ュ紓甯�">
+                    </div>
+                </div>
+
+             </div>
+        </div>
+        <hr class="layui-bg-gray">
+        <div class="layui-form-item text-right">
+            <button class="layui-btn" lay-filter="editSubmit" lay-submit="">淇濆瓨</button>
+            <button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">鍙栨秷</button>
+        </div>
+    </form>
+</script>
+</html>
+
diff --git a/src/main/webapp/views/admin/basCrnpErr/basCrnpErr_detail.html b/src/main/webapp/views/admin/basCrnpErr/basCrnpErr_detail.html
new file mode 100644
index 0000000..b02a072
--- /dev/null
+++ b/src/main/webapp/views/admin/basCrnpErr/basCrnpErr_detail.html
@@ -0,0 +1,102 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="utf-8">
+    <title></title>
+    <meta name="renderer" content="webkit">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+    <link rel="stylesheet" href="../../static/layui/css/layui.css" media="all">
+    <link rel="stylesheet" href="../../static/css/cool.css" media="all">
+    <link rel="stylesheet" href="../../static/css/common.css" media="all">
+</head>
+<body>
+
+<!-- 璇︽儏 -->
+<div id="data-detail" class="layer_self_wrap">
+    <form id="detail" class="layui-form">
+    <!--
+        <div class="layui-inline"  style="display: none">
+            <label class="layui-form-label"><span class="not-null">*</span>缂栥��銆�鍙凤細</label>
+            <div class="layui-input-inline">
+                <input id="id" class="layui-input" type="text" placeholder="缂栧彿">
+            </div>
+        </div>
+    -->
+        <div class="layui-inline"  style="width:31%;">
+            <label class="layui-form-label"><span class="not-null">*</span>缂栥��銆�鍙凤細</label>
+            <div class="layui-input-inline">
+                <input id="id" class="layui-input" type="text" onkeyup="check(this.id, 'basCrnpErr')" lay-verify="number" >
+            </div>
+        </div>
+        <div class="layui-inline"  style="width:31%;">
+            <label class="layui-form-label">寮� 甯� 鐮侊細</label>
+            <div class="layui-input-inline">
+                <input id="errorCode" class="layui-input" type="text" lay-verify="number" >
+            </div>
+        </div>
+        <div class="layui-inline"  style="width:31%;">
+            <label class="layui-form-label">寮傘��銆�甯革細</label>
+            <div class="layui-input-inline">
+                <input id="errName" class="layui-input" type="text">
+            </div>
+        </div>
+        <div class="layui-inline"  style="width:31%;">
+            <label class="layui-form-label">淇敼浜哄憳锛�</label>
+            <div class="layui-input-inline cool-auto-complete">
+                <input id="modiUser" class="layui-input" type="text" lay-verify="number"  style="display: none">
+                <input id="modiUser$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="璇疯緭鍏�..." onfocus=this.blur()>
+                <div class="cool-auto-complete-window">
+                    <input class="cool-auto-complete-window-input" data-key="userQueryBymodiUser" onkeyup="autoLoad(this.getAttribute('data-key'))">
+                    <select class="cool-auto-complete-window-select" data-key="userQueryBymodiUserSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
+                    </select>
+                </div>
+            </div>
+        </div>
+        <div class="layui-inline"  style="width:31%;">
+            <label class="layui-form-label">淇敼鏃堕棿锛�</label>
+            <div class="layui-input-inline">
+                <input id="modiTime$" class="layui-input" type="text" autocomplete="off">
+            </div>
+        </div>
+        <div class="layui-inline"  style="width:31%;">
+            <label class="layui-form-label">娣诲姞浜哄憳锛�</label>
+            <div class="layui-input-inline cool-auto-complete">
+                <input id="appeUser" class="layui-input" type="text" lay-verify="number"  style="display: none">
+                <input id="appeUser$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="璇疯緭鍏�..." onfocus=this.blur()>
+                <div class="cool-auto-complete-window">
+                    <input class="cool-auto-complete-window-input" data-key="userQueryByappeUser" onkeyup="autoLoad(this.getAttribute('data-key'))">
+                    <select class="cool-auto-complete-window-select" data-key="userQueryByappeUserSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
+                    </select>
+                </div>
+            </div>
+        </div>
+        <div class="layui-inline"  style="width:31%;">
+            <label class="layui-form-label">娣诲姞鏃堕棿锛�</label>
+            <div class="layui-input-inline">
+                <input id="appeTime$" class="layui-input" type="text" autocomplete="off">
+            </div>
+        </div>
+
+
+        <hr class="layui-bg-gray">
+
+        <div id="data-detail-btn" class="layui-btn-container layui-form-item">
+            <div id="data-detail-submit-save" type="button" class="layui-btn layui-btn-normal" lay-submit lay-filter="save">淇濆瓨</div>
+            <div id="data-detail-submit-edit" type="button" class="layui-btn layui-btn-normal" lay-submit lay-filter="edit">淇敼</div>
+            <div id="data-detail-close" type="button" class="layui-btn" lay-submit lay-filter="close">鍏抽棴</div>
+        </div>
+
+        <div id="prompt">
+            娓╅Θ鎻愮ず锛氳浠旂粏濉啓鐩稿叧淇℃伅锛�<span class="extrude"><span class="not-null">*</span> 涓哄繀濉�夐」銆�</span>
+        </div>
+    </form>
+</div>
+</body>
+<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
+<script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/basCrnpErr/basCrnpErr.js" charset="utf-8"></script>
+</html>
+
diff --git a/src/main/webapp/views/admin/basCrnpErrLog/basCrnpErrLog.html b/src/main/webapp/views/admin/basCrnpErrLog/basCrnpErrLog.html
new file mode 100644
index 0000000..bbab790
--- /dev/null
+++ b/src/main/webapp/views/admin/basCrnpErrLog/basCrnpErrLog.html
@@ -0,0 +1,234 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="utf-8">
+    <title></title>
+    <meta name="renderer" content="webkit">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+    <link rel="stylesheet" href="../../../static/layui/css/layui.css" media="all">
+    <link rel="stylesheet" href="../../../static/css/admin.css?v=318" media="all">
+    <link rel="stylesheet" href="../../../static/css/cool.css" media="all">
+</head>
+<body>
+
+<div class="layui-fluid">
+    <div class="layui-card">
+        <div class="layui-card-body">
+            <div class="layui-form toolbar" id="search-box">
+                <div class="layui-form-item">
+                    <div class="layui-inline">
+                        <div class="layui-input-inline">
+                            <input class="layui-input" type="text" name="id" placeholder="缂栧彿" autocomplete="off">
+                        </div>
+                    </div>
+                     <div class="layui-inline" style="width: 300px">
+                        <div class="layui-input-inline">
+                            <input class="layui-input layui-laydate-range" name="create_time" type="text" placeholder="璧峰鏃堕棿 - 缁堟鏃堕棿" autocomplete="off" style="width: 300px">
+                        </div>
+                    </div>
+                    <div class="layui-inline">
+                        <div class="layui-input-inline">
+                            <input class="layui-input" type="text" name="condition" placeholder="璇疯緭鍏�" autocomplete="off">
+                        </div>
+                    </div>
+                    <div class="layui-inline">&emsp;
+                        <button class="layui-btn icon-btn" lay-filter="search" lay-submit>
+                            <i class="layui-icon">&#xe615;</i>鎼滅储
+                        </button>
+                        <button class="layui-btn icon-btn" lay-filter="reset" lay-submit>
+                            <i class="layui-icon">&#xe666;</i>閲嶇疆
+                        </button>
+                    </div>
+                </div>
+            </div>
+            <table class="layui-hide" id="basCrnpErrLog" lay-filter="basCrnpErrLog"></table>
+        </div>
+    </div>
+</div>
+
+<script type="text/html" id="toolbar">
+    <div class="layui-btn-container">
+<!--        <button class="layui-btn layui-btn-sm" id="btn-add" lay-event="addData">鏂板</button>-->
+        <button class="layui-btn layui-btn-sm layui-btn-danger" id="btn-delete" lay-event="deleteData">鍒犻櫎</button>
+        <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData" style="float: right">瀵煎嚭</button>
+    </div>
+</script>
+
+<script type="text/html" id="operate">
+<!--    <a class="layui-btn layui-btn-primary layui-btn-xs btn-edit" lay-event="edit">淇敼</a>-->
+    <a class="layui-btn layui-btn-danger layui-btn-xs btn-edit" lay-event="del">鍒犻櫎</a>
+</script>
+
+<script type="text/javascript" src="../../../static/js/jquery/jquery-3.3.1.min.js"></script>
+<script type="text/javascript" src="../../../static/layui/layui.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../../static/js/common.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../../static/js/cool.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../../static/js/basCrnpErrLog/basCrnpErrLog.js" charset="utf-8"></script>
+</body>
+<!-- 琛ㄥ崟寮圭獥 -->
+<script type="text/html" id="editDialog">
+    <form id="detail" lay-filter="detail" class="layui-form admin-form model-form">
+        <input name="id" type="hidden">
+        <div class="layui-row">
+            <div class="layui-col-md12">
+                <div class="layui-form-item">
+                    <label class="layui-form-label">宸ヤ綔鍙�: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="wrkNo" placeholder="璇疯緭鍏ュ伐浣滃彿">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鍙戠敓鏃堕棿: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="startTime" id="startTime$" placeholder="璇疯緭鍏ュ彂鐢熸椂闂�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">缁撴潫鏃堕棿: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="endTime" id="endTime$" placeholder="璇疯緭鍏ョ粨鏉熸椂闂�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">宸ヤ綔鐘舵��: </label>
+                    <div class="layui-input-block cool-auto-complete">
+                        <input class="layui-input" name="wrkSts" placeholder="璇疯緭鍏ュ伐浣滅姸鎬�" style="display: none">
+                        <input id="wrkSts$" name="wrkSts$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="璇疯緭鍏ュ伐浣滅姸鎬�" onfocus=this.blur()>
+                        <div class="cool-auto-complete-window">
+                            <input class="cool-auto-complete-window-input" data-key="basWrkStatusQueryBywrkSts" onkeyup="autoLoad(this.getAttribute('data-key'))">
+                            <select class="cool-auto-complete-window-select" data-key="basWrkStatusQueryBywrkStsSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
+                            </select>
+                        </div>
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鍏ュ嚭搴撶被鍨�: </label>
+                    <div class="layui-input-block cool-auto-complete">
+                        <input class="layui-input" name="ioType" placeholder="璇疯緭鍏ュ叆鍑哄簱绫诲瀷" style="display: none">
+                        <input id="ioType$" name="ioType$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="璇疯緭鍏ュ叆鍑哄簱绫诲瀷" onfocus=this.blur()>
+                        <div class="cool-auto-complete-window">
+                            <input class="cool-auto-complete-window-input" data-key="basWrkIotypeQueryByioType" onkeyup="autoLoad(this.getAttribute('data-key'))">
+                            <select class="cool-auto-complete-window-select" data-key="basWrkIotypeQueryByioTypeSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
+                            </select>
+                        </div>
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鍫嗗灈鏈哄彿: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="crnNo" placeholder="璇疯緭鍏ュ爢鍨涙満鍙�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鐩爣搴撲綅: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="locNo" placeholder="璇疯緭鍏ョ洰鏍囧簱浣�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鐩爣绔�: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="staNo" placeholder="璇疯緭鍏ョ洰鏍囩珯">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">婧愮珯: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="sourceStaNo" placeholder="璇疯緭鍏ユ簮绔�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">婧愬簱浣�: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="sourceLocNo" placeholder="璇疯緭鍏ユ簮搴撲綅">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鏉$爜: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="barcode" placeholder="璇疯緭鍏ユ潯鐮�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">寮傚父鐮�: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="errCode" placeholder="璇疯緭鍏ュ紓甯哥爜">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">寮傚父: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="error" placeholder="璇疯緭鍏ュ紓甯�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">寮傚父鎯呭喌: </label>
+                    <div class="layui-input-block">
+                        <select name="status">
+                            <option value="">璇烽�夋嫨寮傚父鎯呭喌</option>
+                            <option value="1">鏈鐞�</option>
+                            <option value="2">宸蹭慨澶�</option>
+                        </select>
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">娣诲姞鏃堕棿: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="createTime" id="createTime$" placeholder="璇疯緭鍏ユ坊鍔犳椂闂�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">娣诲姞浜哄憳: </label>
+                    <div class="layui-input-block cool-auto-complete">
+                        <input class="layui-input" name="createBy" placeholder="璇疯緭鍏ユ坊鍔犱汉鍛�" style="display: none">
+                        <input id="createBy$" name="createBy$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="璇疯緭鍏ユ坊鍔犱汉鍛�" onfocus=this.blur()>
+                        <div class="cool-auto-complete-window">
+                            <input class="cool-auto-complete-window-input" data-key="userQueryBycreateBy" onkeyup="autoLoad(this.getAttribute('data-key'))">
+                            <select class="cool-auto-complete-window-select" data-key="userQueryBycreateBySelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
+                            </select>
+                        </div>
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">淇敼鏃堕棿: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="updateTime" id="updateTime$" placeholder="璇疯緭鍏ヤ慨鏀规椂闂�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">淇敼浜哄憳: </label>
+                    <div class="layui-input-block cool-auto-complete">
+                        <input class="layui-input" name="updateBy" placeholder="璇疯緭鍏ヤ慨鏀逛汉鍛�" style="display: none">
+                        <input id="updateBy$" name="updateBy$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="璇疯緭鍏ヤ慨鏀逛汉鍛�" onfocus=this.blur()>
+                        <div class="cool-auto-complete-window">
+                            <input class="cool-auto-complete-window-input" data-key="userQueryByupdateBy" onkeyup="autoLoad(this.getAttribute('data-key'))">
+                            <select class="cool-auto-complete-window-select" data-key="userQueryByupdateBySelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
+                            </select>
+                        </div>
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">澶囨敞: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="memo" placeholder="璇疯緭鍏ュ娉�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">绯荤粺鐘舵�佹暟鎹�: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="systemStatus" placeholder="璇疯緭鍏ョ郴缁熺姸鎬佹暟鎹�">
+                    </div>
+                </div>
+
+             </div>
+        </div>
+        <hr class="layui-bg-gray">
+        <div class="layui-form-item text-right">
+            <button class="layui-btn" lay-filter="editSubmit" lay-submit="">淇濆瓨</button>
+            <button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">鍙栨秷</button>
+        </div>
+    </form>
+</script>
+</html>
+
diff --git a/src/main/webapp/views/admin/basCrnpErrLog/basCrnpErrLog_detail.html b/src/main/webapp/views/admin/basCrnpErrLog/basCrnpErrLog_detail.html
new file mode 100644
index 0000000..7212dcf
--- /dev/null
+++ b/src/main/webapp/views/admin/basCrnpErrLog/basCrnpErrLog_detail.html
@@ -0,0 +1,202 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="utf-8">
+    <title></title>
+    <meta name="renderer" content="webkit">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+    <link rel="stylesheet" href="../../static/layui/css/layui.css" media="all">
+    <link rel="stylesheet" href="../../static/css/cool.css" media="all">
+    <link rel="stylesheet" href="../../static/css/common.css" media="all">
+</head>
+<body>
+
+<!-- 璇︽儏 -->
+<div id="data-detail" class="layer_self_wrap">
+    <form id="detail" class="layui-form">
+    <!--
+        <div class="layui-inline"  style="display: none">
+            <label class="layui-form-label"><span class="not-null">*</span>缂栥��銆�鍙凤細</label>
+            <div class="layui-input-inline">
+                <input id="id" class="layui-input" type="text" placeholder="缂栧彿">
+            </div>
+        </div>
+    -->
+        <div class="layui-inline"  style="width:31%;">
+            <label class="layui-form-label"><span class="not-null">*</span>缂栥��銆�鍙凤細</label>
+            <div class="layui-input-inline">
+                <input id="id" class="layui-input" type="text" onkeyup="check(this.id, 'basCrnpErrLog')" lay-verify="number" >
+            </div>
+        </div>
+        <div class="layui-inline"  style="width:31%;">
+            <label class="layui-form-label">宸� 浣� 鍙凤細</label>
+            <div class="layui-input-inline">
+                <input id="wrkNo" class="layui-input" type="text" lay-verify="number" >
+            </div>
+        </div>
+        <div class="layui-inline"  style="width:31%;">
+            <label class="layui-form-label">鍙戠敓鏃堕棿锛�</label>
+            <div class="layui-input-inline">
+                <input id="startTime$" class="layui-input" type="text" autocomplete="off">
+            </div>
+        </div>
+        <div class="layui-inline"  style="width:31%;">
+            <label class="layui-form-label">缁撴潫鏃堕棿锛�</label>
+            <div class="layui-input-inline">
+                <input id="endTime$" class="layui-input" type="text" autocomplete="off">
+            </div>
+        </div>
+        <div class="layui-inline"  style="width:31%;">
+            <label class="layui-form-label">宸ヤ綔鐘舵�侊細</label>
+            <div class="layui-input-inline cool-auto-complete">
+                <input id="wrkSts" class="layui-input" type="text" lay-verify="number"  style="display: none">
+                <input id="wrkSts$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="璇疯緭鍏�..." onfocus=this.blur()>
+                <div class="cool-auto-complete-window">
+                    <input class="cool-auto-complete-window-input" data-key="basWrkStatusQueryBywrkSts" onkeyup="autoLoad(this.getAttribute('data-key'))">
+                    <select class="cool-auto-complete-window-select" data-key="basWrkStatusQueryBywrkStsSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
+                    </select>
+                </div>
+            </div>
+        </div>
+        <div class="layui-inline"  style="width:31%;">
+            <label class="layui-form-label">鍏ュ嚭搴撶被鍨嬶細</label>
+            <div class="layui-input-inline cool-auto-complete">
+                <input id="ioType" class="layui-input" type="text" lay-verify="number"  style="display: none">
+                <input id="ioType$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="璇疯緭鍏�..." onfocus=this.blur()>
+                <div class="cool-auto-complete-window">
+                    <input class="cool-auto-complete-window-input" data-key="basWrkIotypeQueryByioType" onkeyup="autoLoad(this.getAttribute('data-key'))">
+                    <select class="cool-auto-complete-window-select" data-key="basWrkIotypeQueryByioTypeSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
+                    </select>
+                </div>
+            </div>
+        </div>
+        <div class="layui-inline"  style="width:31%;">
+            <label class="layui-form-label">鍫嗗灈鏈哄彿锛�</label>
+            <div class="layui-input-inline">
+                <input id="crnNo" class="layui-input" type="text" lay-verify="number" >
+            </div>
+        </div>
+        <div class="layui-inline"  style="width:31%;">
+            <label class="layui-form-label">鐩爣搴撲綅锛�</label>
+            <div class="layui-input-inline">
+                <input id="locNo" class="layui-input" type="text">
+            </div>
+        </div>
+        <div class="layui-inline"  style="width:31%;">
+            <label class="layui-form-label">鐩� 鏍� 绔欙細</label>
+            <div class="layui-input-inline">
+                <input id="staNo" class="layui-input" type="text" lay-verify="number" >
+            </div>
+        </div>
+        <div class="layui-inline"  style="width:31%;">
+            <label class="layui-form-label">婧愩��銆�绔欙細</label>
+            <div class="layui-input-inline">
+                <input id="sourceStaNo" class="layui-input" type="text" lay-verify="number" >
+            </div>
+        </div>
+        <div class="layui-inline"  style="width:31%;">
+            <label class="layui-form-label">婧� 搴� 浣嶏細</label>
+            <div class="layui-input-inline">
+                <input id="sourceLocNo" class="layui-input" type="text">
+            </div>
+        </div>
+        <div class="layui-inline"  style="width:31%;">
+            <label class="layui-form-label">鏉°��銆�鐮侊細</label>
+            <div class="layui-input-inline">
+                <input id="barcode" class="layui-input" type="text">
+            </div>
+        </div>
+        <div class="layui-inline"  style="width:31%;">
+            <label class="layui-form-label">寮� 甯� 鐮侊細</label>
+            <div class="layui-input-inline">
+                <input id="errCode" class="layui-input" type="text" lay-verify="number" >
+            </div>
+        </div>
+        <div class="layui-inline"  style="width:31%;">
+            <label class="layui-form-label">寮傘��銆�甯革細</label>
+            <div class="layui-input-inline">
+                <input id="error" class="layui-input" type="text">
+            </div>
+        </div>
+        <div class="layui-inline"  style="width:31%;">
+            <label class="layui-form-label">寮傚父鎯呭喌锛�</label>
+            <div class="layui-input-inline">
+                <select id="status">
+                    <option value="" style="display: none"></option>
+                    <option value="1">鏈鐞�</option>
+                    <option value="2">宸蹭慨澶�</option>
+                </select>
+            </div>
+        </div>
+        <div class="layui-inline"  style="width:31%;">
+            <label class="layui-form-label">娣诲姞鏃堕棿锛�</label>
+            <div class="layui-input-inline">
+                <input id="createTime$" class="layui-input" type="text" autocomplete="off">
+            </div>
+        </div>
+        <div class="layui-inline"  style="width:31%;">
+            <label class="layui-form-label">娣诲姞浜哄憳锛�</label>
+            <div class="layui-input-inline cool-auto-complete">
+                <input id="createBy" class="layui-input" type="text" lay-verify="number"  style="display: none">
+                <input id="createBy$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="璇疯緭鍏�..." onfocus=this.blur()>
+                <div class="cool-auto-complete-window">
+                    <input class="cool-auto-complete-window-input" data-key="userQueryBycreateBy" onkeyup="autoLoad(this.getAttribute('data-key'))">
+                    <select class="cool-auto-complete-window-select" data-key="userQueryBycreateBySelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
+                    </select>
+                </div>
+            </div>
+        </div>
+        <div class="layui-inline"  style="width:31%;">
+            <label class="layui-form-label">淇敼鏃堕棿锛�</label>
+            <div class="layui-input-inline">
+                <input id="updateTime$" class="layui-input" type="text" autocomplete="off">
+            </div>
+        </div>
+        <div class="layui-inline"  style="width:31%;">
+            <label class="layui-form-label">淇敼浜哄憳锛�</label>
+            <div class="layui-input-inline cool-auto-complete">
+                <input id="updateBy" class="layui-input" type="text" lay-verify="number"  style="display: none">
+                <input id="updateBy$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="璇疯緭鍏�..." onfocus=this.blur()>
+                <div class="cool-auto-complete-window">
+                    <input class="cool-auto-complete-window-input" data-key="userQueryByupdateBy" onkeyup="autoLoad(this.getAttribute('data-key'))">
+                    <select class="cool-auto-complete-window-select" data-key="userQueryByupdateBySelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
+                    </select>
+                </div>
+            </div>
+        </div>
+        <div class="layui-inline"  style="width:31%;">
+            <label class="layui-form-label">澶囥��銆�娉細</label>
+            <div class="layui-input-inline">
+                <input id="memo" class="layui-input" type="text">
+            </div>
+        </div>
+        <div class="layui-inline"  style="width:31%;">
+            <label class="layui-form-label" style="font-size: x-small">绯荤粺鐘舵�佹暟鎹細</label>
+            <div class="layui-input-inline">
+                <input id="systemStatus" class="layui-input" type="text">
+            </div>
+        </div>
+
+
+        <hr class="layui-bg-gray">
+
+        <div id="data-detail-btn" class="layui-btn-container layui-form-item">
+            <div id="data-detail-submit-save" type="button" class="layui-btn layui-btn-normal" lay-submit lay-filter="save">淇濆瓨</div>
+            <div id="data-detail-submit-edit" type="button" class="layui-btn layui-btn-normal" lay-submit lay-filter="edit">淇敼</div>
+            <div id="data-detail-close" type="button" class="layui-btn" lay-submit lay-filter="close">鍏抽棴</div>
+        </div>
+
+        <div id="prompt">
+            娓╅Θ鎻愮ず锛氳浠旂粏濉啓鐩稿叧淇℃伅锛�<span class="extrude"><span class="not-null">*</span> 涓哄繀濉�夐」銆�</span>
+        </div>
+    </form>
+</div>
+</body>
+<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
+<script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/basCrnpErrLog/basCrnpErrLog.js" charset="utf-8"></script>
+</html>
+
diff --git a/src/main/webapp/views/admin/basCrnpOpt/basCrnpOpt.html b/src/main/webapp/views/admin/basCrnpOpt/basCrnpOpt.html
new file mode 100644
index 0000000..b51860e
--- /dev/null
+++ b/src/main/webapp/views/admin/basCrnpOpt/basCrnpOpt.html
@@ -0,0 +1,174 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="utf-8">
+    <title></title>
+    <meta name="renderer" content="webkit">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+    <link rel="stylesheet" href="../../../static/layui/css/layui.css" media="all">
+    <link rel="stylesheet" href="../../../static/css/admin.css?v=318" media="all">
+    <link rel="stylesheet" href="../../../static/css/cool.css" media="all">
+</head>
+<body>
+
+<div class="layui-fluid">
+    <div class="layui-card">
+        <div class="layui-card-body">
+            <div class="layui-form toolbar" id="search-box">
+                <div class="layui-form-item">
+                    <div class="layui-inline">
+                        <div class="layui-input-inline">
+                            <input class="layui-input" type="text" name="id" placeholder="缂栧彿" autocomplete="off">
+                        </div>
+                    </div>
+                     <div class="layui-inline" style="width: 300px">
+                        <div class="layui-input-inline">
+                            <input class="layui-input layui-laydate-range" name="create_time" type="text" placeholder="璧峰鏃堕棿 - 缁堟鏃堕棿" autocomplete="off" style="width: 300px">
+                        </div>
+                    </div>
+                    <div class="layui-inline">
+                        <div class="layui-input-inline">
+                            <input class="layui-input" type="text" name="condition" placeholder="璇疯緭鍏�" autocomplete="off">
+                        </div>
+                    </div>
+                    <div class="layui-inline">&emsp;
+                        <button class="layui-btn icon-btn" lay-filter="search" lay-submit>
+                            <i class="layui-icon">&#xe615;</i>鎼滅储
+                        </button>
+                        <button class="layui-btn icon-btn" lay-filter="reset" lay-submit>
+                            <i class="layui-icon">&#xe666;</i>閲嶇疆
+                        </button>
+                    </div>
+                </div>
+            </div>
+            <table class="layui-hide" id="basCrnpOpt" lay-filter="basCrnpOpt"></table>
+        </div>
+    </div>
+</div>
+
+<script type="text/html" id="toolbar">
+    <div class="layui-btn-container">
+<!--        <button class="layui-btn layui-btn-sm" id="btn-add" lay-event="addData">鏂板</button>-->
+        <button class="layui-btn layui-btn-sm layui-btn-danger" id="btn-delete" lay-event="deleteData">鍒犻櫎</button>
+        <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData" style="float: right">瀵煎嚭</button>
+    </div>
+</script>
+
+<script type="text/html" id="operate">
+<!--    <a class="layui-btn layui-btn-primary layui-btn-xs btn-edit" lay-event="edit">淇敼</a>-->
+    <a class="layui-btn layui-btn-danger layui-btn-xs btn-edit" lay-event="del">鍒犻櫎</a>
+</script>
+
+<script type="text/javascript" src="../../../static/js/jquery/jquery-3.3.1.min.js"></script>
+<script type="text/javascript" src="../../../static/layui/layui.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../../static/js/common.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../../static/js/cool.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../../static/js/basCrnpOpt/basCrnpOpt.js" charset="utf-8"></script>
+</body>
+<!-- 琛ㄥ崟寮圭獥 -->
+<script type="text/html" id="editDialog">
+    <form id="detail" lay-filter="detail" class="layui-form admin-form model-form">
+        <input name="id" type="hidden">
+        <div class="layui-row">
+            <div class="layui-col-md12">
+                <div class="layui-form-item">
+                    <label class="layui-form-label">宸ヤ綔鍙�: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="wrkNo" placeholder="璇疯緭鍏ュ伐浣滃彿">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鍫嗗灈鏈哄彿: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="crnNo" placeholder="璇疯緭鍏ュ爢鍨涙満鍙�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">涓嬪彂鏃堕棿: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="sendTime" id="sendTime$" placeholder="璇疯緭鍏ヤ笅鍙戞椂闂�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">浣滀笟: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="mode" placeholder="璇疯緭鍏ヤ綔涓�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">璧风偣搴撲綅: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="sourceLocNo" placeholder="璇疯緭鍏ヨ捣鐐瑰簱浣�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鐩爣搴撲綅: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="targetLocNo" placeholder="璇疯緭鍏ョ洰鏍囧簱浣�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">淇敼鏃堕棿: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="updateTime" id="updateTime$" placeholder="璇疯緭鍏ヤ慨鏀规椂闂�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">淇敼浜哄憳: </label>
+                    <div class="layui-input-block cool-auto-complete">
+                        <input class="layui-input" name="updateBy" placeholder="璇疯緭鍏ヤ慨鏀逛汉鍛�" style="display: none">
+                        <input id="updateBy$" name="updateBy$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="璇疯緭鍏ヤ慨鏀逛汉鍛�" onfocus=this.blur()>
+                        <div class="cool-auto-complete-window">
+                            <input class="cool-auto-complete-window-input" data-key="userQueryByupdateBy" onkeyup="autoLoad(this.getAttribute('data-key'))">
+                            <select class="cool-auto-complete-window-select" data-key="userQueryByupdateBySelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
+                            </select>
+                        </div>
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">澶囨敞: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="memo" placeholder="璇疯緭鍏ュ娉�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鍛戒护: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="command" placeholder="璇疯緭鍏ュ懡浠�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">绯荤粺鐘舵��: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="systemStatus" placeholder="璇疯緭鍏ョ郴缁熺姸鎬�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">涓嬪彂鐘舵��: </label>
+                    <div class="layui-input-block">
+                        <select name="send">
+                            <option value="">璇烽�夋嫨涓嬪彂鐘舵��</option>
+                            <option value="0">鏈笅鍙�</option>
+                            <option value="1">宸蹭笅鍙�</option>
+                        </select>
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">璇锋眰鍝嶅簲: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="response" placeholder="璇疯緭鍏ヨ姹傚搷搴�">
+                    </div>
+                </div>
+
+             </div>
+        </div>
+        <hr class="layui-bg-gray">
+        <div class="layui-form-item text-right">
+            <button class="layui-btn" lay-filter="editSubmit" lay-submit="">淇濆瓨</button>
+            <button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">鍙栨秷</button>
+        </div>
+    </form>
+</script>
+</html>
+
diff --git a/src/main/webapp/views/admin/basCrnpOpt/basCrnpOpt_detail.html b/src/main/webapp/views/admin/basCrnpOpt/basCrnpOpt_detail.html
new file mode 100644
index 0000000..93c6b2a
--- /dev/null
+++ b/src/main/webapp/views/admin/basCrnpOpt/basCrnpOpt_detail.html
@@ -0,0 +1,142 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="utf-8">
+    <title></title>
+    <meta name="renderer" content="webkit">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+    <link rel="stylesheet" href="../../static/layui/css/layui.css" media="all">
+    <link rel="stylesheet" href="../../static/css/cool.css" media="all">
+    <link rel="stylesheet" href="../../static/css/common.css" media="all">
+</head>
+<body>
+
+<!-- 璇︽儏 -->
+<div id="data-detail" class="layer_self_wrap">
+    <form id="detail" class="layui-form">
+    <!--
+        <div class="layui-inline"  style="display: none">
+            <label class="layui-form-label"><span class="not-null">*</span>缂栥��銆�鍙凤細</label>
+            <div class="layui-input-inline">
+                <input id="id" class="layui-input" type="text" placeholder="缂栧彿">
+            </div>
+        </div>
+    -->
+        <div class="layui-inline"  style="width:31%;">
+            <label class="layui-form-label"><span class="not-null">*</span>缂栥��銆�鍙凤細</label>
+            <div class="layui-input-inline">
+                <input id="id" class="layui-input" type="text" onkeyup="check(this.id, 'basCrnpOpt')" lay-verify="number" >
+            </div>
+        </div>
+        <div class="layui-inline"  style="width:31%;">
+            <label class="layui-form-label">宸� 浣� 鍙凤細</label>
+            <div class="layui-input-inline">
+                <input id="wrkNo" class="layui-input" type="text" lay-verify="number" >
+            </div>
+        </div>
+        <div class="layui-inline"  style="width:31%;">
+            <label class="layui-form-label">鍫嗗灈鏈哄彿锛�</label>
+            <div class="layui-input-inline">
+                <input id="crnNo" class="layui-input" type="text" lay-verify="number" >
+            </div>
+        </div>
+        <div class="layui-inline"  style="width:31%;">
+            <label class="layui-form-label">涓嬪彂鏃堕棿锛�</label>
+            <div class="layui-input-inline">
+                <input id="sendTime$" class="layui-input" type="text" autocomplete="off">
+            </div>
+        </div>
+        <div class="layui-inline"  style="width:31%;">
+            <label class="layui-form-label">浣溿��銆�涓氾細</label>
+            <div class="layui-input-inline">
+                <input id="mode" class="layui-input" type="text">
+            </div>
+        </div>
+        <div class="layui-inline"  style="width:31%;">
+            <label class="layui-form-label">璧风偣搴撲綅锛�</label>
+            <div class="layui-input-inline">
+                <input id="sourceLocNo" class="layui-input" type="text">
+            </div>
+        </div>
+        <div class="layui-inline"  style="width:31%;">
+            <label class="layui-form-label">鐩爣搴撲綅锛�</label>
+            <div class="layui-input-inline">
+                <input id="targetLocNo" class="layui-input" type="text">
+            </div>
+        </div>
+        <div class="layui-inline"  style="width:31%;">
+            <label class="layui-form-label">淇敼鏃堕棿锛�</label>
+            <div class="layui-input-inline">
+                <input id="updateTime$" class="layui-input" type="text" autocomplete="off">
+            </div>
+        </div>
+        <div class="layui-inline"  style="width:31%;">
+            <label class="layui-form-label">淇敼浜哄憳锛�</label>
+            <div class="layui-input-inline cool-auto-complete">
+                <input id="updateBy" class="layui-input" type="text" lay-verify="number"  style="display: none">
+                <input id="updateBy$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="璇疯緭鍏�..." onfocus=this.blur()>
+                <div class="cool-auto-complete-window">
+                    <input class="cool-auto-complete-window-input" data-key="userQueryByupdateBy" onkeyup="autoLoad(this.getAttribute('data-key'))">
+                    <select class="cool-auto-complete-window-select" data-key="userQueryByupdateBySelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
+                    </select>
+                </div>
+            </div>
+        </div>
+        <div class="layui-inline"  style="width:31%;">
+            <label class="layui-form-label">澶囥��銆�娉細</label>
+            <div class="layui-input-inline">
+                <input id="memo" class="layui-input" type="text">
+            </div>
+        </div>
+        <div class="layui-inline"  style="width:31%;">
+            <label class="layui-form-label">鍛姐��銆�浠わ細</label>
+            <div class="layui-input-inline">
+                <input id="command" class="layui-input" type="text">
+            </div>
+        </div>
+        <div class="layui-inline"  style="width:31%;">
+            <label class="layui-form-label">绯荤粺鐘舵�侊細</label>
+            <div class="layui-input-inline">
+                <input id="systemStatus" class="layui-input" type="text">
+            </div>
+        </div>
+        <div class="layui-inline"  style="width:31%;">
+            <label class="layui-form-label">涓嬪彂鐘舵�侊細</label>
+            <div class="layui-input-inline">
+                <select id="send">
+                    <option value="" style="display: none"></option>
+                    <option value="0">鏈笅鍙�</option>
+                    <option value="1">宸蹭笅鍙�</option>
+                </select>
+            </div>
+        </div>
+        <div class="layui-inline"  style="width:31%;">
+            <label class="layui-form-label">璇锋眰鍝嶅簲锛�</label>
+            <div class="layui-input-inline">
+                <input id="response" class="layui-input" type="text">
+            </div>
+        </div>
+
+
+        <hr class="layui-bg-gray">
+
+        <div id="data-detail-btn" class="layui-btn-container layui-form-item">
+            <div id="data-detail-submit-save" type="button" class="layui-btn layui-btn-normal" lay-submit lay-filter="save">淇濆瓨</div>
+            <div id="data-detail-submit-edit" type="button" class="layui-btn layui-btn-normal" lay-submit lay-filter="edit">淇敼</div>
+            <div id="data-detail-close" type="button" class="layui-btn" lay-submit lay-filter="close">鍏抽棴</div>
+        </div>
+
+        <div id="prompt">
+            娓╅Θ鎻愮ず锛氳浠旂粏濉啓鐩稿叧淇℃伅锛�<span class="extrude"><span class="not-null">*</span> 涓哄繀濉�夐」銆�</span>
+        </div>
+    </form>
+</div>
+</body>
+<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
+<script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/basCrnpOpt/basCrnpOpt.js" charset="utf-8"></script>
+</html>
+
diff --git a/src/main/webapp/views/admin/basLift/basLift.html b/src/main/webapp/views/admin/basLift/basLift.html
deleted file mode 100644
index 8028c2f..0000000
--- a/src/main/webapp/views/admin/basLift/basLift.html
+++ /dev/null
@@ -1,109 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
-    <meta charset="utf-8">
-    <title></title>
-    <meta name="renderer" content="webkit">
-    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
-    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
-    <link rel="stylesheet" href="../../../static/layui/css/layui.css" media="all">
-    <link rel="stylesheet" href="../../../static/css/admin.css?v=318" media="all">
-    <link rel="stylesheet" href="../../../static/css/cool.css" media="all">
-</head>
-<body>
-
-<div class="layui-fluid">
-    <div class="layui-card">
-        <div class="layui-card-body">
-            <div class="layui-form toolbar" id="search-box">
-                <div class="layui-form-item">
-                    <div class="layui-inline">
-                        <div class="layui-input-inline">
-                            <input class="layui-input" type="text" name="id" placeholder="缂栧彿" autocomplete="off">
-                        </div>
-                    </div>
-                     <div class="layui-inline" style="width: 300px">
-                        <div class="layui-input-inline">
-                            <input class="layui-input layui-laydate-range" name="create_time" type="text" placeholder="璧峰鏃堕棿 - 缁堟鏃堕棿" autocomplete="off" style="width: 300px">
-                        </div>
-                    </div>
-                    <div class="layui-inline">
-                        <div class="layui-input-inline">
-                            <input class="layui-input" type="text" name="condition" placeholder="璇疯緭鍏�" autocomplete="off">
-                        </div>
-                    </div>
-                    <div class="layui-inline">&emsp;
-                        <button class="layui-btn icon-btn" lay-filter="search" lay-submit>
-                            <i class="layui-icon">&#xe615;</i>鎼滅储
-                        </button>
-                        <button class="layui-btn icon-btn" lay-filter="reset" lay-submit>
-                            <i class="layui-icon">&#xe666;</i>閲嶇疆
-                        </button>
-                    </div>
-                </div>
-            </div>
-            <table class="layui-hide" id="basLift" lay-filter="basLift"></table>
-        </div>
-    </div>
-</div>
-
-<script type="text/html" id="toolbar">
-    <div class="layui-btn-container">
-        <button class="layui-btn layui-btn-sm" id="btn-add" lay-event="addData">鏂板</button>
-        <button class="layui-btn layui-btn-sm layui-btn-danger" id="btn-delete" lay-event="deleteData">鍒犻櫎</button>
-        <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData" style="float: right">瀵煎嚭</button>
-    </div>
-</script>
-
-<script type="text/html" id="operate">
-    <a class="layui-btn layui-btn-primary layui-btn-xs btn-edit" lay-event="edit">淇敼</a>
-    <a class="layui-btn layui-btn-danger layui-btn-xs btn-edit" lay-event="del">鍒犻櫎</a>
-</script>
-
-<script type="text/javascript" src="../../../static/js/jquery/jquery-3.3.1.min.js"></script>
-<script type="text/javascript" src="../../../static/layui/layui.js" charset="utf-8"></script>
-<script type="text/javascript" src="../../../static/js/common.js" charset="utf-8"></script>
-<script type="text/javascript" src="../../../static/js/cool.js" charset="utf-8"></script>
-<script type="text/javascript" src="../../../static/js/basLift/basLift.js" charset="utf-8"></script>
-</body>
-<!-- 琛ㄥ崟寮圭獥 -->
-<script type="text/html" id="editDialog">
-    <form id="detail" lay-filter="detail" class="layui-form admin-form model-form">
-        <input name="id" type="hidden">
-        <div class="layui-row">
-            <div class="layui-col-md12">
-                <div class="layui-form-item">
-                    <label class="layui-form-label layui-form-required">鎻愬崌鏈哄彿: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="liftNo" placeholder="璇疯緭鍏ユ彁鍗囨満鍙�" lay-vertype="tips" lay-verify="required">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">鎻愬崌鏈哄潗鏍�: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="point" placeholder="璇疯緭鍏ユ彁鍗囨満鍧愭爣">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">绔欑偣鍒楄〃: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="stationList" placeholder="璇疯緭鍏ョ珯鐐瑰垪琛�">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">澶囨敞: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="memo" placeholder="璇疯緭鍏ュ娉�">
-                    </div>
-                </div>
-             </div>
-        </div>
-        <hr class="layui-bg-gray">
-        <div class="layui-form-item text-right">
-            <button class="layui-btn" lay-filter="editSubmit" lay-submit="">淇濆瓨</button>
-            <button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">鍙栨秷</button>
-        </div>
-    </form>
-</script>
-</html>
-
diff --git a/src/main/webapp/views/admin/basLiftErr/basLiftErr.html b/src/main/webapp/views/admin/basLiftErr/basLiftErr.html
deleted file mode 100644
index c565951..0000000
--- a/src/main/webapp/views/admin/basLiftErr/basLiftErr.html
+++ /dev/null
@@ -1,134 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
-    <meta charset="utf-8">
-    <title></title>
-    <meta name="renderer" content="webkit">
-    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
-    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
-    <link rel="stylesheet" href="../../../static/layui/css/layui.css" media="all">
-    <link rel="stylesheet" href="../../../static/css/admin.css?v=318" media="all">
-    <link rel="stylesheet" href="../../../static/css/cool.css" media="all">
-</head>
-<body>
-
-<div class="layui-fluid">
-    <div class="layui-card">
-        <div class="layui-card-body">
-            <div class="layui-form toolbar" id="search-box">
-                <div class="layui-form-item">
-                    <div class="layui-inline">
-                        <div class="layui-input-inline">
-                            <input class="layui-input" type="text" name="errorCode" placeholder="寮傚父鐮�" autocomplete="off">
-                        </div>
-                    </div>
-                     <div class="layui-inline" style="width: 300px">
-                        <div class="layui-input-inline">
-                            <input class="layui-input layui-laydate-range" name="create_time" type="text" placeholder="璧峰鏃堕棿 - 缁堟鏃堕棿" autocomplete="off" style="width: 300px">
-                        </div>
-                    </div>
-                    <div class="layui-inline">
-                        <div class="layui-input-inline">
-                            <input class="layui-input" type="text" name="condition" placeholder="璇疯緭鍏�" autocomplete="off">
-                        </div>
-                    </div>
-                    <div class="layui-inline">&emsp;
-                        <button class="layui-btn icon-btn" lay-filter="search" lay-submit>
-                            <i class="layui-icon">&#xe615;</i>鎼滅储
-                        </button>
-                        <button class="layui-btn icon-btn" lay-filter="reset" lay-submit>
-                            <i class="layui-icon">&#xe666;</i>閲嶇疆
-                        </button>
-                    </div>
-                </div>
-            </div>
-            <table class="layui-hide" id="basLiftErr" lay-filter="basLiftErr"></table>
-        </div>
-    </div>
-</div>
-
-<script type="text/html" id="toolbar">
-    <div class="layui-btn-container">
-        <button class="layui-btn layui-btn-sm" id="btn-add" lay-event="addData">鏂板</button>
-        <button class="layui-btn layui-btn-sm layui-btn-danger" id="btn-delete" lay-event="deleteData">鍒犻櫎</button>
-        <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData" style="float: right">瀵煎嚭</button>
-    </div>
-</script>
-
-<script type="text/html" id="operate">
-    <a class="layui-btn layui-btn-primary layui-btn-xs btn-edit" lay-event="edit">淇敼</a>
-    <a class="layui-btn layui-btn-danger layui-btn-xs btn-edit" lay-event="del">鍒犻櫎</a>
-</script>
-
-<script type="text/javascript" src="../../../static/js/jquery/jquery-3.3.1.min.js"></script>
-<script type="text/javascript" src="../../../static/layui/layui.js" charset="utf-8"></script>
-<script type="text/javascript" src="../../../static/js/common.js" charset="utf-8"></script>
-<script type="text/javascript" src="../../../static/js/cool.js" charset="utf-8"></script>
-<script type="text/javascript" src="../../../static/js/basLiftErr/basLiftErr.js" charset="utf-8"></script>
-</body>
-<!-- 琛ㄥ崟寮圭獥 -->
-<script type="text/html" id="editDialog">
-    <form id="detail" lay-filter="detail" class="layui-form admin-form model-form">
-        <input name="id" type="hidden">
-        <div class="layui-row">
-            <div class="layui-col-md12">
-                <div class="layui-form-item">
-                    <label class="layui-form-label layui-form-required">寮傚父鐮�: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="errorCode" placeholder="璇疯緭鍏ュ紓甯哥爜" lay-vertype="tips" lay-verify="required">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">寮傚父: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="errName" placeholder="璇疯緭鍏ュ紓甯�">
-                    </div>
-                </div>
-<!--                <div class="layui-form-item">-->
-<!--                    <label class="layui-form-label">淇敼浜哄憳: </label>-->
-<!--                    <div class="layui-input-block cool-auto-complete">-->
-<!--                        <input class="layui-input" name="modiUser" placeholder="璇疯緭鍏ヤ慨鏀逛汉鍛�" style="display: none">-->
-<!--                        <input id="modiUser$" name="modiUser$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="璇疯緭鍏ヤ慨鏀逛汉鍛�" onfocus=this.blur()>-->
-<!--                        <div class="cool-auto-complete-window">-->
-<!--                            <input class="cool-auto-complete-window-input" data-key="userQueryBymodiUser" onkeyup="autoLoad(this.getAttribute('data-key'))">-->
-<!--                            <select class="cool-auto-complete-window-select" data-key="userQueryBymodiUserSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">-->
-<!--                            </select>-->
-<!--                        </div>-->
-<!--                    </div>-->
-<!--                </div>-->
-<!--                <div class="layui-form-item">-->
-<!--                    <label class="layui-form-label">淇敼鏃堕棿: </label>-->
-<!--                    <div class="layui-input-block">-->
-<!--                        <input class="layui-input" name="modiTime" id="modiTime$" placeholder="璇疯緭鍏ヤ慨鏀规椂闂�">-->
-<!--                    </div>-->
-<!--                </div>-->
-<!--                <div class="layui-form-item">-->
-<!--                    <label class="layui-form-label">娣诲姞浜哄憳: </label>-->
-<!--                    <div class="layui-input-block cool-auto-complete">-->
-<!--                        <input class="layui-input" name="appeUser" placeholder="璇疯緭鍏ユ坊鍔犱汉鍛�" style="display: none">-->
-<!--                        <input id="appeUser$" name="appeUser$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="璇疯緭鍏ユ坊鍔犱汉鍛�" onfocus=this.blur()>-->
-<!--                        <div class="cool-auto-complete-window">-->
-<!--                            <input class="cool-auto-complete-window-input" data-key="userQueryByappeUser" onkeyup="autoLoad(this.getAttribute('data-key'))">-->
-<!--                            <select class="cool-auto-complete-window-select" data-key="userQueryByappeUserSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">-->
-<!--                            </select>-->
-<!--                        </div>-->
-<!--                    </div>-->
-<!--                </div>-->
-<!--                <div class="layui-form-item">-->
-<!--                    <label class="layui-form-label">娣诲姞鏃堕棿: </label>-->
-<!--                    <div class="layui-input-block">-->
-<!--                        <input class="layui-input" name="appeTime" id="appeTime$" placeholder="璇疯緭鍏ユ坊鍔犳椂闂�">-->
-<!--                    </div>-->
-<!--                </div>-->
-
-             </div>
-        </div>
-        <hr class="layui-bg-gray">
-        <div class="layui-form-item text-right">
-            <button class="layui-btn" lay-filter="editSubmit" lay-submit="">淇濆瓨</button>
-            <button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">鍙栨秷</button>
-        </div>
-    </form>
-</script>
-</html>
-
diff --git a/src/main/webapp/views/admin/basLiftErrLog/basLiftErrLog.html b/src/main/webapp/views/admin/basLiftErrLog/basLiftErrLog.html
deleted file mode 100644
index 7886300..0000000
--- a/src/main/webapp/views/admin/basLiftErrLog/basLiftErrLog.html
+++ /dev/null
@@ -1,240 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
-    <meta charset="utf-8">
-    <title></title>
-    <meta name="renderer" content="webkit">
-    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
-    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
-    <link rel="stylesheet" href="../../../static/layui/css/layui.css" media="all">
-    <link rel="stylesheet" href="../../../static/css/admin.css?v=318" media="all">
-    <link rel="stylesheet" href="../../../static/css/cool.css" media="all">
-</head>
-<body>
-
-<div class="layui-fluid">
-    <div class="layui-card">
-        <div class="layui-card-body">
-            <div class="layui-form toolbar" id="search-box">
-                <div class="layui-form-item">
-                    <div class="layui-inline">
-                        <div class="layui-input-inline">
-                            <input class="layui-input" type="text" name="id" placeholder="缂栧彿" autocomplete="off">
-                        </div>
-                    </div>
-                     <div class="layui-inline" style="width: 300px">
-                        <div class="layui-input-inline">
-                            <input class="layui-input layui-laydate-range" name="create_time" type="text" placeholder="璧峰鏃堕棿 - 缁堟鏃堕棿" autocomplete="off" style="width: 300px">
-                        </div>
-                    </div>
-                    <div class="layui-inline">
-                        <div class="layui-input-inline">
-                            <input class="layui-input" type="text" name="condition" placeholder="璇疯緭鍏�" autocomplete="off">
-                        </div>
-                    </div>
-                    <div class="layui-inline">&emsp;
-                        <button class="layui-btn icon-btn" lay-filter="search" lay-submit>
-                            <i class="layui-icon">&#xe615;</i>鎼滅储
-                        </button>
-                        <button class="layui-btn icon-btn" lay-filter="reset" lay-submit>
-                            <i class="layui-icon">&#xe666;</i>閲嶇疆
-                        </button>
-                    </div>
-                </div>
-            </div>
-            <table class="layui-hide" id="basLiftErrLog" lay-filter="basLiftErrLog"></table>
-        </div>
-    </div>
-</div>
-
-<script type="text/html" id="toolbar">
-    <div class="layui-btn-container">
-<!--        <button class="layui-btn layui-btn-sm" id="btn-add" lay-event="addData">鏂板</button>-->
-<!--        <button class="layui-btn layui-btn-sm layui-btn-danger" id="btn-delete" lay-event="deleteData">鍒犻櫎</button>-->
-        <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData" style="float: right">瀵煎嚭</button>
-    </div>
-</script>
-
-<script type="text/html" id="operate">
-    <a class="layui-btn layui-btn-primary layui-btn-xs btn-edit" lay-event="edit">淇敼</a>
-    <a class="layui-btn layui-btn-danger layui-btn-xs btn-edit" lay-event="del">鍒犻櫎</a>
-</script>
-
-<script type="text/javascript" src="../../../static/js/jquery/jquery-3.3.1.min.js"></script>
-<script type="text/javascript" src="../../../static/layui/layui.js" charset="utf-8"></script>
-<script type="text/javascript" src="../../../static/js/common.js" charset="utf-8"></script>
-<script type="text/javascript" src="../../../static/js/cool.js" charset="utf-8"></script>
-<script type="text/javascript" src="../../../static/js/basLiftErrLog/basLiftErrLog.js" charset="utf-8"></script>
-</body>
-<!-- 琛ㄥ崟寮圭獥 -->
-<script type="text/html" id="editDialog">
-    <form id="detail" lay-filter="detail" class="layui-form admin-form model-form">
-        <input name="id" type="hidden">
-        <div class="layui-row">
-            <div class="layui-col-md12">
-                <div class="layui-form-item">
-                    <label class="layui-form-label">缂栧彿: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="uuid" placeholder="璇疯緭鍏ョ紪鍙�">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">宸ヤ綔鍙�: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="wrkNo" placeholder="璇疯緭鍏ュ伐浣滃彿">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">鍙戠敓鏃堕棿: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="startTime" id="startTime$" placeholder="璇疯緭鍏ュ彂鐢熸椂闂�">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">缁撴潫鏃堕棿: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="endTime" id="endTime$" placeholder="璇疯緭鍏ョ粨鏉熸椂闂�">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">宸ヤ綔鐘舵��: </label>
-                    <div class="layui-input-block cool-auto-complete">
-                        <input class="layui-input" name="wrkSts" placeholder="璇疯緭鍏ュ伐浣滅姸鎬�" style="display: none">
-                        <input id="wrkSts$" name="wrkSts$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="璇疯緭鍏ュ伐浣滅姸鎬�" onfocus=this.blur()>
-                        <div class="cool-auto-complete-window">
-                            <input class="cool-auto-complete-window-input" data-key="basWrkStatusQueryBywrkSts" onkeyup="autoLoad(this.getAttribute('data-key'))">
-                            <select class="cool-auto-complete-window-select" data-key="basWrkStatusQueryBywrkStsSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
-                            </select>
-                        </div>
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">鍏ュ嚭搴撶被鍨�: </label>
-                    <div class="layui-input-block cool-auto-complete">
-                        <input class="layui-input" name="ioType" placeholder="璇疯緭鍏ュ叆鍑哄簱绫诲瀷" style="display: none">
-                        <input id="ioType$" name="ioType$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="璇疯緭鍏ュ叆鍑哄簱绫诲瀷" onfocus=this.blur()>
-                        <div class="cool-auto-complete-window">
-                            <input class="cool-auto-complete-window-input" data-key="basWrkIotypeQueryByioType" onkeyup="autoLoad(this.getAttribute('data-key'))">
-                            <select class="cool-auto-complete-window-select" data-key="basWrkIotypeQueryByioTypeSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
-                            </select>
-                        </div>
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">鎻愬崌鏈�: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="liftNo" placeholder="璇疯緭鍏ユ彁鍗囨満">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">plc: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="plcNo" placeholder="璇疯緭鍏lc">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">鐩爣搴撲綅: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="locNo" placeholder="璇疯緭鍏ョ洰鏍囧簱浣�">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">鐩爣绔�: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="staNo" placeholder="璇疯緭鍏ョ洰鏍囩珯">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">婧愮珯: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="sourceStaNo" placeholder="璇疯緭鍏ユ簮绔�">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">婧愬簱浣�: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="sourceLocNo" placeholder="璇疯緭鍏ユ簮搴撲綅">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">鏉$爜: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="barcode" placeholder="璇疯緭鍏ユ潯鐮�">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">寮傚父鐮�: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="errCode" placeholder="璇疯緭鍏ュ紓甯哥爜">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">寮傚父: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="error" placeholder="璇疯緭鍏ュ紓甯�">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">寮傚父鎯呭喌: </label>
-                    <div class="layui-input-block">
-                        <select name="status">
-                            <option value="">璇烽�夋嫨寮傚父鎯呭喌</option>
-                            <option value="1">鏈鐞�</option>
-                            <option value="2">宸蹭慨澶�</option>
-                        </select>
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">娣诲姞鏃堕棿: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="createTime" id="createTime$" placeholder="璇疯緭鍏ユ坊鍔犳椂闂�">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">娣诲姞浜哄憳: </label>
-                    <div class="layui-input-block cool-auto-complete">
-                        <input class="layui-input" name="createBy" placeholder="璇疯緭鍏ユ坊鍔犱汉鍛�" style="display: none">
-                        <input id="createBy$" name="createBy$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="璇疯緭鍏ユ坊鍔犱汉鍛�" onfocus=this.blur()>
-                        <div class="cool-auto-complete-window">
-                            <input class="cool-auto-complete-window-input" data-key="userQueryBycreateBy" onkeyup="autoLoad(this.getAttribute('data-key'))">
-                            <select class="cool-auto-complete-window-select" data-key="userQueryBycreateBySelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
-                            </select>
-                        </div>
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">淇敼鏃堕棿: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="updateTime" id="updateTime$" placeholder="璇疯緭鍏ヤ慨鏀规椂闂�">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">淇敼浜哄憳: </label>
-                    <div class="layui-input-block cool-auto-complete">
-                        <input class="layui-input" name="updateBy" placeholder="璇疯緭鍏ヤ慨鏀逛汉鍛�" style="display: none">
-                        <input id="updateBy$" name="updateBy$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="璇疯緭鍏ヤ慨鏀逛汉鍛�" onfocus=this.blur()>
-                        <div class="cool-auto-complete-window">
-                            <input class="cool-auto-complete-window-input" data-key="userQueryByupdateBy" onkeyup="autoLoad(this.getAttribute('data-key'))">
-                            <select class="cool-auto-complete-window-select" data-key="userQueryByupdateBySelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
-                            </select>
-                        </div>
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">澶囨敞: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="memo" placeholder="璇疯緭鍏ュ娉�">
-                    </div>
-                </div>
-
-             </div>
-        </div>
-        <hr class="layui-bg-gray">
-        <div class="layui-form-item text-right">
-            <button class="layui-btn" lay-filter="editSubmit" lay-submit="">淇濆瓨</button>
-            <button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">鍙栨秷</button>
-        </div>
-    </form>
-</script>
-</html>
-
diff --git a/src/main/webapp/views/admin/basLiftOpt/basLiftOpt.html b/src/main/webapp/views/admin/basLiftOpt/basLiftOpt.html
deleted file mode 100644
index 5656634..0000000
--- a/src/main/webapp/views/admin/basLiftOpt/basLiftOpt.html
+++ /dev/null
@@ -1,134 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
-    <meta charset="utf-8">
-    <title></title>
-    <meta name="renderer" content="webkit">
-    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
-    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
-    <link rel="stylesheet" href="../../../static/layui/css/layui.css" media="all">
-    <link rel="stylesheet" href="../../../static/css/admin.css?v=318" media="all">
-    <link rel="stylesheet" href="../../../static/css/cool.css" media="all">
-</head>
-<body>
-
-<div class="layui-fluid">
-    <div class="layui-card">
-        <div class="layui-card-body">
-            <div class="layui-form toolbar" id="search-box">
-                <div class="layui-form-item">
-                    <div class="layui-inline">
-                        <div class="layui-input-inline">
-                            <input class="layui-input" type="text" name="id" placeholder="缂栧彿" autocomplete="off">
-                        </div>
-                    </div>
-                     <div class="layui-inline" style="width: 300px">
-                        <div class="layui-input-inline">
-                            <input class="layui-input layui-laydate-range" name="create_time" type="text" placeholder="璧峰鏃堕棿 - 缁堟鏃堕棿" autocomplete="off" style="width: 300px">
-                        </div>
-                    </div>
-                    <div class="layui-inline">
-                        <div class="layui-input-inline">
-                            <input class="layui-input" type="text" name="condition" placeholder="璇疯緭鍏�" autocomplete="off">
-                        </div>
-                    </div>
-                    <div class="layui-inline">&emsp;
-                        <button class="layui-btn icon-btn" lay-filter="search" lay-submit>
-                            <i class="layui-icon">&#xe615;</i>鎼滅储
-                        </button>
-                        <button class="layui-btn icon-btn" lay-filter="reset" lay-submit>
-                            <i class="layui-icon">&#xe666;</i>閲嶇疆
-                        </button>
-                    </div>
-                </div>
-            </div>
-            <table class="layui-hide" id="basLiftOpt" lay-filter="basLiftOpt"></table>
-        </div>
-    </div>
-</div>
-
-<script type="text/html" id="toolbar">
-    <div class="layui-btn-container">
-<!--        <button class="layui-btn layui-btn-sm" id="btn-add" lay-event="addData">鏂板</button>-->
-<!--        <button class="layui-btn layui-btn-sm layui-btn-danger" id="btn-delete" lay-event="deleteData">鍒犻櫎</button>-->
-        <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData" style="float: right">瀵煎嚭</button>
-    </div>
-</script>
-
-<script type="text/html" id="operate">
-    <a class="layui-btn layui-btn-primary layui-btn-xs btn-edit" lay-event="edit">淇敼</a>
-    <a class="layui-btn layui-btn-danger layui-btn-xs btn-edit" lay-event="del">鍒犻櫎</a>
-</script>
-
-<script type="text/javascript" src="../../../static/js/jquery/jquery-3.3.1.min.js"></script>
-<script type="text/javascript" src="../../../static/layui/layui.js" charset="utf-8"></script>
-<script type="text/javascript" src="../../../static/js/common.js" charset="utf-8"></script>
-<script type="text/javascript" src="../../../static/js/cool.js" charset="utf-8"></script>
-<script type="text/javascript" src="../../../static/js/basLiftOpt/basLiftOpt.js" charset="utf-8"></script>
-</body>
-<!-- 琛ㄥ崟寮圭獥 -->
-<script type="text/html" id="editDialog">
-    <form id="detail" lay-filter="detail" class="layui-form admin-form model-form">
-        <input name="id" type="hidden">
-        <div class="layui-row">
-            <div class="layui-col-md12">
-                <div class="layui-form-item">
-                    <label class="layui-form-label">浠诲姟鍙�: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="wrkNo" placeholder="璇疯緭鍏ヤ换鍔″彿">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">鎻愬崌鏈哄彿: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="liftNo" placeholder="璇疯緭鍏ユ彁鍗囨満鍙�">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">涓嬪彂鏃堕棿: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="sendTime" id="sendTime$" placeholder="璇疯緭鍏ヤ笅鍙戞椂闂�">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">淇敼鏃堕棿: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="updateTime" id="updateTime$" placeholder="璇疯緭鍏ヤ慨鏀规椂闂�">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">淇敼浜哄憳: </label>
-                    <div class="layui-input-block cool-auto-complete">
-                        <input class="layui-input" name="updateBy" placeholder="璇疯緭鍏ヤ慨鏀逛汉鍛�" style="display: none">
-                        <input id="updateBy$" name="updateBy$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="璇疯緭鍏ヤ慨鏀逛汉鍛�" onfocus=this.blur()>
-                        <div class="cool-auto-complete-window">
-                            <input class="cool-auto-complete-window-input" data-key="userQueryByupdateBy" onkeyup="autoLoad(this.getAttribute('data-key'))">
-                            <select class="cool-auto-complete-window-select" data-key="userQueryByupdateBySelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
-                            </select>
-                        </div>
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">澶囨敞: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="memo" placeholder="璇疯緭鍏ュ娉�">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">鍛戒护: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="command" placeholder="璇疯緭鍏ュ懡浠�">
-                    </div>
-                </div>
-
-             </div>
-        </div>
-        <hr class="layui-bg-gray">
-        <div class="layui-form-item text-right">
-            <button class="layui-btn" lay-filter="editSubmit" lay-submit="">淇濆瓨</button>
-            <button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">鍙栨秷</button>
-        </div>
-    </form>
-</script>
-</html>
-
diff --git a/src/main/webapp/views/admin/basShuttle/basShuttle.html b/src/main/webapp/views/admin/basShuttle/basShuttle.html
deleted file mode 100644
index 4615822..0000000
--- a/src/main/webapp/views/admin/basShuttle/basShuttle.html
+++ /dev/null
@@ -1,160 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
-    <meta charset="utf-8">
-    <title></title>
-    <meta name="renderer" content="webkit">
-    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
-    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
-    <link rel="stylesheet" href="../../../static/layui/css/layui.css" media="all">
-    <link rel="stylesheet" href="../../../static/css/admin.css?v=318" media="all">
-    <link rel="stylesheet" href="../../../static/css/cool.css" media="all">
-</head>
-<body>
-
-<div class="layui-fluid">
-    <div class="layui-card">
-        <div class="layui-card-body">
-            <div class="layui-form toolbar" id="search-box">
-                <div class="layui-form-item">
-                    <div class="layui-inline">
-                        <div class="layui-input-inline">
-                            <input class="layui-input" type="text" name="shuttle_no" placeholder="鍥涘悜绌挎杞﹀彿" autocomplete="off">
-                        </div>
-                    </div>
-                    <div class="layui-inline">
-                        <div class="layui-input-inline">
-                            <input class="layui-input" type="text" name="condition" placeholder="璇疯緭鍏�" autocomplete="off">
-                        </div>
-                    </div>
-                    <div class="layui-inline">&emsp;
-                        <button class="layui-btn icon-btn" lay-filter="search" lay-submit>
-                            <i class="layui-icon">&#xe615;</i>鎼滅储
-                        </button>
-                        <button class="layui-btn icon-btn" lay-filter="reset" lay-submit>
-                            <i class="layui-icon">&#xe666;</i>閲嶇疆
-                        </button>
-                    </div>
-                </div>
-            </div>
-            <table class="layui-hide" id="basShuttle" lay-filter="basShuttle"></table>
-        </div>
-    </div>
-</div>
-
-<script type="text/html" id="toolbar">
-    <div class="layui-btn-container">
-        <button class="layui-btn layui-btn-sm" id="btn-add" lay-event="addData">鏂板</button>
-        <button class="layui-btn layui-btn-sm layui-btn-danger" id="btn-delete" lay-event="deleteData">鍒犻櫎</button>
-        <button class="layui-btn layui-btn-sm" lay-event="oneUpdateCharge">涓�閿慨鏀圭數閲忕嚎</button>
-        <button class="layui-btn layui-btn-sm" lay-event="shuttleGather">灏忚溅闆嗗悎</button>
-        <button class="layui-btn layui-btn-sm" lay-event="demoOpen">婕旂ず-寮�</button>
-        <button class="layui-btn layui-btn-sm" lay-event="demoClose">婕旂ず-鍏�</button>
-        <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData" style="float: right">瀵煎嚭</button>
-    </div>
-</script>
-
-<script type="text/html" id="operate">
-    <a class="layui-btn layui-btn-primary layui-btn-xs btn-edit" lay-event="edit">淇敼</a>
-    <a class="layui-btn layui-btn-danger layui-btn-xs btn-edit" lay-event="del">鍒犻櫎</a>
-</script>
-
-<script type="text/javascript" src="../../../static/js/jquery/jquery-3.3.1.min.js"></script>
-<script type="text/javascript" src="../../../static/layui/layui.js" charset="utf-8"></script>
-<script type="text/javascript" src="../../../static/js/common.js" charset="utf-8"></script>
-<script type="text/javascript" src="../../../static/js/cool.js" charset="utf-8"></script>
-<script type="text/javascript" src="../../../static/js/basShuttle/basShuttle.js" charset="utf-8"></script>
-</body>
-<!-- 琛ㄥ崟寮圭獥 -->
-<script type="text/html" id="editDialog">
-    <form id="detail" lay-filter="detail" class="layui-form admin-form model-form">
-        <input name="id" type="hidden">
-        <div class="layui-row">
-            <div class="layui-col-md12">
-                <div class="layui-form-item">
-                    <label class="layui-form-label layui-form-required">鍥涘悜绌挎杞﹀彿: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="shuttleNo" placeholder="璇疯緭鍏ュ洓鍚戠┛姊溅鍙�" lay-vertype="tips" lay-verify="required">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">鐘舵��: </label>
-                    <div class="layui-input-block">
-                        <select name="status">
-                            <option value="">璇烽�夋嫨鐘舵��</option>
-                            <option value="1">姝e父</option>
-                            <option value="0">绂佺敤</option>
-                        </select>
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">寰呮満浣�: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="idleLoc" placeholder="璇疯緭鍏ュ緟鏈轰綅">
-                    </div>
-                </div>
-<!--                <div class="layui-form-item">-->
-<!--                    <label class="layui-form-label">鑷姩鍏呯數: </label>-->
-<!--                    <div class="layui-input-block">-->
-<!--                        <input class="layui-input" name="autoCharge" placeholder="璇疯緭鍏ヨ嚜鍔ㄥ厖鐢�">-->
-<!--                    </div>-->
-<!--                </div>-->
-                <div class="layui-form-item">
-                    <label class="layui-form-label">鐢甸噺绾�: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="chargeLine" placeholder="璇疯緭鍏ョ數閲忕嚎">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">寤鸿鐢甸噺绾�: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="suggestChargeLine" placeholder="璇疯緭鍏ュ缓璁數閲忕嚎">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">澶囨敞: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="memo" placeholder="璇疯緭鍏ュ娉�">
-                    </div>
-                </div>
-<!--                <div class="layui-form-item">-->
-<!--                    <label class="layui-form-label">鏍囪: </label>-->
-<!--                    <div class="layui-input-block">-->
-<!--                        <select name="pakMk">-->
-<!--                            <option value="1">Y</option>-->
-<!--                            <option value="0">N</option>-->
-<!--                        </select>-->
-<!--                    </div>-->
-<!--                </div>-->
-
-             </div>
-        </div>
-        <hr class="layui-bg-gray">
-        <div class="layui-form-item text-right">
-            <button class="layui-btn" lay-filter="editSubmit" lay-submit="">淇濆瓨</button>
-            <button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">鍙栨秷</button>
-        </div>
-    </form>
-</script>
-
-<script type="text/html" id="updateChargeDialog">
-    <form id="updateChargeDetail" lay-filter="detail" class="layui-form admin-form model-form">
-        <div class="layui-row">
-            <div class="layui-col-md12">
-                <div class="layui-form-item">
-                    <label class="layui-form-label">鐢甸噺绾�: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="chargeLine" placeholder="璇疯緭鍏ョ數閲忕嚎">
-                    </div>
-                </div>
-            </div>
-        </div>
-        <hr class="layui-bg-gray">
-        <div class="layui-form-item text-right">
-            <button class="layui-btn" lay-filter="editSubmit" lay-submit="">淇濆瓨</button>
-            <button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">鍙栨秷</button>
-        </div>
-    </form>
-</script>
-</html>
-
diff --git a/src/main/webapp/views/admin/basShuttleCharge/basShuttleCharge.html b/src/main/webapp/views/admin/basShuttleCharge/basShuttleCharge.html
deleted file mode 100644
index 8ea564b..0000000
--- a/src/main/webapp/views/admin/basShuttleCharge/basShuttleCharge.html
+++ /dev/null
@@ -1,114 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
-    <meta charset="utf-8">
-    <title></title>
-    <meta name="renderer" content="webkit">
-    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
-    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
-    <link rel="stylesheet" href="../../../static/layui/css/layui.css" media="all">
-    <link rel="stylesheet" href="../../../static/css/admin.css?v=318" media="all">
-    <link rel="stylesheet" href="../../../static/css/cool.css" media="all">
-</head>
-<body>
-
-<div class="layui-fluid">
-    <div class="layui-card">
-        <div class="layui-card-body">
-            <div class="layui-form toolbar" id="search-box">
-                <div class="layui-form-item">
-                    <div class="layui-inline">
-                        <div class="layui-input-inline">
-                            <input class="layui-input" type="text" name="id" placeholder="缂栧彿" autocomplete="off">
-                        </div>
-                    </div>
-                     <div class="layui-inline" style="width: 300px">
-                        <div class="layui-input-inline">
-                            <input class="layui-input layui-laydate-range" name="create_time" type="text" placeholder="璧峰鏃堕棿 - 缁堟鏃堕棿" autocomplete="off" style="width: 300px">
-                        </div>
-                    </div>
-                    <div class="layui-inline">
-                        <div class="layui-input-inline">
-                            <input class="layui-input" type="text" name="condition" placeholder="璇疯緭鍏�" autocomplete="off">
-                        </div>
-                    </div>
-                    <div class="layui-inline">&emsp;
-                        <button class="layui-btn icon-btn" lay-filter="search" lay-submit>
-                            <i class="layui-icon">&#xe615;</i>鎼滅储
-                        </button>
-                        <button class="layui-btn icon-btn" lay-filter="reset" lay-submit>
-                            <i class="layui-icon">&#xe666;</i>閲嶇疆
-                        </button>
-                    </div>
-                </div>
-            </div>
-            <table class="layui-hide" id="basShuttleCharge" lay-filter="basShuttleCharge"></table>
-        </div>
-    </div>
-</div>
-
-<script type="text/html" id="toolbar">
-    <div class="layui-btn-container">
-        <button class="layui-btn layui-btn-sm" id="btn-add" lay-event="addData">鏂板</button>
-        <button class="layui-btn layui-btn-sm layui-btn-danger" id="btn-delete" lay-event="deleteData">鍒犻櫎</button>
-        <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData" style="float: right">瀵煎嚭</button>
-    </div>
-</script>
-
-<script type="text/html" id="operate">
-    <a class="layui-btn layui-btn-primary layui-btn-xs btn-edit" lay-event="edit">淇敼</a>
-    <a class="layui-btn layui-btn-danger layui-btn-xs btn-edit" lay-event="del">鍒犻櫎</a>
-</script>
-
-<script type="text/javascript" src="../../../static/js/jquery/jquery-3.3.1.min.js"></script>
-<script type="text/javascript" src="../../../static/layui/layui.js" charset="utf-8"></script>
-<script type="text/javascript" src="../../../static/js/common.js" charset="utf-8"></script>
-<script type="text/javascript" src="../../../static/js/cool.js" charset="utf-8"></script>
-<script type="text/javascript" src="../../../static/js/basShuttleCharge/basShuttleCharge.js" charset="utf-8"></script>
-</body>
-<!-- 琛ㄥ崟寮圭獥 -->
-<script type="text/html" id="editDialog">
-    <form id="detail" lay-filter="detail" class="layui-form admin-form model-form">
-        <input name="id" type="hidden">
-        <div class="layui-row">
-            <div class="layui-col-md12">
-                <div class="layui-form-item">
-                    <label class="layui-form-label">鍏呯數妗╃紪鍙�: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="chargeId" placeholder="璇疯緭鍏ュ厖鐢垫々缂栧彿">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">搴撲綅鍙�: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="locNo" placeholder="璇疯緭鍏ュ簱浣嶅彿">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">寰呮満浣�: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="waitLocNo" placeholder="璇疯緭鍏ュ緟鏈轰綅">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">鐘舵��: </label>
-                    <div class="layui-input-block">
-                        <select name="status">
-                            <option value="">璇烽�夋嫨鐘舵��</option>
-                            <option value="0">绂佺敤</option>
-                            <option value="1">姝e父</option>
-                        </select>
-                    </div>
-                </div>
-
-             </div>
-        </div>
-        <hr class="layui-bg-gray">
-        <div class="layui-form-item text-right">
-            <button class="layui-btn" lay-filter="editSubmit" lay-submit="">淇濆瓨</button>
-            <button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">鍙栨秷</button>
-        </div>
-    </form>
-</script>
-</html>
-
diff --git a/src/main/webapp/views/admin/basShuttleCharge/basShuttleCharge_detail.html b/src/main/webapp/views/admin/basShuttleCharge/basShuttleCharge_detail.html
deleted file mode 100644
index 77153c2..0000000
--- a/src/main/webapp/views/admin/basShuttleCharge/basShuttleCharge_detail.html
+++ /dev/null
@@ -1,94 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
-    <meta charset="utf-8">
-    <title></title>
-    <meta name="renderer" content="webkit">
-    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
-    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
-    <link rel="stylesheet" href="../../../static/layui/css/layui.css" media="all">
-    <link rel="stylesheet" href="../../../static/css/admin.css?v=318" media="all">
-    <link rel="stylesheet" href="../../../static/css/cool.css" media="all">
-</head>
-<body>
-
-<!-- 璇︽儏 -->
-<div id="data-detail" class="layer_self_wrap">
-    <form id="detail" class="layui-form">
-    <!--
-        <div class="layui-inline"  style="display: none">
-            <label class="layui-form-label"><span class="not-null">*</span>缂栥��銆�鍙凤細</label>
-            <div class="layui-input-inline">
-                <input id="id" class="layui-input" type="text" placeholder="缂栧彿">
-            </div>
-        </div>
-    -->
-        <div class="layui-inline"  style="width:31%;">
-            <label class="layui-form-label"><span class="not-null">*</span>锛�</label>
-            <div class="layui-input-inline">
-                <input id="id" class="layui-input" type="text" onkeyup="check(this.id, 'basShuttleCharge')" lay-verify="number" >
-            </div>
-        </div>
-        <div class="layui-inline"  style="width:31%;">
-            <label class="layui-form-label">鍏呯數妗╃紪鍙凤細</label>
-            <div class="layui-input-inline">
-                <input id="chargeId" class="layui-input" type="text" lay-verify="number" >
-            </div>
-        </div>
-        <div class="layui-inline"  style="width:31%;">
-            <label class="layui-form-label">搴� 浣� 鍙凤細</label>
-            <div class="layui-input-inline">
-                <input id="locNo" class="layui-input" type="text">
-            </div>
-        </div>
-        <div class="layui-inline"  style="width:31%;">
-            <label class="layui-form-label">寰� 鏈� 浣嶏細</label>
-            <div class="layui-input-inline">
-                <input id="waitLocNo" class="layui-input" type="text">
-            </div>
-        </div>
-        <div class="layui-inline"  style="width:31%;">
-            <label class="layui-form-label">鍒涘缓鏃堕棿锛�</label>
-            <div class="layui-input-inline">
-                <input id="createTime$" class="layui-input" type="text" autocomplete="off">
-            </div>
-        </div>
-        <div class="layui-inline"  style="width:31%;">
-            <label class="layui-form-label">鏇存柊鏃堕棿锛�</label>
-            <div class="layui-input-inline">
-                <input id="updateTime$" class="layui-input" type="text" autocomplete="off">
-            </div>
-        </div>
-        <div class="layui-inline"  style="width:31%;">
-            <label class="layui-form-label">鐘躲��銆�鎬侊細</label>
-            <div class="layui-input-inline">
-                <select id="status">
-                    <option value="" style="display: none"></option>
-                    <option value="0">绂佺敤</option>
-                    <option value="1">姝e父</option>
-                </select>
-            </div>
-        </div>
-
-
-        <hr class="layui-bg-gray">
-
-        <div id="data-detail-btn" class="layui-btn-container layui-form-item">
-            <div id="data-detail-submit-save" type="button" class="layui-btn layui-btn-normal" lay-submit lay-filter="save">淇濆瓨</div>
-            <div id="data-detail-submit-edit" type="button" class="layui-btn layui-btn-normal" lay-submit lay-filter="edit">淇敼</div>
-            <div id="data-detail-close" type="button" class="layui-btn" lay-submit lay-filter="close">鍏抽棴</div>
-        </div>
-
-        <div id="prompt">
-            娓╅Θ鎻愮ず锛氳浠旂粏濉啓鐩稿叧淇℃伅锛�<span class="extrude"><span class="not-null">*</span> 涓哄繀濉�夐」銆�</span>
-        </div>
-    </form>
-</div>
-</body>
-<script type="text/javascript" src="../../../static/js/jquery/jquery-3.3.1.min.js"></script>
-<script type="text/javascript" src="../../../static/layui/layui.js" charset="utf-8"></script>
-<script type="text/javascript" src="../../../static/js/common.js" charset="utf-8"></script>
-<script type="text/javascript" src="../../../static/js/cool.js" charset="utf-8"></script>
-<script type="text/javascript" src="../../../static/js/basShuttleCharge/basShuttleCharge.js" charset="utf-8"></script>
-</html>
-
diff --git a/src/main/webapp/views/admin/basShuttleErr/basShuttleErr.html b/src/main/webapp/views/admin/basShuttleErr/basShuttleErr.html
deleted file mode 100644
index 938325b..0000000
--- a/src/main/webapp/views/admin/basShuttleErr/basShuttleErr.html
+++ /dev/null
@@ -1,134 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
-    <meta charset="utf-8">
-    <title></title>
-    <meta name="renderer" content="webkit">
-    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
-    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
-    <link rel="stylesheet" href="../../../static/layui/css/layui.css" media="all">
-    <link rel="stylesheet" href="../../../static/css/admin.css?v=318" media="all">
-    <link rel="stylesheet" href="../../../static/css/cool.css" media="all">
-</head>
-<body>
-
-<div class="layui-fluid">
-    <div class="layui-card">
-        <div class="layui-card-body">
-            <div class="layui-form toolbar" id="search-box">
-                <div class="layui-form-item">
-                    <div class="layui-inline">
-                        <div class="layui-input-inline">
-                            <input class="layui-input" type="text" name="error_code" placeholder="寮傚父鐮�" autocomplete="off">
-                        </div>
-                    </div>
-                     <div class="layui-inline" style="width: 300px">
-                        <div class="layui-input-inline">
-                            <input class="layui-input layui-laydate-range" name="create_time" type="text" placeholder="璧峰鏃堕棿 - 缁堟鏃堕棿" autocomplete="off" style="width: 300px">
-                        </div>
-                    </div>
-                    <div class="layui-inline">
-                        <div class="layui-input-inline">
-                            <input class="layui-input" type="text" name="condition" placeholder="璇疯緭鍏�" autocomplete="off">
-                        </div>
-                    </div>
-                    <div class="layui-inline">&emsp;
-                        <button class="layui-btn icon-btn" lay-filter="search" lay-submit>
-                            <i class="layui-icon">&#xe615;</i>鎼滅储
-                        </button>
-                        <button class="layui-btn icon-btn" lay-filter="reset" lay-submit>
-                            <i class="layui-icon">&#xe666;</i>閲嶇疆
-                        </button>
-                    </div>
-                </div>
-            </div>
-            <table class="layui-hide" id="basShuttleErr" lay-filter="basShuttleErr"></table>
-        </div>
-    </div>
-</div>
-
-<script type="text/html" id="toolbar">
-    <div class="layui-btn-container">
-        <button class="layui-btn layui-btn-sm" id="btn-add" lay-event="addData">鏂板</button>
-        <button class="layui-btn layui-btn-sm layui-btn-danger" id="btn-delete" lay-event="deleteData">鍒犻櫎</button>
-        <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData" style="float: right">瀵煎嚭</button>
-    </div>
-</script>
-
-<script type="text/html" id="operate">
-    <a class="layui-btn layui-btn-primary layui-btn-xs btn-edit" lay-event="edit">淇敼</a>
-    <a class="layui-btn layui-btn-danger layui-btn-xs btn-edit" lay-event="del">鍒犻櫎</a>
-</script>
-
-<script type="text/javascript" src="../../../static/js/jquery/jquery-3.3.1.min.js"></script>
-<script type="text/javascript" src="../../../static/layui/layui.js" charset="utf-8"></script>
-<script type="text/javascript" src="../../../static/js/common.js" charset="utf-8"></script>
-<script type="text/javascript" src="../../../static/js/cool.js" charset="utf-8"></script>
-<script type="text/javascript" src="../../../static/js/basShuttleErr/basShuttleErr.js" charset="utf-8"></script>
-</body>
-<!-- 琛ㄥ崟寮圭獥 -->
-<script type="text/html" id="editDialog">
-    <form id="detail" lay-filter="detail" class="layui-form admin-form model-form">
-        <input name="id" type="hidden">
-        <div class="layui-row">
-            <div class="layui-col-md12">
-                <div class="layui-form-item">
-                    <label class="layui-form-label layui-form-required">寮傚父鐮�: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="errorCode" placeholder="璇疯緭鍏ュ紓甯哥爜" lay-vertype="tips" lay-verify="required">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">寮傚父: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="errName" placeholder="璇疯緭鍏ュ紓甯�">
-                    </div>
-                </div>
-<!--                <div class="layui-form-item">-->
-<!--                    <label class="layui-form-label">淇敼浜哄憳: </label>-->
-<!--                    <div class="layui-input-block cool-auto-complete">-->
-<!--                        <input class="layui-input" name="modiUser" placeholder="璇疯緭鍏ヤ慨鏀逛汉鍛�" style="display: none">-->
-<!--                        <input id="modiUser$" name="modiUser$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="璇疯緭鍏ヤ慨鏀逛汉鍛�" onfocus=this.blur()>-->
-<!--                        <div class="cool-auto-complete-window">-->
-<!--                            <input class="cool-auto-complete-window-input" data-key="userQueryBymodiUser" onkeyup="autoLoad(this.getAttribute('data-key'))">-->
-<!--                            <select class="cool-auto-complete-window-select" data-key="userQueryBymodiUserSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">-->
-<!--                            </select>-->
-<!--                        </div>-->
-<!--                    </div>-->
-<!--                </div>-->
-<!--                <div class="layui-form-item">-->
-<!--                    <label class="layui-form-label">淇敼鏃堕棿: </label>-->
-<!--                    <div class="layui-input-block">-->
-<!--                        <input class="layui-input" name="modiTime" id="modiTime$" placeholder="璇疯緭鍏ヤ慨鏀规椂闂�">-->
-<!--                    </div>-->
-<!--                </div>-->
-<!--                <div class="layui-form-item">-->
-<!--                    <label class="layui-form-label">娣诲姞浜哄憳: </label>-->
-<!--                    <div class="layui-input-block cool-auto-complete">-->
-<!--                        <input class="layui-input" name="appeUser" placeholder="璇疯緭鍏ユ坊鍔犱汉鍛�" style="display: none">-->
-<!--                        <input id="appeUser$" name="appeUser$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="璇疯緭鍏ユ坊鍔犱汉鍛�" onfocus=this.blur()>-->
-<!--                        <div class="cool-auto-complete-window">-->
-<!--                            <input class="cool-auto-complete-window-input" data-key="userQueryByappeUser" onkeyup="autoLoad(this.getAttribute('data-key'))">-->
-<!--                            <select class="cool-auto-complete-window-select" data-key="userQueryByappeUserSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">-->
-<!--                            </select>-->
-<!--                        </div>-->
-<!--                    </div>-->
-<!--                </div>-->
-<!--                <div class="layui-form-item">-->
-<!--                    <label class="layui-form-label">娣诲姞鏃堕棿: </label>-->
-<!--                    <div class="layui-input-block">-->
-<!--                        <input class="layui-input" name="appeTime" id="appeTime$" placeholder="璇疯緭鍏ユ坊鍔犳椂闂�">-->
-<!--                    </div>-->
-<!--                </div>-->
-
-             </div>
-        </div>
-        <hr class="layui-bg-gray">
-        <div class="layui-form-item text-right">
-            <button class="layui-btn" lay-filter="editSubmit" lay-submit="">淇濆瓨</button>
-            <button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">鍙栨秷</button>
-        </div>
-    </form>
-</script>
-</html>
-
diff --git a/src/main/webapp/views/admin/basShuttleErrLog/basShuttleErrLog.html b/src/main/webapp/views/admin/basShuttleErrLog/basShuttleErrLog.html
deleted file mode 100644
index 798b641..0000000
--- a/src/main/webapp/views/admin/basShuttleErrLog/basShuttleErrLog.html
+++ /dev/null
@@ -1,240 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
-    <meta charset="utf-8">
-    <title></title>
-    <meta name="renderer" content="webkit">
-    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
-    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
-    <link rel="stylesheet" href="../../../static/layui/css/layui.css" media="all">
-    <link rel="stylesheet" href="../../../static/css/admin.css?v=318" media="all">
-    <link rel="stylesheet" href="../../../static/css/cool.css" media="all">
-</head>
-<body>
-
-<div class="layui-fluid">
-    <div class="layui-card">
-        <div class="layui-card-body">
-            <div class="layui-form toolbar" id="search-box">
-                <div class="layui-form-item">
-                    <div class="layui-inline">
-                        <div class="layui-input-inline">
-                            <input class="layui-input" type="text" name="id" placeholder="缂栧彿" autocomplete="off">
-                        </div>
-                    </div>
-                     <div class="layui-inline" style="width: 300px">
-                        <div class="layui-input-inline">
-                            <input class="layui-input layui-laydate-range" name="create_time" type="text" placeholder="璧峰鏃堕棿 - 缁堟鏃堕棿" autocomplete="off" style="width: 300px">
-                        </div>
-                    </div>
-                    <div class="layui-inline">
-                        <div class="layui-input-inline">
-                            <input class="layui-input" type="text" name="condition" placeholder="璇疯緭鍏�" autocomplete="off">
-                        </div>
-                    </div>
-                    <div class="layui-inline">&emsp;
-                        <button class="layui-btn icon-btn" lay-filter="search" lay-submit>
-                            <i class="layui-icon">&#xe615;</i>鎼滅储
-                        </button>
-                        <button class="layui-btn icon-btn" lay-filter="reset" lay-submit>
-                            <i class="layui-icon">&#xe666;</i>閲嶇疆
-                        </button>
-                    </div>
-                </div>
-            </div>
-            <table class="layui-hide" id="basShuttleErrLog" lay-filter="basShuttleErrLog"></table>
-        </div>
-    </div>
-</div>
-
-<script type="text/html" id="toolbar">
-    <div class="layui-btn-container">
-<!--        <button class="layui-btn layui-btn-sm" id="btn-add" lay-event="addData">鏂板</button>-->
-<!--        <button class="layui-btn layui-btn-sm layui-btn-danger" id="btn-delete" lay-event="deleteData">鍒犻櫎</button>-->
-        <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData" style="float: right">瀵煎嚭</button>
-    </div>
-</script>
-
-<script type="text/html" id="operate">
-<!--    <a class="layui-btn layui-btn-primary layui-btn-xs btn-edit" lay-event="edit">淇敼</a>-->
-<!--    <a class="layui-btn layui-btn-danger layui-btn-xs btn-edit" lay-event="del">鍒犻櫎</a>-->
-</script>
-
-<script type="text/javascript" src="../../../static/js/jquery/jquery-3.3.1.min.js"></script>
-<script type="text/javascript" src="../../../static/layui/layui.js" charset="utf-8"></script>
-<script type="text/javascript" src="../../../static/js/common.js" charset="utf-8"></script>
-<script type="text/javascript" src="../../../static/js/cool.js" charset="utf-8"></script>
-<script type="text/javascript" src="../../../static/js/basShuttleErrLog/basShuttleErrLog.js" charset="utf-8"></script>
-</body>
-<!-- 琛ㄥ崟寮圭獥 -->
-<script type="text/html" id="editDialog">
-    <form id="detail" lay-filter="detail" class="layui-form admin-form model-form">
-        <input name="id" type="hidden">
-        <div class="layui-row">
-            <div class="layui-col-md12">
-                <div class="layui-form-item">
-                    <label class="layui-form-label">缂栧彿: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="uuid" placeholder="璇疯緭鍏ョ紪鍙�">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">宸ヤ綔鍙�: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="wrkNo" placeholder="璇疯緭鍏ュ伐浣滃彿">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">鍙戠敓鏃堕棿: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="startTime" id="startTime$" placeholder="璇疯緭鍏ュ彂鐢熸椂闂�">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">缁撴潫鏃堕棿: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="endTime" id="endTime$" placeholder="璇疯緭鍏ョ粨鏉熸椂闂�">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">宸ヤ綔鐘舵��: </label>
-                    <div class="layui-input-block cool-auto-complete">
-                        <input class="layui-input" name="wrkSts" placeholder="璇疯緭鍏ュ伐浣滅姸鎬�" style="display: none">
-                        <input id="wrkSts$" name="wrkSts$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="璇疯緭鍏ュ伐浣滅姸鎬�" onfocus=this.blur()>
-                        <div class="cool-auto-complete-window">
-                            <input class="cool-auto-complete-window-input" data-key="basWrkStatusQueryBywrkSts" onkeyup="autoLoad(this.getAttribute('data-key'))">
-                            <select class="cool-auto-complete-window-select" data-key="basWrkStatusQueryBywrkStsSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
-                            </select>
-                        </div>
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">鍏ュ嚭搴撶被鍨�: </label>
-                    <div class="layui-input-block cool-auto-complete">
-                        <input class="layui-input" name="ioType" placeholder="璇疯緭鍏ュ叆鍑哄簱绫诲瀷" style="display: none">
-                        <input id="ioType$" name="ioType$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="璇疯緭鍏ュ叆鍑哄簱绫诲瀷" onfocus=this.blur()>
-                        <div class="cool-auto-complete-window">
-                            <input class="cool-auto-complete-window-input" data-key="basWrkIotypeQueryByioType" onkeyup="autoLoad(this.getAttribute('data-key'))">
-                            <select class="cool-auto-complete-window-select" data-key="basWrkIotypeQueryByioTypeSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
-                            </select>
-                        </div>
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">绌挎杞�: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="steNo" placeholder="璇疯緭鍏ョ┛姊溅">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">plc: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="plcNo" placeholder="璇疯緭鍏lc">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">鐩爣搴撲綅: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="locNo" placeholder="璇疯緭鍏ョ洰鏍囧簱浣�">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">鐩爣绔�: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="staNo" placeholder="璇疯緭鍏ョ洰鏍囩珯">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">婧愮珯: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="sourceStaNo" placeholder="璇疯緭鍏ユ簮绔�">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">婧愬簱浣�: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="sourceLocNo" placeholder="璇疯緭鍏ユ簮搴撲綅">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">鏉$爜: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="barcode" placeholder="璇疯緭鍏ユ潯鐮�">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">寮傚父鐮�: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="errCode" placeholder="璇疯緭鍏ュ紓甯哥爜">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">寮傚父: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="error" placeholder="璇疯緭鍏ュ紓甯�">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">寮傚父鎯呭喌: </label>
-                    <div class="layui-input-block">
-                        <select name="status">
-                            <option value="">璇烽�夋嫨寮傚父鎯呭喌</option>
-                            <option value="1">鏈鐞�</option>
-                            <option value="2">宸蹭慨澶�</option>
-                        </select>
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">娣诲姞鏃堕棿: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="createTime" id="createTime$" placeholder="璇疯緭鍏ユ坊鍔犳椂闂�">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">娣诲姞浜哄憳: </label>
-                    <div class="layui-input-block cool-auto-complete">
-                        <input class="layui-input" name="createBy" placeholder="璇疯緭鍏ユ坊鍔犱汉鍛�" style="display: none">
-                        <input id="createBy$" name="createBy$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="璇疯緭鍏ユ坊鍔犱汉鍛�" onfocus=this.blur()>
-                        <div class="cool-auto-complete-window">
-                            <input class="cool-auto-complete-window-input" data-key="userQueryBycreateBy" onkeyup="autoLoad(this.getAttribute('data-key'))">
-                            <select class="cool-auto-complete-window-select" data-key="userQueryBycreateBySelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
-                            </select>
-                        </div>
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">淇敼鏃堕棿: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="updateTime" id="updateTime$" placeholder="璇疯緭鍏ヤ慨鏀规椂闂�">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">淇敼浜哄憳: </label>
-                    <div class="layui-input-block cool-auto-complete">
-                        <input class="layui-input" name="updateBy" placeholder="璇疯緭鍏ヤ慨鏀逛汉鍛�" style="display: none">
-                        <input id="updateBy$" name="updateBy$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="璇疯緭鍏ヤ慨鏀逛汉鍛�" onfocus=this.blur()>
-                        <div class="cool-auto-complete-window">
-                            <input class="cool-auto-complete-window-input" data-key="userQueryByupdateBy" onkeyup="autoLoad(this.getAttribute('data-key'))">
-                            <select class="cool-auto-complete-window-select" data-key="userQueryByupdateBySelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
-                            </select>
-                        </div>
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">澶囨敞: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="memo" placeholder="璇疯緭鍏ュ娉�">
-                    </div>
-                </div>
-
-             </div>
-        </div>
-        <hr class="layui-bg-gray">
-        <div class="layui-form-item text-right">
-            <button class="layui-btn" lay-filter="editSubmit" lay-submit="">淇濆瓨</button>
-            <button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">鍙栨秷</button>
-        </div>
-    </form>
-</script>
-</html>
-
diff --git a/src/main/webapp/views/admin/basShuttleErrLog/basShuttleOpt.html b/src/main/webapp/views/admin/basShuttleErrLog/basShuttleOpt.html
deleted file mode 100644
index ae87226..0000000
--- a/src/main/webapp/views/admin/basShuttleErrLog/basShuttleOpt.html
+++ /dev/null
@@ -1,57 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
-    <meta charset="utf-8">
-    <title></title>
-    <meta name="renderer" content="webkit">
-    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
-    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
-    <link rel="stylesheet" href="../../../static/layui/css/layui.css" media="all">
-    <link rel="stylesheet" href="../../../static/css/admin.css?v=318" media="all">
-    <link rel="stylesheet" href="../../../static/css/cool.css" media="all">
-</head>
-<body>
-
-<div class="layui-fluid">
-    <div class="layui-card">
-        <div class="layui-card-body">
-            <div class="layui-form toolbar" id="search-box">
-                <div class="layui-form-item">
-                    <div class="layui-inline">
-                        <div class="layui-input-inline">
-                            <input class="layui-input" type="text" name="wrk_no" placeholder="宸ヤ綔鍙�" autocomplete="off">
-                        </div>
-                    </div>
-                     <div class="layui-inline" style="width: 300px">
-                        <div class="layui-input-inline">
-                            <input class="layui-input layui-laydate-range" name="send_time" type="text" placeholder="璧峰鏃堕棿 - 缁堟鏃堕棿" autocomplete="off" style="width: 300px">
-                        </div>
-                    </div>
-                    <div class="layui-inline">
-                        <div class="layui-input-inline">
-                            <input class="layui-input" type="text" name="condition" placeholder="璇疯緭鍏�" autocomplete="off">
-                        </div>
-                    </div>
-                    <div class="layui-inline">&emsp;
-                        <button class="layui-btn icon-btn" lay-filter="search" lay-submit>
-                            <i class="layui-icon">&#xe615;</i>鎼滅储
-                        </button>
-                        <button class="layui-btn icon-btn" lay-filter="reset" lay-submit>
-                            <i class="layui-icon">&#xe666;</i>閲嶇疆
-                        </button>
-                    </div>
-                </div>
-            </div>
-            <table class="layui-hide" id="basShuttleOpt" lay-filter="basShuttleOpt"></table>
-        </div>
-    </div>
-</div>
-
-<script type="text/javascript" src="../../../static/js/jquery/jquery-3.3.1.min.js"></script>
-<script type="text/javascript" src="../../../static/layui/layui.js" charset="utf-8"></script>
-<script type="text/javascript" src="../../../static/js/common.js" charset="utf-8"></script>
-<script type="text/javascript" src="../../../static/js/cool.js" charset="utf-8"></script>
-<script type="text/javascript" src="../../../static/js/basShuttleErrLog/basShuttleOpt.js" charset="utf-8"></script>
-</body>
-</html>
-
diff --git a/src/main/webapp/views/car_vue.html b/src/main/webapp/views/car_vue.html
deleted file mode 100644
index b17d195..0000000
--- a/src/main/webapp/views/car_vue.html
+++ /dev/null
@@ -1,116 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
-    <meta charset="UTF-8">
-    <title>绌挎杞︾洃鎺х鐞�</title>
-    <link rel="stylesheet" href="../static/vue/element/element.css">
-    <link rel="stylesheet" href="../static/css/car_vue.css">
-    <script src="../static/vue/js/vue.min.js"></script>
-    <script src="../static/vue/element/element.js"></script>
-    <style>
-        .el-row {
-            margin-bottom: 10px;
-            &:last-child {
-                margin-bottom: 0;
-            }
-        }
-        .el-col {
-            border-radius: 4px;
-        }
-        .bg-purple-dark {
-            background: #99a9bf;
-        }
-        .bg-purple {
-            background: #067af8;
-        }
-        .bg-purple-light {
-            background: #ffffff;
-        }
-        .grid-content {
-            border-radius: 4px;
-            min-height: 230px;
-        }
-        .grid-content-bottom {
-            border-radius: 4px;
-            min-height: 176px;
-        }
-        .row-bg {
-            padding: 10px 0;
-            background-color: #f9fafc;
-        }
-    </style>
-
-</head>
-<body>
-    <div id="container">
-        <!--绗竴閮ㄥ垎-->
-        <el-row>
-            <el-col :span="22" style="float: right" class="grid-content bg-purple-light">
-                    <el-col :span="5" class="grid-content bg-purple-light">
-                        <el-row>
-                            <el-col :span="8" :offset="8" class="title">绌挎杞︿綅缃�</el-col>
-                        </el-row>
-                        <el-row>
-                            <el-col :span="20" :offset="2" class="title">
-                                <lable>1#</lable>
-                                <el-dropdown trigger="click" :hide-on-click="false">
-                                    <el-button class="bg-orgin" @click="changePosition($event,1)">淇敼浣嶇疆</el-button>
-                                    <el-dropdown-menu>
-                                        <el-dropdown-item><span>1</span><input type="text"></el-dropdown-item>
-                                        <el-dropdown-item>2</el-dropdown-item>
-                                        <el-dropdown-item>3</el-dropdown-item>
-                                    </el-dropdown-menu>
-                                </el-dropdown>
-
-                                <el-button>鎵�灞炲爢鍨涙満</el-button>
-                            </el-col>
-                        </el-row>
-                        <el-row>
-                            <el-col :span="20" :offset="2" class="title">
-                                <lable>2#</lable>
-                                <el-button @click="changePosition($event,2)">淇敼浣嶇疆</el-button>
-                                <el-button>鎵�灞炲爢鍨涙満</el-button>
-                            </el-col>
-                        </el-row>
-                        <el-row>
-                            <el-col :span="20" :offset="2" class="title">
-                                <lable>3#</lable>
-                                <el-button @click="changePosition($event,3)">淇敼浣嶇疆</el-button>
-                                <el-button>鎵�灞炲爢鍨涙満</el-button>
-                            </el-col>
-                        </el-row>
-                    </el-col>
-                    <el-col :span="19" class="grid-content bg-purple-dark">
-
-                    </el-col>
-            </el-col>
-        </el-row>
-        <el-row>
-            <el-col :span="22" class="grid-content bg-purple-light" style="float: right"></el-col>
-        </el-row>
-        <el-row>
-            <el-col :span="22" class="grid-content bg-purple-light" style="float: right"></el-col>
-        </el-row>
-        <el-row>
-            <el-col :span="22" class="grid-content-bottom bg-purple-light" style="float: right"></el-col>
-        </el-row>
-    </div>
-</body>
-</html>
-    <script>
-        var app = new Vue({
-            el: '#container',
-            data: {
-                message: 'btn'
-            },
-            methods: {
-                changePosition(e,id) {
-                    e.target.blur();
-                    if(e.target.nodeName == "SPAN") {
-                        e.target.parentNode.blur(); // 寮哄埗澶辩劍
-                    }
-                    console.log(id)
-                }
-            }
-        })
-    </script>
\ No newline at end of file
diff --git a/src/main/webapp/views/console.html b/src/main/webapp/views/console.html
index 17b177f..6a06b46 100644
--- a/src/main/webapp/views/console.html
+++ b/src/main/webapp/views/console.html
@@ -19,73 +19,46 @@
 	</head>
 	<body>
 		<div id="app">
-			<div style="display: flex;justify-content: center;align-items: center;width: 100%;margin-top: 150px;">
-				<div id="mapDataId" style="zoom: 0.7;position: relative;">
-					<div class="pointContainer" v-for="(row,index) in map" :key="index">
-						<div v-for="(col,idx) in row" :key="idx">
-							<div v-if="col.value == 0">
-								<!-- 瀛愯建閬� 璺緞涓虹┛姊溅棰勮璺緞鍒欐樉绀虹┛姊溅棰滆壊鍜岀┛姊溅鍙� -->
-								<div :style="{background: checkAdvancePath(index,idx).length == 0 ? '':shuttleColorList[checkAdvancePath(index,idx)[0]]}" class="item" v-if="col.data.length > 0">{{col.data}}</div>
-								<div :style="{background: checkAdvancePath(index,idx).length == 0 ? '':shuttleColorList[checkAdvancePath(index,idx)[0]]}" class="item" v-else>{{checkAdvancePath(index,idx).length == 0 ? idx:checkAdvancePath(index,idx)}}</div>
-							</div>
-							<div v-else-if="col.value == 3">
-								<!-- 姣嶈建閬� 璺緞涓虹┛姊溅棰勮璺緞鍒欐樉绀虹┛姊溅棰滆壊鍜岀┛姊溅鍙� -->
-								<div :style="{background: checkAdvancePath(index,idx).length == 0 ? '#5af':shuttleColorList[checkAdvancePath(index,idx)[0]]}" class="item">{{checkAdvancePath(index,idx).length == 0 ? '&#x21c5;&#x21c4;':checkAdvancePath(index,idx)}}</div>
-							</div>
-							<div v-else-if="col.value == 4">
-								<!-- 绔欑偣 -->
-								<div class="site" :id="'site-' + col.data" @click="openSite(col.data)">{{col.data}}</div>
-							</div>
-							<div v-else-if="col.value == 5">
-								<!-- 鍏呯數妗� -->
-								<div class="item" style="font-size: 24px">&#9889;</div>
-							</div>
-							<div v-else-if="col.value == -999">
-								<!-- 璺緞鍗犵敤鍖哄煙 -->
-								<div class="item" style="background:#f83333;color: #fff;">{{idx}}</div>
-							</div>
-							<div v-else-if="col.value < 0">
-								<!-- 绂佹鏄剧ず鍖哄煙 -->
-								<div class="item" style="visibility: hidden">{{idx}}</div>
-							</div>
-							<div v-else>
-								<div class="item" v-if="col.data.length > 0">{{col.data}}</div>
-								<div class="item" v-else>{{idx}}-{{col.value}}</div>
-							</div>
-						</div>
+			<div style="display: flex;justify-content: center;align-items: center;width: 100%;margin-top: 30px;">
+				<div id="mapDataId" style="zoom: 0.6;position: relative;">
+					<table class="excel-table">
+						<tr v-for="(row,index) in map" :key="index">
+							<td
+									v-for="(col,idx) in row" :key="idx"
+									:rowspan="col.rowSpan"
+									:colspan="col.colSpan"
+									:style="{width: col.width}"
+									v-if="col.type != 'merge'"
+							>
+								<div v-if="col.type == 'none'">
+									<div class="item" style="visibility: hidden">{{idx}}</div>
+								</div>
+								<div v-else-if="col.type == 'shelf'">
+									<div class="shelf">{{col.shelfIdx}}</div>
+								</div>
+								<div v-else-if="col.type == 'devp'">
+									<div class="site" :style="{height: col.rowPx}" :id="'site-' + col.value" @click="openSite(col.value)">{{col.value}}</div>
+								</div>
+								<div v-else-if="col.type == 'rgv'" style="position: relative;">
+									<div class="rgv-item" v-if="getDeviceNo(col.value) != -1" :style="{width: col.width}" :id="'rgv-' + getDeviceNo(col.value)" @click="openRgv(getDeviceNo(col.value))">{{getDeviceNo(col.value)}}</div>
+									<div class="track-item" v-if="getTrackSiteNo(col.value) == -1"></div>
+									<div class="track-item" v-else :id="'rgvTrackSiteNo-' + getTrackSiteNo(col.value)"></div>
+								</div>
+								<div v-else-if="col.type == 'crn'">
+									<div class="crn-item" v-if="getDeviceNo(col.value) != -1" :style="{width: col.width}" :id="'crn-' + getDeviceNo(col.value)" @click="openCrn(getDeviceNo(col.value))">{{getDeviceNo(col.value)}}</div>
+									<div class="track-item" v-if="getTrackSiteNo(col.value) == -1"></div>
+									<div class="track-item" v-else :id="'crnTrackSiteNo-' + getTrackSiteNo(col.value)"></div>
+								</div>
+							</td>
 
-						<div>
-							<!-- 鏄剧ず琛屽彿 -->
-							<div class="item" style="background: none;color: #000;">#{{index+1}}</div>
-						</div>
-					</div>
-
-					<div
-							v-for="(car, idx) in currentLevShuttleList"
-							:style="{
-								'--x-pos': getCarPosition(car.point.x, car.point.y)[1],
-								'--y-pos': getCarPosition(car.point.x, car.point.y)[0],
-								color: shuttleColorList[car.shuttleNo]
-							  }"
-							class="sxcar"
-							:id="'sxcar-' + car.shuttleNo"
-					>
-						{{ car.shuttleNo }}
-					</div>
-
+							<td>
+								<!-- 鏄剧ず琛屽彿 -->
+								<div class="item" style="background: none;color: #000;">#{{index+1}}</div>
+							</td>
+						</tr>
+					</table>
 				</div>
 
-				<!--杈撳嚭妤煎眰-->
-				<div style="height: 100%;">
-					<div class="floorBtnBox" v-for="(lev,idx) in floorList">
-						<el-button :style="{background:currentLev === lev ? '#7DCDFF':''}" @click="changFloor(lev)">{{lev}}F</el-button>
-					</div>
-					<div>
-<!--						<el-button @click="testMove()">娴嬭瘯绉诲姩杞�</el-button>-->
-<!--						<el-button @click="resetMap()">閲嶇疆鍦板浘</el-button>-->
-<!--						<el-button @click="initLoc()">鍒濆鍖栧簱浣�</el-button>-->
-					</div>
-				</div>
 			</div>
 
 			<div class="footer">
@@ -110,105 +83,83 @@
 						</div>
 					</div>
 				</div>
-				<!-- 鍥涘悜绌挎杞︾姸鎬� -->
+				<!-- 鍫嗗灈鏈虹姸鎬� -->
 				<div class="line-status">
-					<div class="body-head">绌挎杞︾姸鎬�</div>
+					<div class="body-head">鍫嗗灈鏈虹姸鎬�</div>
 					<div class="shuttle-status-box">
-						<div v-for="(item,idx) in shuttleList" class="state">
-							<span :style="{color: shuttleColorList[item.shuttleNo]}">鍥涘悜绌挎杞� {{item.shuttleNo}}</span>
-							<span v-if="item.protocolStatus == 1"
-								class="state-ss shuttle-idle">{{item.protocolStatus$}}</span>
-							<span v-else-if="item.protocolStatus == 2"
-								class="state-ss shuttle-working">{{item.protocolStatus$}}</span>
-							<span v-else-if="item.protocolStatus == 3"
-								class="state-ss shuttle-waiting">{{item.protocolStatus$}}</span>
-							<span v-else-if="item.protocolStatus == 4"
-								class="state-ss shuttle-charging">{{item.protocolStatus$}}</span>
-							<span v-else-if="item.protocolStatus == 5"
-								class="state-ss shuttle-charging-waiting">{{item.protocolStatus$}}</span>
-							<span v-else-if="item.protocolStatus == 6"
-								class="state-ss shuttle-fixing">{{item.protocolStatus$}}</span>
-							<span v-else-if="item.protocolStatus == 7"
-								class="state-ss shuttle-offline">{{item.protocolStatus$}}</span>
-							<span v-else class="state-ss shuttle-offline">{{item.protocolStatus$}}</span>
+						<div v-for="(item,idx) in crnList" class="state">
+							<span>鍫嗗灈鏈� {{item.crnNo}}</span>
+							<span v-if="item.crnStatus == 'machine-auto'"
+								class="state-ss machine-auto-flag">鑷姩</span>
+							<span v-else-if="item.crnStatus == 'machine-un-auto'"
+								class="state-ss machine-unauto-flag">闈炶嚜鍔�/鎵嬪姩</span>
+							<span v-else-if="item.crnStatus == 'machine-error'"
+								class="state-ss machine-error-flag">寮傚父</span>
+							<span v-else-if="item.crnStatus == 'machine-p-move'"
+								class="state-ss machine-p-move-flag">PToP</span>
+							<span v-else-if="item.crnStatus == 'machine-site-move'"
+								class="state-ss machine-site-move-flag">绔欏埌绔�</span>
+							<span v-else-if="item.crnStatus == 'machine-stock-move'"
+								class="state-ss machine-stock-move-flag">搴撳埌搴�</span>
+							<span v-else-if="item.crnStatus == 'machine-pakout'"
+								class="state-ss machine-take-flag">鍑哄簱</span>
+							<span v-else-if="item.crnStatus == 'machine-pakin'"
+								  class="state-ss machine-put-flag">鍏ュ簱</span>
+							<span v-else class="state-ss">{{item.crnStatus}}</span>
 						</div>
 					</div>
 					<div class="allStatus"><span>鎵�鏈夌姸鎬�</span></div>
 					<div class="allStatus item-group">
-						<span class="shuttle-idle">绌洪棽</span>
-						<span class="shuttle-working">浣滀笟涓�</span>
-						<span class="shuttle-waiting">绛夊緟纭</span>
-						<span class="shuttle-charging">鍏呯數涓�</span>
-						<span class="shuttle-charging-waiting">鍏呯數浠诲姟绛夊緟纭</span>
-						<span class="shuttle-fixing">鏁呴殰淇涓�</span>
-						<span class="shuttle-offline">绂荤嚎</span>
+						<span class="machine-put-flag">鍏ュ簱</span>
+						<span class="machine-take-flag">鍑哄簱</span>
+						<span class="machine-stock-move-flag">搴撳埌搴�</span>
+						<span class="machine-site-move-flag">绔欏埌绔�</span>
+						<span class="machine-p-move-flag">PToP</span>
+						<span class="machine-error-flag">寮傚父</span>
+						<span class="machine-auto-flag">鑷姩</span>
+						<span class="machine-unauto-flag">闈炶嚜鍔�/鎵嬪姩</span>
 					</div>
 				</div>
-				<!-- 鎻愬崌鏈虹姸鎬� -->
+				<!-- 杈撻�佺嚎鐘舵�� -->
 				<div class="line-status">
-					<div class="body-head">鎻愬崌鏈虹姸鎬�</div>
-					<div class="lift-status-box">
-						<div v-for="(item,idx) in liftList" class="state states">
-							<span>鎻愬崌鏈� {{item.liftNo}}</span>
-							<span v-if="item.protocolStatus == 1"
-								class="state-ss lift-idle">{{item.protocolStatus$}}</span>
-							<span v-else-if="item.protocolStatus == 2"
-								class="state-ss lift-working">{{item.protocolStatus$}}</span>
-							<span v-else-if="item.protocolStatus == 3"
-								class="state-ss lift-waiting">{{item.protocolStatus$}}</span>
-							<span v-else-if="item.protocolStatus == 4"
-								class="state-ss lift-offline">{{item.protocolStatus$}}</span>
-							<span v-else class="state-ss lift-offline">{{item.protocolStatus$}}</span>
-						</div>
+					<div class="body-head">杈撻�佺嚎鐘舵��</div>
+					<div class="state states">
+						<span>杩愯緭绾挎�绘暟</span>
+						<span class="line-ss">9</span>
 					</div>
 					<div class="allStatus"><span>鎵�鏈夌姸鎬�</span></div>
 					<div class="allStatus item-group">
-						<span class="lift-idle">绌洪棽</span>
-						<span class="lift-working">浣滀笟涓�</span>
-						<span class="lift-waiting">绛夊緟纭</span>
-						<span class="lift-offline">绂荤嚎</span>
+						<span class="site-auto-run-id">鑷姩+鏈夌墿+ID</span>
+						<span class="site-auto-run">鑷姩+鏈夌墿</span>
+						<span class="site-auto-id">鑷姩+ID</span>
+						<span class="site-auto">鑷姩</span>
+						<span class="site-unauto">闈炶嚜鍔�/鎵嬪姩</span>
 					</div>
 				</div>
-<!--				&lt;!&ndash; 杈撻�佺嚎鐘舵�� &ndash;&gt;-->
-<!--				<div class="line-status">-->
-<!--					<div class="body-head">杈撻�佺嚎鐘舵��</div>-->
-<!--					<div class="state states">-->
-<!--						<span>杩愯緭绾挎�绘暟</span>-->
-<!--						<span class="line-ss">9</span>-->
-<!--					</div>-->
-<!--					<div class="allStatus"><span>鎵�鏈夌姸鎬�</span></div>-->
-<!--					<div class="allStatus item-group">-->
-<!--						<span class="site-auto-run-id">鑷姩+鏈夌墿+ID</span>-->
-<!--						<span class="site-auto-run">鑷姩+鏈夌墿</span>-->
-<!--						<span class="site-auto-id">鑷姩+ID</span>-->
-<!--						<span class="site-auto">鑷姩</span>-->
-<!--						<span class="site-unauto">闈炶嚜鍔�/鎵嬪姩</span>-->
-<!--					</div>-->
-<!--				</div>-->
-<!--				&lt;!&ndash; 鏉$爜琛ㄦ牸 &ndash;&gt;-->
-<!--				<div class="bar-code">-->
-<!--					<div class="body-head" id="code">鏉$爜鎵弿鍣�</div>-->
-<!--					<div class="tablebox">-->
-<!--						<div class="table-head">-->
-<!--							<li><span>鏉$爜鍚嶇О</span><span class="right">鎵爜鏃堕棿</span></li>-->
-<!--						</div>-->
-<!--						<div id="barcode1" class="table-body">-->
-<!--							<li v-for="(item,index) in codeList1" :key="index"><span>{{item.barcode}}</span><span class="right">{{item.time}}</span></li>-->
-<!--						</div>-->
-<!--					</div>-->
-<!--					<div class="tablebox">-->
-<!--						<div class="table-head">-->
-<!--							<li><span>鏉$爜鍚嶇О</span><span class="right">鎵爜鏃堕棿</span></li>-->
-<!--						</div>-->
-<!--						<div id="barcode2" class="table-body">-->
-<!--							<li v-for="(item,index) in codeList2" :key="index"><span>{{item.barcode}}</span><span class="right">{{item.time}}</span></li>-->
-<!--						</div>-->
-<!--					</div>-->
-<!--				</div>-->
-<!--			</div>-->
+				<!-- 鏉$爜琛ㄦ牸 -->
+				<div class="bar-code">
+					<div class="body-head" id="code">鏉$爜鎵弿鍣�</div>
+					<div class="tablebox">
+						<div class="table-head">
+							<li><span>鏉$爜鍚嶇О</span><span class="right">鎵爜鏃堕棿</span></li>
+						</div>
+						<div id="barcode1" class="table-body">
+							<li v-for="(item,index) in codeList1" :key="index"><span>{{item.barcode}}</span><span class="right">{{item.time}}</span></li>
+						</div>
+					</div>
+					<div class="tablebox">
+						<div class="table-head">
+							<li><span>鏉$爜鍚嶇О</span><span class="right">鎵爜鏃堕棿</span></li>
+						</div>
+						<div id="barcode2" class="table-body">
+							<li v-for="(item,index) in codeList2" :key="index"><span>{{item.barcode}}</span><span class="right">{{item.time}}</span></li>
+						</div>
+					</div>
+				</div>
+			</div>
 
 			<!-- 杈撻�佽澶囧脊绐� -->
-			<div id="siteWindow" :style="{display:siteWindow?'block':'none'}" class="animate__animated animate__fadeIn">
+			<div id="siteWindow" :style="{display:siteWindow?'block':'none',zIndex: 999}" class="animate__animated animate__fadeIn">
 				<!-- 琛ㄥご -->
 				<div id="siteWindow-head">
 					<div class="detailed"></div>
@@ -331,24 +282,223 @@
 				</div>
 			</div>
 
+			<!-- 鍫嗗灈鏈哄脊绐� -->
+			<div id="crnWindow" :style="{display:crnWindow?'block':'none',zIndex: 999}" class="animate__animated animate__fadeIn">
+				<div id="crnWindow-head">
+					<div class='detailed'></div>
+					<button @click="crnWindow = false"></button>
+				</div>
+				<form>
+					<!-- 鍫嗗灈鏈哄彿 -->
+					<div class="form-item">
+						<div class="form-item-label" style>
+							<span>鍫嗗灈鏈哄彿锛�</span>
+						</div>
+						<div class="form-item-input">
+							<input type="text" name="crnNo" value="">
+						</div>
+					</div>
+					<!-- 宸ヤ綔鍙� -->
+					<div class="form-item">
+						<div class="form-item-label">
+							<span>宸ヤ綔鍙凤細</span>
+						</div>
+						<div class="form-item-input">
+							<input type="text" name="workNo" value="">
+						</div>
+					</div>
+					<!-- 绔欐簮 -->
+					<div class="form-item">
+						<div class="form-item-label">
+							<span>绔欐簮锛�</span>
+						</div>
+						<div class="form-item-input">
+							<input type="text" name="sourceStaNo" value="">
+						</div>
+					</div>
+					<!-- 鐩爣绔� -->
+					<div class="form-item">
+						<div class="form-item-label">
+							<span>鐩爣绔欙細</span>
+						</div>
+						<div class="form-item-input">
+							<input type="text" name="staNo" value="">
+						</div>
+					</div>
+					<!-- 宸ヤ綔鐘舵�� -->
+					<div class="form-item">
+						<div class="form-item-label">
+							<span>宸ヤ綔鐘舵�侊細</span>
+						</div>
+						<div class="form-item-input">
+							<input type="text" name="wrkSts" value="">
+						</div>
+					</div>
+					<!-- 鍑哄叆绫诲瀷 -->
+					<div class="form-item">
+						<div class="form-item-label">
+							<span>鍑哄叆绫诲瀷锛�</span>
+						</div>
+						<div class="form-item-input">
+							<input type="text" name="ioType" value="">
+						</div>
+					</div>
+					<!-- 婧愬簱浣� -->
+					<div class="form-item">
+						<div class="form-item-label">
+							<span>婧愬簱浣嶏細</span>
+						</div>
+						<div class="form-item-input">
+							<input type="text" name="sourceLocNo" value="">
+						</div>
+					</div>
+					<!-- 鐩爣搴撲綅 -->
+					<div class="form-item">
+						<div class="form-item-label">
+							<span>鐩爣搴撲綅锛�</span>
+						</div>
+						<div class="form-item-input">
+							<input type="text" name="locNo" value="">
+						</div>
+					</div>
+					<!-- 鍫嗗灈鏈虹姸鎬� -->
+					<div class="form-item">
+						<div class="form-item-label">
+							<span>鍫嗗灈鏈虹姸鎬侊細</span>
+						</div>
+						<div class="form-item-input">
+							<input type="text" name="crnStatus" value="">
+						</div>
+					</div>
+					<!-- 寮傚父 -->
+					<div class="form-item">
+						<div class="form-item-label">
+							<span>寮傚父锛�</span>
+						</div>
+						<div class="form-item-input">
+							<input type="text" name="error" value="">
+						</div>
+					</div>
+				</form>
+			</div>
+
+			<!-- RGV寮圭獥 -->
+			<div id="rgvWindow" :style="{display:rgvWindow?'block':'none',zIndex: 999}" class="animate__animated animate__fadeIn">
+				<div id="rgvWindow-head">
+					<div class='detailed'></div>
+					<button @click="rgvWindow = false"></button>
+				</div>
+				<form>
+					<!-- RGV鍙� -->
+					<div class="form-item">
+						<div class="form-item-label" style>
+							<span>RGV鍙凤細</span>
+						</div>
+						<div class="form-item-input">
+							<input type="text" name="rgvNo" value="">
+						</div>
+					</div>
+					<!-- 宸ヤ綔鍙� -->
+					<div class="form-item">
+						<div class="form-item-label">
+							<span>宸ヤ綔鍙凤細</span>
+						</div>
+						<div class="form-item-input">
+							<input type="text" name="workNo" value="">
+						</div>
+					</div>
+					<!-- 绔欐簮 -->
+					<div class="form-item">
+						<div class="form-item-label">
+							<span>绔欐簮锛�</span>
+						</div>
+						<div class="form-item-input">
+							<input type="text" name="sourceStaNo" value="">
+						</div>
+					</div>
+					<!-- 鐩爣绔� -->
+					<div class="form-item">
+						<div class="form-item-label">
+							<span>鐩爣绔欙細</span>
+						</div>
+						<div class="form-item-input">
+							<input type="text" name="staNo" value="">
+						</div>
+					</div>
+					<!-- 宸ヤ綔鐘舵�� -->
+					<div class="form-item">
+						<div class="form-item-label">
+							<span>宸ヤ綔鐘舵�侊細</span>
+						</div>
+						<div class="form-item-input">
+							<input type="text" name="wrkSts" value="">
+						</div>
+					</div>
+					<!-- 鍑哄叆绫诲瀷 -->
+					<div class="form-item">
+						<div class="form-item-label">
+							<span>鍑哄叆绫诲瀷锛�</span>
+						</div>
+						<div class="form-item-input">
+							<input type="text" name="ioType" value="">
+						</div>
+					</div>
+					<!-- 婧愬簱浣� -->
+					<div class="form-item">
+						<div class="form-item-label">
+							<span>婧愬簱浣嶏細</span>
+						</div>
+						<div class="form-item-input">
+							<input type="text" name="sourceLocNo" value="">
+						</div>
+					</div>
+					<!-- 鐩爣搴撲綅 -->
+					<div class="form-item">
+						<div class="form-item-label">
+							<span>鐩爣搴撲綅锛�</span>
+						</div>
+						<div class="form-item-input">
+							<input type="text" name="locNo" value="">
+						</div>
+					</div>
+					<!-- RGV鐘舵�� -->
+					<div class="form-item">
+						<div class="form-item-label">
+							<span>RGV鐘舵�侊細</span>
+						</div>
+						<div class="form-item-input">
+							<input type="text" name="rgvStatus" value="">
+						</div>
+					</div>
+					<!-- 寮傚父 -->
+					<div class="form-item">
+						<div class="form-item-label">
+							<span>寮傚父锛�</span>
+						</div>
+						<div class="form-item-input">
+							<input type="text" name="error" value="">
+						</div>
+					</div>
+				</form>
+			</div>
+
 		</div>
 		<script>
 			var app = new Vue({
 				el: '#app',
 				data: {
 					map: [],//鍦板浘鏁版嵁
-					currentLev: 1,//鍦板浘褰撳墠妤煎眰
 					siteWindow: false, //绔欑偣寮圭獥鏄剧ず榛樿涓嶆樉绀�
-					floorList: [], //褰撳墠椤圭洰妤煎眰
-					shuttleList: [], //鍥涘悜绌挎杞﹂泦鍚�
-					currentLevShuttleList: [],//褰撳墠妤煎眰鍥涘悜绌挎杞﹂泦鍚�
-					shuttleColorList: [],//鍥涘悜绌挎杞﹂鑹查泦鍚�
+					crnWindow: false, //鍫嗗灈鏈哄脊绐楁樉绀洪粯璁や笉鏄剧ず
+					rgvWindow: false, //rgv寮圭獥鏄剧ず榛樿涓嶆樉绀�
+					crnList: [], //鍫嗗灈鏈洪泦鍚�
 					liftList: [], //鎻愬崌鏈洪泦鍚�
 					systemStatus: true,//绯荤粺杩愯鐘舵��
 					consoleInterval: null,//瀹氭椂鍣ㄥ瓨鍌ㄥ彉閲�
 					codeList1: [],//鏉$爜List
 					codeList2: [],//鏉$爜List
-					ws: null,
+					crnInitPosition: [],
+					rgvPosition: [],
 				},
 				created() {
 					this.init()
@@ -358,36 +508,95 @@
 				},
 				methods: {
 					init() {
-						this.getMap(this.currentLev)
+						this.getMap()
 						this.getSystemRunningStatus() //鑾峰彇绯荤粺杩愯鐘舵��
-						this.initLev()//鍒濆鍖栨ゼ灞備俊鎭�
 
 						this.consoleInterval = setInterval(() => {
-							this.websocketConnect()
-
-							this.getShuttleStateInfo() //鑾峰彇鍥涘悜绌挎杞︿俊鎭�
-							this.getLiftStateInfo() //鑾峰彇鎻愬崌鏈轰俊鎭�
+							this.getCrnInfo() //鑾峰彇鍫嗗灈鏈烘暟鎹�
 							this.getSiteInfo() //鑾峰彇杈撻�佺珯鐐规暟鎹�
-							this.getMap(this.currentLev) //鑾峰彇瀹炴椂鍦板浘鏁版嵁
-							this.getCodeData()//鑾峰彇鏉$爜
+							this.getRgvInfo() //鑾峰彇RGV鏁版嵁
+							// this.getCodeData()//鑾峰彇鏉$爜
 						}, 1000)
 					},
 					//鑾峰彇鍦板浘鏁版嵁
-					getMap(lev) {
-						this.sendWs(JSON.stringify({
-							"url": "/console/map/auth",
-							"data": lev
-						}))
+					getMap() {
+						let rowPx = 35;
+						let colPx = 35;
+
+						$.ajax({
+							url: "./test.json",
+							method: "get",
+							success: (res) => {
+								let data = res.data;
+								let mapData = JSON.parse(data)
+								mapData.forEach((row) => {
+									let shelfIdx = 1;
+									row.forEach((col) => {
+										if (col.type == 'shelf') {
+											col.shelfIdx = shelfIdx;
+											shelfIdx++;
+										}
+
+										col.rowPx = (col.rowSpan * rowPx) + "px";
+										col.colPx = (col.colSpan * colPx) + "px";
+
+										col.width = (col.cellWidth / 30) + "px";
+									})
+								})
+								this.map = mapData;
+							}
+						})
 					},
-					setMap(res) {
-						//鑾峰彇鍦板浘鏁版嵁
-						let data = res.data
-						let tmp = []
-						for (let i = 1; i < data.length - 1; i++) {
-							tmp.push(data[i])
-						}
-						// console.log(tmp)
-						this.map = tmp
+					openCrn(id) {
+						this.crnWindow = true; //鎵撳紑绔欑偣淇℃伅寮圭獥
+						$(".detailed").empty();
+						$('.detailed').append(id + '鍙峰爢鍨涙満');
+						$.ajax({
+							url: baseUrl + "/console/crn/detail",
+							headers: {
+								'token': localStorage.getItem('token')
+							},
+							data: {
+								crnNo: id
+							},
+							method: 'post',
+							success: function(res) {
+								for (var val in res.data) {
+									var find = $("#crnWindow").find(":input[name='" + val + "']");
+									if (find[0].type === 'text') {
+										find.val(res.data[val]);
+									} else if (find[0].type === 'checkbox') {
+										find.attr("checked", res.data[val] === 'Y');
+									}
+								}
+							}
+						})
+					},
+					openRgv(id) {
+						this.rgvWindow = true; //鎵撳紑RGV淇℃伅寮圭獥
+						$(".detailed").empty();
+						$('.detailed').append(id + '鍙稲GV');
+						$.ajax({
+							url: baseUrl + "/console/rgv/detail",
+							headers: {
+								'token': localStorage.getItem('token')
+							},
+							data: {
+								rgvNo: id
+							},
+							method: 'post',
+							success: function(res) {
+								for (var val in res.data) {
+									var find = $("#rgvWindow").find(":input[name='" + val + "']");
+									if (find[0].type === 'text') {
+										find.val(res.data[val]);
+									} else if (find[0].type === 'checkbox') {
+										find.attr("checked", res.data[val] === 'Y');
+									}
+								}
+							}
+
+						})
 					},
 					openSite(id) {
 						this.siteWindow = true; //鎵撳紑绔欑偣淇℃伅寮圭獥
@@ -417,77 +626,168 @@
 					},
 					getSiteInfo() {
 						//鑾峰彇杈撻�佺珯鐐规暟鎹�
-						this.sendWs(JSON.stringify({
-							"url": "/console/latest/data/site",
-							"data": {}
-						}))
-					},
-					setSiteInfo(res) {
-						//鑾峰彇杈撻�佺珯鐐规暟鎹�
-						if (res.code === 200){
-							var sites = res.data;
-							for (var i = 0; i < sites.length; i++){
-								var siteEl = $("#site-"+sites[i].siteId);
-								siteEl.attr("class", "site " + sites[i].siteStatus);
-								if (sites[i].workNo != null && sites[i].workNo>0) {
-									siteEl.html(sites[i].siteId + "[" + sites[i].workNo + "]");
-								} else {
-									siteEl.html(sites[i].siteId);
-								}
-							}
-						} else if (res.code === 403){
-							parent.location.href = baseUrl+"/login";
-						}  else {
-							console.log(res.msg);
-						}
-					},
-					changFloor(lev) {
-						this.currentLev = lev
-						this.currentLevShuttleList = []
-						this.getMap(lev)
-					},
-					getShuttleStateInfo() {
-						this.sendWs(JSON.stringify({
-							"url": "/shuttle/table/shuttle/state",
-							"data": {}
-						}))
-					},
-					setShuttleStateInfo(res) {
-						// 鍥涘悜绌挎杞︿俊鎭〃鑾峰彇
-						let that = this
-						if (res.code == 200) {
-							let currentLevShuttle = []//褰撳墠妤煎眰灏忚溅闆嗗悎
-							res.data.forEach((item,idx) => {
-								if (item != null && item.point != undefined && item.point != null) {
-									if (item.point.z == that.currentLev) {
-										currentLevShuttle.push(item);
+						$.ajax({
+							url: baseUrl + "/console/latest/data/site",
+							headers: {'token': localStorage.getItem('token')},
+							method: 'POST',
+							success: function (res) {
+								if (res.code === 200) {
+									var sites = res.data;
+									for (var i = 0; i < sites.length; i++){
+										var siteEl = $("#site-"+sites[i].siteId);
+										siteEl.attr("class", "site " + sites[i].siteStatus);
+										if (sites[i].workNo != null && sites[i].workNo>0) {
+											siteEl.html(sites[i].siteId + "[" + sites[i].workNo + "]");
+										} else {
+											siteEl.html(sites[i].siteId);
+										}
 									}
+								} else if (res.code === 403) {
+									parent.location.href = baseUrl + "/login";
+								} else {
+									console.log(res.msg);
 								}
-							})
-							that.currentLevShuttleList = currentLevShuttle
-							that.shuttleList = res.data
-
-							if (that.shuttleColorList.length == 0) {
-								let colorList = []//闅忔満灏忚溅棰滆壊
-								res.data.forEach((item,idx) => {
-									colorList[item.shuttleNo] = that.colorRGB()
-								})
-								that.shuttleColorList = colorList
 							}
-						}
+						});
 					},
-					getLiftStateInfo() {
-						// 鎻愬崌鏈轰俊鎭〃鑾峰彇
-						this.sendWs(JSON.stringify({
-							"url": "/lift/table/lift/state",
-							"data": {}
-						}))
+					getCrnInfo() {
+						let that = this
+						//鑾峰彇鍫嗗灈鏈烘暟鎹�
+						$.ajax({
+							url: baseUrl + "/console/latest/data/crn",
+							headers: {'token': localStorage.getItem('token')},
+							method: 'POST',
+							success: function (res) {
+								if (res.code === 200) {
+									var crns = res.data;
+
+									if (that.crnInitPosition.length == 0) {
+										let position = []
+										for (var i = 0; i < crns.length; i++) {
+											var crnEl = $("#crn-" + crns[i].crnId);
+											position.push({
+												id: crns[i].crnId,
+												left: crnEl.offset().left + crnEl.width()
+											})
+										}
+										that.crnInitPosition = position
+										return;
+									}
+
+									let crnList = []
+									for (var i = 0; i < crns.length; i++) {
+										var crnEl = $("#crn-" + crns[i].crnId);
+										crnEl.attr("class", "crn-item " + crns[i].crnStatus);
+
+										if (crns[i].bay < 0 || crns[i].bay === -2) {
+											crns[i].bay = 1
+										}
+
+										let basePosition = 0;
+										that.crnInitPosition.forEach((item) => {
+											if (item.id == crns[i].crnId) {
+												basePosition = item.left
+											}
+										})
+
+										var offSet = crns[i].offset;
+										let finalOffset = basePosition + offSet;
+										if (finalOffset < basePosition) {
+											finalOffset = basePosition;
+										}
+										crnEl.animate({left: finalOffset + 'px'}, 1000);
+
+										crnList.push({
+											crnNo: crns[i].crnId,
+											crnStatus: crns[i].crnStatus
+										})
+									}
+									that.crnList = crnList;
+
+								} else if (res.code === 403) {
+									parent.location.href = baseUrl + "/login";
+								} else {
+									console.log(res.msg);
+								}
+							}
+						});
 					},
-					setLiftStateInfo(res) {
-						// 鎻愬崌鏈轰俊鎭〃鑾峰彇
-						if (res.code == 200) {
-							this.liftList = res.data
-						}
+					getRgvInfo() {
+						let that = this
+						//鑾峰彇RGV鏁版嵁
+						$.ajax({
+							url: baseUrl + "/console/latest/data/rgv",
+							headers: {'token': localStorage.getItem('token')},
+							method: 'POST',
+							success: function (res) {
+								if (res.code === 200) {
+									var rgvs = res.data;
+
+									if (that.rgvPosition.length == 0) {
+										let position = []
+										for (var i = 0; i < rgvs.length; i++) {
+											var rgvEl = $("#rgv-" + rgvs[i].rgvId);
+											position.push({
+												id: rgvs[i].rgvId,
+												trackSiteNo: rgvs[i].trackSiteNo,
+												initLeft: rgvEl.offset().left
+											})
+										}
+										that.rgvPosition = position
+										return;
+									}
+
+									for (var i = 0; i < rgvs.length; i++) {
+										var rgvEl = $("#rgv-" + rgvs[i].rgvId);
+										if (rgvs[i].rgvStatus == 'IDLE') {
+											rgvEl.attr("class", "rgv-item");
+										}else if (rgvs[i].rgvStatus == 'WORKING') {
+											rgvEl.attr("class", "rgv-item machine-working");
+										}
+
+										let trackSiteNo = rgvs[i].trackSiteNo;
+										let trackSiteEl = $("#rgvTrackSiteNo-" + trackSiteNo);
+
+										let flag = false;
+										that.rgvPosition.forEach((item) => {
+											if (item.id == rgvs[i].rgvId) {
+												if (item.trackSiteNo != trackSiteNo) {
+													flag = true
+												}
+											}
+										})
+
+										if (flag) {
+											let finalOffset = 0;
+											let targetPosition = trackSiteEl.parent().parent().position().left;
+											let rgvPosition = rgvEl.position().left;
+											let calcResult = targetPosition - rgvPosition
+											if (calcResult > 0) {
+												finalOffset = targetPosition + trackSiteEl.width();
+											}else {
+												finalOffset = targetPosition;
+											}
+
+											rgvEl.animate({left: finalOffset + "px"}, 500);
+
+											let position = []
+											that.rgvPosition.forEach((item) => {
+												if (item.id == rgvs[i].rgvId) {
+													item.trackSiteNo = trackSiteNo
+												}
+												position.push(item)
+											})
+											that.rgvPosition = position
+										}
+
+									}
+								} else if (res.code === 403) {
+									parent.location.href = baseUrl + "/login";
+								} else {
+									console.log(res.msg);
+								}
+							}
+						});
 					},
 					systemSwitch() {
 						// 绯荤粺寮�鍏�
@@ -576,123 +876,87 @@
 							}
 						});
 					},
-					getCarPosition(x,y) {
-						//璁$畻鍥涘悜绌挎杞﹀浘鏍囦綅缃�
-						let top = (x * 35 - 35) + "px" //闇�瑕佸噺鍘诲皬杞﹁嚜宸辨墍鍗犻珮搴�
-						let left = (y * 35) + "px" //闇�瑕佸噺鍘诲皬杞﹁嚜宸辨墍鍗犲搴�
-						return [top,left];
-					},
-					testMove() {
-						let that = this
-						clearInterval(this.consoleInterval)//娓呯悊瀹氭椂鍣�
-
-						let shuttleList = this.currentLevShuttleList
-						$.ajax({
-							url: baseUrl + "/static/testMoveData.json",
-							headers: {
-								'token': localStorage.getItem('token')
-							},
-							method: 'GET',
-							success: function(res) {
-								shuttleList[0].moveAdvancePath = res
-								that.currentLevShuttleList = shuttleList
-
-								let index = 0
-								let tmp = null
-								tmp = setInterval(() => {
-									if (index < res.length) {
-										that.currentLevShuttleList[0].point.y = res[index].y
-										that.currentLevShuttleList[0].point.x = res[index].x
-										index++
-									}else {
-										clearInterval(tmp)
-										that.init()
-									}
-								},1000)
-							}
-						});
-					},
-					colorRGB(){
-						//闅忔満棰滆壊
-						const r = Math.floor(Math.random()*256);
-						const g = Math.floor(Math.random()*256);
-						const b = Math.floor(Math.random()*256);
-						return `rgb(${r},${g},${b})`;
-					},
-					checkAdvancePath(x,y) {
-						//妫�娴嬭矾寰勬槸鍚︿负绌挎杞﹂璁¤矾寰勶紝濡倄鍜寉璺緞鏄┛姊溅棰勮璺緞锛屽垯杩斿洖灏忚溅鍙�
-						this.currentLevShuttleList.forEach((item,idx) => {
-							if (item.moveAdvancePath != null) {
-								item.moveAdvancePath.forEach((path,index) => {
-									if (path.x === x && path.y === y) {
-										return item.shuttleNo;
-									}
-								})
-							}
-						})
-						let data = []
-						let shuttleList = this.currentLevShuttleList;
-						for (var i = 0; i < shuttleList.length; i++) {
-							let shuttle = shuttleList[i]
-							let moveAdvancePath = shuttle.moveAdvancePath
-							if (moveAdvancePath != null) {
-								for (var j = 0; j < moveAdvancePath.length; j++) {
-									let path = moveAdvancePath[j]
-									if (path.x-1 === x && path.y === y) {//璺緞绗﹀悎
-										data.push(shuttle.shuttleNo)
-										continue;
-									}
-								}
-							}
-						}
-						return data;//杩斿洖灏忚溅鍙烽泦鍚�
-					},
-					resetMap() {
-						//閲嶇疆鍦板浘
-						let that = this
-						$.ajax({
-							url:baseUrl+"/console/map/resetMap/" + this.currentLev,
-							headers:{
-								'token': localStorage.getItem('token')
-							},
-							data:{},
-							method:'get',
-							success:function (res) {
-								that.$message({
-									message: that.currentLev + '灞傚湴鍥鹃噸缃畬鎴�',
-									type: 'success'
-								});
-							}
-						})
-					},
-					initLev(){
-						let that = this
-						$.ajax({
-							url: baseUrl + "/console/map/lev/list",
-							headers: {
-								'token': localStorage.getItem('token')
-							},
-							data: {},
-							method: 'get',
-							success: function(res) {
-								if (res.code === 200) {
-									that.floorList = res.data;
-								} else if (res.code === 403) {
-									parent.location.href = baseUrl + "/login";
-								} else {
-									that.$message({
-										message: res.msg,
-										type: 'error'
-									});
-								}
-							}
-						});
-					},
 					getCodeData(){
 						this.sendWs(JSON.stringify({
 							"url": "/console/barcode/output/site",
 							"data": {}
 						}))
+
+						let that = this
+						//鑾峰彇RGV鏁版嵁
+						$.ajax({
+							url: baseUrl + "/console/barcode/output/site",
+							headers: {'token': localStorage.getItem('token')},
+							method: 'POST',
+							success: function (res) {
+								if (res.code === 200) {
+									var rgvs = res.data;
+
+									if (that.rgvPosition.length == 0) {
+										let position = []
+										for (var i = 0; i < rgvs.length; i++) {
+											var rgvEl = $("#rgv-" + rgvs[i].rgvId);
+											position.push({
+												id: rgvs[i].rgvId,
+												trackSiteNo: rgvs[i].trackSiteNo,
+												initLeft: rgvEl.offset().left
+											})
+										}
+										that.rgvPosition = position
+										return;
+									}
+
+									for (var i = 0; i < rgvs.length; i++) {
+										var rgvEl = $("#rgv-" + rgvs[i].rgvId);
+										if (rgvs[i].rgvStatus == 'IDLE') {
+											rgvEl.attr("class", "rgv-item");
+										}else if (rgvs[i].rgvStatus == 'WORKING') {
+											rgvEl.attr("class", "rgv-item machine-working");
+										}
+
+										let trackSiteNo = rgvs[i].trackSiteNo;
+										let trackSiteEl = $("#rgvTrackSiteNo-" + trackSiteNo);
+
+										let flag = false;
+										that.rgvPosition.forEach((item) => {
+											if (item.id == rgvs[i].rgvId) {
+												if (item.trackSiteNo != trackSiteNo) {
+													flag = true
+												}
+											}
+										})
+
+										if (flag) {
+											let finalOffset = 0;
+											let targetPosition = trackSiteEl.parent().parent().position().left;
+											let rgvPosition = rgvEl.position().left;
+											let calcResult = targetPosition - rgvPosition
+											if (calcResult > 0) {
+												finalOffset = targetPosition + trackSiteEl.width();
+											}else {
+												finalOffset = targetPosition;
+											}
+
+											rgvEl.animate({left: finalOffset + "px"}, 500);
+
+											let position = []
+											that.rgvPosition.forEach((item) => {
+												if (item.id == rgvs[i].rgvId) {
+													item.trackSiteNo = trackSiteNo
+												}
+												position.push(item)
+											})
+											that.rgvPosition = position
+										}
+
+									}
+								} else if (res.code === 403) {
+									parent.location.href = baseUrl + "/login";
+								} else {
+									console.log(res.msg);
+								}
+							}
+						});
 					},
 					setCodeData(res) {
 						if(res.code === 200){
@@ -705,47 +969,34 @@
 							}
 						}
 					},
-					websocketConnect() {
-						if (this.ws == null) {
-							this.ws = new WebSocket("ws://" + window.location.host + baseUrl + "/console/websocket");
-							this.ws.onopen = this.webSocketOnOpen
-							this.ws.onerror = this.webSocketOnError
-							this.ws.onmessage = this.webSocketOnMessage
-							this.ws.onclose = this.webSocketClose
+					getDeviceNo(obj) {
+						if (this.isJson(obj)) {
+							let data = JSON.parse(obj)
+							if (data.deviceNo == null || data.deviceNo == undefined) {
+								return -1;
+							}
+							return data.deviceNo;
+						}else {
+							return -1;
 						}
 					},
-					webSocketOnOpen(e) {
-						console.log("open");
-					},
-					webSocketOnError(e) {
-						this.ws = null;
-						console.log(e);
-					},
-					webSocketOnMessage(e) {
-						const result = JSON.parse(e.data);
-						if (result.url == "/shuttle/table/shuttle/state") {
-							this.setShuttleStateInfo(JSON.parse(result.data))
-						}else if (result.url == "/lift/table/lift/state") {
-							this.setLiftStateInfo(JSON.parse(result.data))
-						}else if (result.url == "/console/latest/data/site") {
-							this.setSiteInfo(JSON.parse(result.data))
-						}else if (result.url == "/console/map/auth") {
-							this.setMap(JSON.parse(result.data))
-						}else if (result.url == "/console/barcode/output/site") {
-							this.setCodeData(JSON.parse(result.data))
+					getTrackSiteNo(obj) {
+						if (this.isJson(obj)) {
+							let data = JSON.parse(obj)
+							if (data.trackSiteNo == null || data.trackSiteNo == undefined) {
+								return -1;
+							}
+							return data.trackSiteNo;
+						}else {
+							return -1;
 						}
 					},
-					webSocketClose(e) {
-						this.ws = null;
-						console.log("close");
-					},
-					sendWs(message) {
-						if (this.ws == null) {
-							return;
-						}
-
-						if (this.ws.readyState == WebSocket.OPEN) {
-							this.ws.send(message);
+					isJson(str) {
+						try {
+							JSON.parse(str);
+							return true;
+						} catch (e) {
+							return false;
 						}
 					}
 				}
diff --git a/src/main/webapp/views/console1.html b/src/main/webapp/views/console1.html
deleted file mode 100644
index ae94ed5..0000000
--- a/src/main/webapp/views/console1.html
+++ /dev/null
@@ -1,721 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-	<head>
-		<meta charset="UTF-8">
-		<title>WCS鎺у埗涓績</title>
-		<link rel="stylesheet" href="../static/css/animate.min.css">
-		<link rel="stylesheet" href="../static/vue/element/element.css">
-		<link rel="stylesheet" href="../static/css/console_vue.css">
-		<link rel="stylesheet" href="../static/css/toggle-switch.css">
-		<script type="text/javascript" src="../static/js/jquery/jquery-3.3.1.min.js"></script>
-		<script type="text/javascript" src="../static/layui/layui.js"></script>
-		<script type="text/javascript" src="../static/js/handlebars/handlebars-v4.5.3.js"></script>
-		<script type="text/javascript" src="../static/js/common.js"></script>
-		<script type="text/javascript" src="../static/vue/js/vue.min.js"></script>
-		<script type="text/javascript" src="../static/vue/element/element.js"></script>
-	</head>
-	<body>
-		<div id="app">
-			<div style="display: flex;justify-content: center;align-items: center;width: 100%;margin-top: 150px;">
-				<div id="mapDataId" style="zoom: 0.7;position: relative;">
-					<div class="pointContainer" v-for="(row,index) in map" :key="index">
-						<div v-for="(col,idx) in row" :key="idx">
-							<div v-if="col.value == 0">
-								<!-- 瀛愯建閬� 璺緞涓虹┛姊溅棰勮璺緞鍒欐樉绀虹┛姊溅棰滆壊鍜岀┛姊溅鍙� -->
-								<div :style="{background: checkAdvancePath(index,idx).length == 0 ? '':shuttleColorList[checkAdvancePath(index,idx)[0]]}" class="item" v-if="col.data.length > 0">{{col.data}}</div>
-								<div :style="{background: checkAdvancePath(index,idx).length == 0 ? '':shuttleColorList[checkAdvancePath(index,idx)[0]]}" class="item" v-else>{{checkAdvancePath(index,idx).length == 0 ? idx:checkAdvancePath(index,idx)}}</div>
-							</div>
-							<div v-else-if="col.value == 3">
-								<!-- 姣嶈建閬� 璺緞涓虹┛姊溅棰勮璺緞鍒欐樉绀虹┛姊溅棰滆壊鍜岀┛姊溅鍙� -->
-								<div :style="{background: checkAdvancePath(index,idx).length == 0 ? '#5af':shuttleColorList[checkAdvancePath(index,idx)[0]]}" class="item">{{checkAdvancePath(index,idx).length == 0 ? '&#x21c5;&#x21c4;':checkAdvancePath(index,idx)}}</div>
-							</div>
-							<div v-else-if="col.value == 4">
-								<!-- 绔欑偣 -->
-								<div class="site" :id="'site-' + col.data" @click="openSite(col.data)">{{col.data}}</div>
-							</div>
-							<div v-else-if="col.value == 5">
-								<!-- 鍏呯數妗� -->
-								<div class="item" style="font-size: 24px">&#9889;</div>
-							</div>
-							<div v-else-if="col.value == -999">
-								<!-- 璺緞鍗犵敤鍖哄煙 -->
-								<div class="item" style="background:#f83333;color: #fff;">{{idx}}</div>
-							</div>
-							<div v-else-if="col.value < 0">
-								<!-- 绂佹鏄剧ず鍖哄煙 -->
-								<div class="item" style="visibility: hidden">{{idx}}</div>
-							</div>
-							<div v-else>
-								<div class="item" v-if="col.data.length > 0">{{col.data}}</div>
-								<div class="item" v-else>{{idx}}-{{col.value}}</div>
-							</div>
-						</div>
-
-						<div>
-							<!-- 鏄剧ず琛屽彿 -->
-							<div class="item" style="background: none;color: #000;">#{{index+1}}</div>
-						</div>
-					</div>
-
-					<!--杈撳嚭灏忚溅-->
-					<div v-for="(car,idx) in currentLevShuttleList"
-						 :style="{
-						 left: getCarPosition(car.wcsPoint.x,car.wcsPoint.y)[1]
-						 ,top: getCarPosition(car.wcsPoint.x,car.wcsPoint.y)[0]
-						 ,color: shuttleColorList[car.shuttleNo]
-						 }"
-						 class="sxcar" :id="'sxcar-' + car.shuttleNo">
-						{{car.shuttleNo}}
-					</div>
-
-				</div>
-
-				<!--杈撳嚭妤煎眰-->
-				<div style="height: 100%;">
-					<div class="floorBtnBox" v-for="(lev,idx) in floorList">
-						<el-button :style="{background:currentLev === lev ? '#7DCDFF':''}" @click="changFloor(lev)">{{lev}}F</el-button>
-					</div>
-					<div>
-						<el-button @click="testMove()">娴嬭瘯绉诲姩杞�</el-button>
-						<el-button @click="resetMap()">閲嶇疆鍦板浘</el-button>
-					</div>
-				</div>
-			</div>
-
-			<div class="footer">
-				<!-- 鎬诲紑鍏� -->
-				<div class="line-status">
-					<div class="body-head">鎬诲紑鍏�</div>
-					<div class="switch" @click="systemSwitch">
-						<label id="system-toggle" class="toggle-switch" style="margin-left: 20px;">
-							<input id="system-toggle-checked" disabled type="checkbox">
-							<div class="button">
-								<div class="light"></div>
-								<div class="dots"></div>
-								<div class="characters"></div>
-								<div class="shine"></div>
-								<div class="shadow"></div>
-							</div>
-						</label>
-
-						<div class="switch_r">
-							<p>绯荤粺鐘舵��</p>
-							<p id="system-run-desc">绯荤粺杩愯涓�</p>
-						</div>
-					</div>
-				</div>
-				<!-- 鍥涘悜绌挎杞︾姸鎬� -->
-				<div class="line-status">
-					<div class="body-head">绌挎杞︾姸鎬�</div>
-					<div class="shuttle-status-box">
-						<div v-for="(item,idx) in shuttleList" class="state">
-							<span :style="{color: shuttleColorList[item.shuttleNo]}">鍥涘悜绌挎杞� {{item.shuttleNo}}</span>
-							<span v-if="item.protocolStatus == 1"
-								class="state-ss shuttle-idle">{{item.protocolStatus$}}</span>
-							<span v-else-if="item.protocolStatus == 2"
-								class="state-ss shuttle-working">{{item.protocolStatus$}}</span>
-							<span v-else-if="item.protocolStatus == 3"
-								class="state-ss shuttle-waiting">{{item.protocolStatus$}}</span>
-							<span v-else-if="item.protocolStatus == 4"
-								class="state-ss shuttle-charging">{{item.protocolStatus$}}</span>
-							<span v-else-if="item.protocolStatus == 5"
-								class="state-ss shuttle-charging-waiting">{{item.protocolStatus$}}</span>
-							<span v-else-if="item.protocolStatus == 6"
-								class="state-ss shuttle-fixing">{{item.protocolStatus$}}</span>
-							<span v-else-if="item.protocolStatus == 7"
-								class="state-ss shuttle-offline">{{item.protocolStatus$}}</span>
-							<span v-else class="state-ss shuttle-offline">{{item.protocolStatus$}}</span>
-						</div>
-					</div>
-					<div class="allStatus"><span>鎵�鏈夌姸鎬�</span></div>
-					<div class="allStatus item-group">
-						<span class="shuttle-idle">绌洪棽</span>
-						<span class="shuttle-working">浣滀笟涓�</span>
-						<span class="shuttle-waiting">绛夊緟纭</span>
-						<span class="shuttle-charging">鍏呯數涓�</span>
-						<span class="shuttle-charging-waiting">鍏呯數浠诲姟绛夊緟纭</span>
-						<span class="shuttle-fixing">鏁呴殰淇涓�</span>
-						<span class="shuttle-offline">绂荤嚎</span>
-					</div>
-				</div>
-				<!-- 鎻愬崌鏈虹姸鎬� -->
-				<div class="line-status">
-					<div class="body-head">鎻愬崌鏈虹姸鎬�</div>
-					<div class="lift-status-box">
-						<div v-for="(item,idx) in liftList" class="state states">
-							<span>鎻愬崌鏈� {{item.liftNo}}</span>
-							<span v-if="item.protocolStatus == 1"
-								class="state-ss lift-idle">{{item.protocolStatus$}}</span>
-							<span v-else-if="item.protocolStatus == 2"
-								class="state-ss lift-working">{{item.protocolStatus$}}</span>
-							<span v-else-if="item.protocolStatus == 3"
-								class="state-ss lift-waiting">{{item.protocolStatus$}}</span>
-							<span v-else-if="item.protocolStatus == 4"
-								class="state-ss lift-offline">{{item.protocolStatus$}}</span>
-							<span v-else class="state-ss lift-offline">{{item.protocolStatus$}}</span>
-						</div>
-					</div>
-					<div class="allStatus"><span>鎵�鏈夌姸鎬�</span></div>
-					<div class="allStatus item-group">
-						<span class="lift-idle">绌洪棽</span>
-						<span class="lift-working">浣滀笟涓�</span>
-						<span class="lift-waiting">绛夊緟纭</span>
-						<span class="lift-offline">绂荤嚎</span>
-					</div>
-				</div>
-				<!-- 杈撻�佺嚎鐘舵�� -->
-				<div class="line-status">
-					<div class="body-head">杈撻�佺嚎鐘舵��</div>
-					<div class="state states">
-						<span>杩愯緭绾挎�绘暟</span>
-						<span class="line-ss">9</span>
-					</div>
-					<div class="allStatus"><span>鎵�鏈夌姸鎬�</span></div>
-					<div class="allStatus item-group">
-						<span class="site-auto-run-id">鑷姩+鏈夌墿+ID</span>
-						<span class="site-auto-run">鑷姩+鏈夌墿</span>
-						<span class="site-auto-id">鑷姩+ID</span>
-						<span class="site-auto">鑷姩</span>
-						<span class="site-unauto">闈炶嚜鍔�/鎵嬪姩</span>
-					</div>
-				</div>
-				<!-- 鏉$爜琛ㄦ牸 -->
-				<div class="bar-code">
-					<div class="body-head" id="code">鏉$爜鎵弿鍣�</div>
-					<div class="tablebox">
-						<div class="table-head">
-							<li><span>鏉$爜鍚嶇О</span><span class="right">鎵爜鏃堕棿</span></li>
-						</div>
-						<div id="barcode1" class="table-body">
-							<li v-for="(item,index) in codeList1" :key="index"><span>{{item.barcode}}</span><span class="right">{{item.time}}</span></li>
-						</div>
-					</div>
-					<div class="tablebox">
-						<div class="table-head">
-							<li><span>鏉$爜鍚嶇О</span><span class="right">鎵爜鏃堕棿</span></li>
-						</div>
-						<div id="barcode2" class="table-body">
-							<li v-for="(item,index) in codeList2" :key="index"><span>{{item.barcode}}</span><span class="right">{{item.time}}</span></li>
-						</div>
-					</div>
-				</div>
-			</div>
-
-			<!-- 杈撻�佽澶囧脊绐� -->
-			<div id="siteWindow" :style="{display:siteWindow?'block':'none'}" class="animate__animated animate__fadeIn">
-				<!-- 琛ㄥご -->
-				<div id="siteWindow-head">
-					<div class="detailed"></div>
-					<button @click="siteWindow = false"></button>
-				</div>
-				<!-- 琛ㄥ唴瀹� -->
-				<div class="siteWindow-body">
-					<form>
-						<!-- 璁惧鍙� -->
-						<div class="form-item">
-							<div class="form-item-label">
-								<span>璁惧鍙凤細</span>
-							</div>
-							<div class="form-item-input">
-								<input type="text" name="siteId" value="">
-							</div>
-						</div>
-						<!-- 宸ヤ綔鍙� -->
-						<div class="form-item">
-							<div class="form-item-label">
-								<span>宸ヤ綔鍙凤細</span>
-							</div>
-							<div class="form-item-input">
-								<input type="text" name="workNo" value="">
-							</div>
-						</div>
-						<!-- 宸ヤ綔鐘舵�� -->
-						<div class="form-item">
-							<div class="form-item-label">
-								<span>宸ヤ綔鐘舵�侊細</span>
-							</div>
-							<div class="form-item-input">
-								<input type="text" name="wrkSts" value="">
-							</div>
-						</div>
-						<div class="form-item">
-							<!-- 鑷姩 -->
-							<div class="form-item-checkbox">
-								<div class="form-item-label-checkbox">
-									<span>鑷姩</span>
-								</div>
-								<div class="form-item-input-checkbox">
-									<input type="checkbox" name="autoing">
-								</div>
-							</div>
-							<!-- 鏈夌墿 -->
-							<div class="form-item-checkbox">
-								<div class="form-item-label-checkbox">
-									<span>鏈夌墿</span>
-								</div>
-								<div class="form-item-input-checkbox">
-									<input type="checkbox" name="loading">
-								</div>
-							</div>
-							<!-- 鑳藉叆 -->
-							<div class="form-item-checkbox">
-								<div class="form-item-label-checkbox">
-									<span>鑳藉叆</span>
-								</div>
-								<div class="form-item-input-checkbox">
-									<input type="checkbox" name="canining">
-								</div>
-							</div>
-							<!-- 鑳藉嚭 -->
-							<div class="form-item-checkbox">
-								<div class="form-item-label-checkbox">
-									<span>鑳藉嚭</span>
-								</div>
-								<div class="form-item-input-checkbox">
-									<input type="checkbox" name="canouting">
-								</div>
-							</div>
-						</div>
-						<!-- 鍑哄叆绫诲瀷 -->
-						<div class="form-item">
-							<div class="form-item-label">
-								<span>鍑哄叆绫诲瀷锛�</span>
-							</div>
-							<div class="form-item-input">
-								<input type="text" name="ioType" value="">
-							</div>
-						</div>
-						<!-- 婧愮珯 -->
-						<div class="form-item">
-							<div class="form-item-label">
-								<span>婧愮珯锛�</span>
-							</div>
-							<div class="form-item-input">
-								<input type="text" name="sourceStaNo" value="">
-							</div>
-						</div>
-						<!-- 鐩爣绔� -->
-						<div class="form-item">
-							<div class="form-item-label">
-								<span>鐩爣绔欙細</span>
-							</div>
-							<div class="form-item-input">
-								<input type="text" name="staNo" value="">
-							</div>
-						</div>
-						<!-- 婧愬簱浣� -->
-						<div class="form-item">
-							<div class="form-item-label">
-								<span>婧愬簱浣嶏細</span>
-							</div>
-							<div class="form-item-input">
-								<input type="text" name="sourceLocNo" value="">
-							</div>
-						</div>
-						<!-- 鐩爣搴撲綅 -->
-						<div class="form-item">
-							<div class="form-item-label">
-								<span>鐩爣搴撲綅锛�</span>
-							</div>
-							<div class="form-item-input">
-								<input type="text" name="locNo" value="">
-							</div>
-						</div>
-					</form>
-				</div>
-			</div>
-
-		</div>
-		<script>
-			var app = new Vue({
-				el: '#app',
-				data: {
-					map: [],//鍦板浘鏁版嵁
-					currentLev: 1,//鍦板浘褰撳墠妤煎眰
-					siteWindow: false, //绔欑偣寮圭獥鏄剧ず榛樿涓嶆樉绀�
-					floorList: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], //褰撳墠椤圭洰妤煎眰
-					shuttleList: [], //鍥涘悜绌挎杞﹂泦鍚�
-					currentLevShuttleList: [],//褰撳墠妤煎眰鍥涘悜绌挎杞﹂泦鍚�
-					shuttleColorList: [],//鍥涘悜绌挎杞﹂鑹查泦鍚�
-					liftList: [], //鎻愬崌鏈洪泦鍚�
-					systemStatus: true,//绯荤粺杩愯鐘舵��
-					consoleInterval: null,//瀹氭椂鍣ㄥ瓨鍌ㄥ彉閲�
-					codeList1: [],//鏉$爜List
-					codeList2: [],//鏉$爜List
-					ws: null,
-				},
-				created() {
-					this.init()
-				},
-				watch: {
-
-				},
-				methods: {
-					init() {
-						this.ws = new WebSocket("ws://" + window.location.host + baseUrl + "/console/websocket");
-						this.ws.onopen = this.webSocketOnOpen
-						this.ws.onerror = this.webSocketOnError
-						this.ws.onmessage = this.webSocketOnMessage
-						this.ws.onclose = this.webSocketClose
-
-						this.getMap(this.currentLev)
-						this.getSystemRunningStatus() //鑾峰彇绯荤粺杩愯鐘舵��
-
-						this.consoleInterval = setInterval(() => {
-							this.getShuttleStateInfo() //鑾峰彇鍥涘悜绌挎杞︿俊鎭�
-							this.getLiftStateInfo() //鑾峰彇鎻愬崌鏈轰俊鎭�
-							this.getSiteInfo() //鑾峰彇杈撻�佺珯鐐规暟鎹�
-							this.getMap(this.currentLev) //鑾峰彇瀹炴椂鍦板浘鏁版嵁
-							this.getCodeData()//鑾峰彇鏉$爜
-						}, 1000)
-					},
-					//鑾峰彇鍦板浘鏁版嵁
-					getMap(lev) {
-						this.sendWs(JSON.stringify({
-							"url": "/console/map/auth",
-							"data": lev
-						}))
-					},
-					setMap(res) {
-						//鑾峰彇鍦板浘鏁版嵁
-						let data = res.data
-						let tmp = []
-						for (let i = 1; i < data.length - 1; i++) {
-							tmp.push(data[i])
-						}
-						// console.log(tmp)
-						this.map = tmp
-					},
-					openSite(id) {
-						this.siteWindow = true; //鎵撳紑绔欑偣淇℃伅寮圭獥
-						$(".detailed").empty();
-						$('.detailed').append(id + '绔欑偣璇︾粏淇℃伅');
-						$.ajax({
-							url: baseUrl + "/console/site/detail",
-							headers: {
-								'token': localStorage.getItem('token')
-							},
-							data: {
-								siteId: id
-							},
-							method: 'post',
-							success: function(res) {
-								for (var val in res.data) {
-									var find = $("#siteWindow").find(":input[name='" + val + "']");
-									if (find[0].type === 'text') {
-										find.val(res.data[val]);
-									} else if (find[0].type === 'checkbox') {
-										find.attr("checked", res.data[val] === 'Y');
-									}
-								}
-							}
-
-						})
-					},
-					getSiteInfo() {
-						//鑾峰彇杈撻�佺珯鐐规暟鎹�
-						this.sendWs(JSON.stringify({
-							"url": "/console/latest/data/site",
-							"data": {}
-						}))
-					},
-					setSiteInfo(res) {
-						//鑾峰彇杈撻�佺珯鐐规暟鎹�
-						if (res.code === 200){
-							var sites = res.data;
-							for (var i = 0; i < sites.length; i++){
-								var siteEl = $("#site-"+sites[i].siteId);
-								siteEl.attr("class", "site " + sites[i].siteStatus);
-								if (sites[i].workNo != null && sites[i].workNo>0) {
-									siteEl.html(sites[i].siteId + "[" + sites[i].workNo + "]");
-								} else {
-									siteEl.html(sites[i].siteId);
-								}
-							}
-						} else if (res.code === 403){
-							parent.location.href = baseUrl+"/login";
-						}  else {
-							console.log(res.msg);
-						}
-					},
-					changFloor(lev) {
-						this.currentLev = lev
-						this.currentLevShuttleList = []
-						this.getMap(lev)
-					},
-					getShuttleStateInfo() {
-						this.sendWs(JSON.stringify({
-							"url": "/shuttle/table/shuttle/state",
-							"data": {}
-						}))
-					},
-					setShuttleStateInfo(res) {
-						// 鍥涘悜绌挎杞︿俊鎭〃鑾峰彇
-						let that = this
-						if (res.code == 200) {
-							let currentLevShuttle = []//褰撳墠妤煎眰灏忚溅闆嗗悎
-							res.data.forEach((item,idx) => {
-								if (item != null && item.point != undefined && item.point != null) {
-									if (item.point.z == that.currentLev) {
-										currentLevShuttle.push(item);
-									}
-								}
-							})
-							that.currentLevShuttleList = currentLevShuttle
-							that.shuttleList = res.data
-
-							if (that.shuttleColorList.length == 0) {
-								let colorList = []//闅忔満灏忚溅棰滆壊
-								res.data.forEach((item,idx) => {
-									colorList[item.shuttleNo] = that.colorRGB()
-								})
-								that.shuttleColorList = colorList
-							}
-						}
-					},
-					getLiftStateInfo() {
-						// 鎻愬崌鏈轰俊鎭〃鑾峰彇
-						this.sendWs(JSON.stringify({
-							"url": "/lift/table/lift/state",
-							"data": {}
-						}))
-					},
-					setLiftStateInfo(res) {
-						// 鎻愬崌鏈轰俊鎭〃鑾峰彇
-						if (res.code == 200) {
-							this.liftList = res.data
-						}
-					},
-					systemSwitch() {
-						// 绯荤粺寮�鍏�
-						let that = this
-						if (this.systemStatus) {
-							this.$prompt('璇疯緭鍏ュ彛浠わ紝骞跺仠姝CS绯荤粺', '鎻愮ず', {
-								confirmButtonText: '纭畾',
-								cancelButtonText: '鍙栨秷',
-							}).then(({
-								value
-							}) => {
-								that.doSwitch(0, value)
-							}).catch(() => {
-
-							});
-						} else {
-							this.doSwitch(1)
-						}
-					},
-					doSwitch(operatorType, password) {
-						let that = this
-						$.ajax({
-							url: baseUrl + "/console/system/switch",
-							headers: {
-								'token': localStorage.getItem('token')
-							},
-							data: {
-								operatorType: operatorType,
-								password: password
-							},
-							method: 'POST',
-							success: function(res) {
-								if (res.code === 200) {
-									if (res.data.status) {
-										$('#system-toggle-checked').attr("checked", true);
-										$('#system-run-desc').html("绯荤粺杩愯涓�...");
-										that.systemStatus = true;
-										parent.systemRunning = true;
-									} else {
-										$('#system-toggle-checked').attr("checked", false);
-										$('#system-run-desc').html("绯荤粺宸插仠姝�!");
-										that.systemStatus = false;
-										parent.systemRunning = false;
-									}
-								} else if (res.code === 403) {
-									parent.location.href = baseUrl + "/login";
-								} else {
-									that.$message({
-										message: res.msg,
-										type: 'error'
-									});
-								}
-							}
-						});
-					},
-					getSystemRunningStatus() {
-						// 鑾峰彇wcs绯荤粺杩愯鐘舵��
-						let that = this
-						$.ajax({
-							url: baseUrl + "/console/system/running/status",
-							headers: {
-								'token': localStorage.getItem('token')
-							},
-							method: 'POST',
-							success: function(res) {
-								if (res.code === 200) {
-									if (res.data.status) {
-										$('#system-toggle-checked').attr("checked", true);
-										$('#system-run-desc').html("绯荤粺杩愯涓�...");
-										that.systemStatus = true;
-										parent.systemRunning = true;
-									} else {
-										$('#system-toggle-checked').attr("checked", false);
-										$('#system-run-desc').html("绯荤粺宸插仠姝�!");
-										that.systemStatus = false;
-										parent.systemRunning = false;
-									}
-								} else if (res.code === 403) {
-									parent.location.href = baseUrl + "/login";
-								} else {
-									that.$message({
-										message: res.msg,
-										type: 'error'
-									});
-								}
-							}
-						});
-					},
-					getCarPosition(x,y) {
-						//璁$畻鍥涘悜绌挎杞﹀浘鏍囦綅缃�
-						let top = (x * 35 - 35) + "px" //闇�瑕佸噺鍘诲皬杞﹁嚜宸辨墍鍗犻珮搴�
-						let left = (y * 35) + "px" //闇�瑕佸噺鍘诲皬杞﹁嚜宸辨墍鍗犲搴�
-						return [top,left];
-					},
-					testMove() {
-						let that = this
-						clearInterval(this.consoleInterval)//娓呯悊瀹氭椂鍣�
-
-						let shuttleList = this.currentLevShuttleList
-						$.ajax({
-							url: baseUrl + "/static/testMoveData.json",
-							headers: {
-								'token': localStorage.getItem('token')
-							},
-							method: 'GET',
-							success: function(res) {
-								shuttleList[0].moveAdvancePath = res
-								that.currentLevShuttleList = shuttleList
-
-								let index = 0
-								let tmp = null
-								tmp = setInterval(() => {
-									if (index < res.length) {
-										that.currentLevShuttleList[0].wcsPoint.y = res[index].y
-										that.currentLevShuttleList[0].wcsPoint.x = res[index].x
-										index++
-									}else {
-										clearInterval(tmp)
-										that.init()
-									}
-								},1000)
-							}
-						});
-					},
-					colorRGB(){
-						//闅忔満棰滆壊
-						const r = Math.floor(Math.random()*256);
-						const g = Math.floor(Math.random()*256);
-						const b = Math.floor(Math.random()*256);
-						return `rgb(${r},${g},${b})`;
-					},
-					checkAdvancePath(x,y) {
-						//妫�娴嬭矾寰勬槸鍚︿负绌挎杞﹂璁¤矾寰勶紝濡倄鍜寉璺緞鏄┛姊溅棰勮璺緞锛屽垯杩斿洖灏忚溅鍙�
-						this.currentLevShuttleList.forEach((item,idx) => {
-							if (item.moveAdvancePath != null) {
-								item.moveAdvancePath.forEach((path,index) => {
-									if (path.x === x && path.y === y) {
-										return item.shuttleNo;
-									}
-								})
-							}
-						})
-						let data = []
-						let shuttleList = this.currentLevShuttleList;
-						for (var i = 0; i < shuttleList.length; i++) {
-							let shuttle = shuttleList[i]
-							let moveAdvancePath = shuttle.moveAdvancePath
-							if (moveAdvancePath != null) {
-								for (var j = 0; j < moveAdvancePath.length; j++) {
-									let path = moveAdvancePath[j]
-									if (path.x-1 === x && path.y === y) {//璺緞绗﹀悎
-										data.push(shuttle.shuttleNo)
-										continue;
-									}
-								}
-							}
-						}
-						return data;//杩斿洖灏忚溅鍙烽泦鍚�
-					},
-					resetMap() {
-						//閲嶇疆鍦板浘
-						let that = this
-						$.ajax({
-							url:baseUrl+"/console/map/resetMap/" + this.currentLev,
-							headers:{
-								'token': localStorage.getItem('token')
-							},
-							data:{},
-							method:'get',
-							success:function (res) {
-								if (res.code === 200) {
-									that.$message({
-										message: that.currentLev + '灞傚湴鍥鹃噸缃畬鎴�',
-										type: 'success'
-									});
-								}else {
-									that.$message({
-										message: res.msg,
-										type: 'error'
-									});
-								}
-							}
-						})
-					},
-					getCodeData(){
-						this.sendWs(JSON.stringify({
-							"url": "/console/barcode/output/site",
-							"data": {}
-						}))
-					},
-					setCodeData(res) {
-						if(res.code === 200){
-							let data = JSON.parse(res.data)
-							if (data.length <= 5) {
-								this.codeList1 = data;
-							} else {
-								this.codeList1 = data.slice(0, 5);
-								this.codeList2 = data.splice(5, 10);
-							}
-						}
-					},
-					webSocketOnOpen(e) {
-						console.log("open");
-					},
-					webSocketOnError(e) {
-						console.log(e);
-					},
-					webSocketOnMessage(e) {
-						const result = JSON.parse(e.data);
-						if (result.url == "/shuttle/table/shuttle/state") {
-							this.setShuttleStateInfo(JSON.parse(result.data))
-						}else if (result.url == "/lift/table/lift/state") {
-							this.setLiftStateInfo(JSON.parse(result.data))
-						}else if (result.url == "/console/latest/data/site") {
-							this.setSiteInfo(JSON.parse(result.data))
-						}else if (result.url == "/console/map/auth") {
-							this.setMap(JSON.parse(result.data))
-						}else if (result.url == "/console/barcode/output/site") {
-							this.setCodeData(JSON.parse(result.data))
-						}
-					},
-					webSocketClose(e) {
-						console.log("close");
-					},
-					sendWs(message) {
-						if (this.ws.readyState == WebSocket.OPEN) {
-							this.ws.send(message)
-						}
-					}
-				}
-			})
-		</script>
-	</body>
-</html>
diff --git a/src/main/webapp/views/console2.html b/src/main/webapp/views/console2.html
deleted file mode 100644
index 8b09f68..0000000
--- a/src/main/webapp/views/console2.html
+++ /dev/null
@@ -1,1025 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
-    <meta charset="utf-8">
-    <title>WCS鎺у埗涓績</title>
-    <link rel="stylesheet" href="../static/css/console.css">
-    <link rel="stylesheet" href="../static/css/animate.min.css">
-    <link rel="stylesheet" href="../static/css/toggle-switch.css">
-    <script src="../static/js/jquery/jquery-3.3.1.min.js"></script>
-    <script src="../static/js/layer/layer.js"></script>
-    <script type="text/javascript" src="../static/js/common.js"></script>
-</head>
-<body>
-<div class="root">
-    <header class="header">
-        <h1>鑷姩浠撳簱WCS鐩戞帶鍥�</h1>
-        <h6>AUTOMATIC WAREHOUSE WCS MONITORING DIAGRAM</h6>
-    </header>
-    <main class="main">
-        <!--妤煎眰鎸夐挳-->
-            <div id="floorBtnBox">
-                <button class="floorBtn  btn-16" onclick="changFloor(this,1)" style="margin-top: 150px">1F</button>
-                <button class="floorBtn  btn-16" onclick="changFloor(this,2)" style="margin-top: 200px">2F</button>
-                <button class="floorBtn  btn-16" onclick="changFloor(this,3)" style="margin-top: 250px">3F</button>
-                <button class="floorBtn  btn-16" onclick="changFloor(this,4)" style="margin-top: 300px">4F</button>
-                <button class="floorBtn  btn-16" onclick="changFloor(this,5)" style="margin-top: 350px">5F</button>
-                <button class="floorBtn  btn-16" onclick="changFloor(this,6)" style="margin-top: 400px">6F</button>
-                <button class="floorBtn  btn-16" onclick="changFloor(this,7)" style="margin-top: 450px">7F</button>
-                <button class="floorBtn  btn-16" onclick="changFloor(this,8)" style="margin-top: 500px">8F</button>
-                <button class="floorBtn  btn-16" onclick="changFloor(this,9)" style="margin-top: 550px">9F</button>
-                <button class="floorBtn  btn-16" onclick="changFloor(this,10)" style="margin-top: 600px">10F</button>
-            </div>
-            <button class="floorBtn  btn-16" onclick="resetMap()" style="margin-top: 650px;font-size: 14px;">閲嶇疆鍦板浘</button>
-            <button class="floorBtn  btn-16" onclick="testMove()" style="margin-top: 700px;font-size: 14px;">娴嬭瘯绉诲姩杞�</button>
-
-        <!-- 璐ф灦 + 鍫嗗灈鏈� + 鍏ュ簱绔欑偣 -->
-        <div class="main-part" id="mapDataId">
-<!--            &lt;!&ndash; 绗竴缁� &ndash;&gt;-->
-<!--            <div class="lane" id="mapDataId" style="margin-bottom: 280px">-->
-
-<!--            </div>-->
-        </div>
-    </main>
-    <footer class="footer">
-        <!-- 鎬诲紑鍏� -->
-        <div class="system-state">
-            <div class="body-head">鎬诲紑鍏�</div>
-            <div class="switch">
-                <label id="system-toggle" class="toggle-switch" style="margin-left: 20px;">
-                    <input id="system-toggle-checked" checked="checked" type="checkbox">
-                    <div class="button">
-                        <div class="light"></div>
-                        <div class="dots"></div>
-                        <div class="characters"></div>
-                        <div class="shine"></div>
-                        <div class="shadow"></div>
-                    </div>
-                </label>
-
-                <div class="switch_r">
-                    <p>绯荤粺鐘舵��</p>
-                    <p id="system-run-desc">绯荤粺杩愯涓�</p>
-                </div>
-            </div>
-        </div>
-        <!-- 鍥涘悜绌挎杞︾姸鎬� -->
-        <div class="line-status">
-            <div class="body-head">绌挎杞︾姸鎬�</div>
-            <div id="shuttle-status-box" style="height: 100px;overflow-y: scroll;overflow-x: hidden;">
-            </div>
-            <div class="button"><span>鎵�鏈夌姸鎬�</span></div>
-            <div class="button item-group">
-                <span class="shuttle-idle">绌洪棽</span>
-                <span class="shuttle-working">浣滀笟涓�</span>
-                <span class="shuttle-waiting">绛夊緟纭</span>
-                <span class="shuttle-charging">鍏呯數涓�</span>
-                <span class="shuttle-charging-waiting">鍏呯數浠诲姟绛夊緟纭</span>
-                <span class="shuttle-fixing">鏁呴殰淇涓�</span>
-                <span class="shuttle-offline">绂荤嚎</span>
-            </div>
-        </div>
-        <!-- 鎻愬崌鏈虹姸鎬� -->
-        <div class="line-status">
-            <div class="body-head">鎻愬崌鏈虹姸鎬�</div>
-            <div id="lift-status-box" style="height: 120px;overflow-y: scroll;overflow-x: hidden;">
-
-            </div>
-            <div class="button"><span>鎵�鏈夌姸鎬�</span></div>
-            <div class="button item-group">
-                <span class="lift-idle">绌洪棽</span>
-                <span class="lift-working">浣滀笟涓�</span>
-                <span class="lift-waiting">绛夊緟纭</span>
-                <span class="lift-offline">绂荤嚎</span>
-            </div>
-        </div>
-        <!-- 杈撻�佺嚎鐘舵�� -->
-        <div class="line-status">
-            <div class="body-head">杈撻�佺嚎鐘舵��</div>
-            <div class="state states">
-                <span>杩愯緭绾挎�绘暟</span>
-                <span class="line-ss">9</span>
-            </div>
-            <div class="button"><span>鎵�鏈夌姸鎬�</span></div>
-            <div class="button item-group">
-                <span class="site-auto-run-id">鑷姩+鏈夌墿+ID</span>
-                <span class="site-auto-run">鑷姩+鏈夌墿</span>
-                <span class="site-auto-id">鑷姩+ID</span>
-                <span class="site-auto">鑷姩</span>
-                <span class="site-unauto">闈炶嚜鍔�/鎵嬪姩</span>
-            </div>
-        </div>
-        <!-- 鏉$爜琛ㄦ牸 -->
-        <div class="bar-code">
-            <div class="body-head" id="code">鏉$爜鎵弿鍣�</div>
-            <div class="tablebox">
-                <div class="table-head">
-                    <li><span>鏉$爜鍚嶇О</span><span class="right">鎵爜鏃堕棿</span></li>
-                </div>
-                <div id="barcode1" class="table-body">
-
-                </div>
-            </div>
-            <div class="tablebox">
-                <div class="table-head">
-                    <li><span>鏉$爜鍚嶇О</span><span class="right">鎵爜鏃堕棿</span></li>
-                </div>
-                <div id="barcode2" class="table-body">
-
-                </div>
-            </div>
-        </div>
-    </footer>
-
-    <!-- 鍫嗗灈鏈哄脊绐� -->
-    <div id="crnWindow" style="display: none;" class="animate__animated animate__fadeIn">
-        <div id="crnWindow-head">
-            <div class='detailed'></div>
-            <button></button>
-        </div>
-        <form>
-            <!-- 鍫嗗灈鏈哄彿 -->
-            <div class="form-item">
-                <div class="form-item-label" style>
-                    <span>鍫嗗灈鏈哄彿锛�</span>
-                </div>
-                <div class="form-item-input">
-                    <input type="text" name="crnNo" value="">
-                </div>
-            </div>
-            <!-- 宸ヤ綔鍙� -->
-            <div class="form-item">
-                <div class="form-item-label">
-                    <span>宸ヤ綔鍙凤細</span>
-                </div>
-                <div class="form-item-input">
-                    <input type="text" name="workNo" value="">
-                </div>
-            </div>
-            <!-- 绔欐簮 -->
-            <div class="form-item">
-                <div class="form-item-label">
-                    <span>绔欐簮锛�</span>
-                </div>
-                <div class="form-item-input">
-                    <input type="text" name="sourceStaNo" value="">
-                </div>
-            </div>
-            <!-- 鐩爣绔� -->
-            <div class="form-item">
-                <div class="form-item-label">
-                    <span>鐩爣绔欙細</span>
-                </div>
-                <div class="form-item-input">
-                    <input type="text" name="staNo" value="">
-                </div>
-            </div>
-            <!-- 宸ヤ綔鐘舵�� -->
-            <div class="form-item">
-                <div class="form-item-label">
-                    <span>宸ヤ綔鐘舵�侊細</span>
-                </div>
-                <div class="form-item-input">
-                    <input type="text" name="wrkSts" value="">
-                </div>
-            </div>
-            <!-- 鍑哄叆绫诲瀷 -->
-            <div class="form-item">
-                <div class="form-item-label">
-                    <span>鍑哄叆绫诲瀷锛�</span>
-                </div>
-                <div class="form-item-input">
-                    <input type="text" name="ioType" value="">
-                </div>
-            </div>
-            <!-- 婧愬簱浣� -->
-            <div class="form-item">
-                <div class="form-item-label">
-                    <span>婧愬簱浣嶏細</span>
-                </div>
-                <div class="form-item-input">
-                    <input type="text" name="sourceLocNo" value="">
-                </div>
-            </div>
-            <!-- 鐩爣搴撲綅 -->
-            <div class="form-item">
-                <div class="form-item-label">
-                    <span>鐩爣搴撲綅锛�</span>
-                </div>
-                <div class="form-item-input">
-                    <input type="text" name="locNo" value="">
-                </div>
-            </div>
-            <!-- 鍫嗗灈鏈虹姸鎬� -->
-            <div class="form-item">
-                <div class="form-item-label">
-                    <span>鍫嗗灈鏈虹姸鎬侊細</span>
-                </div>
-                <div class="form-item-input">
-                    <input type="text" name="crnStatus" value="">
-                </div>
-            </div>
-            <!-- 寮傚父 -->
-            <div class="form-item">
-                <div class="form-item-label">
-                    <span>寮傚父锛�</span>
-                </div>
-                <div class="form-item-input">
-                    <input type="text" name="error" value="">
-                </div>
-            </div>
-        </form>
-    </div>
-
-    <!-- 杈撻�佽澶囧脊绐� -->
-    <div id="siteWindow" style="display: none;" class="animate__animated animate__fadeIn">
-        <!-- 琛ㄥご -->
-        <div id="siteWindow-head">
-            <div class='detailed'></div>
-            <button></button>
-        </div>
-        <form>
-            <!-- 璁惧鍙� -->
-            <div class="form-item"  >
-                <div class="form-item-label">
-                    <span>璁惧鍙凤細</span>
-                </div>
-                <div class="form-item-input">
-                    <input type="text" name="siteId" value="">
-                </div>
-            </div>
-            <!-- 宸ヤ綔鍙� -->
-            <div class="form-item">
-                <div class="form-item-label">
-                    <span>宸ヤ綔鍙凤細</span>
-                </div>
-                <div class="form-item-input">
-                    <input type="text" name="workNo" value="">
-                </div>
-            </div>
-            <!-- 宸ヤ綔鐘舵�� -->
-            <div class="form-item">
-                <div class="form-item-label">
-                    <span>宸ヤ綔鐘舵�侊細</span>
-                </div>
-                <div class="form-item-input">
-                    <input type="text" name="wrkSts" value="">
-                </div>
-            </div>
-            <!-- 鑷姩 -->
-            <div class="form-item-checkbox">
-                <div class="form-item-label-checkbox">
-                    <span>鑷姩</span>
-                </div>
-                <div class="form-item-input-checkbox">
-                    <input type="checkbox" name="autoing">
-                </div>
-            </div>
-            <!-- 鏈夌墿 -->
-            <div class="form-item-checkbox">
-                <div class="form-item-label-checkbox">
-                    <span>鏈夌墿</span>
-                </div>
-                <div class="form-item-input-checkbox">
-                    <input type="checkbox" name="loading">
-                </div>
-            </div>
-            <!-- 鑳藉叆 -->
-            <div class="form-item-checkbox">
-                <div class="form-item-label-checkbox">
-                    <span>鑳藉叆</span>
-                </div>
-                <div class="form-item-input-checkbox">
-                    <input type="checkbox" name="canining">
-                </div>
-            </div>
-            <!-- 鑳藉嚭 -->
-            <div class="form-item-checkbox">
-                <div class="form-item-label-checkbox">
-                    <span>鑳藉嚭</span>
-                </div>
-                <div class="form-item-input-checkbox">
-                    <input type="checkbox" name="canouting">
-                </div>
-            </div>
-            <!-- 鍑哄叆绫诲瀷 -->
-            <div class="form-item">
-                <div class="form-item-label">
-                    <span>鍑哄叆绫诲瀷锛�</span>
-                </div>
-                <div class="form-item-input">
-                    <input type="text" name="ioType" value="">
-                </div>
-            </div>
-            <!-- 婧愮珯 -->
-            <div class="form-item">
-                <div class="form-item-label">
-                    <span>婧愮珯锛�</span>
-                </div>
-                <div class="form-item-input">
-                    <input type="text" name="sourceStaNo" value="">
-                </div>
-            </div>
-            <!-- 鐩爣绔� -->
-            <div class="form-item">
-                <div class="form-item-label">
-                    <span>鐩爣绔欙細</span>
-                </div>
-                <div class="form-item-input">
-                    <input type="text" name="staNo" value="">
-                </div>
-            </div>
-            <!-- 婧愬簱浣� -->
-            <div class="form-item">
-                <div class="form-item-label">
-                    <span>婧愬簱浣嶏細</span>
-                </div>
-                <div class="form-item-input">
-                    <input type="text" name="sourceLocNo" value="">
-                </div>
-            </div>
-            <!-- 鐩爣搴撲綅 -->
-            <div class="form-item">
-                <div class="form-item-label">
-                    <span>鐩爣搴撲綅锛�</span>
-                </div>
-                <div class="form-item-input">
-                    <input type="text" name="locNo" value="">
-                </div>
-            </div>
-
-        </form>
-    </div>
-</div>
-</body>
-</html>
-<script>
-    var tData = []
-    var tData1 = []
-    var tData2 = []
-    var tData3 = []
-    var mapData = [] //鍦板浘鏁版嵁
-    var currentLev = 1;//褰撳墠鍦板浘妤煎眰
-    function getCodeData(){
-        $.ajax({
-            url:baseUrl +'/console/barcode/output/site',
-            method:'GET',
-            success:function (res) {
-                if(res.code === 200){
-                    tData = eval(res.data);
-                    if(tData.length<=5){
-                        tData1 = tData
-                    } else if (tData.length<=10){
-                        tData1 = tData.slice(0,5)
-                        // tData.splice(0,4)
-                        tData2 = tData.splice(5,10)
-                    } else if(tData.length<=15){
-                        tData1 = tData.slice(0,5)
-                        tData2 = tData.slice(5,10)
-                        // tData.splice(0,10)
-                        tData3 = tData.slice(10,15)
-                    } else {
-                        tData1 = tData.slice(0,5)
-                        tData2 = tData.slice(5,10)
-                        tData3 = tData.slice(10,15)
-                        // tData = tData.slice(-15)
-                        // tData1 = tData.slice(-15)
-                        // tData2 = tData.slice(-10)
-                        // tData3 = tData.slice(-5)
-
-                    }
-                }
-            }
-        })
-    }
-    setInterval(function () {
-        getCodeData();
-        renderBarCode();
-    }, 1000)
-
-
-    function renderBarCode() {
-        for (var i = 0;i<tData1.length;i++){
-            var str1 = '<li><span>' + tData1[i].barcode + '</span><span class="right">' + tData1[i].time + '</span></li>'
-            $('#barcode1').append(str1)
-        }
-        for(var j = 0;j<tData2.length;j++){
-            var str2 = '<li><span>' + tData2[j].barcode + '</span><span class="right">' + tData2[j].time + '</span></li>'
-            $('#barcode2').append(str2)
-        }
-        for(var k = 0;k<tData3.length;k++){
-            var str3 = '<li><span>' + tData3[k].barcode + '</span><span class="right">' + tData3[k].time + '</span></li>'
-            $('#barcode3').append(str3)
-        }
-    }
-
-
-    $(function (){
-        initMap(1)
-    })
-
-    setInterval(() => {
-        getShuttleStateInfo()
-        getLiftStateInfo()
-    },1000)
-
-    // 鎻愬崌鏈轰俊鎭〃鑾峰彇
-    function getLiftStateInfo() {
-        $.ajax({
-            url: baseUrl+ "/lift/table/lift/state",
-            headers: {'token': localStorage.getItem('token')},
-            method: 'POST',
-            success: function (res) {
-                $("#lift-status-box").empty()
-                res.data.forEach((item,index) => {
-                    let liftStatusClass = "lift-idle"
-                    switch (item.protocolStatus) {
-                        case 1://绌洪棽
-                            liftStatusClass = "lift-idle";
-                            break
-                        case 2://浣滀笟涓�
-                            liftStatusClass = "lift-working";
-                            break
-                        case 3://绛夊緟纭
-                            liftStatusClass = "lift-waiting";
-                            break
-                        case 4://绂荤嚎
-                            liftStatusClass = "lift-offline";
-                            break
-                        default:
-                            liftStatusClass = "lift-idle"
-                    }
-                    let liftStatus = '<div class="state states">' +
-                        '<span>鎻愬崌鏈� ' + item.liftNo + '</span>' +
-                        '<span class="state-ss ' + liftStatusClass + '">' + item.protocolStatus$ + '</span></div>';
-                    $("#lift-status-box").append(liftStatus)
-
-                })
-            }
-        });
-    }
-
-    // 鍥涘悜绌挎杞︿俊鎭〃鑾峰彇
-    function getShuttleStateInfo() {
-        $.ajax({
-            url: baseUrl+ "/shuttle/table/shuttle/state",
-            headers: {'token': localStorage.getItem('token')},
-            method: 'POST',
-            success: function (res) {
-                $("#shuttle-status-box").empty()
-                res.data.forEach((item,index) => {
-                    let shuttleStatusClass = "shuttle-idle"
-                    switch (item.protocolStatus) {
-                        case 1://绌洪棽
-                            shuttleStatusClass = "shuttle-idle";
-                            break
-                        case 2://浣滀笟涓�
-                            shuttleStatusClass = "shuttle-working";
-                            break
-                        case 3://绛夊緟纭
-                            shuttleStatusClass = "shuttle-waiting";
-                            break
-                        case 4://鍏呯數涓�
-                            shuttleStatusClass = "shuttle-charging";
-                            break
-                        case 5://鍏呯數浠诲姟绛夊緟纭
-                            shuttleStatusClass = "shuttle-charging-waiting";
-                            break
-                        case 6://鏁呴殰淇涓�
-                            shuttleStatusClass = "shuttle-fixing";
-                            break
-                        case 7://绂荤嚎
-                            shuttleStatusClass = "shuttle-offline";
-                            break
-                        default:
-                            shuttleStatusClass = "shuttle-offline"
-                    }
-                    let shuttleStatus = '<div class="state">' +
-                        '<span>鍥涘悜绌挎杞� ' + item.shuttleNo + '</span>' +
-                        '<span class="state-ss ' + shuttleStatusClass + '">' + item.protocolStatus$ + '</span></div>';
-                    $("#shuttle-status-box").append(shuttleStatus)
-
-                    if(item.wcsPoint.z != currentLev){
-                        //鍥涘悜绌挎杞︽ゼ灞傚拰褰撳墠鍦板浘妤煎眰涓嶄竴鑷达紝鍒犻櫎璇ヨ溅杈�
-                        $("#sxcar-" + item.shuttleNo).remove()
-                    }else {
-                        //绉诲姩鍥涘悜绌挎杞�
-                        moveCar(item.shuttleNo,item.wcsPoint.x,item.wcsPoint.y)
-                    }
-                })
-            }
-        });
-    }
-
-    //璁$畻鍥涘悜绌挎杞﹀浘鏍囦綅缃�
-    function getCarPosition(x,y) {
-        let top = (x * 35 - 35) + "px" //闇�瑕佸噺鍘诲皬杞﹁嚜宸辨墍鍗犻珮搴�
-        let left = (y * 35 - 35) + "px" //闇�瑕佸噺鍘诲皬杞﹁嚜宸辨墍鍗犲搴�
-        return [top,left];
-    }
-
-    //绉诲姩鍥涘悜绌挎杞﹀浘鏍�
-    function moveCar(id,x,y) {
-        //鑾峰彇鍏蜂綋浣嶇疆top鍜宭eft鍊�
-        let position = getCarPosition(x,y)
-        let top = position[0]
-        let left = position[1]
-        $("#sxcar-" + id).animate({top: top,left: left}, 1000);
-    }
-
-    //鍒濆鍖栧湴鍥�
-    function initMap(lev) {
-        getMap(lev)
-
-        $.ajax({
-            url: baseUrl+ "/shuttle/table/shuttle/state",
-            headers: {'token': localStorage.getItem('token')},
-            method: 'POST',
-            success: function (res) {
-                res.data.forEach((item,index) => {
-                    if(lev == item.wcsPoint.z){
-                        let carBox = '<div class="sxcar" id="sxcar-' + item.shuttleNo + '">' + item.shuttleNo + '</div>'
-                        $("#mapDataId").append(carBox)
-                    }
-                })
-            }
-        });
-    }
-
-    //鑾峰彇鍦板浘鏁版嵁
-    function getMap(lev) {
-        //姣嶈建閬撶涓�娆$储寮曪紝鐢ㄤ簬瀹氫綅灏忚溅
-        let firstMotherIndex = [0,0];
-        $("#mapDataId").empty()
-        $.ajax({
-            type:"get",
-            // url: baseUrl + "/static/js/map_" + lev + ".json",
-            url: baseUrl + "/console/map/" + lev + "/auth",
-            headers: {'token': localStorage.getItem('token')},
-            success: (res) => {
-                let data = res.data
-                mapData = data
-                let content = ""
-                data.forEach((rowData,index) => {
-                    //鍘绘帀涓婁笅杈圭紭绂佸尯
-                    if(!(index == 0 || data.length - 1 == index)){
-                        let row = '<div class="stock-group">';
-                        rowData.forEach((colData,idx) => {
-                            //鍘绘帀宸﹀彸杈圭紭绂佸尯
-                            if(!(idx == 0 || rowData.length - 1 == idx)){
-                                let col;
-                                switch (colData.value){
-                                    case -999:
-                                        col = '<button class="item" style="background:#f83333;color: #fff;">' + idx + '</button>';
-                                        break;
-                                    case -1:
-                                        col = '<button class="item" style="visibility: hidden">' + idx + '</button>';
-                                        break;
-                                    case 3:
-                                        //姣嶈建閬�
-                                        col = '<button class="item" style="background: #5af;">&#x21c5;&#x21c4;</button>';
-                                        if (firstMotherIndex[0] === 0 && firstMotherIndex[1] === 0) {
-                                            //绗竴娆¢亣鍒版瘝杞ㄩ亾锛屽垯淇濆瓨璇ヨ建閬撳湴鍧�(鐢ㄤ簬灏忚溅鍒濆鍖栧畾浣�)
-                                            firstMotherIndex = [index,idx]
-                                        }
-                                        break;
-                                    case 4:
-                                        //绔欑偣
-                                        var data = colData.data;
-                                        col = '<div id="site-' + data + '" class="site">' + data + '</div>';
-                                        break;
-                                    case 5:
-                                        //鍏呯數妗�
-                                        col = '<button class="item" style="font-size: 24px">&#9889;</button>';
-                                        break;
-                                    default:
-                                        let val = idx;
-                                        if (colData.data.length > 0) {
-                                            val = colData.data
-                                        }
-                                        col = '<button class="item">' + val + '</button>';
-                                }
-
-                                if(rowData.length - 2 == idx){
-                                    //鎵撲笂琛屾暟鏍囪
-                                    col += '<span class="row-no">' + index + '#</span>';
-                                }
-                                row += col
-                            }
-                        })
-                        row += '</div>';
-                        content += row
-                    }
-                })
-
-                $("#mapDataId").append(content)
-            }
-        })
-    }
-
-    //灏嗗湴鍥炬暟鎹浆鎹㈡垚int浜岀淮鏁扮粍(鍚庣画鐢ㄤ簬璇锋眰璁$畻璺緞鏃舵惡甯﹀湴鍥炬暟鎹弬鏁颁娇鐢�)
-    function getMap2TwoArr() {
-        let data = []
-        mapData.forEach((item,index) => {
-            let data2 = []
-            item.forEach((val,idx) => {
-                data2.push(val.value)
-            })
-            data.push(data2)
-        })
-
-        return data;
-    }
-
-    function testMove() {
-        getMap2TwoArr()//娴嬭瘯鍦板浘鏁版嵁杞崲鏄惁姝e父
-        let json = "[{\"x\":5,\"y\":5},{\"x\":6,\"y\":5},{\"x\":7,\"y\":5},{\"x\":8,\"y\":5},{\"x\":9,\"y\":5},{\"x\":10,\"y\":5},{\"x\":11,\"y\":5},{\"x\":11,\"y\":6},{\"x\":12,\"y\":6},{\"x\":13,\"y\":6},{\"x\":14,\"y\":6},{\"x\":15,\"y\":6},{\"x\":16,\"y\":6}]";
-        json = JSON.parse(json)
-        json.forEach((item,index) => {
-            moveCar(1, item.x, item.y);
-        })
-    }
-
-    /**
-     * 閲嶇疆鍦板浘
-     */
-    function resetMap() {
-        $.ajax({
-            url:baseUrl+"/console/map/resetMap/auth",
-            headers:{
-                'token': localStorage.getItem('token')
-            },
-            data:{},
-            method:'get',
-            success:function (res) {
-                layer.msg('閲嶇疆瀹屾垚');
-            }
-        })
-    }
-
-    // 灏忚溅鍋忕Щ鍔ㄧ敾
-    function carAnimate(id, target) {
-        if (id === 1000) {
-            let targetTop = 130;
-            switch (target) {
-                case 110:
-                    targetTop += 0;
-                    break;
-                case 109:
-                    targetTop += 60;
-                    break;
-                case 108:
-                    targetTop += 100;
-                    break;
-                case 107:
-                    targetTop += 180;
-                    break;
-                case 106:
-                    targetTop += 220;
-                    break;
-                default:
-                    return;
-            }
-            $("#site-" + id).animate({top: targetTop+'px'}, 1000);
-        } else if (id === 2000) {
-            let targetTop = 130;
-            switch (target) {
-                case 226:
-                    targetTop += 0;
-                    break;
-                case 225:
-                    targetTop += 60;
-                    break;
-                case 224:
-                    targetTop += 100;
-                    break;
-                case 223:
-                    targetTop += 180;
-                    break;
-                case 222:
-                    targetTop += 220;
-                    break;
-                case 214:
-                    targetTop += 280;
-                    break;
-                case 220:
-                    targetTop += 320;
-                    break;
-                default:
-                    return;
-            }
-            $("#site-" + id).animate({top: targetTop+'px'}, 1000);
-        }
-    }
-</script>
-<script type="text/javascript">
-    // 寮圭獥绔欑偣淇℃伅
-    $('#mapDataId').on('click','.site',function(){
-        var id = this.id.split("-")[1];
-        $("#siteWindow").attr("style","display:block;");//鏄剧ずdiv
-        $("#crnWindow").attr("style","display:none;");
-        $(".detailed").empty();
-        $('.detailed').append(id+'绔欑偣璇︾粏淇℃伅');
-        $.ajax({
-            url:baseUrl+"/console/site/detail",
-            headers:{
-                'token': localStorage.getItem('token')
-            },
-            data:{
-                siteId: id
-            },
-            method:'post',
-            success:function (res) {
-                for (var val in res.data) {
-                    var find = $("#siteWindow").find(":input[name='" + val + "']");
-                    if (find[0].type==='text') {
-                        find.val(res.data[val]);
-                    } else if (find[0].type === 'checkbox') {
-                        find.attr("checked", res.data[val] === 'Y');
-                    }
-                }
-            }
-
-        })
-
-    });
-    // 鍫嗗灈鏈轰俊鎭�
-    $('.machine').on('click',function(){
-        var id = this.id.split("-")[1];
-        $("#crnWindow").attr('style','display:block;');
-        $("#siteWindow").attr("style","display:none;");
-        $('.detailed').empty();
-        $('.detailed').append(id+'鍙峰爢鍨涙満');
-        $.ajax({
-            url:baseUrl+"/console/crn/detail",
-            headers:{
-                'token': localStorage.getItem('token')
-            },
-            data:{
-                crnNo: id
-            },
-            method:'post',
-            success:function (res) {
-                for (var val in res.data) {
-                    var find = $("#crnWindow").find(":input[name='" + val + "']");
-                    if (find[0].type==='text') {
-                        find.val(res.data[val]);
-                    } else if (find[0].type === 'checkbox') {
-                        find.attr("checked", res.data[val] === 'Y');
-                    }
-                }
-            }
-
-        })
-
-    })
-    // 寮圭獥鍏抽棴
-    $('button').on('click',function(){
-        $('#siteWindow').attr('style','display:none')
-        $('#crnWindow').attr('style','display:none')
-    })
-
-
-    var crn1Position = 0;
-    var crn2Position = 0;
-    var crn3Position = 0;
-    var crn4Position = 0;
-    var crn5Position = 0;
-
-    // 鍒濆鍖�
-    getSitesInfo();
-    getCrnInfo();
-    getSystemRunningStatus();
-    getBarcodeInfo();
-    getScaleInfo();
-    // 瀹炴椂璁块棶
-    setInterval(function () {
-        getCrnInfo();
-        getSystemRunningStatus();
-        getBarcodeInfo();
-        getScaleInfo();
-    }, 1000);
-    setInterval(function () {
-        getSitesInfo();
-    }, 3000);
-
-    $("#system-toggle").on("click",(e) => {
-        systemSwitch()
-        e.stopPropagation();//琛ㄧず闃绘鍚戠埗鍏冪礌鍐掓场
-        e.preventDefault();//闃绘 鏂规硶闃绘鍏冪礌鍙戠敓榛樿鐨勮涓猴紙渚嬪锛屽綋鐐瑰嚮鎻愪氦鎸夐挳鏃堕樆姝㈠琛ㄥ崟鐨勬彁浜ゆ垨鑰卆鏍囩锛夈��
-    })
-
-    // 绯荤粺杩愯寮�鍏�
-    function systemSwitch() {
-        if (parent.systemRunning){
-            layer.prompt({title: '璇疯緭鍏ュ彛浠わ紝骞跺仠姝� WCS 绯荤粺', formType: 1,   shadeClose: true}, function(pass, idx){
-                layer.close(idx);
-                doSwitch(0, pass); // 鍋滄wcs绯荤粺
-            });
-        } else {
-            doSwitch(1); // 鍚姩wcs绯荤粺
-        }
-    }
-
-    // 璇锋眰鏈嶅姟鍣ㄦ帶鍒秝cs绯荤粺杩愯鐘舵��
-    function doSwitch(operatorType, password) {
-        // 鍔犺浇tips
-        var index = layer.load(1, {
-            shade: [0.1,'#fff']
-        });
-        $.ajax({
-            url: baseUrl+ "/console/system/switch",
-            headers: {'token': localStorage.getItem('token')},
-            // async: false,
-            data: {
-                operatorType: operatorType,
-                password: password
-            },
-            method: 'POST',
-            success: function (res) {
-                layer.close(index);
-                if (res.code === 200){
-                    if (res.data.status) {
-                        $('#system-toggle-checked').attr("checked", true);
-                        $('#system-run-desc').html("绯荤粺杩愯涓�...");
-                        parent.systemRunning = true;
-                    } else {
-                        $('#system-toggle-checked').attr("checked", false);
-                        $('#system-run-desc').html("绯荤粺宸插仠姝�!");
-                        parent.systemRunning = false;
-                    }
-                } else if (res.code === 403){
-                    parent.location.href = baseUrl+"/login";
-                }  else {
-                    console.log(res.msg);
-
-                }
-            }
-        });
-
-    }
-
-    // 鑾峰彇wcs绯荤粺杩愯鐘舵��
-    function getSystemRunningStatus() {
-        $.ajax({
-            url: baseUrl+ "/console/system/running/status",
-            headers: {'token': localStorage.getItem('token')},
-            method: 'POST',
-            success: function (res) {
-                if (res.code === 200){
-                    if (res.data.status) {
-                        $('#system-toggle-checked').attr("checked", true);
-                        $('#system-run-desc').html("绯荤粺杩愯涓�...");
-                        parent.systemRunning = true;
-                    } else {
-                        $('#system-toggle-checked').attr("checked", false);
-                        $('#system-run-desc').html("绯荤粺宸插仠姝�!");
-                        parent.systemRunning = false;
-                    }
-                } else if (res.code === 403){
-                    parent.location.href = baseUrl+"/login";
-                }  else {
-                    console.log(res.msg);
-                }
-            }
-        });
-    }
-
-    // 杈撻�佽澶囧疄鏃舵暟鎹幏鍙�
-    function getSitesInfo(){
-        $.ajax({
-            url: baseUrl+ "/console/latest/data/site",
-            headers: {'token': localStorage.getItem('token')},
-            method: 'POST',
-            success: function (res) {
-                if (res.code === 200){
-                    var sites = res.data;
-                    for (var i = 0; i < sites.length; i++){
-                        var siteEl = $("#site-"+sites[i].siteId);
-                        siteEl.attr("class", "site " + sites[i].siteStatus);
-                        if (sites[i].workNo != null && sites[i].workNo>0) {
-                            siteEl.html(sites[i].siteId + "[" + sites[i].workNo + "]");
-                        } else {
-                            siteEl.html(sites[i].siteId);
-                        }
-                        if (i+1===8) {
-                            carAnimate(i+1, Number(sites[i].nearbySta));
-                        }
-                    }
-                } else if (res.code === 403){
-                    parent.location.href = baseUrl+"/login";
-                }  else {
-                    console.log(res.msg);
-                }
-            }
-        });
-    }
-
-    // 鍫嗗灈鏈哄疄鏃舵暟鎹幏鍙�
-    function getCrnInfo(){
-        $.ajax({
-            url: baseUrl+ "/console/latest/data/crn",
-            headers: {'token': localStorage.getItem('token')},
-            method: 'POST',
-            success: function (res) {
-                if (res.code === 200){
-                    var crns = res.data;
-                    for (var i = 0; i < crns.length; i++){
-                        var crnEl = $("#crn-"+crns[i].crnId);
-                        crnEl.attr("class", "machine " + crns[i].crnStatus);
-                        var unit = ($('.item').eq(0).width()+4)/2;
-                        crnEl.animate({left: (crns[i].bay * unit + 25) +'px'}, 1000);
-                    }
-                } else if (res.code === 403){
-                    parent.location.href = baseUrl+"/login";
-                }  else {
-                    console.log(res.msg);
-                }
-            }
-        });
-    }
-
-    // 鎵爜鍣ㄥ疄鏃舵暟鎹幏鍙�
-    function getBarcodeInfo(){
-        $.ajax({
-            url: baseUrl+ "/console/latest/data/barcode",
-            headers: {'token': localStorage.getItem('token')},
-            method: 'POST',
-            success: function (res) {
-                if (res.code === 200){
-                    var barcodes = res.data;
-                    for (var i = 0; i < barcodes.length; i++){
-                        $("#code-decoder-data-"+barcodes[i].barcodeId).html(barcodes[i].codeValue);
-                    }
-                } else if (res.code === 403){
-                    parent.location.href = baseUrl+"/login";
-                }  else {
-                    console.log(res.msg);
-                }
-            }
-        });
-    }
-
-    // 纾呯Г瀹炴椂鏁版嵁鑾峰彇
-    function getScaleInfo(){
-        $.ajax({
-            url: baseUrl+ "/console/latest/data/scale",
-            headers: {'token': localStorage.getItem('token')},
-            method: 'POST',
-            success: function (res) {
-
-                if (res.code === 200){
-                    var sclaes = res.data;
-                    for (var i = 0; i < sclaes.length; i++){
-                        console.log(sclaes[i].scaleId + ":" + sclaes[i].value)
-                        $("#scale-data-"+sclaes[i].scaleId).text(sclaes[i].value);
-                    }
-                } else if (res.code === 403){
-                    parent.location.href = baseUrl+"/login";
-                }  else {
-                    console.log(res.msg);
-                }
-            }
-        });
-    }
-
-    // 灏忚溅鍋忕Щ鍔ㄧ敾
-    function carAnimate(id, target) {
-        var targetTop = 122;
-        if (id === 8) {
-            switch (target) {
-                case 1:
-                    targetTop += 160;
-                    break;
-                case 2:
-                    targetTop += 140;
-                    break;
-                case 3:
-                    targetTop += 80;
-                    break;
-                case 4:
-                    targetTop += 40;
-                    break;
-                case 7:
-                    targetTop += 0;
-                    break;
-                default:
-                    return;
-            }
-        } else {
-            return;
-        }
-        $("#site-" + id).animate({top: targetTop+'px'}, 1000);
-    }
-
-     //妤煎眰鍒囨崲鎸夐挳
-    function changFloor(e,x) {
-        $("#floorBtnBox button").each((index,item) => {
-            $(item).removeClass("btn-16-active")
-        })
-        $(e).addClass("btn-16-active")
-        currentLev = x
-        initMap(currentLev)
-    }
-
-</script>
diff --git a/src/main/webapp/views/console3.html b/src/main/webapp/views/console3.html
deleted file mode 100644
index a77e633..0000000
--- a/src/main/webapp/views/console3.html
+++ /dev/null
@@ -1,688 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-	<head>
-		<meta charset="UTF-8">
-		<title>WCS鎺у埗涓績</title>
-		<link rel="stylesheet" href="../static/css/animate.min.css">
-		<link rel="stylesheet" href="../static/vue/element/element.css">
-		<link rel="stylesheet" href="../static/css/console_vue.css">
-		<link rel="stylesheet" href="../static/css/toggle-switch.css">
-		<script type="text/javascript" src="../static/js/jquery/jquery-3.3.1.min.js"></script>
-		<script type="text/javascript" src="../static/layui/layui.js"></script>
-		<script type="text/javascript" src="../static/js/handlebars/handlebars-v4.5.3.js"></script>
-		<script type="text/javascript" src="../static/js/common.js"></script>
-		<script type="text/javascript" src="../static/vue/js/vue.min.js"></script>
-		<script type="text/javascript" src="../static/vue/element/element.js"></script>
-	</head>
-	<body>
-		<div id="app">
-			<div style="display: flex;justify-content: center;align-items: center;width: 100%;margin-top: 150px;">
-				<div id="mapDataId" style="zoom: 0.7;position: relative;">
-					<div class="pointContainer" v-for="(row,index) in map" :key="index">
-						<div v-for="(col,idx) in row" :key="idx">
-							<div v-if="col.value == 0">
-								<!-- 瀛愯建閬� 璺緞涓虹┛姊溅棰勮璺緞鍒欐樉绀虹┛姊溅棰滆壊鍜岀┛姊溅鍙� -->
-								<div :style="{background: checkAdvancePath(index,idx).length == 0 ? '':shuttleColorList[checkAdvancePath(index,idx)[0]]}" class="item" v-if="col.data.length > 0">{{col.data}}</div>
-								<div :style="{background: checkAdvancePath(index,idx).length == 0 ? '':shuttleColorList[checkAdvancePath(index,idx)[0]]}" class="item" v-else>{{checkAdvancePath(index,idx).length == 0 ? idx:checkAdvancePath(index,idx)}}</div>
-							</div>
-							<div v-else-if="col.value == 3">
-								<!-- 姣嶈建閬� 璺緞涓虹┛姊溅棰勮璺緞鍒欐樉绀虹┛姊溅棰滆壊鍜岀┛姊溅鍙� -->
-								<div :style="{background: checkAdvancePath(index,idx).length == 0 ? '#5af':shuttleColorList[checkAdvancePath(index,idx)[0]]}" class="item">{{checkAdvancePath(index,idx).length == 0 ? '&#x21c5;&#x21c4;':checkAdvancePath(index,idx)}}</div>
-							</div>
-							<div v-else-if="col.value == 4">
-								<!-- 绔欑偣 -->
-								<div class="site" :id="'site-' + col.data" @click="openSite(col.data)">{{col.data}}</div>
-							</div>
-							<div v-else-if="col.value == 5">
-								<!-- 鍏呯數妗� -->
-								<div class="item" style="font-size: 24px">&#9889;</div>
-							</div>
-							<div v-else-if="col.value == -999">
-								<!-- 璺緞鍗犵敤鍖哄煙 -->
-								<div class="item" style="background:#f83333;color: #fff;">{{idx}}</div>
-							</div>
-							<div v-else-if="col.value < 0">
-								<!-- 绂佹鏄剧ず鍖哄煙 -->
-								<div class="item" style="visibility: hidden">{{idx}}</div>
-							</div>
-							<div v-else>
-								<div class="item" v-if="col.data.length > 0">{{col.data}}</div>
-								<div class="item" v-else>{{idx}}-{{col.value}}</div>
-							</div>
-						</div>
-
-						<div>
-							<!-- 鏄剧ず琛屽彿 -->
-							<div class="item" style="background: none;color: #000;">#{{index+1}}</div>
-						</div>
-					</div>
-
-					<!--杈撳嚭灏忚溅-->
-					<div v-for="(car,idx) in currentLevShuttleList"
-						 :style="{
-						 left: getCarPosition(car.wcsPoint.x,car.wcsPoint.y)[1]
-						 ,top: getCarPosition(car.wcsPoint.x,car.wcsPoint.y)[0]
-						 ,color: shuttleColorList[car.shuttleNo]
-						 }"
-						 class="sxcar" :id="'sxcar-' + car.shuttleNo">
-						{{car.shuttleNo}}
-					</div>
-
-				</div>
-
-				<!--杈撳嚭妤煎眰-->
-				<div style="height: 100%;">
-					<div class="floorBtnBox" v-for="(lev,idx) in floorList">
-						<el-button :style="{background:currentLev === lev ? '#7DCDFF':''}" @click="changFloor(lev)">{{lev}}F</el-button>
-					</div>
-					<div>
-						<el-button @click="testMove()">娴嬭瘯绉诲姩杞�</el-button>
-						<el-button @click="resetMap()">閲嶇疆鍦板浘</el-button>
-					</div>
-				</div>
-			</div>
-
-			<div class="footer">
-				<!-- 鎬诲紑鍏� -->
-				<div class="line-status">
-					<div class="body-head">鎬诲紑鍏�</div>
-					<div class="switch" @click="systemSwitch">
-						<label id="system-toggle" class="toggle-switch" style="margin-left: 20px;">
-							<input id="system-toggle-checked" disabled type="checkbox">
-							<div class="button">
-								<div class="light"></div>
-								<div class="dots"></div>
-								<div class="characters"></div>
-								<div class="shine"></div>
-								<div class="shadow"></div>
-							</div>
-						</label>
-
-						<div class="switch_r">
-							<p>绯荤粺鐘舵��</p>
-							<p id="system-run-desc">绯荤粺杩愯涓�</p>
-						</div>
-					</div>
-				</div>
-				<!-- 鍥涘悜绌挎杞︾姸鎬� -->
-				<div class="line-status">
-					<div class="body-head">绌挎杞︾姸鎬�</div>
-					<div class="shuttle-status-box">
-						<div v-for="(item,idx) in shuttleList" class="state">
-							<span :style="{color: shuttleColorList[item.shuttleNo]}">鍥涘悜绌挎杞� {{item.shuttleNo}}</span>
-							<span v-if="item.protocolStatus == 1"
-								class="state-ss shuttle-idle">{{item.protocolStatus$}}</span>
-							<span v-else-if="item.protocolStatus == 2"
-								class="state-ss shuttle-working">{{item.protocolStatus$}}</span>
-							<span v-else-if="item.protocolStatus == 3"
-								class="state-ss shuttle-waiting">{{item.protocolStatus$}}</span>
-							<span v-else-if="item.protocolStatus == 4"
-								class="state-ss shuttle-charging">{{item.protocolStatus$}}</span>
-							<span v-else-if="item.protocolStatus == 5"
-								class="state-ss shuttle-charging-waiting">{{item.protocolStatus$}}</span>
-							<span v-else-if="item.protocolStatus == 6"
-								class="state-ss shuttle-fixing">{{item.protocolStatus$}}</span>
-							<span v-else-if="item.protocolStatus == 7"
-								class="state-ss shuttle-offline">{{item.protocolStatus$}}</span>
-							<span v-else class="state-ss shuttle-offline">{{item.protocolStatus$}}</span>
-						</div>
-					</div>
-					<div class="allStatus"><span>鎵�鏈夌姸鎬�</span></div>
-					<div class="allStatus item-group">
-						<span class="shuttle-idle">绌洪棽</span>
-						<span class="shuttle-working">浣滀笟涓�</span>
-						<span class="shuttle-waiting">绛夊緟纭</span>
-						<span class="shuttle-charging">鍏呯數涓�</span>
-						<span class="shuttle-charging-waiting">鍏呯數浠诲姟绛夊緟纭</span>
-						<span class="shuttle-fixing">鏁呴殰淇涓�</span>
-						<span class="shuttle-offline">绂荤嚎</span>
-					</div>
-				</div>
-				<!-- 鎻愬崌鏈虹姸鎬� -->
-				<div class="line-status">
-					<div class="body-head">鎻愬崌鏈虹姸鎬�</div>
-					<div class="lift-status-box">
-						<div v-for="(item,idx) in liftList" class="state states">
-							<span>鎻愬崌鏈� {{item.liftNo}}</span>
-							<span v-if="item.protocolStatus == 1"
-								class="state-ss lift-idle">{{item.protocolStatus$}}</span>
-							<span v-else-if="item.protocolStatus == 2"
-								class="state-ss lift-working">{{item.protocolStatus$}}</span>
-							<span v-else-if="item.protocolStatus == 3"
-								class="state-ss lift-waiting">{{item.protocolStatus$}}</span>
-							<span v-else-if="item.protocolStatus == 4"
-								class="state-ss lift-offline">{{item.protocolStatus$}}</span>
-							<span v-else class="state-ss lift-offline">{{item.protocolStatus$}}</span>
-						</div>
-					</div>
-					<div class="allStatus"><span>鎵�鏈夌姸鎬�</span></div>
-					<div class="allStatus item-group">
-						<span class="lift-idle">绌洪棽</span>
-						<span class="lift-working">浣滀笟涓�</span>
-						<span class="lift-waiting">绛夊緟纭</span>
-						<span class="lift-offline">绂荤嚎</span>
-					</div>
-				</div>
-				<!-- 杈撻�佺嚎鐘舵�� -->
-				<div class="line-status">
-					<div class="body-head">杈撻�佺嚎鐘舵��</div>
-					<div class="state states">
-						<span>杩愯緭绾挎�绘暟</span>
-						<span class="line-ss">9</span>
-					</div>
-					<div class="allStatus"><span>鎵�鏈夌姸鎬�</span></div>
-					<div class="allStatus item-group">
-						<span class="site-auto-run-id">鑷姩+鏈夌墿+ID</span>
-						<span class="site-auto-run">鑷姩+鏈夌墿</span>
-						<span class="site-auto-id">鑷姩+ID</span>
-						<span class="site-auto">鑷姩</span>
-						<span class="site-unauto">闈炶嚜鍔�/鎵嬪姩</span>
-					</div>
-				</div>
-				<!-- 鏉$爜琛ㄦ牸 -->
-				<div class="bar-code">
-					<div class="body-head" id="code">鏉$爜鎵弿鍣�</div>
-					<div class="tablebox">
-						<div class="table-head">
-							<li><span>鏉$爜鍚嶇О</span><span class="right">鎵爜鏃堕棿</span></li>
-						</div>
-						<div id="barcode1" class="table-body">
-							<li v-for="(item,index) in codeList1" :key="index"><span>{{item.barcode}}</span><span class="right">{{item.time}}</span></li>
-						</div>
-					</div>
-					<div class="tablebox">
-						<div class="table-head">
-							<li><span>鏉$爜鍚嶇О</span><span class="right">鎵爜鏃堕棿</span></li>
-						</div>
-						<div id="barcode2" class="table-body">
-							<li v-for="(item,index) in codeList2" :key="index"><span>{{item.barcode}}</span><span class="right">{{item.time}}</span></li>
-						</div>
-					</div>
-				</div>
-			</div>
-
-			<!-- 杈撻�佽澶囧脊绐� -->
-			<div id="siteWindow" :style="{display:siteWindow?'block':'none'}" class="animate__animated animate__fadeIn">
-				<!-- 琛ㄥご -->
-				<div id="siteWindow-head">
-					<div class="detailed"></div>
-					<button @click="siteWindow = false"></button>
-				</div>
-				<!-- 琛ㄥ唴瀹� -->
-				<div class="siteWindow-body">
-					<form>
-						<!-- 璁惧鍙� -->
-						<div class="form-item">
-							<div class="form-item-label">
-								<span>璁惧鍙凤細</span>
-							</div>
-							<div class="form-item-input">
-								<input type="text" name="siteId" value="">
-							</div>
-						</div>
-						<!-- 宸ヤ綔鍙� -->
-						<div class="form-item">
-							<div class="form-item-label">
-								<span>宸ヤ綔鍙凤細</span>
-							</div>
-							<div class="form-item-input">
-								<input type="text" name="workNo" value="">
-							</div>
-						</div>
-						<!-- 宸ヤ綔鐘舵�� -->
-						<div class="form-item">
-							<div class="form-item-label">
-								<span>宸ヤ綔鐘舵�侊細</span>
-							</div>
-							<div class="form-item-input">
-								<input type="text" name="wrkSts" value="">
-							</div>
-						</div>
-						<div class="form-item">
-							<!-- 鑷姩 -->
-							<div class="form-item-checkbox">
-								<div class="form-item-label-checkbox">
-									<span>鑷姩</span>
-								</div>
-								<div class="form-item-input-checkbox">
-									<input type="checkbox" name="autoing">
-								</div>
-							</div>
-							<!-- 鏈夌墿 -->
-							<div class="form-item-checkbox">
-								<div class="form-item-label-checkbox">
-									<span>鏈夌墿</span>
-								</div>
-								<div class="form-item-input-checkbox">
-									<input type="checkbox" name="loading">
-								</div>
-							</div>
-							<!-- 鑳藉叆 -->
-							<div class="form-item-checkbox">
-								<div class="form-item-label-checkbox">
-									<span>鑳藉叆</span>
-								</div>
-								<div class="form-item-input-checkbox">
-									<input type="checkbox" name="canining">
-								</div>
-							</div>
-							<!-- 鑳藉嚭 -->
-							<div class="form-item-checkbox">
-								<div class="form-item-label-checkbox">
-									<span>鑳藉嚭</span>
-								</div>
-								<div class="form-item-input-checkbox">
-									<input type="checkbox" name="canouting">
-								</div>
-							</div>
-						</div>
-						<!-- 鍑哄叆绫诲瀷 -->
-						<div class="form-item">
-							<div class="form-item-label">
-								<span>鍑哄叆绫诲瀷锛�</span>
-							</div>
-							<div class="form-item-input">
-								<input type="text" name="ioType" value="">
-							</div>
-						</div>
-						<!-- 婧愮珯 -->
-						<div class="form-item">
-							<div class="form-item-label">
-								<span>婧愮珯锛�</span>
-							</div>
-							<div class="form-item-input">
-								<input type="text" name="sourceStaNo" value="">
-							</div>
-						</div>
-						<!-- 鐩爣绔� -->
-						<div class="form-item">
-							<div class="form-item-label">
-								<span>鐩爣绔欙細</span>
-							</div>
-							<div class="form-item-input">
-								<input type="text" name="staNo" value="">
-							</div>
-						</div>
-						<!-- 婧愬簱浣� -->
-						<div class="form-item">
-							<div class="form-item-label">
-								<span>婧愬簱浣嶏細</span>
-							</div>
-							<div class="form-item-input">
-								<input type="text" name="sourceLocNo" value="">
-							</div>
-						</div>
-						<!-- 鐩爣搴撲綅 -->
-						<div class="form-item">
-							<div class="form-item-label">
-								<span>鐩爣搴撲綅锛�</span>
-							</div>
-							<div class="form-item-input">
-								<input type="text" name="locNo" value="">
-							</div>
-						</div>
-					</form>
-				</div>
-			</div>
-
-		</div>
-		<script>
-			var app = new Vue({
-				el: '#app',
-				data: {
-					map: [],//鍦板浘鏁版嵁
-					currentLev: 1,//鍦板浘褰撳墠妤煎眰
-					siteWindow: false, //绔欑偣寮圭獥鏄剧ず榛樿涓嶆樉绀�
-					floorList: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], //褰撳墠椤圭洰妤煎眰
-					shuttleList: [], //鍥涘悜绌挎杞﹂泦鍚�
-					currentLevShuttleList: [],//褰撳墠妤煎眰鍥涘悜绌挎杞﹂泦鍚�
-					shuttleColorList: [],//鍥涘悜绌挎杞﹂鑹查泦鍚�
-					liftList: [], //鎻愬崌鏈洪泦鍚�
-					systemStatus: true,//绯荤粺杩愯鐘舵��
-					consoleInterval: null,//瀹氭椂鍣ㄥ瓨鍌ㄥ彉閲�
-					codeList1: [],//鏉$爜List
-					codeList2: [],//鏉$爜List
-				},
-				created() {
-					this.init()
-				},
-				watch: {
-
-				},
-				methods: {
-					init() {
-						this.getMap(this.currentLev)
-						this.getSystemRunningStatus() //鑾峰彇绯荤粺杩愯鐘舵��
-
-						this.consoleInterval = setInterval(() => {
-							this.getShuttleStateInfo() //鑾峰彇鍥涘悜绌挎杞︿俊鎭�
-							this.getLiftStateInfo() //鑾峰彇鎻愬崌鏈轰俊鎭�
-							this.getSiteInfo() //鑾峰彇杈撻�佺珯鐐规暟鎹�
-							this.getMap(this.currentLev) //鑾峰彇瀹炴椂鍦板浘鏁版嵁
-							this.getCodeData()//鑾峰彇鏉$爜
-						}, 1000)
-					},
-					//鑾峰彇鍦板浘鏁版嵁
-					getMap(lev) {
-						$.ajax({
-							type: "get",
-							url: baseUrl + "/console/map/" + lev + "/auth",
-							headers: {
-								'token': localStorage.getItem('token')
-							},
-							success: (res) => {
-								let data = res.data
-								let tmp = []
-								for (let i = 1; i < data.length - 1; i++) {
-									tmp.push(data[i])
-								}
-								// console.log(tmp)
-								this.map = tmp
-							}
-						})
-					},
-					openSite(id) {
-						this.siteWindow = true; //鎵撳紑绔欑偣淇℃伅寮圭獥
-						$(".detailed").empty();
-						$('.detailed').append(id + '绔欑偣璇︾粏淇℃伅');
-						$.ajax({
-							url: baseUrl + "/console/site/detail",
-							headers: {
-								'token': localStorage.getItem('token')
-							},
-							data: {
-								siteId: id
-							},
-							method: 'post',
-							success: function(res) {
-								for (var val in res.data) {
-									var find = $("#siteWindow").find(":input[name='" + val + "']");
-									if (find[0].type === 'text') {
-										find.val(res.data[val]);
-									} else if (find[0].type === 'checkbox') {
-										find.attr("checked", res.data[val] === 'Y');
-									}
-								}
-							}
-
-						})
-					},
-					getSiteInfo() {
-						//鑾峰彇杈撻�佺珯鐐规暟鎹�
-						$.ajax({
-							url: baseUrl+ "/console/latest/data/site",
-							headers: {'token': localStorage.getItem('token')},
-							method: 'POST',
-							success: function (res) {
-								if (res.code === 200){
-									var sites = res.data;
-									for (var i = 0; i < sites.length; i++){
-										var siteEl = $("#site-"+sites[i].siteId);
-										siteEl.attr("class", "site " + sites[i].siteStatus);
-										if (sites[i].workNo != null && sites[i].workNo>0) {
-											siteEl.html(sites[i].siteId + "[" + sites[i].workNo + "]");
-										} else {
-											siteEl.html(sites[i].siteId);
-										}
-									}
-								} else if (res.code === 403){
-									parent.location.href = baseUrl+"/login";
-								}  else {
-									console.log(res.msg);
-								}
-							}
-						});
-					},
-					changFloor(lev) {
-						this.currentLev = lev
-						this.currentLevShuttleList = []
-						this.getMap(lev)
-					},
-					getShuttleStateInfo() {
-						// 鍥涘悜绌挎杞︿俊鎭〃鑾峰彇
-						let that = this
-						$.ajax({
-							url: baseUrl + "/shuttle/table/shuttle/state",
-							headers: {
-								'token': localStorage.getItem('token')
-							},
-							method: 'POST',
-							success: function(res) {
-								if (res.code == 200) {
-									let currentLevShuttle = []//褰撳墠妤煎眰灏忚溅闆嗗悎
-									res.data.forEach((item,idx) => {
-										if (item != null && item.point != undefined && item.point != null) {
-											if (item.point.z == that.currentLev) {
-												currentLevShuttle.push(item);
-											}
-										}
-									})
-									that.currentLevShuttleList = currentLevShuttle
-									that.shuttleList = res.data
-
-									if (that.shuttleColorList.length == 0) {
-										let colorList = []//闅忔満灏忚溅棰滆壊
-										res.data.forEach((item,idx) => {
-											colorList[item.shuttleNo] = that.colorRGB()
-										})
-										that.shuttleColorList = colorList
-									}
-								}
-							}
-						});
-					},
-					getLiftStateInfo() {
-						// 鎻愬崌鏈轰俊鎭〃鑾峰彇
-						let that = this
-						$.ajax({
-							url: baseUrl + "/lift/table/lift/state",
-							headers: {
-								'token': localStorage.getItem('token')
-							},
-							method: 'POST',
-							success: function(res) {
-								if (res.code == 200) {
-									that.liftList = res.data
-								}
-							}
-						});
-					},
-					systemSwitch() {
-						// 绯荤粺寮�鍏�
-						let that = this
-						if (this.systemStatus) {
-							this.$prompt('璇疯緭鍏ュ彛浠わ紝骞跺仠姝CS绯荤粺', '鎻愮ず', {
-								confirmButtonText: '纭畾',
-								cancelButtonText: '鍙栨秷',
-							}).then(({
-								value
-							}) => {
-								that.doSwitch(0, value)
-							}).catch(() => {
-
-							});
-						} else {
-							this.doSwitch(1)
-						}
-					},
-					doSwitch(operatorType, password) {
-						let that = this
-						$.ajax({
-							url: baseUrl + "/console/system/switch",
-							headers: {
-								'token': localStorage.getItem('token')
-							},
-							data: {
-								operatorType: operatorType,
-								password: password
-							},
-							method: 'POST',
-							success: function(res) {
-								if (res.code === 200) {
-									if (res.data.status) {
-										$('#system-toggle-checked').attr("checked", true);
-										$('#system-run-desc').html("绯荤粺杩愯涓�...");
-										that.systemStatus = true;
-										parent.systemRunning = true;
-									} else {
-										$('#system-toggle-checked').attr("checked", false);
-										$('#system-run-desc').html("绯荤粺宸插仠姝�!");
-										that.systemStatus = false;
-										parent.systemRunning = false;
-									}
-								} else if (res.code === 403) {
-									parent.location.href = baseUrl + "/login";
-								} else {
-									that.$message({
-										message: res.msg,
-										type: 'error'
-									});
-								}
-							}
-						});
-					},
-					getSystemRunningStatus() {
-						// 鑾峰彇wcs绯荤粺杩愯鐘舵��
-						let that = this
-						$.ajax({
-							url: baseUrl + "/console/system/running/status",
-							headers: {
-								'token': localStorage.getItem('token')
-							},
-							method: 'POST',
-							success: function(res) {
-								if (res.code === 200) {
-									if (res.data.status) {
-										$('#system-toggle-checked').attr("checked", true);
-										$('#system-run-desc').html("绯荤粺杩愯涓�...");
-										that.systemStatus = true;
-										parent.systemRunning = true;
-									} else {
-										$('#system-toggle-checked').attr("checked", false);
-										$('#system-run-desc').html("绯荤粺宸插仠姝�!");
-										that.systemStatus = false;
-										parent.systemRunning = false;
-									}
-								} else if (res.code === 403) {
-									parent.location.href = baseUrl + "/login";
-								} else {
-									that.$message({
-										message: res.msg,
-										type: 'error'
-									});
-								}
-							}
-						});
-					},
-					getCarPosition(x,y) {
-						//璁$畻鍥涘悜绌挎杞﹀浘鏍囦綅缃�
-						let top = (x * 35 - 35) + "px" //闇�瑕佸噺鍘诲皬杞﹁嚜宸辨墍鍗犻珮搴�
-						let left = (y * 35) + "px" //闇�瑕佸噺鍘诲皬杞﹁嚜宸辨墍鍗犲搴�
-						return [top,left];
-					},
-					testMove() {
-						let that = this
-						clearInterval(this.consoleInterval)//娓呯悊瀹氭椂鍣�
-
-						let shuttleList = this.currentLevShuttleList
-						$.ajax({
-							url: baseUrl + "/static/testMoveData.json",
-							headers: {
-								'token': localStorage.getItem('token')
-							},
-							method: 'GET',
-							success: function(res) {
-								shuttleList[0].moveAdvancePath = res
-								that.currentLevShuttleList = shuttleList
-
-								let index = 0
-								let tmp = null
-								tmp = setInterval(() => {
-									if (index < res.length) {
-										that.currentLevShuttleList[0].wcsPoint.y = res[index].y
-										that.currentLevShuttleList[0].wcsPoint.x = res[index].x
-										index++
-									}else {
-										clearInterval(tmp)
-										that.init()
-									}
-								},1000)
-							}
-						});
-					},
-					colorRGB(){
-						//闅忔満棰滆壊
-						const r = Math.floor(Math.random()*256);
-						const g = Math.floor(Math.random()*256);
-						const b = Math.floor(Math.random()*256);
-						return `rgb(${r},${g},${b})`;
-					},
-					checkAdvancePath(x,y) {
-						//妫�娴嬭矾寰勬槸鍚︿负绌挎杞﹂璁¤矾寰勶紝濡倄鍜寉璺緞鏄┛姊溅棰勮璺緞锛屽垯杩斿洖灏忚溅鍙�
-						this.currentLevShuttleList.forEach((item,idx) => {
-							if (item.moveAdvancePath != null) {
-								item.moveAdvancePath.forEach((path,index) => {
-									if (path.x === x && path.y === y) {
-										return item.shuttleNo;
-									}
-								})
-							}
-						})
-						let data = []
-						let shuttleList = this.currentLevShuttleList;
-						for (var i = 0; i < shuttleList.length; i++) {
-							let shuttle = shuttleList[i]
-							let moveAdvancePath = shuttle.moveAdvancePath
-							if (moveAdvancePath != null) {
-								for (var j = 0; j < moveAdvancePath.length; j++) {
-									let path = moveAdvancePath[j]
-									if (path.x-1 === x && path.y === y) {//璺緞绗﹀悎
-										data.push(shuttle.shuttleNo)
-										continue;
-									}
-								}
-							}
-						}
-						return data;//杩斿洖灏忚溅鍙烽泦鍚�
-					},
-					resetMap() {
-						//閲嶇疆鍦板浘
-						let that = this
-						$.ajax({
-							url:baseUrl+"/console/map/resetMap/auth",
-							headers:{
-								'token': localStorage.getItem('token')
-							},
-							data:{},
-							method:'get',
-							success:function (res) {
-								that.$message({
-									message: '閲嶇疆瀹屾垚',
-									type: 'success'
-								});
-							}
-						})
-					},
-					getCodeData(){
-						let that = this
-						$.ajax({
-							url:baseUrl +'/console/barcode/output/site',
-							method:'GET',
-							success:function (res) {
-								if(res.code === 200){
-									let data = JSON.parse(res.data)
-									if (data.length <= 5) {
-										that.codeList1 = data;
-									} else {
-										that.codeList1 = data.slice(0, 5);
-										that.codeList2 = data.splice(5, 10);
-									}
-								}
-							}
-						})
-					}
-				}
-			})
-		</script>
-	</body>
-</html>
diff --git a/src/main/webapp/views/console4.html b/src/main/webapp/views/console4.html
deleted file mode 100644
index dabc9ac..0000000
--- a/src/main/webapp/views/console4.html
+++ /dev/null
@@ -1,971 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
-  <meta charset="UTF-8">
-  <title>搴撲綅鍦板浘</title>
-  <link rel="stylesheet" href="../static/css/animate.min.css">
-  <link rel="stylesheet" href="../static/vue/element/element.css">
-  <link rel="stylesheet" href="../static/css/console_vue.css">
-  <link rel="stylesheet" href="../static/css/toggle-switch.css">
-  <script type="text/javascript" src="../static/js/jquery/jquery-3.3.1.min.js"></script>
-  <script type="text/javascript" src="../static/layui/layui.js"></script>
-  <script type="text/javascript" src="../static/js/handlebars/handlebars-v4.5.3.js"></script>
-  <script type="text/javascript" src="../static/js/common.js"></script>
-  <script type="text/javascript" src="../static/vue/js/vue.min.js"></script>
-  <script type="text/javascript" src="../static/vue/element/element.js"></script>
-  <script src="../static/js/gsap.min.js"></script>
-  <script src="../static/js/pixi-legacy.min.js"></script>
-  <style>
-    *{
-      margin: 0;
-      padding: 0;
-    }
-  </style>
-</head>
-<body>
-<div id="app">
-  <div id="pixiView">
-
-  </div>
-
-  <!--杈撳嚭鎿嶄綔鍜孎PS-->
-  <div style="position: absolute;top: 20px;right: 50px;">
-    <div>FPS:{{mapFps}}</div>
-    <el-button @click="drawer = true">鎿嶄綔</el-button>
-  </div>
-
-  <el-drawer
-          title="鎿嶄綔鍖哄煙"
-          :visible.sync="drawer"
-          :with-header="true"
-          :modal="false"
-  >
-    <div class="floorBtnBox" v-for="(lev,idx) in floorList">
-      <el-button :style="{background:currentLev === lev ? '#7DCDFF':''}" @click="changeFloor(lev)">{{lev}}F</el-button>
-    </div>
-  </el-drawer>
-
-  <el-drawer
-          title="搴撲綅璇︽儏"
-          :visible.sync="drawerLocNo"
-          :with-header="true"
-          :modal="false"
-  >
-    <div v-if="drawerLocNoData!=null">
-      <div style="margin: 10px;">
-        <div style="margin-top: 5px;">X锛歿{drawerLocNoData.x}}</div>
-        <div style="margin-top: 5px;">Y锛歿{drawerLocNoData.y}}</div>
-        <div style="margin-top: 5px;">Z锛歿{drawerLocNoData.z}}</div>
-        <div style="margin-top: 5px;">搴撲綅鍙凤細{{drawerLocNoData.locNo}}</div>
-        <div style="margin-top: 5px;">棰勮璺緞杞﹁締锛歿{drawerLocNoData.moveAdvancePath}}</div>
-        <div style="margin-top: 5px;">璺緞閿佸畾杞﹁締锛歿{drawerLocNoData.lockPathShuttleNo}}</div>
-      </div>
-    </div>
-  </el-drawer>
-
-  <el-drawer
-          title="灏忚溅淇℃伅"
-          :visible.sync="drawerShuttle"
-          :with-header="true"
-          :modal="false"
-  >
-    <div v-if="drawerShuttleData!=null">
-      <div style="margin: 10px;">
-        <div style="margin-top: 5px;">灏忚溅锛歿{drawerShuttleData.shuttleNo}}</div>
-        <div style="margin-top: 5px;">宸ヤ綔鍙凤細{{drawerShuttleData.wrkNo}}</div>
-        <div style="margin-top: 5px;">鐘舵�侊細{{drawerShuttleData}}</div>
-      </div>
-    </div>
-  </el-drawer>
-
-  <el-drawer
-          title="绔欑偣淇℃伅"
-          :visible.sync="drawerSta"
-          :with-header="true"
-          :modal="false"
-  >
-    <div v-if="drawerStaData!=null">
-      <div style="margin: 10px;">
-        <div style="margin-top: 5px;">绔欑偣锛歿{drawerStaData.siteId}}</div>
-        <div style="margin-top: 5px;">宸ヤ綔鍙凤細{{drawerStaData.workNo}}</div>
-        <div style="margin-top: 5px;">宸ヤ綔鐘舵�侊細{{drawerStaData.wrkSts}}</div>
-        <div style="margin-top: 5px;">宸ヤ綔绫诲瀷锛歿{drawerStaData.ioType}}</div>
-        <div style="margin-top: 5px;">婧愮珯锛歿{drawerStaData.sourceStaNo}}</div>
-        <div style="margin-top: 5px;">鐩爣绔欙細{{drawerStaData.staNo}}</div>
-        <div style="margin-top: 5px;">婧愬簱浣嶏細{{drawerStaData.sourceLocNo}}</div>
-        <div style="margin-top: 5px;">鐩爣搴撲綅锛歿{drawerStaData.locNo}}</div>
-        <div style="margin-top: 5px;">鑷姩锛歿{drawerStaData.autoing}}</div>
-        <div style="margin-top: 5px;">鏈夌墿锛歿{drawerStaData.loading}}</div>
-        <div style="margin-top: 5px;">鑳藉叆锛歿{drawerStaData.canining}}</div>
-        <div style="margin-top: 5px;">鑳藉嚭锛歿{drawerStaData.canouting}}</div>
-        <div style="margin-top: 5px;">鑳藉嚭锛歿{drawerStaData.canouting}}</div>
-      </div>
-    </div>
-  </el-drawer>
-
-  <el-drawer
-          title="鎻愬崌鏈轰俊鎭�"
-          :visible.sync="drawerLift"
-          :with-header="true"
-          :modal="false"
-  >
-    <div v-if="drawerLiftData!=null">
-      <div style="margin: 10px;">
-        <div style="margin-top: 5px;">鎻愬崌鏈猴細{{liftList[drawerLiftData-1].liftNo}}</div>
-        <div style="margin-top: 5px;">宸ヤ綔鍙凤細{{liftList[drawerLiftData-1].taskNo}}</div>
-        <div style="margin-top: 5px;">鐘舵�侊細{{liftList[drawerLiftData-1]}}</div>
-      </div>
-    </div>
-  </el-drawer>
-
-</div>
-<script>
-  let width = 25;
-  let height = 25;
-  let pixiApp;
-  let pixiStageList = [];
-  let pixiShuttleMap = new Map();
-  let pixiShuttleMoveAdvancePathMap = new Map();
-  let pixiShuttleLockPathMap = new Map();
-  let pixiStaMap = new Map();
-  let lockPathInfoMap = new Map();
-  let objectsContainer;
-  let objectsContainer2;
-  let objectsContainer3;
-  let graphics0;
-  let graphics3;
-  let graphics4;
-  let graphics5;
-  let graphics9;
-  let graphics67;
-  let graphicsLock;
-  let ws;
-
-  var app = new Vue({
-    el: '#app',
-    data: {
-      map: [],
-      currentLev: 1,
-      floorList: [], //褰撳墠椤圭洰妤煎眰
-      currentLevShuttleList: [],//褰撳墠妤煎眰鍥涘悜绌挎杞﹂泦鍚�
-      shuttleColorList: [],//鍥涘悜绌挎杞﹂鑹查泦鍚�
-      drawer: false,
-      drawerLocNo: false,
-      drawerLocNoData: null,
-      drawerLocDetls: [],
-      reloadMap: true,
-      mapFps: 0,
-      drawerShuttle: false,
-      drawerShuttleData: null,
-      currentLevStaList: [],//褰撳墠妤煎眰绔欑偣list
-      reloadSta: true,
-      drawerSta: false,
-      drawerStaData: null,
-      drawerLift: false,
-      drawerLiftData: null,
-      liftList: [],
-    },
-    mounted() {
-      this.init()
-      this.createMap()
-    },
-    watch: {
-      map: {
-        deep: true,
-        handler(val) {
-
-        }
-      },
-      drawerLocNo: {
-        deep: true,
-        handler(val) {
-          if (!val) {
-            var sprite = pixiStageList[this.drawerLocNoData.x - 1][this.drawerLocNoData.y];
-            updateColor(sprite, 0xFFFFFF);//鎭㈠棰滆壊
-          }
-        }
-      }
-    },
-    methods: {
-      init(){
-        ws = new WebSocket("ws://" + window.location.host + baseUrl + "/console/websocket");
-        ws.onopen = this.webSocketOnOpen
-        ws.onerror = this.webSocketOnError
-        ws.onmessage = this.webSocketOnMessage
-        ws.onclose = this.webSocketClose
-
-        this.getMap(this.currentLev)
-        this.initLev()//鍒濆鍖栨ゼ灞備俊鎭�
-        // this.getSystemRunningStatus() //鑾峰彇绯荤粺杩愯鐘舵��
-
-        this.consoleInterval = setInterval(() => {
-          this.getMap(this.currentLev) //鑾峰彇瀹炴椂鍦板浘鏁版嵁
-          this.getShuttleStateInfo() //鑾峰彇鍥涘悜绌挎杞︿俊鎭�
-          this.getLiftStateInfo() //鑾峰彇鎻愬崌鏈轰俊鎭�
-          this.getSiteInfo() //鑾峰彇杈撻�佺珯鐐规暟鎹�
-          this.getMoveAdvancePath(this.currentLev)
-          this.getLockPath(this.currentLev)
-        }, 1000)
-
-      },
-      getShuttleStateInfo() {
-        this.sendWs(JSON.stringify({
-          "url": "/shuttle/table/shuttle/state",
-          "data": {}
-        }))
-      },
-      setShuttleStateInfo(res) {
-        // 鍥涘悜绌挎杞︿俊鎭〃鑾峰彇
-        let that = this
-        if (res.code == 200) {
-          let currentLevShuttle = []//褰撳墠妤煎眰灏忚溅闆嗗悎
-          res.data.forEach((item,idx) => {
-            if (item != null && item.point != undefined && item.point != null) {
-              if (item.point.z == that.currentLev) {
-                currentLevShuttle.push(item);
-              }
-            }
-          })
-          that.shuttleList = res.data
-          if (that.shuttleColorList.length == 0) {
-            let colorList = []//闅忔満灏忚溅棰滆壊
-            res.data.forEach((item,idx) => {
-              colorList[item.shuttleNo] = that.colorRGB()
-            })
-            that.shuttleColorList = colorList
-          }
-
-          const result = this.findShuttleDiffList(this.currentLevShuttleList, currentLevShuttle);
-          if (!result) {
-            //灏忚溅瀛樺湪鍙樺姩锛岄噸鏂版覆鏌撳叏閮ㄥ皬杞�
-            pixiShuttleMap.forEach((shuttle,index) => {
-              pixiApp.stage.removeChild(shuttle)
-              pixiShuttleMap.delete(index)
-            })
-
-            currentLevShuttle.forEach((item,index) => {
-              pixiApp.loader.load((loader, resources) => {
-                // 绾圭悊鍒涘缓灏忚溅
-                const shuttle = new PIXI.Sprite(resources.shuttle.texture);
-                shuttle.width = width
-                shuttle.height = height
-                shuttle.x = (item.point.y - 0) * width;//鏇存柊鍧愭爣x
-                shuttle.y = (item.point.x - 1) * height;//鏇存柊鍧愭爣y
-                shuttle.updateMoveStatus = true;//鍔ㄧ敾鎵ц瀹屾垚
-                shuttle.interactive = true; // 蹇呴』瑕佽缃墠鑳芥帴鏀朵簨浠�
-                shuttle.buttonMode = true; // 璁╁厜鏍囧湪hover鏃跺彉涓烘墜鍨嬫寚閽�
-                shuttle.on('pointerdown', (e) => {
-                  this.drawerShuttle = true;
-                  this.drawerShuttleData = item;
-                })
-                pixiApp.stage.addChild(shuttle);
-                pixiShuttleMap.set(item.shuttleNo, shuttle);
-              })
-
-            })
-          }else {
-            //灏忚溅涓嶅瓨鍦ㄥ彉鍔紝娓叉煋灏忚溅浣嶇疆
-            currentLevShuttle.forEach((item,index) => {
-              this.updateShuttleXY(item)
-            })
-          }
-          that.currentLevShuttleList = currentLevShuttle;
-        }
-      },
-      //鑾峰彇鍦板浘鏁版嵁
-      getMap(lev) {
-        this.sendWs(JSON.stringify({
-          "url": "/console/map/auth",
-          "data": lev
-        }))
-      },
-      setMap(res) {
-        //鑾峰彇鍦板浘鏁版嵁
-        let data = res.data
-        let tmp = []
-        for (let i = 1; i < data.length - 1; i++) {
-          tmp.push(data[i])
-        }
-        this.createMapData(tmp)
-      },
-      changeFloor(lev) {
-        this.currentLev = lev
-        this.currentLevShuttleList = []
-        this.reloadMap = true
-        this.reloadSta = true
-        this.getMap(lev)
-
-        //娓呯┖鍗犵敤璺緞
-        objectsContainer3.removeChildren();
-        pixiShuttleLockPathMap = new Map();
-
-        //娓呯┖棰勮璺緞
-        objectsContainer2.removeChildren();
-        pixiShuttleMoveAdvancePathMap = new Map();
-      },
-      createMap(){
-        //Create a Pixi Application
-        pixiApp = new PIXI.Application({
-          // width: 1500,
-          // height: 800,
-          backgroundColor: 0xF5F7F9FF,
-          resizeTo: window
-        });
-        //Add the canvas that Pixi automatically created for you to the HTML document
-        $("#pixiView").append(pixiApp.view)
-
-        //鍔犺浇灏忚溅璧勬簮
-        pixiApp.loader.add('shuttle', '../static/images/sxcar.png');
-
-        // 浠嶨raphics瀵硅薄鍒涘缓涓�涓汗鐞�
-        graphics0 = pixiApp.renderer.generateTexture(getContainer(0));
-        graphics3 = pixiApp.renderer.generateTexture(getContainer(3));
-        graphics4 = pixiApp.renderer.generateTexture(getContainer(4));
-        graphics5 = pixiApp.renderer.generateTexture(getContainer(5));
-        graphics9 = pixiApp.renderer.generateTexture(getContainer(9));
-        graphics67 = pixiApp.renderer.generateTexture(getContainer(67));
-        graphicsLock = pixiApp.renderer.generateTexture(getContainer(-999));
-
-        // 鍒涘缓涓�涓鍣ㄦ潵绠$悊澶ф壒閲忕殑鏄剧ず瀵硅薄
-        objectsContainer = new PIXI.Container();
-        pixiApp.stage.addChild(objectsContainer);
-
-        // 鍒涘缓涓�涓鍣ㄦ潵绠$悊澶ф壒閲忕殑鏄剧ず瀵硅薄
-        objectsContainer2 = new PIXI.Container();
-        pixiApp.stage.addChild(objectsContainer2);
-
-        // 鍒涘缓涓�涓鍣ㄦ潵绠$悊澶ф壒閲忕殑鏄剧ず瀵硅薄
-        objectsContainer3 = new PIXI.Container();
-        pixiApp.stage.addChild(objectsContainer3);
-
-        //*******************鎷栧姩鐢诲竷*******************
-        let stageOriginalPos;
-        let mouseDownPoint;
-        let touchBlank = false;
-        pixiApp.renderer.plugins.interaction.on(
-                'pointerdown',
-                (event) => {
-                  const globalPos = event.data.global;
-                  // 璁板綍涓媠tage鍘熸潵鐨勪綅缃�
-                  stageOriginalPos = [pixiApp.stage.position._x, pixiApp.stage.position._y];
-                  // 璁板綍涓媘ouse down鐨勪綅缃�
-                  mouseDownPoint = [globalPos.x, globalPos.y];
-                  if (!event.target) {
-                    // 鐐瑰埌浜嗙敾甯冪殑绌虹櫧浣嶇疆
-                    touchBlank = true;
-                  }
-                }
-        );
-
-        pixiApp.renderer.plugins.interaction.on(
-                'pointermove',
-                (event) => {
-                  const globalPos = event.data.global;
-
-                  if (touchBlank) {
-                    // 鎷栨嫿鐢诲竷
-                    const dx = globalPos.x - mouseDownPoint[0];
-                    const dy = globalPos.y - mouseDownPoint[1];
-                    pixiApp.stage.position.set(
-                            stageOriginalPos[0] + dx,
-                            stageOriginalPos[1] + dy
-                    );
-                  }
-                }
-        );
-
-        pixiApp.renderer.plugins.interaction.on(
-                'pointerup',
-                (event) => {
-                  touchBlank = false;
-                }
-        );
-        //*******************鎷栧姩鐢诲竷*******************
-
-        //*******************缂╂斁鐢诲竷*******************
-        pixiApp.view.addEventListener('wheel', (event) => {
-          event.stopPropagation();
-          event.preventDefault();
-          // 鍥犱负鐢诲竷鏄厖婊¤绐楃殑锛屾墍浠lientX绛変簬mouse point鍦╮enderer涓婄殑x鍧愭爣
-          const globalPos = [event.clientX, event.clientY];
-          const delta = event.deltaY;
-          const oldZoom = pixiApp.stage.scale.x;
-          let newZoom = oldZoom * 0.999 ** delta;
-
-          // const oldStageMatrix = app.stage.localTransform.clone();
-          // const oldStagePos = oldStageMatrix.applyInverse(pointerGlobalPos);
-          const oldStagePos = globalPos;
-          const dx = oldStagePos[0] * oldZoom - oldStagePos[0] * newZoom;
-          const dy = oldStagePos[1] * oldZoom - oldStagePos[1] * newZoom;
-
-          pixiApp.stage.setTransform(
-                  pixiApp.stage.position.x + dx,
-                  pixiApp.stage.position.y + dy,
-                  newZoom,
-                  newZoom,
-                  0,
-                  0,
-                  0,
-                  0,
-                  0
-          );
-
-        });
-        //*******************缂╂斁鐢诲竷*******************
-
-        //*******************FPS*******************
-        var g_Time=0;
-        pixiApp.ticker.add((delta) => {
-          var timeNow = (new Date()).getTime();
-          var timeDiff = timeNow - g_Time;
-          g_Time = timeNow;
-          var fps = 1000 / timeDiff;
-          this.mapFps = parseInt(fps)
-        });
-        //*******************FPS*******************
-
-      },
-      createMapData(map) {
-        if (this.reloadMap) {
-          this.reloadMap = false
-          pixiStageList = [map.length]//鍒濆鍖栧垪琛�
-          pixiStaMap = new Map();//閲嶇疆
-
-          objectsContainer.removeChildren()
-          map.forEach((item,index) => {
-            pixiStageList[index] = [item.length]
-            for (let idx = 0; idx < item.length; idx++) {
-              let val = item[idx]
-              if (val.value < 0 && (val.value != -999)) {
-                continue;
-              }
-
-              let sprite = getSprite(val.value, idx * width, index * height, (e) => {
-                if (val.value == 4) {
-                  //绔欑偣
-                  this.openDrawerSta(val)
-                }else if (val.value == 67) {
-                  //鎻愬崌鏈�
-                  this.openDrawerLift(val)
-                }else{
-                  //搴撲綅
-                  this.rightEvent(index + 1, idx, e);
-                  updateColor(sprite, 0x9900ff);
-                }
-              });
-
-              if (val.value == 4) {
-                // 鍒涘缓鏂囨湰瀵硅薄
-                const style = new PIXI.TextStyle({
-                  fontFamily: 'Arial',
-                  fontSize: 10,
-                  fill: '#000000',
-                });
-                const text = new PIXI.Text(val.data, style);
-                text.anchor.set(0.5); // 璁剧疆鏂囨湰閿氱偣涓轰腑蹇冪偣
-                text.position.set(sprite.width / 2, sprite.height / 2); // 灏嗘枃鏈綅缃缃负Graphics瀵硅薄鐨勪腑蹇冪偣
-                // 灏嗘枃鏈璞℃坊鍔犲埌Graphics瀵硅薄涓�
-                sprite.addChild(text);
-                sprite.textObj = text;
-                pixiStaMap.set(parseInt(val.data), sprite);//绔欑偣鏁版嵁娣诲姞鍒癿ap涓�
-              }else if (val.value == 67) {
-                // 鍒涘缓鎻愬崌鏈烘枃鏈璞�
-                const style = new PIXI.TextStyle({
-                  fontFamily: 'Arial',
-                  fontSize: 10,
-                  fill: '#000000',
-                });
-                const text = new PIXI.Text(val.data, style);
-                text.anchor.set(0.5); // 璁剧疆鏂囨湰閿氱偣涓轰腑蹇冪偣
-                text.position.set(sprite.width / 2, sprite.height / 2); // 灏嗘枃鏈綅缃缃负Graphics瀵硅薄鐨勪腑蹇冪偣
-                // 灏嗘枃鏈璞℃坊鍔犲埌Graphics瀵硅薄涓�
-                sprite.addChild(text);
-                sprite.textObj = text;
-                pixiStaMap.set(parseInt(val.data), sprite);//绔欑偣鏁版嵁娣诲姞鍒癿ap涓�
-              }
-
-              if (val.value == -999) {
-                pixiShuttleLockPathMap.set(this.getLocNoByXYZ(val.row, val.bay, this.currentLev), sprite);
-                objectsContainer3.addChild(sprite);
-              }else {
-                objectsContainer.addChild(sprite);
-              }
-              pixiStageList[index][idx] = sprite
-            }
-          });
-
-          //瑙嗚灞呬腑
-          let containerWidth = (pixiApp.view.width - objectsContainer.width) / 2;
-          let containerHeight = (pixiApp.view.height - objectsContainer.height) / 2;
-          pixiApp.stage.position.set(containerWidth, containerHeight);
-        }else {
-          let diff = this.findDiffList(this.map, map);
-          diff.forEach((item, index) => {
-            //鑾峰彇old鍏冪礌
-            let oldSprite = pixiStageList[item.x][item.y]
-            if (item.originData == -999) {
-              //绉婚櫎old璺緞鍏冪礌
-              objectsContainer3.removeChild(oldSprite);
-            }else {
-              //绉婚櫎old鍏冪礌
-              objectsContainer.removeChild(oldSprite);
-            }
-
-            let sprite = getSprite(item.data, item.y * width, item.x * height, (e) => {
-              this.rightEvent(item.x + 1, item.y, e);
-              updateColor(sprite, 0x9900ff);
-            });
-
-            if (item.data == -999) {
-              //娣诲姞璺緞鍏冪礌
-              objectsContainer3.addChild(sprite);
-            }else {
-              //娣诲姞鍏冪礌
-              objectsContainer.addChild(sprite);
-            }
-
-            //淇濆瓨鏂板厓绱�
-            pixiStageList[item.x][item.y] = sprite
-          });
-        }
-
-        this.map = map;
-      },
-        rightEvent(x, y, e) {
-            this.drawerLocNo = true
-            let locNo = this.getLocNoByXYZ(x, y, this.currentLev);
-            let tmpData = {
-                x: x,
-                y: y,
-                z: this.currentLev,
-                locNo: locNo
-            };
-
-            let moveAdvancePath = pixiShuttleMoveAdvancePathMap.get(locNo)
-            if (moveAdvancePath == null || moveAdvancePath == undefined) {
-                moveAdvancePath = "";
-            }else {
-                moveAdvancePath = JSON.stringify(moveAdvancePath.shuttleNos);
-            }
-            tmpData.moveAdvancePath = moveAdvancePath;
-
-            let lockPathShuttleNo = lockPathInfoMap.get(locNo)
-            if (lockPathShuttleNo == null || lockPathShuttleNo == undefined) {
-                lockPathShuttleNo = "";
-            }
-            tmpData.lockPathShuttleNo = lockPathShuttleNo;
-
-            this.drawerLocNoData = tmpData;
-        },
-      findDiffList(arr1, arr2) {
-        let diff = []
-        arr1.forEach((item,index) => {
-          item.forEach((val,idx) => {
-            if(val.value != arr2[index][idx].value){
-              diff.push({
-                x: index,
-                y: idx,
-                data: arr2[index][idx].value,
-                originData: val.value
-              })
-            }
-          })
-        })
-
-        return diff;
-      },
-      findShuttleDiffList(list1, list2) {
-        //妫�娴嬮泦鍚�1閲岄潰鐨勫皬杞︽槸鍚﹀湪闆嗗悎2涓湁鍙樺姩
-        if (list1.length == 0) {
-          return false;//闆嗗悎涓虹┖
-        }
-        if (list1.length != list2.length) {
-          return false;//涓や釜闆嗗悎闀垮害涓嶄竴鑷�
-        }
-
-        let flag = false;
-        list1.forEach((item,index) => {
-          for (var i = 0; i < list2.length; i++) {
-            if (item.shuttleNo == list2[i].shuttleNo) {
-              flag = true;
-              break;
-            }
-          }
-        });
-
-        return flag;
-      },
-      checkStaInListDiff(sta, list) {
-        //妫�娴嬬珯鐐规槸鍚﹀湪闆嗗悎涓湁鍙樺姩
-        if (list.length == 0) {
-          return false;//闆嗗悎涓虹┖
-        }
-
-        let tmp = null;
-        for (var i = 0; i < list.length; i++) {
-          if (sta.siteId == list[i].siteId) {
-            tmp = list[i];//鎵惧埌鐩稿悓绔欑偣
-            break
-          }
-        }
-
-        if (tmp == null) {
-          return false;//娌℃湁鎵惧埌鐩稿悓绔欑偣
-        }
-
-        if (sta.siteStatus != tmp.siteStatus) {
-          return false;//绔欑偣鐘舵�佷笉鐩稿悓
-        }
-
-        if (sta.workNo != tmp.workNo) {
-          return false;//绔欑偣宸ヤ綔鍙蜂笉鐩稿悓
-        }
-
-        return true;//鏃犲彉鍖�
-      },
-      webSocketOnOpen(e) {
-        console.log("open");
-      },
-      webSocketOnError(e) {
-        console.log(e);
-      },
-      webSocketOnMessage(e) {
-        const result = JSON.parse(e.data);
-        if (result.url == "/shuttle/table/shuttle/state") {
-          this.setShuttleStateInfo(JSON.parse(result.data))
-        }else if (result.url == "/lift/table/lift/state") {
-          this.setLiftStateInfo(JSON.parse(result.data))
-        }else if (result.url == "/console/latest/data/site") {
-          this.setSiteInfo(JSON.parse(result.data))
-        }else if (result.url == "/console/map/auth") {
-          this.setMap(JSON.parse(result.data))
-        }else if (result.url == "/console/getMoveAdvancePath/auth") {
-            this.setMoveAdvancePath(JSON.parse(result.data))
-        }else if (result.url == "/console/getLockPath/auth") {
-            this.setLockPath(JSON.parse(result.data))
-        }
-      },
-      getMoveAdvancePath(lev) {
-          this.sendWs(JSON.stringify({
-              "url": "/console/getMoveAdvancePath/auth",
-              "data": lev
-          }))
-      },
-      setMoveAdvancePath(res) {
-          let data = res.data;
-          this.addMoveAdvancePath(data)
-      },
-      getLockPath(lev) {
-        this.sendWs(JSON.stringify({
-            "url": "/console/getLockPath/auth",
-            "data": lev
-        }))
-      },
-      setLockPath(res) {
-          let data = res.data;
-          let tmpMap = new Map();
-          data.forEach((item) => {
-              let locNo = this.getLocNoByXYZ(item.x,item.y,item.z)
-              tmpMap.set(locNo, item.shuttleNo);
-          })
-          lockPathInfoMap = tmpMap;
-      },
-      webSocketClose(e) {
-        console.log("close");
-      },
-      sendWs(message) {
-        if (ws.readyState == WebSocket.OPEN) {
-          ws.send(message)
-        }
-      },
-      colorRGB(){
-        //闅忔満棰滆壊
-        const r = Math.floor(Math.random()*256);
-        const g = Math.floor(Math.random()*256);
-        const b = Math.floor(Math.random()*256);
-        return `rgb(${r},${g},${b})`;
-      },
-      updateShuttleXY(item) {
-        const shuttle = pixiShuttleMap.get(item.shuttleNo);
-        if (shuttle.updateMoveStatus) {//鍔ㄧ敾鎵ц瀹屾垚鎵嶅彲缁х画鎵ц鍔ㄧ敾
-          shuttle.updateMoveStatus = false;//鍔ㄧ敾鎵ц涓�
-          // 璁$畻涓ょ偣涔嬮棿鐨勮窛绂�1
-          const distance = Math.sqrt(Math.pow((item.point.x * width) - shuttle.x, 2) + Math.pow((item.point.y * height) - shuttle.y, 2));
-          gsap.killTweensOf(shuttle); // 鏉�姝绘墍鏈夐拡瀵�".class"鐨勫姩鐢�
-          gsap.to(shuttle, {
-            x: (item.point.y - 0) * width, // 鐩爣浣嶇疆
-            y: (item.point.x - 1) * height, // 鐩爣浣嶇疆
-            duration: 0.2, // 鍔ㄧ敾鎸佺画鏃堕棿锛堢锛�
-            ease: "power1.inOut", // 缂撳姩绫诲瀷
-            onComplete: () => {
-              shuttle.updateMoveStatus = true;//鍔ㄧ敾鎵ц瀹屾垚
-            }
-          });
-        }
-      },
-      getSiteInfo() {
-        //鑾峰彇杈撻�佺珯鐐规暟鎹�
-        this.sendWs(JSON.stringify({
-          "url": "/console/latest/data/site",
-          "data": {}
-        }))
-      },
-      setSiteInfo(res) {
-        // var test = "{\"msg\":\"鎿嶄綔鎴愬姛\",\"code\":200,\"data\":[{\"siteId\":\"300\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"301\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"302\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"303\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"304\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"305\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"306\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"307\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"308\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"309\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"310\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"311\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"312\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"313\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"314\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"315\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"316\",\"siteStatus\":\"site-auto-run\",\"workNo\":0},{\"siteId\":\"317\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"318\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"319\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"320\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"321\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"322\",\"siteStatus\":\"site-auto-run\",\"workNo\":0},{\"siteId\":\"323\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"324\",\"siteStatus\":\"site-auto-run\",\"workNo\":0},{\"siteId\":\"325\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"326\",\"siteStatus\":\"site-auto-id\",\"workNo\":5451},{\"siteId\":\"327\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"200\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"328\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"201\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"329\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"202\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"330\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"203\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"331\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"204\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"332\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"205\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"333\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"334\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"335\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"336\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"337\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"338\",\"siteStatus\":\"site-auto-run\",\"workNo\":0},{\"siteId\":\"339\",\"siteStatus\":\"site-auto-run-id\",\"workNo\":5447},{\"siteId\":\"340\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"341\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"342\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"343\",\"siteStatus\":\"site-auto-run\",\"workNo\":0},{\"siteId\":\"344\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"345\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"346\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"100\",\"siteStatus\":\"site-auto-run-id\",\"workNo\":8851},{\"siteId\":\"101\",\"siteStatus\":\"site-auto-run-id\",\"workNo\":8855},{\"siteId\":\"102\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"103\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"104\",\"siteStatus\":\"site-auto-run\",\"workNo\":0},{\"siteId\":\"105\",\"siteStatus\":\"site-auto\",\"workNo\":0}]}";
-        // res = JSON.parse(test)
-        //鑾峰彇杈撻�佺珯鐐规暟鎹�
-        if (res.code === 200){
-          var sites = res.data;
-          if (this.reloadSta && pixiStaMap.size > 0) {
-            //閲嶆柊娓叉煋鎵�鏈夎緭閫佺珯鐐�
-            this.currentLevStaList = sites;
-            this.reloadSta = false;
-            sites.forEach((item, index) => {
-              let sta = pixiStaMap.get(parseInt(item.siteId));
-              if (sta != undefined) {
-                if (item.workNo > 0) {
-                  sta.textObj.text = item.siteId + "(" + item.workNo + ")";
-                }
-
-                //鍒涘缓閬僵灞�
-                if (item.siteStatus == "site-auto") {
-                  //鑷姩鐘舵�侊紝绉婚櫎閬僵灞�
-                  if (sta.statusObj != null) {
-                    objectsContainer.removeChild(sta.statusObj)
-                    sta.statusObj = null;
-                  }
-                }else if (item.siteStatus == "site-auto-run" || item.siteStatus == "site-auto-run-id") {
-                  //鑷姩鏈夌墿
-                  let graphics = getGraphics(0xfa51f6, width, height, sta.x, sta.y);
-                  graphics.addChild(sta.textObj);//缁ф壙鏂囧瓧淇℃伅
-                  sta.statusObj = graphics;
-                  objectsContainer.addChild(graphics);
-                }else if (item.siteStatus == "site-unauto") {
-                  //闈炶嚜鍔�
-                  let graphics = getGraphics(0xb8b8b8, width, height, sta.x, sta.y);
-                  graphics.addChild(sta.textObj);//缁ф壙鏂囧瓧淇℃伅
-                  sta.statusObj = graphics;
-                  objectsContainer.addChild(graphics);
-                }
-              }
-            });
-          } else {
-            //妫�娴嬩笉鐩稿悓绔欑偣杩涜灞�閮ㄦ洿鏂�
-            this.currentLevStaList.forEach((item, index) => {
-              let result = this.checkStaInListDiff(item, sites);
-              if (!result) {
-                //闇�瑕佹洿鏂�
-                let sta = pixiStaMap.get(parseInt(item.siteId));
-                if (item.workNo > 0) {
-                  sta.textObj.text = item.siteId + "(" + item.workNo + ")";
-                }else {
-                  sta.textObj.text = item.siteId;
-                }
-
-                //鍒涘缓閬僵灞�
-                if (item.siteStatus == "site-auto") {
-                  //鑷姩鐘舵�侊紝绉婚櫎閬僵灞�
-                  if (sta.statusObj != null) {
-                    objectsContainer.removeChild(sta.statusObj)
-                    sta.statusObj = null;
-                  }
-                }else if (item.siteStatus == "site-auto-run") {
-                  //鑷姩鏈夌墿
-                  let graphics = getGraphics(0xfa51f6, width, height, sta.x, sta.y);
-                  graphics.addChild(sta.textObj);//缁ф壙鏂囧瓧淇℃伅
-                  sta.statusObj = graphics;
-                  objectsContainer.addChild(graphics);
-                }else if (item.siteStatus == "site-unauto") {
-                  //闈炶嚜鍔�
-                  let graphics = getGraphics(0xb8b8b8, width, height, sta.x, sta.y);
-                  graphics.addChild(sta.textObj);//缁ф壙鏂囧瓧淇℃伅
-                  sta.statusObj = graphics;
-                  objectsContainer.addChild(graphics);
-                }
-              }
-            });
-          }
-        } else if (res.code === 403){
-          parent.location.href = baseUrl+"/login";
-        }  else {
-          console.log(res.msg);
-        }
-      },
-      openDrawerSta(data) {
-        let that = this
-        this.drawerSta = true;
-        $.ajax({
-          url: baseUrl + "/console/site/detail",
-          headers: {
-            'token': localStorage.getItem('token')
-          },
-          data: {
-            siteId: data.data
-          },
-          method: 'post',
-          success: function(res) {
-            //瑙f瀽鏁版嵁
-            let siteInfo = res.data;
-            if (res.code == 200) {
-              that.drawerStaData = siteInfo;
-            }
-          }
-        })
-      },
-      openDrawerLift(data) {
-        this.drawerLift = true;
-        this.drawerLiftData = parseInt(data.data)
-      },
-      getLiftStateInfo() {
-        // 鎻愬崌鏈轰俊鎭〃鑾峰彇
-        this.sendWs(JSON.stringify({
-          "url": "/lift/table/lift/state",
-          "data": {}
-        }))
-      },
-      setLiftStateInfo(res) {
-        // 鎻愬崌鏈轰俊鎭〃鑾峰彇
-        if (res.code == 200) {
-          this.liftList = res.data
-        }
-      },
-      getLocNoByXYZ(x, y, z) {
-          let locNo = x + "-" + y + "-" + z;
-          return locNo;
-      },
-      addMoveAdvancePath(moveAdvancePath) {//娣诲姞棰勮璺緞
-        //娓呯┖棰勮璺緞
-        objectsContainer2.removeChildren();
-        pixiShuttleMoveAdvancePathMap = new Map();
-        moveAdvancePath.forEach((path, idx) => {
-            let locNo = this.getLocNoByXYZ(path.x, path.y, path.z);
-            let shuttleNos = path.shuttleNoList;
-            let graphics = getGraphics(0x9966ff, width, height, path.y * width, (path.x - 1) * height);
-
-            // 鍒涘缓鏂囨湰瀵硅薄
-            const style = new PIXI.TextStyle({
-                fontFamily: 'Arial',
-                fontSize: 10,
-                fill: '#000000',
-            });
-            const text = new PIXI.Text(JSON.stringify(shuttleNos), style);
-            text.anchor.set(0.5); // 璁剧疆鏂囨湰閿氱偣涓轰腑蹇冪偣
-            text.position.set(graphics.width / 2, graphics.height / 2); // 灏嗘枃鏈綅缃缃负Graphics瀵硅薄鐨勪腑蹇冪偣
-            // 灏嗘枃鏈璞℃坊鍔犲埌Graphics瀵硅薄涓�
-            graphics.addChild(text);
-            graphics.textObj = text;
-            objectsContainer2.addChild(graphics)
-            pixiShuttleMoveAdvancePathMap.set(locNo, {
-                path: path,
-                sprite: graphics,
-                textObj: text,
-                shuttleNos: shuttleNos
-            })
-        });
-      },
-      initLev(){
-            let that = this
-            $.ajax({
-                url: baseUrl + "/console/map/lev/list",
-                headers: {
-                    'token': localStorage.getItem('token')
-                },
-                data: {},
-                method: 'get',
-                success: function(res) {
-                    if (res.code === 200) {
-                        that.floorList = res.data;
-                    } else if (res.code === 403) {
-                        parent.location.href = baseUrl + "/login";
-                    } else {
-                        that.$message({
-                            message: res.msg,
-                            type: 'error'
-                        });
-                    }
-                }
-            });
-      },
-    }
-  })
-
-  function getContainer(value) {
-    let graphics = new PIXI.Graphics();
-    if (value === 0) {
-      graphics.beginFill(0x55aaff);
-    } else if (value === 3) {//姣嶈建閬�
-      graphics.beginFill(0x00ff7f);
-      graphics.visible = true;
-    } else if (value === 4) {//绔欑偣
-      graphics.beginFill(0xffff00);
-      graphics.visible = true;
-    } else if (value === 5) {//鍏呯數妗�
-      graphics.beginFill(0xffaa7f);
-      graphics.visible = true;
-    } else if (value === 9) {//杞ㄨ抗
-      graphics.beginFill(0xff0000);
-    }else if (value === 67) {//鎻愬崌鏈�
-      graphics.beginFill(0xaaffff);
-    }else if (value === -999) {//璺緞閿佸畾
-      graphics.beginFill(0xf83333);
-    }
-    graphics.lineStyle(1, 0xffffff, 1);
-    graphics.drawRect(0, 0, width, height);
-    graphics.endFill();
-
-    return graphics;
-  }
-
-  function getGraphics(color, width, height, x, y) {
-    let graphics = new PIXI.Graphics();
-    graphics.beginFill(color);
-    graphics.lineStyle(1, 0xffffff, 1);
-    graphics.drawRect(0, 0, width, height);
-    graphics.position.set(x, y);
-    graphics.endFill();
-    return graphics;
-  }
-
-  function getSprite(value, x, y, pointerDownEvent) {
-    let sprite;
-    if (value == 0) {
-      sprite = new PIXI.Sprite(graphics0);
-    } else if (value == 3) {
-      sprite = new PIXI.Sprite(graphics3);
-    } else if (value == 4) {
-      sprite = new PIXI.Sprite(graphics4);
-    } else if (value == 5) {
-      sprite = new PIXI.Sprite(graphics5);
-    } else if (value == 9) {
-      sprite = new PIXI.Sprite(graphics9);
-    } else if (value == 67) {
-      sprite = new PIXI.Sprite(graphics67);
-    } else if (value == -999) {
-      sprite = new PIXI.Sprite(graphicsLock);
-    } else {
-      sprite = new PIXI.Sprite(graphics0);
-    }
-    sprite.position.set(x, y);
-    sprite.interactive = true; // 蹇呴』瑕佽缃墠鑳芥帴鏀朵簨浠�
-    sprite.buttonMode = true; // 璁╁厜鏍囧湪hover鏃跺彉涓烘墜鍨嬫寚閽�
-
-    sprite.on('pointerdown', (e) => {
-      pointerDownEvent(e)
-    })
-
-    return sprite;
-  }
-
-  /**
-   * 鏇存柊棰滆壊
-   */
-  function updateColor(sprite, color) {
-    // graphics.clear()
-    // graphics.beginFill(color);
-    // graphics.drawRect(0, 0, width, height);
-    sprite.tint = color;
-  }
-
-</script>
-</body>
-</html>
\ No newline at end of file
diff --git a/src/main/webapp/views/forklift.html b/src/main/webapp/views/forklift.html
deleted file mode 100644
index 2e4e60d..0000000
--- a/src/main/webapp/views/forklift.html
+++ /dev/null
@@ -1,460 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
-    <meta charset="UTF-8">
-    <title>鎻愬崌鏈虹洃鎺х鐞�</title>
-    <link rel="stylesheet" type="text/css" href="../static/css/normalize.css">
-    <link rel="stylesheet" type="text/css" href="../static/css/common_wcs.css">
-    <link rel="stylesheet" type="text/css" href="../static/layui/css/layui.css">
-    <link rel="stylesheet" href="../static/css/lift.css">
-    <script type="text/javascript" src="../static/js/jquery/jquery-3.3.1.min.js"></script>
-    <script type="text/javascript" src="../static/js/layer/layer.js"></script>
-    <script type="text/javascript" src="../static/layui/layui.js"></script>
-    <script type="text/javascript" src="../static/js/common.js"></script>
-</head>
-<body>
-<div style="padding: 10px;height: 100%;float: left;width: 6%">
-    <div class="button-window"></div>
-</div>
-<div style="height: 100%;padding-left: 6%">
-    <div style="padding: 10px;height: 100%">
-        <!-- 鏃ュ織鐩戞帶鏉� -->
-        <div class="log-board">
-            <div class="command-log" id="commandLogId" style="width: 10%;">
-            </div>
-            <div class="lift-state" style="width: 90%;">
-                <table id="lift-state-table">
-                    <thead>
-                    <tr>
-                        <th>鎻愬崌鏈�</th>
-                        <th>宸ヤ綔鍙�</th>
-                        <th>PLC浠诲姟鍙�</th>
-                        <th>妯″紡</th>
-                        <th>浠诲姟鐘舵��</th>
-                        <th>浠诲姟妯″紡</th>
-                        <th>鍙栬揣鏁版嵁</th>
-                        <th>鏀捐揣鏁版嵁</th>
-                        <th>鍑哄叆搴撴ā寮�</th>
-                        <th>鏁呴殰鐮�</th>
-                        <th>灞�</th>
-                    </tr>
-                    </thead>
-                    <tbody>
-                    </tbody>
-                </table>
-            </div>
-        </div>
-        <!-- 鎻愬崌鏈虹姸鎬� -->
-        <div class="lift-msg">
-            <table id="lift-msg-table">
-                <thead>
-                <tr>
-                    <th>鎻愬崌鏈�</th>
-                    <th>宸ヤ綔鍙�</th>
-                    <th>绔欑偣淇℃伅</th>
-                </tr>
-                </thead>
-                <tbody>
-                </tbody>
-            </table>
-        </div>
-        <!-- 鎵嬪姩鎿嶄綔 -->
-        <div class="lift-operation">
-            <!-- 閬僵灞� -->
-            <div class="lift-operation-shade">
-                    <span class="lift-operation-shade-span">
-                        WCS 绯荤粺杩愯涓紝璇峰仠姝㈠悗鎿嶄綔
-                    </span>
-            </div>
-            <!-- 璁惧浠诲姟閫夋嫨 -->
-            <div class="task-select">
-                <!-- 閫夋嫨 -->
-                <div id="lift-select" class="operator-item">
-                    <span class="select-title">鎻愬崌鏈哄彿</span>
-                    <div class="select-container" id="liftRadioBoxId">
-                        <!--                            <label><input type="radio" name="liftSelect" value="1" checked>&nbsp;1鍙锋彁鍗囨満</label>-->
-                    </div>
-                </div>
-            </div>
-
-            <!-- 璁惧浠诲姟鎿嶄綔 -->
-            <div class="task-operator">
-                <fieldset>
-                    <legend>鎵嬪姩鎿嶄綔</legend>
-                    <div class="button-group">
-                        <div class="select-container-item">
-                            <span>婧愮珯</span>
-                            <label><input id="sourceStaNo" type="text" name="sourceStaNo" /></label>
-                        </div>
-                        <div class="select-container-item">
-                            <span>鐩爣绔�</span>
-                            <label><input id="staNo" type="text" name="staNo" /></label>
-                        </div>
-                        <button class="item" onclick="liftOperator(1)">灏忚溅鎹㈠眰</button>
-                        <button class="item" onclick="liftOperator(2)">绉诲姩鎵樼洏</button>
-                        <button class="item" onclick="liftOperator(3)">绉诲姩</button>
-                        <button class="item" onclick="liftOperator(4)">浠诲姟纭</button>
-                        <button class="item" onclick="liftOperator(0)">澶嶄綅</button>
-                    </div>
-                </fieldset>
-            </div>
-
-        </div>
-        <!-- 鎻愬崌鏈烘棩蹇楄緭鍑� -->
-        <div class="lift-output-board">
-            <textarea id="lift-output"></textarea>
-        </div>
-
-        <div id="lift-detl" style="display: none">
-            <div>
-                <div class="form-item">
-                    <label class="form-label">绔欏彿:</label>
-                    <div class="form-input">
-                        <input id="liftNo" name="liftNo" class="layui-input" lay-verify="required|number" autocomplete="off" disabled="disabled">
-                    </div>
-                </div>
-                <div class="form-item">
-                    <label class="form-label">宸ヤ綔鍙�:</label>
-                    <div class="form-input">
-                        <input id="workNo" name="workNo" type="number" class="layui-input" lay-verify="number" autocomplete="off">
-                    </div>
-                </div>
-                <div class="form-item form-button-container">
-                    <button class="form-button" id="save">淇濆瓨</button>
-                    <button class="form-button" id="cancel" style="background-color: #D0D0D0">鍙栨秷</button>
-                </div>
-            </div>
-        </div>
-    </div>
-</div>
-</body>
-</html>
-<script>
-    // 绌虹櫧琛屾暟
-    var liftStateTableBlankRows = 0;
-    var liftMsgTableBlankRows = 0;
-    // 瀹為檯琛屾暟
-    var liftStateTableFullRows = 0;
-    var liftMsgTableFullRows = 0;
-    // 鍒濆鍖�
-    var liftOutputDom = document.getElementById("lift-output");
-    $(document).ready(function() {
-        initliftStateTable();
-        getliftStateInfo();
-        initliftMsgTable();
-        getliftMsgInfo();
-        operatorBlockShow();
-        setliftRadio();
-    });
-
-    setInterval(function () {
-        getliftStateInfo()
-        getliftMsgInfo();
-    },1000)
-    setInterval(function () {
-        getliftOutput();
-        operatorBlockShow();
-    },500);
-
-    // 鍒ゆ柇鎵嬪姩鎿嶄綔妯″潡鏄惁鍙敤
-    function operatorBlockShow() {
-        if (parent.systemRunning) {
-            $('.lift-operation').css("opacity", "0.5");
-            $('.lift-operation-shade').show();
-            $('.lift-operation-shade-span').show();
-        }  else {
-            $('.lift-operation').css("opacity", "1");
-            $('.lift-operation-shade').hide();
-            $('.lift-operation-shade-span').hide();
-        }
-    }
-
-    $(document).on('click ','#save', function () {
-        http.post(baseUrl+ "/forkLift/detl/update", {
-            liftNo: $('#liftNo').val(),
-            workNo: $('#workNo').val(),
-        }, function (res) {
-            layer.msg("淇敼鎴愬姛", {icon: 1,});
-            layer.close(layerDetl);
-        })
-    })
-
-    function setliftRadio() {
-        $.ajax({
-            url: baseUrl+ "/forkLift/table/lift/state",
-            headers: {'token': localStorage.getItem('token')},
-            method: 'POST',
-            success: function (res) {
-                if (res.code === 200){
-                    let table = res.data;
-                    for (let i=1;i<=table.length;i++){
-                        //娓叉煋鎻愬崌鏈洪�夐」html
-                        let liftRadioBox = '<label><input type="radio" name="liftSelect" ';
-                        if (i === 1) {
-                            liftRadioBox += 'checked '
-                        }
-                        liftRadioBox += 'value="' + table[i - 1].liftNo + '">&nbsp;' + table[i - 1].liftNo + '鍙锋彁鍗囨満</label>'
-                        $("#liftRadioBoxId").append(liftRadioBox)
-
-
-                        //娓叉煋鎻愬崌鏈烘暟鎹淮鎶ゅ拰璁惧淇℃伅html
-                        let liftCommandLogBox = '<div class="lift-command-item" data-liftNo="' + table[i - 1].liftNo + '">\n' +
-                            '<label>' + table[i - 1].liftNo + '#</label>\n' +
-                            '</div>'
-                        $("#commandLogId").append(liftCommandLogBox);
-                    }
-                } else if (res.code === 403){
-                    window.location.href = baseUrl+"/login";
-                }  else {
-                    console.log(res.msg);
-                }
-            }
-        });
-    }
-
-    // 鎻愬崌鏈轰俊鎭〃鑾峰彇 ---- 琛ㄤ竴
-    function getliftStateInfo() {
-        let tableEl = $('#lift-state-table');
-        $.ajax({
-            url: baseUrl+ "/forkLift/table/lift/state",
-            headers: {'token': localStorage.getItem('token')},
-            method: 'POST',
-            success: function (res) {
-                if (res.code === 200){
-                    let table = res.data;
-                    if (table.length > liftStateTableBlankRows && table.length !== liftStateTableFullRows) {
-                        initliftStateTable(table.length-liftStateTableBlankRows);
-                        liftStateTableFullRows = table.length;
-                    }
-                    for (let i=1;i<=table.length;i++){
-                        // $("#mode-"+table[i-1].liftNo).html(table[i-1].statusVal===0?'鑱旀満':'鑴辨満');
-                        let tr = tableEl.find("tr").eq(i);
-                        setVal(tr.children("td").eq(0), table[i-1].liftNo);
-                        setVal(tr.children("td").eq(1), table[i-1].taskNo);
-                        setVal(tr.children("td").eq(2), table[i-1].wrkNo);
-                        setVal(tr.children("td").eq(3), table[i-1].model$);
-                        setVal(tr.children("td").eq(4), table[i-1].protocolStatus$);
-                        setVal(tr.children("td").eq(5), table[i-1].taskMode$);
-                        setVal(tr.children("td").eq(6), table[i-1].pick);
-                        setVal(tr.children("td").eq(7), table[i-1].put);
-                        setVal(tr.children("td").eq(8), table[i-1].iOMode$);
-                        setVal(tr.children("td").eq(9), table[i-1].errorCode$);
-                        setVal(tr.children("td").eq(10), table[i-1].lev);
-                    }
-                } else if (res.code === 403){
-                    window.location.href = baseUrl+"/login";
-                }  else {
-                    console.log(res.msg);
-                }
-            }
-        });
-    }
-
-    // 鎻愬崌鏈烘暟鎹〃鑾峰彇 ---- 琛ㄤ簩
-    function getliftMsgInfo() {
-        let tableEl = $('#lift-msg-table');
-        $.ajax({
-            url: baseUrl+ "/forkLift/table/lift/msg",
-            headers: {'token': localStorage.getItem('token')},
-            method: 'POST',
-            success: function (res) {
-                if (res.code === 200){
-                    var table = res.data;
-                    if (table.length > liftMsgTableBlankRows && table.length !== liftMsgTableFullRows) {
-                        initliftMsgTable(table.length-liftMsgTableBlankRows);
-                        liftMsgTableFullRows = table.length;
-                    }
-                    for (var i=1;i<=table.length;i++){
-                        var tr = tableEl.find("tr").eq(i);
-                        let staDiv = "";
-                        table[i-1].forkLiftStaProtocols.forEach((item) => {
-                            let hasTray = item.hasTray ? "Y" : "N";
-                            let hasCar = item.hasCar ? "Y" : "N";
-                            staDiv += "<div>" + item.lev + "灞傦紝鎵樼洏锛�" + hasTray + "锛屽皬杞︼細" + hasCar + "</div>"
-                        })
-
-                        setVal(tr.children("td").eq(0), table[i-1].liftNo);
-                        setVal(tr.children("td").eq(1), table[i-1].workNo);
-                        setVal(tr.children("td").eq(2), staDiv);
-                    }
-                } else if (res.code === 403){
-                    window.location.href = baseUrl+"/login";
-                }  else {
-                    console.log(res.msg);
-                }
-            }
-        });
-    }
-
-    // 鎻愬崌鏈烘棩蹇楄緭鍑� -----------------------------------------------------------------------
-    function getliftOutput() {
-        $.ajax({
-            url: baseUrl + "/forkLift/output/lift",
-            headers: {'token': localStorage.getItem('token')},
-            method: 'POST',
-            success: function (res) {
-                if (res.code === 200) {
-                    liftOutput(res.data);
-                } else if (res.code === 403) {
-                    window.location.href = baseUrl + "/login";
-                } else {
-                    console.log(res.msg);
-                }
-            }
-        })
-    }
-
-    // 浠诲姟鎸囦护涓嬪彂
-    function liftOperator(liftTaskMode) {
-        http.post(baseUrl+"/forkLift/operator/lift", {
-            liftNo: $('input[name="liftSelect"]:checked').val(),
-            liftTaskMode: liftTaskMode,
-            lev: $("#liftLev").val(),
-            sourceStaNo: $("#sourceStaNo").val(),
-            staNo: $("#staNo").val()
-        }, function (res) {
-            layer.msg(res.msg, {icon: 1});
-        });
-    }
-
-
-    // ------------------------------------------------------------------------------------------------
-
-    // 鎻愬崌鏈轰俊鎭〃鑾峰彇  ----- 琛ㄤ竴
-    function initliftStateTable(row) {
-        let line;
-        if (row === undefined){
-            let one = $('#lift-state-table thead').height();
-            let total = $('.lift-state').height();
-            let count = total / one;
-            count = parseInt(count) - 1;
-            liftStateTableBlankRows = count;
-            line = count;
-        } else {
-            line = row;
-        }
-        let html = "";
-        for (let i = 0; i < line; i ++){
-            html += " <tr>\n" +
-                "       <td></td>\n" +
-                "       <td></td>\n" +
-                "       <td></td>\n" +
-                "       <td></td>\n" +
-                "       <td></td>\n" +
-                "       <td></td>\n" +
-                "       <td></td>\n" +
-                "       <td></td>\n" +
-                "       <td></td>\n" +
-                "       <td></td>\n" +
-                "       <td></td>\n" +
-                "       <td></td>\n" +
-                "       <td></td>\n" +
-                "       <td></td>\n" +
-                "       <td></td>\n" +
-                "       <td></td>\n" +
-                "       <td></td>\n" +
-                "     </tr>\n";
-        }
-        $('#lift-state-table tbody').after(html);
-    }
-
-    // 鎻愬崌鏈烘暟鎹〃鑾峰彇  ----- 琛ㄤ簩
-    function initliftMsgTable(row) {
-        let line;
-        if (row === undefined){
-            let one = $('#lift-msg-table thead').height();
-            let total = $('.lift-msg').height();
-            let count = total / one;
-            count = parseInt(count) - 1;
-            liftMsgTableBlankRows = count;
-            line = count;
-        } else {
-            line = row;
-        }
-        let html = "";
-        for (let i = 0; i < line; i ++){
-            html += " <tr>\n" +
-                "       <td></td>\n" +
-                "       <td></td>\n" +
-                "       <td></td>\n" +
-                "       <td></td>\n" +
-                "       <td></td>\n" +
-                "       <td></td>\n" +
-                "       <td></td>\n" +
-                "       <td></td>\n" +
-                "       <td></td>\n" +
-                "       <td></td>\n" +
-                "       <td></td>\n" +
-                "       <td></td>\n" +
-                "       <td></td>\n" +
-                "       <td></td>\n" +
-                "       <td></td>\n" +
-                "     </tr>\n";
-        }
-        $('#lift-msg-table tbody').after(html);
-    }
-
-    // 鏃ュ織杈撳嚭妗�
-    function liftOutput(content){
-        liftOutputDom.value += content;
-        liftOutputDom.scrollTop = liftOutputDom.scrollHeight;
-    }
-
-    // 璇︽儏鎿嶄綔 -------------------------------------------------------------------------
-    var layerDetl;
-    $(document).on('dblclick ','#lift-msg-table tr', function () {
-        var liftNo = $(this).children("td").eq(0).html();
-        if (liftNo !== null && liftNo !== "") {
-            layerDetl = layer.open({
-                type: 1,
-                title: false,
-                shadeClose: true,
-                offset: 'rt',
-                anim: 5,
-                shade: [0],
-                area: ['340px', '255px'],
-                closeBtn: 0,
-                content: $("#lift-detl"),
-                success: function(layero, index){
-                    $.ajax({
-                        url: baseUrl+ "/forkLift/table/lift/msg",
-                        headers: {'token': localStorage.getItem('token')},
-                        method: 'POST',
-                        success: function (res) {
-                            if (res.code === 200){
-                                var table = res.data;
-                                for (var i=1;i<=table.length;i++){
-                                    if (liftNo == table[i-1].liftNo) {
-                                        $('#liftNo').val(liftNo);
-                                        $('#workNo').val(table[i-1].workNo);
-                                        $('#pakMk').val(table[i-1].pakMk);
-                                        $('#token').val(table[i-1].token);
-                                    }
-                                }
-                            } else if (res.code === 403){
-                                window.location.href = baseUrl+"/login";
-                            }  else {
-                                console.log(res.msg);
-                            }
-                        }
-                    });
-                },
-                end: function () {
-                    $('#liftNo').val("");
-                    $('#workNo').val("");
-                    $('#pakMk').val("");
-                    $('#token').val("");
-                }
-            })
-        }
-    });
-
-    $(document).on('click ','#cancel', function () {
-        $('#liftNo').val("");
-        $('#workNo').val("");
-        $('#pakMk').val("");
-        $('#token').val("");
-        layer.close(layerDetl);
-    })
-
-</script>

--
Gitblit v1.9.1