cl
1 天以前 43d6ae86bc229a1a75637fae33be378e105016e3
rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/ReceiveMsgServiceImpl.java
@@ -118,7 +118,34 @@
    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
@@ -465,6 +492,7 @@
                    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
@@ -943,6 +971,7 @@
            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())
@@ -1006,6 +1035,7 @@
                throw new CoolException("单据不存在,无法取消!!请提供单据内码(orderInternalCode)或单号(orderNo)。");
            }
            final WkOrder finalWkOrder = wkOrder;
            assertWkOrderNoLinkedTask(finalWkOrder.getId());
            // 已组托不可取消
            long pakinCount = waitPakinItemService.count(new LambdaQueryWrapper<WaitPakinItem>()
                    .eq(WaitPakinItem::getAsnId, finalWkOrder.getId()));