From ebce471ec71ea6acdef92b4316d12e62ae223512 Mon Sep 17 00:00:00 2001
From: zjj <zjj123>
Date: 星期一, 29 九月 2025 13:42:04 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/integrationWms' into integrationWms

---
 src/main/java/com/zy/asrs/controller/BasWhsController.java         |   60 
 src/main/java/com/zy/common/config/.DS_Store                       |    0 
 src/main/java/com/zy/asrs/controller/LocMastController.java        |  100 
 src/main/java/com/zy/asrs/controller/TaskDetlController.java       |  125 
 src/main/resources/mapper/LocCacheMapper.xml                       |   31 
 src/main/java/com/zy/asrs/mapper/BasAreasMapper.java               |   12 
 src/main/java/com/zy/asrs/entity/BasWhsType.java                   |    8 
 src/main/java/com/zy/common/config/WebConfig.java                  |   60 
 src/main/java/com/zy/common/web/AuthController.java                |   62 
 src/main/java/com/zy/asrs/mapper/TaskDetlMapper.java               |   12 
 src/main/java/com/zy/asrs/entity/BasAreas.java                     |  144 
 src/main/java/com/zy/asrs/service/LocCacheService.java             |   18 
 src/main/java/com/zy/asrs/entity/OrderDetl.java                    |    6 
 src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java        |  782 ++-
 src/main/java/com/zy/asrs/controller/LocCacheController.java       |  140 
 src/main/resources/mapper/BasAreasMapper.xml                       |   20 
 src/main/java/com/zy/asrs/controller/TaskController.java           |  125 
 src/main/java/com/zy/asrs/entity/WrkMastLog.java                   |  217 
 src/main/resources/mapper/BasStationMapper.xml                     |   44 
 src/main/java/basAreas.sql                                         |   18 
 src/main/webapp/static/js/taskDetlLog/taskDetlLog.js               |  305 +
 src/main/java/com/zy/asrs/entity/LocDetl.java                      |   15 
 src/main/java/com/zy/asrs/service/impl/BasAreasServiceImpl.java    |   12 
 src/main/java/com/zy/asrs/service/impl/LocCacheServiceImpl.java    |   89 
 src/main/webapp/static/js/basAreas/basAreas.js                     |  264 +
 src/main/webapp/views/taskLog/taskLog.html                         |  506 ++
 src/main/java/com/zy/asrs/service/impl/WrkMastLogServiceImpl.java  |   28 
 src/main/java/com/zy/asrs/mapper/LocCacheMapper.java               |   12 
 src/main/java/com/zy/asrs/mapper/TaskLogMapper.java                |   12 
 pom.xml                                                            |    2 
 src/main/java/com/zy/asrs/service/BasStationService.java           |    8 
 src/main/java/com/zy/asrs/service/impl/TaskDetlServiceImpl.java    |   12 
 src/main/java/com/zy/asrs/task/handler/BareBoardHandler.java       |    4 
 src/main/java/locCache.sql                                         |   18 
 src/main/java/com/zy/asrs/service/TaskDetlLogService.java          |    8 
 src/main/resources/mapper/TaskLogMapper.xml                        |   70 
 src/main/java/com/zy/common/constant/MesConstant.java              |   11 
 src/main/java/com/zy/asrs/controller/TaskLogController.java        |  125 
 src/main/java/com/zy/asrs/entity/TaskLog.java                      |  686 +++
 src/main/java/com/zy/asrs/service/MobileService.java               |   16 
 src/main/webapp/static/js/basStation/basStation.js                 |  293 +
 src/main/webapp/views/basWhs/basWhs_detail.html                    |    4 
 src/main/java/com/zy/asrs/entity/WaitPakin.java                    |   10 
 src/main/webapp/views/basWhs/basWhs.html                           |    4 
 src/main/java/com/zy/asrs/controller/BasAreasController.java       |  126 
 src/main/webapp/views/taskDetl/taskDetl.html                       |  391 ++
 src/main/java/com/zy/asrs/service/TaskService.java                 |    8 
 src/main/resources/application.yml                                 |   15 
 src/main/webapp/static/js/taskLog/taskLog.js                       |  364 +
 src/main/java/com/zy/asrs/entity/Task.java                         |   40 
 src/main/resources/mapper/BasWhsMapper.xml                         |    4 
 src/main/java/com/zy/asrs/entity/param/AgvCallParams.java          |   26 
 src/main/java/com/zy/asrs/entity/OrderDetlPakin.java               |    6 
 src/main/webapp/static/js/wrkMast/wrkMast.js                       |    5 
 src/main/java/com/zy/asrs/controller/BasStationController.java     |  125 
 src/main/java/com/zy/asrs/mapper/BasStationMapper.java             |   12 
 src/main/java/com/zy/asrs/service/impl/TaskServiceImpl.java        |   12 
 src/main/java/com/zy/asrs/service/impl/TaskLogServiceImpl.java     |   12 
 src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java        |  290 
 src/main/webapp/static/js/task/task.js                             |  246 +
 src/main/java/com/zy/asrs/entity/WrkDetl.java                      |    2 
 src/main/java/com/zy/asrs/mapper/TaskDetlLogMapper.java            |   12 
 src/main/webapp/views/taskDetlLog/taskDetlLog.html                 |  391 ++
 src/main/java/com/zy/asrs/service/TaskLogService.java              |    8 
 src/main/webapp/static/js/common.js                                |   23 
 src/main/java/com/zy/asrs/entity/LocMast.java                      |   10 
 src/main/java/com/zy/asrs/entity/TaskDetlLog.java                  |  502 ++
 src/main/resources/mapper/TaskDetlMapper.xml                       |   56 
 src/main/java/com/zy/common/.DS_Store                              |    0 
 src/main/webapp/static/js/locCache/locCache.js                     |  305 +
 src/main/java/com/zy/asrs/entity/TaskDetl.java                     |  500 ++
 src/main/resources/mapper/TaskDetlLogMapper.xml                    |   56 
 src/main/java/com/zy/common/CodeBuilder.java                       |    6 
 src/main/java/com/zy/asrs/enums/LocStsType.java                    |   60 
 src/main/webapp/static/js/waitPakin/waitPakin.js                   |  292 
 src/main/java/com/zy/asrs/mapper/WrkMastLogMapper.java             |    2 
 src/main/webapp/views/login.html                                   |  273 
 src/main/java/com/zy/common/utils/Http.java                        |   12 
 src/main/java/com/zy/asrs/service/impl/BasWhsTypeServiceImpl.java  |   15 
 src/main/java/com/zy/asrs/service/impl/TaskDetlLogServiceImpl.java |   12 
 src/main/java/com/zy/common/web/WcsController.java                 |   12 
 src/main/webapp/static/js/taskDetl/taskDetl.js                     |  305 +
 src/main/java/com/zy/asrs/entity/BasStation.java                   |  378 ++
 src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java      |  348 +
 src/main/java/com/zy/asrs/mapper/TaskMapper.java                   |   12 
 src/main/java/com/zy/asrs/utils/OrderInAndOutUtil.java             |    2 
 src/main/webapp/views/task/task.html                               |   92 
 src/main/java/com/zy/asrs/service/BasWhsTypeService.java           |    8 
 src/main/java/com/zy/asrs/service/impl/BasStationServiceImpl.java  |   12 
 src/main/java/com/zy/asrs/entity/WrkMast.java                      |   20 
 src/main/webapp/views/basAreas/basAreas.html                       |  152 
 src/main/resources/mapper/TaskMapper.xml                           |   12 
 src/main/webapp/views/locCache/locCache.html                       |  208 +
 src/main/java/com/zy/asrs/controller/MobileController.java         |   20 
 src/main/webapp/views/locCache/locDetail.html                      |   93 
 src/main/java/com/zy/asrs/entity/RowLastno.java                    |    8 
 src/main/webapp/static/js/cool.js                                  |   72 
 src/main/java/com/zy/asrs/service/TaskDetlService.java             |    8 
 src/main/webapp/views/basStation/basStation.html                   |  311 +
 /dev/null                                                          |    0 
 src/main/java/com/zy/asrs/entity/LocCache.java                     |  326 +
 src/main/java/com/zy/asrs/mapper/BasWhsMapper.java                 |    6 
 src/main/java/com/zy/asrs/service/BasAreasService.java             |    8 
 src/main/java/com/zy/asrs/controller/TaskDetlLogController.java    |  127 
 104 files changed, 10,074 insertions(+), 1,183 deletions(-)

diff --git a/pom.xml b/pom.xml
index 26af637..66c1ffe 100644
--- a/pom.xml
+++ b/pom.xml
@@ -9,7 +9,7 @@
         <relativePath/>
     </parent>
     <groupId>com.zy</groupId>
-    <artifactId>asrs</artifactId>
+    <artifactId>asrs</artifactId>t
     <version>1.1.1</version>
     <packaging>war</packaging>
 
diff --git a/src/main/java/basAreas.sql b/src/main/java/basAreas.sql
new file mode 100644
index 0000000..3204d1b
--- /dev/null
+++ b/src/main/java/basAreas.sql
@@ -0,0 +1,18 @@
+-- save basAreas record
+-- mysql
+insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'basAreas/basAreas.html', 'basAreas绠$悊', null , '2', null , '1');
+
+insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'basAreas#view', '鏌ヨ', '', '3', '0', '1');
+insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'basAreas#btn-add', '鏂板', '', '3', '1', '1');
+insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'basAreas#btn-edit', '缂栬緫', '', '3', '2', '1');
+insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'basAreas#btn-delete', '鍒犻櫎', '', '3', '3', '1');
+insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'basAreas#btn-export', '瀵煎嚭', '', '3', '4', '1');
+
+-- sqlserver
+insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'basAreas/basAreas.html', N'basAreas绠$悊', null, '2', null, '1');
+
+insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'basAreas#view', N'鏌ヨ', '', '3', '0', '1');
+insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'basAreas#btn-add', N'鏂板', '', '3', '1', '1');
+insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'basAreas#btn-edit', N'缂栬緫', '', '3', '2', '1');
+insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'basAreas#btn-delete', N'鍒犻櫎', '', '3', '3', '1');
+insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'basAreas#btn-export', N'瀵煎嚭', '', '3', '4', '1');
diff --git a/src/main/java/com/zy/asrs/controller/BasAreasController.java b/src/main/java/com/zy/asrs/controller/BasAreasController.java
new file mode 100644
index 0000000..11545e1
--- /dev/null
+++ b/src/main/java/com/zy/asrs/controller/BasAreasController.java
@@ -0,0 +1,126 @@
+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.BasAreas;
+import com.zy.asrs.service.BasAreasService;
+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 BasAreasController extends BaseController {
+
+    @Autowired
+    private BasAreasService basAreasService;
+
+    @RequestMapping(value = "/basAreas/{id}/auth")
+    @ManagerAuth
+    public R get(@PathVariable("id") String id) {
+        return R.ok(basAreasService.selectById(String.valueOf(id)));
+    }
+
+    @RequestMapping(value = "/basAreas/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<BasAreas> wrapper = new EntityWrapper<>();
+        excludeTrash(param);
+        convert(param, wrapper);
+        allLike(BasAreas.class, param.keySet(), wrapper, condition);
+        if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));}
+        return R.ok(basAreasService.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 = "/basAreas/add/auth")
+    @ManagerAuth
+    public R add(BasAreas basAreas) {
+        basAreasService.insert(basAreas);
+        return R.ok();
+    }
+
+	@RequestMapping(value = "/basAreas/update/auth")
+	@ManagerAuth
+    public R update(BasAreas basAreas){
+        if (Cools.isEmpty(basAreas) || null==basAreas.getId()){
+            return R.error();
+        }
+        basAreasService.updateById(basAreas);
+        return R.ok();
+    }
+
+    @RequestMapping(value = "/basAreas/delete/auth")
+    @ManagerAuth
+    public R delete(@RequestParam(value="ids[]") Long[] ids){
+         for (Long id : ids){
+            basAreasService.deleteById(id);
+        }
+        return R.ok();
+    }
+
+    @RequestMapping(value = "/basAreas/export/auth")
+    @ManagerAuth
+    public R export(@RequestBody JSONObject param){
+        EntityWrapper<BasAreas> wrapper = new EntityWrapper<>();
+        List<String> fields = JSONObject.parseArray(param.getJSONArray("fields").toJSONString(), String.class);
+        Map<String, Object> map = excludeTrash(param.getJSONObject("basAreas"));
+        convert(map, wrapper);
+        List<BasAreas> list = basAreasService.selectList(wrapper);
+        return R.ok(exportSupport(list, fields));
+    }
+
+    @RequestMapping(value = "/basAreasQuery/auth")
+    @ManagerAuth
+    public R query(String condition) {
+        EntityWrapper<BasAreas> wrapper = new EntityWrapper<>();
+        wrapper.like("id", condition);
+        Page<BasAreas> page = basAreasService.selectPage(new Page<>(0, 10), wrapper);
+        List<Map<String, Object>> result = new ArrayList<>();
+        for (BasAreas basAreas : page.getRecords()){
+            Map<String, Object> map = new HashMap<>();
+            map.put("id", basAreas.getId());
+            map.put("value", basAreas.getName());
+            result.add(map);
+        }
+        return R.ok(result);
+    }
+
+
+    @RequestMapping(value = "/basAreas/check/column/auth")
+    @ManagerAuth
+    public R query(@RequestBody JSONObject param) {
+        Wrapper<BasAreas> wrapper = new EntityWrapper<BasAreas>().eq(humpToLine(String.valueOf(param.get("key"))), param.get("val"));
+        if (null != basAreasService.selectOne(wrapper)){
+            return R.parse(BaseRes.REPEAT).add(getComment(BasAreas.class, String.valueOf(param.get("key"))));
+        }
+        return R.ok();
+    }
+
+}
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/BasWhsController.java b/src/main/java/com/zy/asrs/controller/BasWhsController.java
index 2de999b..044bfd5 100644
--- a/src/main/java/com/zy/asrs/controller/BasWhsController.java
+++ b/src/main/java/com/zy/asrs/controller/BasWhsController.java
@@ -5,8 +5,8 @@
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.baomidou.mybatisplus.mapper.Wrapper;
 import com.baomidou.mybatisplus.plugins.Page;
-import com.zy.asrs.entity.BasWhs;
-import com.zy.asrs.service.BasWhsService;
+import com.zy.asrs.entity.BasWhsType;
+import com.zy.asrs.service.BasWhsTypeService;
 import com.zy.common.web.BaseController;
 import com.core.annotations.ManagerAuth;
 import com.core.common.BaseRes;
@@ -22,12 +22,12 @@
 public class BasWhsController extends BaseController {
 
     @Autowired
-    private BasWhsService basWhsService;
+    private BasWhsTypeService basWhsTypeService;
 
     @RequestMapping(value = "/basWhs/{id}/auth")
     @ManagerAuth
     public R get(@PathVariable("id") Long id) {
-        return R.ok(basWhsService.selectById(String.valueOf(id)));
+        return R.ok(basWhsTypeService.selectById(String.valueOf(id)));
     }
 
     @RequestMapping(value = "/basWhs/list/auth")
@@ -38,10 +38,10 @@
                   @RequestParam(required = false)String orderByType,
                   @RequestParam Map<String, Object> param){
         excludeTrash(param);
-        EntityWrapper<BasWhs> wrapper = new EntityWrapper<>();
+        EntityWrapper<BasWhsType> wrapper = new EntityWrapper<>();
         convert(param, wrapper);
         if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));}
-        return R.ok(basWhsService.selectPage(new Page<>(curr, limit), wrapper));
+        return R.ok(basWhsTypeService.selectPage(new Page<>(curr, limit), wrapper));
     }
 
     private <T> void convert(Map<String, Object> map, EntityWrapper<T> wrapper){
@@ -59,36 +59,36 @@
 
     @RequestMapping(value = "/basWhs/add/auth")
     @ManagerAuth(memo = "搴撲綅绫诲瀷娣诲姞")
-    public R add(BasWhs basWhs) {
-        basWhs.setModiUser(getUserId());
-        basWhs.setModiTime(new Date());
-        basWhs.setAppeUser(getUserId());
-        basWhs.setAppeTime(new Date());
-        basWhsService.insert(basWhs);
+    public R add(BasWhsType basWhsType) {
+        basWhsType.setModiUser(getUserId());
+        basWhsType.setModiTime(new Date());
+        basWhsType.setAppeUser(getUserId());
+        basWhsType.setAppeTime(new Date());
+        basWhsTypeService.insert(basWhsType);
         return R.ok();
     }
 
 	@RequestMapping(value = "/basWhs/update/auth")
     @ManagerAuth(memo = "搴撲綅绫诲瀷淇敼")
-    public R update(BasWhs basWhs){
-        if (Cools.isEmpty(basWhs) || null==basWhs.getId()){
+    public R update(BasWhsType basWhsType){
+        if (Cools.isEmpty(basWhsType) || null== basWhsType.getId()){
             return R.error();
         }
-        basWhs.setModiUser(getUserId());
-        basWhs.setModiTime(new Date());
-        basWhsService.updateById(basWhs);
+        basWhsType.setModiUser(getUserId());
+        basWhsType.setModiTime(new Date());
+        basWhsTypeService.updateById(basWhsType);
         return R.ok();
     }
 
     @RequestMapping(value = "/basWhs/delete/auth")
     @ManagerAuth(memo = "搴撲綅绫诲瀷鍒犻櫎")
     public R delete(@RequestParam String param){
-        List<BasWhs> list = JSONArray.parseArray(param, BasWhs.class);
+        List<BasWhsType> list = JSONArray.parseArray(param, BasWhsType.class);
         if (Cools.isEmpty(list)){
             return R.error();
         }
-        for (BasWhs entity : list){
-            basWhsService.delete(new EntityWrapper<>(entity));
+        for (BasWhsType entity : list){
+            basWhsTypeService.delete(new EntityWrapper<>(entity));
         }
         return R.ok();
     }
@@ -97,24 +97,24 @@
     @ManagerAuth(memo = "搴撲綅绫诲瀷瀵煎嚭")
     public R export(@RequestBody JSONObject param){
         List<String> fields = JSONObject.parseArray(param.getJSONArray("fields").toJSONString(), String.class);
-        EntityWrapper<BasWhs> wrapper = new EntityWrapper<>();
+        EntityWrapper<BasWhsType> wrapper = new EntityWrapper<>();
         Map<String, Object> map = excludeTrash(param.getJSONObject("basWhs"));
         convert(map, wrapper);
-        List<BasWhs> list = basWhsService.selectList(wrapper);
+        List<BasWhsType> list = basWhsTypeService.selectList(wrapper);
         return R.ok(exportSupport(list, fields));
     }
 
     @RequestMapping(value = "/basWhsQuery/auth")
     @ManagerAuth
     public R query(String condition) {
-        EntityWrapper<BasWhs> wrapper = new EntityWrapper<>();
+        EntityWrapper<BasWhsType> wrapper = new EntityWrapper<>();
         wrapper.like("whs_desc", condition);
-        Page<BasWhs> page = basWhsService.selectPage(new Page<>(0, 10), wrapper);
+        Page<BasWhsType> page = basWhsTypeService.selectPage(new Page<>(0, 10), wrapper);
         List<Map<String, Object>> result = new ArrayList<>();
-        for (BasWhs basWhs : page.getRecords()){
+        for (BasWhsType basWhsType : page.getRecords()){
             Map<String, Object> map = new HashMap<>();
-            map.put("id", basWhs.getId());
-            map.put("value", basWhs.getWhsDesc());
+            map.put("id", basWhsType.getId());
+            map.put("value", basWhsType.getWhsDesc());
             result.add(map);
         }
         return R.ok(result);
@@ -123,9 +123,9 @@
     @RequestMapping(value = "/basWhs/check/column/auth")
     @ManagerAuth
     public R query(@RequestBody JSONObject param) {
-        Wrapper<BasWhs> wrapper = new EntityWrapper<BasWhs>().eq(humpToLine(String.valueOf(param.get("key"))), param.get("val"));
-        if (null != basWhsService.selectOne(wrapper)){
-            return R.parse(BaseRes.REPEAT).add(getComment(BasWhs.class, String.valueOf(param.get("key"))));
+        Wrapper<BasWhsType> wrapper = new EntityWrapper<BasWhsType>().eq(humpToLine(String.valueOf(param.get("key"))), param.get("val"));
+        if (null != basWhsTypeService.selectOne(wrapper)){
+            return R.parse(BaseRes.REPEAT).add(getComment(BasWhsType.class, String.valueOf(param.get("key"))));
         }
         return R.ok();
     }
diff --git a/src/main/java/com/zy/asrs/controller/LocCacheController.java b/src/main/java/com/zy/asrs/controller/LocCacheController.java
new file mode 100644
index 0000000..10f96cb
--- /dev/null
+++ b/src/main/java/com/zy/asrs/controller/LocCacheController.java
@@ -0,0 +1,140 @@
+package com.zy.asrs.controller;
+
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.mapper.Wrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.core.common.DateUtils;
+import com.core.exception.CoolException;
+import com.zy.asrs.entity.BasWhsType;
+import com.zy.asrs.entity.LocCache;
+import com.zy.asrs.entity.LocMast;
+import com.zy.asrs.entity.param.LocMastInitParam;
+import com.zy.asrs.service.LocCacheService;
+import com.core.annotations.ManagerAuth;
+import com.core.common.BaseRes;
+import com.core.common.Cools;
+import com.core.common.R;
+import com.zy.common.model.Shelves;
+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 LocCacheController extends BaseController {
+
+    @Autowired
+    private LocCacheService locCacheService;
+
+    @RequestMapping(value = "/locCache/{id}/auth")
+    @ManagerAuth
+    public R get(@PathVariable("id") String id) {
+        return R.ok(locCacheService.selectById(String.valueOf(id)));
+    }
+
+    @RequestMapping(value = "/locCache/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<LocCache> wrapper = new EntityWrapper<>();
+        excludeTrash(param);
+        convert(param, wrapper);
+        allLike(LocCache.class, param.keySet(), wrapper, condition);
+        if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));}
+        wrapper.eq("full_plt", "N");
+        return R.ok(locCacheService.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 = "/locCache/add/auth")
+    @ManagerAuth
+    public R add(LocCache locCache) {
+        locCacheService.insert(locCache);
+        return R.ok();
+    }
+
+	@RequestMapping(value = "/locCache/update/auth")
+	@ManagerAuth
+    public R update(LocCache locCache){
+        if (Cools.isEmpty(locCache) || null==locCache.getLocNo()){
+            return R.error();
+        }
+        locCacheService.updateById(locCache);
+        return R.ok();
+    }
+
+    @RequestMapping(value = "/locCache/delete/auth")
+    @ManagerAuth
+    public R delete(@RequestParam(value="ids[]") Long[] ids){
+         for (Long id : ids){
+            locCacheService.deleteById(id);
+        }
+        return R.ok();
+    }
+
+    @RequestMapping(value = "/locCache/export/auth")
+    @ManagerAuth
+    public R export(@RequestBody JSONObject param){
+        EntityWrapper<LocCache> wrapper = new EntityWrapper<>();
+        List<String> fields = JSONObject.parseArray(param.getJSONArray("fields").toJSONString(), String.class);
+        Map<String, Object> map = excludeTrash(param.getJSONObject("locCache"));
+        convert(map, wrapper);
+        List<LocCache> list = locCacheService.selectList(wrapper);
+        return R.ok(exportSupport(list, fields));
+    }
+
+    @RequestMapping(value = "/locCacheQuery/auth")
+    @ManagerAuth
+    public R query(String condition) {
+        EntityWrapper<LocCache> wrapper = new EntityWrapper<>();
+        wrapper.like("loc_no", condition);
+        Page<LocCache> page = locCacheService.selectPage(new Page<>(0, 10), wrapper);
+        List<Map<String, Object>> result = new ArrayList<>();
+        for (LocCache locCache : page.getRecords()){
+            Map<String, Object> map = new HashMap<>();
+            map.put("id", locCache.getLocNo());
+            map.put("value", locCache.getLocNo());
+            result.add(map);
+        }
+        return R.ok(result);
+    }
+
+    @RequestMapping(value = "/locCache/check/column/auth")
+    @ManagerAuth
+    public R query(@RequestBody JSONObject param) {
+        Wrapper<LocCache> wrapper = new EntityWrapper<LocCache>().eq(humpToLine(String.valueOf(param.get("key"))), param.get("val"));
+        if (null != locCacheService.selectOne(wrapper)){
+            return R.parse(BaseRes.REPEAT).add(getComment(LocCache.class, String.valueOf(param.get("key"))));
+        }
+        return R.ok();
+    }
+
+
+    @RequestMapping("locCache/init/auth")
+    @ManagerAuth
+    public R init(LocMastInitParam param) {
+        if (Objects.isNull(param)) {
+            throw new CoolException("鍙傛暟涓嶈兘涓虹┖锛�");
+        }
+       return locCacheService.initLocCache(param, getUserId());
+    }
+
+}
diff --git a/src/main/java/com/zy/asrs/controller/LocMastController.java b/src/main/java/com/zy/asrs/controller/LocMastController.java
index c914c92..723e3f6 100644
--- a/src/main/java/com/zy/asrs/controller/LocMastController.java
+++ b/src/main/java/com/zy/asrs/controller/LocMastController.java
@@ -33,23 +33,17 @@
     @Autowired
     private LocDetlService locDetlService;
     @Autowired
-    private BasWhsService basWhsService;
-
+    private BasWhsTypeService basWhsTypeService;
     @Resource
     private WrkMastService wrkMastService;
-
     @Resource
     private AdjDetlService adjDetlService;
-
     @Resource
     private LocDetlMapper locDetlMapper;
-
     @Resource
     private CommonService commonService;
-
     @Resource
     private WrkMastLogService wrkMastLogService;
-
     @Resource
     private WrkDetlLogService wrkDetlLogService;
 
@@ -75,37 +69,39 @@
 
     @RequestMapping(value = "/locMast/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 Map<String, Object> param){
+    public R list(@RequestParam(defaultValue = "1") Integer curr,
+                  @RequestParam(defaultValue = "10") Integer limit,
+                  @RequestParam(required = false) String orderByField,
+                  @RequestParam(required = false) String orderByType,
+                  @RequestParam Map<String, Object> param) {
         excludeTrash(param);
         EntityWrapper<LocMast> wrapper = new EntityWrapper<>();
         convert(param, wrapper);
-        if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));}
+        if (!Cools.isEmpty(orderByField)) {
+            wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));
+        }
         return R.ok(locMastService.selectPage(new Page<>(curr, limit), wrapper));
     }
 
-    private <T> void convert(Map<String, Object> map, EntityWrapper<T> wrapper){
+    private <T> void convert(Map<String, Object> map, EntityWrapper<T> wrapper) {
         boolean sign = false;
-        for (Map.Entry<String, Object> entry : map.entrySet()){
+        for (Map.Entry<String, Object> entry : map.entrySet()) {
             String val = String.valueOf(entry.getValue());
-            if (val.contains(RANGE_TIME_LINK)){
+            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 if (entry.getKey().equals("loc_no")){
+            } else if (entry.getKey().equals("loc_no")) {
                 wrapper.like(entry.getKey(), val);
             } else {
-                if (entry.getKey().equals("loc_type1")){
-                    sign=true;
+                if (entry.getKey().equals("loc_type1")) {
+                    sign = true;
                 }
                 wrapper.eq(entry.getKey(), val);
             }
         }
-        if (sign){
-            wrapper.and().ne("loc_sts","Y");
+        if (sign) {
+            wrapper.and().ne("loc_sts", "Y");
         }
     }
 
@@ -120,19 +116,19 @@
         return R.ok();
     }
 
-	@RequestMapping(value = "/locMast/update/auth")
-	@ManagerAuth(memo = "搴撲綅淇敼")
-    public R update(LocMast locMast){
+    @RequestMapping(value = "/locMast/update/auth")
+    @ManagerAuth(memo = "搴撲綅淇敼")
+    public R update(LocMast locMast) {
 
-        if (Cools.isEmpty(locMast) || null==locMast.getLocNo()){
+        if (Cools.isEmpty(locMast) || null == locMast.getLocNo()) {
             return R.error();
         }
 
         WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>()
                 .eq("source_loc_no", locMast.getLocNo())
                 .or().eq("loc_no", locMast.getLocNo()));
-        if(!Cools.isEmpty(wrkMast)){
-            return  R.error("璇ュ簱浣嶆鍦ㄤ綔涓氾紝璇峰厛澶勭悊宸ヤ綔妗�");
+        if (!Cools.isEmpty(wrkMast)) {
+            return R.error("璇ュ簱浣嶆鍦ㄤ綔涓氾紝璇峰厛澶勭悊宸ヤ綔妗�");
         }
 
         LocMast oldLocMast = locMastService.selectById(locMast.getLocNo());
@@ -220,7 +216,7 @@
         if (locMast.getFrozen() == 1 && oldLocMast.getFrozen() == 0 && locMast.getLocSts().equals("F") && oldLocMast.getLocSts().equals("F")) {
             locDetlMapper.updateDetlFrozenByLocNo(oldLocMast.getLocNo());
         }
-        if(!locMastService.updateById(locMast)) {
+        if (!locMastService.updateById(locMast)) {
             throw new CoolException("鏈嶅姟鍣ㄩ敊璇紝璇疯仈绯荤鐞嗗憳");
         }
         return R.ok();
@@ -228,12 +224,12 @@
 
     @RequestMapping(value = "/locMast/delete/auth")
     @ManagerAuth(memo = "搴撲綅鍒犻櫎")
-    public R delete(@RequestParam String param){
+    public R delete(@RequestParam String param) {
         List<LocMast> list = JSONArray.parseArray(param, LocMast.class);
-        if (Cools.isEmpty(list)){
+        if (Cools.isEmpty(list)) {
             return R.error();
         }
-        for (LocMast entity : list){
+        for (LocMast entity : list) {
             locMastService.delete(new EntityWrapper<>(entity));
         }
         return R.ok();
@@ -241,7 +237,7 @@
 
     @RequestMapping(value = "/locMast/export/auth")
     @ManagerAuth(memo = "搴撲綅瀵煎嚭")
-    public R export(@RequestBody JSONObject param){
+    public R export(@RequestBody JSONObject param) {
         List<String> fields = JSONObject.parseArray(param.getJSONArray("fields").toJSONString(), String.class);
         EntityWrapper<LocMast> wrapper = new EntityWrapper<>();
         Map<String, Object> map = excludeTrash(param.getJSONObject("locMast"));
@@ -257,7 +253,7 @@
         wrapper.like("loc_no", condition);
         Page<LocMast> page = locMastService.selectPage(new Page<>(0, 10), wrapper);
         List<Map<String, Object>> result = new ArrayList<>();
-        for (LocMast locMast : page.getRecords()){
+        for (LocMast locMast : page.getRecords()) {
             Map<String, Object> map = new HashMap<>();
             map.put("id", locMast.getLocNo());
             map.put("value", locMast.getLocNo());
@@ -270,7 +266,7 @@
     @ManagerAuth
     public R query(@RequestBody JSONObject param) {
         Wrapper<LocMast> wrapper = new EntityWrapper<LocMast>().eq(humpToLine(String.valueOf(param.get("key"))), param.get("val"));
-        if (null != locMastService.selectOne(wrapper)){
+        if (null != locMastService.selectOne(wrapper)) {
             return R.parse(BaseRes.REPEAT).add(getComment(LocMast.class, String.valueOf(param.get("key"))));
         }
         return R.ok();
@@ -280,38 +276,36 @@
     @ManagerAuth(memo = "鍒濆鍖栧簱浣�")
 //    @Transactional
     public R init(LocMastInitParam param) {
-        try{
+        try {
             List<LocMast> list = new ArrayList<>();
-            BasWhs basWhs = basWhsService.selectByIdentifying(param.getIdentifying());
-            if (Cools.isEmpty(basWhs)){
+            BasWhsType basWhsType = basWhsTypeService.selectByIdentifying(param.getIdentifying());
+            if (Cools.isEmpty(basWhsType)) {
                 return R.error("搴撳瀷涓嶅瓨鍦紒锛侊紒");
             }
-            for (int r=param.getStartRow(); r<=param.getEndRow(); r++){
-                for (int b=param.getStartBay(); b<=param.getEndBay(); b++) {
-                    for (int l=param.getStartLev(); l<=param.getEndLev(); l++) {
+            for (int r = param.getStartRow(); r <= param.getEndRow(); r++) {
+                for (int b = param.getStartBay(); b <= param.getEndBay(); b++) {
+                    for (int l = param.getStartLev(); l <= param.getEndLev(); l++) {
                         // 鑾峰彇搴撲綅鍙�
                         String locNo = String.format("%02d", r) + String.format("%03d", b) + String.format("%02d", l);
                         // 鑾峰彇鍫嗗灈鏈哄彿
                         int crnNo = 0;
-                        try{
-                            Shelves shelves = new Shelves(param.getEndRow() - param.getStartRow() + 1, param.getCrnAmount(),param.getStartRow());
-                            for (List<Integer> node : shelves.nodes){
-
+                        try {
+                            Shelves shelves = new Shelves(param.getEndRow() - param.getStartRow() + 1, param.getCrnAmount(), param.getStartRow());
+                            for (List<Integer> node : shelves.nodes) {
                                 if (node.contains(r)) {
-                                    if (!Cools.isEmpty(param.getStaCrn()) && param.getStaCrn() > 0){
+                                    if (!Cools.isEmpty(param.getStaCrn()) && param.getStaCrn() > 0) {
                                         crnNo = shelves.nodes.indexOf(node) + param.getStaCrn();
-                                    }else {
+                                    } else {
                                         crnNo = shelves.nodes.indexOf(node) + 1;
                                     }
-
                                     break;
                                 }
                             }
-                        }catch (Exception e){
+                        } catch (Exception e) {
                             throw new Exception("瑙f瀽鍫嗗灈鏈哄彿澶辫触锛岃濉啓姝g‘鐨勬暟鎹�!!!");
                         }
 
-                        Date now =  new Date();
+                        Date now = new Date();
                         LocMast locMast = new LocMast();
                         locMast.setLocNo(locNo);
                         locMast.setLocSts("O");
@@ -327,18 +321,18 @@
                         locMast.setAppeTime(now);
                         locMast.setModiUser(getUserId());
                         locMast.setModiTime(now);
-                        locMast.setWhsType(basWhs.getId());
+                        locMast.setWhsType(basWhsType.getId());
                         list.add(locMast);
                     }
                 }
             }
-            if (!Cools.isEmpty(param.getEnable()) && param.getEnable() == 1){
+            if (!Cools.isEmpty(param.getEnable()) && param.getEnable() == 1) {
                 locMastService.delete(new EntityWrapper<>());
             }
             locMastService.insertBatch(list);
             return R.ok("鍒濆鍖栨垚鍔�");
-        }catch (Exception e){
-            return R.error("鍒濆鍖栧け璐�===>"+e.getMessage());
+        } catch (Exception e) {
+            return R.error("鍒濆鍖栧け璐�===>" + e.getMessage());
         }
     }
 }
diff --git a/src/main/java/com/zy/asrs/controller/MobileController.java b/src/main/java/com/zy/asrs/controller/MobileController.java
index 6a9a1e9..50b43af 100644
--- a/src/main/java/com/zy/asrs/controller/MobileController.java
+++ b/src/main/java/com/zy/asrs/controller/MobileController.java
@@ -16,6 +16,7 @@
 import com.zy.asrs.utils.OrderInAndOutUtil;
 import com.zy.common.model.WrkDto;
 import com.zy.common.web.BaseController;
+import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
@@ -138,6 +139,25 @@
     }
 
 
+    @GetMapping("/cache/locs")
+    @ManagerAuth
+    @ApiOperation("鑾峰彇缂撳瓨鍖哄簱浣嶄俊鎭�")
+    public R getCacheLocs() {
+        return mobileService.getCacheLocs();
+    }
+
+
+    @PostMapping("/cache/agv/call")
+    @ApiOperation("鍛煎彨AGV鎼繍")
+    @ManagerAuth
+    public R callAgvMove(@RequestBody AgvCallParams params) {
+        if (Objects.isNull(params)) {
+            return R.error("鍙傛暟涓嶈兘涓虹┖锛侊紒");
+        }
+        return mobileService.callAgvMove(params, getUserId());
+    }
+
+
 
     // 缁勬墭 ----------------------------------------------------------------------------------------------------
 
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/controller/TaskDetlLogController.java b/src/main/java/com/zy/asrs/controller/TaskDetlLogController.java
new file mode 100644
index 0000000..3622acc
--- /dev/null
+++ b/src/main/java/com/zy/asrs/controller/TaskDetlLogController.java
@@ -0,0 +1,127 @@
+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.TaskDetlLog;
+import com.zy.asrs.service.TaskDetlLogService;
+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 TaskDetlLogController extends BaseController {
+
+    @Autowired
+    private TaskDetlLogService taskDetlLogService;
+
+    @RequestMapping(value = "/taskDetlLog/{id}/auth")
+    @ManagerAuth
+    public R get(@PathVariable("id") String id) {
+        return R.ok(taskDetlLogService.selectById(String.valueOf(id)));
+    }
+
+    @RequestMapping(value = "/taskDetlLog/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<TaskDetlLog> wrapper = new EntityWrapper<>();
+        excludeTrash(param);
+        convert(param, wrapper);
+        allLike(TaskDetlLog.class, param.keySet(), wrapper, condition);
+        if (!Cools.isEmpty(orderByField)) {
+            wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));
+        }
+        return R.ok(taskDetlLogService.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 = "/taskDetlLog/add/auth")
+    @ManagerAuth
+    public R add(TaskDetlLog taskDetlLog) {
+        taskDetlLogService.insert(taskDetlLog);
+        return R.ok();
+    }
+
+    @RequestMapping(value = "/taskDetlLog/update/auth")
+    @ManagerAuth
+    public R update(TaskDetlLog taskDetlLog) {
+        if (Cools.isEmpty(taskDetlLog) || null == taskDetlLog.getId()) {
+            return R.error();
+        }
+        taskDetlLogService.updateById(taskDetlLog);
+        return R.ok();
+    }
+
+    @RequestMapping(value = "/taskDetlLog/delete/auth")
+    @ManagerAuth
+    public R delete(@RequestParam(value = "ids[]") Long[] ids) {
+        for (Long id : ids) {
+            taskDetlLogService.deleteById(id);
+        }
+        return R.ok();
+    }
+
+    @RequestMapping(value = "/taskDetlLog/export/auth")
+    @ManagerAuth
+    public R export(@RequestBody JSONObject param) {
+        EntityWrapper<TaskDetlLog> wrapper = new EntityWrapper<>();
+        List<String> fields = JSONObject.parseArray(param.getJSONArray("fields").toJSONString(), String.class);
+        Map<String, Object> map = excludeTrash(param.getJSONObject("taskDetlLog"));
+        convert(map, wrapper);
+        List<TaskDetlLog> list = taskDetlLogService.selectList(wrapper);
+        return R.ok(exportSupport(list, fields));
+    }
+
+    @RequestMapping(value = "/taskDetlLogQuery/auth")
+    @ManagerAuth
+    public R query(String condition) {
+        EntityWrapper<TaskDetlLog> wrapper = new EntityWrapper<>();
+        wrapper.like("id", condition);
+        Page<TaskDetlLog> page = taskDetlLogService.selectPage(new Page<>(0, 10), wrapper);
+        List<Map<String, Object>> result = new ArrayList<>();
+        for (TaskDetlLog taskDetlLog : page.getRecords()) {
+            Map<String, Object> map = new HashMap<>();
+            map.put("id", taskDetlLog.getId());
+            map.put("value", taskDetlLog.getId());
+            result.add(map);
+        }
+        return R.ok(result);
+    }
+
+    @RequestMapping(value = "/taskDetlLog/check/column/auth")
+    @ManagerAuth
+    public R query(@RequestBody JSONObject param) {
+        Wrapper<TaskDetlLog> wrapper = new EntityWrapper<TaskDetlLog>().eq(humpToLine(String.valueOf(param.get("key"))), param.get("val"));
+        if (null != taskDetlLogService.selectOne(wrapper)) {
+            return R.parse(BaseRes.REPEAT).add(getComment(TaskDetlLog.class, String.valueOf(param.get("key"))));
+        }
+        return R.ok();
+    }
+
+}
diff --git a/src/main/java/com/zy/asrs/controller/TaskLogController.java b/src/main/java/com/zy/asrs/controller/TaskLogController.java
new file mode 100644
index 0000000..1c642ba
--- /dev/null
+++ b/src/main/java/com/zy/asrs/controller/TaskLogController.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.TaskLog;
+import com.zy.asrs.service.TaskLogService;
+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 TaskLogController extends BaseController {
+
+    @Autowired
+    private TaskLogService taskLogService;
+
+    @RequestMapping(value = "/taskLog/{id}/auth")
+    @ManagerAuth
+    public R get(@PathVariable("id") String id) {
+        return R.ok(taskLogService.selectById(String.valueOf(id)));
+    }
+
+    @RequestMapping(value = "/taskLog/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<TaskLog> wrapper = new EntityWrapper<>();
+        excludeTrash(param);
+        convert(param, wrapper);
+        allLike(TaskLog.class, param.keySet(), wrapper, condition);
+        if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));}
+        return R.ok(taskLogService.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 = "/taskLog/add/auth")
+    @ManagerAuth
+    public R add(TaskLog taskLog) {
+        taskLogService.insert(taskLog);
+        return R.ok();
+    }
+
+	@RequestMapping(value = "/taskLog/update/auth")
+	@ManagerAuth
+    public R update(TaskLog taskLog){
+        if (Cools.isEmpty(taskLog) || null==taskLog.getId()){
+            return R.error();
+        }
+        taskLogService.updateById(taskLog);
+        return R.ok();
+    }
+
+    @RequestMapping(value = "/taskLog/delete/auth")
+    @ManagerAuth
+    public R delete(@RequestParam(value="ids[]") Long[] ids){
+         for (Long id : ids){
+            taskLogService.deleteById(id);
+        }
+        return R.ok();
+    }
+
+    @RequestMapping(value = "/taskLog/export/auth")
+    @ManagerAuth
+    public R export(@RequestBody JSONObject param){
+        EntityWrapper<TaskLog> wrapper = new EntityWrapper<>();
+        List<String> fields = JSONObject.parseArray(param.getJSONArray("fields").toJSONString(), String.class);
+        Map<String, Object> map = excludeTrash(param.getJSONObject("taskLog"));
+        convert(map, wrapper);
+        List<TaskLog> list = taskLogService.selectList(wrapper);
+        return R.ok(exportSupport(list, fields));
+    }
+
+    @RequestMapping(value = "/taskLogQuery/auth")
+    @ManagerAuth
+    public R query(String condition) {
+        EntityWrapper<TaskLog> wrapper = new EntityWrapper<>();
+        wrapper.like("id", condition);
+        Page<TaskLog> page = taskLogService.selectPage(new Page<>(0, 10), wrapper);
+        List<Map<String, Object>> result = new ArrayList<>();
+        for (TaskLog taskLog : page.getRecords()){
+            Map<String, Object> map = new HashMap<>();
+            map.put("id", taskLog.getId());
+            map.put("value", taskLog.getId());
+            result.add(map);
+        }
+        return R.ok(result);
+    }
+
+    @RequestMapping(value = "/taskLog/check/column/auth")
+    @ManagerAuth
+    public R query(@RequestBody JSONObject param) {
+        Wrapper<TaskLog> wrapper = new EntityWrapper<TaskLog>().eq(humpToLine(String.valueOf(param.get("key"))), param.get("val"));
+        if (null != taskLogService.selectOne(wrapper)){
+            return R.parse(BaseRes.REPEAT).add(getComment(TaskLog.class, String.valueOf(param.get("key"))));
+        }
+        return R.ok();
+    }
+
+}
diff --git a/src/main/java/com/zy/asrs/entity/BasAreas.java b/src/main/java/com/zy/asrs/entity/BasAreas.java
new file mode 100644
index 0000000..82633b6
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/BasAreas.java
@@ -0,0 +1,144 @@
+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 java.text.SimpleDateFormat;
+import java.util.Date;
+
+import com.zy.asrs.service.BasWhsTypeService;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import com.baomidou.mybatisplus.annotations.TableName;
+import java.io.Serializable;
+
+@Data
+@TableName("asr_bas_areas")
+public class BasAreas implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value= "")
+    @TableId(value = "id", type = IdType.INPUT)
+    private Long id;
+
+    /**
+     * 浠撳簱ID
+     */
+    @ApiModelProperty(value= "浠撳簱ID")
+    @TableField("whs_id")
+    private Long whsId;
+
+    /**
+     * 浠撳簱鍚嶇О
+     */
+    @ApiModelProperty(value= "浠撳簱鍚嶇О")
+    @TableField("whs_name")
+    private String whsName;
+
+    /**
+     * 搴撳尯鍚嶇О
+     */
+    @ApiModelProperty(value= "搴撳尯鍚嶇О")
+    private String name;
+
+    /**
+     * 浠撳簱绫诲瀷
+     */
+    @ApiModelProperty(value= "浠撳簱绫诲瀷")
+    @TableField("whs_type_id")
+    private Long whsTypeId;
+
+    /**
+     * 搴撳尯缂栫爜
+     */
+    @ApiModelProperty(value= "搴撳尯缂栫爜")
+    @TableField("area_no")
+    private String areaNo;
+
+    /**
+     * 鍒涘缓鏃堕棿
+     */
+    @ApiModelProperty(value= "鍒涘缓鏃堕棿")
+    @TableField("create_time")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    private Date createTime;
+
+    /**
+     * 淇敼鏃堕棿
+     */
+    @ApiModelProperty(value= "淇敼鏃堕棿")
+    @TableField("update_time")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    private Date updateTime;
+
+    /**
+     * 鍒涘缓浜哄憳
+     */
+    @ApiModelProperty(value= "鍒涘缓浜哄憳")
+    @TableField("create_by")
+    private String createBy;
+
+    /**
+     * 淇敼浜哄憳
+     */
+    @ApiModelProperty(value= "淇敼浜哄憳")
+    @TableField("update_by")
+    private String updateBy;
+
+    public BasAreas() {}
+
+    public BasAreas(Long id,Long whsId,String whsName,String name,Long whsTypeId,String areaNo,Date createTime,Date updateTime,String createBy,String updateBy) {
+        this.id = id;
+        this.whsId = whsId;
+        this.whsName = whsName;
+        this.name = name;
+        this.whsTypeId = whsTypeId;
+        this.areaNo = areaNo;
+        this.createTime = createTime;
+        this.updateTime = updateTime;
+        this.createBy = createBy;
+        this.updateBy = updateBy;
+    }
+
+//    BasAreas basAreas = new BasAreas(
+//            null,    // [闈炵┖]
+//            null,    // 浠撳簱ID
+//            null,    // 浠撳簱鍚嶇О
+//            null,    // 搴撳尯鍚嶇О
+//            null,    // 浠撳簱绫诲瀷
+//            null,    // 搴撳尯缂栫爜
+//            null,    // 鍒涘缓鏃堕棿
+//            null,    // 淇敼鏃堕棿
+//            null,    // 鍒涘缓浜哄憳
+//            null    // 淇敼浜哄憳
+//    );
+
+    public String getWhsTypeId$(){
+        BasWhsTypeService service = SpringUtils.getBean(BasWhsTypeService.class);
+        BasWhsType basWhsType = service.selectById(this.whsTypeId);
+        if (!Cools.isEmpty(basWhsType)){
+            return String.valueOf(basWhsType.getWhsDesc());
+        }
+        return null;
+    }
+
+    public String getCreateTime$(){
+        if (Cools.isEmpty(this.createTime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.createTime);
+    }
+
+    public String getUpdateTime$(){
+        if (Cools.isEmpty(this.updateTime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.updateTime);
+    }
+
+
+}
diff --git a/src/main/java/com/zy/asrs/entity/BasStation.java b/src/main/java/com/zy/asrs/entity/BasStation.java
new file mode 100644
index 0000000..fc6a71e
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/BasStation.java
@@ -0,0 +1,378 @@
+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 Integer 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= "")
+    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;
+
+    public BasStation() {}
+
+    public BasStation(Integer 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,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) {
+        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.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;
+    }
+
+//    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    // 閲嶉噺
+//    );
+
+    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 getModiUser$(){
+        UserService service = SpringUtils.getBean(UserService.class);
+        User user = service.selectById(this.modiUser);
+        if (!Cools.isEmpty(user)){
+            return String.valueOf(user.getNickname());
+        }
+        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.getNickname());
+        }
+        return null;
+    }
+
+    public String getAppeTime$(){
+        if (Cools.isEmpty(this.appeTime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.appeTime);
+    }
+
+
+}
diff --git a/src/main/java/com/zy/asrs/entity/BasWhs.java b/src/main/java/com/zy/asrs/entity/BasWhsType.java
similarity index 94%
rename from src/main/java/com/zy/asrs/entity/BasWhs.java
rename to src/main/java/com/zy/asrs/entity/BasWhsType.java
index 1945dc2..b2094ca 100644
--- a/src/main/java/com/zy/asrs/entity/BasWhs.java
+++ b/src/main/java/com/zy/asrs/entity/BasWhsType.java
@@ -14,8 +14,8 @@
 import java.text.SimpleDateFormat;
 import java.util.Date;
 
-@TableName("asr_bas_whs")
-public class BasWhs implements Serializable {
+@TableName("asr_bas_whs_type")
+public class BasWhsType implements Serializable {
 
     private static final long serialVersionUID = 1L;
 
@@ -67,9 +67,9 @@
     @ApiModelProperty(value= "鏍囪瘑")
     private String identifying;
 
-    public BasWhs() {}
+    public BasWhsType() {}
 
-    public BasWhs(String whsDesc,Long modiUser,Date modiTime,Long appeUser,Date appeTime) {
+    public BasWhsType(String whsDesc, Long modiUser, Date modiTime, Long appeUser, Date appeTime) {
         this.whsDesc = whsDesc;
         this.modiUser = modiUser;
         this.modiTime = modiTime;
diff --git a/src/main/java/com/zy/asrs/entity/LocCache.java b/src/main/java/com/zy/asrs/entity/LocCache.java
new file mode 100644
index 0000000..8fad291
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/LocCache.java
@@ -0,0 +1,326 @@
+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.asrs.enums.LocStsType;
+import com.zy.asrs.service.BasWhsTypeService;
+import com.zy.asrs.service.BasCrnpService;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import org.springframework.format.annotation.DateTimeFormat;
+import com.zy.system.service.UserService;
+import com.zy.system.entity.User;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import com.baomidou.mybatisplus.annotations.TableName;
+import java.io.Serializable;
+
+@Data
+@TableName("asr_loc_cache")
+public class LocCache implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+
+    @ApiModelProperty("涓婚敭ID")
+    @TableId
+    private Long id;
+
+    /**
+     * 搴撲綅鍙�
+     */
+    @ApiModelProperty(value= "搴撲綅鍙�")
+    @TableField("loc_no")
+    private String locNo;
+
+    /**
+     * 搴撲綅绫诲瀷
+     */
+    @ApiModelProperty(value= "搴撲綅绫诲瀷")
+    @TableField("whs_type")
+    private Long whsType;
+
+    @ApiModelProperty(value= "")
+    @TableField("loc_sts")
+    private String locSts;
+
+    /**
+     * 鎺�
+     */
+    @ApiModelProperty(value= "鎺�")
+    private Integer row1;
+
+    /**
+     * 鍒�
+     */
+    @ApiModelProperty(value= "鍒�")
+    private Integer bay1;
+
+    /**
+     * 灞�
+     */
+    @ApiModelProperty(value= "灞�")
+    private Integer lev1;
+
+    /**
+     * 婊℃澘(checkBox)
+     */
+    @ApiModelProperty(value= "婊℃澘(checkBox)")
+    @TableField("full_plt")
+    private String fullPlt;
+
+    /**
+     * 搴撲綅鐘舵��
+     */
+    @ApiModelProperty(value= "搴撲綅鐘舵��")
+    @TableField("loc_type")
+    private String locType;
+
+    /**
+     * 楂樹綆绫诲瀷 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("out_enable")
+    private String outEnable;
+
+    @ApiModelProperty(value= "")
+    @TableField("io_time")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    private Date ioTime;
+
+    @ApiModelProperty(value= "")
+    @TableField("first_time")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    private Date firstTime;
+
+    /**
+     * 淇敼浜哄憳
+     */
+    @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 barcode;
+
+    @ApiModelProperty("搴撳尯ID")
+    @TableField("area_id")
+    private Long areaId;
+
+    @ApiModelProperty("搴撳尯鍚嶇О")
+    @TableField("area_name")
+    private String areaName;
+
+    @ApiModelProperty("浼樺厛绾�")
+    private Integer sort;
+
+    /**
+     * 鏄惁鍐荤粨,0.鏈喕缁擄紝1.宸插喕缁�
+     */
+    @ApiModelProperty(value= "鏄惁鍐荤粨,0.鏈喕缁擄紝1.宸插喕缁�")
+    private Integer frozen;
+
+    /**
+     * 鍐荤粨澶囨敞
+     */
+    @ApiModelProperty(value= "鍐荤粨澶囨敞")
+    @TableField("frozen_memo")
+    private String frozenMemo;
+
+    public LocCache() {}
+
+    public LocCache(String locNo,Long whsType,Integer pltType,Integer ctnType,String locSts,String sheetNo,Integer crnNo,Integer row1,Integer bay1,Integer lev1,String fullPlt,String locType,Short locType1,Short locType2,Short locType3,String outEnable,Date ioTime,Date firstTime,Long modiUser,Date modiTime,Long appeUser,Date appeTime,Date errorTime,String errorMemo,Integer ctnKind,Double scWeight,String invWh,String mk,String barcode,String PdcType,String ctnNo,Integer libraryType,Integer gro1,Integer frozen,String frozenMemo) {
+        this.locNo = locNo;
+        this.whsType = whsType;
+        this.locSts = locSts;
+        this.row1 = row1;
+        this.bay1 = bay1;
+        this.lev1 = lev1;
+        this.fullPlt = fullPlt;
+        this.locType = locType;
+        this.locType1 = locType1;
+        this.locType2 = locType2;
+        this.locType3 = locType3;
+        this.outEnable = outEnable;
+        this.ioTime = ioTime;
+        this.firstTime = firstTime;
+        this.modiUser = modiUser;
+        this.modiTime = modiTime;
+        this.appeUser = appeUser;
+        this.appeTime = appeTime;
+        this.barcode = barcode;
+        this.frozen = frozen;
+        this.frozenMemo = frozenMemo;
+    }
+
+
+    public String getWhsType$(){
+        BasWhsTypeService service = SpringUtils.getBean(BasWhsTypeService.class);
+        BasWhsType basWhsType = service.selectById(this.whsType);
+        if (!Cools.isEmpty(basWhsType)){
+            return String.valueOf(basWhsType.getWhsDesc());
+        }
+        return null;
+    }
+
+    public String getLocSts$() {
+        if (this.locSts.equals(LocStsType.LOC_STS_TYPE_F.type)) {
+            return LocStsType.LOC_STS_TYPE_F.desc;
+        } else if (locSts.equals(LocStsType.LOC_STS_TYPE_D.type)) {
+            return LocStsType.LOC_STS_TYPE_D.desc;
+        } else if (locSts.equals(LocStsType.LOC_STS_TYPE_O.type)) {
+            return LocStsType.LOC_STS_TYPE_F.desc;
+        } else if (locSts.equals(LocStsType.LOC_STS_TYPE_R.type)) {
+            return LocStsType.LOC_STS_TYPE_R.desc;
+        } else if (locSts.equals(LocStsType.LOC_STS_TYPE_S.type)) {
+            return LocStsType.LOC_STS_TYPE_S.desc;
+        } else if (locSts.equals(LocStsType.LOC_STS_TYPE_X.type)) {
+            return LocStsType.LOC_STS_TYPE_X.desc;
+        } else {
+            return null;
+        }
+    }
+
+//    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 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 getIoTime$(){
+        if (Cools.isEmpty(this.ioTime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.ioTime);
+    }
+
+    public String getFirstTime$(){
+        if (Cools.isEmpty(this.firstTime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.firstTime);
+    }
+
+    public String getModiUser$(){
+        UserService service = SpringUtils.getBean(UserService.class);
+        User user = service.selectById(this.modiUser);
+        if (!Cools.isEmpty(user)){
+            return String.valueOf(user.getNickname());
+        }
+        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.getNickname());
+        }
+        return null;
+    }
+
+    public String getAppeTime$(){
+        if (Cools.isEmpty(this.appeTime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.appeTime);
+    }
+
+}
diff --git a/src/main/java/com/zy/asrs/entity/LocDetl.java b/src/main/java/com/zy/asrs/entity/LocDetl.java
index 129453c..c95626c 100644
--- a/src/main/java/com/zy/asrs/entity/LocDetl.java
+++ b/src/main/java/com/zy/asrs/entity/LocDetl.java
@@ -3,6 +3,7 @@
 import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
 import com.alibaba.excel.annotation.ExcelProperty;
 import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.annotations.TableId;
 import com.baomidou.mybatisplus.annotations.TableName;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.core.common.Cools;
@@ -16,6 +17,7 @@
 import com.zy.system.service.UserService;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
+import lombok.experimental.Accessors;
 
 import java.io.Serializable;
 import java.text.SimpleDateFormat;
@@ -23,15 +25,28 @@
 
 @Data
 @TableName("asr_loc_detl")
+@Accessors(chain = true)
 @ExcelIgnoreUnannotated
 public class LocDetl implements Serializable {
 
     private static final long serialVersionUID = 1L;
 
+    @TableId
+    private Long id;
+
+    @TableField("loc_id")
+    private Long locId;
+
     @ApiModelProperty(value= "搴撲綅鍙�")
     @TableField("loc_no")
     private String locNo;
 
+    @ApiModelProperty("area_id")
+    private Long areaId;
+
+    @ApiModelProperty("area_name")
+    private String areaName;
+
     @ApiModelProperty(value= "鎵樼洏鏉$爜")
     private String zpallet;
 
diff --git a/src/main/java/com/zy/asrs/entity/LocMast.java b/src/main/java/com/zy/asrs/entity/LocMast.java
index ffca642..7eaa33e 100644
--- a/src/main/java/com/zy/asrs/entity/LocMast.java
+++ b/src/main/java/com/zy/asrs/entity/LocMast.java
@@ -5,7 +5,7 @@
 import com.baomidou.mybatisplus.annotations.TableName;
 import com.baomidou.mybatisplus.enums.IdType;
 import com.zy.asrs.service.BasLocStsService;
-import com.zy.asrs.service.BasWhsService;
+import com.zy.asrs.service.BasWhsTypeService;
 import com.zy.system.entity.User;
 import com.zy.system.service.UserService;
 import com.core.common.Cools;
@@ -197,10 +197,10 @@
 
 
     public String getWhsType$(){
-        BasWhsService service = SpringUtils.getBean(BasWhsService.class);
-        BasWhs basWhs = service.selectById(this.whsType);
-        if (!Cools.isEmpty(basWhs)){
-            return String.valueOf(basWhs.getWhsDesc());
+        BasWhsTypeService service = SpringUtils.getBean(BasWhsTypeService.class);
+        BasWhsType basWhsType = service.selectById(this.whsType);
+        if (!Cools.isEmpty(basWhsType)){
+            return String.valueOf(basWhsType.getWhsDesc());
         }
         return null;
     }
diff --git a/src/main/java/com/zy/asrs/entity/OrderDetl.java b/src/main/java/com/zy/asrs/entity/OrderDetl.java
index aa96844..006c610 100644
--- a/src/main/java/com/zy/asrs/entity/OrderDetl.java
+++ b/src/main/java/com/zy/asrs/entity/OrderDetl.java
@@ -15,12 +15,14 @@
 import com.zy.system.service.UserService;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
+import org.springframework.beans.BeanUtils;
 import org.springframework.format.annotation.DateTimeFormat;
 
 import java.io.Serializable;
 import java.text.SimpleDateFormat;
 import java.util.Date;
 import java.util.List;
+import java.util.Objects;
 
 @Data
 @TableName("man_order_detl")
@@ -628,7 +630,9 @@
     }
 
     public void sync(Object source) {
-        Synchro.Copy(source, this);
+        if (!Objects.isNull(source)) {
+            BeanUtils.copyProperties(source, this);
+        }
     }
 
 }
\ No newline at end of file
diff --git a/src/main/java/com/zy/asrs/entity/OrderDetlPakin.java b/src/main/java/com/zy/asrs/entity/OrderDetlPakin.java
index 19ed434..935e58b 100644
--- a/src/main/java/com/zy/asrs/entity/OrderDetlPakin.java
+++ b/src/main/java/com/zy/asrs/entity/OrderDetlPakin.java
@@ -20,6 +20,7 @@
 import java.io.Serializable;
 import java.text.SimpleDateFormat;
 import java.util.Date;
+import java.util.Objects;
 
 @Data
 @TableName("man_order_detl_pakin")
@@ -418,6 +419,7 @@
     }
 
     public String getPakinPakoutStatus$(){
+        if (Objects.isNull(pakinPakoutStatus)) {return  null;}
         switch (this.pakinPakoutStatus){
             case 1:
                 return "Y";
@@ -467,6 +469,7 @@
         }
     }
 
+
     public String getStatus$(){
         if (null == this.status){ return null; }
         switch (this.status){
@@ -515,9 +518,6 @@
         if (null != this.anfme && this.workQty != null) {
             return this.anfme - this.workQty;
         }
-//        if (null != this.anfme && this.qty != null) {
-//            return this.anfme - this.qty;
-//        }
         return null;
     }
 
diff --git a/src/main/java/com/zy/asrs/entity/RowLastno.java b/src/main/java/com/zy/asrs/entity/RowLastno.java
index e4dedf1..3da10a7 100644
--- a/src/main/java/com/zy/asrs/entity/RowLastno.java
+++ b/src/main/java/com/zy/asrs/entity/RowLastno.java
@@ -4,7 +4,7 @@
 import com.baomidou.mybatisplus.annotations.TableId;
 import com.baomidou.mybatisplus.annotations.TableName;
 import com.baomidou.mybatisplus.enums.IdType;
-import com.zy.asrs.service.BasWhsService;
+import com.zy.asrs.service.BasWhsTypeService;
 import com.zy.asrs.service.RowLastnoTypeService;
 import com.zy.system.entity.User;
 import com.zy.system.service.UserService;
@@ -383,10 +383,10 @@
     public String getTypeId$() {
         RowLastnoTypeService rowLastnoTypeService = SpringUtils.getBean(RowLastnoTypeService.class);
         RowLastnoType rowLastnoType = rowLastnoTypeService.selectById(this.typeId.longValue());
-        BasWhsService basWhsService = SpringUtils.getBean(BasWhsService.class);
-        BasWhs basWhs = basWhsService.selectById(rowLastnoType.getType().longValue());
+        BasWhsTypeService basWhsTypeService = SpringUtils.getBean(BasWhsTypeService.class);
+        BasWhsType basWhsType = basWhsTypeService.selectById(rowLastnoType.getType().longValue());
         if (!Cools.isEmpty(rowLastnoType)){
-            return rowLastnoType.getTypeName()+"<==>"+rowLastnoType.getMemo()+"<==>"+basWhs.getWhsDesc();
+            return rowLastnoType.getTypeName()+"<==>"+rowLastnoType.getMemo()+"<==>"+ basWhsType.getWhsDesc();
         }
         return typeId.toString();
     }
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..25536fb
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/Task.java
@@ -0,0 +1,40 @@
+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 io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import com.baomidou.mybatisplus.annotations.TableName;
+import java.io.Serializable;
+
+@Data
+@TableName("agv_task")
+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;
+
+    public Task() {}
+
+    public Task(String taskType) {
+        this.taskType = taskType;
+    }
+
+//    Task task = new Task(
+//            null    // 浠诲姟绫诲瀷锛� agv  , crn
+//    );
+
+
+}
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..cde2747
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/TaskDetl.java
@@ -0,0 +1,500 @@
+package com.zy.asrs.entity;
+
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.core.common.Cools;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;
+
+    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(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.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,    // 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 getModiUser$(){
+        UserService service = SpringUtils.getBean(UserService.class);
+        User user = service.selectById(this.modiUser);
+        if (!Cools.isEmpty(user)){
+            return String.valueOf(user.getNickname());
+        }
+        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.getNickname());
+        }
+        return null;
+    }
+
+    public String getAppeTime$(){
+        if (Cools.isEmpty(this.appeTime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.appeTime);
+    }
+
+
+}
diff --git a/src/main/java/com/zy/asrs/entity/TaskDetlLog.java b/src/main/java/com/zy/asrs/entity/TaskDetlLog.java
new file mode 100644
index 0000000..52bb660
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/TaskDetlLog.java
@@ -0,0 +1,502 @@
+package com.zy.asrs.entity;
+
+import com.core.common.Cools;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_log")
+public class TaskDetlLog implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    private Long id;
+
+    @TableField("log_id")
+    private Long logId;
+
+    /**
+     * 宸ヤ綔鍙�
+     */
+    @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 TaskDetlLog() {}
+
+    public TaskDetlLog(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.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;
+    }
+
+//    TaskDetlLog taskDetlLog = new TaskDetlLog(
+//            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 getModiUser$(){
+        UserService service = SpringUtils.getBean(UserService.class);
+        User user = service.selectById(this.modiUser);
+        if (!Cools.isEmpty(user)){
+            return String.valueOf(user.getNickname());
+        }
+        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.getNickname());
+        }
+        return null;
+    }
+
+    public String getAppeTime$(){
+        if (Cools.isEmpty(this.appeTime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.appeTime);
+    }
+
+
+}
diff --git a/src/main/java/com/zy/asrs/entity/TaskLog.java b/src/main/java/com/zy/asrs/entity/TaskLog.java
new file mode 100644
index 0000000..47d9f5c
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/TaskLog.java
@@ -0,0 +1,686 @@
+package com.zy.asrs.entity;
+
+import com.core.common.Cools;import com.core.common.SpringUtils;
+import com.zy.asrs.service.WrkMastService;
+import com.zy.asrs.entity.WrkMast;
+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.asrs.service.BasWrkStatusService;
+import com.zy.asrs.entity.BasWrkStatus;
+import com.core.common.SpringUtils;
+import com.zy.asrs.service.BasWrkIotypeService;
+import com.zy.asrs.entity.BasWrkIotype;
+import com.core.common.SpringUtils;
+import com.zy.asrs.service.BasCrnpService;
+import com.zy.asrs.entity.BasCrnp;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import com.core.common.SpringUtils;
+import com.zy.asrs.service.LocMastService;
+import com.zy.asrs.entity.LocMast;
+import com.core.common.SpringUtils;
+import com.zy.asrs.service.BasDevpService;
+import com.zy.asrs.entity.BasDevp;
+import com.core.common.SpringUtils;
+import com.zy.asrs.service.BasDevpService;
+import com.zy.asrs.entity.BasDevp;
+import com.core.common.SpringUtils;
+import com.zy.asrs.service.LocMastService;
+import com.zy.asrs.entity.LocMast;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import com.core.common.SpringUtils;
+import com.zy.system.service.UserService;
+import com.zy.system.entity.User;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import com.core.common.SpringUtils;
+import com.zy.system.service.UserService;
+import com.zy.system.entity.User;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+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_log")
+public class TaskLog implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value= "")
+    private Long id;
+
+    /**
+     * 宸ヤ綔鍙�
+     */
+    @ApiModelProperty(value= "宸ヤ綔鍙�")
+    @TableField("wrk_no")
+    private Integer wrkNo;
+
+    @ApiModelProperty(value= "")
+    @TableField("log_id")
+    private Long logId;
+
+    @ApiModelProperty(value= "")
+    @TableField("inv_wh")
+    private String invWh;
+
+    @ApiModelProperty(value= "")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    private Date ymd;
+
+    @ApiModelProperty(value= "")
+    private String mk;
+
+    @ApiModelProperty(value= "")
+    @TableField("whs_type")
+    private Integer whsType;
+
+    /**
+     * 宸ヤ綔鐘舵��
+     */
+    @ApiModelProperty(value= "宸ヤ綔鐘舵��")
+    @TableField("wrk_sts")
+    private Integer 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")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    private Date wrkDate;
+
+    /**
+     * 鐩爣搴撲綅
+     */
+    @ApiModelProperty(value= "鐩爣搴撲綅")
+    @TableField("loc_no")
+    private String locNo;
+
+    /**
+     * 鐩爣绔�
+     */
+    @ApiModelProperty(value= "鐩爣绔�")
+    @TableField("sta_no")
+    private Integer staNo;
+
+    /**
+     * 婧愮珯
+     */
+    @ApiModelProperty(value= "婧愮珯")
+    @TableField("source_sta_no")
+    private Integer sourceStaNo;
+
+    /**
+     * 婧愬簱浣�
+     */
+    @ApiModelProperty(value= "婧愬簱浣�")
+    @TableField("source_loc_no")
+    private String sourceLocNo;
+
+    @ApiModelProperty(value= "")
+    @TableField("loc_sts")
+    private String locSts;
+
+    /**
+     * 鎷f枡(checkBox)
+     */
+    @ApiModelProperty(value= "鎷f枡(checkBox)")
+    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;
+
+    /**
+     * 閫�鍑�(checkBox)
+     */
+    @ApiModelProperty(value= "閫�鍑�(checkBox)")
+    @TableField("exit_mk")
+    private String exitMk;
+
+    @ApiModelProperty(value= "")
+    @TableField("plt_type")
+    private Integer pltType;
+
+    /**
+     * 绌烘澘(checkBox)
+     */
+    @ApiModelProperty(value= "绌烘澘(checkBox)")
+    @TableField("empty_mk")
+    private String emptyMk;
+
+    /**
+     * 宸ヤ綔鏃堕棿
+     */
+    @ApiModelProperty(value= "宸ヤ綔鏃堕棿")
+    @TableField("io_time")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    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")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    private Date crnStrTime;
+
+    /**
+     * 鍫嗗灈鏈哄仠姝㈡椂闂�
+     */
+    @ApiModelProperty(value= "鍫嗗灈鏈哄仠姝㈡椂闂�")
+    @TableField("crn_end_time")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    private Date crnEndTime;
+
+    /**
+     * 鎷f枡鏃堕棿
+     */
+    @ApiModelProperty(value= "鎷f枡鏃堕棿")
+    @TableField("plc_str_time")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    private Date plcStrTime;
+
+    @ApiModelProperty(value= "")
+    @TableField("crn_pos_time")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    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;
+
+    @ApiModelProperty(value= "")
+    @TableField("ref_iotime")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    private Date refIotime;
+
+    /**
+     * 淇敼浜哄憳
+     */
+    @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("pause_mk")
+    private String pauseMk;
+
+    @ApiModelProperty(value= "")
+    @TableField("error_time")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    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= "")
+    @TableField("memo_m")
+    private String memoM;
+
+    @ApiModelProperty(value= "")
+    @TableField("sc_weight")
+    private Double scWeight;
+
+    @ApiModelProperty(value= "")
+    @TableField("log_mk")
+    private String logMk;
+
+    @ApiModelProperty(value= "")
+    @TableField("log_err_time")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    private Date logErrTime;
+
+    @ApiModelProperty(value= "")
+    @TableField("log_err_memo")
+    private String logErrMemo;
+
+    /**
+     * 鏉$爜
+     */
+    @ApiModelProperty(value= "鏉$爜")
+    private String barcode;
+
+    @ApiModelProperty(value= "")
+    @TableField("Pdc_type")
+    private String PdcType;
+
+    @ApiModelProperty(value= "")
+    @TableField("ctn_no")
+    private String ctnNo;
+
+    /**
+     * 婊℃澘(checkBox)
+     */
+    @ApiModelProperty(value= "婊℃澘(checkBox)")
+    @TableField("full_plt")
+    private String fullPlt;
+
+    @ApiModelProperty(value= "")
+    @TableField("pre_have")
+    private String preHave;
+
+    @ApiModelProperty(value= "")
+    @TableField("take_none")
+    private String takeNone;
+
+    @ApiModelProperty(value= "")
+    @TableField("line_number")
+    private Long lineNumber;
+
+    public TaskLog() {}
+
+    public TaskLog(Long id,Integer wrkNo,Long logId,String invWh,Date ymd,String mk,Integer whsType,Integer wrkSts,Integer ioType,Integer crnNo,String sheetNo,Double ioPri,Date wrkDate,String locNo,Integer staNo,Integer sourceStaNo,String sourceLocNo,String locSts,String picking,String linkMis,String onlineYn,String updMk,String exitMk,Integer pltType,String emptyMk,Date ioTime,Integer ctnType,String packed,String oveMk,Double mtnType,String userNo,Date crnStrTime,Date crnEndTime,Date plcStrTime,Date crnPosTime,Double loadTime,Double expTime,Double refWrkno,Date refIotime,Long modiUser,Date modiTime,Long appeUser,Date appeTime,String pauseMk,Date errorTime,String errorMemo,Integer ctnKind,String manuType,String memoM,Double scWeight,String logMk,Date logErrTime,String logErrMemo,String barcode,String PdcType,String ctnNo,String fullPlt,String preHave,String takeNone,Long lineNumber) {
+        this.id = id;
+        this.wrkNo = wrkNo;
+        this.logId = logId;
+        this.invWh = invWh;
+        this.ymd = ymd;
+        this.mk = mk;
+        this.whsType = whsType;
+        this.wrkSts = wrkSts;
+        this.ioType = ioType;
+        this.crnNo = crnNo;
+        this.sheetNo = sheetNo;
+        this.ioPri = ioPri;
+        this.wrkDate = wrkDate;
+        this.locNo = locNo;
+        this.staNo = staNo;
+        this.sourceStaNo = sourceStaNo;
+        this.sourceLocNo = sourceLocNo;
+        this.locSts = locSts;
+        this.picking = picking;
+        this.linkMis = linkMis;
+        this.onlineYn = onlineYn;
+        this.updMk = updMk;
+        this.exitMk = exitMk;
+        this.pltType = pltType;
+        this.emptyMk = emptyMk;
+        this.ioTime = ioTime;
+        this.ctnType = ctnType;
+        this.packed = packed;
+        this.oveMk = oveMk;
+        this.mtnType = mtnType;
+        this.userNo = userNo;
+        this.crnStrTime = crnStrTime;
+        this.crnEndTime = crnEndTime;
+        this.plcStrTime = plcStrTime;
+        this.crnPosTime = crnPosTime;
+        this.loadTime = loadTime;
+        this.expTime = expTime;
+        this.refWrkno = refWrkno;
+        this.refIotime = refIotime;
+        this.modiUser = modiUser;
+        this.modiTime = modiTime;
+        this.appeUser = appeUser;
+        this.appeTime = appeTime;
+        this.pauseMk = pauseMk;
+        this.errorTime = errorTime;
+        this.errorMemo = errorMemo;
+        this.ctnKind = ctnKind;
+        this.manuType = manuType;
+        this.memoM = memoM;
+        this.scWeight = scWeight;
+        this.logMk = logMk;
+        this.logErrTime = logErrTime;
+        this.logErrMemo = logErrMemo;
+        this.barcode = barcode;
+        this.PdcType = PdcType;
+        this.ctnNo = ctnNo;
+        this.fullPlt = fullPlt;
+        this.preHave = preHave;
+        this.takeNone = takeNone;
+        this.lineNumber = lineNumber;
+    }
+
+//    TaskLog taskLog = new TaskLog(
+//            null,    // 
+//            null,    // 宸ヤ綔鍙穂闈炵┖]
+//            null,    // 
+//            null,    // 
+//            null,    // 
+//            null,    // 
+//            null,    // 
+//            null,    // 宸ヤ綔鐘舵��
+//            null,    // 鍏ュ嚭搴撶被鍨�
+//            null,    // 鍫嗗灈鏈哄彿
+//            null,    // 
+//            null,    // 浼樺厛绾�
+//            null,    // 
+//            null,    // 鐩爣搴撲綅
+//            null,    // 鐩爣绔�
+//            null,    // 婧愮珯
+//            null,    // 婧愬簱浣�
+//            null,    // 
+//            null,    // 鎷f枡(checkBox)
+//            null,    // 
+//            null,    // 
+//            null,    // 
+//            null,    // 閫�鍑�(checkBox)
+//            null,    // 
+//            null,    // 绌烘澘(checkBox)
+//            null,    // 宸ヤ綔鏃堕棿
+//            null,    // 
+//            null,    // 
+//            null,    // 
+//            null,    // 
+//            null,    // 
+//            null,    // 鍫嗗灈鏈哄惎鍔ㄦ椂闂�
+//            null,    // 鍫嗗灈鏈哄仠姝㈡椂闂�
+//            null,    // 鎷f枡鏃堕棿
+//            null,    // 
+//            null,    // 
+//            null,    // 
+//            null,    // 
+//            null,    // 
+//            null,    // 淇敼浜哄憳
+//            null,    // 淇敼鏃堕棿
+//            null,    // 鍒涘缓鑰�
+//            null,    // 娣诲姞鏃堕棿
+//            null,    // 
+//            null,    // 
+//            null,    // 
+//            null,    // 
+//            null,    // 
+//            null,    // 
+//            null,    // 
+//            null,    // 
+//            null,    // 
+//            null,    // 
+//            null,    // 鏉$爜
+//            null,    // 
+//            null,    // 
+//            null,    // 婊℃澘(checkBox)
+//            null,    // 
+//            null,    // 
+//            null    // 
+//    );
+
+    public String getWrkNo$(){
+        WrkMastService service = SpringUtils.getBean(WrkMastService.class);
+        WrkMast wrkMast = service.selectById(this.wrkNo);
+        if (!Cools.isEmpty(wrkMast)){
+            return String.valueOf(wrkMast.getId());
+        }
+        return null;
+    }
+
+    public String getYmd$(){
+        if (Cools.isEmpty(this.ymd)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.ymd);
+    }
+
+    public String getWrkSts$(){
+        BasWrkStatusService service = SpringUtils.getBean(BasWrkStatusService.class);
+        BasWrkStatus basWrkStatus = service.selectById(this.wrkSts);
+        if (!Cools.isEmpty(basWrkStatus)){
+            return String.valueOf(basWrkStatus.getWrkDesc());
+        }
+        return null;
+    }
+
+    public String getIoType$(){
+        BasWrkIotypeService service = SpringUtils.getBean(BasWrkIotypeService.class);
+        BasWrkIotype basWrkIotype = service.selectById(this.ioType);
+        if (!Cools.isEmpty(basWrkIotype)){
+            return String.valueOf(basWrkIotype.getIoDesc());
+        }
+        return null;
+    }
+
+    public String 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 getStaNo$(){
+        BasDevpService service = SpringUtils.getBean(BasDevpService.class);
+        BasDevp basDevp = service.selectById(this.staNo);
+        if (!Cools.isEmpty(basDevp)){
+            return String.valueOf(basDevp.getDevNo());
+        }
+        return null;
+    }
+
+    public String getSourceStaNo$(){
+        BasDevpService service = SpringUtils.getBean(BasDevpService.class);
+        BasDevp basDevp = service.selectById(this.sourceStaNo);
+        if (!Cools.isEmpty(basDevp)){
+            return String.valueOf(basDevp.getDevNo());
+        }
+        return null;
+    }
+
+    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.getNickname());
+        }
+        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.getNickname());
+        }
+        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/WaitPakin.java b/src/main/java/com/zy/asrs/entity/WaitPakin.java
index e1bfb4c..51002e4 100644
--- a/src/main/java/com/zy/asrs/entity/WaitPakin.java
+++ b/src/main/java/com/zy/asrs/entity/WaitPakin.java
@@ -44,6 +44,10 @@
     @TableField("order_no")
     private String orderNo;
 
+    @ApiModelProperty("鍗曟嵁ID")
+    @TableField("order_id")
+    private Long orderId;
+
     @ApiModelProperty(value= "瑙勬牸")
     private String specs;
 
@@ -277,7 +281,7 @@
         return this.boxType1;
     }
 
-    public void sync(Object source) {
-        Synchro.Copy(source, this);
-    }
+//    public void sync(Object source) {
+//        Synchro.Copy(source, this);
+//    }
 }
diff --git a/src/main/java/com/zy/asrs/entity/WrkDetl.java b/src/main/java/com/zy/asrs/entity/WrkDetl.java
index 9563fff..4d10ea7 100644
--- a/src/main/java/com/zy/asrs/entity/WrkDetl.java
+++ b/src/main/java/com/zy/asrs/entity/WrkDetl.java
@@ -9,12 +9,14 @@
 import com.zy.system.service.UserService;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
+import lombok.experimental.Accessors;
 
 import java.io.Serializable;
 import java.text.SimpleDateFormat;
 import java.util.Date;
 
 @Data
+@Accessors(chain = true)
 @TableName("asr_wrk_detl")
 public class WrkDetl implements Serializable {
 
diff --git a/src/main/java/com/zy/asrs/entity/WrkMast.java b/src/main/java/com/zy/asrs/entity/WrkMast.java
index 83298e9..1bf9d7a 100644
--- a/src/main/java/com/zy/asrs/entity/WrkMast.java
+++ b/src/main/java/com/zy/asrs/entity/WrkMast.java
@@ -22,13 +22,17 @@
 
     private static final long serialVersionUID = 1L;
 
+    private Long id;
+
     /**
      * 宸ヤ綔鍙�
      */
     @ApiModelProperty(value= "宸ヤ綔鍙�")
-    @TableId(value = "wrk_no", type = IdType.INPUT)
     @TableField("wrk_no")
     private Integer wrkNo;
+
+    @ApiModelProperty("浠诲姟绫诲瀷锛� agv, crn")
+    private String taskType;
 
     @ApiModelProperty(value= "")
     @TableField("inv_wh")
@@ -92,14 +96,14 @@
      */
     @ApiModelProperty(value= "鐩爣绔�")
     @TableField("sta_no")
-    private Integer staNo;
+    private String staNo;
 
     /**
      * 婧愮珯
      */
     @ApiModelProperty(value= "婧愮珯")
     @TableField("source_sta_no")
-    private Integer sourceStaNo;
+    private String sourceStaNo;
 
     /**
      * 婧愬簱浣�
@@ -373,6 +377,16 @@
         return null;
     }
 
+    public String getTaskType$(){
+        if (Cools.isEmpty(this.taskType)){return  null;}
+        if (taskType.equals("agv")) {
+            return "AGV浠诲姟";
+        } else {
+            return "鍫嗗灈鏈轰换鍔�";
+        }
+    }
+
+
     public String getStaNo$(){
         BasDevpService service = SpringUtils.getBean(BasDevpService.class);
         BasDevp basDevp = service.selectById(this.staNo);
diff --git a/src/main/java/com/zy/asrs/entity/WrkMastLog.java b/src/main/java/com/zy/asrs/entity/WrkMastLog.java
index 77b7e24..820f59d 100644
--- a/src/main/java/com/zy/asrs/entity/WrkMastLog.java
+++ b/src/main/java/com/zy/asrs/entity/WrkMastLog.java
@@ -25,481 +25,488 @@
     /**
      * 缂栧彿
      */
-    @ApiModelProperty(value= "缂栧彿")
+    @ApiModelProperty(value = "缂栧彿")
     @TableId(value = "id", type = IdType.AUTO)
     private Long id;
+
+    @ApiModelProperty("鏃ュ織ID")
+    private Long logId;
 
     /**
      * 宸ヤ綔鍙�
      */
-    @ApiModelProperty(value= "宸ヤ綔鍙�")
+    @ApiModelProperty(value = "宸ヤ綔鍙�")
     @TableField("wrk_no")
     private Integer wrkNo;
 
-    @ApiModelProperty(value= "")
+    @ApiModelProperty(value = "")
     @TableField("inv_wh")
     private String invWh;
 
-    @ApiModelProperty(value= "")
+    @ApiModelProperty(value = "")
     private Date ymd;
 
-    @ApiModelProperty(value= "")
+    @ApiModelProperty(value = "")
     private String mk;
 
-    @ApiModelProperty(value= "")
+    @ApiModelProperty(value = "")
     @TableField("whs_type")
     private Integer whsType;
 
     /**
      * 宸ヤ綔鐘舵��
      */
-    @ApiModelProperty(value= "宸ヤ綔鐘舵��")
+    @ApiModelProperty(value = "宸ヤ綔鐘舵��")
     @TableField("wrk_sts")
     private Integer wrkSts;
 
     /**
      * 鍏ュ嚭搴撶被鍨�
      */
-    @ApiModelProperty(value= "鍏ュ嚭搴撶被鍨�")
+    @ApiModelProperty(value = "鍏ュ嚭搴撶被鍨�")
     @TableField("io_type")
     private Integer ioType;
 
     /**
      * 鍫嗗灈鏈哄彿
      */
-    @ApiModelProperty(value= "鍫嗗灈鏈哄彿")
+    @ApiModelProperty(value = "鍫嗗灈鏈哄彿")
     @TableField("crn_no")
     private Integer crnNo;
 
-    @ApiModelProperty(value= "")
+    @ApiModelProperty(value = "")
     @TableField("sheet_no")
     private String sheetNo;
 
     /**
      * 浼樺厛绾�
      */
-    @ApiModelProperty(value= "浼樺厛绾�")
+    @ApiModelProperty(value = "浼樺厛绾�")
     @TableField("io_pri")
     private Double ioPri;
 
-    @ApiModelProperty(value= "")
+    @ApiModelProperty(value = "")
     @TableField("wrk_date")
     private Date wrkDate;
 
     /**
      * 鐩爣搴撲綅
      */
-    @ApiModelProperty(value= "鐩爣搴撲綅")
+    @ApiModelProperty(value = "鐩爣搴撲綅")
     @TableField("loc_no")
     private String locNo;
 
     /**
      * 鐩爣绔�
      */
-    @ApiModelProperty(value= "鐩爣绔�")
+    @ApiModelProperty(value = "鐩爣绔�")
     @TableField("sta_no")
     private Integer staNo;
 
     /**
      * 婧愮珯
      */
-    @ApiModelProperty(value= "婧愮珯")
+    @ApiModelProperty(value = "婧愮珯")
     @TableField("source_sta_no")
     private Integer sourceStaNo;
 
     /**
      * 婧愬簱浣�
      */
-    @ApiModelProperty(value= "婧愬簱浣�")
+    @ApiModelProperty(value = "婧愬簱浣�")
     @TableField("source_loc_no")
     private String sourceLocNo;
 
-    @ApiModelProperty(value= "")
+    @ApiModelProperty(value = "")
     @TableField("loc_sts")
     private String locSts;
 
     /**
      * 鎷f枡
      */
-    @ApiModelProperty(value= "鎷f枡")
+    @ApiModelProperty(value = "鎷f枡")
     private String picking;
 
-    @ApiModelProperty(value= "")
+    @ApiModelProperty(value = "")
     @TableField("link_mis")
     private String linkMis;
 
-    @ApiModelProperty(value= "")
+    @ApiModelProperty(value = "")
     @TableField("online_yn")
     private String onlineYn;
 
-    @ApiModelProperty(value= "")
+    @ApiModelProperty(value = "")
     @TableField("upd_mk")
     private String updMk;
 
     /**
      * 閫�鍑�
      */
-    @ApiModelProperty(value= "閫�鍑�")
+    @ApiModelProperty(value = "閫�鍑�")
     @TableField("exit_mk")
     private String exitMk;
 
-    @ApiModelProperty(value= "")
+    @ApiModelProperty(value = "")
     @TableField("plt_type")
     private Integer pltType;
 
     /**
      * 绌烘澘
      */
-    @ApiModelProperty(value= "绌烘澘")
+    @ApiModelProperty(value = "绌烘澘")
     @TableField("empty_mk")
     private String emptyMk;
 
     /**
      * 宸ヤ綔鏃堕棿
      */
-    @ApiModelProperty(value= "宸ヤ綔鏃堕棿")
+    @ApiModelProperty(value = "宸ヤ綔鏃堕棿")
     @TableField("io_time")
     private Date ioTime;
 
-    @ApiModelProperty(value= "")
+    @ApiModelProperty(value = "")
     @TableField("ctn_type")
     private Integer ctnType;
 
-    @ApiModelProperty(value= "")
+    @ApiModelProperty(value = "")
     private String packed;
 
-    @ApiModelProperty(value= "")
+    @ApiModelProperty(value = "")
     @TableField("ove_mk")
     private String oveMk;
 
-    @ApiModelProperty(value= "")
+    @ApiModelProperty(value = "")
     @TableField("mtn_type")
     private Double mtnType;
 
-    @ApiModelProperty(value= "")
+    @ApiModelProperty(value = "")
     @TableField("user_no")
     private String userNo;
 
     /**
      * 鍫嗗灈鏈哄惎鍔ㄦ椂闂�
      */
-    @ApiModelProperty(value= "鍫嗗灈鏈哄惎鍔ㄦ椂闂�")
+    @ApiModelProperty(value = "鍫嗗灈鏈哄惎鍔ㄦ椂闂�")
     @TableField("crn_str_time")
     private Date crnStrTime;
 
     /**
      * 鍫嗗灈鏈哄仠姝㈡椂闂�
      */
-    @ApiModelProperty(value= "鍫嗗灈鏈哄仠姝㈡椂闂�")
+    @ApiModelProperty(value = "鍫嗗灈鏈哄仠姝㈡椂闂�")
     @TableField("crn_end_time")
     private Date crnEndTime;
 
     /**
      * 鎷f枡鏃堕棿
      */
-    @ApiModelProperty(value= "鎷f枡鏃堕棿")
+    @ApiModelProperty(value = "鎷f枡鏃堕棿")
     @TableField("plc_str_time")
     private Date plcStrTime;
 
-    @ApiModelProperty(value= "")
+    @ApiModelProperty(value = "")
     @TableField("crn_pos_time")
     private Date crnPosTime;
 
-    @ApiModelProperty(value= "")
+    @ApiModelProperty(value = "")
     @TableField("load_time")
     private Double loadTime;
 
-    @ApiModelProperty(value= "")
+    @ApiModelProperty(value = "")
     @TableField("exp_time")
     private Double expTime;
 
-    @ApiModelProperty(value= "")
+    @ApiModelProperty(value = "")
     @TableField("ref_wrkno")
     private Double refWrkno;
 
-    @ApiModelProperty(value= "")
+    @ApiModelProperty(value = "")
     @TableField("ref_iotime")
     private Date refIotime;
 
     /**
      * 淇敼浜哄憳
      */
-    @ApiModelProperty(value= "淇敼浜哄憳")
+    @ApiModelProperty(value = "淇敼浜哄憳")
     @TableField("modi_user")
     private Long modiUser;
 
     /**
      * 淇敼鏃堕棿
      */
-    @ApiModelProperty(value= "淇敼鏃堕棿")
+    @ApiModelProperty(value = "淇敼鏃堕棿")
     @TableField("modi_time")
     private Date modiTime;
 
     /**
      * 鍒涘缓鑰�
      */
-    @ApiModelProperty(value= "鍒涘缓鑰�")
+    @ApiModelProperty(value = "鍒涘缓鑰�")
     @TableField("appe_user")
     private Long appeUser;
 
     /**
      * 娣诲姞鏃堕棿
      */
-    @ApiModelProperty(value= "娣诲姞鏃堕棿")
+    @ApiModelProperty(value = "娣诲姞鏃堕棿")
     @TableField("appe_time")
     private Date appeTime;
 
-    @ApiModelProperty(value= "")
+    @ApiModelProperty(value = "")
     @TableField("pause_mk")
     private String pauseMk;
 
-    @ApiModelProperty(value= "")
+    @ApiModelProperty(value = "")
     @TableField("error_time")
     private Date errorTime;
 
-    @ApiModelProperty(value= "")
+    @ApiModelProperty(value = "")
     @TableField("error_memo")
     private String errorMemo;
 
-    @ApiModelProperty(value= "")
+    @ApiModelProperty(value = "")
     @TableField("ctn_kind")
     private Integer ctnKind;
 
-    @ApiModelProperty(value= "")
+    @ApiModelProperty(value = "")
     @TableField("manu_type")
     private String manuType;
 
-    @ApiModelProperty(value= "")
+    @ApiModelProperty(value = "")
     @TableField("memo_m")
     private String memoM;
 
-    @ApiModelProperty(value= "")
+    @ApiModelProperty(value = "")
     @TableField("sc_weight")
     private Double scWeight;
 
-    @ApiModelProperty(value= "")
+    @ApiModelProperty(value = "")
     @TableField("log_mk")
     private String logMk;
 
-    @ApiModelProperty(value= "")
+    @ApiModelProperty(value = "")
     @TableField("log_err_time")
     private Date logErrTime;
 
-    @ApiModelProperty(value= "")
+    @ApiModelProperty(value = "")
     @TableField("log_err_memo")
     private String logErrMemo;
 
     /**
      * 鏉$爜
      */
-    @ApiModelProperty(value= "鏉$爜")
+    @ApiModelProperty(value = "鏉$爜")
     private String barcode;
 
-    @ApiModelProperty(value= "")
+    @ApiModelProperty(value = "")
     @TableField("Pdc_type")
     private String PdcType;
 
-    @ApiModelProperty(value= "")
+    @ApiModelProperty(value = "")
     @TableField("ctn_no")
     private String ctnNo;
 
     /**
      * 婊℃澘
      */
-    @ApiModelProperty(value= "婊℃澘")
+    @ApiModelProperty(value = "婊℃澘")
     @TableField("full_plt")
     private String fullPlt;
 
     /**
      * 鍏堝叆鍝� / 鍙岄噸鍏ュ簱
      */
-    @ApiModelProperty(value= "鍏堝叆鍝�")
+    @ApiModelProperty(value = "鍏堝叆鍝�")
     @TableField("pre_have")
     private String preHave;
 
     /**
      * 绌烘搷浣� / 鍙栬揣鏃犵
      */
-    @ApiModelProperty(value= "绌烘搷浣�")
+    @ApiModelProperty(value = "绌烘搷浣�")
     @TableField("take_none")
     private String takeNone;
 
-    public WrkMastLog() {}
+    public WrkMastLog() {
+    }
 
-    public String getWrkNo$(){
+    public String getWrkNo$() {
         WrkMastService service = SpringUtils.getBean(WrkMastService.class);
         WrkMast wrkMast = service.selectById(this.wrkNo);
-        if (!Cools.isEmpty(wrkMast)){
+        if (!Cools.isEmpty(wrkMast)) {
             return String.valueOf(wrkMast.getWrkNo());
         }
         return null;
     }
 
-    public String getYmd$(){
-        if (Cools.isEmpty(this.ymd)){
+    public String getYmd$() {
+        if (Cools.isEmpty(this.ymd)) {
             return "";
         }
         return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.ymd);
     }
 
-    public String getWrkSts$(){
+    public String getWrkSts$() {
         BasWrkStatusService service = SpringUtils.getBean(BasWrkStatusService.class);
         BasWrkStatus basWrkStatus = service.selectById(this.wrkSts);
-        if (!Cools.isEmpty(basWrkStatus)){
+        if (!Cools.isEmpty(basWrkStatus)) {
             return String.valueOf(basWrkStatus.getWrkDesc());
         }
         return null;
     }
 
-    public long getWrkSts(){
-        return (long)this.wrkSts;
+    public long getWrkSts() {
+        if (wrkSts == null) {
+            return 0;
+        }
+        return (long) this.wrkSts;
     }
 
-    public String getIoType$(){
+    public String getIoType$() {
         BasWrkIotypeService service = SpringUtils.getBean(BasWrkIotypeService.class);
         BasWrkIotype basWrkIotype = service.selectById(this.ioType);
-        if (!Cools.isEmpty(basWrkIotype)){
+        if (!Cools.isEmpty(basWrkIotype)) {
             return String.valueOf(basWrkIotype.getIoDesc());
         }
         return null;
     }
 
-    public String getCrnNo$(){
+    public String getCrnNo$() {
         BasCrnpService service = SpringUtils.getBean(BasCrnpService.class);
         BasCrnp basCrnp = service.selectById(this.crnNo);
-        if (!Cools.isEmpty(basCrnp)){
+        if (!Cools.isEmpty(basCrnp)) {
             return String.valueOf(basCrnp.getCrnNo());
         }
         return null;
     }
 
-    public String getWrkDate$(){
-        if (Cools.isEmpty(this.wrkDate)){
+    public String getWrkDate$() {
+        if (Cools.isEmpty(this.wrkDate)) {
             return "";
         }
         return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.wrkDate);
     }
 
-    public String getLocNo$(){
+    public String getLocNo$() {
         LocMastService service = SpringUtils.getBean(LocMastService.class);
         LocMast locMast = service.selectById(this.locNo);
-        if (!Cools.isEmpty(locMast)){
+        if (!Cools.isEmpty(locMast)) {
             return String.valueOf(locMast.getLocNo());
         }
         return null;
     }
 
-    public String getStaNo$(){
+    public String getStaNo$() {
         BasDevpService service = SpringUtils.getBean(BasDevpService.class);
         BasDevp basDevp = service.selectById(this.staNo);
-        if (!Cools.isEmpty(basDevp)){
+        if (!Cools.isEmpty(basDevp)) {
             return String.valueOf(basDevp.getDevNo());
         }
         return null;
     }
 
-    public String getSourceStaNo$(){
+    public String getSourceStaNo$() {
         BasDevpService service = SpringUtils.getBean(BasDevpService.class);
         BasDevp basDevp = service.selectById(this.sourceStaNo);
-        if (!Cools.isEmpty(basDevp)){
+        if (!Cools.isEmpty(basDevp)) {
             return String.valueOf(basDevp.getDevNo());
         }
         return null;
     }
 
-    public String getSourceLocNo$(){
+    public String getSourceLocNo$() {
         LocMastService service = SpringUtils.getBean(LocMastService.class);
         LocMast locMast = service.selectById(this.sourceLocNo);
-        if (!Cools.isEmpty(locMast)){
+        if (!Cools.isEmpty(locMast)) {
             return String.valueOf(locMast.getLocNo());
         }
         return null;
     }
 
-    public String getIoTime$(){
-        if (Cools.isEmpty(this.ioTime)){
+    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)){
+    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)){
+    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)){
+    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)){
+    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)){
+    public String getRefIotime$() {
+        if (Cools.isEmpty(this.refIotime)) {
             return "";
         }
         return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.refIotime);
     }
 
-    public String getModiUser$(){
+    public String getModiUser$() {
         UserService service = SpringUtils.getBean(UserService.class);
         User user = service.selectById(this.modiUser);
-        if (!Cools.isEmpty(user)){
+        if (!Cools.isEmpty(user)) {
             return String.valueOf(user.getUsername());
         }
         return null;
     }
 
-    public String getModiTime$(){
-        if (Cools.isEmpty(this.modiTime)){
+    public String getModiTime$() {
+        if (Cools.isEmpty(this.modiTime)) {
             return "";
         }
         return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.modiTime);
     }
 
-    public String getAppeUser$(){
+    public String getAppeUser$() {
         UserService service = SpringUtils.getBean(UserService.class);
         User user = service.selectById(this.appeUser);
-        if (!Cools.isEmpty(user)){
+        if (!Cools.isEmpty(user)) {
             return String.valueOf(user.getUsername());
         }
         return null;
     }
 
-    public String getAppeTime$(){
-        if (Cools.isEmpty(this.appeTime)){
+    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)){
+    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)){
+    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/param/AgvCallParams.java b/src/main/java/com/zy/asrs/entity/param/AgvCallParams.java
new file mode 100644
index 0000000..62886aa
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/param/AgvCallParams.java
@@ -0,0 +1,26 @@
+package com.zy.asrs.entity.param;
+
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+@ApiModel(value = "AgvCallParams", description = "鍛煎彨AGV鍙傛暟")
+public class AgvCallParams implements Serializable {
+
+    @ApiModelProperty("璧峰浣嶇疆")
+    private String orgSite;
+
+    @ApiModelProperty("缁堢偣浣嶇疆")
+    private String tarSite;
+
+    @ApiModelProperty("鎵樼洏鐮�")
+    private String barcode;
+
+    @ApiModelProperty("鎿嶄綔绫诲瀷")
+    private String type;
+
+}
diff --git a/src/main/java/com/zy/asrs/enums/LocStsType.java b/src/main/java/com/zy/asrs/enums/LocStsType.java
new file mode 100644
index 0000000..fe48c4d
--- /dev/null
+++ b/src/main/java/com/zy/asrs/enums/LocStsType.java
@@ -0,0 +1,60 @@
+package com.zy.asrs.enums;
+
+public enum LocStsType {
+
+    //绌烘澘
+    LOC_STS_TYPE_D("D", "绌烘澘"),
+    //鍦ㄥ簱
+    LOC_STS_TYPE_F("F", "鍦ㄥ簱"),
+    //绌哄簱
+    LOC_STS_TYPE_O("O", "绌哄簱"),
+    //绂佺敤
+    LOC_STS_TYPE_X("X", "绂佺敤"),
+    //鍏ュ簱棰勭害
+    LOC_STS_TYPE_S("S", "鍏ュ簱棰勭害"),
+    //鍑哄簱棰勭害
+    LOC_STS_TYPE_R("R", "鍑哄簱棰勭害"),
+    ;
+
+    public String type;
+
+    public String desc;
+
+    LocStsType(String type, String desc) {
+        this.type = type;
+        this.desc = desc;
+    }
+
+
+    public static LocStsType get(String el) {
+        for (LocStsType value : LocStsType.values()) {
+            if (el.equals(value.toString())) {
+                return value;
+            }
+        }
+        return null;
+    }
+
+//    /**
+//     * @author Ryan
+//     * @date 2025/8/28
+//     * @description: RCS搴撲綅鐘舵�佽浆鎹�
+//     * @version 1.0
+//     */
+//    public static String getLocSts(String val) {
+//        if (val.equals(RcsLocStsType.LOC_STS_TYPE_D.type)) {
+//            return LocStsType.LOC_STS_TYPE_O.type;
+//        } else if (val.equals(RcsLocStsType.LOC_STS_TYPE_F.type)) {
+//            return LocStsType.LOC_STS_TYPE_F.type;
+//        } else if (val.equals(RcsLocStsType.LOC_STS_TYPE_S.type)) {
+//            return LocStsType.LOC_STS_TYPE_S.type;
+//        } else if (val.equals(RcsLocStsType.LOC_STS_TYPE_R.type)) {
+//            return LocStsType.LOC_STS_TYPE_R.type;
+//        } else if (val.equals(RcsLocStsType.LOC_STS_TYPE_X.type)) {
+//            return LocStsType.LOC_STS_TYPE_X.type;
+//        }
+//        return null;
+//    }
+
+
+}
diff --git a/src/main/java/com/zy/asrs/mapper/BasAreasMapper.java b/src/main/java/com/zy/asrs/mapper/BasAreasMapper.java
new file mode 100644
index 0000000..bbbffaa
--- /dev/null
+++ b/src/main/java/com/zy/asrs/mapper/BasAreasMapper.java
@@ -0,0 +1,12 @@
+package com.zy.asrs.mapper;
+
+import com.zy.asrs.entity.BasAreas;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import org.springframework.stereotype.Repository;
+
+@Mapper
+@Repository
+public interface BasAreasMapper extends BaseMapper<BasAreas> {
+
+}
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/BasWhsMapper.java b/src/main/java/com/zy/asrs/mapper/BasWhsMapper.java
index e59c57c..897c7d1 100644
--- a/src/main/java/com/zy/asrs/mapper/BasWhsMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/BasWhsMapper.java
@@ -1,15 +1,15 @@
 package com.zy.asrs.mapper;
 
 import com.baomidou.mybatisplus.mapper.BaseMapper;
-import com.zy.asrs.entity.BasWhs;
+import com.zy.asrs.entity.BasWhsType;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Repository;
 
 @Mapper
 @Repository
-public interface BasWhsMapper extends BaseMapper<BasWhs> {
+public interface BasWhsMapper extends BaseMapper<BasWhsType> {
 
-    BasWhs selectByIdentifying(@Param("identifying") String identifying);
+    BasWhsType selectByIdentifying(@Param("identifying") String identifying);
 
 }
diff --git a/src/main/java/com/zy/asrs/mapper/LocCacheMapper.java b/src/main/java/com/zy/asrs/mapper/LocCacheMapper.java
new file mode 100644
index 0000000..cf539ae
--- /dev/null
+++ b/src/main/java/com/zy/asrs/mapper/LocCacheMapper.java
@@ -0,0 +1,12 @@
+package com.zy.asrs.mapper;
+
+import com.zy.asrs.entity.LocCache;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import org.springframework.stereotype.Repository;
+
+@Mapper
+@Repository
+public interface LocCacheMapper extends BaseMapper<LocCache> {
+
+}
diff --git a/src/main/java/com/zy/asrs/mapper/TaskDetlLogMapper.java b/src/main/java/com/zy/asrs/mapper/TaskDetlLogMapper.java
new file mode 100644
index 0000000..b87af4b
--- /dev/null
+++ b/src/main/java/com/zy/asrs/mapper/TaskDetlLogMapper.java
@@ -0,0 +1,12 @@
+package com.zy.asrs.mapper;
+
+import com.zy.asrs.entity.TaskDetlLog;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import org.springframework.stereotype.Repository;
+
+@Mapper
+@Repository
+public interface TaskDetlLogMapper extends BaseMapper<TaskDetlLog> {
+
+}
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/TaskLogMapper.java b/src/main/java/com/zy/asrs/mapper/TaskLogMapper.java
new file mode 100644
index 0000000..94c1de5
--- /dev/null
+++ b/src/main/java/com/zy/asrs/mapper/TaskLogMapper.java
@@ -0,0 +1,12 @@
+package com.zy.asrs.mapper;
+
+import com.zy.asrs.entity.TaskLog;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import org.springframework.stereotype.Repository;
+
+@Mapper
+@Repository
+public interface TaskLogMapper extends BaseMapper<TaskLog> {
+
+}
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/mapper/WrkMastLogMapper.java b/src/main/java/com/zy/asrs/mapper/WrkMastLogMapper.java
index 27eaca7..15c5c77 100644
--- a/src/main/java/com/zy/asrs/mapper/WrkMastLogMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/WrkMastLogMapper.java
@@ -15,7 +15,7 @@
 @Repository
 public interface WrkMastLogMapper extends BaseMapper<WrkMastLog> {
 
-    @Insert("insert into asr_wrk_mast_log select * from asr_wrk_mast where wrk_no=#{workNo}")
+    @Insert("insert into asr_wrk_mast_log select *, id as log_id from asr_wrk_mast where wrk_no=#{workNo}")
     int save(Integer workNo);
 
     /**
diff --git a/src/main/java/com/zy/asrs/service/BasAreasService.java b/src/main/java/com/zy/asrs/service/BasAreasService.java
new file mode 100644
index 0000000..33f0141
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/BasAreasService.java
@@ -0,0 +1,8 @@
+package com.zy.asrs.service;
+
+import com.zy.asrs.entity.BasAreas;
+import com.baomidou.mybatisplus.service.IService;
+
+public interface BasAreasService extends IService<BasAreas> {
+
+}
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/BasWhsService.java b/src/main/java/com/zy/asrs/service/BasWhsService.java
deleted file mode 100644
index 33e2599..0000000
--- a/src/main/java/com/zy/asrs/service/BasWhsService.java
+++ /dev/null
@@ -1,8 +0,0 @@
-package com.zy.asrs.service;
-
-import com.baomidou.mybatisplus.service.IService;
-import com.zy.asrs.entity.BasWhs;
-
-public interface BasWhsService extends IService<BasWhs> {
-    BasWhs selectByIdentifying(String Identifying);
-}
diff --git a/src/main/java/com/zy/asrs/service/BasWhsTypeService.java b/src/main/java/com/zy/asrs/service/BasWhsTypeService.java
new file mode 100644
index 0000000..827e46e
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/BasWhsTypeService.java
@@ -0,0 +1,8 @@
+package com.zy.asrs.service;
+
+import com.baomidou.mybatisplus.service.IService;
+import com.zy.asrs.entity.BasWhsType;
+
+public interface BasWhsTypeService extends IService<BasWhsType> {
+    BasWhsType selectByIdentifying(String Identifying);
+}
diff --git a/src/main/java/com/zy/asrs/service/LocCacheService.java b/src/main/java/com/zy/asrs/service/LocCacheService.java
new file mode 100644
index 0000000..f5b03fb
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/LocCacheService.java
@@ -0,0 +1,18 @@
+package com.zy.asrs.service;
+
+import com.core.common.R;
+import com.zy.asrs.entity.LocCache;
+import com.baomidou.mybatisplus.service.IService;
+import com.zy.asrs.entity.param.LocMastInitParam;
+
+public interface LocCacheService extends IService<LocCache> {
+
+
+    /**
+     * @author Ryan
+     * @date 2025/9/18
+     * @description: 鍒濆鍖栧簱鍖哄簱浣�
+     * @version 1.0
+     */
+    R initLocCache(LocMastInitParam param, Long userId);
+}
diff --git a/src/main/java/com/zy/asrs/service/MobileService.java b/src/main/java/com/zy/asrs/service/MobileService.java
index c1d97d0..f5288b6 100644
--- a/src/main/java/com/zy/asrs/service/MobileService.java
+++ b/src/main/java/com/zy/asrs/service/MobileService.java
@@ -67,4 +67,20 @@
 
     void stockOut(OrderDetl orderDetl, BasDevp staNo, LocDetl locDetl,
                   Double curOutQty, Integer ioType, Long userId, Date now);
+
+    /**
+     * @author Ryan
+     * @date 2025/9/22
+     * @description: 鑾峰彇缂撳啿鍖哄簱浣嶄俊鎭�
+     * @version 1.0
+     */
+    R getCacheLocs();
+
+    /**
+     * @author Ryan
+     * @date 2025/9/22
+     * @description: 鍛煎彨AGV鎼繍
+     * @version 1.0
+     */
+    R callAgvMove(AgvCallParams params, Long userId);
 }
diff --git a/src/main/java/com/zy/asrs/service/TaskDetlLogService.java b/src/main/java/com/zy/asrs/service/TaskDetlLogService.java
new file mode 100644
index 0000000..cc7b3cd
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/TaskDetlLogService.java
@@ -0,0 +1,8 @@
+package com.zy.asrs.service;
+
+import com.zy.asrs.entity.TaskDetlLog;
+import com.baomidou.mybatisplus.service.IService;
+
+public interface TaskDetlLogService extends IService<TaskDetlLog> {
+
+}
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/TaskLogService.java b/src/main/java/com/zy/asrs/service/TaskLogService.java
new file mode 100644
index 0000000..124755b
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/TaskLogService.java
@@ -0,0 +1,8 @@
+package com.zy.asrs.service;
+
+import com.zy.asrs.entity.TaskLog;
+import com.baomidou.mybatisplus.service.IService;
+
+public interface TaskLogService extends IService<TaskLog> {
+
+}
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/BasAreasServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/BasAreasServiceImpl.java
new file mode 100644
index 0000000..04e1e93
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/impl/BasAreasServiceImpl.java
@@ -0,0 +1,12 @@
+package com.zy.asrs.service.impl;
+
+import com.zy.asrs.mapper.BasAreasMapper;
+import com.zy.asrs.entity.BasAreas;
+import com.zy.asrs.service.BasAreasService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+@Service("basAreasService")
+public class BasAreasServiceImpl extends ServiceImpl<BasAreasMapper, BasAreas> implements BasAreasService {
+
+}
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/BasWhsServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/BasWhsServiceImpl.java
deleted file mode 100644
index 154d8d9..0000000
--- a/src/main/java/com/zy/asrs/service/impl/BasWhsServiceImpl.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package com.zy.asrs.service.impl;
-
-import com.baomidou.mybatisplus.mapper.EntityWrapper;
-import com.baomidou.mybatisplus.service.impl.ServiceImpl;
-import com.zy.asrs.entity.BasWhs;
-import com.zy.asrs.mapper.BasWhsMapper;
-import com.zy.asrs.service.BasWhsService;
-import org.springframework.stereotype.Service;
-
-@Service("basWhsService")
-public class BasWhsServiceImpl extends ServiceImpl<BasWhsMapper, BasWhs> implements BasWhsService {
-    @Override
-    public BasWhs selectByIdentifying(String identifying) {
-        return this.baseMapper.selectByIdentifying(identifying);
-    }
-}
diff --git a/src/main/java/com/zy/asrs/service/impl/BasWhsTypeServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/BasWhsTypeServiceImpl.java
new file mode 100644
index 0000000..72c5e32
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/impl/BasWhsTypeServiceImpl.java
@@ -0,0 +1,15 @@
+package com.zy.asrs.service.impl;
+
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import com.zy.asrs.entity.BasWhsType;
+import com.zy.asrs.mapper.BasWhsMapper;
+import com.zy.asrs.service.BasWhsTypeService;
+import org.springframework.stereotype.Service;
+
+@Service("basWhsService")
+public class BasWhsTypeServiceImpl extends ServiceImpl<BasWhsMapper, BasWhsType> implements BasWhsTypeService {
+    @Override
+    public BasWhsType selectByIdentifying(String identifying) {
+        return this.baseMapper.selectByIdentifying(identifying);
+    }
+}
diff --git a/src/main/java/com/zy/asrs/service/impl/LocCacheServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/LocCacheServiceImpl.java
new file mode 100644
index 0000000..a596978
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/impl/LocCacheServiceImpl.java
@@ -0,0 +1,89 @@
+package com.zy.asrs.service.impl;
+
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.core.common.Cools;
+import com.core.common.R;
+import com.core.exception.CoolException;
+import com.zy.asrs.entity.BasAreas;
+import com.zy.asrs.entity.BasWhsType;
+import com.zy.asrs.entity.LocMast;
+import com.zy.asrs.entity.param.LocMastInitParam;
+import com.zy.asrs.mapper.LocCacheMapper;
+import com.zy.asrs.entity.LocCache;
+import com.zy.asrs.service.BasAreasService;
+import com.zy.asrs.service.BasWhsTypeService;
+import com.zy.asrs.service.LocCacheService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import com.zy.common.model.Shelves;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+@Slf4j
+@Service("locCacheService")
+public class LocCacheServiceImpl extends ServiceImpl<LocCacheMapper, LocCache> implements LocCacheService {
+
+
+    @Autowired
+    private BasAreasService basAreasService;
+
+    /**
+     * @author Ryan
+     * @date 2025/9/18
+     * @description: 鍒濆鍖栧簱鍖哄簱浣嶄俊鎭�
+     * @version 1.0
+     */
+    @Override
+    public R initLocCache(LocMastInitParam param, Long userId) {
+        try {
+            List<LocCache> list = new ArrayList<>();
+            BasAreas areas = basAreasService.selectById(param.getIdentifying());
+            if (Cools.isEmpty(areas)) {
+                return R.error("搴撳尯涓嶅瓨鍦紒锛侊紒");
+            }
+            for (int r = param.getStartRow(); r <= param.getEndRow(); r++) {
+                for (int b = param.getStartBay(); b <= param.getEndBay(); b++) {
+                    for (int l = param.getStartLev(); l <= param.getEndLev(); l++) {
+                        // 鑾峰彇搴撲綅鍙�
+                        String locNo = String.format("CA") + String.format("%02d", r) + String.format("%03d", b) + String.format("%02d", l);
+                        Date now = new Date();
+                        LocCache locMast = new LocCache();
+                        locMast.setLocNo(locNo);
+                        locMast.setLocSts("O");
+                        locMast.setRow1(r); // 鎺�
+                        locMast.setBay1(b); // 鍒�
+                        locMast.setLev1(l); // 灞�
+                        locMast.setId(null);
+                        locMast.setLocType1(!Cools.isEmpty(param.getLocType1()) ? param.getLocType1() : 1);
+                        locMast.setLocType2(param.getLocType2());
+                        locMast.setLocType3(param.getLocType3());
+                        locMast.setAppeUser(userId);
+                        locMast.setAppeTime(now);
+                        locMast.setModiUser(userId);
+                        locMast.setModiTime(now);
+                        locMast.setAreaId(areas.getId());
+                        locMast.setAreaName(areas.getName());
+                        list.add(locMast);
+                    }
+                }
+            }
+            if (!Cools.isEmpty(param.getEnable()) && param.getEnable() == 1) {
+                if (!this.delete(new EntityWrapper<>())) {
+                    throw new CoolException("鍒犻櫎澶辫触锛侊紒");
+                }
+            }
+
+            if (!this.insertBatch(list)) {
+                throw new CoolException("娣诲姞澶辫触锛侊紒");
+            }
+            return R.ok("鍒濆鍖栨垚鍔�");
+        } catch (Exception e) {
+            return R.error("鍒濆鍖栧け璐�===>" + e.getMessage());
+        }
+    }
+}
diff --git a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
index c401b70..c48df3a 100644
--- a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -8,6 +8,7 @@
 import com.core.exception.CoolException;
 import com.zy.asrs.entity.*;
 import com.zy.asrs.entity.param.*;
+import com.zy.asrs.enums.LocStsType;
 import com.zy.asrs.mapper.LocMastMapper;
 import com.zy.asrs.mapper.ManLocDetlMapper;
 import com.zy.asrs.service.*;
@@ -21,6 +22,7 @@
 import com.zy.common.service.CommonService;
 import com.zy.common.utils.HttpHandler;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -95,17 +97,19 @@
 
     @Resource
     private OrderDetlPakoutService orderDetlPakoutService;
+    @Autowired
+    private LocCacheService locCacheService;
 
     @Override
     @Transactional
     public R WarehouseOutPickMergeV1(WarehouseOutPickMergeParam param, Long hostId, Long userId) {
         //鍒ゆ柇搴撲綅鐘舵��
         LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", param.getLocNo()));
-        if (Cools.isEmpty(locMast)){
+        if (Cools.isEmpty(locMast)) {
             return R.error("璇ュ簱浣嶄笉瀛樺湪");
         }
-        if (!locMast.getLocSts().equals("P")){
-            return R.error("璇ュ簱浣嶇姸鎬佷负锛�"+locMast.getLocSts()+",涓嶆弧瓒虫嫞鏂欓�斾腑骞舵澘鏉′欢锛侊紒锛�");
+        if (!locMast.getLocSts().equals("P")) {
+            return R.error("璇ュ簱浣嶇姸鎬佷负锛�" + locMast.getLocSts() + ",涓嶆弧瓒虫嫞鏂欓�斾腑骞舵澘鏉′欢锛侊紒锛�");
         }
 
         Date now = new Date();
@@ -117,8 +121,8 @@
         wrkMast.setIoType(8); // 鍏ュ嚭搴撶姸鎬侊細8.鎷f枡閫斾腑骞舵澘
         wrkMast.setIoPri(13D); // 浼樺厛绾�
         wrkMast.setCrnNo(1);
-        wrkMast.setSourceStaNo(1);
-        wrkMast.setStaNo(1);
+        wrkMast.setSourceStaNo(1 + "");
+        wrkMast.setStaNo(1 + "");
         wrkMast.setLocNo(param.getLocNo());
         wrkMast.setBarcode(param.getBarcode()); // 鎵樼洏鐮�
         wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
@@ -135,7 +139,7 @@
         wrkMastService.insert(wrkMast);
 
         for (OrderDetl orderDetl : param.getCombMats()) {
-            Mat mat = matService.selectOne(new EntityWrapper<Mat>().eq("matnr",orderDetl.getMatnr()));
+            Mat mat = matService.selectOne(new EntityWrapper<Mat>().eq("matnr", orderDetl.getMatnr()));
             if (mat == null) {
                 throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐ワ紝鐗╂枡淇℃伅涓嶅瓨鍦細" + orderDetl.getMatnr());
             }
@@ -151,7 +155,7 @@
             wrkDetl.setModiUser(userId);
             wrkDetl.setZpallet(wrkMast.getBarcode());
             wrkDetl.setBatch(orderDetl.getBatch());
-            if(Cools.isEmpty(orderDetl.getBatch())){
+            if (Cools.isEmpty(orderDetl.getBatch())) {
                 wrkDetl.setBatch("");
             }
             wrkDetl.setBoxType1(orderDetl.getBoxType1());
@@ -165,11 +169,11 @@
 
             if (!Cools.isEmpty(orderDetl.getOrderNo())) {
                 OrderPakin order = orderPakinService.selectByNo(orderDetl.getOrderNo());
-                if (Cools.isEmpty(order)){
+                if (Cools.isEmpty(order)) {
                     continue;
                 }
-                OrderDetlPakin orderDetlPakin = orderDetlPakinService.selectItem(order.getId(), orderDetl.getMatnr(), orderDetl.getBatch(),orderDetl.getBrand(),orderDetl.getStandby1(),orderDetl.getStandby2(),orderDetl.getStandby3(),orderDetl.getBoxType1(),orderDetl.getBoxType2(),orderDetl.getBoxType3());
-                if (Cools.isEmpty(orderDetlPakin)){
+                OrderDetlPakin orderDetlPakin = orderDetlPakinService.selectItem(order.getId(), orderDetl.getMatnr(), orderDetl.getBatch(), orderDetl.getBrand(), orderDetl.getStandby1(), orderDetl.getStandby2(), orderDetl.getStandby3(), orderDetl.getBoxType1(), orderDetl.getBoxType2(), orderDetl.getBoxType3());
+                if (Cools.isEmpty(orderDetlPakin)) {
                     continue;
                 }
                 if (orderDetlPakin.getAnfme() < (orderDetlPakin.getWorkQty() + orderDetl.getAnfme())) {
@@ -177,11 +181,11 @@
                 }
                 // 淇敼璁㈠崟鏄庣粏浣滀笟鏁伴噺
                 if (!orderDetlPakinService.increaseWorkQty(orderDetlPakin.getOrderId(), orderDetlPakin.getMatnr(), orderDetlPakin.getBatch(), orderDetlPakin.getBrand(),
-                        orderDetlPakin.getStandby1(), orderDetlPakin.getStandby2(), orderDetlPakin.getStandby3(), orderDetlPakin.getBoxType1(), orderDetlPakin.getBoxType2(), orderDetlPakin.getBoxType3(),orderDetl.getAnfme())) {
+                        orderDetlPakin.getStandby1(), orderDetlPakin.getStandby2(), orderDetlPakin.getStandby3(), orderDetlPakin.getBoxType1(), orderDetlPakin.getBoxType2(), orderDetlPakin.getBoxType3(), orderDetl.getAnfme())) {
                     throw new CoolException("淇敼鍗曟嵁鏄庣粏宸ヤ綔鏁伴噺澶辫触");
                 }
 
-                if (order.getSettle() == 1){
+                if (order.getSettle() == 1) {
                     orderPakinService.updateSettle(order.getId(), 2L, userId);
                 }
             }
@@ -192,7 +196,7 @@
 
     @Override
     @Transactional
-    public R pickConfirm(PickConfirmParam param,Long userId) {
+    public R pickConfirm(PickConfirmParam param, Long userId) {
 
         LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>()
                 .eq("loc_no", param.getLocNo()));
@@ -216,9 +220,9 @@
         //妫�楠屼紶鍙傛槸鍚﹀拰璁㈠崟鏄庣粏鍖归厤
         for (PickMatParam matParam : param.getList()) {
             orderDetlPakin = orderDetlPakinService.selectItem
-                    (matParam.getOrderNo(), matParam.getMatnr(),matParam.getBatch(),matParam.getBrand(),
-                            matParam.getStandby1(),matParam.getStandby2(),matParam.getStandby3(),
-                            matParam.getBoxType1(),matParam.getBoxType2(),matParam.getBoxType3());
+                    (matParam.getOrderNo(), matParam.getMatnr(), matParam.getBatch(), matParam.getBrand(),
+                            matParam.getStandby1(), matParam.getStandby2(), matParam.getStandby3(),
+                            matParam.getBoxType1(), matParam.getBoxType2(), matParam.getBoxType3());
             if (orderDetlPakin == null) {
                 return R.error("鐗╂枡鏁版嵁涓嶅瓨鍦�");
             }
@@ -244,8 +248,8 @@
         wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細101.鐢熸垚鍑哄簱
         wrkMast.setIoType(104); // 鍏ュ嚭搴撶姸鎬�
         wrkMast.setIoPri(13D); // 浼樺厛绾э細13
-        wrkMast.setSourceStaNo(staDesc.getCrnStn()); // 婧愮珯
-        wrkMast.setStaNo(staDesc.getStnNo()); // 鐩爣绔�
+        wrkMast.setSourceStaNo(staDesc.getCrnStn() + ""); // 婧愮珯
+        wrkMast.setStaNo(staDesc.getStnNo() + ""); // 鐩爣绔�
         wrkMast.setSourceLocNo(param.getLocNo()); // 婧愬簱浣�
         wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
         wrkMast.setPicking("Y"); // 鎷f枡
@@ -282,7 +286,7 @@
             wrkDetl.setModiTime(now);
             wrkDetl.setModiUser(userId);
             wrkDetl.setZpallet(wrkMast.getBarcode());
-            if(Cools.isEmpty(matParam.getBatch())){
+            if (Cools.isEmpty(matParam.getBatch())) {
                 wrkDetl.setBatch("");
             }
             if (!wrkDetlService.insert(wrkDetl)) {
@@ -291,10 +295,10 @@
 
             //鏇存柊璁㈠崟宸ヤ綔鏁伴噺
             orderDetlPakinService.increaseWorkQty(orderDetlPakin.getOrderId(), matParam.getMatnr(),
-                    matParam.getBatch(),matParam.getBrand(),matParam.getStandby1(),matParam.getStandby2(),matParam.getStandby3(),
-                    matParam.getBoxType1(),matParam.getBoxType2(),matParam.getBoxType3(),matParam.getUseCount());
+                    matParam.getBatch(), matParam.getBrand(), matParam.getStandby1(), matParam.getStandby2(), matParam.getStandby3(),
+                    matParam.getBoxType1(), matParam.getBoxType2(), matParam.getBoxType3(), matParam.getUseCount());
             // 鏇存柊宸ヤ綔妗g姸鎬�
-            orderPakinService.updateSettle(orderDetlPakin.getOrderId(),2L,userId);
+            orderPakinService.updateSettle(orderDetlPakin.getOrderId(), 2L, userId);
         }
         // 淇敼搴撲綅鐘舵��:   F.鍦ㄥ簱 ====>>> R.鍑哄簱棰勭害/P.鎷f枡/鐩樼偣/骞舵澘鍑哄簱涓�
         locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", param.getLocNo()));
@@ -317,47 +321,47 @@
     public R WarehouseOutV1(CombParam combParam, Long hostId, Long userId) {
         //鍒ゆ柇搴撲綅鐘舵��
         LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", combParam.getLocNo()));
-        if (Cools.isEmpty(locMast)){
+        if (Cools.isEmpty(locMast)) {
             return R.error("璇ュ簱浣嶄笉瀛樺湪");
         }
-        if (!locMast.getLocSts().equals("P")){
-            return R.error("璇ュ簱浣嶇姸鎬佷负锛�"+locMast.getLocSts()+",涓嶆弧瓒冲苟鏉块�斾腑鎷i�夋潯浠讹紒锛侊紒");
+        if (!locMast.getLocSts().equals("P")) {
+            return R.error("璇ュ簱浣嶇姸鎬佷负锛�" + locMast.getLocSts() + ",涓嶆弧瓒冲苟鏉块�斾腑鎷i�夋潯浠讹紒锛侊紒");
         }
         //鏌ヨ搴撳瓨鏁版嵁
-        for (CombParam.CombMat combMat :combParam.getCombMats()){
+        for (CombParam.CombMat combMat : combParam.getCombMats()) {
             List<LocDetl> locDetlList = locDetlService.selectList(new EntityWrapper<LocDetl>()
-                            .eq("loc_no", combParam.getLocNo())
-                            .eq("matnr", combMat.getMatnr())
+                    .eq("loc_no", combParam.getLocNo())
+                    .eq("matnr", combMat.getMatnr())
             );
-            if (locDetlList.isEmpty()){
+            if (locDetlList.isEmpty()) {
                 return R.error("鏈煡璇㈠埌搴撳瓨鏁版嵁");
             }
-            if (locDetlList.size()>1){
+            if (locDetlList.size() > 1) {
                 return R.error("搴撳瓨鏁版嵁澶т簬1鏉★紝涓轰繚璇佹暟鎹噯纭�э紝璇风敤姝e父娴佺▼鍑哄簱锛侊紒锛�");
             }
             LocDetl locDetl = locDetlList.get(0);
-            if (combMat.getAnfme() > locDetl.getAnfme()){
+            if (combMat.getAnfme() > locDetl.getAnfme()) {
                 return R.error("鎷i�夋暟閲忛敊璇紝瓒呭嚭搴撳瓨鏁伴噺");
             }
-            if (!Cools.isEmpty(combMat.getOrderNo())){
+            if (!Cools.isEmpty(combMat.getOrderNo())) {
                 OrderPakout orderPakout = orderPakoutService.selectByNo(combMat.getOrderNo());
-                if (Cools.isEmpty(orderPakout)){
+                if (Cools.isEmpty(orderPakout)) {
                     continue;
                 }
-                if (orderPakout.getSettle() == 1){
-                    OrderInAndOutUtil.updateOrder(false,orderPakout.getId(), 2L, 9527L);
+                if (orderPakout.getSettle() == 1) {
+                    OrderInAndOutUtil.updateOrder(false, orderPakout.getId(), 2L, 9527L);
                 }
                 OrderDetlPakout orderDetlPakout = orderDetlPakoutService.selectItem(orderPakout.getId(), combMat.getMatnr(), combMat.getBatch(),
                         combMat.getBrand(), combMat.getStandby1(), combMat.getStandby2(), combMat.getStandby3(), combMat.getBoxType1(), combMat.getBoxType2(), combMat.getBoxType3());
-                if (Cools.isEmpty(orderDetlPakout)){
+                if (Cools.isEmpty(orderDetlPakout)) {
                     continue;
                 }
-                if (orderDetlPakout.getAnfme() < (orderDetlPakout.getWorkQty()+combMat.getAnfme())){
+                if (orderDetlPakout.getAnfme() < (orderDetlPakout.getWorkQty() + combMat.getAnfme())) {
                     throw new CoolException("鎷i�夋暟閲忓嚭閿�,璁㈠崟鍓╀綑鍑哄簱鏁伴噺灏忎簬宸插嚭搴撴暟閲忎笌灏嗘嫞閫夋暟閲忎箣鍜岋紒锛侊紒");
                 }
                 // 淇敼璁㈠崟鏄庣粏浣滀笟鏁伴噺
                 if (!orderDetlPakoutService.increaseWorkQty(orderDetlPakout.getOrderId(), combMat.getMatnr(), combMat.getBatch(), combMat.getBrand(),
-                        combMat.getStandby1(), combMat.getStandby2(), combMat.getStandby3(), combMat.getBoxType1(), combMat.getBoxType2(), combMat.getBoxType3(),combMat.getAnfme())) {
+                        combMat.getStandby1(), combMat.getStandby2(), combMat.getStandby3(), combMat.getBoxType1(), combMat.getBoxType2(), combMat.getBoxType3(), combMat.getAnfme())) {
                     throw new CoolException("淇敼鍗曟嵁鏄庣粏宸ヤ綔鏁伴噺澶辫触");
                 }
 //                // 淇敼璁㈠崟鏄庣粏瀹屾垚鏁伴噺
@@ -378,8 +382,8 @@
                 wrkMast.setIoType(108); // 鍏ュ嚭搴撶姸鎬侊細鍑哄簱锛屾嫞鏂欏叆搴�
                 wrkMast.setIoPri(13D); // 浼樺厛绾�
                 wrkMast.setCrnNo(1);
-                wrkMast.setSourceStaNo(1);
-                wrkMast.setStaNo(1);
+                wrkMast.setSourceStaNo(1 + "");
+                wrkMast.setStaNo(1 + "");
                 wrkMast.setSourceLocNo(combParam.getLocNo());
                 wrkMast.setBarcode(combParam.getBarcode()); // 鎵樼洏鐮�
                 wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
@@ -395,7 +399,7 @@
                 wrkMast.setModiUser(userId);
                 wrkMastService.insert(wrkMast);
 
-                Mat mat = matService.selectOne(new EntityWrapper<Mat>().eq("matnr",combMat.getMatnr()));
+                Mat mat = matService.selectOne(new EntityWrapper<Mat>().eq("matnr", combMat.getMatnr()));
                 if (mat == null) {
                     throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐ワ紝鐗╂枡淇℃伅涓嶅瓨鍦細" + combMat.getMatnr());
                 }
@@ -412,7 +416,7 @@
                 wrkDetl.setModiUser(userId);
                 wrkDetl.setZpallet(wrkMast.getBarcode());
                 wrkDetl.setBatch(combMat.getBatch());
-                if(Cools.isEmpty(combMat.getBatch())){
+                if (Cools.isEmpty(combMat.getBatch())) {
                     wrkDetl.setBatch("");
                 }
                 wrkDetl.setBoxType1(combMat.getBoxType1());
@@ -425,8 +429,8 @@
                 wrkDetlService.insert(wrkDetl);
                 System.out.println("姝e父");
 
-            }catch (Exception e) {
-                throw new CoolException("鎿嶄綔鏁版嵁寮傚父锛�"+e.getMessage());
+            } catch (Exception e) {
+                throw new CoolException("鎿嶄綔鏁版嵁寮傚父锛�" + e.getMessage());
             }
         }
         return R.ok("鎿嶄綔鎴愬姛锛�");
@@ -509,7 +513,7 @@
         Wrapper<OrderDetl> wrapper1 = new EntityWrapper<>();
         wrapper1.eq("status", 1);
         wrapper1.in("order_id", orderIds);
-        wrapper1.orderBy("create_time",false);
+        wrapper1.orderBy("create_time", false);
         if (!Cools.isEmpty(matnr)) {
             wrapper1.like("matnr", matnr);
         }
@@ -539,12 +543,12 @@
     }
 
     @Override
-    @Transactional
+    @Transactional(rollbackFor = Exception.class)
     public void comb(CombParam param, Long userId) {
         if (Cools.isEmpty(param.getBarcode(), param.getCombMats())) {
             throw new CoolException(BaseRes.PARAM);
         }
-        if(param.getCombMats().size()>1){
+        if (param.getCombMats().size() < 1) {
             throw new CoolException("璇锋彁鍙栦竴涓晢鍝侊紝鎴栬�呭埛鏂伴噸鏂扮粍鎵橈紒");
         }
         // 鍒ゆ柇鏄惁鏈夌浉鍚屾潯鐮佺殑鏁版嵁
@@ -553,16 +557,13 @@
             throw new CoolException(param.getBarcode() + "鏁版嵁姝e湪杩涜鍏ュ簱");
         }
 
-        if(param.getBarcode().length()!=8){
+        if (param.getBarcode().length() != 8) {
             throw new CoolException("鏉$爜闀垮害涓嶆槸8浣�===>>" + param.getBarcode());
         }
-        if (param.getCombMats().size()>1){
-            throw new CoolException("涓嶅厑璁告贩鏂�===>>" + param.getBarcode());
-        }
 
-        int countLoc = locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("zpallet",param.getBarcode()));
-        int countWrk = wrkDetlService.selectCount(new EntityWrapper<WrkDetl>().eq("zpallet",param.getBarcode()));
-        int countwait = waitPakinService.selectCount(new EntityWrapper<WaitPakin>().eq("zpallet",param.getBarcode()));
+        int countLoc = locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("zpallet", param.getBarcode()));
+        int countWrk = wrkDetlService.selectCount(new EntityWrapper<WrkDetl>().eq("zpallet", param.getBarcode()));
+        int countwait = waitPakinService.selectCount(new EntityWrapper<WaitPakin>().eq("zpallet", param.getBarcode()));
         if (countLoc > 0 || countWrk > 0 || countwait > 0) {
             throw new CoolException("缁勬墭妗�/宸ヤ綔妗�/搴撳瓨鏉$爜鏁版嵁宸插瓨鍦�===>>" + param.getBarcode());
         }
@@ -571,12 +572,11 @@
 
         // 鏃犲崟缁勬墭
         if (Cools.isEmpty(param.getOrderNo())) {
-
             // 鐢熸垚鍏ュ簱閫氱煡妗�
             List<DetlDto> detlDtos = new ArrayList<>();
             param.getCombMats().forEach(elem -> {
-                DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(),elem.getBrand(),elem.getStandby1(),elem.getStandby2(),elem.getStandby3(),
-                        elem.getBoxType1(),elem.getBoxType2(),elem.getBoxType3(),  elem.getAnfme());
+                DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(), elem.getBrand(), elem.getStandby1(), elem.getStandby2(), elem.getStandby3(),
+                        elem.getBoxType1(), elem.getBoxType2(), elem.getBoxType3(), elem.getAnfme());
                 if (DetlDto.has(detlDtos, detlDto)) {
                     DetlDto one = DetlDto.findDto(detlDtos, detlDto);
                     assert one != null;
@@ -593,7 +593,7 @@
                     throw new CoolException(detlDto.getMatnr() + "鍟嗗搧妗f涓嶅瓨鍦�");
                 }
                 WaitPakin waitPakin = new WaitPakin();
-                waitPakin.sync(mat);
+                BeanUtils.copyProperties(mat, waitPakin);
                 waitPakin.setBatch(detlDto.getBatch());
                 waitPakin.setZpallet(param.getBarcode());   // 鎵樼洏鐮�
                 waitPakin.setIoStatus("N");     // 鍏ュ嚭鐘舵��
@@ -607,7 +607,7 @@
                     throw new CoolException("淇濆瓨鍏ュ簱閫氱煡妗eけ璐�");
                 }
             }
-        // 鍏宠仈缁勬墭
+            // 鍏宠仈缁勬墭
         } else {
 //            Order order = orderService.selectByNo(param.getOrderNo());
             Order order = OrderInAndOutUtil.selectByNo(Boolean.TRUE, param.getOrderNo());
@@ -617,22 +617,24 @@
             // 鐢熸垚鍏ュ簱閫氱煡妗�
             List<DetlDto> detlDtos = new ArrayList<>();
             param.getCombMats().forEach(elem -> {
-
                 // 璁㈠崟鏄庣粏鏁伴噺鏍¢獙
-//                OrderDetl orderDetl = orderDetlService.selectItem(order.getId(), elem.getMatnr(), elem.getBatch());
-                OrderDetl orderDetl = OrderInAndOutUtil.selectItem(Boolean.TRUE, order.getId(), elem.getMatnr(), elem.getBatch(),elem.getBrand(),elem.getStandby1(),elem.getStandby2(),elem.getStandby3(),
-                        elem.getBoxType1(),elem.getBoxType2(),elem.getBoxType3());
-                if (elem.getAnfme() > orderDetl.getEnableQty()) {
-                    throw new CoolException(orderDetl.getMatnr() + "鍏ュ簱鏁伴噺涓嶅悎娉�");
+//                OrderDetl orderDetl = OrderInAndOutUtil.selectItem(Boolean.TRUE, order.getId(), elem.getMatnr(), elem.getBatch(), elem.getBrand(), elem.getStandby1(), elem.getStandby2(), elem.getStandby3(),
+//                        elem.getBoxType1(), elem.getBoxType2(), elem.getBoxType3());
+                OrderDetlPakin detls = orderDetlPakinService.selectOne(new EntityWrapper<OrderDetlPakin>()
+                        .eq("order_id", order.getId())
+                        .eq("matnr", elem.getMatnr()));
+
+                if (Objects.isNull(detls)) {
+                    throw new CoolException("鏁版嵁閿欒锛氬崟鎹槑缁嗕笉瀛樺湪锛侊紒");
                 }
-                // 淇敼璁㈠崟浣滀笟鏁伴噺
-//                if (!orderDetlService.increaseWorkQty(order.getId(), elem.getMatnr(), elem.getBatch(), elem.getAnfme())) {
-//                    throw new CoolException("淇敼鍗曟嵁浣滀笟鏁伴噺澶辫触");
-//                }
-                OrderInAndOutUtil.increaseWorkQty(Boolean.TRUE,order.getId(), elem.getMatnr(), elem.getBatch(),elem.getBrand(),elem.getStandby1(),elem.getStandby2(),elem.getStandby3(),
-                        elem.getBoxType1(),elem.getBoxType2(),elem.getBoxType3(), elem.getAnfme());
-                DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(),elem.getBrand(),elem.getStandby1(),elem.getStandby2(),elem.getStandby3(),
-                        elem.getBoxType1(),elem.getBoxType2(),elem.getBoxType3(),  elem.getAnfme());
+
+                if (elem.getAnfme() > detls.getEnableQty()) {
+                    throw new CoolException(detls.getMatnr() + "鍏ュ簱鏁伴噺涓嶅悎娉�");
+                }
+                OrderInAndOutUtil.increaseWorkQty(Boolean.TRUE, order.getId(), elem.getMatnr(), elem.getBatch(), elem.getBrand(), elem.getStandby1(), elem.getStandby2(), elem.getStandby3(),
+                        elem.getBoxType1(), elem.getBoxType2(), elem.getBoxType3(), elem.getAnfme());
+                DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(), elem.getBrand(), elem.getStandby1(), elem.getStandby2(), elem.getStandby3(),
+                        elem.getBoxType1(), elem.getBoxType2(), elem.getBoxType3(), elem.getAnfme());
                 if (DetlDto.has(detlDtos, detlDto)) {
                     DetlDto one = DetlDto.findDto(detlDtos, detlDto);
                     assert one != null;
@@ -647,8 +649,10 @@
                     throw new CoolException(detlDto.getMatnr() + "鍟嗗搧妗f涓嶅瓨鍦�");
                 }
                 WaitPakin waitPakin = new WaitPakin();
-                waitPakin.sync(mat);
+                BeanUtils.copyProperties(mat, waitPakin);
+//                waitPakin.sync(mat);
                 waitPakin.setOrderNo(order.getOrderNo());   // 鍗曟嵁缂栧彿
+                waitPakin.setOrderId(order.getId());
                 waitPakin.setBatch(detlDto.getBatch());     // 搴忓垪鐮�
                 waitPakin.setZpallet(param.getBarcode());   // 鎵樼洏鐮�
                 waitPakin.setIoStatus("N");     // 鍏ュ嚭鐘舵��
@@ -663,7 +667,7 @@
                 }
             }
 //            orderService.updateSettle(order.getId(), 2L, userId);
-            OrderInAndOutUtil.updateOrder(Boolean.TRUE,order.getId(), 2L, userId);
+            OrderInAndOutUtil.updateOrder(Boolean.TRUE, order.getId(), 2L, userId);
         }
 
     }
@@ -680,15 +684,15 @@
         }
 
         // 鑾峰彇鍟嗗搧鍒楄〃
-        for(CombParam.CombMat combMat : param.getCombMats()){
+        for (CombParam.CombMat combMat : param.getCombMats()) {
             Mat mat = matService.selectByMatnr(combMat.getMatnr());
-            if (Cools.isEmpty(mat)){
+            if (Cools.isEmpty(mat)) {
                 throw new CoolException(combMat.getMatnr() + ":鍟嗗搧妗f涓嶅瓨鍦紒");
             }
-            if (Cools.isEmpty(combMat.getAnfme()) || combMat.getAnfme()==0){
+            if (Cools.isEmpty(combMat.getAnfme()) || combMat.getAnfme() == 0) {
                 throw new CoolException(combMat.getMatnr() + ":鍟嗗搧鏁伴噺鏈夎锛�");
             }
-            if (Cools.isEmpty(combMat.getBatch())){
+            if (Cools.isEmpty(combMat.getBatch())) {
 //                throw new CoolException(combMat.getMatnr() + ":鍟嗗搧鎵瑰彿鏈夎锛�");
             }
             ManLocDetl manLocDetl = new ManLocDetl();
@@ -709,16 +713,16 @@
     @Override
     public void offSale(OffSaleParam offSaleParam) {
         ManLocDetl manLocDetl = manLocDetlMapper.selectLocNo0(offSaleParam.getLocNo(), offSaleParam.getMatnr());
-        if (Cools.isEmpty(manLocDetl)){
+        if (Cools.isEmpty(manLocDetl)) {
             throw new CoolException("鏃犳鍟嗗搧锛�");
         }
         double anfme = manLocDetl.getAnfme() - offSaleParam.getAnfme();
         if (anfme < 0) {
             throw new CoolException("鍟嗗搧搴撳瓨涓嶈冻锛�");
-        } else if (anfme == 0){
+        } else if (anfme == 0) {
             manLocDetlMapper.deleteLocNo0(offSaleParam.getLocNo(), offSaleParam.getMatnr());
         }
-        manLocDetlMapper.updateAnfme0(anfme,manLocDetl.getNodeId());
+        manLocDetlMapper.updateAnfme0(anfme, manLocDetl.getNodeId());
     }
 
     // 鏌ユ壘鍟嗗搧
@@ -777,7 +781,9 @@
 
         // 娣诲姞鏄庣粏
         for (WrkDetl wrkDetl : list) {
-            if (wrkDetl.getAnfme() == 0.0D) { continue; }
+            if (wrkDetl.getAnfme() == 0.0D) {
+                continue;
+            }
             // todo 鐩樼偣璁板綍銆佷繚瀛樿皟鏁磋褰�
             String orderNo = wrkDetl.getOrderNo();
             Mat mat = matService.selectByMatnr(wrkDetl.getMatnr());
@@ -793,7 +799,7 @@
         }
 
         // 淇敼鐩樼偣浠诲姟涓绘。鐘舵��
-        wrkMast.setFullPlt(wrkDetlService.selectByWrkNo(wrkMast.getWrkNo()).size() != 0?"Y":"N");
+        wrkMast.setFullPlt(wrkDetlService.selectByWrkNo(wrkMast.getWrkNo()).size() != 0 ? "Y" : "N");
         wrkMast.setModiTime(now);
         wrkMast.setModiUser(userId);
         if (!wrkMastService.updateById(wrkMast)) {
@@ -835,8 +841,8 @@
                 }
                 Mat analyse = MatUtils.analyseMat(elem.getMatnr());
                 // 鏉$爜銆佺墿鏂欎唬鐮併�佸簭鍒楀彿銆佹暟閲�
-                DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(),analyse.getBrand(),elem.getStandby1(),elem.getStandby2(),elem.getStandby3(),
-                        elem.getBoxType1(),elem.getBoxType2(),elem.getBoxType3(),  elem.getAnfme());
+                DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(), analyse.getBrand(), elem.getStandby1(), elem.getStandby2(), elem.getStandby3(),
+                        elem.getBoxType1(), elem.getBoxType2(), elem.getBoxType3(), elem.getAnfme());
 
 //                DetlDto detlDto = new DetlDto(elem.getMatnr(), analyse.getMatnr(), analyse.getBarcode(), elem.getAnfme());
 //                DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(), elem.getAnfme());
@@ -873,10 +879,10 @@
                     if (jsonObject.getInteger("code").equals(200)) {
                         success = true;
                     } else if (jsonObject.getInteger("code").equals(500)) {
-                        log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", MesConstant.URL+MesConstant.PACK_DOWN_URL, JSON.toJSONString(mesCombParam), response);
+                        log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", MesConstant.URL + MesConstant.PACK_DOWN_URL, JSON.toJSONString(mesCombParam), response);
                         throw new CoolException(jsonObject.getString("msg"));
                     } else {
-                        log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", MesConstant.URL+MesConstant.PACK_DOWN_URL, JSON.toJSONString(mesCombParam), response);
+                        log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", MesConstant.URL + MesConstant.PACK_DOWN_URL, JSON.toJSONString(mesCombParam), response);
                         throw new CoolException("涓婃姤mes绯荤粺澶辫触");
                     }
                 } catch (Exception e) {
@@ -894,7 +900,9 @@
                                 response,
                                 success
                         );
-                    } catch (Exception e) { log.error("", e); }
+                    } catch (Exception e) {
+                        log.error("", e);
+                    }
                 }
 
             }
@@ -924,8 +932,8 @@
                 // 淇敼浣滀笟鏁伴噺 ----------------------------------------
                 // 璁㈠崟鏄庣粏鏁伴噺鏍¢獙
 //                OrderDetl orderDetl = orderDetlService.selectItem(order.getId(), detlDto.getMatnr(), detlDto.getBatch());
-                OrderDetl orderDetl = OrderInAndOutUtil.selectItem(Boolean.TRUE, order.getId(), detlDto.getMatnr(), detlDto.getBatch(),detlDto.getBrand(),detlDto.getStandby1(),detlDto.getStandby2(),detlDto.getStandby3()
-                        ,detlDto.getBoxType1(),detlDto.getBoxType2(),detlDto.getBoxType3());
+                OrderDetl orderDetl = OrderInAndOutUtil.selectItem(Boolean.TRUE, order.getId(), detlDto.getMatnr(), detlDto.getBatch(), detlDto.getBrand(), detlDto.getStandby1(), detlDto.getStandby2(), detlDto.getStandby3()
+                        , detlDto.getBoxType1(), detlDto.getBoxType2(), detlDto.getBoxType3());
                 if (detlDto.getAnfme() > orderDetl.getEnableQty()) {
                     throw new CoolException(orderDetl.getMatnr() + "鍏ュ簱鏁伴噺涓嶅悎娉�");
                 }
@@ -933,15 +941,15 @@
 //                if (!orderDetlService.increaseWorkQty(order.getId(), detlDto.getMatnr(), detlDto.getBatch(), detlDto.getAnfme())) {
 //                    throw new CoolException("淇敼鍗曟嵁浣滀笟鏁伴噺澶辫触");
 //                }
-                OrderInAndOutUtil.increaseWorkQty(Boolean.TRUE,order.getId(), detlDto.getMatnr(), detlDto.getBatch(),detlDto.getBrand(),detlDto.getStandby1(),detlDto.getStandby2(),detlDto.getStandby3()
-                        ,detlDto.getBoxType1(),detlDto.getBoxType2(),detlDto.getBoxType3(), detlDto.getAnfme());
+                OrderInAndOutUtil.increaseWorkQty(Boolean.TRUE, order.getId(), detlDto.getMatnr(), detlDto.getBatch(), detlDto.getBrand(), detlDto.getStandby1(), detlDto.getStandby2(), detlDto.getStandby3()
+                        , detlDto.getBoxType1(), detlDto.getBoxType2(), detlDto.getBoxType3(), detlDto.getAnfme());
                 // 淇濆瓨鍏ュ簱閫氱煡妗�
                 Mat mat = matService.selectByMatnr(detlDto.getMatnr());
                 if (Cools.isEmpty(mat)) {
                     throw new CoolException(detlDto.getMatnr() + "鍟嗗搧妗f涓嶅瓨鍦�");
                 }
                 WaitPakin waitPakin = new WaitPakin();
-                waitPakin.sync(mat);
+                BeanUtils.copyProperties(mat, waitPakin);
                 waitPakin.setOrderNo(orderNo);
                 waitPakin.setBatch(detlDto.getBatch());
                 waitPakin.setZpallet(param.getBarcode());   // 鎵樼洏鐮�
@@ -978,7 +986,7 @@
         //鏍规嵁璁㈠崟鍙风敓鎴愬嚭搴撲换鍔″伐浣滄。
         Order order = OrderInAndOutUtil.selectByNo(Boolean.FALSE, orderNo);
 //        Order order = orderService.selectOne(new EntityWrapper<Order>().eq("order_no", orderNo));
-        if (order.getSettle() != 1 && order.getSettle() != 2){
+        if (order.getSettle() != 1 && order.getSettle() != 2) {
             throw new CoolException("璇ヨ鍗曞凡澶勭悊");
         }
 
@@ -986,13 +994,13 @@
         List<OrderDetl> orderDetls = OrderInAndOutUtil.selectByOrderId(Boolean.FALSE, order.getId());
 
         Date now = new Date();
-        for(OrderDetl orderDetl : orderDetls){
+        for (OrderDetl orderDetl : orderDetls) {
             //鏌ヨ鎵�鏈夊簱浣嶇姸鎬佷负F鐨勫簱浣嶄俊鎭�
-            List<LocDetl> locDetls = locDetlService.queryStock(orderDetl.getMatnr(),orderDetl.getBatch(),null,null);
+            List<LocDetl> locDetls = locDetlService.queryStock(orderDetl.getMatnr(), orderDetl.getBatch(), null, null);
             if (locDetls.size() == 0) {
                 throw new CoolException("搴撳瓨涓病鏈夎鐗╂枡");
             }
-            for(LocDetl locDetl : locDetls){
+            for (LocDetl locDetl : locDetls) {
                 //濡傛灉璇ュ簱浣嶅嚭搴撹矾绾挎墍鐢ㄧ殑鍫嗗灈鏈簅ut_enable涓嶄负Y,璺宠繃璇ュ惊鐜�
                 LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>()
                         .eq("loc_no", locDetl.getLocNo()));
@@ -1001,13 +1009,13 @@
                 }
                 BasCrnp crn_no = basCrnpService.selectOne(new EntityWrapper<BasCrnp>()
                         .eq("crn_no", locMast.getCrnNo()));
-                if (Cools.isEmpty(crn_no) || !crn_no.getOutEnable().equals("Y")){
+                if (Cools.isEmpty(crn_no) || !crn_no.getOutEnable().equals("Y")) {
                     continue;
                 }
 
                 //鍙嚭搴撴暟閲� = 璁㈠崟鏁伴噺 - 浣滀笟涓暟閲�
                 Double outQty = orderDetl.getAnfme() - orderDetl.getWorkQty();
-                if(outQty <= 0){
+                if (outQty <= 0) {
                     break;
                 }
                 // 鍒ゆ柇鍏ュ嚭搴撶被鍨嬶細101.鍏ㄦ澘鍑哄簱 or 103.鎷f枡鍑哄簱
@@ -1022,19 +1030,19 @@
 //                if(!orderService.update(order, new EntityWrapper<Order>().eq("order_no", orderNo))){
 //                    throw new CoolException("鏇存柊璁㈠崟鐘舵�佸け璐�");
 //                }
-                OrderInAndOutUtil.updateOrder(order.getPakinPakoutStatus$(),order.getId(),2L,userId);
+                OrderInAndOutUtil.updateOrder(order.getPakinPakoutStatus$(), order.getId(), 2L, userId);
                 orderDetl.setWorkQty(orderDetl.getWorkQty() + curOutQty);
                 orderDetl.setUpdateBy(userId);
                 orderDetl.setUpdateTime(now);
                 Wrapper wrapper = new EntityWrapper<OrderDetl>().eq("order_no", orderNo)
-                        .eq("matnr",orderDetl.getMatnr());
-                if(!Cools.isEmpty(orderDetl.getBatch())){
+                        .eq("matnr", orderDetl.getMatnr());
+                if (!Cools.isEmpty(orderDetl.getBatch())) {
                     wrapper.eq("batch", orderDetl.getBatch());
                 }
 //                if(!orderDetlService.update(orderDetl, wrapper)){
 //                    throw new CoolException("鏇存柊璁㈠崟鏄庣粏澶辫触");
 //                }
-                OrderInAndOutUtil.updateOrderDetl(order.getPakinPakoutStatus$(),order,orderDetl);
+                OrderInAndOutUtil.updateOrderDetl(order.getPakinPakoutStatus$(), order, orderDetl);
 
             }
 
@@ -1067,8 +1075,8 @@
         wrkMast.setIoType(ioType); // 鍏ュ嚭搴撶姸鎬�
         wrkMast.setIoPri(13D); // 浼樺厛绾э細13
         wrkMast.setCrnNo(locMast.getCrnNo());
-        wrkMast.setSourceStaNo(staDesc.getCrnStn()); // 婧愮珯
-        wrkMast.setStaNo(staDesc.getStnNo()); // 鐩爣绔�
+        wrkMast.setSourceStaNo(staDesc.getCrnStn() + ""); // 婧愮珯
+        wrkMast.setStaNo(staDesc.getStnNo() + ""); // 鐩爣绔�
         wrkMast.setSourceLocNo(locDetl.getLocNo()); // 婧愬簱浣�
         wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
         wrkMast.setPicking("N"); // 鎷f枡
@@ -1111,4 +1119,132 @@
             throw new CoolException(locDetl.getLocNo() + "搴撲綅涓嶆槸鍦ㄥ簱鐘舵��");
         }
     }
+
+    /**
+     * @author Ryan
+     * @date 2025/9/22
+     * @description: 鑾峰彇缂撳啿鍖哄簱浣嶄俊鎭�
+     * @version 1.0
+     */
+    @Override
+    public R getCacheLocs() {
+        return R.ok().add(locCacheService.selectList(new EntityWrapper<LocCache>()
+                .eq("frozen", 0)
+                .ne("full_plt", "Y")
+                .eq("loc_sts", LocStsType.LOC_STS_TYPE_O.type).orderAsc(Arrays.asList("row1"))));
+
+    }
+
+    /**
+     * @author Ryan
+     * @date 2025/9/22
+     * @description: 鍛煎彨AGV鎼繍
+     * @version 1.0
+     */
+    @Override
+    public R callAgvMove(AgvCallParams params, Long userId) {
+        if (Objects.isNull(params.getTarSite())) {
+            throw new CoolException("鐩爣鍙傛暟涓嶈兘涓虹┖锛侊紒");
+        }
+        if (Objects.isNull(params.getOrgSite())) {
+            throw new CoolException("婧愮珯鐐逛笉鑳戒负绌猴紒锛�");
+        }
+        LocCache locCache = locCacheService.selectOne(new EntityWrapper<LocCache>()
+                .eq("frozen", 0)
+                .eq("loc_sts", LocStsType.LOC_STS_TYPE_O.type)
+                .eq("loc_no", params.getTarSite())
+                .orderAsc(Arrays.asList("loc_no"))
+                .last("OFFSET 0 ROWS FETCH NEXT 1 ROWS ONLY"));
+        if (Objects.isNull(locCache)) {
+            throw new CoolException("璇锋鏌ョ洰鏍囧簱浣嶆槸鍚﹂棽缃腑锛侊紒");
+        }
+
+        generateAgvTask("agv", locCache, params.getOrgSite(), params.getBarcode(), userId);
+
+        return R.ok();
+    }
+
+    /**
+     * @author Ryan
+     * @date 2025/9/22
+     * @description: 鐢熸垚AGV鎼繍浠诲姟
+     * @version 1.0
+     */
+    @Transactional(rollbackFor = Exception.class)
+    public void generateAgvTask(String type, LocCache loc, String orgSite, String barcode, Long userId) {
+        WaitPakin pakin = waitPakinService.selectOne(new EntityWrapper<WaitPakin>().eq("zpallet", barcode));
+        if (Objects.isNull(pakin)) {
+            throw new CoolException("缁勬墭淇℃伅涓嶅瓨鍦紒锛�");
+        }
+        OrderPakin orderPakin = orderPakinService.selectById(pakin.getOrderId());
+        if (Objects.isNull(orderPakin)) {
+            throw new CoolException("鍗曟嵁涓嶈兘涓虹┖锛侊紒");
+        }
+
+        List<OrderDetlPakin> detls = orderDetlPakinService.selectList(new EntityWrapper<OrderDetlPakin>().eq("order_id", pakin.getOrderId()));
+        if (Objects.isNull(detls) || detls.isEmpty()) {
+            throw new CoolException("鏁版嵁閿欒锛氬崟鎹槑缁嗕笉瀛樺湪锛侊紒");
+        }
+
+        Date now = new Date();
+        // 鑾峰彇宸ヤ綔鍙�
+        int workNo = commonService.getWorkNo(WorkNoType.PICK.type);
+        // 淇濆瓨宸ヤ綔妗�
+        WrkMast wrkMast = new WrkMast();
+        wrkMast.setWrkNo(workNo);
+        wrkMast.setIoTime(now);
+        wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
+        wrkMast.setIoType(11); // 鍏ュ嚭搴撶姸鎬侊細 11.搴撴牸绉昏浇
+        wrkMast.setTaskType("agv");
+        wrkMast.setIoPri(10D);
+        wrkMast.setLocNo(loc.getLocNo()); // 鐩爣搴撲綅
+        wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
+        wrkMast.setPicking("N"); // 鎷f枡
+        wrkMast.setExitMk("N"); // 閫�鍑�
+        wrkMast.setSourceLocNo(orgSite);
+        wrkMast.setEmptyMk(loc.getLocSts().equals("D") ? "Y" : "N"); // 绌烘澘
+        wrkMast.setBarcode(barcode); // 鎵樼洏鐮�
+        wrkMast.setLinkMis("N");
+        wrkMast.setAppeUser(userId);
+        wrkMast.setAppeTime(now);
+        wrkMast.setModiUser(userId);
+        wrkMast.setModiTime(now);
+        if (!wrkMastService.insert(wrkMast)) {
+            throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
+        }
+
+        List<WrkDetl> taskDetls = new ArrayList<>();
+        detls.forEach(detl -> {
+            WrkDetl wrkDetl = new WrkDetl();
+            BeanUtils.copyProperties(detl, wrkDetl);
+            wrkDetl.setWrkNo(workNo)
+                    .setIoTime(new Date())
+                    .setAnfme(detl.getAnfme())
+                    .setZpallet(pakin.getZpallet())
+                    .setBatch(detl.getBatch())
+                    .setMatnr(detl.getMatnr())
+                    .setMaktx(detl.getMaktx())
+                    .setAppeUser(userId)
+                    .setUnit(detl.getUnit())
+                    .setModel(detl.getModel())
+                    .setAppeTime(new Date())
+                    .setModiUser(userId);
+            taskDetls.add(wrkDetl);
+        });
+        //淇濆瓨宸ヤ綔妗f槑缁�
+        if (!wrkDetlService.insertBatch(taskDetls)) {
+            throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
+        }
+        // 淇敼鐩爣搴撲綅鐘舵��
+        if (loc.getLocSts().equals("O")) {
+            loc.setLocSts("S"); // S.鍏ュ簱棰勭害
+            loc.setModiTime(now);
+            loc.setModiUser(userId);
+            if (!locCacheService.updateById(loc)) {
+                throw new CoolException("鏇存柊鐩爣搴撲綅鐘舵�佸け璐�");
+            }
+        } else {
+            throw new CoolException("绉昏浆澶辫触锛岀洰鏍囧簱浣嶇姸鎬侊細" + loc.getLocSts$());
+        }
+    }
 }
diff --git a/src/main/java/com/zy/asrs/service/impl/TaskDetlLogServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/TaskDetlLogServiceImpl.java
new file mode 100644
index 0000000..3def8a6
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/impl/TaskDetlLogServiceImpl.java
@@ -0,0 +1,12 @@
+package com.zy.asrs.service.impl;
+
+import com.zy.asrs.mapper.TaskDetlLogMapper;
+import com.zy.asrs.entity.TaskDetlLog;
+import com.zy.asrs.service.TaskDetlLogService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+@Service("taskDetlLogService")
+public class TaskDetlLogServiceImpl extends ServiceImpl<TaskDetlLogMapper, TaskDetlLog> implements TaskDetlLogService {
+
+}
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/TaskLogServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/TaskLogServiceImpl.java
new file mode 100644
index 0000000..a413b01
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/impl/TaskLogServiceImpl.java
@@ -0,0 +1,12 @@
+package com.zy.asrs.service.impl;
+
+import com.zy.asrs.mapper.TaskLogMapper;
+import com.zy.asrs.entity.TaskLog;
+import com.zy.asrs.service.TaskLogService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+@Service("taskLogService")
+public class TaskLogServiceImpl extends ServiceImpl<TaskLogMapper, TaskLog> implements TaskLogService {
+
+}
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/service/impl/WorkServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
index e0ea69d..ede2bb1 100644
--- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -109,8 +109,8 @@
 //        List<String> matnrs = param.getList().stream().map(FullStoreParam.MatCodeStore::getMatnr).distinct().collect(Collectors.toList());
 //        List<String> batchs = param.getList().stream().map(FullStoreParam.MatCodeStore::getBatch).distinct().collect(Collectors.toList());
         FindLocNoAttributeVo findLocNoAttributeVo = new FindLocNoAttributeVo(param.getList().get(0));
-        StartupDto dto = commonService.getLocNo(1, param.getDevpNo(), findLocNoAttributeVo,locTypeDto);
-        if (Cools.isEmpty(dto)){
+        StartupDto dto = commonService.getLocNo(1, param.getDevpNo(), findLocNoAttributeVo, locTypeDto);
+        if (Cools.isEmpty(dto)) {
             throw new CoolException("鏌ヨ搴撲綅澶辫触锛侊紒==銆媠tartupFullPutStore ==銆� commonService.getLocNo");
         }
         // 鐢熸垚宸ヤ綔鍙�
@@ -123,8 +123,8 @@
         wrkMast.setIoType(1); // 鍏ュ嚭搴撶姸鎬侊細1.鍏ュ簱
         wrkMast.setIoPri(13D); // 浼樺厛绾э細13
         wrkMast.setCrnNo(dto.getCrnNo());
-        wrkMast.setSourceStaNo(dto.getSourceStaNo());
-        wrkMast.setStaNo(dto.getStaNo());
+        wrkMast.setSourceStaNo(dto.getSourceStaNo() + "");
+        wrkMast.setStaNo(dto.getStaNo() + "");
         wrkMast.setLocNo(dto.getLocNo());
         wrkMast.setBarcode(param.getBarcode()); // 鎵樼洏鐮�
         wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
@@ -143,9 +143,9 @@
         // 鐢熸垚宸ヤ綔妗f槑缁�
         List<DetlDto> detlDtos = new ArrayList<>();
         param.getList().forEach(elem -> {
-            DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(),elem.getBrand(),elem.getStandby1(),elem.getStandby2(),elem.getStandby3(),elem.getBoxType1(),elem.getBoxType2(),elem.getBoxType3(), elem.getAnfme());
+            DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(), elem.getBrand(), elem.getStandby1(), elem.getStandby2(), elem.getStandby3(), elem.getBoxType1(), elem.getBoxType2(), elem.getBoxType3(), elem.getAnfme());
             if (DetlDto.has(detlDtos, detlDto)) {
-                DetlDto detlDto1 = DetlDto.find(detlDtos, detlDto.getMatnr(), detlDto.getBatch(),detlDto.getBrand(),detlDto.getStandby1(),detlDto.getStandby2(),detlDto.getStandby3(),detlDto.getBoxType1(),detlDto.getBoxType2(),detlDto.getBoxType3());
+                DetlDto detlDto1 = DetlDto.find(detlDtos, detlDto.getMatnr(), detlDto.getBatch(), detlDto.getBrand(), detlDto.getStandby1(), detlDto.getStandby2(), detlDto.getStandby3(), detlDto.getBoxType1(), detlDto.getBoxType2(), detlDto.getBoxType3());
                 assert detlDto1 != null;
                 detlDto1.setAnfme(detlDto1.getAnfme() + detlDto.getAnfme());
             } else {
@@ -157,20 +157,20 @@
         sourceStaNo.setWrkNo(workNo);
         sourceStaNo.setModiUser(userId);
         sourceStaNo.setModiTime(now);
-        if (!basDevpService.updateById(sourceStaNo)){
+        if (!basDevpService.updateById(sourceStaNo)) {
             throw new CoolException("鏇存柊婧愮珯澶辫触");
         }
         // 鏇存柊鐩爣搴撲綅鐘舵��
         LocMast locMast = locMastService.selectById(dto.getLocNo());
-        if (locMast.getLocSts().equals("O")){
+        if (locMast.getLocSts().equals("O")) {
             locMast.setLocSts("S"); // S.鍏ュ簱棰勭害
             locMast.setModiUser(userId);
             locMast.setModiTime(now);
-            if (!locMastService.updateById(locMast)){
+            if (!locMastService.updateById(locMast)) {
                 throw new CoolException("鏀瑰彉搴撲綅鐘舵�佸け璐�");
             }
         } else {
-            throw new CoolException(dto.getLocNo()+"鐩爣搴撲綅宸茶鍗犵敤");
+            throw new CoolException(dto.getLocNo() + "鐩爣搴撲綅宸茶鍗犵敤");
         }
         return dto.getLocNo();
     }
@@ -184,8 +184,8 @@
         List<LocDetlDto> locDetlDtos = new ArrayList<>();
         for (StockOutParam.LocDetl paramLocDetl : param.getLocDetls()) {
             if (!Cools.isEmpty(paramLocDetl.getLocNo(), paramLocDetl.getMatnr(), paramLocDetl.getCount())) {
-                LocDetl one = locDetlService.selectItem(paramLocDetl.getLocNo(), paramLocDetl.getMatnr(), paramLocDetl.getBatch(),paramLocDetl.getBrand()
-                        ,paramLocDetl.getStandby1(),paramLocDetl.getStandby2(),paramLocDetl.getStandby3(),paramLocDetl.getBoxType1(),paramLocDetl.getBoxType2(),paramLocDetl.getBoxType3());
+                LocDetl one = locDetlService.selectItem(paramLocDetl.getLocNo(), paramLocDetl.getMatnr(), paramLocDetl.getBatch(), paramLocDetl.getBrand()
+                        , paramLocDetl.getStandby1(), paramLocDetl.getStandby2(), paramLocDetl.getStandby3(), paramLocDetl.getBoxType1(), paramLocDetl.getBoxType2(), paramLocDetl.getBoxType3());
                 if (null != one) locDetlDtos.add(new LocDetlDto(one, paramLocDetl.getCount()));
             }
         }
@@ -197,11 +197,11 @@
                 throw new CoolException(firstFrozenLocNo + "搴撲綅宸茶鍐荤粨!");
             }
             LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", locDetlDtos.get(0).getLocDetl().getLocNo()));
-            if (locMast.getLocSts().equals("F") || locMast.getLocSts().equals("D") ){
+            if (locMast.getLocSts().equals("F") || locMast.getLocSts().equals("D")) {
                 // 鍚姩鍑哄簱寮�濮� 101.鍑哄簱
                 stockOut(staNo, locDetlDtos, null, userId);
-            }else {
-                throw new CoolException("鎵�閫夊簱浣嶅瓨鍦ㄧ姸鎬佷笉涓篎銆丏鐨勫簱浣嶏紝搴撲綅鍙凤細"+locMast.getLocNo()+" 銆佸綋鍓嶇姸鎬侊細"+locMast.getLocSts()+"-"+locMast.getLocSts$());
+            } else {
+                throw new CoolException("鎵�閫夊簱浣嶅瓨鍦ㄧ姸鎬佷笉涓篎銆丏鐨勫簱浣嶏紝搴撲綅鍙凤細" + locMast.getLocNo() + " 銆佸綋鍓嶇姸鎬侊細" + locMast.getLocSts() + "-" + locMast.getLocSts$());
             }
         } else {
             throw new CoolException("搴撳瓨涓嶅瓨鍦�");
@@ -214,17 +214,17 @@
         try {
             if (Cools.isEmpty(param.getOwnerId())) {
                 throw new CoolException("瀹㈡埛鍚嶇О涓嶈兘涓虹┖");
-            }else if (param.getLocDetls().size()<=0){
+            } else if (param.getLocDetls().size() <= 0) {
                 throw new CoolException("璇锋彁鍙栨槑缁�");
             }
             ArrayList<String> locNos = new ArrayList<>();
-            String[][] locNos2 =new String[param.getLocDetls().size()][4];
-            int i=0;
-            for (EmptyPlateOutParam.LocDetl locDetl : param.getLocDetls()){
-                if (!locNos.contains(locDetl.getLoc_no())){
+            String[][] locNos2 = new String[param.getLocDetls().size()][4];
+            int i = 0;
+            for (EmptyPlateOutParam.LocDetl locDetl : param.getLocDetls()) {
+                if (!locNos.contains(locDetl.getLoc_no())) {
                     locNos.add(locDetl.getLoc_no());
-                    locNos2[i][0]=locDetl.getLoc_no();
-                    locNos2[i][1]=locDetl.getManu();
+                    locNos2[i][0] = locDetl.getLoc_no();
+                    locNos2[i][1] = locDetl.getManu();
                     locNos2[i][2] = locDetl.getMatnr();
                     locNos2[i][3] = locDetl.getBatch();
                     i++;
@@ -233,18 +233,18 @@
             LocOwner locOwner = locOwnerService.selectById(param.getOwnerId());
             param.setOwner(locOwner.getOwner());
             String lgort = "";
-            String owner="";
+            String owner = "";
             List<DetlDto> detlDtos = new ArrayList<>();
             for (String[] locNo1 : locNos2) {
                 String locNo = locNo1[0];
-                if (locNo1[1].equals("骞冲簱")){
+                if (locNo1[1].equals("骞冲簱")) {
                     List<ManLocDetl> manLocDetls = new ArrayList<>();
-                    if (locNo1[3] == null){
-                        manLocDetls = manLocDetlService.selectList(new EntityWrapper<ManLocDetl>().eq("loc_no", locNo).eq("matnr",locNo1[2]));
-                    }else {
-                        manLocDetls = manLocDetlService.selectList(new EntityWrapper<ManLocDetl>().eq("loc_no", locNo).eq("matnr",locNo1[2]).eq("batch",locNo1[3]));
+                    if (locNo1[3] == null) {
+                        manLocDetls = manLocDetlService.selectList(new EntityWrapper<ManLocDetl>().eq("loc_no", locNo).eq("matnr", locNo1[2]));
+                    } else {
+                        manLocDetls = manLocDetlService.selectList(new EntityWrapper<ManLocDetl>().eq("loc_no", locNo).eq("matnr", locNo1[2]).eq("batch", locNo1[3]));
                     }
-                    for (ManLocDetl manLocDetl:manLocDetls){
+                    for (ManLocDetl manLocDetl : manLocDetls) {
                         if (Cools.isEmpty(owner)) {
                             owner = manLocDetl.getOwner$();
                         }
@@ -252,37 +252,37 @@
 //                                manLocDetl.getStandby1(),manLocDetl.getStandby2(),manLocDetl.getStandby3(),
 //                                manLocDetl.getBoxType1(),manLocDetl.getBoxType2(),manLocDetl.getBoxType3(), manLocDetl.getAnfme()));
                         manLocDetl.setOwner(param.getOwnerId());
-                        try{
-                            manLocDetlService.update(manLocDetl,new EntityWrapper<ManLocDetl>().eq("loc_no", locNo).eq("matnr",manLocDetl.getMatnr()));
-                        }catch (Exception e){
+                        try {
+                            manLocDetlService.update(manLocDetl, new EntityWrapper<ManLocDetl>().eq("loc_no", locNo).eq("matnr", manLocDetl.getMatnr()));
+                        } catch (Exception e) {
                             throw new Exception("鏇存柊搴撳瓨鏄庣粏鎷ユ湁鑰呭瓧娈典俊鎭嚭閿欎簡");
                         }
                     }
-                }else if (locNo1[1].equals("绔嬪簱")){
-                    List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", locNo).eq("matnr",locNo1[2]).eq("batch",locNo1[3]));
-                    for (LocDetl locDetl:locDetls){
+                } else if (locNo1[1].equals("绔嬪簱")) {
+                    List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", locNo).eq("matnr", locNo1[2]).eq("batch", locNo1[3]));
+                    for (LocDetl locDetl : locDetls) {
                         if (Cools.isEmpty(lgort)) {
                             lgort = locDetl.getOrigin();
                         }
                         if (Cools.isEmpty(owner)) {
                             owner = locDetl.getOwner$();
                         }
-                        detlDtos.add(new DetlDto(locDetl.getMatnr(), locDetl.getBatch(),locDetl.getBrand(),
-                                locDetl.getStandby1(),locDetl.getStandby2(),locDetl.getStandby3(),
-                                locDetl.getBoxType1(),locDetl.getBoxType2(),locDetl.getBoxType3(), locDetl.getAnfme()));
+                        detlDtos.add(new DetlDto(locDetl.getMatnr(), locDetl.getBatch(), locDetl.getBrand(),
+                                locDetl.getStandby1(), locDetl.getStandby2(), locDetl.getStandby3(),
+                                locDetl.getBoxType1(), locDetl.getBoxType2(), locDetl.getBoxType3(), locDetl.getAnfme()));
                         locDetl.setOwner(param.getOwnerId());
-                        try{
-                            locDetlService.update(locDetl,new EntityWrapper<LocDetl>().eq("loc_no", locNo).eq("matnr",locDetl.getMatnr()));
-                        }catch (Exception e){
+                        try {
+                            locDetlService.update(locDetl, new EntityWrapper<LocDetl>().eq("loc_no", locNo).eq("matnr", locDetl.getMatnr()));
+                        } catch (Exception e) {
                             throw new Exception("鏇存柊搴撳瓨鏄庣粏鎷ユ湁鑰呭瓧娈典俊鎭嚭閿欎簡");
                         }
                     }
-                }else {
+                } else {
                     throw new Exception("鏇存柊搴撲綅鎷ユ湁鑰呭瓧娈典俊鎭嚭閿欎簡");
                 }
             }
-        }catch (Exception e){
-            throw new CoolException("绉讳氦浣滀笟鍑洪敊浜嗭細"+e);
+        } catch (Exception e) {
+            throw new CoolException("绉讳氦浣滀笟鍑洪敊浜嗭細" + e);
         }
     }
 
@@ -338,8 +338,8 @@
             wrkMast.setIoType(ioType); // 鍏ュ嚭搴撶姸鎬�
             wrkMast.setIoPri(13D); // 浼樺厛绾э細13
             wrkMast.setCrnNo(locMast.getCrnNo());
-            wrkMast.setSourceStaNo(staDesc.getCrnStn()); // 婧愮珯
-            wrkMast.setStaNo(staDesc.getStnNo()); // 鐩爣绔�
+            wrkMast.setSourceStaNo(staDesc.getCrnStn() + ""); // 婧愮珯
+            wrkMast.setStaNo(staDesc.getStnNo() + ""); // 鐩爣绔�
             wrkMast.setSourceLocNo(dto.getLocNo()); // 婧愬簱浣�
             wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
             wrkMast.setPicking("N"); // 鎷f枡
@@ -352,17 +352,19 @@
             wrkMast.setModiUser(userId);
             wrkMast.setModiTime(now);
             if (!wrkMastService.insert(wrkMast)) {
-                throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐ワ紝鍑哄簱搴撲綅鍙凤細"+dto.getLocNo());
+                throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐ワ紝鍑哄簱搴撲綅鍙凤細" + dto.getLocNo());
             }
             // 鐢熸垚宸ヤ綔妗f槑缁�
             for (LocDetlDto detlDto : dto.getLocDetlDtos()) {
-                if (detlDto.getCount()==null || detlDto.getCount() <= 0.0D) {continue;}
+                if (detlDto.getCount() == null || detlDto.getCount() <= 0.0D) {
+                    continue;
+                }
                 WrkDetl wrkDetl = new WrkDetl();
                 wrkDetl.sync(detlDto.getLocDetl());
                 wrkDetl.setOrderNo(""); // 鎵嬪姩鍑哄簱涓嶉渶瑕佸甫鍑哄簱瀛樹腑鐨勫崟鎹紪鍙�
                 wrkDetl.setWrkNo(workNo);
                 wrkDetl.setIoTime(now);
-                Double anfme = ioType==101?detlDto.getLocDetl().getAnfme():detlDto.getCount();
+                Double anfme = ioType == 101 ? detlDto.getLocDetl().getAnfme() : detlDto.getCount();
                 wrkDetl.setAnfme(anfme); // 鏁伴噺
                 wrkDetl.setAppeTime(now);
                 wrkDetl.setAppeUser(userId);
@@ -375,11 +377,11 @@
             // 淇敼搴撲綅鐘舵��:   F.鍦ㄥ簱 ====>>> R.鍑哄簱棰勭害/P.鎷f枡/鐩樼偣/骞舵澘鍑哄簱涓�
             locMast = locMastService.selectById(dto.getLocNo());
             if (locMast.getLocSts().equals("F")) {
-                locMast.setLocSts(ioType==101?"R":"P");
+                locMast.setLocSts(ioType == 101 ? "R" : "P");
                 locMast.setModiUser(userId);
                 locMast.setModiTime(now);
                 if (!locMastService.updateById(locMast)) {
-                    throw new CoolException("棰勭害搴撲綅鐘舵�佸け璐ワ紝搴撲綅鍙凤細"+dto.getLocNo());
+                    throw new CoolException("棰勭害搴撲綅鐘舵�佸け璐ワ紝搴撲綅鍙凤細" + dto.getLocNo());
                 }
             } else {
                 throw new CoolException(dto.getLocNo() + "搴撲綅涓嶆槸鍦ㄥ簱鐘舵��");
@@ -414,8 +416,8 @@
         wrkMast.setIoType(ioType); // 鍏ュ嚭搴撶姸鎬�
         wrkMast.setIoPri(13D); // 浼樺厛绾э細13
         wrkMast.setCrnNo(locMast.getCrnNo());
-        wrkMast.setSourceStaNo(staDesc.getCrnStn()); // 婧愮珯
-        wrkMast.setStaNo(staDesc.getStnNo()); // 鐩爣绔�
+        wrkMast.setSourceStaNo(staDesc.getCrnStn() + ""); // 婧愮珯
+        wrkMast.setStaNo(staDesc.getStnNo() + ""); // 鐩爣绔�
         wrkMast.setSourceLocNo(taskDto.getLocNo()); // 婧愬簱浣�
         wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
         wrkMast.setPicking("N"); // 鎷f枡
@@ -428,14 +430,16 @@
         wrkMast.setModiUser(userId);
         wrkMast.setModiTime(now);
         if (!wrkMastService.insert(wrkMast)) {
-            throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐ワ紝鍑哄簱搴撲綅鍙凤細"+taskDto.getLocNo());
+            throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐ワ紝鍑哄簱搴撲綅鍙凤細" + taskDto.getLocNo());
         }
         // 鐢熸垚宸ヤ綔妗f槑缁�
         for (LocDto locDto : taskDto.getLocDtos()) {
-            if (locDto.getAnfme()==null || locDto.getAnfme() <= 0.0D) { continue; }
+            if (locDto.getAnfme() == null || locDto.getAnfme() <= 0.0D) {
+                continue;
+            }
 //            OrderDetl orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), locDto.getBatch());
-            OrderDetl orderDetl = OrderInAndOutUtil.selectItem(Boolean.FALSE, locDto.getOrderNo(), locDto.getMatnr(), locDto.getBatch(),locDto.getBrand()
-                    ,locDto.getStandby1(),locDto.getStandby2(),locDto.getStandby3(),locDto.getBoxType1(),locDto.getBoxType2(),locDto.getBoxType3());
+            OrderDetl orderDetl = OrderInAndOutUtil.selectItem(Boolean.FALSE, locDto.getOrderNo(), locDto.getMatnr(), locDto.getBatch(), locDto.getBrand()
+                    , locDto.getStandby1(), locDto.getStandby2(), locDto.getStandby3(), locDto.getBoxType1(), locDto.getBoxType2(), locDto.getBoxType3());
 //            if (orderDetl == null) {
 ////                orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), null);
 //                orderDetl = OrderInAndOutUtil.selectItem(Boolean.FALSE, locDto.getOrderNo(), locDto.getMatnr(), null);
@@ -461,20 +465,20 @@
 //                throw new CoolException("淇敼璁㈠崟鏄庣粏鏁伴噺澶辫触");
 //            }
 //            orderService.updateSettle(orderDetl.getOrderId(), 2L, userId);
-            OrderInAndOutUtil.increaseWorkQty(Boolean.FALSE,orderDetl.getOrderId(), orderDetl.getMatnr(), orderDetl.getBatch(),
-                    orderDetl.getBrand(),orderDetl.getStandby1(),orderDetl.getStandby2(),orderDetl.getStandby3(),
-                    orderDetl.getBoxType1(),orderDetl.getBoxType2(),orderDetl.getBoxType3()
+            OrderInAndOutUtil.increaseWorkQty(Boolean.FALSE, orderDetl.getOrderId(), orderDetl.getMatnr(), orderDetl.getBatch(),
+                    orderDetl.getBrand(), orderDetl.getStandby1(), orderDetl.getStandby2(), orderDetl.getStandby3(),
+                    orderDetl.getBoxType1(), orderDetl.getBoxType2(), orderDetl.getBoxType3()
                     , locDto.getAnfme());
-            OrderInAndOutUtil.updateOrder(Boolean.FALSE,orderDetl.getOrderId(), 2L, userId);
+            OrderInAndOutUtil.updateOrder(Boolean.FALSE, orderDetl.getOrderId(), 2L, userId);
         }
         // 淇敼搴撲綅鐘舵��:   F.鍦ㄥ簱 ====>>> R.鍑哄簱棰勭害/P.鎷f枡/鐩樼偣/骞舵澘鍑哄簱涓�
         locMast = locMastService.selectById(taskDto.getLocNo());
         if (locMast.getLocSts().equals("F")) {
-            locMast.setLocSts(ioType==101?"R":"P");
+            locMast.setLocSts(ioType == 101 ? "R" : "P");
             locMast.setModiUser(userId);
             locMast.setModiTime(now);
             if (!locMastService.updateById(locMast)) {
-                throw new CoolException("棰勭害搴撲綅鐘舵�佸け璐ワ紝搴撲綅鍙凤細"+taskDto.getLocNo());
+                throw new CoolException("棰勭害搴撲綅鐘舵�佸け璐ワ紝搴撲綅鍙凤細" + taskDto.getLocNo());
             }
         } else {
             throw new CoolException(taskDto.getLocNo() + "搴撲綅涓嶆槸鍦ㄥ簱鐘舵��");
@@ -490,7 +494,7 @@
         LocTypeDto locTypeDto = new LocTypeDto(sourceStaNo);
         FindLocNoAttributeVo findLocNoAttributeVo = new FindLocNoAttributeVo();
 
-        StartupDto dto = commonService.getLocNo( 10, devpNo, findLocNoAttributeVo, locTypeDto);
+        StartupDto dto = commonService.getLocNo(10, devpNo, findLocNoAttributeVo, locTypeDto);
         int workNo = dto.getWorkNo();
         Date now = new Date();
         // 鐢熸垚宸ヤ綔妗�
@@ -501,8 +505,8 @@
         wrkMast.setIoType(10); // 鍏ュ嚭搴撶姸鎬侊細10.绌烘澘鍏ュ簱
         wrkMast.setIoPri(10D); // 浼樺厛绾э細10
         wrkMast.setCrnNo(dto.getCrnNo());
-        wrkMast.setSourceStaNo(dto.getSourceStaNo());
-        wrkMast.setStaNo(dto.getStaNo());
+        wrkMast.setSourceStaNo(dto.getSourceStaNo() + "");
+        wrkMast.setStaNo(dto.getStaNo() + "");
         wrkMast.setLocNo(dto.getLocNo());
         wrkMast.setFullPlt("N"); // 婊℃澘
         wrkMast.setPicking("N"); // 鎷f枡
@@ -523,20 +527,20 @@
         sourceStaNo.setWrkNo(workNo);
         sourceStaNo.setModiUser(userId);
         sourceStaNo.setModiTime(now);
-        if (!basDevpService.updateById(sourceStaNo)){
+        if (!basDevpService.updateById(sourceStaNo)) {
             throw new CoolException("鏇存柊婧愮珯澶辫触");
         }
         // 鏇存柊鐩爣搴撲綅鐘舵��
         LocMast locMast = locMastService.selectById(dto.getLocNo());
-        if (locMast.getLocSts().equals("O")){
+        if (locMast.getLocSts().equals("O")) {
             locMast.setLocSts("S"); // S.鍏ュ簱棰勭害
             locMast.setModiUser(userId);
             locMast.setModiTime(now);
-            if (!locMastService.updateById(locMast)){
+            if (!locMastService.updateById(locMast)) {
                 throw new CoolException("鏀瑰彉搴撲綅鐘舵�佸け璐�");
             }
         } else {
-            throw new CoolException(dto.getLocNo()+"鐩爣搴撲綅宸茶鍗犵敤");
+            throw new CoolException(dto.getLocNo() + "鐩爣搴撲綅宸茶鍗犵敤");
         }
         return dto.getLocNo();
     }
@@ -560,10 +564,10 @@
             // 鑾峰彇搴撲綅
             LocMast locMast = locMastService.selectById(locNo);
             if (Cools.isEmpty(locMast)) {
-                throw new CoolException(locNo+"搴撲綅涓嶅瓨鍦�");
+                throw new CoolException(locNo + "搴撲綅涓嶅瓨鍦�");
             }
-            if (!locMast.getLocSts().equals("D")){
-                throw new CoolException("鎵�閫夊簱浣嶅瓨鍦ㄧ姸鎬佷笉涓篋鐨勫簱浣嶏紝搴撲綅鍙凤細"+locMast.getLocNo()+" 銆佸綋鍓嶇姸鎬侊細"+locMast.getLocSts()+"-"+locMast.getLocSts$());
+            if (!locMast.getLocSts().equals("D")) {
+                throw new CoolException("鎵�閫夊簱浣嶅瓨鍦ㄧ姸鎬佷笉涓篋鐨勫簱浣嶏紝搴撲綅鍙凤細" + locMast.getLocNo() + " 銆佸綋鍓嶇姸鎬侊細" + locMast.getLocSts() + "-" + locMast.getLocSts$());
             }
             // 鑾峰彇婧愮珯
             Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
@@ -583,8 +587,8 @@
             wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
             wrkMast.setIoType(110); // 鍏ュ嚭搴撶姸鎬侊細 110.绌烘澘鍑哄簱
             wrkMast.setIoPri(10D);
-            wrkMast.setSourceStaNo(sourceStaNo); // 婧愮珯
-            wrkMast.setStaNo(param.getOutSite()); // 鐩爣绔�
+            wrkMast.setSourceStaNo(sourceStaNo + ""); // 婧愮珯
+            wrkMast.setStaNo(param.getOutSite() + ""); // 鐩爣绔�
             wrkMast.setCrnNo(locMast.getCrnNo());
             wrkMast.setSourceLocNo(locNo); // 婧愬簱浣�
             wrkMast.setFullPlt("N"); // 婊℃澘锛歒
@@ -601,7 +605,7 @@
                 throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
             }
             // 鏇存柊搴撲綅鐘舵�� D.绌烘澘 -> R.鍑哄簱棰勭害
-            if (locMast.getLocSts().equals("D")){
+            if (locMast.getLocSts().equals("D")) {
                 locMast.setLocSts("R");
                 locMast.setModiUser(userId);
                 locMast.setModiTime(now);
@@ -625,7 +629,7 @@
             // 鑾峰彇搴撲綅
             LocMast locMast = locMastService.selectById(locNo);
             if (Cools.isEmpty(locMast)) {
-                throw new CoolException(locNo+"搴撲綅涓嶅瓨鍦�");
+                throw new CoolException(locNo + "搴撲綅涓嶅瓨鍦�");
             }
             // 鑾峰彇婧愮珯
             Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
@@ -645,8 +649,8 @@
             wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
             wrkMast.setIoType(110); // 鍏ュ嚭搴撶姸鎬侊細 110.绌烘澘鍑哄簱
             wrkMast.setIoPri(10D);
-            wrkMast.setSourceStaNo(sourceStaNo); // 婧愮珯
-            wrkMast.setStaNo(param.getOutSite()); // 鐩爣绔�
+            wrkMast.setSourceStaNo(sourceStaNo + ""); // 婧愮珯
+            wrkMast.setStaNo(param.getOutSite() + ""); // 鐩爣绔�
             wrkMast.setCrnNo(locMast.getCrnNo());
             wrkMast.setSourceLocNo(locNo); // 婧愬簱浣�
             wrkMast.setFullPlt("N"); // 婊℃澘锛歒
@@ -664,7 +668,7 @@
                 throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
             }
             // 鏇存柊搴撲綅鐘舵�� D.绌烘澘 -> R.鍑哄簱棰勭害
-            if (locMast.getLocSts().equals("D")){
+            if (locMast.getLocSts().equals("D")) {
                 locMast.setLocSts("R");
                 locMast.setModiUser(1L);
                 locMast.setModiTime(now);
@@ -685,8 +689,8 @@
         List<LocDetlDto> locDetlDtos = new ArrayList<>();
         for (StockOutParam.LocDetl paramLocDetl : param.getLocDetls()) {
             if (!Cools.isEmpty(paramLocDetl.getLocNo(), paramLocDetl.getMatnr(), paramLocDetl.getCount())) {
-                LocDetl one = locDetlService.selectItem(paramLocDetl.getLocNo(), paramLocDetl.getMatnr(), paramLocDetl.getBatch(),paramLocDetl.getBrand()
-                        ,paramLocDetl.getStandby1(),paramLocDetl.getStandby2(),paramLocDetl.getStandby3(),paramLocDetl.getBoxType1(),paramLocDetl.getBoxType2(),paramLocDetl.getBoxType3());
+                LocDetl one = locDetlService.selectItem(paramLocDetl.getLocNo(), paramLocDetl.getMatnr(), paramLocDetl.getBatch(), paramLocDetl.getBrand()
+                        , paramLocDetl.getStandby1(), paramLocDetl.getStandby2(), paramLocDetl.getStandby3(), paramLocDetl.getBoxType1(), paramLocDetl.getBoxType2(), paramLocDetl.getBoxType3());
                 if (null != one) locDetlDtos.add(new LocDetlDto(one, paramLocDetl.getCount()));
             }
         }
@@ -698,11 +702,11 @@
                 throw new CoolException(firstFrozenLocNo + "搴撲綅宸茶鍐荤粨!");
             }
             LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", locDetlDtos.get(0).getLocDetl().getLocNo()));
-            if (locMast.getLocSts().equals("F")){
+            if (locMast.getLocSts().equals("F")) {
                 // 鍚姩鍑哄簱寮�濮� 107.鐩樼偣鍑哄簱
                 stockOut(staNo, locDetlDtos, IoWorkType.CHECK_OUT, userId);
-            }else {
-                throw new CoolException("鎵�閫夊簱浣嶅瓨鍦ㄧ姸鎬佷笉涓篎鐨勫簱浣嶏紝搴撲綅鍙凤細"+locMast.getLocNo()+" 銆佸綋鍓嶇姸鎬侊細"+locMast.getLocSts()+"-"+locMast.getLocSts$());
+            } else {
+                throw new CoolException("鎵�閫夊簱浣嶅瓨鍦ㄧ姸鎬佷笉涓篎鐨勫簱浣嶏紝搴撲綅鍙凤細" + locMast.getLocNo() + " 銆佸綋鍓嶇姸鎬侊細" + locMast.getLocSts() + "-" + locMast.getLocSts$());
             }
         } else {
             throw new CoolException("搴撲綅鐗╂枡涓嶅瓨鍦�");
@@ -714,15 +718,15 @@
     public void locMove(String sourceLocNo, String locNo, Long userId) {
         LocMast sourceLoc = locMastService.selectById(sourceLocNo);
         List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", sourceLocNo));
-        if (Cools.isEmpty(sourceLoc)){
+        if (Cools.isEmpty(sourceLoc)) {
             throw new CoolException("鏈壘鍒板簱浣�");
         }
         LocMast loc = locMastService.selectById(locNo);
-        if (Cools.isEmpty(loc)){
+        if (Cools.isEmpty(loc)) {
             throw new CoolException("鏈壘鍒板簱浣�");
         }
         // 鍒ゆ柇搴撲綅鏄惁鍐荤粨
-        String sourceLocFrozen = locMastMapper.findFirstFrozenLocNo(Arrays.asList(sourceLoc.getLocNo(),loc.getLocNo()));
+        String sourceLocFrozen = locMastMapper.findFirstFrozenLocNo(Arrays.asList(sourceLoc.getLocNo(), loc.getLocNo()));
         if (sourceLocFrozen != null) {
             throw new CoolException(sourceLocFrozen + "搴撲綅宸茶鍐荤粨!");
         }
@@ -734,7 +738,7 @@
             throw new CoolException(locDetl.getLocNo() + "," + locDetl.getMatnr() + "," + locDetl.getBatch() + "搴撳瓨鏄庣粏宸茶鍐荤粨!");
         }
 
-        if (!loc.getLocSts().equals("O") || (!sourceLoc.getLocSts().equals("F") && !sourceLoc.getLocSts().equals("D"))){
+        if (!loc.getLocSts().equals("O") || (!sourceLoc.getLocSts().equals("F") && !sourceLoc.getLocSts().equals("D"))) {
             throw new CoolException("搴撲綅鐘舵�佸凡鏀瑰彉");
         }
         if (!sourceLoc.getCrnNo().equals(loc.getCrnNo())) {
@@ -753,10 +757,10 @@
         wrkMast.setCrnNo(sourceLoc.getCrnNo());
         wrkMast.setSourceLocNo(sourceLocNo); // 婧愬簱浣�
         wrkMast.setLocNo(locNo); // 鐩爣搴撲綅
-        wrkMast.setFullPlt(Cools.isEmpty(locDetls)?"N":"Y"); // 婊℃澘锛歒
+        wrkMast.setFullPlt(Cools.isEmpty(locDetls) ? "N" : "Y"); // 婊℃澘锛歒
         wrkMast.setPicking("N"); // 鎷f枡
         wrkMast.setExitMk("N"); // 閫�鍑�
-        wrkMast.setEmptyMk(sourceLoc.getLocSts().equals("D")?"Y":"N"); // 绌烘澘
+        wrkMast.setEmptyMk(sourceLoc.getLocSts().equals("D") ? "Y" : "N"); // 绌烘澘
         wrkMast.setBarcode(sourceLoc.getBarcode()); // 鎵樼洏鐮�
         wrkMast.setLinkMis("N");
         wrkMast.setAppeUser(userId);
@@ -787,11 +791,11 @@
             sourceLoc.setLocSts("R"); // R.鍑哄簱棰勭害
             sourceLoc.setModiUser(userId);
             sourceLoc.setModiTime(now);
-            if (!locMastService.updateById(sourceLoc)){
+            if (!locMastService.updateById(sourceLoc)) {
                 throw new CoolException("鏇存柊婧愬簱浣嶇姸鎬佸け璐�");
             }
         } else {
-            throw new CoolException("婧愬簱浣嶅嚭搴撳け璐ワ紝鐘舵�侊細"+sourceLoc.getLocSts$());
+            throw new CoolException("婧愬簱浣嶅嚭搴撳け璐ワ紝鐘舵�侊細" + sourceLoc.getLocSts$());
         }
         // 淇敼鐩爣搴撲綅鐘舵��
         if (loc.getLocSts().equals("O")) {
@@ -802,7 +806,7 @@
                 throw new CoolException("鏇存柊鐩爣搴撲綅鐘舵�佸け璐�");
             }
         } else {
-            throw new CoolException("绉昏浆澶辫触锛岀洰鏍囧簱浣嶇姸鎬侊細"+loc.getLocSts$());
+            throw new CoolException("绉昏浆澶辫触锛岀洰鏍囧簱浣嶇姸鎬侊細" + loc.getLocSts$());
         }
     }
 
@@ -810,16 +814,16 @@
     @Transactional
     public void completeWrkMast(String workNo, Long userId) {
         WrkMast wrkMast = wrkMastService.selectById(workNo);
-        if (Cools.isEmpty(wrkMast)){
-            throw new CoolException(workNo+"宸ヤ綔妗d笉瀛樺湪");
+        if (Cools.isEmpty(wrkMast)) {
+            throw new CoolException(workNo + "宸ヤ綔妗d笉瀛樺湪");
         }
         if (wrkMast.getWrkSts() == 4 || wrkMast.getWrkSts() == 14) {
             throw new CoolException("褰撳墠宸ヤ綔妗e凡瀹屾垚");
         }
         // 鍏ュ簱 + 搴撲綅杞Щ
-        if (wrkMast.getWrkSts() < 4 || (wrkMast.getWrkSts() > 10 && wrkMast.getIoType()==11)) {
+        if (wrkMast.getWrkSts() < 4 || (wrkMast.getWrkSts() > 10 && wrkMast.getIoType() == 11)) {
             wrkMast.setWrkSts(4L);
-        // 鍑哄簱
+            // 鍑哄簱
         } else if (wrkMast.getWrkSts() > 10) {
             wrkMast.setWrkSts(14L);
         }
@@ -885,13 +889,15 @@
             Iterator<LocDetlAdjustParam.LocDetlAdjust> iterator1 = list.iterator();
             while (iterator1.hasNext()) {
                 LocDetlAdjustParam.LocDetlAdjust adjust = iterator1.next();
-                if (adjust.getCount() == 0) { continue; }
+                if (adjust.getCount() == 0) {
+                    continue;
+                }
                 if (locDetl.getMatnr().equals(adjust.getMatnr()) && Cools.eq(locDetl.getBatch(), adjust.getBatch())) {
                     if (!locDetl.getAnfme().equals(adjust.getCount())) {
                         // todo 鐩樼偣璁板綍
                         // 淇敼搴撳瓨
-                        if (!locDetlService.updateAnfme(adjust.getCount(), locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getBatch(),locDetl.getBrand(),
-                                locDetl.getStandby1(),locDetl.getStandby2(),locDetl.getStandby3(),locDetl.getBoxType1(),locDetl.getBoxType2(),locDetl.getBoxType3())) {
+                        if (!locDetlService.updateAnfme(adjust.getCount(), locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getBatch(), locDetl.getBrand(),
+                                locDetl.getStandby1(), locDetl.getStandby2(), locDetl.getStandby3(), locDetl.getBoxType1(), locDetl.getBoxType2(), locDetl.getBoxType3())) {
                             throw new CoolException(locDetl.getLocNo() + "搴撲綅锛�" + locDetl.getMatnr() + "鍟嗗搧锛�" + locDetl.getBatch() + "鎵瑰彿淇敼鏁伴噺澶辫触");
                         }
                         // 淇濆瓨璋冩暣璁板綍
@@ -940,8 +946,8 @@
         // 鍒犻櫎搴撳瓨
         for (LocDetl locDetl : locDetls) {
             // todo 鐩樼偣璁板綍
-            if (!locDetlService.updateAnfme(-1.0D, locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getBatch(),locDetl.getBrand(),
-                    locDetl.getStandby1(),locDetl.getStandby2(),locDetl.getStandby3(),locDetl.getBoxType1(),locDetl.getBoxType2(),locDetl.getBoxType3())) {
+            if (!locDetlService.updateAnfme(-1.0D, locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getBatch(), locDetl.getBrand(),
+                    locDetl.getStandby1(), locDetl.getStandby2(), locDetl.getStandby3(), locDetl.getBoxType1(), locDetl.getBoxType2(), locDetl.getBoxType3())) {
                 throw new CoolException("鍒犻櫎" + locDetl.getLocNo() + "搴撲綅锛�" + locDetl.getMatnr() + "鍟嗗搧锛�" + locDetl.getBatch() + "鎵瑰彿搴撳瓨鏄庣粏澶辫触");
             }
             // 淇濆瓨璋冩暣璁板綍
@@ -984,7 +990,9 @@
 
         // 娣诲姞搴撳瓨
         for (LocDetlAdjustParam.LocDetlAdjust adjust : list) {
-            if (adjust.getCount() == 0.0D) { continue; }
+            if (adjust.getCount() == 0.0D) {
+                continue;
+            }
             Mat mat = matService.selectByMatnr(adjust.getMatnr());
             LocDetl locDetl = new LocDetl();
             locDetl.sync(mat);
@@ -1061,8 +1069,8 @@
     public void cancelWrkMast(String workNo, Long userId) {
         Date now = new Date();
         WrkMast wrkMast = wrkMastService.selectById(workNo);
-        if (Cools.isEmpty(wrkMast)){
-            throw new CoolException(workNo+"宸ヤ綔妗d笉瀛樺湪");
+        if (Cools.isEmpty(wrkMast)) {
+            throw new CoolException(workNo + "宸ヤ綔妗d笉瀛樺湪");
         }
         String locNo = ""; // 寰呬慨鏀圭洰鏍囧簱浣�
         String locSts = ""; // 寰呬慨鏀圭洰鏍囧簱浣嶇姸鎬�
@@ -1076,29 +1084,29 @@
                 // 搴撲綅杞Щ锛氭簮搴撲綅
                 LocMast locMast = locMastService.selectById(wrkMast.getSourceLocNo());
                 if (Cools.isEmpty(locMast)) {
-                    throw new CoolException("鍙栨秷搴撲綅杞Щ澶辫触锛屾簮搴撲綅涓嶅瓨鍦�:"+ wrkMast.getSourceLocNo());
+                    throw new CoolException("鍙栨秷搴撲綅杞Щ澶辫触锛屾簮搴撲綅涓嶅瓨鍦�:" + wrkMast.getSourceLocNo());
                 }
-                locMast.setLocSts(wrkMast.getFullPlt().equalsIgnoreCase("N")?"D":"F");
+                locMast.setLocSts(wrkMast.getFullPlt().equalsIgnoreCase("N") ? "D" : "F");
                 locMast.setModiTime(now);
                 locMast.setModiUser(userId);
                 locMastService.updateById(locMast);
             }
-        // 鍑哄簱鍙栨秷锛堜慨鏀规簮搴撲綅锛�
+            // 鍑哄簱鍙栨秷锛堜慨鏀规簮搴撲綅锛�
         } else if (wrkMast.getWrkSts() > 10 && wrkMast.getWrkSts() != 14) {
             locNo = wrkMast.getSourceLocNo();
             // 鍑哄簱 ===>> F.鍦ㄥ簱
             if (wrkMast.getIoType() > 100 && wrkMast.getIoType() != 110) {
                 locSts = "F";
-            // 绌烘澘鍑哄簱 ===>> D.绌烘《/绌烘爤鏉�
+                // 绌烘澘鍑哄簱 ===>> D.绌烘《/绌烘爤鏉�
             } else if (wrkMast.getIoType() == 110) {
                 locSts = "D";
-            // 搴撲綅杞Щ ===>> D.绌烘《/绌烘爤鏉�
+                // 搴撲綅杞Щ ===>> D.绌烘《/绌烘爤鏉�
             } else if (wrkMast.getIoType() == 11) {
-                locSts = wrkMast.getFullPlt().equalsIgnoreCase("N")?"D":"F";
+                locSts = wrkMast.getFullPlt().equalsIgnoreCase("N") ? "D" : "F";
                 // 搴撲綅杞Щ锛氱洰鏍囧簱浣�
                 LocMast locMast = locMastService.selectById(wrkMast.getLocNo());
                 if (Cools.isEmpty(locMast)) {
-                    throw new CoolException("鍙栨秷搴撲綅杞Щ澶辫触锛岀洰鏍囧簱浣嶄笉瀛樺湪:"+ wrkMast.getSourceLocNo());
+                    throw new CoolException("鍙栨秷搴撲綅杞Щ澶辫触锛岀洰鏍囧簱浣嶄笉瀛樺湪:" + wrkMast.getSourceLocNo());
                 }
                 locMast.setLocSts("O");
                 locMast.setModiTime(now);
@@ -1110,15 +1118,15 @@
         }
 
         //鍙栨秷鍏ュ簱宸ヤ綔妗f椂锛屾煡璇㈢粍鎵樿〃锛屽鏋滄湁灏嗙姸鎬佹敼涓哄緟澶勭悊
-        if(wrkMast.getIoType() == 1) {
-            List<WaitPakin> waitPakins=waitPakinService.selectList(new EntityWrapper<WaitPakin>().eq("zpallet", wrkMast.getBarcode()));
-            for (WaitPakin waitPakin:waitPakins){
+        if (wrkMast.getIoType() == 1) {
+            List<WaitPakin> waitPakins = waitPakinService.selectList(new EntityWrapper<WaitPakin>().eq("zpallet", wrkMast.getBarcode()));
+            for (WaitPakin waitPakin : waitPakins) {
                 if (!Cools.isEmpty(waitPakin)) {
                     waitPakin.setIoStatus("N");
                     waitPakin.setLocNo("");
                     waitPakinService.update(waitPakin, new EntityWrapper<WaitPakin>()
 //                            .eq("order_no", waitPakin.getOrderNo())
-                            .eq("zpallet",waitPakin.getZpallet())
+                            .eq("zpallet", waitPakin.getZpallet())
                             .eq("matnr", waitPakin.getMatnr())
                             .eq("batch", waitPakin.getBatch()));
                 }
@@ -1126,30 +1134,30 @@
         }
 
         //鍙栨秷鍑哄簱宸ヤ綔妗f椂锛屾煡璇㈠崟鎹鐞嗚〃锛屽洖婊氫綔涓氫腑鏁伴噺
-        if(wrkMast.getIoType() == 101 || wrkMast.getIoType() == 103) {
+        if (wrkMast.getIoType() == 101 || wrkMast.getIoType() == 103) {
             List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(wrkMast.getWrkNo());
             for (WrkDetl wrkDetl : wrkDetls) {
                 if (!Cools.isEmpty(wrkDetl.getOrderNo())) {
 //                    if (!orderDetlService.decrease(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getAnfme())) {
 //                        throw new CoolException("璁㈠崟鏁版嵁鍥炴粴澶辫触");
 //                    }
-                    OrderInAndOutUtil.decrease(Boolean.FALSE,wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(),wrkDetl.getBrand(),
-                            wrkDetl.getStandby1(),wrkDetl.getStandby2(),wrkDetl.getStandby3(),
-                            wrkDetl.getBoxType1(),wrkDetl.getBoxType2(),wrkDetl.getBoxType3(), wrkDetl.getAnfme());
+                    OrderInAndOutUtil.decrease(Boolean.FALSE, wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(),
+                            wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(),
+                            wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3(), wrkDetl.getAnfme());
 
                     //淇敼璁㈠崟涓昏〃鐘舵��,娌℃湁浣滀笟鏁伴噺鏃舵墠鍙互淇敼
                     boolean flag = true;
 //                    List<OrderDetl> orderDetls = orderDetlService.selectList(new EntityWrapper<OrderDetl>().eq("order_no",wrkDetl.getOrderNo()));
                     Order order = OrderInAndOutUtil.selectByNo(Boolean.FALSE, wrkDetl.getOrderNo());
                     List<OrderDetl> orderDetls = OrderInAndOutUtil.selectByOrderId(Boolean.FALSE, order.getId());
-                    for(OrderDetl orderDetl : orderDetls){
-                        if(orderDetl.getWorkQty() > 0){
+                    for (OrderDetl orderDetl : orderDetls) {
+                        if (orderDetl.getWorkQty() > 0) {
                             flag = false;
                         }
                     }
-                    if(flag){
+                    if (flag) {
 //                        Order order = orderService.selectOne(new EntityWrapper<Order>().eq("order_no",wrkDetl.getOrderNo()));
-                        if(!Cools.isEmpty(order) && order.getSettle()==2){
+                        if (!Cools.isEmpty(order) && order.getSettle() == 2) {
                             order.setSettle(1L);
                             order.setUpdateBy(userId);
                             order.setUpdateTime(now);
@@ -1157,7 +1165,7 @@
 //                        if(!orderService.update(order,new EntityWrapper<Order>().eq("order_no",wrkDetl.getOrderNo()))){
 //                            throw new CoolException("淇敼璁㈠崟鐘舵�佸け璐�");
 //                        }
-                        OrderInAndOutUtil.updateOrder(Boolean.FALSE,order.getId(),order.getSettle(),userId);
+                        OrderInAndOutUtil.updateOrder(Boolean.FALSE, order.getId(), order.getSettle(), userId);
                     }
                 }
             }
@@ -1202,7 +1210,7 @@
         // 淇敼搴撲綅鐘舵��
         LocMast locMast = locMastService.selectById(locNo);
         if (Cools.isEmpty(locMast)) {
-            throw new CoolException("鍙栨秷宸ヤ綔妗eけ璐ワ紝搴撲綅涓嶅瓨鍦�:"+ locNo);
+            throw new CoolException("鍙栨秷宸ヤ綔妗eけ璐ワ紝搴撲綅涓嶅瓨鍦�:" + locNo);
         }
         locMast.setLocSts(locSts);
         locMast.setModiTime(now);
@@ -1217,8 +1225,8 @@
     @Transactional
     public void pickWrkMast(String workNo, Long userId) {
         WrkMast wrkMast = wrkMastService.selectById(workNo);
-        if (Cools.isEmpty(wrkMast)){
-            throw new CoolException(workNo+"宸ヤ綔妗d笉瀛樺湪");
+        if (Cools.isEmpty(wrkMast)) {
+            throw new CoolException(workNo + "宸ヤ綔妗d笉瀛樺湪");
         }
         // 鍏ュ嚭搴撶被鍨嬪垽鏂�
         if (wrkMast.getIoType() != 103 && wrkMast.getIoType() != 104 && wrkMast.getIoType() != 107) {
@@ -1252,7 +1260,7 @@
         wrkMast.setIoType(wrkMast.getIoType() - 50); // 鍏ュ嚭搴撶被鍨�: 103->53,104->54,107->57
         wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵��: 2.璁惧涓婅蛋
         wrkMast.setSourceStaNo(wrkMast.getStaNo()); // 婧愮珯
-        wrkMast.setStaNo(staNo); // 鐩爣绔�
+        wrkMast.setStaNo(staNo + ""); // 鐩爣绔�
         wrkMast.setLocNo(wrkMast.getSourceLocNo()); // 鐩爣搴撲綅 = 鍑哄簱鏃剁殑婧愬簱浣�
         wrkMast.setSourceLocNo(""); // 婧愬簱浣嶆竻绌�
         wrkMast.setModiTime(now);
@@ -1296,7 +1304,7 @@
         // 鐩爣搴撲綅
         LocMast targetLoc = null;
 
-        for (int curRow = rowLastno.getsRow(); curRow<=rowLastno.geteRow(); curRow++) {
+        for (int curRow = rowLastno.getsRow(); curRow <= rowLastno.geteRow(); curRow++) {
 
             if (Utils.isShallowLoc(slaveProperties, curRow)) {
                 Integer deepRow = Utils.getDeepRow(slaveProperties, curRow);
@@ -1346,7 +1354,7 @@
         }
         wrkMast.setWrkSts(2L);
         wrkMast.setLocNo(targetLoc.getLocNo());
-        wrkMast.setStaNo(staDesc.getCrnStn());
+        wrkMast.setStaNo(staDesc.getCrnStn() + "");
         wrkMast.setCrnNo(targetLoc.getCrnNo());
         wrkMast.setModiTime(now);
         wrkMast.setModiUser(userId);
@@ -1355,15 +1363,15 @@
             throw new CoolException("淇敼宸ヤ綔妗eけ璐�");
         }
         // 淇敼搴撲綅鐘舵�� O ===>>> S
-        if (targetLoc.getLocSts().equals("O")){
+        if (targetLoc.getLocSts().equals("O")) {
             targetLoc.setLocSts("S"); // S.鍏ュ簱棰勭害
             targetLoc.setModiUser(userId);
             targetLoc.setModiTime(now);
-            if (!locMastService.updateById(targetLoc)){
+            if (!locMastService.updateById(targetLoc)) {
                 throw new CoolException("鏀瑰彉搴撲綅鐘舵�佸け璐�");
             }
         } else {
-            throw new CoolException(targetLoc.getLocNo()+"鐩爣搴撲綅宸茶鍗犵敤");
+            throw new CoolException(targetLoc.getLocNo() + "鐩爣搴撲綅宸茶鍗犵敤");
         }
         // 绂佺敤寮傚父搴撲綅
 //        locMast.setLocSts("X"); // X.绂佺敤
@@ -1379,19 +1387,19 @@
     @Transactional
     public void turnMatLocDetl(EmptyPlateOutParam param, Long userId) {
         Mat mat = matService.selectOne(new EntityWrapper<Mat>().eq("id", param.getMatId()));
-        if (Cools.isEmpty(mat)){
+        if (Cools.isEmpty(mat)) {
             throw new CoolException("鐩爣搴撲綅鍟嗗搧缂栫爜鏈夎锛�");
         }
         List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("matnr", param.getLocDetls().get(0).getMatnr()));
-        if (Cools.isEmpty(locDetls) || locDetls.size()<1){
-            throw new CoolException("寰呬慨鏀瑰晢鍝佹棤搴撳瓨锛屾棤闇�淇敼锛�  鍝佸彿锛�"+param.getLocDetls().get(0).getMatnr());
+        if (Cools.isEmpty(locDetls) || locDetls.size() < 1) {
+            throw new CoolException("寰呬慨鏀瑰晢鍝佹棤搴撳瓨锛屾棤闇�淇敼锛�  鍝佸彿锛�" + param.getLocDetls().get(0).getMatnr());
         }
         try {
-            locDetlService.updateMatTurn(param.getLocDetls().get(0).getMatnr(),mat.getMatnr());
-        }catch (Exception e){
+            locDetlService.updateMatTurn(param.getLocDetls().get(0).getMatnr(), mat.getMatnr());
+        } catch (Exception e) {
             throw new CoolException("瀵规暟鎹簱淇敼鍑洪敊锛�");
         }
-        for (LocDetl locDetl:locDetls){
+        for (LocDetl locDetl : locDetls) {
             // 淇濆瓨璋冩暣璁板綍
             AdjDetl adjDetl = new AdjDetl();
             adjDetl.setLocNo(locDetl.getLocNo());
diff --git a/src/main/java/com/zy/asrs/service/impl/WrkMastLogServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/WrkMastLogServiceImpl.java
index 149724b..0321a08 100644
--- a/src/main/java/com/zy/asrs/service/impl/WrkMastLogServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WrkMastLogServiceImpl.java
@@ -1,22 +1,48 @@
 package com.zy.asrs.service.impl;
 
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.baomidou.mybatisplus.plugins.Page;
 import com.baomidou.mybatisplus.service.impl.ServiceImpl;
 import com.core.common.R;
+import com.core.exception.CoolException;
 import com.zy.asrs.entity.InventoryFlowDto;
+import com.zy.asrs.entity.WrkMast;
 import com.zy.asrs.entity.WrkMastLog;
 import com.zy.asrs.mapper.WrkMastLogMapper;
 import com.zy.asrs.service.WrkMastLogService;
+import com.zy.asrs.service.WrkMastService;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.Map;
+import java.util.Objects;
 
 @Service("wrkMastLogService")
 public class WrkMastLogServiceImpl extends ServiceImpl<WrkMastLogMapper, WrkMastLog> implements WrkMastLogService {
 
+    @Autowired
+    private WrkMastService wrkMastService;
+    @Autowired
+    private WrkMastLogService wrkMastLogService;
+
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public boolean save(Integer workNo) {
-        return this.baseMapper.save(workNo) > 0;
+        WrkMast mast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", workNo));
+        if (Objects.isNull(mast)) {
+            throw new CoolException("鏁版嵁閿欒锛氫换鍔′笉瀛樺湪锛侊紒");
+        }
+        WrkMastLog mastLog = new WrkMastLog();
+        BeanUtils.copyProperties(mast, mastLog);
+        mastLog.setLogId(mast.getId());
+
+        if (!wrkMastLogService.insert(mastLog)) {
+            throw new CoolException("浠诲姟鏃ュ織淇濆瓨澶辫触锛侊紒");
+        }
+
+        return true;
     }
 
     @Override
diff --git a/src/main/java/com/zy/asrs/task/handler/BareBoardHandler.java b/src/main/java/com/zy/asrs/task/handler/BareBoardHandler.java
index 62c4ffa..f3dbcfd 100644
--- a/src/main/java/com/zy/asrs/task/handler/BareBoardHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/BareBoardHandler.java
@@ -103,8 +103,8 @@
                         wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵��
                         wrkMast.setIoType(ioType); // 鍏ュ嚭搴撶姸鎬�
                         wrkMast.setIoPri(10D);
-                        wrkMast.setSourceStaNo(sourceStaNo); // 婧愮珯
-                        wrkMast.setStaNo(staNo); // 鐩爣绔�
+                        wrkMast.setSourceStaNo(sourceStaNo + ""); // 婧愮珯
+                        wrkMast.setStaNo(staNo + ""); // 鐩爣绔�
                         wrkMast.setCrnNo(locMast.getCrnNo());
                         wrkMast.setSourceLocNo(locMast.getLocNo()); // 婧愬簱浣�
                         wrkMast.setFullPlt(ioType.equals(110)? "N" : "Y"); // 婊℃澘锛歒
diff --git a/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java b/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
index 2326428..4389d7f 100644
--- a/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
@@ -2,18 +2,23 @@
 
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.core.common.Cools;
+import com.core.exception.CoolException;
 import com.zy.asrs.entity.*;
+import com.zy.asrs.enums.LocStsType;
 import com.zy.asrs.service.*;
+import com.zy.asrs.service.impl.LocCacheServiceImpl;
+import com.zy.asrs.service.impl.OrderPakinServiceImpl;
 import com.zy.asrs.task.AbstractHandler;
 import com.zy.asrs.task.core.ReturnT;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.interceptor.TransactionAspectSupport;
 
-import java.util.Date;
-import java.util.List;
+import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * Created by vincent on 2020/7/4
@@ -39,387 +44,452 @@
     private OrderDetlPakinService orderDetlPakinService;
     @Autowired
     private OrderDetlPakoutService orderDetlPakoutService;
+    @Autowired
+    private LocCacheService locCacheService;
+    @Autowired
+    private OrderPakinService orderPakinService;
 
     public ReturnT<String> start(WrkMast wrkMast) {
         // 4.鍏ュ簱瀹屾垚
         if (wrkMast.getWrkSts() == 4) {
             return doIn(wrkMast);
-        // 14.鍑哄簱瀹屾垚
-        } else  if (wrkMast.getWrkSts() == 14) {
+            // 14.鍑哄簱瀹屾垚
+        } else if (wrkMast.getWrkSts() == 14) {
             return doOut(wrkMast);
         }
         return SUCCESS;
     }
 
-    private ReturnT<String> doIn(WrkMast wrkMast){
-        Date now = new Date();
-        LocMast locMast = locMastService.selectById(wrkMast.getLocNo());
-        try {
-            if (null == locMast) {
-//                exceptionHandle("宸ヤ綔妗workNo={0}]搴撲綅鍙烽敊璇痆locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo());
-                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-                return FAIL.setMsg("宸ヤ綔妗workNo=" + wrkMast.getWrkNo() + "]搴撲綅鍙烽敊璇痆locNo=" + wrkMast.getLocNo() + "]");
+    public ReturnT<String> doIn(WrkMast wrkMast) {
+        if (wrkMast.getTaskType().equals("agv")) {
+            Date now = new Date();
+            LocCache locCache = locCacheService.selectOne(new EntityWrapper<LocCache>().eq("loc_no", wrkMast.getLocNo()));
+            if (Objects.isNull(locCache)) {
+                throw new CoolException("鏁版嵁閿欒锛屽簱浣嶄笉瀛樺湪锛侊紒");
             }
-            assert locMast != null;
-            switch (wrkMast.getIoType()) {
-                // 绌烘澘鍏ュ簱
-                case 10:
-                    // 淇敼搴撲綅鐘舵��=D
-                    if (locMast.getLocSts().equals("S") || locMast.getLocSts().equals("Q")) {
-                        if (!Cools.isEmpty(wrkMast.getBarcode())) {
-                            locMast.setBarcode(wrkMast.getBarcode());
-                        }
-                        locMast.setLocSts("D");
-                        locMast.setIoTime(now);
-                        locMast.setModiTime(now);
-                        if (!locMastService.updateById(locMast)) {
+            List<WaitPakin> apallet = waitPakinService.selectList(new EntityWrapper<WaitPakin>().eq("zpallet", wrkMast.getBarcode()));
+            if (Objects.isNull(apallet)) {
+                throw new CoolException("鏁版嵁閿欒锛氱粍鎵樻暟鎹笉瀛樺湪锛侊紒");
+            }
+
+            apallet.forEach(pakin -> {
+                LocDetl detl = new LocDetl();
+                BeanUtils.copyProperties(pakin, detl);
+                detl.setBarcode(pakin.getBarcode())
+                        .setAnfme(pakin.getAnfme())
+                        .setBrand(pakin.getBrand())
+                        .setAppeTime(new Date())
+                        .setSpecs(pakin.getSpecs())
+                        .setColor(pakin.getColor())
+                        .setLocId(locCache.getId())
+                        .setLocNo(locCache.getLocNo())
+                        .setAreaId(locCache.getAreaId())
+                        .setAreaName(locCache.getAreaName())
+                        .setUnit(pakin.getUnit())
+                        .setBatch(pakin.getBatch());
+
+                if (!locDetlService.insert(detl)) {
+                    throw new CoolException("搴撲綅鏄庣粏淇濆瓨澶辫触锛侊紒");
+                }
+            });
+
+            locCache.setLocSts(LocStsType.LOC_STS_TYPE_F.type);
+            locCache.setModiTime(new Date());
+            locCache.setBarcode("");
+            locCache.setModiTime(new Date());
+            locCache.setIoTime(new Date());
+            if (!locCacheService.updateById(locCache)) {
+                throw new CoolException("搴撲綅鐘舵�佷慨鏀瑰け璐ワ紒");
+            }
+            wrkMast.setWrkSts(5L);
+            wrkMast.setModiTime(new Date());
+            if (!wrkMastService.updateById(wrkMast)) {
+                throw new CoolException("浠诲姟鐘舵�佷慨鏀瑰け璐ワ紒锛�");
+            }
+
+            Set<Long> list = apallet.stream().map(WaitPakin::getOrderId).collect(Collectors.toSet());
+            List<OrderPakin> pakins = orderPakinService.selectList(new EntityWrapper<OrderPakin>().in("order_id", list));
+            if (Objects.isNull(pakins) || pakins.isEmpty()) {
+                throw new CoolException("鍗曟嵁涓嶅瓨鍦紒锛�");
+            }
+            pakins.forEach(orderPakin -> {
+                orderPakin.setSettle(4L);
+                if (!orderPakinService.updateById(orderPakin)) {
+                    throw new CoolException("鍗曟嵁淇敼澶辫触锛侊紒");
+                }
+            });
+        } else {
+            Date now = new Date();
+            LocMast locMast = locMastService.selectById(wrkMast.getLocNo());
+            try {
+                if (null == locMast) {
+//                exceptionHandle("宸ヤ綔妗workNo={0}]搴撲綅鍙烽敊璇痆locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo());
+                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                    return FAIL.setMsg("宸ヤ綔妗workNo=" + wrkMast.getWrkNo() + "]搴撲綅鍙烽敊璇痆locNo=" + wrkMast.getLocNo() + "]");
+                }
+                assert locMast != null;
+                switch (wrkMast.getIoType()) {
+                    // 绌烘澘鍏ュ簱
+                    case 10:
+                        // 淇敼搴撲綅鐘舵��=D
+                        if (locMast.getLocSts().equals("S") || locMast.getLocSts().equals("Q")) {
+                            if (!Cools.isEmpty(wrkMast.getBarcode())) {
+                                locMast.setBarcode(wrkMast.getBarcode());
+                            }
+                            locMast.setLocSts("D");
+                            locMast.setIoTime(now);
+                            locMast.setModiTime(now);
+                            if (!locMastService.updateById(locMast)) {
 //                            exceptionHandle("绌烘澘鍏ュ簱 ===>> 淇敼搴撲綅鐘舵�佸け璐�;[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo());
-                            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-                            return FAIL.setMsg("绌烘澘鍏ュ簱 ===>> 淇敼搴撲綅鐘舵�佸け璐�; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
+                                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                                return FAIL.setMsg("绌烘澘鍏ュ簱 ===>> 淇敼搴撲綅鐘舵�佸け璐�; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
+                            }
                         }
-                    }
-                    break;
-                // 鍏ㄦ澘鍏ュ簱
-                case 1:
-                    // 娓呴櫎鎵�灞炲簱浣嶄箣鍓嶇殑搴撳瓨鏄庣粏
-                    List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", wrkMast.getLocNo()));
-                    if (!locDetls.isEmpty()) {
-                        locDetlService.delete(new EntityWrapper<LocDetl>().eq("loc_no", wrkMast.getLocNo()));
-                    }
-                    // 鏍规嵁宸ヤ綔鍙凤紝鏌ヨ宸ヤ綔鏄庣粏妗�
-                    List<WrkDetl> wrkDetls = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()));
-                    if (wrkDetls.isEmpty()) {
+                        break;
+                    // 鍏ㄦ澘鍏ュ簱
+                    case 1:
+                        // 娓呴櫎鎵�灞炲簱浣嶄箣鍓嶇殑搴撳瓨鏄庣粏
+                        List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", wrkMast.getLocNo()));
+                        if (!locDetls.isEmpty()) {
+                            locDetlService.delete(new EntityWrapper<LocDetl>().eq("loc_no", wrkMast.getLocNo()));
+                        }
+                        // 鏍规嵁宸ヤ綔鍙凤紝鏌ヨ宸ヤ綔鏄庣粏妗�
+                        List<WrkDetl> wrkDetls = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()));
+                        if (wrkDetls.isEmpty()) {
 //                        exceptionHandle("鍏ㄦ澘鍏ュ簱 ===>> 宸ヤ綔鏄庣粏妗d笉瀛樺湪锛沎workNo={0}]", wrkMast.getWrkNo());
-                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-                        return FAIL.setMsg("鍏ㄦ澘鍏ュ簱 ===>> 宸ヤ綔鏄庣粏妗d笉瀛樺湪; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
-                    }
-                    // 閬嶅巻宸ヤ綔鏄庣粏锛屾洿鏂板簱瀛樻槑缁嗗拰鍏ュ簱閫氱煡妗�
-                    for (WrkDetl wrkDetl : wrkDetls) {
+                            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                            return FAIL.setMsg("鍏ㄦ澘鍏ュ簱 ===>> 宸ヤ綔鏄庣粏妗d笉瀛樺湪; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
+                        }
+                        // 閬嶅巻宸ヤ綔鏄庣粏锛屾洿鏂板簱瀛樻槑缁嗗拰鍏ュ簱閫氱煡妗�
+                        for (WrkDetl wrkDetl : wrkDetls) {
 
-                        LocDetl locDetl = locDetlService.selectItem(locMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(),wrkDetl.getBrand()
-                        ,wrkDetl.getStandby1(),wrkDetl.getStandby2(),wrkDetl.getStandby3(),wrkDetl.getBoxType1(),wrkDetl.getBoxType2(),wrkDetl.getBoxType3());
-                        if (null != locDetl) {
-                            if (!locDetlService.updateAnfme(wrkDetl.getAnfme(), wrkMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(),wrkDetl.getBrand(),wrkDetl.getStandby1(),wrkDetl.getStandby2(),wrkDetl.getStandby3()
-                            ,wrkDetl.getBoxType1(),wrkDetl.getBoxType2(),wrkDetl.getBoxType3())) {
+                            LocDetl locDetl = locDetlService.selectItem(locMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand()
+                                    , wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(), wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3());
+                            if (null != locDetl) {
+                                if (!locDetlService.updateAnfme(wrkDetl.getAnfme(), wrkMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3()
+                                        , wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3())) {
 //                                exceptionHandle("鍏ㄦ澘鍏ュ簱 ===>> 鏇存柊搴撳瓨鏄庣粏澶辫触锛沎workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo());
-                                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-                                return FAIL.setMsg("鍏ㄦ澘鍏ュ簱 ===>> 鏇存柊搴撳瓨鏄庣粏澶辫触; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
-                            }
-                        } else {
-                            locDetl = new LocDetl();
-                            locDetl.sync(wrkDetl);
-                            locDetl.setLocNo(wrkMast.getLocNo()); // 搴撲綅鍙�
-                            locDetl.setAnfme(wrkDetl.getAnfme()); // 鏁伴噺
-                            locDetl.setZpallet(wrkDetl.getZpallet()); // 鎵樼洏鏉$爜
-                            locDetl.setModiTime(now);
-                            locDetl.setAppeTime(now);
-                            if (!locDetlService.insert(locDetl)) {
+                                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                                    return FAIL.setMsg("鍏ㄦ澘鍏ュ簱 ===>> 鏇存柊搴撳瓨鏄庣粏澶辫触; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
+                                }
+                            } else {
+                                locDetl = new LocDetl();
+                                locDetl.sync(wrkDetl);
+                                locDetl.setLocNo(wrkMast.getLocNo()); // 搴撲綅鍙�
+                                locDetl.setAnfme(wrkDetl.getAnfme()); // 鏁伴噺
+                                locDetl.setZpallet(wrkDetl.getZpallet()); // 鎵樼洏鏉$爜
+                                locDetl.setModiTime(now);
+                                locDetl.setAppeTime(now);
+                                if (!locDetlService.insert(locDetl)) {
 //                                exceptionHandle("鍏ㄦ澘鍏ュ簱 ===>> 娣诲姞搴撳瓨鏄庣粏澶辫触锛沎workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo());
-                                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-                                return FAIL.setMsg("鍏ㄦ澘鍏ュ簱 ===>> 娣诲姞搴撳瓨鏄庣粏澶辫触; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
+                                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                                    return FAIL.setMsg("鍏ㄦ澘鍏ュ簱 ===>> 娣诲姞搴撳瓨鏄庣粏澶辫触; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
+                                }
                             }
-                        }
 
-                        // 鏇存柊璁㈠崟瀹屾垚鏁伴噺
-                        OrderDetlPakin orderDetlPakin = orderDetlPakinService.selectItem
-                                (wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(),wrkDetl.getBrand(),wrkDetl.getStandby1(),wrkDetl.getStandby2(),wrkDetl.getStandby3(),
-                                        wrkDetl.getBoxType1(),wrkDetl.getBoxType2(),wrkDetl.getBoxType3());
-                        if (orderDetlPakin==null){
-                            orderDetlPakin = orderDetlPakinService.selectItem
-                                    (wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(),
-                                            wrkDetl.getBrand(),wrkDetl.getStandby1(),wrkDetl.getStandby2(),wrkDetl.getStandby3(),
-                                            wrkDetl.getBoxType1(),wrkDetl.getBoxType2(),wrkDetl.getBoxType3());
-                        }
-                        try {
-                            if(!Cools.isEmpty(orderDetlPakin)){
-                                if(!orderDetlPakinService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(),
-                                        orderDetlPakin.getBatch(),wrkDetl.getBrand(),wrkDetl.getStandby1(),wrkDetl.getStandby2(),wrkDetl.getStandby3(),
-                                        wrkDetl.getBoxType1(),wrkDetl.getBoxType2(),wrkDetl.getBoxType3(),wrkDetl.getAnfme())){
+                            // 鏇存柊璁㈠崟瀹屾垚鏁伴噺
+                            OrderDetlPakin orderDetlPakin = orderDetlPakinService.selectItem
+                                    (wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(),
+                                            wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3());
+                            if (orderDetlPakin == null) {
+                                orderDetlPakin = orderDetlPakinService.selectItem
+                                        (wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(),
+                                                wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(),
+                                                wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3());
+                            }
+                            try {
+                                if (!Cools.isEmpty(orderDetlPakin)) {
+                                    if (!orderDetlPakinService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(),
+                                            orderDetlPakin.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(),
+                                            wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3(), wrkDetl.getAnfme())) {
 //                                    exceptionHandle("鍏ㄦ澘鍏ュ簱 ===>> 鏇存柊璁㈠崟瀹屾垚鏁伴噺澶辫触锛沎workNo={0}],[locNo={1}]",
 //                                            wrkMast.getWrkNo(), wrkMast.getLocNo());
-                                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-                                    return FAIL.setMsg("鍏ㄦ澘鍏ュ簱 ===>> 鏇存柊璁㈠崟瀹屾垚鏁伴噺澶辫触; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
+                                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                                        return FAIL.setMsg("鍏ㄦ澘鍏ュ簱 ===>> 鏇存柊璁㈠崟瀹屾垚鏁伴噺澶辫触; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
+                                    }
                                 }
+                            } catch (Exception ignore) {
                             }
-                        } catch (Exception ignore){}
 
-                    }
-                    // 淇敼搴撲綅鐘舵�� S ====>> F
-                    if (locMast.getLocSts().equals("S")) {
-                        locMast.setLocSts("F");
-                        locMast.setBarcode(wrkMast.getBarcode());
-                        locMast.setIoTime(now);
-                        locMast.setModiTime(now);
-                        if (!locMastService.updateById(locMast)) {
+                        }
+                        // 淇敼搴撲綅鐘舵�� S ====>> F
+                        if (locMast.getLocSts().equals("S")) {
+                            locMast.setLocSts("F");
+                            locMast.setBarcode(wrkMast.getBarcode());
+                            locMast.setIoTime(now);
+                            locMast.setModiTime(now);
+                            if (!locMastService.updateById(locMast)) {
 //                            exceptionHandle("鍏ㄦ澘鍏ュ簱 ===>> 淇敼搴撲綅鐘舵�佸け璐ワ紱[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo());
+                                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                                return FAIL.setMsg("鍏ㄦ澘鍏ュ簱 ===>> 淇敼搴撲綅鐘舵�佸け璐�; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
+                            }
+                        }
+                        break;
+                    // 鎷f枡閫斾腑骞舵澘
+                    case 8:
+                        // 鏍规嵁宸ヤ綔鍙凤紝鏌ヨ宸ヤ綔鏄庣粏妗�
+                        List<WrkDetl> wrkDetls8 = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()));
+                        if (wrkDetls8.isEmpty()) {
                             TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-                            return FAIL.setMsg("鍏ㄦ澘鍏ュ簱 ===>> 淇敼搴撲綅鐘舵�佸け璐�; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
+                            return FAIL.setMsg("鎷f枡閫斾腑骞舵澘 ===>> 宸ヤ綔鏄庣粏妗d笉瀛樺湪; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
                         }
-                    }
-                    break;
-                // 鎷f枡閫斾腑骞舵澘
-                case 8:
-                    // 鏍规嵁宸ヤ綔鍙凤紝鏌ヨ宸ヤ綔鏄庣粏妗�
-                    List<WrkDetl> wrkDetls8 = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()));
-                    if (wrkDetls8.isEmpty()) {
-                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-                        return FAIL.setMsg("鎷f枡閫斾腑骞舵澘 ===>> 宸ヤ綔鏄庣粏妗d笉瀛樺湪; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
-                    }
-                    // 閬嶅巻宸ヤ綔鏄庣粏锛屾洿鏂板簱瀛樻槑缁嗗拰鍏ュ簱閫氱煡妗�
-                    for (WrkDetl wrkDetl : wrkDetls8) {
+                        // 閬嶅巻宸ヤ綔鏄庣粏锛屾洿鏂板簱瀛樻槑缁嗗拰鍏ュ簱閫氱煡妗�
+                        for (WrkDetl wrkDetl : wrkDetls8) {
 
-                        LocDetl locDetl = locDetlService.selectItem(locMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand()
-                                , wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(), wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3());
-                        if (null != locDetl) {
-                            if (!locDetlService.updateAnfme(wrkDetl.getAnfme() + locDetl.getAnfme(), wrkMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3()
-                                    , wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3())) {
-                                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-                                return FAIL.setMsg("鎷f枡閫斾腑骞舵澘 ===>> 鏇存柊搴撳瓨鏄庣粏澶辫触; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
-                            }
-                        } else {
-                            locDetl = new LocDetl();
-                            locDetl.sync(wrkDetl);
-                            locDetl.setLocNo(wrkMast.getLocNo()); // 搴撲綅鍙�
-                            locDetl.setAnfme(wrkDetl.getAnfme()); // 鏁伴噺
-                            locDetl.setZpallet(wrkDetl.getZpallet()); // 鎵樼洏鏉$爜
-                            locDetl.setModiTime(now);
-                            locDetl.setAppeTime(now);
-                            if (!locDetlService.insert(locDetl)) {
-                                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-                                return FAIL.setMsg("鎷f枡閫斾腑骞舵澘 ===>> 娣诲姞搴撳瓨鏄庣粏澶辫触; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
-                            }
-                        }
-
-                        if (!Cools.isEmpty(wrkDetl.getOrderNo())) {
-                            // 鏇存柊璁㈠崟瀹屾垚鏁伴噺
-                            if (!orderDetlPakinService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(),
-                                    wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(),
-                                    wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3(), wrkDetl.getAnfme())) {
-                                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-                                return FAIL.setMsg("鎷f枡閫斾腑骞舵澘 ===>> 鏇存柊璁㈠崟瀹屾垚鏁伴噺澶辫触; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
-                            }
-                        }
-                    }
-                    break;
-                // 鎷f枡鍏ュ簱
-                case 53:
-                    // 鏍规嵁宸ヤ綔鍙凤紝鏌ヨ宸ヤ綔鏄庣粏妗�
-                    List<WrkDetl> wrkDetls53 = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()));
-                    if (wrkDetls53.isEmpty()) {
-//                        exceptionHandle("鎷f枡鍏ュ簱 ===>> 宸ヤ綔鏄庣粏妗d负绌猴紱[workNo={0}]", wrkMast.getWrkNo());
-                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-                        return FAIL.setMsg("鎷f枡鍏ュ簱 ===>> 宸ヤ綔鏄庣粏妗d负绌�; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
-                    }
-                    for (WrkDetl wrkDetl : wrkDetls53) {
-
-                        LocDetl locDetl = locDetlService.selectItem(locMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(),wrkDetl.getBrand()
-                                ,wrkDetl.getStandby1(),wrkDetl.getStandby2(),wrkDetl.getStandby3(),wrkDetl.getBoxType1(),wrkDetl.getBoxType2(),wrkDetl.getBoxType3());
-                        if (null != locDetl) {
-                            if (!locDetlService.updateAnfme(locDetl.getAnfme() - wrkDetl.getAnfme(), locMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(),wrkDetl.getBrand(),wrkDetl.getStandby1(),wrkDetl.getStandby2(),wrkDetl.getStandby3()
-                                    ,wrkDetl.getBoxType1(),wrkDetl.getBoxType2(),wrkDetl.getBoxType3())) {
-//                                exceptionHandle("鎷f枡鍏ュ簱 ===>> 淇敼搴撳瓨鏄庣粏鏁伴噺澶辫触锛沎workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo());
-                                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-                                return FAIL.setMsg("鎷f枡鍏ュ簱 ===>> 淇敼搴撳瓨鏄庣粏鏁伴噺澶辫触; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
-                            }
-                        }
-
-                        // 鏇存柊璁㈠崟瀹屾垚鏁伴噺
-                        OrderDetlPakin orderDetlPakin = orderDetlPakinService.selectItem
-                                (wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(),wrkDetl.getBrand(),
-                                        wrkDetl.getStandby1(),wrkDetl.getStandby2(),wrkDetl.getStandby3(),
-                                        wrkDetl.getBoxType1(),wrkDetl.getBoxType2(),wrkDetl.getBoxType3());
-                        if (orderDetlPakin==null){
-                            orderDetlPakin = orderDetlPakinService.selectItem
-                                    (wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(),wrkDetl.getBrand(),wrkDetl.getStandby1(),wrkDetl.getStandby2(),wrkDetl.getStandby3(),
-                                            wrkDetl.getBoxType1(),wrkDetl.getBoxType2(),wrkDetl.getBoxType3());
-                        }
-                        try {
-                            if(!Cools.isEmpty(orderDetlPakin)){
-                                if(!orderDetlPakinService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(),
-                                        orderDetlPakin.getBatch(),wrkDetl.getBrand(),wrkDetl.getStandby1(),wrkDetl.getStandby2(),wrkDetl.getStandby3(),
-                                        wrkDetl.getBoxType1(),wrkDetl.getBoxType2(),wrkDetl.getBoxType3(),wrkDetl.getAnfme())){
-//                                    exceptionHandle("鎷f枡鍏ュ簱 ===>> 鏇存柊璁㈠崟瀹屾垚鏁伴噺澶辫触锛沎workNo={0}],[locNo={1}]",
-//                                            wrkMast.getWrkNo(), wrkMast.getLocNo());
+                            LocDetl locDetl = locDetlService.selectItem(locMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand()
+                                    , wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(), wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3());
+                            if (null != locDetl) {
+                                if (!locDetlService.updateAnfme(wrkDetl.getAnfme() + locDetl.getAnfme(), wrkMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3()
+                                        , wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3())) {
                                     TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-                                    return FAIL.setMsg("鎷f枡鍏ュ簱 ===>> 鏇存柊璁㈠崟瀹屾垚鏁伴噺澶辫触; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
+                                    return FAIL.setMsg("鎷f枡閫斾腑骞舵澘 ===>> 鏇存柊搴撳瓨鏄庣粏澶辫触; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
+                                }
+                            } else {
+                                locDetl = new LocDetl();
+                                locDetl.sync(wrkDetl);
+                                locDetl.setLocNo(wrkMast.getLocNo()); // 搴撲綅鍙�
+                                locDetl.setAnfme(wrkDetl.getAnfme()); // 鏁伴噺
+                                locDetl.setZpallet(wrkDetl.getZpallet()); // 鎵樼洏鏉$爜
+                                locDetl.setModiTime(now);
+                                locDetl.setAppeTime(now);
+                                if (!locDetlService.insert(locDetl)) {
+                                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                                    return FAIL.setMsg("鎷f枡閫斾腑骞舵澘 ===>> 娣诲姞搴撳瓨鏄庣粏澶辫触; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
                                 }
                             }
-                        } catch (Exception ignore){}
 
-                    }
-                    // 淇敼搴撲綅鐘舵�� Q ====>> F
-                    if (locMast.getLocSts().equals("Q")) {
-                        locMast.setLocSts("F");
-                        locMast.setBarcode(wrkMast.getBarcode());
-                        locMast.setIoTime(now);
-                        locMast.setModiTime(now);
-                        if (!locMastService.updateById(locMast)) {
-//                            exceptionHandle("鎷f枡鍏ュ簱 ===>> 淇敼搴撲綅鐘舵�佸け璐ワ紱[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo());
-                            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-                            return FAIL.setMsg("鎷f枡鍏ュ簱 ===>> 淇敼搴撲綅鐘舵�佸け璐�; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
-                        }
-                    }
-                    break;
-                // 骞舵澘鍏ュ簱
-                case 54:
-                    // 鏍规嵁宸ヤ綔鍙凤紝鏌ヨ宸ヤ綔鏄庣粏妗�
-                    List<WrkDetl> wrkDetls54 = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()));
-                    if (wrkDetls54.isEmpty()) {
-//                        exceptionHandle("骞舵澘鍏ュ簱 ===>> 宸ヤ綔鏄庣粏妗d负绌猴紱[workNo={0}]", wrkMast.getWrkNo());
-                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-                        return FAIL.setMsg("骞舵澘鍏ュ簱 ===>> 宸ヤ綔鏄庣粏妗d负绌�; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
-                    }
-                    // 淇敼搴撳瓨鏄庣粏鏁伴噺锛屽鏃犲簱瀛橈紝鏇炬柊澧�
-                    for (WrkDetl wrkDetl:wrkDetls54) {
-
-                        LocDetl locDetl = locDetlService.selectItem(locMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(),wrkDetl.getBrand()
-                                ,wrkDetl.getStandby1(),wrkDetl.getStandby2(),wrkDetl.getStandby3(),wrkDetl.getBoxType1(),wrkDetl.getBoxType2(),wrkDetl.getBoxType3());
-                        if (null != locDetl) {
-                            if (!locDetlService.updateAnfme(wrkDetl.getAnfme(), locMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(),wrkDetl.getBrand(),wrkDetl.getStandby1(),wrkDetl.getStandby2(),wrkDetl.getStandby3()
-                                    ,wrkDetl.getBoxType1(),wrkDetl.getBoxType2(),wrkDetl.getBoxType3())) {
-//                                exceptionHandle("骞舵澘鍏ュ簱 ===>> 淇敼搴撳瓨鏄庣粏鏁伴噺澶辫触锛沎workNo={0}],[matnr={1}]", wrkMast.getWrkNo(), wrkDetl.getMatnr());
-                                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-                                return FAIL.setMsg("骞舵澘鍏ュ簱 ===>> 淇敼搴撳瓨鏄庣粏鏁伴噺澶辫触; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
-                            }
-                        } else {
-                            locDetl = new LocDetl();
-                            locDetl.sync(wrkDetl);
-                            locDetl.setLocNo(wrkMast.getLocNo()); // 搴撲綅鍙�
-                            locDetl.setAnfme(wrkDetl.getAnfme()); // 鏁伴噺
-                            locDetl.setZpallet(wrkDetl.getZpallet()); // 鎵樼洏鏉$爜
-                            locDetl.setModiTime(now);
-                            locDetl.setAppeTime(now);
-                            if (!locDetlService.insert(locDetl)) {
-                                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-                                return FAIL.setMsg("骞舵澘鍏ュ簱 ===>> 鏂板搴撳瓨鏄庣粏澶辫触; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
-                            }
-                        }
-
-                        // 鏇存柊璁㈠崟瀹屾垚鏁伴噺
-                        OrderDetlPakin orderDetlPakin = orderDetlPakinService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(),wrkDetl.getBrand(), wrkDetl.getStandby1(),wrkDetl.getStandby2(),wrkDetl.getStandby3(), wrkDetl.getBoxType1(),wrkDetl.getBoxType2(),wrkDetl.getBoxType3());
-                        try {
-                            if(!Cools.isEmpty(orderDetlPakin)){
-                                if(!orderDetlPakinService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(),
-                                        orderDetlPakin.getBatch(),wrkDetl.getBrand(),wrkDetl.getStandby1(),wrkDetl.getStandby2(),wrkDetl.getStandby3(),
-                                        wrkDetl.getBoxType1(),wrkDetl.getBoxType2(),wrkDetl.getBoxType3(),wrkDetl.getAnfme())){
-                                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-                                    return FAIL.setMsg("骞舵澘鍏ュ簱 ===>> 鏇存柊璁㈠崟瀹屾垚鏁伴噺澶辫触; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
-                                }
-                            }
-                        } catch (Exception ignore){
-
-                        }
-
-                    }
-                    // 淇敼搴撲綅鐘舵�� Q ====>> F
-                    if (locMast.getLocSts().equals("Q")) {
-                        locMast.setLocSts("F");
-                        locMast.setBarcode(wrkMast.getBarcode());
-                        locMast.setIoTime(now);
-                        locMast.setModiTime(now);
-                        if (!locMastService.updateById(locMast)) {
-//                            exceptionHandle("骞舵澘鍏ュ簱 ===>> 淇敼搴撲綅鐘舵�佸け璐ワ紱[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo());
-                            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-                            return FAIL.setMsg("骞舵澘鍏ュ簱 ===>> 淇敼搴撲綅鐘舵�佸け璐�; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
-                        }
-                    }
-                    break;
-                // 鐩樼偣鍏ュ簱
-                case 57:
-                    // 鏍规嵁宸ヤ綔鍙凤紝鏌ヨ宸ヤ綔鏄庣粏妗�
-                    List<WrkDetl> wrkDetls57 = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()));
-                    if (wrkDetls57.isEmpty()) {
-//                        exceptionHandle("鐩樼偣鍏ュ簱 ===>> 宸ヤ綔鏄庣粏妗d负绌猴紱[workNo={0}]", wrkMast.getWrkNo());
-                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-                        return FAIL.setMsg("鐩樼偣鍏ュ簱 ===>> 宸ヤ綔鏄庣粏妗d负绌�; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
-                    }
-                    for (WrkDetl wrkDetl : wrkDetls57) {
-                        if (!Cools.isEmpty(wrkDetl.getOrderNo())) {
-                            // 鏇存柊璁㈠崟瀹屾垚鏁伴噺
-                            OrderDetlPakout orderDetlPakout = orderDetlPakoutService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(),
-                                    wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3());
-                            if (!Cools.isEmpty(orderDetlPakout)) {
-                                if (!orderDetlPakoutService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(),
-                                        orderDetlPakout.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(),
+                            if (!Cools.isEmpty(wrkDetl.getOrderNo())) {
+                                // 鏇存柊璁㈠崟瀹屾垚鏁伴噺
+                                if (!orderDetlPakinService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(),
+                                        wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(),
                                         wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3(), wrkDetl.getAnfme())) {
                                     TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-                                    return FAIL.setMsg("鐩樼偣鍏ュ簱 ===>> 鏇存柊璁㈠崟瀹屾垚鏁伴噺澶辫触; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getSourceLocNo() + "]");
+                                    return FAIL.setMsg("鎷f枡閫斾腑骞舵澘 ===>> 鏇存柊璁㈠崟瀹屾垚鏁伴噺澶辫触; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
                                 }
                             }
                         }
-                    }
-                    // 淇敼搴撲綅鐘舵�� Q ====>> F
-                    if (locMast.getLocSts().equals("Q")) {
-                        locMast.setLocSts(wrkMast.getFullPlt().equals("Y")?"F":"D");
+                        break;
+                    // 鎷f枡鍏ュ簱
+                    case 53:
+                        // 鏍规嵁宸ヤ綔鍙凤紝鏌ヨ宸ヤ綔鏄庣粏妗�
+                        List<WrkDetl> wrkDetls53 = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()));
+                        if (wrkDetls53.isEmpty()) {
+//                        exceptionHandle("鎷f枡鍏ュ簱 ===>> 宸ヤ綔鏄庣粏妗d负绌猴紱[workNo={0}]", wrkMast.getWrkNo());
+                            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                            return FAIL.setMsg("鎷f枡鍏ュ簱 ===>> 宸ヤ綔鏄庣粏妗d负绌�; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
+                        }
+                        for (WrkDetl wrkDetl : wrkDetls53) {
+
+                            LocDetl locDetl = locDetlService.selectItem(locMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand()
+                                    , wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(), wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3());
+                            if (null != locDetl) {
+                                if (!locDetlService.updateAnfme(locDetl.getAnfme() - wrkDetl.getAnfme(), locMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3()
+                                        , wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3())) {
+//                                exceptionHandle("鎷f枡鍏ュ簱 ===>> 淇敼搴撳瓨鏄庣粏鏁伴噺澶辫触锛沎workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo());
+                                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                                    return FAIL.setMsg("鎷f枡鍏ュ簱 ===>> 淇敼搴撳瓨鏄庣粏鏁伴噺澶辫触; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
+                                }
+                            }
+
+                            // 鏇存柊璁㈠崟瀹屾垚鏁伴噺
+                            OrderDetlPakin orderDetlPakin = orderDetlPakinService.selectItem
+                                    (wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(),
+                                            wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(),
+                                            wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3());
+                            if (orderDetlPakin == null) {
+                                orderDetlPakin = orderDetlPakinService.selectItem
+                                        (wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(),
+                                                wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3());
+                            }
+                            try {
+                                if (!Cools.isEmpty(orderDetlPakin)) {
+                                    if (!orderDetlPakinService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(),
+                                            orderDetlPakin.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(),
+                                            wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3(), wrkDetl.getAnfme())) {
+//                                    exceptionHandle("鎷f枡鍏ュ簱 ===>> 鏇存柊璁㈠崟瀹屾垚鏁伴噺澶辫触锛沎workNo={0}],[locNo={1}]",
+//                                            wrkMast.getWrkNo(), wrkMast.getLocNo());
+                                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                                        return FAIL.setMsg("鎷f枡鍏ュ簱 ===>> 鏇存柊璁㈠崟瀹屾垚鏁伴噺澶辫触; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
+                                    }
+                                }
+                            } catch (Exception ignore) {
+                            }
+
+                        }
+                        // 淇敼搴撲綅鐘舵�� Q ====>> F
+                        if (locMast.getLocSts().equals("Q")) {
+                            locMast.setLocSts("F");
+                            locMast.setBarcode(wrkMast.getBarcode());
+                            locMast.setIoTime(now);
+                            locMast.setModiTime(now);
+                            if (!locMastService.updateById(locMast)) {
+//                            exceptionHandle("鎷f枡鍏ュ簱 ===>> 淇敼搴撲綅鐘舵�佸け璐ワ紱[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo());
+                                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                                return FAIL.setMsg("鎷f枡鍏ュ簱 ===>> 淇敼搴撲綅鐘舵�佸け璐�; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
+                            }
+                        }
+                        break;
+                    // 骞舵澘鍏ュ簱
+                    case 54:
+                        // 鏍规嵁宸ヤ綔鍙凤紝鏌ヨ宸ヤ綔鏄庣粏妗�
+                        List<WrkDetl> wrkDetls54 = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()));
+                        if (wrkDetls54.isEmpty()) {
+//                        exceptionHandle("骞舵澘鍏ュ簱 ===>> 宸ヤ綔鏄庣粏妗d负绌猴紱[workNo={0}]", wrkMast.getWrkNo());
+                            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                            return FAIL.setMsg("骞舵澘鍏ュ簱 ===>> 宸ヤ綔鏄庣粏妗d负绌�; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
+                        }
+                        // 淇敼搴撳瓨鏄庣粏鏁伴噺锛屽鏃犲簱瀛橈紝鏇炬柊澧�
+                        for (WrkDetl wrkDetl : wrkDetls54) {
+
+                            LocDetl locDetl = locDetlService.selectItem(locMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand()
+                                    , wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(), wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3());
+                            if (null != locDetl) {
+                                if (!locDetlService.updateAnfme(wrkDetl.getAnfme(), locMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3()
+                                        , wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3())) {
+//                                exceptionHandle("骞舵澘鍏ュ簱 ===>> 淇敼搴撳瓨鏄庣粏鏁伴噺澶辫触锛沎workNo={0}],[matnr={1}]", wrkMast.getWrkNo(), wrkDetl.getMatnr());
+                                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                                    return FAIL.setMsg("骞舵澘鍏ュ簱 ===>> 淇敼搴撳瓨鏄庣粏鏁伴噺澶辫触; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
+                                }
+                            } else {
+                                locDetl = new LocDetl();
+                                locDetl.sync(wrkDetl);
+                                locDetl.setLocNo(wrkMast.getLocNo()); // 搴撲綅鍙�
+                                locDetl.setAnfme(wrkDetl.getAnfme()); // 鏁伴噺
+                                locDetl.setZpallet(wrkDetl.getZpallet()); // 鎵樼洏鏉$爜
+                                locDetl.setModiTime(now);
+                                locDetl.setAppeTime(now);
+                                if (!locDetlService.insert(locDetl)) {
+                                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                                    return FAIL.setMsg("骞舵澘鍏ュ簱 ===>> 鏂板搴撳瓨鏄庣粏澶辫触; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
+                                }
+                            }
+
+                            // 鏇存柊璁㈠崟瀹屾垚鏁伴噺
+                            OrderDetlPakin orderDetlPakin = orderDetlPakinService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(), wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3());
+                            try {
+                                if (!Cools.isEmpty(orderDetlPakin)) {
+                                    if (!orderDetlPakinService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(),
+                                            orderDetlPakin.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(),
+                                            wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3(), wrkDetl.getAnfme())) {
+                                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                                        return FAIL.setMsg("骞舵澘鍏ュ簱 ===>> 鏇存柊璁㈠崟瀹屾垚鏁伴噺澶辫触; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
+                                    }
+                                }
+                            } catch (Exception ignore) {
+
+                            }
+
+                        }
+                        // 淇敼搴撲綅鐘舵�� Q ====>> F
+                        if (locMast.getLocSts().equals("Q")) {
+                            locMast.setLocSts("F");
+                            locMast.setBarcode(wrkMast.getBarcode());
+                            locMast.setIoTime(now);
+                            locMast.setModiTime(now);
+                            if (!locMastService.updateById(locMast)) {
+//                            exceptionHandle("骞舵澘鍏ュ簱 ===>> 淇敼搴撲綅鐘舵�佸け璐ワ紱[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo());
+                                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                                return FAIL.setMsg("骞舵澘鍏ュ簱 ===>> 淇敼搴撲綅鐘舵�佸け璐�; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
+                            }
+                        }
+                        break;
+                    // 鐩樼偣鍏ュ簱
+                    case 57:
+                        // 鏍规嵁宸ヤ綔鍙凤紝鏌ヨ宸ヤ綔鏄庣粏妗�
+                        List<WrkDetl> wrkDetls57 = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()));
+                        if (wrkDetls57.isEmpty()) {
+//                        exceptionHandle("鐩樼偣鍏ュ簱 ===>> 宸ヤ綔鏄庣粏妗d负绌猴紱[workNo={0}]", wrkMast.getWrkNo());
+                            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                            return FAIL.setMsg("鐩樼偣鍏ュ簱 ===>> 宸ヤ綔鏄庣粏妗d负绌�; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
+                        }
+                        for (WrkDetl wrkDetl : wrkDetls57) {
+                            if (!Cools.isEmpty(wrkDetl.getOrderNo())) {
+                                // 鏇存柊璁㈠崟瀹屾垚鏁伴噺
+                                OrderDetlPakout orderDetlPakout = orderDetlPakoutService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(),
+                                        wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3());
+                                if (!Cools.isEmpty(orderDetlPakout)) {
+                                    if (!orderDetlPakoutService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(),
+                                            orderDetlPakout.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(),
+                                            wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3(), wrkDetl.getAnfme())) {
+                                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                                        return FAIL.setMsg("鐩樼偣鍏ュ簱 ===>> 鏇存柊璁㈠崟瀹屾垚鏁伴噺澶辫触; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getSourceLocNo() + "]");
+                                    }
+                                }
+                            }
+                        }
+                        // 淇敼搴撲綅鐘舵�� Q ====>> F
+                        if (locMast.getLocSts().equals("Q")) {
+                            locMast.setLocSts(wrkMast.getFullPlt().equals("Y") ? "F" : "D");
+                            locMast.setBarcode(wrkMast.getBarcode());
+                            locMast.setIoTime(now);
+                            locMast.setModiTime(now);
+                            if (!locMastService.updateById(locMast)) {
+//                            exceptionHandle("鐩樼偣鍏ュ簱 ===>> 淇敼搴撲綅鐘舵�佸け璐ワ紱[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo());
+                                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                                return FAIL.setMsg("鐩樼偣鍏ュ簱 ===>> 淇敼搴撲綅鐘舵�佸け璐�; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
+                            }
+                        }
+                        break;
+                    // 搴撲綅绉昏浆
+                    case 11:
+                        // 榛樿鐩爣搴撲綅鏄┖鏉�
+                        String locSts = "D";
+                        // 搴撲綅绉昏浆鍒ゆ柇鏄惁涓虹┖鏉跨Щ杞�
+                        if (wrkMast.getEmptyMk().equals("N")) {
+                            locSts = "F";
+                            // 杞Щ搴撳瓨鏄庣粏鏁版嵁: 搴撳瓨鍙� 鐢卞伐浣滄。婧愬簱浣嶅彉涓虹洰鏍囧簱浣�
+                            if (!locDetlService.updateLocNo(wrkMast.getLocNo(), wrkMast.getSourceLocNo())) {
+//                            exceptionHandle("搴撲綅绉昏浆 ===>> 杞Щ搴撳瓨鏄庣粏鏁版嵁澶辫触锛沎婧愬簱浣�={0}],[鐩爣搴撲綅={1}]", wrkMast.getSourceLocNo(), wrkMast.getLocNo());
+                                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                                return FAIL.setMsg("搴撲綅绉昏浆 ===>> 杞Щ搴撳瓨鏄庣粏鏁版嵁澶辫触; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
+                            }
+                        }
+                        // 淇敼婧愬簱浣嶇姸鎬� ==> O
+                        LocMast sourceLoc = locMastService.selectById(wrkMast.getSourceLocNo());
+                        if (null != sourceLoc) {
+                            sourceLoc.setBarcode("");
+                            sourceLoc.setLocSts("O");
+                            sourceLoc.setModiTime(now);
+                            sourceLoc.setIoTime(now);
+                            if (!locMastService.updateById(sourceLoc)) {
+//                            exceptionHandle("搴撲綅绉昏浆 ===>> 淇敼婧愬簱浣嶇姸鎬佸け璐ワ紱[workNo={0}],[sourceLoc={1}]", wrkMast.getWrkNo(), wrkMast.getSourceLocNo());
+                                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                                return FAIL.setMsg("搴撲綅绉昏浆 ===>> 淇敼婧愬簱浣嶇姸鎬佸け璐�; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
+                            }
+                        }
+                        // 淇敼鐩爣搴撲綅鐘舵�� ==> .locSts
+                        locMast.setLocSts(locSts);
                         locMast.setBarcode(wrkMast.getBarcode());
                         locMast.setIoTime(now);
                         locMast.setModiTime(now);
                         if (!locMastService.updateById(locMast)) {
-//                            exceptionHandle("鐩樼偣鍏ュ簱 ===>> 淇敼搴撲綅鐘舵�佸け璐ワ紱[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo());
-                            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-                            return FAIL.setMsg("鐩樼偣鍏ュ簱 ===>> 淇敼搴撲綅鐘舵�佸け璐�; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
-                        }
-                    }
-                    break;
-                // 搴撲綅绉昏浆
-                case 11:
-                    // 榛樿鐩爣搴撲綅鏄┖鏉�
-                    String locSts = "D";
-                    // 搴撲綅绉昏浆鍒ゆ柇鏄惁涓虹┖鏉跨Щ杞�
-                    if (wrkMast.getEmptyMk().equals("N")) {
-                        locSts = "F";
-                        // 杞Щ搴撳瓨鏄庣粏鏁版嵁: 搴撳瓨鍙� 鐢卞伐浣滄。婧愬簱浣嶅彉涓虹洰鏍囧簱浣�
-                        if (!locDetlService.updateLocNo(wrkMast.getLocNo(), wrkMast.getSourceLocNo())) {
-//                            exceptionHandle("搴撲綅绉昏浆 ===>> 杞Щ搴撳瓨鏄庣粏鏁版嵁澶辫触锛沎婧愬簱浣�={0}],[鐩爣搴撲綅={1}]", wrkMast.getSourceLocNo(), wrkMast.getLocNo());
-                            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-                            return FAIL.setMsg("搴撲綅绉昏浆 ===>> 杞Щ搴撳瓨鏄庣粏鏁版嵁澶辫触; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
-                        }
-                    }
-                    // 淇敼婧愬簱浣嶇姸鎬� ==> O
-                    LocMast sourceLoc = locMastService.selectById(wrkMast.getSourceLocNo());
-                    if (null != sourceLoc) {
-                        sourceLoc.setBarcode("");
-                        sourceLoc.setLocSts("O");
-                        sourceLoc.setModiTime(now);
-                        sourceLoc.setIoTime(now);
-                        if (!locMastService.updateById(sourceLoc)) {
-//                            exceptionHandle("搴撲綅绉昏浆 ===>> 淇敼婧愬簱浣嶇姸鎬佸け璐ワ紱[workNo={0}],[sourceLoc={1}]", wrkMast.getWrkNo(), wrkMast.getSourceLocNo());
-                            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-                            return FAIL.setMsg("搴撲綅绉昏浆 ===>> 淇敼婧愬簱浣嶇姸鎬佸け璐�; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
-                        }
-                    }
-                    // 淇敼鐩爣搴撲綅鐘舵�� ==> .locSts
-                    locMast.setLocSts(locSts);
-                    locMast.setBarcode(wrkMast.getBarcode());
-                    locMast.setIoTime(now);
-                    locMast.setModiTime(now);
-                    if (!locMastService.updateById(locMast)) {
 //                        exceptionHandle("搴撲綅绉昏浆 ===>> 淇敼鐩爣搴撲綅鐘舵�佸け璐ワ紱[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo());
-                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-                        return FAIL.setMsg("搴撲綅绉昏浆 ===>> 淇敼鐩爣搴撲綅鐘舵�佸け璐�; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
-                    }
-                    break;
-                default:
-                    break;
-            }
-            // 淇敼宸ヤ綔涓绘。鐘舵��
-            wrkMast.setWrkSts(5L);
-            wrkMast.setModiTime(now);
-            if (!wrkMastService.updateById(wrkMast)) {
+                            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                            return FAIL.setMsg("搴撲綅绉昏浆 ===>> 淇敼鐩爣搴撲綅鐘舵�佸け璐�; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
+                        }
+                        break;
+                    default:
+                        break;
+                }
+                // 淇敼宸ヤ綔涓绘。鐘舵��
+                wrkMast.setWrkSts(5L);
+                wrkMast.setModiTime(now);
+                if (!wrkMastService.updateById(wrkMast)) {
 //                exceptionHandle("鏇存柊鍏ュ簱瀹屾垚鐘舵�佸け璐�;[workNo={0}]", wrkMast.getWrkNo());
+                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                    return FAIL.setMsg("鏇存柊鍏ュ簱瀹屾垚鐘舵�佸け璐�; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
+                }
+            } catch (Exception e) {
+                log.error("fail", e);
+                e.printStackTrace();
                 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-                return FAIL.setMsg("鏇存柊鍏ュ簱瀹屾垚鐘舵�佸け璐�; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
+                return FAIL.setMsg(e.getMessage());
             }
-        } catch (Exception e) {
-            log.error("fail", e);
-            e.printStackTrace();
-            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-            return FAIL.setMsg(e.getMessage());
         }
         return SUCCESS;
     }
 
-    private ReturnT<String> doOut(WrkMast wrkMast){
+    private ReturnT<String> doOut(WrkMast wrkMast) {
         Date now = new Date();
         LocMast locMast = locMastService.selectById(wrkMast.getSourceLocNo());
         try {
@@ -445,24 +515,25 @@
                     }
                     for (WrkDetl wrkDetl : wrkDetls101) {
                         // 鏇存柊璁㈠崟瀹屾垚鏁伴噺
-                        OrderDetlPakout orderDetlPakout = orderDetlPakoutService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(),wrkDetl.getBrand(),wrkDetl.getStandby1(),wrkDetl.getStandby2(),wrkDetl.getStandby3(),
-                                wrkDetl.getBoxType1(),wrkDetl.getBoxType2(),wrkDetl.getBoxType3());
-                        if (orderDetlPakout==null){
-                            orderDetlPakout = orderDetlPakoutService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(),wrkDetl.getBrand(),wrkDetl.getStandby1(),wrkDetl.getStandby2(),wrkDetl.getStandby3(),
-                                    wrkDetl.getBoxType1(),wrkDetl.getBoxType2(),wrkDetl.getBoxType3());
+                        OrderDetlPakout orderDetlPakout = orderDetlPakoutService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(),
+                                wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3());
+                        if (orderDetlPakout == null) {
+                            orderDetlPakout = orderDetlPakoutService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(),
+                                    wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3());
                         }
                         try {
-                            if(!Cools.isEmpty(orderDetlPakout)){
-                                if(!orderDetlPakoutService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(),
-                                        orderDetlPakout.getBatch(),wrkDetl.getBrand(),wrkDetl.getStandby1(),wrkDetl.getStandby2(),wrkDetl.getStandby3(),
-                                        wrkDetl.getBoxType1(),wrkDetl.getBoxType2(),wrkDetl.getBoxType3(),wrkDetl.getAnfme())){
+                            if (!Cools.isEmpty(orderDetlPakout)) {
+                                if (!orderDetlPakoutService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(),
+                                        orderDetlPakout.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(),
+                                        wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3(), wrkDetl.getAnfme())) {
 //                                    exceptionHandle("鍏ㄦ澘鍑哄簱 ===>> 鏇存柊璁㈠崟瀹屾垚鏁伴噺澶辫触锛沎workNo={0}],[locNo={1}]",
 //                                            wrkMast.getWrkNo(), wrkMast.getLocNo());
                                     TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                                     return FAIL.setMsg("鍏ㄦ澘鍑哄簱 ===>> 鏇存柊璁㈠崟瀹屾垚鏁伴噺澶辫触; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getSourceLocNo() + "]");
                                 }
                             }
-                        } catch (Exception ignore){}
+                        } catch (Exception ignore) {
+                        }
                     }
                     // 鍒犻櫎宸ヤ綔妗f簮搴撲綅鐨勫簱瀛樻槑缁�
                     if (!locDetlService.delete(new EntityWrapper<LocDetl>().eq("loc_no", wrkMast.getSourceLocNo()))) {
@@ -492,28 +563,29 @@
                         return FAIL.setMsg("骞舵澘閫斾腑鎹℃枡 ===>> 宸ヤ綔鏄庣粏妗d负绌�; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getSourceLocNo() + "]");
                     }
                     for (WrkDetl wrkDetl : wrkDetls108) {
-                        LocDetl locDetl = locDetlService.selectItem(locMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(),wrkDetl.getBrand()
-                                ,wrkDetl.getStandby1(),wrkDetl.getStandby2(),wrkDetl.getStandby3(),wrkDetl.getBoxType1(),wrkDetl.getBoxType2(),wrkDetl.getBoxType3());
+                        LocDetl locDetl = locDetlService.selectItem(locMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand()
+                                , wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(), wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3());
                         if (null != locDetl) {
-                            if (!locDetlService.updateAnfme(locDetl.getAnfme() - wrkDetl.getAnfme(), locMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(),wrkDetl.getBrand(),wrkDetl.getStandby1(),wrkDetl.getStandby2(),wrkDetl.getStandby3()
-                                    ,wrkDetl.getBoxType1(),wrkDetl.getBoxType2(),wrkDetl.getBoxType3())) {
+                            if (!locDetlService.updateAnfme(locDetl.getAnfme() - wrkDetl.getAnfme(), locMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3()
+                                    , wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3())) {
                                 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                                 return FAIL.setMsg("骞舵澘閫斾腑鎹℃枡 ===>> 淇敼搴撳瓨鏄庣粏鏁伴噺澶辫触; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
                             }
                         }
                         // 鏇存柊璁㈠崟瀹屾垚鏁伴噺
-                        OrderDetlPakout orderDetlPakout = orderDetlPakoutService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(),wrkDetl.getBrand(),wrkDetl.getStandby1(),wrkDetl.getStandby2(),wrkDetl.getStandby3(),
-                                wrkDetl.getBoxType1(),wrkDetl.getBoxType2(),wrkDetl.getBoxType3());
+                        OrderDetlPakout orderDetlPakout = orderDetlPakoutService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(),
+                                wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3());
                         try {
-                            if(!Cools.isEmpty(orderDetlPakout)){
-                                if(!orderDetlPakoutService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(),
-                                        orderDetlPakout.getBatch(),wrkDetl.getBrand(),wrkDetl.getStandby1(),wrkDetl.getStandby2(),wrkDetl.getStandby3(),
-                                        wrkDetl.getBoxType1(),wrkDetl.getBoxType2(),wrkDetl.getBoxType3(),wrkDetl.getAnfme())){
+                            if (!Cools.isEmpty(orderDetlPakout)) {
+                                if (!orderDetlPakoutService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(),
+                                        orderDetlPakout.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(),
+                                        wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3(), wrkDetl.getAnfme())) {
                                     TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                                     return FAIL.setMsg("骞舵澘閫斾腑鎹℃枡 ===>> 鏇存柊璁㈠崟瀹屾垚鏁伴噺澶辫触; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getSourceLocNo() + "]");
                                 }
                             }
-                        } catch (Exception ignore){}
+                        } catch (Exception ignore) {
+                        }
                     }
                     break;
                 // 绌烘澘鍑哄簱
diff --git a/src/main/java/com/zy/asrs/utils/OrderInAndOutUtil.java b/src/main/java/com/zy/asrs/utils/OrderInAndOutUtil.java
index ee768a1..3e6b2d5 100644
--- a/src/main/java/com/zy/asrs/utils/OrderInAndOutUtil.java
+++ b/src/main/java/com/zy/asrs/utils/OrderInAndOutUtil.java
@@ -132,6 +132,8 @@
                     return casual.getDeclaredMethod(OrderMethodVo.INCREASE_QTY_BY_ORDER_NO.getCode(), String.class,String.class,String.class,String.class,String.class,String.class,String.class,String.class,String.class,String.class,Double.class);
                 case INCREASE_WORKING_QTY:
                     return casual.getDeclaredMethod(OrderMethodVo.INCREASE_WORKING_QTY.getCode(), Long.class,String.class,String.class,String.class,String.class,String.class,String.class,String.class,String.class,String.class,Double.class);
+                default:
+                    break;
             }
         } catch (Exception e) {
             throw new CoolException(e.getCause().getMessage());
diff --git a/src/main/java/com/zy/common/.DS_Store b/src/main/java/com/zy/common/.DS_Store
new file mode 100644
index 0000000..12db7cf
--- /dev/null
+++ b/src/main/java/com/zy/common/.DS_Store
Binary files differ
diff --git a/src/main/java/com/zy/common/CodeBuilder.java b/src/main/java/com/zy/common/CodeBuilder.java
index 15c4ff8..e83f56e 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=source";
+        generator.url="127.0.0.1:1433;databasename=jsxswms";
         generator.username="sa";
-        generator.password="sa@123";
-        generator.table="asr_app_version";
+        generator.password="Skyouc#23";
+        generator.table="agv_task_detl_log";
         generator.packagePath="com.zy.asrs";
         generator.build();
     }
diff --git a/src/main/java/com/zy/common/config/.DS_Store b/src/main/java/com/zy/common/config/.DS_Store
new file mode 100644
index 0000000..5008ddf
--- /dev/null
+++ b/src/main/java/com/zy/common/config/.DS_Store
Binary files differ
diff --git a/src/main/java/com/zy/common/config/WebConfig.java b/src/main/java/com/zy/common/config/WebConfig.java
index 11bb6b2..91f0c82 100644
--- a/src/main/java/com/zy/common/config/WebConfig.java
+++ b/src/main/java/com/zy/common/config/WebConfig.java
@@ -1,9 +1,23 @@
 package com.zy.common.config;
 
+import com.zy.common.constant.MesConstant;
+import com.zy.common.utils.Http;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.web.servlet.FilterRegistrationBean;
+import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
+import org.springframework.core.Ordered;
+import org.springframework.web.cors.CorsConfiguration;
+import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
+import org.springframework.web.filter.CorsFilter;
+import org.springframework.web.servlet.AsyncHandlerInterceptor;
+import org.springframework.web.servlet.config.annotation.CorsRegistry;
 import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
+import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
 import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
 
 /**
  * Created by vincent on 2019-06-13
@@ -18,7 +32,51 @@
     public void addInterceptors(InterceptorRegistry registry) {
         registry.addInterceptor(adminInterceptor)
                 .addPathPatterns("/**")
-                ;
+        ;
     }
 
+    @Override
+    public void addCorsMappings(CorsRegistry registry) {
+        registry.addMapping("/**")
+                .allowedOrigins("*") // 浣跨敤 allowedOriginPatterns 鑰屼笉鏄� allowedOrigins
+                .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS")
+                .allowedHeaders("*")
+                .allowCredentials(true)
+                .maxAge(3600);
+    }
+
+    /**
+     * 鏂瑰紡浜岋細浣跨敤 Filter锛堟洿鍏ㄩ潰锛屼紭鍏堢骇鏇撮珮锛�
+     */
+    @Bean
+    public FilterRegistrationBean<CorsFilter> corsFilter() {
+        CorsConfiguration config = new CorsConfiguration();
+
+        // 鍏佽鎵�鏈夊煙鍚�
+        config.addAllowedOrigin("*");
+
+        // 鍏佽浠讳綍澶�
+        config.addAllowedHeader("*");
+
+        // 鍏佽浠讳綍鏂规硶锛圙ET, POST, PUT, DELETE, OPTIONS绛夛級
+        config.addAllowedMethod("*");
+
+        // 鍏佽鍑瘉锛堝鏋滈渶瑕乧ookie绛夊嚟璇侊紝璁剧疆涓簍rue锛屼絾闇�瑕佹寚瀹氬叿浣撳煙鍚嶏級
+        config.setAllowCredentials(false);
+
+        // 棰勬璇锋眰鐨勬湁鏁堟湡锛屽崟浣嶄负绉�
+        config.setMaxAge(3600L);
+
+        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
+        source.registerCorsConfiguration("/**", config);
+
+        FilterRegistrationBean<CorsFilter> bean = new FilterRegistrationBean<>(new CorsFilter(source));
+
+        // 璁剧疆浼樺厛绾ф渶楂�
+        bean.setOrder(Ordered.HIGHEST_PRECEDENCE);
+
+        return bean;
+    }
+
+
 }
diff --git a/src/main/java/com/zy/common/constant/MesConstant.java b/src/main/java/com/zy/common/constant/MesConstant.java
index eb34e04..0fc2f46 100644
--- a/src/main/java/com/zy/common/constant/MesConstant.java
+++ b/src/main/java/com/zy/common/constant/MesConstant.java
@@ -13,4 +13,15 @@
 
     public static final String PAKOUT_URL = "wmsFinprd/api/zy/v1/packOut/sendList";
 
+
+    /**
+     * token閫氳繃header浼犻�掔殑鍚嶇О
+     */
+    public static final String TOKEN_HEADER_NAME = "Authorization";
+
+    /**
+     * token閫氳繃鍙傛暟浼犻�掔殑鍚嶇О
+     */
+    public static final String TOKEN_PARAM_NAME = "access_token";
+
 }
diff --git a/src/main/java/com/zy/common/utils/Http.java b/src/main/java/com/zy/common/utils/Http.java
index b0f9672..fc8dc1b 100644
--- a/src/main/java/com/zy/common/utils/Http.java
+++ b/src/main/java/com/zy/common/utils/Http.java
@@ -4,6 +4,7 @@
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.core.common.R;
+import com.zy.common.constant.MesConstant;
 
 import javax.servlet.http.HttpServletResponse;
 import java.io.PrintWriter;
@@ -28,4 +29,15 @@
             e.printStackTrace();
         }
     }
+
+
+    public static void cors(HttpServletResponse response){
+        // 璺ㄥ煙璁剧疆
+        response.setHeader("Access-Control-Max-Age", "3600");
+        response.setHeader("Access-Control-Allow-Origin", "*");
+        response.setHeader("Access-Control-Allow-Methods", "*");
+        response.setHeader("Access-Control-Allow-Headers", "*");
+        response.setHeader("Access-Control-Expose-Headers", MesConstant.TOKEN_HEADER_NAME);
+    }
+
 }
diff --git a/src/main/java/com/zy/common/web/AuthController.java b/src/main/java/com/zy/common/web/AuthController.java
index 01906c1..32e4d76 100644
--- a/src/main/java/com/zy/common/web/AuthController.java
+++ b/src/main/java/com/zy/common/web/AuthController.java
@@ -50,32 +50,32 @@
     @Autowired
     private LicenseTimer licenseTimer;
 
-    @RequestMapping("/login.action")
+    @PostMapping("/login.action")
     @ManagerAuth(value = ManagerAuth.Auth.NONE, memo = "鐧诲綍")
-    public R loginAction(String username, String password){
+    public R loginAction(@RequestBody Map<String, String> param) {
         //楠岃瘉璁稿彲璇佹槸鍚︽湁鏁�
-        if (!licenseTimer.getSystemSupport()){
+        if (!licenseTimer.getSystemSupport()) {
             return R.parse(CodeRes.SYSTEM_20001);
         }
         EntityWrapper<User> userWrapper = new EntityWrapper<>();
-        userWrapper.eq("username", username);
+        userWrapper.eq("username", param.get("username"));
         User user = userService.selectOne(userWrapper);
-        if (Cools.isEmpty(user)){
-            if (username.equals("super") && password.equals(Cools.md5(superPwd))) {
+        if (Cools.isEmpty(user)) {
+            if (param.get("username").equals("super") && param.get("password").equals(Cools.md5(superPwd))) {
                 Map<String, Object> res = new HashMap<>();
-                res.put("username", username);
-                res.put("token", Cools.enToken(System.currentTimeMillis() + username, superPwd));
+                res.put("username", param.get("username"));
+                res.put("token", Cools.enToken(System.currentTimeMillis() + param.get("username"), superPwd));
                 return R.ok(res);
             }
             return R.parse(CodeRes.USER_10001);
         }
-        if (user.getStatus()!=1){
+        if (user.getStatus() != 1) {
             return R.parse(CodeRes.USER_10002);
         }
-        if (!user.getPassword().equals(password)){
+        if (!user.getPassword().equals(param.get("password"))) {
             return R.parse(CodeRes.USER_10003);
         }
-        String token = Cools.enToken(System.currentTimeMillis() + username, user.getPassword());
+        String token = Cools.enToken(System.currentTimeMillis() + param.get("username"), user.getPassword());
         userLoginService.delete(new EntityWrapper<UserLogin>().eq("user_id", user.getId()));
         UserLogin userLogin = new UserLogin();
         userLogin.setUserId(user.getId());
@@ -105,7 +105,7 @@
         int time = 0;
         while (time < 3000) {
             code = RandomValidateCodeUtil.code.get(sd);
-            if (!Cools.isEmpty(code)){
+            if (!Cools.isEmpty(code)) {
                 break;
             } else {
                 Thread.sleep(10);
@@ -118,13 +118,13 @@
 
     @RequestMapping("/user/detail/auth")
     @ManagerAuth
-    public R userDetail(){
+    public R userDetail() {
         return R.ok(userService.selectById(getUserId()));
     }
 
     @RequestMapping("/menu/auth")
     @ManagerAuth
-    public R menu(){
+    public R menu() {
         // 鑾峰彇鎵�鏈変竴绾ц彍鍗�
         List<Resource> oneLevel;
         User user = null;
@@ -143,7 +143,7 @@
             List<RoleResource> roleResources = roleResourceService.selectList(new EntityWrapper<RoleResource>().eq("role_id", user.getRoleId()));
             List<Long> resourceIds = new ArrayList<>();
             roleResources.forEach(roleResource -> resourceIds.add(roleResource.getResourceId()));
-            if (resourceIds.isEmpty()){
+            if (resourceIds.isEmpty()) {
                 return R.ok();
             }
             resourceWrapper = new EntityWrapper<Resource>().in("id", resourceIds).eq("level", 2).eq("status", 1).orderBy("sort");
@@ -161,11 +161,11 @@
                     // 鏄惁鎷ユ湁鏌ョ湅鏉冮檺
                     if (getUserId() != 9527) {
                         Resource view = resourceService.selectOne(new EntityWrapper<Resource>().eq("resource_id", resource.getId()).like("code", "#view"));
-                        if (!Cools.isEmpty(view)){
+                        if (!Cools.isEmpty(view)) {
                             RoleResource param = new RoleResource();
                             param.setResourceId(view.getId());
                             param.setRoleId(user.getRoleId());
-                            if (null == roleResourceService.selectOne(new EntityWrapper<>(param))){
+                            if (null == roleResourceService.selectOne(new EntityWrapper<>(param))) {
                                 continue;
                             }
                         }
@@ -190,11 +190,11 @@
 
     @RequestMapping("/power/list/auth")
     @ManagerAuth
-    public R powerList(){
+    public R powerList() {
         List<Resource> oneLevels = resourceService.selectList(new EntityWrapper<Resource>().eq("level", 1).eq("status", 1).orderBy("sort"));
         List<Map> result = new ArrayList<>();
         // 涓�绾�
-        for (Resource oneLevel : oneLevels){
+        for (Resource oneLevel : oneLevels) {
             List<Map> twoLevelsList = new ArrayList<>();
             Map<String, Object> oneLevelMap = new HashMap<>();
             oneLevelMap.put("title", oneLevel.getName());
@@ -203,7 +203,7 @@
             oneLevelMap.put("children", twoLevelsList);
             List<Resource> twoLevels = resourceService.selectList(new EntityWrapper<Resource>().eq("resource_id", oneLevel.getId()).eq("level", 2).eq("status", 1).orderBy("sort"));
             // 浜岀骇
-            for (Resource twoLevel : twoLevels){
+            for (Resource twoLevel : twoLevels) {
                 Map<String, Object> twoLevelMap = new HashMap<>();
                 twoLevelMap.put("title", twoLevel.getName());
                 twoLevelMap.put("id", twoLevel.getId());
@@ -213,7 +213,7 @@
                 twoLevelMap.put("children", threeLevelsList);
                 // 涓夌骇
                 List<Resource> threeLevels = resourceService.selectList(new EntityWrapper<Resource>().eq("resource_id", twoLevel.getId()).eq("level", 3).eq("status", 1).orderBy("sort"));
-                for (Resource threeLevel : threeLevels){
+                for (Resource threeLevel : threeLevels) {
                     Map<String, Object> threeLevelMap = new HashMap<>();
                     threeLevelMap.put("title", threeLevel.getName());
                     threeLevelMap.put("id", threeLevel.getId());
@@ -252,19 +252,19 @@
         List<Object> result = new ArrayList<>();
         // 鑿滃崟
         List<RoleResource> roleResources = roleResourceService.selectList(new EntityWrapper<RoleResource>().eq("role_id", roleId));
-        for (RoleResource roleResource : roleResources){
+        for (RoleResource roleResource : roleResources) {
             Resource resource = resourceService.selectById(roleResource.getResourceId());
-            if (!Cools.isEmpty(resource)){
-                if (resource.getLevel() == 3){
+            if (!Cools.isEmpty(resource)) {
+                if (resource.getLevel() == 3) {
                     result.add(resource.getId());
                 }
             }
         }
         // 鍔熻兘
         List<RolePermission> rolePermissions = rolePermissionService.selectList(new EntityWrapper<RolePermission>().eq("role_id", roleId));
-        for (RolePermission rolePermission : rolePermissions){
+        for (RolePermission rolePermission : rolePermissions) {
             Permission permission = permissionService.selectById(rolePermission.getPermissionId());
-            if (!Cools.isEmpty(permission)){
+            if (!Cools.isEmpty(permission)) {
                 result.add(permission.getAction());
             }
         }
@@ -274,12 +274,12 @@
     @RequestMapping("/power/auth")
     @ManagerAuth(memo = "鎺堟潈")
     @Transactional
-    public R power(Long roleId, String powers){
+    public R power(Long roleId, String powers) {
         Role role = roleService.selectById(roleId);
         Long leaderId = role.getLeader();
         roleResourceService.delete(new EntityWrapper<RoleResource>().eq("role_id", roleId));
         rolePermissionService.delete(new EntityWrapper<RolePermission>().eq("role_id", roleId));
-        if (!Cools.isEmpty(powers)){
+        if (!Cools.isEmpty(powers)) {
             List<PowerDto> dtos = JSON.parseArray(powers, PowerDto.class);
             for (PowerDto dto : dtos) {
                 Resource resource = resourceService.selectOne(new EntityWrapper<Resource>().eq("id", dto.getTwo()).eq("level", 2));
@@ -297,14 +297,14 @@
                     roleResourceService.insert(roleResource);
                 } else {
                     Permission permission = permissionService.selectOne(new EntityWrapper<Permission>().eq("action", dto.getTwo()));
-                    if (!Cools.isEmpty(permission)){
+                    if (!Cools.isEmpty(permission)) {
                         RolePermission rolePermission = new RolePermission();
                         rolePermission.setRoleId(roleId);
                         rolePermission.setPermissionId(permission.getId());
                         rolePermissionService.insert(rolePermission);
                     }
                 }
-                for (String three : dto.getThree()){
+                for (String three : dto.getThree()) {
                     Resource resource1 = resourceService.selectOne(new EntityWrapper<Resource>().eq("id", three).eq("level", 3));
                     if (!Cools.isEmpty(resource1)) {
                         // 鏍¢獙涓婄骇鏉冮檺
@@ -381,7 +381,7 @@
             return R.error("婵�娲诲け璐�");
         }
         SystemProperties.SYSTEM_ACTIVATION = Boolean.TRUE;
-        return R.ok("婵�娲绘垚鍔燂紝鏈夋晥鏈熻嚦"+DateUtils.convert(exprTime));
+        return R.ok("婵�娲绘垚鍔燂紝鏈夋晥鏈熻嚦" + DateUtils.convert(exprTime));
     }
 
 }
diff --git a/src/main/java/com/zy/common/web/WcsController.java b/src/main/java/com/zy/common/web/WcsController.java
index fd48d94..c0c677f 100644
--- a/src/main/java/com/zy/common/web/WcsController.java
+++ b/src/main/java/com/zy/common/web/WcsController.java
@@ -124,8 +124,8 @@
         wrkMast.setIoPri(13D);
         wrkMast.setIoType(10);
         wrkMast.setCrnNo(dto.getCrnNo());
-        wrkMast.setSourceStaNo(dto.getSourceStaNo());
-        wrkMast.setStaNo(dto.getStaNo());
+        wrkMast.setSourceStaNo(dto.getSourceStaNo() + "");
+        wrkMast.setStaNo(dto.getStaNo() + "");
         wrkMast.setLocNo(dto.getLocNo());
         wrkMast.setFullPlt("N"); // 婊℃澘锛歂
         wrkMast.setPicking("N"); // 鎷f枡
@@ -178,8 +178,8 @@
         wrkMast.setIoType(1); // 鍏ュ嚭搴撶姸鎬侊細1.鍏ュ簱
         wrkMast.setIoPri(13D); // 浼樺厛绾�
         wrkMast.setCrnNo(dto.getCrnNo());
-        wrkMast.setSourceStaNo(dto.getSourceStaNo());
-        wrkMast.setStaNo(dto.getStaNo());
+        wrkMast.setSourceStaNo(dto.getSourceStaNo() + "");
+        wrkMast.setStaNo(dto.getStaNo() + "");
         wrkMast.setLocNo(dto.getLocNo());
         wrkMast.setBarcode(barcode); // 鎵樼洏鐮�
         wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
@@ -254,8 +254,8 @@
         wrkMast.setIoType(10); // 鍏ュ嚭搴撶姸鎬侊細10.绌烘澘鍏ュ簱
         wrkMast.setIoPri(13D); // 浼樺厛绾�
         wrkMast.setCrnNo(dto.getCrnNo());
-        wrkMast.setSourceStaNo(dto.getSourceStaNo());
-        wrkMast.setStaNo(dto.getStaNo());
+        wrkMast.setSourceStaNo(dto.getSourceStaNo() + "");
+        wrkMast.setStaNo(dto.getStaNo() + "");
         wrkMast.setLocNo(dto.getLocNo());
         wrkMast.setFullPlt("N"); // 婊℃澘
         wrkMast.setPicking("N"); // 鎷f枡
diff --git a/src/main/java/locCache.sql b/src/main/java/locCache.sql
new file mode 100644
index 0000000..ccc54fe
--- /dev/null
+++ b/src/main/java/locCache.sql
@@ -0,0 +1,18 @@
+-- save locCache record
+-- mysql
+insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'locCache/locCache.html', '缂撳瓨搴撳尯', null , '2', null , '1');
+
+insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'locCache#view', '鏌ヨ', '', '3', '0', '1');
+insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'locCache#btn-add', '鏂板', '', '3', '1', '1');
+insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'locCache#btn-edit', '缂栬緫', '', '3', '2', '1');
+insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'locCache#btn-delete', '鍒犻櫎', '', '3', '3', '1');
+insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'locCache#btn-export', '瀵煎嚭', '', '3', '4', '1');
+
+-- sqlserver
+insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'locCache/locCache.html', N'缂撳瓨搴撳尯', null, '2', null, '1');
+
+insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'locCache#view', N'鏌ヨ', '90594', '3', '0', '1');
+insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'locCache#btn-add', N'鏂板', '90594', '3', '1', '1');
+insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'locCache#btn-edit', N'缂栬緫', '90594', '3', '2', '1');
+insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'locCache#btn-delete', N'鍒犻櫎', '90594', '3', '3', '1');
+insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'locCache#btn-export', N'瀵煎嚭', '90594', '3', '4', '1');
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index d660d98..41d1786 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -1,5 +1,5 @@
 server:
-  port: 8081
+  port: 8080
   servlet:
     context-path: /@pom.build.finalName@
 
@@ -24,7 +24,8 @@
 #    password: sa@123
 #    url: jdbc:sqlserver://127.0.0.1:62316;databasename=source
     username: sa
-    password: sa@123
+    password: Skyouc#23
+    url: jdbc:sqlserver://127.0.0.1:1433;databasename=jsxswms
   mvc:
     static-path-pattern: /**
   redis:
@@ -39,9 +40,17 @@
 
 mybatis-plus:
   mapper-locations: classpath:mapper/*.xml
+  #  global-config:
+  #    field-strategy: 0
+  configuration:
+    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+    map-underscore-to-camel-case: true
+    cache-enabled: true
+    call-setters-on-nulls: true
 
 logging:
-  path: /stock/out/@pom.build.finalName@/logs
+  file:
+    path: /stock/out/@pom.build.finalName@/logs
 
 super:
   pwd: asrs2023
diff --git a/src/main/resources/mapper/BasAreasMapper.xml b/src/main/resources/mapper/BasAreasMapper.xml
new file mode 100644
index 0000000..6846b8c
--- /dev/null
+++ b/src/main/resources/mapper/BasAreasMapper.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.zy.asrs.mapper.BasAreasMapper">
+
+    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+    <resultMap id="BaseResultMap" type="com.zy.asrs.entity.BasAreas">
+        <result column="id" property="id" />
+        <result column="whs_id" property="whsId" />
+        <result column="whs_name" property="whsName" />
+        <result column="name" property="name" />
+        <result column="whs_type_id" property="whsTypeId" />
+        <result column="area_no" property="areaNo" />
+        <result column="create_time" property="createTime" />
+        <result column="update_time" property="updateTime" />
+        <result column="create_by" property="createBy" />
+        <result column="update_by" property="updateBy" />
+
+    </resultMap>
+
+</mapper>
diff --git a/src/main/resources/mapper/BasStationMapper.xml b/src/main/resources/mapper/BasStationMapper.xml
new file mode 100644
index 0000000..ebe9c1e
--- /dev/null
+++ b/src/main/resources/mapper/BasStationMapper.xml
@@ -0,0 +1,44 @@
+<?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" 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" />
+
+    </resultMap>
+
+</mapper>
diff --git a/src/main/resources/mapper/BasWhsMapper.xml b/src/main/resources/mapper/BasWhsMapper.xml
index 2017ad2..75cfecc 100644
--- a/src/main/resources/mapper/BasWhsMapper.xml
+++ b/src/main/resources/mapper/BasWhsMapper.xml
@@ -3,7 +3,7 @@
 <mapper namespace="com.zy.asrs.mapper.BasWhsMapper">
 
     <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
-    <resultMap id="BaseResultMap" type="com.zy.asrs.entity.BasWhs">
+    <resultMap id="BaseResultMap" type="com.zy.asrs.entity.BasWhsType">
         <id column="id" property="id" />
         <result column="whs_desc" property="whsDesc" />
         <result column="modi_user" property="modiUser" />
@@ -16,7 +16,7 @@
 
     <select id="selectByIdentifying" resultMap="BaseResultMap">
         select top 1 *
-        from asr_bas_whs
+        from asr_bas_whs_type
         where 1=1
         and identifying = #{identifying}
     </select>
diff --git a/src/main/resources/mapper/LocCacheMapper.xml b/src/main/resources/mapper/LocCacheMapper.xml
new file mode 100644
index 0000000..8755c04
--- /dev/null
+++ b/src/main/resources/mapper/LocCacheMapper.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.zy.asrs.mapper.LocCacheMapper">
+
+    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+    <resultMap id="BaseResultMap" type="com.zy.asrs.entity.LocCache">
+        <result column="loc_no" property="locNo" />
+        <result column="whs_type" property="whsType" />
+        <result column="loc_sts" property="locSts" />
+        <result column="row1" property="row1" />
+        <result column="bay1" property="bay1" />
+        <result column="lev1" property="lev1" />
+        <result column="full_plt" property="fullPlt" />
+        <result column="loc_type" property="locType" />
+        <result column="loc_type1" property="locType1" />
+        <result column="loc_type2" property="locType2" />
+        <result column="loc_type3" property="locType3" />
+        <result column="out_enable" property="outEnable" />
+        <result column="io_time" property="ioTime" />
+        <result column="first_time" property="firstTime" />
+        <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="barcode" property="barcode" />
+        <result column="frozen" property="frozen" />
+        <result column="frozen_memo" property="frozenMemo" />
+
+    </resultMap>
+
+</mapper>
diff --git a/src/main/resources/mapper/TaskDetlLogMapper.xml b/src/main/resources/mapper/TaskDetlLogMapper.xml
new file mode 100644
index 0000000..05692ae
--- /dev/null
+++ b/src/main/resources/mapper/TaskDetlLogMapper.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.TaskDetlLogMapper">
+
+    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+    <resultMap id="BaseResultMap" type="com.zy.asrs.entity.TaskDetlLog">
+        <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/TaskDetlMapper.xml b/src/main/resources/mapper/TaskDetlMapper.xml
new file mode 100644
index 0000000..0754c45
--- /dev/null
+++ b/src/main/resources/mapper/TaskDetlMapper.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.TaskDetlMapper">
+
+    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+    <resultMap id="BaseResultMap" type="com.zy.asrs.entity.TaskDetl">
+        <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/TaskLogMapper.xml b/src/main/resources/mapper/TaskLogMapper.xml
new file mode 100644
index 0000000..e81c7ba
--- /dev/null
+++ b/src/main/resources/mapper/TaskLogMapper.xml
@@ -0,0 +1,70 @@
+<?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.TaskLogMapper">
+
+    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+    <resultMap id="BaseResultMap" type="com.zy.asrs.entity.TaskLog">
+        <result column="id" property="id" />
+        <result column="wrk_no" property="wrkNo" />
+        <result column="log_id" property="logId" />
+        <result column="inv_wh" property="invWh" />
+        <result column="ymd" property="ymd" />
+        <result column="mk" property="mk" />
+        <result column="whs_type" property="whsType" />
+        <result column="wrk_sts" property="wrkSts" />
+        <result column="io_type" property="ioType" />
+        <result column="crn_no" property="crnNo" />
+        <result column="sheet_no" property="sheetNo" />
+        <result column="io_pri" property="ioPri" />
+        <result column="wrk_date" property="wrkDate" />
+        <result column="loc_no" property="locNo" />
+        <result column="sta_no" property="staNo" />
+        <result column="source_sta_no" property="sourceStaNo" />
+        <result column="source_loc_no" property="sourceLocNo" />
+        <result column="loc_sts" property="locSts" />
+        <result column="picking" property="picking" />
+        <result column="link_mis" property="linkMis" />
+        <result column="online_yn" property="onlineYn" />
+        <result column="upd_mk" property="updMk" />
+        <result column="exit_mk" property="exitMk" />
+        <result column="plt_type" property="pltType" />
+        <result column="empty_mk" property="emptyMk" />
+        <result column="io_time" property="ioTime" />
+        <result column="ctn_type" property="ctnType" />
+        <result column="packed" property="packed" />
+        <result column="ove_mk" property="oveMk" />
+        <result column="mtn_type" property="mtnType" />
+        <result column="user_no" property="userNo" />
+        <result column="crn_str_time" property="crnStrTime" />
+        <result column="crn_end_time" property="crnEndTime" />
+        <result column="plc_str_time" property="plcStrTime" />
+        <result column="crn_pos_time" property="crnPosTime" />
+        <result column="load_time" property="loadTime" />
+        <result column="exp_time" property="expTime" />
+        <result column="ref_wrkno" property="refWrkno" />
+        <result column="ref_iotime" property="refIotime" />
+        <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="pause_mk" property="pauseMk" />
+        <result column="error_time" property="errorTime" />
+        <result column="error_memo" property="errorMemo" />
+        <result column="ctn_kind" property="ctnKind" />
+        <result column="manu_type" property="manuType" />
+        <result column="memo_m" property="memoM" />
+        <result column="sc_weight" property="scWeight" />
+        <result column="log_mk" property="logMk" />
+        <result column="log_err_time" property="logErrTime" />
+        <result column="log_err_memo" property="logErrMemo" />
+        <result column="barcode" property="barcode" />
+        <result column="Pdc_type" property="PdcType" />
+        <result column="ctn_no" property="ctnNo" />
+        <result column="full_plt" property="fullPlt" />
+        <result column="pre_have" property="preHave" />
+        <result column="take_none" property="takeNone" />
+        <result column="line_number" property="lineNumber" />
+
+    </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/basAreas/basAreas.js b/src/main/webapp/static/js/basAreas/basAreas.js
new file mode 100644
index 0000000..d1e8752
--- /dev/null
+++ b/src/main/webapp/static/js/basAreas/basAreas.js
@@ -0,0 +1,264 @@
+var pageCurr;
+layui.config({
+    base: baseUrl + "/static/layui/lay/modules/"
+}).use(['table','laydate', 'form', 'admin'], function(){
+    var table = layui.table;
+    var $ = layui.jquery;
+    var layer = layui.layer;
+    var layDate = layui.laydate;
+    var form = layui.form;
+    var admin = layui.admin;
+
+    // 鏁版嵁娓叉煋
+    tableIns = table.render({
+        elem: '#basAreas',
+        headers: {token: localStorage.getItem('token')},
+        url: baseUrl+'/basAreas/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: 'whsId', align: 'center',title: '浠撳簱ID'}
+            ,{field: 'whsName', align: 'center',title: '浠撳簱鍚嶇О'}
+            ,{field: 'name', align: 'center',title: '搴撳尯鍚嶇О'}
+            ,{field: 'whsTypeId$', align: 'center',title: '浠撳簱绫诲瀷'}
+            ,{field: 'areaNo', align: 'center',title: '搴撳尯缂栫爜'}
+            ,{field: 'createTime$', align: 'center',title: '鍒涘缓鏃堕棿'}
+            ,{field: 'updateTime$', align: 'center',title: '淇敼鏃堕棿'}
+            ,{field: 'createBy', align: 'center',title: '鍒涘缓浜哄憳'}
+            ,{field: 'updateBy', 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(basAreas)', 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(basAreas)', 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 = {
+                        'basAreas': exportData,
+                        'fields': fields
+                    };
+                    $.ajax({
+                        url: baseUrl+"/basAreas/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(basAreas)', 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+"/basAreas/"+(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+"/basAreas/delete/auth",
+                headers: {'token': localStorage.getItem('token')},
+                data: {ids: ids},
+                method: 'POST',
+                success: function (res) {
+                    layer.close(loadIndex);
+                    if (res.code === 200){
+                        layer.msg(res.msg, {icon: 1});
+                        tableReload();
+                    } else if (res.code === 403){
+                        top.location.href = baseUrl+"/";
+                    } else {
+                        layer.msg(res.msg, {icon: 2});
+                    }
+                }
+            })
+        });
+    }
+
+    // 鎼滅储
+    form.on('submit(search)', function (data) {
+        pageCurr = 1;
+        tableReload(false);
+    });
+
+    // 閲嶇疆
+    form.on('submit(reset)', function (data) {
+        pageCurr = 1;
+        clearFormVal($('#search-box'));
+        tableReload(false);
+    });
+
+    // 鏃堕棿閫夋嫨鍣�
+    function layDateRender(data) {
+        setTimeout(function () {
+            layDate.render({
+                elem: '.layui-laydate-range'
+                ,type: 'datetime'
+                ,range: true
+            });
+            layDate.render({
+                elem: '#createTime\\$',
+                type: 'datetime',
+                value: data!==undefined?data['createTime\\$']:null
+            });
+            layDate.render({
+                elem: '#updateTime\\$',
+                type: 'datetime',
+                value: data!==undefined?data['updateTime\\$']:null
+            });
+
+        }, 300);
+    }
+    layDateRender();
+
+});
+
+// 鍏抽棴鍔ㄤ綔
+$(document).on('click','#data-detail-close', function () {
+    parent.layer.closeAll();
+});
+
+function tableReload(child) {
+    var searchData = {};
+    $.each($('#search-box [name]').serializeArray(), function() {
+        searchData[this.name] = this.value;
+    });
+    tableIns.reload({
+        where: searchData,
+        page: {curr: pageCurr}
+     });
+}
diff --git a/src/main/webapp/static/js/basStation/basStation.js b/src/main/webapp/static/js/basStation/basStation.js
new file mode 100644
index 0000000..f3f84cf
--- /dev/null
+++ b/src/main/webapp/static/js/basStation/basStation.js
@@ -0,0 +1,293 @@
+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: '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: '閲嶉噺'}
+
+            ,{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/common.js b/src/main/webapp/static/js/common.js
index 90a240f..a6cda0d 100644
--- a/src/main/webapp/static/js/common.js
+++ b/src/main/webapp/static/js/common.js
@@ -103,7 +103,6 @@
 // http璇锋眰
 !function (n) {
     "use strict";
-
     var http = {
         toAjax: function (params) {
             $.ajax(params);
@@ -219,6 +218,28 @@
     ,{field: 'updateBy$', align: 'center',title: '淇敼浜哄憳', hide: true}
     ,{field: 'updateTime$', align: 'center',title: '淇敼鏃堕棿', hide: true}
     ,{field: 'memo', align: 'center',title: '澶囨敞', hide: true}
+
+]
+
+var cacheCols = [
+    {field: 'matnr', align: 'center',title: '鍟嗗搧缂栧彿锛堝搧鍙凤級', sort:true}
+    ,{field: 'maktx', align: 'center',title: '鍟嗗搧鍚嶇О锛堝搧鍚嶏級', sort:true}
+    ,{field: 'batch', align: 'center',title: '璐у搧鐗瑰緛', sort:true}
+    ,{field: 'anfme', align: 'center',title: '鏁伴噺', hide: false}
+    ,{field: 'specs', align: 'center',title: '瑙勬牸', hide: false}
+    ,{field: 'model', align: 'center',title: '浠g爜', hide: true}
+    ,{field: 'color', align: 'center',title: '棰滆壊', hide: true}
+    ,{field: 'brand', align: 'center',title: '鍝佺墝', hide: true}
+    ,{field: 'unit', align: 'center',title: '鍗曚綅', hide: false}
+    ,{field: 'frozen$', align: 'center',title: '鍐荤粨鍚�',hide: true,
+        templet: function(d) {
+            // 鏍规嵁鏉′欢鍒ゆ柇瀛椾綋棰滆壊
+            if (d.frozen$ === '宸插喕缁�') {
+                return '<span style="color: #34a8de;">' +d.frozen$ + '</span>';
+            } else {
+                return '<span">' +d.frozen$ + '</span>';
+            }
+        }}
 ]
 
 var detlCols = [
diff --git a/src/main/webapp/static/js/cool.js b/src/main/webapp/static/js/cool.js
index d817c09..f9ac8cc 100644
--- a/src/main/webapp/static/js/cool.js
+++ b/src/main/webapp/static/js/cool.js
@@ -1,9 +1,9 @@
 /**
  * 鎼滅储鑷姩琛ュ叏 -- 灞�澶栫偣鍑婚殣钘�
  */
-$(function(){
-    $(document).on("click",function(e){
-        if(!$(e.target).parents(".cool-auto-complete").length){
+$(function () {
+    $(document).on("click", function (e) {
+        if (!$(e.target).parents(".cool-auto-complete").length) {
             $(".cool-auto-complete-window").hide();
         }
     });
@@ -16,12 +16,12 @@
 function autoShow(id) {
     var cac = document.getElementById(id).parentNode;
     var cacw = cac.getElementsByClassName("cool-auto-complete-window")[0];
-    if (cacw.style.display === "none" || cacw.style.display === ""){
+    if (cacw.style.display === "none" || cacw.style.display === "") {
         cacw.style.display = "block";
         var cacwi = cacw.getElementsByClassName("cool-auto-complete-window-input")[0];
         cacwi.focus();
         autoLoad(cacwi.getAttribute('data-key'));
-    }else {
+    } else {
         cacw.style.display = "none";
     }
 }
@@ -30,30 +30,30 @@
  * 鎼滅储鑷姩琛ュ叏 -- input
  */
 function autoLoad(val) {
-    var inputDomVal = document.querySelector("input[data-key="+val+"]").value;
-    var selectDom = document.querySelector("select[data-key="+val+"Select]");
+    var inputDomVal = document.querySelector("input[data-key=" + val + "]").value;
+    var selectDom = document.querySelector("select[data-key=" + val + "Select]");
     selectDom.length = 0;
     var defaultOption = new Option("鍙栨秷閫夋嫨", "");
     defaultOption.title = "";
     selectDom.appendChild(defaultOption);
-    selectDom.style.display='none';
+    selectDom.style.display = 'none';
     $.ajax({
-        url: baseUrl+"/"+getForeignKeyQuery(val)+"/auth",
+        url: baseUrl + "/" + getForeignKeyQuery(val) + "/auth",
         headers: {'token': localStorage.getItem('token')},
         data: {condition: inputDomVal},
         method: 'POST',
-        traditional:true,
+        traditional: true,
         success: function (res) {
-            if (res.code === 200){
+            if (res.code === 200) {
                 var list = res.data;
-                for (var i=0;i<list.length;i++){
+                for (var i = 0; i < list.length; i++) {
                     var option = new Option(list[i].value, i);
                     option.title = list[i].id;
-                    selectDom.options[i+1] = option;
+                    selectDom.options[i + 1] = option;
                 }
-                selectDom.style.display='block';
-            } else if (res.code === 403){
-                top.location.href = baseUrl+"/";
+                selectDom.style.display = 'block';
+            } else if (res.code === 403) {
+                top.location.href = baseUrl + "/";
             } else {
                 layer.msg(res.msg)
             }
@@ -64,13 +64,13 @@
 /**
  * 鎼滅储鑷姩琛ュ叏 -- select
  */
-function confirmed(val){
-    var inputDom = $("input[data-key="+val.substring(0,val.length - 6)+"]");
-    var selectDom = $("select[data-key="+val+"]");
-
-    selectDom.dblclick(function(){
+function confirmed(val) {
+    var inputDom = $("input[data-key=" + val.substring(0, val.length - 6) + "]");
+    var selectDom = $("select[data-key=" + val + "]");
+    console.log(val.substring(0, val.length - 6))
+    selectDom.dblclick(function () {
         inputDom.focus();
-        selectDom.css("display","none");
+        selectDom.css("display", "none");
     });
 
     // 淇グ瀛楁
@@ -81,7 +81,7 @@
     // id瀛楁
     var selectOptionDom = selectDom.find("option:selected");
     var html = selectOptionDom.html();
-    if (html === "鍙栨秷閫夋嫨"){
+    if (html === "鍙栨秷閫夋嫨") {
         cacd.val("");
         realDom.val("");
     } else {
@@ -92,7 +92,7 @@
 }
 
 function reviewImg(src) {
-    window.open().document.write("<img src="+src+" />");
+    window.open().document.write("<img src=" + src + " />");
 }
 
 /**
@@ -100,9 +100,10 @@
  */
 function getForeignKeyQuery(str) {
     var index = str.indexOf('By');
-    if (index !== -1){
+    if (index !== -1) {
         return str.substring(0, index);
     }
+
     return str;
 }
 
@@ -116,36 +117,37 @@
 
 var banMsg;
 var tips;
+
 // 涓婚敭鏍¢獙
 function check(id, domain) {
     var param = {
         key: id,
-        val: $('#'+id).val()
+        val: $('#' + id).val()
     };
     $.ajax({
-        url: baseUrl+"/"+domain+"/check/column/auth",
+        url: baseUrl + "/" + domain + "/check/column/auth",
         headers: {'token': localStorage.getItem('token')},
         data: JSON.stringify(param),
-        dataType:'json',
-        contentType:'application/json;charset=UTF-8',
+        dataType: 'json',
+        contentType: 'application/json;charset=UTF-8',
         method: 'POST',
         success: function (res) {
             if (res.code === 200) {
                 layer.close(tips);
                 banMsg = null;
             } else if (res.code === 403) {
-                top.location.href = baseUrl+"/";
+                top.location.href = baseUrl + "/";
             } else if (res.code === 407) {
                 banMsg = res.data + "涓嶅彲鐢�";
                 tips = layer.tips(
                     "<span style='color:red;'>宸插瓨鍦�</span>",
-                    '#'+id,
+                    '#' + id,
                     {
                         // tipsMore: true,
-                        tips: [2,'#fff'],
-                        time:0
-                        ,area: 'auto'
-                        ,maxWidth:500
+                        tips: [2, '#fff'],
+                        time: 0
+                        , area: 'auto'
+                        , maxWidth: 500
                     });
             }
         }
diff --git a/src/main/webapp/static/js/locCache/locCache.js b/src/main/webapp/static/js/locCache/locCache.js
new file mode 100644
index 0000000..c2e12b0
--- /dev/null
+++ b/src/main/webapp/static/js/locCache/locCache.js
@@ -0,0 +1,305 @@
+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: '#locCache',
+        headers: {token: localStorage.getItem('token')},
+        url: baseUrl + '/locCache/list/auth',
+        page: true,
+        limit: 15,
+        limits: [15, 30, 50, 100, 200, 500],
+        toolbar: '#toolbar',
+        cellMinWidth: 50,
+        height: 'full-120',
+        cols: [[{type: 'checkbox'}, {field: 'locNo', align: 'center', title: '搴撲綅鍙�'}, {
+            field: 'barcode',
+            align: 'center',
+            title: '鎵樼洏鐮�'
+        }, {field: 'areaName', align: 'center', title: '搴撳尯鍚嶇О'}, {
+            field: 'whsType$',
+            align: 'center',
+            title: '搴撲綅绫诲瀷'
+        }, {field: 'locSts', align: 'center', title: '搴撲綅鐘舵��'}, {
+            field: 'row1',
+            align: 'center',
+            title: '鎺�'
+        }, {field: 'bay1', align: 'center', title: '鍒�'}, {
+            field: 'lev1',
+            align: 'center',
+            title: '灞�'
+        }, {field: 'locType', align: 'center', title: '搴撲綅绫诲瀷'}
+            ,{field: 'sort', align: 'center', title: '浼樺厛绾�'}
+            ,{field: 'modiUser$', align: 'center', title: '淇敼浜哄憳'
+        }, {field: 'modiTime$', align: 'center', title: '淇敼鏃堕棿'}, {
+            field: 'appeUser$',
+            align: 'center',
+            title: '鍒涘缓鑰�'
+        }, {field: 'appeTime$', align: 'center', title: '娣诲姞鏃堕棿'}, {
+            field: 'frozen',
+            align: 'center',
+            title: '鏄惁鍐荤粨,0.鏈喕缁擄紝1.宸插喕缁�',
+            hide: true
+        }, {field: 'frozenMemo', align: 'center', title: '鍐荤粨澶囨敞', hide: true}, {
+            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(locCache)', 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(locCache)', 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 'init':
+                layer.prompt({title: '璇疯緭鍏ュ彛浠わ紝骞堕噸缃簱浣�', formType: 1, shadeClose: true}, function (pass, idx) {
+                    http.get(baseUrl + "/locMast/init/pwd", {pwd: pass}, function (res) {
+                        if (res.data) {
+                            layer.open({
+                                type: 1,
+                                title: '鍒濆鍖栧簱浣�',
+                                area: ["400px"],
+                                maxmin: true,
+                                shadeClose: true,
+                                content: $("#resetLocDiv"),
+                                success: function (layero, index) {
+
+                                }
+                            })
+                        } else {
+                            layer.msg("鍙d护閿欒");
+                        }
+                        layer.close(idx);
+                    })
+                });
+                break;
+        }
+    });
+
+    // 鐩戝惉琛屽伐鍏蜂簨浠�
+    table.on('tool(locCache)', function (obj) {
+        var data = obj.data;
+        console.log(data)
+        switch (obj.event) {
+            case 'showDetl':
+                locNo = data?.locNo;
+                // 寮瑰眰鏄剧ず
+                layer.open({
+                    type: 2,
+                    title: '搴撲綅鏄庣粏',
+                    maxmin: true,
+                    area: [top.detailWidth, top.detailHeight],
+                    shadeClose: true,
+                    content: 'locDetail.html',
+                    success: function(layero, index){
+                    }
+                });
+                break;
+            case 'edit':
+                showEditModel(data);
+                break;
+            case "del":
+                del([data.id]);
+                break;
+        }
+    });
+
+    // 鍒濆鍖栦繚瀛�
+    form.on('submit(initDo)', function (data) {
+        console.log(data.field)
+        $.ajax({
+            url: baseUrl + "/locCache/init/auth",
+            headers: {'token': localStorage.getItem('token')},
+            data: data.field,
+            method: 'POST',
+            async: false,
+            success: function (res) {
+                if (res.code === 200) {
+                    layer.msg(res.msg);
+                    layer.closeAll();
+                    tableReload(false);
+                } else if (res.code === 403) {
+                    parent.location.href = "/";
+                } else {
+                    layer.msg(res.msg)
+                }
+            }
+        })
+    });
+
+
+    /* 寮圭獥 - 鏂板銆佷慨鏀� */
+    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 + "/locCache/" + (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) {
+        console.log(ids)
+        layer.confirm('纭畾瑕佸垹闄ら�変腑鏁版嵁鍚楋紵', {
+            skin: 'layui-layer-admin', shade: .1
+        }, function (i) {
+            layer.close(i);
+            var loadIndex = layer.load(2);
+            $.ajax({
+                url: baseUrl + "/locCache/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: '#firstTime\\$', type: 'datetime', value: data !== undefined ? data['firstTime\\$'] : 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
+            });
+            layDate.render({
+                elem: '#errorTime\\$', type: 'datetime', value: data !== undefined ? data['errorTime\\$'] : 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/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..6943a66
--- /dev/null
+++ b/src/main/webapp/static/js/taskDetl/taskDetl.js
@@ -0,0 +1,305 @@
+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: '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/static/js/taskDetlLog/taskDetlLog.js b/src/main/webapp/static/js/taskDetlLog/taskDetlLog.js
new file mode 100644
index 0000000..800ba56
--- /dev/null
+++ b/src/main/webapp/static/js/taskDetlLog/taskDetlLog.js
@@ -0,0 +1,305 @@
+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: '#taskDetlLog',
+        headers: {token: localStorage.getItem('token')},
+        url: baseUrl+'/taskDetlLog/list/auth',
+        page: true,
+        limit: 15,
+        limits: [15, 30, 50, 100, 200, 500],
+        toolbar: '#toolbar',
+        cellMinWidth: 50,
+        height: 'full-120',
+        cols: [[
+            {type: 'checkbox'}
+            ,{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(taskDetlLog)', 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(taskDetlLog)', 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 = {
+                        'taskDetlLog': exportData,
+                        'fields': fields
+                    };
+                    $.ajax({
+                        url: baseUrl+"/taskDetlLog/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(taskDetlLog)', 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+"/taskDetlLog/"+(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+"/taskDetlLog/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/taskLog/taskLog.js b/src/main/webapp/static/js/taskLog/taskLog.js
new file mode 100644
index 0000000..d0c663f
--- /dev/null
+++ b/src/main/webapp/static/js/taskLog/taskLog.js
@@ -0,0 +1,364 @@
+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: '#taskLog',
+        headers: {token: localStorage.getItem('token')},
+        url: baseUrl+'/taskLog/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: 'logId', align: 'center',title: ''}
+            ,{field: 'invWh', align: 'center',title: ''}
+            ,{field: 'ymd$', align: 'center',title: ''}
+            ,{field: 'mk', align: 'center',title: ''}
+            ,{field: 'whsType', align: 'center',title: ''}
+            ,{field: 'wrkSts$', align: 'center',title: '宸ヤ綔鐘舵��'}
+            ,{field: 'ioType$', align: 'center',title: '鍏ュ嚭搴撶被鍨�'}
+            ,{field: 'crnNo$', align: 'center',title: '鍫嗗灈鏈哄彿'}
+            ,{field: 'sheetNo', align: 'center',title: ''}
+            ,{field: 'ioPri', align: 'center',title: '浼樺厛绾�'}
+            ,{field: 'wrkDate$', align: 'center',title: ''}
+            ,{field: 'locNo$', align: 'center',title: '鐩爣搴撲綅'}
+            ,{field: 'staNo$', align: 'center',title: '鐩爣绔�'}
+            ,{field: 'sourceStaNo$', align: 'center',title: '婧愮珯'}
+            ,{field: 'sourceLocNo$', align: 'center',title: '婧愬簱浣�'}
+            ,{field: 'locSts', align: 'center',title: ''}
+            ,{field: 'picking', align: 'center',title: '鎷f枡(checkBox)'}
+            ,{field: 'linkMis', align: 'center',title: ''}
+            ,{field: 'onlineYn', align: 'center',title: ''}
+            ,{field: 'updMk', align: 'center',title: ''}
+            ,{field: 'exitMk', align: 'center',title: '閫�鍑�(checkBox)'}
+            ,{field: 'pltType', align: 'center',title: ''}
+            ,{field: 'emptyMk', align: 'center',title: '绌烘澘(checkBox)'}
+            ,{field: 'ioTime$', align: 'center',title: '宸ヤ綔鏃堕棿'}
+            ,{field: 'ctnType', align: 'center',title: ''}
+            ,{field: 'packed', align: 'center',title: ''}
+            ,{field: 'oveMk', align: 'center',title: ''}
+            ,{field: 'mtnType', align: 'center',title: ''}
+            ,{field: 'userNo', align: 'center',title: ''}
+            ,{field: 'crnStrTime$', align: 'center',title: '鍫嗗灈鏈哄惎鍔ㄦ椂闂�'}
+            ,{field: 'crnEndTime$', align: 'center',title: '鍫嗗灈鏈哄仠姝㈡椂闂�'}
+            ,{field: 'plcStrTime$', align: 'center',title: '鎷f枡鏃堕棿'}
+            ,{field: 'crnPosTime$', align: 'center',title: ''}
+            ,{field: 'loadTime', align: 'center',title: ''}
+            ,{field: 'expTime', align: 'center',title: ''}
+            ,{field: 'refWrkno', align: 'center',title: ''}
+            ,{field: 'refIotime$', align: 'center',title: ''}
+            ,{field: 'modiUser$', align: 'center',title: '淇敼浜哄憳'}
+            ,{field: 'modiTime$', align: 'center',title: '淇敼鏃堕棿'}
+            ,{field: 'appeUser$', align: 'center',title: '鍒涘缓鑰�'}
+            ,{field: 'appeTime$', align: 'center',title: '娣诲姞鏃堕棿'}
+            ,{field: 'pauseMk', align: 'center',title: ''}
+            ,{field: 'errorTime$', align: 'center',title: ''}
+            ,{field: 'errorMemo', align: 'center',title: ''}
+            ,{field: 'ctnKind', align: 'center',title: ''}
+            ,{field: 'manuType', align: 'center',title: ''}
+            ,{field: 'memoM', align: 'center',title: ''}
+            ,{field: 'scWeight', align: 'center',title: ''}
+            ,{field: 'logMk', align: 'center',title: ''}
+            ,{field: 'logErrTime$', align: 'center',title: ''}
+            ,{field: 'logErrMemo', align: 'center',title: ''}
+            ,{field: 'barcode', align: 'center',title: '鏉$爜'}
+            ,{field: 'PdcType', align: 'center',title: ''}
+            ,{field: 'ctnNo', align: 'center',title: ''}
+            ,{field: 'fullPlt', align: 'center',title: '婊℃澘(checkBox)'}
+            ,{field: 'preHave', align: 'center',title: ''}
+            ,{field: 'takeNone', align: 'center',title: ''}
+            ,{field: 'lineNumber', 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(taskLog)', 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(taskLog)', 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 = {
+                        'taskLog': exportData,
+                        'fields': fields
+                    };
+                    $.ajax({
+                        url: baseUrl+"/taskLog/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(taskLog)', 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+"/taskLog/"+(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+"/taskLog/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: '#ymd\\$',
+                type: 'datetime',
+                value: data!==undefined?data['ymd\\$']:null
+            });
+            layDate.render({
+                elem: '#wrkDate\\$',
+                type: 'datetime',
+                value: data!==undefined?data['wrkDate\\$']:null
+            });
+            layDate.render({
+                elem: '#ioTime\\$',
+                type: 'datetime',
+                value: data!==undefined?data['ioTime\\$']:null
+            });
+            layDate.render({
+                elem: '#crnStrTime\\$',
+                type: 'datetime',
+                value: data!==undefined?data['crnStrTime\\$']:null
+            });
+            layDate.render({
+                elem: '#crnEndTime\\$',
+                type: 'datetime',
+                value: data!==undefined?data['crnEndTime\\$']:null
+            });
+            layDate.render({
+                elem: '#plcStrTime\\$',
+                type: 'datetime',
+                value: data!==undefined?data['plcStrTime\\$']:null
+            });
+            layDate.render({
+                elem: '#crnPosTime\\$',
+                type: 'datetime',
+                value: data!==undefined?data['crnPosTime\\$']:null
+            });
+            layDate.render({
+                elem: '#refIotime\\$',
+                type: 'datetime',
+                value: data!==undefined?data['refIotime\\$']: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
+            });
+            layDate.render({
+                elem: '#errorTime\\$',
+                type: 'datetime',
+                value: data!==undefined?data['errorTime\\$']:null
+            });
+            layDate.render({
+                elem: '#logErrTime\\$',
+                type: 'datetime',
+                value: data!==undefined?data['logErrTime\\$']: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/waitPakin/waitPakin.js b/src/main/webapp/static/js/waitPakin/waitPakin.js
index 4027f58..93d9ac5 100644
--- a/src/main/webapp/static/js/waitPakin/waitPakin.js
+++ b/src/main/webapp/static/js/waitPakin/waitPakin.js
@@ -1,28 +1,37 @@
 var pageCurr;
+
 function getCol() {
-    var cols = [ {type: 'checkbox'} ];
+    var cols = [{type: 'checkbox'}];
     cols.push.apply(cols, detlCols);
-    cols.push({field: 'locNo', align: 'center',title: '搴撲綅鍙�'}
-        ,{field: 'status', align: 'center',title: '鏁版嵁鐘舵��', templet:function(row){
-                var html = "<input value='status' type='checkbox' lay-skin='switch' lay-text='姝e父|閿佸畾'' lay-filter='tableCheckbox' disabled='disabled' table-index='"+row.LAY_TABLE_INDEX+"'";
-                if(row.status === 'Y'){html += " checked ";}
+    cols.push({field: 'locNo', align: 'center', title: '搴撲綅鍙�'}
+        , {
+            field: 'status', align: 'center', title: '鏁版嵁鐘舵��', templet: function (row) {
+                var html = "<input value='status' type='checkbox' lay-skin='switch' lay-text='姝e父|閿佸畾'' lay-filter='tableCheckbox' disabled='disabled' table-index='" + row.LAY_TABLE_INDEX + "'";
+                if (row.status === 'Y') {
+                    html += " checked ";
+                }
                 html += ">";
                 return html;
-            }, hide: true}
-        ,{field: 'ioStatus', align: 'center',title: '鍏ュ嚭鐘舵��', templet:function(row){
-                var html = "<input value='ioStatus' type='checkbox' lay-skin='switch' lay-text='鍏ュ簱涓瓅寰呭叆搴�' lay-filter='tableCheckbox' disabled='disabled' table-index='"+row.LAY_TABLE_INDEX+"'";
-                if(row.ioStatus === 'Y'){html += " checked ";}
+            }, hide: true
+        }
+        , {
+            field: 'ioStatus', align: 'center', title: '鍏ュ嚭鐘舵��', templet: function (row) {
+                var html = "<input value='ioStatus' type='checkbox' lay-skin='switch' lay-text='鍏ュ簱涓瓅寰呭叆搴�' lay-filter='tableCheckbox' disabled='disabled' table-index='" + row.LAY_TABLE_INDEX + "'";
+                if (row.ioStatus === 'Y') {
+                    html += " checked ";
+                }
                 html += ">";
                 return html;
-            }}
-        ,{field: 'modiUser$', align: 'center',title: '淇敼浜哄憳', hide:true}
-        ,{field: 'modiTime$', align: 'center',title: '淇敼鏃堕棿', hide:true})
+            }
+        }
+        , {field: 'modiUser$', align: 'center', title: '淇敼浜哄憳', hide: true}
+        , {field: 'modiTime$', align: 'center', title: '淇敼鏃堕棿', hide: true})
     return cols;
 }
 
 layui.config({
     base: baseUrl + "/static/layui/lay/modules/"
-}).use(['table','laydate', 'form', 'tableMerge'], function(){
+}).use(['table', 'laydate', 'form', 'tableMerge'], function () {
     var table = layui.table;
     var $ = layui.jquery;
     var layer = layui.layer;
@@ -34,7 +43,7 @@
     tableIns = table.render({
         elem: '#waitPakin',
         headers: {token: localStorage.getItem('token')},
-        url: baseUrl+'/waitPakin/list/auth',
+        url: baseUrl + '/waitPakin/list/auth',
         page: true,
         limit: 16,
         limits: [16, 30, 50, 100, 200, 500],
@@ -57,18 +66,18 @@
         response: {
             statusCode: 200
         },
-        done: function(res, curr, count) {
+        done: function (res, curr, count) {
             // tableMerge.render(this);
             if (res.code === 403) {
-                top.location.href = baseUrl+"/";
+                top.location.href = baseUrl + "/";
             }
-            pageCurr=curr;
+            pageCurr = curr;
             limit();
             form.on('checkbox(tableCheckbox)', function (data) {
-                var _index = $(data.elem).attr('table-index')||0;
-                if(data.elem.checked){
+                var _index = $(data.elem).attr('table-index') || 0;
+                if (data.elem.checked) {
                     res.data[_index][data.value] = 'Y';
-                }else{
+                } else {
                     res.data[_index][data.value] = 'N';
                 }
             });
@@ -78,7 +87,7 @@
     // 鐩戝惉鎺掑簭浜嬩欢
     table.on('sort(locMast)', function (obj) {
         var searchData = {};
-        $.each($('#search-box [name]').serializeArray(), function() {
+        $.each($('#search-box [name]').serializeArray(), function () {
             searchData[this.name] = this.value;
         });
         searchData['orderByField'] = obj.field;
@@ -90,9 +99,9 @@
             },
             done: function (res, curr, count) {
                 if (res.code === 403) {
-                    top.location.href = baseUrl+"/";
+                    top.location.href = baseUrl + "/";
                 }
-                pageCurr=curr;
+                pageCurr = curr;
                 limit();
             }
         });
@@ -101,26 +110,26 @@
     // 鐩戝惉澶村伐鍏锋爮浜嬩欢
     table.on('toolbar(waitPakin)', function (obj) {
         var checkStatus = table.checkStatus(obj.config.id);
-        switch(obj.event) {
+        switch (obj.event) {
             case 'addWrk':
-                if (checkStatus.data.length === 0){
+                if (checkStatus.data.length === 0) {
                     layer.msg('璇疯嚦灏戦�夋嫨涓�鏉℃暟鎹�', {icon: 2});
                 } else {
-                    layer.confirm('纭畾鐢熸垚宸ヤ綔妗d换鍔″悧', function(){
+                    layer.confirm('纭畾鐢熸垚宸ヤ綔妗d换鍔″悧', function () {
                         $.ajax({
-                            url: baseUrl+"/create/waitPain/wrkMast/start",
+                            url: baseUrl + "/create/waitPain/wrkMast/start",
                             headers: {'token': localStorage.getItem('token')},
                             data: JSON.stringify(checkStatus.data),
-                            contentType:'application/json;charset=UTF-8',
+                            contentType: 'application/json;charset=UTF-8',
                             method: 'POST',
-                            traditional:true,
+                            traditional: true,
                             success: function (res) {
-                                if (res.code === 200){
+                                if (res.code === 200) {
                                     layer.closeAll();
                                     tableReload(false);
                                     layer.msg(res.msg, {icon: 1})
-                                } else if (res.code === 403){
-                                    top.location.href = baseUrl+"/";
+                                } else if (res.code === 403) {
+                                    top.location.href = baseUrl + "/";
                                 } else {
                                     layer.msg(res.msg, {icon: 2})
                                 }
@@ -136,31 +145,32 @@
                     maxmin: true,
                     area: [top.detailWidth, top.detailHeight],
                     content: 'waitPakin_detail.html',
-                    success: function(layero, index){
+                    success: function (layero, index) {
                         layer.getChildFrame('#data-detail-submit-edit', index).hide();
-                    	clearFormVal(layer.getChildFrame('#detail', index));
-                        layer.iframeAuto(index);layer.style(index, {top: (($(window).height()-layer.getChildFrame('#data-detail', index).height())/3)+"px"});
+                        clearFormVal(layer.getChildFrame('#detail', index));
+                        layer.iframeAuto(index);
+                        layer.style(index, {top: (($(window).height() - layer.getChildFrame('#data-detail', index).height()) / 3) + "px"});
                     }
                 });
                 break;
             case 'deleteData':
                 var data = checkStatus.data;
-                if (data.length === 0){
+                if (data.length === 0) {
                     layer.msg('璇烽�夋嫨鏁版嵁');
                 } else {
-                    layer.confirm('纭畾鍒犻櫎'+(data.length===1?'姝�':data.length)+'鏉℃暟鎹悧', function(){
+                    layer.confirm('纭畾鍒犻櫎' + (data.length === 1 ? '姝�' : data.length) + '鏉℃暟鎹悧', function () {
                         $.ajax({
-                            url: baseUrl+"/waitPakin/delete/auth",
+                            url: baseUrl + "/waitPakin/delete/auth",
                             headers: {'token': localStorage.getItem('token')},
                             data: {param: JSON.stringify(data)},
                             method: 'POST',
-                            traditional:true,
+                            traditional: true,
                             success: function (res) {
-                                if (res.code === 200){
+                                if (res.code === 200) {
                                     layer.closeAll();
                                     tableReload(false);
-                                } else if (res.code === 403){
-                                    top.location.href = baseUrl+"/";
+                                } else if (res.code === 403) {
+                                    top.location.href = baseUrl + "/";
                                 } else {
                                     layer.msg(res.msg)
                                 }
@@ -170,9 +180,9 @@
                 }
                 break;
             case 'exportData':
-                layer.confirm('纭畾瀵煎嚭Excel鍚�', {shadeClose: true}, function(){
-                    var titles=[];
-                    var fields=[];
+                layer.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);
@@ -180,7 +190,7 @@
                         }
                     });
                     var exportData = {};
-                    $.each($('#search-box [name]').serializeArray(), function() {
+                    $.each($('#search-box [name]').serializeArray(), function () {
                         exportData[this.name] = this.value;
                     });
                     var param = {
@@ -188,18 +198,18 @@
                         'fields': fields
                     };
                     $.ajax({
-                        url: baseUrl+"/waitPakin/export/auth",
+                        url: baseUrl + "/waitPakin/export/auth",
                         headers: {'token': localStorage.getItem('token')},
                         data: JSON.stringify(param),
-                        dataType:'json',
-                        contentType:'application/json;charset=UTF-8',
+                        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');
+                                table.exportFile(titles, res.data, 'xls');
                             } else if (res.code === 403) {
-                                top.location.href = baseUrl+"/";
+                                top.location.href = baseUrl + "/";
                             } else {
                                 layer.msg(res.msg)
                             }
@@ -211,7 +221,7 @@
     });
 
     // 鐩戝惉琛屽伐鍏蜂簨浠�
-    table.on('tool(waitPakin)', function(obj){
+    table.on('tool(waitPakin)', function (obj) {
         var data = obj.data;
         switch (obj.event) {
             // 璇︽儏
@@ -223,11 +233,12 @@
                     area: [top.detailWidth, top.detailHeight],
                     shadeClose: true,
                     content: 'waitPakin_detail.html',
-                    success: function(layero, index){
+                    success: function (layero, index) {
                         setFormVal(layer.getChildFrame('#detail', index), data, true);
                         top.convertDisabled(layer.getChildFrame('#data-detail :input', index), true);
                         layer.getChildFrame('#data-detail-submit-save,#data-detail-submit-edit,#prompt', index).hide();
-                        layer.iframeAuto(index);layer.style(index, {top: (($(window).height()-layer.getChildFrame('#data-detail', index).height())/3)+"px"});
+                        layer.iframeAuto(index);
+                        layer.style(index, {top: (($(window).height() - layer.getChildFrame('#data-detail', index).height()) / 3) + "px"});
                         layero.find('iframe')[0].contentWindow.layui.form.render('select');
                         layero.find('iframe')[0].contentWindow.layui.form.render('checkbox');
                     }
@@ -241,12 +252,13 @@
                     maxmin: true,
                     area: [top.detailWidth, top.detailHeight],
                     content: 'waitPakin_detail.html',
-                    success: function(layero, index){
+                    success: function (layero, index) {
                         layer.getChildFrame('#data-detail-submit-save', index).hide();
                         setFormVal(layer.getChildFrame('#detail', index), data, false);
                         top.convertDisabled(layer.getChildFrame('#data-detail :input', index), false);
                         top.convertDisabled(layer.getChildFrame('#id', index), true);
-                        layer.iframeAuto(index);layer.style(index, {top: (($(window).height()-layer.getChildFrame('#data-detail', index).height())/3)+"px"});
+                        layer.iframeAuto(index);
+                        layer.style(index, {top: (($(window).height() - layer.getChildFrame('#data-detail', index).height()) / 3) + "px"});
                         layero.find('iframe')[0].contentWindow.layui.form.render('select');
                         layero.find('iframe')[0].contentWindow.layui.form.render('checkbox');
                     }
@@ -257,35 +269,36 @@
                 if (param === undefined) {
                     layer.msg("鏃犳暟鎹�");
                 } else {
-                   layer.open({
-                       type: 2,
-                       title: '淇敼浜哄憳璇︽儏',
-                       maxmin: true,
-                       area: [top.detailWidth, top.detailHeight],
-                       shadeClose: true,
-                       content: '../user/user_detail.html',
-                       success: function(layero, index){
-                           $.ajax({
-                               url: "baseUrl+/user/"+ param +"/auth",
-                               headers: {'token': localStorage.getItem('token')},
-                               method: 'GET',
-                               success: function (res) {
-                                   if (res.code === 200){
-                                       setFormVal(layer.getChildFrame('#detail', index), res.data, true);
-                                       top.convertDisabled(layer.getChildFrame('#data-detail :input', index), true);
-                                       layer.getChildFrame('#data-detail-submit-save,#data-detail-submit-edit,#prompt', index).hide();
-                                       layer.iframeAuto(index);layer.style(index, {top: (($(window).height()-layer.getChildFrame('#data-detail', index).height())/3)+"px"});
-                                       layero.find('iframe')[0].contentWindow.layui.form.render('select');
-                                       layero.find('iframe')[0].contentWindow.layui.form.render('checkbox');
-                                   } else if (res.code === 403){
-                                       top.location.href = baseUrl+"/";
-                                   }else {
-                                       layer.msg(res.msg)
-                                   }
-                               }
-                           })
-                       }
-                   });
+                    layer.open({
+                        type: 2,
+                        title: '淇敼浜哄憳璇︽儏',
+                        maxmin: true,
+                        area: [top.detailWidth, top.detailHeight],
+                        shadeClose: true,
+                        content: '../user/user_detail.html',
+                        success: function (layero, index) {
+                            $.ajax({
+                                url: "baseUrl+/user/" + param + "/auth",
+                                headers: {'token': localStorage.getItem('token')},
+                                method: 'GET',
+                                success: function (res) {
+                                    if (res.code === 200) {
+                                        setFormVal(layer.getChildFrame('#detail', index), res.data, true);
+                                        top.convertDisabled(layer.getChildFrame('#data-detail :input', index), true);
+                                        layer.getChildFrame('#data-detail-submit-save,#data-detail-submit-edit,#prompt', index).hide();
+                                        layer.iframeAuto(index);
+                                        layer.style(index, {top: (($(window).height() - layer.getChildFrame('#data-detail', index).height()) / 3) + "px"});
+                                        layero.find('iframe')[0].contentWindow.layui.form.render('select');
+                                        layero.find('iframe')[0].contentWindow.layui.form.render('checkbox');
+                                    } else if (res.code === 403) {
+                                        top.location.href = baseUrl + "/";
+                                    } else {
+                                        layer.msg(res.msg)
+                                    }
+                                }
+                            })
+                        }
+                    });
                 }
                 break;
             case 'appeUser':
@@ -293,35 +306,36 @@
                 if (param === undefined) {
                     layer.msg("鏃犳暟鎹�");
                 } else {
-                   layer.open({
-                       type: 2,
-                       title: '鍒涘缓鑰呰鎯�',
-                       maxmin: true,
-                       area: [top.detailWidth, top.detailHeight],
-                       shadeClose: true,
-                       content: '../user/user_detail.html',
-                       success: function(layero, index){
-                           $.ajax({
-                               url: "baseUrl+/user/"+ param +"/auth",
-                               headers: {'token': localStorage.getItem('token')},
-                               method: 'GET',
-                               success: function (res) {
-                                   if (res.code === 200){
-                                       setFormVal(layer.getChildFrame('#detail', index), res.data, true);
-                                       top.convertDisabled(layer.getChildFrame('#data-detail :input', index), true);
-                                       layer.getChildFrame('#data-detail-submit-save,#data-detail-submit-edit,#prompt', index).hide();
-                                       layer.iframeAuto(index);layer.style(index, {top: (($(window).height()-layer.getChildFrame('#data-detail', index).height())/3)+"px"});
-                                       layero.find('iframe')[0].contentWindow.layui.form.render('select');
-                                       layero.find('iframe')[0].contentWindow.layui.form.render('checkbox');
-                                   } else if (res.code === 403){
-                                       top.location.href = baseUrl+"/";
-                                   }else {
-                                       layer.msg(res.msg)
-                                   }
-                               }
-                           })
-                       }
-                   });
+                    layer.open({
+                        type: 2,
+                        title: '鍒涘缓鑰呰鎯�',
+                        maxmin: true,
+                        area: [top.detailWidth, top.detailHeight],
+                        shadeClose: true,
+                        content: '../user/user_detail.html',
+                        success: function (layero, index) {
+                            $.ajax({
+                                url: "baseUrl+/user/" + param + "/auth",
+                                headers: {'token': localStorage.getItem('token')},
+                                method: 'GET',
+                                success: function (res) {
+                                    if (res.code === 200) {
+                                        setFormVal(layer.getChildFrame('#detail', index), res.data, true);
+                                        top.convertDisabled(layer.getChildFrame('#data-detail :input', index), true);
+                                        layer.getChildFrame('#data-detail-submit-save,#data-detail-submit-edit,#prompt', index).hide();
+                                        layer.iframeAuto(index);
+                                        layer.style(index, {top: (($(window).height() - layer.getChildFrame('#data-detail', index).height()) / 3) + "px"});
+                                        layero.find('iframe')[0].contentWindow.layui.form.render('select');
+                                        layero.find('iframe')[0].contentWindow.layui.form.render('checkbox');
+                                    } else if (res.code === 403) {
+                                        top.location.href = baseUrl + "/";
+                                    } else {
+                                        layer.msg(res.msg)
+                                    }
+                                }
+                            })
+                        }
+                    });
                 }
                 break;
 
@@ -330,7 +344,7 @@
 
     // 鏁版嵁淇濆瓨鍔ㄤ綔
     form.on('submit(save)', function () {
-        if (banMsg != null){
+        if (banMsg != null) {
             layer.msg(banMsg);
             return;
         }
@@ -342,9 +356,9 @@
         method("update")
     });
 
-    function method(name){
+    function method(name) {
         var index = layer.load(1, {
-            shade: [0.5,'#000'] //0.1閫忔槑搴︾殑鑳屾櫙
+            shade: [0.5, '#000'] //0.1閫忔槑搴︾殑鑳屾櫙
         });
         var data = {
 //            id: $('#id').val(),
@@ -363,20 +377,20 @@
 
         };
         $.ajax({
-            url: baseUrl+"/waitPakin/"+name+"/auth",
+            url: baseUrl + "/waitPakin/" + name + "/auth",
             headers: {'token': localStorage.getItem('token')},
             data: top.reObject(data),
             method: 'POST',
             success: function (res) {
-                if (res.code === 200){
+                if (res.code === 200) {
                     parent.layer.closeAll();
                     parent.$(".layui-laypage-btn")[0].click();
                     $("#data-detail :input").each(function () {
                         $(this).val("");
                     });
-                } else if (res.code === 403){
-                    top.location.href = baseUrl+"/";
-                }else {
+                } else if (res.code === 403) {
+                    top.location.href = baseUrl + "/";
+                } else {
                     layer.msg(res.msg)
                 }
                 layer.close(index);
@@ -418,20 +432,20 @@
     });
     layDate.render({
         elem: '.layui-laydate-range'
-        ,type: 'datetime'
-        ,range: true
+        , type: 'datetime'
+        , range: true
     });
 
 });
 
 // 鍏抽棴鍔ㄤ綔
-$(document).on('click','#data-detail-close', function () {
+$(document).on('click', '#data-detail-close', function () {
     parent.layer.closeAll();
 });
 
 function tableReload(child) {
     var searchData = {};
-    $.each($('#search-box [name]').serializeArray(), function() {
+    $.each($('#search-box [name]').serializeArray(), function () {
         searchData[this.name] = this.value;
     });
     (child ? parent.tableIns : tableIns).reload({
@@ -441,14 +455,14 @@
         },
         done: function (res, curr, count) {
             if (res.code === 403) {
-                top.location.href = baseUrl+"/";
+                top.location.href = baseUrl + "/";
             }
-            pageCurr=curr;
+            pageCurr = curr;
             if (res.data.length === 0 && count !== 0) {
                 tableIns.reload({
                     where: searchData,
                     page: {
-                        curr: pageCurr-1
+                        curr: pageCurr - 1
                     }
                 });
                 pageCurr -= 1;
@@ -461,10 +475,10 @@
 function setFormVal(el, data, showImg) {
     for (var val in data) {
         var find = el.find(":input[id='" + val + "']");
-        if (find[0]!=null){
-            if (find[0].type === 'checkbox'){
-                if (data[val]==='Y'){
-                    find.attr("checked","checked");
+        if (find[0] != null) {
+            if (find[0].type === 'checkbox') {
+                if (data[val] === 'Y') {
+                    find.attr("checked", "checked");
                     find.val('Y');
                 } else {
                     find.remove("checked");
@@ -474,9 +488,9 @@
             }
         }
         find.val(data[val]);
-        if (showImg){
+        if (showImg) {
             var next = find.next();
-            if (next.get(0)){
+            if (next.get(0)) {
                 if (next.get(0).localName === "img") {
                     find.hide();
                     next.attr("src", data[val]);
@@ -496,13 +510,13 @@
 
 function detailScreen(index) {
     var detail = layer.getChildFrame('#data-detail', index);
-    var height = detail.height()+60;
-    if (height > ($(window).height()*0.9)) {
-        height = ($(window).height()*0.8);
+    var height = detail.height() + 60;
+    if (height > ($(window).height() * 0.9)) {
+        height = ($(window).height() * 0.8);
     }
     layer.style(index, {
 //        top: (($(window).height()-height)/3)+"px",
-        height: height+'px'
+        height: height + 'px'
     });
 }
 
diff --git a/src/main/webapp/static/js/wrkMast/wrkMast.js b/src/main/webapp/static/js/wrkMast/wrkMast.js
index fe33064..60b5e91 100644
--- a/src/main/webapp/static/js/wrkMast/wrkMast.js
+++ b/src/main/webapp/static/js/wrkMast/wrkMast.js
@@ -25,11 +25,12 @@
             ,{field: 'wrkSts$', align: 'center',title: '宸ヤ綔鐘舵��'}
             ,{field: 'ioType$', align: 'center',title: '鍏ュ嚭搴撶被鍨�'}
             ,{field: 'ioPri', align: 'center',title: '浼樺厛绾�'}
+            ,{field: 'taskType$', align: 'center',title: '浠诲姟绫诲瀷'}
             ,{field: 'crnNo$', align: 'center',title: '鍫嗗灈鏈�'}
             ,{field: 'sourceStaNo$', align: 'center',title: '婧愮珯'}
             ,{field: 'staNo$', align: 'center',title: '鐩爣绔�'}
-            ,{field: 'sourceLocNo$', align: 'center',title: '婧愬簱浣�'}
-            ,{field: 'locNo$', align: 'center',title: '鐩爣搴撲綅'}
+            ,{field: 'sourceLocNo', align: 'center',title: '婧愬簱浣�'}
+            ,{field: 'locNo', align: 'center',title: '鐩爣搴撲綅'}
             ,{field: 'barcode', align: 'center',title: '鏉$爜'}
             ,{field: 'preHave', align: 'center',title: '鍏堝叆鍝�', hide: true}
             ,{field: 'takeNone', align: 'center',title: '绌烘搷浣�', hide: true}
diff --git a/src/main/webapp/views/basAreas/basAreas.html b/src/main/webapp/views/basAreas/basAreas.html
new file mode 100644
index 0000000..cf6c41c
--- /dev/null
+++ b/src/main/webapp/views/basAreas/basAreas.html
@@ -0,0 +1,152 @@
+<!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="basAreas" lay-filter="basAreas"></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/basAreas/basAreas.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">浠撳簱ID: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="whsId" placeholder="璇疯緭鍏ヤ粨搴揑D">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">浠撳簱鍚嶇О: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="whsName" placeholder="璇疯緭鍏ヤ粨搴撳悕绉�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">搴撳尯鍚嶇О: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="name" 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="whsTypeId" placeholder="璇疯緭鍏ヤ粨搴撶被鍨�" style="display: none">
+                        <input id="whsTypeId$" name="whsTypeId$" 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="basWhsTypeQueryBywhsTypeId" onkeyup="autoLoad(this.getAttribute('data-key'))">
+                            <select class="cool-auto-complete-window-select" data-key="basWhsTypeQueryBywhsTypeIdSelect" 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="areaNo" placeholder="璇疯緭鍏ュ簱鍖虹紪鐮�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鍒涘缓鏃堕棿: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="createTime" id="createTime$" placeholder="璇疯緭鍏ュ垱寤烘椂闂�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">淇敼鏃堕棿: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="updateTime" id="updateTime$" placeholder="璇疯緭鍏ヤ慨鏀规椂闂�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鍒涘缓浜哄憳: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="createBy" placeholder="璇疯緭鍏ュ垱寤轰汉鍛�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">淇敼浜哄憳: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="updateBy" 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/basStation/basStation.html b/src/main/webapp/views/basStation/basStation.html
new file mode 100644
index 0000000..d1050d8
--- /dev/null
+++ b/src/main/webapp/views/basStation/basStation.html
@@ -0,0 +1,311 @@
+<!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="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>
+        </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/basWhs/basWhs.html b/src/main/webapp/views/basWhs/basWhs.html
index 03680d9..615c3e9 100644
--- a/src/main/webapp/views/basWhs/basWhs.html
+++ b/src/main/webapp/views/basWhs/basWhs.html
@@ -31,7 +31,7 @@
 
 <!-- 琛ㄦ牸 -->
 <div class="layui-form">
-    <table class="layui-hide" id="basWhs" lay-filter="basWhs"></table>
+    <table class="layui-hide" id="basWhsType" lay-filter="basWhsType"></table>
 </div>
 <script type="text/html" id="toolbar">
     <div class="layui-btn-container">
@@ -49,7 +49,7 @@
 <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/basWhs/basWhs.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/basWhsType/basWhsType.js" charset="utf-8"></script>
 
 <iframe id="detail-iframe" scrolling="auto" style="display:none;"></iframe>
 
diff --git a/src/main/webapp/views/basWhs/basWhs_detail.html b/src/main/webapp/views/basWhs/basWhs_detail.html
index 6c6918b..cf96a35 100644
--- a/src/main/webapp/views/basWhs/basWhs_detail.html
+++ b/src/main/webapp/views/basWhs/basWhs_detail.html
@@ -26,7 +26,7 @@
         <div class="layui-inline"  style="width:80%;">
             <label class="layui-form-label"><span class="not-null">*</span>缂栥��銆�鍙凤細</label>
             <div class="layui-input-inline">
-                <input id="id" class="layui-input" type="text" onkeyup="check(this.id, 'basWhs')">
+                <input id="id" class="layui-input" type="text" onkeyup="check(this.id, 'basWhsType')">
             </div>
         </div>
         <div class="layui-inline"  style="width:80%;">
@@ -91,6 +91,6 @@
 <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/basWhs/basWhs.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/basWhsType/basWhsType.js" charset="utf-8"></script>
 </html>
 
diff --git a/src/main/webapp/views/locCache/locCache.html b/src/main/webapp/views/locCache/locCache.html
new file mode 100644
index 0000000..b346397
--- /dev/null
+++ b/src/main/webapp/views/locCache/locCache.html
@@ -0,0 +1,208 @@
+<!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="loc_no" placeholder="缂栧彿" autocomplete="off">
+                        </div>
+                    </div>
+                    <div class="layui-inline" style="width: 300px">
+                        <div class="layui-input-inline">
+                            <input class="layui-input layui-laydate-range" name="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="locCache" lay-filter="locCache"></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" id="btn-delete" lay-event="deleteData">鍒犻櫎</button>
+        <button class="layui-btn layui-btn-primary" id="btn-init" lay-event="init">鍒濆鍖�</button>
+    </div>
+</script>
+
+<!-- 閲嶇疆搴撲綅寮圭獥 -->
+<div id="resetLocDiv" style="margin: 20px 0 10px 30px; display: none">
+    <div class="layui-form layui-form-pane">
+        <div class="layui-form-item">
+            <div class="layui-inline">
+                <label class="layui-form-label">鍒犻櫎搴撲綅</label>
+                <div class="layui-input-inline" style="width: 100px;">
+                    <input type="checkbox" name="enable" lay-skin="switch" value="1" lay-text="鍒犻櫎|淇濈暀">
+                </div>
+            </div>
+        </div>
+        <div class="layui-form-item">
+            <div class="layui-inline">
+                <label class="layui-form-label"><span class="not-null">*</span>搴撳尯鍚嶇О锛�</label>
+                <div class="layui-input-inline cool-auto-complete">
+                    <input id="identifying" name="identifying" class="layui-input" type="text" style="display: none">
+                    <input id="identifying$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)"
+                           type="text" onfocus=this.blur()>
+                    <div class="cool-auto-complete-window">
+                        <input class="cool-auto-complete-window-input" data-key="basAreasQueryBywhsType"
+                               onkeyup="autoLoad(this.getAttribute('data-key'))">
+                        <select class="cool-auto-complete-window-select" data-key="basAreasQueryBywhsTypeSelect"
+                                onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
+                        </select>
+                    </div>
+                </div>
+            </div>
+        </div>
+        <!-- 鎺� -->
+        <div class="layui-form-item">
+            <div class="layui-inline">
+                <label class="layui-form-label">璧锋鎺�</label>
+                <div class="layui-input-inline" style="width: 100px;">
+                    <input type="text" name="startRow" autocomplete="off" class="layui-input"
+                           lay-verify="required|number">
+                </div>
+                <div class="layui-form-mid">-</div>
+                <div class="layui-input-inline" style="width: 100px;">
+                    <input type="text" name="endRow" autocomplete="off" class="layui-input"
+                           lay-verify="required|number">
+                </div>
+            </div>
+        </div>
+        <!-- 鍒� -->
+        <div class="layui-form-item">
+            <div class="layui-inline">
+                <label class="layui-form-label">璧锋鍒�</label>
+                <div class="layui-input-inline" style="width: 100px;">
+                    <input type="text" name="startBay" autocomplete="off" class="layui-input"
+                           lay-verify="required|number">
+                </div>
+                <div class="layui-form-mid">-</div>
+                <div class="layui-input-inline" style="width: 100px;">
+                    <input type="text" name="endBay" autocomplete="off" class="layui-input"
+                           lay-verify="required|number">
+                </div>
+            </div>
+        </div>
+        <!-- 灞� -->
+        <div class="layui-form-item">
+            <div class="layui-inline">
+                <label class="layui-form-label">璧锋灞�</label>
+                <div class="layui-input-inline" style="width: 100px;">
+                    <input type="text" name="startLev" autocomplete="off" class="layui-input"
+                           lay-verify="required|number">
+                </div>
+                <div class="layui-form-mid">-</div>
+                <div class="layui-input-inline" style="width: 100px;">
+                    <input type="text" name="endLev" autocomplete="off" class="layui-input"
+                           lay-verify="required|number">
+                </div>
+            </div>
+        </div>
+        <div class="layui-form-item">
+            <label class="layui-form-label">鍫嗗灈鏈烘暟閲�</label>
+            <div class="layui-input-inline">
+                <input type="text" name="crnAmount" lay-verify="required|number" autocomplete="off" class="layui-input">
+            </div>
+        </div>
+        <div class="layui-form-item">
+            <div class="layui-inline">
+                <label class="layui-form-label">璧峰鍫嗗灈鏈�</label>
+                <div class="layui-input-inline">
+                    <input type="text" name="staCrn" autocomplete="off" class="layui-input" lay-verify="number">
+                </div>
+            </div>
+        </div>
+        <!-- 搴撲綅绫诲瀷 -->
+        <div class="layui-form-item">
+            <label class="layui-form-label">楂樹綆绫诲瀷</label>
+            <div class="layui-input-inline">
+                <select name="locType1">
+                    <option style="display: none"></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-inline">
+                <select name="locType2">
+                    <option style="display: none"></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-inline">
+                <select name="locType3">
+                    <option style="display: none"></option>
+                    <option value="0">鏈煡</option>
+                    <option value="1">杞诲簱浣�</option>
+                    <option value="2">閲嶅簱浣�</option>
+                </select>
+            </div>
+        </div>
+        <div style="text-align: center; margin-top: 20px">
+            <button class="layui-btn layui-btn-radius layui-btn-normal" id="initDo" lay-submit lay-filter="initDo">
+                纭畾
+            </button>
+        </div>
+    </div>
+</div>
+
+<script type="text/html" id="toolbar">
+    <div class="layui-btn-container">
+        <!--        <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-xs btn-detlShow" lay-event="showDetl">鏄庣粏</a>
+<!--    <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/locCache/locCache.js" charset="utf-8"></script>
+</body>
+</html>
+
diff --git a/src/main/webapp/views/locCache/locDetail.html b/src/main/webapp/views/locCache/locDetail.html
new file mode 100644
index 0000000..e509b24
--- /dev/null
+++ b/src/main/webapp/views/locCache/locDetail.html
@@ -0,0 +1,93 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="utf-8">
+    <title></title>
+    <meta name="renderer" content="webkit">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+    <link rel="stylesheet" href="../../static/layui/css/layui.css" media="all">
+    <link rel="stylesheet" href="../../static/css/cool.css" media="all">
+    <link rel="stylesheet" href="../../static/css/common.css" media="all">
+    <style>
+    </style>
+</head>
+<body>
+<div class="layui-inline" style="width:31%;margin-top: 20px">
+    <label class="layui-form-label">搴� 浣� 鍙凤細</label>
+    <div class="layui-input-inline">
+        <input id="locNo" class="layui-input" type="text" disabled="disabled">
+    </div>
+</div>
+<table class="layui-hide" id="locCacheDetls" lay-filter="locCacheDetls"></table>
+</body>
+<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
+<script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/locMast/locMast.js" charset="utf-8"></script>
+<script type="text/javascript">
+    var pageCur;
+
+    function getCol() {
+        var cols = [
+            {field: 'locNo', align: 'center', title: '搴撲綅鍙�'}
+            , {field: 'ioTime$', align: 'center', title: '宸ヤ綔鏃堕棿'}
+        ];
+        cols.push.apply(cols, cacheCols);
+        return cols;
+    }
+
+    layui.use(['table', 'laydate', 'form'], function () {
+        table = layui.table;
+        var $ = layui.jquery;
+        var form = layui.form;
+
+        $('#locNo').val(parent.locNo);
+        // 鏁版嵁娓叉煋
+        tableIns1 = table.render({
+            elem: '#locCacheDetls',
+            headers: {token: localStorage.getItem('token')},
+            url: baseUrl + '/locDetl/list/auth',
+            where: {loc_no: parent.locNo},
+            page: true,
+            limit: 16,
+            limits: [16, 30, 50, 100, 200, 500],
+            even: true,
+            toolbar: '#toolbar',
+            cellMinWidth: 50,
+            cols: [getCol()],
+            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 + "/";
+                }
+                pageCur = curr;
+                form.on('checkbox(tableCheckbox)', function (data) {
+                    var _index = $(data.elem).attr('table-index') || 0;
+                    if (data.elem.checked) {
+                        res.data[_index][data.value] = 'Y';
+                    } else {
+                        res.data[_index][data.value] = 'N';
+                    }
+                });
+            }
+        });
+    });
+</script>
+</html>
+
diff --git a/src/main/webapp/views/login.html b/src/main/webapp/views/login.html
index b761198..23f1ef0 100644
--- a/src/main/webapp/views/login.html
+++ b/src/main/webapp/views/login.html
@@ -1,6 +1,6 @@
 <!DOCTYPE html>
 <html lang="en">
-  <head>
+<head>
     <meta charset="utf-8">
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <title>涓壃 鈹� login of zoneyung wms</title>
@@ -10,190 +10,193 @@
     <meta name="theme-color" content="#111111">
     <meta name="msapplication-TileImage" content="/sketch-threejs/img/common/ms_tileimage.png">
     <meta name="msapplication-TileColor" content="#111111">
-    <link rel="icon" type="image/x-icon" href="../static/image/favicon.ico" />
+    <link rel="icon" type="image/x-icon" href="../static/image/favicon.ico"/>
     <link rel="stylesheet" href="../static/css/font/font-awesome-4.7.0/css/font-awesome.css">
     <link rel="stylesheet" href="../static/css/main.min.css">
     <link rel="stylesheet" href="../static/css/login.css">
     <style>
-      #sidebar{
-        /*瀹氫綅*/
-        position: absolute;
-        top: 50%;
-        right: 1%;
-        transform: translateY(-50%);
-        width: 20%;
-        height: 95%;
-        /*鐗规晥*/
-        background: rgba(255,255,255,0.6);
-        border-radius: 5px;
-        color: #ffffff;
-        z-index: 99;
-        box-shadow: 3px 3px 6px 3px rgba(0, 0, 0, .3);
-      }
+        #sidebar {
+            /*瀹氫綅*/
+            position: absolute;
+            top: 50%;
+            right: 1%;
+            transform: translateY(-50%);
+            width: 20%;
+            height: 95%;
+            /*鐗规晥*/
+            background: rgba(255, 255, 255, 0.6);
+            border-radius: 5px;
+            color: #ffffff;
+            z-index: 99;
+            box-shadow: 3px 3px 6px 3px rgba(0, 0, 0, .3);
+        }
 
-      .login-contain {
-        position: relative;
-        width: 100%;
-        height: 100%;
-      }
-      .login-box {
-        position: absolute;
-        top: 50%;
-        left: 50%;
-        transform: translate(-50%, -50%);
-        width: 100%;
-        text-align: center;
-      }
+        .login-contain {
+            position: relative;
+            width: 100%;
+            height: 100%;
+        }
+
+        .login-box {
+            position: absolute;
+            top: 50%;
+            left: 50%;
+            transform: translate(-50%, -50%);
+            width: 100%;
+            text-align: center;
+        }
 
     </style>
-  </head>
-  <body>
-    <div class="l-page l-page--white" data-id="instancing">
-      <div style="position: fixed;
+</head>
+<body>
+<div class="l-page l-page--white" data-id="instancing">
+    <div style="position: fixed;
                     z-index: 100;
                     top: 22px;
                     left: 20px;">
         <img src="../static/image/logo_light_colour.png" alt="" style="width: 20%">
-      </div>
-      <div class="p-sketch-outline">
+    </div>
+    <div class="p-sketch-outline">
         <h2 class="p-sketch-outline__title">Automatic Storage and Retrieval System</h2>
         <p class="p-sketch-outline__date">posted: 2018.01.01 / update: 2022.09.21
         </p>
         <p class="p-sketch-outline__description">wms made with various simple objects.</p>
-      </div>
-      <canvas class="p-canvas-webgl" id="canvas-webgl"></canvas>
     </div>
-    <!-- 渚ц竟鏍� -->
-    <div id="sidebar">
-      <div class="login-contain">
+    <canvas class="p-canvas-webgl" id="canvas-webgl"></canvas>
+</div>
+<!-- 渚ц竟鏍� -->
+<div id="sidebar">
+    <div class="login-contain">
         <div class="login-box">
-          <img src="../static/image/zy_logo_dark_color.png" alt="" style="width: 80%">
-<!--          <span class="login100-form-title p-t-20 p-b-45">涓壃绔嬪簱</span>-->
-<!--          <span class="login100-form-title p-t-20 p-b-45" style="margin: 15px 0;color: #868686;font-size: 24px">WMS</span>-->
-          <div class="wrap-input100 validate-input m-b-10" data-validate="璇疯緭鍏ョ敤鎴峰悕">
-            <input id="username" class="input100" type="text" name="username" placeholder="username" autocomplete="off">
-            <span class="focus-input100"></span>
-            <span class="symbol-input100">
+            <img src="../static/image/zy_logo_dark_color.png" alt="" style="width: 80%">
+            <!--          <span class="login100-form-title p-t-20 p-b-45">涓壃绔嬪簱</span>-->
+            <!--          <span class="login100-form-title p-t-20 p-b-45" style="margin: 15px 0;color: #868686;font-size: 24px">WMS</span>-->
+            <div class="wrap-input100 validate-input m-b-10" data-validate="璇疯緭鍏ョ敤鎴峰悕">
+                <input id="username" class="input100" type="text" name="username" placeholder="username"
+                       autocomplete="off">
+                <span class="focus-input100"></span>
+                <span class="symbol-input100">
               <i class="fa fa-user"></i>
             </span>
-          </div>
-          <div class="wrap-input100 validate-input m-b-10" data-validate="璇疯緭鍏ュ瘑鐮�">
-            <input id="password" class="input100" type="password" name="pass" placeholder="password">
-            <span class="focus-input100"></span>
-            <span class="symbol-input100">
+            </div>
+            <div class="wrap-input100 validate-input m-b-10" data-validate="璇疯緭鍏ュ瘑鐮�">
+                <input id="password" class="input100" type="password" name="pass" placeholder="password">
+                <span class="focus-input100"></span>
+                <span class="symbol-input100">
               <i class="fa fa-lock"></i>
             </span>
-          </div>
-          <div class="container-login100-form-btn p-t-10">
-            <button class="login100-form-btn login-btn">Login</button>
-          </div>
-          <div class="container-login100-form-btn p-t-10" style="display: none;margin-top: 50px;" id="updateLicense">
-            <form enctype="multipart/form-data" style="display: none;">
-              <input id="license" type="file" name="file" >
-            </form>
-            <button class="login100-form-btn" id="submitLicense">鏇存柊璁稿彲璇�</button>
-          </div>
+            </div>
+            <div class="container-login100-form-btn p-t-10">
+                <button class="login100-form-btn login-btn">Login</button>
+            </div>
+            <div class="container-login100-form-btn p-t-10" style="display: none;margin-top: 50px;" id="updateLicense">
+                <form enctype="multipart/form-data" style="display: none;">
+                    <input id="license" type="file" name="file">
+                </form>
+                <button class="login100-form-btn" id="submitLicense">鏇存柊璁稿彲璇�</button>
+            </div>
         </div>
-      </div>
     </div>
+</div>
 
-    <script type="text/javascript" src="../static/js/tools/main.min.js"></script>
-    <script type="text/javascript" src="../static/js/jquery/jquery-3.3.1.min.js"></script>
-    <script type="text/javascript" src="../static/js/tools/md5.js"></script>
-    <script type="text/javascript" src="../static/layer/layer.js"></script>
-    <script type="text/javascript" src="../static/js/common.js"></script>
-    <script>
-      // remember pwd
-      $(function () {
+<script type="text/javascript" src="../static/js/tools/main.min.js"></script>
+<script type="text/javascript" src="../static/js/jquery/jquery-3.3.1.min.js"></script>
+<script type="text/javascript" src="../static/js/tools/md5.js"></script>
+<script type="text/javascript" src="../static/layer/layer.js"></script>
+<script type="text/javascript" src="../static/js/common.js"></script>
+<script>
+    // remember pwd
+    $(function () {
         var oldUserName = localStorage.getItem('oldUserName');
         var oldPass = localStorage.getItem('oldPass');
-        if(oldUserName){
-          $('#username').val(oldUserName);
+        if (oldUserName) {
+            $('#username').val(oldUserName);
         }
-        if(oldPass){
-          $('#password').val(oldPass);
+        if (oldPass) {
+            $('#password').val(oldPass);
         }
-      })
+    })
 
-      window.onload = function(){document.getElementById("username").focus();}
+    window.onload = function () {
+        document.getElementById("username").focus();
+    }
 
-      $(document).on('click','.login-btn', function () {
+    $(document).on('click', '.login-btn', function () {
         let username = $("#username").val();
         if (username === "") {
-          layer.tips('璇疯緭鍏ョ櫥褰曡处鍙�', '#username', {tips: [4, '#ff0000']});
-          return;
+            layer.tips('璇疯緭鍏ョ櫥褰曡处鍙�', '#username', {tips: [4, '#ff0000']});
+            return;
         }
         let password = $("#password").val();
         if (password === "") {
-          layer.tips('璇疯緭鍏ュ瘑鐮�', '#password', {tips: [4, '#ff0000']});
-          return;
+            layer.tips('璇疯緭鍏ュ瘑鐮�', '#password', {tips: [4, '#ff0000']});
+            return;
         }
+        let params = {username: username, password: hex_md5(password)}
         $.ajax({
-          url: baseUrl+"/login.action",
-          data: {
-            username: username,
-            password: hex_md5(password)
-          },
-          method: 'POST',
-          success: function (res) {
-            if (res.code === 200){
-              localStorage.setItem("token", res.data.token);
-              localStorage.setItem("username", res.data.username);
-              window.location.href = "index.html";
-            } else if (res.code === 10001) {
-              layer.tips(res.msg, '#username', {tips: [4, '#ff0000']});
-            } else if (res.code === 10002) {
-              layer.tips(res.msg, '#username', {tips: [4, '#ff0000']});
-            } else if (res.code === 10003) {
-              layer.tips(res.msg, '#password', {tips: [4, '#ff0000']});
-            } else if (res.code == 20001) {
-              layer.tips(res.msg, '.login-btn', {tips: [3, '#ff0000']});
-              $("#updateLicense").show()
-            } else {
-              layer.tips(res.msg, '.login-btn', {tips: [3, '#ff0000']});
+            url: baseUrl + "/login.action",
+            headers: {'Content-Type': 'application/json'},
+            data: JSON.stringify(params),
+            method: 'POST',
+            success: function (res) {
+                if (res.code === 200) {
+                    localStorage.setItem("token", res.data.token);
+                    localStorage.setItem("username", res.data.username);
+                    window.location.href = "index.html";
+                } else if (res.code === 10001) {
+                    layer.tips(res.msg, '#username', {tips: [4, '#ff0000']});
+                } else if (res.code === 10002) {
+                    layer.tips(res.msg, '#username', {tips: [4, '#ff0000']});
+                } else if (res.code === 10003) {
+                    layer.tips(res.msg, '#password', {tips: [4, '#ff0000']});
+                } else if (res.code == 20001) {
+                    layer.tips(res.msg, '.login-btn', {tips: [3, '#ff0000']});
+                    $("#updateLicense").show()
+                } else {
+                    layer.tips(res.msg, '.login-btn', {tips: [3, '#ff0000']});
+                }
             }
-          }
         });
-      });
+    });
 
-      $('body').keydown(function () {
+    $('body').keydown(function () {
         if (event.keyCode === 13) {
-          $(".login-btn").click();
+            $(".login-btn").click();
         }
-      });
+    });
 
 
-      //鏇存柊璁稿彲璇�
-      $("#submitLicense").on("click",() => {
+    //鏇存柊璁稿彲璇�
+    $("#submitLicense").on("click", () => {
         $("#license").click()
-      })
+    })
 
-      //涓婁紶骞舵洿鏂拌鍙瘉
-      $("#license").on("change",(evt) => {
+    //涓婁紶骞舵洿鏂拌鍙瘉
+    $("#license").on("change", (evt) => {
         var files = evt.target.files;
         let formData = new FormData();
         formData.append("file", files[0])
         $.ajax({
-          url: baseUrl+"/license/updateLicense",
-          headers: {'token': localStorage.getItem('token')},
-          data: formData,
-          method: 'POST',
-          cache: false,
-          processData: false,
-          contentType: false,
-          success: function (res) {
-            if (res.code == 200) {
-              layer.msg('鏇存柊鎴愬姛', {time: 1000}, () => {
-                parent.location.reload()
-              });
-            }else{
-              layer.msg(res.msg,{time:2000},() => {
-                parent.location.reload()
-              })
+            url: baseUrl + "/license/updateLicense",
+            headers: {'token': localStorage.getItem('token')},
+            data: formData,
+            method: 'POST',
+            cache: false,
+            processData: false,
+            contentType: false,
+            success: function (res) {
+                if (res.code == 200) {
+                    layer.msg('鏇存柊鎴愬姛', {time: 1000}, () => {
+                        parent.location.reload()
+                    });
+                } else {
+                    layer.msg(res.msg, {time: 2000}, () => {
+                        parent.location.reload()
+                    })
+                }
             }
-          }
         })
-      })
-    </script>
-  </body>
+    })
+</script>
+</body>
 </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..d38091f
--- /dev/null
+++ b/src/main/webapp/views/taskDetl/taskDetl.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="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="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>
+
diff --git a/src/main/webapp/views/taskDetlLog/taskDetlLog.html b/src/main/webapp/views/taskDetlLog/taskDetlLog.html
new file mode 100644
index 0000000..a6efb6b
--- /dev/null
+++ b/src/main/webapp/views/taskDetlLog/taskDetlLog.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="taskDetlLog" lay-filter="taskDetlLog"></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/taskDetlLog/taskDetlLog.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="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>
+
diff --git a/src/main/webapp/views/taskLog/taskLog.html b/src/main/webapp/views/taskLog/taskLog.html
new file mode 100644
index 0000000..91b496a
--- /dev/null
+++ b/src/main/webapp/views/taskLog/taskLog.html
@@ -0,0 +1,506 @@
+<!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="taskLog" lay-filter="taskLog"></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/taskLog/taskLog.js" charset="utf-8"></script>
+</body>
+<!-- 琛ㄥ崟寮圭獥 -->
+<script type="text/html" id="editDialog">
+    <form id="detail" lay-filter="detail" class="layui-form admin-form model-form">
+        <input name="id" type="hidden">
+        <div class="layui-row">
+            <div class="layui-col-md12">
+                <div class="layui-form-item">
+                    <label class="layui-form-label">: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="id" placeholder="璇疯緭鍏�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label layui-form-required">宸ヤ綔鍙�: </label>
+                    <div class="layui-input-block cool-auto-complete">
+                        <input class="layui-input" name="wrkNo" placeholder="璇疯緭鍏ュ伐浣滃彿" lay-vertype="tips" lay-verify="required" style="display: none">
+                        <input id="wrkNo$" name="wrkNo$" 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="wrkMastQueryBywrkNo" onkeyup="autoLoad(this.getAttribute('data-key'))">
+                            <select class="cool-auto-complete-window-select" data-key="wrkMastQueryBywrkNoSelect" 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="logId" placeholder="璇疯緭鍏�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="invWh" placeholder="璇疯緭鍏�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="ymd" id="ymd$" placeholder="璇疯緭鍏�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="mk" placeholder="璇疯緭鍏�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="whsType" placeholder="璇疯緭鍏�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">宸ヤ綔鐘舵��: </label>
+                    <div class="layui-input-block cool-auto-complete">
+                        <input class="layui-input" name="wrkSts" placeholder="璇疯緭鍏ュ伐浣滅姸鎬�" style="display: none">
+                        <input id="wrkSts$" name="wrkSts$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="璇疯緭鍏ュ伐浣滅姸鎬�" onfocus=this.blur()>
+                        <div class="cool-auto-complete-window">
+                            <input class="cool-auto-complete-window-input" data-key="basWrkStatusQueryBywrkSts" onkeyup="autoLoad(this.getAttribute('data-key'))">
+                            <select class="cool-auto-complete-window-select" data-key="basWrkStatusQueryBywrkStsSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
+                            </select>
+                        </div>
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鍏ュ嚭搴撶被鍨�: </label>
+                    <div class="layui-input-block cool-auto-complete">
+                        <input class="layui-input" name="ioType" placeholder="璇疯緭鍏ュ叆鍑哄簱绫诲瀷" style="display: none">
+                        <input id="ioType$" name="ioType$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="璇疯緭鍏ュ叆鍑哄簱绫诲瀷" onfocus=this.blur()>
+                        <div class="cool-auto-complete-window">
+                            <input class="cool-auto-complete-window-input" data-key="basWrkIotypeQueryByioType" onkeyup="autoLoad(this.getAttribute('data-key'))">
+                            <select class="cool-auto-complete-window-select" data-key="basWrkIotypeQueryByioTypeSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
+                            </select>
+                        </div>
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鍫嗗灈鏈哄彿: </label>
+                    <div class="layui-input-block cool-auto-complete">
+                        <input class="layui-input" name="crnNo" placeholder="璇疯緭鍏ュ爢鍨涙満鍙�" style="display: none">
+                        <input id="crnNo$" name="crnNo$" 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="basCrnpQueryBycrnNo" onkeyup="autoLoad(this.getAttribute('data-key'))">
+                            <select class="cool-auto-complete-window-select" data-key="basCrnpQueryBycrnNoSelect" 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="sheetNo" placeholder="璇疯緭鍏�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">浼樺厛绾�: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="ioPri" placeholder="璇疯緭鍏ヤ紭鍏堢骇">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="wrkDate" id="wrkDate$" 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="locNo" placeholder="璇疯緭鍏ョ洰鏍囧簱浣�" style="display: none">
+                        <input id="locNo$" name="locNo$" 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="locMastQueryBylocNo" onkeyup="autoLoad(this.getAttribute('data-key'))">
+                            <select class="cool-auto-complete-window-select" data-key="locMastQueryBylocNoSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
+                            </select>
+                        </div>
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鐩爣绔�: </label>
+                    <div class="layui-input-block cool-auto-complete">
+                        <input class="layui-input" name="staNo" placeholder="璇疯緭鍏ョ洰鏍囩珯" style="display: none">
+                        <input id="staNo$" name="staNo$" 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="basDevpQueryBystaNo" onkeyup="autoLoad(this.getAttribute('data-key'))">
+                            <select class="cool-auto-complete-window-select" data-key="basDevpQueryBystaNoSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
+                            </select>
+                        </div>
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">婧愮珯: </label>
+                    <div class="layui-input-block cool-auto-complete">
+                        <input class="layui-input" name="sourceStaNo" placeholder="璇疯緭鍏ユ簮绔�" style="display: none">
+                        <input id="sourceStaNo$" name="sourceStaNo$" 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="basDevpQueryBysourceStaNo" onkeyup="autoLoad(this.getAttribute('data-key'))">
+                            <select class="cool-auto-complete-window-select" data-key="basDevpQueryBysourceStaNoSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
+                            </select>
+                        </div>
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">婧愬簱浣�: </label>
+                    <div class="layui-input-block cool-auto-complete">
+                        <input class="layui-input" name="sourceLocNo" placeholder="璇疯緭鍏ユ簮搴撲綅" style="display: none">
+                        <input id="sourceLocNo$" name="sourceLocNo$" 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="locMastQueryBysourceLocNo" onkeyup="autoLoad(this.getAttribute('data-key'))">
+                            <select class="cool-auto-complete-window-select" data-key="locMastQueryBysourceLocNoSelect" 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="locSts" placeholder="璇疯緭鍏�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鎷f枡(checkBox): </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="picking" 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="linkMis" placeholder="璇疯緭鍏�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="onlineYn" placeholder="璇疯緭鍏�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="updMk" 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="exitMk" 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="pltType" 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="emptyMk" 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="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="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="packed" placeholder="璇疯緭鍏�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="oveMk" placeholder="璇疯緭鍏�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="mtnType" placeholder="璇疯緭鍏�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="userNo" placeholder="璇疯緭鍏�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鍫嗗灈鏈哄惎鍔ㄦ椂闂�: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="crnStrTime" id="crnStrTime$" placeholder="璇疯緭鍏ュ爢鍨涙満鍚姩鏃堕棿">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鍫嗗灈鏈哄仠姝㈡椂闂�: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="crnEndTime" id="crnEndTime$" placeholder="璇疯緭鍏ュ爢鍨涙満鍋滄鏃堕棿">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鎷f枡鏃堕棿: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="plcStrTime" id="plcStrTime$" placeholder="璇疯緭鍏ユ嫞鏂欐椂闂�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="crnPosTime" id="crnPosTime$" placeholder="璇疯緭鍏�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="loadTime" placeholder="璇疯緭鍏�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="expTime" placeholder="璇疯緭鍏�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="refWrkno" placeholder="璇疯緭鍏�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="refIotime" id="refIotime$" placeholder="璇疯緭鍏�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">淇敼浜哄憳: </label>
+                    <div class="layui-input-block cool-auto-complete">
+                        <input class="layui-input" name="modiUser" placeholder="璇疯緭鍏ヤ慨鏀逛汉鍛�" style="display: none">
+                        <input id="modiUser$" name="modiUser$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="璇疯緭鍏ヤ慨鏀逛汉鍛�" onfocus=this.blur()>
+                        <div class="cool-auto-complete-window">
+                            <input class="cool-auto-complete-window-input" data-key="userQueryBymodiUser" onkeyup="autoLoad(this.getAttribute('data-key'))">
+                            <select class="cool-auto-complete-window-select" data-key="userQueryBymodiUserSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
+                            </select>
+                        </div>
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">淇敼鏃堕棿: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="modiTime" id="modiTime$" placeholder="璇疯緭鍏ヤ慨鏀规椂闂�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鍒涘缓鑰�: </label>
+                    <div class="layui-input-block cool-auto-complete">
+                        <input class="layui-input" name="appeUser" placeholder="璇疯緭鍏ュ垱寤鸿��" style="display: none">
+                        <input id="appeUser$" name="appeUser$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="璇疯緭鍏ュ垱寤鸿��" onfocus=this.blur()>
+                        <div class="cool-auto-complete-window">
+                            <input class="cool-auto-complete-window-input" data-key="userQueryByappeUser" onkeyup="autoLoad(this.getAttribute('data-key'))">
+                            <select class="cool-auto-complete-window-select" data-key="userQueryByappeUserSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
+                            </select>
+                        </div>
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">娣诲姞鏃堕棿: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="appeTime" id="appeTime$" placeholder="璇疯緭鍏ユ坊鍔犳椂闂�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="pauseMk" placeholder="璇疯緭鍏�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="errorTime" id="errorTime$" placeholder="璇疯緭鍏�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="errorMemo" placeholder="璇疯緭鍏�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="ctnKind" placeholder="璇疯緭鍏�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="manuType" placeholder="璇疯緭鍏�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="memoM" placeholder="璇疯緭鍏�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="scWeight" placeholder="璇疯緭鍏�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="logMk" placeholder="璇疯緭鍏�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="logErrTime" id="logErrTime$" placeholder="璇疯緭鍏�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="logErrMemo" 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="PdcType" placeholder="璇疯緭鍏�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="ctnNo" 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="fullPlt" 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="preHave" placeholder="璇疯緭鍏�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="takeNone" 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>
+        </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/version/bak/lfdasrs_LogBackup_2023-02-02_17-03-48.bak b/version/bak/lfdasrs_LogBackup_2023-02-02_17-03-48.bak
deleted file mode 100644
index 4d3c8b1..0000000
--- a/version/bak/lfdasrs_LogBackup_2023-02-02_17-03-48.bak
+++ /dev/null
Binary files differ

--
Gitblit v1.9.1