Commit 3f514a5cc0758435ca51f60397a50c9b463fc0e5

Authored by YunaiV
1 parent 51d64e08

✨ feat(mes): 新增批次管理相关字段和功能

在批次管理中新增多个字段,包括生产任务编号、工具编号、模具编号、生产批号、质量状态以及日期范围等。更新了相关的请求和响应对象,增强了批次查询功能,支持更多筛选条件。

同时,更新了前端组件以支持新的字段和功能,提升用户体验。
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/batch/MesWmBatchController.java
@@ -12,14 +12,18 @@ import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO; @@ -12,14 +12,18 @@ import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO;
12 import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO; 12 import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO;
13 import cn.iocoder.yudao.module.mes.dal.dataobject.md.vendor.MesMdVendorDO; 13 import cn.iocoder.yudao.module.mes.dal.dataobject.md.vendor.MesMdVendorDO;
14 import cn.iocoder.yudao.module.mes.dal.dataobject.md.workstation.MesMdWorkstationDO; 14 import cn.iocoder.yudao.module.mes.dal.dataobject.md.workstation.MesMdWorkstationDO;
  15 +import cn.iocoder.yudao.module.mes.dal.dataobject.pro.task.MesProTaskDO;
15 import cn.iocoder.yudao.module.mes.dal.dataobject.pro.workorder.MesProWorkOrderDO; 16 import cn.iocoder.yudao.module.mes.dal.dataobject.pro.workorder.MesProWorkOrderDO;
  17 +import cn.iocoder.yudao.module.mes.dal.dataobject.tm.tool.MesTmToolDO;
16 import cn.iocoder.yudao.module.mes.dal.dataobject.wm.batch.MesWmBatchDO; 18 import cn.iocoder.yudao.module.mes.dal.dataobject.wm.batch.MesWmBatchDO;
17 import cn.iocoder.yudao.module.mes.service.md.client.MesMdClientService; 19 import cn.iocoder.yudao.module.mes.service.md.client.MesMdClientService;
18 import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService; 20 import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService;
19 import cn.iocoder.yudao.module.mes.service.md.unitmeasure.MesMdUnitMeasureService; 21 import cn.iocoder.yudao.module.mes.service.md.unitmeasure.MesMdUnitMeasureService;
20 import cn.iocoder.yudao.module.mes.service.md.vendor.MesMdVendorService; 22 import cn.iocoder.yudao.module.mes.service.md.vendor.MesMdVendorService;
21 import cn.iocoder.yudao.module.mes.service.md.workstation.MesMdWorkstationService; 23 import cn.iocoder.yudao.module.mes.service.md.workstation.MesMdWorkstationService;
  24 +import cn.iocoder.yudao.module.mes.service.pro.task.MesProTaskService;
22 import cn.iocoder.yudao.module.mes.service.pro.workorder.MesProWorkOrderService; 25 import cn.iocoder.yudao.module.mes.service.pro.workorder.MesProWorkOrderService;
  26 +import cn.iocoder.yudao.module.mes.service.tm.tool.MesTmToolService;
23 import cn.iocoder.yudao.module.mes.service.wm.batch.MesWmBatchService; 27 import cn.iocoder.yudao.module.mes.service.wm.batch.MesWmBatchService;
24 import io.swagger.v3.oas.annotations.Operation; 28 import io.swagger.v3.oas.annotations.Operation;
25 import io.swagger.v3.oas.annotations.Parameter; 29 import io.swagger.v3.oas.annotations.Parameter;
@@ -59,7 +63,11 @@ public class MesWmBatchController { @@ -59,7 +63,11 @@ public class MesWmBatchController {
59 @Resource 63 @Resource
60 private MesProWorkOrderService workOrderService; 64 private MesProWorkOrderService workOrderService;
61 @Resource 65 @Resource
  66 + private MesProTaskService taskService;
  67 + @Resource
62 private MesMdWorkstationService workstationService; 68 private MesMdWorkstationService workstationService;
  69 + @Resource
  70 + private MesTmToolService toolService;
63 71
64 @GetMapping("/get") 72 @GetMapping("/get")
65 @Operation(summary = "获得批次详情") 73 @Operation(summary = "获得批次详情")
@@ -111,8 +119,12 @@ public class MesWmBatchController { @@ -111,8 +119,12 @@ public class MesWmBatchController {
111 convertSet(list, MesWmBatchDO::getClientId)); 119 convertSet(list, MesWmBatchDO::getClientId));
112 Map<Long, MesProWorkOrderDO> workOrderMap = workOrderService.getWorkOrderMap( 120 Map<Long, MesProWorkOrderDO> workOrderMap = workOrderService.getWorkOrderMap(
113 convertSet(list, MesWmBatchDO::getWorkOrderId)); 121 convertSet(list, MesWmBatchDO::getWorkOrderId));
  122 + Map<Long, MesProTaskDO> taskMap = taskService.getTaskMap(
  123 + convertSet(list, MesWmBatchDO::getTaskId));
114 Map<Long, MesMdWorkstationDO> workstationMap = workstationService.getWorkstationMap( 124 Map<Long, MesMdWorkstationDO> workstationMap = workstationService.getWorkstationMap(
115 convertSet(list, MesWmBatchDO::getWorkstationId)); 125 convertSet(list, MesWmBatchDO::getWorkstationId));
  126 + Map<Long, MesTmToolDO> toolMap = toolService.getToolMap(
  127 + convertSet(list, MesWmBatchDO::getToolId));
116 Map<Long, MesMdUnitMeasureDO> unitMeasureMap = unitMeasureService.getUnitMeasureMap( 128 Map<Long, MesMdUnitMeasureDO> unitMeasureMap = unitMeasureService.getUnitMeasureMap(
117 convertSet(itemMap.values(), MesMdItemDO::getUnitMeasureId)); 129 convertSet(itemMap.values(), MesMdItemDO::getUnitMeasureId));
118 // 2. 构建结果 130 // 2. 构建结果
@@ -129,8 +141,12 @@ public class MesWmBatchController { @@ -129,8 +141,12 @@ public class MesWmBatchController {
129 client -> vo.setClientCode(client.getCode()).setClientName(client.getName())); 141 client -> vo.setClientCode(client.getCode()).setClientName(client.getName()));
130 MapUtils.findAndThen(workOrderMap, vo.getWorkOrderId(), 142 MapUtils.findAndThen(workOrderMap, vo.getWorkOrderId(),
131 workOrder -> vo.setWorkOrderCode(workOrder.getCode())); 143 workOrder -> vo.setWorkOrderCode(workOrder.getCode()));
  144 + MapUtils.findAndThen(taskMap, vo.getTaskId(),
  145 + task -> vo.setTaskCode(task.getCode()));
132 MapUtils.findAndThen(workstationMap, vo.getWorkstationId(), 146 MapUtils.findAndThen(workstationMap, vo.getWorkstationId(),
133 workstation -> vo.setWorkstationCode(workstation.getCode())); 147 workstation -> vo.setWorkstationCode(workstation.getCode()));
  148 + MapUtils.findAndThen(toolMap, vo.getToolId(),
  149 + tool -> vo.setToolCode(tool.getCode()));
134 }); 150 });
135 } 151 }
136 152
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/batch/vo/MesWmBatchPageReqVO.java
@@ -5,6 +5,11 @@ import io.swagger.v3.oas.annotations.media.Schema; @@ -5,6 +5,11 @@ import io.swagger.v3.oas.annotations.media.Schema;
5 import lombok.Data; 5 import lombok.Data;
6 import lombok.EqualsAndHashCode; 6 import lombok.EqualsAndHashCode;
7 import lombok.ToString; 7 import lombok.ToString;
  8 +import org.springframework.format.annotation.DateTimeFormat;
  9 +
  10 +import java.time.LocalDateTime;
  11 +
  12 +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
8 13
9 @Schema(description = "管理后台 - MES 批次管理分页 Request VO") 14 @Schema(description = "管理后台 - MES 批次管理分页 Request VO")
10 @Data 15 @Data
@@ -33,4 +38,34 @@ public class MesWmBatchPageReqVO extends PageParam { @@ -33,4 +38,34 @@ public class MesWmBatchPageReqVO extends PageParam {
33 @Schema(description = "生产工单编号", example = "1") 38 @Schema(description = "生产工单编号", example = "1")
34 private Long workOrderId; 39 private Long workOrderId;
35 40
  41 + @Schema(description = "生产任务编号", example = "1")
  42 + private Long taskId;
  43 +
  44 + @Schema(description = "工作站编号", example = "1")
  45 + private Long workstationId;
  46 +
  47 + @Schema(description = "工具编号", example = "1")
  48 + private Long toolId;
  49 +
  50 + @Schema(description = "模具编号", example = "1")
  51 + private Long moldId;
  52 +
  53 + @Schema(description = "生产批号", example = "LOT20250314001")
  54 + private String lotNumber;
  55 +
  56 + @Schema(description = "质量状态", example = "1")
  57 + private Integer qualityStatus;
  58 +
  59 + @Schema(description = "生产日期")
  60 + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
  61 + private LocalDateTime[] produceDate;
  62 +
  63 + @Schema(description = "有效期")
  64 + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
  65 + private LocalDateTime[] expireDate;
  66 +
  67 + @Schema(description = "入库日期")
  68 + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
  69 + private LocalDateTime[] receiptDate;
  70 +
36 } 71 }
37 \ No newline at end of file 72 \ No newline at end of file
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/batch/vo/MesWmBatchRespVO.java
@@ -72,6 +72,9 @@ public class MesWmBatchRespVO { @@ -72,6 +72,9 @@ public class MesWmBatchRespVO {
72 @Schema(description = "生产任务 ID", example = "1") 72 @Schema(description = "生产任务 ID", example = "1")
73 private Long taskId; 73 private Long taskId;
74 74
  75 + @Schema(description = "生产任务编号", example = "TASK20250314001")
  76 + private String taskCode;
  77 +
75 @Schema(description = "工作站 ID", example = "1") 78 @Schema(description = "工作站 ID", example = "1")
76 private Long workstationId; 79 private Long workstationId;
77 80
@@ -81,6 +84,9 @@ public class MesWmBatchRespVO { @@ -81,6 +84,9 @@ public class MesWmBatchRespVO {
81 @Schema(description = "工具 ID", example = "1") 84 @Schema(description = "工具 ID", example = "1")
82 private Long toolId; 85 private Long toolId;
83 86
  87 + @Schema(description = "工具编号", example = "TOOL001")
  88 + private String toolCode;
  89 +
84 @Schema(description = "模具 ID", example = "1") 90 @Schema(description = "模具 ID", example = "1")
85 private Long moldId; 91 private Long moldId;
86 92
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/batch/MesWmBatchMapper.java
@@ -33,6 +33,15 @@ public interface MesWmBatchMapper extends BaseMapperX&lt;MesWmBatchDO&gt; { @@ -33,6 +33,15 @@ public interface MesWmBatchMapper extends BaseMapperX&lt;MesWmBatchDO&gt; {
33 .likeIfPresent(MesWmBatchDO::getSalesOrderCode, reqVO.getSalesOrderCode()) 33 .likeIfPresent(MesWmBatchDO::getSalesOrderCode, reqVO.getSalesOrderCode())
34 .likeIfPresent(MesWmBatchDO::getPurchaseOrderCode, reqVO.getPurchaseOrderCode()) 34 .likeIfPresent(MesWmBatchDO::getPurchaseOrderCode, reqVO.getPurchaseOrderCode())
35 .eqIfPresent(MesWmBatchDO::getWorkOrderId, reqVO.getWorkOrderId()) 35 .eqIfPresent(MesWmBatchDO::getWorkOrderId, reqVO.getWorkOrderId())
  36 + .eqIfPresent(MesWmBatchDO::getTaskId, reqVO.getTaskId())
  37 + .eqIfPresent(MesWmBatchDO::getWorkstationId, reqVO.getWorkstationId())
  38 + .eqIfPresent(MesWmBatchDO::getToolId, reqVO.getToolId())
  39 + .eqIfPresent(MesWmBatchDO::getMoldId, reqVO.getMoldId())
  40 + .likeIfPresent(MesWmBatchDO::getLotNumber, reqVO.getLotNumber())
  41 + .eqIfPresent(MesWmBatchDO::getQualityStatus, reqVO.getQualityStatus())
  42 + .betweenIfPresent(MesWmBatchDO::getProduceDate, reqVO.getProduceDate())
  43 + .betweenIfPresent(MesWmBatchDO::getExpireDate, reqVO.getExpireDate())
  44 + .betweenIfPresent(MesWmBatchDO::getReceiptDate, reqVO.getReceiptDate())
36 .orderByDesc(MesWmBatchDO::getId)); 45 .orderByDesc(MesWmBatchDO::getId));
37 } 46 }
38 47
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/tm/tool/MesTmToolService.java
@@ -6,7 +6,11 @@ import cn.iocoder.yudao.module.mes.controller.admin.tm.tool.vo.MesTmToolSaveReqV @@ -6,7 +6,11 @@ import cn.iocoder.yudao.module.mes.controller.admin.tm.tool.vo.MesTmToolSaveReqV
6 import cn.iocoder.yudao.module.mes.dal.dataobject.tm.tool.MesTmToolDO; 6 import cn.iocoder.yudao.module.mes.dal.dataobject.tm.tool.MesTmToolDO;
7 import jakarta.validation.Valid; 7 import jakarta.validation.Valid;
8 8
  9 +import java.util.Collection;
9 import java.util.List; 10 import java.util.List;
  11 +import java.util.Map;
  12 +
  13 +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap;
10 14
11 /** 15 /**
12 * MES 工具台账 Service 接口 16 * MES 工具台账 Service 接口
@@ -60,4 +64,22 @@ public interface MesTmToolService { @@ -60,4 +64,22 @@ public interface MesTmToolService {
60 */ 64 */
61 List<MesTmToolDO> getToolList(); 65 List<MesTmToolDO> getToolList();
62 66
  67 + /**
  68 + * 获得工具列表
  69 + *
  70 + * @param ids 编号列表
  71 + * @return 工具列表
  72 + */
  73 + List<MesTmToolDO> getToolList(Collection<Long> ids);
  74 +
  75 + /**
  76 + * 获得工具 Map
  77 + *
  78 + * @param ids 编号列表
  79 + * @return 工具 Map
  80 + */
  81 + default Map<Long, MesTmToolDO> getToolMap(Collection<Long> ids) {
  82 + return convertMap(getToolList(ids), MesTmToolDO::getId);
  83 + }
  84 +
63 } 85 }
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/tm/tool/MesTmToolServiceImpl.java
@@ -15,6 +15,7 @@ import org.springframework.context.annotation.Lazy; @@ -15,6 +15,7 @@ import org.springframework.context.annotation.Lazy;
15 import org.springframework.stereotype.Service; 15 import org.springframework.stereotype.Service;
16 import org.springframework.validation.annotation.Validated; 16 import org.springframework.validation.annotation.Validated;
17 17
  18 +import java.util.Collection;
18 import java.util.List; 19 import java.util.List;
19 import java.util.Objects; 20 import java.util.Objects;
20 21
@@ -123,4 +124,12 @@ public class MesTmToolServiceImpl implements MesTmToolService { @@ -123,4 +124,12 @@ public class MesTmToolServiceImpl implements MesTmToolService {
123 return toolMapper.selectList(); 124 return toolMapper.selectList();
124 } 125 }
125 126
  127 + @Override
  128 + public List<MesTmToolDO> getToolList(Collection<Long> ids) {
  129 + if (ids == null || ids.isEmpty()) {
  130 + return List.of();
  131 + }
  132 + return toolMapper.selectBatchIds(ids);
  133 + }
  134 +
126 } 135 }