From 8431b44378b9d5e1805a7a582529fd953955f64a Mon Sep 17 00:00:00 2001 From: YunaiV Date: Thu, 19 Mar 2026 08:40:56 +0800 Subject: [PATCH] ✨ feat(mes): 添加报工人和审核人字段,优化审批逻辑 --- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/feedback/MesProFeedbackController.java | 5 ++--- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/feedback/vo/MesProFeedbackRespVO.java | 2 +- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/feedback/vo/MesProFeedbackSaveReqVO.java | 16 ++++++++++++++++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/route/MesProRouteProcessController.java | 12 ++++++++++++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/task/MesProTaskController.java | 5 +++-- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/feedback/MesProFeedbackService.java | 4 ++-- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/feedback/MesProFeedbackServiceImpl.java | 6 +++--- 7 files changed, 39 insertions(+), 11 deletions(-) diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/feedback/MesProFeedbackController.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/feedback/MesProFeedbackController.java index ac9afe3..f197a82 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/feedback/MesProFeedbackController.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/feedback/MesProFeedbackController.java @@ -155,7 +155,7 @@ public class MesProFeedbackController { @Operation(summary = "审批报工") @Parameter(name = "id", description = "编号", required = true) @PreAuthorize("@ss.hasPermission('mes:pro-feedback:approve')") - public CommonResult approveFeedback(@RequestParam("id") Long id) { + public CommonResult approveFeedback(@RequestParam("id") Long id) { return success(feedbackService.approveFeedback(id)); } @@ -220,8 +220,7 @@ public class MesProFeedbackController { vo.setTaskCode(task.getCode())); // 物料 → 单位 findAndThen(itemMap, vo.getItemId(), item -> { - // TODO @AI:specification 全称 - vo.setItemCode(item.getCode()).setItemName(item.getName()).setItemSpec(item.getSpecification()) + vo.setItemCode(item.getCode()).setItemName(item.getName()).setItemSpecification(item.getSpecification()) .setUnitMeasureId(item.getUnitMeasureId()); findAndThen(unitMeasureMap, item.getUnitMeasureId(), unit -> vo.setUnitMeasureName(unit.getName())); diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/feedback/vo/MesProFeedbackRespVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/feedback/vo/MesProFeedbackRespVO.java index 425cbb0..3920840 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/feedback/vo/MesProFeedbackRespVO.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/feedback/vo/MesProFeedbackRespVO.java @@ -98,7 +98,7 @@ public class MesProFeedbackRespVO { @Schema(description = "规格型号", example = "一字型") @ExcelProperty("规格型号") - private String itemSpec; + private String itemSpecification; @Schema(description = "单位编号", example = "202") private Long unitMeasureId; diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/feedback/vo/MesProFeedbackSaveReqVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/feedback/vo/MesProFeedbackSaveReqVO.java index 8e9e746..20bf5e6 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/feedback/vo/MesProFeedbackSaveReqVO.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/feedback/vo/MesProFeedbackSaveReqVO.java @@ -42,6 +42,10 @@ public class MesProFeedbackSaveReqVO { @NotNull(message = "生产任务不能为空") private Long taskId; + @Schema(description = "产品物料编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "100") + @NotNull(message = "产品物料不能为空") + private Long itemId; + @Schema(description = "过期日期") private LocalDateTime expireDate; @@ -70,6 +74,18 @@ public class MesProFeedbackSaveReqVO { @Schema(description = "其他废品数量", example = "0") private BigDecimal otherScrapQuantity; + @Schema(description = "报工人编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @NotNull(message = "报工人不能为空") + private Long feedbackUserId; + + @Schema(description = "报工时间", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "报工时间不能为空") + private LocalDateTime feedbackTime; + + @Schema(description = "审核人编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @NotNull(message = "审核人不能为空") + private Long approveUserId; + @Schema(description = "备注", example = "备注") private String remark; diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/route/MesProRouteProcessController.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/route/MesProRouteProcessController.java index ed50c56..d09cad6 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/route/MesProRouteProcessController.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/route/MesProRouteProcessController.java @@ -93,6 +93,18 @@ public class MesProRouteProcessController { return success(buildRouteProcessRespVOList(list)); } + @GetMapping("/get-by-route-and-process") + @Operation(summary = "按工艺路线+工序获得工序配置") + @Parameter(name = "routeId", description = "工艺路线编号", required = true, example = "1") + @Parameter(name = "processId", description = "工序编号", required = true, example = "1") + @PreAuthorize("@ss.hasPermission('mes:pro-route:query')") + public CommonResult getRouteProcessByRouteAndProcess( + @RequestParam("routeId") Long routeId, + @RequestParam("processId") Long processId) { + MesProRouteProcessDO routeProcess = routeProcessService.getRouteProcessByRouteIdAndProcessId(routeId, processId); + return success(buildRouteProcessRespVO(routeProcess)); + } + // ==================== 拼接 VO ==================== private List buildRouteProcessRespVOList(List list) { diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/task/MesProTaskController.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/task/MesProTaskController.java index 914546d..d5b68c5 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/task/MesProTaskController.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/task/MesProTaskController.java @@ -128,8 +128,9 @@ public class MesProTaskController { List list = taskService.getTaskListByWorkOrderId(workOrderId); return success(convertList(list, task -> new MesProTaskRespVO() .setId(task.getId()).setCode(task.getCode()).setName(task.getName()) - .setWorkOrderId(task.getWorkOrderId()).setProcessId(task.getProcessId()) - .setStatus(task.getStatus()))); + .setWorkOrderId(task.getWorkOrderId()).setWorkstationId(task.getWorkstationId()) + .setRouteId(task.getRouteId()).setProcessId(task.getProcessId()) + .setItemId(task.getItemId()).setStatus(task.getStatus()))); } @GetMapping("/gantt-list") diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/feedback/MesProFeedbackService.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/feedback/MesProFeedbackService.java index e1cce92..814ede0 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/feedback/MesProFeedbackService.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/feedback/MesProFeedbackService.java @@ -69,9 +69,9 @@ public interface MesProFeedbackService { * 审批报工(审批中 -> 已完成 或 待检验) * * @param id 编号 - * @return 审批后的状态 + * @return true=已完成, false=待检验 */ - Integer approveFeedback(Long id); + boolean approveFeedback(Long id); } diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/feedback/MesProFeedbackServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/feedback/MesProFeedbackServiceImpl.java index 2df77f9..a3dbff2 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/feedback/MesProFeedbackServiceImpl.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/feedback/MesProFeedbackServiceImpl.java @@ -121,10 +121,10 @@ public class MesProFeedbackServiceImpl implements MesProFeedbackService { .setStatus(MesProFeedbackStatusEnum.PREPARE.getStatus())); } - // TODO @AI:要不改成 boolean:看是不是 finish;如果非 finish 说明要前端提示“报工成功,请等待质量检验完成!” + // DONE @AI:改成 boolean:true 表示已完成;false 表示待检验,前端需提示"报工成功,请等待质量检验完成!" @Override @Transactional(rollbackFor = Exception.class) - public Integer approveFeedback(Long id) { + public boolean approveFeedback(Long id) { // TODO @AI: 逻辑需要继续跟进; // 1.1 校验存在 + 审批中状态 MesProFeedbackDO feedback = validateFeedbackStatusApproving(id); @@ -157,7 +157,7 @@ public class MesProFeedbackServiceImpl implements MesProFeedbackService { // TODO @芋艿:WM 产品产出(WmProductProduceService)未迁移,此处需补充产品产出逻辑 // TODO @芋艿:updateProTaskAndWorkorder 待 pro_task 服务迁移后补充级联更新任务/工单的已生产数量 } - return targetStatus; + return BooleanUtil.isFalse(checkFlag); // true=已完成, false=待检验 } // ==================== 校验方法 ==================== -- libgit2 0.21.4