From 964a867a0e8a0814ecd7152a8ef1266f664a014b Mon Sep 17 00:00:00 2001
From: zhou zhou <3272660260@qq.com>
Date: 星期四, 11 十二月 2025 15:36:10 +0800
Subject: [PATCH] #

---
 src/main/webapp/static/js/basStationDetl/basStationDetl.js            |  300 +++
 src/main/java/com/zy/asrs/controller/TaskDetlController.java          |  125 +
 src/main/java/com/zy/asrs/entity/Task.java                            |  479 ++++
 src/main/java/com/zy/asrs/controller/MonitorController.java           |   58 
 src/main/java/com/zy/asrs/domain/dto/LedDTO.java                      |   17 
 pom.xml                                                               |    2 
 src/main/java/com/zy/asrs/service/BasStationService.java              |    8 
 src/main/java/com/zy/asrs/controller/BasStationDetlController.java    |  125 +
 src/main/java/com/zy/asrs/service/impl/TaskDetlServiceImpl.java       |   12 
 src/main/java/task.sql                                                |   18 
 src/main/java/taskDetl.sql                                            |   18 
 src/main/resources/mapper/BasStationDetlMapper.xml                    |   56 
 src/main/java/com/zy/asrs/controller/BasStationController.java        |  125 +
 src/main/java/com/zy/asrs/mapper/BasStationMapper.java                |   12 
 src/main/webapp/static/js/taskDetl/taskDetl.js                        |  306 +++
 src/main/java/com/zy/asrs/service/impl/TaskServiceImpl.java           |   12 
 src/main/java/basStationDetl.sql                                      |   18 
 src/main/java/com/zy/asrs/entity/BasStation.java                      |  376 +++
 src/main/java/com/zy/asrs/mapper/TaskDetlMapper.java                  |   12 
 src/main/webapp/static/js/task/task.js                                |  246 ++
 src/main/java/com/zy/asrs/service/BasStationDetlService.java          |    8 
 src/main/java/com/zy/asrs/entity/BasStationDetl.java                  |  472 ++++
 src/main/webapp/static/js/common.js                                   |    2 
 src/main/java/com/zy/asrs/timer/LedWebsocket.java                     |   27 
 src/main/java/com/zy/asrs/mapper/TaskMapper.java                      |   12 
 src/main/webapp/static/js/basStation/basStation.js                    |  295 +++
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java           |  313 ++-
 src/main/resources/mapper/TaskDetlMapper.xml                          |   57 
 src/main/webapp/views/task/task.html                                  |   92 
 src/main/java/com/zy/asrs/service/impl/BasStationServiceImpl.java     |   12 
 src/main/java/com/zy/asrs/service/impl/BasStationDetlServiceImpl.java |   12 
 src/main/webapp/views/basStationDetl/basStationDetl.html              |  391 ++++
 src/main/java/com/zy/asrs/controller/TaskController.java              |  125 +
 src/main/java/com/zy/core/model/LedSlave.java                         |    3 
 src/main/resources/mapper/TaskMapper.xml                              |   12 
 src/main/java/basStation.sql                                          |   18 
 src/main/java/com/zy/asrs/entity/TaskDetl.java                        |  491 +++++
 src/main/java/com/zy/asrs/service/TaskDetlService.java                |    8 
 src/main/java/com/zy/common/CodeBuilder.java                          |    4 
 src/main/webapp/views/basStation/basStation.html                      |  323 +++
 src/main/resources/mapper/BasStationMapper.xml                        |   46 
 src/main/webapp/views/taskDetl/taskDetl.html                          |  397 ++++
 src/main/java/com/zy/asrs/service/TaskService.java                    |    8 
 src/main/java/com/zy/asrs/mapper/BasStationDetlMapper.java            |   12 
 src/main/resources/application.yml                                    |  299 ---
 45 files changed, 5,306 insertions(+), 458 deletions(-)

diff --git a/pom.xml b/pom.xml
index 637f507..7df71c8 100644
--- a/pom.xml
+++ b/pom.xml
@@ -194,7 +194,7 @@
     </dependencies>
 
     <build>
-        <finalName>gtCrnWcs</finalName>
+        <finalName>wcs</finalName>
         <plugins>
             <plugin>
                 <groupId>org.springframework.boot</groupId>
diff --git a/src/main/java/basStation.sql b/src/main/java/basStation.sql
new file mode 100644
index 0000000..ac5c44f
--- /dev/null
+++ b/src/main/java/basStation.sql
@@ -0,0 +1,18 @@
+-- save basStation record
+-- mysql
+insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'basStation/basStation.html', 'basStation绠$悊', null , '2', null , '1');
+
+insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'basStation#view', '鏌ヨ', '', '3', '0', '1');
+insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'basStation#btn-add', '鏂板', '', '3', '1', '1');
+insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'basStation#btn-edit', '缂栬緫', '', '3', '2', '1');
+insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'basStation#btn-delete', '鍒犻櫎', '', '3', '3', '1');
+insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'basStation#btn-export', '瀵煎嚭', '', '3', '4', '1');
+
+-- sqlserver
+insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'basStation/basStation.html', N'basStation绠$悊', null, '2', null, '1');
+
+insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'basStation#view', N'鏌ヨ', '', '3', '0', '1');
+insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'basStation#btn-add', N'鏂板', '', '3', '1', '1');
+insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'basStation#btn-edit', N'缂栬緫', '', '3', '2', '1');
+insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'basStation#btn-delete', N'鍒犻櫎', '', '3', '3', '1');
+insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'basStation#btn-export', N'瀵煎嚭', '', '3', '4', '1');
diff --git a/src/main/java/basStationDetl.sql b/src/main/java/basStationDetl.sql
new file mode 100644
index 0000000..312b105
--- /dev/null
+++ b/src/main/java/basStationDetl.sql
@@ -0,0 +1,18 @@
+-- save basStationDetl record
+-- mysql
+insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'basStationDetl/basStationDetl.html', 'basStationDetl绠$悊', null , '2', null , '1');
+
+insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'basStationDetl#view', '鏌ヨ', '', '3', '0', '1');
+insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'basStationDetl#btn-add', '鏂板', '', '3', '1', '1');
+insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'basStationDetl#btn-edit', '缂栬緫', '', '3', '2', '1');
+insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'basStationDetl#btn-delete', '鍒犻櫎', '', '3', '3', '1');
+insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'basStationDetl#btn-export', '瀵煎嚭', '', '3', '4', '1');
+
+-- sqlserver
+insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'basStationDetl/basStationDetl.html', N'basStationDetl绠$悊', null, '2', null, '1');
+
+insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'basStationDetl#view', N'鏌ヨ', '', '3', '0', '1');
+insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'basStationDetl#btn-add', N'鏂板', '', '3', '1', '1');
+insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'basStationDetl#btn-edit', N'缂栬緫', '', '3', '2', '1');
+insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'basStationDetl#btn-delete', N'鍒犻櫎', '', '3', '3', '1');
+insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'basStationDetl#btn-export', N'瀵煎嚭', '', '3', '4', '1');
diff --git a/src/main/java/com/zy/asrs/controller/BasStationController.java b/src/main/java/com/zy/asrs/controller/BasStationController.java
new file mode 100644
index 0000000..da29fd5
--- /dev/null
+++ b/src/main/java/com/zy/asrs/controller/BasStationController.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.BasStation;
+import com.zy.asrs.service.BasStationService;
+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 BasStationController extends BaseController {
+
+    @Autowired
+    private BasStationService basStationService;
+
+    @RequestMapping(value = "/basStation/{id}/auth")
+    @ManagerAuth
+    public R get(@PathVariable("id") String id) {
+        return R.ok(basStationService.selectById(String.valueOf(id)));
+    }
+
+    @RequestMapping(value = "/basStation/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<BasStation> wrapper = new EntityWrapper<>();
+        excludeTrash(param);
+        convert(param, wrapper);
+        allLike(BasStation.class, param.keySet(), wrapper, condition);
+        if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));}
+        return R.ok(basStationService.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 = "/basStation/add/auth")
+    @ManagerAuth
+    public R add(BasStation basStation) {
+        basStationService.insert(basStation);
+        return R.ok();
+    }
+
+	@RequestMapping(value = "/basStation/update/auth")
+	@ManagerAuth
+    public R update(BasStation basStation){
+        if (Cools.isEmpty(basStation) || null==basStation.getId()){
+            return R.error();
+        }
+        basStationService.updateById(basStation);
+        return R.ok();
+    }
+
+    @RequestMapping(value = "/basStation/delete/auth")
+    @ManagerAuth
+    public R delete(@RequestParam(value="ids[]") Long[] ids){
+         for (Long id : ids){
+            basStationService.deleteById(id);
+        }
+        return R.ok();
+    }
+
+    @RequestMapping(value = "/basStation/export/auth")
+    @ManagerAuth
+    public R export(@RequestBody JSONObject param){
+        EntityWrapper<BasStation> wrapper = new EntityWrapper<>();
+        List<String> fields = JSONObject.parseArray(param.getJSONArray("fields").toJSONString(), String.class);
+        Map<String, Object> map = excludeTrash(param.getJSONObject("basStation"));
+        convert(map, wrapper);
+        List<BasStation> list = basStationService.selectList(wrapper);
+        return R.ok(exportSupport(list, fields));
+    }
+
+    @RequestMapping(value = "/basStationQuery/auth")
+    @ManagerAuth
+    public R query(String condition) {
+        EntityWrapper<BasStation> wrapper = new EntityWrapper<>();
+        wrapper.like("dev_no", condition);
+        Page<BasStation> page = basStationService.selectPage(new Page<>(0, 10), wrapper);
+        List<Map<String, Object>> result = new ArrayList<>();
+        for (BasStation basStation : page.getRecords()){
+            Map<String, Object> map = new HashMap<>();
+            map.put("id", basStation.getId());
+            map.put("value", basStation.getId());
+            result.add(map);
+        }
+        return R.ok(result);
+    }
+
+    @RequestMapping(value = "/basStation/check/column/auth")
+    @ManagerAuth
+    public R query(@RequestBody JSONObject param) {
+        Wrapper<BasStation> wrapper = new EntityWrapper<BasStation>().eq(humpToLine(String.valueOf(param.get("key"))), param.get("val"));
+        if (null != basStationService.selectOne(wrapper)){
+            return R.parse(BaseRes.REPEAT).add(getComment(BasStation.class, String.valueOf(param.get("key"))));
+        }
+        return R.ok();
+    }
+
+}
diff --git a/src/main/java/com/zy/asrs/controller/BasStationDetlController.java b/src/main/java/com/zy/asrs/controller/BasStationDetlController.java
new file mode 100644
index 0000000..20b15f9
--- /dev/null
+++ b/src/main/java/com/zy/asrs/controller/BasStationDetlController.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.BasStationDetl;
+import com.zy.asrs.service.BasStationDetlService;
+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 BasStationDetlController extends BaseController {
+
+    @Autowired
+    private BasStationDetlService basStationDetlService;
+
+    @RequestMapping(value = "/basStationDetl/{id}/auth")
+    @ManagerAuth
+    public R get(@PathVariable("id") String id) {
+        return R.ok(basStationDetlService.selectById(String.valueOf(id)));
+    }
+
+    @RequestMapping(value = "/basStationDetl/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<BasStationDetl> wrapper = new EntityWrapper<>();
+        excludeTrash(param);
+        convert(param, wrapper);
+        allLike(BasStationDetl.class, param.keySet(), wrapper, condition);
+        if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));}
+        return R.ok(basStationDetlService.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 = "/basStationDetl/add/auth")
+    @ManagerAuth
+    public R add(BasStationDetl basStationDetl) {
+        basStationDetlService.insert(basStationDetl);
+        return R.ok();
+    }
+
+	@RequestMapping(value = "/basStationDetl/update/auth")
+	@ManagerAuth
+    public R update(BasStationDetl basStationDetl){
+        if (Cools.isEmpty(basStationDetl) || null==basStationDetl.getId()){
+            return R.error();
+        }
+        basStationDetlService.updateById(basStationDetl);
+        return R.ok();
+    }
+
+    @RequestMapping(value = "/basStationDetl/delete/auth")
+    @ManagerAuth
+    public R delete(@RequestParam(value="ids[]") Long[] ids){
+         for (Long id : ids){
+            basStationDetlService.deleteById(id);
+        }
+        return R.ok();
+    }
+
+    @RequestMapping(value = "/basStationDetl/export/auth")
+    @ManagerAuth
+    public R export(@RequestBody JSONObject param){
+        EntityWrapper<BasStationDetl> wrapper = new EntityWrapper<>();
+        List<String> fields = JSONObject.parseArray(param.getJSONArray("fields").toJSONString(), String.class);
+        Map<String, Object> map = excludeTrash(param.getJSONObject("basStationDetl"));
+        convert(map, wrapper);
+        List<BasStationDetl> list = basStationDetlService.selectList(wrapper);
+        return R.ok(exportSupport(list, fields));
+    }
+
+    @RequestMapping(value = "/basStationDetlQuery/auth")
+    @ManagerAuth
+    public R query(String condition) {
+        EntityWrapper<BasStationDetl> wrapper = new EntityWrapper<>();
+        wrapper.like("id", condition);
+        Page<BasStationDetl> page = basStationDetlService.selectPage(new Page<>(0, 10), wrapper);
+        List<Map<String, Object>> result = new ArrayList<>();
+        for (BasStationDetl basStationDetl : page.getRecords()){
+            Map<String, Object> map = new HashMap<>();
+            map.put("id", basStationDetl.getId());
+            map.put("value", basStationDetl.getId());
+            result.add(map);
+        }
+        return R.ok(result);
+    }
+
+    @RequestMapping(value = "/basStationDetl/check/column/auth")
+    @ManagerAuth
+    public R query(@RequestBody JSONObject param) {
+        Wrapper<BasStationDetl> wrapper = new EntityWrapper<BasStationDetl>().eq(humpToLine(String.valueOf(param.get("key"))), param.get("val"));
+        if (null != basStationDetlService.selectOne(wrapper)){
+            return R.parse(BaseRes.REPEAT).add(getComment(BasStationDetl.class, String.valueOf(param.get("key"))));
+        }
+        return R.ok();
+    }
+
+}
diff --git a/src/main/java/com/zy/asrs/controller/MonitorController.java b/src/main/java/com/zy/asrs/controller/MonitorController.java
index fd0d5dc..0985cc2 100644
--- a/src/main/java/com/zy/asrs/controller/MonitorController.java
+++ b/src/main/java/com/zy/asrs/controller/MonitorController.java
@@ -22,6 +22,7 @@
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
+import javax.servlet.http.HttpServletRequest;
 import java.text.SimpleDateFormat;
 import java.util.*;
 
@@ -38,6 +39,23 @@
     private ReportQueryMapper reportQueryMapper;
     @Autowired
     private SlaveProperties slaveProperties;
+
+    @GetMapping("/getIpConfig")
+    public R getIpConfig(HttpServletRequest request) {
+        HashMap<String, String> map = new HashMap<>();
+        for (LedSlave slave : slaveProperties.getLed()) {
+            if (slave.getIp().equals(request.getRemoteAddr())) {
+
+                map.put("ledIp","127.0.0.1");
+                map.put("ledPort","8088");
+                map.put("ledUrl","wcs");
+                map.put("ledId",slave.getAgvStaArr().get(0));
+
+                break;
+            }
+        }
+        return R.ok(map);
+    }
 
     /**
      * 鑾峰彇褰撳墠鏃堕棿
@@ -281,46 +299,6 @@
         }
         return R.ok().add(errorMsg);
     }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
 
 
     /**
diff --git a/src/main/java/com/zy/asrs/controller/TaskController.java b/src/main/java/com/zy/asrs/controller/TaskController.java
new file mode 100644
index 0000000..ba0b172
--- /dev/null
+++ b/src/main/java/com/zy/asrs/controller/TaskController.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.Task;
+import com.zy.asrs.service.TaskService;
+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 TaskController extends BaseController {
+
+    @Autowired
+    private TaskService taskService;
+
+    @RequestMapping(value = "/task/{id}/auth")
+    @ManagerAuth
+    public R get(@PathVariable("id") String id) {
+        return R.ok(taskService.selectById(String.valueOf(id)));
+    }
+
+    @RequestMapping(value = "/task/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<Task> wrapper = new EntityWrapper<>();
+        excludeTrash(param);
+        convert(param, wrapper);
+        allLike(Task.class, param.keySet(), wrapper, condition);
+        if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));}
+        return R.ok(taskService.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 = "/task/add/auth")
+    @ManagerAuth
+    public R add(Task task) {
+        taskService.insert(task);
+        return R.ok();
+    }
+
+	@RequestMapping(value = "/task/update/auth")
+	@ManagerAuth
+    public R update(Task task){
+        if (Cools.isEmpty(task) || null==task.getId()){
+            return R.error();
+        }
+        taskService.updateById(task);
+        return R.ok();
+    }
+
+    @RequestMapping(value = "/task/delete/auth")
+    @ManagerAuth
+    public R delete(@RequestParam(value="ids[]") Long[] ids){
+         for (Long id : ids){
+            taskService.deleteById(id);
+        }
+        return R.ok();
+    }
+
+    @RequestMapping(value = "/task/export/auth")
+    @ManagerAuth
+    public R export(@RequestBody JSONObject param){
+        EntityWrapper<Task> wrapper = new EntityWrapper<>();
+        List<String> fields = JSONObject.parseArray(param.getJSONArray("fields").toJSONString(), String.class);
+        Map<String, Object> map = excludeTrash(param.getJSONObject("task"));
+        convert(map, wrapper);
+        List<Task> list = taskService.selectList(wrapper);
+        return R.ok(exportSupport(list, fields));
+    }
+
+    @RequestMapping(value = "/taskQuery/auth")
+    @ManagerAuth
+    public R query(String condition) {
+        EntityWrapper<Task> wrapper = new EntityWrapper<>();
+        wrapper.like("id", condition);
+        Page<Task> page = taskService.selectPage(new Page<>(0, 10), wrapper);
+        List<Map<String, Object>> result = new ArrayList<>();
+        for (Task task : page.getRecords()){
+            Map<String, Object> map = new HashMap<>();
+            map.put("id", task.getId());
+            map.put("value", task.getId());
+            result.add(map);
+        }
+        return R.ok(result);
+    }
+
+    @RequestMapping(value = "/task/check/column/auth")
+    @ManagerAuth
+    public R query(@RequestBody JSONObject param) {
+        Wrapper<Task> wrapper = new EntityWrapper<Task>().eq(humpToLine(String.valueOf(param.get("key"))), param.get("val"));
+        if (null != taskService.selectOne(wrapper)){
+            return R.parse(BaseRes.REPEAT).add(getComment(Task.class, String.valueOf(param.get("key"))));
+        }
+        return R.ok();
+    }
+
+}
diff --git a/src/main/java/com/zy/asrs/controller/TaskDetlController.java b/src/main/java/com/zy/asrs/controller/TaskDetlController.java
new file mode 100644
index 0000000..3085f45
--- /dev/null
+++ b/src/main/java/com/zy/asrs/controller/TaskDetlController.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.TaskDetl;
+import com.zy.asrs.service.TaskDetlService;
+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 TaskDetlController extends BaseController {
+
+    @Autowired
+    private TaskDetlService taskDetlService;
+
+    @RequestMapping(value = "/taskDetl/{id}/auth")
+    @ManagerAuth
+    public R get(@PathVariable("id") String id) {
+        return R.ok(taskDetlService.selectById(String.valueOf(id)));
+    }
+
+    @RequestMapping(value = "/taskDetl/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<TaskDetl> wrapper = new EntityWrapper<>();
+        excludeTrash(param);
+        convert(param, wrapper);
+        allLike(TaskDetl.class, param.keySet(), wrapper, condition);
+        if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));}
+        return R.ok(taskDetlService.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 = "/taskDetl/add/auth")
+    @ManagerAuth
+    public R add(TaskDetl taskDetl) {
+        taskDetlService.insert(taskDetl);
+        return R.ok();
+    }
+
+	@RequestMapping(value = "/taskDetl/update/auth")
+	@ManagerAuth
+    public R update(TaskDetl taskDetl){
+        if (Cools.isEmpty(taskDetl) || null==taskDetl.getId()){
+            return R.error();
+        }
+        taskDetlService.updateById(taskDetl);
+        return R.ok();
+    }
+
+    @RequestMapping(value = "/taskDetl/delete/auth")
+    @ManagerAuth
+    public R delete(@RequestParam(value="ids[]") Long[] ids){
+         for (Long id : ids){
+            taskDetlService.deleteById(id);
+        }
+        return R.ok();
+    }
+
+    @RequestMapping(value = "/taskDetl/export/auth")
+    @ManagerAuth
+    public R export(@RequestBody JSONObject param){
+        EntityWrapper<TaskDetl> wrapper = new EntityWrapper<>();
+        List<String> fields = JSONObject.parseArray(param.getJSONArray("fields").toJSONString(), String.class);
+        Map<String, Object> map = excludeTrash(param.getJSONObject("taskDetl"));
+        convert(map, wrapper);
+        List<TaskDetl> list = taskDetlService.selectList(wrapper);
+        return R.ok(exportSupport(list, fields));
+    }
+
+    @RequestMapping(value = "/taskDetlQuery/auth")
+    @ManagerAuth
+    public R query(String condition) {
+        EntityWrapper<TaskDetl> wrapper = new EntityWrapper<>();
+        wrapper.like("id", condition);
+        Page<TaskDetl> page = taskDetlService.selectPage(new Page<>(0, 10), wrapper);
+        List<Map<String, Object>> result = new ArrayList<>();
+        for (TaskDetl taskDetl : page.getRecords()){
+            Map<String, Object> map = new HashMap<>();
+            map.put("id", taskDetl.getId());
+            map.put("value", taskDetl.getId());
+            result.add(map);
+        }
+        return R.ok(result);
+    }
+
+    @RequestMapping(value = "/taskDetl/check/column/auth")
+    @ManagerAuth
+    public R query(@RequestBody JSONObject param) {
+        Wrapper<TaskDetl> wrapper = new EntityWrapper<TaskDetl>().eq(humpToLine(String.valueOf(param.get("key"))), param.get("val"));
+        if (null != taskDetlService.selectOne(wrapper)){
+            return R.parse(BaseRes.REPEAT).add(getComment(TaskDetl.class, String.valueOf(param.get("key"))));
+        }
+        return R.ok();
+    }
+
+}
diff --git a/src/main/java/com/zy/asrs/domain/dto/LedDTO.java b/src/main/java/com/zy/asrs/domain/dto/LedDTO.java
new file mode 100644
index 0000000..32c4cb0
--- /dev/null
+++ b/src/main/java/com/zy/asrs/domain/dto/LedDTO.java
@@ -0,0 +1,17 @@
+package com.zy.asrs.domain.dto;
+
+import com.zy.asrs.entity.WrkMast;
+import com.zy.core.model.command.LedCommand;
+import lombok.Data;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Data
+public class LedDTO {
+
+    // 鍛戒护闆嗗悎
+    List<LedCommand> commands = new ArrayList<>();
+    // 宸ヤ綔妗i泦鍚�
+    List<WrkMast> wrkMasts = new ArrayList<>();
+}
diff --git a/src/main/java/com/zy/asrs/entity/BasStation.java b/src/main/java/com/zy/asrs/entity/BasStation.java
new file mode 100644
index 0000000..225108b
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/BasStation.java
@@ -0,0 +1,376 @@
+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 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 io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import com.baomidou.mybatisplus.annotations.TableName;
+import java.io.Serializable;
+
+@Data
+@TableName("agv_bas_station")
+public class BasStation implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 涓婚敭
+     */
+    @ApiModelProperty(value= "涓婚敭")
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 缂栧彿
+     */
+    @ApiModelProperty(value= "缂栧彿")
+    @TableField("dev_no")
+    private String devNo;
+
+    /**
+     * 璁惧鎻忚堪
+     */
+    @ApiModelProperty(value= "璁惧鎻忚堪")
+    @TableField("dec_desc")
+    private String decDesc;
+
+    /**
+     * 澶囨敞
+     */
+    @ApiModelProperty(value= "澶囨敞")
+    @TableField("dev_mk")
+    private String devMk;
+
+    /**
+     * 鍙叆(checkBox)
+     */
+    @ApiModelProperty(value= "鍙叆(checkBox)")
+    @TableField("in_enable")
+    private String inEnable;
+
+    /**
+     * 鍙嚭(checkBox)
+     */
+    @ApiModelProperty(value= "鍙嚭(checkBox)")
+    @TableField("out_enable")
+    private String outEnable;
+
+    /**
+     * 鑷姩(checkBox)
+     */
+    @ApiModelProperty(value= "鑷姩(checkBox)")
+    private String autoing;
+
+    /**
+     * 鏈夌墿(checkBox)
+     */
+    @ApiModelProperty(value= "鏈夌墿(checkBox)")
+    private String loading;
+
+    @ApiModelProperty(value= "")
+    @TableField("loc_sts")
+    private String locSts;
+
+    /**
+     * 鑳藉叆(checkBox)
+     */
+    @ApiModelProperty(value= "鑳藉叆(checkBox)")
+    private String canining;
+
+    /**
+     * 鑳藉嚭(checkBox)
+     */
+    @ApiModelProperty(value= "鑳藉嚭(checkBox)")
+    private String canouting;
+
+    @ApiModelProperty(value= "")
+    private String fronting;
+
+    @ApiModelProperty(value= "")
+    private String rearing;
+
+    @ApiModelProperty(value= "")
+    private String uping;
+
+    @ApiModelProperty(value= "")
+    private String downing;
+
+    /**
+     * 宸ヤ綔鍙�
+     */
+    @ApiModelProperty(value= "宸ヤ綔鍙�")
+    @TableField("wrk_no")
+    private Integer wrkNo;
+
+    /**
+     * 瀹瑰櫒绫诲瀷
+     */
+    @ApiModelProperty(value= "瀹瑰櫒绫诲瀷")
+    @TableField("ctn_type")
+    private Integer ctnType;
+
+    /**
+     * 鏉″舰鐮�
+     */
+    @ApiModelProperty(value= "鏉″舰鐮�")
+    private String barcode;
+
+    @ApiModelProperty(value= "")
+    @TableField("in_qty")
+    private Integer inQty;
+
+    @ApiModelProperty(value= "")
+    private Integer row1;
+
+    @ApiModelProperty(value= "")
+    @TableField("io_time")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    private Date ioTime;
+
+    @ApiModelProperty(value= "")
+    @TableField("area_id")
+    private Long areaId;
+
+    @ApiModelProperty(value= "")
+    private String area;
+
+    @ApiModelProperty(value= "")
+    @TableField("in_ok")
+    private String inOk;
+
+    @ApiModelProperty(value= "")
+    @TableField("out_ok")
+    private String outOk;
+
+    /**
+     * 楂樹綆绫诲瀷 0: 鏈煡  1: 浣庡簱浣�  2: 楂樺簱浣�  
+     */
+    @ApiModelProperty(value= "楂樹綆绫诲瀷 0: 鏈煡  1: 浣庡簱浣�  2: 楂樺簱浣�  ")
+    @TableField("loc_type1")
+    private Short locType1;
+
+    /**
+     * 瀹界獎绫诲瀷 0: 鏈煡  1: 绐勫簱浣�  2: 瀹藉簱浣�  
+     */
+    @ApiModelProperty(value= "瀹界獎绫诲瀷 0: 鏈煡  1: 绐勫簱浣�  2: 瀹藉簱浣�  ")
+    @TableField("loc_type2")
+    private Short locType2;
+
+    /**
+     * 杞婚噸绫诲瀷 0: 鏈煡  1: 杞诲簱浣�  2: 閲嶅簱浣�  
+     */
+    @ApiModelProperty(value= "杞婚噸绫诲瀷 0: 鏈煡  1: 杞诲簱浣�  2: 閲嶅簱浣�  ")
+    @TableField("loc_type3")
+    private Short locType3;
+
+    /**
+     * 淇敼浜哄憳
+     */
+    @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;
+
+    @ApiModelProperty(value= "")
+    @TableField("std_qty")
+    private Double stdQty;
+
+    @ApiModelProperty(value= "")
+    @TableField("min_wt")
+    private Double minWt;
+
+    /**
+     * 閲嶉噺
+     */
+    @ApiModelProperty(value= "閲嶉噺")
+    @TableField("gross_wt")
+    private Double grossWt;
+
+    @ApiModelProperty(value= "")
+    @TableField("rcs_code")
+    private String rcsCode;
+
+    public BasStation() {}
+
+    public BasStation(String devNo,String decDesc,String devMk,String inEnable,String outEnable,String autoing,String loading,String locSts,String canining,String canouting,String fronting,String rearing,String uping,String downing,Integer wrkNo,Integer ctnType,String barcode,Integer inQty,Integer row1,Date ioTime,Long areaId,String area,String inOk,String outOk,Short locType1,Short locType2,Short locType3,Long modiUser,Date modiTime,Long appeUser,Date appeTime,Double stdQty,Double minWt,Double grossWt,String rcsCode) {
+        this.devNo = devNo;
+        this.decDesc = decDesc;
+        this.devMk = devMk;
+        this.inEnable = inEnable;
+        this.outEnable = outEnable;
+        this.autoing = autoing;
+        this.loading = loading;
+        this.locSts = locSts;
+        this.canining = canining;
+        this.canouting = canouting;
+        this.fronting = fronting;
+        this.rearing = rearing;
+        this.uping = uping;
+        this.downing = downing;
+        this.wrkNo = wrkNo;
+        this.ctnType = ctnType;
+        this.barcode = barcode;
+        this.inQty = inQty;
+        this.row1 = row1;
+        this.ioTime = ioTime;
+        this.areaId = areaId;
+        this.area = area;
+        this.inOk = inOk;
+        this.outOk = outOk;
+        this.locType1 = locType1;
+        this.locType2 = locType2;
+        this.locType3 = locType3;
+        this.modiUser = modiUser;
+        this.modiTime = modiTime;
+        this.appeUser = appeUser;
+        this.appeTime = appeTime;
+        this.stdQty = stdQty;
+        this.minWt = minWt;
+        this.grossWt = grossWt;
+        this.rcsCode = rcsCode;
+    }
+
+//    BasStation basStation = new BasStation(
+//            null,    // 缂栧彿[闈炵┖]
+//            null,    // 璁惧鎻忚堪
+//            null,    // 澶囨敞
+//            null,    // 鍙叆(checkBox)
+//            null,    // 鍙嚭(checkBox)
+//            null,    // 鑷姩(checkBox)
+//            null,    // 鏈夌墿(checkBox)
+//            null,    // 
+//            null,    // 鑳藉叆(checkBox)
+//            null,    // 鑳藉嚭(checkBox)
+//            null,    // 
+//            null,    // 
+//            null,    // 
+//            null,    // 
+//            null,    // 宸ヤ綔鍙�
+//            null,    // 瀹瑰櫒绫诲瀷
+//            null,    // 鏉″舰鐮�
+//            null,    // 
+//            null,    // 
+//            null,    // 
+//            null,    // 
+//            null,    // 
+//            null,    // 
+//            null,    // 
+//            null,    // 楂樹綆绫诲瀷
+//            null,    // 瀹界獎绫诲瀷
+//            null,    // 杞婚噸绫诲瀷
+//            null,    // 淇敼浜哄憳
+//            null,    // 淇敼鏃堕棿
+//            null,    // 鍒涘缓鑰�
+//            null,    // 娣诲姞鏃堕棿
+//            null,    // 
+//            null,    // 
+//            null,    // 閲嶉噺
+//            null    // 
+//    );
+
+    public String getIoTime$(){
+        if (Cools.isEmpty(this.ioTime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.ioTime);
+    }
+
+    public String getLocType1$(){
+        if (null == this.locType1){ return null; }
+        switch (this.locType1){
+            case 0:
+                return "鏈煡";
+            case 1:
+                return "浣庡簱浣�";
+            case 2:
+                return "楂樺簱浣�";
+            default:
+                return String.valueOf(this.locType1);
+        }
+    }
+
+    public String getLocType2$(){
+        if (null == this.locType2){ return null; }
+        switch (this.locType2){
+            case 0:
+                return "鏈煡";
+            case 1:
+                return "绐勫簱浣�";
+            case 2:
+                return "瀹藉簱浣�";
+            default:
+                return String.valueOf(this.locType2);
+        }
+    }
+
+    public String getLocType3$(){
+        if (null == this.locType3){ return null; }
+        switch (this.locType3){
+            case 0:
+                return "鏈煡";
+            case 1:
+                return "杞诲簱浣�";
+            case 2:
+                return "閲嶅簱浣�";
+            default:
+                return String.valueOf(this.locType3);
+        }
+    }
+
+
+
+    public String getModiTime$(){
+        if (Cools.isEmpty(this.modiTime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.modiTime);
+    }
+
+
+
+    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/BasStationDetl.java b/src/main/java/com/zy/asrs/entity/BasStationDetl.java
new file mode 100644
index 0000000..d544870
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/BasStationDetl.java
@@ -0,0 +1,472 @@
+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("agv_bas_station_detl")
+public class BasStationDetl implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value= "")
+    @TableId(value = "id", type = IdType.INPUT)
+    private Long id;
+
+    /**
+     * 绔欑偣缂栫爜
+     */
+    @ApiModelProperty(value= "绔欑偣缂栫爜")
+    @TableField("dev_no")
+    private String devNo;
+
+    /**
+     * 鏁伴噺
+     */
+    @ApiModelProperty(value= "鏁伴噺")
+    private Double anfme;
+
+    /**
+     * 鎵樼洏鏉$爜
+     */
+    @ApiModelProperty(value= "鎵樼洏鏉$爜")
+    private String zpallet;
+
+    /**
+     * 鍟嗗搧缂栧彿
+     */
+    @ApiModelProperty(value= "鍟嗗搧缂栧彿")
+    private String matnr;
+
+    /**
+     * 鍟嗗搧鍚嶇О
+     */
+    @ApiModelProperty(value= "鍟嗗搧鍚嶇О")
+    private String maktx;
+
+    /**
+     * 鎵瑰彿
+     */
+    @ApiModelProperty(value= "鎵瑰彿")
+    private String batch;
+
+    /**
+     * 鍗曟嵁缂栧彿
+     */
+    @ApiModelProperty(value= "鍗曟嵁缂栧彿")
+    @TableField("order_no")
+    private String orderNo;
+
+    /**
+     * 瑙勬牸
+     */
+    @ApiModelProperty(value= "瑙勬牸")
+    private String specs;
+
+    /**
+     * 鍨嬪彿
+     */
+    @ApiModelProperty(value= "鍨嬪彿")
+    private String model;
+
+    /**
+     * 棰滆壊
+     */
+    @ApiModelProperty(value= "棰滆壊")
+    private String color;
+
+    /**
+     * 鍝佺墝
+     */
+    @ApiModelProperty(value= "鍝佺墝")
+    private String brand;
+
+    /**
+     * 鍗曚綅
+     */
+    @ApiModelProperty(value= "鍗曚綅")
+    private String unit;
+
+    /**
+     * 鍗曚环
+     */
+    @ApiModelProperty(value= "鍗曚环")
+    private Double price;
+
+    /**
+     * sku
+     */
+    @ApiModelProperty(value= "sku")
+    private String sku;
+
+    /**
+     * 鍗曚綅閲�
+     */
+    @ApiModelProperty(value= "鍗曚綅閲�")
+    private Double units;
+
+    /**
+     * 鏉$爜
+     */
+    @ApiModelProperty(value= "鏉$爜")
+    private String barcode;
+
+    /**
+     * 浜у湴
+     */
+    @ApiModelProperty(value= "浜у湴")
+    private String origin;
+
+    /**
+     * 鍘傚
+     */
+    @ApiModelProperty(value= "鍘傚")
+    private String manu;
+
+    /**
+     * 鐢熶骇鏃ユ湡
+     */
+    @ApiModelProperty(value= "鐢熶骇鏃ユ湡")
+    @TableField("manu_date")
+    private String manuDate;
+
+    /**
+     * 鍝侀」鏁�
+     */
+    @ApiModelProperty(value= "鍝侀」鏁�")
+    @TableField("item_num")
+    private String itemNum;
+
+    /**
+     * 瀹夊叏搴撳瓨閲�
+     */
+    @ApiModelProperty(value= "瀹夊叏搴撳瓨閲�")
+    @TableField("safe_qty")
+    private Double safeQty;
+
+    /**
+     * 閲嶉噺
+     */
+    @ApiModelProperty(value= "閲嶉噺")
+    private Double weight;
+
+    /**
+     * 闀垮害
+     */
+    @ApiModelProperty(value= "闀垮害")
+    @TableField("man_length")
+    private Double manLength;
+
+    /**
+     * 浣撶Н
+     */
+    @ApiModelProperty(value= "浣撶Н")
+    private Double volume;
+
+    /**
+     * 涓夋柟缂栫爜
+     */
+    @ApiModelProperty(value= "涓夋柟缂栫爜")
+    @TableField("three_code")
+    private String threeCode;
+
+    /**
+     * 渚涘簲鍟�
+     */
+    @ApiModelProperty(value= "渚涘簲鍟�")
+    private String supp;
+
+    /**
+     * 渚涘簲鍟嗙紪鐮�
+     */
+    @ApiModelProperty(value= "渚涘簲鍟嗙紪鐮�")
+    @TableField("supp_code")
+    private String suppCode;
+
+    /**
+     * 鏄惁鎵规 1: 鏄�  0: 鍚�  
+     */
+    @ApiModelProperty(value= "鏄惁鎵规 1: 鏄�  0: 鍚�  ")
+    @TableField("be_batch")
+    private Integer beBatch;
+
+    /**
+     * 淇濊川鏈�
+     */
+    @ApiModelProperty(value= "淇濊川鏈�")
+    @TableField("dead_time")
+    private String deadTime;
+
+    /**
+     * 棰勮澶╂暟
+     */
+    @ApiModelProperty(value= "棰勮澶╂暟")
+    @TableField("dead_warn")
+    private Integer deadWarn;
+
+    /**
+     * 鍒惰喘 1: 鍒堕��  2: 閲囪喘  3: 澶栧崗  
+     */
+    @ApiModelProperty(value= "鍒惰喘 1: 鍒堕��  2: 閲囪喘  3: 澶栧崗  ")
+    private Integer source;
+
+    /**
+     * 瑕佹眰妫�楠� 1: 鏄�  0: 鍚�  
+     */
+    @ApiModelProperty(value= "瑕佹眰妫�楠� 1: 鏄�  0: 鍚�  ")
+    private Integer inspect;
+
+    /**
+     * 鍗遍櫓鍝� 1: 鏄�  0: 鍚�  
+     */
+    @ApiModelProperty(value= "鍗遍櫓鍝� 1: 鏄�  0: 鍚�  ")
+    private Integer danger;
+
+    /**
+     * 淇敼浜哄憳
+     */
+    @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;
+
+    /**
+     * 澶囨敞
+     */
+    @ApiModelProperty(value= "澶囨敞")
+    private String memo;
+
+    @ApiModelProperty(value= "")
+    @TableField("line_number")
+    private Long lineNumber;
+
+    @ApiModelProperty(value= "")
+    private String standby1;
+
+    @ApiModelProperty(value= "")
+    private String standby2;
+
+    @ApiModelProperty(value= "")
+    private String standby3;
+
+    @ApiModelProperty(value= "")
+    @TableField("box_type1")
+    private String boxType1;
+
+    @ApiModelProperty(value= "")
+    @TableField("box_type2")
+    private String boxType2;
+
+    @ApiModelProperty(value= "")
+    @TableField("box_type3")
+    private String boxType3;
+
+    public BasStationDetl() {}
+
+    public BasStationDetl(Long id,String devNo,Double anfme,String zpallet,String matnr,String maktx,String batch,String orderNo,String specs,String model,String color,String brand,String unit,Double price,String sku,Double units,String barcode,String origin,String manu,String manuDate,String itemNum,Double safeQty,Double weight,Double manLength,Double volume,String threeCode,String supp,String suppCode,Integer beBatch,String deadTime,Integer deadWarn,Integer source,Integer inspect,Integer danger,Long modiUser,Date modiTime,Long appeUser,Date appeTime,String memo,Long lineNumber,String standby1,String standby2,String standby3,String boxType1,String boxType2,String boxType3) {
+        this.id = id;
+        this.devNo = devNo;
+        this.anfme = anfme;
+        this.zpallet = zpallet;
+        this.matnr = matnr;
+        this.maktx = maktx;
+        this.batch = batch;
+        this.orderNo = orderNo;
+        this.specs = specs;
+        this.model = model;
+        this.color = color;
+        this.brand = brand;
+        this.unit = unit;
+        this.price = price;
+        this.sku = sku;
+        this.units = units;
+        this.barcode = barcode;
+        this.origin = origin;
+        this.manu = manu;
+        this.manuDate = manuDate;
+        this.itemNum = itemNum;
+        this.safeQty = safeQty;
+        this.weight = weight;
+        this.manLength = manLength;
+        this.volume = volume;
+        this.threeCode = threeCode;
+        this.supp = supp;
+        this.suppCode = suppCode;
+        this.beBatch = beBatch;
+        this.deadTime = deadTime;
+        this.deadWarn = deadWarn;
+        this.source = source;
+        this.inspect = inspect;
+        this.danger = danger;
+        this.modiUser = modiUser;
+        this.modiTime = modiTime;
+        this.appeUser = appeUser;
+        this.appeTime = appeTime;
+        this.memo = memo;
+        this.lineNumber = lineNumber;
+        this.standby1 = standby1;
+        this.standby2 = standby2;
+        this.standby3 = standby3;
+        this.boxType1 = boxType1;
+        this.boxType2 = boxType2;
+        this.boxType3 = boxType3;
+    }
+
+//    BasStationDetl basStationDetl = new BasStationDetl(
+//            null,    // [闈炵┖]
+//            null,    // 绔欑偣缂栫爜[闈炵┖]
+//            null,    // 鏁伴噺
+//            null,    // 鎵樼洏鏉$爜
+//            null,    // 鍟嗗搧缂栧彿[闈炵┖]
+//            null,    // 鍟嗗搧鍚嶇О
+//            null,    // 鎵瑰彿
+//            null,    // 鍗曟嵁缂栧彿
+//            null,    // 瑙勬牸
+//            null,    // 鍨嬪彿
+//            null,    // 棰滆壊
+//            null,    // 鍝佺墝
+//            null,    // 鍗曚綅
+//            null,    // 鍗曚环
+//            null,    // sku
+//            null,    // 鍗曚綅閲�
+//            null,    // 鏉$爜
+//            null,    // 浜у湴
+//            null,    // 鍘傚
+//            null,    // 鐢熶骇鏃ユ湡
+//            null,    // 鍝侀」鏁�
+//            null,    // 瀹夊叏搴撳瓨閲�
+//            null,    // 閲嶉噺
+//            null,    // 闀垮害
+//            null,    // 浣撶Н
+//            null,    // 涓夋柟缂栫爜
+//            null,    // 渚涘簲鍟�
+//            null,    // 渚涘簲鍟嗙紪鐮�
+//            null,    // 鏄惁鎵规
+//            null,    // 淇濊川鏈�
+//            null,    // 棰勮澶╂暟
+//            null,    // 鍒惰喘
+//            null,    // 瑕佹眰妫�楠�
+//            null,    // 鍗遍櫓鍝�
+//            null,    // 淇敼浜哄憳
+//            null,    // 淇敼鏃堕棿
+//            null,    // 娣诲姞浜哄憳
+//            null,    // 娣诲姞鏃堕棿
+//            null,    // 澶囨敞
+//            null,    // 
+//            null,    // 
+//            null,    // 
+//            null,    // 
+//            null,    // 
+//            null,    // 
+//            null    // 
+//    );
+
+    public String getBeBatch$(){
+        if (null == this.beBatch){ return null; }
+        switch (this.beBatch){
+            case 1:
+                return "鏄�";
+            case 0:
+                return "鍚�";
+            default:
+                return String.valueOf(this.beBatch);
+        }
+    }
+
+    public String getSource$(){
+        if (null == this.source){ return null; }
+        switch (this.source){
+            case 1:
+                return "鍒堕��";
+            case 2:
+                return "閲囪喘";
+            case 3:
+                return "澶栧崗";
+            default:
+                return String.valueOf(this.source);
+        }
+    }
+
+    public String getInspect$(){
+        if (null == this.inspect){ return null; }
+        switch (this.inspect){
+            case 1:
+                return "鏄�";
+            case 0:
+                return "鍚�";
+            default:
+                return String.valueOf(this.inspect);
+        }
+    }
+
+    public String getDanger$(){
+        if (null == this.danger){ return null; }
+        switch (this.danger){
+            case 1:
+                return "鏄�";
+            case 0:
+                return "鍚�";
+            default:
+                return String.valueOf(this.danger);
+        }
+    }
+
+
+
+    public String getModiTime$(){
+        if (Cools.isEmpty(this.modiTime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.modiTime);
+    }
+
+
+
+    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/Task.java b/src/main/java/com/zy/asrs/entity/Task.java
new file mode 100644
index 0000000..5f2f007
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/Task.java
@@ -0,0 +1,479 @@
+package com.zy.asrs.entity;
+
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+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.asrs.service.*;
+import com.zy.system.entity.User;
+import com.zy.system.service.UserService;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import com.baomidou.mybatisplus.annotations.TableName;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+@Data
+@TableName("agv_task")
+@Accessors(chain = true)
+public class Task implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value= "")
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 浠诲姟绫诲瀷锛� agv  , crn
+     */
+    @ApiModelProperty(value= "浠诲姟绫诲瀷锛� agv  , crn")
+    @TableField("task_type")
+    private String taskType;
+
+    /**
+     * 宸ヤ綔鍙�
+     */
+    @ApiModelProperty(value= "宸ヤ綔鍙�")
+    @TableField("wrk_no")
+    private Integer wrkNo;
+
+    @ApiModelProperty(value= "")
+    @TableField("inv_wh")
+    private String invWh;
+
+    @ApiModelProperty(value= "")
+    private Date ymd;
+
+    @ApiModelProperty(value= "")
+    private String mk;
+
+    @ApiModelProperty(value= "")
+    @TableField("whs_type")
+    private Integer whsType;
+
+    /**
+     * 宸ヤ綔鐘舵��
+     */
+    @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("sheet_no")
+    private String sheetNo;
+
+    /**
+     * 浼樺厛绾�
+     */
+    @ApiModelProperty(value= "浼樺厛绾�")
+    @TableField("io_pri")
+    private Double ioPri;
+
+    @ApiModelProperty(value= "")
+    @TableField("wrk_date")
+    private Date wrkDate;
+
+    /**
+     * 鐩爣搴撲綅
+     */
+    @ApiModelProperty(value= "鐩爣搴撲綅")
+    @TableField("loc_no")
+    private String locNo;
+
+    /**
+     * 鐩爣绔�
+     */
+    @ApiModelProperty(value= "鐩爣绔�")
+    @TableField("sta_no")
+    private String staNo;
+
+    /**
+     * 婧愮珯
+     */
+    @ApiModelProperty(value= "婧愮珯")
+    @TableField("source_sta_no")
+    private String sourceStaNo;
+
+    /**
+     * 婧愬簱浣�
+     */
+    @ApiModelProperty(value= "婧愬簱浣�")
+    @TableField("source_loc_no")
+    private String sourceLocNo;
+
+    @ApiModelProperty(value= "")
+    @TableField("loc_sts")
+    private String locSts;
+
+    /**
+     * 鎷f枡
+     */
+    @ApiModelProperty(value= "鎷f枡")
+    private String picking;
+
+    @ApiModelProperty(value= "")
+    @TableField("link_mis")
+    private String linkMis;
+
+    @ApiModelProperty(value= "")
+    @TableField("online_yn")
+    private String onlineYn;
+
+    @ApiModelProperty(value= "")
+    @TableField("upd_mk")
+    private String updMk;
+
+    /**
+     * 閫�鍑�
+     */
+    @ApiModelProperty(value= "閫�鍑�")
+    @TableField("exit_mk")
+    private String exitMk;
+
+    @ApiModelProperty(value= "")
+    @TableField("plt_type")
+    private Integer pltType;
+
+    /**
+     * 绌烘澘
+     */
+    @ApiModelProperty(value= "绌烘澘")
+    @TableField("empty_mk")
+    private String emptyMk;
+
+    /**
+     * 宸ヤ綔鏃堕棿
+     */
+    @ApiModelProperty(value= "宸ヤ綔鏃堕棿")
+    @TableField("io_time")
+    private Date ioTime;
+
+    @ApiModelProperty(value= "")
+    @TableField("ctn_type")
+    private Integer ctnType;
+
+    @ApiModelProperty(value= "")
+    private String packed;
+
+    @ApiModelProperty(value= "")
+    @TableField("ove_mk")
+    private String oveMk;
+
+    @ApiModelProperty(value= "")
+    @TableField("mtn_type")
+    private Double mtnType;
+
+    @ApiModelProperty(value= "")
+    @TableField("user_no")
+    private String userNo;
+
+    /**
+     * 鍫嗗灈鏈哄惎鍔ㄦ椂闂�
+     */
+    @ApiModelProperty(value= "鍫嗗灈鏈哄惎鍔ㄦ椂闂�")
+    @TableField("crn_str_time")
+    private Date crnStrTime;
+
+    /**
+     * 鍫嗗灈鏈哄仠姝㈡椂闂�
+     */
+    @ApiModelProperty(value= "鍫嗗灈鏈哄仠姝㈡椂闂�")
+    @TableField("crn_end_time")
+    private Date crnEndTime;
+
+    @ApiModelProperty(value= "")
+    @TableField("plc_str_time")
+    private Date plcStrTime;
+
+    @ApiModelProperty(value= "")
+    @TableField("crn_pos_time")
+    private Date crnPosTime;
+
+    @ApiModelProperty(value= "")
+    @TableField("load_time")
+    private Double loadTime;
+
+    @ApiModelProperty(value= "")
+    @TableField("exp_time")
+    private Double expTime;
+
+    @ApiModelProperty(value= "")
+    @TableField("ref_wrkno")
+    private Double refWrkno;
+
+    /**
+     * 鎷f枡鏃堕棿
+     */
+    @ApiModelProperty(value= "鎷f枡鏃堕棿")
+    @TableField("ref_iotime")
+    private Date refIotime;
+
+    /**
+     * 淇敼浜哄憳
+     */
+    @ApiModelProperty(value= "淇敼浜哄憳")
+    @TableField("modi_user")
+    private Long modiUser;
+
+    /**
+     * 淇敼鏃堕棿
+     */
+    @ApiModelProperty(value= "淇敼鏃堕棿")
+    @TableField("modi_time")
+    private Date modiTime;
+
+    /**
+     * 鍒涘缓鑰�
+     */
+    @ApiModelProperty(value= "鍒涘缓鑰�")
+    @TableField("appe_user")
+    private Long appeUser;
+
+    /**
+     * 娣诲姞鏃堕棿
+     */
+    @ApiModelProperty(value= "娣诲姞鏃堕棿")
+    @TableField("appe_time")
+    private Date appeTime;
+
+    @ApiModelProperty(value= "")
+    @TableField("pause_mk")
+    private String pauseMk;
+
+    @ApiModelProperty(value= "")
+    @TableField("error_time")
+    private Date errorTime;
+
+    @ApiModelProperty(value= "")
+    @TableField("error_memo")
+    private String errorMemo;
+
+    @ApiModelProperty(value= "")
+    @TableField("ctn_kind")
+    private Integer ctnKind;
+
+    @ApiModelProperty(value= "")
+    @TableField("manu_type")
+    private String manuType;
+
+    /**
+     * 澶囨敞
+     */
+    @ApiModelProperty(value= "澶囨敞")
+    private String memo;
+
+    @ApiModelProperty(value= "")
+    @TableField("sc_weight")
+    private Double scWeight;
+
+    @ApiModelProperty(value= "")
+    @TableField("log_mk")
+    private String logMk;
+
+    @ApiModelProperty(value= "")
+    @TableField("log_err_time")
+    private Date logErrTime;
+
+    @ApiModelProperty(value= "")
+    @TableField("log_err_memo")
+    private String logErrMemo;
+
+    /**
+     * 鏉$爜
+     */
+    @ApiModelProperty(value= "鏉$爜")
+    private String barcode;
+
+    // Y:閿�鍞鍗曞嚭搴撲换鍔�
+    @ApiModelProperty(value= "")
+    @TableField("Pdc_type")
+    private String PdcType;
+
+    @ApiModelProperty(value= "")
+    @TableField("ctn_no")
+    private String ctnNo;
+
+    /**
+     * 婊℃澘
+     */
+    @ApiModelProperty(value= "婊℃澘")
+    @TableField("full_plt")
+    private String fullPlt;
+
+    /**
+     * 鍏堝叆鍝� / 鍙岄噸鍏ュ簱
+     */
+    @ApiModelProperty(value= "鍏堝叆鍝�")
+    @TableField("pre_have")
+    private String preHave;
+
+    /**
+     * 绌烘搷浣� / 鍙栬揣鏃犵
+     */
+    @ApiModelProperty(value= "绌烘搷浣�")
+    @TableField("take_none")
+    private String takeNone;
+
+    public Task() {}
+
+    public String getYmd$(){
+        if (Cools.isEmpty(this.ymd)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.ymd);
+    }
+    public String getCrnNo$(){
+        BasCrnpService service = SpringUtils.getBean(BasCrnpService.class);
+        BasCrnp basCrnp = service.selectById(this.crnNo);
+        if (!Cools.isEmpty(basCrnp)){
+            return String.valueOf(basCrnp.getCrnNo());
+        }
+        return null;
+    }
+
+    public String getWrkDate$(){
+        if (Cools.isEmpty(this.wrkDate)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.wrkDate);
+    }
+
+    public String getLocNo$(){
+        LocMastService service = SpringUtils.getBean(LocMastService.class);
+        LocMast locMast = service.selectById(this.locNo);
+        if (!Cools.isEmpty(locMast)){
+            return String.valueOf(locMast.getLocNo());
+        }
+        return null;
+    }
+
+    public String getTaskType$(){
+        if (Cools.isEmpty(this.taskType)){return  null;}
+        if (taskType.equals("agv")) {
+            return "AGV浠诲姟";
+        } else {
+            return "鍫嗗灈鏈轰换鍔�";
+        }
+    }
+
+
+
+
+    public String getSourceLocNo$(){
+        LocMastService service = SpringUtils.getBean(LocMastService.class);
+        LocMast locMast = service.selectById(this.sourceLocNo);
+        if (!Cools.isEmpty(locMast)){
+            return String.valueOf(locMast.getLocNo());
+        }
+        return null;
+    }
+
+    public String getIoTime$(){
+        if (Cools.isEmpty(this.ioTime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.ioTime);
+    }
+
+    public String getCrnStrTime$(){
+        if (Cools.isEmpty(this.crnStrTime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.crnStrTime);
+    }
+
+    public String getCrnEndTime$(){
+        if (Cools.isEmpty(this.crnEndTime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.crnEndTime);
+    }
+
+    public String getPlcStrTime$(){
+        if (Cools.isEmpty(this.plcStrTime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.plcStrTime);
+    }
+
+    public String getCrnPosTime$(){
+        if (Cools.isEmpty(this.crnPosTime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.crnPosTime);
+    }
+
+    public String getRefIotime$(){
+        if (Cools.isEmpty(this.refIotime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.refIotime);
+    }
+
+    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);
+    }
+
+    public String getErrorTime$(){
+        if (Cools.isEmpty(this.errorTime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.errorTime);
+    }
+
+
+    public String getLogErrTime$(){
+        if (Cools.isEmpty(this.logErrTime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.logErrTime);
+    }
+}
diff --git a/src/main/java/com/zy/asrs/entity/TaskDetl.java b/src/main/java/com/zy/asrs/entity/TaskDetl.java
new file mode 100644
index 0000000..52c53a2
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/TaskDetl.java
@@ -0,0 +1,491 @@
+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 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 io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import com.baomidou.mybatisplus.annotations.TableName;
+import java.io.Serializable;
+
+@Data
+@TableName("agv_task_detl")
+public class TaskDetl implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value= "")
+    @TableId(value = "id", type = IdType.INPUT)
+    private Long id;
+
+    /**
+     * 宸ヤ綔鍙�
+     */
+    @ApiModelProperty(value= "宸ヤ綔鍙�")
+    @TableField("wrk_no")
+    private Integer wrkNo;
+
+    /**
+     * 宸ヤ綔鏃堕棿
+     */
+    @ApiModelProperty(value= "宸ヤ綔鏃堕棿")
+    @TableField("io_time")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    private Date ioTime;
+
+    /**
+     * 鏁伴噺
+     */
+    @ApiModelProperty(value= "鏁伴噺")
+    private Double anfme;
+
+    /**
+     * 鎵樼洏鏉$爜
+     */
+    @ApiModelProperty(value= "鎵樼洏鏉$爜")
+    private String zpallet;
+
+    /**
+     * 鍟嗗搧缂栧彿
+     */
+    @ApiModelProperty(value= "鍟嗗搧缂栧彿")
+    private String matnr;
+
+    /**
+     * 鍟嗗搧鍚嶇О
+     */
+    @ApiModelProperty(value= "鍟嗗搧鍚嶇О")
+    private String maktx;
+
+    /**
+     * 鎵瑰彿
+     */
+    @ApiModelProperty(value= "鎵瑰彿")
+    private String batch;
+
+    /**
+     * 鍗曟嵁缂栧彿
+     */
+    @ApiModelProperty(value= "鍗曟嵁缂栧彿")
+    @TableField("order_no")
+    private String orderNo;
+
+    /**
+     * 瑙勬牸
+     */
+    @ApiModelProperty(value= "瑙勬牸")
+    private String specs;
+
+    /**
+     * 鍨嬪彿
+     */
+    @ApiModelProperty(value= "鍨嬪彿")
+    private String model;
+
+    /**
+     * 棰滆壊
+     */
+    @ApiModelProperty(value= "棰滆壊")
+    private String color;
+
+    /**
+     * 鍝佺墝
+     */
+    @ApiModelProperty(value= "鍝佺墝")
+    private String brand;
+
+    /**
+     * 鍗曚綅
+     */
+    @ApiModelProperty(value= "鍗曚綅")
+    private String unit;
+
+    /**
+     * 鍗曚环
+     */
+    @ApiModelProperty(value= "鍗曚环")
+    private Double price;
+
+    /**
+     * sku
+     */
+    @ApiModelProperty(value= "sku")
+    private String sku;
+
+    /**
+     * 鍗曚綅閲�
+     */
+    @ApiModelProperty(value= "鍗曚綅閲�")
+    private Double units;
+
+    /**
+     * 鏉$爜
+     */
+    @ApiModelProperty(value= "鏉$爜")
+    private String barcode;
+
+    /**
+     * 浜у湴
+     */
+    @ApiModelProperty(value= "浜у湴")
+    private String origin;
+
+    /**
+     * 鍘傚
+     */
+    @ApiModelProperty(value= "鍘傚")
+    private String manu;
+
+    /**
+     * 鐢熶骇鏃ユ湡
+     */
+    @ApiModelProperty(value= "鐢熶骇鏃ユ湡")
+    @TableField("manu_date")
+    private String manuDate;
+
+    /**
+     * 鍝侀」鏁�
+     */
+    @ApiModelProperty(value= "鍝侀」鏁�")
+    @TableField("item_num")
+    private String itemNum;
+
+    /**
+     * 瀹夊叏搴撳瓨閲�
+     */
+    @ApiModelProperty(value= "瀹夊叏搴撳瓨閲�")
+    @TableField("safe_qty")
+    private Double safeQty;
+
+    /**
+     * 閲嶉噺
+     */
+    @ApiModelProperty(value= "閲嶉噺")
+    private Double weight;
+
+    /**
+     * 闀垮害
+     */
+    @ApiModelProperty(value= "闀垮害")
+    @TableField("man_length")
+    private Double manLength;
+
+    /**
+     * 浣撶Н
+     */
+    @ApiModelProperty(value= "浣撶Н")
+    private Double volume;
+
+    /**
+     * 涓夋柟缂栫爜
+     */
+    @ApiModelProperty(value= "涓夋柟缂栫爜")
+    @TableField("three_code")
+    private String threeCode;
+
+    /**
+     * 渚涘簲鍟�
+     */
+    @ApiModelProperty(value= "渚涘簲鍟�")
+    private String supp;
+
+    /**
+     * 渚涘簲鍟嗙紪鐮�
+     */
+    @ApiModelProperty(value= "渚涘簲鍟嗙紪鐮�")
+    @TableField("supp_code")
+    private String suppCode;
+
+    /**
+     * 鏄惁鎵规 1: 鏄�  0: 鍚�  
+     */
+    @ApiModelProperty(value= "鏄惁鎵规 1: 鏄�  0: 鍚�  ")
+    @TableField("be_batch")
+    private Integer beBatch;
+
+    /**
+     * 淇濊川鏈�
+     */
+    @ApiModelProperty(value= "淇濊川鏈�")
+    @TableField("dead_time")
+    private String deadTime;
+
+    /**
+     * 棰勮澶╂暟
+     */
+    @ApiModelProperty(value= "棰勮澶╂暟")
+    @TableField("dead_warn")
+    private Integer deadWarn;
+
+    /**
+     * 鍒惰喘 1: 鍒堕��  2: 閲囪喘  3: 澶栧崗  
+     */
+    @ApiModelProperty(value= "鍒惰喘 1: 鍒堕��  2: 閲囪喘  3: 澶栧崗  ")
+    private Integer source;
+
+    /**
+     * 瑕佹眰妫�楠� 1: 鏄�  0: 鍚�  
+     */
+    @ApiModelProperty(value= "瑕佹眰妫�楠� 1: 鏄�  0: 鍚�  ")
+    private Integer inspect;
+
+    /**
+     * 鍗遍櫓鍝� 1: 鏄�  0: 鍚�  
+     */
+    @ApiModelProperty(value= "鍗遍櫓鍝� 1: 鏄�  0: 鍚�  ")
+    private Integer danger;
+
+    /**
+     * 淇敼浜哄憳
+     */
+    @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;
+
+    /**
+     * 澶囨敞
+     */
+    @ApiModelProperty(value= "澶囨敞")
+    private String memo;
+
+    @ApiModelProperty(value= "")
+    @TableField("line_number")
+    private Long lineNumber;
+
+    @ApiModelProperty(value= "")
+    private String standby1;
+
+    @ApiModelProperty(value= "")
+    private String standby2;
+
+    @ApiModelProperty(value= "")
+    private String standby3;
+
+    @ApiModelProperty(value= "")
+    @TableField("box_type1")
+    private String boxType1;
+
+    @ApiModelProperty(value= "")
+    @TableField("box_type2")
+    private String boxType2;
+
+    @ApiModelProperty(value= "")
+    @TableField("box_type3")
+    private String boxType3;
+
+    public TaskDetl() {}
+
+    public TaskDetl(Long id,Integer wrkNo,Date ioTime,Double anfme,String zpallet,String matnr,String maktx,String batch,String orderNo,String specs,String model,String color,String brand,String unit,Double price,String sku,Double units,String barcode,String origin,String manu,String manuDate,String itemNum,Double safeQty,Double weight,Double manLength,Double volume,String threeCode,String supp,String suppCode,Integer beBatch,String deadTime,Integer deadWarn,Integer source,Integer inspect,Integer danger,Long modiUser,Date modiTime,Long appeUser,Date appeTime,String memo,Long lineNumber,String standby1,String standby2,String standby3,String boxType1,String boxType2,String boxType3) {
+        this.id = id;
+        this.wrkNo = wrkNo;
+        this.ioTime = ioTime;
+        this.anfme = anfme;
+        this.zpallet = zpallet;
+        this.matnr = matnr;
+        this.maktx = maktx;
+        this.batch = batch;
+        this.orderNo = orderNo;
+        this.specs = specs;
+        this.model = model;
+        this.color = color;
+        this.brand = brand;
+        this.unit = unit;
+        this.price = price;
+        this.sku = sku;
+        this.units = units;
+        this.barcode = barcode;
+        this.origin = origin;
+        this.manu = manu;
+        this.manuDate = manuDate;
+        this.itemNum = itemNum;
+        this.safeQty = safeQty;
+        this.weight = weight;
+        this.manLength = manLength;
+        this.volume = volume;
+        this.threeCode = threeCode;
+        this.supp = supp;
+        this.suppCode = suppCode;
+        this.beBatch = beBatch;
+        this.deadTime = deadTime;
+        this.deadWarn = deadWarn;
+        this.source = source;
+        this.inspect = inspect;
+        this.danger = danger;
+        this.modiUser = modiUser;
+        this.modiTime = modiTime;
+        this.appeUser = appeUser;
+        this.appeTime = appeTime;
+        this.memo = memo;
+        this.lineNumber = lineNumber;
+        this.standby1 = standby1;
+        this.standby2 = standby2;
+        this.standby3 = standby3;
+        this.boxType1 = boxType1;
+        this.boxType2 = boxType2;
+        this.boxType3 = boxType3;
+    }
+
+//    TaskDetl taskDetl = new TaskDetl(
+//            null,    // [闈炵┖]
+//            null,    // 宸ヤ綔鍙穂闈炵┖]
+//            null,    // 宸ヤ綔鏃堕棿
+//            null,    // 鏁伴噺
+//            null,    // 鎵樼洏鏉$爜
+//            null,    // 鍟嗗搧缂栧彿[闈炵┖]
+//            null,    // 鍟嗗搧鍚嶇О
+//            null,    // 鎵瑰彿
+//            null,    // 鍗曟嵁缂栧彿
+//            null,    // 瑙勬牸
+//            null,    // 鍨嬪彿
+//            null,    // 棰滆壊
+//            null,    // 鍝佺墝
+//            null,    // 鍗曚綅
+//            null,    // 鍗曚环
+//            null,    // sku
+//            null,    // 鍗曚綅閲�
+//            null,    // 鏉$爜
+//            null,    // 浜у湴
+//            null,    // 鍘傚
+//            null,    // 鐢熶骇鏃ユ湡
+//            null,    // 鍝侀」鏁�
+//            null,    // 瀹夊叏搴撳瓨閲�
+//            null,    // 閲嶉噺
+//            null,    // 闀垮害
+//            null,    // 浣撶Н
+//            null,    // 涓夋柟缂栫爜
+//            null,    // 渚涘簲鍟�
+//            null,    // 渚涘簲鍟嗙紪鐮�
+//            null,    // 鏄惁鎵规
+//            null,    // 淇濊川鏈�
+//            null,    // 棰勮澶╂暟
+//            null,    // 鍒惰喘
+//            null,    // 瑕佹眰妫�楠�
+//            null,    // 鍗遍櫓鍝�
+//            null,    // 淇敼浜哄憳
+//            null,    // 淇敼鏃堕棿
+//            null,    // 娣诲姞浜哄憳
+//            null,    // 娣诲姞鏃堕棿
+//            null,    // 澶囨敞
+//            null,    // 
+//            null,    // 
+//            null,    // 
+//            null,    // 
+//            null,    // 
+//            null,    // 
+//            null    // 
+//    );
+
+    public String getIoTime$(){
+        if (Cools.isEmpty(this.ioTime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.ioTime);
+    }
+
+    public String getBeBatch$(){
+        if (null == this.beBatch){ return null; }
+        switch (this.beBatch){
+            case 1:
+                return "鏄�";
+            case 0:
+                return "鍚�";
+            default:
+                return String.valueOf(this.beBatch);
+        }
+    }
+
+    public String getSource$(){
+        if (null == this.source){ return null; }
+        switch (this.source){
+            case 1:
+                return "鍒堕��";
+            case 2:
+                return "閲囪喘";
+            case 3:
+                return "澶栧崗";
+            default:
+                return String.valueOf(this.source);
+        }
+    }
+
+    public String getInspect$(){
+        if (null == this.inspect){ return null; }
+        switch (this.inspect){
+            case 1:
+                return "鏄�";
+            case 0:
+                return "鍚�";
+            default:
+                return String.valueOf(this.inspect);
+        }
+    }
+
+    public String getDanger$(){
+        if (null == this.danger){ return null; }
+        switch (this.danger){
+            case 1:
+                return "鏄�";
+            case 0:
+                return "鍚�";
+            default:
+                return String.valueOf(this.danger);
+        }
+    }
+
+
+
+    public String getModiTime$(){
+        if (Cools.isEmpty(this.modiTime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.modiTime);
+    }
+
+
+
+    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/mapper/BasStationDetlMapper.java b/src/main/java/com/zy/asrs/mapper/BasStationDetlMapper.java
new file mode 100644
index 0000000..67acd23
--- /dev/null
+++ b/src/main/java/com/zy/asrs/mapper/BasStationDetlMapper.java
@@ -0,0 +1,12 @@
+package com.zy.asrs.mapper;
+
+import com.zy.asrs.entity.BasStationDetl;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import org.springframework.stereotype.Repository;
+
+@Mapper
+@Repository
+public interface BasStationDetlMapper extends BaseMapper<BasStationDetl> {
+
+}
diff --git a/src/main/java/com/zy/asrs/mapper/BasStationMapper.java b/src/main/java/com/zy/asrs/mapper/BasStationMapper.java
new file mode 100644
index 0000000..9bb6da0
--- /dev/null
+++ b/src/main/java/com/zy/asrs/mapper/BasStationMapper.java
@@ -0,0 +1,12 @@
+package com.zy.asrs.mapper;
+
+import com.zy.asrs.entity.BasStation;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import org.springframework.stereotype.Repository;
+
+@Mapper
+@Repository
+public interface BasStationMapper extends BaseMapper<BasStation> {
+
+}
diff --git a/src/main/java/com/zy/asrs/mapper/TaskDetlMapper.java b/src/main/java/com/zy/asrs/mapper/TaskDetlMapper.java
new file mode 100644
index 0000000..891f5a0
--- /dev/null
+++ b/src/main/java/com/zy/asrs/mapper/TaskDetlMapper.java
@@ -0,0 +1,12 @@
+package com.zy.asrs.mapper;
+
+import com.zy.asrs.entity.TaskDetl;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import org.springframework.stereotype.Repository;
+
+@Mapper
+@Repository
+public interface TaskDetlMapper extends BaseMapper<TaskDetl> {
+
+}
diff --git a/src/main/java/com/zy/asrs/mapper/TaskMapper.java b/src/main/java/com/zy/asrs/mapper/TaskMapper.java
new file mode 100644
index 0000000..e3a33bc
--- /dev/null
+++ b/src/main/java/com/zy/asrs/mapper/TaskMapper.java
@@ -0,0 +1,12 @@
+package com.zy.asrs.mapper;
+
+import com.zy.asrs.entity.Task;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import org.springframework.stereotype.Repository;
+
+@Mapper
+@Repository
+public interface TaskMapper extends BaseMapper<Task> {
+
+}
diff --git a/src/main/java/com/zy/asrs/service/BasStationDetlService.java b/src/main/java/com/zy/asrs/service/BasStationDetlService.java
new file mode 100644
index 0000000..f57d444
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/BasStationDetlService.java
@@ -0,0 +1,8 @@
+package com.zy.asrs.service;
+
+import com.zy.asrs.entity.BasStationDetl;
+import com.baomidou.mybatisplus.service.IService;
+
+public interface BasStationDetlService extends IService<BasStationDetl> {
+
+}
diff --git a/src/main/java/com/zy/asrs/service/BasStationService.java b/src/main/java/com/zy/asrs/service/BasStationService.java
new file mode 100644
index 0000000..96eceb3
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/BasStationService.java
@@ -0,0 +1,8 @@
+package com.zy.asrs.service;
+
+import com.zy.asrs.entity.BasStation;
+import com.baomidou.mybatisplus.service.IService;
+
+public interface BasStationService extends IService<BasStation> {
+
+}
diff --git a/src/main/java/com/zy/asrs/service/TaskDetlService.java b/src/main/java/com/zy/asrs/service/TaskDetlService.java
new file mode 100644
index 0000000..97c6dde
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/TaskDetlService.java
@@ -0,0 +1,8 @@
+package com.zy.asrs.service;
+
+import com.zy.asrs.entity.TaskDetl;
+import com.baomidou.mybatisplus.service.IService;
+
+public interface TaskDetlService extends IService<TaskDetl> {
+
+}
diff --git a/src/main/java/com/zy/asrs/service/TaskService.java b/src/main/java/com/zy/asrs/service/TaskService.java
new file mode 100644
index 0000000..1525d66
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/TaskService.java
@@ -0,0 +1,8 @@
+package com.zy.asrs.service;
+
+import com.zy.asrs.entity.Task;
+import com.baomidou.mybatisplus.service.IService;
+
+public interface TaskService extends IService<Task> {
+
+}
diff --git a/src/main/java/com/zy/asrs/service/impl/BasStationDetlServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/BasStationDetlServiceImpl.java
new file mode 100644
index 0000000..97c6f78
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/impl/BasStationDetlServiceImpl.java
@@ -0,0 +1,12 @@
+package com.zy.asrs.service.impl;
+
+import com.zy.asrs.mapper.BasStationDetlMapper;
+import com.zy.asrs.entity.BasStationDetl;
+import com.zy.asrs.service.BasStationDetlService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+@Service("basStationDetlService")
+public class BasStationDetlServiceImpl extends ServiceImpl<BasStationDetlMapper, BasStationDetl> implements BasStationDetlService {
+
+}
diff --git a/src/main/java/com/zy/asrs/service/impl/BasStationServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/BasStationServiceImpl.java
new file mode 100644
index 0000000..272a9bd
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/impl/BasStationServiceImpl.java
@@ -0,0 +1,12 @@
+package com.zy.asrs.service.impl;
+
+import com.zy.asrs.mapper.BasStationMapper;
+import com.zy.asrs.entity.BasStation;
+import com.zy.asrs.service.BasStationService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+@Service("basStationService")
+public class BasStationServiceImpl extends ServiceImpl<BasStationMapper, BasStation> implements BasStationService {
+
+}
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 f05621a..656844d 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -7,6 +7,7 @@
 import com.core.common.Cools;
 import com.core.common.DateUtils;
 import com.core.exception.CoolException;
+import com.zy.asrs.domain.dto.LedDTO;
 import com.zy.asrs.domain.param.ForwardAGVTaskParam;
 import com.zy.asrs.entity.*;
 import com.zy.asrs.mapper.*;
@@ -97,6 +98,10 @@
     private OrderService orderService;
     @Autowired
     private OrderDetlService orderDetlService;
+    @Autowired
+    private BasStationService basStationService;
+    @Autowired
+    private BasStationDetlService basStationDetlService;
 
     @Resource
     private ApiLogService apiLogService;
@@ -1446,6 +1451,8 @@
                         ) {
                     News.warnNoLog(""+mark+" - 0"+" - 寮�濮嬫墽琛岋細绌烘爤鏉垮垵濮嬪寲鍏ュ簱,鍙夎溅鍏ュ簱绔欐斁璐�");
 
+                    String barcode = staProtocol.getBarcode();
+
                     try {
                         LocTypeDto locTypeDto = new LocTypeDto(staProtocol);
 
@@ -1453,6 +1460,7 @@
                         param.setIoType(10);
                         param.setSourceStaNo(emptyInSta.getStaNo());
                         param.setLocType1((short) 0);
+                        param.setBarcode(barcode);
                         String response = new HttpHandler.Builder()
                                 .setUri(wmsUrl)
                                 .setPath("/rpc/pakin/loc/v1")
@@ -1528,105 +1536,23 @@
         for (LedSlave led : slaveProperties.getLed()) {
             // 鑾峰彇杈撻�佺嚎plc绾跨▼
             DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, led.getDevpPlcId());
-            // 鍛戒护闆嗗悎
-            List<LedCommand> commands = new ArrayList<>();
-            // 宸ヤ綔妗i泦鍚�
-            List<WrkMast> wrkMasts = new ArrayList<>();
-            for (Integer staNo : led.getStaArr()) {
-                // 鑾峰彇鍙夎溅绔欑偣
-                StaProtocol staProtocol = devpThread.getStation().get(staNo);
-                if (null == staProtocol || null == staProtocol.getWorkNo() || 0 == staProtocol.getWorkNo() || staProtocol.workType == DevpWorkType.IDLE) {
-                    continue;
-                } else {
-                    staProtocol = staProtocol.clone();
-                }
-                // 鑾峰彇宸ヤ綔妗f暟鎹�
-                WrkMast wrkMast = wrkMastMapper.selectById(staProtocol.getWorkNo());
-                if (null == wrkMast) { continue; }
-                wrkMasts.add(wrkMast);
-                // 缁勮鍛戒护
-                LedCommand ledCommand = new LedCommand();
-                ledCommand.setWorkNo(wrkMast.getWrkNo());
-                ledCommand.setIoType(wrkMast.getIoType());
-                // 鍑哄簱妯″紡
-                switch (wrkMast.getIoType()) {
-                    case 1:
-                        ledCommand.setTitle("鍏ㄦ澘鍏ュ簱");
-                        break;
-                    case 10:
-                        ledCommand.setTitle("绌烘澘鍏ュ簱");
-                        break;
-                    case 101:
-                        ledCommand.setTitle("鍏ㄦ澘鍑哄簱");
-                        break;
-                    case 103:
-                        ledCommand.setTitle("鎷f枡鍑哄簱");
-                        break;
-                    case 104:
-                        ledCommand.setTitle("骞舵澘鍑哄簱");
-                        break;
-                    case 107:
-                        ledCommand.setTitle("鐩樼偣鍑哄簱");
-                        break;
-                    case 110:
-                        ledCommand.setTitle("绌烘澘鍑哄簱");
-                        ledCommand.setEmptyMk(true);
-                        break;
-                    default:
-                        News.error("浠诲姟鍏ュ嚭搴撶被鍨嬮敊璇紒锛侊紒[宸ヤ綔鍙凤細{}] [鍏ュ嚭搴撶被鍨嬶細{}]", wrkMast.getWrkNo(), wrkMast.getIoType());
-                        break;
-                }
-                ledCommand.setSourceLocNo(wrkMast.getSourceLocNo());
-                ledCommand.setStaNo(wrkMast.getStaNo());
-                ledCommand.setBarcode(wrkMast.getBarcode());
-                if (wrkMast.getIoType() != 110 && wrkMast.getIoType() != 10) {
-                    List<WrkDetl> wrkDetls =wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()));
-
-                    wrkDetls.forEach(wrkDetl -> {
-                        Double total = 0.0;
-                        EntityWrapper<LocDetl> wrapper = new EntityWrapper<>();
-                        LocDetl locDetl = locDetlService.selectOne(wrapper.eq("zpallet", wrkDetl.getZpallet()).eq("matnr", wrkDetl.getMatnr()));
-                        if (Cools.isEmpty(locDetl)) {
-                            total = wrkDetl.getAnfme();
-                        } else {
-                            total = locDetl.getAnfme();
-                        }
-                        if (!Cools.isEmpty(wrkDetl.getOrderNo())){
-                            OrderDetl orderDetl = orderDetlService.selectOne(new EntityWrapper<OrderDetl>().eq("order_no", wrkDetl.getOrderNo())
-                                    .eq("matnr", wrkDetl.getMatnr()).eq("batch", wrkDetl.getBatch()));
-                            if (wrkMast.getIoType() == 101 || wrkMast.getIoType() == 1) {
-                                ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getBatch(), wrkDetl.getSpecs(), wrkDetl.getManu(), wrkDetl.getMemo(), wrkDetl.getAnfme(),total,orderDetl.getTemp1(),orderDetl.getTemp2()));
-                            }
-                            if (wrkMast.getIoType() == 103 && (null == wrkDetl.getInspect() || 0 == wrkDetl.getInspect())) {
-                                ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getBatch(), wrkDetl.getSpecs(), wrkDetl.getManu(), wrkDetl.getMemo(), wrkDetl.getAnfme(),total,orderDetl.getTemp1(),orderDetl.getTemp2()));
-                            }
-                            if (wrkMast.getIoType() == 107 || wrkMast.getIoType() == 104) {
-                                ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getBatch(), wrkDetl.getSpecs(), wrkDetl.getManu(), wrkDetl.getMemo(), wrkDetl.getAnfme(),total,orderDetl.getTemp1(),orderDetl.getTemp2()));
-                            }
-                        }else {
-                            if (wrkMast.getIoType() == 101 || wrkMast.getIoType() == 1) {
-                                ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getBatch(), wrkDetl.getSpecs(), wrkDetl.getManu(), wrkDetl.getMemo(), wrkDetl.getAnfme(),total));
-                            }
-                            if (wrkMast.getIoType() == 103 && (null == wrkDetl.getInspect() || 0 == wrkDetl.getInspect())) {
-                                ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getBatch(), wrkDetl.getSpecs(), wrkDetl.getManu(), wrkDetl.getMemo(), wrkDetl.getAnfme(),total));
-                            }
-                            if (wrkMast.getIoType() == 107 || wrkMast.getIoType() == 104) {
-                                ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getBatch(), wrkDetl.getSpecs(), wrkDetl.getManu(), wrkDetl.getMemo(), wrkDetl.getAnfme(),total));
-                            }
-                        }
-
-
-                    });
-                }
-                commands.add(ledCommand);
+            LedDTO ledDTO =  new LedDTO();
+            if (!led.getStaArr().isEmpty()) {
+                ledDTO = getstaCommands(led.getStaArr(), devpThread);
+            }else {
+                ledDTO = getAgvStaCommands(led.getAgvStaArr());
             }
+            // 鍛戒护闆嗗悎
+            List<LedCommand> commands = ledDTO.getCommands();
+            // 宸ヤ綔妗i泦鍚�
+            List<WrkMast> wrkMasts = ledDTO.getWrkMasts();
             Set<Integer> workNos = wrkMasts.stream().map(WrkMast::getWrkNo).collect(Collectors.toSet());
             // 鑾峰彇LED绾跨▼
             LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, led.getId());
             // 鐩稿悓宸ヤ綔鍙烽泦鍚堝垯杩囨护
-            if (CollectionUtils.equals(ledThread.getWorkNos(), workNos)) {
-                continue;
-            }
+//            if (CollectionUtils.equals(ledThread.getWorkNos(), workNos)) {
+//                continue;
+//            }
             // 鍛戒护涓嬪彂 -------------------------------------------------------------------------------
             if (!commands.isEmpty()) {
                 if (!MessageQueue.offer(SlaveType.Led, led.getId(), new Task(1, commands))) {
@@ -1656,6 +1582,139 @@
         }
     }
 
+    public LedDTO getstaCommands(List<Integer> staArr, DevpThread devpThread ) {
+        LedDTO ledDTO = new LedDTO();
+        List<LedCommand> commands = new ArrayList<>();
+        // 宸ヤ綔妗i泦鍚�
+        List<WrkMast> wrkMasts = new ArrayList<>();
+        for (Integer staNo : staArr) {
+            // 鑾峰彇鍙夎溅绔欑偣
+            StaProtocol staProtocol = devpThread.getStation().get(staNo);
+            if (null == staProtocol || null == staProtocol.getWorkNo() || 0 == staProtocol.getWorkNo() || staProtocol.workType == DevpWorkType.IDLE) {
+                continue;
+            } else {
+                staProtocol = staProtocol.clone();
+            }
+            // 鑾峰彇宸ヤ綔妗f暟鎹�
+            WrkMast wrkMast = wrkMastMapper.selectById(staProtocol.getWorkNo());
+            if (null == wrkMast) { continue; }
+            wrkMasts.add(wrkMast);
+            // 缁勮鍛戒护
+            LedCommand ledCommand = new LedCommand();
+            ledCommand.setWorkNo(wrkMast.getWrkNo());
+            ledCommand.setIoType(wrkMast.getIoType());
+            // 鍑哄簱妯″紡
+            switch (wrkMast.getIoType()) {
+                case 1:
+                    ledCommand.setTitle("鍏ㄦ澘鍏ュ簱");
+                    break;
+                case 10:
+                    ledCommand.setTitle("绌烘澘鍏ュ簱");
+                    break;
+                case 101:
+                    ledCommand.setTitle("鍏ㄦ澘鍑哄簱");
+                    break;
+                case 103:
+                    ledCommand.setTitle("鎷f枡鍑哄簱");
+                    break;
+                case 104:
+                    ledCommand.setTitle("骞舵澘鍑哄簱");
+                    break;
+                case 107:
+                    ledCommand.setTitle("鐩樼偣鍑哄簱");
+                    break;
+                case 110:
+                    ledCommand.setTitle("绌烘澘鍑哄簱");
+                    ledCommand.setEmptyMk(true);
+                    break;
+                default:
+                    News.error("浠诲姟鍏ュ嚭搴撶被鍨嬮敊璇紒锛侊紒[宸ヤ綔鍙凤細{}] [鍏ュ嚭搴撶被鍨嬶細{}]", wrkMast.getWrkNo(), wrkMast.getIoType());
+                    break;
+            }
+            ledCommand.setSourceLocNo(wrkMast.getSourceLocNo());
+            ledCommand.setStaNo(wrkMast.getStaNo());
+            ledCommand.setBarcode(wrkMast.getBarcode());
+            if (wrkMast.getIoType() != 110 && wrkMast.getIoType() != 10) {
+                List<WrkDetl> wrkDetls =wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()));
+
+                wrkDetls.forEach(wrkDetl -> {
+                    Double total = 0.0;
+                    EntityWrapper<LocDetl> wrapper = new EntityWrapper<>();
+                    LocDetl locDetl = locDetlService.selectOne(wrapper.eq("zpallet", wrkDetl.getZpallet()).eq("matnr", wrkDetl.getMatnr()));
+                    if (Cools.isEmpty(locDetl)) {
+                        total = wrkDetl.getAnfme();
+                    } else {
+                        total = locDetl.getAnfme();
+                    }
+                    if (!Cools.isEmpty(wrkDetl.getOrderNo())){
+                        OrderDetl orderDetl = orderDetlService.selectOne(new EntityWrapper<OrderDetl>().eq("order_no", wrkDetl.getOrderNo())
+                                .eq("matnr", wrkDetl.getMatnr()).eq("batch", wrkDetl.getBatch()));
+                        if (wrkMast.getIoType() == 101 || wrkMast.getIoType() == 1) {
+                            ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getBatch(), wrkDetl.getSpecs(), wrkDetl.getManu(), wrkDetl.getMemo(), wrkDetl.getAnfme(),total,orderDetl.getTemp1(),orderDetl.getTemp2()));
+                        }
+                        if (wrkMast.getIoType() == 103 && (null == wrkDetl.getInspect() || 0 == wrkDetl.getInspect())) {
+                            ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getBatch(), wrkDetl.getSpecs(), wrkDetl.getManu(), wrkDetl.getMemo(), wrkDetl.getAnfme(),total,orderDetl.getTemp1(),orderDetl.getTemp2()));
+                        }
+                        if (wrkMast.getIoType() == 107 || wrkMast.getIoType() == 104) {
+                            ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getBatch(), wrkDetl.getSpecs(), wrkDetl.getManu(), wrkDetl.getMemo(), wrkDetl.getAnfme(),total,orderDetl.getTemp1(),orderDetl.getTemp2()));
+                        }
+                    }else {
+                        if (wrkMast.getIoType() == 101 || wrkMast.getIoType() == 1) {
+                            ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getBatch(), wrkDetl.getSpecs(), wrkDetl.getManu(), wrkDetl.getMemo(), wrkDetl.getAnfme(),total));
+                        }
+                        if (wrkMast.getIoType() == 103 && (null == wrkDetl.getInspect() || 0 == wrkDetl.getInspect())) {
+                            ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getBatch(), wrkDetl.getSpecs(), wrkDetl.getManu(), wrkDetl.getMemo(), wrkDetl.getAnfme(),total));
+                        }
+                        if (wrkMast.getIoType() == 107 || wrkMast.getIoType() == 104) {
+                            ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getBatch(), wrkDetl.getSpecs(), wrkDetl.getManu(), wrkDetl.getMemo(), wrkDetl.getAnfme(),total));
+                        }
+                    }
+
+
+                });
+            }
+            commands.add(ledCommand);
+        }
+        ledDTO.setCommands(commands);
+        ledDTO.setWrkMasts(wrkMasts);
+        return ledDTO;
+    }
+
+    public LedDTO getAgvStaCommands(List<String> agvStaArr ) {
+        LedDTO ledDTO = new LedDTO();
+        List<LedCommand> commands = new ArrayList<>();
+        // 宸ヤ綔妗i泦鍚�
+        List<BasStation> basStations = new ArrayList<>();
+        for (String staNo : agvStaArr) {
+            // 鑾峰彇宸ヤ綔妗f暟鎹�
+            BasStation station = basStationService.selectOne(new EntityWrapper<BasStation>().eq("dev_no", staNo));
+            if (null == station || !station.getLocSts().equals("F")) { continue; }
+            basStations.add(station);
+            // 缁勮鍛戒护
+            LedCommand ledCommand = new LedCommand();
+            ledCommand.setTitle("鍦ㄧ珯淇℃伅");
+            ledCommand.setSourceLocNo(station.getDevNo());
+            ledCommand.setBarcode(station.getBarcode());
+
+            List<BasStationDetl> basStationDetls = basStationDetlService.selectList(new EntityWrapper<BasStationDetl>().eq("dev_no", station.getDevNo()));
+
+            basStationDetls.forEach(basStationDetl -> {
+                Double total = 0.0;
+                total = basStationDetl.getAnfme();
+
+                ledCommand.getMatDtos().add(new MatDto(basStationDetl.getMatnr(), basStationDetl.getMaktx(), basStationDetl.getBatch(), basStationDetl.getSpecs(), basStationDetl.getManu(), basStationDetl.getMemo(), basStationDetl.getAnfme(),total,basStationDetl.getStandby1(),null));
+
+
+
+
+            });
+
+            commands.add(ledCommand);
+        }
+        ledDTO.setCommands(commands);
+        return ledDTO;
+    }
+
     /**
      * 鍏朵粬  ===>> LED鏄剧ず鍣ㄥ浣嶏紝鏄剧ず榛樿淇℃伅
      */
@@ -1663,28 +1722,54 @@
         for (LedSlave led : slaveProperties.getLed()) {
             // 鑾峰彇杈撻�佺嚎plc绾跨▼
             DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, led.getDevpPlcId());
-            // 鍛戒护闆嗗悎
-            boolean reset = true;
-            for (Integer staNo : led.getStaArr()) {
-                // 鑾峰彇鍙夎溅绔欑偣
-                StaProtocol staProtocol = devpThread.getStation().get(staNo);
-                if (staProtocol == null) { continue; }
-                if (staProtocol.getWorkNo() != 0 || staProtocol.isErr()) {
-                    reset = false;
-                    break;
+            if (!led.getStaArr().isEmpty()){
+                // 鍛戒护闆嗗悎
+                boolean reset = true;
+                for (Integer staNo : led.getStaArr()) {
+                    // 鑾峰彇鍙夎溅绔欑偣
+                    StaProtocol staProtocol = devpThread.getStation().get(staNo);
+                    if (staProtocol == null) { continue; }
+                    if (staProtocol.getWorkNo() != 0 || staProtocol.isErr()) {
+                        reset = false;
+                        break;
+                    }
+                }
+                // 鑾峰彇led绾跨▼
+                LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, led.getId());
+                // led鏄剧ず榛樿鍐呭
+                if (reset) {
+                    if (ledThread == null) {
+                        continue;
+                    }
+                    if (!MessageQueue.offer(SlaveType.Led, led.getId(), new Task(2, new ArrayList<>()))) {
+                        News.error("{}鍙稬ED鏄剧ず榛樿鍛戒护涓嬪彂澶辫触锛侊紒锛乕ip锛歿}] [port锛歿}]", led.getId(), led.getIp(), led.getPort());
+                    }
+                }
+            }else {
+                // 鍛戒护闆嗗悎
+                boolean reset = false;
+                for (String staNo : led.getAgvStaArr()) {
+                    // 鑾峰彇鍙夎溅绔欑偣
+                    BasStation station = basStationService.selectOne(new EntityWrapper<BasStation>().eq("dev_no", staNo));
+                    if (null == station) { continue; }
+                    if (station.getLocSts().equals("O")) {
+                        reset = true;
+                        break;
+                    }
+                }
+                // 鑾峰彇led绾跨▼
+                LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, led.getId());
+                // led鏄剧ず榛樿鍐呭
+                if (reset) {
+                    if (ledThread == null) {
+                        continue;
+                    }
+                    if (!MessageQueue.offer(SlaveType.Led, led.getId(), new Task(2, new ArrayList<>()))) {
+                        News.error("{}鍙稬ED鏄剧ず榛樿鍛戒护涓嬪彂澶辫触锛侊紒锛乕ip锛歿}] [port锛歿}]", led.getId(), led.getIp(), led.getPort());
+                    }
                 }
             }
-            // 鑾峰彇led绾跨▼
-            LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, led.getId());
-            // led鏄剧ず榛樿鍐呭
-            if (reset) {
-                if (ledThread == null) {
-                    continue;
-                }
-                if (!MessageQueue.offer(SlaveType.Led, led.getId(), new Task(2, new ArrayList<>()))) {
-                    News.error("{}鍙稬ED鏄剧ず榛樿鍛戒护涓嬪彂澶辫触锛侊紒锛乕ip锛歿}] [port锛歿}]", led.getId(), led.getIp(), led.getPort());
-                }
-            }
+
         }
     }
 
diff --git a/src/main/java/com/zy/asrs/service/impl/TaskDetlServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/TaskDetlServiceImpl.java
new file mode 100644
index 0000000..39a2b73
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/impl/TaskDetlServiceImpl.java
@@ -0,0 +1,12 @@
+package com.zy.asrs.service.impl;
+
+import com.zy.asrs.mapper.TaskDetlMapper;
+import com.zy.asrs.entity.TaskDetl;
+import com.zy.asrs.service.TaskDetlService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+@Service("taskDetlService")
+public class TaskDetlServiceImpl extends ServiceImpl<TaskDetlMapper, TaskDetl> implements TaskDetlService {
+
+}
diff --git a/src/main/java/com/zy/asrs/service/impl/TaskServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/TaskServiceImpl.java
new file mode 100644
index 0000000..68b9ca5
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/impl/TaskServiceImpl.java
@@ -0,0 +1,12 @@
+package com.zy.asrs.service.impl;
+
+import com.zy.asrs.mapper.TaskMapper;
+import com.zy.asrs.entity.Task;
+import com.zy.asrs.service.TaskService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+@Service("taskService")
+public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task> implements TaskService {
+
+}
diff --git a/src/main/java/com/zy/asrs/timer/LedWebsocket.java b/src/main/java/com/zy/asrs/timer/LedWebsocket.java
index 48d44ab..d2324eb 100644
--- a/src/main/java/com/zy/asrs/timer/LedWebsocket.java
+++ b/src/main/java/com/zy/asrs/timer/LedWebsocket.java
@@ -151,9 +151,17 @@
         for (LedSlave slave : slaveProperties.getLed()) {
                 LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, slave.getId());
                 if (null != ledThread) {
-                    map.put("to",slave.getStaArr().get(0).toString());
-                    map.put("message",Cools.add("type", "error").add("errMsg",ledThread.getErrorMsg().toString()));
-                    webSocketServer.onMessage(JSONObject.toJSONString(map),null,slave.getStaArr().get(0).toString());
+                    if (!slave.getStaArr().isEmpty()){
+                        map.put("to",slave.getStaArr().get(0).toString());
+                        map.put("message",Cools.add("type", "error").add("errMsg",ledThread.getErrorMsg().toString()));
+                        webSocketServer.onMessage(JSONObject.toJSONString(map),null,slave.getStaArr().get(0).toString());
+                    }else {
+                        map.put("to",slave.getAgvStaArr().get(0));
+                        map.put("message",Cools.add("type", "error").add("errMsg",ledThread.getErrorMsg().toString()));
+                        webSocketServer.onMessage(JSONObject.toJSONString(map),null,slave.getAgvStaArr().get(0));
+                    }
+
+
                 }
 
         }
@@ -166,9 +174,16 @@
         for (LedSlave slave : slaveProperties.getLed()) {
                 LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, slave.getId());
                 if (null != ledThread) {
-                    map.put("to",slave.getStaArr().get(0).toString());
-                    map.put("message",Cools.add("type", "task").add("taskList",ledThread.getCommandList()));
-                    webSocketServer.onMessage(JSONObject.toJSONString(map),null,slave.getStaArr().get(0).toString());
+                    if (!slave.getStaArr().isEmpty()){
+                        map.put("to",slave.getStaArr().get(0).toString());
+                        map.put("message",Cools.add("type", "task").add("taskList",ledThread.getCommandList()));
+                        webSocketServer.onMessage(JSONObject.toJSONString(map),null,slave.getStaArr().get(0).toString());
+                    }else {
+                        map.put("to",slave.getAgvStaArr().get(0));
+                        map.put("message",Cools.add("type", "task").add("taskList",ledThread.getCommandList()));
+                        webSocketServer.onMessage(JSONObject.toJSONString(map),null,slave.getAgvStaArr().get(0));
+                    }
+
                 }
 
         }
diff --git a/src/main/java/com/zy/common/CodeBuilder.java b/src/main/java/com/zy/common/CodeBuilder.java
index 0f00c78..73e84f4 100644
--- a/src/main/java/com/zy/common/CodeBuilder.java
+++ b/src/main/java/com/zy/common/CodeBuilder.java
@@ -17,10 +17,10 @@
 //        generator.table="sys_host";
         // sqlserver
         generator.sqlOsType = SqlOsType.SQL_SERVER;
-        generator.url="127.0.0.1:1433;databasename=jxgtasrs";
+        generator.url="192.168.4.15:1433;databasename=jsxsasrs";
         generator.username="sa";
         generator.password="sa@123";
-        generator.table="man_order_detl";
+        generator.table="agv_bas_station_detl";
         generator.packagePath="com.zy.asrs";
         generator.build();
     }
diff --git a/src/main/java/com/zy/core/model/LedSlave.java b/src/main/java/com/zy/core/model/LedSlave.java
index af02dfc..ea6fded 100644
--- a/src/main/java/com/zy/core/model/LedSlave.java
+++ b/src/main/java/com/zy/core/model/LedSlave.java
@@ -21,4 +21,7 @@
     // 鍙夎溅绔欑偣鏁扮粍
     private List<Integer> staArr = new ArrayList<>();
 
+    // AGV绔欑偣鏁扮粍
+    private List<String> AgvStaArr = new ArrayList<>();
+
 }
diff --git a/src/main/java/task.sql b/src/main/java/task.sql
new file mode 100644
index 0000000..b4de2a4
--- /dev/null
+++ b/src/main/java/task.sql
@@ -0,0 +1,18 @@
+-- save task record
+-- mysql
+insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'task/task.html', 'task绠$悊', null , '2', null , '1');
+
+insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'task#view', '鏌ヨ', '', '3', '0', '1');
+insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'task#btn-add', '鏂板', '', '3', '1', '1');
+insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'task#btn-edit', '缂栬緫', '', '3', '2', '1');
+insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'task#btn-delete', '鍒犻櫎', '', '3', '3', '1');
+insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'task#btn-export', '瀵煎嚭', '', '3', '4', '1');
+
+-- sqlserver
+insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'task/task.html', N'task绠$悊', null, '2', null, '1');
+
+insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'task#view', N'鏌ヨ', '', '3', '0', '1');
+insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'task#btn-add', N'鏂板', '', '3', '1', '1');
+insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'task#btn-edit', N'缂栬緫', '', '3', '2', '1');
+insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'task#btn-delete', N'鍒犻櫎', '', '3', '3', '1');
+insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'task#btn-export', N'瀵煎嚭', '', '3', '4', '1');
diff --git a/src/main/java/taskDetl.sql b/src/main/java/taskDetl.sql
new file mode 100644
index 0000000..bf88d71
--- /dev/null
+++ b/src/main/java/taskDetl.sql
@@ -0,0 +1,18 @@
+-- save taskDetl record
+-- mysql
+insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'taskDetl/taskDetl.html', 'taskDetl绠$悊', null , '2', null , '1');
+
+insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'taskDetl#view', '鏌ヨ', '', '3', '0', '1');
+insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'taskDetl#btn-add', '鏂板', '', '3', '1', '1');
+insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'taskDetl#btn-edit', '缂栬緫', '', '3', '2', '1');
+insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'taskDetl#btn-delete', '鍒犻櫎', '', '3', '3', '1');
+insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'taskDetl#btn-export', '瀵煎嚭', '', '3', '4', '1');
+
+-- sqlserver
+insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'taskDetl/taskDetl.html', N'taskDetl绠$悊', null, '2', null, '1');
+
+insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'taskDetl#view', N'鏌ヨ', '', '3', '0', '1');
+insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'taskDetl#btn-add', N'鏂板', '', '3', '1', '1');
+insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'taskDetl#btn-edit', N'缂栬緫', '', '3', '2', '1');
+insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'taskDetl#btn-delete', N'鍒犻櫎', '', '3', '3', '1');
+insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'taskDetl#btn-export', N'瀵煎嚭', '', '3', '4', '1');
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 5104d26..31a00c4 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -8,7 +8,7 @@
     name: @pom.build.finalName@
   datasource:
     driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
-    url: jdbc:sqlserver://10.0.100.132:1433;databasename=jxgtasrs
+    url: jdbc:sqlserver://192.168.4.15:1433;databasename=jsxsasrs
     username: sa
     password: sa@123
   mvc:
@@ -140,68 +140,7 @@
       bay: 47
       lev: 1
     # 鍫嗗灈鏈哄嚭搴撶珯鐐�
-    crnOutStn[0]:
-      devpPlcId: ${wcs-slave.devp[0].id}
-      staNo: 1030
-      row: 6
-      bay: 47
-      lev: 1
-    # 鍫嗗灈鏈哄叆搴撶珯鐐�
-    crnInStn[1]:
-      devpPlcId: ${wcs-slave.devp[0].id}
-      staNo: 2004
-      row: 6
-      bay: 47
-      lev: 2
-    # 鍫嗗灈鏈哄嚭搴撶珯鐐�
-    crnOutStn[1]:
-      devpPlcId: ${wcs-slave.devp[0].id}
-      staNo: 2004
-      row: 6
-      bay: 47
-      lev: 2
-    # 鍫嗗灈鏈哄叆搴撶珯鐐�
-    crnInStn[2]:
-      devpPlcId: ${wcs-slave.devp[1].id}
-      staNo: 1044
-      row: 6
-      bay: 1
-      lev: 1
-    # 鍫嗗灈鏈哄嚭搴撶珯鐐�
-    crnOutStn[2]:
-      devpPlcId: ${wcs-slave.devp[1].id}
-      staNo: 1044
-      row: 6
-      bay: 1
-      lev: 1
-    # 鍫嗗灈鏈哄叆搴撶珯鐐�
-    crnInStn[3]:
-      devpPlcId: ${wcs-slave.devp[1].id}
-      staNo: 2014
-      row: 6
-      bay: 1
-      lev: 2
-    # 鍫嗗灈鏈哄嚭搴撶珯鐐�
-    crnOutStn[3]:
-      devpPlcId: ${wcs-slave.devp[1].id}
-      staNo: 2014
-      row: 6
-      bay: 1
-      lev: 2
-    # 鍫嗗灈鏈哄叆搴撶珯鐐�
-    crnInStn[4]:
-      devpPlcId: ${wcs-slave.devp[1].id}
-      staNo: 3014
-      row: 6
-      bay: 1
-      lev: 3
-    # 鍫嗗灈鏈哄嚭搴撶珯鐐�
-    crnOutStn[4]:
-      devpPlcId: ${wcs-slave.devp[1].id}
-      staNo: 3014
-      row: 6
-      bay: 1
-      lev: 3
+
   # 鍫嗗灈鏈�3
   crn[2]:
     id: 3
@@ -220,68 +159,7 @@
       bay: 47
       lev: 1
     # 鍫嗗灈鏈哄嚭搴撶珯鐐�
-    crnOutStn[0]:
-      devpPlcId: ${wcs-slave.devp[0].id}
-      staNo: 1031
-      row: 10
-      bay: 47
-      lev: 1
-    # 鍫嗗灈鏈哄叆搴撶珯鐐�
-    crnInStn[1]:
-      devpPlcId: ${wcs-slave.devp[0].id}
-      staNo: 2008
-      row: 11
-      bay: 47
-      lev: 2
-    # 鍫嗗灈鏈哄嚭搴撶珯鐐�
-    crnOutStn[1]:
-      devpPlcId: ${wcs-slave.devp[0].id}
-      staNo: 2008
-      row: 11
-      bay: 47
-      lev: 2
-    # 鍫嗗灈鏈哄叆搴撶珯鐐�
-    crnInStn[2]:
-      devpPlcId: ${wcs-slave.devp[1].id}
-      staNo: 1048
-      row: 11
-      bay: 1
-      lev: 1
-    # 鍫嗗灈鏈哄嚭搴撶珯鐐�
-    crnOutStn[2]:
-      devpPlcId: ${wcs-slave.devp[1].id}
-      staNo: 1048
-      row: 11
-      bay: 1
-      lev: 1
-    # 鍫嗗灈鏈哄叆搴撶珯鐐�
-    crnInStn[3]:
-      devpPlcId: ${wcs-slave.devp[1].id}
-      staNo: 2018
-      row: 11
-      bay: 1
-      lev: 2
-    # 鍫嗗灈鏈哄嚭搴撶珯鐐�
-    crnOutStn[3]:
-      devpPlcId: ${wcs-slave.devp[1].id}
-      staNo: 2018
-      row: 11
-      bay: 1
-      lev: 2
-    # 鍫嗗灈鏈哄叆搴撶珯鐐�
-    crnInStn[4]:
-      devpPlcId: ${wcs-slave.devp[1].id}
-      staNo: 3018
-      row: 11
-      bay: 1
-      lev: 3
-    # 鍫嗗灈鏈哄嚭搴撶珯鐐�
-    crnOutStn[4]:
-      devpPlcId: ${wcs-slave.devp[1].id}
-      staNo: 3018
-      row: 11
-      bay: 1
-      lev: 3
+
   # 杈撻�佺嚎1
   devp[0]:
     id: 1
@@ -294,61 +172,7 @@
       staNo: 1001
       backSta: 1000
       led: ${wcs-slave.led[0].id}
-    inSta[1]:
-      staNo: 2001
-      backSta: 2000
-      led: ${wcs-slave.led[5].id}
-    inSta[2]:
-      staNo: 1002
-      backSta: 1035
-      led: ${wcs-slave.led[11].id}
-    # 绌烘澘鍏ュ簱鍙�1
-    emptyInSta[0]:
-      staNo: 1001
-      backSta: 1000
-      led: ${wcs-slave.led[0].id}
-    # 绌烘澘鍏ュ簱鍙�1
-    emptyInSta[1]:
-      staNo: 1025
-      backSta: 1000
-      led: ${wcs-slave.led[2].id}
 
-    # 绌烘澘鍏ュ簱鍙�1
-    emptyInSta[2]:
-      staNo: 2001
-      backSta: 2000
-      led: ${wcs-slave.led[5].id}
-    # 绌烘澘鍏ュ簱鍙�1
-    emptyInSta[3]:
-      staNo: 1002
-      backSta: 1035
-      led: ${wcs-slave.led[11].id}
-    # 鍑哄簱鍙�1
-    outSta[0]:
-      staNo: 1024
-      led: ${wcs-slave.led[1].id}
-    # 鍑哄簱鍙�1
-    outSta[1]:
-      staNo: 1028
-      led: ${wcs-slave.led[2].id}
-    agvOutSta[0]:
-      staNo: 2000
-    agvOutSta[1]:
-      staNo: 2002
-    agvOutSta[2]:
-      staNo: 1028
-    pickSta[0]:
-      staNo: 2001
-      led: ${wcs-slave.led[5].id}
-      backSta: 2000
-    pickSta[1]:
-      staNo: 1001
-      led: ${wcs-slave.led[0].id}
-      backSta: 1000
-    pickSta[2]:
-      staNo: 1002
-      led: ${wcs-slave.led[11].id}
-      backSta: 1035
 
   devp[1]:
     id: 2
@@ -361,78 +185,7 @@
       staNo: 1041
       backSta: 1040
       led: ${wcs-slave.led[3].id}
-    # 鍏ュ簱鍙�1
-    inSta[1]:
-      staNo: 2011
-      backSta: 2010
-      led: ${wcs-slave.led[7].id}
-    # 鍏ュ簱鍙�1
-    inSta[2]:
-      staNo: 3011
-      backSta: 3010
-      led: ${wcs-slave.led[9].id}
-    # 绌烘澘鍏ュ簱鍙�1
-    emptyInSta[0]:
-      staNo: 1041
-      backSta: 1040
-      led: ${wcs-slave.led[3].id}
-    # 绌烘澘鍏ュ簱鍙�1
-    emptyInSta[1]:
-      staNo: 2011
-      backSta: 2010
-      led: ${wcs-slave.led[7].id}
-    # 绌烘澘鍏ュ簱鍙�1
-    emptyInSta[2]:
-      staNo: 3011
-      backSta: 3010
-      led: ${wcs-slave.led[1].id}
-    # 鎷f枡鍏ュ簱鍙�1
-    pickSta[0]:
-      staNo: 1041
-      led: ${wcs-slave.led[5].id}
-      backSta: 1040
-    # 鎷f枡鍏ュ簱鍙�1
-    pickSta[1]:
-      staNo: 2011
-      led: ${wcs-slave.led[7].id}
-      backSta: 2010
-    # 鎷f枡鍏ュ簱鍙�1
-    pickSta[2]:
-      staNo: 3011
-      led: ${wcs-slave.led[9].id}
-      backSta: 3010
 
-    # 鍑哄簱鍙�1
-    outSta[0]:
-      staNo: 1040
-      led: ${wcs-slave.led[3].id}
-    outSta[1]:
-      staNo: 1042
-      led: ${wcs-slave.led[4].id}
-    outSta[2]:
-      staNo: 2010
-      led: ${wcs-slave.led[7].id}
-    outSta[3]:
-      staNo: 2012
-      led: ${wcs-slave.led[8].id}
-    outSta[4]:
-      staNo: 3010
-      led: ${wcs-slave.led[9].id}
-    outSta[5]:
-      staNo: 3012
-      led: ${wcs-slave.led[10].id}
-    agvOutSta[0]:
-      staNo: 1040
-    agvOutSta[1]:
-      staNo: 1042
-    agvOutSta[2]:
-      staNo: 2010
-    agvOutSta[3]:
-      staNo: 2012
-    agvOutSta[4]:
-      staNo: 3010
-    agvOutSta[5]:
-      staNo: 3012
    # LED1
   led[0]:
     id: 1
@@ -471,49 +224,7 @@
   # LED6
   led[5]:
     id: 6
-    ip: 10.10.10.106
+    ip: 127.0.0.1
     port: 5005
     devpPlcId: ${wcs-slave.devp[0].id}
-    staArr: 2001,2000
-  # LED6
-  led[6]:
-    id: 7
-    ip: 10.10.10.107
-    port: 5005
-    devpPlcId: ${wcs-slave.devp[0].id}
-    staArr: 2002
-  # LED6
-  led[7]:
-    id: 8
-    ip: 10.10.10.108
-    port: 5005
-    devpPlcId: ${wcs-slave.devp[1].id}
-    staArr: 2010,2011
-  # LED6
-  led[8]:
-    id: 9
-    ip: 10.10.10.109
-    port: 5005
-    devpPlcId: ${wcs-slave.devp[1].id}
-    staArr: 2012
-  # LED6
-  led[9]:
-    id: 10
-    ip: 10.10.10.110
-    port: 5005
-    devpPlcId: ${wcs-slave.devp[1].id}
-    staArr: 3010,3011
-  # LED6
-  led[10]:
-    id: 11
-    ip: 10.10.10.111
-    port: 5005
-    devpPlcId: ${wcs-slave.devp[1].id}
-    staArr: 3012
-  # LED6
-  led[11]:
-    id: 12
-    ip: 10.10.10.111
-    port: 5005
-    devpPlcId: ${wcs-slave.devp[0].id}
-    staArr: 1002
\ No newline at end of file
+    agvStaArr: CN01002008
diff --git a/src/main/resources/mapper/BasStationDetlMapper.xml b/src/main/resources/mapper/BasStationDetlMapper.xml
new file mode 100644
index 0000000..b734f70
--- /dev/null
+++ b/src/main/resources/mapper/BasStationDetlMapper.xml
@@ -0,0 +1,56 @@
+<?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.BasStationDetlMapper">
+
+    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+    <resultMap id="BaseResultMap" type="com.zy.asrs.entity.BasStationDetl">
+        <result column="id" property="id" />
+        <result column="dev_no" property="devNo" />
+        <result column="anfme" property="anfme" />
+        <result column="zpallet" property="zpallet" />
+        <result column="matnr" property="matnr" />
+        <result column="maktx" property="maktx" />
+        <result column="batch" property="batch" />
+        <result column="order_no" property="orderNo" />
+        <result column="specs" property="specs" />
+        <result column="model" property="model" />
+        <result column="color" property="color" />
+        <result column="brand" property="brand" />
+        <result column="unit" property="unit" />
+        <result column="price" property="price" />
+        <result column="sku" property="sku" />
+        <result column="units" property="units" />
+        <result column="barcode" property="barcode" />
+        <result column="origin" property="origin" />
+        <result column="manu" property="manu" />
+        <result column="manu_date" property="manuDate" />
+        <result column="item_num" property="itemNum" />
+        <result column="safe_qty" property="safeQty" />
+        <result column="weight" property="weight" />
+        <result column="man_length" property="manLength" />
+        <result column="volume" property="volume" />
+        <result column="three_code" property="threeCode" />
+        <result column="supp" property="supp" />
+        <result column="supp_code" property="suppCode" />
+        <result column="be_batch" property="beBatch" />
+        <result column="dead_time" property="deadTime" />
+        <result column="dead_warn" property="deadWarn" />
+        <result column="source" property="source" />
+        <result column="inspect" property="inspect" />
+        <result column="danger" property="danger" />
+        <result column="modi_user" property="modiUser" />
+        <result column="modi_time" property="modiTime" />
+        <result column="appe_user" property="appeUser" />
+        <result column="appe_time" property="appeTime" />
+        <result column="memo" property="memo" />
+        <result column="line_number" property="lineNumber" />
+        <result column="standby1" property="standby1" />
+        <result column="standby2" property="standby2" />
+        <result column="standby3" property="standby3" />
+        <result column="box_type1" property="boxType1" />
+        <result column="box_type2" property="boxType2" />
+        <result column="box_type3" property="boxType3" />
+
+    </resultMap>
+
+</mapper>
diff --git a/src/main/resources/mapper/BasStationMapper.xml b/src/main/resources/mapper/BasStationMapper.xml
new file mode 100644
index 0000000..5ac1ceb
--- /dev/null
+++ b/src/main/resources/mapper/BasStationMapper.xml
@@ -0,0 +1,46 @@
+<?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.BasStationMapper">
+
+    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+    <resultMap id="BaseResultMap" type="com.zy.asrs.entity.BasStation">
+        <id column="id" property="id" />
+        <result column="dev_no" property="devNo" />
+        <result column="dec_desc" property="decDesc" />
+        <result column="dev_mk" property="devMk" />
+        <result column="in_enable" property="inEnable" />
+        <result column="out_enable" property="outEnable" />
+        <result column="autoing" property="autoing" />
+        <result column="loading" property="loading" />
+        <result column="loc_sts" property="locSts" />
+        <result column="canining" property="canining" />
+        <result column="canouting" property="canouting" />
+        <result column="fronting" property="fronting" />
+        <result column="rearing" property="rearing" />
+        <result column="uping" property="uping" />
+        <result column="downing" property="downing" />
+        <result column="wrk_no" property="wrkNo" />
+        <result column="ctn_type" property="ctnType" />
+        <result column="barcode" property="barcode" />
+        <result column="in_qty" property="inQty" />
+        <result column="row1" property="row1" />
+        <result column="io_time" property="ioTime" />
+        <result column="area_id" property="areaId" />
+        <result column="area" property="area" />
+        <result column="in_ok" property="inOk" />
+        <result column="out_ok" property="outOk" />
+        <result column="loc_type1" property="locType1" />
+        <result column="loc_type2" property="locType2" />
+        <result column="loc_type3" property="locType3" />
+        <result column="modi_user" property="modiUser" />
+        <result column="modi_time" property="modiTime" />
+        <result column="appe_user" property="appeUser" />
+        <result column="appe_time" property="appeTime" />
+        <result column="std_qty" property="stdQty" />
+        <result column="min_wt" property="minWt" />
+        <result column="gross_wt" property="grossWt" />
+        <result column="rcs_code" property="rcsCode" />
+
+    </resultMap>
+
+</mapper>
diff --git a/src/main/resources/mapper/TaskDetlMapper.xml b/src/main/resources/mapper/TaskDetlMapper.xml
new file mode 100644
index 0000000..a621ef8
--- /dev/null
+++ b/src/main/resources/mapper/TaskDetlMapper.xml
@@ -0,0 +1,57 @@
+<?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.TaskDetlMapper">
+
+    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+    <resultMap id="BaseResultMap" type="com.zy.asrs.entity.TaskDetl">
+        <result column="id" property="id" />
+        <result column="wrk_no" property="wrkNo" />
+        <result column="io_time" property="ioTime" />
+        <result column="anfme" property="anfme" />
+        <result column="zpallet" property="zpallet" />
+        <result column="matnr" property="matnr" />
+        <result column="maktx" property="maktx" />
+        <result column="batch" property="batch" />
+        <result column="order_no" property="orderNo" />
+        <result column="specs" property="specs" />
+        <result column="model" property="model" />
+        <result column="color" property="color" />
+        <result column="brand" property="brand" />
+        <result column="unit" property="unit" />
+        <result column="price" property="price" />
+        <result column="sku" property="sku" />
+        <result column="units" property="units" />
+        <result column="barcode" property="barcode" />
+        <result column="origin" property="origin" />
+        <result column="manu" property="manu" />
+        <result column="manu_date" property="manuDate" />
+        <result column="item_num" property="itemNum" />
+        <result column="safe_qty" property="safeQty" />
+        <result column="weight" property="weight" />
+        <result column="man_length" property="manLength" />
+        <result column="volume" property="volume" />
+        <result column="three_code" property="threeCode" />
+        <result column="supp" property="supp" />
+        <result column="supp_code" property="suppCode" />
+        <result column="be_batch" property="beBatch" />
+        <result column="dead_time" property="deadTime" />
+        <result column="dead_warn" property="deadWarn" />
+        <result column="source" property="source" />
+        <result column="inspect" property="inspect" />
+        <result column="danger" property="danger" />
+        <result column="modi_user" property="modiUser" />
+        <result column="modi_time" property="modiTime" />
+        <result column="appe_user" property="appeUser" />
+        <result column="appe_time" property="appeTime" />
+        <result column="memo" property="memo" />
+        <result column="line_number" property="lineNumber" />
+        <result column="standby1" property="standby1" />
+        <result column="standby2" property="standby2" />
+        <result column="standby3" property="standby3" />
+        <result column="box_type1" property="boxType1" />
+        <result column="box_type2" property="boxType2" />
+        <result column="box_type3" property="boxType3" />
+
+    </resultMap>
+
+</mapper>
diff --git a/src/main/resources/mapper/TaskMapper.xml b/src/main/resources/mapper/TaskMapper.xml
new file mode 100644
index 0000000..edd5bd9
--- /dev/null
+++ b/src/main/resources/mapper/TaskMapper.xml
@@ -0,0 +1,12 @@
+<?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.TaskMapper">
+
+    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+    <resultMap id="BaseResultMap" type="com.zy.asrs.entity.Task">
+        <id column="id" property="id" />
+        <result column="task_type" property="taskType" />
+
+    </resultMap>
+
+</mapper>
diff --git a/src/main/webapp/static/js/basStation/basStation.js b/src/main/webapp/static/js/basStation/basStation.js
new file mode 100644
index 0000000..2429eaa
--- /dev/null
+++ b/src/main/webapp/static/js/basStation/basStation.js
@@ -0,0 +1,295 @@
+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: '#basStation',
+        headers: {token: localStorage.getItem('token')},
+        url: baseUrl+'/basStation/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: 'devNo', align: 'center',title: '缂栧彿'}
+            ,{field: 'decDesc', align: 'center',title: '璁惧鎻忚堪'}
+            ,{field: 'devMk', align: 'center',title: '澶囨敞'}
+            ,{field: 'inEnable', align: 'center',title: '鍙叆(checkBox)'}
+            ,{field: 'outEnable', align: 'center',title: '鍙嚭(checkBox)'}
+            ,{field: 'autoing', align: 'center',title: '鑷姩(checkBox)'}
+            ,{field: 'loading', align: 'center',title: '鏈夌墿(checkBox)'}
+            ,{field: 'locSts', align: 'center',title: ''}
+            ,{field: 'canining', align: 'center',title: '鑳藉叆(checkBox)'}
+            ,{field: 'canouting', align: 'center',title: '鑳藉嚭(checkBox)'}
+            ,{field: 'fronting', align: 'center',title: ''}
+            ,{field: 'rearing', align: 'center',title: ''}
+            ,{field: 'uping', align: 'center',title: ''}
+            ,{field: 'downing', align: 'center',title: ''}
+            ,{field: 'wrkNo', align: 'center',title: '宸ヤ綔鍙�'}
+            ,{field: 'ctnType', align: 'center',title: '瀹瑰櫒绫诲瀷'}
+            ,{field: 'barcode', align: 'center',title: '鏉″舰鐮�'}
+            ,{field: 'inQty', align: 'center',title: ''}
+            ,{field: 'row1', align: 'center',title: ''}
+            ,{field: 'ioTime$', align: 'center',title: ''}
+            ,{field: 'areaId', align: 'center',title: ''}
+            ,{field: 'area', align: 'center',title: ''}
+            ,{field: 'inOk', align: 'center',title: ''}
+            ,{field: 'outOk', align: 'center',title: ''}
+            ,{field: 'locType1$', align: 'center',title: '楂樹綆绫诲瀷'}
+            ,{field: 'locType2$', align: 'center',title: '瀹界獎绫诲瀷'}
+            ,{field: 'locType3$', align: 'center',title: '杞婚噸绫诲瀷'}
+            ,{field: 'modiUser$', align: 'center',title: '淇敼浜哄憳'}
+            ,{field: 'modiTime$', align: 'center',title: '淇敼鏃堕棿'}
+            ,{field: 'appeUser$', align: 'center',title: '鍒涘缓鑰�'}
+            ,{field: 'appeTime$', align: 'center',title: '娣诲姞鏃堕棿'}
+            ,{field: 'stdQty', align: 'center',title: ''}
+            ,{field: 'minWt', align: 'center',title: ''}
+            ,{field: 'grossWt', align: 'center',title: '閲嶉噺'}
+            ,{field: 'rcsCode', 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(basStation)', 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(basStation)', 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 = {
+                        'basStation': exportData,
+                        'fields': fields
+                    };
+                    $.ajax({
+                        url: baseUrl+"/basStation/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(basStation)', 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+"/basStation/"+(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+"/basStation/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: '#ioTime\\$',
+                type: 'datetime',
+                value: data!==undefined?data['ioTime\\$']:null
+            });
+            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/basStationDetl/basStationDetl.js b/src/main/webapp/static/js/basStationDetl/basStationDetl.js
new file mode 100644
index 0000000..5e325fb
--- /dev/null
+++ b/src/main/webapp/static/js/basStationDetl/basStationDetl.js
@@ -0,0 +1,300 @@
+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: '#basStationDetl',
+        headers: {token: localStorage.getItem('token')},
+        url: baseUrl+'/basStationDetl/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: 'devNo', align: 'center',title: '绔欑偣缂栫爜'}
+            ,{field: 'anfme', align: 'center',title: '鏁伴噺'}
+            ,{field: 'zpallet', align: 'center',title: '鎵樼洏鏉$爜'}
+            ,{field: 'matnr', align: 'center',title: '鍟嗗搧缂栧彿'}
+            ,{field: 'maktx', align: 'center',title: '鍟嗗搧鍚嶇О'}
+            ,{field: 'batch', align: 'center',title: '鎵瑰彿'}
+            ,{field: 'orderNo', align: 'center',title: '鍗曟嵁缂栧彿'}
+            ,{field: 'specs', align: 'center',title: '瑙勬牸'}
+            ,{field: 'model', align: 'center',title: '鍨嬪彿'}
+            ,{field: 'color', align: 'center',title: '棰滆壊'}
+            ,{field: 'brand', align: 'center',title: '鍝佺墝'}
+            ,{field: 'unit', align: 'center',title: '鍗曚綅'}
+            ,{field: 'price', align: 'center',title: '鍗曚环'}
+            ,{field: 'sku', align: 'center',title: 'sku'}
+            ,{field: 'units', align: 'center',title: '鍗曚綅閲�'}
+            ,{field: 'barcode', align: 'center',title: '鏉$爜'}
+            ,{field: 'origin', align: 'center',title: '浜у湴'}
+            ,{field: 'manu', align: 'center',title: '鍘傚'}
+            ,{field: 'manuDate', align: 'center',title: '鐢熶骇鏃ユ湡'}
+            ,{field: 'itemNum', align: 'center',title: '鍝侀」鏁�'}
+            ,{field: 'safeQty', align: 'center',title: '瀹夊叏搴撳瓨閲�'}
+            ,{field: 'weight', align: 'center',title: '閲嶉噺'}
+            ,{field: 'manLength', align: 'center',title: '闀垮害'}
+            ,{field: 'volume', align: 'center',title: '浣撶Н'}
+            ,{field: 'threeCode', align: 'center',title: '涓夋柟缂栫爜'}
+            ,{field: 'supp', align: 'center',title: '渚涘簲鍟�'}
+            ,{field: 'suppCode', align: 'center',title: '渚涘簲鍟嗙紪鐮�'}
+            ,{field: 'beBatch$', align: 'center',title: '鏄惁鎵规'}
+            ,{field: 'deadTime', align: 'center',title: '淇濊川鏈�'}
+            ,{field: 'deadWarn', align: 'center',title: '棰勮澶╂暟'}
+            ,{field: 'source$', align: 'center',title: '鍒惰喘'}
+            ,{field: 'inspect$', align: 'center',title: '瑕佹眰妫�楠�'}
+            ,{field: 'danger$', align: 'center',title: '鍗遍櫓鍝�'}
+            ,{field: 'modiUser$', align: 'center',title: '淇敼浜哄憳'}
+            ,{field: 'modiTime$', align: 'center',title: '淇敼鏃堕棿'}
+            ,{field: 'appeUser$', align: 'center',title: '娣诲姞浜哄憳'}
+            ,{field: 'appeTime$', align: 'center',title: '娣诲姞鏃堕棿'}
+            ,{field: 'memo', align: 'center',title: '澶囨敞'}
+            ,{field: 'lineNumber', align: 'center',title: ''}
+            ,{field: 'standby1', align: 'center',title: ''}
+            ,{field: 'standby2', align: 'center',title: ''}
+            ,{field: 'standby3', align: 'center',title: ''}
+            ,{field: 'boxType1', align: 'center',title: ''}
+            ,{field: 'boxType2', align: 'center',title: ''}
+            ,{field: 'boxType3', 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(basStationDetl)', 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(basStationDetl)', 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 = {
+                        'basStationDetl': exportData,
+                        'fields': fields
+                    };
+                    $.ajax({
+                        url: baseUrl+"/basStationDetl/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(basStationDetl)', 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+"/basStationDetl/"+(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+"/basStationDetl/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/common.js b/src/main/webapp/static/js/common.js
index 94ed7c8..2a45d7e 100644
--- a/src/main/webapp/static/js/common.js
+++ b/src/main/webapp/static/js/common.js
@@ -1,4 +1,4 @@
-var baseUrl = "/gtCrnWcs";
+var baseUrl = "/wcs";
 
 // 璧嬪��
 function setVal(el, val) {
diff --git a/src/main/webapp/static/js/task/task.js b/src/main/webapp/static/js/task/task.js
new file mode 100644
index 0000000..ff17d6e
--- /dev/null
+++ b/src/main/webapp/static/js/task/task.js
@@ -0,0 +1,246 @@
+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: '#task',
+        headers: {token: localStorage.getItem('token')},
+        url: baseUrl+'/task/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: 'taskType', align: 'center',title: '浠诲姟绫诲瀷锛� agv  , crn'}
+
+            ,{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(task)', 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(task)', 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 = {
+                        'task': exportData,
+                        'fields': fields
+                    };
+                    $.ajax({
+                        url: baseUrl+"/task/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(task)', 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+"/task/"+(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+"/task/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
+            });
+
+        }, 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/taskDetl/taskDetl.js b/src/main/webapp/static/js/taskDetl/taskDetl.js
new file mode 100644
index 0000000..f79626e
--- /dev/null
+++ b/src/main/webapp/static/js/taskDetl/taskDetl.js
@@ -0,0 +1,306 @@
+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: '#taskDetl',
+        headers: {token: localStorage.getItem('token')},
+        url: baseUrl+'/taskDetl/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: 'ioTime$', align: 'center',title: '宸ヤ綔鏃堕棿'}
+            ,{field: 'anfme', align: 'center',title: '鏁伴噺'}
+            ,{field: 'zpallet', align: 'center',title: '鎵樼洏鏉$爜'}
+            ,{field: 'matnr', align: 'center',title: '鍟嗗搧缂栧彿'}
+            ,{field: 'maktx', align: 'center',title: '鍟嗗搧鍚嶇О'}
+            ,{field: 'batch', align: 'center',title: '鎵瑰彿'}
+            ,{field: 'orderNo', align: 'center',title: '鍗曟嵁缂栧彿'}
+            ,{field: 'specs', align: 'center',title: '瑙勬牸'}
+            ,{field: 'model', align: 'center',title: '鍨嬪彿'}
+            ,{field: 'color', align: 'center',title: '棰滆壊'}
+            ,{field: 'brand', align: 'center',title: '鍝佺墝'}
+            ,{field: 'unit', align: 'center',title: '鍗曚綅'}
+            ,{field: 'price', align: 'center',title: '鍗曚环'}
+            ,{field: 'sku', align: 'center',title: 'sku'}
+            ,{field: 'units', align: 'center',title: '鍗曚綅閲�'}
+            ,{field: 'barcode', align: 'center',title: '鏉$爜'}
+            ,{field: 'origin', align: 'center',title: '浜у湴'}
+            ,{field: 'manu', align: 'center',title: '鍘傚'}
+            ,{field: 'manuDate', align: 'center',title: '鐢熶骇鏃ユ湡'}
+            ,{field: 'itemNum', align: 'center',title: '鍝侀」鏁�'}
+            ,{field: 'safeQty', align: 'center',title: '瀹夊叏搴撳瓨閲�'}
+            ,{field: 'weight', align: 'center',title: '閲嶉噺'}
+            ,{field: 'manLength', align: 'center',title: '闀垮害'}
+            ,{field: 'volume', align: 'center',title: '浣撶Н'}
+            ,{field: 'threeCode', align: 'center',title: '涓夋柟缂栫爜'}
+            ,{field: 'supp', align: 'center',title: '渚涘簲鍟�'}
+            ,{field: 'suppCode', align: 'center',title: '渚涘簲鍟嗙紪鐮�'}
+            ,{field: 'beBatch$', align: 'center',title: '鏄惁鎵规'}
+            ,{field: 'deadTime', align: 'center',title: '淇濊川鏈�'}
+            ,{field: 'deadWarn', align: 'center',title: '棰勮澶╂暟'}
+            ,{field: 'source$', align: 'center',title: '鍒惰喘'}
+            ,{field: 'inspect$', align: 'center',title: '瑕佹眰妫�楠�'}
+            ,{field: 'danger$', align: 'center',title: '鍗遍櫓鍝�'}
+            ,{field: 'modiUser$', align: 'center',title: '淇敼浜哄憳'}
+            ,{field: 'modiTime$', align: 'center',title: '淇敼鏃堕棿'}
+            ,{field: 'appeUser$', align: 'center',title: '娣诲姞浜哄憳'}
+            ,{field: 'appeTime$', align: 'center',title: '娣诲姞鏃堕棿'}
+            ,{field: 'memo', align: 'center',title: '澶囨敞'}
+            ,{field: 'lineNumber', align: 'center',title: ''}
+            ,{field: 'standby1', align: 'center',title: ''}
+            ,{field: 'standby2', align: 'center',title: ''}
+            ,{field: 'standby3', align: 'center',title: ''}
+            ,{field: 'boxType1', align: 'center',title: ''}
+            ,{field: 'boxType2', align: 'center',title: ''}
+            ,{field: 'boxType3', 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(taskDetl)', 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(taskDetl)', 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 = {
+                        'taskDetl': exportData,
+                        'fields': fields
+                    };
+                    $.ajax({
+                        url: baseUrl+"/taskDetl/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(taskDetl)', 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+"/taskDetl/"+(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+"/taskDetl/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: '#ioTime\\$',
+                type: 'datetime',
+                value: data!==undefined?data['ioTime\\$']:null
+            });
+            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/views/basStation/basStation.html b/src/main/webapp/views/basStation/basStation.html
new file mode 100644
index 0000000..b27c9b1
--- /dev/null
+++ b/src/main/webapp/views/basStation/basStation.html
@@ -0,0 +1,323 @@
+<!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="basStation" lay-filter="basStation"></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/basStation/basStation.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="devNo" 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="decDesc" placeholder="璇疯緭鍏ヨ澶囨弿杩�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">澶囨敞: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="devMk" 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">鑷姩(checkBox): </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="autoing" 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="loading" 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="locSts" 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="canining" 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="canouting" 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="fronting" placeholder="璇疯緭鍏�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="rearing" placeholder="璇疯緭鍏�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="uping" placeholder="璇疯緭鍏�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="downing" 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="ctnType" 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="inQty" placeholder="璇疯緭鍏�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="row1" placeholder="璇疯緭鍏�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="ioTime" id="ioTime$" placeholder="璇疯緭鍏�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="areaId" placeholder="璇疯緭鍏�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="area" placeholder="璇疯緭鍏�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="inOk" placeholder="璇疯緭鍏�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="outOk" placeholder="璇疯緭鍏�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">楂樹綆绫诲瀷: </label>
+                    <div class="layui-input-block">
+                        <select name="locType1">
+                            <option value="">璇烽�夋嫨楂樹綆绫诲瀷</option>
+                            <option value="0">鏈煡</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">
+                        <select name="locType2">
+                            <option value="">璇烽�夋嫨瀹界獎绫诲瀷</option>
+                            <option value="0">鏈煡</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">
+                        <select name="locType3">
+                            <option value="">璇烽�夋嫨杞婚噸绫诲瀷</option>
+                            <option value="0">鏈煡</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 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 class="layui-form-item">
+                    <label class="layui-form-label">: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="stdQty" placeholder="璇疯緭鍏�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="minWt" placeholder="璇疯緭鍏�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">閲嶉噺: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="grossWt" placeholder="璇疯緭鍏ラ噸閲�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="rcsCode" 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/basStationDetl/basStationDetl.html b/src/main/webapp/views/basStationDetl/basStationDetl.html
new file mode 100644
index 0000000..73c8f68
--- /dev/null
+++ b/src/main/webapp/views/basStationDetl/basStationDetl.html
@@ -0,0 +1,391 @@
+<!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="basStationDetl" lay-filter="basStationDetl"></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/basStationDetl/basStationDetl.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="id" placeholder="璇疯緭鍏�" lay-vertype="tips" lay-verify="required">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label layui-form-required">绔欑偣缂栫爜: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="devNo" 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="anfme" placeholder="璇疯緭鍏ユ暟閲�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鎵樼洏鏉$爜: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="zpallet" placeholder="璇疯緭鍏ユ墭鐩樻潯鐮�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label layui-form-required">鍟嗗搧缂栧彿: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="matnr" 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="maktx" placeholder="璇疯緭鍏ュ晢鍝佸悕绉�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鎵瑰彿: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="batch" placeholder="璇疯緭鍏ユ壒鍙�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鍗曟嵁缂栧彿: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="orderNo" placeholder="璇疯緭鍏ュ崟鎹紪鍙�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">瑙勬牸: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="specs" placeholder="璇疯緭鍏ヨ鏍�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鍨嬪彿: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="model" placeholder="璇疯緭鍏ュ瀷鍙�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">棰滆壊: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="color" placeholder="璇疯緭鍏ラ鑹�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鍝佺墝: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="brand" placeholder="璇疯緭鍏ュ搧鐗�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鍗曚綅: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="unit" placeholder="璇疯緭鍏ュ崟浣�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鍗曚环: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="price" placeholder="璇疯緭鍏ュ崟浠�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">sku: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="sku" placeholder="璇疯緭鍏ku">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鍗曚綅閲�: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="units" 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="origin" placeholder="璇疯緭鍏ヤ骇鍦�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鍘傚: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="manu" placeholder="璇疯緭鍏ュ巶瀹�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鐢熶骇鏃ユ湡: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="manuDate" placeholder="璇疯緭鍏ョ敓浜ф棩鏈�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鍝侀」鏁�: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="itemNum" placeholder="璇疯緭鍏ュ搧椤规暟">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">瀹夊叏搴撳瓨閲�: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="safeQty" placeholder="璇疯緭鍏ュ畨鍏ㄥ簱瀛橀噺">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">閲嶉噺: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="weight" placeholder="璇疯緭鍏ラ噸閲�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">闀垮害: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="manLength" placeholder="璇疯緭鍏ラ暱搴�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">浣撶Н: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="volume" placeholder="璇疯緭鍏ヤ綋绉�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">涓夋柟缂栫爜: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="threeCode" placeholder="璇疯緭鍏ヤ笁鏂圭紪鐮�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">渚涘簲鍟�: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="supp" placeholder="璇疯緭鍏ヤ緵搴斿晢">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">渚涘簲鍟嗙紪鐮�: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="suppCode" placeholder="璇疯緭鍏ヤ緵搴斿晢缂栫爜">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鏄惁鎵规: </label>
+                    <div class="layui-input-block">
+                        <select name="beBatch">
+                            <option value="">璇烽�夋嫨鏄惁鎵规</option>
+                            <option value="1">鏄�</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="deadTime" placeholder="璇疯緭鍏ヤ繚璐ㄦ湡">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">棰勮澶╂暟: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="deadWarn" placeholder="璇疯緭鍏ラ璀﹀ぉ鏁�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鍒惰喘: </label>
+                    <div class="layui-input-block">
+                        <select name="source">
+                            <option value="">璇烽�夋嫨鍒惰喘</option>
+                            <option value="1">鍒堕��</option>
+                            <option value="2">閲囪喘</option>
+                            <option value="3">澶栧崗</option>
+                        </select>
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">瑕佹眰妫�楠�: </label>
+                    <div class="layui-input-block">
+                        <select name="inspect">
+                            <option value="">璇烽�夋嫨瑕佹眰妫�楠�</option>
+                            <option value="1">鏄�</option>
+                            <option value="0">鍚�</option>
+                        </select>
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鍗遍櫓鍝�: </label>
+                    <div class="layui-input-block">
+                        <select name="danger">
+                            <option value="">璇烽�夋嫨鍗遍櫓鍝�</option>
+                            <option value="1">鏄�</option>
+                            <option value="0">鍚�</option>
+                        </select>
+                    </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 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="lineNumber" placeholder="璇疯緭鍏�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="standby1" placeholder="璇疯緭鍏�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="standby2" placeholder="璇疯緭鍏�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="standby3" placeholder="璇疯緭鍏�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="boxType1" placeholder="璇疯緭鍏�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="boxType2" placeholder="璇疯緭鍏�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="boxType3" 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/task/task.html b/src/main/webapp/views/task/task.html
new file mode 100644
index 0000000..25896cc
--- /dev/null
+++ b/src/main/webapp/views/task/task.html
@@ -0,0 +1,92 @@
+<!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="task" lay-filter="task"></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/task/task.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">浠诲姟绫诲瀷锛� agv  , crn: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="taskType" placeholder="璇疯緭鍏ヤ换鍔$被鍨嬶細 agv  , crn">
+                    </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/taskDetl/taskDetl.html b/src/main/webapp/views/taskDetl/taskDetl.html
new file mode 100644
index 0000000..c7abd2d
--- /dev/null
+++ b/src/main/webapp/views/taskDetl/taskDetl.html
@@ -0,0 +1,397 @@
+<!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="taskDetl" lay-filter="taskDetl"></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/taskDetl/taskDetl.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="id" placeholder="璇疯緭鍏�" lay-vertype="tips" lay-verify="required">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label layui-form-required">宸ヤ綔鍙�: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="wrkNo" 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="ioTime" id="ioTime$" placeholder="璇疯緭鍏ュ伐浣滄椂闂�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鏁伴噺: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="anfme" placeholder="璇疯緭鍏ユ暟閲�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鎵樼洏鏉$爜: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="zpallet" placeholder="璇疯緭鍏ユ墭鐩樻潯鐮�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label layui-form-required">鍟嗗搧缂栧彿: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="matnr" 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="maktx" placeholder="璇疯緭鍏ュ晢鍝佸悕绉�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鎵瑰彿: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="batch" placeholder="璇疯緭鍏ユ壒鍙�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鍗曟嵁缂栧彿: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="orderNo" placeholder="璇疯緭鍏ュ崟鎹紪鍙�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">瑙勬牸: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="specs" placeholder="璇疯緭鍏ヨ鏍�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鍨嬪彿: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="model" placeholder="璇疯緭鍏ュ瀷鍙�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">棰滆壊: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="color" placeholder="璇疯緭鍏ラ鑹�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鍝佺墝: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="brand" placeholder="璇疯緭鍏ュ搧鐗�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鍗曚綅: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="unit" placeholder="璇疯緭鍏ュ崟浣�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鍗曚环: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="price" placeholder="璇疯緭鍏ュ崟浠�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">sku: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="sku" placeholder="璇疯緭鍏ku">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鍗曚綅閲�: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="units" 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="origin" placeholder="璇疯緭鍏ヤ骇鍦�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鍘傚: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="manu" placeholder="璇疯緭鍏ュ巶瀹�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鐢熶骇鏃ユ湡: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="manuDate" placeholder="璇疯緭鍏ョ敓浜ф棩鏈�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鍝侀」鏁�: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="itemNum" placeholder="璇疯緭鍏ュ搧椤规暟">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">瀹夊叏搴撳瓨閲�: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="safeQty" placeholder="璇疯緭鍏ュ畨鍏ㄥ簱瀛橀噺">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">閲嶉噺: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="weight" placeholder="璇疯緭鍏ラ噸閲�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">闀垮害: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="manLength" placeholder="璇疯緭鍏ラ暱搴�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">浣撶Н: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="volume" placeholder="璇疯緭鍏ヤ綋绉�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">涓夋柟缂栫爜: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="threeCode" placeholder="璇疯緭鍏ヤ笁鏂圭紪鐮�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">渚涘簲鍟�: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="supp" placeholder="璇疯緭鍏ヤ緵搴斿晢">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">渚涘簲鍟嗙紪鐮�: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="suppCode" placeholder="璇疯緭鍏ヤ緵搴斿晢缂栫爜">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鏄惁鎵规: </label>
+                    <div class="layui-input-block">
+                        <select name="beBatch">
+                            <option value="">璇烽�夋嫨鏄惁鎵规</option>
+                            <option value="1">鏄�</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="deadTime" placeholder="璇疯緭鍏ヤ繚璐ㄦ湡">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">棰勮澶╂暟: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="deadWarn" placeholder="璇疯緭鍏ラ璀﹀ぉ鏁�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鍒惰喘: </label>
+                    <div class="layui-input-block">
+                        <select name="source">
+                            <option value="">璇烽�夋嫨鍒惰喘</option>
+                            <option value="1">鍒堕��</option>
+                            <option value="2">閲囪喘</option>
+                            <option value="3">澶栧崗</option>
+                        </select>
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">瑕佹眰妫�楠�: </label>
+                    <div class="layui-input-block">
+                        <select name="inspect">
+                            <option value="">璇烽�夋嫨瑕佹眰妫�楠�</option>
+                            <option value="1">鏄�</option>
+                            <option value="0">鍚�</option>
+                        </select>
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鍗遍櫓鍝�: </label>
+                    <div class="layui-input-block">
+                        <select name="danger">
+                            <option value="">璇烽�夋嫨鍗遍櫓鍝�</option>
+                            <option value="1">鏄�</option>
+                            <option value="0">鍚�</option>
+                        </select>
+                    </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 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="lineNumber" placeholder="璇疯緭鍏�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="standby1" placeholder="璇疯緭鍏�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="standby2" placeholder="璇疯緭鍏�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="standby3" placeholder="璇疯緭鍏�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="boxType1" placeholder="璇疯緭鍏�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="boxType2" placeholder="璇疯緭鍏�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="boxType3" 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>
+

--
Gitblit v1.9.1