Commit 67294192f004532b5f4285aa95097d4309a1bdff

Authored by YunaiV
1 parent 71c9a8ad

✨ feat(mes): 优化工单和任务管理功能,增强表单交互逻辑

调整工单表单和任务列表的展示,新增工单完成操作,优化表单数据处理逻辑,提升用户体验。
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/task/MesProTaskServiceImpl.java
... ... @@ -6,12 +6,15 @@ import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
6 6 import cn.iocoder.yudao.module.mes.controller.admin.pro.task.vo.MesProTaskPageReqVO;
7 7 import cn.iocoder.yudao.module.mes.controller.admin.pro.task.vo.MesProTaskSaveReqVO;
8 8 import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO;
  9 +import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO;
9 10 import cn.iocoder.yudao.module.mes.dal.dataobject.pro.task.MesProTaskDO;
  11 +import cn.iocoder.yudao.module.mes.dal.dataobject.pro.workorder.MesProWorkOrderDO;
10 12 import cn.iocoder.yudao.module.mes.dal.mysql.pro.task.MesProTaskMapper;
11 13 import cn.iocoder.yudao.module.mes.enums.md.autocode.MesMdAutoCodeRuleCodeEnum;
12 14 import cn.iocoder.yudao.module.mes.enums.pro.MesProTaskStatusEnum;
13 15 import cn.iocoder.yudao.module.mes.service.md.autocode.MesMdAutoCodeRecordService;
14 16 import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService;
  17 +import cn.iocoder.yudao.module.mes.service.md.unitmeasure.MesMdUnitMeasureService;
15 18 import cn.iocoder.yudao.module.mes.service.md.workstation.MesMdWorkstationService;
16 19 import cn.iocoder.yudao.module.mes.service.pro.process.MesProProcessService;
17 20 import cn.iocoder.yudao.module.mes.service.pro.route.MesProRouteService;
... ... @@ -54,6 +57,8 @@ public class MesProTaskServiceImpl implements MesProTaskService {
54 57 @Resource
55 58 private MesMdItemService itemService;
56 59 @Resource
  60 + private MesMdUnitMeasureService unitMeasureService;
  61 + @Resource
57 62 private MesProRouteService routeService;
58 63 @Resource
59 64 private MesMdAutoCodeRecordService autoCodeRecordService;
... ... @@ -61,17 +66,20 @@ public class MesProTaskServiceImpl implements MesProTaskService {
61 66 @Override
62 67 public Long createTask(MesProTaskSaveReqVO createReqVO) {
63 68 // 1. 校验关联数据存在
64   - workOrderService.validateWorkOrderExists(createReqVO.getWorkOrderId());
  69 + MesProWorkOrderDO workOrder = workOrderService.validateWorkOrderExists(createReqVO.getWorkOrderId());
65 70 workstationService.validateWorkstationExists(createReqVO.getWorkstationId());
66 71 routeService.validateRouteExists(createReqVO.getRouteId());
67 72 processService.validateProcessExists(createReqVO.getProcessId());
68 73 MesMdItemDO item = itemService.validateItemExists(createReqVO.getItemId());
69 74  
70   - // 2.1 构建任务 DO
  75 + // 2.1 构建任务 DO:自动填充客户信息
71 76 MesProTaskDO task = BeanUtils.toBean(createReqVO, MesProTaskDO.class)
72   - .setName(buildTaskName(item.getName(), createReqVO.getQuantity()))
  77 + .setName(buildTaskName(item, createReqVO.getQuantity()))
73 78 .setCode(autoCodeRecordService.generateAutoCode(MesMdAutoCodeRuleCodeEnum.PRO_TASK_CODE.getCode()))
74 79 .setStatus(MesProTaskStatusEnum.PREPARE.getStatus());
  80 + if (task.getClientId() == null && workOrder.getClientId() != null) {
  81 + task.setClientId(workOrder.getClientId());
  82 + }
75 83 // 2.2 插入
76 84 taskMapper.insert(task);
77 85 return task.getId();
... ... @@ -104,18 +112,29 @@ public class MesProTaskServiceImpl implements MesProTaskService {
104 112  
105 113 // 2. 更新
106 114 MesProTaskDO updateObj = BeanUtils.toBean(updateReqVO, MesProTaskDO.class)
107   - .setName(buildTaskName(item.getName(), quantity));
  115 + .setName(buildTaskName(item, quantity));
108 116 taskMapper.updateById(updateObj);
109 117 }
110 118  
111   - private String buildTaskName(String itemName, BigDecimal quantity) {
112   - return itemName + "【" + quantity + "】";
  119 + /**
  120 + * 构建任务名称,格式:"产品名【数量】单位"
  121 + */
  122 + private String buildTaskName(MesMdItemDO item, BigDecimal quantity) {
  123 + String unitName = "";
  124 + if (item.getUnitMeasureId() != null) {
  125 + MesMdUnitMeasureDO unit = unitMeasureService.getUnitMeasure(item.getUnitMeasureId());
  126 + if (unit != null) {
  127 + unitName = unit.getName();
  128 + }
  129 + }
  130 + return item.getName() + "【" + quantity + "】" + unitName;
113 131 }
114 132  
115 133 @Override
116 134 public void deleteTask(Long id) {
117   - // 1. 校验存在
118   - validateTaskExists(id);
  135 + // 1. 校验存在且非终态
  136 + validateTaskNotFinished(id);
  137 +
119 138 // 2. 删除
120 139 taskMapper.deleteById(id);
121 140 }
... ...