自动化立体仓库 - WMS系统
skyouc
15 小时以前 27c5a35a00fc37f7bdd727e6a53e1c8ddae81b4f
缓冲区功能调整
2个文件已修改
40个文件已添加
6360 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/controller/BasStationController.java 125 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/TaskController.java 125 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/TaskDetlController.java 125 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/TaskDetlLogController.java 127 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/TaskLogController.java 125 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/BasStation.java 378 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/Task.java 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/TaskDetl.java 500 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/TaskDetlLog.java 502 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/TaskLog.java 686 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/mapper/BasStationMapper.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/mapper/TaskDetlLogMapper.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/mapper/TaskDetlMapper.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/mapper/TaskLogMapper.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/mapper/TaskMapper.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/BasStationService.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/TaskDetlLogService.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/TaskDetlService.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/TaskLogService.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/TaskService.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/BasStationServiceImpl.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/TaskDetlLogServiceImpl.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/TaskDetlServiceImpl.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/TaskLogServiceImpl.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/TaskServiceImpl.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java 23 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/CodeBuilder.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/BasStationMapper.xml 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/TaskDetlLogMapper.xml 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/TaskDetlMapper.xml 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/TaskLogMapper.xml 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/TaskMapper.xml 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/basStation/basStation.js 293 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/task/task.js 246 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/taskDetl/taskDetl.js 305 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/taskDetlLog/taskDetlLog.js 305 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/taskLog/taskLog.js 364 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/basStation/basStation.html 311 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/task/task.html 92 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/taskDetl/taskDetl.html 391 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/taskDetlLog/taskDetlLog.html 391 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/taskLog/taskLog.html 506 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/BasStationController.java
New file
@@ -0,0 +1,125 @@
package com.zy.asrs.controller;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.core.common.DateUtils;
import com.zy.asrs.entity.BasStation;
import com.zy.asrs.service.BasStationService;
import com.core.annotations.ManagerAuth;
import com.core.common.BaseRes;
import com.core.common.Cools;
import com.core.common.R;
import com.zy.common.web.BaseController;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.*;
@RestController
public class BasStationController extends BaseController {
    @Autowired
    private BasStationService basStationService;
    @RequestMapping(value = "/basStation/{id}/auth")
    @ManagerAuth
    public R get(@PathVariable("id") String id) {
        return R.ok(basStationService.selectById(String.valueOf(id)));
    }
    @RequestMapping(value = "/basStation/list/auth")
    @ManagerAuth
    public R list(@RequestParam(defaultValue = "1")Integer curr,
                  @RequestParam(defaultValue = "10")Integer limit,
                  @RequestParam(required = false)String orderByField,
                  @RequestParam(required = false)String orderByType,
                  @RequestParam(required = false)String condition,
                  @RequestParam Map<String, Object> param){
        EntityWrapper<BasStation> wrapper = new EntityWrapper<>();
        excludeTrash(param);
        convert(param, wrapper);
        allLike(BasStation.class, param.keySet(), wrapper, condition);
        if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));}
        return R.ok(basStationService.selectPage(new Page<>(curr, limit), wrapper));
    }
    private <T> void convert(Map<String, Object> map, EntityWrapper<T> wrapper){
        for (Map.Entry<String, Object> entry : map.entrySet()){
            String val = String.valueOf(entry.getValue());
            if (val.contains(RANGE_TIME_LINK)){
                String[] dates = val.split(RANGE_TIME_LINK);
                wrapper.ge(entry.getKey(), DateUtils.convert(dates[0]));
                wrapper.le(entry.getKey(), DateUtils.convert(dates[1]));
            } else {
                wrapper.like(entry.getKey(), val);
            }
        }
    }
    @RequestMapping(value = "/basStation/add/auth")
    @ManagerAuth
    public R add(BasStation basStation) {
        basStationService.insert(basStation);
        return R.ok();
    }
    @RequestMapping(value = "/basStation/update/auth")
    @ManagerAuth
    public R update(BasStation basStation){
        if (Cools.isEmpty(basStation) || null==basStation.getId()){
            return R.error();
        }
        basStationService.updateById(basStation);
        return R.ok();
    }
    @RequestMapping(value = "/basStation/delete/auth")
    @ManagerAuth
    public R delete(@RequestParam(value="ids[]") Long[] ids){
         for (Long id : ids){
            basStationService.deleteById(id);
        }
        return R.ok();
    }
    @RequestMapping(value = "/basStation/export/auth")
    @ManagerAuth
    public R export(@RequestBody JSONObject param){
        EntityWrapper<BasStation> wrapper = new EntityWrapper<>();
        List<String> fields = JSONObject.parseArray(param.getJSONArray("fields").toJSONString(), String.class);
        Map<String, Object> map = excludeTrash(param.getJSONObject("basStation"));
        convert(map, wrapper);
        List<BasStation> list = basStationService.selectList(wrapper);
        return R.ok(exportSupport(list, fields));
    }
    @RequestMapping(value = "/basStationQuery/auth")
    @ManagerAuth
    public R query(String condition) {
        EntityWrapper<BasStation> wrapper = new EntityWrapper<>();
        wrapper.like("dev_no", condition);
        Page<BasStation> page = basStationService.selectPage(new Page<>(0, 10), wrapper);
        List<Map<String, Object>> result = new ArrayList<>();
        for (BasStation basStation : page.getRecords()){
            Map<String, Object> map = new HashMap<>();
            map.put("id", basStation.getId());
            map.put("value", basStation.getId());
            result.add(map);
        }
        return R.ok(result);
    }
    @RequestMapping(value = "/basStation/check/column/auth")
    @ManagerAuth
    public R query(@RequestBody JSONObject param) {
        Wrapper<BasStation> wrapper = new EntityWrapper<BasStation>().eq(humpToLine(String.valueOf(param.get("key"))), param.get("val"));
        if (null != basStationService.selectOne(wrapper)){
            return R.parse(BaseRes.REPEAT).add(getComment(BasStation.class, String.valueOf(param.get("key"))));
        }
        return R.ok();
    }
}
src/main/java/com/zy/asrs/controller/TaskController.java
New file
@@ -0,0 +1,125 @@
package com.zy.asrs.controller;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.core.common.DateUtils;
import com.zy.asrs.entity.Task;
import com.zy.asrs.service.TaskService;
import com.core.annotations.ManagerAuth;
import com.core.common.BaseRes;
import com.core.common.Cools;
import com.core.common.R;
import com.zy.common.web.BaseController;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.*;
@RestController
public class TaskController extends BaseController {
    @Autowired
    private TaskService taskService;
    @RequestMapping(value = "/task/{id}/auth")
    @ManagerAuth
    public R get(@PathVariable("id") String id) {
        return R.ok(taskService.selectById(String.valueOf(id)));
    }
    @RequestMapping(value = "/task/list/auth")
    @ManagerAuth
    public R list(@RequestParam(defaultValue = "1")Integer curr,
                  @RequestParam(defaultValue = "10")Integer limit,
                  @RequestParam(required = false)String orderByField,
                  @RequestParam(required = false)String orderByType,
                  @RequestParam(required = false)String condition,
                  @RequestParam Map<String, Object> param){
        EntityWrapper<Task> wrapper = new EntityWrapper<>();
        excludeTrash(param);
        convert(param, wrapper);
        allLike(Task.class, param.keySet(), wrapper, condition);
        if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));}
        return R.ok(taskService.selectPage(new Page<>(curr, limit), wrapper));
    }
    private <T> void convert(Map<String, Object> map, EntityWrapper<T> wrapper){
        for (Map.Entry<String, Object> entry : map.entrySet()){
            String val = String.valueOf(entry.getValue());
            if (val.contains(RANGE_TIME_LINK)){
                String[] dates = val.split(RANGE_TIME_LINK);
                wrapper.ge(entry.getKey(), DateUtils.convert(dates[0]));
                wrapper.le(entry.getKey(), DateUtils.convert(dates[1]));
            } else {
                wrapper.like(entry.getKey(), val);
            }
        }
    }
    @RequestMapping(value = "/task/add/auth")
    @ManagerAuth
    public R add(Task task) {
        taskService.insert(task);
        return R.ok();
    }
    @RequestMapping(value = "/task/update/auth")
    @ManagerAuth
    public R update(Task task){
        if (Cools.isEmpty(task) || null==task.getId()){
            return R.error();
        }
        taskService.updateById(task);
        return R.ok();
    }
    @RequestMapping(value = "/task/delete/auth")
    @ManagerAuth
    public R delete(@RequestParam(value="ids[]") Long[] ids){
         for (Long id : ids){
            taskService.deleteById(id);
        }
        return R.ok();
    }
    @RequestMapping(value = "/task/export/auth")
    @ManagerAuth
    public R export(@RequestBody JSONObject param){
        EntityWrapper<Task> wrapper = new EntityWrapper<>();
        List<String> fields = JSONObject.parseArray(param.getJSONArray("fields").toJSONString(), String.class);
        Map<String, Object> map = excludeTrash(param.getJSONObject("task"));
        convert(map, wrapper);
        List<Task> list = taskService.selectList(wrapper);
        return R.ok(exportSupport(list, fields));
    }
    @RequestMapping(value = "/taskQuery/auth")
    @ManagerAuth
    public R query(String condition) {
        EntityWrapper<Task> wrapper = new EntityWrapper<>();
        wrapper.like("id", condition);
        Page<Task> page = taskService.selectPage(new Page<>(0, 10), wrapper);
        List<Map<String, Object>> result = new ArrayList<>();
        for (Task task : page.getRecords()){
            Map<String, Object> map = new HashMap<>();
            map.put("id", task.getId());
            map.put("value", task.getId());
            result.add(map);
        }
        return R.ok(result);
    }
    @RequestMapping(value = "/task/check/column/auth")
    @ManagerAuth
    public R query(@RequestBody JSONObject param) {
        Wrapper<Task> wrapper = new EntityWrapper<Task>().eq(humpToLine(String.valueOf(param.get("key"))), param.get("val"));
        if (null != taskService.selectOne(wrapper)){
            return R.parse(BaseRes.REPEAT).add(getComment(Task.class, String.valueOf(param.get("key"))));
        }
        return R.ok();
    }
}
src/main/java/com/zy/asrs/controller/TaskDetlController.java
New file
@@ -0,0 +1,125 @@
package com.zy.asrs.controller;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.core.common.DateUtils;
import com.zy.asrs.entity.TaskDetl;
import com.zy.asrs.service.TaskDetlService;
import com.core.annotations.ManagerAuth;
import com.core.common.BaseRes;
import com.core.common.Cools;
import com.core.common.R;
import com.zy.common.web.BaseController;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.*;
@RestController
public class TaskDetlController extends BaseController {
    @Autowired
    private TaskDetlService taskDetlService;
    @RequestMapping(value = "/taskDetl/{id}/auth")
    @ManagerAuth
    public R get(@PathVariable("id") String id) {
        return R.ok(taskDetlService.selectById(String.valueOf(id)));
    }
    @RequestMapping(value = "/taskDetl/list/auth")
    @ManagerAuth
    public R list(@RequestParam(defaultValue = "1")Integer curr,
                  @RequestParam(defaultValue = "10")Integer limit,
                  @RequestParam(required = false)String orderByField,
                  @RequestParam(required = false)String orderByType,
                  @RequestParam(required = false)String condition,
                  @RequestParam Map<String, Object> param){
        EntityWrapper<TaskDetl> wrapper = new EntityWrapper<>();
        excludeTrash(param);
        convert(param, wrapper);
        allLike(TaskDetl.class, param.keySet(), wrapper, condition);
        if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));}
        return R.ok(taskDetlService.selectPage(new Page<>(curr, limit), wrapper));
    }
    private <T> void convert(Map<String, Object> map, EntityWrapper<T> wrapper){
        for (Map.Entry<String, Object> entry : map.entrySet()){
            String val = String.valueOf(entry.getValue());
            if (val.contains(RANGE_TIME_LINK)){
                String[] dates = val.split(RANGE_TIME_LINK);
                wrapper.ge(entry.getKey(), DateUtils.convert(dates[0]));
                wrapper.le(entry.getKey(), DateUtils.convert(dates[1]));
            } else {
                wrapper.like(entry.getKey(), val);
            }
        }
    }
    @RequestMapping(value = "/taskDetl/add/auth")
    @ManagerAuth
    public R add(TaskDetl taskDetl) {
        taskDetlService.insert(taskDetl);
        return R.ok();
    }
    @RequestMapping(value = "/taskDetl/update/auth")
    @ManagerAuth
    public R update(TaskDetl taskDetl){
        if (Cools.isEmpty(taskDetl) || null==taskDetl.getId()){
            return R.error();
        }
        taskDetlService.updateById(taskDetl);
        return R.ok();
    }
    @RequestMapping(value = "/taskDetl/delete/auth")
    @ManagerAuth
    public R delete(@RequestParam(value="ids[]") Long[] ids){
         for (Long id : ids){
            taskDetlService.deleteById(id);
        }
        return R.ok();
    }
    @RequestMapping(value = "/taskDetl/export/auth")
    @ManagerAuth
    public R export(@RequestBody JSONObject param){
        EntityWrapper<TaskDetl> wrapper = new EntityWrapper<>();
        List<String> fields = JSONObject.parseArray(param.getJSONArray("fields").toJSONString(), String.class);
        Map<String, Object> map = excludeTrash(param.getJSONObject("taskDetl"));
        convert(map, wrapper);
        List<TaskDetl> list = taskDetlService.selectList(wrapper);
        return R.ok(exportSupport(list, fields));
    }
    @RequestMapping(value = "/taskDetlQuery/auth")
    @ManagerAuth
    public R query(String condition) {
        EntityWrapper<TaskDetl> wrapper = new EntityWrapper<>();
        wrapper.like("id", condition);
        Page<TaskDetl> page = taskDetlService.selectPage(new Page<>(0, 10), wrapper);
        List<Map<String, Object>> result = new ArrayList<>();
        for (TaskDetl taskDetl : page.getRecords()){
            Map<String, Object> map = new HashMap<>();
            map.put("id", taskDetl.getId());
            map.put("value", taskDetl.getId());
            result.add(map);
        }
        return R.ok(result);
    }
    @RequestMapping(value = "/taskDetl/check/column/auth")
    @ManagerAuth
    public R query(@RequestBody JSONObject param) {
        Wrapper<TaskDetl> wrapper = new EntityWrapper<TaskDetl>().eq(humpToLine(String.valueOf(param.get("key"))), param.get("val"));
        if (null != taskDetlService.selectOne(wrapper)){
            return R.parse(BaseRes.REPEAT).add(getComment(TaskDetl.class, String.valueOf(param.get("key"))));
        }
        return R.ok();
    }
}
src/main/java/com/zy/asrs/controller/TaskDetlLogController.java
New file
@@ -0,0 +1,127 @@
package com.zy.asrs.controller;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.core.common.DateUtils;
import com.zy.asrs.entity.TaskDetlLog;
import com.zy.asrs.service.TaskDetlLogService;
import com.core.annotations.ManagerAuth;
import com.core.common.BaseRes;
import com.core.common.Cools;
import com.core.common.R;
import com.zy.common.web.BaseController;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.*;
@RestController
public class TaskDetlLogController extends BaseController {
    @Autowired
    private TaskDetlLogService taskDetlLogService;
    @RequestMapping(value = "/taskDetlLog/{id}/auth")
    @ManagerAuth
    public R get(@PathVariable("id") String id) {
        return R.ok(taskDetlLogService.selectById(String.valueOf(id)));
    }
    @RequestMapping(value = "/taskDetlLog/list/auth")
    @ManagerAuth
    public R list(@RequestParam(defaultValue = "1") Integer curr,
                  @RequestParam(defaultValue = "10") Integer limit,
                  @RequestParam(required = false) String orderByField,
                  @RequestParam(required = false) String orderByType,
                  @RequestParam(required = false) String condition,
                  @RequestParam Map<String, Object> param) {
        EntityWrapper<TaskDetlLog> wrapper = new EntityWrapper<>();
        excludeTrash(param);
        convert(param, wrapper);
        allLike(TaskDetlLog.class, param.keySet(), wrapper, condition);
        if (!Cools.isEmpty(orderByField)) {
            wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));
        }
        return R.ok(taskDetlLogService.selectPage(new Page<>(curr, limit), wrapper));
    }
    private <T> void convert(Map<String, Object> map, EntityWrapper<T> wrapper) {
        for (Map.Entry<String, Object> entry : map.entrySet()) {
            String val = String.valueOf(entry.getValue());
            if (val.contains(RANGE_TIME_LINK)) {
                String[] dates = val.split(RANGE_TIME_LINK);
                wrapper.ge(entry.getKey(), DateUtils.convert(dates[0]));
                wrapper.le(entry.getKey(), DateUtils.convert(dates[1]));
            } else {
                wrapper.like(entry.getKey(), val);
            }
        }
    }
    @RequestMapping(value = "/taskDetlLog/add/auth")
    @ManagerAuth
    public R add(TaskDetlLog taskDetlLog) {
        taskDetlLogService.insert(taskDetlLog);
        return R.ok();
    }
    @RequestMapping(value = "/taskDetlLog/update/auth")
    @ManagerAuth
    public R update(TaskDetlLog taskDetlLog) {
        if (Cools.isEmpty(taskDetlLog) || null == taskDetlLog.getId()) {
            return R.error();
        }
        taskDetlLogService.updateById(taskDetlLog);
        return R.ok();
    }
    @RequestMapping(value = "/taskDetlLog/delete/auth")
    @ManagerAuth
    public R delete(@RequestParam(value = "ids[]") Long[] ids) {
        for (Long id : ids) {
            taskDetlLogService.deleteById(id);
        }
        return R.ok();
    }
    @RequestMapping(value = "/taskDetlLog/export/auth")
    @ManagerAuth
    public R export(@RequestBody JSONObject param) {
        EntityWrapper<TaskDetlLog> wrapper = new EntityWrapper<>();
        List<String> fields = JSONObject.parseArray(param.getJSONArray("fields").toJSONString(), String.class);
        Map<String, Object> map = excludeTrash(param.getJSONObject("taskDetlLog"));
        convert(map, wrapper);
        List<TaskDetlLog> list = taskDetlLogService.selectList(wrapper);
        return R.ok(exportSupport(list, fields));
    }
    @RequestMapping(value = "/taskDetlLogQuery/auth")
    @ManagerAuth
    public R query(String condition) {
        EntityWrapper<TaskDetlLog> wrapper = new EntityWrapper<>();
        wrapper.like("id", condition);
        Page<TaskDetlLog> page = taskDetlLogService.selectPage(new Page<>(0, 10), wrapper);
        List<Map<String, Object>> result = new ArrayList<>();
        for (TaskDetlLog taskDetlLog : page.getRecords()) {
            Map<String, Object> map = new HashMap<>();
            map.put("id", taskDetlLog.getId());
            map.put("value", taskDetlLog.getId());
            result.add(map);
        }
        return R.ok(result);
    }
    @RequestMapping(value = "/taskDetlLog/check/column/auth")
    @ManagerAuth
    public R query(@RequestBody JSONObject param) {
        Wrapper<TaskDetlLog> wrapper = new EntityWrapper<TaskDetlLog>().eq(humpToLine(String.valueOf(param.get("key"))), param.get("val"));
        if (null != taskDetlLogService.selectOne(wrapper)) {
            return R.parse(BaseRes.REPEAT).add(getComment(TaskDetlLog.class, String.valueOf(param.get("key"))));
        }
        return R.ok();
    }
}
src/main/java/com/zy/asrs/controller/TaskLogController.java
New file
@@ -0,0 +1,125 @@
package com.zy.asrs.controller;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.core.common.DateUtils;
import com.zy.asrs.entity.TaskLog;
import com.zy.asrs.service.TaskLogService;
import com.core.annotations.ManagerAuth;
import com.core.common.BaseRes;
import com.core.common.Cools;
import com.core.common.R;
import com.zy.common.web.BaseController;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.*;
@RestController
public class TaskLogController extends BaseController {
    @Autowired
    private TaskLogService taskLogService;
    @RequestMapping(value = "/taskLog/{id}/auth")
    @ManagerAuth
    public R get(@PathVariable("id") String id) {
        return R.ok(taskLogService.selectById(String.valueOf(id)));
    }
    @RequestMapping(value = "/taskLog/list/auth")
    @ManagerAuth
    public R list(@RequestParam(defaultValue = "1")Integer curr,
                  @RequestParam(defaultValue = "10")Integer limit,
                  @RequestParam(required = false)String orderByField,
                  @RequestParam(required = false)String orderByType,
                  @RequestParam(required = false)String condition,
                  @RequestParam Map<String, Object> param){
        EntityWrapper<TaskLog> wrapper = new EntityWrapper<>();
        excludeTrash(param);
        convert(param, wrapper);
        allLike(TaskLog.class, param.keySet(), wrapper, condition);
        if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));}
        return R.ok(taskLogService.selectPage(new Page<>(curr, limit), wrapper));
    }
    private <T> void convert(Map<String, Object> map, EntityWrapper<T> wrapper){
        for (Map.Entry<String, Object> entry : map.entrySet()){
            String val = String.valueOf(entry.getValue());
            if (val.contains(RANGE_TIME_LINK)){
                String[] dates = val.split(RANGE_TIME_LINK);
                wrapper.ge(entry.getKey(), DateUtils.convert(dates[0]));
                wrapper.le(entry.getKey(), DateUtils.convert(dates[1]));
            } else {
                wrapper.like(entry.getKey(), val);
            }
        }
    }
    @RequestMapping(value = "/taskLog/add/auth")
    @ManagerAuth
    public R add(TaskLog taskLog) {
        taskLogService.insert(taskLog);
        return R.ok();
    }
    @RequestMapping(value = "/taskLog/update/auth")
    @ManagerAuth
    public R update(TaskLog taskLog){
        if (Cools.isEmpty(taskLog) || null==taskLog.getId()){
            return R.error();
        }
        taskLogService.updateById(taskLog);
        return R.ok();
    }
    @RequestMapping(value = "/taskLog/delete/auth")
    @ManagerAuth
    public R delete(@RequestParam(value="ids[]") Long[] ids){
         for (Long id : ids){
            taskLogService.deleteById(id);
        }
        return R.ok();
    }
    @RequestMapping(value = "/taskLog/export/auth")
    @ManagerAuth
    public R export(@RequestBody JSONObject param){
        EntityWrapper<TaskLog> wrapper = new EntityWrapper<>();
        List<String> fields = JSONObject.parseArray(param.getJSONArray("fields").toJSONString(), String.class);
        Map<String, Object> map = excludeTrash(param.getJSONObject("taskLog"));
        convert(map, wrapper);
        List<TaskLog> list = taskLogService.selectList(wrapper);
        return R.ok(exportSupport(list, fields));
    }
    @RequestMapping(value = "/taskLogQuery/auth")
    @ManagerAuth
    public R query(String condition) {
        EntityWrapper<TaskLog> wrapper = new EntityWrapper<>();
        wrapper.like("id", condition);
        Page<TaskLog> page = taskLogService.selectPage(new Page<>(0, 10), wrapper);
        List<Map<String, Object>> result = new ArrayList<>();
        for (TaskLog taskLog : page.getRecords()){
            Map<String, Object> map = new HashMap<>();
            map.put("id", taskLog.getId());
            map.put("value", taskLog.getId());
            result.add(map);
        }
        return R.ok(result);
    }
    @RequestMapping(value = "/taskLog/check/column/auth")
    @ManagerAuth
    public R query(@RequestBody JSONObject param) {
        Wrapper<TaskLog> wrapper = new EntityWrapper<TaskLog>().eq(humpToLine(String.valueOf(param.get("key"))), param.get("val"));
        if (null != taskLogService.selectOne(wrapper)){
            return R.parse(BaseRes.REPEAT).add(getComment(TaskLog.class, String.valueOf(param.get("key"))));
        }
        return R.ok();
    }
}
src/main/java/com/zy/asrs/entity/BasStation.java
New file
@@ -0,0 +1,378 @@
package com.zy.asrs.entity;
import com.core.common.Cools;import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.enums.IdType;
import com.baomidou.mybatisplus.annotations.TableField;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.springframework.format.annotation.DateTimeFormat;
import com.core.common.SpringUtils;
import com.zy.system.service.UserService;
import com.zy.system.entity.User;
import java.text.SimpleDateFormat;
import java.util.Date;
import com.core.common.SpringUtils;
import com.zy.system.service.UserService;
import com.zy.system.entity.User;
import java.text.SimpleDateFormat;
import java.util.Date;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import com.baomidou.mybatisplus.annotations.TableName;
import java.io.Serializable;
@Data
@TableName("agv_bas_station")
public class BasStation implements Serializable {
    private static final long serialVersionUID = 1L;
    /**
     * 主键
     */
    @ApiModelProperty(value= "主键")
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;
    /**
     * 编号
     */
    @ApiModelProperty(value= "编号")
    @TableField("dev_no")
    private Integer devNo;
    /**
     * 设备描述
     */
    @ApiModelProperty(value= "设备描述")
    @TableField("dec_desc")
    private String decDesc;
    /**
     * 备注
     */
    @ApiModelProperty(value= "备注")
    @TableField("dev_mk")
    private String devMk;
    /**
     * 可入(checkBox)
     */
    @ApiModelProperty(value= "可入(checkBox)")
    @TableField("in_enable")
    private String inEnable;
    /**
     * 可出(checkBox)
     */
    @ApiModelProperty(value= "可出(checkBox)")
    @TableField("out_enable")
    private String outEnable;
    /**
     * 自动(checkBox)
     */
    @ApiModelProperty(value= "自动(checkBox)")
    private String autoing;
    /**
     * 有物(checkBox)
     */
    @ApiModelProperty(value= "有物(checkBox)")
    private String loading;
    @ApiModelProperty(value= "")
    @TableField("loc_sts")
    private String locSts;
    /**
     * 能入(checkBox)
     */
    @ApiModelProperty(value= "能入(checkBox)")
    private String canining;
    /**
     * 能出(checkBox)
     */
    @ApiModelProperty(value= "能出(checkBox)")
    private String canouting;
    @ApiModelProperty(value= "")
    private String fronting;
    @ApiModelProperty(value= "")
    private String rearing;
    @ApiModelProperty(value= "")
    private String uping;
    @ApiModelProperty(value= "")
    private String downing;
    /**
     * 工作号
     */
    @ApiModelProperty(value= "工作号")
    @TableField("wrk_no")
    private Integer wrkNo;
    /**
     * 容器类型
     */
    @ApiModelProperty(value= "容器类型")
    @TableField("ctn_type")
    private Integer ctnType;
    /**
     * 条形码
     */
    @ApiModelProperty(value= "条形码")
    private String barcode;
    @ApiModelProperty(value= "")
    @TableField("in_qty")
    private Integer inQty;
    @ApiModelProperty(value= "")
    private Integer row1;
    @ApiModelProperty(value= "")
    @TableField("io_time")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    private Date ioTime;
    @ApiModelProperty(value= "")
    private String area;
    @ApiModelProperty(value= "")
    @TableField("in_ok")
    private String inOk;
    @ApiModelProperty(value= "")
    @TableField("out_ok")
    private String outOk;
    /**
     * 高低类型 0: 未知  1: 低库位  2: 高库位
     */
    @ApiModelProperty(value= "高低类型 0: 未知  1: 低库位  2: 高库位  ")
    @TableField("loc_type1")
    private Short locType1;
    /**
     * 宽窄类型 0: 未知  1: 窄库位  2: 宽库位
     */
    @ApiModelProperty(value= "宽窄类型 0: 未知  1: 窄库位  2: 宽库位  ")
    @TableField("loc_type2")
    private Short locType2;
    /**
     * 轻重类型 0: 未知  1: 轻库位  2: 重库位
     */
    @ApiModelProperty(value= "轻重类型 0: 未知  1: 轻库位  2: 重库位  ")
    @TableField("loc_type3")
    private Short locType3;
    /**
     * 修改人员
     */
    @ApiModelProperty(value= "修改人员")
    @TableField("modi_user")
    private Long modiUser;
    /**
     * 修改时间
     */
    @ApiModelProperty(value= "修改时间")
    @TableField("modi_time")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    private Date modiTime;
    /**
     * 创建者
     */
    @ApiModelProperty(value= "创建者")
    @TableField("appe_user")
    private Long appeUser;
    /**
     * 添加时间
     */
    @ApiModelProperty(value= "添加时间")
    @TableField("appe_time")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    private Date appeTime;
    @ApiModelProperty(value= "")
    @TableField("std_qty")
    private Double stdQty;
    @ApiModelProperty(value= "")
    @TableField("min_wt")
    private Double minWt;
    /**
     * 重量
     */
    @ApiModelProperty(value= "重量")
    @TableField("gross_wt")
    private Double grossWt;
    public BasStation() {}
    public BasStation(Integer devNo,String decDesc,String devMk,String inEnable,String outEnable,String autoing,String loading,String locSts,String canining,String canouting,String fronting,String rearing,String uping,String downing,Integer wrkNo,Integer ctnType,String barcode,Integer inQty,Integer row1,Date ioTime,String area,String inOk,String outOk,Short locType1,Short locType2,Short locType3,Long modiUser,Date modiTime,Long appeUser,Date appeTime,Double stdQty,Double minWt,Double grossWt) {
        this.devNo = devNo;
        this.decDesc = decDesc;
        this.devMk = devMk;
        this.inEnable = inEnable;
        this.outEnable = outEnable;
        this.autoing = autoing;
        this.loading = loading;
        this.locSts = locSts;
        this.canining = canining;
        this.canouting = canouting;
        this.fronting = fronting;
        this.rearing = rearing;
        this.uping = uping;
        this.downing = downing;
        this.wrkNo = wrkNo;
        this.ctnType = ctnType;
        this.barcode = barcode;
        this.inQty = inQty;
        this.row1 = row1;
        this.ioTime = ioTime;
        this.area = area;
        this.inOk = inOk;
        this.outOk = outOk;
        this.locType1 = locType1;
        this.locType2 = locType2;
        this.locType3 = locType3;
        this.modiUser = modiUser;
        this.modiTime = modiTime;
        this.appeUser = appeUser;
        this.appeTime = appeTime;
        this.stdQty = stdQty;
        this.minWt = minWt;
        this.grossWt = grossWt;
    }
//    BasStation basStation = new BasStation(
//            null,    // 编号[非空]
//            null,    // 设备描述
//            null,    // 备注
//            null,    // 可入(checkBox)
//            null,    // 可出(checkBox)
//            null,    // 自动(checkBox)
//            null,    // 有物(checkBox)
//            null,    //
//            null,    // 能入(checkBox)
//            null,    // 能出(checkBox)
//            null,    //
//            null,    //
//            null,    //
//            null,    //
//            null,    // 工作号
//            null,    // 容器类型
//            null,    // 条形码
//            null,    //
//            null,    //
//            null,    //
//            null,    //
//            null,    //
//            null,    //
//            null,    // 高低类型
//            null,    // 宽窄类型
//            null,    // 轻重类型
//            null,    // 修改人员
//            null,    // 修改时间
//            null,    // 创建者
//            null,    // 添加时间
//            null,    //
//            null,    //
//            null    // 重量
//    );
    public String getIoTime$(){
        if (Cools.isEmpty(this.ioTime)){
            return "";
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.ioTime);
    }
    public String getLocType1$(){
        if (null == this.locType1){ return null; }
        switch (this.locType1){
            case 0:
                return "未知";
            case 1:
                return "低库位";
            case 2:
                return "高库位";
            default:
                return String.valueOf(this.locType1);
        }
    }
    public String getLocType2$(){
        if (null == this.locType2){ return null; }
        switch (this.locType2){
            case 0:
                return "未知";
            case 1:
                return "窄库位";
            case 2:
                return "宽库位";
            default:
                return String.valueOf(this.locType2);
        }
    }
    public String getLocType3$(){
        if (null == this.locType3){ return null; }
        switch (this.locType3){
            case 0:
                return "未知";
            case 1:
                return "轻库位";
            case 2:
                return "重库位";
            default:
                return String.valueOf(this.locType3);
        }
    }
    public String getModiUser$(){
        UserService service = SpringUtils.getBean(UserService.class);
        User user = service.selectById(this.modiUser);
        if (!Cools.isEmpty(user)){
            return String.valueOf(user.getNickname());
        }
        return null;
    }
    public String getModiTime$(){
        if (Cools.isEmpty(this.modiTime)){
            return "";
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.modiTime);
    }
    public String getAppeUser$(){
        UserService service = SpringUtils.getBean(UserService.class);
        User user = service.selectById(this.appeUser);
        if (!Cools.isEmpty(user)){
            return String.valueOf(user.getNickname());
        }
        return null;
    }
    public String getAppeTime$(){
        if (Cools.isEmpty(this.appeTime)){
            return "";
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.appeTime);
    }
}
src/main/java/com/zy/asrs/entity/Task.java
New file
@@ -0,0 +1,40 @@
package com.zy.asrs.entity;
import com.core.common.Cools;import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.enums.IdType;
import com.baomidou.mybatisplus.annotations.TableField;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import com.baomidou.mybatisplus.annotations.TableName;
import java.io.Serializable;
@Data
@TableName("agv_task")
public class Task implements Serializable {
    private static final long serialVersionUID = 1L;
    @ApiModelProperty(value= "")
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;
    /**
     * 任务类型: agv  , crn
     */
    @ApiModelProperty(value= "任务类型: agv  , crn")
    @TableField("task_type")
    private String taskType;
    public Task() {}
    public Task(String taskType) {
        this.taskType = taskType;
    }
//    Task task = new Task(
//            null    // 任务类型: agv  , crn
//    );
}
src/main/java/com/zy/asrs/entity/TaskDetl.java
New file
@@ -0,0 +1,500 @@
package com.zy.asrs.entity;
import com.baomidou.mybatisplus.annotations.TableId;
import com.core.common.Cools;import com.baomidou.mybatisplus.annotations.TableField;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.springframework.format.annotation.DateTimeFormat;
import com.core.common.SpringUtils;
import com.zy.system.service.UserService;
import com.zy.system.entity.User;
import java.text.SimpleDateFormat;
import java.util.Date;
import com.core.common.SpringUtils;
import com.zy.system.service.UserService;
import com.zy.system.entity.User;
import java.text.SimpleDateFormat;
import java.util.Date;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import com.baomidou.mybatisplus.annotations.TableName;
import java.io.Serializable;
@Data
@TableName("agv_task_detl")
public class TaskDetl implements Serializable {
    private static final long serialVersionUID = 1L;
    private Long id;
    /**
     * 工作号
     */
    @ApiModelProperty(value= "工作号")
    @TableField("wrk_no")
    private Integer wrkNo;
    /**
     * 工作时间
     */
    @ApiModelProperty(value= "工作时间")
    @TableField("io_time")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    private Date ioTime;
    /**
     * 数量
     */
    @ApiModelProperty(value= "数量")
    private Double anfme;
    /**
     * 托盘条码
     */
    @ApiModelProperty(value= "托盘条码")
    private String zpallet;
    /**
     * 商品编号
     */
    @ApiModelProperty(value= "商品编号")
    private String matnr;
    /**
     * 商品名称
     */
    @ApiModelProperty(value= "商品名称")
    private String maktx;
    /**
     * 批号
     */
    @ApiModelProperty(value= "批号")
    private String batch;
    /**
     * 单据编号
     */
    @ApiModelProperty(value= "单据编号")
    @TableField("order_no")
    private String orderNo;
    /**
     * 规格
     */
    @ApiModelProperty(value= "规格")
    private String specs;
    /**
     * 型号
     */
    @ApiModelProperty(value= "型号")
    private String model;
    /**
     * 颜色
     */
    @ApiModelProperty(value= "颜色")
    private String color;
    /**
     * 品牌
     */
    @ApiModelProperty(value= "品牌")
    private String brand;
    /**
     * 单位
     */
    @ApiModelProperty(value= "单位")
    private String unit;
    /**
     * 单价
     */
    @ApiModelProperty(value= "单价")
    private Double price;
    /**
     * sku
     */
    @ApiModelProperty(value= "sku")
    private String sku;
    /**
     * 单位量
     */
    @ApiModelProperty(value= "单位量")
    private Double units;
    /**
     * 条码
     */
    @ApiModelProperty(value= "条码")
    private String barcode;
    /**
     * 产地
     */
    @ApiModelProperty(value= "产地")
    private String origin;
    /**
     * 厂家
     */
    @ApiModelProperty(value= "厂家")
    private String manu;
    /**
     * 生产日期
     */
    @ApiModelProperty(value= "生产日期")
    @TableField("manu_date")
    private String manuDate;
    /**
     * 品项数
     */
    @ApiModelProperty(value= "品项数")
    @TableField("item_num")
    private String itemNum;
    /**
     * 安全库存量
     */
    @ApiModelProperty(value= "安全库存量")
    @TableField("safe_qty")
    private Double safeQty;
    /**
     * 重量
     */
    @ApiModelProperty(value= "重量")
    private Double weight;
    /**
     * 长度
     */
    @ApiModelProperty(value= "长度")
    @TableField("man_length")
    private Double manLength;
    /**
     * 体积
     */
    @ApiModelProperty(value= "体积")
    private Double volume;
    /**
     * 三方编码
     */
    @ApiModelProperty(value= "三方编码")
    @TableField("three_code")
    private String threeCode;
    /**
     * 供应商
     */
    @ApiModelProperty(value= "供应商")
    private String supp;
    /**
     * 供应商编码
     */
    @ApiModelProperty(value= "供应商编码")
    @TableField("supp_code")
    private String suppCode;
    /**
     * 是否批次 1: 是  0: 否
     */
    @ApiModelProperty(value= "是否批次 1: 是  0: 否  ")
    @TableField("be_batch")
    private Integer beBatch;
    /**
     * 保质期
     */
    @ApiModelProperty(value= "保质期")
    @TableField("dead_time")
    private String deadTime;
    /**
     * 预警天数
     */
    @ApiModelProperty(value= "预警天数")
    @TableField("dead_warn")
    private Integer deadWarn;
    /**
     * 制购 1: 制造  2: 采购  3: 外协
     */
    @ApiModelProperty(value= "制购 1: 制造  2: 采购  3: 外协  ")
    private Integer source;
    /**
     * 要求检验 1: 是  0: 否
     */
    @ApiModelProperty(value= "要求检验 1: 是  0: 否  ")
    private Integer inspect;
    /**
     * 危险品 1: 是  0: 否
     */
    @ApiModelProperty(value= "危险品 1: 是  0: 否  ")
    private Integer danger;
    /**
     * 修改人员
     */
    @ApiModelProperty(value= "修改人员")
    @TableField("modi_user")
    private Long modiUser;
    /**
     * 修改时间
     */
    @ApiModelProperty(value= "修改时间")
    @TableField("modi_time")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    private Date modiTime;
    /**
     * 添加人员
     */
    @ApiModelProperty(value= "添加人员")
    @TableField("appe_user")
    private Long appeUser;
    /**
     * 添加时间
     */
    @ApiModelProperty(value= "添加时间")
    @TableField("appe_time")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    private Date appeTime;
    /**
     * 备注
     */
    @ApiModelProperty(value= "备注")
    private String memo;
    @ApiModelProperty(value= "")
    @TableField("line_number")
    private Long lineNumber;
    @ApiModelProperty(value= "")
    private String standby1;
    @ApiModelProperty(value= "")
    private String standby2;
    @ApiModelProperty(value= "")
    private String standby3;
    @ApiModelProperty(value= "")
    @TableField("box_type1")
    private String boxType1;
    @ApiModelProperty(value= "")
    @TableField("box_type2")
    private String boxType2;
    @ApiModelProperty(value= "")
    @TableField("box_type3")
    private String boxType3;
    public TaskDetl() {}
    public TaskDetl(Integer wrkNo,Date ioTime,Double anfme,String zpallet,String matnr,String maktx,String batch,String orderNo,String specs,String model,String color,String brand,String unit,Double price,String sku,Double units,String barcode,String origin,String manu,String manuDate,String itemNum,Double safeQty,Double weight,Double manLength,Double volume,String threeCode,String supp,String suppCode,Integer beBatch,String deadTime,Integer deadWarn,Integer source,Integer inspect,Integer danger,Long modiUser,Date modiTime,Long appeUser,Date appeTime,String memo,Long lineNumber,String standby1,String standby2,String standby3,String boxType1,String boxType2,String boxType3) {
        this.wrkNo = wrkNo;
        this.ioTime = ioTime;
        this.anfme = anfme;
        this.zpallet = zpallet;
        this.matnr = matnr;
        this.maktx = maktx;
        this.batch = batch;
        this.orderNo = orderNo;
        this.specs = specs;
        this.model = model;
        this.color = color;
        this.brand = brand;
        this.unit = unit;
        this.price = price;
        this.sku = sku;
        this.units = units;
        this.barcode = barcode;
        this.origin = origin;
        this.manu = manu;
        this.manuDate = manuDate;
        this.itemNum = itemNum;
        this.safeQty = safeQty;
        this.weight = weight;
        this.manLength = manLength;
        this.volume = volume;
        this.threeCode = threeCode;
        this.supp = supp;
        this.suppCode = suppCode;
        this.beBatch = beBatch;
        this.deadTime = deadTime;
        this.deadWarn = deadWarn;
        this.source = source;
        this.inspect = inspect;
        this.danger = danger;
        this.modiUser = modiUser;
        this.modiTime = modiTime;
        this.appeUser = appeUser;
        this.appeTime = appeTime;
        this.memo = memo;
        this.lineNumber = lineNumber;
        this.standby1 = standby1;
        this.standby2 = standby2;
        this.standby3 = standby3;
        this.boxType1 = boxType1;
        this.boxType2 = boxType2;
        this.boxType3 = boxType3;
    }
//    TaskDetl taskDetl = new TaskDetl(
//            null,    // 工作号[非空]
//            null,    // 工作时间
//            null,    // 数量
//            null,    // 托盘条码
//            null,    // 商品编号[非空]
//            null,    // 商品名称
//            null,    // 批号
//            null,    // 单据编号
//            null,    // 规格
//            null,    // 型号
//            null,    // 颜色
//            null,    // 品牌
//            null,    // 单位
//            null,    // 单价
//            null,    // sku
//            null,    // 单位量
//            null,    // 条码
//            null,    // 产地
//            null,    // 厂家
//            null,    // 生产日期
//            null,    // 品项数
//            null,    // 安全库存量
//            null,    // 重量
//            null,    // 长度
//            null,    // 体积
//            null,    // 三方编码
//            null,    // 供应商
//            null,    // 供应商编码
//            null,    // 是否批次
//            null,    // 保质期
//            null,    // 预警天数
//            null,    // 制购
//            null,    // 要求检验
//            null,    // 危险品
//            null,    // 修改人员
//            null,    // 修改时间
//            null,    // 添加人员
//            null,    // 添加时间
//            null,    // 备注
//            null,    //
//            null,    //
//            null,    //
//            null,    //
//            null,    //
//            null,    //
//            null    //
//    );
    public String getIoTime$(){
        if (Cools.isEmpty(this.ioTime)){
            return "";
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.ioTime);
    }
    public String getBeBatch$(){
        if (null == this.beBatch){ return null; }
        switch (this.beBatch){
            case 1:
                return "是";
            case 0:
                return "否";
            default:
                return String.valueOf(this.beBatch);
        }
    }
    public String getSource$(){
        if (null == this.source){ return null; }
        switch (this.source){
            case 1:
                return "制造";
            case 2:
                return "采购";
            case 3:
                return "外协";
            default:
                return String.valueOf(this.source);
        }
    }
    public String getInspect$(){
        if (null == this.inspect){ return null; }
        switch (this.inspect){
            case 1:
                return "是";
            case 0:
                return "否";
            default:
                return String.valueOf(this.inspect);
        }
    }
    public String getDanger$(){
        if (null == this.danger){ return null; }
        switch (this.danger){
            case 1:
                return "是";
            case 0:
                return "否";
            default:
                return String.valueOf(this.danger);
        }
    }
    public String getModiUser$(){
        UserService service = SpringUtils.getBean(UserService.class);
        User user = service.selectById(this.modiUser);
        if (!Cools.isEmpty(user)){
            return String.valueOf(user.getNickname());
        }
        return null;
    }
    public String getModiTime$(){
        if (Cools.isEmpty(this.modiTime)){
            return "";
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.modiTime);
    }
    public String getAppeUser$(){
        UserService service = SpringUtils.getBean(UserService.class);
        User user = service.selectById(this.appeUser);
        if (!Cools.isEmpty(user)){
            return String.valueOf(user.getNickname());
        }
        return null;
    }
    public String getAppeTime$(){
        if (Cools.isEmpty(this.appeTime)){
            return "";
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.appeTime);
    }
}
src/main/java/com/zy/asrs/entity/TaskDetlLog.java
New file
@@ -0,0 +1,502 @@
package com.zy.asrs.entity;
import com.core.common.Cools;import com.baomidou.mybatisplus.annotations.TableField;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.springframework.format.annotation.DateTimeFormat;
import com.core.common.SpringUtils;
import com.zy.system.service.UserService;
import com.zy.system.entity.User;
import java.text.SimpleDateFormat;
import java.util.Date;
import com.core.common.SpringUtils;
import com.zy.system.service.UserService;
import com.zy.system.entity.User;
import java.text.SimpleDateFormat;
import java.util.Date;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import com.baomidou.mybatisplus.annotations.TableName;
import java.io.Serializable;
@Data
@TableName("agv_task_detl_log")
public class TaskDetlLog implements Serializable {
    private static final long serialVersionUID = 1L;
    private Long id;
    @TableField("log_id")
    private Long logId;
    /**
     * 工作号
     */
    @ApiModelProperty(value= "工作号")
    @TableField("wrk_no")
    private Integer wrkNo;
    /**
     * 工作时间
     */
    @ApiModelProperty(value= "工作时间")
    @TableField("io_time")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    private Date ioTime;
    /**
     * 数量
     */
    @ApiModelProperty(value= "数量")
    private Double anfme;
    /**
     * 托盘条码
     */
    @ApiModelProperty(value= "托盘条码")
    private String zpallet;
    /**
     * 商品编号
     */
    @ApiModelProperty(value= "商品编号")
    private String matnr;
    /**
     * 商品名称
     */
    @ApiModelProperty(value= "商品名称")
    private String maktx;
    /**
     * 批号
     */
    @ApiModelProperty(value= "批号")
    private String batch;
    /**
     * 单据编号
     */
    @ApiModelProperty(value= "单据编号")
    @TableField("order_no")
    private String orderNo;
    /**
     * 规格
     */
    @ApiModelProperty(value= "规格")
    private String specs;
    /**
     * 型号
     */
    @ApiModelProperty(value= "型号")
    private String model;
    /**
     * 颜色
     */
    @ApiModelProperty(value= "颜色")
    private String color;
    /**
     * 品牌
     */
    @ApiModelProperty(value= "品牌")
    private String brand;
    /**
     * 单位
     */
    @ApiModelProperty(value= "单位")
    private String unit;
    /**
     * 单价
     */
    @ApiModelProperty(value= "单价")
    private Double price;
    /**
     * sku
     */
    @ApiModelProperty(value= "sku")
    private String sku;
    /**
     * 单位量
     */
    @ApiModelProperty(value= "单位量")
    private Double units;
    /**
     * 条码
     */
    @ApiModelProperty(value= "条码")
    private String barcode;
    /**
     * 产地
     */
    @ApiModelProperty(value= "产地")
    private String origin;
    /**
     * 厂家
     */
    @ApiModelProperty(value= "厂家")
    private String manu;
    /**
     * 生产日期
     */
    @ApiModelProperty(value= "生产日期")
    @TableField("manu_date")
    private String manuDate;
    /**
     * 品项数
     */
    @ApiModelProperty(value= "品项数")
    @TableField("item_num")
    private String itemNum;
    /**
     * 安全库存量
     */
    @ApiModelProperty(value= "安全库存量")
    @TableField("safe_qty")
    private Double safeQty;
    /**
     * 重量
     */
    @ApiModelProperty(value= "重量")
    private Double weight;
    /**
     * 长度
     */
    @ApiModelProperty(value= "长度")
    @TableField("man_length")
    private Double manLength;
    /**
     * 体积
     */
    @ApiModelProperty(value= "体积")
    private Double volume;
    /**
     * 三方编码
     */
    @ApiModelProperty(value= "三方编码")
    @TableField("three_code")
    private String threeCode;
    /**
     * 供应商
     */
    @ApiModelProperty(value= "供应商")
    private String supp;
    /**
     * 供应商编码
     */
    @ApiModelProperty(value= "供应商编码")
    @TableField("supp_code")
    private String suppCode;
    /**
     * 是否批次 1: 是  0: 否
     */
    @ApiModelProperty(value= "是否批次 1: 是  0: 否  ")
    @TableField("be_batch")
    private Integer beBatch;
    /**
     * 保质期
     */
    @ApiModelProperty(value= "保质期")
    @TableField("dead_time")
    private String deadTime;
    /**
     * 预警天数
     */
    @ApiModelProperty(value= "预警天数")
    @TableField("dead_warn")
    private Integer deadWarn;
    /**
     * 制购 1: 制造  2: 采购  3: 外协
     */
    @ApiModelProperty(value= "制购 1: 制造  2: 采购  3: 外协  ")
    private Integer source;
    /**
     * 要求检验 1: 是  0: 否
     */
    @ApiModelProperty(value= "要求检验 1: 是  0: 否  ")
    private Integer inspect;
    /**
     * 危险品 1: 是  0: 否
     */
    @ApiModelProperty(value= "危险品 1: 是  0: 否  ")
    private Integer danger;
    /**
     * 修改人员
     */
    @ApiModelProperty(value= "修改人员")
    @TableField("modi_user")
    private Long modiUser;
    /**
     * 修改时间
     */
    @ApiModelProperty(value= "修改时间")
    @TableField("modi_time")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    private Date modiTime;
    /**
     * 添加人员
     */
    @ApiModelProperty(value= "添加人员")
    @TableField("appe_user")
    private Long appeUser;
    /**
     * 添加时间
     */
    @ApiModelProperty(value= "添加时间")
    @TableField("appe_time")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    private Date appeTime;
    /**
     * 备注
     */
    @ApiModelProperty(value= "备注")
    private String memo;
    @ApiModelProperty(value= "")
    @TableField("line_number")
    private Long lineNumber;
    @ApiModelProperty(value= "")
    private String standby1;
    @ApiModelProperty(value= "")
    private String standby2;
    @ApiModelProperty(value= "")
    private String standby3;
    @ApiModelProperty(value= "")
    @TableField("box_type1")
    private String boxType1;
    @ApiModelProperty(value= "")
    @TableField("box_type2")
    private String boxType2;
    @ApiModelProperty(value= "")
    @TableField("box_type3")
    private String boxType3;
    public TaskDetlLog() {}
    public TaskDetlLog(Integer wrkNo,Date ioTime,Double anfme,String zpallet,String matnr,String maktx,String batch,String orderNo,String specs,String model,String color,String brand,String unit,Double price,String sku,Double units,String barcode,String origin,String manu,String manuDate,String itemNum,Double safeQty,Double weight,Double manLength,Double volume,String threeCode,String supp,String suppCode,Integer beBatch,String deadTime,Integer deadWarn,Integer source,Integer inspect,Integer danger,Long modiUser,Date modiTime,Long appeUser,Date appeTime,String memo,Long lineNumber,String standby1,String standby2,String standby3,String boxType1,String boxType2,String boxType3) {
        this.wrkNo = wrkNo;
        this.ioTime = ioTime;
        this.anfme = anfme;
        this.zpallet = zpallet;
        this.matnr = matnr;
        this.maktx = maktx;
        this.batch = batch;
        this.orderNo = orderNo;
        this.specs = specs;
        this.model = model;
        this.color = color;
        this.brand = brand;
        this.unit = unit;
        this.price = price;
        this.sku = sku;
        this.units = units;
        this.barcode = barcode;
        this.origin = origin;
        this.manu = manu;
        this.manuDate = manuDate;
        this.itemNum = itemNum;
        this.safeQty = safeQty;
        this.weight = weight;
        this.manLength = manLength;
        this.volume = volume;
        this.threeCode = threeCode;
        this.supp = supp;
        this.suppCode = suppCode;
        this.beBatch = beBatch;
        this.deadTime = deadTime;
        this.deadWarn = deadWarn;
        this.source = source;
        this.inspect = inspect;
        this.danger = danger;
        this.modiUser = modiUser;
        this.modiTime = modiTime;
        this.appeUser = appeUser;
        this.appeTime = appeTime;
        this.memo = memo;
        this.lineNumber = lineNumber;
        this.standby1 = standby1;
        this.standby2 = standby2;
        this.standby3 = standby3;
        this.boxType1 = boxType1;
        this.boxType2 = boxType2;
        this.boxType3 = boxType3;
    }
//    TaskDetlLog taskDetlLog = new TaskDetlLog(
//            null,    // 工作号[非空]
//            null,    // 工作时间
//            null,    // 数量
//            null,    // 托盘条码
//            null,    // 商品编号[非空]
//            null,    // 商品名称
//            null,    // 批号
//            null,    // 单据编号
//            null,    // 规格
//            null,    // 型号
//            null,    // 颜色
//            null,    // 品牌
//            null,    // 单位
//            null,    // 单价
//            null,    // sku
//            null,    // 单位量
//            null,    // 条码
//            null,    // 产地
//            null,    // 厂家
//            null,    // 生产日期
//            null,    // 品项数
//            null,    // 安全库存量
//            null,    // 重量
//            null,    // 长度
//            null,    // 体积
//            null,    // 三方编码
//            null,    // 供应商
//            null,    // 供应商编码
//            null,    // 是否批次
//            null,    // 保质期
//            null,    // 预警天数
//            null,    // 制购
//            null,    // 要求检验
//            null,    // 危险品
//            null,    // 修改人员
//            null,    // 修改时间
//            null,    // 添加人员
//            null,    // 添加时间
//            null,    // 备注
//            null,    //
//            null,    //
//            null,    //
//            null,    //
//            null,    //
//            null,    //
//            null    //
//    );
    public String getIoTime$(){
        if (Cools.isEmpty(this.ioTime)){
            return "";
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.ioTime);
    }
    public String getBeBatch$(){
        if (null == this.beBatch){ return null; }
        switch (this.beBatch){
            case 1:
                return "是";
            case 0:
                return "否";
            default:
                return String.valueOf(this.beBatch);
        }
    }
    public String getSource$(){
        if (null == this.source){ return null; }
        switch (this.source){
            case 1:
                return "制造";
            case 2:
                return "采购";
            case 3:
                return "外协";
            default:
                return String.valueOf(this.source);
        }
    }
    public String getInspect$(){
        if (null == this.inspect){ return null; }
        switch (this.inspect){
            case 1:
                return "是";
            case 0:
                return "否";
            default:
                return String.valueOf(this.inspect);
        }
    }
    public String getDanger$(){
        if (null == this.danger){ return null; }
        switch (this.danger){
            case 1:
                return "是";
            case 0:
                return "否";
            default:
                return String.valueOf(this.danger);
        }
    }
    public String getModiUser$(){
        UserService service = SpringUtils.getBean(UserService.class);
        User user = service.selectById(this.modiUser);
        if (!Cools.isEmpty(user)){
            return String.valueOf(user.getNickname());
        }
        return null;
    }
    public String getModiTime$(){
        if (Cools.isEmpty(this.modiTime)){
            return "";
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.modiTime);
    }
    public String getAppeUser$(){
        UserService service = SpringUtils.getBean(UserService.class);
        User user = service.selectById(this.appeUser);
        if (!Cools.isEmpty(user)){
            return String.valueOf(user.getNickname());
        }
        return null;
    }
    public String getAppeTime$(){
        if (Cools.isEmpty(this.appeTime)){
            return "";
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.appeTime);
    }
}
src/main/java/com/zy/asrs/entity/TaskLog.java
New file
@@ -0,0 +1,686 @@
package com.zy.asrs.entity;
import com.core.common.Cools;import com.core.common.SpringUtils;
import com.zy.asrs.service.WrkMastService;
import com.zy.asrs.entity.WrkMast;
import com.baomidou.mybatisplus.annotations.TableField;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.springframework.format.annotation.DateTimeFormat;
import com.core.common.SpringUtils;
import com.zy.asrs.service.BasWrkStatusService;
import com.zy.asrs.entity.BasWrkStatus;
import com.core.common.SpringUtils;
import com.zy.asrs.service.BasWrkIotypeService;
import com.zy.asrs.entity.BasWrkIotype;
import com.core.common.SpringUtils;
import com.zy.asrs.service.BasCrnpService;
import com.zy.asrs.entity.BasCrnp;
import java.text.SimpleDateFormat;
import java.util.Date;
import com.core.common.SpringUtils;
import com.zy.asrs.service.LocMastService;
import com.zy.asrs.entity.LocMast;
import com.core.common.SpringUtils;
import com.zy.asrs.service.BasDevpService;
import com.zy.asrs.entity.BasDevp;
import com.core.common.SpringUtils;
import com.zy.asrs.service.BasDevpService;
import com.zy.asrs.entity.BasDevp;
import com.core.common.SpringUtils;
import com.zy.asrs.service.LocMastService;
import com.zy.asrs.entity.LocMast;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.text.SimpleDateFormat;
import java.util.Date;
import com.core.common.SpringUtils;
import com.zy.system.service.UserService;
import com.zy.system.entity.User;
import java.text.SimpleDateFormat;
import java.util.Date;
import com.core.common.SpringUtils;
import com.zy.system.service.UserService;
import com.zy.system.entity.User;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.text.SimpleDateFormat;
import java.util.Date;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import com.baomidou.mybatisplus.annotations.TableName;
import java.io.Serializable;
@Data
@TableName("agv_task_log")
public class TaskLog implements Serializable {
    private static final long serialVersionUID = 1L;
    @ApiModelProperty(value= "")
    private Long id;
    /**
     * 工作号
     */
    @ApiModelProperty(value= "工作号")
    @TableField("wrk_no")
    private Integer wrkNo;
    @ApiModelProperty(value= "")
    @TableField("log_id")
    private Long logId;
    @ApiModelProperty(value= "")
    @TableField("inv_wh")
    private String invWh;
    @ApiModelProperty(value= "")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    private Date ymd;
    @ApiModelProperty(value= "")
    private String mk;
    @ApiModelProperty(value= "")
    @TableField("whs_type")
    private Integer whsType;
    /**
     * 工作状态
     */
    @ApiModelProperty(value= "工作状态")
    @TableField("wrk_sts")
    private Integer wrkSts;
    /**
     * 入出库类型
     */
    @ApiModelProperty(value= "入出库类型")
    @TableField("io_type")
    private Integer ioType;
    /**
     * 堆垛机号
     */
    @ApiModelProperty(value= "堆垛机号")
    @TableField("crn_no")
    private Integer crnNo;
    @ApiModelProperty(value= "")
    @TableField("sheet_no")
    private String sheetNo;
    /**
     * 优先级
     */
    @ApiModelProperty(value= "优先级")
    @TableField("io_pri")
    private Double ioPri;
    @ApiModelProperty(value= "")
    @TableField("wrk_date")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    private Date wrkDate;
    /**
     * 目标库位
     */
    @ApiModelProperty(value= "目标库位")
    @TableField("loc_no")
    private String locNo;
    /**
     * 目标站
     */
    @ApiModelProperty(value= "目标站")
    @TableField("sta_no")
    private Integer staNo;
    /**
     * 源站
     */
    @ApiModelProperty(value= "源站")
    @TableField("source_sta_no")
    private Integer sourceStaNo;
    /**
     * 源库位
     */
    @ApiModelProperty(value= "源库位")
    @TableField("source_loc_no")
    private String sourceLocNo;
    @ApiModelProperty(value= "")
    @TableField("loc_sts")
    private String locSts;
    /**
     * 拣料(checkBox)
     */
    @ApiModelProperty(value= "拣料(checkBox)")
    private String picking;
    @ApiModelProperty(value= "")
    @TableField("link_mis")
    private String linkMis;
    @ApiModelProperty(value= "")
    @TableField("online_yn")
    private String onlineYn;
    @ApiModelProperty(value= "")
    @TableField("upd_mk")
    private String updMk;
    /**
     * 退出(checkBox)
     */
    @ApiModelProperty(value= "退出(checkBox)")
    @TableField("exit_mk")
    private String exitMk;
    @ApiModelProperty(value= "")
    @TableField("plt_type")
    private Integer pltType;
    /**
     * 空板(checkBox)
     */
    @ApiModelProperty(value= "空板(checkBox)")
    @TableField("empty_mk")
    private String emptyMk;
    /**
     * 工作时间
     */
    @ApiModelProperty(value= "工作时间")
    @TableField("io_time")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    private Date ioTime;
    @ApiModelProperty(value= "")
    @TableField("ctn_type")
    private Integer ctnType;
    @ApiModelProperty(value= "")
    private String packed;
    @ApiModelProperty(value= "")
    @TableField("ove_mk")
    private String oveMk;
    @ApiModelProperty(value= "")
    @TableField("mtn_type")
    private Double mtnType;
    @ApiModelProperty(value= "")
    @TableField("user_no")
    private String userNo;
    /**
     * 堆垛机启动时间
     */
    @ApiModelProperty(value= "堆垛机启动时间")
    @TableField("crn_str_time")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    private Date crnStrTime;
    /**
     * 堆垛机停止时间
     */
    @ApiModelProperty(value= "堆垛机停止时间")
    @TableField("crn_end_time")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    private Date crnEndTime;
    /**
     * 拣料时间
     */
    @ApiModelProperty(value= "拣料时间")
    @TableField("plc_str_time")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    private Date plcStrTime;
    @ApiModelProperty(value= "")
    @TableField("crn_pos_time")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    private Date crnPosTime;
    @ApiModelProperty(value= "")
    @TableField("load_time")
    private Double loadTime;
    @ApiModelProperty(value= "")
    @TableField("exp_time")
    private Double expTime;
    @ApiModelProperty(value= "")
    @TableField("ref_wrkno")
    private Double refWrkno;
    @ApiModelProperty(value= "")
    @TableField("ref_iotime")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    private Date refIotime;
    /**
     * 修改人员
     */
    @ApiModelProperty(value= "修改人员")
    @TableField("modi_user")
    private Long modiUser;
    /**
     * 修改时间
     */
    @ApiModelProperty(value= "修改时间")
    @TableField("modi_time")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    private Date modiTime;
    /**
     * 创建者
     */
    @ApiModelProperty(value= "创建者")
    @TableField("appe_user")
    private Long appeUser;
    /**
     * 添加时间
     */
    @ApiModelProperty(value= "添加时间")
    @TableField("appe_time")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    private Date appeTime;
    @ApiModelProperty(value= "")
    @TableField("pause_mk")
    private String pauseMk;
    @ApiModelProperty(value= "")
    @TableField("error_time")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    private Date errorTime;
    @ApiModelProperty(value= "")
    @TableField("error_memo")
    private String errorMemo;
    @ApiModelProperty(value= "")
    @TableField("ctn_kind")
    private Integer ctnKind;
    @ApiModelProperty(value= "")
    @TableField("manu_type")
    private String manuType;
    @ApiModelProperty(value= "")
    @TableField("memo_m")
    private String memoM;
    @ApiModelProperty(value= "")
    @TableField("sc_weight")
    private Double scWeight;
    @ApiModelProperty(value= "")
    @TableField("log_mk")
    private String logMk;
    @ApiModelProperty(value= "")
    @TableField("log_err_time")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    private Date logErrTime;
    @ApiModelProperty(value= "")
    @TableField("log_err_memo")
    private String logErrMemo;
    /**
     * 条码
     */
    @ApiModelProperty(value= "条码")
    private String barcode;
    @ApiModelProperty(value= "")
    @TableField("Pdc_type")
    private String PdcType;
    @ApiModelProperty(value= "")
    @TableField("ctn_no")
    private String ctnNo;
    /**
     * 满板(checkBox)
     */
    @ApiModelProperty(value= "满板(checkBox)")
    @TableField("full_plt")
    private String fullPlt;
    @ApiModelProperty(value= "")
    @TableField("pre_have")
    private String preHave;
    @ApiModelProperty(value= "")
    @TableField("take_none")
    private String takeNone;
    @ApiModelProperty(value= "")
    @TableField("line_number")
    private Long lineNumber;
    public TaskLog() {}
    public TaskLog(Long id,Integer wrkNo,Long logId,String invWh,Date ymd,String mk,Integer whsType,Integer wrkSts,Integer ioType,Integer crnNo,String sheetNo,Double ioPri,Date wrkDate,String locNo,Integer staNo,Integer sourceStaNo,String sourceLocNo,String locSts,String picking,String linkMis,String onlineYn,String updMk,String exitMk,Integer pltType,String emptyMk,Date ioTime,Integer ctnType,String packed,String oveMk,Double mtnType,String userNo,Date crnStrTime,Date crnEndTime,Date plcStrTime,Date crnPosTime,Double loadTime,Double expTime,Double refWrkno,Date refIotime,Long modiUser,Date modiTime,Long appeUser,Date appeTime,String pauseMk,Date errorTime,String errorMemo,Integer ctnKind,String manuType,String memoM,Double scWeight,String logMk,Date logErrTime,String logErrMemo,String barcode,String PdcType,String ctnNo,String fullPlt,String preHave,String takeNone,Long lineNumber) {
        this.id = id;
        this.wrkNo = wrkNo;
        this.logId = logId;
        this.invWh = invWh;
        this.ymd = ymd;
        this.mk = mk;
        this.whsType = whsType;
        this.wrkSts = wrkSts;
        this.ioType = ioType;
        this.crnNo = crnNo;
        this.sheetNo = sheetNo;
        this.ioPri = ioPri;
        this.wrkDate = wrkDate;
        this.locNo = locNo;
        this.staNo = staNo;
        this.sourceStaNo = sourceStaNo;
        this.sourceLocNo = sourceLocNo;
        this.locSts = locSts;
        this.picking = picking;
        this.linkMis = linkMis;
        this.onlineYn = onlineYn;
        this.updMk = updMk;
        this.exitMk = exitMk;
        this.pltType = pltType;
        this.emptyMk = emptyMk;
        this.ioTime = ioTime;
        this.ctnType = ctnType;
        this.packed = packed;
        this.oveMk = oveMk;
        this.mtnType = mtnType;
        this.userNo = userNo;
        this.crnStrTime = crnStrTime;
        this.crnEndTime = crnEndTime;
        this.plcStrTime = plcStrTime;
        this.crnPosTime = crnPosTime;
        this.loadTime = loadTime;
        this.expTime = expTime;
        this.refWrkno = refWrkno;
        this.refIotime = refIotime;
        this.modiUser = modiUser;
        this.modiTime = modiTime;
        this.appeUser = appeUser;
        this.appeTime = appeTime;
        this.pauseMk = pauseMk;
        this.errorTime = errorTime;
        this.errorMemo = errorMemo;
        this.ctnKind = ctnKind;
        this.manuType = manuType;
        this.memoM = memoM;
        this.scWeight = scWeight;
        this.logMk = logMk;
        this.logErrTime = logErrTime;
        this.logErrMemo = logErrMemo;
        this.barcode = barcode;
        this.PdcType = PdcType;
        this.ctnNo = ctnNo;
        this.fullPlt = fullPlt;
        this.preHave = preHave;
        this.takeNone = takeNone;
        this.lineNumber = lineNumber;
    }
//    TaskLog taskLog = new TaskLog(
//            null,    //
//            null,    // 工作号[非空]
//            null,    //
//            null,    //
//            null,    //
//            null,    //
//            null,    //
//            null,    // 工作状态
//            null,    // 入出库类型
//            null,    // 堆垛机号
//            null,    //
//            null,    // 优先级
//            null,    //
//            null,    // 目标库位
//            null,    // 目标站
//            null,    // 源站
//            null,    // 源库位
//            null,    //
//            null,    // 拣料(checkBox)
//            null,    //
//            null,    //
//            null,    //
//            null,    // 退出(checkBox)
//            null,    //
//            null,    // 空板(checkBox)
//            null,    // 工作时间
//            null,    //
//            null,    //
//            null,    //
//            null,    //
//            null,    //
//            null,    // 堆垛机启动时间
//            null,    // 堆垛机停止时间
//            null,    // 拣料时间
//            null,    //
//            null,    //
//            null,    //
//            null,    //
//            null,    //
//            null,    // 修改人员
//            null,    // 修改时间
//            null,    // 创建者
//            null,    // 添加时间
//            null,    //
//            null,    //
//            null,    //
//            null,    //
//            null,    //
//            null,    //
//            null,    //
//            null,    //
//            null,    //
//            null,    //
//            null,    // 条码
//            null,    //
//            null,    //
//            null,    // 满板(checkBox)
//            null,    //
//            null,    //
//            null    //
//    );
    public String getWrkNo$(){
        WrkMastService service = SpringUtils.getBean(WrkMastService.class);
        WrkMast wrkMast = service.selectById(this.wrkNo);
        if (!Cools.isEmpty(wrkMast)){
            return String.valueOf(wrkMast.getId());
        }
        return null;
    }
    public String getYmd$(){
        if (Cools.isEmpty(this.ymd)){
            return "";
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.ymd);
    }
    public String getWrkSts$(){
        BasWrkStatusService service = SpringUtils.getBean(BasWrkStatusService.class);
        BasWrkStatus basWrkStatus = service.selectById(this.wrkSts);
        if (!Cools.isEmpty(basWrkStatus)){
            return String.valueOf(basWrkStatus.getWrkDesc());
        }
        return null;
    }
    public String getIoType$(){
        BasWrkIotypeService service = SpringUtils.getBean(BasWrkIotypeService.class);
        BasWrkIotype basWrkIotype = service.selectById(this.ioType);
        if (!Cools.isEmpty(basWrkIotype)){
            return String.valueOf(basWrkIotype.getIoDesc());
        }
        return null;
    }
    public String getCrnNo$(){
        BasCrnpService service = SpringUtils.getBean(BasCrnpService.class);
        BasCrnp basCrnp = service.selectById(this.crnNo);
        if (!Cools.isEmpty(basCrnp)){
            return String.valueOf(basCrnp.getCrnNo());
        }
        return null;
    }
    public String getWrkDate$(){
        if (Cools.isEmpty(this.wrkDate)){
            return "";
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.wrkDate);
    }
    public String getLocNo$(){
        LocMastService service = SpringUtils.getBean(LocMastService.class);
        LocMast locMast = service.selectById(this.locNo);
        if (!Cools.isEmpty(locMast)){
            return String.valueOf(locMast.getLocNo());
        }
        return null;
    }
    public String getStaNo$(){
        BasDevpService service = SpringUtils.getBean(BasDevpService.class);
        BasDevp basDevp = service.selectById(this.staNo);
        if (!Cools.isEmpty(basDevp)){
            return String.valueOf(basDevp.getDevNo());
        }
        return null;
    }
    public String getSourceStaNo$(){
        BasDevpService service = SpringUtils.getBean(BasDevpService.class);
        BasDevp basDevp = service.selectById(this.sourceStaNo);
        if (!Cools.isEmpty(basDevp)){
            return String.valueOf(basDevp.getDevNo());
        }
        return null;
    }
    public String getSourceLocNo$(){
        LocMastService service = SpringUtils.getBean(LocMastService.class);
        LocMast locMast = service.selectById(this.sourceLocNo);
        if (!Cools.isEmpty(locMast)){
            return String.valueOf(locMast.getLocNo());
        }
        return null;
    }
    public String getIoTime$(){
        if (Cools.isEmpty(this.ioTime)){
            return "";
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.ioTime);
    }
    public String getCrnStrTime$(){
        if (Cools.isEmpty(this.crnStrTime)){
            return "";
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.crnStrTime);
    }
    public String getCrnEndTime$(){
        if (Cools.isEmpty(this.crnEndTime)){
            return "";
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.crnEndTime);
    }
    public String getPlcStrTime$(){
        if (Cools.isEmpty(this.plcStrTime)){
            return "";
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.plcStrTime);
    }
    public String getCrnPosTime$(){
        if (Cools.isEmpty(this.crnPosTime)){
            return "";
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.crnPosTime);
    }
    public String getRefIotime$(){
        if (Cools.isEmpty(this.refIotime)){
            return "";
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.refIotime);
    }
    public String getModiUser$(){
        UserService service = SpringUtils.getBean(UserService.class);
        User user = service.selectById(this.modiUser);
        if (!Cools.isEmpty(user)){
            return String.valueOf(user.getNickname());
        }
        return null;
    }
    public String getModiTime$(){
        if (Cools.isEmpty(this.modiTime)){
            return "";
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.modiTime);
    }
    public String getAppeUser$(){
        UserService service = SpringUtils.getBean(UserService.class);
        User user = service.selectById(this.appeUser);
        if (!Cools.isEmpty(user)){
            return String.valueOf(user.getNickname());
        }
        return null;
    }
    public String getAppeTime$(){
        if (Cools.isEmpty(this.appeTime)){
            return "";
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.appeTime);
    }
    public String getErrorTime$(){
        if (Cools.isEmpty(this.errorTime)){
            return "";
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.errorTime);
    }
    public String getLogErrTime$(){
        if (Cools.isEmpty(this.logErrTime)){
            return "";
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.logErrTime);
    }
}
src/main/java/com/zy/asrs/mapper/BasStationMapper.java
New file
@@ -0,0 +1,12 @@
package com.zy.asrs.mapper;
import com.zy.asrs.entity.BasStation;
import com.baomidou.mybatisplus.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;
@Mapper
@Repository
public interface BasStationMapper extends BaseMapper<BasStation> {
}
src/main/java/com/zy/asrs/mapper/TaskDetlLogMapper.java
New file
@@ -0,0 +1,12 @@
package com.zy.asrs.mapper;
import com.zy.asrs.entity.TaskDetlLog;
import com.baomidou.mybatisplus.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;
@Mapper
@Repository
public interface TaskDetlLogMapper extends BaseMapper<TaskDetlLog> {
}
src/main/java/com/zy/asrs/mapper/TaskDetlMapper.java
New file
@@ -0,0 +1,12 @@
package com.zy.asrs.mapper;
import com.zy.asrs.entity.TaskDetl;
import com.baomidou.mybatisplus.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;
@Mapper
@Repository
public interface TaskDetlMapper extends BaseMapper<TaskDetl> {
}
src/main/java/com/zy/asrs/mapper/TaskLogMapper.java
New file
@@ -0,0 +1,12 @@
package com.zy.asrs.mapper;
import com.zy.asrs.entity.TaskLog;
import com.baomidou.mybatisplus.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;
@Mapper
@Repository
public interface TaskLogMapper extends BaseMapper<TaskLog> {
}
src/main/java/com/zy/asrs/mapper/TaskMapper.java
New file
@@ -0,0 +1,12 @@
package com.zy.asrs.mapper;
import com.zy.asrs.entity.Task;
import com.baomidou.mybatisplus.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;
@Mapper
@Repository
public interface TaskMapper extends BaseMapper<Task> {
}
src/main/java/com/zy/asrs/service/BasStationService.java
New file
@@ -0,0 +1,8 @@
package com.zy.asrs.service;
import com.zy.asrs.entity.BasStation;
import com.baomidou.mybatisplus.service.IService;
public interface BasStationService extends IService<BasStation> {
}
src/main/java/com/zy/asrs/service/TaskDetlLogService.java
New file
@@ -0,0 +1,8 @@
package com.zy.asrs.service;
import com.zy.asrs.entity.TaskDetlLog;
import com.baomidou.mybatisplus.service.IService;
public interface TaskDetlLogService extends IService<TaskDetlLog> {
}
src/main/java/com/zy/asrs/service/TaskDetlService.java
New file
@@ -0,0 +1,8 @@
package com.zy.asrs.service;
import com.zy.asrs.entity.TaskDetl;
import com.baomidou.mybatisplus.service.IService;
public interface TaskDetlService extends IService<TaskDetl> {
}
src/main/java/com/zy/asrs/service/TaskLogService.java
New file
@@ -0,0 +1,8 @@
package com.zy.asrs.service;
import com.zy.asrs.entity.TaskLog;
import com.baomidou.mybatisplus.service.IService;
public interface TaskLogService extends IService<TaskLog> {
}
src/main/java/com/zy/asrs/service/TaskService.java
New file
@@ -0,0 +1,8 @@
package com.zy.asrs.service;
import com.zy.asrs.entity.Task;
import com.baomidou.mybatisplus.service.IService;
public interface TaskService extends IService<Task> {
}
src/main/java/com/zy/asrs/service/impl/BasStationServiceImpl.java
New file
@@ -0,0 +1,12 @@
package com.zy.asrs.service.impl;
import com.zy.asrs.mapper.BasStationMapper;
import com.zy.asrs.entity.BasStation;
import com.zy.asrs.service.BasStationService;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
@Service("basStationService")
public class BasStationServiceImpl extends ServiceImpl<BasStationMapper, BasStation> implements BasStationService {
}
src/main/java/com/zy/asrs/service/impl/TaskDetlLogServiceImpl.java
New file
@@ -0,0 +1,12 @@
package com.zy.asrs.service.impl;
import com.zy.asrs.mapper.TaskDetlLogMapper;
import com.zy.asrs.entity.TaskDetlLog;
import com.zy.asrs.service.TaskDetlLogService;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
@Service("taskDetlLogService")
public class TaskDetlLogServiceImpl extends ServiceImpl<TaskDetlLogMapper, TaskDetlLog> implements TaskDetlLogService {
}
src/main/java/com/zy/asrs/service/impl/TaskDetlServiceImpl.java
New file
@@ -0,0 +1,12 @@
package com.zy.asrs.service.impl;
import com.zy.asrs.mapper.TaskDetlMapper;
import com.zy.asrs.entity.TaskDetl;
import com.zy.asrs.service.TaskDetlService;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
@Service("taskDetlService")
public class TaskDetlServiceImpl extends ServiceImpl<TaskDetlMapper, TaskDetl> implements TaskDetlService {
}
src/main/java/com/zy/asrs/service/impl/TaskLogServiceImpl.java
New file
@@ -0,0 +1,12 @@
package com.zy.asrs.service.impl;
import com.zy.asrs.mapper.TaskLogMapper;
import com.zy.asrs.entity.TaskLog;
import com.zy.asrs.service.TaskLogService;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
@Service("taskLogService")
public class TaskLogServiceImpl extends ServiceImpl<TaskLogMapper, TaskLog> implements TaskLogService {
}
src/main/java/com/zy/asrs/service/impl/TaskServiceImpl.java
New file
@@ -0,0 +1,12 @@
package com.zy.asrs.service.impl;
import com.zy.asrs.mapper.TaskMapper;
import com.zy.asrs.entity.Task;
import com.zy.asrs.service.TaskService;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
@Service("taskService")
public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task> implements TaskService {
}
src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
@@ -7,6 +7,7 @@
import com.zy.asrs.enums.LocStsType;
import com.zy.asrs.service.*;
import com.zy.asrs.service.impl.LocCacheServiceImpl;
import com.zy.asrs.service.impl.OrderPakinServiceImpl;
import com.zy.asrs.task.AbstractHandler;
import com.zy.asrs.task.core.ReturnT;
import lombok.extern.slf4j.Slf4j;
@@ -16,10 +17,8 @@
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Objects;
import java.util.*;
import java.util.stream.Collectors;
/**
 * Created by vincent on 2020/7/4
@@ -46,7 +45,9 @@
    @Autowired
    private OrderDetlPakoutService orderDetlPakoutService;
    @Autowired
    private LocCacheServiceImpl locCacheService;
    private LocCacheService locCacheService;
    @Autowired
    private OrderPakinService orderPakinService;
    public ReturnT<String> start(WrkMast wrkMast) {
        // 4.入库完成
@@ -105,6 +106,18 @@
            if (!wrkMastService.updateById(wrkMast)) {
                throw new CoolException("任务状态修改失败!!");
            }
            Set<Long> list = apallet.stream().map(WaitPakin::getOrderId).collect(Collectors.toSet());
            List<OrderPakin> pakins = orderPakinService.selectList(new EntityWrapper<OrderPakin>().in("order_id", list));
            if (Objects.isNull(pakins) || pakins.isEmpty()) {
                throw new CoolException("单据不存在!!");
            }
            pakins.forEach(orderPakin -> {
                orderPakin.setSettle(4L);
                if (!orderPakinService.updateById(orderPakin)) {
                    throw new CoolException("单据修改失败!!");
                }
            });
        } else {
            Date now = new Date();
            LocMast locMast = locMastService.selectById(wrkMast.getLocNo());
src/main/java/com/zy/common/CodeBuilder.java
@@ -20,7 +20,7 @@
        generator.url="127.0.0.1:1433;databasename=jsxswms";
        generator.username="sa";
        generator.password="Skyouc#23";
        generator.table="asr_bas_whs";
        generator.table="agv_task_detl_log";
        generator.packagePath="com.zy.asrs";
        generator.build();
    }
src/main/resources/mapper/BasStationMapper.xml
New file
@@ -0,0 +1,44 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zy.asrs.mapper.BasStationMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="com.zy.asrs.entity.BasStation">
        <id column="id" property="id" />
        <result column="dev_no" property="devNo" />
        <result column="dec_desc" property="decDesc" />
        <result column="dev_mk" property="devMk" />
        <result column="in_enable" property="inEnable" />
        <result column="out_enable" property="outEnable" />
        <result column="autoing" property="autoing" />
        <result column="loading" property="loading" />
        <result column="loc_sts" property="locSts" />
        <result column="canining" property="canining" />
        <result column="canouting" property="canouting" />
        <result column="fronting" property="fronting" />
        <result column="rearing" property="rearing" />
        <result column="uping" property="uping" />
        <result column="downing" property="downing" />
        <result column="wrk_no" property="wrkNo" />
        <result column="ctn_type" property="ctnType" />
        <result column="barcode" property="barcode" />
        <result column="in_qty" property="inQty" />
        <result column="row1" property="row1" />
        <result column="io_time" property="ioTime" />
        <result column="area" property="area" />
        <result column="in_ok" property="inOk" />
        <result column="out_ok" property="outOk" />
        <result column="loc_type1" property="locType1" />
        <result column="loc_type2" property="locType2" />
        <result column="loc_type3" property="locType3" />
        <result column="modi_user" property="modiUser" />
        <result column="modi_time" property="modiTime" />
        <result column="appe_user" property="appeUser" />
        <result column="appe_time" property="appeTime" />
        <result column="std_qty" property="stdQty" />
        <result column="min_wt" property="minWt" />
        <result column="gross_wt" property="grossWt" />
    </resultMap>
</mapper>
src/main/resources/mapper/TaskDetlLogMapper.xml
New file
@@ -0,0 +1,56 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zy.asrs.mapper.TaskDetlLogMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="com.zy.asrs.entity.TaskDetlLog">
        <result column="wrk_no" property="wrkNo" />
        <result column="io_time" property="ioTime" />
        <result column="anfme" property="anfme" />
        <result column="zpallet" property="zpallet" />
        <result column="matnr" property="matnr" />
        <result column="maktx" property="maktx" />
        <result column="batch" property="batch" />
        <result column="order_no" property="orderNo" />
        <result column="specs" property="specs" />
        <result column="model" property="model" />
        <result column="color" property="color" />
        <result column="brand" property="brand" />
        <result column="unit" property="unit" />
        <result column="price" property="price" />
        <result column="sku" property="sku" />
        <result column="units" property="units" />
        <result column="barcode" property="barcode" />
        <result column="origin" property="origin" />
        <result column="manu" property="manu" />
        <result column="manu_date" property="manuDate" />
        <result column="item_num" property="itemNum" />
        <result column="safe_qty" property="safeQty" />
        <result column="weight" property="weight" />
        <result column="man_length" property="manLength" />
        <result column="volume" property="volume" />
        <result column="three_code" property="threeCode" />
        <result column="supp" property="supp" />
        <result column="supp_code" property="suppCode" />
        <result column="be_batch" property="beBatch" />
        <result column="dead_time" property="deadTime" />
        <result column="dead_warn" property="deadWarn" />
        <result column="source" property="source" />
        <result column="inspect" property="inspect" />
        <result column="danger" property="danger" />
        <result column="modi_user" property="modiUser" />
        <result column="modi_time" property="modiTime" />
        <result column="appe_user" property="appeUser" />
        <result column="appe_time" property="appeTime" />
        <result column="memo" property="memo" />
        <result column="line_number" property="lineNumber" />
        <result column="standby1" property="standby1" />
        <result column="standby2" property="standby2" />
        <result column="standby3" property="standby3" />
        <result column="box_type1" property="boxType1" />
        <result column="box_type2" property="boxType2" />
        <result column="box_type3" property="boxType3" />
    </resultMap>
</mapper>
src/main/resources/mapper/TaskDetlMapper.xml
New file
@@ -0,0 +1,56 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zy.asrs.mapper.TaskDetlMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="com.zy.asrs.entity.TaskDetl">
        <result column="wrk_no" property="wrkNo" />
        <result column="io_time" property="ioTime" />
        <result column="anfme" property="anfme" />
        <result column="zpallet" property="zpallet" />
        <result column="matnr" property="matnr" />
        <result column="maktx" property="maktx" />
        <result column="batch" property="batch" />
        <result column="order_no" property="orderNo" />
        <result column="specs" property="specs" />
        <result column="model" property="model" />
        <result column="color" property="color" />
        <result column="brand" property="brand" />
        <result column="unit" property="unit" />
        <result column="price" property="price" />
        <result column="sku" property="sku" />
        <result column="units" property="units" />
        <result column="barcode" property="barcode" />
        <result column="origin" property="origin" />
        <result column="manu" property="manu" />
        <result column="manu_date" property="manuDate" />
        <result column="item_num" property="itemNum" />
        <result column="safe_qty" property="safeQty" />
        <result column="weight" property="weight" />
        <result column="man_length" property="manLength" />
        <result column="volume" property="volume" />
        <result column="three_code" property="threeCode" />
        <result column="supp" property="supp" />
        <result column="supp_code" property="suppCode" />
        <result column="be_batch" property="beBatch" />
        <result column="dead_time" property="deadTime" />
        <result column="dead_warn" property="deadWarn" />
        <result column="source" property="source" />
        <result column="inspect" property="inspect" />
        <result column="danger" property="danger" />
        <result column="modi_user" property="modiUser" />
        <result column="modi_time" property="modiTime" />
        <result column="appe_user" property="appeUser" />
        <result column="appe_time" property="appeTime" />
        <result column="memo" property="memo" />
        <result column="line_number" property="lineNumber" />
        <result column="standby1" property="standby1" />
        <result column="standby2" property="standby2" />
        <result column="standby3" property="standby3" />
        <result column="box_type1" property="boxType1" />
        <result column="box_type2" property="boxType2" />
        <result column="box_type3" property="boxType3" />
    </resultMap>
</mapper>
src/main/resources/mapper/TaskLogMapper.xml
New file
@@ -0,0 +1,70 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zy.asrs.mapper.TaskLogMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="com.zy.asrs.entity.TaskLog">
        <result column="id" property="id" />
        <result column="wrk_no" property="wrkNo" />
        <result column="log_id" property="logId" />
        <result column="inv_wh" property="invWh" />
        <result column="ymd" property="ymd" />
        <result column="mk" property="mk" />
        <result column="whs_type" property="whsType" />
        <result column="wrk_sts" property="wrkSts" />
        <result column="io_type" property="ioType" />
        <result column="crn_no" property="crnNo" />
        <result column="sheet_no" property="sheetNo" />
        <result column="io_pri" property="ioPri" />
        <result column="wrk_date" property="wrkDate" />
        <result column="loc_no" property="locNo" />
        <result column="sta_no" property="staNo" />
        <result column="source_sta_no" property="sourceStaNo" />
        <result column="source_loc_no" property="sourceLocNo" />
        <result column="loc_sts" property="locSts" />
        <result column="picking" property="picking" />
        <result column="link_mis" property="linkMis" />
        <result column="online_yn" property="onlineYn" />
        <result column="upd_mk" property="updMk" />
        <result column="exit_mk" property="exitMk" />
        <result column="plt_type" property="pltType" />
        <result column="empty_mk" property="emptyMk" />
        <result column="io_time" property="ioTime" />
        <result column="ctn_type" property="ctnType" />
        <result column="packed" property="packed" />
        <result column="ove_mk" property="oveMk" />
        <result column="mtn_type" property="mtnType" />
        <result column="user_no" property="userNo" />
        <result column="crn_str_time" property="crnStrTime" />
        <result column="crn_end_time" property="crnEndTime" />
        <result column="plc_str_time" property="plcStrTime" />
        <result column="crn_pos_time" property="crnPosTime" />
        <result column="load_time" property="loadTime" />
        <result column="exp_time" property="expTime" />
        <result column="ref_wrkno" property="refWrkno" />
        <result column="ref_iotime" property="refIotime" />
        <result column="modi_user" property="modiUser" />
        <result column="modi_time" property="modiTime" />
        <result column="appe_user" property="appeUser" />
        <result column="appe_time" property="appeTime" />
        <result column="pause_mk" property="pauseMk" />
        <result column="error_time" property="errorTime" />
        <result column="error_memo" property="errorMemo" />
        <result column="ctn_kind" property="ctnKind" />
        <result column="manu_type" property="manuType" />
        <result column="memo_m" property="memoM" />
        <result column="sc_weight" property="scWeight" />
        <result column="log_mk" property="logMk" />
        <result column="log_err_time" property="logErrTime" />
        <result column="log_err_memo" property="logErrMemo" />
        <result column="barcode" property="barcode" />
        <result column="Pdc_type" property="PdcType" />
        <result column="ctn_no" property="ctnNo" />
        <result column="full_plt" property="fullPlt" />
        <result column="pre_have" property="preHave" />
        <result column="take_none" property="takeNone" />
        <result column="line_number" property="lineNumber" />
    </resultMap>
</mapper>
src/main/resources/mapper/TaskMapper.xml
New file
@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zy.asrs.mapper.TaskMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="com.zy.asrs.entity.Task">
        <id column="id" property="id" />
        <result column="task_type" property="taskType" />
    </resultMap>
</mapper>
src/main/webapp/static/js/basStation/basStation.js
New file
@@ -0,0 +1,293 @@
var pageCurr;
layui.config({
    base: baseUrl + "/static/layui/lay/modules/"
}).use(['table','laydate', 'form', 'admin'], function(){
    var table = layui.table;
    var $ = layui.jquery;
    var layer = layui.layer;
    var layDate = layui.laydate;
    var form = layui.form;
    var admin = layui.admin;
    // 数据渲染
    tableIns = table.render({
        elem: '#basStation',
        headers: {token: localStorage.getItem('token')},
        url: baseUrl+'/basStation/list/auth',
        page: true,
        limit: 15,
        limits: [15, 30, 50, 100, 200, 500],
        toolbar: '#toolbar',
        cellMinWidth: 50,
        height: 'full-120',
        cols: [[
            {type: 'checkbox'}
            ,{field: 'id', align: 'center',title: '主键'}
            ,{field: 'devNo', align: 'center',title: '编号'}
            ,{field: 'decDesc', align: 'center',title: '设备描述'}
            ,{field: 'devMk', align: 'center',title: '备注'}
            ,{field: 'inEnable', align: 'center',title: '可入(checkBox)'}
            ,{field: 'outEnable', align: 'center',title: '可出(checkBox)'}
            ,{field: 'autoing', align: 'center',title: '自动(checkBox)'}
            ,{field: 'loading', align: 'center',title: '有物(checkBox)'}
            ,{field: 'locSts', align: 'center',title: ''}
            ,{field: 'canining', align: 'center',title: '能入(checkBox)'}
            ,{field: 'canouting', align: 'center',title: '能出(checkBox)'}
            ,{field: 'fronting', align: 'center',title: ''}
            ,{field: 'rearing', align: 'center',title: ''}
            ,{field: 'uping', align: 'center',title: ''}
            ,{field: 'downing', align: 'center',title: ''}
            ,{field: 'wrkNo', align: 'center',title: '工作号'}
            ,{field: 'ctnType', align: 'center',title: '容器类型'}
            ,{field: 'barcode', align: 'center',title: '条形码'}
            ,{field: 'inQty', align: 'center',title: ''}
            ,{field: 'row1', align: 'center',title: ''}
            ,{field: 'ioTime$', align: 'center',title: ''}
            ,{field: 'area', align: 'center',title: ''}
            ,{field: 'inOk', align: 'center',title: ''}
            ,{field: 'outOk', align: 'center',title: ''}
            ,{field: 'locType1$', align: 'center',title: '高低类型'}
            ,{field: 'locType2$', align: 'center',title: '宽窄类型'}
            ,{field: 'locType3$', align: 'center',title: '轻重类型'}
            ,{field: 'modiUser$', align: 'center',title: '修改人员'}
            ,{field: 'modiTime$', align: 'center',title: '修改时间'}
            ,{field: 'appeUser$', align: 'center',title: '创建者'}
            ,{field: 'appeTime$', align: 'center',title: '添加时间'}
            ,{field: 'stdQty', align: 'center',title: ''}
            ,{field: 'minWt', align: 'center',title: ''}
            ,{field: 'grossWt', align: 'center',title: '重量'}
            ,{fixed: 'right', title:'操作', align: 'center', toolbar: '#operate', width:120}
        ]],
        request: {
            pageName: 'curr',
            pageSize: 'limit'
        },
        parseData: function (res) {
            return {
                'code': res.code,
                'msg': res.msg,
                'count': res.data.total,
                'data': res.data.records
            }
        },
        response: {
            statusCode: 200
        },
        done: function(res, curr, count) {
            if (res.code === 403) {
                top.location.href = baseUrl+"/";
            }
            pageCurr=curr;
            limit();
        }
    });
    // 监听排序事件
    table.on('sort(basStation)', function (obj) {
        var searchData = {};
        $.each($('#search-box [name]').serializeArray(), function() {
            searchData[this.name] = this.value;
        });
        searchData['orderByField'] = obj.field;
        searchData['orderByType'] = obj.type;
        tableIns.reload({
            where: searchData,
            page: {curr: 1}
        });
    });
    // 监听头工具栏事件
    table.on('toolbar(basStation)', function (obj) {
        var checkStatus = table.checkStatus(obj.config.id).data;
        switch(obj.event) {
            case 'addData':
                showEditModel();
                break;
            case 'deleteData':
               if (checkStatus.length === 0) {
                   layer.msg('请选择要删除的数据', {icon: 2});
                   return;
               }
               del(checkStatus.map(function (d) {
                   return d.id;
               }));
               break;
            case 'exportData':
                admin.confirm('确定导出Excel吗', {shadeClose: true}, function(){
                    var titles=[];
                    var fields=[];
                    obj.config.cols[0].map(function (col) {
                        if (col.type === 'normal' && col.hide === false && col.toolbar == null) {
                            titles.push(col.title);
                            fields.push(col.field);
                        }
                    });
                    var exportData = {};
                    $.each($('#search-box [name]').serializeArray(), function() {
                        exportData[this.name] = this.value;
                    });
                    var param = {
                        'basStation': exportData,
                        'fields': fields
                    };
                    $.ajax({
                        url: baseUrl+"/basStation/export/auth",
                        headers: {'token': localStorage.getItem('token')},
                        data: JSON.stringify(param),
                        dataType:'json',
                        contentType:'application/json;charset=UTF-8',
                        method: 'POST',
                        success: function (res) {
                            layer.closeAll();
                            if (res.code === 200) {
                                table.exportFile(titles,res.data,'xls');
                            } else if (res.code === 403) {
                                top.location.href = baseUrl+"/";
                            } else {
                                layer.msg(res.msg, {icon: 2})
                            }
                        }
                    });
                });
                break;
        }
    });
    // 监听行工具事件
    table.on('tool(basStation)', function(obj){
        var data = obj.data;
        switch (obj.event) {
            case 'edit':
                showEditModel(data);
                break;
            case "del":
                del([data.id]);
                break;
        }
    });
    /* 弹窗 - 新增、修改 */
    function showEditModel(mData) {
        admin.open({
            type: 1,
            area: '600px',
            title: (mData ? '修改' : '添加') + '订单状态',
            content: $('#editDialog').html(),
            success: function (layero, dIndex) {
                layDateRender(mData);
                form.val('detail', mData);
                form.on('submit(editSubmit)', function (data) {
                    var loadIndex = layer.load(2);
                    $.ajax({
                        url: baseUrl+"/basStation/"+(mData?'update':'add')+"/auth",
                        headers: {'token': localStorage.getItem('token')},
                        data: data.field,
                        method: 'POST',
                        success: function (res) {
                            layer.close(loadIndex);
                            if (res.code === 200){
                                layer.close(dIndex);
                                layer.msg(res.msg, {icon: 1});
                                tableReload();
                            } else if (res.code === 403){
                                top.location.href = baseUrl+"/";
                            }else {
                                layer.msg(res.msg, {icon: 2});
                            }
                        }
                    })
                    return false;
                });
                $(layero).children('.layui-layer-content').css('overflow', 'visible');
                layui.form.render('select');
            }
        });
    }
    /* 删除 */
    function del(ids) {
        layer.confirm('确定要删除选中数据吗?', {
            skin: 'layui-layer-admin',
            shade: .1
        }, function (i) {
            layer.close(i);
            var loadIndex = layer.load(2);
            $.ajax({
                url: baseUrl+"/basStation/delete/auth",
                headers: {'token': localStorage.getItem('token')},
                data: {ids: ids},
                method: 'POST',
                success: function (res) {
                    layer.close(loadIndex);
                    if (res.code === 200){
                        layer.msg(res.msg, {icon: 1});
                        tableReload();
                    } else if (res.code === 403){
                        top.location.href = baseUrl+"/";
                    } else {
                        layer.msg(res.msg, {icon: 2});
                    }
                }
            })
        });
    }
    // 搜索
    form.on('submit(search)', function (data) {
        pageCurr = 1;
        tableReload(false);
    });
    // 重置
    form.on('submit(reset)', function (data) {
        pageCurr = 1;
        clearFormVal($('#search-box'));
        tableReload(false);
    });
    // 时间选择器
    function layDateRender(data) {
        setTimeout(function () {
            layDate.render({
                elem: '.layui-laydate-range'
                ,type: 'datetime'
                ,range: true
            });
            layDate.render({
                elem: '#ioTime\\$',
                type: 'datetime',
                value: data!==undefined?data['ioTime\\$']:null
            });
            layDate.render({
                elem: '#modiTime\\$',
                type: 'datetime',
                value: data!==undefined?data['modiTime\\$']:null
            });
            layDate.render({
                elem: '#appeTime\\$',
                type: 'datetime',
                value: data!==undefined?data['appeTime\\$']:null
            });
        }, 300);
    }
    layDateRender();
});
// 关闭动作
$(document).on('click','#data-detail-close', function () {
    parent.layer.closeAll();
});
function tableReload(child) {
    var searchData = {};
    $.each($('#search-box [name]').serializeArray(), function() {
        searchData[this.name] = this.value;
    });
    tableIns.reload({
        where: searchData,
        page: {curr: pageCurr}
     });
}
src/main/webapp/static/js/task/task.js
New file
@@ -0,0 +1,246 @@
var pageCurr;
layui.config({
    base: baseUrl + "/static/layui/lay/modules/"
}).use(['table','laydate', 'form', 'admin'], function(){
    var table = layui.table;
    var $ = layui.jquery;
    var layer = layui.layer;
    var layDate = layui.laydate;
    var form = layui.form;
    var admin = layui.admin;
    // 数据渲染
    tableIns = table.render({
        elem: '#task',
        headers: {token: localStorage.getItem('token')},
        url: baseUrl+'/task/list/auth',
        page: true,
        limit: 15,
        limits: [15, 30, 50, 100, 200, 500],
        toolbar: '#toolbar',
        cellMinWidth: 50,
        height: 'full-120',
        cols: [[
            {type: 'checkbox'}
            ,{field: 'id', align: 'center',title: ''}
            ,{field: 'taskType', align: 'center',title: '任务类型: agv  , crn'}
            ,{fixed: 'right', title:'操作', align: 'center', toolbar: '#operate', width:120}
        ]],
        request: {
            pageName: 'curr',
            pageSize: 'limit'
        },
        parseData: function (res) {
            return {
                'code': res.code,
                'msg': res.msg,
                'count': res.data.total,
                'data': res.data.records
            }
        },
        response: {
            statusCode: 200
        },
        done: function(res, curr, count) {
            if (res.code === 403) {
                top.location.href = baseUrl+"/";
            }
            pageCurr=curr;
            limit();
        }
    });
    // 监听排序事件
    table.on('sort(task)', function (obj) {
        var searchData = {};
        $.each($('#search-box [name]').serializeArray(), function() {
            searchData[this.name] = this.value;
        });
        searchData['orderByField'] = obj.field;
        searchData['orderByType'] = obj.type;
        tableIns.reload({
            where: searchData,
            page: {curr: 1}
        });
    });
    // 监听头工具栏事件
    table.on('toolbar(task)', function (obj) {
        var checkStatus = table.checkStatus(obj.config.id).data;
        switch(obj.event) {
            case 'addData':
                showEditModel();
                break;
            case 'deleteData':
               if (checkStatus.length === 0) {
                   layer.msg('请选择要删除的数据', {icon: 2});
                   return;
               }
               del(checkStatus.map(function (d) {
                   return d.id;
               }));
               break;
            case 'exportData':
                admin.confirm('确定导出Excel吗', {shadeClose: true}, function(){
                    var titles=[];
                    var fields=[];
                    obj.config.cols[0].map(function (col) {
                        if (col.type === 'normal' && col.hide === false && col.toolbar == null) {
                            titles.push(col.title);
                            fields.push(col.field);
                        }
                    });
                    var exportData = {};
                    $.each($('#search-box [name]').serializeArray(), function() {
                        exportData[this.name] = this.value;
                    });
                    var param = {
                        'task': exportData,
                        'fields': fields
                    };
                    $.ajax({
                        url: baseUrl+"/task/export/auth",
                        headers: {'token': localStorage.getItem('token')},
                        data: JSON.stringify(param),
                        dataType:'json',
                        contentType:'application/json;charset=UTF-8',
                        method: 'POST',
                        success: function (res) {
                            layer.closeAll();
                            if (res.code === 200) {
                                table.exportFile(titles,res.data,'xls');
                            } else if (res.code === 403) {
                                top.location.href = baseUrl+"/";
                            } else {
                                layer.msg(res.msg, {icon: 2})
                            }
                        }
                    });
                });
                break;
        }
    });
    // 监听行工具事件
    table.on('tool(task)', function(obj){
        var data = obj.data;
        switch (obj.event) {
            case 'edit':
                showEditModel(data);
                break;
            case "del":
                del([data.id]);
                break;
        }
    });
    /* 弹窗 - 新增、修改 */
    function showEditModel(mData) {
        admin.open({
            type: 1,
            area: '600px',
            title: (mData ? '修改' : '添加') + '订单状态',
            content: $('#editDialog').html(),
            success: function (layero, dIndex) {
                layDateRender(mData);
                form.val('detail', mData);
                form.on('submit(editSubmit)', function (data) {
                    var loadIndex = layer.load(2);
                    $.ajax({
                        url: baseUrl+"/task/"+(mData?'update':'add')+"/auth",
                        headers: {'token': localStorage.getItem('token')},
                        data: data.field,
                        method: 'POST',
                        success: function (res) {
                            layer.close(loadIndex);
                            if (res.code === 200){
                                layer.close(dIndex);
                                layer.msg(res.msg, {icon: 1});
                                tableReload();
                            } else if (res.code === 403){
                                top.location.href = baseUrl+"/";
                            }else {
                                layer.msg(res.msg, {icon: 2});
                            }
                        }
                    })
                    return false;
                });
                $(layero).children('.layui-layer-content').css('overflow', 'visible');
                layui.form.render('select');
            }
        });
    }
    /* 删除 */
    function del(ids) {
        layer.confirm('确定要删除选中数据吗?', {
            skin: 'layui-layer-admin',
            shade: .1
        }, function (i) {
            layer.close(i);
            var loadIndex = layer.load(2);
            $.ajax({
                url: baseUrl+"/task/delete/auth",
                headers: {'token': localStorage.getItem('token')},
                data: {ids: ids},
                method: 'POST',
                success: function (res) {
                    layer.close(loadIndex);
                    if (res.code === 200){
                        layer.msg(res.msg, {icon: 1});
                        tableReload();
                    } else if (res.code === 403){
                        top.location.href = baseUrl+"/";
                    } else {
                        layer.msg(res.msg, {icon: 2});
                    }
                }
            })
        });
    }
    // 搜索
    form.on('submit(search)', function (data) {
        pageCurr = 1;
        tableReload(false);
    });
    // 重置
    form.on('submit(reset)', function (data) {
        pageCurr = 1;
        clearFormVal($('#search-box'));
        tableReload(false);
    });
    // 时间选择器
    function layDateRender(data) {
        setTimeout(function () {
            layDate.render({
                elem: '.layui-laydate-range'
                ,type: 'datetime'
                ,range: true
            });
        }, 300);
    }
    layDateRender();
});
// 关闭动作
$(document).on('click','#data-detail-close', function () {
    parent.layer.closeAll();
});
function tableReload(child) {
    var searchData = {};
    $.each($('#search-box [name]').serializeArray(), function() {
        searchData[this.name] = this.value;
    });
    tableIns.reload({
        where: searchData,
        page: {curr: pageCurr}
     });
}
src/main/webapp/static/js/taskDetl/taskDetl.js
New file
@@ -0,0 +1,305 @@
var pageCurr;
layui.config({
    base: baseUrl + "/static/layui/lay/modules/"
}).use(['table','laydate', 'form', 'admin'], function(){
    var table = layui.table;
    var $ = layui.jquery;
    var layer = layui.layer;
    var layDate = layui.laydate;
    var form = layui.form;
    var admin = layui.admin;
    // 数据渲染
    tableIns = table.render({
        elem: '#taskDetl',
        headers: {token: localStorage.getItem('token')},
        url: baseUrl+'/taskDetl/list/auth',
        page: true,
        limit: 15,
        limits: [15, 30, 50, 100, 200, 500],
        toolbar: '#toolbar',
        cellMinWidth: 50,
        height: 'full-120',
        cols: [[
            {type: 'checkbox'}
            ,{field: 'wrkNo', align: 'center',title: '工作号'}
            ,{field: 'ioTime$', align: 'center',title: '工作时间'}
            ,{field: 'anfme', align: 'center',title: '数量'}
            ,{field: 'zpallet', align: 'center',title: '托盘条码'}
            ,{field: 'matnr', align: 'center',title: '商品编号'}
            ,{field: 'maktx', align: 'center',title: '商品名称'}
            ,{field: 'batch', align: 'center',title: '批号'}
            ,{field: 'orderNo', align: 'center',title: '单据编号'}
            ,{field: 'specs', align: 'center',title: '规格'}
            ,{field: 'model', align: 'center',title: '型号'}
            ,{field: 'color', align: 'center',title: '颜色'}
            ,{field: 'brand', align: 'center',title: '品牌'}
            ,{field: 'unit', align: 'center',title: '单位'}
            ,{field: 'price', align: 'center',title: '单价'}
            ,{field: 'sku', align: 'center',title: 'sku'}
            ,{field: 'units', align: 'center',title: '单位量'}
            ,{field: 'barcode', align: 'center',title: '条码'}
            ,{field: 'origin', align: 'center',title: '产地'}
            ,{field: 'manu', align: 'center',title: '厂家'}
            ,{field: 'manuDate', align: 'center',title: '生产日期'}
            ,{field: 'itemNum', align: 'center',title: '品项数'}
            ,{field: 'safeQty', align: 'center',title: '安全库存量'}
            ,{field: 'weight', align: 'center',title: '重量'}
            ,{field: 'manLength', align: 'center',title: '长度'}
            ,{field: 'volume', align: 'center',title: '体积'}
            ,{field: 'threeCode', align: 'center',title: '三方编码'}
            ,{field: 'supp', align: 'center',title: '供应商'}
            ,{field: 'suppCode', align: 'center',title: '供应商编码'}
            ,{field: 'beBatch$', align: 'center',title: '是否批次'}
            ,{field: 'deadTime', align: 'center',title: '保质期'}
            ,{field: 'deadWarn', align: 'center',title: '预警天数'}
            ,{field: 'source$', align: 'center',title: '制购'}
            ,{field: 'inspect$', align: 'center',title: '要求检验'}
            ,{field: 'danger$', align: 'center',title: '危险品'}
            ,{field: 'modiUser$', align: 'center',title: '修改人员'}
            ,{field: 'modiTime$', align: 'center',title: '修改时间'}
            ,{field: 'appeUser$', align: 'center',title: '添加人员'}
            ,{field: 'appeTime$', align: 'center',title: '添加时间'}
            ,{field: 'memo', align: 'center',title: '备注'}
            ,{field: 'lineNumber', align: 'center',title: ''}
            ,{field: 'standby1', align: 'center',title: ''}
            ,{field: 'standby2', align: 'center',title: ''}
            ,{field: 'standby3', align: 'center',title: ''}
            ,{field: 'boxType1', align: 'center',title: ''}
            ,{field: 'boxType2', align: 'center',title: ''}
            ,{field: 'boxType3', align: 'center',title: ''}
            ,{fixed: 'right', title:'操作', align: 'center', toolbar: '#operate', width:120}
        ]],
        request: {
            pageName: 'curr',
            pageSize: 'limit'
        },
        parseData: function (res) {
            return {
                'code': res.code,
                'msg': res.msg,
                'count': res.data.total,
                'data': res.data.records
            }
        },
        response: {
            statusCode: 200
        },
        done: function(res, curr, count) {
            if (res.code === 403) {
                top.location.href = baseUrl+"/";
            }
            pageCurr=curr;
            limit();
        }
    });
    // 监听排序事件
    table.on('sort(taskDetl)', function (obj) {
        var searchData = {};
        $.each($('#search-box [name]').serializeArray(), function() {
            searchData[this.name] = this.value;
        });
        searchData['orderByField'] = obj.field;
        searchData['orderByType'] = obj.type;
        tableIns.reload({
            where: searchData,
            page: {curr: 1}
        });
    });
    // 监听头工具栏事件
    table.on('toolbar(taskDetl)', function (obj) {
        var checkStatus = table.checkStatus(obj.config.id).data;
        switch(obj.event) {
            case 'addData':
                showEditModel();
                break;
            case 'deleteData':
               if (checkStatus.length === 0) {
                   layer.msg('请选择要删除的数据', {icon: 2});
                   return;
               }
               del(checkStatus.map(function (d) {
                   return d.id;
               }));
               break;
            case 'exportData':
                admin.confirm('确定导出Excel吗', {shadeClose: true}, function(){
                    var titles=[];
                    var fields=[];
                    obj.config.cols[0].map(function (col) {
                        if (col.type === 'normal' && col.hide === false && col.toolbar == null) {
                            titles.push(col.title);
                            fields.push(col.field);
                        }
                    });
                    var exportData = {};
                    $.each($('#search-box [name]').serializeArray(), function() {
                        exportData[this.name] = this.value;
                    });
                    var param = {
                        'taskDetl': exportData,
                        'fields': fields
                    };
                    $.ajax({
                        url: baseUrl+"/taskDetl/export/auth",
                        headers: {'token': localStorage.getItem('token')},
                        data: JSON.stringify(param),
                        dataType:'json',
                        contentType:'application/json;charset=UTF-8',
                        method: 'POST',
                        success: function (res) {
                            layer.closeAll();
                            if (res.code === 200) {
                                table.exportFile(titles,res.data,'xls');
                            } else if (res.code === 403) {
                                top.location.href = baseUrl+"/";
                            } else {
                                layer.msg(res.msg, {icon: 2})
                            }
                        }
                    });
                });
                break;
        }
    });
    // 监听行工具事件
    table.on('tool(taskDetl)', function(obj){
        var data = obj.data;
        switch (obj.event) {
            case 'edit':
                showEditModel(data);
                break;
            case "del":
                del([data.id]);
                break;
        }
    });
    /* 弹窗 - 新增、修改 */
    function showEditModel(mData) {
        admin.open({
            type: 1,
            area: '600px',
            title: (mData ? '修改' : '添加') + '订单状态',
            content: $('#editDialog').html(),
            success: function (layero, dIndex) {
                layDateRender(mData);
                form.val('detail', mData);
                form.on('submit(editSubmit)', function (data) {
                    var loadIndex = layer.load(2);
                    $.ajax({
                        url: baseUrl+"/taskDetl/"+(mData?'update':'add')+"/auth",
                        headers: {'token': localStorage.getItem('token')},
                        data: data.field,
                        method: 'POST',
                        success: function (res) {
                            layer.close(loadIndex);
                            if (res.code === 200){
                                layer.close(dIndex);
                                layer.msg(res.msg, {icon: 1});
                                tableReload();
                            } else if (res.code === 403){
                                top.location.href = baseUrl+"/";
                            }else {
                                layer.msg(res.msg, {icon: 2});
                            }
                        }
                    })
                    return false;
                });
                $(layero).children('.layui-layer-content').css('overflow', 'visible');
                layui.form.render('select');
            }
        });
    }
    /* 删除 */
    function del(ids) {
        layer.confirm('确定要删除选中数据吗?', {
            skin: 'layui-layer-admin',
            shade: .1
        }, function (i) {
            layer.close(i);
            var loadIndex = layer.load(2);
            $.ajax({
                url: baseUrl+"/taskDetl/delete/auth",
                headers: {'token': localStorage.getItem('token')},
                data: {ids: ids},
                method: 'POST',
                success: function (res) {
                    layer.close(loadIndex);
                    if (res.code === 200){
                        layer.msg(res.msg, {icon: 1});
                        tableReload();
                    } else if (res.code === 403){
                        top.location.href = baseUrl+"/";
                    } else {
                        layer.msg(res.msg, {icon: 2});
                    }
                }
            })
        });
    }
    // 搜索
    form.on('submit(search)', function (data) {
        pageCurr = 1;
        tableReload(false);
    });
    // 重置
    form.on('submit(reset)', function (data) {
        pageCurr = 1;
        clearFormVal($('#search-box'));
        tableReload(false);
    });
    // 时间选择器
    function layDateRender(data) {
        setTimeout(function () {
            layDate.render({
                elem: '.layui-laydate-range'
                ,type: 'datetime'
                ,range: true
            });
            layDate.render({
                elem: '#ioTime\\$',
                type: 'datetime',
                value: data!==undefined?data['ioTime\\$']:null
            });
            layDate.render({
                elem: '#modiTime\\$',
                type: 'datetime',
                value: data!==undefined?data['modiTime\\$']:null
            });
            layDate.render({
                elem: '#appeTime\\$',
                type: 'datetime',
                value: data!==undefined?data['appeTime\\$']:null
            });
        }, 300);
    }
    layDateRender();
});
// 关闭动作
$(document).on('click','#data-detail-close', function () {
    parent.layer.closeAll();
});
function tableReload(child) {
    var searchData = {};
    $.each($('#search-box [name]').serializeArray(), function() {
        searchData[this.name] = this.value;
    });
    tableIns.reload({
        where: searchData,
        page: {curr: pageCurr}
     });
}
src/main/webapp/static/js/taskDetlLog/taskDetlLog.js
New file
@@ -0,0 +1,305 @@
var pageCurr;
layui.config({
    base: baseUrl + "/static/layui/lay/modules/"
}).use(['table','laydate', 'form', 'admin'], function(){
    var table = layui.table;
    var $ = layui.jquery;
    var layer = layui.layer;
    var layDate = layui.laydate;
    var form = layui.form;
    var admin = layui.admin;
    // 数据渲染
    tableIns = table.render({
        elem: '#taskDetlLog',
        headers: {token: localStorage.getItem('token')},
        url: baseUrl+'/taskDetlLog/list/auth',
        page: true,
        limit: 15,
        limits: [15, 30, 50, 100, 200, 500],
        toolbar: '#toolbar',
        cellMinWidth: 50,
        height: 'full-120',
        cols: [[
            {type: 'checkbox'}
            ,{field: 'wrkNo', align: 'center',title: '工作号'}
            ,{field: 'ioTime$', align: 'center',title: '工作时间'}
            ,{field: 'anfme', align: 'center',title: '数量'}
            ,{field: 'zpallet', align: 'center',title: '托盘条码'}
            ,{field: 'matnr', align: 'center',title: '商品编号'}
            ,{field: 'maktx', align: 'center',title: '商品名称'}
            ,{field: 'batch', align: 'center',title: '批号'}
            ,{field: 'orderNo', align: 'center',title: '单据编号'}
            ,{field: 'specs', align: 'center',title: '规格'}
            ,{field: 'model', align: 'center',title: '型号'}
            ,{field: 'color', align: 'center',title: '颜色'}
            ,{field: 'brand', align: 'center',title: '品牌'}
            ,{field: 'unit', align: 'center',title: '单位'}
            ,{field: 'price', align: 'center',title: '单价'}
            ,{field: 'sku', align: 'center',title: 'sku'}
            ,{field: 'units', align: 'center',title: '单位量'}
            ,{field: 'barcode', align: 'center',title: '条码'}
            ,{field: 'origin', align: 'center',title: '产地'}
            ,{field: 'manu', align: 'center',title: '厂家'}
            ,{field: 'manuDate', align: 'center',title: '生产日期'}
            ,{field: 'itemNum', align: 'center',title: '品项数'}
            ,{field: 'safeQty', align: 'center',title: '安全库存量'}
            ,{field: 'weight', align: 'center',title: '重量'}
            ,{field: 'manLength', align: 'center',title: '长度'}
            ,{field: 'volume', align: 'center',title: '体积'}
            ,{field: 'threeCode', align: 'center',title: '三方编码'}
            ,{field: 'supp', align: 'center',title: '供应商'}
            ,{field: 'suppCode', align: 'center',title: '供应商编码'}
            ,{field: 'beBatch$', align: 'center',title: '是否批次'}
            ,{field: 'deadTime', align: 'center',title: '保质期'}
            ,{field: 'deadWarn', align: 'center',title: '预警天数'}
            ,{field: 'source$', align: 'center',title: '制购'}
            ,{field: 'inspect$', align: 'center',title: '要求检验'}
            ,{field: 'danger$', align: 'center',title: '危险品'}
            ,{field: 'modiUser$', align: 'center',title: '修改人员'}
            ,{field: 'modiTime$', align: 'center',title: '修改时间'}
            ,{field: 'appeUser$', align: 'center',title: '添加人员'}
            ,{field: 'appeTime$', align: 'center',title: '添加时间'}
            ,{field: 'memo', align: 'center',title: '备注'}
            ,{field: 'lineNumber', align: 'center',title: ''}
            ,{field: 'standby1', align: 'center',title: ''}
            ,{field: 'standby2', align: 'center',title: ''}
            ,{field: 'standby3', align: 'center',title: ''}
            ,{field: 'boxType1', align: 'center',title: ''}
            ,{field: 'boxType2', align: 'center',title: ''}
            ,{field: 'boxType3', align: 'center',title: ''}
            ,{fixed: 'right', title:'操作', align: 'center', toolbar: '#operate', width:120}
        ]],
        request: {
            pageName: 'curr',
            pageSize: 'limit'
        },
        parseData: function (res) {
            return {
                'code': res.code,
                'msg': res.msg,
                'count': res.data.total,
                'data': res.data.records
            }
        },
        response: {
            statusCode: 200
        },
        done: function(res, curr, count) {
            if (res.code === 403) {
                top.location.href = baseUrl+"/";
            }
            pageCurr=curr;
            limit();
        }
    });
    // 监听排序事件
    table.on('sort(taskDetlLog)', function (obj) {
        var searchData = {};
        $.each($('#search-box [name]').serializeArray(), function() {
            searchData[this.name] = this.value;
        });
        searchData['orderByField'] = obj.field;
        searchData['orderByType'] = obj.type;
        tableIns.reload({
            where: searchData,
            page: {curr: 1}
        });
    });
    // 监听头工具栏事件
    table.on('toolbar(taskDetlLog)', function (obj) {
        var checkStatus = table.checkStatus(obj.config.id).data;
        switch(obj.event) {
            case 'addData':
                showEditModel();
                break;
            case 'deleteData':
               if (checkStatus.length === 0) {
                   layer.msg('请选择要删除的数据', {icon: 2});
                   return;
               }
               del(checkStatus.map(function (d) {
                   return d.id;
               }));
               break;
            case 'exportData':
                admin.confirm('确定导出Excel吗', {shadeClose: true}, function(){
                    var titles=[];
                    var fields=[];
                    obj.config.cols[0].map(function (col) {
                        if (col.type === 'normal' && col.hide === false && col.toolbar == null) {
                            titles.push(col.title);
                            fields.push(col.field);
                        }
                    });
                    var exportData = {};
                    $.each($('#search-box [name]').serializeArray(), function() {
                        exportData[this.name] = this.value;
                    });
                    var param = {
                        'taskDetlLog': exportData,
                        'fields': fields
                    };
                    $.ajax({
                        url: baseUrl+"/taskDetlLog/export/auth",
                        headers: {'token': localStorage.getItem('token')},
                        data: JSON.stringify(param),
                        dataType:'json',
                        contentType:'application/json;charset=UTF-8',
                        method: 'POST',
                        success: function (res) {
                            layer.closeAll();
                            if (res.code === 200) {
                                table.exportFile(titles,res.data,'xls');
                            } else if (res.code === 403) {
                                top.location.href = baseUrl+"/";
                            } else {
                                layer.msg(res.msg, {icon: 2})
                            }
                        }
                    });
                });
                break;
        }
    });
    // 监听行工具事件
    table.on('tool(taskDetlLog)', function(obj){
        var data = obj.data;
        switch (obj.event) {
            case 'edit':
                showEditModel(data);
                break;
            case "del":
                del([data.id]);
                break;
        }
    });
    /* 弹窗 - 新增、修改 */
    function showEditModel(mData) {
        admin.open({
            type: 1,
            area: '600px',
            title: (mData ? '修改' : '添加') + '订单状态',
            content: $('#editDialog').html(),
            success: function (layero, dIndex) {
                layDateRender(mData);
                form.val('detail', mData);
                form.on('submit(editSubmit)', function (data) {
                    var loadIndex = layer.load(2);
                    $.ajax({
                        url: baseUrl+"/taskDetlLog/"+(mData?'update':'add')+"/auth",
                        headers: {'token': localStorage.getItem('token')},
                        data: data.field,
                        method: 'POST',
                        success: function (res) {
                            layer.close(loadIndex);
                            if (res.code === 200){
                                layer.close(dIndex);
                                layer.msg(res.msg, {icon: 1});
                                tableReload();
                            } else if (res.code === 403){
                                top.location.href = baseUrl+"/";
                            }else {
                                layer.msg(res.msg, {icon: 2});
                            }
                        }
                    })
                    return false;
                });
                $(layero).children('.layui-layer-content').css('overflow', 'visible');
                layui.form.render('select');
            }
        });
    }
    /* 删除 */
    function del(ids) {
        layer.confirm('确定要删除选中数据吗?', {
            skin: 'layui-layer-admin',
            shade: .1
        }, function (i) {
            layer.close(i);
            var loadIndex = layer.load(2);
            $.ajax({
                url: baseUrl+"/taskDetlLog/delete/auth",
                headers: {'token': localStorage.getItem('token')},
                data: {ids: ids},
                method: 'POST',
                success: function (res) {
                    layer.close(loadIndex);
                    if (res.code === 200){
                        layer.msg(res.msg, {icon: 1});
                        tableReload();
                    } else if (res.code === 403){
                        top.location.href = baseUrl+"/";
                    } else {
                        layer.msg(res.msg, {icon: 2});
                    }
                }
            })
        });
    }
    // 搜索
    form.on('submit(search)', function (data) {
        pageCurr = 1;
        tableReload(false);
    });
    // 重置
    form.on('submit(reset)', function (data) {
        pageCurr = 1;
        clearFormVal($('#search-box'));
        tableReload(false);
    });
    // 时间选择器
    function layDateRender(data) {
        setTimeout(function () {
            layDate.render({
                elem: '.layui-laydate-range'
                ,type: 'datetime'
                ,range: true
            });
            layDate.render({
                elem: '#ioTime\\$',
                type: 'datetime',
                value: data!==undefined?data['ioTime\\$']:null
            });
            layDate.render({
                elem: '#modiTime\\$',
                type: 'datetime',
                value: data!==undefined?data['modiTime\\$']:null
            });
            layDate.render({
                elem: '#appeTime\\$',
                type: 'datetime',
                value: data!==undefined?data['appeTime\\$']:null
            });
        }, 300);
    }
    layDateRender();
});
// 关闭动作
$(document).on('click','#data-detail-close', function () {
    parent.layer.closeAll();
});
function tableReload(child) {
    var searchData = {};
    $.each($('#search-box [name]').serializeArray(), function() {
        searchData[this.name] = this.value;
    });
    tableIns.reload({
        where: searchData,
        page: {curr: pageCurr}
     });
}
src/main/webapp/static/js/taskLog/taskLog.js
New file
@@ -0,0 +1,364 @@
var pageCurr;
layui.config({
    base: baseUrl + "/static/layui/lay/modules/"
}).use(['table','laydate', 'form', 'admin'], function(){
    var table = layui.table;
    var $ = layui.jquery;
    var layer = layui.layer;
    var layDate = layui.laydate;
    var form = layui.form;
    var admin = layui.admin;
    // 数据渲染
    tableIns = table.render({
        elem: '#taskLog',
        headers: {token: localStorage.getItem('token')},
        url: baseUrl+'/taskLog/list/auth',
        page: true,
        limit: 15,
        limits: [15, 30, 50, 100, 200, 500],
        toolbar: '#toolbar',
        cellMinWidth: 50,
        height: 'full-120',
        cols: [[
            {type: 'checkbox'}
            ,{field: 'id', align: 'center',title: ''}
            ,{field: 'wrkNo$', align: 'center',title: '工作号'}
            ,{field: 'logId', align: 'center',title: ''}
            ,{field: 'invWh', align: 'center',title: ''}
            ,{field: 'ymd$', align: 'center',title: ''}
            ,{field: 'mk', align: 'center',title: ''}
            ,{field: 'whsType', align: 'center',title: ''}
            ,{field: 'wrkSts$', align: 'center',title: '工作状态'}
            ,{field: 'ioType$', align: 'center',title: '入出库类型'}
            ,{field: 'crnNo$', align: 'center',title: '堆垛机号'}
            ,{field: 'sheetNo', align: 'center',title: ''}
            ,{field: 'ioPri', align: 'center',title: '优先级'}
            ,{field: 'wrkDate$', align: 'center',title: ''}
            ,{field: 'locNo$', align: 'center',title: '目标库位'}
            ,{field: 'staNo$', align: 'center',title: '目标站'}
            ,{field: 'sourceStaNo$', align: 'center',title: '源站'}
            ,{field: 'sourceLocNo$', align: 'center',title: '源库位'}
            ,{field: 'locSts', align: 'center',title: ''}
            ,{field: 'picking', align: 'center',title: '拣料(checkBox)'}
            ,{field: 'linkMis', align: 'center',title: ''}
            ,{field: 'onlineYn', align: 'center',title: ''}
            ,{field: 'updMk', align: 'center',title: ''}
            ,{field: 'exitMk', align: 'center',title: '退出(checkBox)'}
            ,{field: 'pltType', align: 'center',title: ''}
            ,{field: 'emptyMk', align: 'center',title: '空板(checkBox)'}
            ,{field: 'ioTime$', align: 'center',title: '工作时间'}
            ,{field: 'ctnType', align: 'center',title: ''}
            ,{field: 'packed', align: 'center',title: ''}
            ,{field: 'oveMk', align: 'center',title: ''}
            ,{field: 'mtnType', align: 'center',title: ''}
            ,{field: 'userNo', align: 'center',title: ''}
            ,{field: 'crnStrTime$', align: 'center',title: '堆垛机启动时间'}
            ,{field: 'crnEndTime$', align: 'center',title: '堆垛机停止时间'}
            ,{field: 'plcStrTime$', align: 'center',title: '拣料时间'}
            ,{field: 'crnPosTime$', align: 'center',title: ''}
            ,{field: 'loadTime', align: 'center',title: ''}
            ,{field: 'expTime', align: 'center',title: ''}
            ,{field: 'refWrkno', align: 'center',title: ''}
            ,{field: 'refIotime$', align: 'center',title: ''}
            ,{field: 'modiUser$', align: 'center',title: '修改人员'}
            ,{field: 'modiTime$', align: 'center',title: '修改时间'}
            ,{field: 'appeUser$', align: 'center',title: '创建者'}
            ,{field: 'appeTime$', align: 'center',title: '添加时间'}
            ,{field: 'pauseMk', align: 'center',title: ''}
            ,{field: 'errorTime$', align: 'center',title: ''}
            ,{field: 'errorMemo', align: 'center',title: ''}
            ,{field: 'ctnKind', align: 'center',title: ''}
            ,{field: 'manuType', align: 'center',title: ''}
            ,{field: 'memoM', align: 'center',title: ''}
            ,{field: 'scWeight', align: 'center',title: ''}
            ,{field: 'logMk', align: 'center',title: ''}
            ,{field: 'logErrTime$', align: 'center',title: ''}
            ,{field: 'logErrMemo', align: 'center',title: ''}
            ,{field: 'barcode', align: 'center',title: '条码'}
            ,{field: 'PdcType', align: 'center',title: ''}
            ,{field: 'ctnNo', align: 'center',title: ''}
            ,{field: 'fullPlt', align: 'center',title: '满板(checkBox)'}
            ,{field: 'preHave', align: 'center',title: ''}
            ,{field: 'takeNone', align: 'center',title: ''}
            ,{field: 'lineNumber', align: 'center',title: ''}
            ,{fixed: 'right', title:'操作', align: 'center', toolbar: '#operate', width:120}
        ]],
        request: {
            pageName: 'curr',
            pageSize: 'limit'
        },
        parseData: function (res) {
            return {
                'code': res.code,
                'msg': res.msg,
                'count': res.data.total,
                'data': res.data.records
            }
        },
        response: {
            statusCode: 200
        },
        done: function(res, curr, count) {
            if (res.code === 403) {
                top.location.href = baseUrl+"/";
            }
            pageCurr=curr;
            limit();
        }
    });
    // 监听排序事件
    table.on('sort(taskLog)', function (obj) {
        var searchData = {};
        $.each($('#search-box [name]').serializeArray(), function() {
            searchData[this.name] = this.value;
        });
        searchData['orderByField'] = obj.field;
        searchData['orderByType'] = obj.type;
        tableIns.reload({
            where: searchData,
            page: {curr: 1}
        });
    });
    // 监听头工具栏事件
    table.on('toolbar(taskLog)', function (obj) {
        var checkStatus = table.checkStatus(obj.config.id).data;
        switch(obj.event) {
            case 'addData':
                showEditModel();
                break;
            case 'deleteData':
               if (checkStatus.length === 0) {
                   layer.msg('请选择要删除的数据', {icon: 2});
                   return;
               }
               del(checkStatus.map(function (d) {
                   return d.id;
               }));
               break;
            case 'exportData':
                admin.confirm('确定导出Excel吗', {shadeClose: true}, function(){
                    var titles=[];
                    var fields=[];
                    obj.config.cols[0].map(function (col) {
                        if (col.type === 'normal' && col.hide === false && col.toolbar == null) {
                            titles.push(col.title);
                            fields.push(col.field);
                        }
                    });
                    var exportData = {};
                    $.each($('#search-box [name]').serializeArray(), function() {
                        exportData[this.name] = this.value;
                    });
                    var param = {
                        'taskLog': exportData,
                        'fields': fields
                    };
                    $.ajax({
                        url: baseUrl+"/taskLog/export/auth",
                        headers: {'token': localStorage.getItem('token')},
                        data: JSON.stringify(param),
                        dataType:'json',
                        contentType:'application/json;charset=UTF-8',
                        method: 'POST',
                        success: function (res) {
                            layer.closeAll();
                            if (res.code === 200) {
                                table.exportFile(titles,res.data,'xls');
                            } else if (res.code === 403) {
                                top.location.href = baseUrl+"/";
                            } else {
                                layer.msg(res.msg, {icon: 2})
                            }
                        }
                    });
                });
                break;
        }
    });
    // 监听行工具事件
    table.on('tool(taskLog)', function(obj){
        var data = obj.data;
        switch (obj.event) {
            case 'edit':
                showEditModel(data);
                break;
            case "del":
                del([data.id]);
                break;
        }
    });
    /* 弹窗 - 新增、修改 */
    function showEditModel(mData) {
        admin.open({
            type: 1,
            area: '600px',
            title: (mData ? '修改' : '添加') + '订单状态',
            content: $('#editDialog').html(),
            success: function (layero, dIndex) {
                layDateRender(mData);
                form.val('detail', mData);
                form.on('submit(editSubmit)', function (data) {
                    var loadIndex = layer.load(2);
                    $.ajax({
                        url: baseUrl+"/taskLog/"+(mData?'update':'add')+"/auth",
                        headers: {'token': localStorage.getItem('token')},
                        data: data.field,
                        method: 'POST',
                        success: function (res) {
                            layer.close(loadIndex);
                            if (res.code === 200){
                                layer.close(dIndex);
                                layer.msg(res.msg, {icon: 1});
                                tableReload();
                            } else if (res.code === 403){
                                top.location.href = baseUrl+"/";
                            }else {
                                layer.msg(res.msg, {icon: 2});
                            }
                        }
                    })
                    return false;
                });
                $(layero).children('.layui-layer-content').css('overflow', 'visible');
                layui.form.render('select');
            }
        });
    }
    /* 删除 */
    function del(ids) {
        layer.confirm('确定要删除选中数据吗?', {
            skin: 'layui-layer-admin',
            shade: .1
        }, function (i) {
            layer.close(i);
            var loadIndex = layer.load(2);
            $.ajax({
                url: baseUrl+"/taskLog/delete/auth",
                headers: {'token': localStorage.getItem('token')},
                data: {ids: ids},
                method: 'POST',
                success: function (res) {
                    layer.close(loadIndex);
                    if (res.code === 200){
                        layer.msg(res.msg, {icon: 1});
                        tableReload();
                    } else if (res.code === 403){
                        top.location.href = baseUrl+"/";
                    } else {
                        layer.msg(res.msg, {icon: 2});
                    }
                }
            })
        });
    }
    // 搜索
    form.on('submit(search)', function (data) {
        pageCurr = 1;
        tableReload(false);
    });
    // 重置
    form.on('submit(reset)', function (data) {
        pageCurr = 1;
        clearFormVal($('#search-box'));
        tableReload(false);
    });
    // 时间选择器
    function layDateRender(data) {
        setTimeout(function () {
            layDate.render({
                elem: '.layui-laydate-range'
                ,type: 'datetime'
                ,range: true
            });
            layDate.render({
                elem: '#ymd\\$',
                type: 'datetime',
                value: data!==undefined?data['ymd\\$']:null
            });
            layDate.render({
                elem: '#wrkDate\\$',
                type: 'datetime',
                value: data!==undefined?data['wrkDate\\$']:null
            });
            layDate.render({
                elem: '#ioTime\\$',
                type: 'datetime',
                value: data!==undefined?data['ioTime\\$']:null
            });
            layDate.render({
                elem: '#crnStrTime\\$',
                type: 'datetime',
                value: data!==undefined?data['crnStrTime\\$']:null
            });
            layDate.render({
                elem: '#crnEndTime\\$',
                type: 'datetime',
                value: data!==undefined?data['crnEndTime\\$']:null
            });
            layDate.render({
                elem: '#plcStrTime\\$',
                type: 'datetime',
                value: data!==undefined?data['plcStrTime\\$']:null
            });
            layDate.render({
                elem: '#crnPosTime\\$',
                type: 'datetime',
                value: data!==undefined?data['crnPosTime\\$']:null
            });
            layDate.render({
                elem: '#refIotime\\$',
                type: 'datetime',
                value: data!==undefined?data['refIotime\\$']:null
            });
            layDate.render({
                elem: '#modiTime\\$',
                type: 'datetime',
                value: data!==undefined?data['modiTime\\$']:null
            });
            layDate.render({
                elem: '#appeTime\\$',
                type: 'datetime',
                value: data!==undefined?data['appeTime\\$']:null
            });
            layDate.render({
                elem: '#errorTime\\$',
                type: 'datetime',
                value: data!==undefined?data['errorTime\\$']:null
            });
            layDate.render({
                elem: '#logErrTime\\$',
                type: 'datetime',
                value: data!==undefined?data['logErrTime\\$']:null
            });
        }, 300);
    }
    layDateRender();
});
// 关闭动作
$(document).on('click','#data-detail-close', function () {
    parent.layer.closeAll();
});
function tableReload(child) {
    var searchData = {};
    $.each($('#search-box [name]').serializeArray(), function() {
        searchData[this.name] = this.value;
    });
    tableIns.reload({
        where: searchData,
        page: {curr: pageCurr}
     });
}
src/main/webapp/views/basStation/basStation.html
New file
@@ -0,0 +1,311 @@
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title></title>
    <meta name="renderer" content="webkit">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
    <link rel="stylesheet" href="../../static/layui/css/layui.css" media="all">
    <link rel="stylesheet" href="../../static/css/admin.css?v=318" media="all">
    <link rel="stylesheet" href="../../static/css/cool.css" media="all">
</head>
<body>
<div class="layui-fluid">
    <div class="layui-card">
        <div class="layui-card-body">
            <div class="layui-form toolbar" id="search-box">
                <div class="layui-form-item">
                    <div class="layui-inline">
                        <div class="layui-input-inline">
                            <input class="layui-input" type="text" name="id" placeholder="编号" autocomplete="off">
                        </div>
                    </div>
                     <div class="layui-inline" style="width: 300px">
                        <div class="layui-input-inline">
                            <input class="layui-input layui-laydate-range" name="create_time" type="text" placeholder="起始时间 - 终止时间" autocomplete="off" style="width: 300px">
                        </div>
                    </div>
                    <div class="layui-inline">
                        <div class="layui-input-inline">
                            <input class="layui-input" type="text" name="condition" placeholder="请输入" autocomplete="off">
                        </div>
                    </div>
                    <div class="layui-inline">&emsp;
                        <button class="layui-btn icon-btn" lay-filter="search" lay-submit>
                            <i class="layui-icon">&#xe615;</i>搜索
                        </button>
                        <button class="layui-btn icon-btn" lay-filter="reset" lay-submit>
                            <i class="layui-icon">&#xe666;</i>重置
                        </button>
                    </div>
                </div>
            </div>
            <table class="layui-hide" id="basStation" lay-filter="basStation"></table>
        </div>
    </div>
</div>
<script type="text/html" id="toolbar">
    <div class="layui-btn-container">
        <button class="layui-btn layui-btn-sm" id="btn-add" lay-event="addData">新增</button>
        <button class="layui-btn layui-btn-sm layui-btn-danger" id="btn-delete" lay-event="deleteData">删除</button>
        <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData" style="float: right">导出</button>
    </div>
</script>
<script type="text/html" id="operate">
    <a class="layui-btn layui-btn-primary layui-btn-xs btn-edit" lay-event="edit">修改</a>
    <a class="layui-btn layui-btn-danger layui-btn-xs btn-edit" lay-event="del">删除</a>
</script>
<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
<script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/basStation/basStation.js" charset="utf-8"></script>
</body>
<!-- 表单弹窗 -->
<script type="text/html" id="editDialog">
    <form id="detail" lay-filter="detail" class="layui-form admin-form model-form">
        <input name="id" type="hidden">
        <div class="layui-row">
            <div class="layui-col-md12">
                <div class="layui-form-item">
                    <label class="layui-form-label layui-form-required">编号: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="devNo" placeholder="请输入编号" lay-vertype="tips" lay-verify="required">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">设备描述: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="decDesc" placeholder="请输入设备描述">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">备注: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="devMk" placeholder="请输入备注">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">可入(checkBox): </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="inEnable" placeholder="请输入可入(checkBox)">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">可出(checkBox): </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="outEnable" placeholder="请输入可出(checkBox)">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">自动(checkBox): </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="autoing" placeholder="请输入自动(checkBox)">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">有物(checkBox): </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="loading" placeholder="请输入有物(checkBox)">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="locSts" placeholder="请输入">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">能入(checkBox): </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="canining" placeholder="请输入能入(checkBox)">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">能出(checkBox): </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="canouting" placeholder="请输入能出(checkBox)">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="fronting" placeholder="请输入">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="rearing" placeholder="请输入">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="uping" placeholder="请输入">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="downing" placeholder="请输入">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">工作号: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="wrkNo" placeholder="请输入工作号">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">容器类型: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="ctnType" placeholder="请输入容器类型">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">条形码: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="barcode" placeholder="请输入条形码">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="inQty" placeholder="请输入">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="row1" placeholder="请输入">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="ioTime" id="ioTime$" placeholder="请输入">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="area" placeholder="请输入">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="inOk" placeholder="请输入">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="outOk" placeholder="请输入">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">高低类型: </label>
                    <div class="layui-input-block">
                        <select name="locType1">
                            <option value="">请选择高低类型</option>
                            <option value="0">未知</option>
                            <option value="1">低库位</option>
                            <option value="2">高库位</option>
                        </select>
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">宽窄类型: </label>
                    <div class="layui-input-block">
                        <select name="locType2">
                            <option value="">请选择宽窄类型</option>
                            <option value="0">未知</option>
                            <option value="1">窄库位</option>
                            <option value="2">宽库位</option>
                        </select>
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">轻重类型: </label>
                    <div class="layui-input-block">
                        <select name="locType3">
                            <option value="">请选择轻重类型</option>
                            <option value="0">未知</option>
                            <option value="1">轻库位</option>
                            <option value="2">重库位</option>
                        </select>
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">修改人员: </label>
                    <div class="layui-input-block cool-auto-complete">
                        <input class="layui-input" name="modiUser" placeholder="请输入修改人员" style="display: none">
                        <input id="modiUser$" name="modiUser$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="请输入修改人员" onfocus=this.blur()>
                        <div class="cool-auto-complete-window">
                            <input class="cool-auto-complete-window-input" data-key="userQueryBymodiUser" onkeyup="autoLoad(this.getAttribute('data-key'))">
                            <select class="cool-auto-complete-window-select" data-key="userQueryBymodiUserSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
                            </select>
                        </div>
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">修改时间: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="modiTime" id="modiTime$" placeholder="请输入修改时间">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">创建者: </label>
                    <div class="layui-input-block cool-auto-complete">
                        <input class="layui-input" name="appeUser" placeholder="请输入创建者" style="display: none">
                        <input id="appeUser$" name="appeUser$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="请输入创建者" onfocus=this.blur()>
                        <div class="cool-auto-complete-window">
                            <input class="cool-auto-complete-window-input" data-key="userQueryByappeUser" onkeyup="autoLoad(this.getAttribute('data-key'))">
                            <select class="cool-auto-complete-window-select" data-key="userQueryByappeUserSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
                            </select>
                        </div>
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">添加时间: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="appeTime" id="appeTime$" placeholder="请输入添加时间">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="stdQty" placeholder="请输入">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="minWt" placeholder="请输入">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">重量: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="grossWt" placeholder="请输入重量">
                    </div>
                </div>
             </div>
        </div>
        <hr class="layui-bg-gray">
        <div class="layui-form-item text-right">
            <button class="layui-btn" lay-filter="editSubmit" lay-submit="">保存</button>
            <button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">取消</button>
        </div>
    </form>
</script>
</html>
src/main/webapp/views/task/task.html
New file
@@ -0,0 +1,92 @@
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title></title>
    <meta name="renderer" content="webkit">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
    <link rel="stylesheet" href="../../static/layui/css/layui.css" media="all">
    <link rel="stylesheet" href="../../static/css/admin.css?v=318" media="all">
    <link rel="stylesheet" href="../../static/css/cool.css" media="all">
</head>
<body>
<div class="layui-fluid">
    <div class="layui-card">
        <div class="layui-card-body">
            <div class="layui-form toolbar" id="search-box">
                <div class="layui-form-item">
                    <div class="layui-inline">
                        <div class="layui-input-inline">
                            <input class="layui-input" type="text" name="id" placeholder="编号" autocomplete="off">
                        </div>
                    </div>
                     <div class="layui-inline" style="width: 300px">
                        <div class="layui-input-inline">
                            <input class="layui-input layui-laydate-range" name="create_time" type="text" placeholder="起始时间 - 终止时间" autocomplete="off" style="width: 300px">
                        </div>
                    </div>
                    <div class="layui-inline">
                        <div class="layui-input-inline">
                            <input class="layui-input" type="text" name="condition" placeholder="请输入" autocomplete="off">
                        </div>
                    </div>
                    <div class="layui-inline">&emsp;
                        <button class="layui-btn icon-btn" lay-filter="search" lay-submit>
                            <i class="layui-icon">&#xe615;</i>搜索
                        </button>
                        <button class="layui-btn icon-btn" lay-filter="reset" lay-submit>
                            <i class="layui-icon">&#xe666;</i>重置
                        </button>
                    </div>
                </div>
            </div>
            <table class="layui-hide" id="task" lay-filter="task"></table>
        </div>
    </div>
</div>
<script type="text/html" id="toolbar">
    <div class="layui-btn-container">
        <button class="layui-btn layui-btn-sm" id="btn-add" lay-event="addData">新增</button>
        <button class="layui-btn layui-btn-sm layui-btn-danger" id="btn-delete" lay-event="deleteData">删除</button>
        <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData" style="float: right">导出</button>
    </div>
</script>
<script type="text/html" id="operate">
    <a class="layui-btn layui-btn-primary layui-btn-xs btn-edit" lay-event="edit">修改</a>
    <a class="layui-btn layui-btn-danger layui-btn-xs btn-edit" lay-event="del">删除</a>
</script>
<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
<script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/task/task.js" charset="utf-8"></script>
</body>
<!-- 表单弹窗 -->
<script type="text/html" id="editDialog">
    <form id="detail" lay-filter="detail" class="layui-form admin-form model-form">
        <input name="id" type="hidden">
        <div class="layui-row">
            <div class="layui-col-md12">
                <div class="layui-form-item">
                    <label class="layui-form-label">任务类型: agv  , crn: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="taskType" placeholder="请输入任务类型: agv  , crn">
                    </div>
                </div>
             </div>
        </div>
        <hr class="layui-bg-gray">
        <div class="layui-form-item text-right">
            <button class="layui-btn" lay-filter="editSubmit" lay-submit="">保存</button>
            <button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">取消</button>
        </div>
    </form>
</script>
</html>
src/main/webapp/views/taskDetl/taskDetl.html
New file
@@ -0,0 +1,391 @@
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title></title>
    <meta name="renderer" content="webkit">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
    <link rel="stylesheet" href="../../static/layui/css/layui.css" media="all">
    <link rel="stylesheet" href="../../static/css/admin.css?v=318" media="all">
    <link rel="stylesheet" href="../../static/css/cool.css" media="all">
</head>
<body>
<div class="layui-fluid">
    <div class="layui-card">
        <div class="layui-card-body">
            <div class="layui-form toolbar" id="search-box">
                <div class="layui-form-item">
                    <div class="layui-inline">
                        <div class="layui-input-inline">
                            <input class="layui-input" type="text" name="id" placeholder="编号" autocomplete="off">
                        </div>
                    </div>
                     <div class="layui-inline" style="width: 300px">
                        <div class="layui-input-inline">
                            <input class="layui-input layui-laydate-range" name="create_time" type="text" placeholder="起始时间 - 终止时间" autocomplete="off" style="width: 300px">
                        </div>
                    </div>
                    <div class="layui-inline">
                        <div class="layui-input-inline">
                            <input class="layui-input" type="text" name="condition" placeholder="请输入" autocomplete="off">
                        </div>
                    </div>
                    <div class="layui-inline">&emsp;
                        <button class="layui-btn icon-btn" lay-filter="search" lay-submit>
                            <i class="layui-icon">&#xe615;</i>搜索
                        </button>
                        <button class="layui-btn icon-btn" lay-filter="reset" lay-submit>
                            <i class="layui-icon">&#xe666;</i>重置
                        </button>
                    </div>
                </div>
            </div>
            <table class="layui-hide" id="taskDetl" lay-filter="taskDetl"></table>
        </div>
    </div>
</div>
<script type="text/html" id="toolbar">
    <div class="layui-btn-container">
        <button class="layui-btn layui-btn-sm" id="btn-add" lay-event="addData">新增</button>
        <button class="layui-btn layui-btn-sm layui-btn-danger" id="btn-delete" lay-event="deleteData">删除</button>
        <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData" style="float: right">导出</button>
    </div>
</script>
<script type="text/html" id="operate">
    <a class="layui-btn layui-btn-primary layui-btn-xs btn-edit" lay-event="edit">修改</a>
    <a class="layui-btn layui-btn-danger layui-btn-xs btn-edit" lay-event="del">删除</a>
</script>
<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
<script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/taskDetl/taskDetl.js" charset="utf-8"></script>
</body>
<!-- 表单弹窗 -->
<script type="text/html" id="editDialog">
    <form id="detail" lay-filter="detail" class="layui-form admin-form model-form">
        <input name="id" type="hidden">
        <div class="layui-row">
            <div class="layui-col-md12">
                <div class="layui-form-item">
                    <label class="layui-form-label layui-form-required">工作号: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="wrkNo" placeholder="请输入工作号" lay-vertype="tips" lay-verify="required">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">工作时间: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="ioTime" id="ioTime$" placeholder="请输入工作时间">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">数量: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="anfme" placeholder="请输入数量">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">托盘条码: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="zpallet" placeholder="请输入托盘条码">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label layui-form-required">商品编号: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="matnr" placeholder="请输入商品编号" lay-vertype="tips" lay-verify="required">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">商品名称: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="maktx" placeholder="请输入商品名称">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">批号: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="batch" placeholder="请输入批号">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">单据编号: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="orderNo" placeholder="请输入单据编号">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">规格: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="specs" placeholder="请输入规格">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">型号: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="model" placeholder="请输入型号">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">颜色: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="color" placeholder="请输入颜色">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">品牌: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="brand" placeholder="请输入品牌">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">单位: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="unit" placeholder="请输入单位">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">单价: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="price" placeholder="请输入单价">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">sku: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="sku" placeholder="请输入sku">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">单位量: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="units" placeholder="请输入单位量">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">条码: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="barcode" placeholder="请输入条码">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">产地: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="origin" placeholder="请输入产地">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">厂家: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="manu" placeholder="请输入厂家">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">生产日期: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="manuDate" placeholder="请输入生产日期">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">品项数: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="itemNum" placeholder="请输入品项数">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">安全库存量: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="safeQty" placeholder="请输入安全库存量">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">重量: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="weight" placeholder="请输入重量">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">长度: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="manLength" placeholder="请输入长度">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">体积: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="volume" placeholder="请输入体积">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">三方编码: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="threeCode" placeholder="请输入三方编码">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">供应商: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="supp" placeholder="请输入供应商">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">供应商编码: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="suppCode" placeholder="请输入供应商编码">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">是否批次: </label>
                    <div class="layui-input-block">
                        <select name="beBatch">
                            <option value="">请选择是否批次</option>
                            <option value="1">是</option>
                            <option value="0">否</option>
                        </select>
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">保质期: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="deadTime" placeholder="请输入保质期">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">预警天数: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="deadWarn" placeholder="请输入预警天数">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">制购: </label>
                    <div class="layui-input-block">
                        <select name="source">
                            <option value="">请选择制购</option>
                            <option value="1">制造</option>
                            <option value="2">采购</option>
                            <option value="3">外协</option>
                        </select>
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">要求检验: </label>
                    <div class="layui-input-block">
                        <select name="inspect">
                            <option value="">请选择要求检验</option>
                            <option value="1">是</option>
                            <option value="0">否</option>
                        </select>
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">危险品: </label>
                    <div class="layui-input-block">
                        <select name="danger">
                            <option value="">请选择危险品</option>
                            <option value="1">是</option>
                            <option value="0">否</option>
                        </select>
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">修改人员: </label>
                    <div class="layui-input-block cool-auto-complete">
                        <input class="layui-input" name="modiUser" placeholder="请输入修改人员" style="display: none">
                        <input id="modiUser$" name="modiUser$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="请输入修改人员" onfocus=this.blur()>
                        <div class="cool-auto-complete-window">
                            <input class="cool-auto-complete-window-input" data-key="userQueryBymodiUser" onkeyup="autoLoad(this.getAttribute('data-key'))">
                            <select class="cool-auto-complete-window-select" data-key="userQueryBymodiUserSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
                            </select>
                        </div>
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">修改时间: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="modiTime" id="modiTime$" placeholder="请输入修改时间">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">添加人员: </label>
                    <div class="layui-input-block cool-auto-complete">
                        <input class="layui-input" name="appeUser" placeholder="请输入添加人员" style="display: none">
                        <input id="appeUser$" name="appeUser$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="请输入添加人员" onfocus=this.blur()>
                        <div class="cool-auto-complete-window">
                            <input class="cool-auto-complete-window-input" data-key="userQueryByappeUser" onkeyup="autoLoad(this.getAttribute('data-key'))">
                            <select class="cool-auto-complete-window-select" data-key="userQueryByappeUserSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
                            </select>
                        </div>
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">添加时间: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="appeTime" id="appeTime$" placeholder="请输入添加时间">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">备注: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="memo" placeholder="请输入备注">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="lineNumber" placeholder="请输入">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="standby1" placeholder="请输入">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="standby2" placeholder="请输入">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="standby3" placeholder="请输入">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="boxType1" placeholder="请输入">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="boxType2" placeholder="请输入">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="boxType3" placeholder="请输入">
                    </div>
                </div>
             </div>
        </div>
        <hr class="layui-bg-gray">
        <div class="layui-form-item text-right">
            <button class="layui-btn" lay-filter="editSubmit" lay-submit="">保存</button>
            <button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">取消</button>
        </div>
    </form>
</script>
</html>
src/main/webapp/views/taskDetlLog/taskDetlLog.html
New file
@@ -0,0 +1,391 @@
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title></title>
    <meta name="renderer" content="webkit">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
    <link rel="stylesheet" href="../../static/layui/css/layui.css" media="all">
    <link rel="stylesheet" href="../../static/css/admin.css?v=318" media="all">
    <link rel="stylesheet" href="../../static/css/cool.css" media="all">
</head>
<body>
<div class="layui-fluid">
    <div class="layui-card">
        <div class="layui-card-body">
            <div class="layui-form toolbar" id="search-box">
                <div class="layui-form-item">
                    <div class="layui-inline">
                        <div class="layui-input-inline">
                            <input class="layui-input" type="text" name="id" placeholder="编号" autocomplete="off">
                        </div>
                    </div>
                     <div class="layui-inline" style="width: 300px">
                        <div class="layui-input-inline">
                            <input class="layui-input layui-laydate-range" name="create_time" type="text" placeholder="起始时间 - 终止时间" autocomplete="off" style="width: 300px">
                        </div>
                    </div>
                    <div class="layui-inline">
                        <div class="layui-input-inline">
                            <input class="layui-input" type="text" name="condition" placeholder="请输入" autocomplete="off">
                        </div>
                    </div>
                    <div class="layui-inline">&emsp;
                        <button class="layui-btn icon-btn" lay-filter="search" lay-submit>
                            <i class="layui-icon">&#xe615;</i>搜索
                        </button>
                        <button class="layui-btn icon-btn" lay-filter="reset" lay-submit>
                            <i class="layui-icon">&#xe666;</i>重置
                        </button>
                    </div>
                </div>
            </div>
            <table class="layui-hide" id="taskDetlLog" lay-filter="taskDetlLog"></table>
        </div>
    </div>
</div>
<script type="text/html" id="toolbar">
    <div class="layui-btn-container">
        <button class="layui-btn layui-btn-sm" id="btn-add" lay-event="addData">新增</button>
        <button class="layui-btn layui-btn-sm layui-btn-danger" id="btn-delete" lay-event="deleteData">删除</button>
        <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData" style="float: right">导出</button>
    </div>
</script>
<script type="text/html" id="operate">
    <a class="layui-btn layui-btn-primary layui-btn-xs btn-edit" lay-event="edit">修改</a>
    <a class="layui-btn layui-btn-danger layui-btn-xs btn-edit" lay-event="del">删除</a>
</script>
<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
<script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/taskDetlLog/taskDetlLog.js" charset="utf-8"></script>
</body>
<!-- 表单弹窗 -->
<script type="text/html" id="editDialog">
    <form id="detail" lay-filter="detail" class="layui-form admin-form model-form">
        <input name="id" type="hidden">
        <div class="layui-row">
            <div class="layui-col-md12">
                <div class="layui-form-item">
                    <label class="layui-form-label layui-form-required">工作号: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="wrkNo" placeholder="请输入工作号" lay-vertype="tips" lay-verify="required">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">工作时间: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="ioTime" id="ioTime$" placeholder="请输入工作时间">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">数量: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="anfme" placeholder="请输入数量">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">托盘条码: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="zpallet" placeholder="请输入托盘条码">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label layui-form-required">商品编号: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="matnr" placeholder="请输入商品编号" lay-vertype="tips" lay-verify="required">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">商品名称: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="maktx" placeholder="请输入商品名称">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">批号: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="batch" placeholder="请输入批号">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">单据编号: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="orderNo" placeholder="请输入单据编号">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">规格: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="specs" placeholder="请输入规格">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">型号: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="model" placeholder="请输入型号">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">颜色: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="color" placeholder="请输入颜色">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">品牌: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="brand" placeholder="请输入品牌">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">单位: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="unit" placeholder="请输入单位">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">单价: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="price" placeholder="请输入单价">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">sku: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="sku" placeholder="请输入sku">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">单位量: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="units" placeholder="请输入单位量">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">条码: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="barcode" placeholder="请输入条码">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">产地: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="origin" placeholder="请输入产地">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">厂家: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="manu" placeholder="请输入厂家">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">生产日期: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="manuDate" placeholder="请输入生产日期">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">品项数: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="itemNum" placeholder="请输入品项数">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">安全库存量: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="safeQty" placeholder="请输入安全库存量">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">重量: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="weight" placeholder="请输入重量">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">长度: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="manLength" placeholder="请输入长度">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">体积: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="volume" placeholder="请输入体积">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">三方编码: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="threeCode" placeholder="请输入三方编码">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">供应商: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="supp" placeholder="请输入供应商">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">供应商编码: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="suppCode" placeholder="请输入供应商编码">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">是否批次: </label>
                    <div class="layui-input-block">
                        <select name="beBatch">
                            <option value="">请选择是否批次</option>
                            <option value="1">是</option>
                            <option value="0">否</option>
                        </select>
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">保质期: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="deadTime" placeholder="请输入保质期">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">预警天数: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="deadWarn" placeholder="请输入预警天数">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">制购: </label>
                    <div class="layui-input-block">
                        <select name="source">
                            <option value="">请选择制购</option>
                            <option value="1">制造</option>
                            <option value="2">采购</option>
                            <option value="3">外协</option>
                        </select>
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">要求检验: </label>
                    <div class="layui-input-block">
                        <select name="inspect">
                            <option value="">请选择要求检验</option>
                            <option value="1">是</option>
                            <option value="0">否</option>
                        </select>
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">危险品: </label>
                    <div class="layui-input-block">
                        <select name="danger">
                            <option value="">请选择危险品</option>
                            <option value="1">是</option>
                            <option value="0">否</option>
                        </select>
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">修改人员: </label>
                    <div class="layui-input-block cool-auto-complete">
                        <input class="layui-input" name="modiUser" placeholder="请输入修改人员" style="display: none">
                        <input id="modiUser$" name="modiUser$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="请输入修改人员" onfocus=this.blur()>
                        <div class="cool-auto-complete-window">
                            <input class="cool-auto-complete-window-input" data-key="userQueryBymodiUser" onkeyup="autoLoad(this.getAttribute('data-key'))">
                            <select class="cool-auto-complete-window-select" data-key="userQueryBymodiUserSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
                            </select>
                        </div>
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">修改时间: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="modiTime" id="modiTime$" placeholder="请输入修改时间">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">添加人员: </label>
                    <div class="layui-input-block cool-auto-complete">
                        <input class="layui-input" name="appeUser" placeholder="请输入添加人员" style="display: none">
                        <input id="appeUser$" name="appeUser$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="请输入添加人员" onfocus=this.blur()>
                        <div class="cool-auto-complete-window">
                            <input class="cool-auto-complete-window-input" data-key="userQueryByappeUser" onkeyup="autoLoad(this.getAttribute('data-key'))">
                            <select class="cool-auto-complete-window-select" data-key="userQueryByappeUserSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
                            </select>
                        </div>
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">添加时间: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="appeTime" id="appeTime$" placeholder="请输入添加时间">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">备注: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="memo" placeholder="请输入备注">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="lineNumber" placeholder="请输入">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="standby1" placeholder="请输入">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="standby2" placeholder="请输入">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="standby3" placeholder="请输入">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="boxType1" placeholder="请输入">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="boxType2" placeholder="请输入">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="boxType3" placeholder="请输入">
                    </div>
                </div>
             </div>
        </div>
        <hr class="layui-bg-gray">
        <div class="layui-form-item text-right">
            <button class="layui-btn" lay-filter="editSubmit" lay-submit="">保存</button>
            <button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">取消</button>
        </div>
    </form>
</script>
</html>
src/main/webapp/views/taskLog/taskLog.html
New file
@@ -0,0 +1,506 @@
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title></title>
    <meta name="renderer" content="webkit">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
    <link rel="stylesheet" href="../../static/layui/css/layui.css" media="all">
    <link rel="stylesheet" href="../../static/css/admin.css?v=318" media="all">
    <link rel="stylesheet" href="../../static/css/cool.css" media="all">
</head>
<body>
<div class="layui-fluid">
    <div class="layui-card">
        <div class="layui-card-body">
            <div class="layui-form toolbar" id="search-box">
                <div class="layui-form-item">
                    <div class="layui-inline">
                        <div class="layui-input-inline">
                            <input class="layui-input" type="text" name="id" placeholder="编号" autocomplete="off">
                        </div>
                    </div>
                     <div class="layui-inline" style="width: 300px">
                        <div class="layui-input-inline">
                            <input class="layui-input layui-laydate-range" name="create_time" type="text" placeholder="起始时间 - 终止时间" autocomplete="off" style="width: 300px">
                        </div>
                    </div>
                    <div class="layui-inline">
                        <div class="layui-input-inline">
                            <input class="layui-input" type="text" name="condition" placeholder="请输入" autocomplete="off">
                        </div>
                    </div>
                    <div class="layui-inline">&emsp;
                        <button class="layui-btn icon-btn" lay-filter="search" lay-submit>
                            <i class="layui-icon">&#xe615;</i>搜索
                        </button>
                        <button class="layui-btn icon-btn" lay-filter="reset" lay-submit>
                            <i class="layui-icon">&#xe666;</i>重置
                        </button>
                    </div>
                </div>
            </div>
            <table class="layui-hide" id="taskLog" lay-filter="taskLog"></table>
        </div>
    </div>
</div>
<script type="text/html" id="toolbar">
    <div class="layui-btn-container">
        <button class="layui-btn layui-btn-sm" id="btn-add" lay-event="addData">新增</button>
        <button class="layui-btn layui-btn-sm layui-btn-danger" id="btn-delete" lay-event="deleteData">删除</button>
        <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData" style="float: right">导出</button>
    </div>
</script>
<script type="text/html" id="operate">
    <a class="layui-btn layui-btn-primary layui-btn-xs btn-edit" lay-event="edit">修改</a>
    <a class="layui-btn layui-btn-danger layui-btn-xs btn-edit" lay-event="del">删除</a>
</script>
<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
<script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/taskLog/taskLog.js" charset="utf-8"></script>
</body>
<!-- 表单弹窗 -->
<script type="text/html" id="editDialog">
    <form id="detail" lay-filter="detail" class="layui-form admin-form model-form">
        <input name="id" type="hidden">
        <div class="layui-row">
            <div class="layui-col-md12">
                <div class="layui-form-item">
                    <label class="layui-form-label">: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="id" placeholder="请输入">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label layui-form-required">工作号: </label>
                    <div class="layui-input-block cool-auto-complete">
                        <input class="layui-input" name="wrkNo" placeholder="请输入工作号" lay-vertype="tips" lay-verify="required" style="display: none">
                        <input id="wrkNo$" name="wrkNo$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="请输入工作号" onfocus=this.blur()>
                        <div class="cool-auto-complete-window">
                            <input class="cool-auto-complete-window-input" data-key="wrkMastQueryBywrkNo" onkeyup="autoLoad(this.getAttribute('data-key'))">
                            <select class="cool-auto-complete-window-select" data-key="wrkMastQueryBywrkNoSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
                            </select>
                        </div>
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="logId" placeholder="请输入">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="invWh" placeholder="请输入">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="ymd" id="ymd$" placeholder="请输入">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="mk" placeholder="请输入">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="whsType" placeholder="请输入">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">工作状态: </label>
                    <div class="layui-input-block cool-auto-complete">
                        <input class="layui-input" name="wrkSts" placeholder="请输入工作状态" style="display: none">
                        <input id="wrkSts$" name="wrkSts$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="请输入工作状态" onfocus=this.blur()>
                        <div class="cool-auto-complete-window">
                            <input class="cool-auto-complete-window-input" data-key="basWrkStatusQueryBywrkSts" onkeyup="autoLoad(this.getAttribute('data-key'))">
                            <select class="cool-auto-complete-window-select" data-key="basWrkStatusQueryBywrkStsSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
                            </select>
                        </div>
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">入出库类型: </label>
                    <div class="layui-input-block cool-auto-complete">
                        <input class="layui-input" name="ioType" placeholder="请输入入出库类型" style="display: none">
                        <input id="ioType$" name="ioType$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="请输入入出库类型" onfocus=this.blur()>
                        <div class="cool-auto-complete-window">
                            <input class="cool-auto-complete-window-input" data-key="basWrkIotypeQueryByioType" onkeyup="autoLoad(this.getAttribute('data-key'))">
                            <select class="cool-auto-complete-window-select" data-key="basWrkIotypeQueryByioTypeSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
                            </select>
                        </div>
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">堆垛机号: </label>
                    <div class="layui-input-block cool-auto-complete">
                        <input class="layui-input" name="crnNo" placeholder="请输入堆垛机号" style="display: none">
                        <input id="crnNo$" name="crnNo$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="请输入堆垛机号" onfocus=this.blur()>
                        <div class="cool-auto-complete-window">
                            <input class="cool-auto-complete-window-input" data-key="basCrnpQueryBycrnNo" onkeyup="autoLoad(this.getAttribute('data-key'))">
                            <select class="cool-auto-complete-window-select" data-key="basCrnpQueryBycrnNoSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
                            </select>
                        </div>
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="sheetNo" placeholder="请输入">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">优先级: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="ioPri" placeholder="请输入优先级">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="wrkDate" id="wrkDate$" placeholder="请输入">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">目标库位: </label>
                    <div class="layui-input-block cool-auto-complete">
                        <input class="layui-input" name="locNo" placeholder="请输入目标库位" style="display: none">
                        <input id="locNo$" name="locNo$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="请输入目标库位" onfocus=this.blur()>
                        <div class="cool-auto-complete-window">
                            <input class="cool-auto-complete-window-input" data-key="locMastQueryBylocNo" onkeyup="autoLoad(this.getAttribute('data-key'))">
                            <select class="cool-auto-complete-window-select" data-key="locMastQueryBylocNoSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
                            </select>
                        </div>
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">目标站: </label>
                    <div class="layui-input-block cool-auto-complete">
                        <input class="layui-input" name="staNo" placeholder="请输入目标站" style="display: none">
                        <input id="staNo$" name="staNo$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="请输入目标站" onfocus=this.blur()>
                        <div class="cool-auto-complete-window">
                            <input class="cool-auto-complete-window-input" data-key="basDevpQueryBystaNo" onkeyup="autoLoad(this.getAttribute('data-key'))">
                            <select class="cool-auto-complete-window-select" data-key="basDevpQueryBystaNoSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
                            </select>
                        </div>
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">源站: </label>
                    <div class="layui-input-block cool-auto-complete">
                        <input class="layui-input" name="sourceStaNo" placeholder="请输入源站" style="display: none">
                        <input id="sourceStaNo$" name="sourceStaNo$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="请输入源站" onfocus=this.blur()>
                        <div class="cool-auto-complete-window">
                            <input class="cool-auto-complete-window-input" data-key="basDevpQueryBysourceStaNo" onkeyup="autoLoad(this.getAttribute('data-key'))">
                            <select class="cool-auto-complete-window-select" data-key="basDevpQueryBysourceStaNoSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
                            </select>
                        </div>
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">源库位: </label>
                    <div class="layui-input-block cool-auto-complete">
                        <input class="layui-input" name="sourceLocNo" placeholder="请输入源库位" style="display: none">
                        <input id="sourceLocNo$" name="sourceLocNo$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="请输入源库位" onfocus=this.blur()>
                        <div class="cool-auto-complete-window">
                            <input class="cool-auto-complete-window-input" data-key="locMastQueryBysourceLocNo" onkeyup="autoLoad(this.getAttribute('data-key'))">
                            <select class="cool-auto-complete-window-select" data-key="locMastQueryBysourceLocNoSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
                            </select>
                        </div>
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="locSts" placeholder="请输入">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">拣料(checkBox): </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="picking" placeholder="请输入拣料(checkBox)">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="linkMis" placeholder="请输入">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="onlineYn" placeholder="请输入">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="updMk" placeholder="请输入">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">退出(checkBox): </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="exitMk" placeholder="请输入退出(checkBox)">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="pltType" placeholder="请输入">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">空板(checkBox): </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="emptyMk" placeholder="请输入空板(checkBox)">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">工作时间: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="ioTime" id="ioTime$" placeholder="请输入工作时间">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="ctnType" placeholder="请输入">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="packed" placeholder="请输入">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="oveMk" placeholder="请输入">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="mtnType" placeholder="请输入">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="userNo" placeholder="请输入">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">堆垛机启动时间: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="crnStrTime" id="crnStrTime$" placeholder="请输入堆垛机启动时间">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">堆垛机停止时间: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="crnEndTime" id="crnEndTime$" placeholder="请输入堆垛机停止时间">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">拣料时间: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="plcStrTime" id="plcStrTime$" placeholder="请输入拣料时间">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="crnPosTime" id="crnPosTime$" placeholder="请输入">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="loadTime" placeholder="请输入">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="expTime" placeholder="请输入">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="refWrkno" placeholder="请输入">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="refIotime" id="refIotime$" placeholder="请输入">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">修改人员: </label>
                    <div class="layui-input-block cool-auto-complete">
                        <input class="layui-input" name="modiUser" placeholder="请输入修改人员" style="display: none">
                        <input id="modiUser$" name="modiUser$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="请输入修改人员" onfocus=this.blur()>
                        <div class="cool-auto-complete-window">
                            <input class="cool-auto-complete-window-input" data-key="userQueryBymodiUser" onkeyup="autoLoad(this.getAttribute('data-key'))">
                            <select class="cool-auto-complete-window-select" data-key="userQueryBymodiUserSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
                            </select>
                        </div>
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">修改时间: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="modiTime" id="modiTime$" placeholder="请输入修改时间">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">创建者: </label>
                    <div class="layui-input-block cool-auto-complete">
                        <input class="layui-input" name="appeUser" placeholder="请输入创建者" style="display: none">
                        <input id="appeUser$" name="appeUser$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="请输入创建者" onfocus=this.blur()>
                        <div class="cool-auto-complete-window">
                            <input class="cool-auto-complete-window-input" data-key="userQueryByappeUser" onkeyup="autoLoad(this.getAttribute('data-key'))">
                            <select class="cool-auto-complete-window-select" data-key="userQueryByappeUserSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
                            </select>
                        </div>
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">添加时间: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="appeTime" id="appeTime$" placeholder="请输入添加时间">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="pauseMk" placeholder="请输入">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="errorTime" id="errorTime$" placeholder="请输入">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="errorMemo" placeholder="请输入">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="ctnKind" placeholder="请输入">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="manuType" placeholder="请输入">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="memoM" placeholder="请输入">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="scWeight" placeholder="请输入">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="logMk" placeholder="请输入">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="logErrTime" id="logErrTime$" placeholder="请输入">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="logErrMemo" placeholder="请输入">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">条码: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="barcode" placeholder="请输入条码">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="PdcType" placeholder="请输入">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="ctnNo" placeholder="请输入">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">满板(checkBox): </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="fullPlt" placeholder="请输入满板(checkBox)">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="preHave" placeholder="请输入">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="takeNone" placeholder="请输入">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="lineNumber" placeholder="请输入">
                    </div>
                </div>
             </div>
        </div>
        <hr class="layui-bg-gray">
        <div class="layui-form-item text-right">
            <button class="layui-btn" lay-filter="editSubmit" lay-submit="">保存</button>
            <button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">取消</button>
        </div>
    </form>
</script>
</html>