| | |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.pro.task.MesProTaskDO; |
| | | 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.enums.md.autocode.MesMdAutoCodeRuleCodeEnum; |
| | | import cn.iocoder.yudao.module.mes.enums.pro.MesProTaskStatusEnum; |
| | | import cn.iocoder.yudao.module.mes.service.md.autocode.MesMdAutoCodeRecordService; |
| | |
| | | import cn.iocoder.yudao.module.mes.service.md.unitmeasure.MesMdUnitMeasureService; |
| | | 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.dal.dataobject.pro.route.MesProRouteProcessDO; |
| | | import cn.iocoder.yudao.module.mes.service.pro.route.MesProRouteProcessService; |
| | | import cn.iocoder.yudao.module.mes.service.pro.route.MesProRouteService; |
| | | import cn.iocoder.yudao.module.mes.service.pro.workorder.MesProWorkOrderService; |
| | | import jakarta.annotation.Resource; |
| | |
| | | import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; |
| | | import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList; |
| | | import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.PRO_TASK_ALREADY_FINISHED; |
| | | import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.PRO_TASK_HAS_FEEDBACK; |
| | | import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.PRO_TASK_NOT_EXISTS; |
| | | |
| | | /** |
| | |
| | | private MesProTaskMapper taskMapper; |
| | | |
| | | @Resource |
| | | private MesProFeedbackMapper feedbackMapper; |
| | | |
| | | @Resource |
| | | @Lazy |
| | | private MesProWorkOrderService workOrderService; |
| | | @Resource |
| | |
| | | @Resource |
| | | private MesProRouteService routeService; |
| | | @Resource |
| | | @Lazy |
| | | private MesProRouteProcessService routeProcessService; |
| | | @Resource |
| | | private MesMdAutoCodeRecordService autoCodeRecordService; |
| | | |
| | | @Override |
| | |
| | | workstationService.validateWorkstationExists(createReqVO.getWorkstationId()); |
| | | routeService.validateRouteExists(createReqVO.getRouteId()); |
| | | processService.validateProcessExistsAndEnable(createReqVO.getProcessId()); |
| | | MesMdItemDO item = itemService.validateItemExists(createReqVO.getItemId()); |
| | | |
| | | // 2.1 构建任务 DO:自动填充客户信息 |
| | | // 2. 自动确定 itemId:优先前端传入 → 工艺路线工序的产出产品 → 工单成品 |
| | | Long itemId = createReqVO.getItemId(); |
| | | if (itemId == null) { |
| | | MesProRouteProcessDO routeProcess = routeProcessService |
| | | .getRouteProcessByRouteIdAndProcessId(createReqVO.getRouteId(), createReqVO.getProcessId()); |
| | | if (routeProcess != null && routeProcess.getOutputItemId() != null) { |
| | | itemId = routeProcess.getOutputItemId(); |
| | | } else { |
| | | itemId = workOrder.getProductId(); |
| | | } |
| | | } |
| | | MesMdItemDO item = itemService.validateItemExists(itemId); |
| | | |
| | | // 3.1 构建任务 DO:自动填充客户信息 |
| | | MesProTaskDO task = BeanUtils.toBean(createReqVO, MesProTaskDO.class) |
| | | .setItemId(itemId) // 确保使用计算后的 itemId |
| | | .setName(buildTaskName(item, createReqVO.getQuantity())) |
| | | .setCode(autoCodeRecordService.generateAutoCode(MesMdAutoCodeRuleCodeEnum.PRO_TASK_CODE.getCode())) |
| | | .setStatus(MesProTaskStatusEnum.PREPARE.getStatus()); |
| | |
| | | public void deleteTask(Long id) { |
| | | // 1. 校验存在且非终态 |
| | | validateTaskNotFinished(id); |
| | | |
| | | // 2. 删除 |
| | | // 2. 校验任务下无报工记录,避免删除后报工追溯断链 |
| | | if (feedbackMapper.selectCountByTaskId(id) > 0) { |
| | | throw exception(PRO_TASK_HAS_FEEDBACK); |
| | | } |
| | | // 3. 删除 |
| | | taskMapper.deleteById(id); |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | @Override |
| | | public PageResult<MesProTaskDO> getPendingFeedbackPage(MesProTaskPageReqVO pageReqVO) { |
| | | return taskMapper.selectPendingFeedbackPage(pageReqVO); |
| | | } |
| | | |
| | | @Override |
| | | public List<MesProTaskDO> getTaskListByWorkOrderIds(Collection<Long> workOrderIds) { |
| | | if (CollUtil.isEmpty(workOrderIds)) { |
| | | return Collections.emptyList(); |