| | |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.md.workstation.MesMdWorkstationMachineDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.pro.task.MesProTaskDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.pro.process.MesProProcessParamDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.pro.workorder.MesProWorkOrderDO; |
| | | import cn.iocoder.yudao.module.mes.dal.mysql.pro.task.MesProTaskMapper; |
| | | import cn.iocoder.yudao.module.mes.dal.mysql.pro.feedback.MesProFeedbackMapper; |
| | |
| | | import cn.iocoder.yudao.module.mes.service.md.workstation.MesMdWorkstationMachineService; |
| | | import cn.iocoder.yudao.module.mes.service.md.workstation.MesMdWorkstationService; |
| | | import cn.iocoder.yudao.module.mes.service.pro.process.MesProProcessService; |
| | | import cn.iocoder.yudao.module.mes.service.pro.process.MesProProcessParamService; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.pro.route.MesProRouteProcessDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.pro.route.MesProRouteDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.pro.route.MesProRouteProductDO; |
| | |
| | | import cn.iocoder.yudao.module.mes.service.pro.workorder.MesProWorkOrderService; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.pro.workorder.MesProWorkOrderProcessDO; |
| | | import cn.iocoder.yudao.module.mes.service.pro.workorder.MesProWorkOrderProcessService; |
| | | import cn.iocoder.yudao.module.mes.service.pro.workorder.MesProWorkOrderParamRecordService; |
| | | import jakarta.annotation.Resource; |
| | | import org.springframework.context.annotation.Lazy; |
| | | import org.springframework.stereotype.Service; |
| | |
| | | @Lazy |
| | | private MesProWorkOrderProcessService workOrderProcessService; |
| | | @Resource |
| | | @Lazy |
| | | private MesProWorkOrderParamRecordService workOrderParamRecordService; |
| | | @Resource |
| | | @Lazy |
| | | private MesProProcessParamService processParamService; |
| | | @Resource |
| | | private MesMdAutoCodeRecordService autoCodeRecordService; |
| | | @Resource |
| | | private MesMdWorkstationMachineService workstationMachineService; |
| | |
| | | } |
| | | // 2.2 插入 |
| | | taskMapper.insert(task); |
| | | |
| | | // 2.2.1 参数快照:优先使用模板;无模板时回退到工序主数据绑定的工艺参数 |
| | | createTaskParamRecordWithFallback(task); |
| | | |
| | | // 2.3 保存指定报工人员 |
| | | updateTaskAssignees(task.getId(), createReqVO.getAssigneeUserIds()); |
| | | |
| | | |
| | | return task.getId(); |
| | | } |
| | | |
| | | /** |
| | | * 为任务固化参数快照:优先使用路线/工单工序绑定的参数模板;无模板时回退到工序主数据绑定的工艺参数 |
| | | */ |
| | | private void createTaskParamRecordWithFallback(MesProTaskDO task) { |
| | | if (task.getParamTemplateId() != null) { |
| | | workOrderParamRecordService.createTaskParamRecord(task.getId(), task.getParamTemplateId()); |
| | | return; |
| | | } |
| | | // 无模板:从工序主数据解析绑定的工艺参数 |
| | | List<MesProProcessParamDO> processParams = processParamService.getProcessParamListByProcessId(task.getProcessId()); |
| | | if (CollUtil.isNotEmpty(processParams)) { |
| | | workOrderParamRecordService.createTaskParamRecordFromProcessParams(task.getId(), processParams); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | |
| | | result.add(new MesProRouteProcessDO() |
| | | .setRouteId(routeId) |
| | | .setProcessId(wp.getProcessId()) |
| | | .setParamTemplateId(wp.getParamTemplateId()) |
| | | .setSort(wp.getSort()) |
| | | .setKeyFlag(wp.getKeyFlag()) |
| | | .setCheckFlag(wp.getCheckFlag()) |
| | |
| | | validateTaskExists(id); |
| | | // 更新数量 |
| | | taskMapper.updateProducedQuantity(id, incrProducedQuantity, incrQualifyQuantity, incrUnqualifyQuantity); |
| | | MesProTaskDO task = taskMapper.selectById(id); |
| | | if (task != null) { |
| | | LocalDateTime now = LocalDateTime.now(); |
| | | MesProTaskDO timeUpdate = new MesProTaskDO().setId(id).setLastFeedbackTime(now); |
| | | if (task.getFirstFeedbackTime() == null) { |
| | | timeUpdate.setFirstFeedbackTime(now); |
| | | } |
| | | taskMapper.updateById(timeUpdate); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | |
| | | .setName(buildTaskName(item, workOrder.getQuantity())) |
| | | .setCode(autoCodeRecordService.generateAutoCode(MesMdAutoCodeRuleCodeEnum.PRO_TASK_CODE.getCode())) |
| | | .setStatus(MesProTaskStatusEnum.PREPARE.getStatus()) |
| | | .setParamTemplateId(rp.getParamTemplateId()) |
| | | .setClientId(workOrder.getClientId()) |
| | | .setColorCode(rp.getColorCode()); |
| | | taskMapper.insert(task); |
| | | // 参数快照:优先使用模板;无模板时回退到工序主数据绑定的工艺参数 |
| | | createTaskParamRecordWithFallback(task); |
| | | taskIds.add(task.getId()); |
| | | } |
| | | // 7. 更新工单已排产数量 |