From c477dcc0ab4fe679f682f342d1ac8725fcb4d852 Mon Sep 17 00:00:00 2001 From: Junjie <540245094@qq.com> Date: 星期二, 10 九月 2024 13:37:50 +0800 Subject: [PATCH] # --- zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/manage/OutManage.java | 114 +++++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 106 insertions(+), 8 deletions(-) diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/manage/OutManage.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/manage/OutManage.java index 295462d..ba2a50e 100644 --- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/manage/OutManage.java +++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/manage/OutManage.java @@ -52,7 +52,12 @@ private OperationPortService operationPortService; @Autowired private OrderUtils orderUtils; - + @Autowired + private OrderNoRuleService orderNoRuleService; + @Autowired + private WaveService waveService; + @Autowired + private WaveDetlService waveDetlService; /** * 鍑哄簱 @@ -330,6 +335,8 @@ Long locId = entry.getKey(); List<OrderOutBatchPreviewDto> previewDtos = entry.getValue(); Boolean all = outUtils.isAllForPreview(locId, previewDtos); + OrderOutBatchPreviewDto previewDto = previewDtos.get(0); + Long operationPortId = previewDto.getOperationPort(); Loc loc = locService.getById(locId); if (loc == null) { @@ -338,6 +345,11 @@ if (!loc.getLocStsId().equals(LocStsType.F.val())) { continue; + } + + OperationPort operationPort = operationPortService.getById(operationPortId); + if (operationPort == null) { + throw new CoolException("浣滀笟鍙d笉瀛樺湪"); } @@ -349,7 +361,7 @@ task.setTaskType(taskType); task.setIoPri(workService.generateIoPri(taskType)); task.setOriginLoc(loc.getLocNo()); - task.setTargetSite("A"); + task.setTargetSite(operationPort.getFlag()); task.setBarcode(loc.getBarcode()); boolean res = taskService.save(task); if (!res) { @@ -370,6 +382,7 @@ TaskDetl taskDetl = new TaskDetl(); taskDetl.sync(locDetl); + taskDetl.setId(null); taskDetl.setTaskId(task.getId()); taskDetl.setAnfme(dto.getAnfme()); taskDetl.setStock(locDetl.getAnfme()); @@ -384,6 +397,7 @@ for (LocDetlField locDetlField : locDetlFields) { TaskDetlField taskDetlField = new TaskDetlField(); taskDetlField.sync(locDetlField); + taskDetlField.setId(null); taskDetlField.setDetlId(taskDetl.getId()); boolean taskDetlFieldSave = taskDetlFieldService.save(taskDetlField); if(!taskDetlFieldSave){ @@ -588,6 +602,7 @@ List<OrderDetl> orderDetlList = detlMap.get(matUniqueKey); for (OrderDetl orderDetl : orderDetlList) { + orderDetl = orderDetlService.getById(orderDetl); double issued = Optional.of(orderDetl.getAnfme() - orderDetl.getQty() - orderDetl.getWorkQty()).orElse(0.0D); if (issued <= 0D) { continue; @@ -597,19 +612,18 @@ orderOutMergeDto.sync(param); orderOutMergeDto.setOrderDetlId(orderDetl.getId()); - Double anfme = orderDetl.getAnfme(); Double updateWorkQty = null; - double diffAnfme = requireAnfme - anfme; - if (diffAnfme >= 0) { - orderOutMergeDto.setAnfme(anfme); - updateWorkQty = anfme; - requireAnfme -= anfme; + if (requireAnfme > issued) { + orderOutMergeDto.setAnfme(issued); + updateWorkQty = issued; + requireAnfme -= issued; }else { orderOutMergeDto.setAnfme(requireAnfme); updateWorkQty = requireAnfme; requireAnfme -= requireAnfme; } + orderOutMergeDtos.add(orderOutMergeDto); orderUtils.updateWorkQty(orderDetl.getId(), updateWorkQty); @@ -680,6 +694,7 @@ TaskDetl taskDetl = new TaskDetl(); taskDetl.sync(locDetl); + taskDetl.setId(null); taskDetl.setTaskId(task.getId()); taskDetl.setAnfme(merge.getAnfme()); taskDetl.setStock(locDetl.getAnfme()); @@ -694,6 +709,7 @@ for (LocDetlField locDetlField : locDetlFields) { TaskDetlField taskDetlField = new TaskDetlField(); taskDetlField.sync(locDetlField); + taskDetlField.setId(null); taskDetlField.setDetlId(taskDetl.getId()); boolean taskDetlFieldSave = taskDetlFieldService.save(taskDetlField); if(!taskDetlFieldSave){ @@ -715,4 +731,86 @@ } + @Transactional + public void generateWave(List<Long> orderIds) { + if (orderIds == null) { + throw new CoolException("鍙傛暟涓嶈兘涓虹┖"); + } + + if (orderIds.isEmpty()) { + throw new CoolException("鍙傛暟涓嶈兘涓虹┖"); + } + + List<Order> orderList = orderService.listByIds(orderIds); + if (orderList.isEmpty()) { + throw new CoolException("璁㈠崟涓嶅瓨鍦�"); + } + + for (Order order : orderList) { + if (order.getWaveId() != null) { + throw new CoolException("褰撳墠璁㈠崟涓凡缁忕敓鎴愭尝娆�"); + } + } + + String waveNo = orderNoRuleService.getOrderNo(3); + Wave wave = new Wave(); + wave.setWaveNo(waveNo); + wave.setWaveType(0); + if (!waveService.save(wave)) { + throw new CoolException("娉㈡鐢熸垚澶辫触"); + } + + for (Order order : orderList) { + WaveDetl waveDetl = new WaveDetl(); + waveDetl.setWaveNo(waveNo); + waveDetl.setWaveId(wave.getId()); + waveDetl.setOrderId(order.getId()); + waveDetl.setOrderNo(order.getOrderNo()); + if (!waveDetlService.save(waveDetl)) { + throw new CoolException("娉㈡鏄庣粏鐢熸垚澶辫触"); + } + + order.setWaveId(wave.getId()); + order.setWaveNo(waveNo); + order.setUpdateTime(new Date()); + if (!orderService.updateById(order)) { + throw new CoolException("璁㈠崟鍙嶅啓娉㈡澶辫触"); + } + } + + } + + @Transactional + public void cancelWave(List<Long> waveIds) { + if (waveIds == null) { + throw new CoolException("鍙傛暟涓嶈兘涓虹┖"); + } + + if (waveIds.isEmpty()) { + throw new CoolException("鍙傛暟涓嶈兘涓虹┖"); + } + + List<Wave> waves = waveService.listByIds(waveIds); + if (waves.isEmpty()) { + throw new CoolException("娉㈡涓嶅瓨鍦�"); + } + + for (Wave wave : waves) { + List<WaveDetl> waveDetls = waveDetlService.list(new LambdaQueryWrapper<WaveDetl>().eq(WaveDetl::getWaveId, wave.getId())); + for (WaveDetl waveDetl : waveDetls) { + Order order = orderService.getById(waveDetl.getOrderId()); + order.setWaveId(null); + order.setWaveNo(null); + if (!orderService.updateById(order)) { + throw new CoolException("璁㈠崟鍙嶅啓澶辫触"); + } + + waveDetlService.removeById(waveDetl.getId()); + } + + waveService.removeById(wave.getId()); + } + + } + } -- Gitblit v1.9.1