From 192834a2160e2aa0f8a4bad9b13bdd535df57e9c Mon Sep 17 00:00:00 2001 From: Junjie <fallin.jie@qq.com> Date: 星期二, 26 九月 2023 20:14:30 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/tzskasrs' into tzskasrs --- src/main/java/com/zy/asrs/service/impl/AgvLocDetlServiceImpl.java | 26 src/main/webapp/static/js/agvPakStore/stockAdjust.js | 14 src/main/java/com/zy/asrs/service/impl/ManPakOutServiceImpl.java | 21 src/main/webapp/views/mat/mat.html | 55 src/main/webapp/views/picking/picking.html | 228 +++ src/main/java/com/zy/asrs/controller/AgvWorkController.java | 8 src/main/java/com/zy/asrs/service/impl/ManLocDetlServiceImpl.java | 44 src/main/webapp/views/agvPakStore/stockAdjust.html | 2 src/main/java/com/zy/asrs/service/impl/ManLocDetTemplServiceImpl.java | 12 src/main/java/com/zy/asrs/controller/ManPakOutController.java | 443 ++++++ src/main/java/com/zy/asrs/service/AgvLocDetlService.java | 5 src/main/java/com/zy/asrs/entity/param/NodePakoutParam.java | 17 src/main/java/com/zy/asrs/utils/Utils.java | 16 src/main/webapp/static/js/order/out.js | 2 src/main/java/com/zy/asrs/service/ManPakOutService.java | 11 src/main/java/com/zy/asrs/mapper/ManLocDetlTempMapper.java | 12 src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java | 139 ++ src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java | 138 + src/main/webapp/static/js/picking/pickingOrder.js | 497 +++++++ src/main/java/com/zy/asrs/controller/OutController.java | 122 + src/main/java/com/zy/asrs/service/AgvWorkService.java | 6 src/main/webapp/static/js/manLocDetl/manLocDetlTemp.js | 550 ++++++++ src/main/java/com/zy/asrs/service/MobileService.java | 3 src/main/webapp/views/manLocDetl/manLocDetlTemp.html | 111 + src/main/webapp/static/js/picking/picking.js | 362 +++++ src/main/java/com/zy/asrs/controller/ManLocDetlController.java | 1 src/main/java/com/zy/asrs/entity/ManLocDetlTemp.java | 346 +++++ src/main/webapp/static/js/pakStore/stockAdjust.js | 3 src/main/webapp/views/agvPakStore/pakStore.html | 2 src/main/webapp/views/picking/pickingOrder.html | 157 ++ src/main/java/com/zy/asrs/entity/ManPakOut.java | 280 ++++ src/main/webapp/static/js/manLocDetl/manLocDetl.js | 40 src/main/java/com/zy/asrs/service/impl/LocDetlServiceImpl.java | 3 src/main/java/com/zy/asrs/controller/ManLocDetlTempController.java | 134 + src/main/java/com/zy/asrs/controller/MobileController.java | 72 src/main/java/com/zy/common/model/LocDto.java | 2 src/main/resources/mapper/ManLocDetlMapper.xml | 1 src/main/webapp/views/manLocDetl/manLocDetl.html | 99 src/main/java/com/zy/asrs/controller/AgvLocMastController.java | 11 src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java | 17 src/main/java/com/zy/asrs/mapper/ManPakOutMapper.java | 21 src/main/webapp/static/js/order/order.js | 12 src/main/java/com/zy/asrs/service/ManLocDetlService.java | 3 src/main/java/com/zy/asrs/service/ManLocDetlTempService.java | 8 src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java | 9 src/main/resources/application.yml | 4 46 files changed, 3,864 insertions(+), 205 deletions(-) diff --git a/src/main/java/com/zy/asrs/controller/AgvLocMastController.java b/src/main/java/com/zy/asrs/controller/AgvLocMastController.java index e287d77..28a5e7b 100644 --- a/src/main/java/com/zy/asrs/controller/AgvLocMastController.java +++ b/src/main/java/com/zy/asrs/controller/AgvLocMastController.java @@ -17,10 +17,7 @@ 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 org.springframework.web.bind.annotation.*; import java.util.Date; import java.util.List; @@ -113,6 +110,12 @@ return R.ok(); } + @RequestMapping(value = "/locMast/{id}/auth") + @ManagerAuth + public R get(@PathVariable("id") String id) { + return R.ok(agvLockMastService.selectById(String.valueOf(id))); + } + 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()); diff --git a/src/main/java/com/zy/asrs/controller/AgvWorkController.java b/src/main/java/com/zy/asrs/controller/AgvWorkController.java index 67dcb26..0e7637e 100644 --- a/src/main/java/com/zy/asrs/controller/AgvWorkController.java +++ b/src/main/java/com/zy/asrs/controller/AgvWorkController.java @@ -4,9 +4,11 @@ import com.core.annotations.ManagerAuth; import com.core.common.R; import com.zy.asrs.entity.AgvBasDevp; +import com.zy.asrs.entity.param.LocDetlAdjustParam; import com.zy.asrs.service.AgvWorkService; 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.RequestParam; import org.springframework.web.bind.annotation.RestController; @@ -30,6 +32,12 @@ workService.createWaitPainWrkMastStart(agvBasDevpList, getUserId()); //return R.ok("浠诲姟鍙凤細" + startupDto.getWorkNo() + ";鐩爣搴撲綅锛�" + startupDto.getLocNo()); return R.ok("鐢熸垚鍏ュ簱宸ヤ綔妗f垚鍔�"); + } + @RequestMapping("/locDdetl/adjust/start") + @ManagerAuth(memo = "搴撳瓨璋冩暣") + public R locDetlAdjustStart(@RequestBody LocDetlAdjustParam param) { + workService.adjustLocDetl(param, getUserId()); + return R.ok("搴撳瓨璋冩暣鎴愬姛"); } } diff --git a/src/main/java/com/zy/asrs/controller/ManLocDetlController.java b/src/main/java/com/zy/asrs/controller/ManLocDetlController.java index 2c091db..85bc07c 100644 --- a/src/main/java/com/zy/asrs/controller/ManLocDetlController.java +++ b/src/main/java/com/zy/asrs/controller/ManLocDetlController.java @@ -54,6 +54,7 @@ param.remove("update_time"); } } + Page<ManLocDetl> page = manLocDetlService.getPage(toPage(curr, limit, param, ManLocDetl.class)); return R.ok(page); } diff --git a/src/main/java/com/zy/asrs/controller/ManLocDetlTempController.java b/src/main/java/com/zy/asrs/controller/ManLocDetlTempController.java new file mode 100644 index 0000000..ed8d0eb --- /dev/null +++ b/src/main/java/com/zy/asrs/controller/ManLocDetlTempController.java @@ -0,0 +1,134 @@ +package com.zy.asrs.controller; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.core.annotations.ManagerAuth; +import com.core.common.DateUtils; +import com.core.common.R; +import com.zy.asrs.entity.ManLocDetlTemp; +import com.zy.asrs.entity.param.LocDetlAdjustParam; +import com.zy.asrs.service.ManLocDetlTempService; +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.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; +import java.util.Map; + +@RestController +@RequestMapping("/temp") +public class ManLocDetlTempController extends BaseController { + + @Autowired + private ManLocDetlTempService manLocDetlTempService; + + @RequestMapping(value = "/manLocDetl/list/auth") + @ManagerAuth + public R list(@RequestParam(defaultValue = "1")Integer curr, + @RequestParam(defaultValue = "10")Integer limit, + @RequestParam(required = false)String orderByField, + @RequestParam(required = false)String orderByType, + @RequestParam Map<String, Object> param){ + + + + EntityWrapper<ManLocDetlTemp> wrapper = new EntityWrapper<>(); + excludeTrash(param); + convert(param, wrapper); + + Page<ManLocDetlTemp> page = manLocDetlTempService.selectPage(new Page<>(curr, limit), wrapper); + return R.ok(page); + } + + + @RequestMapping("/manLocDetl/list") + public R outList(@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){ + + //Page<ManLocDetlTemp> manLocDetlPage = toPage(curr, limit, param, ManLocDetlTemp.class); + //Page<ManLocDetlTemp> outPage = manLocDetlTempService.getOutPage(manLocDetlPage); +// Page<ManLocDetl> page = manLocDetlService.getPage(manLocDetlPage); + return R.ok(); + } + + @RequestMapping("/manLocDetl/adjust/start") + @ManagerAuth(memo = "搴撳瓨璋冩暣") + public R locDetlAdjustStart(@RequestBody LocDetlAdjustParam param) { + //manLocDetlTempService.adjustLocDetl(param, getUserId(),getUser()); + return R.ok("搴撳瓨璋冩暣鎴愬姛"); + } + + @RequestMapping(value = "/manLocDetl/asrsAndSaas/list") + @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){ + +// Page<ManLocDetl> manLocDetlPage = toPage(curr, limit, param, ManLocDetl.class); +// Page<ManLocDetl> all = manLocDetlService.selectAllPage(manLocDetlPage); +// return R.ok().add(all); + return R.ok(); + } + + @RequestMapping(value = "/manLocDetlTemp/export/auth") + @ManagerAuth(memo = "搴撲綅鏄庣粏瀵煎嚭") + public synchronized R export(@RequestBody JSONObject param){ + List<String> fields = JSONObject.parseArray(param.getJSONArray("fields").toJSONString(), String.class); + EntityWrapper<ManLocDetlTemp> wrapper = new EntityWrapper<>(); + Map<String, Object> map = excludeTrash(param.getJSONObject("locDetl")); + String row = ""; + if (map.get("row") != null) { + String chooseRow = (String) map.get("row"); + if (chooseRow.length() == 1) { + row = "0" + chooseRow; + map.remove("row"); + }else { + row = chooseRow; + map.remove("row"); + } + } + convert(map, wrapper); + if (!row.equals("")){ + wrapper.and() + .where("loc_no like '" +row +"%'"); + } + List<ManLocDetlTemp> list = manLocDetlTempService.selectList(wrapper); + list.forEach(m -> { + m.setMatnr(m.getMatnr() + " "); + }); + + return R.ok(exportSupport(list, fields)); + } + + + 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/ManPakOutController.java b/src/main/java/com/zy/asrs/controller/ManPakOutController.java new file mode 100644 index 0000000..27b0dca --- /dev/null +++ b/src/main/java/com/zy/asrs/controller/ManPakOutController.java @@ -0,0 +1,443 @@ +package com.zy.asrs.controller; + +import com.alibaba.fastjson.JSON; +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.*; +import com.zy.asrs.entity.*; +import com.zy.asrs.entity.param.OrderDomainParam; +import com.zy.asrs.service.*; +import com.zy.common.CodeRes; +import com.zy.common.config.AdminInterceptor; +import com.zy.common.utils.BarcodeUtils; +import com.zy.common.utils.QrCode; +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 javax.imageio.ImageIO; +import javax.servlet.http.HttpServletResponse; +import java.awt.image.BufferedImage; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Map; + +@RestController +public class ManPakOutController extends BaseController { + @Autowired + private ManPakOutService manPakOutService; + @Autowired + private OrderDetlService orderDetlService; + @Autowired + private ManLocDetlService manLocDetlService; + @Autowired + private OrderService orderService; + @Autowired + private DocTypeService docTypeService; + + @RequestMapping(value = "/ManPakOut/list/auth") + @ManagerAuth + public R list(@RequestParam(defaultValue = "1")Integer curr, + @RequestParam(defaultValue = "10")Integer limit, + @RequestParam(required = false)String orderByField, + @RequestParam(required = false)String orderByType, + @RequestParam Map<String, Object> param){ + EntityWrapper<ManPakOut> wrapper = new EntityWrapper<>(); + excludeTrash(param); + convert(param, wrapper); + if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));} else { + wrapper.orderBy("create_time",false); + } + return R.ok(manPakOutService.selectPage(new Page<>(curr, limit), wrapper)); + } + + @RequestMapping(value = "/ManPakOut/detailed/auth") + //@ManagerAuth + public R detailed(@RequestParam(defaultValue = "1")Integer curr, + @RequestParam(defaultValue = "10")Integer limit, + @RequestParam(required = false)String orderByField, + @RequestParam(required = false)String orderByType, + @RequestParam Map<String, Object> param){ + EntityWrapper<ManPakOut> wrapper = new EntityWrapper<>(); + excludeTrash(param); + convert(param, wrapper); + if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));} else { + wrapper.orderBy("create_time",true); + } + wrapper.isNotNull("name"); + + Page<ManPakOut> manPakOutPage = manPakOutService.selectPage(new Page<>(curr, limit), wrapper); + manPakOutPage.getRecords().forEach(manPakOut -> { + if(manPakOut.getStatus() == 1){ + + } + }); + return R.ok(manPakOutPage); + } + + private <T> void convert(Map<String, Object> map, EntityWrapper<T> wrapper){ + for (Map.Entry<String, Object> entry : map.entrySet()){ + String val = String.valueOf(entry.getValue()); + if (val.contains(RANGE_TIME_LINK)){ + String[] dates = val.split(RANGE_TIME_LINK); + wrapper.ge(entry.getKey(), DateUtils.convert(dates[0])); + wrapper.le(entry.getKey(), DateUtils.convert(dates[1])); + } else { + wrapper.like(entry.getKey(), val); + } + } + } + + @RequestMapping(value = "/ManPakOut/add/auth") + @ManagerAuth(memo = "鐢熸垚鎷h揣鍗�") + @Transactional + public R manPakOutAdd(@RequestBody OrderDomainParam param){ + if (Cools.isEmpty(param)){ + return R.error("鏁版嵁寮傚父"); + } + if (!Cools.isEmpty(param.getOrderNo())){ + Order order = orderService.selectOne(new EntityWrapper<Order>() + .eq("order_no", param.getOrderNo()) + ); + if (Cools.isEmpty(order)){ + return R.error("鍗曟嵁涓嶅瓨鍦�"); + } + List<OrderDetl> orderDetls =orderDetlService.selectList(new EntityWrapper<OrderDetl>() + .eq("order_no", param.getOrderNo()) + ); + if (Cools.isEmpty(orderDetls)){ + return R.error("鍗曟嵁鏄庣粏涓虹┖"); + } + for (OrderDetl orderDetl : orderDetls){ + List<ManLocDetl> manLocDetls=null; + try{ + if (Cools.isEmpty(orderDetl.getBatch())){ + manLocDetls = manLocDetlService.selectList(new EntityWrapper<ManLocDetl>() + .eq("matnr",orderDetl.getMatnr()) + ); + }else { + manLocDetls = manLocDetlService.selectList(new EntityWrapper<ManLocDetl>() + .eq("matnr",orderDetl.getMatnr()) + .eq("batch",orderDetl.getBatch()) + ); + } + }catch (Exception e){ + return R.error("娣诲姞鎷h揣鍗曞け璐�"); + } + + if (!Cools.isEmpty(manLocDetls)){ + for (ManLocDetl manLocDetl:manLocDetls){ + Double statusAnfme = 0.0; + if (Cools.isEmpty(manLocDetl.getStatus())){ + manLocDetl.setStatus(1); + } + try{ + if (manLocDetl.getStatus$().equals("绂佺敤")){ + if (Cools.isEmpty(manLocDetl.getBatch())){ + List<ManPakOut> manPakOuts = manPakOutService.selectList(new EntityWrapper<ManPakOut>() + .eq("loc_no", manLocDetl.getLocNo()) + .eq("matnr", manLocDetl.getMatnr()) + .eq("status",0) + ); + if (!Cools.isEmpty(manPakOuts)){ + for (ManPakOut manPakOut:manPakOuts){ + statusAnfme=statusAnfme+manPakOut.getAnfme(); + } + } + }else { + List<ManPakOut> manPakOuts = manPakOutService.selectList(new EntityWrapper<ManPakOut>() + .eq("loc_no", manLocDetl.getLocNo()) + .eq("matnr", manLocDetl.getMatnr()) + .eq("batch",manLocDetl.getBatch()) + .eq("status",0) + ); + if (!Cools.isEmpty(manPakOuts)){ + for (ManPakOut manPakOut:manPakOuts){ + statusAnfme=statusAnfme+manPakOut.getAnfme(); + } + } + } + } + }catch (Exception e){ + return R.error("鏌ヨ搴撳瓨绂佺敤鏁伴噺澶辫触"); + } + Wrapper<ManLocDetl> wrapper = new EntityWrapper<ManLocDetl>() + .eq("loc_no", manLocDetl.getLocNo()) + .eq("matnr", manLocDetl.getMatnr()); + if (orderDetl.getAnfme() > manLocDetl.getAnfme()-statusAnfme){ + if (addPakOUT(manLocDetl,param.getOrderNo()).equals(R.ok())){ + manLocDetl.setStatus(0); + try{ + if (Cools.isEmpty(manLocDetl.getBatch())){ + manLocDetlService.update(manLocDetl,wrapper.eq("modi_time",manLocDetl.getModiTime())); + }else { + manLocDetlService.update(manLocDetl,wrapper.eq("batch",manLocDetl.getBatch())); + } + }catch (Exception e){ + return R.error("鏇存柊搴撳瓨澶辫触"); + } + orderDetl.setAnfme(orderDetl.getAnfme()-manLocDetl.getAnfme()); + }else { + return R.error("娣诲姞鎷h揣鍗曞け璐�"); + } + }else if (orderDetl.getAnfme()-manLocDetl.getAnfme()-statusAnfme==0){ + if (addPakOUT(manLocDetl,param.getOrderNo()).equals(R.ok())){ + manLocDetl.setStatus(0); + try{ + if (Cools.isEmpty(manLocDetl.getBatch())){ + manLocDetlService.update(manLocDetl,wrapper.eq("modi_time",manLocDetl.getModiTime())); + }else { + manLocDetlService.update(manLocDetl,wrapper.eq("batch",manLocDetl.getBatch())); + } + }catch (Exception e){ + return R.error("鏇存柊搴撳瓨澶辫触"); + } + orderDetl.setAnfme(orderDetl.getAnfme()-manLocDetl.getAnfme()); + }else { + return R.error("娣诲姞鎷h揣鍗曞け璐�"); + } + }else if (orderDetl.getAnfme()<manLocDetl.getAnfme()-statusAnfme){ + Double a=manLocDetl.getAnfme(); + manLocDetl.setAnfme(orderDetl.getAnfme()); + if (addPakOUT(manLocDetl,param.getOrderNo()).equals(R.ok())){ + orderDetl.setAnfme(orderDetl.getAnfme()-manLocDetl.getAnfme()); + manLocDetl.setStatus(0); + manLocDetl.setAnfme(a); + try{ + if (Cools.isEmpty(manLocDetl.getBatch())){ + manLocDetlService.update(manLocDetl,wrapper.eq("modi_time",manLocDetl.getModiTime())); + }else { + manLocDetlService.update(manLocDetl,wrapper.eq("batch",manLocDetl.getBatch())); + } + }catch (Exception e){ + return R.error("鏇存柊搴撳瓨澶辫触"); + } + + }else { + return R.error("娣诲姞鎷h揣鍗曞け璐�"); + } + }else { + return R.error("绯荤粺鍑洪敊,璇疯仈绯荤鐞嗗憳"); + } + if (orderDetl.getAnfme()==0){ + break; + } + } + if (orderDetl.getAnfme()!=0){ + ManLocDetl manLocDetl=new ManLocDetl(); + manLocDetl.setAnfme(0.0); + manLocDetl.setMatnr(orderDetl.getMatnr()); + manLocDetl.setMaktx(orderDetl.getMaktx()); + manLocDetl.setMemo(orderDetl.getMemo()+"搴撳瓨涓嶈冻"); + if (addPakOUT(manLocDetl,param.getOrderNo()).equals(R.ok())){ + continue; + }else { + return R.error("娣诲姞鎷h揣鍗曞け璐�"); + } + } + }else { + ManLocDetl manLocDetl=new ManLocDetl(); + manLocDetl.setAnfme(0.0); + manLocDetl.setMatnr(orderDetl.getMatnr()); + manLocDetl.setMaktx(orderDetl.getMaktx()); + manLocDetl.setMemo(orderDetl.getMemo()+"鏃犲簱瀛�"); + if (addPakOUT(manLocDetl,param.getOrderNo()).equals(R.ok())){ + continue; + }else { + return R.error("娣诲姞鎷h揣鍗曞け璐�"); + } + } + + + } + orderService.updateSettle(order.getId(),(long)2,null); + }else { + return R.error("鍗曟嵁缂栧彿寮傚父"); + } + return R.ok("鎷h揣鍗曟坊鍔犳垚鍔�"); + } + private R addPakOUT(ManLocDetl manLocDetl,String OrderNo){ + ManPakOut manPakOut=new ManPakOut(); + manPakOut.setWrkNo(OrderNo+"-"+System.currentTimeMillis()); + manPakOut.setWrkSts((long)1); + manPakOut.setAnfme(manLocDetl.getAnfme()); + manPakOut.setLocNo(manLocDetl.getLocNo()); + manPakOut.setNodeId(manLocDetl.getNodeId()); + manPakOut.setMatnr(manLocDetl.getMatnr()); + manPakOut.setMaktx(manLocDetl.getMaktx()); + manPakOut.setSpecs(manLocDetl.getSpecs()); + manPakOut.setUnit(manLocDetl.getUnit()); + manPakOut.setBarcode(manLocDetl.getBarcode()); + manPakOut.setDocNum(OrderNo); + manPakOut.setStatus(0); + manPakOut.setCreateTime(new Date()); + if (!Cools.isEmpty(manLocDetl.getBatch())){ + manPakOut.setBatch(manLocDetl.getBatch()); + manPakOut.setUpdateTime(new Date()); + }else { + manPakOut.setUpdateTime(manLocDetl.getModiTime());//鐢ㄤ簬璇嗗埆璐х墿 + } + + manPakOut.setMemo(manLocDetl.getMemo()); + if (Cools.isEmpty(manPakOutService.selectOne(new EntityWrapper<ManPakOut>().eq("doc_num",OrderNo)))){ + manPakOut.setName(manLocDetl.getMaktx()); + } + try{ + if (!manPakOutService.insert(manPakOut)){ + return R.error("娣诲姞鎷h揣鏄庣粏澶辫触锛岃鑱旂郴绠$悊鍛�"); + } + }catch (Exception e){ + return R.error("娣诲姞鎷h揣鏄庣粏澶辫触锛岃鑱旂郴绠$悊鍛�"); + } + return R.ok(); + + } + + @RequestMapping("/manPakOut/finish") + public R finish(@RequestBody ManPakOut manPakOut){ + Wrapper<ManLocDetl> wrapper = new EntityWrapper<ManLocDetl>() + .eq("loc_no", manPakOut.getLocNo()) + .eq("matnr", manPakOut.getMatnr()); + try{ + if (Cools.isEmpty(manPakOut.getBatch())){ + List<ManLocDetl> manLocDetls = manLocDetlService.selectList(wrapper); + Double anfme=manPakOut.getAnfme(); + for (ManLocDetl manLocDetl:manLocDetls){ + if (anfme<manLocDetl.getAnfme()){ + manLocDetl.setAnfme(manLocDetl.getAnfme()-anfme); + manLocDetlService.update(manLocDetl,wrapper.eq("batch",manLocDetl.getBatch())); + anfme=0.0; + }else if (anfme>=manLocDetl.getAnfme()){ + manLocDetlService.delete(wrapper.eq("batch",manLocDetl.getBatch())); + anfme=anfme-manLocDetl.getAnfme(); + } + if (anfme==0.0){ + break; + } + } + }else { + ManLocDetl manLocDetl = manLocDetlService.selectOne(wrapper.eq("batch", manPakOut.getBatch())); + if (manPakOut.getAnfme()<manLocDetl.getAnfme()){ + manLocDetl.setAnfme(manLocDetl.getAnfme()-manPakOut.getAnfme()); + manLocDetlService.update(manLocDetl,wrapper.eq("batch",manLocDetl.getBatch())); + }else if (manPakOut.getAnfme()-manLocDetl.getAnfme()==0){ + manLocDetlService.delete(wrapper.eq("batch",manLocDetl.getBatch())); + } + } + }catch (Exception e){ + return R.error("鏇存柊搴撳瓨鏁伴噺澶辫触"); + } + + + ManPakOut out = Cools.isEmpty(manPakOut.getBatch())? manPakOutService.selectOne(new EntityWrapper<ManPakOut>() + .eq("wrk_no", manPakOut.getWrkNo()) + .eq("matnr", manPakOut.getMatnr())) + :manPakOutService.selectOne(new EntityWrapper<ManPakOut>() + .eq("wrk_no", manPakOut.getWrkNo()) + .eq("matnr", manPakOut.getMatnr()) + .eq("batch",manPakOut.getBatch())); + out.setWrkSts(manPakOut.getWrkSts()); + out.setZpallet(manPakOut.getZpallet()); + out.setAnfme(manPakOut.getAnfme()); + out.setNodeId(manPakOut.getNodeId()); + out.setLocNo(manPakOut.getLocNo()); + out.setMatnr(manPakOut.getMatnr()); + out.setMaktx(manPakOut.getMaktx()); + out.setBatch(manPakOut.getBatch()); + out.setStatus(manPakOut.getStatus()); + boolean update =Cools.isEmpty(manPakOut.getBatch())? manPakOutService.update(out, new EntityWrapper<ManPakOut>() + .eq("wrk_no", manPakOut.getWrkNo()) + .eq("matnr", manPakOut.getMatnr())) + :manPakOutService.update(out, new EntityWrapper<ManPakOut>() + .eq("wrk_no", manPakOut.getWrkNo()) + .eq("matnr", manPakOut.getMatnr()) + .eq("batch",manPakOut.getBatch())); + try { + Order order = orderService.selectOne(new EntityWrapper<Order>().eq("order_no", manPakOut.getDocNum())); + List<ManPakOut> pakOuts = manPakOutService.selectList(new EntityWrapper<ManPakOut>().eq("doc_num", order.getOrderNo())); + if (Cools.isEmpty(pakOuts)){ + return R.error("鏌ヨ鎷h揣鍗曟槑缁嗗け璐�"); + }else { + Long settle = order.getSettle(); + for (ManPakOut pakOut:pakOuts){ + if (pakOut.getStatus()==0 || pakOut.getStatus()==8){ + order.setSettle(settle); + break; + }else { + order.setSettle(4L); + } + } + } + orderService.updateSettle(order.getId(),order.getSettle(),(long)9527); + }catch (Exception e){ + return R.error("鏇存柊璁㈠崟鐘舵�佸け璐�"); + } + return update? R.ok("鏇存柊鎴愬姛") : R.error("鏇存柊澶辫触"); + } + + @RequestMapping("/manPakOut/notIssued") + public R notIssued(){ + List<Order> orders = orderService.selectList(new EntityWrapper<Order>().eq("settle", 1L).or().eq("settle", 2L)); + List<Order> orders1=new ArrayList<Order>(); + try { + for (Order order:orders){ + DocType docType = docTypeService.selectById(order.getDocType()); + if (docType.getPakout()==1){ + orders1.add(order); + } + } + }catch (Exception e){ + return R.error("鑾峰彇璁㈠崟鐘舵�佸け璐�"); + } + return R.ok(orders1); + } + + public static void main(String[] args) { + ManPakOutService bean = SpringUtils.getBean(ManPakOutService.class); + ManPakOut out = bean.selectOne(null); + System.out.println("JSON.toJSONString(out) = " + JSON.toJSONString(out)); + } + + @RequestMapping(value = "/ManPakOut/print/auth") + @ManagerAuth(memo = "璁㈠崟缂栫爜鎵撳嵃") + public R manPakOutPrint(@RequestParam(value = "param[]") String[] param) { + if(Cools.isEmpty(param)) { + return R.parse(CodeRes.EMPTY); + } + List<ManPakOut> res = new ArrayList<>(); + for (String orderNo : param){ + res = manPakOutService.selectList(new EntityWrapper<ManPakOut>().eq("doc_num", orderNo)); + } + return R.ok().add(res); + } + @RequestMapping(value = "/ManPakOut/code/auth") +// @ManagerAuth(memo = "鐗╂枡缂栫爜鏉″舰鐮佽幏鍙�(type:1(鏉″舰鐮�);2(浜岀淮鐮�)") + public R manPakOutCodeBarcode(@RequestParam(defaultValue = "2") Integer type + , @RequestParam String param + , HttpServletResponse response) throws Exception { + AdminInterceptor.cors(response); + if (Cools.isEmpty(param)){ + return R.parse(BaseRes.EMPTY); + } + BufferedImage img; + if (type == 1) { + img = BarcodeUtils.encode(param); + } else { + img = QrCode.createImg(param); + } + if (!ImageIO.write(img, "jpg", response.getOutputStream())) { + throw new IOException("Could not write an image of format jpg"); + } + response.getOutputStream().flush(); + response.getOutputStream().close(); + return R.ok(); + } +} diff --git a/src/main/java/com/zy/asrs/controller/MobileController.java b/src/main/java/com/zy/asrs/controller/MobileController.java index 1d05c39..bae8839 100644 --- a/src/main/java/com/zy/asrs/controller/MobileController.java +++ b/src/main/java/com/zy/asrs/controller/MobileController.java @@ -8,10 +8,13 @@ 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.NodePakoutParam; import com.zy.asrs.entity.result.MobileAdjustResult; import com.zy.asrs.service.*; import com.zy.common.model.WrkDto; import com.zy.common.web.BaseController; +import com.zy.system.entity.User; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.RequestBody; @@ -48,7 +51,11 @@ @Autowired private PackService packService; @Autowired - private ManLocDetlService manLocDetlService; + private ManLocDetlTempService manLocDetlTempService; + @Autowired + private MatService matService; + @Autowired + private WaitPakinService waitPakinService; // 缁勬墭 ---------------------------------------------------------------------------------------------------- @@ -90,8 +97,8 @@ combMat.setAnfme(orderDetl.getAnfme()-orderDetl.getQty()); combMat.setMaktx(orderDetl.getMaktx()); combMat.setSpecs(orderDetl.getSpecs()); - combMat.setCsocode(orderDetl.getColor()); - combMat.setIsoseq(orderDetl.getOrigin()); + combMat.setCsocode(orderDetl.getThreeCode()); + combMat.setIsoseq(orderDetl.getDeadTime()); combMats.add(combMat); } combParam.setCombMats(combMats); @@ -327,25 +334,74 @@ */ @RequestMapping("/node/recommend/loc") @ManagerAuth(memo = "搴撲綅鎺ㄨ崘") - public R recommendNodeLoc(){ + public R recommendNodeLoc(@RequestBody HashMap<String,String> param){ + String zpallet = param.get("zpallet"); - return R.ok(); + return R.ok("DT-C-010202").add(waitPakinService.selectList(new EntityWrapper<WaitPakin>().eq("zpallet",zpallet))); } + /* 骞冲簱 璁㈠崟涓婃灦 */ @RequestMapping("/node/puttway") - @ManagerAuth(memo = "璁㈠崟涓婃灦") + //@ManagerAuth(memo = "璁㈠崟涓婃灦") public R putway(@RequestBody HashMap<String,String> params){ String zpallet = params.get("zpallet"); String locNo = params.get("locNo"); - mobileService.nodePutway(zpallet,locNo,getUser()); + mobileService.nodePutway(zpallet,locNo,new User()); + + return R.ok("璁㈠崟涓婃灦鎴愬姛"); + } + + /* + 骞冲簱 璁㈠崟涓嬫灦 + */ + @RequestMapping("/node/pakout") + public R nodePakout(@RequestBody NodePakoutParam param){ - return R.ok(); + mobileService.nodePakout(param,new User()); + + return R.ok("璁㈠崟涓嬫灦鎴愬姛"); + } + + /* + 骞冲簱涓存椂涓婃灦 + */ + @RequestMapping("/node/putway1") + public R putway1(@RequestBody CombParam combParam){ + Date now = new Date(); + List<CombParam.CombMat> combMats = combParam.getCombMats(); + combMats.forEach(combMat -> { + if(Cools.isEmpty(combMat.getBatch())){ + combMat.setBatch("-1"); + } + ManLocDetlTemp manLocDetlTemp = manLocDetlTempService.selectOne(new EntityWrapper<ManLocDetlTemp>() + .eq("matnr", combMat.getMatnr()) + .eq("batch",combMat.getBatch())); + if(Cools.isEmpty(manLocDetlTemp)){ + manLocDetlTemp = new ManLocDetlTemp(); + Mat mat = matService.selectByMatnr(combMat.getMatnr()); + BeanUtils.copyProperties(mat,manLocDetlTemp); + manLocDetlTemp.setLocNo("A-010101"); + manLocDetlTemp.setAnfme(combMat.getAnfme()); + manLocDetlTemp.setBatch(combMat.getBatch()); + manLocDetlTemp.setCreateTime(now); + manLocDetlTemp.setModiTime(now); + manLocDetlTempService.insert(manLocDetlTemp); + }else { + manLocDetlTemp.setAnfme(manLocDetlTemp.getAnfme()+combMat.getAnfme()); + manLocDetlTempService.update(manLocDetlTemp,new EntityWrapper<ManLocDetlTemp>() + .eq("matnr", combMat.getMatnr()) + .eq("batch",combMat.getBatch())); + } + + }); + + return R.ok("涓婃灦鎴愬姛"); } diff --git a/src/main/java/com/zy/asrs/controller/OutController.java b/src/main/java/com/zy/asrs/controller/OutController.java index efaaee0..f851843 100644 --- a/src/main/java/com/zy/asrs/controller/OutController.java +++ b/src/main/java/com/zy/asrs/controller/OutController.java @@ -17,9 +17,7 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; -import java.util.ArrayList; -import java.util.List; -import java.util.Optional; +import java.util.*; import java.util.stream.Collectors; /** @@ -51,6 +49,10 @@ private AgvBasDevpService agvBasDevpService; @Autowired private AgvWorkService agvWorkService; + @Autowired + private ManLocDetlService manLocDetlService; + @Autowired + private ManPakOutService manPakOutService; @Autowired private AgvLocDetlService agvLocDetlService; @@ -75,6 +77,9 @@ double issued = Optional.of(orderDetl.getAnfme() - orderDetl.getQty()).orElse(0.0D); if (issued <= 0.0D) { continue; } + //浠庡钩搴撳鎵� + issued = manLocDetlService.queryStockAndSetLocDto(orderDetl.getMatnr(),orderDetl.getBatch(),orderDetl.getOrderNo(),locDtoList,issued,orderDetl.getThreeCode(),orderDetl.getDeadTime()); + //鍏堟壘AGV鐨勫簱瀛橈紝濡傛灉杩斿洖鐨刬ssued澶т簬0锛屽垯鍘诲洓椤瑰簱鎵� issued = agvLocDetlService.queryStockAndSetLocDto(orderDetl.getMatnr(),orderDetl.getBatch(),orderDetl.getOrderNo(),locDtoList,issued,orderDetl.getThreeCode(),orderDetl.getDeadTime()); @@ -89,44 +94,6 @@ } return R.ok().add(locDtoList); - /* - if (Cools.isEmpty(ids)) { - return R.parse(BaseRes.PARAM); - } - List<OrderDetl> orderDetls = orderDetlService.selectBatchIds(ids); - List<LocDto> locDtos = new ArrayList<>(); - - Set<String> exist = new HashSet<>(); - - for (OrderDetl orderDetl : orderDetls) { - double issued = Optional.of(orderDetl.getAnfme() - orderDetl.getQty()).orElse(0.0D); - if (issued <= 0.0D) { continue; } - List<LocDetl> locDetls = locDetlService.queryStock(orderDetl.getMatnr(), orderDetl.getBatch(), null, exist); - for (LocDetl locDetl : locDetls) { - if (issued > 0) { -// LocDto locDto = new LocDto(locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getMaktx(), locDetl.getBatch(), orderDetl.getOrderNo(), -// issued >= locDetl.getAnfme() ? locDetl.getAnfme() : issued); - LocDto locDto = new LocDto(locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getMaktx(), locDetl.getBatch(), orderDetl.getOrderNo(), - locDetl.getAnfme()); -// int ioType = (issued >= locDetl.getAnfme() && locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("loc_no", locDto.getLocNo())) == 1) ? 101 : 103; - int ioType = 101; - List<Integer> staNos = staDescService.queryOutStaNosByLocNo(locDetl.getLocNo(), ioType); - locDto.setStaNos(staNos); - locDtos.add(locDto); - exist.add(locDetl.getLocNo()); - // 鍓╀綑寰呭嚭鏁伴噺閫掑噺 - issued = issued - locDetl.getAnfme(); - } else { - break; - } - } - if (issued > 0) { - LocDto locDto = new LocDto(null, orderDetl.getMatnr(), orderDetl.getMaktx(), orderDetl.getBatch(), orderDetl.getOrderNo(), issued); - locDto.setLack(Boolean.TRUE); - locDtos.add(locDto); - } - } - return R.ok().add(locDtos); */ } @PostMapping("/out/pakout/auth") @@ -350,6 +317,10 @@ if (locDto.isLack()) { continue; } //AGV搴� if(!Cools.isEmpty(locDto.getAgvStaNos())){ + //骞冲簱 + if("鏃犻渶绔欑偣".equals(locDto.getAgvStaNo())){ + generateManPakout(locDto); + } generateTaskDtoForAgv(locDto,agvTaskDtos); //鍥涢」搴� @@ -406,6 +377,75 @@ } /* + 鐢熸垚骞冲簱鎷h揣鍗� + */ + private void generateManPakout(LocDto locDto){ + ManLocDetl manLocDetl = manLocDetlService.selectItem(locDto.getLocNo(), locDto.getMatnr(), locDto.getBatch()); + if (!Cools.isEmpty(manLocDetl) && !(locDto.getAnfme()>manLocDetl.getAnfme())) { + manLocDetl.setStatus(0); + manLocDetlService.update(manLocDetl, new EntityWrapper<ManLocDetl>().eq("loc_no", manLocDetl.getLocNo()).eq("matnr",manLocDetl.getMatnr())); + if (addPakOUT(locDto).equals(R.ok())) { + Order order = orderService.selectByNo(locDto.getOrderNo()); + if (Cools.isEmpty(order)){ + throw new CoolException("鏌ヨ璁㈠崟澶辫触锛岃鑱旂郴绠$悊鍛�"+locDto.getOrderNo()); + } + if (order.getSettle()==1){ + if (!orderService.updateSettle(order.getId(),2L,null)){ + throw new CoolException("淇敼璁㈠崟鐘舵�佸け璐ワ紝璇疯仈绯荤鐞嗗憳"+locDto.getOrderNo()); + } + } + OrderDetl orderDetl = orderDetlService.selectOne(new EntityWrapper<OrderDetl>().eq("order_no", locDto.getOrderNo()).eq("matnr", locDto.getMatnr())); + if (Cools.isEmpty(orderDetl)){ + throw new CoolException("鏌ヨ璁㈠崟鏄庣粏澶辫触锛岃鑱旂郴绠$悊鍛�"+locDto.getOrderNo()+locDto.getMatnr()); + } + orderDetl.setQty(orderDetl.getQty() + locDto.getAnfme()); + if (!orderDetlService.update(orderDetl,new EntityWrapper<OrderDetl>().eq("order_no", locDto.getOrderNo()).eq("matnr", locDto.getMatnr()))){ + throw new CoolException("淇敼璁㈠崟鏄庣粏澶辫触锛岃鑱旂郴绠$悊鍛�"+locDto.getOrderNo()+locDto.getMatnr()); + } + } + }else { + throw new CoolException("搴撳瓨涓嶈冻"); + } + } + + private R addPakOUT(LocDto locDto){ + ManPakOut manPakOut=new ManPakOut(); + manPakOut.setWrkNo(locDto.getOrderNo()+"-"+System.currentTimeMillis()); + manPakOut.setWrkSts((long)1); + manPakOut.setAnfme(locDto.getAnfme()); + manPakOut.setLocNo(locDto.getLocNo()); + manPakOut.setMatnr(locDto.getMatnr()); + manPakOut.setMaktx(locDto.getMaktx()); + manPakOut.setDocNum(locDto.getOrderNo()); + manPakOut.setCount(0.0); + manPakOut.setStatus(0); + manPakOut.setCreateTime(new Date()); + manPakOut.setBatch(locDto.getBatch()); + manPakOut.setUpdateTime(new Date()); + manPakOut.setUuid(UUID.randomUUID().toString()); + + manPakOut.setContainerCode(locDto.getContainerCode()); + manPakOut.setCsocode(locDto.getCsocode()); + manPakOut.setIsoseq(locDto.getIsoseq()); + + ManPakOut manPakOutExist = manPakOutService.selectOne(new EntityWrapper<ManPakOut>().eq("doc_num", locDto.getOrderNo())); + if (Cools.isEmpty(manPakOutExist)){ + manPakOut.setName(locDto.getMaktx()); + }else{ + manPakOut.setUuid(manPakOutExist.getUuid()); + } + try{ + if (!manPakOutService.insert(manPakOut)){ + return R.error("娣诲姞鎷h揣鏄庣粏澶辫触锛岃鑱旂郴绠$悊鍛�"); + } + }catch (Exception e){ + return R.error("娣诲姞鎷h揣鏄庣粏澶辫触锛岃鑱旂郴绠$悊鍛�"); + } + return R.ok(); + + } + + /* 璁㈠崟棰勬牎楠� ===>> 1.璁㈠崟鐘舵�侊紱 2.璁㈠崟甯﹀嚭鏁伴噺 */ private List<OrderDto> orderPreVerification(List<LocDto> locDtos){ diff --git a/src/main/java/com/zy/asrs/entity/ManLocDetlTemp.java b/src/main/java/com/zy/asrs/entity/ManLocDetlTemp.java new file mode 100644 index 0000000..6a99e9e --- /dev/null +++ b/src/main/java/com/zy/asrs/entity/ManLocDetlTemp.java @@ -0,0 +1,346 @@ +package com.zy.asrs.entity; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.baomidou.mybatisplus.annotations.TableField; +import com.baomidou.mybatisplus.annotations.TableId; +import com.baomidou.mybatisplus.annotations.TableName; +import com.baomidou.mybatisplus.enums.IdType; +import com.core.common.Cools; +import com.core.common.SpringUtils; +import com.zy.system.entity.Host; +import com.zy.system.entity.User; +import com.zy.system.service.HostService; +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("man_loc_detl_temp") +public class ManLocDetlTemp implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 鎵�灞為」鐩� + */ + @ApiModelProperty(value= "鎵�灞為」鐩�") + @TableField("host_id") + private Long hostId; + + /** + * 璐т綅缂栧彿 + */ + @ApiModelProperty(value= "璐т綅缂栧彿") + @TableField("loc_no") + private String locNo; + + /** + * 鎵�灞炶揣浣� + */ + @ApiModelProperty(value= "鎵�灞炶揣浣�") + @TableField("node_id") + private Long nodeId; + + /** + * 鎵樼洏鐮� + */ + @ApiModelProperty(value= "鎵樼洏鐮�") + private String zpallet; + + /** + * 搴撳瓨浣欓噺 + */ + @ApiModelProperty(value= "搴撳瓨浣欓噺") + @ExcelProperty(value = "搴撳瓨鎬婚噺") + private Double anfme; + + /** + * 鍟嗗搧缂栧彿 + */ + @ApiModelProperty(value= "鍟嗗搧缂栧彿") + @TableId(value = "matnr", type = IdType.INPUT) + @ExcelProperty(value = "鍟嗗搧缂栧彿") + private String matnr; + + /** + * 鍟嗗搧鍚嶇О + */ + @ApiModelProperty(value= "鍟嗗搧鍚嶇О") + @ExcelProperty(value = "鍟嗗搧鍚嶇О") + private String maktx; + + /** + * 鍚嶇О + */ + @ApiModelProperty(value= "鍚嶇О") + private String name; + + /** + * 瑙勬牸 + */ + @ApiModelProperty(value= "瑙勬牸") + @ExcelProperty(value = "瑙勬牸") + private String specs; + + /** + * 鍨嬪彿 + */ + @ApiModelProperty(value= "鍨嬪彿") + private String model; + + /** + * 鎵瑰彿 + */ + @ApiModelProperty(value= "鎵瑰彿") + @TableId(value = "batch", type = IdType.INPUT) + private String batch; + + /** + * 鍗曚綅 + */ + @ApiModelProperty(value= "鍗曚綅") + @ExcelProperty(value = "鍗曚綅") + private String unit; + + /** + * SKC + */ + @ApiModelProperty(value= "SKC") + @ExcelProperty(value = "SKC") + private String barcode; + + /** + * 鍗曟嵁绫诲瀷 + */ + @ApiModelProperty(value= "鍗曟嵁绫诲瀷") + @TableField("doc_id") + private Long docId; + + /** + * 鍗曟嵁缂栧彿 + */ + @ApiModelProperty(value= "鍗曟嵁缂栧彿") + @TableField("doc_num") + private String docNum; + + /** + * 瀹㈡埛鍚嶇О + */ + @ApiModelProperty(value= "瀹㈡埛鍚嶇О") + @TableField("cust_name") + private String custName; + + /** + * 鍝侀」鏁� + */ + @ApiModelProperty(value= "鍝侀」鏁�") + @TableField("item_num") + private Integer itemNum; + + /** + * 鏁伴噺 + */ + @ApiModelProperty(value= "鏁伴噺") + private Integer count; + + + /** + * 鍗曚环 + */ + @ApiModelProperty(value= "鍗曚环") + private Double price; + + /** + * 閲嶉噺 + */ + @ApiModelProperty(value= "閲嶉噺") + private Double weight; + + /** + * 鐘舵�� 1: 姝e父 0: 绂佺敤 + */ + @ApiModelProperty(value= "鐘舵�� 1: 姝e父 0: 绂佺敤 ") + private Integer status; + + /** + * 娣诲姞浜哄憳 + */ + @ApiModelProperty(value= "娣诲姞浜哄憳") + @TableField("create_by") + private Long createBy; + + /** + * 娣诲姞鏃堕棿 + */ + @ApiModelProperty(value= "娣诲姞鏃堕棿") + @TableField("create_time") + private Date createTime; + + /** + * 淇敼浜哄憳 + */ + @ApiModelProperty(value= "淇敼浜哄憳") + @TableField("update_by") + private Long updateBy; + + /** + * 淇敼鏃堕棿 + */ + @ApiModelProperty(value= "淇敼鏃堕棿") + @TableField("modi_time") + private Date modiTime; + + /** + * 澶囨敞 + */ + @ApiModelProperty(value= "澶囨敞") + private String memo; + + /** + * 鎷ユ湁鑰� + */ + @ApiModelProperty(value= "鎷ユ湁鑰� 1: 鏉板厠 ") + private Integer owner; + + /** + * 璐х墿褰㈡��:0锛氫唬閲囥��1锛氫粨鍌� + */ + @ApiModelProperty(value= "璐х墿褰㈡��:0锛氫唬閲囥��1锛氫粨鍌�") + private Integer payment; + + @ApiModelProperty(value= "娣诲姞鏃堕棿") + @TableField("real_anfme") + private Date realAnfme; + + @ApiModelProperty(value= "璁㈠崟鍙�") + @TableField("order_no") + private String orderNo; + + @TableField("container_code") + private String containerCode; + + private String csocode; + + private String isoseq; + +// LocDetl locDetl = new LocDetl( +// null, // 璐т綅缂栧彿[闈炵┖] +// null, // 鎵�灞炶揣浣� +// null, // 鎵樼洏鐮� +// null, // 搴撳瓨浣欓噺[闈炵┖] +// null, // 鍟嗗搧缂栧彿[闈炵┖] +// null, // 鍟嗗搧鍚嶇О +// null, // 鍚嶇О +// null, // 瑙勬牸 +// null, // 鍨嬪彿 +// null, // 鎵瑰彿 +// null, // 鍗曚綅 +// null, // SKC +// null, // 鍗曟嵁绫诲瀷 +// null, // 鍗曟嵁缂栧彿 +// null, // 瀹㈡埛鍚嶇О +// null, // 鍝侀」鏁� +// null, // 鏁伴噺 +// null, // 閲嶉噺 +// null, // 鐘舵�� +// null, // 娣诲姞浜哄憳 +// null, // 娣诲姞鏃堕棿 +// null, // 淇敼浜哄憳 +// null, // 淇敼鏃堕棿 +// null // 澶囨敞 +// ); + +// public String getOwner$(){ +// LocOwnerService service = SpringUtils.getBean(LocOwnerService.class); +// LocOwner locOwner = service.selectById(this.owner); +// if (!Cools.isEmpty(locOwner)){ +// return String.valueOf(locOwner.getOwner()); +// } +// return null; +// } + + public String getPayment$(){ + if (null == this.payment){ return null; } + switch (this.payment){ + case 1: + return "浠撳偍"; + case 0: + return "浠i噰"; + default: + return String.valueOf(this.payment); + } + } + + public String getHostId$(){ + HostService service = SpringUtils.getBean(HostService.class); + Host host = service.selectById(this.hostId); + if (!Cools.isEmpty(host)){ + return String.valueOf(host.getName()); + } + return null; + } + + public Long getNodeId() { + return nodeId; + } + +// public String getNodeId$(){ +// NodeService service = SpringUtils.getBean(NodeService.class); +// Node node = service.selectById(this.nodeId); +// if (!Cools.isEmpty(node)){ +// return String.valueOf(node.getName()); +// } +// return null; +// } + + public String getStatus$(){ + if (null == this.status){ return null; } + switch (this.status){ + case 1: + return "姝e父"; + case 0: + return "绂佺敤"; + default: + return String.valueOf(this.status); + } + } + + public String getCreateBy$(){ + UserService service = SpringUtils.getBean(UserService.class); + User user = service.selectById(this.createBy); + if (!Cools.isEmpty(user)){ + return String.valueOf(user.getNickname()); + } + return null; + } + + public String getCreateTime$(){ + if (Cools.isEmpty(this.createTime)){ + return ""; + } + return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.createTime); + } + + public String getUpdateBy$(){ + UserService service = SpringUtils.getBean(UserService.class); + User user = service.selectById(this.updateBy); + if (!Cools.isEmpty(user)){ + return String.valueOf(user.getNickname()); + } + return null; + } + + public String getModiTime$(){ + if (Cools.isEmpty(this.modiTime)){ + return ""; + } + return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.modiTime); + } + + + +} diff --git a/src/main/java/com/zy/asrs/entity/ManPakOut.java b/src/main/java/com/zy/asrs/entity/ManPakOut.java new file mode 100644 index 0000000..7afe93d --- /dev/null +++ b/src/main/java/com/zy/asrs/entity/ManPakOut.java @@ -0,0 +1,280 @@ +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 io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.text.SimpleDateFormat; +import java.util.Date; + +@Data +@TableName("man_pakout") +public class ManPakOut { + private static final long serialVersionUID = 1L; + + /** + * 浠诲姟鍙� + */ + @ApiModelProperty(value= "浠诲姟鍙�") + @TableId(value = "wrk_no", type = IdType.INPUT) + @TableField("wrk_no") + private String wrkNo; + + /** + * 宸ヤ綔鐘舵�� + */ + @ApiModelProperty(value= "宸ヤ綔鐘舵��") + @TableField("wrk_sts") + private Long wrkSts; + + /** + * 鎵樼洏鍙� + */ + @ApiModelProperty(value= "鎵樼洏鍙�") + private String zpallet; + + /** + * 鍑哄簱鏁伴噺 + */ + @ApiModelProperty(value= "鍑哄簱鏁伴噺") + private Double anfme; + + /** + * 鍏宠仈璐т綅 + */ + @ApiModelProperty(value= "鍏宠仈璐т綅") + @TableField("node_id") + private Long nodeId; + + /** + * 璐т綅 + */ + @ApiModelProperty(value= "璐т綅") + @TableField("loc_no") + private String locNo; + + /** + * 鍟嗗搧缂栫爜 + */ + @ApiModelProperty(value= "鍟嗗搧缂栫爜") + private String matnr; + + /** + * 鍟嗗搧鍚嶇О + */ + @ApiModelProperty(value= "鍟嗗搧鍚嶇О") + private String maktx; + + /** + * 鍚嶇О + */ + @ApiModelProperty(value= "鍚嶇О") + private String name; + + /** + * 瑙勬牸 + */ + @ApiModelProperty(value= "瑙勬牸") + private String specs; + + /** + * 鍨嬪彿 + */ + @ApiModelProperty(value= "鍨嬪彿") + private String model; + + /** + * 鎵瑰彿 + */ + @ApiModelProperty(value= "鎵瑰彿") + private String batch; + + /** + * 鍗曚綅 + */ + @ApiModelProperty(value= "鍗曚綅") + private String unit; + + /** + * 璐х墿鏉$爜 + */ + @ApiModelProperty(value= "璐х墿鏉$爜") + private String barcode; + + /** + * 鍗曟嵁绫诲瀷 + */ + @ApiModelProperty(value= "鍗曟嵁绫诲瀷") + @TableField("doc_id") + private Long docId; + + /** + * 鍗曟嵁缂栧彿 + */ + @ApiModelProperty(value= "鍗曟嵁缂栧彿") + @TableField("doc_num") + private String docNum; + + /** + * 瀹㈡埛鍚嶇О + */ + @ApiModelProperty(value= "瀹㈡埛鍚嶇О") + @TableField("cust_name") + private String custName; + + /** + * 鍝侀」鏁� + */ + @ApiModelProperty(value= "鍝侀」鏁�") + @TableField("item_num") + private Integer itemNum; + + /** + * 鏁伴噺 + */ + @ApiModelProperty(value= "鏁伴噺") + private Double count; + + /** + * 閲嶉噺 + */ + @ApiModelProperty(value= "閲嶉噺") + private Double weight; + + /** + * 鐘舵�� 1: 姝e父 0: 绂佺敤 + */ + @ApiModelProperty(value= "鐘舵�� 1: 姝e父 0: 绂佺敤 ") + private Integer status; + + /** + * 娣诲姞浜哄憳 + */ + @ApiModelProperty(value= "娣诲姞浜哄憳") + @TableField("create_by") + private Long createBy; + + /** + * 娣诲姞鏃堕棿 + */ + @ApiModelProperty(value= "娣诲姞鏃堕棿") + @TableField("create_time") + private Date createTime; + + /** + * 淇敼浜哄憳 + */ + @ApiModelProperty(value= "淇敼浜哄憳") + @TableField("update_by") + private Long updateBy; + + /** + * 淇敼鏃堕棿 + */ + @ApiModelProperty(value= "淇敼鏃堕棿") + @TableField("update_time") + private Date updateTime; + + /** + * 澶囨敞 + */ + @ApiModelProperty(value= "澶囨敞") + private String memo; + + /** + * 鎷ユ湁鑰� + */ + @ApiModelProperty(value= "鎷ユ湁鑰� 1: 鏉板厠 ") + private Integer owner; + + /** + * 璐х墿褰㈡��:0锛氫唬閲囥��1锛氫粨鍌� + */ + @ApiModelProperty(value= "璐х墿褰㈡��:0锛氫唬閲囥��1锛氫粨鍌�") + private Integer payment; + + /** + * uuid鏃堕棿鎴� + */ + @ApiModelProperty(value= "uuid") + @TableId(value = "uuid", type = IdType.ID_WORKER_STR) + @TableField("uuid") + private String uuid; + + //鏂欑鐮� + private String containerCode; + //閿�鍞鍗曞彿 + private String csocode; + //閿�鍞鍗曡鍙� + private String isoseq; + +// public String getOwner$(){ +// LocOwnerService service = SpringUtils.getBean(LocOwnerService.class); +// LocOwner locOwner = service.selectById(this.owner); +// if (!Cools.isEmpty(locOwner)){ +// return String.valueOf(locOwner.getOwner()); +// } +// return null; +// } + + public String getPayment$(){ + if (null == this.payment){ return null; } + switch (this.payment){ + case 1: + return "宸插嚭搴�"; + case 0: + return "鏈嚭搴�"; + case 8: + return "鏈畬鍏ㄥ嚭搴�"; + case 9: + return "鍏ㄩ儴瀹屾垚鍑哄簱"; + default: + return String.valueOf(this.payment); + } +// switch (this.payment){ +// case 1: +// return "浠撳偍"; +// case 0: +// return "浠i噰"; +// default: +// return String.valueOf(this.payment); +// } + } + + public String getStatus$(){ + if (null == this.status){ return null; } + switch (this.status){ + case 1: + return "宸插嚭搴�"; + case 0: + return "鏈嚭搴�"; + case 8: + return "鏈畬鍏ㄥ嚭搴�"; + case 9: + return "鍏ㄩ儴瀹屾垚鍑哄簱"; + default: + return String.valueOf(this.status); + } + } + + public String getCreateTime$(){ + if (Cools.isEmpty(this.createTime)){ + return ""; + } + return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.createTime); + } + + public String getUpdateTime$(){ + if (Cools.isEmpty(this.updateTime)){ + return ""; + } + return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.updateTime); + } + + +} diff --git a/src/main/java/com/zy/asrs/entity/param/NodePakoutParam.java b/src/main/java/com/zy/asrs/entity/param/NodePakoutParam.java new file mode 100644 index 0000000..d1facae --- /dev/null +++ b/src/main/java/com/zy/asrs/entity/param/NodePakoutParam.java @@ -0,0 +1,17 @@ +package com.zy.asrs.entity.param; + +import lombok.Data; + +@Data +public class NodePakoutParam { + private String orderNo; + private String containerCode; + private Double anfme; + private String locNo; + private String matnr; + //閿�鍞鍗曞彿 + private String csocode; + //閿�鍞鍗曡鍙� + private String isoseq; + private String wrkNo; +} diff --git a/src/main/java/com/zy/asrs/mapper/ManLocDetlTempMapper.java b/src/main/java/com/zy/asrs/mapper/ManLocDetlTempMapper.java new file mode 100644 index 0000000..96b05de --- /dev/null +++ b/src/main/java/com/zy/asrs/mapper/ManLocDetlTempMapper.java @@ -0,0 +1,12 @@ +package com.zy.asrs.mapper; + +import com.baomidou.mybatisplus.mapper.BaseMapper; +import com.zy.asrs.entity.ManLocDetlTemp; +import org.apache.ibatis.annotations.Mapper; +import org.springframework.stereotype.Repository; + +@Mapper +@Repository +public interface ManLocDetlTempMapper extends BaseMapper<ManLocDetlTemp> { + +} diff --git a/src/main/java/com/zy/asrs/mapper/ManPakOutMapper.java b/src/main/java/com/zy/asrs/mapper/ManPakOutMapper.java new file mode 100644 index 0000000..2a7f7f4 --- /dev/null +++ b/src/main/java/com/zy/asrs/mapper/ManPakOutMapper.java @@ -0,0 +1,21 @@ +package com.zy.asrs.mapper; + +import com.baomidou.mybatisplus.mapper.BaseMapper; +import com.zy.asrs.entity.ManPakOut; +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; + +@Mapper +@Repository +public interface ManPakOutMapper extends BaseMapper<ManPakOut> { + + @Update("UPDATE man_pakout SET payment = ${status} WHERE doc_num = '${orderNo}' AND name IS NOT NULL") + void updateAllStatus(@Param("orderNo")String orderNo, @Param("status")int status); + + @Select("SELECT * FROM man_pakout WHERE doc_num = '${orderNo}' AND name IS NOT NULL") + ManPakOut selectByOrderWithName(@Param("orderNo")String orderNo); + +} diff --git a/src/main/java/com/zy/asrs/service/AgvLocDetlService.java b/src/main/java/com/zy/asrs/service/AgvLocDetlService.java index 301da48..6c7550f 100644 --- a/src/main/java/com/zy/asrs/service/AgvLocDetlService.java +++ b/src/main/java/com/zy/asrs/service/AgvLocDetlService.java @@ -23,4 +23,9 @@ List<AgvLocDetl> searchByLike(String orderNo, String matnr, String maktx, String specs, String locNo); + /** + * 淇敼搴撳瓨鏄庣粏鏁伴噺锛屽鏋滄暟閲忎负0锛屽垯鍒犻櫎璁板綍 + */ + boolean updateAnfme(Double anfme, String locNo, String matnr, String batch); + } diff --git a/src/main/java/com/zy/asrs/service/AgvWorkService.java b/src/main/java/com/zy/asrs/service/AgvWorkService.java index 3379e72..cdc2396 100644 --- a/src/main/java/com/zy/asrs/service/AgvWorkService.java +++ b/src/main/java/com/zy/asrs/service/AgvWorkService.java @@ -3,6 +3,7 @@ import com.zy.asrs.entity.AgvBasDevp; import com.zy.asrs.entity.AgvWrkMast; import com.zy.asrs.entity.param.EmptyPlateOutParam; +import com.zy.asrs.entity.param.LocDetlAdjustParam; import com.zy.asrs.entity.param.StockOutParam; import com.zy.common.model.StartupDto; import com.zy.common.model.TaskDto; @@ -43,4 +44,9 @@ void emptyPlateOut(EmptyPlateOutParam param, Long userId); + /** + * 搴撳瓨鏄庣粏璋冩暣 + */ + void adjustLocDetl(LocDetlAdjustParam param, Long userId); + } diff --git a/src/main/java/com/zy/asrs/service/ManLocDetlService.java b/src/main/java/com/zy/asrs/service/ManLocDetlService.java index 2cbf39f..ba601f3 100644 --- a/src/main/java/com/zy/asrs/service/ManLocDetlService.java +++ b/src/main/java/com/zy/asrs/service/ManLocDetlService.java @@ -5,6 +5,7 @@ import com.zy.asrs.entity.ManLocDetl; import com.zy.asrs.entity.param.LocDetlAdjustParam; import com.zy.asrs.entity.result.StockVo; +import com.zy.common.model.LocDto; import com.zy.system.entity.User; import java.util.List; @@ -69,4 +70,6 @@ int increase(Double anfme,String locNo, String matnr,String batch,Double weight); + double queryStockAndSetLocDto(String matnr, String batch, String orderNo, List<LocDto> locDtoList, double issued, String csocode, String isoseq); + } diff --git a/src/main/java/com/zy/asrs/service/ManLocDetlTempService.java b/src/main/java/com/zy/asrs/service/ManLocDetlTempService.java new file mode 100644 index 0000000..4cbfb60 --- /dev/null +++ b/src/main/java/com/zy/asrs/service/ManLocDetlTempService.java @@ -0,0 +1,8 @@ +package com.zy.asrs.service; + +import com.baomidou.mybatisplus.service.IService; +import com.zy.asrs.entity.ManLocDetlTemp; + +public interface ManLocDetlTempService extends IService<ManLocDetlTemp> { + +} diff --git a/src/main/java/com/zy/asrs/service/ManPakOutService.java b/src/main/java/com/zy/asrs/service/ManPakOutService.java new file mode 100644 index 0000000..cfbfcc6 --- /dev/null +++ b/src/main/java/com/zy/asrs/service/ManPakOutService.java @@ -0,0 +1,11 @@ +package com.zy.asrs.service; + +import com.baomidou.mybatisplus.service.IService; +import com.zy.asrs.entity.ManPakOut; + +public interface ManPakOutService extends IService<ManPakOut> { + void updateAllStatus(String orderNo,int status); + + ManPakOut selectByOrderWithName(String orderNo); + +} diff --git a/src/main/java/com/zy/asrs/service/MobileService.java b/src/main/java/com/zy/asrs/service/MobileService.java index a5e1182..72e8cd3 100644 --- a/src/main/java/com/zy/asrs/service/MobileService.java +++ b/src/main/java/com/zy/asrs/service/MobileService.java @@ -2,6 +2,7 @@ import com.zy.asrs.entity.param.CombParam; import com.zy.asrs.entity.param.MobileAdjustParam; +import com.zy.asrs.entity.param.NodePakoutParam; import com.zy.system.entity.User; public interface MobileService { @@ -19,4 +20,6 @@ void packComb(CombParam param, Long userId); void nodePutway(String zpallet, String locNo, User user); + + void nodePakout(NodePakoutParam param, User user); } diff --git a/src/main/java/com/zy/asrs/service/impl/AgvLocDetlServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/AgvLocDetlServiceImpl.java index c55a5d6..bf76e41 100644 --- a/src/main/java/com/zy/asrs/service/impl/AgvLocDetlServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/AgvLocDetlServiceImpl.java @@ -52,17 +52,6 @@ wapperSetCondition(wrapper,"three_code",csocode); wapperSetCondition(wrapper,"dead_time",isoseq); -// if(Cools.isEmpty(batch)){ -// wrapper.isNull("batch"); -// }else { -// wrapper.eq("batch",batch); -// } -// if(!Cools.isEmpty(csocode)){ -// wrapper.eq("three_code",csocode); -// } -// if(Cools.isEmpty(isoseq)){ -// wrapper.eq("dead_time",isoseq); -// } List<AgvLocDetl> agvLocDetls = this.selectList(wrapper); for (AgvLocDetl agvLocDetl: agvLocDetls) { @@ -78,7 +67,9 @@ //int ioType = anfme > issued ? 101 : 103; anfme = anfme > issued ? issued : anfme; LocDto locDto = new LocDto(agvLocDetl.getLocNo(), agvLocDetl.getMatnr(), agvLocDetl.getMaktx(), agvLocDetl.getBatch(), orderNo, anfme); - + locDto.setCsocode(csocode); + locDto.setIsoseq(isoseq); + locDto.setContainerCode(agvLocDetl.getZpallet()); //褰撳墠搴撲綅鎵�澶勬ゼ灞� int floor = Integer.parseInt(agvLocDetl.getLocNo().split("@")[1]); locDto.setAgvStaNos(queryAgvStaNosByFloor(floor)); @@ -139,6 +130,17 @@ return this.selectList(wrapper); } + public boolean updateAnfme(Double anfme, String locNo, String matnr, String batch) { + if (anfme <= 0) { + return this.delete(new EntityWrapper<AgvLocDetl>().eq("matnr", matnr).eq("loc_no", locNo)); + } else { + AgvLocDetl agvLocDetl = this.selectOne(new EntityWrapper<AgvLocDetl>().eq("loc_no", locNo).eq("matnr", matnr)); + agvLocDetl.setAnfme(anfme); + return this.update(agvLocDetl,new EntityWrapper<AgvLocDetl>().eq("loc_no", locNo).eq("matnr", matnr)); + //return baseMapper.updateAnfme(anfme, locNo, matnr, batch) > 0; + } + } + private List<String> queryAgvStaNosByFloor(int floor){ List<String> agvStaNos = new ArrayList<>(); if(floor == 1){ diff --git a/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java index 75991c2..e7b35ac 100644 --- a/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java @@ -6,6 +6,7 @@ import com.core.exception.CoolException; import com.zy.asrs.entity.*; import com.zy.asrs.entity.param.EmptyPlateOutParam; +import com.zy.asrs.entity.param.LocDetlAdjustParam; import com.zy.asrs.entity.param.StockOutParam; import com.zy.asrs.service.*; import com.zy.common.model.LocDto; @@ -21,7 +22,9 @@ import org.springframework.transaction.annotation.Transactional; import java.util.Date; +import java.util.Iterator; import java.util.List; +import java.util.UUID; /** * Created by vincent on 2020/6/11 @@ -55,6 +58,8 @@ private OrderService orderService; @Autowired private OrderDetlService orderDetlService; + @Autowired + private AdjDetlService adjDetlService; /* @@ -296,6 +301,140 @@ }); } + @Transactional + public void adjustLocDetl(LocDetlAdjustParam param, Long userId) { + param.integrate(); + AgvLocMast locMast = agvLocMastService.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<AgvLocDetl> locDetls = agvLocDetlService.selectList(new EntityWrapper<AgvLocDetl>().eq("loc_no", param.getLocNo())); + + List<LocDetlAdjustParam.LocDetlAdjust> list = param.getList(); + + // 淇敼鏁伴噺 + Iterator<AgvLocDetl> iterator = locDetls.iterator(); + while (iterator.hasNext()) { + AgvLocDetl 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 (!agvLocDetlService.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); + + UUID uuid = UUID.randomUUID(); + adjDetl.setOrderNo(uuid.toString()); + adjDetl.setCsocode(locDetl.getThreeCode()); + adjDetl.setIsoseq(locDetl.getDeadTime()); + + adjDetlService.save(adjDetl, userId); + } + iterator.remove(); + iterator1.remove(); + } + } + } + + // 鍒犻櫎搴撳瓨 + for (AgvLocDetl locDetl : locDetls) { + // todo 鐩樼偣璁板綍 + if (!agvLocDetlService.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()); + AgvLocDetl locDetl = new AgvLocDetl(); + 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); + locDetl.setThreeCode(adjust.getThreeCode()); + locDetl.setDeadTime(adjust.getDeadTime()); + if (!agvLocDetlService.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); + + UUID uuid = UUID.randomUUID(); + adjDetl.setOrderNo(uuid.toString()); + adjDetl.setCsocode(locDetl.getThreeCode()); + adjDetl.setIsoseq(locDetl.getDeadTime()); + + adjDetlService.save(adjDetl, userId); + } + // 淇敼搴撲綅鐘舵�� + int count = agvLocDetlService.selectCount(new EntityWrapper<AgvLocDetl>().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 (!agvLocMastService.updateById(locMast)) { + throw new CoolException("鏇存柊搴撲綅鐘舵�佸け璐�"); + } + } + /* 鏇存柊鐩爣搴撲綅淇℃伅 */ diff --git a/src/main/java/com/zy/asrs/service/impl/LocDetlServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/LocDetlServiceImpl.java index 8ceecf8..a6f231a 100644 --- a/src/main/java/com/zy/asrs/service/impl/LocDetlServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/LocDetlServiceImpl.java @@ -125,6 +125,9 @@ LocDto locDto = new LocDto(locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getMaktx(), locDetl.getBatch(), orderNo, anfme); List<Integer> staNos = staDescService.queryOutStaNosByLocNo(locDetl.getLocNo(), ioType); locDto.setStaNos(staNos); + locDto.setCsocode(csocode); + locDto.setIsoseq(isoseq); + locDto.setContainerCode(locDetl.getSuppCode()); locDtoList.add(locDto); // 鍓╀綑寰呭嚭鏁伴噺閫掑噺 issued = issued - locDetl.getAnfme(); diff --git a/src/main/java/com/zy/asrs/service/impl/ManLocDetTemplServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/ManLocDetTemplServiceImpl.java new file mode 100644 index 0000000..e54e13d --- /dev/null +++ b/src/main/java/com/zy/asrs/service/impl/ManLocDetTemplServiceImpl.java @@ -0,0 +1,12 @@ +package com.zy.asrs.service.impl; + +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.zy.asrs.entity.ManLocDetlTemp; +import com.zy.asrs.mapper.ManLocDetlTempMapper; +import com.zy.asrs.service.ManLocDetlTempService; +import org.springframework.stereotype.Service; + +@Service("manLocDetlTempService") +public class ManLocDetTemplServiceImpl extends ServiceImpl<ManLocDetlTempMapper, ManLocDetlTemp> implements ManLocDetlTempService { + +} diff --git a/src/main/java/com/zy/asrs/service/impl/ManLocDetlServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/ManLocDetlServiceImpl.java index c9af0a1..01ada7a 100644 --- a/src/main/java/com/zy/asrs/service/impl/ManLocDetlServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/ManLocDetlServiceImpl.java @@ -1,8 +1,10 @@ package com.zy.asrs.service.impl; import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.mapper.Wrapper; import com.baomidou.mybatisplus.plugins.Page; import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.core.common.Cools; import com.core.exception.CoolException; import com.zy.asrs.entity.ManLocDetl; import com.zy.asrs.entity.Mat; @@ -15,15 +17,13 @@ import com.zy.asrs.service.NodeService; import com.zy.asrs.service.WaitPakinService; import com.zy.asrs.utils.SaasUtils; +import com.zy.common.model.LocDto; import com.zy.system.entity.User; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.Date; -import java.util.List; -import java.util.Map; -import java.util.Set; +import java.util.*; @Service("manLocDetlService") public class ManLocDetlServiceImpl extends ServiceImpl<ManLocDetlMapper, ManLocDetl> implements ManLocDetlService { @@ -200,4 +200,40 @@ return baseMapper.increase(anfme,locNo,matnr,batch,weight); } + public double queryStockAndSetLocDto(String matnr, String batch, String orderNo, List<LocDto> locDtoList, double issued, String csocode, String isoseq) { + Wrapper<ManLocDetl> wrapper = new EntityWrapper<ManLocDetl>().eq("matnr", matnr).orderBy("modi_time"); + wrapper.eq("status",1); + wapperSetCondition(wrapper,"batch",batch); + wapperSetCondition(wrapper,"csocode",csocode); + wapperSetCondition(wrapper,"isoseq",isoseq); + + List<ManLocDetl> manLocDetls = this.selectList(wrapper); + for (ManLocDetl manLocDetl : manLocDetls){ + if(issued > 0) { + double anfme = manLocDetl.getAnfme(); + anfme = anfme > issued ? issued : anfme; + LocDto locDto = new LocDto(manLocDetl.getLocNo(), manLocDetl.getMatnr(), manLocDetl.getMaktx(), manLocDetl.getBatch(), orderNo, anfme); + locDto.setCsocode(csocode); + locDto.setIsoseq(isoseq); + locDto.setContainerCode(manLocDetl.getContainerCode()); + List<String> stationList = new ArrayList<>(); + stationList.add("鏃犻渶绔欑偣"); + locDto.setAgvStaNos(stationList); + + locDtoList.add(locDto); + issued -= anfme; + } + } + + return issued; + } + + private void wapperSetCondition(Wrapper wrapper,String column, String condition){ + if(Cools.isEmpty(condition)){ + wrapper.isNull(column); + }else { + wrapper.eq(column,condition); + } + } + } diff --git a/src/main/java/com/zy/asrs/service/impl/ManPakOutServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/ManPakOutServiceImpl.java new file mode 100644 index 0000000..d0cfc70 --- /dev/null +++ b/src/main/java/com/zy/asrs/service/impl/ManPakOutServiceImpl.java @@ -0,0 +1,21 @@ +package com.zy.asrs.service.impl; + +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.zy.asrs.entity.ManPakOut; +import com.zy.asrs.mapper.ManPakOutMapper; +import com.zy.asrs.service.ManPakOutService; +import org.springframework.stereotype.Service; + +@Service("manPakOutService") +public class ManPakOutServiceImpl extends ServiceImpl<ManPakOutMapper, ManPakOut> implements ManPakOutService { + + + public void updateAllStatus(String orderNo, int status) { + this.baseMapper.updateAllStatus(orderNo,status); + } + + @Override + public ManPakOut selectByOrderWithName(String orderNo) { + return this.baseMapper.selectByOrderWithName(orderNo); + } +} diff --git a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java index fd8233c..bb12713 100644 --- a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java @@ -3,20 +3,20 @@ 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.baomidou.mybatisplus.mapper.Wrapper; +import com.core.common.*; 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.NodePakoutParam; 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.asrs.utils.SaasUtils; +import com.zy.asrs.utils.Utils; import com.zy.common.constant.MesConstant; import com.zy.common.entity.Parameter; import com.zy.common.model.DetlDto; @@ -70,6 +70,10 @@ private ManLocDetlService manLocDetlService; @Autowired private WaitPakinLogService waitPakinLogService; + @Autowired + private NodeService nodeService; + @Autowired + private ManPakOutService manPakOutService; @Override @Transactional @@ -446,14 +450,18 @@ //澧炲姞骞冲簱搴撳瓨 List<WaitPakin> waitPakinList = waitPakinService.selectList(new EntityWrapper<WaitPakin>().eq("zpallet", zpallet)); - waitPakinList.forEach(waitPakin -> { + if(Cools.isEmpty(waitPakinList)){ + throw new CoolException("璇ユ墭鐩樼爜鏈粍鎵�"); + } + + waitPakinList.forEach(waitPakin -> { //鏂欐兂鐮� String containerCode = waitPakin.getSuppCode(); //濡傛灉褰撳墠鏂欐兂鐮佸凡瀛樺湪锛屽垯淇敼璇ユ枡鎯崇殑鐗╂枡鏁伴噺 ManLocDetl manLocDetl = manLocDetlService.selectOne(new EntityWrapper<ManLocDetl>().eq("container_code", containerCode)); if(Cools.isEmpty(manLocDetl)){ - saveManlocDetl(manLocDetl,waitPakin,now,locNo); + saveManlocDetl(waitPakin,now,locNo); }else{ if(Cools.eq(manLocDetl.getMatnr(),waitPakin.getMatnr()) && Cools.eq(manLocDetl.getCsocode(),waitPakin.getThreeCode()) @@ -463,7 +471,7 @@ .eq("loc_no",manLocDetl.getLocNo()) .eq("container_code",manLocDetl.getContainerCode())); }else{ - saveManlocDetl(manLocDetl,waitPakin,now,locNo); + saveManlocDetl(waitPakin,now,locNo); } } //鐢熸垚骞冲簱鍏ュ嚭搴撴棩蹇� @@ -475,18 +483,130 @@ //鍒犻櫎鍏ュ簱閫氱煡妗� waitPakinService.delete(new EntityWrapper<WaitPakin>().eq("zpallet", zpallet)); + orderService.checkComplete(waitPakinList.get(0).getOrderNo()); + + } - private void saveManlocDetl(ManLocDetl manLocDetl, WaitPakin waitPakin, Date now, String locNo){ - manLocDetl = new ManLocDetl(); + @Transactional + public void nodePakout(NodePakoutParam param, User user) { + Node node = nodeService.selectOne(new EntityWrapper<Node>().eq("name", param.getLocNo())); + Order order = orderService.selectOne(new EntityWrapper<Order>().eq("order_no", param.getOrderNo())); + if (Cools.isEmpty(node, order)) { + throw new CoolException("鍙傛暟涓虹┖"); + } + //鏌ヨ褰撳墠鐗╂枡鐨勮鍗曡鎯� + Wrapper<OrderDetl> orderDetlWrapper = new EntityWrapper<OrderDetl>().eq("order_no", param.getOrderNo()).eq(false, "status", 1); + Utils.wapperSetCondition(orderDetlWrapper,"three_code",param.getCsocode()); + Utils.wapperSetCondition(orderDetlWrapper,"dead_time",param.getIsoseq()); + Utils.wapperSetCondition(orderDetlWrapper,"matnr",param.getMatnr()); + + //Utils.confirmOnlyMat(orderDetlWrapper,param.getMatnr(),param.getCsocode(),param.getIsoseq()); + OrderDetl orderDetl = orderDetlService.selectOne(orderDetlWrapper); + //鏌ヨ褰撳墠鎷h揣鍗曚俊鎭� + Wrapper<ManPakOut> manPakOutWrapper = new EntityWrapper<ManPakOut>().eq("wrk_no", param.getWrkNo()); + ManPakOut manPakOut = manPakOutService.selectOne(manPakOutWrapper); + if(Cools.isEmpty(manPakOut) || manPakOut.getStatus() == 1){ + throw new CoolException("褰撳墠鎷h揣鐮佸凡缁忓畬鎴愭嫞璐�"); + } + //鏌ヨ搴撳瓨淇℃伅 + Wrapper<ManLocDetl> manLocDetlWrapper = new EntityWrapper<ManLocDetl>().eq("loc_no", param.getLocNo()); + Utils.confirmOnlyMat(manLocDetlWrapper,param.getMatnr(),param.getCsocode(),param.getIsoseq()); + ManLocDetl manLocDetl = manLocDetlService.selectOne(manLocDetlWrapper); + + //鏍规嵁瀹為檯鍑哄簱鏁伴噺鎵e噺搴撳瓨 + if(Double.doubleToLongBits(param.getAnfme()) != Double.doubleToLongBits(manPakOut.getAnfme())){ + if(param.getAnfme() > manLocDetl.getAnfme() || (param.getAnfme() - manPakOut.getAnfme()) > (orderDetl.getAnfme() - orderDetl.getQty())){ + throw new CoolException("鍑哄簱鏁伴噺涓嶅緱澶т簬璁㈠崟鏁伴噺鎴栬�呭簱瀛樻暟閲�"); + } + //鏍规嵁瀹為檯鍑哄簱鏁伴噺鍥炲啓鎷h揣鍗� + manPakOut.setCount(param.getAnfme()); + if(manPakOut.getCount() < manPakOut.getAnfme()){ + manPakOut.setStatus(8); + } + //鏍规嵁瀹為檯鍑哄簱鏁伴噺鍥炲啓璁㈠崟璇︽儏 + orderDetl.setQty(orderDetl.getQty() - (param.getAnfme()-manPakOut.getAnfme())); + orderDetlService.update(orderDetl,orderDetlWrapper); + + }else { + manPakOut.setCount(param.getAnfme()); + manPakOut.setStatus(1); + } + + manPakOutService.update(manPakOut,manPakOutWrapper); + //妫�鏌ヨ璁㈠崟涓嬬殑鎷h揣鍗曟槸鍚﹀凡缁忓叏閮ㄥ嚭搴� + int status = checkManPakoutByOrder(param.getOrderNo()); + manPakOutService.updateAllStatus(param.getOrderNo(),status); + + + //淇敼搴撳瓨 + manLocDetl.setAnfme(manLocDetl.getAnfme()-manPakOut.getCount()); + if (manLocDetl.getAnfme() == 0 ){ + manLocDetlService.delete(manLocDetlWrapper); + }else{ + manLocDetl.setStatus(1); + manLocDetlService.update(manLocDetl,manLocDetlWrapper); + } + SaasUtils.insertLog(1,manLocDetl.getLocNo(),manLocDetl.getMatnr(), manLocDetl.getAnfme(),user.getUsername()); + manLocDetl.setStatus(1); + manLocDetlService.update(manLocDetl,manLocDetlWrapper); + + //妫�娴嬭鍗曟槸鍚﹀畬鎴� + orderService.checkComplete(param.getOrderNo()); + + + + } + + private void saveManlocDetl(WaitPakin waitPakin, Date now, String locNo){ + + Node node = nodeService.selectOne(new EntityWrapper<Node>() + .eq("name", locNo)); + + ManLocDetl manLocDetl = new ManLocDetl(); BeanUtils.copyProperties(waitPakin,manLocDetl); + manLocDetl.setNodeId(node.getId()); manLocDetl.setContainerCode(waitPakin.getSuppCode()); manLocDetl.setCsocode(waitPakin.getThreeCode()); manLocDetl.setIsoseq(waitPakin.getDeadTime()); manLocDetl.setCreateTime(now); manLocDetl.setModiTime(now); manLocDetl.setLocNo(locNo); + manLocDetl.setStatus(1); manLocDetlService.insert(manLocDetl); } + private int checkManPakoutByOrder(String orderNo){ + int status = 0; + List<ManPakOut> manPakOutList = manPakOutService.selectList(new EntityWrapper<ManPakOut>().eq("doc_num", orderNo)); + + for(int i=0; i<manPakOutList.size(); i++){ + if(i == 0){ + status = manPakOutList.get(i).getStatus(); + }else { + if(manPakOutList.get(i).getStatus() != status){ + status = 8; + } + } + } + + return status; + + + + } + + public static void main(String[] args) { + ManPakOut m = new ManPakOut(); + m.setAnfme(1.0); + NodePakoutParam n = new NodePakoutParam(); + n.setAnfme(1.0); + + double a = 1.0; + double b = 1.0; + System.out.println(m.getAnfme() == n.getAnfme()); + System.out.println(a == b); + System.out.println(Double.doubleToLongBits(m.getAnfme()) == Double.doubleToLongBits(n.getAnfme())); + } + } diff --git a/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java index cbb903c..9a03e7f 100644 --- a/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java @@ -800,13 +800,16 @@ //od.setAnfme(toString(odParam.get("iQuantity"))); //琛屽彿 //od.setBrand(odParam.get("irowno").toString()); - od.setBrand(toString(odParam.get("irowno"))); + //od.setBrand(toString(odParam.get("irowno"))); + od.setManu(toString(odParam.get("irowno"))); //閿�鍞鍗曞彿 //od.setColor(odParam.get("csocode").toString()); - od.setColor(toString(odParam.get("csocode"))); + //od.setColor(toString(odParam.get("csocode"))); + od.setThreeCode(toString(odParam.get("csocode"))); //閿�鍞鍗曡鍙� //od.setOrigin(odParam.get("isoseq").toString()); - od.setOrigin(toString(odParam.get("isoseq"))); + //od.setOrigin(toString(odParam.get("isoseq"))); + od.setDeadTime(toString(odParam.get("isoseq"))); od.setStatus(1); od.setQty(0.0D); diff --git a/src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java index 4c492ce..0f56ff6 100644 --- a/src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java @@ -51,6 +51,10 @@ private ErpService erpService; @Autowired private ApiLogService apiLogService; + @Autowired + private WaitPakinService waitPakinService; + @Autowired + private ManPakOutService manPakOutService; @Value("${u8.url}") private String url; @@ -96,9 +100,15 @@ } } // 濡傛灉 浣滀笟鏁伴噺绛変簬鍗曟嵁鎬绘暟閲� && 宸ヤ綔鏄庣粏妗d腑鏃犺鍗曟嵁鐨勬暟鎹� && AGV宸ヤ綔鏄庣粏妗d腑鏃犺鍗曟嵁鐨勬暟鎹� - if (complete - && wrkDetlService.selectCount(new EntityWrapper<WrkDetl>().like("order_no", orderNo)) < 1 - && agvWrkDetlService.selectCount(new EntityWrapper<AgvWrkDetl>().like("order_no",orderNo)) < 1) { + boolean wrkDeltExist = wrkDetlService.selectCount(new EntityWrapper<WrkDetl>().eq("order_no", orderNo)) < 1; + boolean agvWrkDetlExist = agvWrkDetlService.selectCount(new EntityWrapper<AgvWrkDetl>().eq("order_no",orderNo)) < 1; + boolean waitPakinExist = waitPakinService.selectCount(new EntityWrapper<WaitPakin>().eq("order_no",orderNo)) < 1; + + ManPakOut manPakOut = manPakOutService.selectByOrderWithName(orderNo); + + boolean manPakoutExist = Cools.isEmpty(manPakOut) || manPakOut.getPayment() == 1; + if (complete && wrkDeltExist && agvWrkDetlExist && waitPakinExist && manPakoutExist) { + // 鍑哄簱璁㈠崟閲嶆柊鏁寸悊鏄庣粏 // DocType docType = docTypeService.selectById(order.getDocType()); // if (null != docType && docType.getPakout() == 1) { @@ -123,7 +133,6 @@ // } // } // } - if (!this.updateSettle(order.getId(), 4L, null)) { throw new CoolException("淇敼璁㈠崟銆恛rderNo = " + order.getOrderNo() + "銆戠姸鎬佷负宸插畬鎴愬け璐�"); } diff --git a/src/main/java/com/zy/asrs/utils/Utils.java b/src/main/java/com/zy/asrs/utils/Utils.java index 536e36d..fb9d3a1 100644 --- a/src/main/java/com/zy/asrs/utils/Utils.java +++ b/src/main/java/com/zy/asrs/utils/Utils.java @@ -1,6 +1,7 @@ package com.zy.asrs.utils; import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.mapper.Wrapper; import com.core.common.Arith; import com.core.common.Cools; import com.zy.common.properties.SlaveProperties; @@ -8,7 +9,6 @@ import java.text.DecimalFormat; import java.util.ArrayList; -import java.util.Arrays; import java.util.Collections; import java.util.List; @@ -385,4 +385,18 @@ return null; } + public static void wapperSetCondition(Wrapper wrapper, String column, String condition){ + if(Cools.isEmpty(condition)){ + wrapper.isNull(column); + }else { + wrapper.eq(column,condition); + } + } + + public static void confirmOnlyMat(Wrapper wrapper, String matnr, String csocode, String isoseq){ + wapperSetCondition(wrapper,"matnr",matnr); + wapperSetCondition(wrapper,"csocode",csocode); + wapperSetCondition(wrapper,"isoseq",isoseq); + } + } diff --git a/src/main/java/com/zy/common/model/LocDto.java b/src/main/java/com/zy/common/model/LocDto.java index 7a341df..5159b73 100644 --- a/src/main/java/com/zy/common/model/LocDto.java +++ b/src/main/java/com/zy/common/model/LocDto.java @@ -41,7 +41,7 @@ //閿�鍞鍗曡鍙� private String isoseq; - //鏂欐兂鐮� + //鏂欑鐮� private String containerCode; public LocDto() { diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 264e07c..d84dd0c 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -10,8 +10,8 @@ enabled: false datasource: driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver - url: jdbc:sqlserver://192.168.4.15:1433;databasename=tzskasrs - #url: jdbc:sqlserver://localhost:1433;databasename=tzskasrs + #url: jdbc:sqlserver://192.168.4.15:1433;databasename=tzskasrs + url: jdbc:sqlserver://localhost:1433;databasename=tzskasrs username: sa password: sa@123 mvc: diff --git a/src/main/resources/mapper/ManLocDetlMapper.xml b/src/main/resources/mapper/ManLocDetlMapper.xml index 395c9db..76e1bff 100644 --- a/src/main/resources/mapper/ManLocDetlMapper.xml +++ b/src/main/resources/mapper/ManLocDetlMapper.xml @@ -34,6 +34,7 @@ <result column="payment" property="payment" /> <result column="real_anfme" property="realAnfme" /> <result column="order_no" property="orderNo" /> + <result column="container_code" property="containerCode" /> </resultMap> <sql id="locDetlCondition"> diff --git a/src/main/webapp/static/js/agvPakStore/stockAdjust.js b/src/main/webapp/static/js/agvPakStore/stockAdjust.js index 52d8db1..db7ed09 100644 --- a/src/main/webapp/static/js/agvPakStore/stockAdjust.js +++ b/src/main/webapp/static/js/agvPakStore/stockAdjust.js @@ -7,10 +7,16 @@ var cols = [ {fixed: 'left', field: 'count', title: '瀹為檯鏁伴噺', align: 'center', edit:'text', width: 120, style:'color: blue;font-weight: bold'} ,{field: 'anfme', align: 'center',title: '鏁伴噺'} - ,{field: 'batch', align: 'center',title: '搴忓垪鐮侊紙缂栬緫锛�', edit: true, style: 'font-weight:bold'} + ,{field: 'batch', align: 'center',title: '搴忓垪鐮�', edit: true, style: 'font-weight:bold'} + ,{field: 'threeCode', align: 'center',title: '閿�鍞鍗曞彿', edit: true, style: 'font-weight:bold'} + ,{field: 'deadTime', align: 'center',title: '閿�鍞鍗曡鍙�', edit: true, style: 'font-weight:bold'} + ,{field: 'suppCode', align: 'center',title: '鏂欑鐮�', edit: false, style: 'font-weight:bold'} ]; + arrRemove(detlCols, "field", "zpallet"); arrRemove(detlCols, "field", "anfme"); arrRemove(detlCols, "field", "batch"); + arrRemove(detlCols, "field", "threeCode"); + arrRemove(detlCols, "field", "deadTime"); cols.push.apply(cols, detlCols); cols.push({fixed: 'right', title:'鎿嶄綔', align: 'center', toolbar: '#operate', width:80}) return cols; @@ -87,7 +93,7 @@ } layer.confirm('纭畾璋冩暣'+currLocNo+'搴撲綅鐨勬槑缁嗗悧锛�', {shadeClose: true}, function(){ $.ajax({ - url: baseUrl+"/locDdetl/adjust/start", + url: baseUrl+"/agv/locDdetl/adjust/start", headers: {'token': localStorage.getItem('token')}, data: JSON.stringify({ locNo: currLocNo, @@ -141,7 +147,7 @@ }); function init(locNo) { - http.post(baseUrl + "/locDetl/list/auth", {locNo: locNo,limit: 1000}, function (res) { + http.post(baseUrl + "/agv/locDetl/list/auth", {locNo: locNo,limit: 1000}, function (res) { matCodeData = []; matCodeData = res.data.records; for (var i = 0; i<matCodeData.length; i++) { @@ -167,7 +173,7 @@ // 搴撲綅鎻愮ず妗� function locTips(retrieve, locNo) { if (retrieve) { - http.post(baseUrl+"/locMast/"+locNo+"/auth", null, function (res) { + http.post(baseUrl+"/agv/locMast/"+locNo+"/auth", null, function (res) { let data = res.data; if (data != null) { $(".retrieve").show(); diff --git a/src/main/webapp/static/js/manLocDetl/manLocDetl.js b/src/main/webapp/static/js/manLocDetl/manLocDetl.js index e1d3c38..3ebc57b 100644 --- a/src/main/webapp/static/js/manLocDetl/manLocDetl.js +++ b/src/main/webapp/static/js/manLocDetl/manLocDetl.js @@ -2,13 +2,14 @@ function getCol() { var cols = [ {field: 'locNo', align: 'center',title: '搴撲綅鍙�'} - ,{field: 'suppCode', align: 'center',title: '鏂欐兂鐮�', sort:true} + ,{field: 'containerCode', align: 'center',title: '鏂欐兂鐮�', sort:true} ,{field: 'matnr', align: 'center',title: '瀛樿揣缂栫爜', sort:true} ,{field: 'maktx', align: 'center',title: '瀛樿揣鍚嶇О', sort:true} ,{field: 'docNum', align: 'center',title: '鍗曟嵁缂栧彿', hide: true} ,{field: 'anfme', align: 'center',title: '鏁伴噺'} - ,{field: 'threeCode', align: 'center',title: '閿�鍞鍗曞彿'} - ,{field: 'dead_time', align: 'center',title: '閿�鍞鍗曡鍙�'} + ,{field: 'csocode', align: 'center',title: '閿�鍞鍗曞彿'} + ,{field: 'isoseq', align: 'center',title: '閿�鍞鍗曡鍙�'} + ,{field: 'zpallet', align: 'center',title: '鎵樼洏鐮�', hide: false} ,{field: 'specs', align: 'center',title: '瑙勬牸鍨嬪彿', hide: false} ,{field: 'model', align: 'center',title: '閫氱敤鍨嬪彿', hide: false} ,{field: 'brand', align: 'center',title: '瀛樿揣鍒嗙被缂栫爜', hide: true} @@ -20,39 +21,6 @@ ,{field: 'supp', align: 'center',title: '寤烘。浜�', hide: true} ,{field: 'dInvCreateDatetime', align: 'center',title: '寤烘。鏃ユ湡', hide: true} - // ,{field: 'specs', align: 'center',title: '瑙勬牸'} - // ,{field: 'weight', align: 'center',title: '搴撲綅鎬婚噸閲�', hide: false} - // - // ,{field: 'batch', align: 'center',title: '鎵瑰彿', width: 300, sort:true, hide: true} - // ,{field: 'anfme', align: 'center',title: '鏁伴噺'} - // ,{field: 'zpallet', 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: '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} - // ,{field: 'owner$', align: 'center',title: '璐т富', hide: false} - // ,{field: 'status$', align: 'center',title: '鏄庣粏閿�', hide: false} - // ,{field: 'payment$', align: 'center',title: '璐х墿褰㈡��', hide: false} ]; diff --git a/src/main/webapp/static/js/manLocDetl/manLocDetlTemp.js b/src/main/webapp/static/js/manLocDetl/manLocDetlTemp.js new file mode 100644 index 0000000..3d2f0bf --- /dev/null +++ b/src/main/webapp/static/js/manLocDetl/manLocDetlTemp.js @@ -0,0 +1,550 @@ +var pageCurr; +function getCol() { + var cols = [ + {field: 'locNo', align: 'center',title: '搴撲綅鍙�'} + //,{field: 'containerCode', align: 'center',title: '鏂欑鐮�', sort:true} + ,{field: 'matnr', align: 'center',title: '瀛樿揣缂栫爜', sort:true} + ,{field: 'maktx', align: 'center',title: '瀛樿揣鍚嶇О', sort:true} + //,{field: 'docNum', align: 'center',title: '鍗曟嵁缂栧彿', hide: true} + ,{field: 'anfme', align: 'center',title: '鏁伴噺'} + // ,{field: 'csocode', align: 'center',title: '閿�鍞鍗曞彿'} + // ,{field: 'isoseq', align: 'center',title: '閿�鍞鍗曡鍙�'} + //,{field: 'zpallet', align: 'center',title: '鎵樼洏鐮�', hide: false} + ,{field: 'batch', align: 'center',title: '杞︽', hide: false} + ,{field: 'specs', align: 'center',title: '瑙勬牸鍨嬪彿', hide: false} + ,{field: 'model', align: 'center',title: '閫氱敤鍨嬪彿', hide: false} + ,{field: 'brand', align: 'center',title: '瀛樿揣鍒嗙被缂栫爜', hide: true} + ,{field: 'color', align: 'center',title: '瀛樿揣鍒嗙被鍚嶇О', hide: true} + ,{field: 'unit', align: 'center',title: '璁¢噺鍗曚綅', hide: true} + ,{field: 'price', align: 'center',title: '杩涢」绋�', hide: true} + ,{field: 'units', align: 'center',title: '閿�椤圭◣', hide: true} + ,{field: 'dsDate', align: 'center',title: '鍚敤鏃ユ湡', hide: true} + ,{field: 'supp', align: 'center',title: '寤烘。浜�', hide: true} + ,{field: 'dInvCreateDatetime', align: 'center',title: '寤烘。鏃ユ湡', hide: true} + ]; + + // cols.push.apply(cols, detlCols); + cols.push({field: 'modiUser$', align: 'center',title: '淇敼浜哄憳',hide: true} + ,{field: 'modiTime$', align: 'center',title: '淇敼鏃堕棿'} + ) + 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: '#locDetl', + headers: {token: localStorage.getItem('token')}, + url: baseUrl+'/temp/manLocDetl/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) { + console.log(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(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+"/temp/manLocDetlTemp/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); + }); + + // 鏃堕棿閫夋嫨鍣� + 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/order/order.js b/src/main/webapp/static/js/order/order.js index 88dd47d..f61c83d 100644 --- a/src/main/webapp/static/js/order/order.js +++ b/src/main/webapp/static/js/order/order.js @@ -155,9 +155,9 @@ // {field: 'color', title: '棰滆壊'}, {field: 'specs', title: '瑙勬牸鍨嬪彿'}, {field: 'unit', title: '璁¢噺鍗曚綅'}, - {field: 'brand', title: '琛屽彿'}, - {field: 'color', title: '閿�鍞鍗曞彿'}, - {field: 'origin', title: '閿�鍞鍗曡鍙�'}, + {field: 'manu', title: '琛屽彿'}, + {field: 'threeCode', title: '閿�鍞鍗曞彿'}, + {field: 'deadTime', title: '閿�鍞鍗曡鍙�'}, {field: 'itemNum', title: '琛屽敮涓�鏍囪瘑'} ]], request: { @@ -252,11 +252,13 @@ cellMinWidth: 100, cols: [[ {type: 'numbers', title: '#'}, - {field: 'matnr', title: '鐗╂枡鍙�', width: 160}, - {field: 'maktx', title: '鐗╂枡鍚嶇О', width: 200}, + {field: 'matnr', title: '瀛樿揣缂栫爜', width: 160}, + {field: 'maktx', title: '瀛樿揣鍚嶇О', width: 200}, {field: 'batch', title: '搴忓垪鐮�', edit: true}, {field: 'specs', title: '瑙勬牸'}, {field: 'anfme', title: '鏁伴噺(淇敼)', style: 'color: blue;font-weight: bold', edit: true, minWidth: 110, width: 110}, + {field: 'threeCode', title: '閿�鍞鍗曞彿(淇敼)', style: 'color: blue;font-weight: bold', edit: true, minWidth: 110, width: 110}, + {field: 'deadTime', title: '閿�鍞鍗曡鍙�(淇敼)', style: 'color: blue;font-weight: bold', edit: true, minWidth: 110, width: 110}, // {field: 'inQty', title: '宸插叆搴撻噺', minWidth: 100, width: 100}, // {field: 'unit', title: '鍗曚綅', width: 80}, {field: 'memo', title: '澶囨敞' , edit: true}, diff --git a/src/main/webapp/static/js/order/out.js b/src/main/webapp/static/js/order/out.js index bfe89c1..ac322ac 100644 --- a/src/main/webapp/static/js/order/out.js +++ b/src/main/webapp/static/js/order/out.js @@ -39,6 +39,8 @@ // ,{field: 'anfme', align: 'center',title: '鏁伴噺'} // ,{field: 'qty', align: 'center',title: '浣滀笟鏁伴噺', style: 'font-weight: bold'} ,{field: 'enableQty', align: 'center',title: '寰呭嚭鏁伴噺', style: 'font-weight: bold'} + ,{field: 'color', align: 'center',title: '閿�鍞鍗曞彿'} + ,{field: 'origin', align: 'center',title: '閿�鍞鍗曡鍙�'} // ,{field: 'name', align: 'center',title: '鍚嶇О'} // ,{field: 'model', align: 'center',title: '閫氱敤鍨嬪彿'} ,{field: 'unit', align: 'center',title: '鍗曚綅', hide: true} diff --git a/src/main/webapp/static/js/pakStore/stockAdjust.js b/src/main/webapp/static/js/pakStore/stockAdjust.js index f6be988..d51a7b8 100644 --- a/src/main/webapp/static/js/pakStore/stockAdjust.js +++ b/src/main/webapp/static/js/pakStore/stockAdjust.js @@ -10,12 +10,13 @@ ,{field: 'batch', align: 'center',title: '搴忓垪鐮�', edit: true, style: 'font-weight:bold'} ,{field: 'threeCode', align: 'center',title: '閿�鍞鍗曞彿', edit: true, style: 'font-weight:bold'} ,{field: 'deadTime', align: 'center',title: '閿�鍞鍗曡鍙�', edit: true, style: 'font-weight:bold'} + ,{field: 'suppCode', align: 'center',title: '鏂欑鐮�', edit: false, style: 'font-weight:bold'} ]; arrRemove(detlCols, "field", "zpallet"); arrRemove(detlCols, "field", "anfme"); arrRemove(detlCols, "field", "batch"); arrRemove(detlCols, "field", "threeCode"); - arrRemove(detlCols, "field", "dead_time"); + arrRemove(detlCols, "field", "deadTime"); cols.push.apply(cols, detlCols); cols.push({fixed: 'right', title:'鎿嶄綔', align: 'center', toolbar: '#operate', width:80}) return cols; diff --git a/src/main/webapp/static/js/picking/picking.js b/src/main/webapp/static/js/picking/picking.js new file mode 100644 index 0000000..f3cb76c --- /dev/null +++ b/src/main/webapp/static/js/picking/picking.js @@ -0,0 +1,362 @@ +var pageCurr; +var printMatCodeNos = []; +var ordernoo = "123"; +layui.config({ + base: baseUrl + "/static/layui/lay/modules/" +}).use(['table','laydate', 'form', 'admin', 'layer'], function(){ + var table = layui.table; + var $ = layui.jquery; + var layer = layui.layer; + var layDate = layui.laydate; + var form = layui.form; + var admin = layui.admin; + + // 鏁版嵁娓叉煋 + tableIns = table.render({ + elem: '#saasLog', + headers: {token: localStorage.getItem('token')}, + url: baseUrl+'/ManPakOut/detailed/auth', + page: true, + limit: 15, + limits: [15, 30, 50, 100, 200, 500], + // toolbar: '#toolbar', + cellMinWidth: 50, + height: 'full-120', + cols: [[ + // {type: 'checkbox'} + {type: 'numbers'} + ,{field: 'wrkNo', align: 'center',title: 'id', hide:true} + ,{field: 'docNum',title: '鎷h揣鍗曞彿' } + ,{align: 'center', title: '浜岀淮鐮�', toolbar: '#operate', width: 200 , hide:true} + ,{align: 'center', title: '鏄庣粏', toolbar: '#tbLook', minWidth: 160, width: 160} + ,{field: 'payment$', align: 'center',title: '鐘舵��'} + // ,{field: 'owner$', align: 'center',title: '璐т富'} + // ,{field: 'payment$', align: 'center',title: '璐х墿褰㈡��'} + // ,{field: 'custName', align: 'center',title: '瀹㈡埛鍚嶇О', width: 160} + ,{field: 'createTime$', align: 'center',title: '鎿嶄綔鏃堕棿'} + ,{align: 'center', title: '鎿嶄綔', toolbar: '#operate'} + + ]], + request: { + pageName: 'curr', + pageSize: 'limit' + }, + parseData: function (res) { + console.log(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(); + + var index = -1; + $("[data-field='status$']").children().each(function () { + index++; + if ($(this).text() === '鏈嚭搴�') { + $('tr').eq(index).css("color", 'red'); + } + }); + } + }); + + // 鐩戝惉鎺掑簭浜嬩欢 + table.on('sort(saasLog)', function (obj) { + var searchData = {}; + $.each($('#search-box [name]').serializeArray(), function() { + searchData[this.name] = this.value; + }); + searchData['orderByField'] = obj.field; + searchData['orderByType'] = obj.type; + tableIns.reload({ + where: searchData, + page: {curr: 1} + }); + }); + // 鐩戝惉琛屽伐鍏蜂簨浠� + table.on('tool(saasLog)', function(obj){ + var data = obj.data; + switch (obj.event) { + case "btnPrint": + btnPrint(data.wrkNo, data.docNum, 4); + break; + case "wrkTrace": + btnPrint(data.wrkNo, data.docNum, 4); + break; + case "btnPrint2": + btnPrint2(data.wrkNo, data.docNum, 4); + break; + case "look": + var $a = $(obj.tr).find('a[lay-event="look"]'); + var offset = $a.offset(); + var top = offset.top; + var left = offset.left; + layer.open({ + type: 1, + title: false, + area: '1200px', + offset: [top + 'px', (left - 450 + $a.outerWidth()) + 'px'], + shade: .01, + shadeClose: true, + fixed: false, + content: '<table id="lookSSXMTable" lay-filter="lookSSXMTable"></table>', + success: function (layero) { + table.render({ + id:'lookSSXMTable', + elem: '#lookSSXMTable', + headers: {token: localStorage.getItem('token')}, + url: baseUrl+'/ManPakOut/list/auth', + where: { + doc_num: data.docNum, + uuid: data.uuid + }, + page: true, + cellMinWidth: 100, + cols: [[ + {type: 'numbers'} + ,{field: 'id', align: 'center',title: 'id', hide:true} + ,{field: 'docNum', align: 'center',title: '鎷h揣鍗曞彿'} + //,{field: 'uuid', align: 'center',title: 'uuid'} + ,{field: 'locNo', align: 'center',title: '搴撲綅'} + ,{field: 'matnr', align: 'center',title: '瀛樿揣缂栫爜'} + ,{field: 'maktx', align: 'center',title: '瀛樿揣鍚嶇О'} + ,{field: 'anfme', align: 'center',title: '鏁伴噺'} + ,{field: 'containerCode', align: 'center',title: '鏂欑鐮�'} + ,{field: 'csocode', align: 'center',title: '閿�鍞鍗曞彿'} + ,{field: 'isoseq', align: 'center',title: '閿�鍞鍗曡鍙�'} + //,{field: 'owner$', align: 'center',title: '璐т富'} + //,{field: 'payment$', align: 'center',title: '璐х墿褰㈡��'} + //,{field: 'owner', align: 'center',title: '璐т富', hide:true} + //,{field: 'payment', align: 'center',title: '璐х墿褰㈡��', hide:true} + ,{field: 'createTime$', align: 'center',title: '鎿嶄綔鏃堕棿'} + ,{field: 'count', align: 'center',title: '瀹屾垚鏁�'} + ,{field: 'status$', align: 'center',title: '鐘舵��'} + ,{field: 'memo', align: 'center',title: '澶囨敞'} + ,{field: 'createBy', align: 'center',title: '', hide:true} + ]], + 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) { + + $(layero).find('.layui-table-view').css('margin', '0'); + + var index = 1; + $("[data-field='status$']").children().each(function () { + index++; + if ($(this).text() === '鏈嚭搴�') { + $('tr').eq(index).css("color", 'red'); + } + }); + + + }, + size: '' + }); + } + }); + } + }); + + // 鎼滅储 + form.on('submit(search)', function (data) { + pageCurr = 1; + tableReload(false); + }); + + // 閲嶇疆 + form.on('submit(reset)', function (data) { + pageCurr = 1; + clearFormVal($('#search-box')); + tableReload(false); + }); + + // 鏃堕棿閫夋嫨鍣� + function layDateRender(data) { + setTimeout(function () { + layDate.render({ + elem: '#ioTime\\$', + type: 'datetime', + value: data!==undefined?data['ioTime\\$']:null + }); + + }, 300); + } + layDateRender(); + + // 鎵撳嵃 + function btnPrint(orderId, orderNo, settle) { + printMatCodeNos.push(orderNo) + var templateNo = 3; + $.ajax({ + url: baseUrl+"/pakOut/print/auth", + // url: baseUrl+"/pakOut/show", + headers: {'token': localStorage.getItem('token')}, + data: {param: printMatCodeNos}, + method: 'POST', + async: false, + success: function (res) { + if (res.code === 200){ + layer.closeAll(); + for (let i=0;i<res.data.length;i++){ + var templateDom = $("#templatePreview"+templateNo); + var className = templateDom.attr("class"); + if (className === 'template-barcode') { + res.data[i]["barcodeUrl"]=baseUrl+"/mac/code/auth?type=1¶m="+res.data[i].docNum; + } else { + res.data[i]["barcodeUrl"]=baseUrl+"/mac/code/auth?type=2¶m="+res.data[i].docNum; + } + } + + + var tpl = templateDom.html(); + var template = Handlebars.compile(tpl); + var html = template(res); + var box = $("#box"); + box.html(html); + box.show(); + var imgUrl; + // console.log(res.data[0]); + for (let i=0;i<res.data.length;i++){ + if (res.data[i].docNum === orderNo){ + imgUrl = res.data[i]["barcodeUrl"]; + } + + } + + var img = '<img className="template-code template-qrcode" src='+imgUrl+' height="80%">' + layer.open({ + type: 1, + title: "鎷h揣鍗�", + area: '150px', + content: img + }) + + // box.print({mediaPrint:true}); + // box.hide(); + + } else if (res.code === 403){ + top.location.href = baseUrl+"/"; + }else { + layer.msg(res.msg) + } + } + }) + } + + function btnPrint2(orderId, orderNo, settle) { + console.log(orderId); + console.log(orderNo); + console.log(settle); + printMatCodeNos.push(orderNo); + var templateNo = 4; + $.ajax({ + url: baseUrl + "/ManPakOut/print/auth", + headers: {'token': localStorage.getItem('token')}, + data: {param: printMatCodeNos}, + method: 'POST', + async: false, + success: function (res) { + if (res.code === 200) { + layer.closeAll(); + var json = res; + + json.docNum = orderNo; + console.log("json"+json); + let sum = 0; + + for (let i = 0; i < res.data.length; i++){ + sum += res.data[i].anfme; + console.log("sum:"+res.data.anfme); + + } + json.anfmeSum = sum; + var barcodeUrl = baseUrl + "/ManPakOut/code/auth?type=1¶m=" + res.data[0].docNum; + console.log("barcodeUrl:"+barcodeUrl); + json.barcodeUrl = barcodeUrl; + for (let i = 0; i < json.data.length; i++) { + var templateDom = $("#templatePreview" + templateNo); + var className = templateDom.attr("class"); + + if (className === 'template-barcode') { + json.data[i]["barcodeUrl"] = baseUrl + "/ManPakOut/code/auth?type=2¶m=" + (json.data[i].docNum+";" + +json.data[i].matnr+";" + +json.data[i].maktx+";" + +json.data[i].anfme+";" + +json.data[i].locNo+";" + +json.data[i].containerCode+";" + +json.data[i].csocode+";" + +json.data[i].isoseq+";" + +json.data[i].wrkNo+";"); + } else { + json.data[i]["barcodeUrl"] = baseUrl + "/ManPakOut/code/auth?type=2¶m=" + (json.data[i].docNum+";" + +json.data[i].matnr+";" + +json.data[i].maktx+";" + +json.data[i].anfme+";" + +json.data[i].locNo+";" + +json.data[i].containerCode+";" + +json.data[i].csocode+";" + +json.data[i].isoseq+";" + +json.data[i].wrkNo+";"); + } + } + var tpl = templateDom.html(); + var template = Handlebars.compile(tpl); + var html = template(json); + var box = $("#box"); + box.html(html); + box.show(); + box.print({mediaPrint: true}); + box.hide(); + } else if (json.code === 403) { + top.location.href = baseUrl + "/"; + } else { + layer.msg(json.msg) + } + } + }) + } + + + + + +}); + +// 鍏抽棴鍔ㄤ綔 +$(document).on('click','#data-detail-close', function () { + parent.layer.closeAll(); +}); + +function tableReload(child) { + var searchData = {}; + $.each($('#search-box [name]').serializeArray(), function() { + searchData[this.name] = this.value; + }); + tableIns.reload({ + where: searchData, + page: {curr: pageCurr} + }); +} diff --git a/src/main/webapp/static/js/picking/pickingOrder.js b/src/main/webapp/static/js/picking/pickingOrder.js new file mode 100644 index 0000000..df11673 --- /dev/null +++ b/src/main/webapp/static/js/picking/pickingOrder.js @@ -0,0 +1,497 @@ +var pageCurr; +layui.config({ + base: baseUrl + "/static/layui/lay/modules/" +}).use(['layer','table','laydate', 'form', 'admin', 'xmSelect'], function(){ + var table = layui.table; + var $ = layui.jquery; + var layer = layui.layer; + var layDate = layui.laydate; + var form = layui.form; + var admin = layui.admin; + var xmSelect = layui.xmSelect; + + // 鏁版嵁娓叉煋 + tableIns = table.render({ + elem: '#saasLog', + headers: {token: localStorage.getItem('token')}, + url: baseUrl+'/order/picking/head/page/auth', + page: true, + limit: 15, + limits: [15, 30, 50, 100, 200, 500], + // toolbar: '#toolbar', + cellMinWidth: 50, + height: 'full-120', + cols: [[ + {type: 'numbers'}, + {field: 'orderNo', title: '鍗曟嵁缂栧彿'}, + {field: 'docType$', align: 'center', title: '绫诲瀷', minWidth: 160, width: 160}, + {align: 'center', title: '鏄庣粏', toolbar: '#tbLook', minWidth: 160, width: 160}, + {field: 'createTime$', title: '鍒涘缓鏃堕棿', minWidth: 200, width: 200}, + {field: 'settle$', align: 'center', title: '鐘舵��', templet: '#settleTpl', minWidth: 160, width: 160}, + {field: 'memo', align: 'center',title: '澶囨敞', hide: true}, + {align: 'center', title: '鎿嶄綔', toolbar: '#operate', width: 380} + ]], + 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(saasLog)', function (obj) { + var searchData = {}; + $.each($('#search-box [name]').serializeArray(), function() { + searchData[this.name] = this.value; + }); + searchData['orderByField'] = obj.field; + searchData['orderByType'] = obj.type; + tableIns.reload({ + where: searchData, + page: {curr: 1} + }); + }); + // 鐩戝惉琛屽伐鍏蜂簨浠� + table.on('tool(saasLog)', function(obj){ + var data = obj.data; + switch (obj.event) { + case "edit": + console.log("淇敼"); + showEditModel(data); + break; + case "del": + console.log("鍒犻櫎"); + doDel(data.id); + break; + case "complete": + console.log("瀹岀粨"); + break; + case "btnPrint": + console.log("鎵撳嵃"); + break; + case "manPrint": + addPakOut(data.orderNo); + break; + case "look": + var $a = $(obj.tr).find('a[lay-event="look"]'); + var offset = $a.offset(); + var top = offset.top; + var left = offset.left; + layer.open({ + type: 1, + title: false, + area: '820px', + offset: [top + 'px', (left - 530 + $a.outerWidth()) + 'px'], + shade: .01, + shadeClose: true, + fixed: false, + content: '<table id="lookSSXMTable" lay-filter="lookSSXMTable"></table>', + success: function (layero) { + table.render({ + elem: '#lookSSXMTable', + headers: {token: localStorage.getItem('token')}, + url: baseUrl+'/orderDetl/list/auth', + where: { + order_id: data.id + }, + page: true, + cellMinWidth: 100, + cols: [[ + {type: 'numbers'}, + {field: 'matnr', title: '鍟嗗搧缂栫爜', width: 160}, + {field: 'maktx', title: '鍟嗗搧鍚嶇О', width: 160}, + {field: 'batch', title: '鎵瑰彿'}, + {field: 'anfme', title: '鏁伴噺'}, + // {field: 'workQty', title: '浣滀笟鏁伴噺'}, + {field: 'qty', title: '瀹屾垚鏁伴噺', style: 'font-weight: bold'}, + {field: 'specs', title: '瑙勬牸'} + ]], + 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 () { + $(layero).find('.layui-table-view').css('margin', '0'); + }, + size: '' + }); + } + }); + break; + } + }); + + // 鎼滅储 + form.on('submit(search)', function (data) { + pageCurr = 1; + tableReload(false); + }); + + // 閲嶇疆 + form.on('submit(reset)', function (data) { + pageCurr = 1; + clearFormVal($('#search-box')); + tableReload(false); + }); + + // 娣诲姞 + $("#orderAddBtn").click(function () { + showEditModel(); + }); + + // 鏃堕棿閫夋嫨鍣� + function layDateRender(data) { + setTimeout(function () { + layDate.render({ + elem: '#ioTime\\$', + type: 'datetime', + value: data!==undefined?data['ioTime\\$']:null + }); + + }, 300); + } + layDateRender(); + + // 鐢熸垚鎷h揣鍗� + function addPakOut(expTpe) { + $.ajax({ + url: baseUrl+"/ManPakOut/add/auth", + headers: {'token': localStorage.getItem('token')}, + data: JSON.stringify({ + docType: Number(20), + orderNo: expTpe, + }), + contentType:'application/json;charset=UTF-8', + method: 'POST', + success: function (res) { + if (res.code === 200){ + layer.msg("鐢熸垚鎷h揣鍗曪細ok"); + } else if (res.code === 403){ + layer.msg("鐢熸垚鎷h揣鍗曪細403"); + }else { + layer.msg("鐢熸垚鎷h揣鍗曪細???"); + } + + } + }) + } + // 鍒犻櫎鍗曟嵁 + function doDel(orderId) { + console.log(orderId) + layer.confirm('纭畾瑕佸垹闄ゅ悧锛�', { + shade: .1, + skin: 'layui-layer-admin' + }, function (i) { + layer.close(i); + layer.load(2); + $.ajax({ + url: baseUrl+"/order/delete/auth", + headers: {'token': localStorage.getItem('token')}, + data: { + orderId: orderId + }, + method: 'POST', + success: function (res) { + layer.closeAll('loading'); + if (res.code === 200){ + layer.msg(res.msg, {icon: 1}); + } else if (res.code === 403){ + top.location.href = baseUrl+"/"; + }else { + layer.msg(res.msg, {icon: 2}); + } + } + }) + }); + } + + + // 鏄剧ず琛ㄥ崟寮圭獥 + function showEditModel(expTpe) { + admin.open({ + type: 1, + title: (expTpe ? '淇敼' : '娣诲姞') + '鍗曟嵁', + content: $('#editDialog').html(), + area: '1300px', + success: function (layero, dIndex) { + $(layero).children('.layui-layer-content').css('overflow', 'visible'); + var isExpAdd = !expTpe; + // 鍥炴樉鏁版嵁 + form.val('editForm', expTpe); + if (expTpe) { + $('#orderNo').attr("disabled", "disabled"); + } + // 琛ㄥ崟鎻愪氦浜嬩欢 + form.on('submit(orderEditSubmit)', function (data) { + // 缁勮鏁版嵁 + if (xxDataList.length <= 0) { + layer.tips('璇锋坊鍔犲崟鎹槑缁�', '#matAddBtnComment', {tips: [1, '#ff4c4c']}); + return false; + } + let nList = admin.util.deepClone(xxDataList); + for (let xi = 0; xi < nList.length; xi++) { + if (nList[xi].anfme <= 0){ + layer.msg('鏄庣粏淇敼鏁伴噺涓嶅悎娉�', {icon: 2}); + return false; + } + if (nList[xi].anfme < nList[xi].workQty){ + layer.msg('鏁伴噺涓嶈兘灏忎簬宸蹭綔涓氭暟閲�', {icon: 2}); + return false; + } + } + layer.load(2); + $.ajax({ + url: baseUrl+"/order/form/" + (isExpAdd?"add":"modify") + "/auth", + headers: {'token': localStorage.getItem('token')}, + data: JSON.stringify({ + orderId: Number(data.field.id), + docType: Number(20), + orderNo: data.field.orderNo, + orderDetlList: nList + }), + contentType:'application/json;charset=UTF-8', + method: 'POST', + success: function (res) { + layer.closeAll('loading'); + if (res.code === 200){ + layer.close(dIndex); + $(".layui-laypage-btn")[0].click(); + layer.msg(res.msg, {icon: 1}); + } else if (res.code === 403){ + top.location.href = baseUrl+"/"; + }else { + layer.msg(res.msg, {icon: 2}); + } + } + }) + return false; + }); + // 鏄庣粏琛ㄦ牸 + var xxDataList = []; + var tbOptions = { + elem: '#formSSXMTable', + headers: {token: localStorage.getItem('token')}, + data: xxDataList, + page: true, + height: '350px;', + cellMinWidth: 100, + cols: [[ + {type: 'numbers', title: '#'}, + {field: 'matnr', title: '鍟嗗搧缂栫爜', width: 160}, + {field: 'maktx', title: '鍟嗗搧鍚嶇О', width: 200}, + {field: 'batch', title: '鎵瑰彿', edit: true}, + {field: 'specs', title: '瑙勬牸'}, + {field: 'anfme', title: '鏁伴噺(淇敼)', style: 'color: blue;font-weight: bold', edit: true, minWidth: 110, width: 110}, + {field: 'workQty', title: '浣滀笟鏁伴噺', minWidth: 100, width: 100}, + {field: 'owner$', title: '璐т富', minWidth: 100, width: 100}, + {field: 'payment$', title: '璐х墿褰㈡��', minWidth: 100, width: 100}, + // {field: 'unit', title: '鍗曚綅', width: 80}, + {field: 'memo', title: '澶囨敞' , edit: true}, + {align: 'center', title: '鎿嶄綔', toolbar: '#formSSXMTableBar', minWidth: 80, width: 80, fixed: 'right'} + ]], + done: function (res) { + $(layero).find('.layui-table-view').css('margin', '0'); + }, + size: '' + }; + if (!isExpAdd) { + $.ajax({ + url: baseUrl+"/order/detl/all/auth?orderId=" + expTpe.id, + headers: {'token': localStorage.getItem('token')}, + method: 'GET', + async: false, + success: function (res) { + if (res.code === 200){ + xxDataList = res.data; + tbOptions.data = xxDataList; + } else if (res.code === 403){ + top.location.href = baseUrl+"/"; + }else { + layer.msg(res.msg, {icon: 2}) + } + } + }) + } + var insTbSSXM = table.render(tbOptions); + // 宸ュ叿鏉$偣鍑讳簨浠� + table.on('tool(formSSXMTable)', function (obj) { + var data = obj.data; + var layEvent = obj.event; + if (layEvent === 'edit') { + showEditModel2(data); + } else if (layEvent === 'del') { + if(data.workQty > 0){ + layer.msg("宸插瓨鍦ㄤ綔涓氭暟閲忥紝涓嶈兘鍒犻櫎", {icon: 2}); + return; + } + layer.confirm('纭畾瑕佸垹闄ゅ悧锛�', { + shade: .1, + skin: 'layui-layer-admin' + }, function (i) { + layer.close(i); + for (var j = 0; j < xxDataList.length; j++) { + if (xxDataList[j].matnr === data.matnr && xxDataList[j].batch === data.batch) { + xxDataList.splice(j, 1); + break; + } + } + insTbSSXM.reload({data: xxDataList, page: {curr: 1}}); + }); + } + }); + // 鏄庣粏鏁版嵁淇敼 + table.on('edit(formSSXMTable)', function (obj) { + let index = obj.tr.attr("data-index"); + let data = xxDataList[index]; + if (obj.field === 'anfme'){ + let vle = Number(obj.value); + if (isNaN(vle)) { + layer.msg("璇疯緭鍏ユ暟瀛�", {icon: 2}); + return false; + } else { + if (vle <= 0) { + layer.msg("鏁伴噺蹇呴』澶т簬闆�", {icon: 2}); + // data[obj.field] = 0; + // insTbSSXM.reload({data: xxDataList}); + return false; + } + if(obj.value < data.workQty){ + layer.msg("杈撳叆鏁伴噺涓嶈兘灏忎簬浣滀笟涓暟閲�", {icon: 2}); + // data[obj.field] = 0; + // insTbSSXM.reload({data: xxDataList}); + return false; + } + } + } + data[obj.field] = obj.value; + insTbSSXM.reload({data: xxDataList}); + }); + + $('#matAddBtnComment').click(function () { + showEditModel2(); + }); + + // 鏄剧ず娣诲姞鏄庣粏琛ㄥ崟寮圭獥 + function showEditModel2(exp) { + admin.open({ + type: 1, + offset: '150px', + area: '680px', + title: (exp ? '淇敼' : '娣诲姞') + '鏄庣粏', + content: $('#matEditDialog').html(), + success: function (layero, dIndex) { + // 鍥炴樉鏁版嵁 + form.val('matEditForm', exp); + // 琛ㄥ崟鎻愪氦浜嬩欢 + form.on('submit(matEditSubmit)', function (data) { + let selectList = matXmSelect.getValue(); + for (let i = 0; i<selectList.length; i++) { + let item = selectList[i]; + // 鏌ヨ鐗╂枡璇︽儏 + $.ajax({ + url: baseUrl+"/mat/covert/"+item.value+"/auth", + headers: {'token': localStorage.getItem('token')}, + method: 'GET', + async: false, + success: function (res) { + if (res.code === 200){ + xxDataList.push(res.data); + insTbSSXM.reload({data: xxDataList, page: {curr: 1}}); + } else if (res.code === 403){ + top.location.href = baseUrl+"/"; + }else { + layer.msg(res.msg, {icon: 2}) + } + } + }) + } + layer.close(dIndex); + return false; + }); + // 娓叉煋鐗╂枡閫夋嫨 + var matXmSelect = xmSelect.render({ + el: '#mat', + style: { + width: '340px', + }, + autoRow: true, + toolbar: { show: true }, + filterable: true, + remoteSearch: true, + remoteMethod: function(val, cb, show){ + $.ajax({ + url: baseUrl+"/mat/all/get/kv", + headers: {'token': localStorage.getItem('token')}, + data: { + condition: val + }, + method: 'POST', + success: function (res) { + if (res.code === 200){ + cb(res.data) + } else { + cb([]); + layer.msg(res.msg, {icon: 2}); + } + } + }); + } + }) + // 寮圭獥涓嶅嚭鐜版粴鍔ㄦ潯 + $(layero).children('.layui-layer-content').css('overflow', 'visible'); + layui.form.render('select'); + } + }); + } + + } + }); + } + +}); + +// 鍏抽棴鍔ㄤ綔 +$(document).on('click','#data-detail-close', function () { + parent.layer.closeAll(); +}); + +function tableReload(child) { + var searchData = {}; + $.each($('#search-box [name]').serializeArray(), function() { + searchData[this.name] = this.value; + }); + tableIns.reload({ + where: searchData, + page: {curr: pageCurr} + }); +} + + diff --git a/src/main/webapp/views/agvPakStore/pakStore.html b/src/main/webapp/views/agvPakStore/pakStore.html index 820bbee..87bb1d1 100644 --- a/src/main/webapp/views/agvPakStore/pakStore.html +++ b/src/main/webapp/views/agvPakStore/pakStore.html @@ -121,7 +121,7 @@ <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/handlebars/handlebars-v4.5.3.js"></script> -<script type="text/javascript" src="../../static/js/pakStore/pakStore.js" charset="utf-8"></script> +<script type="text/javascript" src="../../static/js/agvPakStore/pakStore.js" charset="utf-8"></script> <script type="text/template" id="putSiteSelectTemplate"> {{#each data}} diff --git a/src/main/webapp/views/agvPakStore/stockAdjust.html b/src/main/webapp/views/agvPakStore/stockAdjust.html index bd758e9..a955381 100644 --- a/src/main/webapp/views/agvPakStore/stockAdjust.html +++ b/src/main/webapp/views/agvPakStore/stockAdjust.html @@ -126,7 +126,7 @@ <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/handlebars/handlebars-v4.5.3.js"></script> -<script type="text/javascript" src="../../static/js/pakStore/stockAdjust.js" charset="utf-8"></script> +<script type="text/javascript" src="../../static/js/agvPakStore/stockAdjust.js" charset="utf-8"></script> </body> </html> diff --git a/src/main/webapp/views/manLocDetl/manLocDetl.html b/src/main/webapp/views/manLocDetl/manLocDetl.html index 60039c9..7da6e76 100644 --- a/src/main/webapp/views/manLocDetl/manLocDetl.html +++ b/src/main/webapp/views/manLocDetl/manLocDetl.html @@ -40,73 +40,48 @@ </head> <body> -<div class="layui-fluid"> - <!-- 宸� --> - <div class="layui-row layui-col-space15"> - <div class="layui-col-md3"> - <div class="layui-card"> - <div class="layui-card-body" style="padding: 10px;"> - <!-- 鏍戝伐鍏锋爮 --> - <div class="layui-form toolbar" id="organizationTreeBar"> - <div class="layui-inline" style="max-width: 200px;"> - <input id="condition" onkeyup="findData(this)" type="text" class="layui-input" placeholder="璇疯緭鍏ュ叧閿瓧" autocomplete="off"> - </div> - <div class="layui-inline"> - <button class="layui-btn icon-btn layui-btn-sm" id="treeReset" style="padding: 0 10px;"> - <i class="layui-icon layui-icon-close"></i> - </button> - </div> +<!-- 鍙� --> + <div class="layui-card"> + <div class="layui-card-body" style="padding: 10px;"> + <!-- 琛ㄦ牸宸ュ叿鏍�2 --> + <div id="search-box" class="layui-form toolbar" style="padding-top: 5px"> + <div class="layui-inline"> + <label class="layui-form-label" style="padding: 8px 15px 8px 15px">璐т綅:</label> + <div class="layui-input-inline"> + <input name="loc_no" style="width: 120px" class="layui-input" placeholder="杈撳叆璐т綅"/> </div> - <!-- 鏍� --> - <div class="layui-form toolbar" id="organizationTree"></div> + </div> + <div class="layui-inline"> + <label class="layui-form-label" style="padding: 8px 15px 8px 15px">鍟嗗搧缂栧彿:</label> + <div class="layui-input-inline"> + <input name="matnr" style="width: 120px" class="layui-input" placeholder="杈撳叆鍟嗗搧缂栧彿"/> + </div> + </div> + <div class="layui-inline"> + <label class="layui-form-label" style="padding: 8px 15px 8px 15px">鍟嗗搧鍚嶇О:</label> + <div class="layui-input-inline"> + <input name="maktx" style="width: 120px" class="layui-input" placeholder="杈撳叆鍟嗗搧鍚嶇О"/> + </div> + </div> + <div class="layui-inline"> + <label class="layui-form-label" style="padding: 8px 15px 8px 15px">鎵樼洏鐮�:</label> + <div class="layui-input-inline"> + <input name="zpallet" style="width: 120px" class="layui-input" placeholder="杈撳叆鎵樼洏鐮�"/> + </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> - <!-- 鍙� --> - <div class="layui-col-md9"> - <div class="layui-card"> - <div class="layui-card-body" style="padding: 10px;"> - <!-- 琛ㄦ牸宸ュ叿鏍�2 --> - <div id="search-box" class="layui-form toolbar" style="padding-top: 5px"> - <div class="layui-inline"> - <label class="layui-form-label" style="padding: 8px 15px 8px 15px">璐т綅:</label> - <div class="layui-input-inline"> - <input name="loc_no" style="width: 120px" class="layui-input" placeholder="杈撳叆璐т綅"/> - </div> - </div> - <div class="layui-inline"> - <label class="layui-form-label" style="padding: 8px 15px 8px 15px">鍟嗗搧缂栧彿:</label> - <div class="layui-input-inline"> - <input name="matnr" style="width: 120px" class="layui-input" placeholder="杈撳叆鍟嗗搧缂栧彿"/> - </div> - </div> - <div class="layui-inline"> - <label class="layui-form-label" style="padding: 8px 15px 8px 15px">鍟嗗搧鍚嶇О:</label> - <div class="layui-input-inline"> - <input name="maktx" style="width: 120px" class="layui-input" placeholder="杈撳叆鍟嗗搧鍚嶇О"/> - </div> - </div> - <div class="layui-inline"> - <label class="layui-form-label" style="padding: 8px 15px 8px 15px">鎵樼洏鐮�:</label> - <div class="layui-input-inline"> - <input name="zpallet" style="width: 120px" class="layui-input" placeholder="杈撳叆鎵樼洏鐮�"/> - </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> - <table class="layui-hide" id="locDetl" lay-filter="locDetl"></table> - </div> - </div> + <table class="layui-hide" id="locDetl" lay-filter="locDetl"></table> </div> </div> -</div> + <script type="text/html" id="toolbar"> <div class="layui-btn-container"> diff --git a/src/main/webapp/views/manLocDetl/manLocDetlTemp.html b/src/main/webapp/views/manLocDetl/manLocDetlTemp.html new file mode 100644 index 0000000..894fe53 --- /dev/null +++ b/src/main/webapp/views/manLocDetl/manLocDetlTemp.html @@ -0,0 +1,111 @@ +<!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"> + <link rel="stylesheet" href="../../static/css/tree.css" media="all"> + <style> + body { + color: #595959; + background-color: #f5f7f9; + } + .layui-fluid { + padding: 15px; + } + .layui-form.layui-border-box.layui-table-view { + /*margin: 15px 0 35px 0;*/ + width: 100%; + border-width: 1px; + } + .layui-form.layui-border-box.layui-table-view { + height: calc(100vh - 160px); + } + .layui-form.layui-border-box.layui-table-view { + margin: 0; + } + #search-box { + padding: 30px 30px 10px 0px; + margin-left: 0px; + } + .layui-form.layui-border-box.layui-table-view { + height: 100%; + } + </style> +</head> +<body> + +<!-- 鍙� --> +<div class="layui-card"> + <div class="layui-card-body" style="padding: 10px;"> + <!-- 琛ㄦ牸宸ュ叿鏍�2 --> + <div id="search-box" class="layui-form toolbar" style="padding-top: 5px"> + <div class="layui-inline"> + <label class="layui-form-label" style="padding: 8px 15px 8px 15px">瀛樿揣缂栫爜:</label> + <div class="layui-input-inline"> + <input name="matnr" style="width: 120px" class="layui-input" placeholder="杈撳叆瀛樿揣缂栫爜"/> + </div> + </div> + <div class="layui-inline"> + <label class="layui-form-label" style="padding: 8px 15px 8px 15px">瀛樿揣鍚嶇О:</label> + <div class="layui-input-inline"> + <input name="maktx" style="width: 120px" class="layui-input" placeholder="杈撳叆瀛樿揣鍚嶇О"/> + </div> + </div> + <div class="layui-inline"> + <label class="layui-form-label" style="padding: 8px 15px 8px 15px">杞︽:</label> + <div class="layui-input-inline"> + <input name="batch" style="width: 120px" class="layui-input" placeholder="杈撳叆杞︽鍙�"/> + </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 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> + <table class="layui-hide" id="locDetl" lay-filter="locDetl"></table> + </div> +</div> + + +<script type="text/html" id="toolbar"> + <div class="layui-btn-container"> + <!-- <button class="layui-btn layui-btn-sm" id="btn-add" lay-event="addData">鏂板</button>--> + <!--<button class="layui-btn layui-btn-sm layui-btn-danger" id="btn-delete" lay-event="deleteData">鍒犻櫎</button>--> + <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData" style="float: right;margin-right: -10px">瀵煎嚭</button> + </div> +</script> +<script type="text/html" id="locNoTpl"> + <span name="locNo" class="layui-badge layui-badge-gray">{{d.locNo}}</span> +</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/manLocDetl/manLocDetlTemp.js" charset="utf-8"></script> +<!--<script type="text/javascript" src="../../static/js/tagTree.js" charset="utf-8"></script>--> +<script type="text/javascript" src="../../static/js/nodeTree.js" charset="utf-8"></script> + +</body> +</html> + diff --git a/src/main/webapp/views/mat/mat.html b/src/main/webapp/views/mat/mat.html index 7103755..f5fba90 100644 --- a/src/main/webapp/views/mat/mat.html +++ b/src/main/webapp/views/mat/mat.html @@ -192,9 +192,9 @@ </div> <div class="layui-form-item"> - <label class="layui-form-label layui-form-required">鍟嗗搧鍚嶇О</label> + <label class="layui-form-label layui-form-required">瀛樿揣鍚嶇О</label> <div class="layui-input-block"> - <input name="maktx" placeholder="璇疯緭鍏ュ晢鍝佸悕绉�" class="layui-input" lay-vertype="tips" lay-verify="required" required=""> + <input name="maktx" placeholder="璇疯緭鍏ュ瓨璐у悕绉�" class="layui-input" lay-vertype="tips" lay-verify="required" required=""> </div> </div> <div class="layui-form-item"> @@ -207,6 +207,24 @@ <label class="layui-form-label">搴撻緞涓婇檺(澶�)</label> <div class="layui-input-block"> <input name="storeMaxDate" placeholder="搴撻緞涓婇檺(澶�)" type="number" class="layui-input"> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label">瀛樿揣鍒嗙被缂栫爜</label> + <div class="layui-input-block"> + <input name="brand" placeholder="璇疯緭鍏ュ瓨璐у垎绫荤紪鐮�" class="layui-input"> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label">璁¢噺鍗曚綅</label> + <div class="layui-input-block"> + <input name="unit" placeholder="璇疯緭鍏ヨ閲忓崟浣�" class="layui-input"> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label">杩涢」绋�</label> + <div class="layui-input-block"> + <input name="price" placeholder="璇疯緭鍏ヨ繘椤圭◣" class="layui-input"> </div> </div> <div class="layui-form-item"> @@ -223,16 +241,16 @@ <div class="layui-col-md6"> <div class="layui-form-item"> - <label class="layui-form-label layui-form-required">鍟嗗搧缂栧彿</label> + <label class="layui-form-label layui-form-required">瀛樿揣缂栫爜</label> <div class="layui-input-block"> - <input id="matnr" name="matnr" placeholder="璇疯緭鍏ュ晢鍝佺紪鍙�" class="layui-input" lay-vertype="tips" lay-verify="required" required=""> + <input id="matnr" name="matnr" placeholder="璇疯緭鍏ュ瓨璐х紪鐮�" class="layui-input" lay-vertype="tips" lay-verify="required" required=""> </div> </div> <div class="layui-form-item"> - <label class="layui-form-label">瑙勬牸</label> + <label class="layui-form-label">瑙勬牸鍨嬪彿</label> <div class="layui-input-block"> - <input name="specs" placeholder="璇疯緭鍏ヨ鏍�" class="layui-input"> + <input name="specs" placeholder="璇疯緭鍏ヨ鏍煎瀷鍙�" class="layui-input"> </div> </div> @@ -242,7 +260,32 @@ <input name="storeMin" placeholder="搴撳瓨涓嬮檺" type="number" class="layui-input"> </div> </div> + <div class="layui-form-item"> + <label class="layui-form-label">閫氱敤鍨嬪彿</label> + <div class="layui-input-block"> + <input name="model" placeholder="璇疯緭鍏ュ娉�" class="layui-input"> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label">瀛樿揣鍒嗙被鍚嶇О</label> + <div class="layui-input-block"> + <input name="color" placeholder="璇疯緭鍏ュ娉�" class="layui-input"> + </div> + </div> + + <div class="layui-form-item"> + <label class="layui-form-label">閿�椤圭◣</label> + <div class="layui-input-block"> + <input name="units" placeholder="璇疯緭鍏ラ攢椤圭◣" class="layui-input"> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label">寤烘。浜�</label> + <div class="layui-input-block"> + <input name="supp" placeholder="璇疯緭鍏ュ缓妗d汉" class="layui-input"> + </div> + </div> <div class="layui-form-item"> <label class="layui-form-label">澶囨敞</label> diff --git a/src/main/webapp/views/picking/picking.html b/src/main/webapp/views/picking/picking.html new file mode 100644 index 0000000..73450c5 --- /dev/null +++ b/src/main/webapp/views/picking/picking.html @@ -0,0 +1,228 @@ +<!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"> + <style> + .contain td { + border: 1px solid #000; + /*font-family: 榛戜綋;*/ + /*font-weight: bold;*/ + /*color: #000000;*/ + } + </style> +</head> +<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script> +<script type="text/javascript" src="../../static/js/handlebars/handlebars-v4.5.3.js"></script> +<script type="text/javascript" src="../../static/js/jquery/jQuery.print.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/picking/picking.js" charset="utf-8"></script> +<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"> + <label class="layui-form-label">鎷h揣鍗曞彿:</label> + <div class="layui-input-inline"> + <input class="layui-input" type="text" name="doc_num" placeholder="鎷h揣鍗曞彿" 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="saasLog" lay-filter="saasLog"></table> + </div> + </div> +</div> + + +</body> +<!-- 琛ㄦ牸鎿嶄綔鍒� --> +<script type="text/html" id="tbLook"> + <span class="layui-text"> + <a href="javascript:;" lay-event="look"> + <i class="layui-icon" style="font-size: 12px;"></i> 鏌ョ湅鍗曟嵁鏄庣粏 + </a> + </span> +</script> +<!-- 琛ㄦ牸鎿嶄綔鍒� --> +<script type="text/html" id="operate"> + {{# if (d.settle == 0 || d.settle == 1) { }} + <a class="layui-btn layui-btn-primary layui-btn-xs btn-edit" lay-event="edit">淇敼</a> + <a class="layui-btn layui-btn-danger layui-btn-xs btn-delete" lay-event="del">鍒犻櫎</a> + {{# } }} + {{# if ((d.settle == 0 || d.settle == 1) && (d.docType == 21 || d.docType == 11 || d.docType == 12)) { }} + {{# } }} + {{# if (d.settle == 2) { }} + <a class="layui-btn layui-btn-primary layui-border-blue layui-btn-xs btn-complete" lay-event="complete">瀹岀粨</a> + {{# } }} + <a class="layui-btn layui-btn-primary layui-border-blue layui-btn-xs btn-complete" lay-event="btnPrint2">鎵撳嵃</a> + <!-- <a class="layui-btn layui-btn-primary layui-btn-xs btn-edit" lay-event="btnPrint"><img src="../../static/image/nav/fn_3.png" alt="浜岀淮鐮�"></a> +--> +</script> + +<script type="text/html" id="orderNoTpl"> + {{d.docNum}} +<!-- {{# if(d.settle > 1 && d.settle !== 3){ }}--> + +<!-- {{# } }}--> + <i class="layui-icon layui-icon-about wrk-trace" lay-tips="鏌ョ湅浜岀淮鐮�" lay-direction="2" lay-offset="-10px,0px" lay-event="wrkTrace"></i> +</script> +<!-- 鎵撳嵃鎿嶄綔寮圭獥 --> +<div id="printDataDiv" style="display: none;padding: 20px"> + <div class="layui-form" style="text-align: center"> + <hr> + <!--鍗曢�夋--> + <div class="layui-form-item" style="display: inline-block; margin-bottom: 10px"> + <input type="radio" name="selectTemplate" value="3" title="妯℃澘涓�" lay-filter="selectTemplateRadio" checked=""> + </div> + <fieldset class="layui-elem-field site-demo-button" style="margin-top: 30px;text-align: left;"> + <legend>鎵撳嵃棰勮</legend> + <div id="template-container" style="margin: 20px;text-align: center"> + <!-- 棰勮鍥� 3 --> + <div id="template-preview-3" class="template-preview" style="display: inline-block"> + <table class="contain" width="280" style="overflow: hidden;font-size: xx-small;table-layout: fixed;"> + </table> + </div> + </div> + </fieldset> + </div> +</div> +<div id="box" style="display: block"></div> + +<script type="text/template" id="docTypeTpl"> + <option value="">閫夋嫨绫诲瀷</option> + {{#each records}} + <option value="{{docId}}">{{docName}}</option> + {{/each}} +</script> +<!-- 鍒濆鍖栨墦鍗版ā鏉跨殑鏉″舰鐮� --> +<script type="text/javascript"> + $('.template-qrcode').attr("src", baseUrl+"/ManPakOut/code/auth?type=2¶m=123"); +</script> +<!-- 妯℃澘寮曟搸 --> +<!-- 妯℃澘3 --> +<script type="text/template" id="templatePreview3" class="template-qrcode"> + {{#each data}} + <table class="contain" width="280" style="overflow: hidden;font-size: xx-small;table-layout: fixed;"> + <thead></thead> + <tbody> + <img class="template-code template-qrcode" src="{{this.barcodeUrl}}" height="80%"> +<!-- <img class="template-code template-qrcode" src="{{res.data}}" height="80%">--> + </tbody> + </table> + {{/each}} +</script> + +<div id="qrcode" style="display: none;padding: 20px"> + {{#each result}} + <table class="contain" width="280" style="overflow: hidden;font-size: xx-small;table-layout: fixed;"> + <thead></thead> + <tbody> + <img class="template-code template-qrcode" src="{{this.barcodeUrl}}" height="80%"> + <!-- <img class="template-code template-qrcode" src="{{res.data}}" height="80%">--> + </tbody> + </table> + {{/each}} +</div> + + +<!-- 妯℃澘寮曟搸 --> +<!-- 妯℃澘4 --> +<script type="text/template" id="templatePreview4" class="template-qrcode"> + + <div style="width: 100%;border-bottom: #0C0C0C solid 2px;margin-bottom: 20px;"> + <div style="height: 60px;text-align: center;line-height: 60px;font-size: 30px;">鎷h揣鍗�</div> + <div style="height: 90px;text-align: center;line-height: 90px;"> + <img class="template-code template-qrcode" src="{{barcodeUrl}}" width="300"> + </div> + <div style="height: 50px;text-align: center;font-size: 25px;">{{docNum}}</div> + <div style="height: 40px;text-align: left;line-height: 40px;font-size: 20px;">鍑哄簱鍗曞彿锛歿{docNum}}</div> + <div style="height: 40px;text-align: left;line-height: 40px;font-size: 20px;">鎬绘暟閲忥細{{anfmeSum}}</div> + </div> + {{#each data}} + <table width="100%" style="border:0;border-bottom:#0C0C0C solid 2px; margin-bottom:20px;padding:0;overflow: hidden;font-size: xx-small;table-layout: fixed;"> + <tr style="height: 25px;font-size: 15px;"> + <td align="left" scope="col" colspan="1" style="width: 100px;"> + 鏂欏彿: + </td> + <td> + {{this.matnr}} + </td> + <td align="left" scope="col" colspan="1" rowspan="4"> + <img class="template-code template-qrcode" src="{{this.barcodeUrl}}" width="100px"> + </td> + </tr> + <tr style="height: 25px;font-size: 15px;"> + <td align="left" scope="col" colspan="1" style="width: 100px;"> + 鍟嗗搧鍚�: + </td> + <td> + {{this.maktx}} + </td> + </tr> + <tr style="height: 25px; font-size: 15px;"> + <td align="left" scope="col" colspan="1" style="width: 100px;"> + 鎷h揣鏁伴噺: + </td> + <td> + {{this.anfme}} + </td> + </tr> + <tr style="height: 30px; font-size: 15px;"> + <td align="left" scope="col" colspan="1" style="width: 100px;"> + 搴撲綅: + </td> + <td align="left" scope="col" colspan="1"> + {{this.locNo}} + </td> + </tr> + <tr style="height: 30px; font-size: 15px;"> + <td align="left" scope="col" colspan="1" style="width: 100px;"> + 鏂欑鐮�: + </td> + <td align="left" scope="col" colspan="1"> + {{this.containerCode}} + </td> + </tr> + <tr style="height: 30px; font-size: 15px;"> + <td align="left" scope="col" colspan="1" style="width: 100px;"> + 閿�鍞鍗曞彿: + </td> + <td align="left" scope="col" colspan="1"> + {{this.csocode}} + </td> + </tr> + <tr style="height: 30px; font-size: 15px;"> + <td align="left" scope="col" colspan="1" style="width: 100px;"> + 閿�鍞鍗曡鍙�: + </td> + <td align="left" scope="col" colspan="1"> + {{this.isoseq}} + </td> + </tr> + </table> + {{/each}} +</script> + + +</html> + diff --git a/src/main/webapp/views/picking/pickingOrder.html b/src/main/webapp/views/picking/pickingOrder.html new file mode 100644 index 0000000..c467b21 --- /dev/null +++ b/src/main/webapp/views/picking/pickingOrder.html @@ -0,0 +1,157 @@ +<!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"> + <script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script> + <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script> +<!-- <script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>--> +<!-- <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>--> + <style> + .wrk-trace { + color: green; + cursor: pointer; + margin-left: 6px; + font-size: 18px; + } + </style> +</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"> + <label class="layui-form-label">鍗曟嵁缂栧彿:</label> + <div class="layui-input-inline"> + <input class="layui-input" type="text" name="order_no" 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> + <button id="orderAddBtn" class="layui-btn icon-btn btn-add"><i class="layui-icon"></i>娣诲姞 + </button> + </div> + </div> + </div> + <table class="layui-hide" id="saasLog" lay-filter="saasLog"></table> + </div> + </div> +</div> + +<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script> +<script type="text/javascript" src="../../static/js/handlebars/handlebars-v4.5.3.js"></script> +<script type="text/javascript" src="../../static/js/jquery/jQuery.print.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/echarts/echarts.min.js" charset="utf-8"></script> +<script type="text/javascript" src="../../static/js/picking/pickingOrder.js" charset="utf-8"></script> +</body> +<!-- 琛ㄦ牸鎿嶄綔鍒� --> +<script type="text/html" id="tbLook"> + <span class="layui-text"> + <a href="javascript:;" lay-event="look"> + <i class="layui-icon" style="font-size: 12px;"></i> 鏌ョ湅鍗曟嵁鏄庣粏 + </a> + </span> +</script> + +<script type="text/html" id="settleTpl"> + <span name="settle" + {{# if( d.settle === 1){ }} + class="layui-badge layui-badge-red" + {{# }else if(d.settle === 2){ }} + class="layui-badge layui-badge-green" + {{# }else if(d.settle === 3){ }} + class="layui-badge layui-badge-gray" + {{# }else if(d.settle === 4){ }} + class="layui-badge layui-badge-blue" + {{# }else if(d.settle === 5){ }} + class="layui-badge layui-badge-gray" + {{# }else if(d.settle === 6){ }} + class="layui-badge layui-badge-gray" + {{# } }} + >{{d.settle$}}</span> +</script> + + +<!-- 琛ㄥ崟寮圭獥 --> +<script type="text/html" id="editDialog"> + <form id="editForm" lay-filter="editForm" class="layui-form model-form"> + <input name="id" type="hidden"/> + <div class="layui-form-item"> + <label class="layui-form-label">鍗曟嵁绫诲瀷锛�</label> + <div class="layui-input-block cool-auto-complete"> + <input class="layui-input" name="docType" style="display: none" value="骞冲簱鎷h揣鍗�"> + <input id="docType$" name="docType$" value="骞冲簱鎷h揣鍗�" class="layui-input cool-auto-complete-div" onclick="autoShow(20)" placeholder="骞冲簱鎷h揣鍗�" onfocus=this.blur() 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 id="orderNo" name="orderNo" placeholder="杈撳叆鍗曟嵁缂栧彿" type="text" class="layui-input" maxlength="20" lay-verType="tips" /> + <!-- lay-verify="required"--> + </div> + </div> + <div class="layui-form-item" style="position: relative;"> + <label class="layui-form-label">鍗曟嵁鏄庣粏锛�</label> + <div class="layui-input-block"> + <table id="formSSXMTable" lay-filter="formSSXMTable"></table> + </div> + <button class="layui-btn layui-btn-sm icon-btn" id="matAddBtnComment" + style="position: absolute; left: 20px;top: 60px;padding: 0 5px;" type="button"> + <i class="layui-icon"></i>娣诲姞鏄庣粏 + </button> + </div> + <div class="layui-form-item text-right"> + <button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">鍙栨秷</button> + <button class="layui-btn" lay-filter="orderEditSubmit" lay-submit>淇濆瓨</button> + </div> + </form> +</script> +<!-- 琛ㄦ牸鎿嶄綔鍒� --> +<script type="text/html" id="operate"> + {{# if (d.settle == 0 || d.settle == 1) { }} + <a class="layui-btn layui-btn-primary layui-btn-xs btn-edit" lay-event="edit">淇敼</a> + <a class="layui-btn layui-btn-danger layui-btn-xs btn-delete" lay-event="del">鍒犻櫎</a> + <a class="layui-btn layui-btn-primary layui-border-blue layui-btn-xs btn-complete" lay-event="manPrint">鐢熸垚鎷h揣鍗�</a> + {{# } }} + {{# if (d.settle == 2) { }} +<!-- <a class="layui-btn layui-btn-primary layui-border-blue layui-btn-xs btn-complete" lay-event="complete">瀹岀粨</a>--> + {{# } }} +<!-- <a class="layui-btn layui-btn-primary layui-border-blue layui-btn-xs btn-complete" lay-event="btnPrint">鎵撳嵃</a>--> + +</script> +<!-- 琛ㄥ崟寮圭獥 --> +<script type="text/html" id="matEditDialog"> + <form id="matEditForm" lay-filter="matEditForm" class="layui-form model-form"> + <input name="experimentId" type="hidden"/> + <div class="layui-form-item" style="float: left"> + <label class="layui-form-label">鐗╂枡 - 澶氶��</label> + <div class="layui-input-block"> + <div id="mat" name="mat"> + </div> + </div> + </div> + <div class="layui-form-item text-right" style="display: inline-block; margin-left: 35px"> + <button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">鍙栨秷</button> + <button class="layui-btn" lay-filter="matEditSubmit" lay-submit>淇濆瓨</button> + </div> + </form> +</script> +</html> + -- Gitblit v1.9.1