From 660a851527ae52e1de66e62df3285937b72be93c Mon Sep 17 00:00:00 2001 From: YunaiV Date: Thu, 19 Mar 2026 23:55:27 +0800 Subject: [PATCH] ✨ feat(mes): 添加物料消耗记录行的请求和响应 VO 及控制器 --- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/itemconsume/MesWmItemConsumeLineController.java | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/itemconsume/vo/MesWmItemConsumeLinePageReqVO.java | 18 ++++++++++++++++++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/itemconsume/vo/MesWmItemConsumeLineRespVO.java | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/itemconsume/MesWmItemConsumeLineMapper.java | 12 ++++++++---- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/itemconsume/MesWmItemConsumeMapper.java | 4 ++++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/itemconsume/MesWmItemConsumeLineService.java | 10 ++++++---- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/itemconsume/MesWmItemConsumeLineServiceImpl.java | 18 ++++++++++++++++-- 7 files changed, 169 insertions(+), 10 deletions(-) create mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/itemconsume/MesWmItemConsumeLineController.java create mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/itemconsume/vo/MesWmItemConsumeLinePageReqVO.java create mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/itemconsume/vo/MesWmItemConsumeLineRespVO.java diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/itemconsume/MesWmItemConsumeLineController.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/itemconsume/MesWmItemConsumeLineController.java new file mode 100644 index 0000000..edeb614 --- /dev/null +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/itemconsume/MesWmItemConsumeLineController.java @@ -0,0 +1,66 @@ +package cn.iocoder.yudao.module.mes.controller.admin.wm.itemconsume; + +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.module.mes.controller.admin.wm.itemconsume.vo.MesWmItemConsumeLinePageReqVO; +import cn.iocoder.yudao.module.mes.controller.admin.wm.itemconsume.vo.MesWmItemConsumeLineRespVO; +import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO; +import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO; +import cn.iocoder.yudao.module.mes.dal.dataobject.wm.itemconsume.MesWmItemConsumeLineDO; +import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService; +import cn.iocoder.yudao.module.mes.service.md.unitmeasure.MesMdUnitMeasureService; +import cn.iocoder.yudao.module.mes.service.wm.itemconsume.MesWmItemConsumeLineService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.annotation.Resource; +import jakarta.validation.Valid; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.Map; + +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; +import static cn.iocoder.yudao.framework.common.util.collection.MapUtils.findAndThen; + +@Tag(name = "管理后台 - MES 物料消耗记录行") +@RestController +@RequestMapping("/mes/wm/item-consume-line") +@Validated +public class MesWmItemConsumeLineController { + + @Resource + private MesWmItemConsumeLineService itemConsumeLineService; + @Resource + private MesMdItemService itemService; + @Resource + private MesMdUnitMeasureService unitMeasureService; + + @GetMapping("/page") + @Operation(summary = "根据报工编号分页获取消耗行列表") + @PreAuthorize("@ss.hasPermission('mes:pro-feedback:query')") + public CommonResult> getItemConsumeLinePage( + @Valid MesWmItemConsumeLinePageReqVO pageReqVO) { + // 1. 分页查询消耗行 + PageResult pageResult = + itemConsumeLineService.getItemConsumeLinePage(pageReqVO); + PageResult voPage = BeanUtils.toBean(pageResult, MesWmItemConsumeLineRespVO.class); + // 2. 拼接物料信息 + Map itemMap = itemService.getItemMap( + convertSet(pageResult.getList(), MesWmItemConsumeLineDO::getItemId)); + Map unitMap = unitMeasureService.getUnitMeasureMap( + convertSet(itemMap.values(), MesMdItemDO::getUnitMeasureId)); + for (MesWmItemConsumeLineRespVO vo : voPage.getList()) { + findAndThen(itemMap, vo.getItemId(), item -> { + vo.setItemCode(item.getCode()).setItemName(item.getName()).setSpecification(item.getSpecification()); + findAndThen(unitMap, item.getUnitMeasureId(), unit -> vo.setUnitName(unit.getName())); + }); + } + return success(voPage); + } + +} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/itemconsume/vo/MesWmItemConsumeLinePageReqVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/itemconsume/vo/MesWmItemConsumeLinePageReqVO.java new file mode 100644 index 0000000..7cfdbda --- /dev/null +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/itemconsume/vo/MesWmItemConsumeLinePageReqVO.java @@ -0,0 +1,18 @@ +package cn.iocoder.yudao.module.mes.controller.admin.wm.itemconsume.vo; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +@Schema(description = "管理后台 - MES 物料消耗记录行分页 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class MesWmItemConsumeLinePageReqVO extends PageParam { + + @Schema(description = "报工记录编号", requiredMode = Schema.RequiredMode.REQUIRED) + private Long feedbackId; + +} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/itemconsume/vo/MesWmItemConsumeLineRespVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/itemconsume/vo/MesWmItemConsumeLineRespVO.java new file mode 100644 index 0000000..52c911d --- /dev/null +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/itemconsume/vo/MesWmItemConsumeLineRespVO.java @@ -0,0 +1,51 @@ +package cn.iocoder.yudao.module.mes.controller.admin.wm.itemconsume.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +@Schema(description = "管理后台 - MES 物料消耗记录行 Response VO") +@Data +public class MesWmItemConsumeLineRespVO { + + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + private Long id; + + @Schema(description = "消耗记录编号", requiredMode = Schema.RequiredMode.REQUIRED) + private Long consumeId; + + @Schema(description = "物料编号", requiredMode = Schema.RequiredMode.REQUIRED) + private Long itemId; + + @Schema(description = "消耗数量", requiredMode = Schema.RequiredMode.REQUIRED) + private BigDecimal quantity; + + @Schema(description = "批次编号") + private Long batchId; + + @Schema(description = "批次号") + private String batchCode; + + @Schema(description = "备注") + private String remark; + + @Schema(description = "创建时间") + private LocalDateTime createTime; + + // ==================== 关联信息 ==================== + + @Schema(description = "物资编码") + private String itemCode; + + @Schema(description = "物资名称") + private String itemName; + + @Schema(description = "规格型号") + private String specification; + + @Schema(description = "单位") + private String unitName; + +} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/itemconsume/MesWmItemConsumeLineMapper.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/itemconsume/MesWmItemConsumeLineMapper.java index 493cb4f..9fd90a1 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/itemconsume/MesWmItemConsumeLineMapper.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/itemconsume/MesWmItemConsumeLineMapper.java @@ -1,11 +1,12 @@ package cn.iocoder.yudao.module.mes.dal.mysql.wm.itemconsume; +import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.module.mes.controller.admin.wm.itemconsume.vo.MesWmItemConsumeLinePageReqVO; import cn.iocoder.yudao.module.mes.dal.dataobject.wm.itemconsume.MesWmItemConsumeLineDO; import org.apache.ibatis.annotations.Mapper; -import java.util.List; - /** * MES 物料消耗记录行 Mapper * @@ -14,8 +15,11 @@ import java.util.List; @Mapper public interface MesWmItemConsumeLineMapper extends BaseMapperX { - default List selectListByConsumeId(Long consumeId) { - return selectList(MesWmItemConsumeLineDO::getConsumeId, consumeId); + default PageResult selectPage(MesWmItemConsumeLinePageReqVO reqVO, + Long consumeId) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eq(MesWmItemConsumeLineDO::getConsumeId, consumeId) + .orderByDesc(MesWmItemConsumeLineDO::getId)); } } diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/itemconsume/MesWmItemConsumeMapper.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/itemconsume/MesWmItemConsumeMapper.java index 41dc595..1a8832d 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/itemconsume/MesWmItemConsumeMapper.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/itemconsume/MesWmItemConsumeMapper.java @@ -12,4 +12,8 @@ import org.apache.ibatis.annotations.Mapper; @Mapper public interface MesWmItemConsumeMapper extends BaseMapperX { + default MesWmItemConsumeDO selectByFeedbackId(Long feedbackId) { + return selectOne(MesWmItemConsumeDO::getFeedbackId, feedbackId); + } + } diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/itemconsume/MesWmItemConsumeLineService.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/itemconsume/MesWmItemConsumeLineService.java index 16c5d99..43d02fc 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/itemconsume/MesWmItemConsumeLineService.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/itemconsume/MesWmItemConsumeLineService.java @@ -1,5 +1,7 @@ package cn.iocoder.yudao.module.mes.service.wm.itemconsume; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.mes.controller.admin.wm.itemconsume.vo.MesWmItemConsumeLinePageReqVO; import cn.iocoder.yudao.module.mes.dal.dataobject.wm.itemconsume.MesWmItemConsumeLineDO; import java.util.List; @@ -19,11 +21,11 @@ public interface MesWmItemConsumeLineService { void createItemConsumeLineBatch(List lines); /** - * 根据消耗记录编号查询消耗行 + * 根据报工记录编号分页查询消耗行 * - * @param consumeId 消耗记录编号 - * @return 消耗行列表 + * @param pageReqVO 分页查询参数(含 feedbackId) + * @return 消耗行分页 */ - List getItemConsumeLineListByConsumeId(Long consumeId); + PageResult getItemConsumeLinePage(MesWmItemConsumeLinePageReqVO pageReqVO); } diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/itemconsume/MesWmItemConsumeLineServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/itemconsume/MesWmItemConsumeLineServiceImpl.java index f84ccfc..312141d 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/itemconsume/MesWmItemConsumeLineServiceImpl.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/itemconsume/MesWmItemConsumeLineServiceImpl.java @@ -1,7 +1,11 @@ package cn.iocoder.yudao.module.mes.service.wm.itemconsume; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.mes.controller.admin.wm.itemconsume.vo.MesWmItemConsumeLinePageReqVO; +import cn.iocoder.yudao.module.mes.dal.dataobject.wm.itemconsume.MesWmItemConsumeDO; import cn.iocoder.yudao.module.mes.dal.dataobject.wm.itemconsume.MesWmItemConsumeLineDO; import cn.iocoder.yudao.module.mes.dal.mysql.wm.itemconsume.MesWmItemConsumeLineMapper; +import cn.iocoder.yudao.module.mes.dal.mysql.wm.itemconsume.MesWmItemConsumeMapper; import jakarta.annotation.Resource; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; @@ -20,14 +24,24 @@ public class MesWmItemConsumeLineServiceImpl implements MesWmItemConsumeLineServ @Resource private MesWmItemConsumeLineMapper itemConsumeLineMapper; + @Resource + private MesWmItemConsumeMapper itemConsumeMapper; + @Override public void createItemConsumeLineBatch(List lines) { itemConsumeLineMapper.insertBatch(lines); } @Override - public List getItemConsumeLineListByConsumeId(Long consumeId) { - return itemConsumeLineMapper.selectListByConsumeId(consumeId); + public PageResult getItemConsumeLinePage( + MesWmItemConsumeLinePageReqVO pageReqVO) { + // 1. 先通过 feedbackId 找到消耗头 + MesWmItemConsumeDO consume = itemConsumeMapper.selectByFeedbackId(pageReqVO.getFeedbackId()); + if (consume == null) { + return PageResult.empty(); + } + // 2. 分页查询消耗行 + return itemConsumeLineMapper.selectPage(pageReqVO, consume.getId()); } } -- libgit2 0.21.4