xiaoyi
2 天以前 1dfdc3b0611211feba0570ec6d8cfad078c37135
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/workorder/MesProWorkOrderServiceImpl.java
@@ -225,6 +225,20 @@
        if (ObjUtil.notEqual(workOrder.getStatus(), MesProWorkOrderStatusEnum.CONFIRMED.getStatus())) {
            throw exception(PRO_WORK_ORDER_NOT_CONFIRMED);
        }
        if (workOrder.getQuantityProduced() == null
                || workOrder.getQuantity() == null
                || workOrder.getQuantityProduced().compareTo(workOrder.getQuantity()) < 0) {
            throw exception(PRO_WORK_ORDER_PRODUCTION_NOT_COMPLETE);
        }
        // 校验每个任务的实际产出是否已达成计划数量(任务状态只有在工单完成时由级联方法置为已完成,不能在此校验状态)
        List<MesProTaskDO> tasks = taskService.getTaskListByWorkOrderIds(Collections.singletonList(id));
        boolean hasUnfinishedTask = CollUtil.isEmpty(tasks) || tasks.stream().anyMatch(task ->
                task.getProducedQuantity() == null
                        || task.getQuantity() == null
                        || task.getProducedQuantity().compareTo(task.getQuantity()) < 0);
        if (hasUnfinishedTask) {
            throw exception(PRO_WORK_ORDER_PRODUCTION_NOT_COMPLETE);
        }
        // 2. 级联完成所有关联任务
        taskService.finishTaskByOrderId(id);