From 7b856a3752600775eed48255a96f41c9b973e484 Mon Sep 17 00:00:00 2001 From: luxiaotao1123 <t1341870251@163.com> Date: 星期六, 13 三月 2021 13:32:23 +0800 Subject: [PATCH] # --- src/main/java/zy/cloud/wms/manager/entity/StoPreVo.java | 36 +++++++ src/main/resources/mapper/LocDetlMapper.xml | 2 src/main/webapp/static/js/custOrder/custOrder.js | 120 +++++++++++++++-------- src/main/java/zy/cloud/wms/manager/controller/WorkController.java | 6 + src/main/java/zy/cloud/wms/manager/service/LocDetlService.java | 8 + src/main/java/zy/cloud/wms/manager/service/impl/WorkServiceImpl.java | 12 ++ src/main/java/zy/cloud/wms/manager/service/WorkService.java | 2 src/main/java/zy/cloud/wms/manager/service/impl/LocDetlServiceImpl.java | 8 + src/main/java/zy/cloud/wms/common/service/MainService.java | 53 +++++++++- 9 files changed, 198 insertions(+), 49 deletions(-) diff --git a/src/main/java/zy/cloud/wms/common/service/MainService.java b/src/main/java/zy/cloud/wms/common/service/MainService.java index d683977..4e6a347 100644 --- a/src/main/java/zy/cloud/wms/common/service/MainService.java +++ b/src/main/java/zy/cloud/wms/common/service/MainService.java @@ -9,12 +9,13 @@ import org.springframework.transaction.annotation.Transactional; import zy.cloud.wms.common.model.OrderStoDto; import zy.cloud.wms.common.utils.VersionUtils; -import zy.cloud.wms.manager.entity.CustOrder; -import zy.cloud.wms.manager.entity.LocDetl; -import zy.cloud.wms.manager.entity.Mat; -import zy.cloud.wms.manager.entity.Pakout; -import zy.cloud.wms.manager.service.*; +import zy.cloud.wms.manager.entity.*; +import zy.cloud.wms.manager.service.CustOrderService; +import zy.cloud.wms.manager.service.LocDetlService; +import zy.cloud.wms.manager.service.MatService; +import zy.cloud.wms.manager.service.PakoutService; +import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Optional; @@ -38,6 +39,48 @@ private SnowflakeIdWorker snowflakeIdWorker; @Transactional + public List<StoPreVo> stockOutPreview(OrderStoDto dto) { + if (Cools.isEmpty(dto) || Cools.isEmpty(dto.getCustOrders())) { + throw new CoolException("鏁版嵁寮傚父锛岃鑱旂郴绠$悊鍛�"); + } + // 妫�鏌ュ簱瀛樻槸鍚﹁冻澶� + locDetlService.checkLocDetlCount(dto.getNumber()); + List<StoPreVo> result = new ArrayList<>(); + for (CustOrder custOrder : dto.getCustOrders()) { + // 鍒ゆ柇鐗╂枡鏄惁瀛樺湪 + Mat mat = matService.selectByMatnr(custOrder.getUserCode()); + if (null == mat) { + throw new CoolException(custOrder.getUserCode() + "鐗╂枡灏氭湭鏇存柊銆�" + custOrder.getNumber() +"鍗曟嵁鍥犳涓柇锛�"); + } + // 鏌ヨ瀛樻湁褰撳墠鐗╂枡鐨勮揣浣� + List<LocDetl> locDetls = locDetlService.findOfSort(mat.getMatnr()); + double issued = Optional.ofNullable(custOrder.getQty()).orElse(0.0D) ; + // 瑙嗗浘瀵硅薄 + StoPreVo vo = new StoPreVo(); + vo.setMatnr(mat.getMatnr()); + vo.setMaktx(mat.getMaktx()); + vo.setAnfme(issued); + List<StoPreVo.StoPreLoc> locVos = new ArrayList<>(); + vo.setLocs(locVos); + for (LocDetl locDetl : locDetls) { + if (issued > 0) { + StoPreVo.StoPreLoc locVo = new StoPreVo.StoPreLoc(); + locVo.setLocNo(locDetl.getLocNo()); + locVo.setNodeId(locDetl.getNodeId()); + locVo.setTotal(locDetl.getAnfme()); + locVo.setReduce(issued>=locDetl.getAnfme()?locDetl.getAnfme():issued); + locVo.setPrior(locDetlService.isPrior(locDetl.getNodeId(), mat.getMatnr())); + locVos.add(locVo); + // 鍓╀綑寰呭嚭鏁伴噺閫掑噺 + issued = issued - locDetl.getAnfme(); + } + } + result.add(vo); + } + return result; + } + + @Transactional public void stockOutProcess(OrderStoDto dto) { if (Cools.isEmpty(dto) || Cools.isEmpty(dto.getCustOrders())) { return; diff --git a/src/main/java/zy/cloud/wms/manager/controller/WorkController.java b/src/main/java/zy/cloud/wms/manager/controller/WorkController.java index 28a8ffb..7210836 100644 --- a/src/main/java/zy/cloud/wms/manager/controller/WorkController.java +++ b/src/main/java/zy/cloud/wms/manager/controller/WorkController.java @@ -53,6 +53,12 @@ return workService.stockOutCheck(number, getUserId()); } + @RequestMapping("/stock/out/preview") + @ManagerAuth(memo = "鎷h揣棰勮") + public R stockOutPreview(@RequestBody StockOutParam stockOutParam) { + return workService.stockOutPreview(stockOutParam, getUserId()); + } + @RequestMapping("/stock/out") @ManagerAuth(memo = "鎷h揣") public R stockOut(@RequestBody StockOutParam stockOutParam) { diff --git a/src/main/java/zy/cloud/wms/manager/entity/StoPreVo.java b/src/main/java/zy/cloud/wms/manager/entity/StoPreVo.java new file mode 100644 index 0000000..c7fee98 --- /dev/null +++ b/src/main/java/zy/cloud/wms/manager/entity/StoPreVo.java @@ -0,0 +1,36 @@ +package zy.cloud.wms.manager.entity; + +import lombok.Data; + +import java.util.List; + +/** + * Created by vincent on 2021/3/13 + */ +@Data +public class StoPreVo { + + private String matnr; + + private String maktx; + + private Double anfme; + + private List<StoPreLoc> locs; + + @Data + public static class StoPreLoc { + + private String locNo; + + private Long nodeId; + + private Double total; + + private Double reduce; + + private Boolean prior; + + } + +} diff --git a/src/main/java/zy/cloud/wms/manager/service/LocDetlService.java b/src/main/java/zy/cloud/wms/manager/service/LocDetlService.java index d49545d..b555736 100644 --- a/src/main/java/zy/cloud/wms/manager/service/LocDetlService.java +++ b/src/main/java/zy/cloud/wms/manager/service/LocDetlService.java @@ -38,4 +38,12 @@ */ Boolean removeStock(Long nodeId, String matnr); + /** + * 鏄惁灞炰簬鎺ㄨ崘搴撲綅 + * @param nodeId + * @param matnr + * @return + */ + Boolean isPrior(Long nodeId, String matnr); + } diff --git a/src/main/java/zy/cloud/wms/manager/service/WorkService.java b/src/main/java/zy/cloud/wms/manager/service/WorkService.java index d0f133f..f77a8a4 100644 --- a/src/main/java/zy/cloud/wms/manager/service/WorkService.java +++ b/src/main/java/zy/cloud/wms/manager/service/WorkService.java @@ -13,6 +13,8 @@ R stockOutPrint(StockOutParam param, Long userId); + R stockOutPreview(StockOutParam param, Long userId); + R stockOut(StockOutParam param, Long userId); R stockOutComplete(StockConfirmParam param, Long userId); diff --git a/src/main/java/zy/cloud/wms/manager/service/impl/LocDetlServiceImpl.java b/src/main/java/zy/cloud/wms/manager/service/impl/LocDetlServiceImpl.java index 3cb3441..1e673f3 100644 --- a/src/main/java/zy/cloud/wms/manager/service/impl/LocDetlServiceImpl.java +++ b/src/main/java/zy/cloud/wms/manager/service/impl/LocDetlServiceImpl.java @@ -10,10 +10,12 @@ import zy.cloud.wms.manager.entity.CustOrder; import zy.cloud.wms.manager.entity.LocDetl; import zy.cloud.wms.manager.entity.Mat; +import zy.cloud.wms.manager.entity.Prior; import zy.cloud.wms.manager.mapper.LocDetlMapper; import zy.cloud.wms.manager.service.CustOrderService; import zy.cloud.wms.manager.service.LocDetlService; import zy.cloud.wms.manager.service.MatService; +import zy.cloud.wms.manager.service.PriorService; import java.util.ArrayList; import java.util.List; @@ -26,6 +28,8 @@ private CustOrderService custOrderService; @Autowired private MatService matService; + @Autowired + private PriorService priorService; @Override public Page<LocDetl> getPage(Page<LocDetl> page) { @@ -94,6 +98,10 @@ return this.baseMapper.removeStock(nodeId, matnr)>0; } + @Override + public Boolean isPrior(Long nodeId, String matnr) { + return priorService.selectCount(new EntityWrapper<Prior>().eq("matnr", matnr).eq("node_id", nodeId).eq("status", 1))>0; + } } diff --git a/src/main/java/zy/cloud/wms/manager/service/impl/WorkServiceImpl.java b/src/main/java/zy/cloud/wms/manager/service/impl/WorkServiceImpl.java index 1cbf6ea..87d453a 100644 --- a/src/main/java/zy/cloud/wms/manager/service/impl/WorkServiceImpl.java +++ b/src/main/java/zy/cloud/wms/manager/service/impl/WorkServiceImpl.java @@ -108,6 +108,18 @@ } @Override + public R stockOutPreview(StockOutParam param, Long userId) { + List<CustOrder> custOrders = custOrderService.selectList(new EntityWrapper<CustOrder>() + .eq("number", param.getNumber()) + .eq("status", 1) + ); + OrderStoDto dto = new OrderStoDto(); + dto.setNumber(param.getNumber()); + dto.setCustOrders(custOrders); + return R.ok().add(mainService.stockOutPreview(dto)); + } + + @Override public R stockOut(StockOutParam param, Long userId) { List<CustOrder> custOrders = custOrderService.selectList(new EntityWrapper<CustOrder>() .eq("number", param.getNumber()) diff --git a/src/main/resources/mapper/LocDetlMapper.xml b/src/main/resources/mapper/LocDetlMapper.xml index 0a05582..27026b9 100644 --- a/src/main/resources/mapper/LocDetlMapper.xml +++ b/src/main/resources/mapper/LocDetlMapper.xml @@ -117,7 +117,7 @@ select mld.* from man_loc_detl mld - left join man_prior mp on mld.node_id = mp.node_id + left join man_prior mp on mld.node_id = mp.node_id and mld.matnr = mp.matnr where 1=1 <if test="nodeId != null and nodeId != ''"> and mld.node_id = #{nodeId} diff --git a/src/main/webapp/static/js/custOrder/custOrder.js b/src/main/webapp/static/js/custOrder/custOrder.js index 72f8a7d..2fd9c5f 100644 --- a/src/main/webapp/static/js/custOrder/custOrder.js +++ b/src/main/webapp/static/js/custOrder/custOrder.js @@ -203,49 +203,83 @@ switch (obj.event) { // 鎷h揣 case 'stockOut': - layer.confirm(data.number + ' 璁㈠崟寮�濮嬫嫞璐э紵', {shadeClose: true}, function(){ - layer.closeAll(); - $.ajax({ - url: baseUrl+"/work/stock/out", - headers: {'token': localStorage.getItem('token')}, - contentType:'application/json;charset=UTF-8', - data: JSON.stringify({ - number: data.number - }), - method: 'POST', - success: function (res) { - // 鎴愬姛 - if (res.code === 200){ - layer.confirm(res.msg, { - shadeClose: true - , btn: ['鎵撳嵃鎷h揣鍗�'] - }, function() { - layer.closeAll(); - printPakouts(data.number); - } - ) - // 缂烘枡 - } else if (res.code === 20001) { - layer.confirm(res.msg, { - shadeClose: true - , btn: ['搴撳瓨璋冩嫧', '鍙栨秷'] - }, function() { - // todo 搴撳瓨璋冩嫧 - layer.closeAll(); - }, function() { - // printPakouts(data.number); - layer.closeAll(); - } - ) - } else if (res.code === 403){ - top.location.href = baseUrl+"/"; - } else { - layer.msg(res.msg) - } - $(".layui-laypage-btn")[0].click(); - } - }) - }); + + $.ajax({ + url: baseUrl + "/work/stock/out/preview", + headers: {'token': localStorage.getItem('token')}, + contentType: 'application/json;charset=UTF-8', + data: JSON.stringify({ + number: data.number + }), + method: 'POST', + success: function (res) { + console.log(res); + } + }) + // layer.open({ + // type: 1 + // ,title: false + // ,closeBtn: false + // ,offset: '100px' + // ,area: '300px;' + // ,shade: 0.5 + // ,id: 'LAY_layuipro' + // ,btn: ['鐏�熷洿瑙�', '娈嬪繊鎷掔粷'] + // ,btnAlign: 'c' + // ,moveType: 1 //鎷栨嫿妯″紡锛�0鎴栬��1 + // ,content: '<div style="padding: 50px; line-height: 22px; background-color: #393D49; color: #fff; font-weight: 300;">浣犵煡閬撳悧锛熶翰锛�<br>layer 鈮� layui<br><br>layer鍙槸浣滀负Layui鐨勪竴涓脊灞傛ā鍧楋紝鐢变簬鍏剁敤鎴峰熀鏁拌緝澶э紝鎵�浠ュ父甯镐細鏈変汉浠ヤ负layui鏄痩ayerui<br><br>layer铏界劧宸茶 Layui 鏀剁紪涓哄唴缃殑寮瑰眰妯″潡锛屼絾浠嶇劧浼氫綔涓轰竴涓嫭绔嬬粍浠跺叏鍔涚淮鎶ゃ�佸崌绾с��<br><br>鎴戜滑姝ゅ悗鐨勫緛閫旀槸鏄熻景澶ф捣 ^_^</div>' + // ,success: function(layero){ + // var btn = layero.find('.layui-layer-btn'); + // btn.find('.layui-layer-btn0').attr({ + // href: 'http://www.layui.com/' + // ,target: '_blank' + // }); + // } + // }); + + // layer.confirm(data.number + ' 璁㈠崟寮�濮嬫嫞璐э紵', {shadeClose: true}, function(){ + // layer.closeAll(); + // $.ajax({ + // url: baseUrl+"/work/stock/out", + // headers: {'token': localStorage.getItem('token')}, + // contentType:'application/json;charset=UTF-8', + // data: JSON.stringify({ + // number: data.number + // }), + // method: 'POST', + // success: function (res) { + // // 鎴愬姛 + // if (res.code === 200){ + // layer.confirm(res.msg, { + // shadeClose: true + // , btn: ['鎵撳嵃鎷h揣鍗�'] + // }, function() { + // layer.closeAll(); + // printPakouts(data.number); + // } + // ) + // // 缂烘枡 + // } else if (res.code === 20001) { + // layer.confirm(res.msg, { + // shadeClose: true + // , btn: ['搴撳瓨璋冩嫧', '鍙栨秷'] + // }, function() { + // // todo 搴撳瓨璋冩嫧 + // layer.closeAll(); + // }, function() { + // // printPakouts(data.number); + // layer.closeAll(); + // } + // ) + // } else if (res.code === 403){ + // top.location.href = baseUrl+"/"; + // } else { + // layer.msg(res.msg) + // } + // $(".layui-laypage-btn")[0].click(); + // } + // }) + // }); break; // 璇︽儏 case 'detail': -- Gitblit v1.9.1