From d17c089f1d7ff3be848b05161917346e7f664a1d Mon Sep 17 00:00:00 2001 From: mrzhssss <pro6@qq.com> Date: 星期二, 26 四月 2022 15:17:53 +0800 Subject: [PATCH] # --- src/main/java/zy/cloud/wms/manager/controller/OrderController.java | 190 +++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 173 insertions(+), 17 deletions(-) diff --git a/src/main/java/zy/cloud/wms/manager/controller/OrderController.java b/src/main/java/zy/cloud/wms/manager/controller/OrderController.java index 1934bb6..7670a29 100644 --- a/src/main/java/zy/cloud/wms/manager/controller/OrderController.java +++ b/src/main/java/zy/cloud/wms/manager/controller/OrderController.java @@ -18,14 +18,11 @@ import zy.cloud.wms.common.utils.BarcodeUtils; import zy.cloud.wms.common.utils.QrCode; import zy.cloud.wms.common.web.BaseController; -import zy.cloud.wms.manager.entity.Order; -import zy.cloud.wms.manager.entity.OrderDetl; -import zy.cloud.wms.manager.entity.Wave; -import zy.cloud.wms.manager.entity.WaveDetl; -import zy.cloud.wms.manager.service.OrderDetlService; -import zy.cloud.wms.manager.service.OrderService; -import zy.cloud.wms.manager.service.WaveDetlService; -import zy.cloud.wms.manager.service.WaveService; +import zy.cloud.wms.manager.entity.*; +import zy.cloud.wms.manager.entity.dto.OrderDetlDTO; +import zy.cloud.wms.manager.entity.param.StockOutParam; +import zy.cloud.wms.manager.service.*; +import zy.cloud.wms.manager.utils.AddZero; import javax.imageio.ImageIO; import javax.servlet.http.HttpServletResponse; @@ -45,6 +42,13 @@ private WaveService waveService; @Autowired private WaveDetlService waveDetlService; + @Autowired + private PickoutService pickoutService; + @Autowired + private PickoutDetlService pickoutDetlService; + @Autowired + private LocDetlService locDetlService; + @RequestMapping(value = "/order/{id}/auth") @ManagerAuth @@ -63,11 +67,15 @@ excludeTrash(param); convert(param, wrapper); hostEq(wrapper); - if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));} - else { - wrapper.orderBy("update_time", false); + if (!Cools.isEmpty(orderByField)){ + wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType)); } - return R.ok(orderService.selectPage(new Page<>(curr, limit), wrapper)); + else { + wrapper.orderBy("create_time",false); + } + + Page<Order> orderPage = orderService.selectPage(new Page<>(curr, limit), wrapper); + return R.ok(orderPage); } private void convert(Map<String, Object> map, EntityWrapper wrapper){ @@ -202,9 +210,10 @@ */ @RequestMapping("/orders/wave/auth") @ManagerAuth + @Transactional public R createWave(@RequestBody List<Order> orders){ /** - * 鎺х + * 鎺х涓庡垵濮嬪寲 */ Integer seqNo = 1; for (Order order : orders) { @@ -213,17 +222,28 @@ } } - /** * 鐢熸垚娉㈡琛ㄥご */ - Wave wave = new Wave(); wave.setHostId(getHostId()); String s = UUID.randomUUID().toString().replace("-",""); wave.setUuid(s); - String waveNo = "WAVE-" + new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()); - wave.setWaveNo(waveNo); + String waveNo = "WAVE-" + new SimpleDateFormat("yyyyMMdd").format(new Date())+"-"; + String currNum = waveService.getCurrNum(waveNo); + if (!Cools.isEmpty(currNum)) { + String[] split = currNum.split("-"); + if (split.length < 3){ + wave.setWaveNo(waveNo + "0001"); + } else { + Integer newNum = Integer.parseInt(split[2]) + 1; + String format = AddZero.addZeroForNum(newNum + "", 4); + wave.setWaveNo(waveNo + format); + } + }else { + wave.setWaveNo(waveNo + "0001"); + } + wave.setOrdersQty(orders.size()); wave.setStatus((short) 0); wave.setCreateBy(getUserId()); @@ -267,6 +287,15 @@ .eq("id",checkWaveDetl.getId())); } } + + /** + * 鎺х,鍑鸿繃BUG,鍙敓鎴愯〃澶�,涓嶇敓鎴愯〃韬� + */ + if (Cools.isEmpty(allOrderDetls)) { + waveService.delete(new EntityWrapper<Wave>() + .eq("id",wave.getId())); + throw new CoolException("鎵句笉鍒板嚭搴撳崟缁嗚妭,璇疯仈绯荤鐞嗗憳"); + } /** * 鍙嶅啓鍑哄簱鍗曡〃澶� */ @@ -279,4 +308,131 @@ return R.ok("宸茬敓鎴愭尝娆�"); } + /** + * 閫氳繃鎵瑰彿璁㈠崟涓寘鍚殑鍑哄簱鍗� + */ + + @RequestMapping("/order/orderByWave/auth") + @ManagerAuth + public R getOrderDetailByWave(@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, + String research){ + EntityWrapper<Wave> wrapper = new EntityWrapper<>(); + excludeTrash(param); + convert(param, wrapper); + hostEq(wrapper); + wrapper.orderBy("create_time",false); + List<Wave> waves = waveService.selectList(wrapper); + if (Cools.isEmpty(waves)) { + throw new CoolException("鎵句笉鍒拌娉㈡"); + } + + HashSet<String> allOrders = new HashSet<>(); + for (Wave wave : waves) { + List<WaveDetl> waveDetls = waveDetlService.selectList(new EntityWrapper<WaveDetl>() + .eq("wave_id", wave.getId())); + for (WaveDetl waveDetl : waveDetls) { + String[] split = waveDetl.getOrderNos().split(","); + for (String s : split) { + allOrders.add(s); + } + } + } + ArrayList<String> allOrdersList = new ArrayList<>(allOrders); + EntityWrapper<OrderDetl> orderDetailWrapper = new EntityWrapper<>(); + for (int i = 0; i < allOrdersList.size(); i++) { + String s = allOrdersList.get(i); + if (i == 0){ + orderDetailWrapper + .eq("order_no",s); + }else { + orderDetailWrapper + .or() + .eq("order_no",s); + } + } + if (!Cools.isEmpty(research)) { + orderDetailWrapper.eq("order_no",research); + } + Page<OrderDetl> orderDetlPage = orderDetlService.selectPage(new Page<>(curr, limit),orderDetailWrapper); + return R.ok(orderDetlPage); + } + + + /** + * 寮�濮嬫挱绉�,鏇存柊璁㈠崟缁嗚妭,鍑忓皯搴撳瓨閲� + * @param orderDetls + * @return + */ + @RequestMapping("/order/waveBack") + public R waveBack(@RequestBody OrderDetlDTO orderDetls){ + /** + * 鎺х涓庡垵濮嬪寲 + */ + if (Cools.isEmpty(orderDetls.getOrderDetls())) { + + throw new CoolException("鏈敹鍒版湁鏁堟挱绉嶄俊鎭�,璇疯仈绯荤鐞嗗憳"); + } + + /** + * 鏇存柊鍘熷嚭搴撳崟,鏍规嵁鎷h揣鍗曟潵鍑忓幓搴撳瓨 + */ + for (OrderDetl newOne : orderDetls.getOrderDetls()) { + Order order = orderService.selectOne(new EntityWrapper<Order>() + .eq("id", newOne.getOrderId())); + Pickout pickout = pickoutService.selectOne(new EntityWrapper<Pickout>() + .eq("wave_no", order.getWaveNo())); + OrderDetl oldOne = orderDetlService.selectOne(new EntityWrapper<OrderDetl>() + .eq("id", newOne.getId())); + /** + * 璁$畻鍑哄樊鍊�,鍑忓幓搴撳瓨 + */ + double diffValue = newOne.getOutQty() - oldOne.getOutQty(); + if (diffValue !=0) { + /** + * 鑾峰彇鎷h揣鍗曞垎閰嶇殑搴撲綅 + */ + List<PickoutDetl> pickoutDetls = pickoutDetlService.selectList(new EntityWrapper<PickoutDetl>() + .eq("head_id", pickout.getId()) + .eq("matnr", newOne.getMatnr())); + /** + * 閫氳繃鎷h揣鍗曞垎閰嶇殑搴撲綅,閬嶅巻搴撳瓨, + */ + for (PickoutDetl pickoutDetl : pickoutDetls) { + if (diffValue == 0) break; + LocDetl locDetl = locDetlService.selectOne(new EntityWrapper<LocDetl>() + .eq("node_id", pickoutDetl.getNodeId()) + .eq("matnr",newOne.getMatnr())); + if (Cools.isEmpty(locDetl) || locDetl.getAnfme() == 0) { + continue; + } + if (locDetl.getAnfme() > diffValue){ + locDetl.setAnfme(locDetl.getAnfme() - diffValue); + locDetlService.update(locDetl, new EntityWrapper<LocDetl>() + .eq("node_id",locDetl.getNodeId() ) + .eq("matnr",locDetl.getMatnr())); + break; + } + if (locDetl.getAnfme() < diffValue){ + locDetl.setAnfme(0.0); + diffValue = diffValue - locDetl.getAnfme(); + locDetlService.update(locDetl, new EntityWrapper<LocDetl>() + .eq("node_id",locDetl.getNodeId() ) + .eq("matnr",locDetl.getMatnr())); + } + + } + orderDetlService.update(newOne, new EntityWrapper<OrderDetl>() + .eq("id", newOne.getId() )); + } + Boolean result = orderDetlService.checkFinish(order.getId()); + if (result) { + orderDetlService.finishOrder(order.getId()); + } + } + return R.ok("鎾鎴愬姛"); + } } -- Gitblit v1.9.1