xiaoyi
3 天以前 fae95228037f0c1304c1917ae5fff452f2160c5a
yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/sale/ErpSaleOrderServiceImpl.java
@@ -605,6 +605,17 @@
            throw exception(SALE_ORDER_CANCEL_FAIL_EXISTS_OUT);
        }
        // 销售订单审核后可能已生成 MPS。未取消的计划不能随着订单作废继续执行。
        List<ErpSaleOrderItemDO> orderItems = saleOrderItemMapper.selectListByOrderId(id);
        if (CollUtil.isNotEmpty(orderItems)) {
            List<Long> itemIds = convertList(orderItems, ErpSaleOrderItemDO::getId);
            List<MesProMpsRespDTO> plans = mpsApi.getMpsListBySaleOrderItemIds(itemIds);
            if (plans == null) throw exception(SALE_ORDER_CANCEL_FAIL_MPS_UNKNOWN);
            if (plans.stream().anyMatch(plan -> plan == null || ObjectUtil.notEqual(plan.getStatus(), MPS_STATUS_CANCELED))) {
                throw exception(SALE_ORDER_CANCEL_FAIL_ACTIVE_MPS);
            }
        }
        // 2. 更新状态为已作废
        int updateCount = saleOrderMapper.updateByIdAndStatus(id, saleOrder.getStatus(),
                new ErpSaleOrderDO().setStatus(ErpAuditStatus.CANCEL.getStatus()));