diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/batch/MesWmBatchController.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/batch/MesWmBatchController.java index d39eaa5..04ae6e3 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/batch/MesWmBatchController.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/batch/MesWmBatchController.java @@ -1,9 +1,25 @@ package cn.iocoder.yudao.module.mes.controller.admin.wm.batch; +import cn.hutool.core.collection.CollUtil; import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.collection.MapUtils; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.module.mes.controller.admin.wm.batch.vo.MesWmBatchPageReqVO; import cn.iocoder.yudao.module.mes.controller.admin.wm.batch.vo.MesWmBatchRespVO; +import cn.iocoder.yudao.module.mes.dal.dataobject.md.client.MesMdClientDO; +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.md.vendor.MesMdVendorDO; +import cn.iocoder.yudao.module.mes.dal.dataobject.md.workstation.MesMdWorkstationDO; +import cn.iocoder.yudao.module.mes.dal.dataobject.pro.workorder.MesProWorkOrderDO; import cn.iocoder.yudao.module.mes.dal.dataobject.wm.batch.MesWmBatchDO; +import cn.iocoder.yudao.module.mes.service.md.client.MesMdClientService; +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.md.vendor.MesMdVendorService; +import cn.iocoder.yudao.module.mes.service.md.workstation.MesMdWorkstationService; +import cn.iocoder.yudao.module.mes.service.pro.workorder.MesProWorkOrderService; import cn.iocoder.yudao.module.mes.service.wm.batch.MesWmBatchService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; @@ -17,9 +33,12 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; +import java.util.Collections; import java.util.List; +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; @Tag(name = "管理后台 - MES 批次管理") @RestController @@ -29,6 +48,26 @@ public class MesWmBatchController { @Resource private MesWmBatchService batchService; + @Resource + private MesMdItemService itemService; + @Resource + private MesMdUnitMeasureService unitMeasureService; + @Resource + private MesMdVendorService vendorService; + @Resource + private MesMdClientService clientService; + @Resource + private MesProWorkOrderService workOrderService; + @Resource + private MesMdWorkstationService workstationService; + + @GetMapping("/page") + @Operation(summary = "获得批次分页") + @PreAuthorize("@ss.hasPermission('mes:wm-batch:query')") + public CommonResult> getBatchPage(@Valid MesWmBatchPageReqVO pageReqVO) { + PageResult pageResult = batchService.getBatchPage(pageReqVO); + return success(new PageResult<>(buildRespVOList(pageResult.getList()), pageResult.getTotal())); + } @GetMapping("/forward-list") @Operation(summary = "批次向前追溯") @@ -36,7 +75,7 @@ public class MesWmBatchController { @PreAuthorize("@ss.hasPermission('mes:wm-batch:query')") public CommonResult> getForwardList(@RequestParam("code") @Valid String code) { List list = batchService.getForwardBatchList(code); - return success(BeanUtils.toBean(list, MesWmBatchRespVO.class)); + return success(buildRespVOList(list)); } @GetMapping("/backward-list") @@ -45,7 +84,45 @@ public class MesWmBatchController { @PreAuthorize("@ss.hasPermission('mes:wm-batch:query')") public CommonResult> getBackwardList(@RequestParam("code") @Valid String code) { List list = batchService.getBackwardBatchList(code); - return success(BeanUtils.toBean(list, MesWmBatchRespVO.class)); + return success(buildRespVOList(list)); + } + + // ==================== 拼接 VO ==================== + + private List buildRespVOList(List list) { + if (CollUtil.isEmpty(list)) { + return Collections.emptyList(); + } + // 1. 获得关联数据 + Map itemMap = itemService.getItemMap( + convertSet(list, MesWmBatchDO::getItemId)); + Map vendorMap = vendorService.getVendorMap( + convertSet(list, MesWmBatchDO::getVendorId)); + Map clientMap = clientService.getClientMap( + convertSet(list, MesWmBatchDO::getClientId)); + Map workOrderMap = workOrderService.getWorkOrderMap( + convertSet(list, MesWmBatchDO::getWorkOrderId)); + Map workstationMap = workstationService.getWorkstationMap( + convertSet(list, MesWmBatchDO::getWorkstationId)); + Map unitMeasureMap = unitMeasureService.getUnitMeasureMap( + convertSet(itemMap.values(), MesMdItemDO::getUnitMeasureId)); + // 2. 构建结果 + return BeanUtils.toBean(list, MesWmBatchRespVO.class, vo -> { + MapUtils.findAndThen(itemMap, vo.getItemId(), item -> { + vo.setItemCode(item.getCode()).setItemName(item.getName()) + .setItemSpecification(item.getSpecification()); + MapUtils.findAndThen(unitMeasureMap, item.getUnitMeasureId(), + unitMeasure -> vo.setUnitName(unitMeasure.getName())); + }); + MapUtils.findAndThen(vendorMap, vo.getVendorId(), + vendor -> vo.setVendorCode(vendor.getCode()).setVendorName(vendor.getName())); + MapUtils.findAndThen(clientMap, vo.getClientId(), + client -> vo.setClientCode(client.getCode()).setClientName(client.getName())); + MapUtils.findAndThen(workOrderMap, vo.getWorkOrderId(), + workOrder -> vo.setWorkOrderCode(workOrder.getCode())); + MapUtils.findAndThen(workstationMap, vo.getWorkstationId(), + workstation -> vo.setWorkstationCode(workstation.getCode())); + }); } } diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/batch/vo/MesWmBatchPageReqVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/batch/vo/MesWmBatchPageReqVO.java new file mode 100644 index 0000000..4906d6d --- /dev/null +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/batch/vo/MesWmBatchPageReqVO.java @@ -0,0 +1,33 @@ +package cn.iocoder.yudao.module.mes.controller.admin.wm.batch.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 MesWmBatchPageReqVO extends PageParam { + + @Schema(description = "批次编码", example = "BATCH20250314001") + private String code; + + @Schema(description = "物料编号", example = "1") + private Long itemId; + + @Schema(description = "供应商编号", example = "1") + private Long vendorId; + + @Schema(description = "客户编号", example = "1") + private Long clientId; + + @Schema(description = "销售订单编号", example = "SO20250314001") + private String salesOrderCode; + + @Schema(description = "采购订单编号", example = "PO20250314001") + private String purchaseOrderCode; + +} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/batch/MesWmBatchMapper.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/batch/MesWmBatchMapper.java index 6a6d2e4..af47402 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/batch/MesWmBatchMapper.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/batch/MesWmBatchMapper.java @@ -2,7 +2,10 @@ package cn.iocoder.yudao.module.mes.dal.mysql.wm.batch; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjUtil; +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.batch.vo.MesWmBatchPageReqVO; import cn.iocoder.yudao.module.mes.dal.dataobject.wm.batch.MesWmBatchDO; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import org.apache.ibatis.annotations.Mapper; @@ -17,6 +20,17 @@ import java.util.List; @Mapper public interface MesWmBatchMapper extends BaseMapperX { + default PageResult selectPage(MesWmBatchPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .likeIfPresent(MesWmBatchDO::getCode, reqVO.getCode()) + .eqIfPresent(MesWmBatchDO::getItemId, reqVO.getItemId()) + .eqIfPresent(MesWmBatchDO::getVendorId, reqVO.getVendorId()) + .eqIfPresent(MesWmBatchDO::getClientId, reqVO.getClientId()) + .likeIfPresent(MesWmBatchDO::getSalesOrderCode, reqVO.getSalesOrderCode()) + .likeIfPresent(MesWmBatchDO::getPurchaseOrderCode, reqVO.getPurchaseOrderCode()) + .orderByDesc(MesWmBatchDO::getId)); + } + /** * 根据参数查询匹配的第一条批次记录 *

diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/batch/MesWmBatchService.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/batch/MesWmBatchService.java index dd5723d..a9c37fc 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/batch/MesWmBatchService.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/batch/MesWmBatchService.java @@ -1,6 +1,8 @@ package cn.iocoder.yudao.module.mes.service.wm.batch; +import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.module.mes.controller.admin.wm.batch.vo.MesWmBatchGenerateReqVO; +import cn.iocoder.yudao.module.mes.controller.admin.wm.batch.vo.MesWmBatchPageReqVO; import cn.iocoder.yudao.module.mes.dal.dataobject.wm.batch.MesWmBatchDO; import java.util.List; @@ -13,6 +15,14 @@ import java.util.List; public interface MesWmBatchService { /** + * 获得批次分页 + * + * @param pageReqVO 分页查询 + * @return 批次分页 + */ + PageResult getBatchPage(MesWmBatchPageReqVO pageReqVO); + + /** * 获取或生成批次编码 *

* 根据物料批次配置,查询或生成批次记录 diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/batch/MesWmBatchServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/batch/MesWmBatchServiceImpl.java index 6cf65b6..b8264eb 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/batch/MesWmBatchServiceImpl.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/batch/MesWmBatchServiceImpl.java @@ -2,7 +2,9 @@ package cn.iocoder.yudao.module.mes.service.wm.batch; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjUtil; +import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.module.mes.controller.admin.wm.batch.vo.MesWmBatchGenerateReqVO; +import cn.iocoder.yudao.module.mes.controller.admin.wm.batch.vo.MesWmBatchPageReqVO; import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemBatchConfigDO; import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO; import cn.iocoder.yudao.module.mes.dal.dataobject.wm.batch.MesWmBatchDO; @@ -47,6 +49,11 @@ public class MesWmBatchServiceImpl implements MesWmBatchService { private MesWmBarcodeService barcodeService; @Override + public PageResult getBatchPage(MesWmBatchPageReqVO pageReqVO) { + return batchMapper.selectPage(pageReqVO); + } + + @Override @Transactional(rollbackFor = Exception.class) public MesWmBatchDO getOrGenerateBatchCode(MesWmBatchGenerateReqVO reqVO) { // 1.1 查询物料信息,检查是否启用批次管理 diff --git a/yudao-module-mes/src/main/resources/mapper/wm/batch/MesWmBatchMapper.xml b/yudao-module-mes/src/main/resources/mapper/wm/batch/MesWmBatchMapper.xml index 3338313..86f51dd 100644 --- a/yudao-module-mes/src/main/resources/mapper/wm/batch/MesWmBatchMapper.xml +++ b/yudao-module-mes/src/main/resources/mapper/wm/batch/MesWmBatchMapper.xml @@ -9,14 +9,12 @@ - - - - + + + --> - - - - + +