From 344a6d6c8c0f27f883615eb01d99ecc019aa7b25 Mon Sep 17 00:00:00 2001
From: zyx <zyx123456>
Date: 星期一, 17 七月 2023 09:28:55 +0800
Subject: [PATCH] 完善AGV相关接口功能

---
 src/main/webapp/static/js/agvLocDetl/locDetl.js                        |   14 
 src/main/java/com/zy/asrs/service/impl/AgvLocDetlServiceImpl.java      |   23 
 src/main/java/com/zy/asrs/controller/AgvLocDetlController.java         |    3 
 src/main/webapp/views/agvWrkMastLog/wrkDetlLog.html                    |    4 
 src/main/webapp/views/agvWaitPakinLog/waitPakinLog.html                |    2 
 src/main/java/com/zy/asrs/entity/param/AgvTaskParam.java               |    2 
 src/main/java/com/zy/asrs/service/AgvWrkMastLogService.java            |   10 
 src/main/webapp/views/mat/mat.html                                     |    2 
 src/main/java/com/zy/asrs/service/AgvWrkMastService.java               |    2 
 src/main/webapp/views/agvWrkMastLog/wrkMastLog.html                    |    2 
 src/main/java/com/zy/asrs/service/impl/AgvBasDevpServiceImpl.java      |   19 
 src/main/java/com/zy/asrs/service/impl/AgvWrkMastServiceImp.java       |   10 
 src/main/java/com/zy/asrs/controller/AgvWrkMastLogController.java      |  145 ++
 src/main/java/com/zy/asrs/service/AgvLocDetlService.java               |    2 
 src/main/java/com/zy/asrs/service/impl/AgvWaitPakinServiceImpl.java    |   17 
 src/main/webapp/views/agvWrkDetlLog/wrkDetlLog_detail.html             |    2 
 src/main/webapp/static/js/agvWrkMastLog/wrkMastLog.js                  |  533 ++++++++
 src/main/webapp/views/agvWaitPakinLog/waitPakinLog_detail.html         |    2 
 src/main/java/com/zy/asrs/entity/AgvWaitPakinLog.java                  |  218 +++
 src/main/java/com/zy/asrs/service/impl/AgvWrkMastLogServiceImpl.java   |   17 
 src/main/webapp/static/js/agvWrkDetlLog/wrkDetlLog.js                  |  484 +++++++
 src/main/java/com/zy/asrs/service/impl/AgvWrkDetlLogServiceImpl.java   |   16 
 src/main/webapp/views/report/locDetl.html                              |   12 
 src/main/java/com/zy/asrs/controller/AgvWaitPakinLogController.java    |  135 ++
 src/main/java/com/zy/asrs/entity/AgvWrkMastLog.java                    |  519 ++++++++
 src/main/java/com/zy/asrs/entity/param/AgvTaskCallBackParam.java       |   47 
 src/main/java/com/zy/asrs/service/AgvWrkDetlLogService.java            |   10 
 src/main/webapp/views/agvWrkDetlLog/wrkDetlLog.html                    |    2 
 src/main/java/com/zy/asrs/mapper/AgvLocMastMapper.java                 |    1 
 src/main/java/com/zy/asrs/service/AgvWaitPakinLogService.java          |   10 
 src/main/java/com/zy/asrs/mapper/AgvWrkMastMapper.java                 |    1 
 src/main/java/com/zy/asrs/service/impl/AgvMobileServiceImpl.java       |    2 
 src/main/java/com/zy/asrs/controller/AgvOpenController.java            |  294 ++++
 src/main/java/com/zy/asrs/controller/AgvWrkDetlLogController.java      |  154 ++
 src/main/java/com/zy/asrs/controller/AgvWrkMastController.java         |   49 
 src/main/java/com/zy/asrs/mapper/AgvWrkDetlLogMapper.java              |   16 
 src/main/webapp/static/js/agvWrkMast/wrkMast.js                        |    2 
 src/main/java/com/zy/asrs/service/AgvWaitPakinService.java             |    2 
 src/main/java/com/zy/asrs/service/AgvLocMastService.java               |    2 
 src/main/java/com/zy/asrs/mapper/AgvWrkMastLogMapper.java              |   16 
 src/main/java/com/zy/asrs/service/impl/AgvWaitPakinLogServiceImpl.java |   17 
 src/main/webapp/views/agvWrkMastLog/wrkMastLog_detail.html             |    2 
 src/main/java/com/zy/asrs/entity/AgvWrkDetlLog.java                    |  361 +++++
 src/main/java/com/zy/asrs/mapper/AgvWaitPakinLogMapper.java            |   16 
 src/main/java/com/zy/asrs/service/impl/AgvLocMastServiceImpl.java      |    6 
 src/main/webapp/static/js/agvWaitPakinLog/waitPakinLog.js              |  482 +++++++
 src/main/java/com/zy/asrs/service/AgvBasDevpService.java               |    2 
 src/main/webapp/static/js/agvStoMan/stoQue.js                          |    1 
 48 files changed, 3,649 insertions(+), 41 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/AgvLocDetlController.java b/src/main/java/com/zy/asrs/controller/AgvLocDetlController.java
index e0e91fa..ac62291 100644
--- a/src/main/java/com/zy/asrs/controller/AgvLocDetlController.java
+++ b/src/main/java/com/zy/asrs/controller/AgvLocDetlController.java
@@ -17,12 +17,13 @@
 import java.util.Map;
 
 @RestController
+@RequestMapping("/agv")
 public class AgvLocDetlController extends BaseController {
 
     @Autowired
     private AgvLocDetlService agvLocDetlService;
 
-    @RequestMapping(value = "/agvLocDetl/list/auth")
+    @RequestMapping(value = "/locDetl/list/auth")
     @ManagerAuth
     public R list(@RequestParam(defaultValue = "1")Integer curr,
                   @RequestParam(defaultValue = "10")Integer limit,
diff --git a/src/main/java/com/zy/asrs/controller/AgvOpenController.java b/src/main/java/com/zy/asrs/controller/AgvOpenController.java
new file mode 100644
index 0000000..08a651a
--- /dev/null
+++ b/src/main/java/com/zy/asrs/controller/AgvOpenController.java
@@ -0,0 +1,294 @@
+package com.zy.asrs.controller;
+
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.core.common.R;
+import com.zy.asrs.entity.AgvWaitPakin;
+import com.zy.asrs.entity.AgvWrkDetl;
+import com.zy.asrs.entity.AgvWrkMast;
+import com.zy.asrs.entity.param.AgvTaskCallBackParam;
+import com.zy.asrs.service.*;
+import com.zy.common.web.BaseController;
+import lombok.Setter;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.PostConstruct;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.util.EnumSet;
+
+@RestController
+@RequestMapping("/agv")
+public class AgvOpenController extends BaseController {
+
+    @Autowired
+    AgvWrkMastService agvWrkMastService;
+
+    @PostMapping("/task/event/status")
+    public R taskEventStaus(@RequestBody AgvTaskCallBackParam param){
+
+        int wrkMastCount = agvWrkMastService.selectCount(new EntityWrapper<AgvWrkMast>().eq("wrk_no", param.getTaskCode()));
+        if(wrkMastCount < 1){
+            return R.error("浠诲姟缂栧彿閿欒");
+        }
+
+        AgvTask agvTask = AgvTask.valueOf(param.getEventType());
+        Class<AgvTask> clz = AgvTask.class;
+        try {
+            Method method = clz.getDeclaredMethod(param.getStatus(),AgvTaskCallBackParam.class);
+            method.invoke(agvTask,param);
+        } catch (NoSuchMethodException e) {
+            return R.error("浠诲姟鐘舵�乻tatus鍙傛暟鏈夎");
+        } catch (InvocationTargetException e) {
+            e.printStackTrace();
+            return R.error();
+        } catch (IllegalAccessException e) {
+            e.printStackTrace();
+            return R.error();
+        }
+        return R.ok();
+    }
+
+}
+
+enum AgvTask{
+
+    /**
+     * 涓婃姤浠诲姟鐘舵��
+     */
+    task{
+        @Transactional
+        public void success(AgvTaskCallBackParam param) {
+            int wrkNo = Integer.valueOf(param.getTaskCode());
+            String barcode = agvWrkMastService.selectById(wrkNo).getBarcode();
+            //鐢熸垚AGV宸ヤ綔鍘嗗彶妗�
+            agvWrkMastLogService.save(wrkNo);
+            //鐢熸垚AGV宸ヤ綔鏄庣粏鍘嗗彶妗�
+            agvWrkDetlLogService.save(wrkNo);
+            //鍒犻櫎AGV宸ヤ綔妗�
+            agvWrkMastService.deleteById(wrkNo);
+            //鍒犻櫎AGV宸ヤ綔鏄庣粏妗�
+            agvWrkDetlService.delete(new EntityWrapper<AgvWrkDetl>().eq("wrk_no",wrkNo));
+            //鐢熸垚鍏ュ簱閫氱煡鍘嗗彶妗�
+            agvWaitPakinLogService.save(barcode);
+            //鍒犻櫎鍏ュ簱閫氱煡妗�
+            agvWaitPakinService.delete(new EntityWrapper<AgvWaitPakin>().eq("zpallet",barcode));
+
+        }
+
+        public void fail(AgvTaskCallBackParam param) {
+
+        }
+
+        public void cancel(AgvTaskCallBackParam param) {
+
+        }
+
+        public void suspend(AgvTaskCallBackParam param) {
+
+        }
+    },
+    /**
+     * 涓婃姤浠诲姟鍒嗛厤缁欐満鍣ㄤ汉
+     */
+    task_allocated{
+        @Transactional
+        public void success(AgvTaskCallBackParam param) {
+
+        }
+
+        public void fail(AgvTaskCallBackParam param) {
+
+        }
+
+        public void cancel(AgvTaskCallBackParam param) {
+
+        }
+
+        public void suspend(AgvTaskCallBackParam param) {
+
+        }
+    },
+    /**
+     * 涓婃姤鍙栫鐘舵��
+     */
+    tote_load{
+        @Transactional
+        public void success(AgvTaskCallBackParam param) {
+            //淇敼婧愮珯鐐圭姸鎬佷负O.绌猴紝浠ュ強瑙g粦鎵樼洏鏉$爜
+            agvBasDevpService.updateLocStsAndBarcodeByDevNo(param.getStationCode(),"O","");
+            //淇敼AGV宸ヤ綔妗g殑宸ヤ綔鐘舵�佷负2锛堣澶囦笂璧帮級
+            agvWrkMastService.updateWrkStsByWrkNo(Integer.valueOf(param.getTaskCode()),2);
+            //淇敼AGV鍏ュ簱閫氱煡妗g姸鎬�
+            agvWaitPakinService.updateIoStatus(Integer.valueOf(param.getTaskCode()),"Y");
+
+        }
+
+        public void fail(AgvTaskCallBackParam param) {
+
+        }
+
+        public void cancel(AgvTaskCallBackParam param) {
+
+        }
+
+        public void suspend(AgvTaskCallBackParam param) {
+
+        }
+    },
+    /**
+     * 涓婃姤鏀剧鐘舵��
+     */
+    tote_unload{
+        @Transactional
+        public void success(AgvTaskCallBackParam param) {
+            int wrkNo = Integer.valueOf(param.getTaskCode());
+            String barcode = agvWrkMastService.selectById(wrkNo).getBarcode();
+            //淇敼鐩爣搴撲綅鐘舵�佷负F.鍦ㄥ簱
+            agvLocMastService.updateLocStsByLocNo(param.getLocationCode(),"F");
+            //鏇存柊鐩爣搴撲綅鏄庣粏
+            agvLocDetlService.addLocDetlInfo(param.getLocationCode(),wrkNo);
+            //淇敼宸ヤ綔妗g姸鎬佷负14锛堝叆搴撳畬鎴愶級
+            agvWrkMastService.updateWrkStsByWrkNo(wrkNo,14);
+        }
+
+        public void fail(AgvTaskCallBackParam param) {
+
+        }
+
+        public void cancel(AgvTaskCallBackParam param) {
+
+        }
+
+        public void suspend(AgvTaskCallBackParam param) {
+
+        }
+    },
+    robot_reach{
+        @Transactional
+        public void success(AgvTaskCallBackParam param) {
+
+        }
+
+        public void fail(AgvTaskCallBackParam param) {
+
+        }
+
+        public void cancel(AgvTaskCallBackParam param) {
+
+        }
+
+        public void suspend(AgvTaskCallBackParam param) {
+
+        }
+    },
+    weight{
+        @Transactional
+        public void success(AgvTaskCallBackParam param) {
+
+        }
+
+        public void fail(AgvTaskCallBackParam param) {
+
+        }
+
+        public void cancel(AgvTaskCallBackParam param) {
+
+        }
+
+        public void suspend(AgvTaskCallBackParam param) {
+
+        }
+    },
+    rfid{
+        @Transactional
+        public void success(AgvTaskCallBackParam param) {
+
+        }
+
+        public void fail(AgvTaskCallBackParam param) {
+
+        }
+
+        public void cancel(AgvTaskCallBackParam param) {
+
+        }
+
+        public void suspend(AgvTaskCallBackParam param) {
+
+        }
+    };
+
+    //浠诲姟鐘舵�佷负鎴愬姛
+    public abstract void success(AgvTaskCallBackParam param);
+    //浠诲姟鐘舵�佷负澶辫触
+    public abstract void fail(AgvTaskCallBackParam param);
+    //浠诲姟鐘舵�佷负鍙栨秷
+    public abstract void cancel(AgvTaskCallBackParam param);
+    //浠诲姟鐘舵�佷负鎸傝捣
+    public abstract void suspend(AgvTaskCallBackParam param);
+
+    @Setter
+    AgvBasDevpService agvBasDevpService;
+    @Setter
+    AgvLocMastService agvLocMastService;
+    @Setter
+    AgvLocDetlService agvLocDetlService;
+    @Setter
+    AgvWrkMastService agvWrkMastService;
+    @Setter
+    AgvWrkDetlService agvWrkDetlService;
+    @Setter
+    AgvWaitPakinService agvWaitPakinService;
+    @Setter
+    AgvWaitPakinLogService agvWaitPakinLogService;
+    @Setter
+    AgvWrkMastLogService agvWrkMastLogService;
+    @Setter
+    AgvWrkDetlLogService agvWrkDetlLogService;
+
+    @Component
+    public static class ReportTypeServiceInjector {
+        @Autowired
+        AgvBasDevpService agvBasDevpService;
+        @Autowired
+        AgvLocMastService agvLocMastService;
+        @Autowired
+        AgvLocDetlService agvLocDetlService;
+        @Autowired
+        AgvWrkMastService agvWrkMastService;
+        @Autowired
+        AgvWrkDetlService agvWrkDetlService;
+        @Autowired
+        AgvWaitPakinService agvWaitPakinService;
+        @Autowired
+        AgvWaitPakinLogService agvWaitPakinLogService;
+        @Autowired
+        AgvWrkMastLogService agvWrkMastLogService;
+        @Autowired
+        AgvWrkDetlLogService agvWrkDetlLogService;
+
+        @PostConstruct
+        public void postConstruct(){
+            for(AgvTask task : EnumSet.allOf(AgvTask.class)){
+                task.setAgvBasDevpService(agvBasDevpService);
+                task.setAgvLocDetlService(agvLocDetlService);
+                task.setAgvLocMastService(agvLocMastService);
+                task.setAgvWrkMastService(agvWrkMastService);
+                task.setAgvWaitPakinService(agvWaitPakinService);
+                task.setAgvWaitPakinLogService(agvWaitPakinLogService);
+                task.setAgvWrkMastLogService(agvWrkMastLogService);
+                task.setAgvWrkDetlLogService(agvWrkDetlLogService);
+                task.setAgvWrkDetlService(agvWrkDetlService);
+            }
+        }
+
+    }
+}
+
+
diff --git a/src/main/java/com/zy/asrs/controller/AgvWaitPakinLogController.java b/src/main/java/com/zy/asrs/controller/AgvWaitPakinLogController.java
new file mode 100644
index 0000000..bd543eb
--- /dev/null
+++ b/src/main/java/com/zy/asrs/controller/AgvWaitPakinLogController.java
@@ -0,0 +1,135 @@
+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.annotations.ManagerAuth;
+import com.core.common.BaseRes;
+import com.core.common.Cools;
+import com.core.common.DateUtils;
+import com.core.common.R;
+import com.zy.asrs.entity.AgvWaitPakinLog;
+import com.zy.asrs.entity.WaitPakinLog;
+import com.zy.asrs.service.AgvWaitPakinLogService;
+import com.zy.common.web.BaseController;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@RestController
+@RequestMapping("/agv")
+public class AgvWaitPakinLogController extends BaseController {
+
+    @Autowired
+    private AgvWaitPakinLogService waitPakinLogService;
+
+    @RequestMapping(value = "/waitPakinLog/{id}/auth")
+    @ManagerAuth
+    public R get(@PathVariable("id") String id) {
+        return R.ok(waitPakinLogService.selectById(String.valueOf(id)));
+    }
+
+    @RequestMapping(value = "/waitPakinLog/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){
+        EntityWrapper<AgvWaitPakinLog> wrapper = new EntityWrapper<>();
+        excludeTrash(param);
+        convert(param, wrapper);
+        if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));}
+        else {
+            wrapper.orderBy("modi_time", false);
+        }
+        return R.ok(waitPakinLogService.selectPage(new Page<>(curr, limit), wrapper));
+    }
+
+    private void convert(Map<String, Object> map, EntityWrapper 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 = "/waitPakinLog/add/auth")
+    @ManagerAuth
+    public R add(AgvWaitPakinLog waitPakinLog) {
+        waitPakinLogService.insert(waitPakinLog);
+        return R.ok();
+    }
+
+	@RequestMapping(value = "/waitPakinLog/update/auth")
+	@ManagerAuth
+    public R update(AgvWaitPakinLog waitPakinLog){
+        if (Cools.isEmpty(waitPakinLog)){
+            return R.error();
+        }
+        waitPakinLogService.updateById(waitPakinLog);
+        return R.ok();
+    }
+
+    @RequestMapping(value = "/waitPakinLog/delete/auth")
+    @ManagerAuth
+    public R delete(@RequestParam String param){
+        List<AgvWaitPakinLog> list = JSONArray.parseArray(param, AgvWaitPakinLog.class);
+        if (Cools.isEmpty(list)){
+            return R.error();
+        }
+        for (AgvWaitPakinLog entity : list){
+            waitPakinLogService.delete(new EntityWrapper<>(entity));
+        }
+        return R.ok();
+    }
+
+    @RequestMapping(value = "/waitPakinLog/export/auth")
+    @ManagerAuth
+    public R export(@RequestBody JSONObject param){
+        EntityWrapper<AgvWaitPakinLog> wrapper = new EntityWrapper<>();
+        List<String> fields = JSONObject.parseArray(param.getJSONArray("fields").toJSONString(), String.class);
+        Map<String, Object> map = excludeTrash(param.getJSONObject("waitPakinLog"));
+        convert(map, wrapper);
+        List<AgvWaitPakinLog> list = waitPakinLogService.selectList(wrapper);
+        return R.ok(exportSupport(list, fields));
+    }
+
+    @RequestMapping(value = "/waitPakinLogQuery/auth")
+    @ManagerAuth
+    public R query(String condition) {
+        EntityWrapper<AgvWaitPakinLog> wrapper = new EntityWrapper<>();
+        wrapper.like("id", condition);
+        Page<AgvWaitPakinLog> page = waitPakinLogService.selectPage(new Page<>(0, 10), wrapper);
+        List<Map<String, Object>> result = new ArrayList<>();
+        for (AgvWaitPakinLog waitPakinLog : page.getRecords()){
+            Map<String, Object> map = new HashMap<>();
+            map.put("id", waitPakinLog.getZpallet());
+            map.put("value", waitPakinLog.getZpallet());
+            result.add(map);
+        }
+        return R.ok(result);
+    }
+
+    @RequestMapping(value = "/waitPakinLog/check/column/auth")
+    @ManagerAuth
+    public R query(@RequestBody JSONObject param) {
+        Wrapper<AgvWaitPakinLog> wrapper = new EntityWrapper<AgvWaitPakinLog>().eq(humpToLine(String.valueOf(param.get("key"))), param.get("val"));
+        if (null != waitPakinLogService.selectOne(wrapper)){
+            return R.parse(BaseRes.REPEAT).add(getComment(WaitPakinLog.class, String.valueOf(param.get("key"))));
+        }
+        return R.ok();
+    }
+
+}
diff --git a/src/main/java/com/zy/asrs/controller/AgvWrkDetlLogController.java b/src/main/java/com/zy/asrs/controller/AgvWrkDetlLogController.java
new file mode 100644
index 0000000..11fca42
--- /dev/null
+++ b/src/main/java/com/zy/asrs/controller/AgvWrkDetlLogController.java
@@ -0,0 +1,154 @@
+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.annotations.ManagerAuth;
+import com.core.common.BaseRes;
+import com.core.common.Cools;
+import com.core.common.DateUtils;
+import com.core.common.R;
+import com.zy.asrs.entity.AgvWrkDetlLog;
+import com.zy.asrs.entity.WrkDetlLog;
+import com.zy.asrs.service.AgvWrkDetlLogService;
+import com.zy.common.web.BaseController;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@RestController
+@RequestMapping("/agv")
+public class AgvWrkDetlLogController extends BaseController {
+
+    @Autowired
+    private AgvWrkDetlLogService wrkDetlLogService;
+
+    @RequestMapping(value = "/wrkDetlLog/{id}/auth")
+    @ManagerAuth
+    public R get(@PathVariable("id") String id) {
+        return R.ok(wrkDetlLogService.selectById(String.valueOf(id)));
+    }
+
+    /**
+     * 鏍规嵁宸ヤ綔涓绘。鏌ョ湅鏄庣粏鏃讹紝宸ヤ綔鍙疯繃婊ゆ槑缁�
+     */
+    @RequestMapping(value = "/wrkDetlLogByMast/list/auth")
+    @ManagerAuth
+    public R list1(@RequestParam(defaultValue = "1")Integer curr,
+                   @RequestParam(defaultValue = "10")Integer limit,
+                   @RequestParam Integer wrk_no,
+                   @RequestParam String ioTime){
+        EntityWrapper<AgvWrkDetlLog> wrapper = new EntityWrapper<>();
+        if(!Cools.isEmpty(wrk_no) && wrk_no != 0){
+            wrapper.eq("wrk_no",wrk_no);
+        }
+        if(!Cools.isEmpty(ioTime)){
+            wrapper.eq("io_time", DateUtils.convert(ioTime, DateUtils.yyyyMMddHHmmsssss_F));
+        }
+        return R.ok(wrkDetlLogService.selectPage(new Page<>(curr, limit), wrapper));
+    }
+
+    @RequestMapping(value = "/wrkDetlLog/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){
+        EntityWrapper<AgvWrkDetlLog> wrapper = new EntityWrapper<>();
+        excludeTrash(param);
+        convert(param, wrapper);
+        if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));}
+        else {
+            wrapper.orderBy("modi_time", false);
+        }
+        return R.ok(wrkDetlLogService.selectPage(new Page<>(curr, limit), wrapper));
+    }
+
+    private void convert(Map<String, Object> map, EntityWrapper 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 = "/wrkDetlLog/add/auth")
+    @ManagerAuth
+    public R add(AgvWrkDetlLog wrkDetlLog) {
+        wrkDetlLogService.insert(wrkDetlLog);
+        return R.ok();
+    }
+
+	@RequestMapping(value = "/wrkDetlLog/update/auth")
+	@ManagerAuth
+    public R update(AgvWrkDetlLog wrkDetlLog){
+        if (Cools.isEmpty(wrkDetlLog) || null==wrkDetlLog.getWrkNo()){
+            return R.error();
+        }
+        wrkDetlLogService.updateById(wrkDetlLog);
+        return R.ok();
+    }
+
+    @RequestMapping(value = "/wrkDetlLog/delete/auth")
+    @ManagerAuth
+    public R delete(@RequestParam String param){
+        List<AgvWrkDetlLog> list = JSONArray.parseArray(param, AgvWrkDetlLog.class);
+        if (Cools.isEmpty(list)){
+            return R.error();
+        }
+        for (AgvWrkDetlLog entity : list){
+            wrkDetlLogService.delete(new EntityWrapper<>(entity));
+        }
+        return R.ok();
+    }
+
+    @RequestMapping(value = "/wrkDetlLog/export/auth")
+    @ManagerAuth
+    public R export(@RequestBody JSONObject param){
+        EntityWrapper<AgvWrkDetlLog> wrapper = new EntityWrapper<>();
+        List<String> fields = JSONObject.parseArray(param.getJSONArray("fields").toJSONString(), String.class);
+        Map<String, Object> map = excludeTrash(param.getJSONObject("wrkDetlLog"));
+        convert(map, wrapper);
+        List<AgvWrkDetlLog> list = wrkDetlLogService.selectList(wrapper);
+        return R.ok(exportSupport(list, fields));
+    }
+
+    @RequestMapping(value = "/wrkDetlLogQuery/auth")
+    @ManagerAuth
+    public R query(String condition) {
+        EntityWrapper<AgvWrkDetlLog> wrapper = new EntityWrapper<>();
+        wrapper.like("id", condition);
+        Page<AgvWrkDetlLog> page = wrkDetlLogService.selectPage(new Page<>(0, 10), wrapper);
+        List<Map<String, Object>> result = new ArrayList<>();
+        for (AgvWrkDetlLog wrkDetlLog : page.getRecords()){
+            Map<String, Object> map = new HashMap<>();
+            map.put("id", wrkDetlLog.getWrkNo());
+            map.put("value", wrkDetlLog.getWrkNo());
+            result.add(map);
+        }
+        return R.ok(result);
+    }
+
+    @RequestMapping(value = "/wrkDetlLog/check/column/auth")
+    @ManagerAuth
+    public R query(@RequestBody JSONObject param) {
+        Wrapper<AgvWrkDetlLog> wrapper = new EntityWrapper<AgvWrkDetlLog>().eq(humpToLine(String.valueOf(param.get("key"))), param.get("val"));
+        if (null != wrkDetlLogService.selectOne(wrapper)){
+            return R.parse(BaseRes.REPEAT).add(getComment(WrkDetlLog.class, String.valueOf(param.get("key"))));
+        }
+        return R.ok();
+    }
+
+}
diff --git a/src/main/java/com/zy/asrs/controller/AgvWrkMastController.java b/src/main/java/com/zy/asrs/controller/AgvWrkMastController.java
index fd5a1cd..8726947 100644
--- a/src/main/java/com/zy/asrs/controller/AgvWrkMastController.java
+++ b/src/main/java/com/zy/asrs/controller/AgvWrkMastController.java
@@ -1,5 +1,6 @@
 package com.zy.asrs.controller;
 
+import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
@@ -12,12 +13,17 @@
 import com.core.common.R;
 import com.zy.asrs.entity.AgvWrkMast;
 import com.zy.asrs.entity.param.AgvTaskCreateParam;
+import com.zy.asrs.entity.param.AgvTaskParam;
+import com.zy.asrs.entity.param.AgvTaskkDescribeParam;
 import com.zy.asrs.service.AgvWrkMastService;
+import com.zy.common.utils.HttpHandler;
 import com.zy.common.web.BaseController;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+import java.io.IOException;
 import java.util.*;
+import java.util.stream.Collectors;
 
 @RestController
 @RequestMapping("/agv")
@@ -157,22 +163,47 @@
 
     @RequestMapping(value = "/wrkMast/startWrk/auth")
     @ManagerAuth(memo = "宸ヤ綔妗e紑濮嬩换鍔�")
-    public R startWrk(@RequestParam String param){
+    public R startWrk(@RequestParam String param) throws IOException {
         List<AgvWrkMast> agvWrkMastList = JSONArray.parseArray(param, AgvWrkMast.class);
         if (Cools.isEmpty(agvWrkMastList)){
             return R.error();
         }
 
         AgvTaskCreateParam agvTaskCreateParam = new AgvTaskCreateParam();
+        agvTaskCreateParam.setTaskType("putaway");
 
-//        agvWrkMastList.stream().map(agvWrkMast -> {
-//            AgvTaskParam agvTaskParam = new AgvTaskParam();
-//            AgvTaskkDescribeParam agvTaskkDescribeParam = new AgvTaskkDescribeParam();
-//            agvTaskParam.setTaskCode(agvWrkMast.getWrkNo().toString());
-//            agvTaskParam.setTaskPriority(agvWrkMast.getIoPri().intValue());
-//            agvTaskParam.setTaskkDescribe(agvTaskkDescribeParam);
-//            agvTaskkDescribeParam.setFromLocationCode(agvWrkMast.);
-//        }).collect(Collectors.toList());
+        List<AgvTaskParam> agvTaskParamList = agvWrkMastList.stream().map(agvWrkMast -> {
+            AgvTaskParam agvTaskParam = new AgvTaskParam();
+            AgvTaskkDescribeParam agvTaskkDescribeParam = new AgvTaskkDescribeParam();
+            agvTaskParam.setTaskDescribe(agvTaskkDescribeParam);
+            //AgvTaskParam
+            agvTaskParam.setTaskCode(agvWrkMast.getWrkNo().toString());
+            agvTaskParam.setTaskPriority(agvWrkMast.getIoPri().intValue());
+            //AgvTaskkDescribeParam
+            agvTaskkDescribeParam.setFromLocationCode(agvWrkMast.getSourceLocNo());
+            agvTaskkDescribeParam.setToLocationCode(agvWrkMast.getLocNo());
+            agvTaskkDescribeParam.setContainerCode(agvWrkMast.getBarcode());
+            return agvTaskParam;
+        }).collect(Collectors.toList());
+
+        agvTaskCreateParam.setTasks(agvTaskParamList);
+
+        String response = new HttpHandler.Builder()
+                .setUri("localhost:8080")
+                .setPath("test/task/create")
+                .setJson(JSONObject.toJSONString(agvTaskCreateParam))
+                .build()
+                .doPost();
+
+        JSONObject jsonObject = JSON.parseObject(response);
+        int code = (int) jsonObject.get("code");
+
+        System.out.println(response);
+
+        if(code == 0){
+
+        }
+
 
         return R.ok();
     }
diff --git a/src/main/java/com/zy/asrs/controller/AgvWrkMastLogController.java b/src/main/java/com/zy/asrs/controller/AgvWrkMastLogController.java
new file mode 100644
index 0000000..71e7913
--- /dev/null
+++ b/src/main/java/com/zy/asrs/controller/AgvWrkMastLogController.java
@@ -0,0 +1,145 @@
+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.annotations.ManagerAuth;
+import com.core.common.BaseRes;
+import com.core.common.Cools;
+import com.core.common.DateUtils;
+import com.core.common.R;
+import com.zy.asrs.entity.AgvWrkMastLog;
+import com.zy.asrs.entity.WrkMastLog;
+import com.zy.asrs.service.AgvWrkMastLogService;
+import com.zy.common.web.BaseController;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@RestController
+@RequestMapping("/agv")
+public class AgvWrkMastLogController extends BaseController {
+
+    @Autowired
+    private AgvWrkMastLogService wrkMastLogService;
+
+    @RequestMapping(value = "/wrkMastLog/{id}/auth")
+    @ManagerAuth
+    public R get(@PathVariable("id") String id) {
+        return R.ok(wrkMastLogService.selectById(String.valueOf(id)));
+    }
+
+    @RequestMapping(value = "/wrkMastLog/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){
+        excludeTrash(param);
+        EntityWrapper<AgvWrkMastLog> wrapper = new EntityWrapper<>();
+        convert(param, wrapper);
+        allLike(AgvWrkMastLog.class, param.keySet(), wrapper, condition);
+        if (!Cools.isEmpty(orderByField)){
+            if (orderByField.endsWith("$")){
+                orderByField = orderByField.substring(0, orderByField.length()-1);
+            }
+            wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));
+        }else {
+            wrapper.orderBy("modi_time", false);
+        }
+        return R.ok(wrkMastLogService.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 {
+                if (entry.getKey().equals("manu_type")) {
+                    wrapper.like(entry.getKey(), val);
+                } else {
+                    wrapper.eq(entry.getKey(), val);
+                }
+            }
+        }
+    }
+
+    @RequestMapping(value = "/wrkMastLog/add/auth")
+    @ManagerAuth(memo = "宸ヤ綔鍘嗗彶妗f坊鍔�")
+    public R add(AgvWrkMastLog wrkMastLog) {
+        wrkMastLogService.insert(wrkMastLog);
+        return R.ok();
+    }
+
+	@RequestMapping(value = "/wrkMastLog/update/auth")
+	@ManagerAuth(memo = "宸ヤ綔鍘嗗彶妗d慨鏀�")
+    public R update(AgvWrkMastLog wrkMastLog){
+        if (Cools.isEmpty(wrkMastLog) || null==wrkMastLog.getId()){
+            return R.error();
+        }
+        wrkMastLogService.updateById(wrkMastLog);
+        return R.ok();
+    }
+
+    @RequestMapping(value = "/wrkMastLog/delete/auth")
+    @ManagerAuth(memo = "宸ヤ綔鍘嗗彶妗e垹闄�")
+    public R delete(@RequestParam String param){
+        List<AgvWrkMastLog> list = JSONArray.parseArray(param, AgvWrkMastLog.class);
+        if (Cools.isEmpty(list)){
+            return R.error();
+        }
+        for (AgvWrkMastLog entity : list){
+            wrkMastLogService.delete(new EntityWrapper<>(entity));
+        }
+        return R.ok();
+    }
+
+    @RequestMapping(value = "/wrkMastLog/export/auth")
+    @ManagerAuth(memo = "宸ヤ綔鍘嗗彶妗e鍑�")
+    public R export(@RequestBody JSONObject param){
+        List<String> fields = JSONObject.parseArray(param.getJSONArray("fields").toJSONString(), String.class);
+        EntityWrapper<AgvWrkMastLog> wrapper = new EntityWrapper<>();
+        Map<String, Object> map = excludeTrash(param.getJSONObject("wrkMastLog"));
+        convert(map, wrapper);
+        List<AgvWrkMastLog> list = wrkMastLogService.selectList(wrapper);
+        return R.ok(exportSupport(list, fields));
+    }
+
+    @RequestMapping(value = "/wrkMastLogQuery/auth")
+    @ManagerAuth
+    public R query(String condition) {
+        EntityWrapper<AgvWrkMastLog> wrapper = new EntityWrapper<>();
+        wrapper.like("id", condition);
+        Page<AgvWrkMastLog> page = wrkMastLogService.selectPage(new Page<>(0, 10), wrapper);
+        List<Map<String, Object>> result = new ArrayList<>();
+        for (AgvWrkMastLog wrkMastLog : page.getRecords()){
+            Map<String, Object> map = new HashMap<>();
+            map.put("id", wrkMastLog.getId());
+            map.put("value", wrkMastLog.getId());
+            result.add(map);
+        }
+        return R.ok(result);
+    }
+
+    @RequestMapping(value = "/wrkMastLog/check/column/auth")
+    @ManagerAuth
+    public R query(@RequestBody JSONObject param) {
+        Wrapper<AgvWrkMastLog> wrapper = new EntityWrapper<AgvWrkMastLog>().eq(humpToLine(String.valueOf(param.get("key"))), param.get("val"));
+        if (null != wrkMastLogService.selectOne(wrapper)){
+            return R.parse(BaseRes.REPEAT).add(getComment(WrkMastLog.class, String.valueOf(param.get("key"))));
+        }
+        return R.ok();
+    }
+
+}
diff --git a/src/main/java/com/zy/asrs/entity/AgvWaitPakinLog.java b/src/main/java/com/zy/asrs/entity/AgvWaitPakinLog.java
new file mode 100644
index 0000000..28ebb8c
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/AgvWaitPakinLog.java
@@ -0,0 +1,218 @@
+package com.zy.asrs.entity;
+
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.annotations.TableName;
+import com.core.common.Cools;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+@Data
+@TableName("agv_cust_wait_pakin_log")
+public class AgvWaitPakinLog implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value= "鎵樼洏鏉$爜")
+    private String zpallet;
+
+    @ApiModelProperty(value= "鏁伴噺")
+    private Double anfme;
+
+    @ApiModelProperty(value= "搴撲綅鍙�")
+    @TableField("loc_no")
+    private String locNo;
+
+    @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;
+
+    @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= "闀垮害")
+    private Double length;
+
+    @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;
+
+    @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;
+
+    @ApiModelProperty(value= "鍒惰喘 1: 鍒堕��  2: 閲囪喘  3: 澶栧崗  ")
+    private Integer source;
+
+    @ApiModelProperty(value= "瑕佹眰妫�楠� 1: 鏄�  0: 鍚�  ")
+    private Integer inspect;
+
+    @ApiModelProperty(value= "鍗遍櫓鍝� 1: 鏄�  0: 鍚�  ")
+    private Integer danger;
+
+    @ApiModelProperty(value= "鐘舵��")
+    private String status;
+
+    @ApiModelProperty(value= "鍏ュ嚭鐘舵��")
+    @TableField("io_status")
+    private String ioStatus;
+
+    @ApiModelProperty(value= "淇敼鏃堕棿")
+    @TableField("modi_time")
+    private Date modiTime;
+
+    @ApiModelProperty(value= "淇敼浜哄憳")
+    @TableField("modi_user")
+    private Long modiUser;
+
+    @ApiModelProperty(value= "娣诲姞鏃堕棿")
+    @TableField("appe_time")
+    private Date appeTime;
+
+    @ApiModelProperty(value= "鍒涘缓鑰�")
+    @TableField("appe_user")
+    private Long appeUser;
+
+    @ApiModelProperty(value= "澶囨敞")
+    private String memo;
+
+    public String getBeBatch$(){
+        if (null == this.beBatch){ return null; }
+        switch (this.beBatch){
+            case 1:
+                return "鏄�";
+            case 0:
+                return "鍚�";
+            default:
+                return String.valueOf(this.beBatch);
+        }
+    }
+
+    public String getSource$(){
+        if (null == this.source){ return null; }
+        switch (this.source){
+            case 1:
+                return "鍒堕��";
+            case 2:
+                return "閲囪喘";
+            case 3:
+                return "澶栧崗";
+            default:
+                return String.valueOf(this.source);
+        }
+    }
+
+    public String getInspect$(){
+        if (null == this.inspect){ return null; }
+        switch (this.inspect){
+            case 1:
+                return "鏄�";
+            case 0:
+                return "鍚�";
+            default:
+                return String.valueOf(this.inspect);
+        }
+    }
+
+    public String getDanger$(){
+        if (null == this.danger){ return null; }
+        switch (this.danger){
+            case 1:
+                return "鏄�";
+            case 0:
+                return "鍚�";
+            default:
+                return String.valueOf(this.danger);
+        }
+    }
+
+    public String getModiTime$(){
+        if (Cools.isEmpty(this.modiTime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.modiTime);
+    }
+
+    public String getAppeTime$(){
+        if (Cools.isEmpty(this.appeTime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.appeTime);
+    }
+
+}
diff --git a/src/main/java/com/zy/asrs/entity/AgvWrkDetlLog.java b/src/main/java/com/zy/asrs/entity/AgvWrkDetlLog.java
new file mode 100644
index 0000000..baff0d7
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/AgvWrkDetlLog.java
@@ -0,0 +1,361 @@
+package com.zy.asrs.entity;
+
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.annotations.TableName;
+import com.core.common.Cools;
+import com.core.common.SpringUtils;
+import com.zy.system.entity.User;
+import com.zy.system.service.UserService;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+@Data
+@TableName("agv_wrk_detl_log")
+public class AgvWrkDetlLog implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 宸ヤ綔鍙�
+     */
+    @ApiModelProperty(value= "宸ヤ綔鍙�")
+    @TableField("wrk_no")
+    private Integer wrkNo;
+
+    /**
+     * 宸ヤ綔鏃堕棿
+     */
+    @ApiModelProperty(value= "宸ヤ綔鏃堕棿")
+    @TableField("io_time")
+    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= "闀垮害")
+    private Double length;
+
+    /**
+     * 浣撶Н
+     */
+    @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")
+    private Date modiTime;
+
+    /**
+     * 鍒涘缓鑰�
+     */
+    @ApiModelProperty(value= "鍒涘缓鑰�")
+    @TableField("appe_user")
+    private Long appeUser;
+
+    /**
+     * 娣诲姞鏃堕棿
+     */
+    @ApiModelProperty(value= "娣诲姞鏃堕棿")
+    @TableField("appe_time")
+    private Date appeTime;
+
+    /**
+     * 澶囨敞
+     */
+    @ApiModelProperty(value= "澶囨敞")
+    private String memo;
+
+    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.getUsername());
+        }
+        return null;
+    }
+
+    public String getModiTime$(){
+        if (Cools.isEmpty(this.modiTime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.modiTime);
+    }
+
+    public String getAppeUser$(){
+        UserService service = SpringUtils.getBean(UserService.class);
+        User user = service.selectById(this.appeUser);
+        if (!Cools.isEmpty(user)){
+            return String.valueOf(user.getUsername());
+        }
+        return null;
+    }
+
+    public String getAppeTime$(){
+        if (Cools.isEmpty(this.appeTime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.appeTime);
+    }
+
+
+}
diff --git a/src/main/java/com/zy/asrs/entity/AgvWrkMastLog.java b/src/main/java/com/zy/asrs/entity/AgvWrkMastLog.java
new file mode 100644
index 0000000..e2935e6
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/AgvWrkMastLog.java
@@ -0,0 +1,519 @@
+package com.zy.asrs.entity;
+
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableName;
+import com.baomidou.mybatisplus.enums.IdType;
+import com.core.common.Cools;
+import com.core.common.SpringUtils;
+import com.zy.asrs.service.*;
+import com.zy.system.entity.User;
+import com.zy.system.service.UserService;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+@Data
+@TableName("agv_wrk_mast_log")
+public class AgvWrkMastLog implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 缂栧彿
+     */
+    @ApiModelProperty(value= "缂栧彿")
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 宸ヤ綔鍙�
+     */
+    @ApiModelProperty(value= "宸ヤ綔鍙�")
+    @TableField("wrk_no")
+    private Integer wrkNo;
+
+    @ApiModelProperty(value= "")
+    @TableField("inv_wh")
+    private String invWh;
+
+    @ApiModelProperty(value= "")
+    private Date ymd;
+
+    @ApiModelProperty(value= "")
+    private String mk;
+
+    @ApiModelProperty(value= "")
+    @TableField("whs_type")
+    private Integer whsType;
+
+    /**
+     * 宸ヤ綔鐘舵��
+     */
+    @ApiModelProperty(value= "宸ヤ綔鐘舵��")
+    @TableField("wrk_sts")
+    private Long wrkSts;
+
+    /**
+     * 鍏ュ嚭搴撶被鍨�
+     */
+    @ApiModelProperty(value= "鍏ュ嚭搴撶被鍨�")
+    @TableField("io_type")
+    private Integer ioType;
+
+    /**
+     * 鍫嗗灈鏈哄彿
+     */
+    @ApiModelProperty(value= "鍫嗗灈鏈哄彿")
+    @TableField("crn_no")
+    private Integer crnNo;
+
+    /**
+     * 绌挎杞�
+     */
+    @ApiModelProperty(value= "绌挎杞�")
+    @TableField("ste_no")
+    private Integer steNo;
+
+    /**
+     * 杈圭紭搴撲綅
+     */
+    @ApiModelProperty(value= "杈圭紭搴撲綅")
+    @TableField("out_most")
+    private Integer outMost;
+
+    @ApiModelProperty(value= "")
+    @TableField("sheet_no")
+    private String sheetNo;
+
+    /**
+     * 浼樺厛绾�
+     */
+    @ApiModelProperty(value= "浼樺厛绾�")
+    @TableField("io_pri")
+    private Double ioPri;
+
+    @ApiModelProperty(value= "")
+    @TableField("wrk_date")
+    private Date wrkDate;
+
+    /**
+     * 鐩爣搴撲綅
+     */
+    @ApiModelProperty(value= "鐩爣搴撲綅")
+    @TableField("loc_no")
+    private String locNo;
+
+    /**
+     * 鐩爣绔�
+     */
+    @ApiModelProperty(value= "鐩爣绔�")
+    @TableField("sta_no")
+    private 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枡
+     */
+    @ApiModelProperty(value= "鎷f枡")
+    private String picking;
+
+    @ApiModelProperty(value= "")
+    @TableField("link_mis")
+    private String linkMis;
+
+    @ApiModelProperty(value= "")
+    @TableField("online_yn")
+    private String onlineYn;
+
+    @ApiModelProperty(value= "")
+    @TableField("upd_mk")
+    private String updMk;
+
+    /**
+     * 閫�鍑�
+     */
+    @ApiModelProperty(value= "閫�鍑�")
+    @TableField("exit_mk")
+    private String exitMk;
+
+    @ApiModelProperty(value= "")
+    @TableField("plt_type")
+    private Integer pltType;
+
+    /**
+     * 绌烘澘
+     */
+    @ApiModelProperty(value= "绌烘澘")
+    @TableField("empty_mk")
+    private String emptyMk;
+
+    /**
+     * 宸ヤ綔鏃堕棿
+     */
+    @ApiModelProperty(value= "宸ヤ綔鏃堕棿")
+    @TableField("io_time")
+    private Date ioTime;
+
+    @ApiModelProperty(value= "")
+    @TableField("ctn_type")
+    private Integer ctnType;
+
+    @ApiModelProperty(value= "")
+    private String packed;
+
+    @ApiModelProperty(value= "")
+    @TableField("ove_mk")
+    private String oveMk;
+
+    @ApiModelProperty(value= "")
+    @TableField("mtn_type")
+    private Double mtnType;
+
+    @ApiModelProperty(value= "")
+    @TableField("user_no")
+    private String userNo;
+
+    /**
+     * 鍫嗗灈鏈哄惎鍔ㄦ椂闂�
+     */
+    @ApiModelProperty(value= "鍫嗗灈鏈哄惎鍔ㄦ椂闂�")
+    @TableField("crn_str_time")
+    private Date crnStrTime;
+
+    /**
+     * 鍫嗗灈鏈哄仠姝㈡椂闂�
+     */
+    @ApiModelProperty(value= "鍫嗗灈鏈哄仠姝㈡椂闂�")
+    @TableField("crn_end_time")
+    private Date crnEndTime;
+
+    /**
+     * 鎷f枡鏃堕棿
+     */
+    @ApiModelProperty(value= "鎷f枡鏃堕棿")
+    @TableField("plc_str_time")
+    private Date plcStrTime;
+
+    @ApiModelProperty(value= "")
+    @TableField("crn_pos_time")
+    private Date crnPosTime;
+
+    @ApiModelProperty(value= "")
+    @TableField("load_time")
+    private Double loadTime;
+
+    @ApiModelProperty(value= "")
+    @TableField("exp_time")
+    private Double expTime;
+
+    @ApiModelProperty(value= "")
+    @TableField("ref_wrkno")
+    private Double refWrkno;
+
+    @ApiModelProperty(value= "")
+    @TableField("ref_iotime")
+    private Date refIotime;
+
+    /**
+     * 淇敼浜哄憳
+     */
+    @ApiModelProperty(value= "淇敼浜哄憳")
+    @TableField("modi_user")
+    private Long modiUser;
+
+    /**
+     * 淇敼鏃堕棿
+     */
+    @ApiModelProperty(value= "淇敼鏃堕棿")
+    @TableField("modi_time")
+    private Date modiTime;
+
+    /**
+     * 鍒涘缓鑰�
+     */
+    @ApiModelProperty(value= "鍒涘缓鑰�")
+    @TableField("appe_user")
+    private Long appeUser;
+
+    /**
+     * 娣诲姞鏃堕棿
+     */
+    @ApiModelProperty(value= "娣诲姞鏃堕棿")
+    @TableField("appe_time")
+    private Date appeTime;
+
+    @ApiModelProperty(value= "")
+    @TableField("pause_mk")
+    private String pauseMk;
+
+    @ApiModelProperty(value= "")
+    @TableField("error_time")
+    private Date errorTime;
+
+    @ApiModelProperty(value= "")
+    @TableField("error_memo")
+    private String errorMemo;
+
+    @ApiModelProperty(value= "")
+    @TableField("ctn_kind")
+    private Integer ctnKind;
+
+    @ApiModelProperty(value= "")
+    @TableField("manu_type")
+    private String manuType;
+
+    @ApiModelProperty(value= "")
+    @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")
+    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;
+
+    /**
+     * 婊℃澘
+     */
+    @ApiModelProperty(value= "婊℃澘")
+    @TableField("full_plt")
+    private String fullPlt;
+
+    /**
+     * 鍏堝叆鍝� / 鍙岄噸鍏ュ簱
+     */
+    @ApiModelProperty(value= "鍏堝叆鍝�")
+    @TableField("pre_have")
+    private String preHave;
+
+    /**
+     * 绌烘搷浣� / 鍙栬揣鏃犵
+     */
+    @ApiModelProperty(value= "绌烘搷浣�")
+    @TableField("take_none")
+    private String takeNone;
+
+    public AgvWrkMastLog() {}
+
+    public String getWrkNo$(){
+        WrkMastService service = SpringUtils.getBean(WrkMastService.class);
+        WrkMast wrkMast = service.selectById(this.wrkNo);
+        if (!Cools.isEmpty(wrkMast)){
+            return String.valueOf(wrkMast.getWrkNo());
+        }
+        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.getUsername());
+        }
+        return null;
+    }
+
+    public String getModiTime$(){
+        if (Cools.isEmpty(this.modiTime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.modiTime);
+    }
+
+    public String getAppeUser$(){
+        UserService service = SpringUtils.getBean(UserService.class);
+        User user = service.selectById(this.appeUser);
+        if (!Cools.isEmpty(user)){
+            return String.valueOf(user.getUsername());
+        }
+        return null;
+    }
+
+    public String getAppeTime$(){
+        if (Cools.isEmpty(this.appeTime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.appeTime);
+    }
+
+    public String getErrorTime$(){
+        if (Cools.isEmpty(this.errorTime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.errorTime);
+    }
+
+    public String getLogErrTime$(){
+        if (Cools.isEmpty(this.logErrTime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.logErrTime);
+    }
+
+
+}
diff --git a/src/main/java/com/zy/asrs/entity/param/AgvTaskCallBackParam.java b/src/main/java/com/zy/asrs/entity/param/AgvTaskCallBackParam.java
new file mode 100644
index 0000000..70507b9
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/param/AgvTaskCallBackParam.java
@@ -0,0 +1,47 @@
+package com.zy.asrs.entity.param;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+@Data
+public class AgvTaskCallBackParam implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    //涓氬姟浠诲姟鍙�
+    private String taskCode;
+
+    //涓婃姤浜嬩欢绫诲瀷
+    private String eventType;
+
+    //浠诲姟鐘舵��
+    private String status;
+
+    //鏈哄櫒浜虹紪鐮�
+    private String robotCode;
+
+    //瀹瑰櫒缂栫爜
+    private String containerCode;
+
+    //宸ヤ綔浣嶇紪鐮�
+    private String locationCode;
+
+    //宸ヤ綔绔欑紪鐮�
+    private String stationCode;
+
+    //鎻忚堪淇℃伅锛屾弿杩板紓甯稿師鍥�/鎸傝捣鍘熷洜绛�
+    private String message;
+
+    //搴撲綅鏄惁鏈夊鍣紝鐩樼偣浠诲姟鎵嶄細杩斿洖璇ュ��
+    private boolean isLocationHasContainer;
+
+    //鑳岀瘬灞傚彿锛屼粠 0 灞傚紑濮嬶紝浠庝笅寰�涓婄紪鍙枫��64 琛ㄧず鏀惧湪浜嗚揣鍙変笂
+    private int trayLevel;
+
+    //閲嶉噺锛屽崟浣嶄负 g锛屼粎闄愪簬閲嶉噺鐩樼偣
+    private int weight;
+
+    //rfid 鐩樼偣淇℃伅锛屼粎闄愪簬 rfid 鐩樼偣
+    private List<String> rfidInfo;
+}
diff --git a/src/main/java/com/zy/asrs/entity/param/AgvTaskParam.java b/src/main/java/com/zy/asrs/entity/param/AgvTaskParam.java
index 06d8f9c..c311939 100644
--- a/src/main/java/com/zy/asrs/entity/param/AgvTaskParam.java
+++ b/src/main/java/com/zy/asrs/entity/param/AgvTaskParam.java
@@ -9,5 +9,5 @@
     //浠诲姟浼樺厛绾�
     private int taskPriority;
     //浠诲姟鎻忚堪
-    private AgvTaskkDescribeParam taskkDescribe;
+    private AgvTaskkDescribeParam taskDescribe;
 }
diff --git a/src/main/java/com/zy/asrs/mapper/AgvLocMastMapper.java b/src/main/java/com/zy/asrs/mapper/AgvLocMastMapper.java
index e2afaa9..7192e4f 100644
--- a/src/main/java/com/zy/asrs/mapper/AgvLocMastMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/AgvLocMastMapper.java
@@ -23,4 +23,5 @@
     public void updateLocType2(@Param("locType2") int locType2, @Param("startRow")int startRow, @Param("endRow")int endRow, @Param("startBay")int startBay, @Param("endBay")int endBay, @Param("startLev")int startLev, @Param("endLev")int endLev, @Param("floor")int floor);
 
     List<AgvLocMast> queryFreeLocMast2(Short locType1, Integer rowBeg, Integer rowEnd, Integer bayBeg, Integer bayEnd, Integer levBeg, Integer levEnd);
+
 }
diff --git a/src/main/java/com/zy/asrs/mapper/AgvWaitPakinLogMapper.java b/src/main/java/com/zy/asrs/mapper/AgvWaitPakinLogMapper.java
new file mode 100644
index 0000000..4175ed8
--- /dev/null
+++ b/src/main/java/com/zy/asrs/mapper/AgvWaitPakinLogMapper.java
@@ -0,0 +1,16 @@
+package com.zy.asrs.mapper;
+
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import com.zy.asrs.entity.AgvWaitPakinLog;
+import org.apache.ibatis.annotations.Insert;
+import org.apache.ibatis.annotations.Mapper;
+import org.springframework.stereotype.Repository;
+
+@Mapper
+@Repository
+public interface AgvWaitPakinLogMapper extends BaseMapper<AgvWaitPakinLog> {
+
+    @Insert("insert into agv_cust_wait_pakin_log select * from agv_cust_wait_pakin where zpallet=#{zpallet}")
+    int save(String zpallet);
+
+}
diff --git a/src/main/java/com/zy/asrs/mapper/AgvWrkDetlLogMapper.java b/src/main/java/com/zy/asrs/mapper/AgvWrkDetlLogMapper.java
new file mode 100644
index 0000000..b4ab140
--- /dev/null
+++ b/src/main/java/com/zy/asrs/mapper/AgvWrkDetlLogMapper.java
@@ -0,0 +1,16 @@
+package com.zy.asrs.mapper;
+
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import com.zy.asrs.entity.AgvWrkDetlLog;
+import org.apache.ibatis.annotations.Insert;
+import org.apache.ibatis.annotations.Mapper;
+import org.springframework.stereotype.Repository;
+
+@Mapper
+@Repository
+public interface AgvWrkDetlLogMapper extends BaseMapper<AgvWrkDetlLog> {
+
+    @Insert("insert into agv_wrk_detl_log select * from agv_wrk_detl where wrk_no=#{workNo}")
+    int save(Integer workNo);
+
+}
diff --git a/src/main/java/com/zy/asrs/mapper/AgvWrkMastLogMapper.java b/src/main/java/com/zy/asrs/mapper/AgvWrkMastLogMapper.java
new file mode 100644
index 0000000..d1cc7e5
--- /dev/null
+++ b/src/main/java/com/zy/asrs/mapper/AgvWrkMastLogMapper.java
@@ -0,0 +1,16 @@
+package com.zy.asrs.mapper;
+
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import com.zy.asrs.entity.AgvWrkMastLog;
+import org.apache.ibatis.annotations.Insert;
+import org.apache.ibatis.annotations.Mapper;
+import org.springframework.stereotype.Repository;
+
+@Mapper
+@Repository
+public interface AgvWrkMastLogMapper extends BaseMapper<AgvWrkMastLog> {
+
+    @Insert("insert into agv_wrk_mast_log select * from agv_wrk_mast where wrk_no=#{workNo}")
+    int save(Integer workNo);
+
+}
diff --git a/src/main/java/com/zy/asrs/mapper/AgvWrkMastMapper.java b/src/main/java/com/zy/asrs/mapper/AgvWrkMastMapper.java
index 8894210..46ca27e 100644
--- a/src/main/java/com/zy/asrs/mapper/AgvWrkMastMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/AgvWrkMastMapper.java
@@ -6,4 +6,5 @@
 
 @Mapper
 public interface AgvWrkMastMapper extends BaseMapper<AgvWrkMast> {
+
 }
diff --git a/src/main/java/com/zy/asrs/service/AgvBasDevpService.java b/src/main/java/com/zy/asrs/service/AgvBasDevpService.java
index ff7c1bc..f6a81b0 100644
--- a/src/main/java/com/zy/asrs/service/AgvBasDevpService.java
+++ b/src/main/java/com/zy/asrs/service/AgvBasDevpService.java
@@ -8,4 +8,6 @@
     public void clearBasDevp();
 
     public void initBasDevp();
+
+    public void updateLocStsAndBarcodeByDevNo(String devNo, String locSts, String barcode);
 }
diff --git a/src/main/java/com/zy/asrs/service/AgvLocDetlService.java b/src/main/java/com/zy/asrs/service/AgvLocDetlService.java
index 23393a3..55a8220 100644
--- a/src/main/java/com/zy/asrs/service/AgvLocDetlService.java
+++ b/src/main/java/com/zy/asrs/service/AgvLocDetlService.java
@@ -5,4 +5,6 @@
 
 public interface AgvLocDetlService extends IService<AgvLocDetl> {
 
+    public void addLocDetlInfo(String locNo, int taskCode);
+
 }
diff --git a/src/main/java/com/zy/asrs/service/AgvLocMastService.java b/src/main/java/com/zy/asrs/service/AgvLocMastService.java
index b9a4c9a..2271da4 100644
--- a/src/main/java/com/zy/asrs/service/AgvLocMastService.java
+++ b/src/main/java/com/zy/asrs/service/AgvLocMastService.java
@@ -17,4 +17,6 @@
     List<AgvLocMast> queryFreeLocMast2(Short locType1, Integer rowBeg, Integer rowEnd, Integer bayBeg, Integer bayEnd, Integer levBeg, Integer levEnd);
 
     void updateLocType2ByRBL(Integer locType2, AgvLocRule locRule);
+
+    public void updateLocStsByLocNo(String locNo, String locSts);
 }
diff --git a/src/main/java/com/zy/asrs/service/AgvWaitPakinLogService.java b/src/main/java/com/zy/asrs/service/AgvWaitPakinLogService.java
new file mode 100644
index 0000000..1090247
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/AgvWaitPakinLogService.java
@@ -0,0 +1,10 @@
+package com.zy.asrs.service;
+
+import com.baomidou.mybatisplus.service.IService;
+import com.zy.asrs.entity.AgvWaitPakinLog;
+
+public interface AgvWaitPakinLogService extends IService<AgvWaitPakinLog> {
+
+    boolean save(String zpallet);
+
+}
diff --git a/src/main/java/com/zy/asrs/service/AgvWaitPakinService.java b/src/main/java/com/zy/asrs/service/AgvWaitPakinService.java
index 5bca9f1..efdefa9 100644
--- a/src/main/java/com/zy/asrs/service/AgvWaitPakinService.java
+++ b/src/main/java/com/zy/asrs/service/AgvWaitPakinService.java
@@ -5,4 +5,6 @@
 
 public interface AgvWaitPakinService extends IService<AgvWaitPakin> {
 
+    public void updateIoStatus(int wrkNo, String ioStatus);
+
 }
diff --git a/src/main/java/com/zy/asrs/service/AgvWrkDetlLogService.java b/src/main/java/com/zy/asrs/service/AgvWrkDetlLogService.java
new file mode 100644
index 0000000..29642f4
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/AgvWrkDetlLogService.java
@@ -0,0 +1,10 @@
+package com.zy.asrs.service;
+
+import com.baomidou.mybatisplus.service.IService;
+import com.zy.asrs.entity.AgvWrkDetlLog;
+
+public interface AgvWrkDetlLogService extends IService<AgvWrkDetlLog> {
+
+    boolean save(Integer workNo);
+
+}
diff --git a/src/main/java/com/zy/asrs/service/AgvWrkMastLogService.java b/src/main/java/com/zy/asrs/service/AgvWrkMastLogService.java
new file mode 100644
index 0000000..f55763c
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/AgvWrkMastLogService.java
@@ -0,0 +1,10 @@
+package com.zy.asrs.service;
+
+import com.baomidou.mybatisplus.service.IService;
+import com.zy.asrs.entity.AgvWrkMastLog;
+
+public interface AgvWrkMastLogService extends IService<AgvWrkMastLog> {
+
+    boolean save(Integer workNo);
+
+}
diff --git a/src/main/java/com/zy/asrs/service/AgvWrkMastService.java b/src/main/java/com/zy/asrs/service/AgvWrkMastService.java
index 86d4398..8847a8d 100644
--- a/src/main/java/com/zy/asrs/service/AgvWrkMastService.java
+++ b/src/main/java/com/zy/asrs/service/AgvWrkMastService.java
@@ -4,4 +4,6 @@
 import com.zy.asrs.entity.AgvWrkMast;
 
 public interface AgvWrkMastService extends IService<AgvWrkMast> {
+
+    public void updateWrkStsByWrkNo(int wrkNo, long wrkSts);
 }
diff --git a/src/main/java/com/zy/asrs/service/impl/AgvBasDevpServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/AgvBasDevpServiceImpl.java
index c6f57ec..fbecf3d 100644
--- a/src/main/java/com/zy/asrs/service/impl/AgvBasDevpServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/AgvBasDevpServiceImpl.java
@@ -50,18 +50,7 @@
         for(int row=rowIndex; row<=rowMax; row++){
             for(int bay=bayIndex; bay<=bayMax; bay++){
                 for(int lev=levIndex; lev<=levMax; lev++){
-//                    AgvBasDevp agvBasDevp = new AgvBasDevp();
-//                    String devNo = "CS-" + floor + "0" + row + "-00" + bay + "-0" + lev + "@" + floor;
-//                    String stationCode = "CS-" + floor + "0" + row;
-//                    agvBasDevp.setDevNo(devNo);
-//                    agvBasDevp.setStationCode(stationCode);
-//                    agvBasDevp.setLocSts("O");
-//                    agvBasDevp.setCacheShelves("Y");
-//                    agvBasDevp.setFloor(floor);
-//                    agvBasDevp.setModiTime(now);
-//                    agvBasDevp.setAppeTime(now);
                     agvBasDevpList.add(getAgvBasDevp(row,bay,lev,floor,"Y",now));
-
                 }
             }
         }
@@ -83,4 +72,12 @@
         return agvBasDevp;
     }
 
+    public void updateLocStsAndBarcodeByDevNo(String devNo, String locSts, String barcode){
+
+        AgvBasDevp agvBasDevp = this.selectById(devNo);
+        agvBasDevp.setLocSts(locSts);
+        agvBasDevp.setBarcode(barcode);
+        this.updateById(agvBasDevp);
+    }
+
 }
diff --git a/src/main/java/com/zy/asrs/service/impl/AgvLocDetlServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/AgvLocDetlServiceImpl.java
index df4ecc5..6b637b0 100644
--- a/src/main/java/com/zy/asrs/service/impl/AgvLocDetlServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/AgvLocDetlServiceImpl.java
@@ -1,12 +1,35 @@
 package com.zy.asrs.service.impl;
 
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.baomidou.mybatisplus.service.impl.ServiceImpl;
 import com.zy.asrs.entity.AgvLocDetl;
+import com.zy.asrs.entity.AgvWrkDetl;
 import com.zy.asrs.mapper.AgvLocDetlMapper;
 import com.zy.asrs.service.AgvLocDetlService;
+import com.zy.asrs.service.AgvWrkDetlService;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.stream.Collectors;
 
 @Service
 public class AgvLocDetlServiceImpl extends ServiceImpl<AgvLocDetlMapper, AgvLocDetl> implements AgvLocDetlService {
 
+    @Autowired
+    AgvWrkDetlService agvWrkDetlService;
+
+    public void addLocDetlInfo(String locNo, int taskCode) {
+        List<AgvWrkDetl> agvWrkDetls = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", taskCode));
+        List<AgvLocDetl> agvLocDetlList = agvWrkDetls.stream().map(agvWrkDetl -> {
+            AgvLocDetl agvLocDetl = new AgvLocDetl();
+            BeanUtils.copyProperties(agvWrkDetl, agvLocDetl);
+            agvLocDetl.setLocNo(locNo);
+            return agvLocDetl;
+        }).collect(Collectors.toList());
+
+        this.insertBatch(agvLocDetlList);
+
+    }
 }
diff --git a/src/main/java/com/zy/asrs/service/impl/AgvLocMastServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/AgvLocMastServiceImpl.java
index 0303c56..8f3d445 100644
--- a/src/main/java/com/zy/asrs/service/impl/AgvLocMastServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/AgvLocMastServiceImpl.java
@@ -88,4 +88,10 @@
         this.baseMapper.updateLocType2(locType2,locRule.getRowBeg(),locRule.getRowEnd(),locRule.getBayBeg(),locRule.getBayEnd(),locRule.getLevBeg(),locRule.getLevEnd(),locRule.getFloor());
     }
 
+    public void updateLocStsByLocNo(String locNo, String locSts) {
+        AgvLocMast agvLocMast = this.selectById(locNo);
+        agvLocMast.setLocSts(locSts);
+        this.updateById(agvLocMast);
+    }
+
 }
diff --git a/src/main/java/com/zy/asrs/service/impl/AgvMobileServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/AgvMobileServiceImpl.java
index 0a5fcc4..beb08ff 100644
--- a/src/main/java/com/zy/asrs/service/impl/AgvMobileServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/AgvMobileServiceImpl.java
@@ -179,7 +179,7 @@
 
     public List<AgvBasDevp> getAgvBasDevpByFloor(int floor) {
         EntityWrapper<AgvBasDevp> wrapper = new EntityWrapper<>();
-        wrapper.eq("floor",floor).eq("cache_shelves","Y");
+        wrapper.eq("floor",floor).eq("cache_shelves","Y").eq("sts_loc","F");
         return agvBasDevpService.selectList(wrapper);
     }
 
diff --git a/src/main/java/com/zy/asrs/service/impl/AgvWaitPakinLogServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/AgvWaitPakinLogServiceImpl.java
new file mode 100644
index 0000000..b180fcf
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/impl/AgvWaitPakinLogServiceImpl.java
@@ -0,0 +1,17 @@
+package com.zy.asrs.service.impl;
+
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import com.zy.asrs.entity.AgvWaitPakinLog;
+import com.zy.asrs.mapper.AgvWaitPakinLogMapper;
+import com.zy.asrs.service.AgvWaitPakinLogService;
+import org.springframework.stereotype.Service;
+
+@Service
+public class AgvWaitPakinLogServiceImpl extends ServiceImpl<AgvWaitPakinLogMapper, AgvWaitPakinLog> implements AgvWaitPakinLogService {
+
+    @Override
+    public boolean save(String zpallet) {
+        return this.baseMapper.save(zpallet) > 0;
+    }
+
+}
diff --git a/src/main/java/com/zy/asrs/service/impl/AgvWaitPakinServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/AgvWaitPakinServiceImpl.java
index 7b1d03f..471dffc 100644
--- a/src/main/java/com/zy/asrs/service/impl/AgvWaitPakinServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/AgvWaitPakinServiceImpl.java
@@ -1,12 +1,29 @@
 package com.zy.asrs.service.impl;
 
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.baomidou.mybatisplus.service.impl.ServiceImpl;
 import com.zy.asrs.entity.AgvWaitPakin;
+import com.zy.asrs.entity.AgvWrkMast;
 import com.zy.asrs.mapper.AgvWaitPakinMapper;
 import com.zy.asrs.service.AgvWaitPakinService;
+import com.zy.asrs.service.AgvWrkMastService;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+
+import java.util.List;
 
 @Service
 public class AgvWaitPakinServiceImpl extends ServiceImpl<AgvWaitPakinMapper, AgvWaitPakin> implements AgvWaitPakinService {
 
+    @Autowired
+    AgvWrkMastService agvWrkMastService;
+
+    public void updateIoStatus(int wrkNo, String ioStatus) {
+        AgvWrkMast agvWrkMast = agvWrkMastService.selectById(wrkNo);
+        List<AgvWaitPakin> agvWaitPakinList = this.selectList(new EntityWrapper<AgvWaitPakin>().eq("zpallet", agvWrkMast.getBarcode()));
+        agvWaitPakinList.stream().forEach(agvWaitPakin -> {
+            agvWaitPakin.setIoStatus("Y");
+            this.update(agvWaitPakin,new EntityWrapper<AgvWaitPakin>().eq("zpallet",agvWaitPakin.getZpallet()));
+        });
+    }
 }
diff --git a/src/main/java/com/zy/asrs/service/impl/AgvWrkDetlLogServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/AgvWrkDetlLogServiceImpl.java
new file mode 100644
index 0000000..53f3dc6
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/impl/AgvWrkDetlLogServiceImpl.java
@@ -0,0 +1,16 @@
+package com.zy.asrs.service.impl;
+
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import com.zy.asrs.entity.AgvWrkDetlLog;
+import com.zy.asrs.mapper.AgvWrkDetlLogMapper;
+import com.zy.asrs.service.AgvWrkDetlLogService;
+import org.springframework.stereotype.Service;
+
+@Service
+public class AgvWrkDetlLogServiceImpl extends ServiceImpl<AgvWrkDetlLogMapper, AgvWrkDetlLog> implements AgvWrkDetlLogService {
+
+    @Override
+    public boolean save(Integer workNo) {
+        return this.baseMapper.save(workNo)>0;
+    }
+}
diff --git a/src/main/java/com/zy/asrs/service/impl/AgvWrkMastLogServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/AgvWrkMastLogServiceImpl.java
new file mode 100644
index 0000000..2d7cb53
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/impl/AgvWrkMastLogServiceImpl.java
@@ -0,0 +1,17 @@
+package com.zy.asrs.service.impl;
+
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import com.zy.asrs.entity.AgvWrkMastLog;
+import com.zy.asrs.mapper.AgvWrkMastLogMapper;
+import com.zy.asrs.service.AgvWrkMastLogService;
+import org.springframework.stereotype.Service;
+
+@Service
+public class AgvWrkMastLogServiceImpl extends ServiceImpl<AgvWrkMastLogMapper, AgvWrkMastLog> implements AgvWrkMastLogService {
+
+    @Override
+    public boolean save(Integer workNo) {
+        return this.baseMapper.save(workNo) > 0;
+    }
+
+}
diff --git a/src/main/java/com/zy/asrs/service/impl/AgvWrkMastServiceImp.java b/src/main/java/com/zy/asrs/service/impl/AgvWrkMastServiceImp.java
index 0bdac4c..297e554 100644
--- a/src/main/java/com/zy/asrs/service/impl/AgvWrkMastServiceImp.java
+++ b/src/main/java/com/zy/asrs/service/impl/AgvWrkMastServiceImp.java
@@ -4,8 +4,18 @@
 import com.zy.asrs.entity.AgvWrkMast;
 import com.zy.asrs.mapper.AgvWrkMastMapper;
 import com.zy.asrs.service.AgvWrkMastService;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 @Service
 public class AgvWrkMastServiceImp extends ServiceImpl<AgvWrkMastMapper, AgvWrkMast> implements AgvWrkMastService {
+
+    @Autowired
+    AgvWrkMastMapper agvWrkMastMapper;
+
+    public void updateWrkStsByWrkNo(int wrkNo, long wrkSts) {
+        AgvWrkMast agvWrkMast = this.selectById(wrkNo);
+        agvWrkMast.setWrkSts(wrkSts);
+        this.updateById(agvWrkMast);
+    }
 }
diff --git a/src/main/webapp/static/js/agvLocDetl/locDetl.js b/src/main/webapp/static/js/agvLocDetl/locDetl.js
index 8b71add..d315d9e 100644
--- a/src/main/webapp/static/js/agvLocDetl/locDetl.js
+++ b/src/main/webapp/static/js/agvLocDetl/locDetl.js
@@ -2,7 +2,7 @@
 var tableData;
 function getCol() {
     var cols = [
-        {field: 'locNo$', align: 'center',title: '搴撲綅鍙�'},
+        {field: 'locNo', align: 'center',title: '搴撲綅鍙�'},
         {field: 'matnr', align: 'center',title: '鐗╂枡鍙�', sort:true}
         ,{field: 'maktx', align: 'center',title: '鐗╂枡鍙�', sort:true}
         ,{field: 'orderNo', align: 'center',title: '鍗曟嵁缂栧彿', hide: false}
@@ -58,7 +58,7 @@
     tableIns = table.render({
         elem: '#agvLocDetl',
         headers: {token: localStorage.getItem('token')},
-        url: baseUrl+'/agvLocDetl/list/auth',
+        url: baseUrl+'/agv/locDetl/list/auth',
         page: true,
         limit: 20,
         where:{
@@ -159,7 +159,7 @@
                 } else {
                     layer.confirm('纭畾鍒犻櫎'+(data.length===1?'姝�':data.length)+'鏉℃暟鎹悧', function(){
                         $.ajax({
-                            url: baseUrl+"/locDetl/delete/auth",
+                            url: baseUrl+"/agv/locDetl/delete/auth",
                             headers: {'token': localStorage.getItem('token')},
                             data: {param: JSON.stringify(data)},
                             method: 'POST',
@@ -198,7 +198,7 @@
                     };
                     var loadIndex = layer.msg('姝e湪瀵煎嚭...', {icon: 16, shade: 0.01, time: false});
                     $.ajax({
-                        url: baseUrl+"/locDetl/export/auth",
+                        url: baseUrl+"/agv/locDetl/export/auth",
                         headers: {'token': localStorage.getItem('token')},
                         data: JSON.stringify(param),
                         dataType:'json',
@@ -278,7 +278,7 @@
                        content: '../locMast/locMast_detail.html',
                        success: function(layero, index){
                            $.ajax({
-                               url: baseUrl+"/locMast/"+ param +"/auth",
+                               url: baseUrl+"/agv/locMast/"+ param +"/auth",
                                headers: {'token': localStorage.getItem('token')},
                                method: 'GET',
                                success: function (res) {
@@ -416,7 +416,7 @@
 
         };
         $.ajax({
-            url: baseUrl+"/locDetl/"+name+"/auth",
+            url: baseUrl+"/agv/locDetl/"+name+"/auth",
             headers: {'token': localStorage.getItem('token')},
             data: top.reObject(data),
             method: 'POST',
@@ -498,7 +498,7 @@
         let index  = obj.othis.parents('tr').attr("data-index");
         let data = tableData[index];
         data[this.stockFreeze] = obj.elem.checked?1:0;
-        http.post(baseUrl + "/locDetl/updateStockFreeze/auth", {
+        http.post(baseUrl + "/agv/locDetl/updateStockFreeze/auth", {
             locNo: data.locNo,
             matnr: data.matnr,
             stockFreeze: data[this.stockFreeze]
diff --git a/src/main/webapp/static/js/agvStoMan/stoQue.js b/src/main/webapp/static/js/agvStoMan/stoQue.js
index aa285c3..4b0d3c1 100644
--- a/src/main/webapp/static/js/agvStoMan/stoQue.js
+++ b/src/main/webapp/static/js/agvStoMan/stoQue.js
@@ -174,6 +174,7 @@
     // iframe鐗╂枡璇︽儏
     function locDetlToLayer(val) {
         locNo = val;
+        url = '/agv/locDetl/list/auth';
         layer.open({
             type: 2,
             title: '搴撳瓨鏄庣粏',
diff --git a/src/main/webapp/static/js/agvWaitPakinLog/waitPakinLog.js b/src/main/webapp/static/js/agvWaitPakinLog/waitPakinLog.js
new file mode 100644
index 0000000..0ca33d5
--- /dev/null
+++ b/src/main/webapp/static/js/agvWaitPakinLog/waitPakinLog.js
@@ -0,0 +1,482 @@
+var pageCurr;
+function getCol() {
+    var cols = [
+    ];
+    cols.push.apply(cols, detlCols);
+    cols.push({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;
+            }}
+        ,{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})
+    return cols;
+}
+layui.use(['table','laydate', 'form'], function(){
+    var table = layui.table;
+    var $ = layui.jquery;
+    var layer = layui.layer;
+    var layDate = layui.laydate;
+    var form = layui.form;
+
+    // 鏁版嵁娓叉煋
+    tableIns = table.render({
+        elem: '#waitPakinLog',
+        headers: {token: localStorage.getItem('token')},
+        url: baseUrl+'/agv/waitPakinLog/list/auth',
+        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+"/";
+            }
+            pageCurr=curr;
+            limit();
+            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';
+                }
+            });
+        }
+    });
+
+    // 鐩戝惉鎺掑簭浜嬩欢
+    table.on('sort(locMast)', 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
+            },
+            done: function (res, curr, count) {
+                if (res.code === 403) {
+                    top.location.href = baseUrl+"/";
+                }
+                pageCurr=curr;
+                limit();
+            }
+        });
+    });
+
+    // 鐩戝惉澶村伐鍏锋爮浜嬩欢
+    table.on('toolbar(waitPakinLog)', function (obj) {
+        var checkStatus = table.checkStatus(obj.config.id);
+        switch(obj.event) {
+            case 'addData':
+                layer.open({
+                    type: 2,
+                    title: '鏂板',
+                    maxmin: true,
+                    area: [top.detailWidth, top.detailHeight],
+                    content: 'waitPakinLog_detail.html',
+                    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"});
+                    }
+                });
+                break;
+            case 'deleteData':
+                var data = checkStatus.data;
+                if (data.length === 0){
+                    layer.msg('璇烽�夋嫨鏁版嵁');
+                } else {
+                    layer.confirm('纭畾鍒犻櫎'+(data.length===1?'姝�':data.length)+'鏉℃暟鎹悧', function(){
+                        $.ajax({
+                            url: baseUrl+"/agv/waitPakinLog/delete/auth",
+                            headers: {'token': localStorage.getItem('token')},
+                            data: {param: JSON.stringify(data)},
+                            method: 'POST',
+                            traditional:true,
+                            success: function (res) {
+                                if (res.code === 200){
+                                    layer.closeAll();
+                                    tableReload(false);
+                                } else if (res.code === 403){
+                                    top.location.href = baseUrl+"/";
+                                } else {
+                                    layer.msg(res.msg)
+                                }
+                            }
+                        })
+                    });
+                }
+                break;
+            case 'exportData':
+                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);
+                            fields.push(col.field);
+                        }
+                    });
+                    var exportData = {};
+                    $.each($('#search-box [name]').serializeArray(), function() {
+                        exportData[this.name] = this.value;
+                    });
+                    var param = {
+                        'waitPakinLog': exportData,
+                        'fields': fields
+                    };
+                    $.ajax({
+                        url: baseUrl+"/agv/waitPakinLog/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)
+                            }
+                        }
+                    });
+                });
+                break;
+        }
+    });
+
+    // 鐩戝惉琛屽伐鍏蜂簨浠�
+    table.on('tool(waitPakinLog)', function(obj){
+        var data = obj.data;
+        switch (obj.event) {
+            // 璇︽儏
+            case 'detail':
+                layer.open({
+                    type: 2,
+                    title: '璇︽儏',
+                    maxmin: true,
+                    area: [top.detailWidth, top.detailHeight],
+                    shadeClose: true,
+                    content: 'waitPakinLog_detail.html',
+                    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"});
+                        layero.find('iframe')[0].contentWindow.layui.form.render('select');
+                        layero.find('iframe')[0].contentWindow.layui.form.render('checkbox');
+                    }
+                });
+                break;
+            // 缂栬緫
+            case 'edit':
+                layer.open({
+                    type: 2,
+                    title: '淇敼',
+                    maxmin: true,
+                    area: [top.detailWidth, top.detailHeight],
+                    content: 'waitPakinLog_detail.html',
+                    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"});
+                        layero.find('iframe')[0].contentWindow.layui.form.render('select');
+                        layero.find('iframe')[0].contentWindow.layui.form.render('checkbox');
+                    }
+                });
+                break;
+            case 'modiUser':
+                var param = top.reObject(data).modiUser;
+                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)
+                                   }
+                               }
+                           })
+                       }
+                   });
+                }
+                break;
+            case 'appeUser':
+                var param = top.reObject(data).appeUser;
+                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)
+                                   }
+                               }
+                           })
+                       }
+                   });
+                }
+                break;
+
+        }
+    });
+
+    // 鏁版嵁淇濆瓨鍔ㄤ綔
+    form.on('submit(save)', function () {
+        if (banMsg != null){
+            layer.msg(banMsg);
+            return;
+        }
+        method("add");
+    });
+
+    // 鏁版嵁淇敼鍔ㄤ綔
+    form.on('submit(edit)', function () {
+        method("update")
+    });
+
+    function method(name){
+        var index = layer.load(1, {
+            shade: [0.5,'#000'] //0.1閫忔槑搴︾殑鑳屾櫙
+        });
+        var data = {
+//            id: $('#id').val(),
+            id: $('#id').val(),
+            pakinId: $('#pakinId').val(),
+            barcode: $('#barcode').val(),
+            matnr: $('#matnr').val(),
+            maktx: $('#maktx').val(),
+            anfme: $('#anfme').val(),
+            unit: $('#unit').val(),
+            status: $('#status').val(),
+            memo: $('#memo').val(),
+            modiTime: top.strToDate($('#modiTime\\$').val()),
+            modiUser: $('#modiUser').val(),
+            appeTime: top.strToDate($('#appeTime\\$').val()),
+            appeUser: $('#appeUser').val(),
+
+        };
+        $.ajax({
+            url: baseUrl+"/agv/waitPakinLog/"+name+"/auth",
+            headers: {'token': localStorage.getItem('token')},
+            data: top.reObject(data),
+            method: 'POST',
+            success: function (res) {
+                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 {
+                    layer.msg(res.msg)
+                }
+                layer.close(index);
+            }
+        })
+    }
+
+    // 澶嶉�夋浜嬩欢
+    form.on('checkbox(detailCheckbox)', function (data) {
+        var el = data.elem;
+        if (el.checked) {
+            $(el).val('Y');
+        } else {
+            $(el).val('N');
+        }
+    });
+
+    // 鎼滅储鏍忔悳绱簨浠�
+    form.on('submit(search)', function (data) {
+        pageCurr = 1;
+        tableReload(false);
+    });
+
+    // 鎼滅储鏍忛噸缃簨浠�
+    form.on('submit(reset)', function (data) {
+        pageCurr = 1;
+        clearFormVal($('#search-box'));
+        tableReload(false);
+    });
+
+    // 鏃堕棿閫夋嫨鍣�
+    layDate.render({
+        elem: '#modiTime\\$',
+        type: 'datetime'
+    });
+    layDate.render({
+        elem: '#appeTime\\$',
+        type: 'datetime'
+    });
+    layDate.render({
+        elem: '.layui-laydate-range'
+        ,type: 'datetime'
+        ,range: true
+    });
+
+});
+
+// 鍏抽棴鍔ㄤ綔
+$(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;
+    });
+    (child ? parent.tableIns : tableIns).reload({
+        where: searchData,
+        page: {
+            curr: pageCurr
+        },
+        done: function (res, curr, count) {
+            if (res.code === 403) {
+                top.location.href = baseUrl+"/";
+            }
+            pageCurr=curr;
+            if (res.data.length === 0 && count !== 0) {
+                tableIns.reload({
+                    where: searchData,
+                    page: {
+                        curr: pageCurr-1
+                    }
+                });
+                pageCurr -= 1;
+            }
+            limit(child);
+        }
+    });
+}
+
+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");
+                    find.val('Y');
+                } else {
+                    find.remove("checked");
+                    find.val('N');
+                }
+                continue;
+            }
+        }
+        find.val(data[val]);
+        if (showImg){
+            var next = find.next();
+            if (next.get(0)){
+                if (next.get(0).localName === "img") {
+                    find.hide();
+                    next.attr("src", data[val]);
+                    next.show();
+                }
+            }
+        }
+    }
+}
+
+function clearFormVal(el) {
+    $(':input', el)
+        .val('')
+        .removeAttr('checked')
+        .removeAttr('selected');
+}
+
+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);
+    }
+    layer.style(index, {
+//        top: (($(window).height()-height)/3)+"px",
+        height: height+'px'
+    });
+}
+
+$('body').keydown(function () {
+    if (event.keyCode === 13) {
+        $("#search").click();
+    }
+});
diff --git a/src/main/webapp/static/js/agvWrkDetlLog/wrkDetlLog.js b/src/main/webapp/static/js/agvWrkDetlLog/wrkDetlLog.js
new file mode 100644
index 0000000..85da753
--- /dev/null
+++ b/src/main/webapp/static/js/agvWrkDetlLog/wrkDetlLog.js
@@ -0,0 +1,484 @@
+var pageCurr;
+function getCol() {
+    var cols = [
+        {field: 'wrkNo', align: 'center',title: '宸ヤ綔鍙�'}
+        ,{field: 'ioTime$', align: 'center',title: '宸ヤ綔鏃堕棿'}
+    ];
+    cols.push.apply(cols, detlCols);
+    cols.push({field: 'modiUser$', align: 'center',title: '淇敼浜哄憳',hide: true}
+        ,{field: 'modiTime$', align: 'center',title: '淇敼鏃堕棿',hide: true}
+    )
+    return cols;
+}
+
+layui.use(['table','laydate', 'form'], function(){
+    var table = layui.table;
+    var $ = layui.jquery;
+    var layer = layui.layer;
+    var layDate = layui.laydate;
+    var form = layui.form;
+
+    // 鏁版嵁娓叉煋
+    tableIns = table.render({
+        elem: '#wrkDetlLog',
+        headers: {token: localStorage.getItem('token')},
+        url: baseUrl+'/agv/wrkDetlLog/list/auth',
+        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+"/";
+            }
+            pageCurr=curr;
+            limit();
+            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';
+                }
+            });
+        }
+    });
+
+    // 鐩戝惉鎺掑簭浜嬩欢
+    table.on('sort(locMast)', 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
+            },
+            done: function (res, curr, count) {
+                if (res.code === 403) {
+                    top.location.href = baseUrl+"/";
+                }
+                pageCurr=curr;
+                limit();
+            }
+        });
+    });
+
+    // 鐩戝惉澶村伐鍏锋爮浜嬩欢
+    table.on('toolbar(wrkDetlLog)', function (obj) {
+        var checkStatus = table.checkStatus(obj.config.id);
+        switch(obj.event) {
+            case 'addData':
+                layer.open({
+                    type: 2,
+                    title: '鏂板',
+                    maxmin: true,
+                    area: [top.detailWidth, top.detailHeight],
+                    content: 'wrkDetlLog_detail.html',
+                    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"});
+                    }
+                });
+                break;
+            case 'deleteData':
+                var data = checkStatus.data;
+                if (data.length === 0){
+                    layer.msg('璇烽�夋嫨鏁版嵁');
+                } else {
+                    layer.confirm('纭畾鍒犻櫎'+(data.length===1?'姝�':data.length)+'鏉℃暟鎹悧', function(){
+                        $.ajax({
+                            url: baseUrl+"/agv/wrkDetlLog/delete/auth",
+                            headers: {'token': localStorage.getItem('token')},
+                            data: {param: JSON.stringify(data)},
+                            method: 'POST',
+                            traditional:true,
+                            success: function (res) {
+                                if (res.code === 200){
+                                    layer.closeAll();
+                                    tableReload(false);
+                                } else if (res.code === 403){
+                                    top.location.href = baseUrl+"/";
+                                } else {
+                                    layer.msg(res.msg)
+                                }
+                            }
+                        })
+                    });
+                }
+                break;
+            case 'exportData':
+                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);
+                            fields.push(col.field);
+                        }
+                    });
+                    var exportData = {};
+                    $.each($('#search-box [name]').serializeArray(), function() {
+                        exportData[this.name] = this.value;
+                    });
+                    var param = {
+                        'wrkDetlLog': exportData,
+                        'fields': fields
+                    };
+                    $.ajax({
+                        url: baseUrl+"/agv/wrkDetlLog/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)
+                            }
+                        }
+                    });
+                });
+                break;
+        }
+    });
+
+    // 鐩戝惉琛屽伐鍏蜂簨浠�
+    table.on('tool(wrkDetlLog)', function(obj){
+        var data = obj.data;
+        switch (obj.event) {
+            // 璇︽儏
+            case 'detail':
+                layer.open({
+                    type: 2,
+                    title: '璇︽儏',
+                    maxmin: true,
+                    area: [top.detailWidth, top.detailHeight],
+                    shadeClose: true,
+                    content: 'wrkDetlLog_detail.html',
+                    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"});
+                        layero.find('iframe')[0].contentWindow.layui.form.render('select');
+                        layero.find('iframe')[0].contentWindow.layui.form.render('checkbox');
+                    }
+                });
+                break;
+            // 缂栬緫
+            case 'edit':
+                layer.open({
+                    type: 2,
+                    title: '淇敼',
+                    maxmin: true,
+                    area: [top.detailWidth, top.detailHeight],
+                    content: 'wrkDetlLog_detail.html',
+                    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('', index), true);
+                        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');
+                    }
+                });
+                break;
+            case 'modiUser':
+                var param = top.reObject(data).modiUser;
+                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)
+                                   }
+                               }
+                           })
+                       }
+                   });
+                }
+                break;
+            case 'appeUser':
+                var param = top.reObject(data).appeUser;
+                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)
+                                   }
+                               }
+                           })
+                       }
+                   });
+                }
+                break;
+
+        }
+    });
+
+    // 鏁版嵁淇濆瓨鍔ㄤ綔
+    form.on('submit(save)', function () {
+        if (banMsg != null){
+            layer.msg(banMsg);
+            return;
+        }
+        method("add");
+    });
+
+    // 鏁版嵁淇敼鍔ㄤ綔
+    form.on('submit(edit)', function () {
+        method("update")
+    });
+
+    function method(name){
+        var index = layer.load(1, {
+            shade: [0.5,'#000'] //0.1閫忔槑搴︾殑鑳屾櫙
+        });
+        var data = {
+//            id: $('#id').val(),
+            wrkNo: $('#wrkNo').val(),
+            ioTime: top.strToDate($('#ioTime\\$').val()),
+            matnr: $('#matnr').val(),
+            lgnum: $('#lgnum').val(),
+            tbnum: $('#tbnum').val(),
+            tbpos: $('#tbpos').val(),
+            zmatid: $('#zmatid').val(),
+            maktx: $('#maktx').val(),
+            werks: $('#werks').val(),
+            anfme: $('#anfme').val(),
+            altme: $('#altme').val(),
+            zpallet: $('#zpallet').val(),
+            bname: $('#bname').val(),
+            memo: $('#memo').val(),
+            modiUser: $('#modiUser').val(),
+            modiTime: top.strToDate($('#modiTime\\$').val()),
+            appeUser: $('#appeUser').val(),
+            appeTime: top.strToDate($('#appeTime\\$').val()),
+            nista: $('#nista').val(),
+
+        };
+        $.ajax({
+            url: baseUrl+"/agv/wrkDetlLog/"+name+"/auth",
+            headers: {'token': localStorage.getItem('token')},
+            data: top.reObject(data),
+            method: 'POST',
+            success: function (res) {
+                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 {
+                    layer.msg(res.msg)
+                }
+                layer.close(index);
+            }
+        })
+    }
+
+    // 澶嶉�夋浜嬩欢
+    form.on('checkbox(detailCheckbox)', function (data) {
+        var el = data.elem;
+        if (el.checked) {
+            $(el).val('Y');
+        } else {
+            $(el).val('N');
+        }
+    });
+
+    // 鎼滅储鏍忔悳绱簨浠�
+    form.on('submit(search)', function (data) {
+        pageCurr = 1;
+        tableReload(false);
+    });
+
+    // 鎼滅储鏍忛噸缃簨浠�
+    form.on('submit(reset)', function (data) {
+        pageCurr = 1;
+        clearFormVal($('#search-box'));
+        tableReload(false);
+    });
+
+    // 鏃堕棿閫夋嫨鍣�
+    layDate.render({
+        elem: '#ioTime\\$',
+        type: 'datetime'
+    });
+    layDate.render({
+        elem: '#modiTime\\$',
+        type: 'datetime'
+    });
+    layDate.render({
+        elem: '#appeTime\\$',
+        type: 'datetime'
+    });
+    layDate.render({
+        elem: '.layui-laydate-range'
+        ,type: 'datetime'
+        ,range: true
+    });
+
+});
+
+// 鍏抽棴鍔ㄤ綔
+$(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;
+    });
+    (child ? parent.tableIns : tableIns).reload({
+        where: searchData,
+        page: {
+            curr: pageCurr
+        },
+        done: function (res, curr, count) {
+            if (res.code === 403) {
+                top.location.href = baseUrl+"/";
+            }
+            pageCurr=curr;
+            if (res.data.length === 0 && count !== 0) {
+                tableIns.reload({
+                    where: searchData,
+                    page: {
+                        curr: pageCurr-1
+                    }
+                });
+                pageCurr -= 1;
+            }
+            limit(child);
+        }
+    });
+}
+
+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");
+                    find.val('Y');
+                } else {
+                    find.remove("checked");
+                    find.val('N');
+                }
+                continue;
+            }
+        }
+        find.val(data[val]);
+        if (showImg){
+            var next = find.next();
+            if (next.get(0)){
+                if (next.get(0).localName === "img") {
+                    find.hide();
+                    next.attr("src", data[val]);
+                    next.show();
+                }
+            }
+        }
+    }
+}
+
+function clearFormVal(el) {
+    $(':input', el)
+        .val('')
+        .removeAttr('checked')
+        .removeAttr('selected');
+}
+
+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);
+    }
+    layer.style(index, {
+//        top: (($(window).height()-height)/3)+"px",
+        height: height+'px'
+    });
+}
+
+$('body').keydown(function () {
+    if (event.keyCode === 13) {
+        $("#search").click();
+    }
+});
diff --git a/src/main/webapp/static/js/agvWrkMast/wrkMast.js b/src/main/webapp/static/js/agvWrkMast/wrkMast.js
index 4fe5e9b..a9384ca 100644
--- a/src/main/webapp/static/js/agvWrkMast/wrkMast.js
+++ b/src/main/webapp/static/js/agvWrkMast/wrkMast.js
@@ -195,7 +195,7 @@
                 } else {
                     layer.confirm('纭畾鍒犻櫎'+(data.length===1?'姝�':data.length)+'鏉℃暟鎹悧', function(){
                         $.ajax({
-                            url: baseUrl+"/agv/wrkMast/delete/auth",
+                            url: baseUrl+"/agv/wrkMast/startWrk/auth",
                             headers: {'token': localStorage.getItem('token')},
                             data: {param: JSON.stringify(data)},
                             method: 'POST',
diff --git a/src/main/webapp/static/js/agvWrkMastLog/wrkMastLog.js b/src/main/webapp/static/js/agvWrkMastLog/wrkMastLog.js
new file mode 100644
index 0000000..7cafe4f
--- /dev/null
+++ b/src/main/webapp/static/js/agvWrkMastLog/wrkMastLog.js
@@ -0,0 +1,533 @@
+var pageCurr;
+var wrkNo;
+var ioTime;
+layui.use(['table','laydate', 'form'], function(){
+    var table = layui.table;
+    var $ = layui.jquery;
+    var layer = layui.layer;
+    var layDate = layui.laydate;
+    var form = layui.form;
+
+    // 鏁版嵁娓叉煋
+    tableIns = table.render({
+        elem: '#wrkMastLog',
+        headers: {token: localStorage.getItem('token')},
+        url: baseUrl+'/agv/wrkMastLog/list/auth',
+        page: true,
+        limit: 16,
+        limits: [16, 30, 50, 100, 200, 500],
+        even: true,
+        toolbar: '#toolbar',
+        cellMinWidth: 50,
+        cols: [[
+            // {type: 'checkbox'}
+//            ,{field: 'id', title: 'ID', sort: true,align: 'center', fixed: 'left', width: 80}
+//             ,{field: 'id', align: 'center',title: '缂栧彿'}
+            {field: 'wrkNo', align: 'center',title: '宸ヤ綔鍙�',event: 'wrkNo', sort: true}
+            ,{field: 'ioTime$', align: 'center',title: '宸ヤ綔鏃堕棿', width:160, sort: true}
+            ,{field: 'wrkSts$', align: 'center',title: '宸ヤ綔鐘舵��', width:160}
+            ,{field: 'ioType$', align: 'center',title: '鍏ュ嚭搴撶被鍨�', width:160}
+            ,{field: 'ioPri', 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: 'picking', align: 'center',title: '鎷f枡', templet:function(row){
+            //         var html = "<input value='picking' type='checkbox' lay-skin='primary' lay-filter='tableCheckbox' table-index='"+row.LAY_TABLE_INDEX+"'";
+            //         if(row.picking === 'Y'){html += " checked ";}
+            //         html += ">";
+            //         return html;
+            //     }}
+            // ,{field: 'exitMk', align: 'center',title: '閫�鍑�', templet:function(row){
+            //         var html = "<input value='exitMk' type='checkbox' lay-skin='primary' lay-filter='tableCheckbox' table-index='"+row.LAY_TABLE_INDEX+"'";
+            //         if(row.exitMk === 'Y'){html += " checked ";}
+            //         html += ">";
+            //         return html;
+            //     }}
+            // ,{field: 'emptyMk', align: 'center',title: '绌烘澘', templet:function(row){
+            //         var html = "<input value='emptyMk' type='checkbox' lay-skin='primary' lay-filter='tableCheckbox' table-index='"+row.LAY_TABLE_INDEX+"'";
+            //         if(row.emptyMk === 'Y'){html += " checked ";}
+            //         html += ">";
+            //         return html;
+            //     }}
+            //
+            // ,{field: 'crnStrTime$', align: 'center',title: '鍫嗗灈鏈哄惎鍔ㄦ椂闂�'}
+            // ,{field: 'crnEndTime$', align: 'center',title: '鍫嗗灈鏈哄仠姝㈡椂闂�'}
+            // ,{field: 'plcStrTime$', align: 'center',title: '鎷f枡鏃堕棿'}
+            ,{field: 'modiUser$', align: 'center',title: '淇敼浜哄憳', hide:true}
+            ,{field: 'modiTime$', align: 'center',title: '淇敼鏃堕棿', hide:true}
+            // ,{field: 'appeUser$', align: 'center',title: '鍒涘缓鑰�',event: 'appeUser', style: 'cursor:pointer'}
+            // ,{field: 'appeTime$', align: 'center',title: '娣诲姞鏃堕棿'}
+            ,{field: 'barcode', align: 'center',title: '鏉$爜'}
+            // ,{field: 'fullPlt', align: 'center',title: '婊℃澘', templet:function(row){
+            //         var html = "<input value='fullPlt' type='checkbox' lay-skin='primary' lay-filter='tableCheckbox' table-index='"+row.LAY_TABLE_INDEX+"'";
+            //         if(row.fullPlt === 'Y'){html += " checked ";}
+            //         html += ">";
+            //         return html;
+            //     }}
+
+            ,{fixed: 'right', title:'鎿嶄綔', align: 'center', toolbar: '#operate', width: 80}
+        ]],
+        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();
+            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';
+                }
+            });
+        }
+    });
+
+    // 鐩戝惉鎺掑簭浜嬩欢
+    table.on('sort(wrkMastLog)', 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
+            },
+            done: function (res, curr, count) {
+                if (res.code === 403) {
+                    top.location.href = baseUrl+"/";
+                }
+                pageCurr=curr;
+                limit();
+            }
+        });
+    });
+
+    // 鐩戝惉澶村伐鍏锋爮浜嬩欢
+    table.on('toolbar(wrkMastLog)', function (obj) {
+        var checkStatus = table.checkStatus(obj.config.id);
+        switch(obj.event) {
+            case 'addData':
+                layer.open({
+                    type: 2,
+                    title: '鏂板',
+                    maxmin: true,
+                    area: [top.detailWidth, top.detailHeight],
+                    shadeClose: false,
+                    content: 'wrkMastLog_detail.html',
+                    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"});
+                    }
+                });
+                break;
+            case 'refreshData':
+                tableIns.reload({
+                    page: {
+                        curr: pageCurr
+                    }
+                });
+                limit();
+                break;
+            case 'deleteData':
+                var data = checkStatus.data;
+                if (data.length === 0){
+                    layer.msg('璇烽�夋嫨鏁版嵁');
+                } else {
+                    layer.confirm('纭畾鍒犻櫎'+(data.length===1?'姝�':data.length)+'鏉℃暟鎹悧', function(){
+                        $.ajax({
+                            url: baseUrl+"/agv/wrkMastLog/delete/auth",
+                            headers: {'token': localStorage.getItem('token')},
+                            data: {param: JSON.stringify(data)},
+                            method: 'POST',
+                            traditional:true,
+                            success: function (res) {
+                                if (res.code === 200){
+                                    layer.closeAll();
+                                    tableReload(false);
+                                } else if (res.code === 403){
+                                    top.location.href = baseUrl+"/";
+                                } else {
+                                    layer.msg(res.msg)
+                                }
+                            }
+                        })
+                    });
+                }
+                break;
+            case 'exportData':
+                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);
+                            fields.push(col.field);
+                        }
+                    });
+                    var exportData = {};
+                    $.each($('#search-box [name]').serializeArray(), function() {
+                        exportData[this.name] = this.value;
+                    });
+                    var param = {
+                        'wrkMastLog': exportData,
+                        'fields': fields
+                    };
+                    $.ajax({
+                        url: baseUrl+"/agv/wrkMastLog/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)
+                            }
+                        }
+                    });
+                });
+                break;
+        }
+    });
+
+    // 鐩戝惉琛屽伐鍏蜂簨浠�
+    table.on('tool(wrkMastLog)', function(obj){
+        var data = obj.data;
+        switch (obj.event) {
+            // 鏄庣粏灞曠ず
+            case 'detlShow':
+                wrkNo = data.wrkNo;
+                ioTime =  data.ioTime;
+                // 琛ㄦ牸涓嬫柟鏄剧ず
+                // locDetl(data.wrkNo);
+                // 寮瑰眰鏄剧ず
+                layer.open({
+                    type: 2,
+                    title: '宸ヤ綔鏄庣粏鍘嗗彶妗�',
+                    maxmin: true,
+                    area: [top.detailWidth, top.detailHeight],
+                    shadeClose: true,
+                    content: 'wrkDetlLog.html',
+                    success: function(layero, index){
+                    }
+                });
+                break;
+            // 璇︽儏
+            case 'detail':
+                layer.open({
+                    type: 2,
+                    title: '璇︽儏',
+                    maxmin: true,
+                    area: [top.detailWidth, top.detailHeight],
+                    shadeClose: false,
+                    content: 'wrkMastLog_detail.html',
+                    success: function(layero, index){
+                        setFormVal(layer.getChildFrame('#detail', index), data, true);
+                        top.convertDisabled(layer.getChildFrame('#data-detail :input', index), true);
+                        layero.find('iframe')[0].contentWindow.layui.form.render('select');
+                        layero.find('iframe')[0].contentWindow.layui.form.render('checkbox');
+                        layer.getChildFrame('#data-detail-submit-save,#data-detail-submit-edit,#prompt', index).hide();
+                        layer.getChildFrame('##dealDownLine', index).hide();
+                        layer.iframeAuto(index);layer.style(index, {top: (($(window).height()-layer.getChildFrame('#data-detail', index).height())/3)+"px"});
+
+                    }
+                });
+                break;
+        }
+    });
+
+    // 鏁版嵁淇濆瓨鍔ㄤ綔
+    form.on('submit(save)', function () {
+        if (banMsg != null){
+            layer.msg(banMsg);
+            return;
+        }
+        method("add");
+    });
+
+    // 鏁版嵁淇敼鍔ㄤ綔
+    form.on('submit(edit)', function () {
+        method("update")
+    });
+
+    function method(name){
+        var index = layer.load(1, {
+            shade: [0.5,'#000'] //0.1閫忔槑搴︾殑鑳屾櫙
+        });
+        var data = {
+//            id: $('#id').val(),
+            id: $('#id').val(),
+            wrkNo: $('#wrkNo').val(),
+            invWh: $('#invWh').val(),
+            ymd: top.strToDate($('#ymd\\$').val()),
+            mk: $('#mk').val(),
+            whsType: $('#whsType').val(),
+            wrkSts: $('#wrkSts').val(),
+            ioType: $('#ioType').val(),
+            crnNo: $('#crnNo').val(),
+            sheetNo: $('#sheetNo').val(),
+            ioPri: $('#ioPri').val(),
+            wrkDate: top.strToDate($('#wrkDate\\$').val()),
+            locNo: $('#locNo').val(),
+            staNo: $('#staNo').val(),
+            sourceStaNo: $('#sourceStaNo').val(),
+            sourceLocNo: $('#sourceLocNo').val(),
+            locSts: $('#locSts').val(),
+            picking: $('#picking').val(),
+            linkMis: $('#linkMis').val(),
+            onlineYn: $('#onlineYn').val(),
+            updMk: $('#updMk').val(),
+            exitMk: $('#exitMk').val(),
+            pltType: $('#pltType').val(),
+            emptyMk: $('#emptyMk').val(),
+            ioTime: top.strToDate($('#ioTime\\$').val()),
+            ctnType: $('#ctnType').val(),
+            packed: $('#packed').val(),
+            oveMk: $('#oveMk').val(),
+            mtnType: $('#mtnType').val(),
+            userNo: $('#userNo').val(),
+            crnStrTime: top.strToDate($('#crnStrTime\\$').val()),
+            crnEndTime: top.strToDate($('#crnEndTime\\$').val()),
+            plcStrTime: top.strToDate($('#plcStrTime\\$').val()),
+            crnPosTime: top.strToDate($('#crnPosTime\\$').val()),
+            loadTime: $('#loadTime').val(),
+            expTime: $('#expTime').val(),
+            refWrkno: $('#refWrkno').val(),
+            refIotime: top.strToDate($('#refIotime\\$').val()),
+            modiUser: $('#modiUser').val(),
+            modiTime: top.strToDate($('#modiTime\\$').val()),
+            appeUser: $('#appeUser').val(),
+            appeTime: top.strToDate($('#appeTime\\$').val()),
+            pauseMk: $('#pauseMk').val(),
+            errorTime: top.strToDate($('#errorTime\\$').val()),
+            errorMemo: $('#errorMemo').val(),
+            ctnKind: $('#ctnKind').val(),
+            manuType: $('#manuType').val(),
+            memoM: $('#memoM').val(),
+            scWeight: $('#scWeight').val(),
+            logMk: $('#logMk').val(),
+            logErrTime: top.strToDate($('#logErrTime\\$').val()),
+            logErrMemo: $('#logErrMemo').val(),
+            barcode: $('#barcode').val(),
+            PdcType: $('#PdcType').val(),
+            ctnNo: $('#ctnNo').val(),
+            fullPlt: $('#fullPlt').val(),
+
+        };
+        $.ajax({
+            url: baseUrl+"/agv/wrkMastLog/"+name+"/auth",
+            headers: {'token': localStorage.getItem('token')},
+            data: top.reObject(data),
+            method: 'POST',
+            success: function (res) {
+                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 {
+                    layer.msg(res.msg)
+                }
+                layer.close(index);
+            }
+        })
+    }
+
+    // 澶嶉�夋浜嬩欢
+    form.on('checkbox(detailCheckbox)', function (data) {
+        var el = data.elem;
+        if (el.checked) {
+            $(el).val('Y');
+        } else {
+            $(el).val('N');
+        }
+    });
+
+    // 鎼滅储鏍忔悳绱簨浠�
+    form.on('submit(search)', function (data) {
+        pageCurr = 1;
+        tableReload(false);
+    });
+
+    // 鎼滅储鏍忛噸缃簨浠�
+    form.on('submit(reset)', function (data) {
+        pageCurr = 1;
+        clearFormVal($('#search-box'));
+        tableReload(false);
+    });
+
+    // 鏃堕棿閫夋嫨鍣�
+    layDate.render({
+        elem: '#ymd\\$',
+        type: 'datetime'
+    });
+    layDate.render({
+        elem: '#wrkDate\\$',
+        type: 'datetime'
+    });
+    layDate.render({
+        elem: '#ioTime\\$',
+        type: 'datetime'
+    });
+    layDate.render({
+        elem: '#crnStrTime\\$',
+        type: 'datetime'
+    });
+    layDate.render({
+        elem: '#crnEndTime\\$',
+        type: 'datetime'
+    });
+    layDate.render({
+        elem: '#plcStrTime\\$',
+        type: 'datetime'
+    });
+    layDate.render({
+        elem: '#crnPosTime\\$',
+        type: 'datetime'
+    });
+    layDate.render({
+        elem: '#refIotime\\$',
+        type: 'datetime'
+    });
+    layDate.render({
+        elem: '#modiTime\\$',
+        type: 'datetime'
+    });
+    layDate.render({
+        elem: '#appeTime\\$',
+        type: 'datetime'
+    });
+    layDate.render({
+        elem: '#errorTime\\$',
+        type: 'datetime'
+    });
+    layDate.render({
+        elem: '#logErrTime\\$',
+        type: 'datetime'
+    });
+    layDate.render({
+        elem: '.layui-laydate-range'
+        ,type: 'datetime'
+        ,range: true
+    });
+
+});
+
+// 鍏抽棴鍔ㄤ綔
+$(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;
+    });
+    (child ? parent.tableIns : tableIns).reload({
+        where: searchData,
+        page: {
+            curr: pageCurr
+        },
+        done: function (res, curr, count) {
+            if (res.code === 403) {
+                top.location.href = baseUrl+"/";
+            }
+            pageCurr=curr;
+            if (res.data.length === 0 && count !== 0) {
+                tableIns.reload({
+                    where: searchData,
+                    page: {
+                        curr: pageCurr-1
+                    }
+                });
+                pageCurr -= 1;
+            }
+            limit(child);
+        }
+    });
+}
+
+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");
+                    find.val('Y');
+                } else {
+                    find.remove("checked");
+                    find.val('N');
+                }
+                continue;
+            }
+        }
+        find.val(data[val]);
+        if (showImg){
+            var next = find.next();
+            if (next.get(0)){
+                if (next.get(0).localName === "img") {
+                    find.hide();
+                    next.attr("src", data[val]);
+                    next.show();
+                }
+            }
+        }
+    }
+}
+
+function clearFormVal(el) {
+    $(':input', el)
+        .val('')
+        .removeAttr('checked')
+        .removeAttr('selected');
+}
+
+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);
+    }
+    layer.style(index, {
+//        top: (($(window).height()-height)/3)+"px",
+        height: height+'px'
+    });
+}
+
+$('body').keydown(function () {
+    if (event.keyCode === 13) {
+        $("#search").click();
+    }
+});
diff --git a/src/main/webapp/views/agvWaitPakinLog/waitPakinLog.html b/src/main/webapp/views/agvWaitPakinLog/waitPakinLog.html
index 72b13f8..21ceea9 100644
--- a/src/main/webapp/views/agvWaitPakinLog/waitPakinLog.html
+++ b/src/main/webapp/views/agvWaitPakinLog/waitPakinLog.html
@@ -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/waitPakinLog/waitPakinLog.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/agvWaitPakinLog/waitPakinLog.js" charset="utf-8"></script>
 
 <iframe id="detail-iframe" scrolling="auto" style="display:none;"></iframe>
 
diff --git a/src/main/webapp/views/agvWaitPakinLog/waitPakinLog_detail.html b/src/main/webapp/views/agvWaitPakinLog/waitPakinLog_detail.html
index 9d0812e..011650c 100644
--- a/src/main/webapp/views/agvWaitPakinLog/waitPakinLog_detail.html
+++ b/src/main/webapp/views/agvWaitPakinLog/waitPakinLog_detail.html
@@ -133,6 +133,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/waitPakinLog/waitPakinLog.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/agvWaitPakinLog/waitPakinLog.js" charset="utf-8"></script>
 </html>
 
diff --git a/src/main/webapp/views/agvWrkDetlLog/wrkDetlLog.html b/src/main/webapp/views/agvWrkDetlLog/wrkDetlLog.html
index af3dd38..e0055c5 100644
--- a/src/main/webapp/views/agvWrkDetlLog/wrkDetlLog.html
+++ b/src/main/webapp/views/agvWrkDetlLog/wrkDetlLog.html
@@ -50,7 +50,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/wrkDetlLog/wrkDetlLog.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/agvWrkDetlLog/wrkDetlLog.js" charset="utf-8"></script>
 
 <iframe id="detail-iframe" scrolling="auto" style="display:none;"></iframe>
 
diff --git a/src/main/webapp/views/agvWrkDetlLog/wrkDetlLog_detail.html b/src/main/webapp/views/agvWrkDetlLog/wrkDetlLog_detail.html
index 72bf6f1..89ba3b8 100644
--- a/src/main/webapp/views/agvWrkDetlLog/wrkDetlLog_detail.html
+++ b/src/main/webapp/views/agvWrkDetlLog/wrkDetlLog_detail.html
@@ -169,6 +169,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/wrkDetlLog/wrkDetlLog.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/agvWrkDetlLog/wrkDetlLog.js" charset="utf-8"></script>
 </html>
 
diff --git a/src/main/webapp/views/agvWrkMastLog/wrkDetlLog.html b/src/main/webapp/views/agvWrkMastLog/wrkDetlLog.html
index a279de3..e04f2be 100644
--- a/src/main/webapp/views/agvWrkMastLog/wrkDetlLog.html
+++ b/src/main/webapp/views/agvWrkMastLog/wrkDetlLog.html
@@ -32,7 +32,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/locMast/locMast.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/agvLocMast/locMast.js" charset="utf-8"></script>
 <script type="text/javascript">
     var pageCur;
     function getCol() {
@@ -54,7 +54,7 @@
         tableIns1 = table.render({
             elem: '#wrkDetlLogByMast',
             headers: {token: localStorage.getItem('token')},
-            url: baseUrl+'/wrkDetlLogByMast/list/auth',
+            url: baseUrl+'/agv/wrkDetlLogByMast/list/auth',
             where: {wrk_no: parent.wrkNo,ioTime: top.dateToStr(parent.ioTime, true)},
             page: true,
             limit: 16,
diff --git a/src/main/webapp/views/agvWrkMastLog/wrkMastLog.html b/src/main/webapp/views/agvWrkMastLog/wrkMastLog.html
index fdaa517..8a9445e 100644
--- a/src/main/webapp/views/agvWrkMastLog/wrkMastLog.html
+++ b/src/main/webapp/views/agvWrkMastLog/wrkMastLog.html
@@ -89,7 +89,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/wrkMastLog/wrkMastLog.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/agvWrkMastLog/wrkMastLog.js" charset="utf-8"></script>
 
 <iframe id="detail-iframe" scrolling="auto" style="display:none;"></iframe>
 
diff --git a/src/main/webapp/views/agvWrkMastLog/wrkMastLog_detail.html b/src/main/webapp/views/agvWrkMastLog/wrkMastLog_detail.html
index c6807ff..d86d98d 100644
--- a/src/main/webapp/views/agvWrkMastLog/wrkMastLog_detail.html
+++ b/src/main/webapp/views/agvWrkMastLog/wrkMastLog_detail.html
@@ -191,6 +191,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/wrkMastLog/wrkMastLog.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/agvWrkMastLog/wrkMastLog.js" charset="utf-8"></script>
 </html>
 
diff --git a/src/main/webapp/views/mat/mat.html b/src/main/webapp/views/mat/mat.html
index 37210a1..bc49782 100644
--- a/src/main/webapp/views/mat/mat.html
+++ b/src/main/webapp/views/mat/mat.html
@@ -401,7 +401,7 @@
 <!-- 妯℃澘3 -->
 <script type="text/template" id="templatePreview3" class="template-qrcode">
     {{#each data}}
-    <table class="contain" width="400px" style="overflow: hidden;font-size: xx-small;table-layout: fixed;">
+    <table class="contain" width="400px" style="overflow: hidden;font-size: xx-small;table-layout: fixed; color:#000;">
         <tr style="height: 74px;font-size: 18px; font-weight: 400" >
             <td width="50px" align="center" scope="col" colspan="1">鍟嗗搧</td>
             <td width="170px" align="center" scope="col" colspan="1">{{this.maktx}}</td>
diff --git a/src/main/webapp/views/report/locDetl.html b/src/main/webapp/views/report/locDetl.html
index ed829a7..1366488 100644
--- a/src/main/webapp/views/report/locDetl.html
+++ b/src/main/webapp/views/report/locDetl.html
@@ -35,6 +35,11 @@
         var cols = [
             {field: 'locNo$', align: 'center',title: '搴撲綅鍙�'}
         ];
+        if(parent.url != null){
+            cols = [
+                {field: 'locNo', align: 'center',title: '搴撲綅鍙�'}
+            ];
+        }
         cols.push.apply(cols, detlCols);
         return cols;
     }
@@ -50,11 +55,16 @@
             $('#locNo').val(tmp);
         }
 
+        var url = '/locDetl/list/auth';
+        if(parent.url != null){
+            var url = '/agv/locDetl/list/auth';
+        }
+
         // 鏁版嵁娓叉煋
         tableIns = table.render({
             elem: '#locDetlByMap',
             headers: {token: localStorage.getItem('token')},
-            url: baseUrl+'/locDetl/list/auth',
+            url: baseUrl+url,
             page: true,
             limit: 20,
             skin: 'line',

--
Gitblit v1.9.1