feat(mes): 生产计划取消时增加关联工单报工校验
- 新增错误码 PRO_MPS_WORK_ORDER_HAS_FEEDBACK,提示文案为“该计划关联的生产订单已有报工记录,无法取消!”
- 优化 MesProMpsServiceImpl.cancelMps 逻辑,在执行取消操作前检查 mes_pro_feedback 表,若该计划关联的生产订单已被排产且已有报工记录,则拦截并阻止取消操作。
| | |
| | | ErrorCode PRO_MPS_CODE_DUPLICATE = new ErrorCode(1_040_509_006, "MPS 编码已存在"); |
| | | ErrorCode PRO_MPS_HAS_WORK_ORDER = new ErrorCode(1_040_509_007, "MPS 已关联生产工单,无法删除"); |
| | | ErrorCode PRO_MPS_MES_PRODUCT_NOT_EXISTS = new ErrorCode(1_040_509_008, "MES 产品不存在,无法创建 MPS,产品:{}"); |
| | | ErrorCode PRO_MPS_WORK_ORDER_HAS_FEEDBACK = new ErrorCode(1_040_509_009, "该计划关联的生产订单已有报工记录,无法取消!"); |
| | | |
| | | // ========== MES 质量管理-质检方案(1-040-600-000) ========== |
| | | ErrorCode QC_TEMPLATE_NOT_EXISTS = new ErrorCode(1_040_600_000, "质检方案不存在"); |
| | |
| | | |
| | | // 级联取消关联的生产工单(跟随工单当前状态,且不误伤合并下发的共享工单) |
| | | if (mps.getWorkOrderId() != null) { |
| | | // 新增逻辑:若该工单有报工记录,则不允许取消 MPS |
| | | Long feedbackCount = feedbackMapper.selectCount(MesProFeedbackDO::getWorkOrderId, mps.getWorkOrderId()); |
| | | if (feedbackCount != null && feedbackCount > 0) { |
| | | throw exception(PRO_MPS_WORK_ORDER_HAS_FEEDBACK); |
| | | } |
| | | |
| | | // 1. 统计该工单被多少条 MPS 引用:合并下发的多条 MPS 共享同一个工单 |
| | | Long refCount = mpsMapper.selectCount(MesProMpsDO::getWorkOrderId, mps.getWorkOrderId()); |
| | | if (refCount != null && refCount > 1) { |