| | |
| | | private WarehouseAreasItemService warehouseAreasItemService; |
| | | @Autowired |
| | | private ConfigService configService; |
| | | @Autowired |
| | | private TaskItemService taskItemService; |
| | | @Autowired |
| | | private TaskService taskService; |
| | | |
| | | /** |
| | | * 云仓改单/取消前:任务明细已关联该单据且主任务未逻辑删除则不允许 |
| | | */ |
| | | private void assertWkOrderNoLinkedTask(Long wkOrderId) { |
| | | if (wkOrderId == null) { |
| | | return; |
| | | } |
| | | List<TaskItem> links = taskItemService.list(new LambdaQueryWrapper<TaskItem>() |
| | | .select(TaskItem::getTaskId) |
| | | .and(w -> w.eq(TaskItem::getOrderId, wkOrderId) |
| | | .or(o -> o.eq(TaskItem::getSourceId, wkOrderId) |
| | | .eq(TaskItem::getOrderType, OrderType.ORDER_OUT.type)))); |
| | | if (links.isEmpty()) { |
| | | return; |
| | | } |
| | | Set<Long> taskIds = links.stream().map(TaskItem::getTaskId).filter(Objects::nonNull).collect(Collectors.toSet()); |
| | | if (taskIds.isEmpty()) { |
| | | return; |
| | | } |
| | | if (taskService.count(new LambdaQueryWrapper<Task>().in(Task::getId, taskIds)) > 0) { |
| | | throw new CoolException("该单据已生成任务,不可修改、取消或删除!!"); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * @author Ryan |
| | |
| | | WkOrder order = asnOrderService.getOne(new LambdaQueryWrapper<WkOrder>() |
| | | .eq(WkOrder::getPoCode, syncOrder.getOrderInternalCode())); |
| | | if (!Objects.isNull(order)) { |
| | | assertWkOrderNoLinkedTask(order.getId()); |
| | | // 仅未执行状态可被 order/add 修改(入库未执行、出库任务初始) |
| | | List<Short> editableStatus = Arrays.asList(AsnExceStatus.ASN_EXCE_STATUS_UN_EXCE.val |
| | | ,AsnExceStatus.ASN_EXCE_STATUS_UN_EXCE.val |
| | |
| | | if (Objects.isNull(wkOrder)) { |
| | | throw new CoolException("请确认单据:" + order.getOrderNo() + "是否已经执行或是否同步!!"); |
| | | } |
| | | assertWkOrderNoLinkedTask(wkOrder.getId()); |
| | | order.getOrderItems().forEach(orderItem -> { |
| | | WkOrderItem wkOrderItem = asnOrderItemService.getOne(new LambdaUpdateWrapper<WkOrderItem>() |
| | | .eq(WkOrderItem::getMatnrCode, orderItem.getMatnr()) |
| | |
| | | throw new CoolException("单据不存在,无法取消!!请提供单据内码(orderInternalCode)或单号(orderNo)。"); |
| | | } |
| | | final WkOrder finalWkOrder = wkOrder; |
| | | assertWkOrderNoLinkedTask(finalWkOrder.getId()); |
| | | // 已组托不可取消 |
| | | long pakinCount = waitPakinItemService.count(new LambdaQueryWrapper<WaitPakinItem>() |
| | | .eq(WaitPakinItem::getAsnId, finalWkOrder.getId())); |