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