gaoluyang
15 小时以前 cea8396d93b31fe6037a0558febcabb2169363a8
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productissue/MesWmProductIssueServiceImpl.java
@@ -90,13 +90,16 @@
        // 1. 校验关联数据
        validateProductIssueSaveData(createReqVO);
        // 2. 从 task 自动带入 workOrderId 和 workstationId
        MesProTaskDO task = taskService.validateTaskExists(createReqVO.getTaskId());
        if (createReqVO.getWorkOrderId() == null) {
            createReqVO.setWorkOrderId(task.getWorkOrderId());
        }
        if (createReqVO.getWorkstationId() == null) {
            createReqVO.setWorkstationId(task.getWorkstationId());
        // 2. 从 task 自动带入 workOrderId 和 workstationId;
        //    生产任务改为可选:手填单据不传 taskId,工单与工作站由人工填写,不自动带入
        if (createReqVO.getTaskId() != null) {
            MesProTaskDO task = taskService.validateTaskExists(createReqVO.getTaskId());
            if (createReqVO.getWorkOrderId() == null) {
                createReqVO.setWorkOrderId(task.getWorkOrderId());
            }
            if (createReqVO.getWorkstationId() == null) {
                createReqVO.setWorkstationId(task.getWorkstationId());
            }
        }
        // 3. 插入主表
@@ -114,13 +117,16 @@
        // 1.2 校验关联数据
        validateProductIssueSaveData(updateReqVO);
        // 2. 从 task 自动带入 workOrderId 和 workstationId
        MesProTaskDO task = taskService.validateTaskExists(updateReqVO.getTaskId());
        if (updateReqVO.getWorkOrderId() == null) {
            updateReqVO.setWorkOrderId(task.getWorkOrderId());
        }
        if (updateReqVO.getWorkstationId() == null) {
            updateReqVO.setWorkstationId(task.getWorkstationId());
        // 2. 从 task 自动带入 workOrderId 和 workstationId;
        //    生产任务改为可选:手填单据不传 taskId,工单与工作站由人工填写,不自动带入
        if (updateReqVO.getTaskId() != null) {
            MesProTaskDO task = taskService.validateTaskExists(updateReqVO.getTaskId());
            if (updateReqVO.getWorkOrderId() == null) {
                updateReqVO.setWorkOrderId(task.getWorkOrderId());
            }
            if (updateReqVO.getWorkstationId() == null) {
                updateReqVO.setWorkstationId(task.getWorkstationId());
            }
        }
        // 3. 更新主表
@@ -398,12 +404,17 @@
     */
    private void validateProductIssueSaveData(MesWmProductIssueSaveReqVO reqVO) {
        validateCodeUnique(reqVO.getId(), reqVO.getCode());
        // 校验 task 存在
        MesProTaskDO task = taskService.validateTaskExists(reqVO.getTaskId());
        // 校验 task 关联的工单已确认
        Long workOrderId = reqVO.getWorkOrderId() != null ? reqVO.getWorkOrderId() : task.getWorkOrderId();
        if (workOrderId != null) {
            workOrderService.validateWorkOrderConfirmed(workOrderId);
        // 生产任务改为可选:传了才校验任务存在,并按任务带出的工单校验已确认
        if (reqVO.getTaskId() != null) {
            MesProTaskDO task = taskService.validateTaskExists(reqVO.getTaskId());
            // 校验 task 关联的工单已确认
            Long workOrderId = reqVO.getWorkOrderId() != null ? reqVO.getWorkOrderId() : task.getWorkOrderId();
            if (workOrderId != null) {
                workOrderService.validateWorkOrderConfirmed(workOrderId);
            }
        } else if (reqVO.getWorkOrderId() != null) {
            // 没传 taskId 但传了 workOrderId,仍校验工单已确认
            workOrderService.validateWorkOrderConfirmed(reqVO.getWorkOrderId());
        }
        if (reqVO.getWorkstationId() != null) {
            workstationService.validateWorkstationExistsAndEnable(reqVO.getWorkstationId());