| | |
| | | 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())); |