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 | 99 ++++++++++++++++++++++++++++++------------------- 1 files changed, 60 insertions(+), 39 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 1365f70..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()); } } } @@ -1019,8 +1015,6 @@ } } } - - }); }); List<Long> matnrIds = taskItems.stream().map(TaskItem::getMatnrId).collect(Collectors.toList()); @@ -1056,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)) { @@ -1148,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("鍗曟嵁鏄庣粏涓嶅瓨鍦紒锛�"); } @@ -1243,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("搴撳瓨淇濆瓨澶辫触锛侊紒"); @@ -1277,7 +1276,6 @@ if (!stockItemService.saveBatch(stockItems)) { throw new CoolException("搴撳瓨淇敼鏋跺け璐ワ紒锛�"); } - } /** @@ -1408,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("搴撲綅鏄庣粏鏇存柊澶辫触锛侊紒"); @@ -1430,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)) { @@ -1476,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