From 2b0e94aaf3aadc55db3069d69bc9f1b45455299d Mon Sep 17 00:00:00 2001 From: skyouc Date: 星期六, 02 八月 2025 08:58:51 +0800 Subject: [PATCH] 调拔单功能优化 --- rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java | 118 ++++++++++++++++++++++++++++++++++++++--------------------- 1 files changed, 76 insertions(+), 42 deletions(-) diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java index b269e33..23a62e6 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java @@ -422,6 +422,7 @@ //绉诲簱 moveInStock(task, loginUserId); } + } } @@ -636,19 +637,14 @@ @Synchronized @Override @Transactional(rollbackFor = Exception.class) - public void completeTask(List<Task> tasks) throws Exception { + public void completeTask(List<Task> tasks) { Long loginUserId = SystemAuthUtils.getLoginUserId(); for (Task task : tasks) { //鍑哄簱浠诲姟 - if (task.getTaskType().equals(TaskType.TASK_TYPE_OUT.type)) { - //鍏ㄦ墭鍑哄簱 + try { complateOutStock(task, loginUserId); - } else if (task.getTaskType().equals(TaskType.TASK_TYPE_PICK_AGAIN_OUT.type)) { - //鎷f枡鍑哄簱 - complateOutStock(task, loginUserId); - } else if (task.getTaskType().equals(TaskType.TASK_TYPE_CHECK_OUT.type)) { - //鐩樼偣鍑哄簱 - complateOutStock(task, loginUserId); + } catch (Exception e) { + throw new CoolException(e.getMessage()); } } } @@ -775,6 +771,7 @@ } else if (task.getTaskType().equals(TaskType.TASK_TYPE_CHECK_OUT.type)) { List<TaskItem> taskItems = taskItemService.list(new LambdaQueryWrapper<TaskItem>().in(TaskItem::getTaskId, Arrays.asList(ids))); if (!taskItems.isEmpty()) { + taskItems.forEach(taskItem -> { if (!checkOrderItemService.update(new LambdaUpdateWrapper<WkOrderItem>() .eq(WkOrderItem::getId, taskItem.getOrderItemId()) @@ -788,9 +785,15 @@ throw new CoolException("鐩樼偣鍗曟墽琛屾暟閲忎慨鏀瑰け璐ワ紒锛�"); } - checkDiffItemService.remove(new LambdaQueryWrapper<CheckDiffItem>().eq(CheckDiffItem::getTaskItemId, taskItem.getId())); + CheckDiffItem serviceOne = checkDiffItemService.getOne(new LambdaQueryWrapper<CheckDiffItem>().eq(CheckDiffItem::getTaskItemId, taskItem.getId())); - checkDiffService.removeById(taskItem.getSourceId()); + checkDiffItemService.remove(new LambdaQueryWrapper<CheckDiffItem>().eq(CheckDiffItem::getTaskItemId, taskItem.getId())); + if (!Objects.isNull(serviceOne)) { + CheckDiff checkDiff = checkDiffService.getById(serviceOne.getCheckId()); + if (!Objects.isNull(checkDiff)) { + checkDiffService.removeById(checkDiff.getId()); + } + } }); } @@ -997,13 +1000,15 @@ tempLocs.forEach(working -> { taskItems.forEach(taskItem -> { if (taskItem.getMatnrId().equals(working.getMatnrId())) { - Double minQty = Math.round((working.getAnfme() - taskItem.getAnfme()) * 10000) / 10000.0; + Double minQty = taskItem.getAnfme(); + if (!task.getTaskType().equals(TaskType.TASK_TYPE_CHECK_IN.type)) { + minQty = Math.round((working.getAnfme() - taskItem.getAnfme()) * 10000) / 10000.0; + } if (minQty.compareTo(0.0) > 0) { taskItem.setAnfme(minQty); if (!taskItemService.updateById(taskItem)) { throw new CoolException("浠诲姟鏄庣粏淇敼澶辫触锛侊紒"); } - } else { if (!taskItemService.removeById(taskItem)) { throw new CoolException("浠诲姟鏄庣粏淇敼澶辫触锛侊紒"); @@ -1021,6 +1026,8 @@ TaskItem taskItem = taskItems.stream().findFirst().get(); taskItem.setMatnrId(working.getMatnrId()) .setMaktx(working.getMaktx()) + .setMatnrId(working.getMatnrId()) + .setMatnrCode(working.getMatnrCode()) .setSpec(working.getSpec()) .setAnfme(working.getAnfme()) .setBatch(working.getBatch()) @@ -1035,7 +1042,7 @@ }); locItemWorkingService.remove(new LambdaQueryWrapper<LocItemWorking>().eq(LocItemWorking::getTaskId, task.getId())); - Loc loc1 = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getCode, task.getOrgLoc())); + Loc loc1 = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getCode, task.getTargLoc())); if (Objects.isNull(loc1)) { throw new CoolException("鐩爣搴撲綅涓嶅瓨鍦紒锛�"); } @@ -1043,10 +1050,14 @@ List<LocItemWorking> workings = new ArrayList<>(); List<TaskItem> items = taskItemService.list(new LambdaQueryWrapper<TaskItem>().eq(TaskItem::getTaskId, task.getId())); items.forEach(taskItem -> { - LocItemWorking itemWorking = new LocItemWorking(); - BeanUtils.copyProperties(taskItem, itemWorking); - itemWorking.setTaskId(task.getId()).setLocId(loc1.getId()).setLocCode(loc1.getCode()); - workings.add(itemWorking); + if (taskItem.getAnfme() > 0) { + LocItemWorking itemWorking = new LocItemWorking(); + BeanUtils.copyProperties(taskItem, itemWorking); + itemWorking.setTaskId(task.getId()) + .setLocId(loc1.getId()) + .setLocCode(loc1.getCode()); + workings.add(itemWorking); + } }); if (!locItemWorkingService.saveBatch(workings)) { @@ -1135,14 +1146,9 @@ } catch (Exception e) { throw new CoolException(e.getMessage()); } - } else if (task.getResource().equals(TaskResouceType.TASK_RESOUCE_ORDER_TYPE.val) || task.getResource().equals(TaskResouceType.TASK_RESOUCE_CHECK_TYPE.val)) { - WkOrderItem orderItem = new WkOrderItem(); - if (task.getResource().equals(TaskResouceType.TASK_RESOUCE_CHECK_TYPE.val)) { - CheckDiffItem diffItem = checkDiffItemService.getById(key); - } else { - orderItem = asnOrderItemService.getById(key); - - } + } else if (task.getResource().equals(TaskResouceType.TASK_RESOUCE_ORDER_TYPE.val) + || task.getResource().equals(TaskResouceType.TASK_RESOUCE_CHECK_TYPE.val)) { + WkOrderItem orderItem = asnOrderItemService.getById(key); if (Objects.isNull(orderItem)) { throw new CoolException("鍗曟嵁鏄庣粏涓嶅瓨鍦紒锛�"); } @@ -1230,20 +1236,26 @@ .setUpdateBy(loginUserId) .setUpdateTime(new Date()) .setAnfme(sum); - if (Objects.isNull(waveItem)) { - stock.setWkType(Short.parseShort(OrderWorkType.ORDER_WORK_TYPE_STOCK_OUT.type)) - .setMemo("搴撳瓨鍑哄簱锛屾棤鍗曟嵁淇℃伅锛侊紒") - .setType(OrderType.ORDER_OUT.type); + if (!Objects.isNull(waveItem)) { + //TODO 鐢熸垚娉㈡鏃堕渶瑕佸皢娉㈡鍙峰啓鍏ュ崟鎹紝閫氳繃鐗╂枡锛屾壒娆★紝鍔ㄦ�佸瓧娈电瓑鍞竴鍊煎弽鏌ュ崟鎹俊鎭� + stock.setSourceId(waveItem.getId()).setType(OrderType.ORDER_OUT.type); } else if (!Objects.isNull(orderItem) && StringUtils.isNotBlank(orderItem.getId() + "")) { WkOrder wkOrder = asnOrderService.getById(orderItem.getOrderId()); + Double qty = Math.round((wkOrder.getQty() + sum) * 10000) / 10000.0; + wkOrder.setExceStatus(AsnExceStatus.OUT_STOCK_STATUS_TASK_WORKING.val) + .setQty(qty); + if (!asnOrderService.updateById(wkOrder)) { + throw new CoolException("鍑哄簱鍗曟洿鏂板け璐ワ紒锛�"); + } stock.setWkType(Short.parseShort(wkOrder.getWkType())) .setType(OrderType.ORDER_OUT.type); } else if (!Objects.isNull(diffItem)) { stock.setWkType(Short.parseShort(OrderWorkType.ORDER_WORK_TYPE_STOCK_CHECK.type)) .setType(OrderType.ORDER_CHECK.type); } else { - //TODO 鐢熸垚娉㈡鏃堕渶瑕佸皢娉㈡鍙峰啓鍏ュ崟鎹紝閫氳繃鐗╂枡锛屾壒娆★紝鍔ㄦ�佸瓧娈电瓑鍞竴鍊煎弽鏌ュ崟鎹俊鎭� - stock.setSourceId(waveItem.getId()).setType(OrderType.ORDER_OUT.type); + stock.setWkType(Short.parseShort(OrderWorkType.ORDER_WORK_TYPE_STOCK_OUT.type)) + .setMemo("搴撳瓨鍑哄簱锛屾棤鍗曟嵁淇℃伅锛侊紒") + .setType(OrderType.ORDER_OUT.type); } if (!stockService.save(stock)) { throw new CoolException("搴撳瓨淇濆瓨澶辫触锛侊紒"); @@ -1264,7 +1276,6 @@ if (!stockItemService.saveBatch(stockItems)) { throw new CoolException("搴撳瓨淇敼鏋跺け璐ワ紒锛�"); } - } /** @@ -1395,14 +1406,29 @@ List<LocItem> locItems = new ArrayList<>(); items.forEach(taskItem -> { Loc loc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getCode, task.getTargLoc()), false); + if (Objects.isNull(loc)) { + throw new CoolException("搴撲綅涓嶅瓨鍦紒锛�"); + } LocItem item = new LocItem(); - BeanUtils.copyProperties(taskItem, item); - item.setLocCode(loc.getCode()).setId(null) - .setLocId(loc.getId()) - .setUpdateBy(loginUserId) - .setWkType(taskItem.getWkType()) - .setType(taskItem.getOrderType()); - locItems.add(item); + LocItem locItem = locItemService.getOne(new LambdaQueryWrapper<LocItem>() + .eq(LocItem::getMatnrId, taskItem.getMatnrId()) + .eq(LocItem::getLocId, loc.getId()) + .eq(StringUtils.isNoneBlank(taskItem.getBatch()), LocItem::getBatch, taskItem.getBatch()) + .eq(StringUtils.isNoneBlank(taskItem.getFieldsIndex()), LocItem::getFieldsIndex, taskItem.getFieldsIndex())); + if (Objects.isNull(locItem)) { + BeanUtils.copyProperties(taskItem, item); + item.setLocCode(loc.getCode()) + .setId(null) + .setLocId(loc.getId()) + .setUpdateBy(loginUserId) + .setWkType(taskItem.getWkType()) + .setType(taskItem.getOrderType()); + locItems.add(item); + } else { + locItem.setAnfme(Math.round((locItem.getAnfme() + taskItem.getAnfme()) * 10000) / 10000.0) + .setUpdateTime(new Date()); + locItems.add(locItem); + } }); if (!locItemService.saveBatch(locItems)) { throw new CoolException("搴撲綅鏄庣粏鏇存柊澶辫触锛侊紒"); @@ -1417,8 +1443,7 @@ * @return */ @Transactional(rollbackFor = Exception.class) - public void saveStockItems(List<TaskItem> items, Task task, Long id, String code, Short wkType, String type, Long loginUserId) throws - Exception { + public void saveStockItems(List<TaskItem> items, Task task, Long id, String code, Short wkType, String type, Long loginUserId) { Stock stock = new Stock(); String ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_STOCK_CODE, null); if (StringUtils.isBlank(ruleCode)) { @@ -1463,5 +1488,14 @@ if (!stockItemService.saveBatch(stockItems)) { throw new CoolException("搴撳瓨淇敼鏋跺け璐ワ紒锛�"); } + + WkOrder order = asnOrderService.getOne(new LambdaQueryWrapper<WkOrder>().eq(WkOrder::getCode, code)); + if (!Objects.isNull(order)) { +// Double qty = Math.round((order.getQty() + sum) * 10000) / 10000.0; + order.setExceStatus(AsnExceStatus.ASN_EXCE_STATUS_TASK_EXCE.val); + if (!asnOrderService.updateById(order)) { + throw new CoolException("鍏ュ簱鍗曠姸鎬佷慨鏀瑰け璐ワ紒锛�"); + } + } } } -- Gitblit v1.9.1