From 988b84379a5f257fb09fbd80522e4b478c03c4cb Mon Sep 17 00:00:00 2001
From: zyx <zyx123456>
Date: 星期四, 06 七月 2023 17:12:49 +0800
Subject: [PATCH] AGV相关功能
---
src/main/webapp/static/js/agvLocDetl/locDetl.js | 601 +++
src/main/java/com/zy/asrs/service/impl/AgvLocDetlServiceImpl.java | 12
src/main/java/com/zy/asrs/controller/AgvController.java | 7
src/main/java/com/zy/asrs/controller/AgvLocDetlController.java | 82
src/main/java/com/zy/asrs/entity/AgvLocDetl.java | 266 +
src/main/java/com/zy/asrs/entity/AgvWaitPakin.java | 221 +
src/main/webapp/views/agvStoMan/stoQue.html | 86
src/main/webapp/views/agvWaitPakin/waitPakin.html | 68
src/main/webapp/views/agvWrkMastLog/wrkDetlLog.html | 99
src/main/java/com/zy/asrs/service/impl/AgvLockMastServiceImpl.java | 11
src/main/java/com/zy/asrs/service/AgvWrkMastService.java | 7
src/main/java/com/zy/asrs/controller/AgvWaitPakinController.java | 136
src/main/java/com/zy/asrs/service/impl/AgvBasDevpServiceImpl.java | 11
src/main/webapp/static/js/wrkMast/wrkMast.js | 1
src/main/java/com/zy/asrs/controller/AgvBasDevpController.java | 64
src/main/java/com/zy/asrs/service/impl/AgvWrkMastServiceImp.java | 11
src/main/java/com/zy/asrs/service/AgvLockMastService.java | 7
src/main/java/com/zy/asrs/service/impl/AgvWaitPakinServiceImpl.java | 12
src/main/webapp/static/js/agvHandWrkMast/agvHandWrkMast.js | 493 +++
src/main/webapp/views/agvWrkDetlLog/wrkDetlLog_detail.html | 174 +
src/main/webapp/views/agvWaitPakinLog/waitPakinLog_detail.html | 138
src/main/webapp/views/agvWrkCharge/wrkCharge.html | 305 +
src/main/java/com/zy/asrs/entity/AgvBasDevp.java | 320 ++
src/main/webapp/views/agvLocMast/locMast.html | 177 +
src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java | 1189 +++++++
src/main/webapp/views/agvWrkMast/wrkMast.html | 135
src/main/webapp/static/js/agvLocMast/locMast.js | 622 +++
src/main/java/com/zy/common/config/CoolExceptionHandler.java | 9
src/main/java/com/zy/asrs/mapper/AgvWrkMastMapper.java | 9
src/main/webapp/views/agvLocDetl/locDetl.html | 81
src/main/webapp/views/agvWrkDetl/wrkDetl_detail.html | 130
src/main/java/com/zy/asrs/controller/AgvMobileController.java | 42
src/main/webapp/views/agvWrkMastLog/wrkMastLog_detail.html | 196 +
src/main/webapp/views/agvWrkMast/wrkMast_detail.html | 53
src/main/java/com/zy/asrs/service/AgvBasDevpService.java | 11
src/main/webapp/views/agvWaitPakinLog/waitPakinLog.html | 58
src/main/java/com/zy/asrs/mapper/AgvWaitPakinMapper.java | 12
src/main/webapp/views/agvWrkMastLog/wrkMastLog.html | 98
src/main/java/com/zy/asrs/controller/AgvWorkController.java | 32
src/main/java/com/zy/asrs/service/AgvLocDetlService.java | 8
src/main/webapp/static/js/agvBasDevp/basDevp.js | 608 +++
src/main/java/com/zy/asrs/mapper/AgvLockMastMapper.java | 9
src/main/java/com/zy/asrs/service/AgvWorkService.java | 93
src/main/webapp/static/js/pakStore/pakStore.js | 2
src/main/webapp/static/js/agvWaitPakin/waitPakin.js | 512 +++
src/main/webapp/views/agvBasDevp/basDevp_detail.html | 283 +
src/main/webapp/views/agvWrkDetlLog/wrkDetlLog.html | 59
src/main/webapp/views/agvLocDetl/locDetl_detail.html | 168 +
src/main/java/com/zy/asrs/service/impl/AgvMobileServiceImpl.java | 183 +
src/main/java/com/zy/asrs/controller/AgvWrkMastController.java | 34
src/main/webapp/views/agvWrkDetl/wrkDetl.html | 69
src/main/java/com/zy/asrs/entity/AgvLocMast.java | 301 +
src/main/java/com/zy/asrs/mapper/AgvBasDevpMapper.java | 16
src/main/java/com/zy/asrs/service/AgvMobileService.java | 21
src/main/java/com/zy/asrs/service/AgvWaitPakinService.java | 8
src/main/java/com/zy/asrs/mapper/AgvLocDetlMapper.java | 21
src/main/java/com/zy/asrs/controller/AgvLocMastController.java | 123
src/main/webapp/views/agvBasDevp/basDevp.html | 58
src/main/java/com/zy/asrs/entity/AgvWrkMast.java | 100
src/main/webapp/views/agvWaitPakin/waitPakin_detail.html | 132
src/main/webapp/views/agvWrkMast/wrkDetl.html | 91
src/main/resources/application.yml | 2
src/main/webapp/static/js/agvStoMan/stoQue.js | 344 ++
src/main/webapp/views/agvLocMast/locMast_detail.html | 238 +
64 files changed, 9,462 insertions(+), 7 deletions(-)
diff --git a/src/main/java/com/zy/asrs/controller/AgvBasDevpController.java b/src/main/java/com/zy/asrs/controller/AgvBasDevpController.java
new file mode 100644
index 0000000..e0ccebf
--- /dev/null
+++ b/src/main/java/com/zy/asrs/controller/AgvBasDevpController.java
@@ -0,0 +1,64 @@
+package com.zy.asrs.controller;
+
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.core.annotations.ManagerAuth;
+import com.core.common.Cools;
+import com.core.common.DateUtils;
+import com.core.common.R;
+import com.zy.asrs.entity.AgvBasDevp;
+import com.zy.asrs.service.AgvBasDevpService;
+import com.zy.common.web.BaseController;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Date;
+import java.util.Map;
+
+@RestController
+public class AgvBasDevpController extends BaseController {
+
+ @Autowired
+ AgvBasDevpService agvBasDevpService;
+
+ @RequestMapping(value = "/agvBasDevp/list/auth")
+ @ManagerAuth
+ public R list(@RequestParam(defaultValue = "1")Integer curr,
+ @RequestParam(defaultValue = "10")Integer limit,
+ @RequestParam(required = false)String orderByField,
+ @RequestParam(required = false)String orderByType,
+ @RequestParam Map<String, Object> param){
+ excludeTrash(param);
+ EntityWrapper<AgvBasDevp> wrapper = new EntityWrapper<>();
+ convert(param, wrapper);
+ if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));}
+ return R.ok(agvBasDevpService.selectPage(new Page<>(curr, limit), wrapper));
+ }
+
+ @RequestMapping(value = "/agvBasDevp/add/auth")
+ @ManagerAuth(memo = "绔欑偣娣诲姞")
+ public R add(AgvBasDevp agvBasDevp) {
+ agvBasDevp.setModiUser(getUserId());
+ agvBasDevp.setModiTime(new Date());
+ agvBasDevp.setAppeUser(getUserId());
+ agvBasDevp.setAppeTime(new Date());
+ agvBasDevp.setLocSts("O");
+ agvBasDevpService.insert(agvBasDevp);
+ return R.ok();
+ }
+
+ private <T> void convert(Map<String, Object> map, EntityWrapper<T> wrapper){
+ for (Map.Entry<String, Object> entry : map.entrySet()){
+ String val = String.valueOf(entry.getValue());
+ if (val.contains(RANGE_TIME_LINK)){
+ String[] dates = val.split(RANGE_TIME_LINK);
+ wrapper.ge(entry.getKey(), DateUtils.convert(dates[0]));
+ wrapper.le(entry.getKey(), DateUtils.convert(dates[1]));
+ } else {
+ wrapper.like(entry.getKey(), val);
+ }
+ }
+ }
+}
diff --git a/src/main/java/com/zy/asrs/controller/AgvController.java b/src/main/java/com/zy/asrs/controller/AgvController.java
new file mode 100644
index 0000000..2e0178a
--- /dev/null
+++ b/src/main/java/com/zy/asrs/controller/AgvController.java
@@ -0,0 +1,7 @@
+package com.zy.asrs.controller;
+
+/**
+ *
+ */
+public class AgvController {
+}
diff --git a/src/main/java/com/zy/asrs/controller/AgvLocDetlController.java b/src/main/java/com/zy/asrs/controller/AgvLocDetlController.java
new file mode 100644
index 0000000..e0e91fa
--- /dev/null
+++ b/src/main/java/com/zy/asrs/controller/AgvLocDetlController.java
@@ -0,0 +1,82 @@
+package com.zy.asrs.controller;
+
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.core.annotations.ManagerAuth;
+import com.core.common.Cools;
+import com.core.common.DateUtils;
+import com.core.common.R;
+import com.zy.asrs.entity.AgvLocDetl;
+import com.zy.asrs.service.AgvLocDetlService;
+import com.zy.common.web.BaseController;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Map;
+
+@RestController
+public class AgvLocDetlController extends BaseController {
+
+ @Autowired
+ private AgvLocDetlService agvLocDetlService;
+
+ @RequestMapping(value = "/agvLocDetl/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,
+ @RequestParam(required = false)Boolean unreason){
+ if (!Cools.isEmpty(unreason) && unreason) {
+
+ return R.ok(agvLocDetlService.selectPage(new Page<>(curr, limit), new EntityWrapper<AgvLocDetl>()
+ .where(" DATALENGTH( batch ) != 11 or\n" +
+ " batch LIKE '%[a-z]%'")));
+ }
+ param.remove("unreason");
+ String row = "";
+ EntityWrapper<AgvLocDetl> wrapper = new EntityWrapper<>();
+ if (param.get("row") != null) {
+ String chooseRow = (String) param.get("row");
+ if (chooseRow.length() == 1) {
+ row = "0" + chooseRow;
+ param.remove("row");
+ }else {
+ row = chooseRow;
+ param.remove("row");
+ }
+ }
+ excludeTrash(param);
+ convert(param, wrapper);
+ allLike(AgvLocDetl.class, param.keySet(), wrapper, condition);
+ if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));}
+ if (!row.equals("")){
+ wrapper.and()
+ .where("loc_no like '" +row +"%'");
+ }
+
+ return R.ok(agvLocDetlService.selectPage(new Page<>(curr, limit), wrapper));
+ }
+
+ private <T> void convert(Map<String, Object> map, EntityWrapper<T> wrapper){
+ for (Map.Entry<String, Object> entry : map.entrySet()){
+ String val = String.valueOf(entry.getValue());
+ if (val.contains(RANGE_TIME_LINK)){
+ String[] dates = val.split(RANGE_TIME_LINK);
+ wrapper.ge(entry.getKey(), DateUtils.convert(dates[0]));
+ wrapper.le(entry.getKey(), DateUtils.convert(dates[1]));
+ } else {
+ if (entry.getKey().equals("locNo")) {
+ wrapper.eq("loc_no", String.valueOf(entry.getValue()));
+ } else {
+ wrapper.like(entry.getKey(), String.valueOf(entry.getValue()));
+ }
+ }
+ }
+ }
+
+}
diff --git a/src/main/java/com/zy/asrs/controller/AgvLocMastController.java b/src/main/java/com/zy/asrs/controller/AgvLocMastController.java
new file mode 100644
index 0000000..2d4f07c
--- /dev/null
+++ b/src/main/java/com/zy/asrs/controller/AgvLocMastController.java
@@ -0,0 +1,123 @@
+package com.zy.asrs.controller;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.mapper.Wrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.core.annotations.ManagerAuth;
+import com.core.common.BaseRes;
+import com.core.common.Cools;
+import com.core.common.DateUtils;
+import com.core.common.R;
+import com.core.exception.CoolException;
+import com.zy.asrs.entity.*;
+import com.zy.asrs.entity.param.LocMastInitParam;
+import com.zy.asrs.service.AgvLockMastService;
+import com.zy.common.web.BaseController;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+@RestController
+public class AgvLocMastController extends BaseController {
+
+ @Autowired
+ private AgvLockMastService agvLockMastService;
+
+ @RequestMapping(value = "/agvLocMast/list/auth")
+ @ManagerAuth
+ public R list(@RequestParam(defaultValue = "1")Integer curr,
+ @RequestParam(defaultValue = "10")Integer limit,
+ @RequestParam(required = false)String orderByField,
+ @RequestParam(required = false)String orderByType,
+ @RequestParam Map<String, Object> param){
+ excludeTrash(param);
+ EntityWrapper<AgvLocMast> wrapper = new EntityWrapper<>();
+ convert(param, wrapper);
+ if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));}
+ return R.ok(agvLockMastService.selectPage(new Page<>(curr, limit), wrapper.eq("status",0)));
+ }
+
+ @RequestMapping(value = "/avgLocMast/add/auth")
+ @ManagerAuth(memo = "搴撲綅娣诲姞")
+ public R add(AgvLocMast agvLocMast) {
+ agvLocMast.setModiUser(getUserId());
+ agvLocMast.setModiTime(new Date());
+ agvLocMast.setAppeUser(getUserId());
+ agvLocMast.setAppeTime(new Date());
+ agvLockMastService.insert(agvLocMast);
+ return R.ok();
+ }
+
+ @RequestMapping(value = "/agvLocMast/update/auth")
+ @ManagerAuth(memo = "搴撲綅淇敼")
+ @Transactional
+ public R update(LocMast locMast){
+ //to do
+ return R.ok();
+ }
+
+ @RequestMapping(value = "/agvLocMast/delete/auth")
+ @ManagerAuth(memo = "搴撲綅鍒犻櫎")
+ public R delete(@RequestParam String param){
+ List<AgvLocMast> list = JSONArray.parseArray(param, AgvLocMast.class);
+ if (Cools.isEmpty(list)){
+ return R.error();
+ }
+ for (AgvLocMast entity : list){
+ agvLockMastService.delete(new EntityWrapper<>(entity));
+ }
+ return R.ok();
+ }
+
+ @RequestMapping(value = "/agvLocMast/export/auth")
+ @ManagerAuth(memo = "搴撲綅瀵煎嚭")
+ public R export(@RequestBody JSONObject param){
+ List<String> fields = JSONObject.parseArray(param.getJSONArray("fields").toJSONString(), String.class);
+ EntityWrapper<AgvLocMast> wrapper = new EntityWrapper<>();
+ Map<String, Object> map = excludeTrash(param.getJSONObject("locMast"));
+ convert(map, wrapper);
+ List<AgvLocMast> list = agvLockMastService.selectList(wrapper);
+ return R.ok(exportSupport(list, fields));
+ }
+
+ @RequestMapping(value = "/agvLocMast/check/column/auth")
+ @ManagerAuth
+ public R query(@RequestBody JSONObject param) {
+ Wrapper<AgvLocMast> wrapper = new EntityWrapper<AgvLocMast>().eq(humpToLine(String.valueOf(param.get("key"))), param.get("val"));
+ if (null != agvLockMastService.selectOne(wrapper)){
+ return R.parse(BaseRes.REPEAT).add(getComment(AgvLocMast.class, String.valueOf(param.get("key"))));
+ }
+ return R.ok();
+ }
+
+ @RequestMapping(value = "/AgvLocMast/init/auth")
+ @ManagerAuth(memo = "鍒濆鍖栧簱浣�")
+// @Transactional
+ public R init(LocMastInitParam param) {
+ //to do
+
+ return null;
+ }
+
+ private <T> void convert(Map<String, Object> map, EntityWrapper<T> wrapper){
+ for (Map.Entry<String, Object> entry : map.entrySet()){
+ String val = String.valueOf(entry.getValue());
+ if (val.contains(RANGE_TIME_LINK)){
+ String[] dates = val.split(RANGE_TIME_LINK);
+ wrapper.ge(entry.getKey(), DateUtils.convert(dates[0]));
+ wrapper.le(entry.getKey(), DateUtils.convert(dates[1]));
+ } else {
+ wrapper.like(entry.getKey(), val);
+ }
+ }
+ }
+}
diff --git a/src/main/java/com/zy/asrs/controller/AgvMobileController.java b/src/main/java/com/zy/asrs/controller/AgvMobileController.java
new file mode 100644
index 0000000..27d587c
--- /dev/null
+++ b/src/main/java/com/zy/asrs/controller/AgvMobileController.java
@@ -0,0 +1,42 @@
+package com.zy.asrs.controller;
+
+import com.core.common.R;
+import com.zy.asrs.entity.param.CombParam;
+import com.zy.asrs.service.AgvMobileService;
+import com.zy.common.web.BaseController;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Map;
+
+/**
+ * 绉诲姩绔帴鍙f帶鍒跺櫒
+ * Created by vincent on 2020/6/10
+ */
+@RestController
+@RequestMapping("agvMobile")
+public class AgvMobileController extends BaseController {
+
+ @Autowired
+ private AgvMobileService agvMobileService;
+
+ @PostMapping("/comb/auth")
+ public R comb(@RequestBody CombParam combParam){
+ agvMobileService.comb(combParam, 1l);
+ return R.ok("缁勬墭鎴愬姛");
+ }
+
+ @PostMapping("/combBinging/auth")
+ public R combBinding(@RequestBody Map<String,Object> map){
+ String barcode = map.get("barcode").toString();
+ String stationCode = map.get("stationCode").toString();
+ agvMobileService.combBinding(barcode,stationCode);
+ return R.ok("鎵樼洏缁戝畾绔欑偣鎴愬姛");
+ }
+
+
+
+
+
+
+}
diff --git a/src/main/java/com/zy/asrs/controller/AgvWaitPakinController.java b/src/main/java/com/zy/asrs/controller/AgvWaitPakinController.java
new file mode 100644
index 0000000..b74492f
--- /dev/null
+++ b/src/main/java/com/zy/asrs/controller/AgvWaitPakinController.java
@@ -0,0 +1,136 @@
+package com.zy.asrs.controller;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.mapper.Wrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.core.annotations.ManagerAuth;
+import com.core.common.BaseRes;
+import com.core.common.Cools;
+import com.core.common.DateUtils;
+import com.core.common.R;
+import com.zy.asrs.entity.AgvWaitPakin;
+import com.zy.asrs.entity.WaitPakin;
+import com.zy.asrs.service.AgvWaitPakinService;
+import com.zy.asrs.service.WaitPakinService;
+import com.zy.common.web.BaseController;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@RestController
+@RequestMapping("/agv")
+public class AgvWaitPakinController extends BaseController {
+
+ @Autowired
+ private AgvWaitPakinService agvWaitPakinService;
+
+ @RequestMapping(value = "/waitPakin/{id}/auth")
+ @ManagerAuth
+ public R get(@PathVariable("id") String id) {
+ return R.ok(agvWaitPakinService.selectById(String.valueOf(id)));
+ }
+
+ @RequestMapping(value = "/waitPakin/list/auth")
+ @ManagerAuth
+ public R list(@RequestParam(defaultValue = "1")Integer curr,
+ @RequestParam(defaultValue = "10")Integer limit,
+ @RequestParam(required = false)String orderByField,
+ @RequestParam(required = false)String orderByType,
+ @RequestParam Map<String, Object> param){
+ excludeTrash(param);
+ EntityWrapper<AgvWaitPakin> wrapper = new EntityWrapper<>();
+ convert(param, wrapper);
+ if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));}
+ else {
+ wrapper.orderBy("modi_time", false);
+ }
+ return R.ok(agvWaitPakinService.selectPage(new Page<>(curr, limit), wrapper));
+ }
+
+ private void convert(Map<String, Object> map, EntityWrapper wrapper){
+ for (Map.Entry<String, Object> entry : map.entrySet()){
+ String val = String.valueOf(entry.getValue());
+ if (val.contains(RANGE_TIME_LINK)){
+ String[] dates = val.split(RANGE_TIME_LINK);
+ wrapper.ge(entry.getKey(), DateUtils.convert(dates[0]));
+ wrapper.le(entry.getKey(), DateUtils.convert(dates[1]));
+ } else {
+ wrapper.like(entry.getKey(), val);
+ }
+ }
+ }
+
+ @RequestMapping(value = "/waitPakin/add/auth")
+ @ManagerAuth
+ public R add(AgvWaitPakin waitPakin) {
+ agvWaitPakinService.insert(waitPakin);
+ return R.ok();
+ }
+
+ @RequestMapping(value = "/waitPakin/update/auth")
+ @ManagerAuth
+ public R update(AgvWaitPakin waitPakin){
+ if (Cools.isEmpty(waitPakin)){
+ return R.error();
+ }
+ agvWaitPakinService.updateById(waitPakin);
+ return R.ok();
+ }
+
+ @RequestMapping(value = "/waitPakin/delete/auth")
+ @ManagerAuth
+ public R delete(@RequestParam String param){
+ List<AgvWaitPakin> list = JSONArray.parseArray(param, AgvWaitPakin.class);
+ if (Cools.isEmpty(list)){
+ return R.error();
+ }
+ for (AgvWaitPakin entity : list){
+ agvWaitPakinService.delete(new EntityWrapper<>(entity));
+ }
+ return R.ok();
+ }
+
+ @RequestMapping(value = "/waitPakin/export/auth")
+ @ManagerAuth
+ public R export(@RequestBody JSONObject param){
+ List<String> fields = JSONObject.parseArray(param.getJSONArray("fields").toJSONString(), String.class);
+ EntityWrapper<AgvWaitPakin> wrapper = new EntityWrapper<>();
+ Map<String, Object> map = excludeTrash(param.getJSONObject("waitPakin"));
+ convert(map, wrapper);
+ List<AgvWaitPakin> list = agvWaitPakinService.selectList(wrapper);
+ return R.ok(exportSupport(list, fields));
+ }
+
+ @RequestMapping(value = "/waitPakinQuery/auth")
+ @ManagerAuth
+ public R query(String condition) {
+ EntityWrapper<AgvWaitPakin> wrapper = new EntityWrapper<>();
+ wrapper.like("id", condition);
+ Page<AgvWaitPakin> page = agvWaitPakinService.selectPage(new Page<>(0, 10), wrapper);
+ List<Map<String, Object>> result = new ArrayList<>();
+ for (AgvWaitPakin waitPakin : page.getRecords()){
+ Map<String, Object> map = new HashMap<>();
+ map.put("id", waitPakin.getZpallet());
+ map.put("value", waitPakin.getZpallet());
+ result.add(map);
+ }
+ return R.ok(result);
+ }
+
+ @RequestMapping(value = "/waitPakin/check/column/auth")
+ @ManagerAuth
+ public R query(@RequestBody JSONObject param) {
+ Wrapper<AgvWaitPakin> wrapper = new EntityWrapper<AgvWaitPakin>().eq(humpToLine(String.valueOf(param.get("key"))), param.get("val"));
+ if (null != agvWaitPakinService.selectOne(wrapper)){
+ return R.parse(BaseRes.REPEAT).add(getComment(WaitPakin.class, String.valueOf(param.get("key"))));
+ }
+ return R.ok();
+ }
+
+}
diff --git a/src/main/java/com/zy/asrs/controller/AgvWorkController.java b/src/main/java/com/zy/asrs/controller/AgvWorkController.java
new file mode 100644
index 0000000..a648f60
--- /dev/null
+++ b/src/main/java/com/zy/asrs/controller/AgvWorkController.java
@@ -0,0 +1,32 @@
+package com.zy.asrs.controller;
+
+import com.core.annotations.ManagerAuth;
+import com.core.common.R;
+import com.zy.asrs.entity.AgvWaitPakin;
+import com.zy.asrs.entity.WaitPakin;
+import com.zy.asrs.entity.param.FullStoreParam;
+import com.zy.asrs.service.AgvWorkService;
+import com.zy.common.model.StartupDto;
+import com.zy.common.web.BaseController;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+@RestController
+@RequestMapping("agvWork")
+public class AgvWorkController extends BaseController {
+
+ @Autowired
+ private AgvWorkService workService;
+
+ @RequestMapping("/create/waitPain/wrkMast/start")
+ @ManagerAuth(memo = "鐢熸垚浠诲姟")
+ public R createWaitPainWrkMastStart(@RequestBody List<AgvWaitPakin> list) {
+ //StartupDto startupDto = workService.createWaitPainWrkMastStart(list, getUserId());
+ //return R.ok("浠诲姟鍙凤細" + startupDto.getWorkNo() + ";鐩爣搴撲綅锛�" + startupDto.getLocNo());
+ return null;
+ }
+}
diff --git a/src/main/java/com/zy/asrs/controller/AgvWrkMastController.java b/src/main/java/com/zy/asrs/controller/AgvWrkMastController.java
new file mode 100644
index 0000000..2746f4e
--- /dev/null
+++ b/src/main/java/com/zy/asrs/controller/AgvWrkMastController.java
@@ -0,0 +1,34 @@
+package com.zy.asrs.controller;
+
+import com.core.annotations.ManagerAuth;
+import com.core.common.R;
+import com.zy.asrs.service.AgvWrkMastService;
+import com.zy.common.web.BaseController;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Map;
+
+@RestController
+public class AgvWrkMastController extends BaseController {
+
+ @Autowired
+ AgvWrkMastService agvWrkMastService;
+
+ @RequestMapping("/agvWrkMast/list/auth")
+ @ManagerAuth
+ public R list(@RequestParam(defaultValue = "1")Integer curr,
+ @RequestParam(defaultValue = "10")Integer limit,
+ @RequestParam(required = false)String orderByField,
+ @RequestParam(required = false)String orderByType,
+ @RequestParam(required = false)String condition,
+ @RequestParam Map<String, Object> param){
+
+ excludeTrash(param);
+
+
+ return null;
+ }
+}
diff --git a/src/main/java/com/zy/asrs/entity/AgvBasDevp.java b/src/main/java/com/zy/asrs/entity/AgvBasDevp.java
new file mode 100644
index 0000000..f606cd1
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/AgvBasDevp.java
@@ -0,0 +1,320 @@
+package com.zy.asrs.entity;
+
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableName;
+import com.baomidou.mybatisplus.enums.IdType;
+import com.core.common.Cools;
+import com.core.common.SpringUtils;
+import com.zy.asrs.service.BasLocStsService;
+import com.zy.system.entity.User;
+import com.zy.system.service.UserService;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+@Data
+@TableName("agv_bas_devp")
+public class AgvBasDevp implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 缂栧彿
+ */
+ @ApiModelProperty(value= "缂栧彿")
+ @TableId(value = "dev_no", type = IdType.INPUT)
+ @TableField("dev_no")
+ private String devNo;
+
+ /**
+ * 宸ヤ綔绔欑紪鐮�
+ */
+ @ApiModelProperty(value= "缂栧彿")
+ @TableId(value = "station_code", type = IdType.INPUT)
+ @TableField("station_code")
+ private String stationCode;
+
+ /**
+ * 璁惧鎻忚堪
+ */
+ @ApiModelProperty(value= "璁惧鎻忚堪")
+ @TableField("dec_desc")
+ private String decDesc;
+
+ /**
+ * 澶囨敞
+ */
+ @ApiModelProperty(value= "澶囨敞")
+ @TableField("dev_mk")
+ private String devMk;
+
+ /**
+ * 鍙叆
+ */
+ @ApiModelProperty(value= "鍙叆")
+ @TableField("in_enable")
+ private String inEnable;
+
+ /**
+ * 鍙嚭
+ */
+ @ApiModelProperty(value= "鍙嚭")
+ @TableField("out_enable")
+ private String outEnable;
+
+ /**
+ * 鑷姩
+ */
+ @ApiModelProperty(value= "鑷姩")
+ private String autoing;
+
+ /**
+ * 鏈夌墿
+ */
+ @ApiModelProperty(value= "鏈夌墿")
+ private String loading;
+
+ /**
+ * 鑳藉叆
+ */
+ @ApiModelProperty(value= "鑳藉叆")
+ private String canining;
+
+ /**
+ * 鑳藉嚭
+ */
+ @ApiModelProperty(value= "鑳藉嚭")
+ private String canouting;
+
+ @ApiModelProperty(value= "")
+ private String fronting;
+
+ @ApiModelProperty(value= "")
+ private String rearing;
+
+ @ApiModelProperty(value= "")
+ private String uping;
+
+ @ApiModelProperty(value= "")
+ private String downing;
+
+ /**
+ * 闇�姹�1
+ */
+ @ApiModelProperty(value= "璐т綅鐘舵��")
+ private String locSts;
+
+ /**
+ * 鏄惁涓虹紦瀛樿揣鏋�
+ */
+ @ApiModelProperty(value= "鏄惁涓虹紦瀛樿揣鏋�")
+ private String cacheShelves;
+
+ /**
+ * 宸ヤ綔鍙�
+ */
+ @ApiModelProperty(value= "宸ヤ綔鍙�")
+ @TableField("wrk_no")
+ private Integer wrkNo;
+
+ /**
+ * 妤�
+ */
+ @ApiModelProperty(value= "妤�")
+ @TableField("floor")
+ private Integer floor;
+
+ /**
+ * 瀹瑰櫒绫诲瀷
+ */
+ @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")
+ private Date ioTime;
+
+ @ApiModelProperty(value= "")
+ private String area;
+
+ @ApiModelProperty(value= "")
+ @TableField("in_ok")
+ private String inOk;
+
+ @ApiModelProperty(value= "")
+ @TableField("out_ok")
+ private String outOk;
+
+ @ApiModelProperty(value= "楂樹綆绫诲瀷{0:鏈煡,1:浣庡簱浣�,2:楂樺簱浣峿")
+ @TableField("loc_type1")
+ private Short locType1;
+
+ @ApiModelProperty(value= "瀹界獎绫诲瀷{0:鏈煡,1:绐勫簱浣�,2:瀹藉簱浣峿")
+ @TableField("loc_type2")
+ private Short locType2;
+
+ @ApiModelProperty(value= "杞婚噸绫诲瀷{0:鏈煡,1:杞诲簱浣�,2:閲嶅簱浣峿")
+ @TableField("loc_type3")
+ private Short locType3;
+
+ /**
+ * 淇敼浜哄憳
+ */
+ @ApiModelProperty(value= "淇敼浜哄憳")
+ @TableField("modi_user")
+ private Long modiUser;
+
+ /**
+ * 淇敼鏃堕棿
+ */
+ @ApiModelProperty(value= "淇敼鏃堕棿")
+ @TableField("modi_time")
+ private Date modiTime;
+
+ /**
+ * 鍒涘缓鑰�
+ */
+ @ApiModelProperty(value= "鍒涘缓鑰�")
+ @TableField("appe_user")
+ private Long appeUser;
+
+ /**
+ * 娣诲姞鏃堕棿
+ */
+ @ApiModelProperty(value= "娣诲姞鏃堕棿")
+ @TableField("appe_time")
+ private Date appeTime;
+
+ @ApiModelProperty(value= "")
+ @TableField("std_qty")
+ private Double stdQty;
+
+ @ApiModelProperty(value= "")
+ @TableField("min_wt")
+ private Double minWt;
+
+ @ApiModelProperty(value= "")
+ @TableField("max_wt")
+ private Double maxWt;
+
+ /**
+ * 閲嶉噺
+ */
+ @ApiModelProperty(value= "閲嶉噺")
+ @TableField("gross_wt")
+ private Double grossWt;
+
+ @ApiModelProperty(value= "")
+ @TableField("cart_pos")
+ private Integer cartPos;
+
+ public String getLocSts$(){
+ BasLocStsService service = SpringUtils.getBean(BasLocStsService.class);
+ BasLocSts basLocSts = service.selectById(this.locSts);
+ if (!Cools.isEmpty(basLocSts)){
+ return String.valueOf(basLocSts.getLocDesc());
+ }
+ 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 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.getUsername());
+ }
+ return null;
+ }
+
+ public String getModiTime$(){
+ if (Cools.isEmpty(this.modiTime)){
+ return "";
+ }
+ return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.modiTime);
+ }
+
+ public String getAppeUser$(){
+ UserService service = SpringUtils.getBean(UserService.class);
+ User user = service.selectById(this.appeUser);
+ if (!Cools.isEmpty(user)){
+ return String.valueOf(user.getUsername());
+ }
+ return null;
+ }
+
+ public String getAppeTime$(){
+ if (Cools.isEmpty(this.appeTime)){
+ return "";
+ }
+ return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.appeTime);
+ }
+
+}
diff --git a/src/main/java/com/zy/asrs/entity/AgvLocDetl.java b/src/main/java/com/zy/asrs/entity/AgvLocDetl.java
new file mode 100644
index 0000000..1ea03d2
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/AgvLocDetl.java
@@ -0,0 +1,266 @@
+package com.zy.asrs.entity;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.annotations.TableName;
+import com.core.common.Cools;
+import com.core.common.SpringUtils;
+import com.zy.asrs.service.LocMastService;
+import com.zy.common.utils.Synchro;
+import com.zy.system.entity.User;
+import com.zy.system.service.UserService;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+@Data
+@TableName("agv_loc_detl")
+@ExcelIgnoreUnannotated
+public class AgvLocDetl implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty(value= "搴撲綅鍙�")
+ @TableField("loc_no")
+ private String locNo;
+
+ @ApiModelProperty(value= "鎵樼洏鏉$爜")
+ private String zpallet;
+
+ @ApiModelProperty(value= "鏁伴噺")
+ @ExcelProperty("鏁伴噺")
+ private Double anfme;
+
+ @ApiModelProperty(value= "鐗╂枡鍙�")
+ @ExcelProperty("鐗╂枡鍙�")
+ private String matnr;
+
+ @ApiModelProperty(value= "鐗╂枡鍙�")
+ @ExcelProperty("鐗╂枡鍙�")
+ private String maktx;
+
+ @ApiModelProperty(value= "搴忓垪鐮�")
+ @ExcelProperty("搴忓垪鐮�")
+ private String batch;
+
+ @ApiModelProperty(value= "鍗曟嵁缂栧彿")
+ @ExcelProperty("鍗曟嵁缂栧彿")
+ @TableField("order_no")
+ private String orderNo;
+
+ @ApiModelProperty(value= "瑙勬牸")
+ private String specs;
+
+ @ApiModelProperty(value= "鎵规")
+ private String model;
+
+ @ApiModelProperty(value= "棰滆壊")
+ private String color;
+
+ @ApiModelProperty(value= "鍝佺墝")
+ private String brand;
+
+ @ApiModelProperty(value= "鍗曚綅")
+ private String unit;
+
+ @ApiModelProperty(value= "鍗曚环")
+ private Double price;
+
+ @ApiModelProperty(value= "sku")
+ private String sku;
+
+ @ApiModelProperty(value= "鍖呮暟")
+ private Double units;
+
+ @ApiModelProperty(value= "鏉$爜")
+ private String barcode;
+
+ @ApiModelProperty(value= "鐗╂枡鐘舵��")
+ private String origin;
+
+ @ApiModelProperty(value= "鍘傚")
+ private String manu;
+
+ @ApiModelProperty(value= "鍗曟嵁鏃堕棿")
+ @TableField("manu_date")
+ private String manuDate;
+
+ @ApiModelProperty(value= "鍝侀」鏁�")
+ @TableField("item_num")
+ private String itemNum;
+
+ @ApiModelProperty(value= "瀹夊叏搴撳瓨閲�")
+ @TableField("safe_qty")
+ private Double safeQty;
+
+ @ApiModelProperty(value= "閲嶉噺")
+ private Double weight;
+
+ @ApiModelProperty(value= "闀垮害")
+ private Double length;
+
+ @ApiModelProperty(value= "浣撶Н")
+ private Double volume;
+
+ @ApiModelProperty(value= "涓夋柟缂栫爜")
+ @TableField("three_code")
+ private String threeCode;
+
+ @ApiModelProperty(value= "渚涘簲鍟�")
+ private String supp;
+
+ @ApiModelProperty(value= "渚涘簲鍟嗙紪鐮�")
+ @TableField("supp_code")
+ private String suppCode;
+
+ @ApiModelProperty(value= "鏄惁鎵规 1: 鏄� 0: 鍚� ")
+ @TableField("be_batch")
+ private Integer beBatch;
+
+ @ApiModelProperty(value= "淇濊川鏈�")
+ @TableField("dead_time")
+ private String deadTime;
+
+ @ApiModelProperty(value= "棰勮澶╂暟")
+ @TableField("dead_warn")
+ private Integer deadWarn;
+
+ @ApiModelProperty(value= "鍒惰喘 1: 鍒堕�� 2: 閲囪喘 3: 澶栧崗 ")
+ private Integer source;
+
+ @ApiModelProperty(value= "瑕佹眰妫�楠� 1: 鏄� 0: 鍚� ")
+ private Integer inspect;
+
+ @ApiModelProperty(value= "鍗遍櫓鍝� 1: 鏄� 0: 鍚� ")
+ private Integer danger;
+
+ @ApiModelProperty(value= "淇敼浜哄憳")
+ @TableField("modi_user")
+ private Long modiUser;
+
+ @ApiModelProperty(value= "淇敼鏃堕棿")
+ @TableField("modi_time")
+ private Date modiTime;
+
+ @ApiModelProperty(value= "鍒涘缓鑰�")
+ @TableField("appe_user")
+ private Long appeUser;
+
+ @ApiModelProperty(value= "娣诲姞鏃堕棿")
+ @TableField("appe_time")
+ private Date appeTime;
+
+ @ApiModelProperty(value= "澶囨敞")
+ private String memo;
+
+ @TableField("stock_freeze")
+ @ApiModelProperty(value= "搴撳瓨鍐荤粨{1:姝e父,0:鍐荤粨}")
+ private Integer stockFreeze;
+
+ 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 getBeBatch$(){
+ if (null == this.beBatch){ return null; }
+ switch (this.beBatch){
+ case 1:
+ return "鏄�";
+ case 0:
+ return "鍚�";
+ default:
+ return String.valueOf(this.beBatch);
+ }
+ }
+
+ public String getSource$(){
+ if (null == this.source){ return null; }
+ switch (this.source){
+ case 1:
+ return "鍒堕��";
+ case 2:
+ return "閲囪喘";
+ case 3:
+ return "澶栧崗";
+ default:
+ return String.valueOf(this.source);
+ }
+ }
+
+ public String getInspect$(){
+ if (null == this.inspect){ return null; }
+ switch (this.inspect){
+ case 1:
+ return "鏄�";
+ case 0:
+ return "鍚�";
+ default:
+ return String.valueOf(this.inspect);
+ }
+ }
+
+ public String getDanger$(){
+ if (null == this.danger){ return null; }
+ switch (this.danger){
+ case 1:
+ return "鏄�";
+ case 0:
+ return "鍚�";
+ default:
+ return String.valueOf(this.danger);
+ }
+ }
+
+ public String getModiUser$(){
+ UserService service = SpringUtils.getBean(UserService.class);
+ User user = service.selectById(this.modiUser);
+ if (!Cools.isEmpty(user)){
+ return String.valueOf(user.getUsername());
+ }
+ return null;
+ }
+
+ public String getModiTime$(){
+ if (Cools.isEmpty(this.modiTime)){
+ return "";
+ }
+ return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.modiTime);
+ }
+
+ public String getAppeUser$(){
+ UserService service = SpringUtils.getBean(UserService.class);
+ User user = service.selectById(this.appeUser);
+ if (!Cools.isEmpty(user)){
+ return String.valueOf(user.getUsername());
+ }
+ return null;
+ }
+
+ public String getAppeTime$(){
+ if (Cools.isEmpty(this.appeTime)){
+ return "";
+ }
+ return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.appeTime);
+ }
+
+ public void sync(Object source) {
+ Synchro.Copy(source, this);
+ }
+
+ public String getStockFreeze$() {
+ if (Cools.isEmpty(this.stockFreeze)){
+ return "";
+ }
+ return this.stockFreeze == 1 ? "姝e父" : "鍐荤粨";
+ }
+
+}
diff --git a/src/main/java/com/zy/asrs/entity/AgvLocMast.java b/src/main/java/com/zy/asrs/entity/AgvLocMast.java
new file mode 100644
index 0000000..f8f9807
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/AgvLocMast.java
@@ -0,0 +1,301 @@
+package com.zy.asrs.entity;
+
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableName;
+import com.baomidou.mybatisplus.enums.IdType;
+import com.core.common.Cools;
+import com.core.common.SpringUtils;
+import com.zy.asrs.entity.BasLocSts;
+import com.zy.asrs.entity.BasWhs;
+import com.zy.asrs.service.BasLocStsService;
+import com.zy.asrs.service.BasWhsService;
+import com.zy.system.entity.User;
+import com.zy.system.service.UserService;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+@Data
+@TableName("agv_loc_mast")
+public class AgvLocMast implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 搴撲綅鍙�
+ */
+ @ApiModelProperty(value= "搴撲綅鍙�")
+ @TableId(value = "loc_no", type = IdType.INPUT)
+ @TableField("loc_no")
+ private String locNo;
+
+ /**
+ * 搴撲綅绫诲瀷
+ */
+ @ApiModelProperty(value= "搴撲綅绫诲瀷")
+ @TableField("whs_type")
+ private Long whsType;
+
+ @ApiModelProperty(value= "")
+ @TableField("plt_type")
+ private Integer pltType;
+
+ @ApiModelProperty(value= "")
+ @TableField("ctn_type")
+ private Integer ctnType;
+
+ @ApiModelProperty(value= "搴撲綅鐘舵��")
+ @TableField("loc_sts")
+ private String locSts;
+
+ @ApiModelProperty(value= "")
+ @TableField("sheet_no")
+ private String sheetNo;
+
+ /**
+ * 鎺�
+ */
+ @ApiModelProperty(value= "鎺�")
+ private Integer row1;
+
+ /**
+ * 鍒�
+ */
+ @ApiModelProperty(value= "鍒�")
+ private Integer bay1;
+
+ /**
+ * 灞�
+ */
+ @ApiModelProperty(value= "灞�")
+ private Integer lev1;
+
+ /**
+ * 妤�
+ */
+ @ApiModelProperty(value= "灞�")
+ private Integer floor;
+
+ /**
+ * 婊℃澘
+ */
+ @ApiModelProperty(value= "婊℃澘")
+ @TableField("full_plt")
+ private String fullPlt;
+
+ @ApiModelProperty(value= "")
+ @TableField("loc_type")
+ private String locType;
+
+ @ApiModelProperty(value= "楂樹綆绫诲瀷{0:鏈煡,1:浣庡簱浣�,2:楂樺簱浣峿")
+ @TableField("loc_type1")
+ private Short locType1;
+
+ @ApiModelProperty(value= "瀹界獎绫诲瀷{0:鏈煡,1:绐勫簱浣�,2:瀹藉簱浣峿")
+ @TableField("loc_type2")
+ private Short locType2;
+
+ @ApiModelProperty(value= "杞婚噸绫诲瀷{0:鏈煡,1:杞诲簱浣�,2:閲嶅簱浣峿")
+ @TableField("loc_type3")
+ private Short locType3;
+
+ @ApiModelProperty(value= "")
+ @TableField("out_enable")
+ private String outEnable;
+
+ @ApiModelProperty(value= "")
+ @TableField("io_time")
+ private Date ioTime;
+
+ @ApiModelProperty(value= "")
+ @TableField("first_time")
+ private Date firstTime;
+
+ /**
+ * 淇敼浜哄憳
+ */
+ @ApiModelProperty(value= "淇敼浜哄憳")
+ @TableField("modi_user")
+ private Long modiUser;
+
+ /**
+ * 淇敼鏃堕棿
+ */
+ @ApiModelProperty(value= "淇敼鏃堕棿")
+ @TableField("modi_time")
+ private Date modiTime;
+
+ /**
+ * 鍒涘缓鑰�
+ */
+ @ApiModelProperty(value= "鍒涘缓鑰�")
+ @TableField("appe_user")
+ private Long appeUser;
+
+ /**
+ * 娣诲姞鏃堕棿
+ */
+ @ApiModelProperty(value= "娣诲姞鏃堕棿")
+ @TableField("appe_time")
+ private Date appeTime;
+
+ @ApiModelProperty(value= "")
+ @TableField("error_time")
+ private Date errorTime;
+
+ @ApiModelProperty(value= "")
+ @TableField("error_memo")
+ private String errorMemo;
+
+ @ApiModelProperty(value= "")
+ @TableField("ctn_kind")
+ private Integer ctnKind;
+
+ @ApiModelProperty(value= "")
+ @TableField("sc_weight")
+ private Double scWeight;
+
+ @ApiModelProperty(value= "")
+ @TableField("inv_wh")
+ private String invWh;
+
+ @ApiModelProperty(value= "")
+ private String mk;
+
+ @ApiModelProperty(value= "")
+ private String barcode;
+
+ @ApiModelProperty(value= "")
+ @TableField("Pdc_type")
+ private String PdcType;
+
+ @ApiModelProperty(value= "")
+ @TableField("ctn_no")
+ private String ctnNo;
+
+ @ApiModelProperty(value= "")
+ @TableField("qr_code_value")
+ private String qrCodeValue;
+
+ @ApiModelProperty(value= "")
+ private String status;
+
+
+ public String getWhsType$(){
+ BasWhsService service = SpringUtils.getBean(BasWhsService.class);
+ BasWhs basWhs = service.selectById(this.whsType);
+ if (!Cools.isEmpty(basWhs)){
+ return String.valueOf(basWhs.getWhsDesc());
+ }
+ return null;
+ }
+
+ public String getLocSts$(){
+ BasLocStsService service = SpringUtils.getBean(BasLocStsService.class);
+ BasLocSts basLocSts = service.selectById(this.locSts);
+ if (!Cools.isEmpty(basLocSts)){
+ return String.valueOf(basLocSts.getLocDesc());
+ }
+ 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 getFirstTime$(){
+ if (Cools.isEmpty(this.firstTime)){
+ return "";
+ }
+ return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.firstTime);
+ }
+
+ 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.getUsername());
+ }
+ return null;
+ }
+
+ public String getModiTime$(){
+ if (Cools.isEmpty(this.modiTime)){
+ return "";
+ }
+ return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.modiTime);
+ }
+
+ public String getAppeUser$(){
+ UserService service = SpringUtils.getBean(UserService.class);
+ User user = service.selectById(this.appeUser);
+ if (!Cools.isEmpty(user)){
+ return String.valueOf(user.getUsername());
+ }
+ return null;
+ }
+
+ public String getAppeTime$(){
+ if (Cools.isEmpty(this.appeTime)){
+ return "";
+ }
+ return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.appeTime);
+ }
+
+ public String getErrorTime$(){
+ if (Cools.isEmpty(this.errorTime)){
+ return "";
+ }
+ return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.errorTime);
+ }
+
+}
diff --git a/src/main/java/com/zy/asrs/entity/AgvWaitPakin.java b/src/main/java/com/zy/asrs/entity/AgvWaitPakin.java
new file mode 100644
index 0000000..2dc0a4e
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/AgvWaitPakin.java
@@ -0,0 +1,221 @@
+package com.zy.asrs.entity;
+
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.annotations.TableName;
+import com.core.common.Cools;
+import com.zy.common.utils.Synchro;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+@Data
+@TableName("agv_cust_wait_pakin")
+public class AgvWaitPakin implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty(value= "鎵樼洏鏉$爜")
+ private String zpallet;
+
+ @ApiModelProperty(value= "鏁伴噺")
+ private Double anfme;
+
+ @ApiModelProperty(value= "搴撲綅鍙�")
+ @TableField("loc_no")
+ private String locNo;
+
+ @ApiModelProperty(value= "鐗╂枡鍙�")
+ private String matnr;
+
+ @ApiModelProperty(value= "鐗╂枡鍙�")
+ private String maktx;
+
+ @ApiModelProperty(value= "搴忓垪鐮�")
+ private String batch;
+
+ @ApiModelProperty(value= "鍗曟嵁缂栧彿")
+ @TableField("order_no")
+ private String orderNo;
+
+ @ApiModelProperty(value= "瑙勬牸")
+ private String specs;
+
+ @ApiModelProperty(value= "鎵规")
+ private String model;
+
+ @ApiModelProperty(value= "棰滆壊")
+ private String color;
+
+ @ApiModelProperty(value= "鍝佺墝")
+ private String brand;
+
+ @ApiModelProperty(value= "鍗曚綅")
+ private String unit;
+
+ @ApiModelProperty(value= "鍗曚环")
+ private Double price;
+
+ @ApiModelProperty(value= "sku")
+ private String sku;
+
+ @ApiModelProperty(value= "鍖呮暟")
+ private Double units;
+
+ @ApiModelProperty(value= "鏉$爜")
+ private String barcode;
+
+ @ApiModelProperty(value= "鐗╂枡鐘舵��")
+ private String origin;
+
+ @ApiModelProperty(value= "鍘傚")
+ private String manu;
+
+ @ApiModelProperty(value= "鍗曟嵁鏃堕棿")
+ @TableField("manu_date")
+ private String manuDate;
+
+ @ApiModelProperty(value= "鍝侀」鏁�")
+ @TableField("item_num")
+ private String itemNum;
+
+ @ApiModelProperty(value= "瀹夊叏搴撳瓨閲�")
+ @TableField("safe_qty")
+ private Double safeQty;
+
+ @ApiModelProperty(value= "閲嶉噺")
+ private Double weight;
+
+ @ApiModelProperty(value= "闀垮害")
+ private Double length;
+
+ @ApiModelProperty(value= "浣撶Н")
+ private Double volume;
+
+ @ApiModelProperty(value= "涓夋柟缂栫爜")
+ @TableField("three_code")
+ private String threeCode;
+
+ @ApiModelProperty(value= "渚涘簲鍟�")
+ private String supp;
+
+ @ApiModelProperty(value= "渚涘簲鍟嗙紪鐮�")
+ @TableField("supp_code")
+ private String suppCode;
+
+ @ApiModelProperty(value= "鏄惁鎵规 1: 鏄� 0: 鍚� ")
+ @TableField("be_batch")
+ private Integer beBatch;
+
+ @ApiModelProperty(value= "淇濊川鏈�")
+ @TableField("dead_time")
+ private String deadTime;
+
+ @ApiModelProperty(value= "棰勮澶╂暟")
+ @TableField("dead_warn")
+ private Integer deadWarn;
+
+ @ApiModelProperty(value= "鍒惰喘 1: 鍒堕�� 2: 閲囪喘 3: 澶栧崗 ")
+ private Integer source;
+
+ @ApiModelProperty(value= "瑕佹眰妫�楠� 1: 鏄� 0: 鍚� ")
+ private Integer inspect;
+
+ @ApiModelProperty(value= "鍗遍櫓鍝� 1: 鏄� 0: 鍚� ")
+ private Integer danger;
+
+ @ApiModelProperty(value= "鐘舵��")
+ private String status;
+
+ @ApiModelProperty(value= "鍏ュ嚭鐘舵��")
+ @TableField("io_status")
+ private String ioStatus;
+
+ @ApiModelProperty(value= "淇敼鏃堕棿")
+ @TableField("modi_time")
+ private Date modiTime;
+
+ @ApiModelProperty(value= "淇敼浜哄憳")
+ @TableField("modi_user")
+ private Long modiUser;
+
+ @ApiModelProperty(value= "娣诲姞鏃堕棿")
+ @TableField("appe_time")
+ private Date appeTime;
+
+ @ApiModelProperty(value= "鍒涘缓鑰�")
+ @TableField("appe_user")
+ private Long appeUser;
+
+ @ApiModelProperty(value= "澶囨敞")
+ private String memo;
+
+ public String getBeBatch$(){
+ if (null == this.beBatch){ return null; }
+ switch (this.beBatch){
+ case 1:
+ return "鏄�";
+ case 0:
+ return "鍚�";
+ default:
+ return String.valueOf(this.beBatch);
+ }
+ }
+
+ public String getSource$(){
+ if (null == this.source){ return null; }
+ switch (this.source){
+ case 1:
+ return "鍒堕��";
+ case 2:
+ return "閲囪喘";
+ case 3:
+ return "澶栧崗";
+ default:
+ return String.valueOf(this.source);
+ }
+ }
+
+ public String getInspect$(){
+ if (null == this.inspect){ return null; }
+ switch (this.inspect){
+ case 1:
+ return "鏄�";
+ case 0:
+ return "鍚�";
+ default:
+ return String.valueOf(this.inspect);
+ }
+ }
+
+ public String getDanger$(){
+ if (null == this.danger){ return null; }
+ switch (this.danger){
+ case 1:
+ return "鏄�";
+ case 0:
+ return "鍚�";
+ default:
+ return String.valueOf(this.danger);
+ }
+ }
+
+ public String getModiTime$(){
+ if (Cools.isEmpty(this.modiTime)){
+ return "";
+ }
+ return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.modiTime);
+ }
+
+ public String getAppeTime$(){
+ if (Cools.isEmpty(this.appeTime)){
+ return "";
+ }
+ return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.appeTime);
+ }
+
+ public void sync(Object source) {
+ Synchro.Copy(source, this);
+ }
+}
diff --git a/src/main/java/com/zy/asrs/entity/AgvWrkMast.java b/src/main/java/com/zy/asrs/entity/AgvWrkMast.java
new file mode 100644
index 0000000..3cdd5bb
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/AgvWrkMast.java
@@ -0,0 +1,100 @@
+package com.zy.asrs.entity;
+
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableName;
+import com.baomidou.mybatisplus.enums.IdType;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+@Data
+@TableName("agv_wrk_mast")
+public class AgvWrkMast implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 宸ヤ綔鍙�
+ */
+ @ApiModelProperty(value= "宸ヤ綔鍙�")
+ @TableId(value = "wrk_no", type = IdType.INPUT)
+ @TableField("wrk_no")
+ private Integer wrkNo;
+
+ /**
+ * 宸ヤ綔鐘舵��
+ */
+ @ApiModelProperty(value= "宸ヤ綔鐘舵��")
+ @TableField("wrk_sts")
+ private Long wrkSts;
+
+ /**
+ * 鍏ュ嚭搴撶被鍨�
+ */
+ @ApiModelProperty(value= "鍏ュ嚭搴撶被鍨�")
+ @TableField("io_type")
+ private Integer ioType;
+
+ /**
+ * 浼樺厛绾�
+ */
+ @ApiModelProperty(value= "浼樺厛绾�")
+ @TableField("io_pri")
+ private Double ioPri;
+
+ /**
+ * 锛�
+ */
+ @ApiModelProperty(value= "")
+ @TableField("wrk_date")
+ private Date wrkDate;
+
+ /**
+ * 鐩爣搴撲綅
+ */
+ @ApiModelProperty(value= "鐩爣搴撲綅")
+ @TableField("loc_no")
+ private String locNo;
+
+ /**
+ * 鐩爣绔�
+ */
+ @ApiModelProperty(value= "鐩爣绔�")
+ @TableField("sta_no")
+ private Integer staNo;
+
+ /**
+ * 婧愮珯
+ */
+ @ApiModelProperty(value= "婧愮珯")
+ @TableField("source_sta_no")
+ private Integer sourceStaNo;
+
+ /**
+ * 婧愬簱浣�
+ */
+ @ApiModelProperty(value= "婧愬簱浣�")
+ @TableField("source_loc_no")
+ private String sourceLocNo;
+
+ /**
+ * 宸ヤ綔鏃堕棿
+ */
+ @ApiModelProperty(value= "宸ヤ綔鏃堕棿")
+ @TableField("io_time")
+ private Date ioTime;
+
+ /**
+ * 澶囨敞
+ */
+ @ApiModelProperty(value= "澶囨敞")
+ private String memo;
+
+ /**
+ * 鏉$爜
+ */
+ @ApiModelProperty(value= "鏉$爜")
+ private String barcode;
+}
diff --git a/src/main/java/com/zy/asrs/mapper/AgvBasDevpMapper.java b/src/main/java/com/zy/asrs/mapper/AgvBasDevpMapper.java
new file mode 100644
index 0000000..336a9e6
--- /dev/null
+++ b/src/main/java/com/zy/asrs/mapper/AgvBasDevpMapper.java
@@ -0,0 +1,16 @@
+package com.zy.asrs.mapper;
+
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import com.zy.asrs.entity.AgvBasDevp;
+import com.zy.asrs.entity.BasDevp;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+@Mapper
+@Repository
+public interface AgvBasDevpMapper extends BaseMapper<AgvBasDevp> {
+
+}
diff --git a/src/main/java/com/zy/asrs/mapper/AgvLocDetlMapper.java b/src/main/java/com/zy/asrs/mapper/AgvLocDetlMapper.java
new file mode 100644
index 0000000..beef7e1
--- /dev/null
+++ b/src/main/java/com/zy/asrs/mapper/AgvLocDetlMapper.java
@@ -0,0 +1,21 @@
+package com.zy.asrs.mapper;
+
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import com.zy.asrs.entity.AgvLocDetl;
+import com.zy.asrs.entity.LocDetl;
+import com.zy.asrs.entity.result.StockVo;
+import com.zy.common.model.QueryStockPreDo;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+import java.util.Map;
+
+@Mapper
+@Repository
+public interface AgvLocDetlMapper extends BaseMapper<AgvLocDetl> {
+
+}
diff --git a/src/main/java/com/zy/asrs/mapper/AgvLockMastMapper.java b/src/main/java/com/zy/asrs/mapper/AgvLockMastMapper.java
new file mode 100644
index 0000000..7174ffe
--- /dev/null
+++ b/src/main/java/com/zy/asrs/mapper/AgvLockMastMapper.java
@@ -0,0 +1,9 @@
+package com.zy.asrs.mapper;
+
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import com.zy.asrs.entity.AgvLocMast;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface AgvLockMastMapper extends BaseMapper<AgvLocMast>{
+}
diff --git a/src/main/java/com/zy/asrs/mapper/AgvWaitPakinMapper.java b/src/main/java/com/zy/asrs/mapper/AgvWaitPakinMapper.java
new file mode 100644
index 0000000..56b2ec0
--- /dev/null
+++ b/src/main/java/com/zy/asrs/mapper/AgvWaitPakinMapper.java
@@ -0,0 +1,12 @@
+package com.zy.asrs.mapper;
+
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import com.zy.asrs.entity.AgvWaitPakin;
+import org.apache.ibatis.annotations.Mapper;
+import org.springframework.stereotype.Repository;
+
+@Mapper
+@Repository
+public interface AgvWaitPakinMapper extends BaseMapper<AgvWaitPakin> {
+
+}
diff --git a/src/main/java/com/zy/asrs/mapper/AgvWrkMastMapper.java b/src/main/java/com/zy/asrs/mapper/AgvWrkMastMapper.java
new file mode 100644
index 0000000..8894210
--- /dev/null
+++ b/src/main/java/com/zy/asrs/mapper/AgvWrkMastMapper.java
@@ -0,0 +1,9 @@
+package com.zy.asrs.mapper;
+
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import com.zy.asrs.entity.AgvWrkMast;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface AgvWrkMastMapper extends BaseMapper<AgvWrkMast> {
+}
diff --git a/src/main/java/com/zy/asrs/service/AgvBasDevpService.java b/src/main/java/com/zy/asrs/service/AgvBasDevpService.java
new file mode 100644
index 0000000..24803eb
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/AgvBasDevpService.java
@@ -0,0 +1,11 @@
+package com.zy.asrs.service;
+
+import com.baomidou.mybatisplus.service.IService;
+import com.zy.asrs.entity.AgvBasDevp;
+import com.zy.asrs.entity.BasDevp;
+
+import java.util.List;
+
+public interface AgvBasDevpService extends IService<AgvBasDevp> {
+
+}
diff --git a/src/main/java/com/zy/asrs/service/AgvLocDetlService.java b/src/main/java/com/zy/asrs/service/AgvLocDetlService.java
new file mode 100644
index 0000000..23393a3
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/AgvLocDetlService.java
@@ -0,0 +1,8 @@
+package com.zy.asrs.service;
+
+import com.baomidou.mybatisplus.service.IService;
+import com.zy.asrs.entity.AgvLocDetl;
+
+public interface AgvLocDetlService extends IService<AgvLocDetl> {
+
+}
diff --git a/src/main/java/com/zy/asrs/service/AgvLockMastService.java b/src/main/java/com/zy/asrs/service/AgvLockMastService.java
new file mode 100644
index 0000000..bc70d55
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/AgvLockMastService.java
@@ -0,0 +1,7 @@
+package com.zy.asrs.service;
+
+import com.baomidou.mybatisplus.service.IService;
+import com.zy.asrs.entity.AgvLocMast;
+
+public interface AgvLockMastService extends IService<AgvLocMast> {
+}
diff --git a/src/main/java/com/zy/asrs/service/AgvMobileService.java b/src/main/java/com/zy/asrs/service/AgvMobileService.java
new file mode 100644
index 0000000..a53480b
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/AgvMobileService.java
@@ -0,0 +1,21 @@
+package com.zy.asrs.service;
+
+import com.zy.asrs.entity.param.CombParam;
+import com.zy.asrs.entity.param.MobileAdjustParam;
+
+public interface AgvMobileService {
+
+ /**
+ * 缁勬墭
+ */
+ void comb(CombParam param, Long userId);
+
+ /**
+ * 鐩樼偣
+ */
+ void adjust(MobileAdjustParam param, Long userId);
+
+ void packComb(CombParam param, Long userId);
+
+ void combBinding(String barcode, String stationCode);
+}
diff --git a/src/main/java/com/zy/asrs/service/AgvWaitPakinService.java b/src/main/java/com/zy/asrs/service/AgvWaitPakinService.java
new file mode 100644
index 0000000..5bca9f1
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/AgvWaitPakinService.java
@@ -0,0 +1,8 @@
+package com.zy.asrs.service;
+
+import com.baomidou.mybatisplus.service.IService;
+import com.zy.asrs.entity.AgvWaitPakin;
+
+public interface AgvWaitPakinService extends IService<AgvWaitPakin> {
+
+}
diff --git a/src/main/java/com/zy/asrs/service/AgvWorkService.java b/src/main/java/com/zy/asrs/service/AgvWorkService.java
new file mode 100644
index 0000000..aa6197f
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/AgvWorkService.java
@@ -0,0 +1,93 @@
+package com.zy.asrs.service;
+
+import com.zy.asrs.entity.AgvWaitPakin;
+import com.zy.asrs.entity.BasDevp;
+import com.zy.asrs.entity.WaitPakin;
+import com.zy.asrs.entity.param.EmptyPlateOutParam;
+import com.zy.asrs.entity.param.FullStoreParam;
+import com.zy.asrs.entity.param.LocDetlAdjustParam;
+import com.zy.asrs.entity.param.StockOutParam;
+import com.zy.common.model.LocDetlDto;
+import com.zy.common.model.StartupDto;
+import com.zy.common.model.TaskDto;
+import com.zy.common.model.enums.IoWorkType;
+
+import java.util.List;
+
+public interface AgvWorkService {
+
+ /**
+ * 鍏ㄦ澘鍏ュ簱
+ * @return 搴撲綅鍙�
+ */
+ String startupFullPutStore(FullStoreParam param, Long userId);
+
+ /**
+ * 鍑哄簱浣滀笟
+ */
+ void startupFullTakeStore(StockOutParam param, Long userId);
+
+ /**
+ * 鍑哄簱浣滀笟
+ */
+ void stockOut(BasDevp staNo, List<LocDetlDto> locDetls, IoWorkType ioWorkType, Long userId);
+
+ void stockOut(BasDevp staNo, TaskDto taskDto, Long userId);
+
+ /**
+ * 绌烘澘鍏ュ簱
+ * @return 搴撲綅鍙�
+ */
+ String emptyPlateIn(Integer sourceStaNo, Long userId);
+
+ /**
+ * 绌烘澘鍑哄簱
+ */
+ void emptyPlateOut(EmptyPlateOutParam param, Long userId);
+
+ /**
+ * 鐩樼偣鍑哄簱
+ */
+ void locCheckOut(StockOutParam param, Long userId);
+
+ /**
+ * 搴撲綅绉昏浆
+ */
+ void locMove(String sourceLocNo, String locNo, Long userId);
+
+ /**
+ * 鎵嬪姩瀹屾垚宸ヤ綔妗�
+ */
+ void completeWrkMast(String workNo, Long userId);
+
+ /**
+ * 搴撳瓨鏄庣粏璋冩暣
+ */
+ void adjustLocDetl(LocDetlAdjustParam param, Long userId);
+
+ /**
+ * 鎵嬪姩鍙栨秷宸ヤ綔妗�
+ */
+ void cancelWrkMast(String workNo, Long userId);
+
+ /**
+ * 鎵嬪姩鎷f枡鍏ュ簱宸ヤ綔妗�
+ */
+ void pickWrkMast(String workNo, Long userId);
+
+ /**
+ * 閫氱煡妗f墜鍔ㄧ敓鎴愪换鍔�
+ */
+ StartupDto createWaitPainWrkMastStart(List<AgvWaitPakin> list, Long userId);
+
+ /**
+ * 閫氱煡妗f墜鍔ㄧ敓鎴愪换鍔�
+ */
+ String dealPreHaveStart(Integer wrkNo, Long userId);
+
+ /**
+ * 绌挎搴撶Щ杞�
+ */
+ void shuttleTransfer(List<String> locNos);
+
+}
diff --git a/src/main/java/com/zy/asrs/service/AgvWrkMastService.java b/src/main/java/com/zy/asrs/service/AgvWrkMastService.java
new file mode 100644
index 0000000..86d4398
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/AgvWrkMastService.java
@@ -0,0 +1,7 @@
+package com.zy.asrs.service;
+
+import com.baomidou.mybatisplus.service.IService;
+import com.zy.asrs.entity.AgvWrkMast;
+
+public interface AgvWrkMastService extends IService<AgvWrkMast> {
+}
diff --git a/src/main/java/com/zy/asrs/service/impl/AgvBasDevpServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/AgvBasDevpServiceImpl.java
new file mode 100644
index 0000000..89e92c9
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/impl/AgvBasDevpServiceImpl.java
@@ -0,0 +1,11 @@
+package com.zy.asrs.service.impl;
+
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import com.zy.asrs.entity.AgvBasDevp;
+import com.zy.asrs.mapper.AgvBasDevpMapper;
+import com.zy.asrs.service.AgvBasDevpService;
+import org.springframework.stereotype.Service;
+
+@Service
+public class AgvBasDevpServiceImpl extends ServiceImpl<AgvBasDevpMapper, AgvBasDevp> implements AgvBasDevpService {
+}
diff --git a/src/main/java/com/zy/asrs/service/impl/AgvLocDetlServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/AgvLocDetlServiceImpl.java
new file mode 100644
index 0000000..df4ecc5
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/impl/AgvLocDetlServiceImpl.java
@@ -0,0 +1,12 @@
+package com.zy.asrs.service.impl;
+
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import com.zy.asrs.entity.AgvLocDetl;
+import com.zy.asrs.mapper.AgvLocDetlMapper;
+import com.zy.asrs.service.AgvLocDetlService;
+import org.springframework.stereotype.Service;
+
+@Service
+public class AgvLocDetlServiceImpl extends ServiceImpl<AgvLocDetlMapper, AgvLocDetl> implements AgvLocDetlService {
+
+}
diff --git a/src/main/java/com/zy/asrs/service/impl/AgvLockMastServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/AgvLockMastServiceImpl.java
new file mode 100644
index 0000000..23655df
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/impl/AgvLockMastServiceImpl.java
@@ -0,0 +1,11 @@
+package com.zy.asrs.service.impl;
+
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import com.zy.asrs.entity.AgvLocMast;
+import com.zy.asrs.mapper.AgvLockMastMapper;
+import com.zy.asrs.service.AgvLockMastService;
+import org.springframework.stereotype.Service;
+
+@Service
+public class AgvLockMastServiceImpl extends ServiceImpl<AgvLockMastMapper, AgvLocMast> implements AgvLockMastService {
+}
diff --git a/src/main/java/com/zy/asrs/service/impl/AgvMobileServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/AgvMobileServiceImpl.java
new file mode 100644
index 0000000..8dd6f85
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/impl/AgvMobileServiceImpl.java
@@ -0,0 +1,183 @@
+package com.zy.asrs.service.impl;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.core.common.BaseRes;
+import com.core.common.Cools;
+import com.core.common.DateUtils;
+import com.core.common.SnowflakeIdWorker;
+import com.core.exception.CoolException;
+import com.zy.asrs.entity.*;
+import com.zy.asrs.entity.param.CombParam;
+import com.zy.asrs.entity.param.MobileAdjustParam;
+import com.zy.asrs.entity.param.OpenOrderPakinParam;
+import com.zy.asrs.service.*;
+import com.zy.asrs.task.core.ReturnT;
+import com.zy.asrs.task.handler.WorkLogHandler;
+import com.zy.asrs.utils.MatUtils;
+import com.zy.common.constant.MesConstant;
+import com.zy.common.entity.Parameter;
+import com.zy.common.model.DetlDto;
+import com.zy.common.model.MesCombParam;
+import com.zy.common.utils.HttpHandler;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.Iterator;
+import java.util.List;
+
+/**
+ * 绉诲姩绔湇鍔℃牳蹇冪被
+ * Created by vincent on 2020/6/28
+ */
+@Slf4j
+@Service
+public class AgvMobileServiceImpl implements AgvMobileService {
+
+ @Autowired
+ private MatService matService;
+ @Autowired
+ private AgvWaitPakinService agvWaitPakinService;
+ @Autowired
+ private OrderService orderService;
+ @Autowired
+ private OrderDetlService orderDetlService;
+ @Autowired
+ private AgvBasDevpService agvBasDevpService;
+
+
+ @Override
+ @Transactional
+ public void comb(CombParam param, Long userId) {
+ if (Cools.isEmpty(param.getBarcode(), param.getCombMats())) {
+ throw new CoolException(BaseRes.PARAM);
+ }
+
+ if (agvWaitPakinService.selectCount(new EntityWrapper<AgvWaitPakin>().
+ eq("zpallet", param.getBarcode()).eq("io_status", "N")) > 0) {
+ throw new CoolException(param.getBarcode() + "鏁版嵁姝e湪杩涜鍏ュ簱");
+ }
+
+ Date now = new Date();
+ //鏃犲崟缁勬墭
+ if (Cools.isEmpty(param.getOrderNo())) {
+ List<DetlDto> detlDtos = new ArrayList<>();
+ param.getCombMats().forEach(elem -> {
+ DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(), elem.getAnfme());
+ if (DetlDto.has(detlDtos, detlDto)) {
+ DetlDto one = DetlDto.find(detlDtos, detlDto.getMatnr(), detlDto.getBatch());
+ assert one != null;
+ one.setAnfme(one.getAnfme() + detlDto.getAnfme());
+ } else {
+ detlDtos.add(detlDto);
+ }
+ });
+
+ detlDtos.forEach(detlDto -> {
+ Mat mat = matService.selectByMatnr(detlDto.getMatnr());
+ if (Cools.isEmpty(mat)) {
+ throw new CoolException(detlDto.getMatnr() + "鍟嗗搧妗f涓嶅瓨鍦�");
+ }
+ AgvWaitPakin waitPakin = new AgvWaitPakin();
+ waitPakin.sync(mat);
+ waitPakin.setBatch(detlDto.getBatch());
+ waitPakin.setZpallet(param.getBarcode()); // 鎵樼洏鐮�
+ waitPakin.setIoStatus("N"); // 鍏ュ嚭鐘舵��
+ waitPakin.setAnfme(detlDto.getAnfme()); // 鏁伴噺
+ waitPakin.setStatus("Y"); // 鐘舵��
+ waitPakin.setAppeUser(userId);
+ waitPakin.setAppeTime(now);
+ waitPakin.setModiUser(userId);
+ waitPakin.setModiTime(now);
+ if (!agvWaitPakinService.insert(waitPakin)) {
+ throw new CoolException("淇濆瓨鍏ュ簱閫氱煡妗eけ璐�");
+ }
+ });
+ }else {
+ Order order = orderService.selectByNo(param.getOrderNo());
+ if (order.getSettle() > 2) {
+ throw new CoolException("鍗曟嵁缂栧彿宸茶繃鏈�");
+ }
+ // 鐢熸垚鍏ュ簱閫氱煡妗�
+ List<DetlDto> detlDtos = new ArrayList<>();
+ param.getCombMats().forEach(elem -> {
+
+ // 璁㈠崟鏄庣粏鏁伴噺鏍¢獙
+ OrderDetl orderDetl = orderDetlService.selectItem(order.getId(), elem.getMatnr(), elem.getBatch());
+ if (elem.getAnfme() > orderDetl.getEnableQty()) {
+ throw new CoolException(orderDetl.getMatnr() + "鍏ュ簱鏁伴噺涓嶅悎娉�");
+ }
+ // 淇敼璁㈠崟鏄庣粏鏁伴噺
+ if (!orderDetlService.increase(order.getId(), elem.getMatnr(), elem.getBatch(), elem.getAnfme())) {
+ throw new CoolException("淇敼鍗曟嵁鏄庣粏鏁伴噺澶辫触");
+ }
+
+ DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(), elem.getAnfme());
+ if (DetlDto.has(detlDtos, detlDto)) {
+ DetlDto one = DetlDto.find(detlDtos, detlDto.getMatnr(), detlDto.getBatch());
+ assert one != null;
+ one.setAnfme(one.getAnfme() + detlDto.getAnfme());
+ } else {
+ detlDtos.add(detlDto);
+ }
+ });
+ for (DetlDto detlDto : detlDtos) {
+ Mat mat = matService.selectByMatnr(detlDto.getMatnr());
+ if (Cools.isEmpty(mat)) {
+ throw new CoolException(detlDto.getMatnr() + "鍟嗗搧妗f涓嶅瓨鍦�");
+ }
+ AgvWaitPakin waitPakin = new AgvWaitPakin();
+ waitPakin.sync(mat);
+ waitPakin.setOrderNo(order.getOrderNo()); // 鍗曟嵁缂栧彿
+ waitPakin.setBatch(detlDto.getBatch()); // 搴忓垪鐮�
+ waitPakin.setZpallet(param.getBarcode()); // 鎵樼洏鐮�
+ waitPakin.setIoStatus("N"); // 鍏ュ嚭鐘舵��
+ waitPakin.setAnfme(detlDto.getAnfme()); // 鏁伴噺
+ waitPakin.setStatus("Y"); // 鐘舵��
+ waitPakin.setAppeUser(userId);
+ waitPakin.setAppeTime(now);
+ waitPakin.setModiUser(userId);
+ waitPakin.setModiTime(now);
+ if (!agvWaitPakinService.insert(waitPakin)) {
+ throw new CoolException("淇濆瓨鍏ュ簱閫氱煡妗eけ璐�");
+ }
+ }
+ orderService.updateSettle(order.getId(), 2L, userId);
+ }
+
+ //鍏宠仈缁勬墭
+
+ }
+
+ @Override
+ @Transactional
+ public void adjust(MobileAdjustParam param, Long userId) {
+
+ }
+
+ @Override
+ @Transactional
+ public void packComb(CombParam param, Long userId) {
+
+ }
+
+ @Override
+ public void combBinding(String barcode, String stationCode) {
+ EntityWrapper<AgvBasDevp> wrapper = new EntityWrapper<>();
+ wrapper.eq("dev_no",stationCode);
+ AgvBasDevp agvBasDevp = agvBasDevpService.selectOne(wrapper);
+ if(!"O".equals(agvBasDevp.getLocSts())){
+ throw new CoolException(barcode + "璇ョ珯鐐归潪绌�");
+ }
+
+ agvBasDevp.setBarcode(barcode);
+ agvBasDevp.setLocSts("F");
+ agvBasDevpService.update(agvBasDevp,wrapper);
+ }
+
+}
diff --git a/src/main/java/com/zy/asrs/service/impl/AgvWaitPakinServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/AgvWaitPakinServiceImpl.java
new file mode 100644
index 0000000..7b1d03f
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/impl/AgvWaitPakinServiceImpl.java
@@ -0,0 +1,12 @@
+package com.zy.asrs.service.impl;
+
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import com.zy.asrs.entity.AgvWaitPakin;
+import com.zy.asrs.mapper.AgvWaitPakinMapper;
+import com.zy.asrs.service.AgvWaitPakinService;
+import org.springframework.stereotype.Service;
+
+@Service
+public class AgvWaitPakinServiceImpl extends ServiceImpl<AgvWaitPakinMapper, AgvWaitPakin> implements AgvWaitPakinService {
+
+}
diff --git a/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java
new file mode 100644
index 0000000..7f9947a
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java
@@ -0,0 +1,1189 @@
+package com.zy.asrs.service.impl;
+
+import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.mapper.Wrapper;
+import com.core.common.BaseRes;
+import com.core.common.Cools;
+import com.core.common.DateUtils;
+import com.core.common.SnowflakeIdWorker;
+import com.core.exception.CoolException;
+import com.zy.asrs.entity.*;
+import com.zy.asrs.entity.param.EmptyPlateOutParam;
+import com.zy.asrs.entity.param.FullStoreParam;
+import com.zy.asrs.entity.param.LocDetlAdjustParam;
+import com.zy.asrs.entity.param.StockOutParam;
+import com.zy.asrs.service.*;
+import com.zy.asrs.utils.Utils;
+import com.zy.common.model.*;
+import com.zy.common.model.enums.IoWorkType;
+import com.zy.common.model.enums.WorkNoType;
+import com.zy.common.properties.SlaveProperties;
+import com.zy.common.service.CommonService;
+import com.zy.common.web.BaseController;
+import com.zy.common.web.WcsController;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.*;
+import java.util.concurrent.TimeUnit;
+import java.util.stream.Collectors;
+
+/**
+ * Created by vincent on 2020/6/11
+ */
+@Slf4j
+@Service
+public class AgvWorkServiceImpl implements AgvWorkService {
+
+ // 宸ヤ綔鍙风敓鎴愯鍒欓粯璁ょ被鍨�
+ private static final int DEFAULT_WORK_NO_TYPE = 0;
+ // 搴撲綅鎺掑彿鍒嗛厤榛樿绫诲埆
+ private static final int DEFAULT_ROW_NO_TYPE = 1;
+
+ @Autowired
+ private MatService matService;
+ @Autowired
+ private WrkMastService wrkMastService;
+ @Autowired
+ private WrkDetlService wrkDetlService;
+ @Autowired
+ private BasDevpService basDevpService;
+ @Autowired
+ private CommonService commonService;
+ @Autowired
+ private LocMastService locMastService;
+ @Autowired
+ private StaDescService staDescService;
+ @Autowired
+ private LocDetlService locDetlService;
+ @Autowired
+ private AdjDetlService adjDetlService;
+ @Autowired
+ private WrkMastLogService wrkMastLogService;
+ @Autowired
+ private WrkDetlLogService wrkDetlLogService;
+ @Autowired
+ private SnowflakeIdWorker snowflakeIdWorker;
+ @Autowired
+ private OrderService orderService;
+ @Autowired
+ private OrderDetlService orderDetlService;
+ @Autowired
+ private WcsController wcsController;
+ @Autowired
+ private RowLastnoService rowLastnoService;
+ @Autowired
+ private SlaveProperties slaveProperties;
+
+ @Override
+ @Transactional
+ public String startupFullPutStore(FullStoreParam param, Long userId) {
+ // 鍙傛暟闈炵┖鍒ゆ柇
+ if (Cools.isEmpty(param.getDevpNo(), param.getList())) {
+ throw new CoolException(BaseRes.PARAM);
+ }
+ Date now = new Date();
+ // 婧愮珯鐐圭姸鎬佹娴�
+ BasDevp sourceStaNo = basDevpService.checkSiteStatus(param.getDevpNo(), true);
+ // 妫�绱㈠簱浣�
+ LocTypeDto locTypeDto = new LocTypeDto(sourceStaNo);
+ List<String> matnrs = param.getList().stream().map(FullStoreParam.MatCodeStore::getMatnr).distinct().collect(Collectors.toList());
+ StartupDto dto = commonService.getLocNo(DEFAULT_ROW_NO_TYPE, 1, param.getDevpNo(), matnrs, locTypeDto, 0);
+ // 鐢熸垚宸ヤ綔鍙�
+ int workNo = dto.getWorkNo();
+ // 鐢熸垚宸ヤ綔妗�
+ WrkMast wrkMast = new WrkMast();
+ wrkMast.setWrkNo(workNo);
+ wrkMast.setIoTime(new Date());
+ wrkMast.setWrkSts(1L); // 宸ヤ綔鐘舵�侊細鐢熸垚鍏ュ簱ID
+ wrkMast.setIoType(1); // 鍏ュ嚭搴撶姸鎬侊細1.鍏ュ簱
+ Double ioPri = wrkMastService.getIoPri(1, dto.getLocNo());
+ wrkMast.setIoPri(ioPri); // 浼樺厛绾э細13
+ wrkMast.setOutMost(locMastService.isOutMost(dto.getLocNo(), true)?1:0);;
+ wrkMast.setCrnNo(dto.getCrnNo());
+ wrkMast.setSourceStaNo(dto.getSourceStaNo());
+ wrkMast.setStaNo(dto.getStaNo());
+ wrkMast.setLocNo(dto.getLocNo());
+ wrkMast.setBarcode(param.getBarcode()); // 鎵樼洏鐮�
+ wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
+ wrkMast.setPicking("N"); // 鎷f枡
+ wrkMast.setExitMk("N"); // 閫�鍑�
+ wrkMast.setEmptyMk("N"); // 绌烘澘
+ wrkMast.setLinkMis("N");
+ wrkMast.setCtnType(sourceStaNo.getCtnType()); // 瀹瑰櫒绫诲瀷
+ wrkMast.setAppeUser(userId);
+ wrkMast.setAppeTime(now);
+ wrkMast.setModiUser(userId);
+ wrkMast.setModiTime(now);
+ if (!wrkMastService.insert(wrkMast)) {
+ throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
+ }
+ // 鐢熸垚宸ヤ綔妗f槑缁�
+ List<DetlDto> detlDtos = new ArrayList<>();
+ param.getList().forEach(elem -> {
+ DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(), elem.getAnfme());
+ if (DetlDto.has(detlDtos, detlDto)) {
+ DetlDto detlDto1 = DetlDto.find(detlDtos, detlDto.getMatnr(), detlDto.getBatch());
+ assert detlDto1 != null;
+ detlDto1.setAnfme(detlDto1.getAnfme() + detlDto.getAnfme());
+ } else {
+ detlDtos.add(detlDto);
+ }
+ });
+ wrkDetlService.createWorkDetail(workNo, detlDtos, param.getBarcode(), userId);
+ // 鏇存柊婧愮珯鐐逛俊鎭�
+ sourceStaNo.setWrkNo(workNo);
+ sourceStaNo.setModiUser(userId);
+ sourceStaNo.setModiTime(now);
+ if (!basDevpService.updateById(sourceStaNo)){
+ throw new CoolException("鏇存柊婧愮珯澶辫触");
+ }
+ // 鏇存柊鐩爣搴撲綅鐘舵��
+ LocMast locMast = locMastService.selectById(dto.getLocNo());
+ if (locMast.getLocSts().equals("O")){
+ locMast.setLocSts("S"); // S.鍏ュ簱棰勭害
+ locMast.setModiUser(userId);
+ locMast.setModiTime(now);
+ if (!locMastService.updateById(locMast)){
+ throw new CoolException("鏀瑰彉搴撲綅鐘舵�佸け璐�");
+ }
+ } else {
+ throw new CoolException(dto.getLocNo()+"鐩爣搴撲綅宸茶鍗犵敤");
+ }
+ return dto.getLocNo();
+ }
+
+ @Override
+ @Transactional
+ public void startupFullTakeStore(StockOutParam param, Long userId) {
+ ArrayList<String> locNos = new ArrayList<>();
+ for (StockOutParam.LocDetl locDetl:param.getLocDetls()){
+ if (!locNos.contains(locDetl.getLocNo())){
+ locNos.add(locDetl.getLocNo());
+ }
+ }
+ //妫�娴嬫槸鍚︿负娴呭簱浣�
+ boolean sign=false;
+ String th = "";
+ for (String locNo:locNos){
+ if (sign){
+ break;
+ }
+
+ //妫�娴嬪嚭搴撶殑璐х墿涓槸鍚︽湁鐘舵�佷负绂佹鐨勮揣鐗┿��
+ for (LocDetl locDetl : locDetlService.selectByLocNo(locNo)) {
+ if (locDetl.getStockFreeze() == 0) {
+ th="搴撲綅鍙凤細"+locNo+" 鏈夌姝㈠嚭搴撶殑璐х墿锛�";
+ throw new CoolException("鍑哄簱澶辫触锛�"+th);
+ }
+
+ Mat mat = matService.selectByMatnr(locDetl.getMatnr());
+ if (mat == null) {
+ continue;
+ }
+ if (mat.getStatus() == 0) {
+ th="搴撲綅鍙凤細"+locNo+" 鏈夌姝㈠嚭搴撶殑璐х墿锛�";
+ throw new CoolException("鍑哄簱澶辫触锛�"+th);
+ }
+ }
+
+ List<String> groupInsideLoc = Utils.getGroupInsideLoc(locNo);
+ if (!Cools.isEmpty(groupInsideLoc)) {
+ for (String insideLoc : groupInsideLoc) {
+ if (locNos.contains(insideLoc)){
+ continue;
+ }
+ LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", insideLoc));
+ if (locMast != null) {
+ if (!locMast.getLocSts().equals("O") && !locMast.getLocSts().equals("R")){
+ sign=true;
+ th="搴撲綅鍙凤細"+locNo+" 娴呭簱浣嶆湁闈炵┖搴撲綅锛�";
+ break;
+ }
+ }
+ }
+ }
+ }
+ if (sign){
+ throw new CoolException("鍑哄簱澶辫触锛�"+th);
+ }
+ // 鐩爣绔欑偣鐘舵�佹娴�
+ BasDevp staNo = basDevpService.checkSiteStatus(param.getOutSite());
+ // 鑾峰彇搴撲綅鏄庣粏
+ List<LocDetlDto> locDetlDtos = new ArrayList<>();
+ for (StockOutParam.LocDetl paramLocDetl : param.getLocDetls()) {
+ if (!Cools.isEmpty(paramLocDetl.getLocNo(), paramLocDetl.getMatnr(), paramLocDetl.getCount())) {
+ LocDetl one = locDetlService.selectItem(paramLocDetl.getLocNo(), paramLocDetl.getMatnr(), paramLocDetl.getBatch());
+ if (null != one) locDetlDtos.add(new LocDetlDto(one, paramLocDetl.getCount()));
+ }
+ }
+ if (!locDetlDtos.isEmpty()) {
+ // 鍚姩鍑哄簱寮�濮� 101.鍑哄簱
+ stockOut(staNo, locDetlDtos, null, userId);
+ } else {
+ throw new CoolException("搴撳瓨涓嶅瓨鍦�");
+ }
+ }
+ /**
+ * 閫氳繃搴撲綅鍙疯幏鍙� 鎺�
+ */
+ public static int getRow(String locNo) {
+ if (!Cools.isEmpty(locNo)) {
+ return Integer.parseInt(locNo.substring(0, 2));
+ }
+ throw new RuntimeException("搴撲綅瑙f瀽寮傚父");
+ }
+ /**
+ * 閫氳繃搴撲綅鍙疯幏鍙� 鍒�
+ */
+ public static int getBay(String locNo) {
+ if (!Cools.isEmpty(locNo)) {
+ return Integer.parseInt(locNo.substring(2, 5));
+ }
+ throw new RuntimeException("搴撲綅瑙f瀽寮傚父");
+ }
+ /**
+ * 閫氳繃搴撲綅鍙疯幏鍙� 灞�
+ */
+ public static int getLev(String locNo) {
+ if (!Cools.isEmpty(locNo)) {
+ return Integer.parseInt(locNo.substring(5, 7));
+ }
+ throw new RuntimeException("搴撲綅瑙f瀽寮傚父");
+ }
+
+ @Override
+ @Transactional
+ public void stockOut(BasDevp staNo, List<LocDetlDto> locDetlDtos, IoWorkType ioWorkType, Long userId) {
+ Date now = new Date();
+ // 鍚堝苟鍚岀被椤�
+ Set<String> locNos = new HashSet<>();
+ List<OutLocDto> dtos = new ArrayList<>();
+ for (LocDetlDto locDetlDto : locDetlDtos) {
+ String locNo = locDetlDto.getLocDetl().getLocNo();
+ if (locNos.contains(locNo)) {
+ for (OutLocDto dto : dtos) {
+ if (dto.getLocNo().equals(locNo)) {
+ dto.getLocDetlDtos().add(locDetlDto);
+ break;
+ }
+ }
+ } else {
+ locNos.add(locNo);
+ dtos.add(new OutLocDto(locNo, locDetlDto));
+ }
+ }
+ Integer ioType = null;
+ List<String> excludeLocNos = dtos.stream().map(OutLocDto::getLocNo).distinct().collect(Collectors.toList());
+ // 鐢熸垚宸ヤ綔妗�
+ for (OutLocDto dto : dtos) {
+ // 濡傛灉涓烘繁搴撲綅锛屼笖瀵瑰簲娴呭簱浣嶄负X.绂佺敤锛屽垯鐣ヨ繃姝ゅ簱浣�
+ if (Utils.isDeepLoc(slaveProperties, dto.getLocNo())) {
+ String shallowLoc = Utils.getShallowLoc(slaveProperties, dto.getLocNo());
+ if (locMastService.selectById(shallowLoc).getLocSts().equals("X")) {
+ continue;
+ }
+ }
+
+ // 鍒ゆ柇鍏ュ嚭搴撶被鍨嬶細101.鍏ㄦ澘鍑哄簱 or 103.鎷f枡鍑哄簱
+ if (ioWorkType == null) {
+ ioType = dto.isAll() ? 101 : 103;
+ } else if (ioWorkType.equals(IoWorkType.CHECK_OUT)) {
+ ioType = 107;
+ }
+ assert ioType != null;
+ // 鑾峰彇搴撲綅
+ LocMast locMast = locMastService.selectById(dto.getLocNo());
+ // 鑾峰彇璺緞
+ Boolean outMost = locMastService.isOutMost(dto.getLocNo(), false);
+ Integer outCrnNo = locMastService.getOutCrnNo(locMast);
+ StaDesc staDesc = staDescService.queryCrnStn(ioType, outCrnNo, staNo.getDevNo());
+ // 鐢熸垚宸ヤ綔鍙�
+ int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(ioType));
+ // 鐢熸垚宸ヤ綔妗�
+ WrkMast wrkMast = new WrkMast();
+ wrkMast.setWrkNo(workNo);
+ wrkMast.setIoTime(now);
+ wrkMast.setWrkSts(21L); // 宸ヤ綔鐘舵�侊細21.鐢熸垚鍑哄簱浠诲姟
+ wrkMast.setIoType(ioType); // 鍏ュ嚭搴撶姸鎬�
+ Double ioPri = wrkMastService.getIoPri(ioType, dto.getLocNo());
+ wrkMast.setIoPri(ioPri); // 浼樺厛绾э細13
+ wrkMast.setOutMost(outMost?1:0);;
+ wrkMast.setCrnNo(outMost?outCrnNo:locMast.getCrnNo());
+ wrkMast.setSourceStaNo(staDesc.getCrnStn()); // 婧愮珯
+ wrkMast.setStaNo(staDesc.getStnNo()); // 鐩爣绔�
+ wrkMast.setSourceLocNo(dto.getLocNo()); // 婧愬簱浣�
+ wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
+ wrkMast.setPicking("N"); // 鎷f枡
+ wrkMast.setExitMk("N"); // 閫�鍑�
+ wrkMast.setEmptyMk("N"); // 绌烘澘
+ wrkMast.setLinkMis("N");
+ wrkMast.setBarcode(locMast.getBarcode());
+ wrkMast.setAppeUser(userId); // 鎿嶄綔浜哄憳鏁版嵁
+ wrkMast.setAppeTime(now);
+ wrkMast.setModiUser(userId);
+ wrkMast.setModiTime(now);
+ if (!wrkMastService.insert(wrkMast)) {
+ throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐ワ紝鍑哄簱搴撲綅鍙凤細"+dto.getLocNo());
+ }
+ // 鐢熸垚宸ヤ綔妗f槑缁�
+ for (LocDetlDto detlDto : dto.getLocDetlDtos()) {
+ if (detlDto.getCount()==null || detlDto.getCount() <= 0.0D) {continue;}
+ WrkDetl wrkDetl = new WrkDetl();
+ wrkDetl.sync(detlDto.getLocDetl());
+ wrkDetl.setOrderNo(""); // 鎵嬪姩鍑哄簱涓嶉渶瑕佸甫鍑哄簱瀛樹腑鐨勫崟鎹紪鍙�
+ wrkDetl.setWrkNo(workNo);
+ wrkDetl.setIoTime(now);
+ Double anfme = ioType==101?detlDto.getLocDetl().getAnfme():detlDto.getCount();
+ wrkDetl.setAnfme(anfme); // 鏁伴噺
+ wrkDetl.setAppeTime(now);
+ wrkDetl.setAppeUser(userId);
+ wrkDetl.setModiTime(now);
+ wrkDetl.setModiUser(userId);
+ if (!wrkDetlService.insert(wrkDetl)) {
+ throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
+ }
+ }
+ // 淇敼搴撲綅鐘舵��: F.鍦ㄥ簱 ====>>> R.鍑哄簱棰勭害/P.鎷f枡/鐩樼偣/骞舵澘鍑哄簱涓�
+ locMast = locMastService.selectById(dto.getLocNo());
+ if (locMast.getLocSts().equals("F")) {
+ locMast.setLocSts(ioType==101?"R":"P");
+ locMast.setModiUser(userId);
+ locMast.setModiTime(now);
+ if (!locMastService.updateById(locMast)) {
+ throw new CoolException("棰勭害搴撲綅鐘舵�佸け璐ワ紝搴撲綅鍙凤細"+dto.getLocNo());
+ }
+ } else {
+ throw new CoolException(dto.getLocNo() + "搴撲綅涓嶆槸鍦ㄥ簱鐘舵��");
+ }
+ locMastService.breakUp(dto.getLocNo(), excludeLocNos);
+ }
+ }
+
+ @Override
+ @Transactional
+ public void stockOut(BasDevp staNo, TaskDto taskDto, Long userId) {
+ Date now = new Date();
+ List<LocDto> locDtos = taskDto.getLocDtos();
+ for (LocDto locDto : locDtos) {
+ if (!taskDto.getLocNo().equals(locDto.getLocNo()) && !taskDto.getStaNo().equals(locDto.getStaNo())) {
+ throw new CoolException("璁㈠崟鍑哄簱寮傚父锛岃鑱旂郴绠$悊鍛�");
+ }
+ }
+ // 鑾峰彇搴撲綅
+ LocMast locMast = locMastService.selectById(taskDto.getLocNo());
+ // 鑾峰彇璺緞
+ int ioType = taskDto.isAll() ? 101 : 103;
+ Boolean outMost = locMastService.isOutMost(taskDto.getLocNo(), false);
+ Integer outCrnNo = locMastService.getOutCrnNo(locMast);
+ StaDesc staDesc = staDescService.queryCrnStnAuto(ioType, outCrnNo, staNo.getDevNo());
+ // 鐢熸垚宸ヤ綔鍙�
+ int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(ioType));
+ // 鐢熸垚宸ヤ綔妗�
+ WrkMast wrkMast = new WrkMast();
+ wrkMast.setWrkNo(workNo);
+ wrkMast.setIoTime(now);
+ wrkMast.setWrkSts(21L); // 宸ヤ綔鐘舵�侊細21.鐢熸垚鍑哄簱浠诲姟
+ wrkMast.setIoType(ioType); // 鍏ュ嚭搴撶姸鎬�
+ Double ioPri = wrkMastService.getIoPri(ioType, taskDto.getLocNo());
+ wrkMast.setIoPri(ioPri); // 浼樺厛绾э細13
+ wrkMast.setOutMost(outMost?1:0);;
+ wrkMast.setCrnNo(outMost?outCrnNo:locMast.getCrnNo());
+ wrkMast.setSourceStaNo(staDesc.getCrnStn()); // 婧愮珯
+ wrkMast.setStaNo(staDesc.getStnNo()); // 鐩爣绔�
+ wrkMast.setSourceLocNo(taskDto.getLocNo()); // 婧愬簱浣�
+ wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
+ wrkMast.setPicking("N"); // 鎷f枡
+ wrkMast.setExitMk("N"); // 閫�鍑�
+ wrkMast.setEmptyMk("N"); // 绌烘澘
+ wrkMast.setLinkMis("N");
+ wrkMast.setBarcode(locMast.getBarcode());
+ wrkMast.setAppeUser(userId); // 鎿嶄綔浜哄憳鏁版嵁
+ wrkMast.setAppeTime(now);
+ wrkMast.setModiUser(userId);
+ wrkMast.setModiTime(now);
+ if (!wrkMastService.insert(wrkMast)) {
+ throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐ワ紝鍑哄簱搴撲綅鍙凤細"+taskDto.getLocNo());
+ }
+ // 鐢熸垚宸ヤ綔妗f槑缁�
+ for (LocDto locDto : taskDto.getLocDtos()) {
+ if (locDto.getAnfme()==null || locDto.getAnfme() <= 0.0D) { continue; }
+ LocDetl locDetl = locDetlService.selectItem(locDto.getLocNo(), locDto.getMatnr(), locDto.getBatch());
+ if (locDetl == null || locDetl.getAnfme() < locDto.getAnfme()) {
+ throw new CoolException(locDto.getLocNo() + "搴撲綅涓�" + locDto.getMatnr() + "鍟嗗搧搴撳瓨涓嶈冻锛�");
+ }
+ Mat mat = matService.selectByMatnr(locDto.getMatnr());
+ assert mat != null;
+ WrkDetl wrkDetl = new WrkDetl();
+ wrkDetl.sync(mat);
+ wrkDetl.setZpallet(wrkMast.getBarcode());
+ wrkDetl.setIoTime(now);
+ wrkDetl.setWrkNo(workNo);
+ wrkDetl.setBatch(locDto.getBatch());
+ wrkDetl.setOrderNo(locDto.getOrderNo());
+ wrkDetl.setAnfme(locDto.getAnfme()); // 鏁伴噺
+ wrkDetl.setAppeTime(now);
+ wrkDetl.setAppeUser(userId);
+ wrkDetl.setModiTime(now);
+ wrkDetl.setModiUser(userId);
+ if (!wrkDetlService.insert(wrkDetl)) {
+ throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
+ }
+ // 淇敼璁㈠崟鏄庣粏
+ if (!BaseController.isJSON(locDto.getOrderNo())) {
+ OrderDetl orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), locDto.getBatch());
+ if (orderDetl == null) {
+ orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), null);
+ }
+ if (!orderDetlService.increase(orderDetl.getOrderId(), orderDetl.getMatnr(), orderDetl.getBatch(), locDto.getAnfme())) {
+ throw new CoolException("淇敼璁㈠崟鏄庣粏鏁伴噺澶辫触");
+ }
+ orderService.updateSettle(orderDetl.getOrderId(), 2L, userId);
+ } else {
+ // 璁㈠崟鍚堝苟鍑哄簱
+ List<OrderDto> orderDtoList = JSON.parseArray(locDto.getOrderNo(), OrderDto.class);
+ for (OrderDto orderDto : orderDtoList) {
+ OrderDetl orderDetl = orderDetlService.selectItem(orderDto.getOrderNo(), locDto.getMatnr(), locDto.getBatch());
+ if (orderDetl == null) {
+ orderDetl = orderDetlService.selectItem(orderDto.getOrderNo(), locDto.getMatnr(), null);
+ }
+ if (!orderDetlService.increase(orderDetl.getOrderId(), orderDetl.getMatnr(), orderDetl.getBatch(), orderDto.getAnfme())) {
+ throw new CoolException("淇敼璁㈠崟鏄庣粏鏁伴噺澶辫触");
+ }
+ orderService.updateSettle(orderDetl.getOrderId(), 2L, userId);
+ }
+ }
+ }
+ // 淇敼搴撲綅鐘舵��: F.鍦ㄥ簱 ====>>> R.鍑哄簱棰勭害/P.鎷f枡/鐩樼偣/骞舵澘鍑哄簱涓�
+ locMast = locMastService.selectById(taskDto.getLocNo());
+ if (locMast.getLocSts().equals("F")) {
+ locMast.setLocSts(ioType==101?"R":"P");
+ locMast.setModiUser(userId);
+ locMast.setModiTime(now);
+ if (!locMastService.updateById(locMast)) {
+ throw new CoolException("棰勭害搴撲綅鐘舵�佸け璐ワ紝搴撲綅鍙凤細"+taskDto.getLocNo());
+ }
+ } else {
+ throw new CoolException(taskDto.getLocNo() + "搴撲綅涓嶆槸鍦ㄥ簱鐘舵��");
+ }
+ }
+
+ @Override
+ @Transactional
+ public String emptyPlateIn(Integer devpNo, Long userId) {
+ // 婧愮珯鐐圭姸鎬佹娴�
+ BasDevp sourceStaNo = basDevpService.checkSiteStatus(devpNo, true);
+ // 妫�绱㈠簱浣�
+ LocTypeDto locTypeDto = new LocTypeDto(sourceStaNo);
+ StartupDto dto = commonService.getLocNo(DEFAULT_ROW_NO_TYPE, 10, devpNo, null, locTypeDto, 0);
+ int workNo = dto.getWorkNo();
+ // 鐢熸垚宸ヤ綔妗�
+ WrkMast wrkMast = new WrkMast();
+ wrkMast.setWrkNo(workNo);
+ wrkMast.setIoTime(new Date());
+ wrkMast.setWrkSts(1L); // 宸ヤ綔鐘舵�侊細鐢熸垚鍏ュ簱ID
+ wrkMast.setIoType(10); // 鍏ュ嚭搴撶姸鎬侊細10.绌烘澘鍏ュ簱
+ Double ioPri = wrkMastService.getIoPri(10, dto.getLocNo());
+ wrkMast.setIoPri(ioPri); // 浼樺厛绾э細10
+ wrkMast.setOutMost(locMastService.isOutMost(dto.getLocNo(), true)?1:0);;
+ wrkMast.setCrnNo(dto.getCrnNo());
+ wrkMast.setSourceStaNo(dto.getSourceStaNo());
+ wrkMast.setStaNo(dto.getStaNo());
+ wrkMast.setLocNo(dto.getLocNo());
+ wrkMast.setFullPlt("N"); // 婊℃澘
+ wrkMast.setPicking("N"); // 鎷f枡
+ wrkMast.setExitMk("N"); // 閫�鍑�
+ wrkMast.setEmptyMk("Y"); // 绌烘澘
+ wrkMast.setLinkMis("N");
+ wrkMast.setCtnType(sourceStaNo.getCtnType()); // 瀹瑰櫒绫诲瀷
+ // 鎿嶄綔浜哄憳鏁版嵁
+ wrkMast.setAppeUser(userId);
+ wrkMast.setAppeTime(new Date());
+ wrkMast.setModiUser(userId);
+ wrkMast.setModiTime(new Date());
+ boolean res = wrkMastService.insert(wrkMast);
+ if (!res) {
+ throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
+ }
+ // 鏇存柊婧愮珯鐐逛俊鎭�
+ sourceStaNo.setWrkNo(workNo);
+ sourceStaNo.setModiUser(userId);
+ sourceStaNo.setModiTime(new Date());
+ if (!basDevpService.updateById(sourceStaNo)){
+ throw new CoolException("鏇存柊婧愮珯澶辫触");
+ }
+ // 鏇存柊鐩爣搴撲綅鐘舵��
+ LocMast locMast = locMastService.selectById(dto.getLocNo());
+ if (locMast.getLocSts().equals("O")){
+ locMast.setLocSts("S"); // S.鍏ュ簱棰勭害
+ locMast.setModiUser(userId);
+ locMast.setModiTime(new Date());
+ if (!locMastService.updateById(locMast)){
+ throw new CoolException("鏀瑰彉搴撲綅鐘舵�佸け璐�");
+ }
+ } else {
+ throw new CoolException(dto.getLocNo()+"鐩爣搴撲綅宸茶鍗犵敤");
+ }
+ return dto.getLocNo();
+ }
+
+ @Override
+ @Transactional
+ public void emptyPlateOut(EmptyPlateOutParam param, Long userId) {
+ List<String> locNos = param.getLocNos();
+ //妫�娴嬫槸鍚︿负娴呭簱浣�
+ boolean sign=false;
+ String th = "";
+ for (String locNo:locNos){
+ if (sign){
+ break;
+ }
+ List<String> groupInsideLoc = Utils.getGroupInsideLoc(locNo);
+ if (!Cools.isEmpty(groupInsideLoc)) {
+ for (String insideLoc : groupInsideLoc) {
+ if (locNos.contains(insideLoc)){
+ continue;
+ }
+ LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", insideLoc));
+ if (locMast != null) {
+ if (!locMast.getLocSts().equals("O") && !locMast.getLocSts().equals("R")){
+ sign=true;
+ th="搴撲綅鍙凤細"+locNo+" 娴呭簱浣嶆湁闈炵┖搴撲綅锛�";
+ break;
+ }
+ }
+ }
+ }
+ }
+ if (sign){
+ throw new CoolException("鍑哄簱澶辫触锛�"+th);
+ }
+ if (Cools.isEmpty(param.getOutSite())) {
+ throw new CoolException("绔欑偣涓嶅瓨鍦�");
+ }
+ for (String locNo : param.getLocNos()) {
+ // 濡傛灉涓烘繁搴撲綅锛屼笖瀵瑰簲娴呭簱浣嶄负X.绂佺敤锛屽垯鐣ヨ繃姝ゅ簱浣�
+ if (Utils.isDeepLoc(slaveProperties, locNo)) {
+ String shallowLoc = Utils.getShallowLoc(slaveProperties, locNo);
+ if (locMastService.selectById(shallowLoc).getLocSts().equals("X")) {
+ continue;
+ }
+ }
+ // 鑾峰彇宸ヤ綔鍙�
+ int workNo = commonService.getWorkNo(WorkNoType.PAKOUT.type);
+ // 鑾峰彇搴撲綅
+ LocMast locMast = locMastService.selectById(locNo);
+ if (Cools.isEmpty(locMast)) {
+ throw new CoolException(locNo+"搴撲綅涓嶅瓨鍦�");
+ }
+ Boolean outMost = locMastService.isOutMost(locNo, false);
+ Integer outCrnNo = locMastService.getOutCrnNo(locMast);
+ // 鑾峰彇婧愮珯
+ Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
+ .eq("type_no", 110)
+ .eq("stn_no", param.getOutSite())
+ .eq("crn_no", outCrnNo);
+ StaDesc staDesc = staDescService.selectOne(wrapper);
+ if (Cools.isEmpty(staDesc)) {
+ throw new CoolException("闈炴硶璺緞锛�");
+ }
+ Integer sourceStaNo = staDesc.getCrnStn();
+ if (Cools.isEmpty(sourceStaNo)) {
+ throw new CoolException("妫�绱㈡簮绔欏け璐�");
+ }
+ // 淇濆瓨宸ヤ綔妗�
+ WrkMast wrkMast = new WrkMast();
+ wrkMast.setWrkNo(workNo);
+ wrkMast.setIoTime(new Date());
+ wrkMast.setWrkSts(21L); // 宸ヤ綔鐘舵�侊細21.鐢熸垚鍑哄簱浠诲姟
+ wrkMast.setIoType(110); // 鍏ュ嚭搴撶姸鎬侊細 110.绌烘澘鍑哄簱
+ Double ioPri = wrkMastService.getIoPri(110, locNo);
+ wrkMast.setIoPri(ioPri);
+ wrkMast.setSourceStaNo(sourceStaNo); // 婧愮珯
+ wrkMast.setStaNo(param.getOutSite()); // 鐩爣绔�
+ wrkMast.setOutMost(outMost?1:0);;
+ wrkMast.setCrnNo(outMost?outCrnNo:locMast.getCrnNo());
+ wrkMast.setSourceLocNo(locNo); // 婧愬簱浣�
+ wrkMast.setFullPlt("N"); // 婊℃澘锛歒
+ wrkMast.setPicking("N"); // 鎷f枡
+ wrkMast.setExitMk("N"); // 閫�鍑�
+ wrkMast.setEmptyMk("Y"); // 绌烘澘
+ wrkMast.setLinkMis("N");
+ wrkMast.setAppeUser(userId);
+ wrkMast.setAppeTime(new Date());
+ wrkMast.setModiUser(userId);
+ wrkMast.setModiTime(new Date());
+ boolean res = wrkMastService.insert(wrkMast);
+ if (!res) {
+ throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
+ }
+ // 鏇存柊搴撲綅鐘舵�� D.绌烘澘 -> R.鍑哄簱棰勭害
+ if (locMast.getLocSts().equals("D")){
+ locMast.setLocSts("R");
+ locMast.setModiUser(userId);
+ locMast.setModiTime(new Date());
+ if (!locMastService.updateById(locMast)) {
+ throw new CoolException("鏇存柊搴撲綅鐘舵�佸け璐�");
+ }
+ }
+ }
+ }
+
+ @Override
+ @Transactional
+ public void locCheckOut(StockOutParam param, Long userId) {
+ // 鐩爣绔欑偣鐘舵�佹娴�
+ BasDevp staNo = basDevpService.checkSiteStatus(param.getOutSite());
+ // 鑾峰彇搴撲綅鏄庣粏
+ List<LocDetlDto> locDetlDtos = new ArrayList<>();
+ for (StockOutParam.LocDetl paramLocDetl : param.getLocDetls()) {
+ if (!Cools.isEmpty(paramLocDetl.getLocNo(), paramLocDetl.getMatnr(), paramLocDetl.getCount())) {
+ LocDetl one = locDetlService.selectItem(paramLocDetl.getLocNo(), paramLocDetl.getMatnr(), paramLocDetl.getBatch());
+ if (null != one) locDetlDtos.add(new LocDetlDto(one, paramLocDetl.getCount()));
+ }
+ }
+ if (!locDetlDtos.isEmpty()) {
+ // 鍚姩鍑哄簱寮�濮� 107.鐩樼偣鍑哄簱
+ stockOut(staNo, locDetlDtos, IoWorkType.CHECK_OUT, userId);
+ } else {
+ throw new CoolException("搴撲綅鐗╂枡涓嶅瓨鍦�");
+ }
+ }
+
+ @Override
+ @Transactional
+ public void locMove(String sourceLocNo, String locNo, Long userId) {
+ LocMast sourceLoc = locMastService.selectById(sourceLocNo);
+ List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", sourceLocNo));
+ if (Cools.isEmpty(sourceLoc)){
+ throw new CoolException("鏈壘鍒板簱浣�");
+ }
+ LocMast loc = locMastService.selectById(locNo);
+ if (Cools.isEmpty(loc)){
+ throw new CoolException("鏈壘鍒板簱浣�");
+ }
+ if (!sourceLoc.getCrnNo().equals(loc.getCrnNo())) {
+// throw new CoolException("绉昏浆搴撲綅灞炰簬涓嶅悓鍫嗗灈鏈�"); todo:luxiaotao
+ }
+ Date now = new Date();
+ // 鑾峰彇宸ヤ綔鍙�
+ int workNo = commonService.getWorkNo(WorkNoType.PICK.type);
+ // 淇濆瓨宸ヤ綔妗�
+ WrkMast wrkMast = new WrkMast();
+ wrkMast.setWrkNo(workNo);
+ wrkMast.setIoTime(now);
+ wrkMast.setWrkSts(21L); // 宸ヤ綔鐘舵�侊細21.鐢熸垚鍑哄簱浠诲姟
+ wrkMast.setIoType(11); // 鍏ュ嚭搴撶姸鎬侊細 11.搴撴牸绉昏浇
+ wrkMast.setIoPri(10D);
+ wrkMast.setOutMost(locMastService.isOutMost(locNo, false)?1:0);;
+ wrkMast.setCrnNo(sourceLoc.getCrnNo());
+ wrkMast.setSourceLocNo(sourceLocNo); // 婧愬簱浣�
+ wrkMast.setLocNo(locNo); // 鐩爣搴撲綅
+ wrkMast.setFullPlt(Cools.isEmpty(locDetls)?"N":"Y"); // 婊℃澘锛歒
+ wrkMast.setPicking("N"); // 鎷f枡
+ wrkMast.setExitMk("N"); // 閫�鍑�
+ wrkMast.setEmptyMk(sourceLoc.getLocSts().equals("D")?"Y":"N"); // 绌烘澘
+ wrkMast.setBarcode(sourceLoc.getBarcode()); // 鎵樼洏鐮�
+ wrkMast.setLinkMis("N");
+ wrkMast.setAppeUser(userId);
+ wrkMast.setAppeTime(now);
+ wrkMast.setModiUser(userId);
+ wrkMast.setModiTime(now);
+ boolean res = wrkMastService.insert(wrkMast);
+ if (!res) {
+ throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
+ }
+ // 宸ヤ綔妗f槑缁嗕繚瀛�
+ for (LocDetl locDetl : locDetls) {
+ WrkDetl wrkDetl = new WrkDetl();
+ wrkDetl.sync(locDetl);
+ wrkDetl.setWrkNo(workNo);
+ wrkDetl.setIoTime(now);
+ wrkDetl.setAnfme(locDetl.getAnfme());
+ wrkDetl.setAppeTime(now);
+ wrkDetl.setAppeUser(userId);
+ wrkDetl.setModiTime(now);
+ wrkDetl.setModiUser(userId);
+ if (!wrkDetlService.insert(wrkDetl)) {
+ throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
+ }
+ }
+ // 淇敼婧愬簱浣嶇姸鎬�
+ if (sourceLoc.getLocSts().equals("D") || sourceLoc.getLocSts().equals("F")) {
+ sourceLoc.setLocSts("R"); // R.鍑哄簱棰勭害
+ sourceLoc.setModiUser(userId);
+ sourceLoc.setModiTime(now);
+ if (!locMastService.updateById(sourceLoc)){
+ throw new CoolException("鏇存柊婧愬簱浣嶇姸鎬佸け璐�");
+ }
+ } else {
+ throw new CoolException(sourceLoc.getLocNo() + "婧愬簱浣嶅嚭搴撳け璐ワ紝鐘舵�侊細"+sourceLoc.getLocSts$());
+ }
+ // 淇敼鐩爣搴撲綅鐘舵��
+ if (loc.getLocSts().equals("O")) {
+ loc.setLocSts("S"); // S.鍏ュ簱棰勭害
+ loc.setModiTime(now);
+ loc.setModiUser(userId);
+ if (!locMastService.updateById(loc)) {
+ throw new CoolException("鏇存柊鐩爣搴撲綅鐘舵�佸け璐�");
+ }
+ } else {
+ throw new CoolException("绉昏浆澶辫触锛岀洰鏍囧簱浣嶇姸鎬侊細"+loc.getLocSts$());
+ }
+ }
+
+ @Override
+ @Transactional
+ public void completeWrkMast(String workNo, Long userId) {
+ WrkMast wrkMast = wrkMastService.selectById(workNo);
+ if (Cools.isEmpty(wrkMast)){
+ throw new CoolException(workNo+"宸ヤ綔妗d笉瀛樺湪");
+ }
+ if (wrkMast.getWrkSts() == 9 || wrkMast.getWrkSts() == 17) {
+ throw new CoolException("褰撳墠宸ヤ綔妗e凡瀹屾垚");
+ }
+ // 鍏ュ簱 + 搴撲綅杞Щ
+ if (wrkMast.getWrkSts() < 9 || (wrkMast.getWrkSts() > 10 && wrkMast.getIoType()==11)) {
+ wrkMast.setWrkSts(9L);
+ // 鍑哄簱
+ } else if (wrkMast.getWrkSts() > 10) {
+ wrkMast.setWrkSts(17L);
+ }
+ Date now = new Date();
+ wrkMast.setCrnStrTime(DateUtils.calculate(now, 1L, TimeUnit.SECONDS, true));
+ wrkMast.setCrnEndTime(now);
+ wrkMast.setModiTime(now);
+ wrkMast.setModiUser(userId);
+ // 瀹屾垚鎿嶄綔浜哄憳璁板綍
+ wrkMast.setManuType("鎵嬪姩瀹屾垚");
+ if (!wrkMastService.updateById(wrkMast)) {
+ throw new CoolException("淇敼宸ヤ綔妗eけ璐�");
+ }
+ }
+
+ @Override
+ @Transactional
+ public void adjustLocDetl(LocDetlAdjustParam param, Long userId) {
+ param.integrate();
+ LocMast locMast = locMastService.selectById(param.getLocNo());
+ if (Cools.isEmpty(locMast)) {
+ throw new CoolException("搴撲綅涓嶅瓨鍦�");
+ }
+ if (!(locMast.getLocSts().equals("F") || locMast.getLocSts().equals("D") || locMast.getLocSts().equals("O"))) {
+ throw new CoolException("褰撳墠搴撲綅涓嶅彲璋冩暣锛佸簱浣嶇姸鎬侊細" + locMast.getLocSts$());
+ }
+
+ Date now = new Date();
+ List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", param.getLocNo()));
+
+ List<LocDetlAdjustParam.LocDetlAdjust> list = param.getList();
+
+ // 淇敼鏁伴噺
+ Iterator<LocDetl> iterator = locDetls.iterator();
+ while (iterator.hasNext()) {
+ LocDetl locDetl = iterator.next();
+
+ Iterator<LocDetlAdjustParam.LocDetlAdjust> iterator1 = list.iterator();
+ while (iterator1.hasNext()) {
+ LocDetlAdjustParam.LocDetlAdjust adjust = iterator1.next();
+ if (adjust.getCount() == 0) { continue; }
+ if (locDetl.getMatnr().equals(adjust.getMatnr()) && Cools.eq(locDetl.getBatch(), adjust.getBatch())) {
+ if (!locDetl.getAnfme().equals(adjust.getCount())) {
+ // todo 鐩樼偣璁板綍
+ // 淇敼搴撳瓨
+ if (!locDetlService.updateAnfme(adjust.getCount(), locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getBatch())) {
+ throw new CoolException(locDetl.getLocNo() + "搴撲綅锛�" + locDetl.getMatnr() + "鍟嗗搧锛�" + locDetl.getBatch() + "搴忓垪鐮佷慨鏀规暟閲忓け璐�");
+ }
+ // 淇濆瓨璋冩暣璁板綍
+ AdjDetl adjDetl = new AdjDetl();
+ adjDetl.setLocNo(locDetl.getLocNo());
+ adjDetl.setMatnr(locDetl.getMatnr());
+ adjDetl.setBatch(locDetl.getBatch());
+ adjDetl.setOriQty(locDetl.getAnfme());
+ adjDetl.setAdjQty(adjust.getCount());
+ adjDetl.setModiTime(now);
+ adjDetl.setModiUser(userId);
+ adjDetl.setAppeTime(now);
+ adjDetl.setAppeUser(userId);
+ adjDetlService.save(adjDetl, userId);
+ }
+ iterator.remove();
+ iterator1.remove();
+ }
+ }
+ }
+
+ // 鍒犻櫎搴撳瓨
+ for (LocDetl locDetl : locDetls) {
+ // todo 鐩樼偣璁板綍
+ if (!locDetlService.updateAnfme(-1.0D, locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getBatch())) {
+ throw new CoolException("鍒犻櫎" + locDetl.getLocNo() + "搴撲綅锛�" + locDetl.getMatnr() + "鍟嗗搧锛�" + locDetl.getBatch() + "搴忓垪鐮佸簱瀛樻槑缁嗗け璐�");
+ }
+ // 淇濆瓨璋冩暣璁板綍
+ AdjDetl adjDetl = new AdjDetl();
+ adjDetl.setLocNo(locDetl.getLocNo());
+ adjDetl.setMatnr(locDetl.getMatnr());
+ adjDetl.setBatch(locDetl.getBatch());
+ adjDetl.setOriQty(locDetl.getAnfme());
+ adjDetl.setAdjQty(0.0D);
+ adjDetl.setModiTime(now);
+ adjDetl.setModiUser(userId);
+ adjDetl.setAppeTime(now);
+ adjDetl.setAppeUser(userId);
+ adjDetlService.save(adjDetl, userId);
+ }
+
+ // 娣诲姞搴撳瓨
+ for (LocDetlAdjustParam.LocDetlAdjust adjust : list) {
+ if (adjust.getCount() == 0.0D) { continue; }
+ Mat mat = matService.selectByMatnr(adjust.getMatnr());
+ LocDetl locDetl = new LocDetl();
+ locDetl.sync(mat);
+ locDetl.setBatch(adjust.getBatch());
+ locDetl.setLocNo(locMast.getLocNo());
+ locDetl.setAnfme(adjust.getCount()); // 鏁伴噺
+ locDetl.setModiUser(userId); // 鎿嶄綔浜哄憳淇℃伅
+ locDetl.setModiTime(now);
+ locDetl.setAppeUser(userId);
+ locDetl.setAppeTime(now);
+ if (!locDetlService.insert(locDetl)) {
+ throw new CoolException("娣诲姞" + locDetl.getLocNo() + "搴撲綅锛�" + locDetl.getMatnr() + "鍟嗗搧锛�" + locDetl.getBatch() + "搴忓垪鐮佸簱瀛樻槑缁嗗け璐�");
+ }
+ // 淇濆瓨璋冩暣璁板綍
+ AdjDetl adjDetl = new AdjDetl();
+ adjDetl.setLocNo(locMast.getLocNo());
+ adjDetl.setMatnr(adjust.getMatnr());
+ adjDetl.setBatch(adjust.getBatch());
+ adjDetl.setOriQty(0.0D);
+ adjDetl.setAdjQty(adjust.getCount());
+ adjDetl.setModiTime(now);
+ adjDetl.setModiUser(userId);
+ adjDetl.setAppeTime(now);
+ adjDetl.setAppeUser(userId);
+ adjDetlService.save(adjDetl, userId);
+ }
+ // 淇敼搴撲綅鐘舵��
+ int count = locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("loc_no", locMast.getLocNo()));
+ if (locMast.getLocSts().equals("F")) {
+ if (count == 0) {
+ locMast.setLocSts("D");
+ }
+ }
+ if (locMast.getLocSts().equals("D") || locMast.getLocSts().equals("O")) {
+ if (count > 0) {
+ locMast.setLocSts("F");
+ }
+ }
+ locMast.setModiUser(userId);
+ locMast.setModiTime(new Date());
+ if (!locMastService.updateById(locMast)) {
+ throw new CoolException("鏇存柊搴撲綅鐘舵�佸け璐�");
+ }
+ }
+
+
+ @Override
+ @Transactional
+ public void cancelWrkMast(String workNo, Long userId) {
+ WrkMast wrkMast = wrkMastService.selectById(workNo);
+ if (Cools.isEmpty(wrkMast)){
+ throw new CoolException(workNo+"宸ヤ綔妗d笉瀛樺湪");
+ }
+ String locNo = ""; // 寰呬慨鏀圭洰鏍囧簱浣�
+ String locSts = ""; // 寰呬慨鏀圭洰鏍囧簱浣嶇姸鎬�
+ // 鍏ュ簱鍙栨秷锛堜慨鏀圭洰鏍囧簱浣嶏級
+ if (wrkMast.getWrkSts() < 9) {
+ locNo = wrkMast.getLocNo();
+ locSts = "O";
+
+ // 搴撲綅杞Щ
+ if (wrkMast.getIoType() == 11) {
+ // 搴撲綅杞Щ锛氭簮搴撲綅
+ LocMast locMast = locMastService.selectById(wrkMast.getSourceLocNo());
+ if (Cools.isEmpty(locMast)) {
+ throw new CoolException("鍙栨秷搴撲綅杞Щ澶辫触锛屾簮搴撲綅涓嶅瓨鍦�:"+ wrkMast.getSourceLocNo());
+ }
+ locMast.setLocSts("F");
+ locMast.setModiTime(new Date());
+ locMast.setModiUser(userId);
+ locMastService.updateById(locMast);
+ }
+ // 鍑哄簱鍙栨秷锛堜慨鏀规簮搴撲綅锛�
+ } else if (wrkMast.getWrkSts() > 10 && wrkMast.getWrkSts() != 19) {
+ locNo = wrkMast.getSourceLocNo();
+ // 鍑哄簱 ===>> F.鍦ㄥ簱
+ if (wrkMast.getIoType() > 100 && wrkMast.getIoType() != 110) {
+ locSts = "F";
+ // 绌烘澘鍑哄簱 ===>> D.绌烘《/绌烘爤鏉�
+ } else if (wrkMast.getIoType() == 110) {
+ locSts = "D";
+ // 搴撲綅杞Щ ===>> D.绌烘《/绌烘爤鏉�
+ } else if (wrkMast.getIoType() == 11) {
+ locSts = wrkMast.getFullPlt().equalsIgnoreCase("N")?"D":"F";
+ // 搴撲綅杞Щ锛氱洰鏍囧簱浣�
+ LocMast locMast = locMastService.selectById(wrkMast.getLocNo());
+ if (Cools.isEmpty(locMast)) {
+ throw new CoolException("鍙栨秷搴撲綅杞Щ澶辫触锛岀洰鏍囧簱浣嶄笉瀛樺湪:"+ wrkMast.getSourceLocNo());
+ }
+ locMast.setLocSts("O");
+ locMast.setModiTime(new Date());
+ locMast.setModiUser(userId);
+ locMastService.updateById(locMast);
+ }
+ } else {
+ throw new CoolException("褰撳墠宸ヤ綔鐘舵�佹棤娉曞彇娑�");
+ }
+ // 璁㈠崟鍏宠仈
+ List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(wrkMast.getWrkNo());
+ for (WrkDetl wrkDetl : wrkDetls) {
+ if (!Cools.isEmpty(wrkDetl.getOrderNo())) {
+ if (!BaseController.isJSON(wrkDetl.getOrderNo())) {
+ if (!orderDetlService.decrease(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getAnfme())) {
+ throw new CoolException("璁㈠崟鏁版嵁鍥炴粴澶辫触");
+ }
+ } else {
+ // 璁㈠崟鍚堝苟鍑哄簱
+ List<OrderDto> orderDtoList = JSON.parseArray(wrkDetl.getOrderNo(), OrderDto.class);
+ for (OrderDto orderDto : orderDtoList) {
+ if (!orderDetlService.decrease(orderDto.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), orderDto.getAnfme())) {
+ throw new CoolException("璁㈠崟鏁版嵁鍥炴粴澶辫触");
+ }
+ }
+ }
+ }
+ }
+ // 鍙栨秷鎿嶄綔浜哄憳璁板綍
+ wrkMast.setManuType("鎵嬪姩鍙栨秷");
+ wrkMast.setModiUser(userId);
+ wrkMast.setModiTime(new Date());
+ if (!wrkMastService.updateById(wrkMast)) {
+ throw new CoolException("鍙栨秷宸ヤ綔妗eけ璐�");
+ }
+ // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗�
+ if (!wrkMastLogService.save(wrkMast.getWrkNo())) {
+ throw new CoolException("淇濆瓨宸ヤ綔鍘嗗彶妗eけ璐�, workNo = " + wrkMast.getWrkNo());
+ }
+ // 鍒犻櫎宸ヤ綔涓绘。
+ boolean wrkMastRes = wrkMastService.deleteById(wrkMast);
+
+ if (wrkMast.getIoType() != 10 && wrkMast.getIoType() != 110) {
+ // 淇濆瓨宸ヤ綔鏄庣粏妗e巻鍙叉。
+ if (!wrkDetlLogService.save(wrkMast.getWrkNo())) {
+// throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏鍘嗗彶妗eけ璐�, workNo = " + wrkMast.getWrkNo());
+ }
+ // 鍒犻櫎宸ヤ綔妗f槑缁�
+ boolean wrkDetlRes = wrkDetlService.delete(new EntityWrapper<WrkDetl>().eq("wrk_no", workNo));
+ }
+
+ // 淇敼搴撲綅鐘舵��
+ LocMast locMast = locMastService.selectById(locNo);
+ if (Cools.isEmpty(locMast)) {
+ throw new CoolException("鍙栨秷宸ヤ綔妗eけ璐ワ紝搴撲綅涓嶅瓨鍦�:"+ locNo);
+ }
+ locMast.setLocSts(locSts);
+ locMast.setModiTime(new Date());
+ locMast.setModiUser(userId);
+ boolean locMastRes = locMastService.updateById(locMast);
+ if (!wrkMastRes || !locMastRes) {
+ throw new CoolException("淇濆瓨鏁版嵁澶辫触");
+ }
+ }
+
+ @Override
+ @Transactional
+ public void pickWrkMast(String workNo, Long userId) {
+ WrkMast wrkMast = wrkMastService.selectById(workNo);
+ if (Cools.isEmpty(wrkMast)){
+ throw new CoolException(workNo+"宸ヤ綔妗d笉瀛樺湪");
+ }
+ // 鍏ュ嚭搴撶被鍨嬪垽鏂�
+ if (wrkMast.getIoType() != 103 && wrkMast.getIoType() != 104 && wrkMast.getIoType() != 107) {
+ throw new CoolException("褰撳墠鍏ュ嚭搴撶被鍨嬫棤娉曡繘琛屾搷浣�");
+ }
+ // 宸ヤ綔鐘舵�佸垽鏂�
+ if (wrkMast.getWrkSts() < 11 || wrkMast.getWrkSts() == 15) {
+ throw new CoolException("褰撳墠宸ヤ綔鐘舵�佹棤娉曡繘琛屾搷浣�");
+ }
+ // 淇濆瓨宸ヤ綔鏄庣粏妗e巻鍙叉。
+// if (!wrkDetlLogService.save(wrkMast.getWrkNo())) {
+// throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏妗e巻鍙叉。澶辫触");
+// }
+ // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗�
+ if (!wrkMastLogService.save(wrkMast.getWrkNo())) {
+ throw new CoolException("淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗eけ璐�");
+ }
+ // 鑾峰彇鐩爣绔�
+ Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
+ .eq("type_no", wrkMast.getIoType() - 50)
+ .eq("stn_no", wrkMast.getStaNo()) // 浣滀笟绔欑偣 = 鎷f枡鍑哄簱鐨勭洰鏍囩珯
+ .eq("crn_no", wrkMast.getCrnNo()); // 鍫嗗灈鏈哄彿
+ StaDesc staDesc = staDescService.selectOne(wrapper);
+ if (Cools.isEmpty(staDesc)) {
+ throw new CoolException("鍏ュ簱璺緞涓嶅瓨鍦�");
+ }
+ // 鍫嗗灈鏈虹珯鐐�(鐩爣绔�)
+ Integer staNo = staDesc.getCrnStn();
+ // 鏇存柊宸ヤ綔妗f暟鎹姸鎬�
+ wrkMast.setIoType(wrkMast.getIoType() - 50); // 鍏ュ嚭搴撶被鍨�: 103->53,104->54,107->57
+ wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵��: 2.璁惧涓婅蛋
+ wrkMast.setSourceStaNo(wrkMast.getStaNo()); // 婧愮珯
+ wrkMast.setStaNo(staNo); // 鐩爣绔�
+ wrkMast.setLocNo(wrkMast.getSourceLocNo()); // 鐩爣搴撲綅 = 鍑哄簱鏃剁殑婧愬簱浣�
+ wrkMast.setSourceLocNo(""); // 婧愬簱浣嶆竻绌�
+ wrkMast.setModiTime(new Date());
+ wrkMast.setModiUser(userId);
+ if (!wrkMastService.updateById(wrkMast)) {
+ throw new CoolException("鏇存柊宸ヤ綔妗f暟鎹姸鎬佸け璐�");
+ }
+ // 淇敼搴撲綅鐘舵�� Q.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴�
+ LocMast locMast = locMastService.selectById(wrkMast.getLocNo());
+ locMast.setLocSts("Q");
+ locMast.setModiTime(new Date());
+ locMast.setModiUser(userId);
+ if (!locMastService.updateById(locMast)) {
+ throw new CoolException("淇敼搴撲綅鐘舵�佸け璐�");
+ }
+ }
+
+ @Override
+ public StartupDto createWaitPainWrkMastStart(List<AgvWaitPakin> list, Long userId) {
+ return null;
+ }
+
+ @Override
+ @Transactional
+ public String dealPreHaveStart(Integer wrkNo, Long userId) {
+ if (true) {
+ throw new CoolException("鍔熻兘鍋滅敤");
+ }
+ return "";
+ }
+
+ @Override
+ @Transactional
+ public void shuttleTransfer(List<String> locNos) {
+ if (Cools.isEmpty(locNos)) {
+ return;
+ }
+ if (true && !Cools.isEmpty(locNos)) {
+ throw new CoolException("鏆備笉鏀寔绉诲簱浠诲姟"); // todo:luxiaotao 绉诲簱寮�鍏�
+ }
+ LocMast one = locMastService.selectById(locNos.get(0));
+ List<Integer> rows = Utils.getGroupLoc(Integer.parseInt(locNos.get(0).substring(0, 2)));
+ List<LocMast> locMasts = locMastService.queryFreeLocMast(rows, rows.size(), one.getLocType1());
+ if (Cools.isEmpty(locMasts)) {
+ throw new CoolException("搴撲綅绉昏浆澶辫触锛屽凡鏃犵┖搴撲綅");
+ }
+ // 鍏ュ簱鎺掑簭 娣卞簱浣� ==> 娴呭簱浣�
+ switch (locMasts.get(0).getRow1()) {
+ case 4:
+ case 5:
+ case 6:
+ case 7:
+ case 12:
+ case 13:
+ case 14:
+ case 19:
+ case 20:
+ case 21:
+ Collections.reverse(locMasts);
+ break;
+ default:
+ break;
+ }
+ if (locNos.size() > locMasts.size()) {
+ throw new CoolException("鏈嶅姟鍣ㄩ敊璇�");
+ }
+ Date now = new Date();
+ // 鐢熸垚绉诲簱宸ヤ綔妗�
+ Iterator<LocMast> iterator = locMasts.iterator();
+ for (String sourceLocNo : locNos) {
+
+ while (iterator.hasNext()) {
+ LocMast sourceLoc = locMastService.selectById(sourceLocNo);
+ List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", sourceLocNo));
+ if (Cools.isEmpty(sourceLoc)){
+ throw new CoolException("鏈壘鍒板簱浣�");
+ }
+ LocMast loc = iterator.next();
+ if (Cools.isEmpty(loc)){
+ throw new CoolException("鏈壘鍒板簱浣�");
+ }
+ if (!sourceLoc.getCrnNo().equals(loc.getCrnNo())) {
+// throw new CoolException("绉昏浆搴撲綅灞炰簬涓嶅悓鍫嗗灈鏈�"); todo:luxiaotao
+ }
+ // 鑾峰彇宸ヤ綔鍙�
+ int workNo = commonService.getWorkNo(WorkNoType.PICK.type);
+ // 淇濆瓨宸ヤ綔妗�
+ WrkMast wrkMast = new WrkMast();
+ wrkMast.setWrkNo(workNo);
+ wrkMast.setIoTime(now);
+ wrkMast.setWrkSts(21L); // 宸ヤ綔鐘舵�侊細21.鐢熸垚鍑哄簱浠诲姟
+ wrkMast.setIoType(11); // 鍏ュ嚭搴撶姸鎬侊細 11.搴撴牸绉昏浇
+ wrkMast.setIoPri(15D);
+ wrkMast.setOutMost(locMastService.isOutMost(loc.getLocNo(), false)?1:0);;
+ wrkMast.setCrnNo(sourceLoc.getCrnNo());
+ wrkMast.setSourceLocNo(sourceLocNo); // 婧愬簱浣�
+ wrkMast.setLocNo(loc.getLocNo()); // 鐩爣搴撲綅
+ wrkMast.setFullPlt(Cools.isEmpty(locDetls)?"N":"Y"); // 婊℃澘锛歒
+ wrkMast.setPicking("N"); // 鎷f枡
+ wrkMast.setExitMk("N"); // 閫�鍑�
+ wrkMast.setEmptyMk(sourceLoc.getLocSts().equals("D")?"Y":"N"); // 绌烘澘
+ wrkMast.setBarcode(sourceLoc.getBarcode()); // 鎵樼洏鐮�
+ wrkMast.setLinkMis("N");
+ wrkMast.setAppeUser(9527L);
+ wrkMast.setAppeTime(now);
+ wrkMast.setModiUser(9527L);
+ wrkMast.setModiTime(now);
+ boolean res = wrkMastService.insert(wrkMast);
+ if (!res) {
+ throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
+ }
+ // 宸ヤ綔妗f槑缁嗕繚瀛�
+ for (LocDetl locDetl : locDetls) {
+ WrkDetl wrkDetl = new WrkDetl();
+ wrkDetl.sync(locDetl);
+ wrkDetl.setWrkNo(workNo);
+ wrkDetl.setIoTime(now);
+ wrkDetl.setAnfme(locDetl.getAnfme());
+ wrkDetl.setAppeTime(now);
+ wrkDetl.setAppeUser(9527L);
+ wrkDetl.setModiTime(now);
+ wrkDetl.setModiUser(9527L);
+ if (!wrkDetlService.insert(wrkDetl)) {
+ throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
+ }
+ }
+ // 淇敼婧愬簱浣嶇姸鎬�
+ if (sourceLoc.getLocSts().equals("D") || sourceLoc.getLocSts().equals("F")) {
+ sourceLoc.setLocSts("R"); // R.鍑哄簱棰勭害
+ sourceLoc.setModiUser(9527L);
+ sourceLoc.setModiTime(now);
+ if (!locMastService.updateById(sourceLoc)){
+ throw new CoolException("鏇存柊婧愬簱浣嶇姸鎬佸け璐�");
+ }
+ } else {
+ throw new CoolException(sourceLoc.getLocNo() + "婧愬簱浣嶅嚭搴撳け璐ワ紝鐘舵�侊細"+sourceLoc.getLocSts$());
+ }
+ // 淇敼鐩爣搴撲綅鐘舵��
+ if (loc.getLocSts().equals("O")) {
+ loc.setLocSts("S"); // S.鍏ュ簱棰勭害
+ loc.setModiTime(now);
+ loc.setModiUser(9527L);
+ if (!locMastService.updateById(loc)) {
+ throw new CoolException("鏇存柊鐩爣搴撲綅鐘舵�佸け璐�");
+ }
+ } else {
+ throw new CoolException("绉昏浆澶辫触锛岀洰鏍囧簱浣嶇姸鎬侊細"+loc.getLocSts$());
+ }
+
+ iterator.remove();
+ break;
+ }
+ }
+ }
+
+}
diff --git a/src/main/java/com/zy/asrs/service/impl/AgvWrkMastServiceImp.java b/src/main/java/com/zy/asrs/service/impl/AgvWrkMastServiceImp.java
new file mode 100644
index 0000000..0bdac4c
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/impl/AgvWrkMastServiceImp.java
@@ -0,0 +1,11 @@
+package com.zy.asrs.service.impl;
+
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import com.zy.asrs.entity.AgvWrkMast;
+import com.zy.asrs.mapper.AgvWrkMastMapper;
+import com.zy.asrs.service.AgvWrkMastService;
+import org.springframework.stereotype.Service;
+
+@Service
+public class AgvWrkMastServiceImp extends ServiceImpl<AgvWrkMastMapper, AgvWrkMast> implements AgvWrkMastService {
+}
diff --git a/src/main/java/com/zy/common/config/CoolExceptionHandler.java b/src/main/java/com/zy/common/config/CoolExceptionHandler.java
index b3968a3..5ac9bae 100644
--- a/src/main/java/com/zy/common/config/CoolExceptionHandler.java
+++ b/src/main/java/com/zy/common/config/CoolExceptionHandler.java
@@ -2,7 +2,6 @@
import com.core.common.R;
import com.core.exception.CoolException;
-import org.springframework.web.HttpRequestMethodNotSupportedException;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
import org.springframework.web.method.HandlerMethod;
@@ -19,10 +18,10 @@
return R.error();
}
- @ExceptionHandler(HttpRequestMethodNotSupportedException.class)
- public R handleHttpRequestMethodNotSupportedException(HttpRequestMethodNotSupportedException e) {
- return R.error();
- }
+// @ExceptionHandler(HttpRequestMethodNotSupportedException.class)
+// public R handleHttpRequestMethodNotSupportedException(HttpRequestMethodNotSupportedException e) {
+// return R.error();
+// }
@ExceptionHandler(CoolException.class)
public R handleRRException(CoolException e) {
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index ca7f762..f096d9e 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -10,7 +10,7 @@
enabled: false
datasource:
driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
- url: jdbc:sqlserver://192.168.4.15:1433;databasename=tzskasrs
+ url: jdbc:sqlserver://192.168.4.13:1433;databasename=tzskasrs
username: sa
password: sa@123
mvc:
diff --git a/src/main/webapp/static/js/agvBasDevp/basDevp.js b/src/main/webapp/static/js/agvBasDevp/basDevp.js
new file mode 100644
index 0000000..f1d5413
--- /dev/null
+++ b/src/main/webapp/static/js/agvBasDevp/basDevp.js
@@ -0,0 +1,608 @@
+var pageCurr;
+layui.use(['table','laydate', 'form'], function(){
+ var table = layui.table;
+ var $ = layui.jquery;
+ var layer = layui.layer;
+ var layDate = layui.laydate;
+ var form = layui.form;
+
+ // 鏁版嵁娓叉煋
+ tableIns = table.render({
+ elem: '#agvBasDevp',
+ headers: {token: localStorage.getItem('token')},
+ url: baseUrl+'/agvBasDevp/list/auth',
+ page: true,
+ limit: 16,
+ limits: [16, 30, 50, 100, 200, 500],
+ even: true,
+ toolbar: '#toolbar',
+ cellMinWidth: 50,
+ cols: [[
+ {type: 'checkbox', fixed: 'left'}
+// ,{field: 'id', title: 'ID', sort: true,align: 'center', fixed: 'left', width: 80}
+ ,{field: 'stationCode', align: 'center',sort:true,title: '宸ヤ綔绔欑紪鍙�'}
+ ,{field: 'devNo', align: 'center',sort:true,title: '宸ヤ綔浣嶇紪鍙�'}
+ // ,{field: 'decDesc', align: 'center',title: '璁惧鎻忚堪'}
+ // ,{field: 'devMk', align: 'center',title: '澶囨敞'}
+ ,{field: 'inEnable', align: 'center',title: '鍙叆', templet:function(row){
+ var html = "<input value='inEnable' type='checkbox' lay-skin='primary' lay-filter='tableCheckbox' table-index='"+row.LAY_TABLE_INDEX+"'";
+ if(row.inEnable === 'Y'){html += " checked ";}
+ html += ">";
+ return html;
+ }}
+ ,{field: 'outEnable', align: 'center',title: '鍙嚭', templet:function(row){
+ var html = "<input value='outEnable' type='checkbox' lay-skin='primary' lay-filter='tableCheckbox' table-index='"+row.LAY_TABLE_INDEX+"'";
+ if(row.outEnable === 'Y'){html += " checked ";}
+ html += ">";
+ return html;
+ }}
+ ,{field: 'autoing', align: 'center',title: '鑷姩', templet:function(row){
+ var html = "<input value='autoing' type='checkbox' lay-skin='primary' lay-filter='tableCheckbox' table-index='"+row.LAY_TABLE_INDEX+"'";
+ if(row.autoing === 'Y'){html += " checked ";}
+ html += ">";
+ return html;
+ }}
+ // ,{field: 'loading', align: 'center',title: '鏈夌墿', templet:function(row){
+ // var html = "<input value='loading' type='checkbox' lay-skin='primary' lay-filter='tableCheckbox' table-index='"+row.LAY_TABLE_INDEX+"'";
+ // if(row.loading === 'Y'){html += " checked ";}
+ // html += ">";
+ // return html;
+ // }}
+ // ,{field: 'canining', align: 'center',title: '鑳藉叆', templet:function(row){
+ // var html = "<input value='canining' type='checkbox' lay-skin='primary' lay-filter='tableCheckbox' table-index='"+row.LAY_TABLE_INDEX+"'";
+ // if(row.canining === 'Y'){html += " checked ";}
+ // html += ">";
+ // return html;
+ // }}
+ // ,{field: 'canouting', align: 'center',title: '鑳藉嚭', templet:function(row){
+ // var html = "<input value='canouting' type='checkbox' lay-skin='primary' lay-filter='tableCheckbox' table-index='"+row.LAY_TABLE_INDEX+"'";
+ // if(row.canouting === 'Y'){html += " checked ";}
+ // html += ">";
+ // return html;
+ // }}
+ // ,{field: 'fronting', align: 'center',title: ''}
+ // ,{field: 'rearing', align: 'center',title: ''}
+ // ,{field: 'uping', align: 'center',title: ''}
+ // ,{field: 'downing', align: 'center',title: ''}
+ // ,{field: 'inreq1', align: 'center',title: '闇�姹�1', templet:function(row){
+ // var html = "<input value='inreq1' type='checkbox' lay-skin='primary' lay-filter='tableCheckbox' table-index='"+row.LAY_TABLE_INDEX+"'";
+ // if(row.inreq1 === 'Y'){html += " checked ";}
+ // html += ">";
+ // return html;
+ // }}
+ ,{field: 'cacheShelves', align: 'center',title: '鏄惁缂撳瓨璐ф灦', templet:function(row){
+ var html = "<input value='cacheShelves' type='checkbox' lay-skin='primary' lay-filter='tableCheckbox' table-index='"+row.LAY_TABLE_INDEX+"'";
+ if(row.cacheShelves === 'Y'){html += " checked ";}
+ html += ">";
+ return html;
+ }}
+ ,{field: 'locSts$', align: 'center',title: '璐т綅鐘舵��'}
+ ,{field: 'wrkNo', align: 'center',title: '宸ヤ綔鍙�', edit:true, style:'color: blue;font-weight: bold'}
+ ,{field: 'floor', align: 'center',title: '妤�'}
+ //,{field: 'locType1$', 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: 'modiUser$', align: 'center',title: '淇敼浜哄憳',event: 'modiUser', hide:true}
+ ,{field: 'modiTime$', align: 'center',title: '淇敼鏃堕棿', hide:true}
+ // ,{field: 'appeUser$', align: 'center',title: '鍒涘缓鑰�',event: 'appeUser', style: 'text-decoration: underline;cursor:pointer'}
+ // ,{field: 'appeTime$', align: 'center',title: '娣诲姞鏃堕棿'}
+ // ,{field: 'stdQty', align: 'center',title: ''}
+ // ,{field: 'minWt', align: 'center',title: ''}
+ // ,{field: 'maxWt', align: 'center',title: ''}
+ //,{field: 'grossWt', align: 'center',title: '閲嶉噺'}
+ // ,{field: 'cartPos', align: 'center',title: ''}
+
+ ,{fixed: 'right', title:'鎿嶄綔', align: 'center', toolbar: '#operate', width:150}
+ ]],
+ request: {
+ pageName: 'curr',
+ pageSize: 'limit'
+ },
+ parseData: function (res) {
+ return {
+ 'code': res.code,
+ 'msg': res.msg,
+ 'count': res.data.total,
+ 'data': res.data.records
+ }
+ },
+ response: {
+ statusCode: 200
+ },
+ done: function(res, curr, count) {
+ if (res.code === 403) {
+ top.location.href = baseUrl+"/";
+ }
+ pageCurr=curr;
+ limit();
+ form.on('checkbox(tableCheckbox)', function (data) {
+ var _index = $(data.elem).attr('table-index')||0;
+ if(data.elem.checked){
+ res.data[_index][data.value] = 'Y';
+ }else{
+ res.data[_index][data.value] = 'N';
+ }
+ });
+ }
+ });
+
+ // 椤甸潰淇敼
+ table.on('edit(basDevp)', function (obj) {
+ if (isNaN(obj.value)) {
+ layer.msg("璇疯緭鍏ユ暟瀛�");
+ tableReload();
+ return;
+ }
+ $.ajax({
+ url: baseUrl+"/basDevp/update/auth",
+ headers: {'token': localStorage.getItem('token')},
+ data: top.reObject({
+ devNo: obj.data.devNo,
+ wrkNo: obj.value
+ }),
+ method: 'POST',
+ success: function (res) {
+ if (res.code === 200){
+ $(".layui-laypage-btn")[0].click();
+ layer.msg(res.msg);
+ } else if (res.code === 403){
+ top.location.href = baseUrl+"/";
+ }else {
+ layer.msg(res.msg)
+ }
+ }
+ })
+ });
+
+ // 鐩戝惉鎺掑簭浜嬩欢
+ table.on('sort(basDevp)', function (obj) {
+ var searchData = {};
+ $.each($('#search-box [name]').serializeArray(), function() {
+ searchData[this.name] = this.value;
+ });
+ searchData['orderByField'] = obj.field;
+ searchData['orderByType'] = obj.type;
+ tableIns.reload({
+ where: searchData,
+ page: {
+ curr: 1
+ },
+ done: function (res, curr, count) {
+ if (res.code === 403) {
+ top.location.href = baseUrl+"/";
+ }
+ pageCurr=curr;
+ limit();
+ }
+ });
+ });
+
+ // 鐩戝惉澶村伐鍏锋爮浜嬩欢
+ table.on('toolbar(basDevp)', function (obj) {
+ var checkStatus = table.checkStatus(obj.config.id);
+ switch(obj.event) {
+ case 'addData':
+ layer.open({
+ type: 2,
+ title: '鏂板',
+ maxmin: true,
+ area: [top.detailWidth, top.detailHeight],
+ shadeClose: false,
+ content: 'basDevp_detail.html',
+ success: function(layero, index){
+ layer.getChildFrame('#autoing,#loading,#canining,#canouting,#inreq1,#inreq2,#wrkNo,#barcode,#ctnType,#grossWt', index).parent().parent().hide();
+ layer.getChildFrame('#data-detail-submit-edit', index).hide();
+ clearFormVal(layer.getChildFrame('#detail', index));
+ layer.iframeAuto(index);layer.style(index, {top: (($(window).height()-layer.getChildFrame('#data-detail', index).height())/3)+"px"});
+ }
+ });
+ break;
+ case 'refreshData':
+ tableIns.reload({
+ page: {
+ curr: pageCurr
+ }
+ });
+ limit();
+ break;
+ case 'deleteData':
+ var data = checkStatus.data;
+ if (data.length === 0){
+ layer.msg('璇烽�夋嫨鏁版嵁');
+ } else {
+ layer.confirm('纭畾鍒犻櫎'+(data.length===1?'姝�':data.length)+'鏉℃暟鎹悧', function(){
+ $.ajax({
+ url: baseUrl+"/basDevp/delete/auth",
+ headers: {'token': localStorage.getItem('token')},
+ data: {param: JSON.stringify(data)},
+ method: 'POST',
+ traditional:true,
+ success: function (res) {
+ if (res.code === 200){
+ layer.closeAll();
+ tableReload(false);
+ } else if (res.code === 403){
+ top.location.href = baseUrl+"/";
+ } else {
+ layer.msg(res.msg)
+ }
+ }
+ })
+ });
+ }
+ break;
+ case 'exportData':
+ layer.confirm('纭畾瀵煎嚭Excel鍚�', {shadeClose: true}, function(){
+ var titles=[];
+ var fields=[];
+ obj.config.cols[0].map(function (col) {
+ if (col.type === 'normal' && col.hide === false && col.toolbar == null) {
+ titles.push(col.title);
+ fields.push(col.field);
+ }
+ });
+ var exportData = {};
+ $.each($('#search-box [name]').serializeArray(), function() {
+ exportData[this.name] = this.value;
+ });
+ var param = {
+ 'basDevp': exportData,
+ 'fields': fields
+ };
+ $.ajax({
+ url: baseUrl+"/basDevp/export/auth",
+ headers: {'token': localStorage.getItem('token')},
+ data: JSON.stringify(param),
+ dataType:'json',
+ contentType:'application/json;charset=UTF-8',
+ method: 'POST',
+ success: function (res) {
+ layer.closeAll();
+ if (res.code === 200) {
+ table.exportFile(titles,res.data,'xls');
+ } else if (res.code === 403) {
+ top.location.href = baseUrl+"/";
+ } else {
+ layer.msg(res.msg)
+ }
+ }
+ });
+ });
+ break;
+ }
+ });
+
+ // 鐩戝惉琛屽伐鍏蜂簨浠�
+ table.on('tool(basDevp)', function(obj){
+ var data = obj.data;
+ switch (obj.event) {
+ // 璇︽儏
+ case 'detail':
+ layer.open({
+ type: 2,
+ title: '璇︽儏',
+ maxmin: true,
+ area: [top.detailWidth, top.detailHeight],
+ shadeClose: false,
+ content: 'basDevp_detail.html',
+ success: function(layero, index){
+ setFormVal(layer.getChildFrame('#detail', index), data, true);
+ top.convertDisabled(layer.getChildFrame('#data-detail :input', index), true);
+ layer.getChildFrame('#data-detail-submit-save,#prompt', index).hide();
+ layer.getChildFrame('#data-detail-submit-edit', index).hide();
+ layer.iframeAuto(index);layer.style(index, {top: (($(window).height()-layer.getChildFrame('#data-detail', index).height())/3)+"px"});
+ layero.find('iframe')[0].contentWindow.layui.form.render('select');
+ layero.find('iframe')[0].contentWindow.layui.form.render('checkbox');
+ }
+ });
+ break;
+ // 缂栬緫
+ case 'edit':
+ layer.open({
+ type: 2,
+ title: '淇敼',
+ maxmin: true,
+ area: [top.detailWidth, top.detailHeight],
+ shadeClose: false,
+ content: 'basDevp_detail.html',
+ success: function(layero, index){
+ layer.getChildFrame('#data-detail-submit-save', index).hide();
+ setFormVal(layer.getChildFrame('#detail', index), data, false);
+ top.convertDisabled(layer.getChildFrame('#data-detail :input', index), false);
+ top.convertDisabled(layer.getChildFrame('#devNo', index), true);
+ layer.iframeAuto(index);layer.style(index, {top: (($(window).height()-layer.getChildFrame('#data-detail', index).height())/3)+"px"});
+ layero.find('iframe')[0].contentWindow.layui.form.render('select');
+ layero.find('iframe')[0].contentWindow.layui.form.render('checkbox');
+ }
+ });
+ break;
+ case 'modiUser':
+ var param = top.reObject(data).modiUser;
+ if (param === undefined) {
+ layer.msg("鏃犳暟鎹�");
+ } else {
+ layer.open({
+ type: 2,
+ title: '淇敼璇︽儏',
+ maxmin: true,
+ area: [top.detailWidth, top.detailHeight],
+ shadeClose: false,
+ content: '../user/user_detail.html',
+ success: function(layero, index){
+ $.ajax({
+ url: baseUrl+"/user/"+ param +"/auth",
+ headers: {'token': localStorage.getItem('token')},
+ method: 'GET',
+ success: function (res) {
+ if (res.code === 200){
+ setFormVal(layer.getChildFrame('#detail', index), res.data, true);
+ top.convertDisabled(layer.getChildFrame('#data-detail :input', index), true);
+ layer.getChildFrame('#password,#createTime\\$,#status', index).parent().parent().hide();
+ layer.getChildFrame('#data-detail-submit,#prompt', index).hide();
+ layer.iframeAuto(index);layer.style(index, {top: (($(window).height()-layer.getChildFrame('#data-detail', index).height())/3)+"px"});
+ layero.find('iframe')[0].contentWindow.layui.form.render('select');
+ layero.find('iframe')[0].contentWindow.layui.form.render('checkbox');
+ } else if (res.code === 403){
+ parent.location.href = "/";
+ }else {
+ layer.msg(res.msg)
+ }
+ }
+ })
+ }
+ });
+ }
+ break;
+ case 'appeUser':
+ var param = top.reObject(data).appeUser;
+ if (param === undefined) {
+ layer.msg("鏃犳暟鎹�");
+ } else {
+ layer.open({
+ type: 2,
+ title: '鍒涜鎯�',
+ maxmin: true,
+ area: [top.detailWidth, top.detailHeight],
+ shadeClose: false,
+ content: '../user/user_detail.html',
+ success: function(layero, index){
+ $.ajax({
+ url: baseUrl+"/user/"+ param +"/auth",
+ headers: {'token': localStorage.getItem('token')},
+ method: 'GET',
+ success: function (res) {
+ if (res.code === 200){
+ setFormVal(layer.getChildFrame('#detail', index), res.data, true);
+ top.convertDisabled(layer.getChildFrame('#data-detail :input', index), true);
+ layer.getChildFrame('#data-detail-submit', index).hide();
+ layer.iframeAuto(index);layer.style(index, {top: (($(window).height()-layer.getChildFrame('#data-detail', index).height())/3)+"px"});
+ layero.find('iframe')[0].contentWindow.layui.form.render('select');
+ layero.find('iframe')[0].contentWindow.layui.form.render('checkbox');
+ } else if (res.code === 403){
+ parent.location.href = "/";
+ }else {
+ layer.msg(res.msg)
+ }
+ }
+ })
+ }
+ });
+ }
+ break;
+
+ }
+ });
+
+ // 鏁版嵁淇濆瓨鍔ㄤ綔
+ form.on('submit(save)', function () {
+ if (banMsg != null){
+ layer.msg(banMsg);
+ return;
+ }
+ method("add");
+ });
+
+ // 鏁版嵁淇敼鍔ㄤ綔
+ form.on('submit(edit)', function () {
+ method("update")
+ });
+
+ function method(name){
+ var index = layer.load(1, {
+ shade: [0.5,'#000'] //0.1閫忔槑搴︾殑鑳屾櫙
+ });
+ var data = {
+// id: $('#id').val(),
+ stationCode: $('#stationCode').val(),
+ devNo: $('#devNo').val(),
+ cacheShelves: $('#cacheShelves').val(),
+ decDesc: $('#decDesc').val(),
+ devMk: $('#devMk').val(),
+ inEnable: $('#inEnable').val(),
+ outEnable: $('#outEnable').val(),
+ autoing: $('#autoing').val(),
+ loading: $('#loading').val(),
+ canining: $('#canining').val(),
+ canouting: $('#canouting').val(),
+ fronting: $('#fronting').val(),
+ rearing: $('#rearing').val(),
+ uping: $('#uping').val(),
+ downing: $('#downing').val(),
+ inreq1: $('#inreq1').val(),
+ inreq2: $('#inreq2').val(),
+ wrkNo: $('#wrkNo').val(),
+ wrkNo1: $('#wrkNo1').val(),
+ ctnType: $('#ctnType').val(),
+ barcode: $('#barcode').val(),
+ inQty: $('#inQty').val(),
+ row1: $('#row1').val(),
+ ioTime: top.strToDate($('#ioTime\\$').val()),
+ area: $('#area').val(),
+ inOk: $('#inOk').val(),
+ outOk: $('#outOk').val(),
+ modiUser: $('#modiUser').val(),
+ modiTime: top.strToDate($('#modiTime\\$').val()),
+ appeUser: $('#appeUser').val(),
+ appeTime: top.strToDate($('#appeTime\\$').val()),
+ stdQty: $('#stdQty').val(),
+ minWt: $('#minWt').val(),
+ maxWt: $('#maxWt').val(),
+ grossWt: $('#grossWt').val(),
+ cartPos: $('#cartPos').val(),
+
+ };
+ console.log(data);
+ $.ajax({
+ url: baseUrl+"/agvBasDevp/"+name+"/auth",
+ headers: {'token': localStorage.getItem('token')},
+ data: top.reObject(data),
+ method: 'POST',
+ success: function (res) {
+ if (res.code === 200){
+ parent.layer.closeAll();
+ parent.$(".layui-laypage-btn")[0].click();
+ $("#data-detail :input").each(function () {
+ $(this).val("");
+ });
+ } else if (res.code === 403){
+ top.location.href = baseUrl+"/";
+ }else {
+ layer.msg(res.msg)
+ }
+ layer.close(index);
+ }
+ })
+ }
+
+ // 澶嶉�夋浜嬩欢
+ form.on('checkbox(detailCheckbox)', function (data) {
+ var el = data.elem;
+ if (el.checked) {
+ $(el).val('Y');
+ } else {
+ $(el).val('N');
+ }
+ });
+
+ // 鎼滅储鏍忔悳绱簨浠�
+ form.on('submit(search)', function (data) {
+ pageCurr = 1;
+ tableReload(false);
+ });
+
+ // 鎼滅储鏍忛噸缃簨浠�
+ form.on('submit(reset)', function (data) {
+ pageCurr = 1;
+ clearFormVal($('#search-box'));
+ tableReload(false);
+ });
+
+ // 鏃堕棿閫夋嫨鍣�
+ layDate.render({
+ elem: '#ioTime\\$',
+ type: 'datetime'
+ });
+ layDate.render({
+ elem: '#modiTime\\$',
+ type: 'datetime'
+ });
+ layDate.render({
+ elem: '#appeTime\\$',
+ type: 'datetime'
+ });
+
+
+});
+
+// 鍏抽棴鍔ㄤ綔
+$(document).on('click','#data-detail-close', function () {
+ parent.layer.closeAll();
+});
+
+function tableReload(child) {
+ var searchData = {};
+ $.each($('#search-box [name]').serializeArray(), function() {
+ searchData[this.name] = this.value;
+ });
+ (child ? parent.tableIns : tableIns).reload({
+ where: searchData,
+ page: {
+ curr: pageCurr
+ },
+ done: function (res, curr, count) {
+ if (res.code === 403) {
+ top.location.href = baseUrl+"/";
+ }
+ pageCurr=curr;
+ if (res.data.length === 0 && count !== 0) {
+ tableIns.reload({
+ where: searchData,
+ page: {
+ curr: pageCurr-1
+ }
+ });
+ pageCurr -= 1;
+ }
+ limit(child);
+ }
+ });
+}
+
+function setFormVal(el, data, showImg) {
+ for (var val in data) {
+ var find = el.find(":input[id='" + val + "']");
+ if (find[0]!=null){
+ if (find[0].type === 'checkbox'){
+ if (data[val]==='Y'){
+ find.attr("checked","checked");
+ find.val('Y');
+ } else {
+ find.remove("checked");
+ find.val('N');
+ }
+ continue;
+ }
+ }
+ find.val(data[val]);
+ if (showImg){
+ var next = find.next();
+ if (next.get(0)){
+ if (next.get(0).localName === "img") {
+ find.hide();
+ next.attr("src", data[val]);
+ next.show();
+ }
+ }
+ }
+ }
+}
+
+function clearFormVal(el) {
+ $(':input', el)
+ .val('')
+ .removeAttr('checked')
+ .removeAttr('selected');
+}
+
+function detailScreen(index) {
+ var detail = layer.getChildFrame('#data-detail', index);
+ var height = detail.height()+60;
+ if (height > ($(window).height()*0.9)) {
+ height = ($(window).height()*0.8);
+ }
+ layer.style(index, {
+// top: (($(window).height()-height)/3)+"px",
+ height: height+'px'
+ });
+}
+
+$('body').keydown(function () {
+ if (event.keyCode === 13) {
+ $("#search").click();
+ }
+});
diff --git a/src/main/webapp/static/js/agvHandWrkMast/agvHandWrkMast.js b/src/main/webapp/static/js/agvHandWrkMast/agvHandWrkMast.js
new file mode 100644
index 0000000..686640d
--- /dev/null
+++ b/src/main/webapp/static/js/agvHandWrkMast/agvHandWrkMast.js
@@ -0,0 +1,493 @@
+var pageCurr;
+var wrkNo;
+layui.use(['table','laydate', 'form'], function(){
+ var table = layui.table;
+ var $ = layui.jquery;
+ var layer = layui.layer;
+ var layDate = layui.laydate;
+ var form = layui.form;
+
+ // 鏁版嵁娓叉煋
+ tableIns = table.render({
+ elem: '#wrkMast',
+ headers: {token: localStorage.getItem('token')},
+ url: baseUrl+'/wrkMastLog/list/auth',
+ page: true,
+ where: {manu_type : '鎵嬪姩'},
+ limit: 50,
+ limits: [50, 100, 200, 500],
+ even: true,
+ toolbar: '#toolbar',
+ cellMinWidth: 50,
+ cols: [[
+ // {type: 'checkbox'}
+ {field: 'wrkNo', align: 'center',title: '宸ヤ綔鍙�',sort: true}
+ ,{field: 'ioTime$', align: 'center',title: '宸ヤ綔鏃堕棿',sort: true, hide:true}
+ ,{field: 'wrkSts$', align: 'center',title: '宸ヤ綔鐘舵��'}
+ ,{field: 'ioType$', align: 'center',title: '鍏ュ嚭搴撶被鍨�'}
+ ,{field: 'crnNo$', align: 'center',title: '鍫嗗灈鏈�', hide:true}
+ ,{field: 'sourceStaNo$', align: 'center',title: '婧愮珯', hide:true}
+ ,{field: 'staNo$', align: 'center',title: '鐩爣绔�', hide:true}
+ ,{field: 'sourceLocNo$', align: 'center',title: '婧愬簱浣�', hide:true}
+ ,{field: 'locNo$', align: 'center',title: '鐩爣搴撲綅', hide:true}
+ ,{field: 'barcode', align: 'center',title: '鏉$爜', hide:true}
+
+ ,{field: 'manuType', align: 'center',title: '澶勭悊鏂瑰紡'}
+
+ ,{field: 'modiUser$', align: 'center',title: '鎿嶄綔浜哄憳'}
+ ,{field: 'modiTime$', align: 'center',title: '鎿嶄綔鏃堕棿'}
+
+ ,{fixed: 'right', title:'鎿嶄綔', align: 'center', toolbar: '#operate', width:100}
+ ]],
+ 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(wrkMast)', function (obj) {
+ var searchData = {};
+ $.each($('#search-box [name]').serializeArray(), function() {
+ searchData[this.name] = this.value;
+ });
+ searchData['orderByField'] = obj.field;
+ searchData['orderByType'] = obj.type;
+ tableIns.reload({
+ where: searchData,
+ page: {
+ curr: 1
+ },
+ done: function (res, curr, count) {
+ if (res.code === 403) {
+ top.location.href = baseUrl+"/";
+ }
+ pageCurr=curr;
+ limit();
+ }
+ });
+ });
+
+ // 鐩戝惉澶村伐鍏锋爮浜嬩欢
+ table.on('toolbar(wrkMast)', function (obj) {
+ var checkStatus = table.checkStatus(obj.config.id);
+ switch(obj.event) {
+ case 'exportData':
+ layer.confirm('纭畾瀵煎嚭Excel鍚�', {shadeClose: true}, function(){
+ var titles=[];
+ var fields=[];
+ obj.config.cols[0].map(function (col) {
+ if (col.type === 'normal' && col.hide === false && col.toolbar == null) {
+ titles.push(col.title);
+ fields.push(col.field);
+ }
+ });
+ var exportData = {};
+ $.each($('#search-box [name]').serializeArray(), function() {
+ exportData[this.name] = this.value;
+ });
+ var param = {
+ 'wrkMast': exportData,
+ 'fields': fields
+ };
+ $.ajax({
+ url: baseUrl+"/wrkMast/export/auth",
+ headers: {'token': localStorage.getItem('token')},
+ data: JSON.stringify(param),
+ dataType:'json',
+ contentType:'application/json;charset=UTF-8',
+ method: 'POST',
+ success: function (res) {
+ layer.closeAll();
+ if (res.code === 200) {
+ table.exportFile(titles,res.data,'xls');
+ } else if (res.code === 403) {
+ top.location.href = baseUrl+"/";
+ } else {
+ layer.msg(res.msg)
+ }
+ }
+ });
+ });
+ break;
+ }
+ });
+
+ // 鐩戝惉琛屽伐鍏蜂簨浠�
+ table.on('tool(wrkMast)', function(obj){
+ var data = obj.data;
+ switch (obj.event) {
+ // 鏄庣粏灞曠ず todo
+ case 'detlShow':
+ wrkNo = data.wrkNo;
+ // 琛ㄦ牸涓嬫柟鏄剧ず
+ // locDetl(data.wrkNo);
+ // 寮瑰眰鏄剧ず
+ layer.open({
+ type: 2,
+ title: '宸ヤ綔妗f槑缁�',
+ maxmin: true,
+ area: [top.detailWidth, top.detailHeight],
+ shadeClose: true,
+ content: 'wrkDetlLog.html',
+ success: function(layero, index){
+ }
+ });
+ break;
+ }
+ });
+
+ // 鏁版嵁淇濆瓨鍔ㄤ綔
+ form.on('submit(save)', function () {
+ if (banMsg != null){
+ layer.msg(banMsg);
+ return;
+ }
+ method("add");
+ });
+
+ // 鏁版嵁淇敼鍔ㄤ綔
+ form.on('submit(edit)', function () {
+ method("update")
+ });
+
+ function method(name){
+ var index = layer.load(1, {
+ shade: [0.5,'#000'] //0.1閫忔槑搴︾殑鑳屾櫙
+ });
+ var data = {
+ wrkNo: $('#wrkNo').val(),
+ invWh: $('#invWh').val(),
+ ymd: top.strToDate($('#ymd\\$').val()),
+ mk: $('#mk').val(),
+ whsType: $('#whsType').val(),
+ wrkSts: $('#wrkSts').val(),
+ ioType: $('#ioType').val(),
+ crnNo: $('#crnNo').val(),
+ sheetNo: $('#sheetNo').val(),
+ ioPri: $('#ioPri').val(),
+ wrkDate: top.strToDate($('#wrkDate\\$').val()),
+ locNo: $('#locNo').val(),
+ staNo: $('#staNo').val(),
+ sourceStaNo: $('#sourceStaNo').val(),
+ sourceLocNo: $('#sourceLocNo').val(),
+ locSts: $('#locSts').val(),
+ picking: $('#picking').val(),
+ linkMis: $('#linkMis').val(),
+ onlineYn: $('#onlineYn').val(),
+ updMk: $('#updMk').val(),
+ exitMk: $('#exitMk').val(),
+ pltType: $('#pltType').val(),
+ emptyMk: $('#emptyMk').val(),
+ ioTime: top.strToDate($('#ioTime\\$').val()),
+ ctnType: $('#ctnType').val(),
+ packed: $('#packed').val(),
+ oveMk: $('#oveMk').val(),
+ mtnType: $('#mtnType').val(),
+ userNo: $('#userNo').val(),
+ crnStrTime: top.strToDate($('#crnStrTime\\$').val()),
+ crnEndTime: top.strToDate($('#crnEndTime\\$').val()),
+ plcStrTime: top.strToDate($('#plcStrTime\\$').val()),
+ crnPosTime: top.strToDate($('#crnPosTime\\$').val()),
+ loadTime: $('#loadTime').val(),
+ expTime: $('#expTime').val(),
+ refWrkno: $('#refWrkno').val(),
+ refIotime: top.strToDate($('#refIotime\\$').val()),
+ modiUser: $('#modiUser').val(),
+ modiTime: top.strToDate($('#modiTime\\$').val()),
+ appeUser: $('#appeUser').val(),
+ appeTime: top.strToDate($('#appeTime\\$').val()),
+ pauseMk: $('#pauseMk').val(),
+ errorTime: top.strToDate($('#errorTime\\$').val()),
+ errorMemo: $('#errorMemo').val(),
+ ctnKind: $('#ctnKind').val(),
+ manuType: $('#manuType').val(),
+ memo: $('#memo').val(),
+ scWeight: $('#scWeight').val(),
+ logMk: $('#logMk').val(),
+ logErrTime: top.strToDate($('#logErrTime\\$').val()),
+ logErrMemo: $('#logErrMemo').val(),
+ barcode: $('#barcode').val(),
+ PdcType: $('#PdcType').val(),
+ ctnNo: $('#ctnNo').val(),
+ fullPlt: $('#fullPlt').val(),
+
+ };
+ $.ajax({
+ url: baseUrl+"/wrkMast/"+name+"/auth",
+ headers: {'token': localStorage.getItem('token')},
+ data: top.reObject(data),
+ method: 'POST',
+ success: function (res) {
+ if (res.code === 200){
+ parent.layer.closeAll();
+ parent.$(".layui-laypage-btn")[0].click();
+ $("#data-detail :input").each(function () {
+ $(this).val("");
+ });
+ } else if (res.code === 403){
+ top.location.href = baseUrl+"/";
+ }else {
+ layer.msg(res.msg)
+ }
+ layer.close(index);
+ }
+ })
+ }
+
+ // 澶嶉�夋浜嬩欢
+ form.on('checkbox(detailCheckbox)', function (data) {
+ var el = data.elem;
+ if (el.checked) {
+ $(el).val('Y');
+ } else {
+ $(el).val('N');
+ }
+ });
+
+ // 鎼滅储鏍忔悳绱簨浠�
+ form.on('submit(search)', function (data) {
+ pageCurr = 1;
+ $('#detlTable').css("display", 'none');
+ tableReload(false);
+ });
+
+ // 鎼滅储鏍忛噸缃簨浠�
+ form.on('submit(reset)', function (data) {
+ pageCurr = 1;
+ clearFormVal($('#search-box'));
+ $('#detlTable').css("display", 'none');
+ tableReload(false);
+ });
+
+ // 鏃堕棿閫夋嫨鍣�
+ layDate.render({
+ elem: '#ymd\\$',
+ type: 'datetime'
+ });
+ layDate.render({
+ elem: '#wrkDate\\$',
+ type: 'datetime'
+ });
+ layDate.render({
+ elem: '#ioTime\\$',
+ type: 'datetime'
+ });
+ layDate.render({
+ elem: '#crnStrTime\\$',
+ type: 'datetime'
+ });
+ layDate.render({
+ elem: '#crnEndTime\\$',
+ type: 'datetime'
+ });
+ layDate.render({
+ elem: '#plcStrTime\\$',
+ type: 'datetime'
+ });
+ layDate.render({
+ elem: '#crnPosTime\\$',
+ type: 'datetime'
+ });
+ layDate.render({
+ elem: '#refIotime\\$',
+ type: 'datetime'
+ });
+ layDate.render({
+ elem: '#modiTime\\$',
+ type: 'datetime'
+ });
+ layDate.render({
+ elem: '#appeTime\\$',
+ type: 'datetime'
+ });
+ layDate.render({
+ elem: '#errorTime\\$',
+ type: 'datetime'
+ });
+ layDate.render({
+ elem: '#logErrTime\\$',
+ type: 'datetime'
+ });
+ layDate.render({
+ elem: '.layui-laydate-range'
+ ,type: 'datetime'
+ ,range: true
+ });
+
+ var pageCur;
+ function locDetl(param){
+ $('#detlTable').css("display", 'block');
+ // 鏁版嵁娓叉煋
+ $('#wrkNo').val(param);
+ // 鏁版嵁娓叉煋
+ tableIns1 = table.render({
+ elem: '#wrkDetlByMap',
+ headers: {token: localStorage.getItem('token')},
+ url: baseUrl+'/wrkDetl/list/auth',
+ where: {wrk_no: param},
+ page: true,
+ limit: 16,
+ limits: [16, 30, 50, 100, 200, 500],
+ even: true,
+ toolbar: '#toolbar',
+ cellMinWidth: 50,
+ cols: [[
+ {type: 'checkbox'}
+ ,{field: 'wrkNo', align: 'center',title: '宸ヤ綔鍙�'}
+ ,{field: 'ioTime$', align: 'center',title: '宸ヤ綔鏃堕棿'}
+ ,{field: 'matnr', align: 'center',title: '鐗╂枡'}
+ ,{field: 'lgnum', align: 'center',title: '浠撳簱鍙�'}
+ ,{field: 'tbnum', align: 'center',title: '杞偍璇锋眰缂栧彿'}
+ ,{field: 'tbpos', align: 'center',title: '琛岄」鐩�'}
+ ,{field: 'zmatid', align: 'center',title: '鐗╂枡鏍囩ID'}
+ ,{field: 'maktx', align: 'center',title: '鐗╂枡鎻忚堪'}
+ ,{field: 'werks', align: 'center',title: '宸ュ巶'}
+ ,{field: 'anfme', align: 'center',title: '鏁伴噺'}
+ ,{field: 'altme', align: 'center',title: '鍗曚綅'}
+ ,{field: 'zpallet', align: 'center',title: '鎵樼洏鏉$爜'}
+ ,{field: 'bname', align: 'center',title: '鐢ㄦ埛ID'}
+ ,{field: 'memo', align: 'center',title: '澶囨敞'}
+
+ ,{fixed: 'right', title:'鎿嶄綔', align: 'center', toolbar: '#operate', width:50}
+ ]],
+ request: {
+ pageName: 'curr',
+ pageSize: 'limit'
+ },
+ parseData: function (res) {
+ return {
+ 'code': res.code,
+ 'msg': res.msg,
+ 'count': res.data.total,
+ 'data': res.data.records
+ }
+ },
+ response: {
+ statusCode: 200
+ },
+ done: function(res, curr, count) {
+ if (res.code === 403) {
+ top.location.href = baseUrl+"/";
+ }
+ pageCur=curr;
+ form.on('checkbox(tableCheckbox)', function (data) {
+ var _index = $(data.elem).attr('table-index')||0;
+ if(data.elem.checked){
+ res.data[_index][data.value] = 'Y';
+ }else{
+ res.data[_index][data.value] = 'N';
+ }
+ });
+ }
+ });
+ }
+
+});
+
+// 鍏抽棴鍔ㄤ綔
+$(document).on('click','#data-detail-close', function () {
+ parent.layer.closeAll();
+});
+
+function tableReload(child) {
+ var searchData = {};
+ $.each($('#search-box [name]').serializeArray(), function() {
+ searchData[this.name] = this.value;
+ });
+ (child ? parent.tableIns : tableIns).reload({
+ where: searchData,
+ page: {
+ curr: pageCurr
+ },
+ done: function (res, curr, count) {
+ if (res.code === 403) {
+ top.location.href = baseUrl+"/";
+ }
+ pageCurr=curr;
+ if (res.data.length === 0 && count !== 0) {
+ tableIns.reload({
+ where: searchData,
+ page: {
+ curr: pageCurr-1
+ }
+ });
+ pageCurr -= 1;
+ }
+ limit(child);
+ }
+ });
+}
+
+function setFormVal(el, data, showImg) {
+ for (var val in data) {
+ var find = el.find(":input[id='" + val + "']");
+ if (find[0]!=null){
+ if (find[0].type === 'checkbox'){
+ if (data[val]==='Y'){
+ find.attr("checked","checked");
+ find.val('Y');
+ } else {
+ find.remove("checked");
+ find.val('N');
+ }
+ continue;
+ }
+ }
+ find.val(data[val]);
+ if (showImg){
+ var next = find.next();
+ if (next.get(0)){
+ if (next.get(0).localName === "img") {
+ find.hide();
+ next.attr("src", data[val]);
+ next.show();
+ }
+ }
+ }
+ }
+}
+
+function clearFormVal(el) {
+ $(':input', el)
+ .val('')
+ .removeAttr('checked')
+ .removeAttr('selected');
+}
+
+function detailScreen(index) {
+ var detail = layer.getChildFrame('#data-detail', index);
+ var height = detail.height()+60;
+ if (height > ($(window).height()*0.9)) {
+ height = ($(window).height()*0.8);
+ }
+ layer.style(index, {
+// top: (($(window).height()-height)/3)+"px",
+ height: height+'px'
+ });
+}
+
+$('body').keydown(function () {
+ if (event.keyCode === 13) {
+ $("#search").click();
+ }
+});
diff --git a/src/main/webapp/static/js/agvLocDetl/locDetl.js b/src/main/webapp/static/js/agvLocDetl/locDetl.js
new file mode 100644
index 0000000..8b71add
--- /dev/null
+++ b/src/main/webapp/static/js/agvLocDetl/locDetl.js
@@ -0,0 +1,601 @@
+var pageCurr;
+var tableData;
+function getCol() {
+ var cols = [
+ {field: 'locNo$', align: 'center',title: '搴撲綅鍙�'},
+ {field: 'matnr', align: 'center',title: '鐗╂枡鍙�', sort:true}
+ ,{field: 'maktx', align: 'center',title: '鐗╂枡鍙�', sort:true}
+ ,{field: 'orderNo', align: 'center',title: '鍗曟嵁缂栧彿', hide: false}
+ ,{field: 'batch', align: 'center',title: '搴忓垪鐮�', width: 300, sort:true}
+ ,{field: 'anfme', align: 'center',title: '鏁伴噺'}
+ ,{field: 'zpallet', align: 'center',title: '鎵樼洏鏉$爜'}
+
+ ,{field: 'specs', align: 'center',title: '瑙勬牸'}
+ ,{field: 'model', align: 'center',title: '浠g爜', hide: true}
+ ,{field: 'color', align: 'center',title: '棰滆壊', hide: true}
+ ,{field: 'brand', align: 'center',title: '鍝佺墝', hide: true}
+ ,{field: 'unit', align: 'center',title: '鍗曚綅', hide: true}
+ ,{field: 'price', align: 'center',title: '鍗曚环', hide: true}
+ ,{field: 'sku', align: 'center',title: 'sku', hide: true}
+ ,{field: 'units', align: 'center',title: '鍖呮暟', hide: true}
+ ,{field: 'barcode', align: 'center',title: '鏉$爜', hide: true}
+ ,{field: 'origin', align: 'center',title: '鐗╂枡鐘舵��', hide: true}
+ ,{field: 'manu', align: 'center',title: '鍘傚', hide: true}
+ ,{field: 'manuDate', align: 'center',title: '鍗曟嵁鏃堕棿', hide: true}
+ ,{field: 'itemNum', align: 'center',title: '鍝侀」鏁�', hide: true}
+ ,{field: 'safeQty', align: 'center',title: '瀹夊叏搴撳瓨閲�', hide: true}
+ ,{field: 'weight', align: 'center',title: '鍗曠鍑�閲�', hide: true}
+ ,{field: 'length', align: 'center',title: '鍗曠姣涢噸', hide: true}
+ ,{field: 'volume', align: 'center',title: '鍗曠浣撶Н', hide: true}
+ ,{field: 'threeCode', align: 'center',title: '绠卞瓙灏哄', hide: true}
+ ,{field: 'supp', align: 'center',title: '渚涘簲鍟�', hide: true}
+ ,{field: 'suppCode', align: 'center',title: '渚涘簲鍟嗙紪鐮�', hide: true}
+ ,{field: 'beBatch$', align: 'center',title: '鏄惁鎵规', hide: true}
+ ,{field: 'deadTime', align: 'center',title: '淇濊川鏈�', hide: true}
+ ,{field: 'deadWarn', align: 'center',title: '棰勮澶╂暟', hide: true}
+ ,{field: 'source$', align: 'center',title: '鍒惰喘', hide: true}
+ ,{field: 'check$', align: 'center',title: '瑕佹眰妫�楠�', hide: true}
+ ,{field: 'danger$', align: 'center',title: '鍗遍櫓鍝�', hide: true}
+
+ ];
+
+ // cols.push.apply(cols, detlCols);
+ cols.push({field: 'modiUser$', align: 'center',title: '淇敼浜哄憳',hide: true}
+ ,{field: 'modiTime$', align: 'center',title: '淇敼鏃堕棿'}
+ ,{field: 'stockFreeze', align: 'center',title: '搴撳瓨鍐荤粨', templet: '#stockFreezeTpl'}
+ )
+ return cols;
+}
+
+layui.use(['table','laydate', 'form'], function(){
+ var table = layui.table;
+ var $ = layui.jquery;
+ var layer = layui.layer;
+ var layDate = layui.laydate;
+ var form = layui.form;
+
+ // 鏁版嵁娓叉煋
+ tableIns = table.render({
+ elem: '#agvLocDetl',
+ headers: {token: localStorage.getItem('token')},
+ url: baseUrl+'/agvLocDetl/list/auth',
+ page: true,
+ limit: 20,
+ where:{
+ unreason: false
+ },
+ limits: [20, 30, 50, 100, 200, 500],
+ even: true,
+ toolbar: '#toolbar',
+ cellMinWidth: 50,
+ cols: [getCol()],
+ request: {
+ pageName: 'curr',
+ pageSize: 'limit'
+ },
+ parseData: function (res) {
+ return {
+ 'code': res.code,
+ 'msg': res.msg,
+ 'count': res.data.total,
+ 'data': res.data.records
+ }
+ },
+ response: {
+ statusCode: 200
+ },
+ done: function(res, curr, count) {
+ if (res.code === 403) {
+ top.location.href = baseUrl+"/";
+ }
+ tableData = table.cache.locDetl;
+ pageCurr=curr;
+ limit();
+ form.on('checkbox(tableCheckbox)', function (data) {
+ var _index = $(data.elem).attr('table-index')||0;
+ if(data.elem.checked){
+ res.data[_index][data.value] = 'Y';
+ }else{
+ res.data[_index][data.value] = 'N';
+ }
+ });
+ }
+ });
+
+ // 鐩戝惉鎺掑簭浜嬩欢
+ table.on('sort(locDetl)', function (obj) {
+ var searchData = {};
+ $.each($('#search-box [name]').serializeArray(), function() {
+ searchData[this.name] = this.value;
+ });
+ searchData['orderByField'] = obj.field;
+ searchData['orderByType'] = obj.type;
+ tableIns.reload({
+ where: searchData,
+ page: {
+ curr: 1
+ },
+ done: function (res, curr, count) {
+ if (res.code === 403) {
+ top.location.href = baseUrl+"/";
+ }
+ pageCurr=curr;
+ limit();
+ }
+ });
+ });
+
+ // 鐩戝惉澶村伐鍏锋爮浜嬩欢
+ table.on('toolbar(locDetl)', function (obj) {
+ var checkStatus = table.checkStatus(obj.config.id);
+ switch(obj.event) {
+ case 'addData':
+ layer.open({
+ type: 2,
+ title: '鏂板',
+ maxmin: true,
+ area: [top.detailWidth, top.detailHeight],
+ shadeClose: false,
+ content: 'locDetl_detail.html',
+ success: function(layero, index){
+ layer.getChildFrame('#data-detail-submit-edit', index).hide();
+ clearFormVal(layer.getChildFrame('#detail', index));
+ layer.iframeAuto(index);layer.style(index, {top: (($(window).height()-layer.getChildFrame('#data-detail', index).height())/3)+"px"});
+ }
+ });
+ break;
+ case 'refreshData':
+ tableIns.reload({
+ page: {
+ curr: pageCurr
+ }
+ });
+ limit();
+ break;
+ case 'deleteData':
+ var data = checkStatus.data;
+ if (data.length === 0){
+ layer.msg('璇烽�夋嫨鏁版嵁');
+ } else {
+ layer.confirm('纭畾鍒犻櫎'+(data.length===1?'姝�':data.length)+'鏉℃暟鎹悧', function(){
+ $.ajax({
+ url: baseUrl+"/locDetl/delete/auth",
+ headers: {'token': localStorage.getItem('token')},
+ data: {param: JSON.stringify(data)},
+ method: 'POST',
+ traditional:true,
+ success: function (res) {
+ if (res.code === 200){
+ layer.closeAll();
+ tableReload(false);
+ } else if (res.code === 403){
+ top.location.href = baseUrl+"/";
+ } else {
+ layer.msg(res.msg)
+ }
+ }
+ })
+ });
+ }
+ break;
+ case 'exportData':
+ layer.confirm('纭畾瀵煎嚭Excel鍚�', {shadeClose: true}, function(){
+ var titles=[];
+ var fields=[];
+ obj.config.cols[0].map(function (col) {
+ if (col.type === 'normal' && col.hide === false && col.toolbar == null) {
+ titles.push(col.title);
+ fields.push(col.field);
+ }
+ });
+ var exportData = {};
+ $.each($('#search-box [name]').serializeArray(), function() {
+ exportData[this.name] = this.value;
+ });
+ var param = {
+ 'locDetl': exportData,
+ 'fields': fields
+ };
+ var loadIndex = layer.msg('姝e湪瀵煎嚭...', {icon: 16, shade: 0.01, time: false});
+ $.ajax({
+ url: baseUrl+"/locDetl/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.close(loadIndex);
+ layer.closeAll();
+ if (res.code === 200) {
+ table.exportFile(titles,res.data,'xls');
+ } else if (res.code === 403) {
+ top.location.href = baseUrl+"/";
+ } else {
+ layer.msg(res.msg)
+ }
+ }
+ });
+ });
+ break;
+ }
+ });
+
+ // 鐩戝惉琛屽伐鍏蜂簨浠�
+ table.on('tool(locDetl)', function(obj){
+ var data = obj.data;
+ switch (obj.event) {
+ // 璇︽儏
+ case 'detail':
+ layer.open({
+ type: 2,
+ title: '璇︽儏',
+ maxmin: true,
+ area: [top.detailWidth, top.detailHeight],
+ shadeClose: false,
+ content: 'locDetl_detail.html',
+ success: function(layero, index){
+ setFormVal(layer.getChildFrame('#detail', index), data, true);
+ top.convertDisabled(layer.getChildFrame('#data-detail :input', index), true);
+ layer.getChildFrame('#data-detail-submit-save,#data-detail-submit-edit,#prompt', index).hide();
+ layer.iframeAuto(index);layer.style(index, {top: (($(window).height()-layer.getChildFrame('#data-detail', index).height())/3)+"px"});
+ layero.find('iframe')[0].contentWindow.layui.form.render('select');
+ layero.find('iframe')[0].contentWindow.layui.form.render('checkbox');
+ }
+ });
+ break;
+ // 缂栬緫
+ case 'edit':
+ layer.open({
+ type: 2,
+ title: '淇敼',
+ maxmin: true,
+ area: [top.detailWidth, top.detailHeight],
+ shadeClose: false,
+ content: 'locDetl_detail.html',
+ success: function(layero, index){
+ layer.getChildFrame('#data-detail-submit-save', index).hide();
+ setFormVal(layer.getChildFrame('#detail', index), data, false);
+ top.convertDisabled(layer.getChildFrame('#data-detail :input', index), false);
+ top.convertDisabled(layer.getChildFrame('#locNo,#matnr', index), true);
+ layer.iframeAuto(index);layer.style(index, {top: (($(window).height()-layer.getChildFrame('#data-detail', index).height())/3)+"px"});
+ layero.find('iframe')[0].contentWindow.layui.form.render('select');
+ layero.find('iframe')[0].contentWindow.layui.form.render('checkbox');
+ }
+ });
+ break;
+ case 'locNo':
+ var param = top.reObject(data).locNo;
+ if (param === undefined) {
+ layer.msg("鏃犳暟鎹�");
+ } else {
+ layer.open({
+ type: 2,
+ title: '搴撲綅鍙疯鎯�',
+ maxmin: true,
+ area: [top.detailWidth, top.detailHeight],
+ shadeClose: false,
+ content: '../locMast/locMast_detail.html',
+ success: function(layero, index){
+ $.ajax({
+ url: baseUrl+"/locMast/"+ param +"/auth",
+ headers: {'token': localStorage.getItem('token')},
+ method: 'GET',
+ success: function (res) {
+ if (res.code === 200){
+ setFormVal(layer.getChildFrame('#detail', index), res.data, true);
+ top.convertDisabled(layer.getChildFrame('#data-detail :input', index), true);
+ layer.getChildFrame('#data-detail-submit-save,#data-detail-submit-edit,#prompt', index).hide();
+ layer.iframeAuto(index);layer.style(index, {top: (($(window).height()-layer.getChildFrame('#data-detail', index).height())/3)+"px"});
+ layero.find('iframe')[0].contentWindow.layui.form.render('select');
+ layero.find('iframe')[0].contentWindow.layui.form.render('checkbox');
+ } else if (res.code === 403){
+ parent.location.href = "/";
+ }else {
+ layer.msg(res.msg)
+ }
+ }
+ })
+ }
+ });
+ }
+ break;
+ case 'modiUser':
+ var param = top.reObject(data).modiUser;
+ if (param === undefined) {
+ layer.msg("鏃犳暟鎹�");
+ } else {
+ layer.open({
+ type: 2,
+ title: '淇敼浜哄憳璇︽儏',
+ maxmin: true,
+ area: [top.detailWidth, top.detailHeight],
+ shadeClose: false,
+ content: '../user/user_detail.html',
+ success: function(layero, index){
+ $.ajax({
+ url: baseUrl+"/user/"+ param +"/auth",
+ headers: {'token': localStorage.getItem('token')},
+ method: 'GET',
+ success: function (res) {
+ if (res.code === 200){
+ setFormVal(layer.getChildFrame('#detail', index), res.data, true);
+ top.convertDisabled(layer.getChildFrame('#data-detail :input', index), true);
+ layer.getChildFrame('#data-detail-submit-save,#data-detail-submit-edit,#prompt', index).hide();
+ layer.iframeAuto(index);layer.style(index, {top: (($(window).height()-layer.getChildFrame('#data-detail', index).height())/3)+"px"});
+ layero.find('iframe')[0].contentWindow.layui.form.render('select');
+ layero.find('iframe')[0].contentWindow.layui.form.render('checkbox');
+ } else if (res.code === 403){
+ parent.location.href = "/";
+ }else {
+ layer.msg(res.msg)
+ }
+ }
+ })
+ }
+ });
+ }
+ break;
+ case 'appeUser':
+ var param = top.reObject(data).appeUser;
+ if (param === undefined) {
+ layer.msg("鏃犳暟鎹�");
+ } else {
+ layer.open({
+ type: 2,
+ title: '鍒涘缓鑰呰鎯�',
+ maxmin: true,
+ area: [top.detailWidth, top.detailHeight],
+ shadeClose: false,
+ content: '../user/user_detail.html',
+ success: function(layero, index){
+ $.ajax({
+ url: baseUrl+"/user/"+ param +"/auth",
+ headers: {'token': localStorage.getItem('token')},
+ method: 'GET',
+ success: function (res) {
+ if (res.code === 200){
+ setFormVal(layer.getChildFrame('#detail', index), res.data, true);
+ top.convertDisabled(layer.getChildFrame('#data-detail :input', index), true);
+ layer.getChildFrame('#data-detail-submit-save,#data-detail-submit-edit,#prompt', index).hide();
+ layer.iframeAuto(index);layer.style(index, {top: (($(window).height()-layer.getChildFrame('#data-detail', index).height())/3)+"px"});
+ layero.find('iframe')[0].contentWindow.layui.form.render('select');
+ layero.find('iframe')[0].contentWindow.layui.form.render('checkbox');
+ } else if (res.code === 403){
+ parent.location.href = "/";
+ }else {
+ layer.msg(res.msg)
+ }
+ }
+ })
+ }
+ });
+ }
+ break;
+
+ }
+ });
+
+ // 鏁版嵁淇濆瓨鍔ㄤ綔
+ form.on('submit(save)', function () {
+ if (banMsg != null){
+ layer.msg(banMsg);
+ return;
+ }
+ method("add");
+ });
+
+ // 鏁版嵁淇敼鍔ㄤ綔
+ form.on('submit(edit)', function () {
+ method("update")
+ });
+
+ function method(name){
+ var index = layer.load(1, {
+ shade: [0.5,'#000'] //0.1閫忔槑搴︾殑鑳屾櫙
+ });
+ var data = {
+// id: $('#id').val(),
+ locNo: $('#locNo').val(),
+ matnr: $('#matnr').val(),
+ lgnum: $('#lgnum').val(),
+ tbnum: $('#tbnum').val(),
+ tbpos: $('#tbpos').val(),
+ zmatid: $('#zmatid').val(),
+ maktx: $('#maktx').val(),
+ werks: $('#werks').val(),
+ anfme: $('#anfme').val(),
+ altme: $('#altme').val(),
+ zpallet: $('#zpallet').val(),
+ bname: $('#bname').val(),
+ memo: $('#memo').val(),
+ modiUser: $('#modiUser').val(),
+ modiTime: top.strToDate($('#modiTime\\$').val()),
+ appeUser: $('#appeUser').val(),
+ appeTime: top.strToDate($('#appeTime\\$').val()),
+
+ };
+ $.ajax({
+ url: baseUrl+"/locDetl/"+name+"/auth",
+ headers: {'token': localStorage.getItem('token')},
+ data: top.reObject(data),
+ method: 'POST',
+ success: function (res) {
+ if (res.code === 200){
+ parent.layer.closeAll();
+ parent.$(".layui-laypage-btn")[0].click();
+ $("#data-detail :input").each(function () {
+ $(this).val("");
+ });
+ } else if (res.code === 403){
+ top.location.href = baseUrl+"/";
+ }else {
+ layer.msg(res.msg)
+ }
+ layer.close(index);
+ }
+ })
+ }
+
+ // 澶嶉�夋浜嬩欢
+ form.on('checkbox(detailCheckbox)', function (data) {
+ var el = data.elem;
+ if (el.checked) {
+ $(el).val('Y');
+ } else {
+ $(el).val('N');
+ }
+ });
+
+ // 鎼滅储鏍忔悳绱簨浠�
+ form.on('submit(search)', function (data) {
+ pageCurr = 1;
+ tableReload(false);
+ });
+
+
+ // 鎼滅储鏍忛噸缃簨浠�
+ form.on('submit(reset)', function (data) {
+ pageCurr = 1;
+ clearFormVal($('#search-box'));
+ tableReload(false);
+ });
+
+ //鏌ョ湅寮傚父鏁版嵁
+ form.on('submit(unreason)', function (data) {
+ pageCurr = 1;
+
+ tableIns.reload({
+ where: {
+ unreason: true
+ },
+ page: {
+ curr: pageCurr
+ },
+ done: function (res, curr, count) {
+
+ if (res.code === 403) {
+ top.location.href = baseUrl+"/";
+ }
+ pageCurr=curr;
+
+ limit(child);
+ }
+ });
+ });
+
+ // 鏃堕棿閫夋嫨鍣�
+ layDate.render({
+ elem: '#modiTime\\$',
+ type: 'datetime'
+ });
+ layDate.render({
+ elem: '#appeTime\\$',
+ type: 'datetime'
+ });
+
+ form.on('switch(stockFreezeSwitch)', function (obj) {
+ let index = obj.othis.parents('tr').attr("data-index");
+ let data = tableData[index];
+ data[this.stockFreeze] = obj.elem.checked?1:0;
+ http.post(baseUrl + "/locDetl/updateStockFreeze/auth", {
+ locNo: data.locNo,
+ matnr: data.matnr,
+ stockFreeze: data[this.stockFreeze]
+ }, function (res) {
+ layer.msg(res.msg, {icon: 1});
+ });
+ })
+
+
+});
+
+// 鍏抽棴鍔ㄤ綔
+$(document).on('click','#data-detail-close', function () {
+ parent.layer.closeAll();
+});
+
+function tableReload(child) {
+ var searchData = {
+ unreason: false
+ };
+ $.each($('#search-box [name]').serializeArray(), function() {
+ searchData[this.name] = this.value;
+ });
+ (child ? parent.tableIns : tableIns).reload({
+ where: searchData,
+ page: {
+ curr: pageCurr
+ },
+ done: function (res, curr, count) {
+ if (res.code === 403) {
+ top.location.href = baseUrl+"/";
+ }
+ pageCurr=curr;
+ if (res.data.length === 0 && count !== 0) {
+ tableIns.reload({
+ where: searchData,
+ page: {
+ curr: pageCurr-1
+ }
+ });
+ pageCurr -= 1;
+ }
+ limit(child);
+ }
+ });
+}
+
+function setFormVal(el, data, showImg) {
+ for (var val in data) {
+ var find = el.find(":input[id='" + val + "']");
+ if (find[0]!=null){
+ if (find[0].type === 'checkbox'){
+ if (data[val]==='Y'){
+ find.attr("checked","checked");
+ find.val('Y');
+ } else {
+ find.remove("checked");
+ find.val('N');
+ }
+ continue;
+ }
+ }
+ find.val(data[val]);
+ if (showImg){
+ var next = find.next();
+ if (next.get(0)){
+ if (next.get(0).localName === "img") {
+ find.hide();
+ next.attr("src", data[val]);
+ next.show();
+ }
+ }
+ }
+ }
+}
+
+function clearFormVal(el) {
+ $(':input', el)
+ .val('')
+ .removeAttr('checked')
+ .removeAttr('selected');
+}
+
+function detailScreen(index) {
+ var detail = layer.getChildFrame('#data-detail', index);
+ var height = detail.height()+60;
+ if (height > ($(window).height()*0.9)) {
+ height = ($(window).height()*0.8);
+ }
+ layer.style(index, {
+// top: (($(window).height()-height)/3)+"px",
+ height: height+'px'
+ });
+}
+
+$('body').keydown(function () {
+ if (event.keyCode === 13) {
+ $("#search").click();
+ }
+});
diff --git a/src/main/webapp/static/js/agvLocMast/locMast.js b/src/main/webapp/static/js/agvLocMast/locMast.js
new file mode 100644
index 0000000..9cd58de
--- /dev/null
+++ b/src/main/webapp/static/js/agvLocMast/locMast.js
@@ -0,0 +1,622 @@
+var pageCurr;
+layui.use(['table','laydate', 'form'], function(){
+ var table = layui.table;
+ var $ = layui.jquery;
+ var layer = layui.layer;
+ var layDate = layui.laydate;
+ var form = layui.form;
+
+ // 鏁版嵁娓叉煋
+ tableIns = table.render({
+ elem: '#agvLocMast',
+ headers: {token: localStorage.getItem('token')},
+ url: baseUrl+'/agvLocMast/list/auth',
+ page: true,
+ limit: 16,
+ limits: [16, 30, 50, 100, 200, 500],
+ even: true,
+ toolbar: '#toolbar',
+ cellMinWidth: 50,
+ cols: [[
+ {type: 'checkbox', fixed: 'left'}
+// ,{field: 'id', title: 'ID', sort: true,align: 'center', fixed: 'left', width: 80}
+ ,{field: 'locNo', align: 'center',title: '搴撲綅鍙�',sort:true}
+ ,{field: 'locSts$', align: 'center',title: '搴撲綅鐘舵��',width:200}
+ // ,{field: 'whsType$', align: 'center',title: '搴撲綅绫诲瀷'}
+ // ,{field: 'pltType', align: 'center',title: ''}
+ // ,{field: 'ctnType', align: 'center',title: ''}
+ // ,{field: 'locSts', align: 'center',title: ''}
+ // ,{field: 'sheetNo', align: 'center',title: ''}
+ //,{field: 'crnNo', align: 'center',title: '鍫嗗灈鏈哄彿'}
+ ,{field: 'qrCodeValue', align: 'center',title: '浜岀淮鐮佸��', sort:true}
+ ,{field: 'row1', align: 'center',title: '鎺�', sort:true}
+ ,{field: 'bay1', align: 'center',title: '鍒�', sort:true}
+ ,{field: 'lev1', align: 'center',title: '灞�', sort:true}
+ ,{field: 'floor', align: 'center',title: '妤�', sort:true}
+ ,{field: 'fullPlt', align: 'center',title: '婊℃澘', templet:function(row){
+ var html = "<input value='fullPlt' type='checkbox' lay-skin='primary' lay-filter='tableCheckbox' disabled table-index='"+row.LAY_TABLE_INDEX+"'";
+ if(row.fullPlt === 'Y'){html += " checked ";}
+ html += ">";
+ return html;
+ },width:80}
+ // ,{field: 'outEnable', align: 'center',title: ''}
+ // ,{field: 'ioTime$', align: 'center',title: ''}
+ // ,{field: 'firstTime$', align: 'center',title: ''}
+ ,{field: 'modiUser$', align: 'center',title: '淇敼浜哄憳', hide:true}
+ ,{field: 'modiTime$', align: 'center',title: '淇敼鏃堕棿', hide:true}
+ // ,{field: 'appeUser$', align: 'center',title: '鍒涘缓鑰�',event: 'appeUser', style: 'text-decoration: underline;cursor:pointer'}
+ // ,{field: 'appeTime$', align: 'center',title: '娣诲姞鏃堕棿'}
+ // ,{field: 'errorTime$', align: 'center',title: ''}
+ // ,{field: 'errorMemo', align: 'center',title: ''}
+ // ,{field: 'ctnKind', align: 'center',title: ''}
+ // ,{field: 'scWeight', align: 'center',title: ''}
+ // ,{field: 'invWh', align: 'center',title: ''}
+ // ,{field: 'mk', align: 'center',title: ''}
+ // ,{field: 'barcode', align: 'center',title: ''}
+ // ,{field: 'PdcType', align: 'center',title: ''}
+ // ,{field: 'ctnNo', align: 'center',title: ''}
+ //,{field: 'locType1$', align: 'center',title: '楂樹綆绫诲瀷'}
+ // ,{field: 'locType2$', align: 'center',title: '瀹界獎绫诲瀷'}
+ // ,{field: 'locType3$', align: 'center',title: '杞婚噸绫诲瀷'}
+
+ ,{fixed: 'right', title:'鎿嶄綔', align: 'center', toolbar: '#operate', width:100}
+ ]],
+ request: {
+ pageName: 'curr',
+ pageSize: 'limit'
+ },
+ parseData: function (res) {
+ return {
+ 'code': res.code,
+ 'msg': res.msg,
+ 'count': res.data.total,
+ 'data': res.data.records
+ }
+ },
+ response: {
+ statusCode: 200
+ },
+ done: function(res, curr, count) {
+ if (res.code === 403) {
+ top.location.href = baseUrl+"/";
+ }
+ pageCurr=curr;
+ limit();
+ form.on('checkbox(tableCheckbox)', function (data) {
+ var _index = $(data.elem).attr('table-index')||0;
+ if(data.elem.checked){
+ res.data[_index][data.value] = 'Y';
+ }else{
+ res.data[_index][data.value] = 'N';
+ }
+ });
+ }
+ });
+
+ // 鐩戝惉鎺掑簭浜嬩欢
+ table.on('sort(locMast)', function (obj) {
+ var searchData = {};
+ $.each($('#search-box [name]').serializeArray(), function() {
+ searchData[this.name] = this.value;
+ });
+ searchData['orderByField'] = obj.field;
+ searchData['orderByType'] = obj.type;
+ tableIns.reload({
+ where: searchData,
+ page: {
+ curr: 1
+ },
+ done: function (res, curr, count) {
+ if (res.code === 403) {
+ top.location.href = baseUrl+"/";
+ }
+ pageCurr=curr;
+ limit();
+ }
+ });
+ });
+
+ // 鐩戝惉澶村伐鍏锋爮浜嬩欢
+ table.on('toolbar(locMast)', function (obj) {
+ var checkStatus = table.checkStatus(obj.config.id);
+ switch(obj.event) {
+ case 'addData':
+ layer.open({
+ type: 2,
+ title: '鏂板',
+ maxmin: true,
+ area: ['500px', top.detailHeight],
+ shadeClose: false,
+ content: 'locMast_detail.html',
+ success: function(layero, index){
+ layer.getChildFrame('#data-detail--esubmitdit', index).hide();
+ clearFormVal(layer.getChildFrame('#detail', index));
+ top.convertDisabled(layer.getChildFrame('#data-detail :input', index), false);
+ layer.iframeAuto(index);layer.style(index, {top: (($(window).height()-layer.getChildFrame('#data-detail', index).height())/3)+"px"});
+ }
+ });
+ break;
+ case 'refreshData':
+ tableIns.reload({
+ page: {
+ curr: pageCurr
+ }
+ });
+ limit();
+ break;
+ case 'deleteData':
+ var data = checkStatus.data;
+ if (data.length === 0){
+ layer.msg('璇烽�夋嫨鏁版嵁');
+ } else {
+ layer.confirm('纭畾鍒犻櫎'+(data.length===1?'姝�':data.length)+'鏉℃暟鎹悧', function(){
+ $.ajax({
+ url: baseUrl+"/agvLocMast/delete/auth",
+ headers: {'token': localStorage.getItem('token')},
+ data: {param: JSON.stringify(data)},
+ method: 'POST',
+ traditional:true,
+ success: function (res) {
+ if (res.code === 200){
+ layer.closeAll();
+ tableReload(false);
+ } else if (res.code === 403){
+ top.location.href = baseUrl+"/";
+ } else {
+ layer.msg(res.msg)
+ }
+ }
+ })
+ });
+ }
+ break;
+ case 'exportData':
+ layer.confirm('纭畾瀵煎嚭Excel鍚�', {shadeClose: true}, function(){
+ var titles=[];
+ var fields=[];
+ obj.config.cols[0].map(function (col) {
+ if (col.type === 'normal' && col.hide === false && col.toolbar == null) {
+ titles.push(col.title);
+ fields.push(col.field);
+ }
+ });
+ var exportData = {};
+ $.each($('#search-box [name]').serializeArray(), function() {
+ exportData[this.name] = this.value;
+ });
+ var param = {
+ 'locMast': exportData,
+ 'fields': fields
+ };
+ $.ajax({
+ url: baseUrl+"/agvLocMast/export/auth",
+ headers: {'token': localStorage.getItem('token')},
+ data: JSON.stringify(param),
+ dataType:'json',
+ contentType:'application/json;charset=UTF-8',
+ method: 'POST',
+ success: function (res) {
+ layer.closeAll();
+ if (res.code === 200) {
+ table.exportFile(titles,res.data,'xls');
+ } else if (res.code === 403) {
+ top.location.href = baseUrl+"/";
+ } else {
+ layer.msg(res.msg)
+ }
+ }
+ });
+ });
+ break;
+ case "init":
+ layer.prompt({title: '璇疯緭鍏ュ彛浠わ紝骞堕噸缃簱浣�', formType: 1, shadeClose: true}, function(pass, idx){
+ http.get(baseUrl+"/locMast/init/pwd", {pwd: pass}, function (res) {
+ if (res.data) {
+ layer.open({
+ type: 1,
+ title: '鍒濆鍖栧簱浣�',
+ area: ["400px"],
+ maxmin: true,
+ shadeClose: true,
+ content: $("#resetLocDiv"),
+ success: function (layero, index) {
+
+ }
+ })
+ } else {
+ layer.msg("鍙d护閿欒");
+ }
+ layer.close(idx);
+ })
+ });
+ break;
+ }
+ });
+
+ // 鐩戝惉琛屽伐鍏蜂簨浠�
+ table.on('tool(locMast)', function(obj){
+ var data = obj.data;
+ switch (obj.event) {
+ // 璇︽儏
+ case 'detail':
+ layer.open({
+ type: 2,
+ title: '璇︽儏',
+ maxmin: true,
+ area: [top.detailWidth, top.detailHeight],
+ shadeClose: false,
+ content: 'locMast_detail.html',
+ success: function(layero, index){
+ setFormVal(layer.getChildFrame('#detail', index), data, true);
+ top.convertDisabled(layer.getChildFrame('#data-detail :input', index), true);
+ layer.getChildFrame('#data-detail-submit-save,#prompt', index).hide();
+ layer.getChildFrame('#data-detail-submit-edit', index).hide();
+ layer.iframeAuto(index);layer.style(index, {top: (($(window).height()-layer.getChildFrame('#data-detail', index).height())/3)+"px"});
+ layero.find('iframe')[0].contentWindow.layui.form.render('select');
+ layero.find('iframe')[0].contentWindow.layui.form.render('checkbox');
+ }
+ });
+ break;
+ // 缂栬緫
+ case 'edit':
+ layer.open({
+ type: 2,
+ title: '淇敼',
+ maxmin: true,
+ area: ['500px', top.detailHeight],
+ shadeClose: false,
+ content: 'locMast_detail.html',
+ success: function(layero, index){
+ layer.getChildFrame('#data-detail-submit-save', index).hide();
+ setFormVal(layer.getChildFrame('#detail', index), data, false);
+ // top.convertDisabled(layer.getChildFrame('#data-detail :input', index), false);
+ top.convertDisabled(layer.getChildFrame('#locNo', index), true);
+ layer.iframeAuto(index);layer.style(index, {top: (($(window).height()-layer.getChildFrame('#data-detail', index).height())/3)+"px"});
+ layero.find('iframe')[0].contentWindow.layui.form.render('select');
+ layero.find('iframe')[0].contentWindow.layui.form.render('checkbox');
+ }
+ });
+ break;
+ case 'whsType':
+ var param = top.reObject(data).whsType;
+ if (param === undefined) {
+ layer.msg("鏃犳暟鎹�");
+ } else {
+ layer.open({
+ type: 2,
+ title: '搴撲綅璇︽儏',
+ maxmin: true,
+ area: [top.detailWidth, top.detailHeight],
+ shadeClose: false,
+ content: '../basWhs/basWhs_detail.html',
+ success: function(layero, index){
+ $.ajax({
+ url: baseUrl+"/basWhs/"+ param +"/auth",
+ headers: {'token': localStorage.getItem('token')},
+ method: 'GET',
+ success: function (res) {
+ if (res.code === 200){
+ setFormVal(layer.getChildFrame('#detail', index), res.data, true);
+ top.convertDisabled(layer.getChildFrame('#data-detail :input', index), true);
+ layer.getChildFrame('#data-detail-submit-save,#data-detail-submit-edit,#prompt', index).hide();
+ layer.iframeAuto(index);layer.style(index, {top: (($(window).height()-layer.getChildFrame('#data-detail', index).height())/3)+"px"});
+ layero.find('iframe')[0].contentWindow.layui.form.render('select');
+ layero.find('iframe')[0].contentWindow.layui.form.render('checkbox');
+ } else if (res.code === 403){
+ parent.location.href = "/";
+ }else {
+ layer.msg(res.msg)
+ }
+ }
+ })
+ }
+ });
+ }
+ break;
+ case 'modiUser':
+ var param = top.reObject(data).modiUser;
+ if (param === undefined) {
+ layer.msg("鏃犳暟鎹�");
+ } else {
+ layer.open({
+ type: 2,
+ title: '淇敼璇︽儏',
+ maxmin: true,
+ area: [top.detailWidth, top.detailHeight],
+ shadeClose: false,
+ content: '../user/user_detail.html',
+ success: function(layero, index){
+ $.ajax({
+ url: baseUrl+"/user/"+ param +"/auth",
+ headers: {'token': localStorage.getItem('token')},
+ method: 'GET',
+ success: function (res) {
+ if (res.code === 200){
+ setFormVal(layer.getChildFrame('#detail', index), res.data, true);
+ top.convertDisabled(layer.getChildFrame('#data-detail :input', index), true);
+ layer.getChildFrame('#password,#createTime\\$,#status', index).parent().parent().hide();
+ layer.getChildFrame('#data-detail-submit,#prompt', index).hide();
+ layer.iframeAuto(index);layer.style(index, {top: (($(window).height()-layer.getChildFrame('#data-detail', index).height())/3)+"px"});
+ layero.find('iframe')[0].contentWindow.layui.form.render('select');
+ layero.find('iframe')[0].contentWindow.layui.form.render('checkbox');
+ } else if (res.code === 403){
+ parent.location.href = "/";
+ }else {
+ layer.msg(res.msg)
+ }
+ }
+ })
+ }
+ });
+ }
+ break;
+ case 'appeUser':
+ var param = top.reObject(data).appeUser;
+ if (param === undefined) {
+ layer.msg("鏃犳暟鎹�");
+ } else {
+ layer.open({
+ type: 2,
+ title: '鍒涜鎯�',
+ maxmin: true,
+ area: [top.detailWidth, top.detailHeight],
+ shadeClose: false,
+ content: '../user/user_detail.html',
+ success: function(layero, index){
+ $.ajax({
+ url: baseUrl+"/user/"+ param +"/auth",
+ headers: {'token': localStorage.getItem('token')},
+ method: 'GET',
+ success: function (res) {
+ if (res.code === 200){
+ setFormVal(layer.getChildFrame('#detail', index), res.data, true);
+ top.convertDisabled(layer.getChildFrame('#data-detail :input', index), true);
+ layer.getChildFrame('#data-detail-submit', index).hide();
+ layer.iframeAuto(index);layer.style(index, {top: (($(window).height()-layer.getChildFrame('#data-detail', index).height())/3)+"px"});
+ layero.find('iframe')[0].contentWindow.layui.form.render('select');
+ layero.find('iframe')[0].contentWindow.layui.form.render('checkbox');
+ } else if (res.code === 403){
+ parent.location.href = "/";
+ }else {
+ layer.msg(res.msg)
+ }
+ }
+ })
+ }
+ });
+ }
+ break;
+
+ }
+ });
+
+ // 鍒濆鍖栦繚瀛�
+ form.on('submit(initDo)', function (data) {
+ $.ajax({
+ url: baseUrl+"/locMast/init/auth",
+ headers: {'token': localStorage.getItem('token')},
+ data: data.field,
+ method: 'POST',
+ async: false,
+ success: function (res) {
+ if (res.code === 200){
+ layer.msg(res.msg);
+ layer.closeAll();
+ tableReload(false);
+ } else if (res.code === 403){
+ parent.location.href = "/";
+ }else {
+ layer.msg(res.msg)
+ }
+ }
+ })
+ });
+
+ // 鏁版嵁淇濆瓨鍔ㄤ綔
+ form.on('submit(save)', function () {
+ if (banMsg != null){
+ layer.msg(banMsg);
+ return;
+ }
+ method("add");
+ });
+
+ // 鏁版嵁淇敼鍔ㄤ綔
+ form.on('submit(edit)', function () {
+ method("update")
+ });
+
+ function method(name){
+ var index = layer.load(1, {
+ shade: [0.5,'#000'] //0.1閫忔槑搴︾殑鑳屾櫙
+ });
+ var data = {
+// id: $('#id').val(),
+ locNo: $('#locNo').val(),
+ whsType: $('#whsType').val(),
+ pltType: $('#pltType').val(),
+ ctnType: $('#ctnType').val(),
+ locSts: $('#locSts').val(),
+ sheetNo: $('#sheetNo').val(),
+ crnNo: $('#crnNo').val(),
+ row1: $('#row1').val(),
+ bay1: $('#bay1').val(),
+ lev1: $('#lev1').val(),
+ floor: $('#floor').val(),
+ fullPlt: $('#fullPlt').val(),
+ locType: $('#locType').val(),
+ outEnable: $('#outEnable').val(),
+ ioTime: top.strToDate($('#ioTime\\$').val()),
+ firstTime: top.strToDate($('#firstTime\\$').val()),
+ modiUser: $('#modiUser').val(),
+ modiTime: top.strToDate($('#modiTime\\$').val()),
+ appeUser: $('#appeUser').val(),
+ appeTime: top.strToDate($('#appeTime\\$').val()),
+ errorTime: top.strToDate($('#errorTime\\$').val()),
+ errorMemo: $('#errorMemo').val(),
+ ctnKind: $('#ctnKind').val(),
+ scWeight: $('#scWeight').val(),
+ invWh: $('#invWh').val(),
+ mk: $('#mk').val(),
+ barcode: $('#barcode').val(),
+ PdcType: $('#PdcType').val(),
+ ctnNo: $('#ctnNo').val(),
+
+ };
+ $.ajax({
+ url: baseUrl+"/avgLocMast/"+name+"/auth",
+ headers: {'token': localStorage.getItem('token')},
+ data: top.reObject(data),
+ method: 'POST',
+ success: function (res) {
+ if (res.code === 200){
+ parent.layer.closeAll();
+ parent.$(".layui-laypage-btn")[0].click();
+ $("#data-detail :input").each(function () {
+ $(this).val("");
+ });
+ } else if (res.code === 403){
+ top.location.href = baseUrl+"/";
+ }else {
+ layer.msg(res.msg)
+ }
+ layer.close(index);
+ }
+ })
+ }
+
+ // 澶嶉�夋浜嬩欢
+ form.on('checkbox(detailCheckbox)', function (data) {
+ var el = data.elem;
+ if (el.checked) {
+ $(el).val('Y');
+ } else {
+ $(el).val('N');
+ }
+ });
+
+ // 鎼滅储鏍忔悳绱簨浠�
+ form.on('submit(search)', function (data) {
+ pageCurr = 1;
+ tableReload(false);
+ });
+
+ // 鎼滅储鏍忛噸缃簨浠�
+ form.on('submit(reset)', function (data) {
+ pageCurr = 1;
+ clearFormVal($('#search-box'));
+ tableReload(false);
+ });
+
+ // 鏃堕棿閫夋嫨鍣�
+ layDate.render({
+ elem: '#ioTime\\$',
+ type: 'datetime'
+ });
+ layDate.render({
+ elem: '#firstTime\\$',
+ type: 'datetime'
+ });
+ layDate.render({
+ elem: '#modiTime\\$',
+ type: 'datetime'
+ });
+ layDate.render({
+ elem: '#appeTime\\$',
+ type: 'datetime'
+ });
+ layDate.render({
+ elem: '#errorTime\\$',
+ type: 'datetime'
+ });
+
+
+});
+
+// 鍏抽棴鍔ㄤ綔
+$(document).on('click','#data-detail-close', function () {
+ parent.layer.closeAll();
+});
+
+function tableReload(child) {
+ var searchData = {};
+ $.each($('#search-box [name]').serializeArray(), function() {
+ searchData[this.name] = this.value;
+ });
+ (child ? parent.tableIns : tableIns).reload({
+ where: searchData,
+ page: {
+ curr: pageCurr
+ },
+ done: function (res, curr, count) {
+ if (res.code === 403) {
+ top.location.href = baseUrl+"/";
+ }
+ pageCurr=curr;
+ if (res.data.length === 0 && count !== 0) {
+ tableIns.reload({
+ where: searchData,
+ page: {
+ curr: pageCurr-1
+ }
+ });
+ pageCurr -= 1;
+ }
+ limit(child);
+ }
+ });
+}
+
+function setFormVal(el, data, showImg) {
+ for (var val in data) {
+ var find = el.find(":input[id='" + val + "']");
+ if (find[0]!=null){
+ if (find[0].type === 'checkbox'){
+ if (data[val]==='Y'){
+ find.attr("checked","checked");
+ find.val('Y');
+ } else {
+ find.remove("checked");
+ find.val('N');
+ }
+ continue;
+ }
+ }
+ find.val(data[val]);
+ if (showImg){
+ var next = find.next();
+ if (next.get(0)){
+ if (next.get(0).localName === "img") {
+ find.hide();
+ next.attr("src", data[val]);
+ next.show();
+ }
+ }
+ }
+ }
+}
+
+function clearFormVal(el) {
+ $(':input', el)
+ .val('')
+ .removeAttr('checked')
+ .removeAttr('selected');
+}
+
+function detailScreen(index) {
+ var detail = layer.getChildFrame('#data-detail', index);
+ var height = detail.height()+60;
+ if (height > ($(window).height()*0.9)) {
+ height = ($(window).height()*0.8);
+ }
+ layer.style(index, {
+// top: (($(window).height()-height)/3)+"px",
+ height: height+'px'
+ });
+}
+
+$('body').keydown(function () {
+ if (event.keyCode === 13) {
+ $("#search").click();
+ }
+});
diff --git a/src/main/webapp/static/js/agvStoMan/stoQue.js b/src/main/webapp/static/js/agvStoMan/stoQue.js
new file mode 100644
index 0000000..25dd1e5
--- /dev/null
+++ b/src/main/webapp/static/js/agvStoMan/stoQue.js
@@ -0,0 +1,344 @@
+var pageCurr;
+var locNo;
+layui.use(['table','laydate', 'form'], function(){
+ var table = layui.table;
+ var $ = layui.jquery;
+ var layer = layui.layer;
+ var layDate = layui.laydate;
+ var form = layui.form;
+
+ layDate.render({
+ elem: '.layui-laydate-range'
+ ,type: 'datetime'
+ ,range: true
+ });
+
+ // 鏁版嵁娓叉煋
+ tableIns = table.render({
+ elem: '#agvStoQue',
+ headers: {token: localStorage.getItem('token')},
+ url: baseUrl+'/agvLocMast/list/auth',
+ page: true,
+ limit: 20,
+ limits: [20, 30, 50, 100, 200, 500],
+ even: true,
+ toolbar: '#toolbar',
+ cellMinWidth: 50,
+ cols: [[
+ {type: 'checkbox'}
+ ,{field: 'locNo', align: 'center',title: '搴撲綅鍙�'}
+ ,{field: 'locSts$', align: 'center',title: '搴撲綅鐘舵��', width: 180, style: 'color: #8E2323'}
+ // ,{field: 'whsType$', align: 'center',title: '搴撲綅绫诲瀷'}
+ //,{field: 'crnNo', align: 'center',title: '鍫嗗灈鏈哄彿'}
+ ,{field: 'qrCodeValue', align: 'center',title: '浜岀淮鐮佸��', sort:true}
+ ,{field: 'row1', align: 'center',title: '鎺�'}
+ ,{field: 'bay1', align: 'center',title: '鍒�'}
+ ,{field: 'lev1', align: 'center',title: '灞�'}
+ ,{field: 'floor', align: 'center',title: '妤�', sort:true}
+ ,{field: 'fullPlt', align: 'center',title: '婊℃澘', templet:function(row){
+ var html = "<input value='fullPlt' type='checkbox' lay-skin='primary' lay-filter='tableCheckbox' table-index='"+row.LAY_TABLE_INDEX+"'";
+ if(row.fullPlt === 'Y'){html += " checked ";}
+ html += "disabled='disabled' >";
+ return html;
+ },width:80}
+ ,{field: 'modiUser$', align: 'center',title: '淇敼浜哄憳'}
+ ,{field: 'modiTime$', align: 'center',title: '淇敼鏃堕棿', width: 180}
+ ,{ fixed: 'right', title:'鎿嶄綔', align: 'center', toolbar: '#operate'}
+ ]],
+ request: {
+ pageName: 'curr',
+ pageSize: 'limit'
+ },
+ parseData: function (res) {
+ return {
+ 'code': res.code,
+ 'msg': res.msg,
+ 'count': res.data.total,
+ 'data': res.data.records
+ }
+ },
+ response: {
+ statusCode: 200
+ },
+ done: function(res, curr, count) {
+ if (res.code === 403) {
+ top.location.href = baseUrl+"/";
+ }
+ pageCurr=curr;
+ limit();
+ form.on('checkbox(tableCheckbox)', function (data) {
+ var _index = $(data.elem).attr('table-index')||0;
+ if(data.elem.checked){
+ res.data[_index][data.value] = 'Y';
+ }else{
+ res.data[_index][data.value] = 'N';
+ }
+ });
+ if (count === 1){
+ // locDetl(res.data[0][locNo]);
+ }
+ }
+ });
+
+ // 鐩戝惉鎺掑簭浜嬩欢
+ table.on('sort(stoQue)', function (obj) {
+ var searchData = {};
+ $.each($('#search-box [name]').serializeArray(), function() {
+ searchData[this.name] = this.value;
+ });
+ searchData['orderByField'] = obj.field;
+ searchData['orderByType'] = obj.type;
+ tableIns.reload({
+ where: searchData,
+ page: {
+ curr: 1
+ },
+ done: function (res, curr, count) {
+ if (res.code === 403) {
+ top.location.href = baseUrl+"/";
+ }
+ pageCurr=curr;
+ limit();
+ }
+ });
+ });
+
+ // 鐩戝惉澶村伐鍏锋爮浜嬩欢
+ table.on('toolbar(stoQue)', function (obj) {
+ var checkStatus = table.checkStatus(obj.config.id);
+ switch(obj.event) {
+ // 鏇存柊搴撳瓨
+ case 'refreshSto': // todo:luxiaotao
+ alert("杩樻病鍋�");
+ break;
+ case 'exportData':
+ layer.confirm('纭畾瀵煎嚭Excel鍚�', {shadeClose: true}, function(){
+ var titles=[];
+ var fields=[];
+ obj.config.cols[0].map(function (col) {
+ if (col.type === 'normal' && col.hide === false && col.toolbar == null) {
+ titles.push(col.title);
+ fields.push(col.field);
+ }
+ });
+ var exportData = {};
+ $.each($('#search-box [name]').serializeArray(), function() {
+ exportData[this.name] = this.value;
+ });
+ var param = {
+ 'wrkLastno': exportData,
+ 'fields': fields
+ };
+ $.ajax({
+ url: baseUrl+"/wrkLastno/export/auth",
+ headers: {'token': localStorage.getItem('token')},
+ data: JSON.stringify(param),
+ dataType:'json',
+ contentType:'application/json;charset=UTF-8',
+ method: 'POST',
+ success: function (res) {
+ layer.closeAll();
+ if (res.code === 200) {
+ table.exportFile(titles,res.data,'xls');
+ } else if (res.code === 403) {
+ top.location.href = baseUrl+"/";
+ } else {
+ layer.msg(res.msg)
+ }
+ }
+ });
+ });
+ break;
+ }
+ });
+
+ // 鐩戝惉琛屽伐鍏蜂簨浠�
+ table.on('tool(stoQue)', function(obj) {
+ var data = obj.data;
+ switch (obj.event) {
+ // 鏌ョ湅鏄庣粏
+ case 'locDetl':
+ // locDetl(data.locNo);
+ if (data.locSts.trim() === ''
+ || data.locSts.trim() === 'S'
+ || data.locSts.trim() === 'D'
+ || data.locSts.trim() === 'O') {
+ layer.msg("姝ゅ簱浣嶇殑鐘舵�佷笉瀛樺湪鐗╂枡");
+ return;
+ }
+ locDetlToLayer(data.locNo);
+ break;
+ }
+ });
+
+ // iframe鐗╂枡璇︽儏
+ function locDetlToLayer(val) {
+ locNo = val;
+ layer.open({
+ type: 2,
+ title: '搴撳瓨鏄庣粏',
+ maxmin: true,
+ area: [top.detailWidth, top.detailHeight],
+ shadeClose: true,
+ content: '../report/locDetl.html',
+ success: function(layero, index){
+ }
+ });
+ }
+ // div鐗╂枡璇︽儏
+ var pageCur;
+ function locDetl(locNo){
+ $('#detlTable').css("display", 'block');
+ // 鏁版嵁娓叉煋
+ tableIns1 = table.render({
+ elem: '#locDetlByMap',
+ headers: {token: localStorage.getItem('token')},
+ url: baseUrl+'/agvLocDetl/list/auth',
+ page: true,
+ limit: 5,
+ skin: 'line',
+ where: {loc_no: locNo},
+ even: true,
+ cellMinWidth: 50,
+ cols: [[
+ // {type: 'checkbox'}
+ {field: 'locNo$', align: 'center',title: '搴撲綅鍙�'}
+ ,{field: 'matnr', align: 'center',title: '鐗╂枡'}
+ ,{field: 'lgnum', align: 'center',title: '浠撳簱鍙�'}
+ ,{field: 'tbnum', align: 'center',title: '杞偍璇锋眰缂栧彿'}
+ // ,{field: 'tbpos', align: 'center',title: '琛岄」鐩�'}
+ ,{field: 'zmatid', align: 'center',title: '鐗╂枡鏍囩ID'}
+ ,{field: 'maktx', align: 'center',title: '鐗╂枡鎻忚堪'}
+ ,{field: 'werks', align: 'center',title: '宸ュ巶'}
+ ,{field: 'anfme', align: 'center',title: '鏁伴噺'}
+ ,{field: 'altme', align: 'center',title: '鍗曚綅'}
+ ,{field: 'zpallet', align: 'center',title: '鎵樼洏鏉$爜'}
+ ,{field: 'bname', align: 'center',title: '鐢ㄦ埛ID'}
+ ]],
+ request: {
+ pageName: 'curr',
+ pageSize: 'limit'
+ },
+ parseData: function (res) {
+ return {
+ 'code': res.code,
+ 'msg': res.msg,
+ 'count': res.data.total,
+ 'data': res.data.records
+ }
+ },
+ response: {
+ statusCode: 200
+ },
+ done: function(res, curr, count) {
+ if (res.code === 403) {
+ top.location.href = baseUrl+"/";
+ }
+ pageCur=curr;
+ form.on('checkbox(tableCheckbox)', function (data) {
+ var _index = $(data.elem).attr('table-index')||0;
+ if(data.elem.checked){
+ res.data[_index][data.value] = 'Y';
+ }else{
+ res.data[_index][data.value] = 'N';
+ }
+ });
+ }
+ });
+ }
+
+ // 鎼滅储鏍忛噸缃簨浠�
+ form.on('submit(reset)', function (data) {
+ pageCurr = 1;
+ clearFormVal($('#search-box'));
+ $('#detlTable').css("display", 'none');
+ tableReload(false);
+ });
+
+ // 鎼滅储鏍忔悳绱簨浠�
+ form.on('submit(search)', function (data) {
+ pageCurr = 1;
+ $('#detlTable').css("display", 'none');
+ tableReload(false);
+ });
+
+ function tableReload(child) {
+ var searchData = {};
+ $.each($('#search-box [name]').serializeArray(), function() {
+ searchData[this.name] = this.value;
+ });
+ (child ? parent.tableIns : tableIns).reload({
+ where: searchData,
+ page: {
+ curr: pageCurr
+ },
+ done: function (res, curr, count) {
+ if (res.code === 403) {
+ top.location.href = baseUrl+"/";
+ }
+ pageCurr=curr;
+ if (count === 1){
+ // locDetl(res.data[0][locNo]);
+ }
+ if (res.data.length === 0 && count !== 0) {
+ tableIns.reload({
+ where: searchData,
+ page: {
+ curr: pageCurr-1
+ }
+ });
+ pageCurr -= 1;
+ }
+ limit(child);
+ }
+ });
+ }
+});
+
+// 鍏抽棴鍔ㄤ綔
+$(document).on('click','#data-detail-close', function () {
+ parent.layer.closeAll();
+});
+
+function setFormVal(el, data, showImg) {
+ for (var val in data) {
+ var find = el.find(":input[id='" + val + "']");
+ find.val(data[val]);
+ if (showImg){
+ var next = find.next();
+ if (next.get(0)){
+ if (next.get(0).localName === "img") {
+ find.hide();
+ next.attr("src", data[val]);
+ next.show();
+ }
+ }
+ }
+ }
+}
+
+function clearFormVal(el) {
+ $(':input', el)
+ .val('')
+ .removeAttr('checked')
+ .removeAttr('selected');
+}
+
+function detailScreen(index) {
+ var detail = layer.getChildFrame('#data-detail', index);
+ var height = detail.height()+60;
+ if (height > ($(window).height()*0.9)) {
+ height = ($(window).height()*0.9);
+ }
+ layer.style(index, {
+ top: (($(window).height()-height)/3)+"px",
+ height: height+'px'
+ });
+ $(".layui-layer-shade").remove();
+}
+
+$('body').keydown(function () {
+ if (event.keyCode === 13) {
+ $("#search").click();
+ }
+});
diff --git a/src/main/webapp/static/js/agvWaitPakin/waitPakin.js b/src/main/webapp/static/js/agvWaitPakin/waitPakin.js
new file mode 100644
index 0000000..2d55dbc
--- /dev/null
+++ b/src/main/webapp/static/js/agvWaitPakin/waitPakin.js
@@ -0,0 +1,512 @@
+var pageCurr;
+function getCol() {
+ var cols = [ {type: 'checkbox'} ];
+ cols.push.apply(cols, detlCols);
+ cols.push({field: 'status', align: 'center',title: '鏁版嵁鐘舵��', templet:function(row){
+ var html = "<input value='status' type='checkbox' lay-skin='switch' lay-text='姝e父|閿佸畾'' lay-filter='tableCheckbox' disabled='disabled' table-index='"+row.LAY_TABLE_INDEX+"'";
+ if(row.status === 'Y'){html += " checked ";}
+ html += ">";
+ return html;
+ }, hide: true}
+ ,{field: 'ioStatus', align: 'center',title: '鍏ュ嚭鐘舵��', templet:function(row){
+ var html = "<input value='ioStatus' type='checkbox' lay-skin='switch' lay-text='鍏ュ簱涓瓅寰呭叆搴�' lay-filter='tableCheckbox' disabled='disabled' table-index='"+row.LAY_TABLE_INDEX+"'";
+ if(row.ioStatus === 'Y'){html += " checked ";}
+ html += ">";
+ return html;
+ }}
+ ,{field: 'modiUser$', align: 'center',title: '淇敼浜哄憳', hide:true}
+ ,{field: 'modiTime$', align: 'center',title: '淇敼鏃堕棿', hide:true})
+ return cols;
+}
+
+layui.config({
+ base: baseUrl + "/static/layui/lay/modules/"
+}).use(['table','laydate', 'form', 'tableMerge'], function(){
+ var table = layui.table;
+ var $ = layui.jquery;
+ var layer = layui.layer;
+ var layDate = layui.laydate;
+ var form = layui.form;
+ var tableMerge = layui.tableMerge;
+
+ // 鏁版嵁娓叉煋
+ tableIns = table.render({
+ elem: '#agvWaitPakin',
+ headers: {token: localStorage.getItem('token')},
+ url: baseUrl+'/agv/waitPakin/list/auth',
+ page: true,
+ limit: 16,
+ limits: [16, 30, 50, 100, 200, 500],
+ even: true,
+ toolbar: '#toolbar',
+ cellMinWidth: 50,
+ cols: [getCol()],
+ request: {
+ pageName: 'curr',
+ pageSize: 'limit'
+ },
+ parseData: function (res) {
+ return {
+ 'code': res.code,
+ 'msg': res.msg,
+ 'count': res.data.total,
+ 'data': res.data.records
+ }
+ },
+ response: {
+ statusCode: 200
+ },
+ done: function(res, curr, count) {
+ // tableMerge.render(this);
+ if (res.code === 403) {
+ top.location.href = baseUrl+"/";
+ }
+ pageCurr=curr;
+ limit();
+ form.on('checkbox(tableCheckbox)', function (data) {
+ var _index = $(data.elem).attr('table-index')||0;
+ if(data.elem.checked){
+ res.data[_index][data.value] = 'Y';
+ }else{
+ res.data[_index][data.value] = 'N';
+ }
+ });
+ }
+ });
+
+ // 鐩戝惉鎺掑簭浜嬩欢
+ table.on('sort(locMast)', function (obj) {
+ var searchData = {};
+ $.each($('#search-box [name]').serializeArray(), function() {
+ searchData[this.name] = this.value;
+ });
+ searchData['orderByField'] = obj.field;
+ searchData['orderByType'] = obj.type;
+ tableIns.reload({
+ where: searchData,
+ page: {
+ curr: 1
+ },
+ done: function (res, curr, count) {
+ if (res.code === 403) {
+ top.location.href = baseUrl+"/";
+ }
+ pageCurr=curr;
+ limit();
+ }
+ });
+ });
+
+ // 鐩戝惉澶村伐鍏锋爮浜嬩欢
+ table.on('toolbar(waitPakin)', function (obj) {
+ var checkStatus = table.checkStatus(obj.config.id);
+ switch(obj.event) {
+ case 'addWrk':
+ if (checkStatus.data.length === 0){
+ layer.msg('璇疯嚦灏戦�夋嫨涓�鏉℃暟鎹�', {icon: 2});
+ } else {
+ layer.confirm('纭畾鐢熸垚宸ヤ綔妗d换鍔″悧', function(){
+ $.ajax({
+ url: baseUrl+"/create/waitPain/wrkMast/start",
+ headers: {'token': localStorage.getItem('token')},
+ data: JSON.stringify(checkStatus.data),
+ contentType:'application/json;charset=UTF-8',
+ method: 'POST',
+ traditional:true,
+ success: function (res) {
+ if (res.code === 200){
+ layer.closeAll();
+ tableReload(false);
+ layer.msg(res.msg, {icon: 1})
+ } else if (res.code === 403){
+ top.location.href = baseUrl+"/";
+ } else {
+ layer.msg(res.msg, {icon: 2})
+ }
+ }
+ })
+ });
+ }
+ break;
+ case 'addData':
+ layer.open({
+ type: 2,
+ title: '鏂板',
+ maxmin: true,
+ area: [top.detailWidth, top.detailHeight],
+ content: 'waitPakin_detail.html',
+ success: function(layero, index){
+ layer.getChildFrame('#data-detail-submit-edit', index).hide();
+ clearFormVal(layer.getChildFrame('#detail', index));
+ layer.iframeAuto(index);layer.style(index, {top: (($(window).height()-layer.getChildFrame('#data-detail', index).height())/3)+"px"});
+ }
+ });
+ break;
+ case 'deleteData':
+ var data = checkStatus.data;
+ if (data.length === 0){
+ layer.msg('璇烽�夋嫨鏁版嵁');
+ } else {
+ layer.confirm('纭畾鍒犻櫎'+(data.length===1?'姝�':data.length)+'鏉℃暟鎹悧', function(){
+ $.ajax({
+ url: baseUrl+"/agv/waitPakin/delete/auth",
+ headers: {'token': localStorage.getItem('token')},
+ data: {param: JSON.stringify(data)},
+ method: 'POST',
+ traditional:true,
+ success: function (res) {
+ if (res.code === 200){
+ layer.closeAll();
+ tableReload(false);
+ } else if (res.code === 403){
+ top.location.href = baseUrl+"/";
+ } else {
+ layer.msg(res.msg)
+ }
+ }
+ })
+ });
+ }
+ break;
+ case 'exportData':
+ layer.confirm('纭畾瀵煎嚭Excel鍚�', {shadeClose: true}, function(){
+ var titles=[];
+ var fields=[];
+ obj.config.cols[0].map(function (col) {
+ if (col.type === 'normal' && col.hide === false && col.toolbar == null) {
+ titles.push(col.title);
+ fields.push(col.field);
+ }
+ });
+ var exportData = {};
+ $.each($('#search-box [name]').serializeArray(), function() {
+ exportData[this.name] = this.value;
+ });
+ var param = {
+ 'waitPakin': exportData,
+ 'fields': fields
+ };
+ $.ajax({
+ url: baseUrl+"/agv/waitPakin/export/auth",
+ headers: {'token': localStorage.getItem('token')},
+ data: JSON.stringify(param),
+ dataType:'json',
+ contentType:'application/json;charset=UTF-8',
+ method: 'POST',
+ success: function (res) {
+ layer.closeAll();
+ if (res.code === 200) {
+ table.exportFile(titles,res.data,'xls');
+ } else if (res.code === 403) {
+ top.location.href = baseUrl+"/";
+ } else {
+ layer.msg(res.msg)
+ }
+ }
+ });
+ });
+ break;
+ }
+ });
+
+ // 鐩戝惉琛屽伐鍏蜂簨浠�
+ table.on('tool(waitPakin)', function(obj){
+ var data = obj.data;
+ switch (obj.event) {
+ // 璇︽儏
+ case 'detail':
+ layer.open({
+ type: 2,
+ title: '璇︽儏',
+ maxmin: true,
+ area: [top.detailWidth, top.detailHeight],
+ shadeClose: true,
+ content: 'waitPakin_detail.html',
+ success: function(layero, index){
+ setFormVal(layer.getChildFrame('#detail', index), data, true);
+ top.convertDisabled(layer.getChildFrame('#data-detail :input', index), true);
+ layer.getChildFrame('#data-detail-submit-save,#data-detail-submit-edit,#prompt', index).hide();
+ layer.iframeAuto(index);layer.style(index, {top: (($(window).height()-layer.getChildFrame('#data-detail', index).height())/3)+"px"});
+ layero.find('iframe')[0].contentWindow.layui.form.render('select');
+ layero.find('iframe')[0].contentWindow.layui.form.render('checkbox');
+ }
+ });
+ break;
+ // 缂栬緫
+ case 'edit':
+ layer.open({
+ type: 2,
+ title: '淇敼',
+ maxmin: true,
+ area: [top.detailWidth, top.detailHeight],
+ content: 'waitPakin_detail.html',
+ success: function(layero, index){
+ layer.getChildFrame('#data-detail-submit-save', index).hide();
+ setFormVal(layer.getChildFrame('#detail', index), data, false);
+ top.convertDisabled(layer.getChildFrame('#data-detail :input', index), false);
+ top.convertDisabled(layer.getChildFrame('#id', index), true);
+ layer.iframeAuto(index);layer.style(index, {top: (($(window).height()-layer.getChildFrame('#data-detail', index).height())/3)+"px"});
+ layero.find('iframe')[0].contentWindow.layui.form.render('select');
+ layero.find('iframe')[0].contentWindow.layui.form.render('checkbox');
+ }
+ });
+ break;
+ case 'modiUser':
+ var param = top.reObject(data).modiUser;
+ if (param === undefined) {
+ layer.msg("鏃犳暟鎹�");
+ } else {
+ layer.open({
+ type: 2,
+ title: '淇敼浜哄憳璇︽儏',
+ maxmin: true,
+ area: [top.detailWidth, top.detailHeight],
+ shadeClose: true,
+ content: '../user/user_detail.html',
+ success: function(layero, index){
+ $.ajax({
+ url: "baseUrl+/user/"+ param +"/auth",
+ headers: {'token': localStorage.getItem('token')},
+ method: 'GET',
+ success: function (res) {
+ if (res.code === 200){
+ setFormVal(layer.getChildFrame('#detail', index), res.data, true);
+ top.convertDisabled(layer.getChildFrame('#data-detail :input', index), true);
+ layer.getChildFrame('#data-detail-submit-save,#data-detail-submit-edit,#prompt', index).hide();
+ layer.iframeAuto(index);layer.style(index, {top: (($(window).height()-layer.getChildFrame('#data-detail', index).height())/3)+"px"});
+ layero.find('iframe')[0].contentWindow.layui.form.render('select');
+ layero.find('iframe')[0].contentWindow.layui.form.render('checkbox');
+ } else if (res.code === 403){
+ top.location.href = baseUrl+"/";
+ }else {
+ layer.msg(res.msg)
+ }
+ }
+ })
+ }
+ });
+ }
+ break;
+ case 'appeUser':
+ var param = top.reObject(data).appeUser;
+ if (param === undefined) {
+ layer.msg("鏃犳暟鎹�");
+ } else {
+ layer.open({
+ type: 2,
+ title: '鍒涘缓鑰呰鎯�',
+ maxmin: true,
+ area: [top.detailWidth, top.detailHeight],
+ shadeClose: true,
+ content: '../user/user_detail.html',
+ success: function(layero, index){
+ $.ajax({
+ url: "baseUrl+/user/"+ param +"/auth",
+ headers: {'token': localStorage.getItem('token')},
+ method: 'GET',
+ success: function (res) {
+ if (res.code === 200){
+ setFormVal(layer.getChildFrame('#detail', index), res.data, true);
+ top.convertDisabled(layer.getChildFrame('#data-detail :input', index), true);
+ layer.getChildFrame('#data-detail-submit-save,#data-detail-submit-edit,#prompt', index).hide();
+ layer.iframeAuto(index);layer.style(index, {top: (($(window).height()-layer.getChildFrame('#data-detail', index).height())/3)+"px"});
+ layero.find('iframe')[0].contentWindow.layui.form.render('select');
+ layero.find('iframe')[0].contentWindow.layui.form.render('checkbox');
+ } else if (res.code === 403){
+ top.location.href = baseUrl+"/";
+ }else {
+ layer.msg(res.msg)
+ }
+ }
+ })
+ }
+ });
+ }
+ break;
+
+ }
+ });
+
+ // 鏁版嵁淇濆瓨鍔ㄤ綔
+ form.on('submit(save)', function () {
+ if (banMsg != null){
+ layer.msg(banMsg);
+ return;
+ }
+ method("add");
+ });
+
+ // 鏁版嵁淇敼鍔ㄤ綔
+ form.on('submit(edit)', function () {
+ method("update")
+ });
+
+ function method(name){
+ var index = layer.load(1, {
+ shade: [0.5,'#000'] //0.1閫忔槑搴︾殑鑳屾櫙
+ });
+ var data = {
+// id: $('#id').val(),
+ id: $('#id').val(),
+ barcode: $('#barcode').val(),
+ matnr: $('#matnr').val(),
+ maktx: $('#maktx').val(),
+ anfme: $('#anfme').val(),
+ unit: $('#unit').val(),
+ status: $('#status').val(),
+ memo: $('#memo').val(),
+ modiTime: top.strToDate($('#modiTime\\$').val()),
+ modiUser: $('#modiUser').val(),
+ appeTime: top.strToDate($('#appeTime\\$').val()),
+ appeUser: $('#appeUser').val(),
+
+ };
+ $.ajax({
+ url: baseUrl+"/agv/waitPakin/"+name+"/auth",
+ headers: {'token': localStorage.getItem('token')},
+ data: top.reObject(data),
+ method: 'POST',
+ success: function (res) {
+ if (res.code === 200){
+ parent.layer.closeAll();
+ parent.$(".layui-laypage-btn")[0].click();
+ $("#data-detail :input").each(function () {
+ $(this).val("");
+ });
+ } else if (res.code === 403){
+ top.location.href = baseUrl+"/";
+ }else {
+ layer.msg(res.msg)
+ }
+ layer.close(index);
+ }
+ })
+ }
+
+ // 澶嶉�夋浜嬩欢
+ form.on('checkbox(detailCheckbox)', function (data) {
+ var el = data.elem;
+ if (el.checked) {
+ $(el).val('Y');
+ } else {
+ $(el).val('N');
+ }
+ });
+
+ // 鎼滅储鏍忔悳绱簨浠�
+ form.on('submit(search)', function (data) {
+ pageCurr = 1;
+ tableReload(false);
+ });
+
+ // 鎼滅储鏍忛噸缃簨浠�
+ form.on('submit(reset)', function (data) {
+ pageCurr = 1;
+ clearFormVal($('#search-box'));
+ tableReload(false);
+ });
+
+ // 鏃堕棿閫夋嫨鍣�
+ layDate.render({
+ elem: '#modiTime\\$',
+ type: 'datetime'
+ });
+ layDate.render({
+ elem: '#appeTime\\$',
+ type: 'datetime'
+ });
+ layDate.render({
+ elem: '.layui-laydate-range'
+ ,type: 'datetime'
+ ,range: true
+ });
+
+});
+
+// 鍏抽棴鍔ㄤ綔
+$(document).on('click','#data-detail-close', function () {
+ parent.layer.closeAll();
+});
+
+function tableReload(child) {
+ var searchData = {};
+ $.each($('#search-box [name]').serializeArray(), function() {
+ searchData[this.name] = this.value;
+ });
+ (child ? parent.tableIns : tableIns).reload({
+ where: searchData,
+ page: {
+ curr: pageCurr
+ },
+ done: function (res, curr, count) {
+ if (res.code === 403) {
+ top.location.href = baseUrl+"/";
+ }
+ pageCurr=curr;
+ if (res.data.length === 0 && count !== 0) {
+ tableIns.reload({
+ where: searchData,
+ page: {
+ curr: pageCurr-1
+ }
+ });
+ pageCurr -= 1;
+ }
+ limit(child);
+ }
+ });
+}
+
+function setFormVal(el, data, showImg) {
+ for (var val in data) {
+ var find = el.find(":input[id='" + val + "']");
+ if (find[0]!=null){
+ if (find[0].type === 'checkbox'){
+ if (data[val]==='Y'){
+ find.attr("checked","checked");
+ find.val('Y');
+ } else {
+ find.remove("checked");
+ find.val('N');
+ }
+ continue;
+ }
+ }
+ find.val(data[val]);
+ if (showImg){
+ var next = find.next();
+ if (next.get(0)){
+ if (next.get(0).localName === "img") {
+ find.hide();
+ next.attr("src", data[val]);
+ next.show();
+ }
+ }
+ }
+ }
+}
+
+function clearFormVal(el) {
+ $(':input', el)
+ .val('')
+ .removeAttr('checked')
+ .removeAttr('selected');
+}
+
+function detailScreen(index) {
+ var detail = layer.getChildFrame('#data-detail', index);
+ var height = detail.height()+60;
+ if (height > ($(window).height()*0.9)) {
+ height = ($(window).height()*0.8);
+ }
+ layer.style(index, {
+// top: (($(window).height()-height)/3)+"px",
+ height: height+'px'
+ });
+}
+
+$('body').keydown(function () {
+ if (event.keyCode === 13) {
+ $("#search").click();
+ }
+});
diff --git a/src/main/webapp/static/js/pakStore/pakStore.js b/src/main/webapp/static/js/pakStore/pakStore.js
index dd0f6cb..058bd90 100644
--- a/src/main/webapp/static/js/pakStore/pakStore.js
+++ b/src/main/webapp/static/js/pakStore/pakStore.js
@@ -85,7 +85,7 @@
return;
}
$.ajax({
- url: baseUrl+"/full/store/put/start",
+ url: baseUrl+"/full/",
headers: {'token': localStorage.getItem('token')},
data: JSON.stringify({
devpNo: Number(devpNo),
diff --git a/src/main/webapp/static/js/wrkMast/wrkMast.js b/src/main/webapp/static/js/wrkMast/wrkMast.js
index afce170..741a260 100644
--- a/src/main/webapp/static/js/wrkMast/wrkMast.js
+++ b/src/main/webapp/static/js/wrkMast/wrkMast.js
@@ -133,6 +133,7 @@
var list=[];
checkStatus.data.map(function (track) {
list.push({
+
wrkNo: track.wrkNo,
ioTime: track.ioTime,
ioPri: track.ioPri
diff --git a/src/main/webapp/views/agvBasDevp/basDevp.html b/src/main/webapp/views/agvBasDevp/basDevp.html
new file mode 100644
index 0000000..a23f341
--- /dev/null
+++ b/src/main/webapp/views/agvBasDevp/basDevp.html
@@ -0,0 +1,58 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="utf-8">
+ <title></title>
+ <meta name="renderer" content="webkit">
+ <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+ <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+ <link rel="stylesheet" href="../../static/layui/css/layui.css" media="all">
+ <link rel="stylesheet" href="../../static/css/cool.css" media="all">
+ <link rel="stylesheet" href="../../static/css/common.css" media="all">
+</head>
+<body>
+
+<!-- 鎼滅储鏍� -->
+<div id="search-box" class="layui-form layui-card-header">
+ <div class="layui-inline">
+ <label class="layui-form-label">缂栧彿锛�</label>
+ <div class="layui-input-inline">
+ <input class="layui-input" type="text" name="dev_no" placeholder="璇疯緭鍏�" autocomplete="off">
+ </div>
+ </div>
+
+ <!-- 寰呮坊鍔� -->
+ <div id="data-search-btn" class="layui-btn-container layui-form-item">
+ <button id="search" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="search">鎼滅储</button>
+ <button id="reset" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="reset">閲嶇疆</button>
+ </div>
+</div>
+
+<!-- 琛ㄦ牸 -->
+<div class="layui-form">
+ <table class="layui-hide" id="agvBasDevp" lay-filter="basDevp"></table>
+</div>
+<script type="text/html" id="toolbar">
+ <div class="layui-btn-container">
+ <button class="layui-btn layui-btn-sm" id="btn-add" lay-event="addData">鏂板</button>
+ <button class="layui-btn layui-btn-sm" id="btn-delete" lay-event="deleteData">鍒犻櫎</button>
+ <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData">瀵煎嚭</button>
+ </div>
+</script>
+
+<script type="text/html" id="operate">
+<!-- <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="detail">璇︽儏</a>-->
+ <a class="layui-btn layui-btn-xs btn-edit" lay-event="edit">缂栬緫</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/agvBasDevp/basDevp.js" charset="utf-8"></script>
+
+<iframe id="detail-iframe" scrolling="auto" style="display:none;"></iframe>
+
+</body>
+</html>
+
diff --git a/src/main/webapp/views/agvBasDevp/basDevp_detail.html b/src/main/webapp/views/agvBasDevp/basDevp_detail.html
new file mode 100644
index 0000000..23309dc
--- /dev/null
+++ b/src/main/webapp/views/agvBasDevp/basDevp_detail.html
@@ -0,0 +1,283 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="utf-8">
+ <title></title>
+ <meta name="renderer" content="webkit">
+ <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+ <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+ <link rel="stylesheet" href="../../static/layui/css/layui.css" media="all">
+ <link rel="stylesheet" href="../../static/css/cool.css" media="all">
+ <link rel="stylesheet" href="../../static/css/common.css" media="all">
+</head>
+<body>
+
+<!-- 璇︽儏 -->
+<div id="data-detail" class="layer_self_wrap">
+ <form id="detail" class="layui-form" style="text-align: left">
+ <!--
+ <div class="layui-inline" style="display: none">
+ <label class="layui-form-label"><span class="not-null">*</span>缂栥��銆�鍙凤細</label>
+ <div class="layui-input-inline">
+ <input id="id" class="layui-input" type="text" placeholder="缂栧彿">
+ </div>
+ </div>
+ -->
+ <div class="layui-inline" style="width:31%;">
+ <label class="layui-form-label"><span class="not-null">*</span>宸ヤ綔绔欑紪鍙凤細</label>
+ <div class="layui-input-inline">
+ <input id="stationCode" class="layui-input" type="text" >
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;">
+ <label class="layui-form-label"><span class="not-null">*</span>宸ヤ綔浣嶇紪鍙凤細</label>
+ <div class="layui-input-inline">
+ <input id="devNo" class="layui-input" type="text" onkeyup="check(this.id, 'basDevp')" >
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;">
+ <label class="layui-form-label"><span class="not-null">*</span>妤硷細</label>
+ <div class="layui-input-inline">
+ <input id="floor" class="layui-input" type="text" lay-verify="required|number">
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;">
+ <label class="layui-form-label">缂撳瓨璐ф灦锛�</label>
+ <div class="layui-input-inline">
+ <input id="cacheShelves" class="layui-input" type="checkBox" lay-skin="primary" lay-filter='detailCheckbox'>
+ </div>
+ </div>
+
+ <div class="layui-inline" style="width:31%;display: none">
+ <label class="layui-form-label">澶囥��銆�娉細</label>
+ <div class="layui-input-inline">
+ <input id="devMk" class="layui-input" type="text">
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;">
+ <label class="layui-form-label">鍙��銆�鍏ワ細</label>
+ <div class="layui-input-inline">
+ <input id="inEnable" class="layui-input" type="checkBox" lay-skin="primary" lay-filter='detailCheckbox'>
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;">
+ <label class="layui-form-label">鍙��銆�鍑猴細</label>
+ <div class="layui-input-inline">
+ <input id="outEnable" class="layui-input" type="checkBox" lay-skin="primary" lay-filter='detailCheckbox'>
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;">
+ <label class="layui-form-label">鑷��銆�鍔細</label>
+ <div class="layui-input-inline">
+ <input id="autoing" class="layui-input" type="checkBox" lay-skin="primary" lay-filter='detailCheckbox'>
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;">
+ <label class="layui-form-label">鏈夈��銆�鐗╋細</label>
+ <div class="layui-input-inline">
+ <input id="loading" class="layui-input" type="checkBox" lay-skin="primary" lay-filter='detailCheckbox'>
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;">
+ <label class="layui-form-label">鑳姐��銆�鍏ワ細</label>
+ <div class="layui-input-inline">
+ <input id="canining" class="layui-input" type="checkBox" lay-skin="primary" lay-filter='detailCheckbox'>
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;">
+ <label class="layui-form-label">鑳姐��銆�鍑猴細</label>
+ <div class="layui-input-inline">
+ <input id="canouting" class="layui-input" type="checkBox" lay-skin="primary" lay-filter='detailCheckbox'>
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;display: none">
+ <label class="layui-form-label">锛�</label>
+ <div class="layui-input-inline">
+ <input id="fronting" class="layui-input" type="text">
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;display: none">
+ <label class="layui-form-label">锛�</label>
+ <div class="layui-input-inline">
+ <input id="rearing" class="layui-input" type="text">
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;display: none">
+ <label class="layui-form-label">锛�</label>
+ <div class="layui-input-inline">
+ <input id="uping" class="layui-input" type="text">
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;display: none">
+ <label class="layui-form-label">锛�</label>
+ <div class="layui-input-inline">
+ <input id="downing" class="layui-input" type="text">
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;">
+ <label class="layui-form-label">闇� 姹� 1锛�</label>
+ <div class="layui-input-inline">
+ <input id="inreq1" class="layui-input" type="checkBox" lay-skin="primary" lay-filter='detailCheckbox'>
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;">
+ <label class="layui-form-label">闇� 姹� 2锛�</label>
+ <div class="layui-input-inline">
+ <input id="inreq2" class="layui-input" type="checkBox" lay-skin="primary" lay-filter='detailCheckbox'>
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;">
+ <label class="layui-form-label">宸� 浣� 鍙凤細</label>
+ <div class="layui-input-inline">
+ <input id="wrkNo" class="layui-input" type="text">
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;display: none">
+ <label class="layui-form-label">锛�</label>
+ <div class="layui-input-inline">
+ <input id="wrkNo1" class="layui-input" type="text">
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;">
+ <label class="layui-form-label">瀹瑰櫒绫诲瀷锛�</label>
+ <div class="layui-input-inline">
+ <input id="ctnType" class="layui-input" type="text">
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;">
+ <label class="layui-form-label">鏉� 褰� 鐮侊細</label>
+ <div class="layui-input-inline">
+ <input id="barcode" class="layui-input" type="text">
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;">
+ <label class="layui-form-label">鍏ュ簱鏆傚瓨锛�</label>
+ <div class="layui-input-inline">
+ <input id="inQty" class="layui-input" type="text">
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;display: none">
+ <label class="layui-form-label">锛�</label>
+ <div class="layui-input-inline">
+ <input id="row1" class="layui-input" type="text">
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;display: none">
+ <label class="layui-form-label">锛�</label>
+ <div class="layui-input-inline">
+ <input id="ioTime$" class="layui-input" type="text" autocomplete="off">
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;display: none">
+ <label class="layui-form-label">锛�</label>
+ <div class="layui-input-inline">
+ <input id="area" class="layui-input" type="text">
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;display: none">
+ <label class="layui-form-label">锛�</label>
+ <div class="layui-input-inline">
+ <input id="inOk" class="layui-input" type="text">
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;display: none">
+ <label class="layui-form-label">锛�</label>
+ <div class="layui-input-inline">
+ <input id="outOk" class="layui-input" type="text">
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;display: none">
+ <label class="layui-form-label">淇敼浜哄憳锛�</label>
+ <div class="layui-input-inline cool-auto-complete">
+ <input id="modiUser" class="layui-input" type="text" style="display: none">
+ <input id="modiUser$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="璇疯緭鍏�..." onfocus=this.blur()>
+ <div class="cool-auto-complete-window">
+ <input class="cool-auto-complete-window-input" data-key="userQueryBymodiUser" onkeyup="autoLoad(this.getAttribute('data-key'))">
+ <select class="cool-auto-complete-window-select" data-key="userQueryBymodiUserSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
+ </select>
+ </div>
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;display: none">
+ <label class="layui-form-label">淇敼鏃堕棿锛�</label>
+ <div class="layui-input-inline">
+ <input id="modiTime$" class="layui-input" type="text" autocomplete="off">
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;display: none">
+ <label class="layui-form-label">鍒� 寤� 鑰咃細</label>
+ <div class="layui-input-inline cool-auto-complete">
+ <input id="appeUser" class="layui-input" type="text" style="display: none">
+ <input id="appeUser$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="璇疯緭鍏�..." onfocus=this.blur()>
+ <div class="cool-auto-complete-window">
+ <input class="cool-auto-complete-window-input" data-key="userQueryByappeUser" onkeyup="autoLoad(this.getAttribute('data-key'))">
+ <select class="cool-auto-complete-window-select" data-key="userQueryByappeUserSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
+ </select>
+ </div>
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;display: none">
+ <label class="layui-form-label">娣诲姞鏃堕棿锛�</label>
+ <div class="layui-input-inline">
+ <input id="appeTime$" class="layui-input" type="text" autocomplete="off">
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;display: none">
+ <label class="layui-form-label">锛�</label>
+ <div class="layui-input-inline">
+ <input id="stdQty" class="layui-input" type="text">
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;display: none">
+ <label class="layui-form-label">锛�</label>
+ <div class="layui-input-inline">
+ <input id="minWt" class="layui-input" type="text">
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;display: none">
+ <label class="layui-form-label">锛�</label>
+ <div class="layui-input-inline">
+ <input id="maxWt" class="layui-input" type="text">
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;">
+ <label class="layui-form-label">閲嶃��銆�閲忥細</label>
+ <div class="layui-input-inline">
+ <input id="grossWt" class="layui-input" type="text">
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;display: none">
+ <label class="layui-form-label">锛�</label>
+ <div class="layui-input-inline">
+ <input id="cartPos" class="layui-input" type="text">
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;">
+ <label class="layui-form-label">璁惧鎻忚堪锛�</label>
+ <div class="layui-input-inline">
+ <input id="decDesc" class="layui-input" type="text">
+ </div>
+ </div>
+
+
+ <hr class="layui-bg-gray">
+
+ <div id="data-detail-btn" class="layui-btn-container layui-form-item">
+ <div id="data-detail-submit-save" type="button" class="layui-btn layui-btn-normal" lay-submit lay-filter="save">淇濆瓨</div>
+ <div id="data-detail-submit-edit" type="button" class="layui-btn layui-btn-normal" lay-submit lay-filter="edit">淇敼</div>
+ <div id="data-detail-close" type="button" class="layui-btn" lay-submit lay-filter="close">鍏抽棴</div>
+ </div>
+
+ <div id="prompt">
+ 娓╅Θ鎻愮ず锛氳浠旂粏濉啓鐩稿叧淇℃伅锛�<span class="extrude"><span class="not-null">*</span> 涓哄繀濉�夐」銆�</span>
+ </div>
+ </form>
+</div>
+</body>
+<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
+<script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/agvBasDevp/basDevp.js" charset="utf-8"></script>
+</html>
+
diff --git a/src/main/webapp/views/agvLocDetl/locDetl.html b/src/main/webapp/views/agvLocDetl/locDetl.html
new file mode 100644
index 0000000..b07c1a0
--- /dev/null
+++ b/src/main/webapp/views/agvLocDetl/locDetl.html
@@ -0,0 +1,81 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="utf-8">
+ <title></title>
+ <meta name="renderer" content="webkit">
+ <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+ <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+ <link rel="stylesheet" href="../../static/layui/css/layui.css" media="all">
+ <link rel="stylesheet" href="../../static/css/cool.css" media="all">
+ <link rel="stylesheet" href="../../static/css/common.css" media="all">
+</head>
+<body>
+
+<!-- 鎼滅储鏍� -->
+<div id="search-box" class="layui-form layui-card-header">
+ <div class="layui-inline">
+ <div class="layui-input-inline">
+ <input class="layui-input" type="text" name="loc_no" placeholder="搴撲綅鍙�" autocomplete="off">
+ </div>
+ </div>
+ <div class="layui-inline">
+ <div class="layui-input-inline">
+ <input class="layui-input" type="text" name="zpallet" placeholder="鎵樼洏鐮�" autocomplete="off">
+ </div>
+ </div>
+ <div class="layui-inline">
+ <div class="layui-input-inline">
+ <input class="layui-input" type="text" name="matnr" placeholder="鐗╂枡鍙�" autocomplete="off">
+ </div>
+ </div>
+ <div class="layui-inline">
+ <div class="layui-input-inline">
+ <input class="layui-input" type="text" name="row" placeholder="鎺掓暟" autocomplete="off">
+ </div>
+ </div>
+ <div class="layui-inline">
+ <div class="layui-input-inline">
+ <input class="layui-input" type="text" name="condition" placeholder="璇疯緭鍏�" autocomplete="off">
+ </div>
+
+ </div>
+
+ <!-- 寰呮坊鍔� -->
+ <div id="data-search-btn" class="layui-btn-container layui-form-item" style="display: inline-block">
+ <button id="search" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="search">鎼滅储</button>
+ <button id="reset" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="reset">閲嶇疆</button>
+ <button id="unreason" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="unreason">鏌ョ湅寮傚父鏁版嵁</button>
+ </div>
+
+</div>
+
+<!-- 琛ㄦ牸 -->
+<div class="layui-form">
+ <table class="layui-hide" id="agvLocDetl" lay-filter="locDetl"></table>
+</div>
+<script type="text/html" id="toolbar">
+ <div class="layui-btn-container">
+ <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData" style="margin-top: 10px">瀵煎嚭</button>
+ </div>
+</script>
+
+<script type="text/html" id="operate">
+ <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="detail">璇︽儏</a>
+</script>
+
+<script type="text/html" id="stockFreezeTpl">
+ <input type="checkbox" name="stockFreeze" value="{{d.stockFreeze}}" lay-skin="switch" lay-text="姝e父|鍐荤粨" lay-filter="stockFreezeSwitch" {{ d.stockFreeze === 1 ? 'checked' : '' }}>
+</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/agvLocDetl/locDetl.js" charset="utf-8"></script>
+
+<iframe id="detail-iframe" scrolling="auto" style="display:none;"></iframe>
+
+</body>
+</html>
+
diff --git a/src/main/webapp/views/agvLocDetl/locDetl_detail.html b/src/main/webapp/views/agvLocDetl/locDetl_detail.html
new file mode 100644
index 0000000..7684ede
--- /dev/null
+++ b/src/main/webapp/views/agvLocDetl/locDetl_detail.html
@@ -0,0 +1,168 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="utf-8">
+ <title></title>
+ <meta name="renderer" content="webkit">
+ <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+ <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+ <link rel="stylesheet" href="../../static/layui/css/layui.css" media="all">
+ <link rel="stylesheet" href="../../static/css/cool.css" media="all">
+ <link rel="stylesheet" href="../../static/css/common.css" media="all">
+</head>
+<body>
+
+<!-- 璇︽儏 -->
+<div id="data-detail" class="layer_self_wrap">
+ <form id="detail" class="layui-form">
+ <!--
+ <div class="layui-inline" style="display: none">
+ <label class="layui-form-label"><span class="not-null">*</span>缂栥��銆�鍙凤細</label>
+ <div class="layui-input-inline">
+ <input id="id" class="layui-input" type="text" placeholder="缂栧彿">
+ </div>
+ </div>
+ -->
+ <div class="layui-inline" style="width:31%;">
+ <label class="layui-form-label"><span class="not-null">*</span>搴� 浣� 鍙凤細</label>
+ <div class="layui-input-inline cool-auto-complete">
+ <input id="locNo" class="layui-input" type="text" onkeyup="check(this.id, 'locDetl')" lay-verify="required" style="display: none">
+ <input id="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-inline" style="width:31%;">
+ <label class="layui-form-label"><span class="not-null">*</span>鐗┿��銆�鏂欙細</label>
+ <div class="layui-input-inline">
+ <input id="matnr" class="layui-input" type="text" onkeyup="check(this.id, 'locDetl')" lay-verify="required" >
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;display: none">
+ <label class="layui-form-label">浠� 搴� 鍙凤細</label>
+ <div class="layui-input-inline">
+ <input id="lgnum" class="layui-input" type="text" >
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;display: none">
+ <label class="layui-form-label" style="font-size: x-small">杞偍璇锋眰缂栧彿锛�</label>
+ <div class="layui-input-inline">
+ <input id="tbnum" class="layui-input" type="text" lay-verify="number" >
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;display: none">
+ <label class="layui-form-label">琛� 椤� 鐩細</label>
+ <div class="layui-input-inline">
+ <input id="tbpos" class="layui-input" type="text" lay-verify="number" >
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;display: none">
+ <label class="layui-form-label" style="font-size: x-small">鐗╂枡鏍囩ID锛�</label>
+ <div class="layui-input-inline">
+ <input id="zmatid" class="layui-input" type="text" >
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;">
+ <label class="layui-form-label">鐗╂枡鎻忚堪锛�</label>
+ <div class="layui-input-inline">
+ <input id="maktx" class="layui-input" type="text">
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;display: none">
+ <label class="layui-form-label">宸ャ��銆�鍘傦細</label>
+ <div class="layui-input-inline">
+ <input id="werks" class="layui-input" type="text">
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;">
+ <label class="layui-form-label">鏁般��銆�閲忥細</label>
+ <div class="layui-input-inline">
+ <input id="anfme" class="layui-input" type="text" lay-verify="number" >
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;">
+ <label class="layui-form-label">鍗曘��銆�浣嶏細</label>
+ <div class="layui-input-inline">
+ <input id="altme" class="layui-input" type="text">
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;">
+ <label class="layui-form-label">鎵樼洏鏉$爜锛�</label>
+ <div class="layui-input-inline">
+ <input id="zpallet" class="layui-input" type="text">
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;display: none">
+ <label class="layui-form-label">鐢ㄦ埛ID锛�</label>
+ <div class="layui-input-inline">
+ <input id="bname" class="layui-input" type="text">
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;">
+ <label class="layui-form-label">澶囥��銆�娉細</label>
+ <div class="layui-input-inline">
+ <input id="memo" class="layui-input" type="text">
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;display: none">
+ <label class="layui-form-label">淇敼浜哄憳锛�</label>
+ <div class="layui-input-inline cool-auto-complete">
+ <input id="modiUser" class="layui-input" type="text" lay-verify="number" style="display: none">
+ <input id="modiUser$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="璇疯緭鍏�..." onfocus=this.blur()>
+ <div class="cool-auto-complete-window">
+ <input class="cool-auto-complete-window-input" data-key="userQueryBymodiUser" onkeyup="autoLoad(this.getAttribute('data-key'))">
+ <select class="cool-auto-complete-window-select" data-key="userQueryBymodiUserSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
+ </select>
+ </div>
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;display: none">
+ <label class="layui-form-label">淇敼鏃堕棿锛�</label>
+ <div class="layui-input-inline">
+ <input id="modiTime$" class="layui-input" type="text" autocomplete="off">
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;display: none">
+ <label class="layui-form-label">鍒� 寤� 鑰咃細</label>
+ <div class="layui-input-inline cool-auto-complete">
+ <input id="appeUser" class="layui-input" type="text" lay-verify="number" style="display: none">
+ <input id="appeUser$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="璇疯緭鍏�..." onfocus=this.blur()>
+ <div class="cool-auto-complete-window">
+ <input class="cool-auto-complete-window-input" data-key="userQueryByappeUser" onkeyup="autoLoad(this.getAttribute('data-key'))">
+ <select class="cool-auto-complete-window-select" data-key="userQueryByappeUserSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
+ </select>
+ </div>
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;display: none">
+ <label class="layui-form-label">娣诲姞鏃堕棿锛�</label>
+ <div class="layui-input-inline">
+ <input id="appeTime$" class="layui-input" type="text" autocomplete="off">
+ </div>
+ </div>
+
+
+ <hr class="layui-bg-gray">
+
+ <div id="data-detail-btn" class="layui-btn-container layui-form-item">
+ <div id="data-detail-submit-save" type="button" class="layui-btn layui-btn-normal" lay-submit lay-filter="save">淇濆瓨</div>
+ <div id="data-detail-submit-edit" type="button" class="layui-btn layui-btn-normal" lay-submit lay-filter="edit">淇敼</div>
+ <div id="data-detail-close" type="button" class="layui-btn" lay-submit lay-filter="close">鍏抽棴</div>
+ </div>
+
+ <div id="prompt">
+ 娓╅Θ鎻愮ず锛氳浠旂粏濉啓鐩稿叧淇℃伅锛�<span class="extrude"><span class="not-null">*</span> 涓哄繀濉�夐」銆�</span>
+ </div>
+ </form>
+</div>
+</body>
+<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
+<script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/locDetl/locDetl.js" charset="utf-8"></script>
+</html>
+
diff --git a/src/main/webapp/views/agvLocMast/locMast.html b/src/main/webapp/views/agvLocMast/locMast.html
new file mode 100644
index 0000000..55b949c
--- /dev/null
+++ b/src/main/webapp/views/agvLocMast/locMast.html
@@ -0,0 +1,177 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="utf-8">
+ <title></title>
+ <meta name="renderer" content="webkit">
+ <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+ <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+ <link rel="stylesheet" href="../../static/layui/css/layui.css" media="all">
+ <link rel="stylesheet" href="../../static/css/cool.css" media="all">
+ <link rel="stylesheet" href="../../static/css/common.css" media="all">
+ <style>
+ #btn-init {
+ display: none;
+ }
+ .layui-layer-page .layui-layer-content {
+ position: relative;
+ overflow: visible !important;
+ }
+
+ </style>
+</head>
+<body>
+
+<!-- 鎼滅储鏍� -->
+<div id="search-box" class="layui-form layui-card-header">
+ <div class="layui-inline">
+ <div class="layui-input-inline">
+ <input class="layui-input" type="text" name="loc_no" placeholder="搴撲綅鍙�" autocomplete="off">
+ </div>
+ </div>
+ <div class="layui-inline">
+ <div class="layui-input-inline">
+ <input class="layui-input" type="text" name="loc_sts" placeholder="搴撲綅鐘舵��" autocomplete="off">
+ </div>
+ </div>
+ <div class="layui-inline">
+ <div class="layui-input-inline">
+ <input class="layui-input" type="text" name="row1" placeholder="鎺�" autocomplete="off">
+ </div>
+ </div>
+ <div class="layui-inline">
+ <div class="layui-input-inline">
+ <input class="layui-input" type="text" name="bay1" placeholder="鍒�" autocomplete="off">
+ </div>
+ </div>
+ <div class="layui-inline">
+ <div class="layui-input-inline">
+ <input class="layui-input" type="text" name="lev1" placeholder="灞�" autocomplete="off">
+ </div>
+ </div>
+ <!-- 寰呮坊鍔� -->
+ <div id="data-search-btn" class="layui-btn-container layui-form-item" style="display: inline-block">
+ <button id="search" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="search">鎼滅储</button>
+ <button id="reset" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="reset">閲嶇疆</button>
+ </div>
+</div>
+
+<!-- 琛ㄦ牸 -->
+<div class="layui-form">
+ <table class="layui-hide" id="agvLocMast" lay-filter="locMast"></table>
+</div>
+<script type="text/html" id="toolbar">
+ <div class="layui-btn-container">
+ <button class="layui-btn layui-btn-sm" id="btn-add" lay-event="addData">鏂板</button>
+ <button class="layui-btn layui-btn-sm" id="btn-delete" lay-event="deleteData">鍒犻櫎</button>
+ <button class="layui-btn layui-btn-primary" id="btn-init" lay-event="init">鍒濆鍖�</button>
+ <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData">瀵煎嚭</button>
+ </div>
+</script>
+
+<script type="text/html" id="operate">
+<!-- <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="detail">璇︽儏</a>-->
+ <a class="layui-btn layui-btn-xs btn-edit" lay-event="edit">缂栬緫</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/agvLocMast/locMast.js" charset="utf-8"></script>
+<iframe id="detail-iframe" scrolling="auto" style="display:none;"></iframe>
+
+<!-- 閲嶇疆搴撲綅寮圭獥 -->
+<div id="resetLocDiv" style="margin: 20px 0 10px 30px; display: none">
+ <div class="layui-form layui-form-pane">
+ <!-- 鎺� -->
+ <div class="layui-form-item">
+ <div class="layui-inline">
+ <label class="layui-form-label">璧锋鎺�</label>
+ <div class="layui-input-inline" style="width: 100px;">
+ <input type="text" name="startRow" autocomplete="off" class="layui-input" lay-verify="required|number">
+ </div>
+ <div class="layui-form-mid">-</div>
+ <div class="layui-input-inline" style="width: 100px;">
+ <input type="text" name="endRow" autocomplete="off" class="layui-input" lay-verify="required|number">
+ </div>
+ </div>
+ </div>
+ <!-- 鍒� -->
+ <div class="layui-form-item">
+ <div class="layui-inline">
+ <label class="layui-form-label">璧锋鍒�</label>
+ <div class="layui-input-inline" style="width: 100px;">
+ <input type="text" name="startBay" autocomplete="off" class="layui-input" lay-verify="required|number">
+ </div>
+ <div class="layui-form-mid">-</div>
+ <div class="layui-input-inline" style="width: 100px;">
+ <input type="text" name="endBay" autocomplete="off" class="layui-input" lay-verify="required|number">
+ </div>
+ </div>
+ </div>
+ <!-- 灞� -->
+ <div class="layui-form-item">
+ <div class="layui-inline">
+ <label class="layui-form-label">璧锋灞�</label>
+ <div class="layui-input-inline" style="width: 100px;">
+ <input type="text" name="startLev" autocomplete="off" class="layui-input" lay-verify="required|number">
+ </div>
+ <div class="layui-form-mid">-</div>
+ <div class="layui-input-inline" style="width: 100px;">
+ <input type="text" name="endLev" autocomplete="off" class="layui-input" lay-verify="required|number">
+ </div>
+ </div>
+ </div>
+ <div class="layui-form-item">
+ <label class="layui-form-label">鍫嗗灈鏈烘暟閲�</label>
+ <div class="layui-input-inline">
+ <input type="text" name="crnAmount" lay-verify="required|number" autocomplete="off" class="layui-input">
+ </div>
+ </div>
+ <!-- 搴撲綅绫诲瀷 -->
+ <div class="layui-form-item">
+ <label class="layui-form-label">楂樹綆绫诲瀷</label>
+ <div class="layui-input-inline">
+ <select name="locType1">
+ <option style="display: none"></option>
+ <option value="0">鏈煡</option>
+ <option value="1">浣庡簱浣�</option>
+ <option value="2">楂樺簱浣�</option>
+ </select>
+ </div>
+ </div>
+ <div class="layui-form-item">
+ <label class="layui-form-label">瀹界獎绫诲瀷</label>
+ <div class="layui-input-inline">
+ <select name="locType2">
+ <option style="display: none"></option>
+ <option value="0">鏈煡</option>
+ <option value="1">绐勫簱浣�</option>
+ <option value="2">瀹藉簱浣�</option>
+ </select>
+ </div>
+ </div>
+ <div class="layui-form-item">
+ <label class="layui-form-label">杞婚噸绫诲瀷</label>
+ <div class="layui-input-inline">
+ <select name="locType3">
+ <option style="display: none"></option>
+ <option value="0">鏈煡</option>
+ <option value="1">杞诲簱浣�</option>
+ <option value="2">閲嶅簱浣�</option>
+ </select>
+ </div>
+ </div>
+ <div id="prompt" style="text-indent: 10px;">
+ <span class="not-null">鍒濆鍖栧簱浣嶅悗灏嗗垹闄ゅ簱瀛樻槑缁嗭紝璇疯皑鎱庢搷浣滐紒</span>
+ </div>
+ <!-- 鎸夐挳 -->
+ <div style="text-align: center; margin-top: 20px">
+ <button class="layui-btn layui-btn-radius layui-btn-normal" id="initDo" lay-submit lay-filter="initDo">纭畾</button>
+ </div>
+ </div>
+</div>
+</body>
+</html>
+
diff --git a/src/main/webapp/views/agvLocMast/locMast_detail.html b/src/main/webapp/views/agvLocMast/locMast_detail.html
new file mode 100644
index 0000000..938b271
--- /dev/null
+++ b/src/main/webapp/views/agvLocMast/locMast_detail.html
@@ -0,0 +1,238 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="utf-8">
+ <title></title>
+ <meta name="renderer" content="webkit">
+ <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+ <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+ <link rel="stylesheet" href="../../static/layui/css/layui.css" media="all">
+ <link rel="stylesheet" href="../../static/css/cool.css" media="all">
+ <link rel="stylesheet" href="../../static/css/common.css" media="all">
+</head>
+<body>
+
+<!-- 璇︽儏 -->
+<div id="data-detail" class="layer_self_wrap">
+ <form id="detail" class="layui-form" style="text-align: center">
+ <!--
+ <div class="layui-inline" style="display: none">
+ <label class="layui-form-label"><span class="not-null">*</span>缂栥��銆�鍙凤細</label>
+ <div class="layui-input-inline">
+ <input id="id" class="layui-input" type="text" placeholder="缂栧彿">
+ </div>
+ </div>
+ -->
+ <div class="layui-inline" style="width:80%;">
+ <label class="layui-form-label"><span class="not-null">*</span>搴� 浣� 鍙凤細</label>
+ <div class="layui-input-inline">
+ <input id="locNo" class="layui-input" type="text" onkeyup="check(this.id, 'locMast')">
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;display: none">
+ <label class="layui-form-label"><span class="not-null">*</span>锛�</label>
+ <div class="layui-input-inline">
+ <input id="locType" class="layui-input" type="text" >
+ </div>
+ </div>
+ <div class="layui-inline" style="width:80%; display: none">
+ <label class="layui-form-label">搴撲綅绫诲瀷锛�</label>
+ <div class="layui-input-inline cool-auto-complete">
+ <input id="whsType" class="layui-input" type="text" style="display: none">
+ <input id="whsType$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" onfocus=this.blur()>
+ <div class="cool-auto-complete-window">
+ <input class="cool-auto-complete-window-input" data-key="basWhsQueryBywhsType" onkeyup="autoLoad(this.getAttribute('data-key'))">
+ <select class="cool-auto-complete-window-select" data-key="basWhsQueryBywhsTypeSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
+ </select>
+ </div>
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;display: none">
+ <label class="layui-form-label">锛�</label>
+ <div class="layui-input-inline">
+ <input id="pltType" class="layui-input" type="text">
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;display: none">
+ <label class="layui-form-label">锛�</label>
+ <div class="layui-input-inline">
+ <input id="ctnType" class="layui-input" type="text">
+ </div>
+ </div>
+ <div class="layui-inline" style="width:80%;">
+ <label class="layui-form-label"><span class="not-null">*</span>搴撲綅鐘舵�侊細</label>
+ <div class="layui-input-inline cool-auto-complete">
+ <input id="locSts" class="layui-input" type="text" style="display: none">
+ <input id="locSts$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" onfocus=this.blur()>
+ <div class="cool-auto-complete-window">
+ <input class="cool-auto-complete-window-input" data-key="basLocStsQueryBylocSts" onkeyup="autoLoad(this.getAttribute('data-key'))">
+ <select class="cool-auto-complete-window-select" data-key="basLocStsQueryBylocStsSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
+ </select>
+ </div>
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;display: none">
+ <label class="layui-form-label">锛�</label>
+ <div class="layui-input-inline">
+ <input id="sheetNo" class="layui-input" type="text">
+ </div>
+ </div>
+ <div class="layui-inline" style="width:80%;">
+ <label class="layui-form-label">鎺掞細</label>
+ <div class="layui-input-inline">
+ <input id="row1" class="layui-input" type="text" autocomplete="off" disabled="disabled">
+ </div>
+ </div>
+ <div class="layui-inline" style="width:80%;">
+ <label class="layui-form-label">鍒楋細</label>
+ <div class="layui-input-inline">
+ <input id="bay1" class="layui-input" type="text" autocomplete="off" disabled="disabled">
+ </div>
+ </div>
+ <div class="layui-inline" style="width:80%;">
+ <label class="layui-form-label">灞傦細</label>
+ <div class="layui-input-inline">
+ <input id="lev1" class="layui-input" type="text" autocomplete="off" disabled="disabled">
+ </div>
+ </div>
+ <div class="layui-inline" style="width:80%;">
+ <label class="layui-form-label">妤硷細</label>
+ <div class="layui-input-inline">
+ <input id="floor" class="layui-input" type="text" autocomplete="off" disabled="disabled">
+ </div>
+ </div>
+ <div class="layui-inline" style="width:80%;display: none">
+ <label class="layui-form-label">婊°��銆�鏉匡細</label>
+ <div class="layui-input-inline" style="text-align: left">
+ <input id="fullPlt" class="layui-input" type="checkBox" lay-skin="primary" lay-filter='detailCheckbox'>
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;display: none">
+ <label class="layui-form-label">锛�</label>
+ <div class="layui-input-inline">
+ <input id="outEnable" class="layui-input" type="text">
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;display: none">
+ <label class="layui-form-label">锛�</label>
+ <div class="layui-input-inline">
+ <input id="ioTime$" class="layui-input" type="text" autocomplete="off">
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;display: none">
+ <label class="layui-form-label">锛�</label>
+ <div class="layui-input-inline">
+ <input id="firstTime$" class="layui-input" type="text" autocomplete="off">
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;display: none">
+ <label class="layui-form-label">淇敼浜哄憳锛�</label>
+ <div class="layui-input-inline cool-auto-complete">
+ <input id="modiUser" class="layui-input" type="text" style="display: none">
+ <input id="modiUser$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="璇疯緭鍏�..." onfocus=this.blur()>
+ <div class="cool-auto-complete-window">
+ <input class="cool-auto-complete-window-input" data-key="userQueryBymodiUser" onkeyup="autoLoad(this.getAttribute('data-key'))">
+ <select class="cool-auto-complete-window-select" data-key="userQueryBymodiUserSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
+ </select>
+ </div>
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;display: none">
+ <label class="layui-form-label">淇敼鏃堕棿锛�</label>
+ <div class="layui-input-inline">
+ <input id="modiTime$" class="layui-input" type="text" autocomplete="off">
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;display: none">
+ <label class="layui-form-label">鍒� 寤� 鑰咃細</label>
+ <div class="layui-input-inline cool-auto-complete">
+ <input id="appeUser" class="layui-input" type="text" style="display: none">
+ <input id="appeUser$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="璇疯緭鍏�..." onfocus=this.blur()>
+ <div class="cool-auto-complete-window">
+ <input class="cool-auto-complete-window-input" data-key="userQueryByappeUser" onkeyup="autoLoad(this.getAttribute('data-key'))">
+ <select class="cool-auto-complete-window-select" data-key="userQueryByappeUserSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
+ </select>
+ </div>
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;display: none">
+ <label class="layui-form-label">娣诲姞鏃堕棿锛�</label>
+ <div class="layui-input-inline">
+ <input id="appeTime$" class="layui-input" type="text" autocomplete="off">
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;display: none">
+ <label class="layui-form-label">锛�</label>
+ <div class="layui-input-inline">
+ <input id="errorTime$" class="layui-input" type="text" autocomplete="off">
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;display: none">
+ <label class="layui-form-label">锛�</label>
+ <div class="layui-input-inline">
+ <input id="errorMemo" class="layui-input" type="text">
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;display: none">
+ <label class="layui-form-label">锛�</label>
+ <div class="layui-input-inline">
+ <input id="ctnKind" class="layui-input" type="text">
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;display: none">
+ <label class="layui-form-label">锛�</label>
+ <div class="layui-input-inline">
+ <input id="scWeight" class="layui-input" type="text">
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;display: none">
+ <label class="layui-form-label">锛�</label>
+ <div class="layui-input-inline">
+ <input id="invWh" class="layui-input" type="text">
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;display: none">
+ <label class="layui-form-label">锛�</label>
+ <div class="layui-input-inline">
+ <input id="mk" class="layui-input" type="text">
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;display: none">
+ <label class="layui-form-label">锛�</label>
+ <div class="layui-input-inline">
+ <input id="barcode" class="layui-input" type="text">
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;display: none">
+ <label class="layui-form-label">锛�</label>
+ <div class="layui-input-inline">
+ <input id="PdcType" class="layui-input" type="text">
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;display: none">
+ <label class="layui-form-label">锛�</label>
+ <div class="layui-input-inline">
+ <input id="ctnNo" class="layui-input" type="text">
+ </div>
+ </div>
+
+
+ <div id="data-detail-btn" class="layui-btn-container layui-form-item">
+ <div id="data-detail-submit-save" type="button" class="layui-btn layui-btn-normal" lay-submit lay-filter="save">淇濆瓨</div>
+ <div id="data-detail-submit-edit" type="button" class="layui-btn layui-btn-normal" lay-submit lay-filter="edit">淇敼</div>
+ <div id="data-detail-close" type="button" class="layui-btn" lay-submit lay-filter="close">鍏抽棴</div>
+ </div>
+
+ <div id="prompt" style="text-indent: 30px;">
+ <span class="not-null">娓╅Θ鎻愮ず锛氫慨鏀逛负绌哄簱浣嶆椂浼氭竻闄ゅ簱瀛樻槑缁�</span>
+ </div>
+ </form>
+</div>
+</body>
+<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
+<script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/agvLocMast/locMast.js" charset="utf-8"></script>
+</html>
+
diff --git a/src/main/webapp/views/agvStoMan/stoQue.html b/src/main/webapp/views/agvStoMan/stoQue.html
new file mode 100644
index 0000000..e96f114
--- /dev/null
+++ b/src/main/webapp/views/agvStoMan/stoQue.html
@@ -0,0 +1,86 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="utf-8">
+ <title></title>
+ <meta name="renderer" content="webkit">
+ <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+ <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+ <link rel="stylesheet" href="../../static/layui/css/layui.css" media="all">
+ <link rel="stylesheet" href="../../static/css/cool.css" media="all">
+ <link rel="stylesheet" href="../../static/css/common.css" media="all">
+ <style>
+ #btn-export {
+ }
+ #refresh-sto {
+ display: none;
+ }
+ .loc-detl {
+ display: none;
+ }
+ #detlTable {
+ margin-top: 20px;
+ }
+ </style>
+</head>
+<body>
+
+<!-- 鎼滅储鏍� -->
+<div id="search-box" class="layui-form layui-card-header">
+ <div class="layui-inline">
+ <div class="layui-input-inline">
+ <input class="layui-input" type="text" name="loc_no" placeholder="搴撲綅鍙�" autocomplete="off">
+ </div>
+ </div>
+ <div class="layui-inline">
+ <div class="layui-input-inline">
+ <input class="layui-input" type="text" name="loc_sts" placeholder="搴撲綅鐘舵��" autocomplete="off">
+ </div>
+ </div>
+ <div class="layui-inline">
+ <div class="layui-input-inline">
+ <input class="layui-input" type="text" name="barcode" 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="modi_time" type="text" placeholder="璧峰鏃堕棿 - 缁堟鏃堕棿" autocomplete="off" style="width: 300px">
+ </div>
+ </div>
+ <!-- 寰呮坊鍔� -->
+ <div id="data-search-btn" class="layui-btn-container layui-form-item" style="display: inline-block">
+ <button id="search" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="search">鎼滅储</button>
+ <button id="reset" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="reset">閲嶇疆</button>
+ </div>
+</div>
+<script type="text/html" id="toolbar">
+ <div class="layui-btn-container">
+ <button class="layui-btn layui-btn-normal layui-btn-sm" id="refresh-sto" lay-event="refreshSto" style="margin-left: 10px">鏇存柊搴撳瓨</button>
+ <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData" style="float: right">瀵煎嚭</button>
+ </div>
+</script>
+<!-- 琛ㄦ牸 -->
+<table class="layui-hide" id="agvStoQue" lay-filter="stoQue"></table>
+
+<script type="text/html" id="operate">
+ <a class="layui-btn layui-btn-xs loc-detl" lay-event="locDetl">鏌ョ湅鏄庣粏</a>
+</script>
+
+<!--鏄庣粏琛�-->
+<div id="detlTable" style="display: none">
+ <div class="layui-inline" style="width:90%;margin-top: 10px;margin-left: 20px">
+ <span style=" color: indianred">浠ヤ笅涓哄綋鍓嶅簱浣嶇殑鐗╂枡鏄庣粏</span>
+ </div>
+
+ <table class="layui-hide" id="locDetlByMap" lay-filter="locDetlByMap"></table>
+</div>
+
+<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
+<script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/agvStoMan/stoQue.js" charset="utf-8"></script>
+</body>
+</html>
+
diff --git a/src/main/webapp/views/agvWaitPakin/waitPakin.html b/src/main/webapp/views/agvWaitPakin/waitPakin.html
new file mode 100644
index 0000000..124835e
--- /dev/null
+++ b/src/main/webapp/views/agvWaitPakin/waitPakin.html
@@ -0,0 +1,68 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="utf-8">
+ <title></title>
+ <meta name="renderer" content="webkit">
+ <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+ <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+ <link rel="stylesheet" href="../../static/layui/css/layui.css" media="all">
+ <link rel="stylesheet" href="../../static/css/cool.css" media="all">
+ <link rel="stylesheet" href="../../static/css/common.css" media="all">
+</head>
+<body>
+
+<!-- 鎼滅储鏍� -->
+<div id="search-box" class="layui-form layui-card-header">
+ <div class="layui-inline">
+ <div class="layui-input-inline">
+ <input class="layui-input" type="text" name="zpallet" placeholder="鎵樼洏鏉$爜" autocomplete="off">
+ </div>
+ </div>
+ <div class="layui-inline">
+ <div class="layui-input-inline">
+ <input class="layui-input" type="text" name="matnr" 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="modi_time" type="text" placeholder="璧峰鏃堕棿 - 缁堟鏃堕棿" autocomplete="off" style="width: 300px">
+ </div>
+ </div>
+ <!-- 寰呮坊鍔� -->
+ <div id="data-search-btn" class="layui-btn-container layui-form-item">
+ <button id="search" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="search">鎼滅储</button>
+ <button id="reset" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="reset">閲嶇疆</button>
+ </div>
+</div>
+
+<!-- 琛ㄦ牸 -->
+<div class="layui-form">
+ <table class="layui-hide" id="agvWaitPakin" lay-filter="waitPakin"></table>
+</div>
+<script type="text/html" id="toolbar">
+ <div class="layui-btn-container">
+ <button class="layui-btn layui-btn-sm" id="btn-wrk" lay-event="addWrk">鐢熸垚浠诲姟</button>
+ <button class="layui-btn layui-btn-sm" id="btn-add" lay-event="addData">鏂板</button>
+ <button class="layui-btn layui-btn-sm" id="btn-delete" lay-event="deleteData">鍒犻櫎</button>
+ <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData" style="">瀵煎嚭</button>
+ </div>
+</script>
+
+<script type="text/html" id="operate">
+ <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="detail">璇︽儏</a>
+ <a class="layui-btn layui-btn-xs btn-edit" lay-event="edit">缂栬緫</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/agvWaitPakin/waitPakin.js" charset="utf-8"></script>
+
+<iframe id="detail-iframe" scrolling="auto" style="display:none;"></iframe>
+
+</body>
+</html>
+
diff --git a/src/main/webapp/views/agvWaitPakin/waitPakin_detail.html b/src/main/webapp/views/agvWaitPakin/waitPakin_detail.html
new file mode 100644
index 0000000..a868752
--- /dev/null
+++ b/src/main/webapp/views/agvWaitPakin/waitPakin_detail.html
@@ -0,0 +1,132 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="utf-8">
+ <title></title>
+ <meta name="renderer" content="webkit">
+ <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+ <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+ <link rel="stylesheet" href="../../static/layui/css/layui.css" media="all">
+ <link rel="stylesheet" href="../../static/css/cool.css" media="all">
+ <link rel="stylesheet" href="../../static/css/common.css" media="all">
+</head>
+<body>
+
+<!-- 璇︽儏 -->
+<div id="data-detail" class="layer_self_wrap">
+ <form id="detail" class="layui-form">
+ <!--
+ <div class="layui-inline" style="display: none">
+ <label class="layui-form-label"><span class="not-null">*</span>缂栥��銆�鍙凤細</label>
+ <div class="layui-input-inline">
+ <input id="id" class="layui-input" type="text" placeholder="缂栧彿">
+ </div>
+ </div>
+ -->
+ <div class="layui-inline" style="width:31%;">
+ <label class="layui-form-label"><span class="not-null">*</span>缂栥��銆�鍙凤細</label>
+ <div class="layui-input-inline">
+ <input id="id" class="layui-input" type="text" onkeyup="check(this.id, 'waitPakin')" lay-verify="number" >
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;">
+ <label class="layui-form-label">鎵� 鐩� 鐮侊細</label>
+ <div class="layui-input-inline">
+ <input id="barcode" class="layui-input" type="text">
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;">
+ <label class="layui-form-label">鐗╂枡鍙凤細</label>
+ <div class="layui-input-inline">
+ <input id="matnr" class="layui-input" type="text">
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;">
+ <label class="layui-form-label">鐗╂枡鎻忚堪锛�</label>
+ <div class="layui-input-inline">
+ <input id="maktx" class="layui-input" type="text">
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;">
+ <label class="layui-form-label">鏁般��銆�閲忥細</label>
+ <div class="layui-input-inline">
+ <input id="anfme" class="layui-input" type="text" lay-verify="number" >
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;">
+ <label class="layui-form-label">鍗曘��銆�浣嶏細</label>
+ <div class="layui-input-inline">
+ <input id="unit" class="layui-input" type="text">
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;">
+ <label class="layui-form-label">鐘躲��銆�鎬侊細</label>
+ <div class="layui-input-inline">
+ <input id="status" class="layui-input" type="text">
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;">
+ <label class="layui-form-label">澶囥��銆�娉細</label>
+ <div class="layui-input-inline">
+ <input id="memo" class="layui-input" type="text">
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;">
+ <label class="layui-form-label">淇敼鏃堕棿锛�</label>
+ <div class="layui-input-inline">
+ <input id="modiTime$" class="layui-input" type="text" autocomplete="off">
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;">
+ <label class="layui-form-label">淇敼浜哄憳锛�</label>
+ <div class="layui-input-inline cool-auto-complete">
+ <input id="modiUser" class="layui-input" type="text" lay-verify="number" style="display: none">
+ <input id="modiUser$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="璇疯緭鍏�..." onfocus=this.blur()>
+ <div class="cool-auto-complete-window">
+ <input class="cool-auto-complete-window-input" data-key="userQueryBymodiUser" onkeyup="autoLoad(this.getAttribute('data-key'))">
+ <select class="cool-auto-complete-window-select" data-key="userQueryBymodiUserSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
+ </select>
+ </div>
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;">
+ <label class="layui-form-label">娣诲姞鏃堕棿锛�</label>
+ <div class="layui-input-inline">
+ <input id="appeTime$" class="layui-input" type="text" autocomplete="off">
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;">
+ <label class="layui-form-label">鍒� 寤� 鑰咃細</label>
+ <div class="layui-input-inline cool-auto-complete">
+ <input id="appeUser" class="layui-input" type="text" lay-verify="number" style="display: none">
+ <input id="appeUser$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="璇疯緭鍏�..." onfocus=this.blur()>
+ <div class="cool-auto-complete-window">
+ <input class="cool-auto-complete-window-input" data-key="userQueryByappeUser" onkeyup="autoLoad(this.getAttribute('data-key'))">
+ <select class="cool-auto-complete-window-select" data-key="userQueryByappeUserSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
+ </select>
+ </div>
+ </div>
+ </div>
+
+
+ <hr class="layui-bg-gray">
+
+ <div id="data-detail-btn" class="layui-btn-container layui-form-item">
+ <div id="data-detail-submit-save" type="button" class="layui-btn layui-btn-normal" lay-submit lay-filter="save">淇濆瓨</div>
+ <div id="data-detail-submit-edit" type="button" class="layui-btn layui-btn-normal" lay-submit lay-filter="edit">淇敼</div>
+ <div id="data-detail-close" type="button" class="layui-btn" lay-submit lay-filter="close">鍏抽棴</div>
+ </div>
+
+ <div id="prompt">
+ 娓╅Θ鎻愮ず锛氳浠旂粏濉啓鐩稿叧淇℃伅锛�<span class="extrude"><span class="not-null">*</span> 涓哄繀濉�夐」銆�</span>
+ </div>
+ </form>
+</div>
+</body>
+<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
+<script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/waitPakin/waitPakin.js" charset="utf-8"></script>
+</html>
+
diff --git a/src/main/webapp/views/agvWaitPakinLog/waitPakinLog.html b/src/main/webapp/views/agvWaitPakinLog/waitPakinLog.html
new file mode 100644
index 0000000..72b13f8
--- /dev/null
+++ b/src/main/webapp/views/agvWaitPakinLog/waitPakinLog.html
@@ -0,0 +1,58 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="utf-8">
+ <title></title>
+ <meta name="renderer" content="webkit">
+ <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+ <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+ <link rel="stylesheet" href="../../static/layui/css/layui.css" media="all">
+ <link rel="stylesheet" href="../../static/css/cool.css" media="all">
+ <link rel="stylesheet" href="../../static/css/common.css" media="all">
+</head>
+<body>
+
+<!-- 鎼滅储鏍� -->
+<div id="search-box" class="layui-form layui-card-header">
+ <div class="layui-inline">
+ <div class="layui-input-inline">
+ <input class="layui-input" type="text" name="pakin_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="modi_time" type="text" placeholder="璧峰鏃堕棿 - 缁堟鏃堕棿" autocomplete="off" style="width: 300px">
+ </div>
+ </div>
+ <!-- 寰呮坊鍔� -->
+ <div id="data-search-btn" class="layui-btn-container layui-form-item">
+ <button id="search" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="search">鎼滅储</button>
+ <button id="reset" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="reset">閲嶇疆</button>
+ </div>
+</div>
+
+<!-- 琛ㄦ牸 -->
+<div class="layui-form">
+ <table class="layui-hide" id="waitPakinLog" lay-filter="waitPakinLog"></table>
+</div>
+<script type="text/html" id="toolbar">
+ <div class="layui-btn-container">
+ <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData" style="margin-top: 10px">瀵煎嚭</button>
+ </div>
+</script>
+
+<script type="text/html" id="operate">
+</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/waitPakinLog/waitPakinLog.js" charset="utf-8"></script>
+
+<iframe id="detail-iframe" scrolling="auto" style="display:none;"></iframe>
+
+</body>
+</html>
+
diff --git a/src/main/webapp/views/agvWaitPakinLog/waitPakinLog_detail.html b/src/main/webapp/views/agvWaitPakinLog/waitPakinLog_detail.html
new file mode 100644
index 0000000..9d0812e
--- /dev/null
+++ b/src/main/webapp/views/agvWaitPakinLog/waitPakinLog_detail.html
@@ -0,0 +1,138 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="utf-8">
+ <title></title>
+ <meta name="renderer" content="webkit">
+ <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+ <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+ <link rel="stylesheet" href="../../static/layui/css/layui.css" media="all">
+ <link rel="stylesheet" href="../../static/css/cool.css" media="all">
+ <link rel="stylesheet" href="../../static/css/common.css" media="all">
+</head>
+<body>
+
+<!-- 璇︽儏 -->
+<div id="data-detail" class="layer_self_wrap">
+ <form id="detail" class="layui-form">
+ <!--
+ <div class="layui-inline" style="display: none">
+ <label class="layui-form-label"><span class="not-null">*</span>缂栥��銆�鍙凤細</label>
+ <div class="layui-input-inline">
+ <input id="id" class="layui-input" type="text" placeholder="缂栧彿">
+ </div>
+ </div>
+ -->
+ <div class="layui-inline" style="width:31%;">
+ <label class="layui-form-label"><span class="not-null">*</span>缂栥��銆�鍙凤細</label>
+ <div class="layui-input-inline">
+ <input id="id" class="layui-input" type="text" onkeyup="check(this.id, 'waitPakinLog')" lay-verify="number" >
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;">
+ <label class="layui-form-label">鍏ュ簱閫氱煡鍙凤細</label>
+ <div class="layui-input-inline">
+ <input id="pakinId" class="layui-input" type="text" lay-verify="number" >
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;">
+ <label class="layui-form-label">鎵� 鐩� 鐮侊細</label>
+ <div class="layui-input-inline">
+ <input id="barcode" class="layui-input" type="text">
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;">
+ <label class="layui-form-label">鐗╂枡鍙凤細</label>
+ <div class="layui-input-inline">
+ <input id="matnr" class="layui-input" type="text">
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;">
+ <label class="layui-form-label">鐗╂枡鎻忚堪锛�</label>
+ <div class="layui-input-inline">
+ <input id="maktx" class="layui-input" type="text">
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;">
+ <label class="layui-form-label">鏁般��銆�閲忥細</label>
+ <div class="layui-input-inline">
+ <input id="anfme" class="layui-input" type="text" lay-verify="number" >
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;">
+ <label class="layui-form-label">鍗曘��銆�浣嶏細</label>
+ <div class="layui-input-inline">
+ <input id="unit" class="layui-input" type="text">
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;">
+ <label class="layui-form-label">鐘躲��銆�鎬侊細</label>
+ <div class="layui-input-inline">
+ <input id="status" class="layui-input" type="text">
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;">
+ <label class="layui-form-label">澶囥��銆�娉細</label>
+ <div class="layui-input-inline">
+ <input id="memo" class="layui-input" type="text">
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;">
+ <label class="layui-form-label">淇敼鏃堕棿锛�</label>
+ <div class="layui-input-inline">
+ <input id="modiTime$" class="layui-input" type="text" autocomplete="off">
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;">
+ <label class="layui-form-label">淇敼浜哄憳锛�</label>
+ <div class="layui-input-inline cool-auto-complete">
+ <input id="modiUser" class="layui-input" type="text" lay-verify="number" style="display: none">
+ <input id="modiUser$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="璇疯緭鍏�..." onfocus=this.blur()>
+ <div class="cool-auto-complete-window">
+ <input class="cool-auto-complete-window-input" data-key="userQueryBymodiUser" onkeyup="autoLoad(this.getAttribute('data-key'))">
+ <select class="cool-auto-complete-window-select" data-key="userQueryBymodiUserSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
+ </select>
+ </div>
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;">
+ <label class="layui-form-label">娣诲姞鏃堕棿锛�</label>
+ <div class="layui-input-inline">
+ <input id="appeTime$" class="layui-input" type="text" autocomplete="off">
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;">
+ <label class="layui-form-label">鍒� 寤� 鑰咃細</label>
+ <div class="layui-input-inline cool-auto-complete">
+ <input id="appeUser" class="layui-input" type="text" lay-verify="number" style="display: none">
+ <input id="appeUser$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="璇疯緭鍏�..." onfocus=this.blur()>
+ <div class="cool-auto-complete-window">
+ <input class="cool-auto-complete-window-input" data-key="userQueryByappeUser" onkeyup="autoLoad(this.getAttribute('data-key'))">
+ <select class="cool-auto-complete-window-select" data-key="userQueryByappeUserSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
+ </select>
+ </div>
+ </div>
+ </div>
+
+
+ <hr class="layui-bg-gray">
+
+ <div id="data-detail-btn" class="layui-btn-container layui-form-item">
+ <div id="data-detail-submit-save" type="button" class="layui-btn layui-btn-normal" lay-submit lay-filter="save">淇濆瓨</div>
+ <div id="data-detail-submit-edit" type="button" class="layui-btn layui-btn-normal" lay-submit lay-filter="edit">淇敼</div>
+ <div id="data-detail-close" type="button" class="layui-btn" lay-submit lay-filter="close">鍏抽棴</div>
+ </div>
+
+ <div id="prompt">
+ 娓╅Θ鎻愮ず锛氳浠旂粏濉啓鐩稿叧淇℃伅锛�<span class="extrude"><span class="not-null">*</span> 涓哄繀濉�夐」銆�</span>
+ </div>
+ </form>
+</div>
+</body>
+<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
+<script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/waitPakinLog/waitPakinLog.js" charset="utf-8"></script>
+</html>
+
diff --git a/src/main/webapp/views/agvWrkCharge/wrkCharge.html b/src/main/webapp/views/agvWrkCharge/wrkCharge.html
new file mode 100644
index 0000000..ae32c43
--- /dev/null
+++ b/src/main/webapp/views/agvWrkCharge/wrkCharge.html
@@ -0,0 +1,305 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="utf-8">
+ <title></title>
+ <meta name="renderer" content="webkit">
+ <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+ <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+ <link rel="stylesheet" href="../../static/layui/css/layui.css" media="all">
+ <link rel="stylesheet" href="../../static/css/admin.css?v=318" media="all">
+ <link rel="stylesheet" href="../../static/css/cool.css" media="all">
+</head>
+<body>
+
+<div class="layui-fluid">
+ <div class="layui-card">
+ <div class="layui-card-body">
+ <div class="layui-form toolbar" id="search-box">
+ <div class="layui-form-item">
+ <div class="layui-inline">
+ <div class="layui-input-inline">
+ <input class="layui-input" type="text" name="wrk_no" placeholder="浠诲姟鍙�" autocomplete="off">
+ </div>
+ </div>
+ <div class="layui-inline">
+ <div class="layui-input-inline">
+ <input class="layui-input" type="text" name="ste_no" placeholder="绌挎杞�" autocomplete="off">
+ </div>
+ </div>
+ <div class="layui-inline">
+ <div class="layui-input-inline">
+ <select name="memo">
+ <option value="">閫夋嫨绫诲瀷</option>
+ <option value="charge">鍏呯數浠诲姟</option>
+ <option value="memo">婕旂ず浠诲姟</option>
+ </select>
+ </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"> 
+ <button class="layui-btn icon-btn" lay-filter="search" lay-submit>
+ <i class="layui-icon"></i>鎼滅储
+ </button>
+ <button class="layui-btn icon-btn" lay-filter="reset" lay-submit>
+ <i class="layui-icon"></i>閲嶇疆
+ </button>
+ </div>
+ </div>
+ </div>
+ <table class="layui-hide" id="wrkCharge" lay-filter="wrkCharge"></table>
+ </div>
+ </div>
+</div>
+
+<script type="text/html" id="memoTpl">
+ {{# if(d.memo === "charge"){ }}
+ <span name="memo" class="layui-badge layui-badge-red">鍏呯數浠诲姟</span>
+ {{# } }}
+ {{# if(d.memo === "memo"){ }}
+ <span name="memo" class="layui-badge layui-badge-red">婕旂ず浠诲姟</span>
+ {{# } }}
+ {{# if(d.memo === "reset"){ }}
+ <span name="memo" class="layui-badge layui-badge-red">澶嶄綅浠诲姟</span>
+ {{# } }}
+</script>
+
+<script type="text/html" id="toolbar">
+ <div class="layui-btn-container">
+ <button class="layui-btn layui-btn-sm layui-btn-normal" id="btn-clear-charge" lay-event="clearCharge">閲嶇疆鍏呯數浠诲姟</button>
+ <button class="layui-btn layui-btn-sm " id="btn-clear-memo" lay-event="clearMemo">閲嶇疆婕旂ず浠诲姟</button>
+ <button class="layui-btn layui-btn-sm layui-btn-primary layui-border-blue" id="btn-clear-reset" lay-event="clearReset">閲嶇疆澶嶄綅浠诲姟</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-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/wrkCharge/wrkCharge.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="mk" 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 cool-auto-complete">
+ <input class="layui-input" name="steNo" placeholder="璇疯緭鍏ョ┛姊溅" style="display: none">
+ <input id="steNo$" name="steNo$" 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="basSteQueryBysteNo" onkeyup="autoLoad(this.getAttribute('data-key'))">
+ <select class="cool-auto-complete-window-select" data-key="basSteQueryBysteNoSelect" 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="outMost" 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 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">绌烘澘(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="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 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="barcode" placeholder="璇疯緭鍏ユ潯鐮�">
+ </div>
+ </div>
+
+ </div>
+ </div>
+ <hr class="layui-bg-gray">
+ <div class="layui-form-item text-right">
+ <button class="layui-btn" lay-filter="editSubmit" lay-submit="">淇濆瓨</button>
+ <button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">鍙栨秷</button>
+ </div>
+ </form>
+</script>
+</html>
+
diff --git a/src/main/webapp/views/agvWrkDetl/wrkDetl.html b/src/main/webapp/views/agvWrkDetl/wrkDetl.html
new file mode 100644
index 0000000..75eda7a
--- /dev/null
+++ b/src/main/webapp/views/agvWrkDetl/wrkDetl.html
@@ -0,0 +1,69 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="utf-8">
+ <title></title>
+ <meta name="renderer" content="webkit">
+ <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+ <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+ <link rel="stylesheet" href="../../static/layui/css/layui.css" media="all">
+ <link rel="stylesheet" href="../../static/css/cool.css" media="all">
+ <link rel="stylesheet" href="../../static/css/common.css" media="all">
+ <style>
+ #btn-export {
+ margin-top: 10px;
+ }
+ </style>
+</head>
+<body>
+
+<!-- 鎼滅储鏍� -->
+<div id="search-box" class="layui-form layui-card-header">
+ <div class="layui-inline">
+ <div class="layui-input-inline">
+ <input class="layui-input" type="text" name="wrk_no" placeholder="宸ヤ綔鍙�" autocomplete="off">
+ </div>
+ </div>
+ <!-- 鏃ユ湡鑼冨洿 -->
+ <div class="layui-inline" style="width: 300px">
+ <div class="layui-input-inline">
+ <input class="layui-input layui-laydate-range" name="io_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 id="data-search-btn" class="layui-btn-container layui-form-item" style="display: inline-block">
+ <button id="search" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="search">鎼滅储</button>
+ <button id="reset" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="reset">閲嶇疆</button>
+ </div>
+</div>
+
+<!-- 琛ㄦ牸 -->
+<div class="layui-form">
+ <table class="layui-hide" id="wrkDetl" lay-filter="wrkDetl"></table>
+</div>
+<script type="text/html" id="toolbar">
+ <div class="layui-btn-container">
+ <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData">瀵煎嚭</button>
+ </div>
+</script>
+
+<script type="text/html" id="operate">
+ <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="detail">璇︽儏</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/wrkDetl/wrkDetl.js" charset="utf-8"></script>
+
+<iframe id="detail-iframe" scrolling="auto" style="display:none;"></iframe>
+
+</body>
+</html>
+
diff --git a/src/main/webapp/views/agvWrkDetl/wrkDetl_detail.html b/src/main/webapp/views/agvWrkDetl/wrkDetl_detail.html
new file mode 100644
index 0000000..d4703a4
--- /dev/null
+++ b/src/main/webapp/views/agvWrkDetl/wrkDetl_detail.html
@@ -0,0 +1,130 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="utf-8">
+ <title></title>
+ <meta name="renderer" content="webkit">
+ <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+ <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+ <link rel="stylesheet" href="../../static/layui/css/layui.css" media="all">
+ <link rel="stylesheet" href="../../static/css/cool.css" media="all">
+ <link rel="stylesheet" href="../../static/css/common.css" media="all">
+</head>
+<body>
+
+<!-- 璇︽儏 -->
+<div id="data-detail" class="layer_self_wrap">
+ <form id="detail" class="layui-form">
+ <div class="layui-inline" style="width:31%;">
+ <label class="layui-form-label"><span class="not-null">*</span>宸� 浣� 鍙凤細</label>
+ <div class="layui-input-inline">
+ <input id="wrkNo" class="layui-input" type="text" lay-verify="required|number" >
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;">
+ <label class="layui-form-label">宸ヤ綔鏃堕棿锛�</label>
+ <div class="layui-input-inline">
+ <input id="ioTime$" class="layui-input" type="text" autocomplete="off">
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;">
+ <label class="layui-form-label"><span class="not-null">*</span>鐗┿��銆�鏂欙細</label>
+ <div class="layui-input-inline">
+ <input id="matnr" class="layui-input" type="text" lay-verify="required" >
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;">
+ <label class="layui-form-label"><span class="not-null">*</span>浠� 搴� 鍙凤細</label>
+ <div class="layui-input-inline">
+ <input id="lgnum" class="layui-input" type="text" lay-verify="required" >
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;">
+ <label class="layui-form-label" style="font-size: x-small"><span class="not-null">*</span>杞偍璇锋眰缂栧彿锛�</label>
+ <div class="layui-input-inline">
+ <input id="tbnum" class="layui-input" type="text" lay-verify="required|number" >
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;">
+ <label class="layui-form-label"><span class="not-null">*</span>琛� 椤� 鐩細</label>
+ <div class="layui-input-inline">
+ <input id="tbpos" class="layui-input" type="text" lay-verify="required|number" >
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;">
+ <label class="layui-form-label" style="font-size: x-small"><span class="not-null">*</span>鐗╂枡鏍囩ID锛�</label>
+ <div class="layui-input-inline">
+ <input id="zmatid" class="layui-input" type="text" lay-verify="required" >
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;">
+ <label class="layui-form-label">鐗╂枡鎻忚堪锛�</label>
+ <div class="layui-input-inline">
+ <input id="maktx" class="layui-input" type="text">
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;">
+ <label class="layui-form-label">宸ャ��銆�鍘傦細</label>
+ <div class="layui-input-inline">
+ <input id="werks" class="layui-input" type="text">
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;">
+ <label class="layui-form-label">鏁般��銆�閲忥細</label>
+ <div class="layui-input-inline">
+ <input id="anfme" class="layui-input" type="text" lay-verify="number" >
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;">
+ <label class="layui-form-label">鍗曘��銆�浣嶏細</label>
+ <div class="layui-input-inline">
+ <input id="altme" class="layui-input" type="text">
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;">
+ <label class="layui-form-label">鎵樼洏鏉$爜锛�</label>
+ <div class="layui-input-inline">
+ <input id="zpallet" class="layui-input" type="text">
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;">
+ <label class="layui-form-label">鐢ㄦ埛ID锛�</label>
+ <div class="layui-input-inline">
+ <input id="bname" class="layui-input" type="text">
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;">
+ <label class="layui-form-label">澶囥��銆�娉細</label>
+ <div class="layui-input-inline">
+ <input id="memo" class="layui-input" type="text">
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;display: none">
+ <label class="layui-form-label">锛�</label>
+ <div class="layui-input-inline">
+ <input id="nista" class="layui-input" type="text" lay-verify="number" >
+ </div>
+ </div>
+
+
+ <hr class="layui-bg-gray">
+
+ <div id="data-detail-btn" class="layui-btn-container layui-form-item">
+ <div id="data-detail-submit-save" type="button" class="layui-btn layui-btn-normal" lay-submit lay-filter="save">淇濆瓨</div>
+ <div id="data-detail-submit-edit" type="button" class="layui-btn layui-btn-normal" lay-submit lay-filter="edit">淇敼</div>
+ <div id="data-detail-close" type="button" class="layui-btn" lay-submit lay-filter="close">鍏抽棴</div>
+ </div>
+
+ <div id="prompt">
+ 娓╅Θ鎻愮ず锛氳浠旂粏濉啓鐩稿叧淇℃伅锛�<span class="extrude"><span class="not-null">*</span> 涓哄繀濉�夐」銆�</span>
+ </div>
+ </form>
+</div>
+</body>
+<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
+<script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/wrkDetl/wrkDetl.js" charset="utf-8"></script>
+</html>
+
diff --git a/src/main/webapp/views/agvWrkDetlLog/wrkDetlLog.html b/src/main/webapp/views/agvWrkDetlLog/wrkDetlLog.html
new file mode 100644
index 0000000..af3dd38
--- /dev/null
+++ b/src/main/webapp/views/agvWrkDetlLog/wrkDetlLog.html
@@ -0,0 +1,59 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="utf-8">
+ <title></title>
+ <meta name="renderer" content="webkit">
+ <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+ <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+ <link rel="stylesheet" href="../../static/layui/css/layui.css" media="all">
+ <link rel="stylesheet" href="../../static/css/cool.css" media="all">
+ <link rel="stylesheet" href="../../static/css/common.css" media="all">
+</head>
+<body>
+
+<!-- 鎼滅储鏍� -->
+<div id="search-box" class="layui-form layui-card-header">
+ <div class="layui-inline">
+ <div class="layui-input-inline">
+ <input class="layui-input" type="text" name="wrk_no" placeholder="宸ヤ綔鍙�" autocomplete="off">
+ </div>
+ </div>
+ <div class="layui-inline" style="width: 300px">
+ <div class="layui-input-inline">
+ <input class="layui-input layui-laydate-range" name="modi_time" type="text" placeholder="璧峰鏃堕棿 - 缁堟鏃堕棿" autocomplete="off" style="width: 300px">
+ </div>
+ </div>
+ <!-- 寰呮坊鍔� -->
+ <div id="data-search-btn" class="layui-btn-container layui-form-item">
+ <button id="search" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="search">鎼滅储</button>
+ <button id="reset" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="reset">閲嶇疆</button>
+ </div>
+</div>
+
+<!-- 琛ㄦ牸 -->
+<div class="layui-form">
+ <table class="layui-hide" id="wrkDetlLog" lay-filter="wrkDetlLog"></table>
+</div>
+<script type="text/html" id="toolbar">
+ <div class="layui-btn-container">
+ <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData" style="margin-top: 10px">瀵煎嚭</button>
+ </div>
+</script>
+
+<script type="text/html" id="operate">
+ <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="detail">璇︽儏</a>
+ <a class="layui-btn layui-btn-xs btn-edit" lay-event="edit">缂栬緫</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/wrkDetlLog/wrkDetlLog.js" charset="utf-8"></script>
+
+<iframe id="detail-iframe" scrolling="auto" style="display:none;"></iframe>
+
+</body>
+</html>
+
diff --git a/src/main/webapp/views/agvWrkDetlLog/wrkDetlLog_detail.html b/src/main/webapp/views/agvWrkDetlLog/wrkDetlLog_detail.html
new file mode 100644
index 0000000..72bf6f1
--- /dev/null
+++ b/src/main/webapp/views/agvWrkDetlLog/wrkDetlLog_detail.html
@@ -0,0 +1,174 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="utf-8">
+ <title></title>
+ <meta name="renderer" content="webkit">
+ <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+ <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+ <link rel="stylesheet" href="../../static/layui/css/layui.css" media="all">
+ <link rel="stylesheet" href="../../static/css/cool.css" media="all">
+ <link rel="stylesheet" href="../../static/css/common.css" media="all">
+</head>
+<body>
+
+<!-- 璇︽儏 -->
+<div id="data-detail" class="layer_self_wrap">
+ <form id="detail" class="layui-form">
+ <!--
+ <div class="layui-inline" style="display: none">
+ <label class="layui-form-label"><span class="not-null">*</span>缂栥��銆�鍙凤細</label>
+ <div class="layui-input-inline">
+ <input id="id" class="layui-input" type="text" placeholder="缂栧彿">
+ </div>
+ </div>
+ -->
+ <div class="layui-inline" style="width:31%;">
+ <label class="layui-form-label"><span class="not-null">*</span>宸� 浣� 鍙凤細</label>
+ <div class="layui-input-inline">
+ <input id="wrkNo" class="layui-input" type="text" lay-verify="required|number" >
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;">
+ <label class="layui-form-label">宸ヤ綔鏃堕棿锛�</label>
+ <div class="layui-input-inline">
+ <input id="ioTime$" class="layui-input" type="text" autocomplete="off">
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;">
+ <label class="layui-form-label"><span class="not-null">*</span>鐗╂枡缂栧彿锛�</label>
+ <div class="layui-input-inline">
+ <input id="matnr" class="layui-input" type="text" lay-verify="required" >
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;">
+ <label class="layui-form-label"><span class="not-null">*</span>浠� 搴� 鍙凤細</label>
+ <div class="layui-input-inline">
+ <input id="lgnum" class="layui-input" type="text" lay-verify="required" >
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;">
+ <label class="layui-form-label" style="font-size: x-small"><span class="not-null">*</span>杞偍璇锋眰缂栧彿锛�</label>
+ <div class="layui-input-inline">
+ <input id="tbnum" class="layui-input" type="text" lay-verify="required|number" >
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;">
+ <label class="layui-form-label"><span class="not-null">*</span>琛� 椤� 鐩細</label>
+ <div class="layui-input-inline">
+ <input id="tbpos" class="layui-input" type="text" lay-verify="required|number" >
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;">
+ <label class="layui-form-label" style="font-size: x-small">鐗╂枡鏍囩ID锛�</label>
+ <div class="layui-input-inline">
+ <input id="zmatid" class="layui-input" type="text">
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;">
+ <label class="layui-form-label">鐗╂枡鎻忚堪锛�</label>
+ <div class="layui-input-inline">
+ <input id="maktx" class="layui-input" type="text">
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;">
+ <label class="layui-form-label">宸ャ��銆�鍘傦細</label>
+ <div class="layui-input-inline">
+ <input id="werks" class="layui-input" type="text">
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;">
+ <label class="layui-form-label">鏁般��銆�閲忥細</label>
+ <div class="layui-input-inline">
+ <input id="anfme" class="layui-input" type="text" lay-verify="number" >
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;">
+ <label class="layui-form-label">鍗曘��銆�浣嶏細</label>
+ <div class="layui-input-inline">
+ <input id="altme" class="layui-input" type="text">
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;">
+ <label class="layui-form-label">鎵樼洏鏉$爜锛�</label>
+ <div class="layui-input-inline">
+ <input id="zpallet" class="layui-input" type="text">
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;">
+ <label class="layui-form-label">鐢ㄦ埛ID锛�</label>
+ <div class="layui-input-inline">
+ <input id="bname" class="layui-input" type="text">
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;">
+ <label class="layui-form-label">澶囥��銆�娉細</label>
+ <div class="layui-input-inline">
+ <input id="memo" class="layui-input" type="text">
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;">
+ <label class="layui-form-label">淇敼浜哄憳锛�</label>
+ <div class="layui-input-inline cool-auto-complete">
+ <input id="modiUser" class="layui-input" type="text" lay-verify="number" style="display: none">
+ <input id="modiUser$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="璇疯緭鍏�..." onfocus=this.blur()>
+ <div class="cool-auto-complete-window">
+ <input class="cool-auto-complete-window-input" data-key="userQueryBymodiUser" onkeyup="autoLoad(this.getAttribute('data-key'))">
+ <select class="cool-auto-complete-window-select" data-key="userQueryBymodiUserSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
+ </select>
+ </div>
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;">
+ <label class="layui-form-label">淇敼鏃堕棿锛�</label>
+ <div class="layui-input-inline">
+ <input id="modiTime$" class="layui-input" type="text" autocomplete="off">
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;">
+ <label class="layui-form-label">鍒� 寤� 鑰咃細</label>
+ <div class="layui-input-inline cool-auto-complete">
+ <input id="appeUser" class="layui-input" type="text" lay-verify="number" style="display: none">
+ <input id="appeUser$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="璇疯緭鍏�..." onfocus=this.blur()>
+ <div class="cool-auto-complete-window">
+ <input class="cool-auto-complete-window-input" data-key="userQueryByappeUser" onkeyup="autoLoad(this.getAttribute('data-key'))">
+ <select class="cool-auto-complete-window-select" data-key="userQueryByappeUserSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
+ </select>
+ </div>
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;">
+ <label class="layui-form-label">娣诲姞鏃堕棿锛�</label>
+ <div class="layui-input-inline">
+ <input id="appeTime$" class="layui-input" type="text" autocomplete="off">
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;">
+ <label class="layui-form-label">锛�</label>
+ <div class="layui-input-inline">
+ <input id="nista" class="layui-input" type="text" lay-verify="number" >
+ </div>
+ </div>
+
+
+ <hr class="layui-bg-gray">
+
+ <div id="data-detail-btn" class="layui-btn-container layui-form-item">
+ <div id="data-detail-submit-save" type="button" class="layui-btn layui-btn-normal" lay-submit lay-filter="save">淇濆瓨</div>
+ <div id="data-detail-submit-edit" type="button" class="layui-btn layui-btn-normal" lay-submit lay-filter="edit">淇敼</div>
+ <div id="data-detail-close" type="button" class="layui-btn" lay-submit lay-filter="close">鍏抽棴</div>
+ </div>
+
+ <div id="prompt">
+ 娓╅Θ鎻愮ず锛氳浠旂粏濉啓鐩稿叧淇℃伅锛�<span class="extrude"><span class="not-null">*</span> 涓哄繀濉�夐」銆�</span>
+ </div>
+ </form>
+</div>
+</body>
+<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
+<script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/wrkDetlLog/wrkDetlLog.js" charset="utf-8"></script>
+</html>
+
diff --git a/src/main/webapp/views/agvWrkMast/wrkDetl.html b/src/main/webapp/views/agvWrkMast/wrkDetl.html
new file mode 100644
index 0000000..af87049
--- /dev/null
+++ b/src/main/webapp/views/agvWrkMast/wrkDetl.html
@@ -0,0 +1,91 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="utf-8">
+ <title></title>
+ <meta name="renderer" content="webkit">
+ <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+ <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+ <link rel="stylesheet" href="../../static/layui/css/layui.css" media="all">
+ <link rel="stylesheet" href="../../static/css/cool.css" media="all">
+ <link rel="stylesheet" href="../../static/css/common.css" media="all">
+ <style>
+ </style>
+</head>
+<body>
+<div class="layui-inline" style="width:31%;margin-top: 20px">
+ <label class="layui-form-label">宸� 浣� 鍙凤細</label>
+ <div class="layui-input-inline">
+ <input id="wrkNo" class="layui-input" type="text" disabled="disabled">
+ </div>
+</div>
+<table class="layui-hide" id="wrkDetlByMast" lay-filter="wrkDetlByMast"></table>
+</body>
+<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
+<script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/locMast/locMast.js" charset="utf-8"></script>
+<script type="text/javascript">
+ var pageCur;
+ function getCol() {
+ var cols = [
+ {field: 'wrkNo', align: 'center',title: '宸ヤ綔鍙�'}
+ ,{field: 'ioTime$', align: 'center',title: '宸ヤ綔鏃堕棿'}
+ ];
+ cols.push.apply(cols, detlCols);
+ return cols;
+ }
+ layui.use(['table','laydate', 'form'], function() {
+ table = layui.table;
+ var $ = layui.jquery;
+ var form = layui.form;
+
+ $('#wrkNo').val(parent.wrkNo);
+ // 鏁版嵁娓叉煋
+ tableIns1 = table.render({
+ elem: '#wrkDetlByMast',
+ headers: {token: localStorage.getItem('token')},
+ url: baseUrl+'/wrkDetl/list/auth',
+ where: {wrk_no: parent.wrkNo},
+ page: true,
+ limit: 16,
+ limits: [16, 30, 50, 100, 200, 500],
+ even: true,
+ toolbar: '#toolbar',
+ cellMinWidth: 50,
+ cols: [getCol()],
+ request: {
+ pageName: 'curr',
+ pageSize: 'limit'
+ },
+ parseData: function (res) {
+ return {
+ 'code': res.code,
+ 'msg': res.msg,
+ 'count': res.data.total,
+ 'data': res.data.records
+ }
+ },
+ response: {
+ statusCode: 200
+ },
+ done: function(res, curr, count) {
+ if (res.code === 403) {
+ top.location.href = baseUrl+"/";
+ }
+ pageCur=curr;
+ form.on('checkbox(tableCheckbox)', function (data) {
+ var _index = $(data.elem).attr('table-index')||0;
+ if(data.elem.checked){
+ res.data[_index][data.value] = 'Y';
+ }else{
+ res.data[_index][data.value] = 'N';
+ }
+ });
+ }
+ });
+ });
+</script>
+</html>
+
diff --git a/src/main/webapp/views/agvWrkMast/wrkMast.html b/src/main/webapp/views/agvWrkMast/wrkMast.html
new file mode 100644
index 0000000..e87c9d4
--- /dev/null
+++ b/src/main/webapp/views/agvWrkMast/wrkMast.html
@@ -0,0 +1,135 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="utf-8">
+ <title></title>
+ <meta name="renderer" content="webkit">
+ <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+ <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+ <link rel="stylesheet" href="../../static/layui/css/layui.css" media="all">
+ <link rel="stylesheet" href="../../static/css/cool.css" media="all">
+ <link rel="stylesheet" href="../../static/css/common.css" media="all">
+ <style>
+ .layui-btn .layui-icon {
+ margin: 0;
+ }
+ #btn-pri-add {
+ display: none;
+ }
+ #btn-pri-red {
+ display: none;
+ }
+ .btn-complete {
+ display: none;
+ }
+ .btn-cancel {
+ display: none;
+ }
+ .btn-pick {
+ display: none;
+ }
+
+ /*鏄庣粏琛�*/
+ #detlTable {
+ margin-top: 20px;
+ }
+
+ #search-box {
+ padding: 30px 30px 10px 30px;
+ }
+ #search-box .layui-inline {
+ margin-right: 5px;
+ }
+ #data-search-btn {
+ margin-top: 10px;
+ }
+ #data-search-btn.layui-btn-container .layui-btn {
+ margin-right: 20px;
+ }
+ </style>
+</head>
+<body>
+
+<!-- 鎼滅储鏍� -->
+<div id="search-box" class="layui-form layui-card-header">
+ <div class="layui-inline">
+ <div class="layui-input-inline">
+ <input class="layui-input" type="text" name="wrk_no" placeholder="宸ヤ綔鍙�" autocomplete="off">
+ </div>
+ </div>
+ <div class="layui-inline">
+ <div class="layui-input-inline cool-auto-complete">
+ <input id="wrkSts" class="layui-input" name="wrk_sts" type="text" placeholder="璇疯緭鍏�" autocomplete="off" style="display: none">
+ <input id="wrkSts$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="宸ヤ綔鐘舵��" onfocus=this.blur()>
+ <div class="cool-auto-complete-window">
+ <input class="cool-auto-complete-window-input" data-key="basWrkStatusQueryBywrkSts" onkeyup="autoLoad(this.getAttribute('data-key'))">
+ <select class="cool-auto-complete-window-select" data-key="basWrkStatusQueryBywrkStsSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
+ </select>
+ </div>
+ </div>
+ </div>
+<!-- <div class="layui-inline">-->
+<!-- <div class="layui-input-inline">-->
+<!-- <input class="layui-input" type="text" name="crn_no" placeholder="鍫嗗灈鏈哄彿" autocomplete="off">-->
+<!-- </div>-->
+<!-- </div>-->
+ <!-- 鏃ユ湡鑼冨洿 -->
+ <div class="layui-inline" style="width: 300px">
+ <div class="layui-input-inline">
+ <input class="layui-input layui-laydate-range" name="io_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 id="data-search-btn" class="layui-btn-container layui-form-item">
+ <button id="search" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="search">鎼滅储</button>
+ <button id="reset" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="reset">閲嶇疆</button>
+ </div>
+</div>
+
+<!-- 琛ㄦ牸 -->
+<div class="layui-form">
+ <table class="layui-hide" id="wrkMast" lay-filter="wrkMast"></table>
+</div>
+<script type="text/html" id="toolbar">
+ <div class="layui-btn-container">
+ <button class="layui-btn layui-btn-normal" id="btn-pri-add" lay-event="priAdd"><i class="layui-icon"></i>澧炲姞浼樺厛绾�</button>
+ <button class="layui-btn layui-btn-normal" id="btn-pri-red" lay-event="priRed"><i class="layui-icon"></i>闄嶄綆浼樺厛绾�</button>
+ <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData">瀵煎嚭</button>
+ </div>
+</script>
+
+<!--鏄庣粏琛�-->
+<div id="detlTable" style="display: none">
+ <div class="layui-inline" style="width:90%;margin-top: 10px;margin-left: 20px">
+ <span style=" color: indianred">浠ヤ笅涓哄綋鍓嶅伐浣滄祦鐨勭墿鏂欐槑缁�</span>
+ </div>
+
+ <table class="layui-hide" id="wrkDetlByMap" lay-filter="wrkDetlByMap"></table>
+</div>
+
+<script type="text/html" id="operate">
+ <a class="layui-btn layui-btn-xs btn-detlShow" lay-event="detlShow">鏄庣粏</a>
+ <a class="layui-btn layui-btn-danger layui-btn-xs btn-complete" lay-event="complete">瀹屾垚</a>
+ <a class="layui-btn layui-btn-primary layui-btn-xs btn-cancel" lay-event="cancel">鍙栨秷</a>
+ <a class="layui-btn layui-btn-warm layui-btn-xs btn-pick" lay-event="priWrkMast">缁存姢鐘舵��</a>
+ {{#if (d.steNo) { }}
+ <a class="layui-btn layui-btn-warm layui-btn-xs btn-pick" lay-event="removeSte">寮冭溅</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/wrkMast/wrkMast.js" charset="utf-8"></script>
+
+<iframe id="detail-iframe" scrolling="auto" style="display:none;"></iframe>
+
+</body>
+</html>
+
diff --git a/src/main/webapp/views/agvWrkMast/wrkMast_detail.html b/src/main/webapp/views/agvWrkMast/wrkMast_detail.html
new file mode 100644
index 0000000..4f39f9e
--- /dev/null
+++ b/src/main/webapp/views/agvWrkMast/wrkMast_detail.html
@@ -0,0 +1,53 @@
+<!DOCTYPE html>
+<html lang="en" xmlns="http://www.w3.org/1999/html">
+<head>
+ <meta charset="utf-8">
+ <title></title>
+ <meta name="renderer" content="webkit">
+ <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+ <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+ <link rel="stylesheet" href="../../static/layui/css/layui.css" media="all">
+ <link rel="stylesheet" href="../../static/css/cool.css" media="all">
+ <link rel="stylesheet" href="../../static/css/common.css" media="all">
+</head>
+<body>
+
+<!-- 璇︽儏 -->
+<div id="data-detail" class="layer_self_wrap">
+ <form id="detail" class="layui-form" style="height: 100%">
+ <div class="layui-inline" >
+ <label class="layui-form-label"><span class="not-null">*</span>宸� 浣� 鍙凤細</label>
+ <div class="layui-input-inline">
+ <input id="wrkNo" class="layui-input" disabled =鈥渄isabled鈥� onkeyup="check(this.id, 'wrkMast')">
+ </div>
+ </div>
+ <div class="layui-inline">
+ <label class="layui-form-label">宸ヤ綔鐘舵�侊細</label>
+ <div class="layui-input-inline cool-auto-complete" style="height: 200px">
+ <input id="wrkSts" class="layui-input" name="wrk_sts" type="text" placeholder="璇疯緭鍏�" autocomplete="off" style="display: none">
+ <input id="wrkSts$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="宸ヤ綔鐘舵��" onfocus=this.blur()>
+ <div class="cool-auto-complete-window">
+ <input class="cool-auto-complete-window-input" data-key="basWrkStatusQueryBywrkSts" onkeyup="autoLoad(this.getAttribute('data-key'))">
+ <select class="cool-auto-complete-window-select" data-key="basWrkStatusQueryBywrkStsSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
+ </select>
+ </div>
+ </div>
+ </div>
+ <div id="prompt">
+ 娓╅Θ鎻愮ず锛氬ぇ浜�10鐨勫伐浣滅姸鎬佽鏌ョ湅 鍩虹鏁版嵁<span style="font-weight: 900;color: black">鈫�</span>宸ヤ綔鐘舵��
+ </div>
+ <div id="data-detail-btn" class="layui-btn-container layui-form-item">
+ <div id="data-detail-submit-save" type="button" class="layui-btn layui-btn-normal" lay-submit lay-filter="save">淇濆瓨</div>
+ <div id="data-detail-submit-edit" type="button" class="layui-btn layui-btn-normal" lay-submit lay-filter="edit">淇敼</div>
+ <div id="data-detail-close" type="button" class="layui-btn" lay-submit lay-filter="close">鍏抽棴</div>
+ </div>
+ </form>
+</div>
+</body>
+<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
+<script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/wrkMast/wrkMast.js" charset="utf-8"></script>
+</html>
+
diff --git a/src/main/webapp/views/agvWrkMastLog/wrkDetlLog.html b/src/main/webapp/views/agvWrkMastLog/wrkDetlLog.html
new file mode 100644
index 0000000..a279de3
--- /dev/null
+++ b/src/main/webapp/views/agvWrkMastLog/wrkDetlLog.html
@@ -0,0 +1,99 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="utf-8">
+ <title></title>
+ <meta name="renderer" content="webkit">
+ <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+ <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+ <link rel="stylesheet" href="../../static/layui/css/layui.css" media="all">
+ <link rel="stylesheet" href="../../static/css/cool.css" media="all">
+ <link rel="stylesheet" href="../../static/css/common.css" media="all">
+ <style>
+ </style>
+</head>
+<body>
+<div class="layui-inline" style="width:20%;margin-top: 20px">
+ <label class="layui-form-label">宸� 浣� 鍙凤細</label>
+ <div class="layui-input-inline">
+ <input id="wrkNo" class="layui-input" type="text" disabled="disabled">
+ </div>
+</div>
+<div class="layui-inline" style="width:20%;margin-top: 20px">
+ <label class="layui-form-label">宸ヤ綔鏃堕棿锛�</label>
+ <div class="layui-input-inline">
+ <input id="ioTime" class="layui-input" type="text" disabled="disabled">
+ </div>
+</div>
+
+<table class="layui-hide" id="wrkDetlLogByMast" lay-filter="wrkDetlLogByMast"></table>
+</body>
+<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
+<script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/locMast/locMast.js" charset="utf-8"></script>
+<script type="text/javascript">
+ var pageCur;
+ function getCol() {
+ let cols = [
+ {field: 'wrkNo', align: 'center',title: '宸ヤ綔鍙�'}
+ ,{field: 'ioTime$', align: 'center',title: '宸ヤ綔鏃堕棿',width:160}
+ ];
+ cols.push.apply(cols, detlCols);
+ return cols;
+ }
+ layui.use(['table','laydate', 'form'], function() {
+ table = layui.table;
+ var $ = layui.jquery;
+ var form = layui.form;
+
+ $('#wrkNo').val(parent.wrkNo);
+ $('#ioTime').val(top.dateToStr(parent.ioTime, true));
+ // 鏁版嵁娓叉煋
+ tableIns1 = table.render({
+ elem: '#wrkDetlLogByMast',
+ headers: {token: localStorage.getItem('token')},
+ url: baseUrl+'/wrkDetlLogByMast/list/auth',
+ where: {wrk_no: parent.wrkNo,ioTime: top.dateToStr(parent.ioTime, true)},
+ page: true,
+ limit: 16,
+ limits: [16, 30, 50, 100, 200, 500],
+ even: true,
+ toolbar: '#toolbar',
+ cellMinWidth: 50,
+ cols: [getCol()],
+ request: {
+ pageName: 'curr',
+ pageSize: 'limit'
+ },
+ parseData: function (res) {
+ return {
+ 'code': res.code,
+ 'msg': res.msg,
+ 'count': res.data.total,
+ 'data': res.data.records
+ }
+ },
+ response: {
+ statusCode: 200
+ },
+ done: function(res, curr, count) {
+ if (res.code === 403) {
+ top.location.href = baseUrl+"/";
+ }
+ pageCur=curr;
+ form.on('checkbox(tableCheckbox)', function (data) {
+ var _index = $(data.elem).attr('table-index')||0;
+ if(data.elem.checked){
+ res.data[_index][data.value] = 'Y';
+ }else{
+ res.data[_index][data.value] = 'N';
+ }
+ });
+ }
+ });
+ });
+</script>
+</html>
+
diff --git a/src/main/webapp/views/agvWrkMastLog/wrkMastLog.html b/src/main/webapp/views/agvWrkMastLog/wrkMastLog.html
new file mode 100644
index 0000000..fdaa517
--- /dev/null
+++ b/src/main/webapp/views/agvWrkMastLog/wrkMastLog.html
@@ -0,0 +1,98 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="utf-8">
+ <title></title>
+ <meta name="renderer" content="webkit">
+ <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+ <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+ <link rel="stylesheet" href="../../static/layui/css/layui.css" media="all">
+ <link rel="stylesheet" href="../../static/css/cool.css" media="all">
+ <link rel="stylesheet" href="../../static/css/common.css" media="all">
+</head>
+<body>
+<!-- 鎼滅储鏍� -->
+<div id="search-box" class="layui-form layui-card-header">
+ <div class="layui-inline">
+ <div class="layui-input-inline">
+ <input class="layui-input" type="text" name="wrk_no" placeholder="宸ヤ綔鍙�" autocomplete="off">
+ </div>
+ </div>
+ <div class="layui-inline">
+ <div class="layui-input-inline cool-auto-complete">
+ <input id="wrkSts" class="layui-input" name="wrk_sts" type="text" placeholder="璇疯緭鍏�" autocomplete="off" style="display: none">
+ <input id="wrkSts$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="宸ヤ綔鐘舵��" onfocus=this.blur()>
+ <div class="cool-auto-complete-window">
+ <input class="cool-auto-complete-window-input" data-key="basWrkStatusQueryBywrkSts" onkeyup="autoLoad(this.getAttribute('data-key'))">
+ <select class="cool-auto-complete-window-select" data-key="basWrkStatusQueryBywrkStsSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
+ </select>
+ </div>
+ </div>
+ </div>
+ <div class="layui-inline">
+ <div class="layui-input-inline cool-auto-complete">
+ <input id="ioType" class="layui-input" name="io_type" type="text" placeholder="璇疯緭鍏�" autocomplete="off" style="display: none">
+ <input id="ioType$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="鍏ュ嚭搴撶被鍨�" onfocus=this.blur()>
+ <div class="cool-auto-complete-window">
+ <input class="cool-auto-complete-window-input" data-key="basWrkIotypeQueryByioType" onkeyup="autoLoad(this.getAttribute('data-key'))">
+ <select class="cool-auto-complete-window-select" data-key="basWrkIotypeQueryByioTypeSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
+ </select>
+ </div>
+ </div>
+ </div>
+ <div class="layui-inline">
+ <div class="layui-input-inline cool-auto-complete">
+ <input id="crnNo" class="layui-input" name="crn_no" type="text" placeholder="璇疯緭鍏�" autocomplete="off" style="display: none">
+ <input id="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-inline" style="width: 300px">
+ <div class="layui-input-inline">
+ <input class="layui-input layui-laydate-range" name="io_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 id="data-search-btn" class="layui-btn-container layui-form-item">
+ <button id="search" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="search">鎼滅储</button>
+ <button id="reset" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="reset">閲嶇疆</button>
+ </div>
+</div>
+
+<!-- 琛ㄦ牸 -->
+<div class="layui-form">
+ <table class="layui-hide" id="wrkMastLog" lay-filter="wrkMastLog"></table>
+</div>
+<script type="text/html" id="toolbar">
+ <div class="layui-btn-container">
+ <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData" style="margin-top: 10px">瀵煎嚭</button>
+ </div>
+</script>
+
+<script type="text/html" id="operate">
+ <a class="layui-btn layui-btn-xs btn-detlShow" lay-event="detlShow">鏄庣粏</a>
+<!-- <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="detail">璇︽儏</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/wrkMastLog/wrkMastLog.js" charset="utf-8"></script>
+
+<iframe id="detail-iframe" scrolling="auto" style="display:none;"></iframe>
+
+</body>
+</html>
+
diff --git a/src/main/webapp/views/agvWrkMastLog/wrkMastLog_detail.html b/src/main/webapp/views/agvWrkMastLog/wrkMastLog_detail.html
new file mode 100644
index 0000000..c6807ff
--- /dev/null
+++ b/src/main/webapp/views/agvWrkMastLog/wrkMastLog_detail.html
@@ -0,0 +1,196 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="utf-8">
+ <title></title>
+ <meta name="renderer" content="webkit">
+ <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+ <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+ <link rel="stylesheet" href="../../static/layui/css/layui.css" media="all">
+ <link rel="stylesheet" href="../../static/css/cool.css" media="all">
+ <link rel="stylesheet" href="../../static/css/common.css" media="all">
+</head>
+<body>
+
+<!-- 璇︽儏 -->
+<div id="data-detail" class="layer_self_wrap">
+ <form id="detail" class="layui-form">
+ <div class="layui-inline" style="width:31%;display: none">
+ <label class="layui-form-label"><span class="not-null">*</span>缂栥��銆�鍙凤細</label>
+ <div class="layui-input-inline">
+ <input id="id" class="layui-input" type="text" onkeyup="check(this.id, 'wrkMastLog')" lay-verify="number" >
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;">
+ <label class="layui-form-label"><span class="not-null">*</span>宸� 浣� 鍙凤細</label>
+ <div class="layui-input-inline">
+ <input id="wrkNo" class="layui-input" type="text" onkeyup="check(this.id, 'wrkMastLog')" lay-verify="required|number" >
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;">
+ <label class="layui-form-label">宸ヤ綔鐘舵�侊細</label>
+ <div class="layui-input-inline cool-auto-complete">
+ <input id="wrkSts" class="layui-input" type="text" lay-verify="number" style="display: none">
+ <input id="wrkSts$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="璇疯緭鍏�..." onfocus=this.blur()>
+ <div class="cool-auto-complete-window">
+ <input class="cool-auto-complete-window-input" data-key="basWrkStatusQueryBywrkSts" onkeyup="autoLoad(this.getAttribute('data-key'))">
+ <select class="cool-auto-complete-window-select" data-key="basWrkStatusQueryBywrkStsSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
+ </select>
+ </div>
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;">
+ <label class="layui-form-label">鍏ュ嚭搴撶被鍨嬶細</label>
+ <div class="layui-input-inline cool-auto-complete">
+ <input id="ioType" class="layui-input" type="text" lay-verify="number" style="display: none">
+ <input id="ioType$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="璇疯緭鍏�..." onfocus=this.blur()>
+ <div class="cool-auto-complete-window">
+ <input class="cool-auto-complete-window-input" data-key="basWrkIotypeQueryByioType" onkeyup="autoLoad(this.getAttribute('data-key'))">
+ <select class="cool-auto-complete-window-select" data-key="basWrkIotypeQueryByioTypeSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
+ </select>
+ </div>
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;">
+ <label class="layui-form-label">鍫嗗灈鏈哄彿锛�</label>
+ <div class="layui-input-inline cool-auto-complete">
+ <input id="crnNo" class="layui-input" type="text" lay-verify="number" style="display: none">
+ <input id="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-inline" style="width:31%;">
+ <label class="layui-form-label">浼� 鍏� 绾э細</label>
+ <div class="layui-input-inline">
+ <input id="ioPri" class="layui-input" type="text" lay-verify="number" >
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;">
+ <label class="layui-form-label">鐩爣搴撲綅锛�</label>
+ <div class="layui-input-inline cool-auto-complete">
+ <input id="locNo" class="layui-input" type="text" style="display: none">
+ <input id="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-inline" style="width:31%;">
+ <label class="layui-form-label">鐩� 鏍� 绔欙細</label>
+ <div class="layui-input-inline cool-auto-complete">
+ <input id="staNo" class="layui-input" type="text" lay-verify="number" style="display: none">
+ <input id="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-inline" style="width:31%;">
+ <label class="layui-form-label">婧愩��銆�绔欙細</label>
+ <div class="layui-input-inline cool-auto-complete">
+ <input id="sourceStaNo" class="layui-input" type="text" lay-verify="number" style="display: none">
+ <input id="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-inline" style="width:31%;">
+ <label class="layui-form-label">婧� 搴� 浣嶏細</label>
+ <div class="layui-input-inline cool-auto-complete">
+ <input id="sourceLocNo" class="layui-input" type="text" style="display: none">
+ <input id="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-inline" style="width:31%;">
+ <label class="layui-form-label">鎷c��銆�鏂欙細</label>
+ <div class="layui-input-inline">
+ <input id="picking" class="layui-input" type="checkBox" lay-skin="primary" lay-filter='detailCheckbox'>
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;">
+ <label class="layui-form-label">閫�銆�銆�鍑猴細</label>
+ <div class="layui-input-inline">
+ <input id="exitMk" class="layui-input" type="checkBox" lay-skin="primary" lay-filter='detailCheckbox'>
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;">
+ <label class="layui-form-label">绌恒��銆�鏉匡細</label>
+ <div class="layui-input-inline">
+ <input id="emptyMk" class="layui-input" type="checkBox" lay-skin="primary" lay-filter='detailCheckbox'>
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;">
+ <label class="layui-form-label">宸ヤ綔鏃堕棿锛�</label>
+ <div class="layui-input-inline">
+ <input id="ioTime$" class="layui-input" type="text" autocomplete="off">
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;">
+ <label class="layui-form-label" style="font-size: x-small">鍫嗗灈鏈哄惎鍔ㄦ椂闂达細</label>
+ <div class="layui-input-inline">
+ <input id="crnStrTime$" class="layui-input" type="text" autocomplete="off">
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;">
+ <label class="layui-form-label" style="font-size: x-small">鍫嗗灈鏈哄仠姝㈡椂闂达細</label>
+ <div class="layui-input-inline">
+ <input id="crnEndTime$" class="layui-input" type="text" autocomplete="off">
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;">
+ <label class="layui-form-label">鎷f枡鏃堕棿锛�</label>
+ <div class="layui-input-inline">
+ <input id="plcStrTime$" class="layui-input" type="text" autocomplete="off">
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;">
+ <label class="layui-form-label">鏉°��銆�鐮侊細</label>
+ <div class="layui-input-inline">
+ <input id="barcode" class="layui-input" type="text">
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;">
+ <label class="layui-form-label">婊°��銆�鏉匡細</label>
+ <div class="layui-input-inline">
+ <input id="fullPlt" class="layui-input" type="checkBox" lay-skin="primary" lay-filter='detailCheckbox'>
+ </div>
+ </div>
+
+
+ <hr class="layui-bg-gray">
+
+ <div id="data-detail-btn" class="layui-btn-container layui-form-item">
+ <div id="data-detail-submit-save" type="button" class="layui-btn layui-btn-normal" lay-submit lay-filter="save">淇濆瓨</div>
+ <div id="data-detail-submit-edit" type="button" class="layui-btn layui-btn-normal" lay-submit lay-filter="edit">淇敼</div>
+ <div id="data-detail-close" type="button" class="layui-btn" lay-submit lay-filter="close">鍏抽棴</div>
+ </div>
+
+ <div id="prompt">
+ 娓╅Θ鎻愮ず锛氳浠旂粏濉啓鐩稿叧淇℃伅锛�<span class="extrude"><span class="not-null">*</span> 涓哄繀濉�夐」銆�</span>
+ </div>
+ </form>
+</div>
+</body>
+<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
+<script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/wrkMastLog/wrkMastLog.js" charset="utf-8"></script>
+</html>
+
--
Gitblit v1.9.1