yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/transaction/MesWmTransactionController.java
@@ -3,8 +3,11 @@
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.transaction.vo.MesWmStockSummaryReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.transaction.vo.MesWmStockSummaryRespVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.transaction.vo.MesWmTransactionPageReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.transaction.vo.MesWmTransactionRespVO;
import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.mdm.MesMdmItemDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.transaction.MesWmTransactionDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseAreaDO;
@@ -12,6 +15,7 @@
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseLocationDO;
import cn.iocoder.yudao.module.mes.enums.MesBizTypeConstants;
import cn.iocoder.yudao.module.mes.enums.wm.MesWmTransactionTypeEnum;
import cn.iocoder.yudao.module.mes.service.md.unitmeasure.MesMdUnitMeasureService;
import cn.iocoder.yudao.module.mes.service.mdm.MesMdmItemService;
import cn.iocoder.yudao.module.mes.service.wm.transaction.MesWmTransactionService;
import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseAreaService;
@@ -52,11 +56,12 @@
    private MesWmWarehouseLocationService locationService;
    @Resource
    private MesWmWarehouseAreaService areaService;
    @Resource
    private MesMdUnitMeasureService unitMeasureService;
    @GetMapping("/page")
    @Operation(summary = "获取库存事务流水分页")
    @Parameter(name = "id", description = "编号", required = true, example = "1")
    @PreAuthorize("@ss.hasPermission('mes:wm-transaction:query')")
    public CommonResult<PageResult<MesWmTransactionRespVO>> getTransactionPage(@Valid MesWmTransactionPageReqVO pageReqVO) {
        PageResult<MesWmTransactionDO> pageResult = transactionService.getTransactionPage(pageReqVO);
        if (pageResult.getTotal() == 0) {
@@ -111,6 +116,42 @@
        return success(new PageResult<>(voList, pageResult.getTotal()));
    }
    @GetMapping("/summary")
    @Operation(summary = "获取仓储收发存汇总(按物料 + 仓库)")
    @PreAuthorize("@ss.hasPermission('mes:wm-transaction:query')")
    public CommonResult<PageResult<MesWmStockSummaryRespVO>> getStockSummary(@Valid MesWmStockSummaryReqVO reqVO) {
        PageResult<MesWmStockSummaryRespVO> pageResult = transactionService.getStockSummaryPage(reqVO);
        if (pageResult.getList().isEmpty()) {
            return success(PageResult.empty(pageResult.getTotal()));
        }
        // 关联物料、仓库、单位名称
        Map<Long, MesMdmItemDO> itemMap = mdmItemService.getItemMap(
                convertSet(pageResult.getList(), MesWmStockSummaryRespVO::getItemId));
        Map<Long, MesWmWarehouseDO> warehouseMap = warehouseService.getWarehouseMap(
                convertSet(pageResult.getList(), MesWmStockSummaryRespVO::getWarehouseId));
        Map<Long, MesMdUnitMeasureDO> unitMap = unitMeasureService.getUnitMeasureMap(
                itemMap.values().stream().map(MesMdmItemDO::getUnitMeasureId)
                        .filter(java.util.Objects::nonNull).collect(Collectors.toSet()));
        for (MesWmStockSummaryRespVO vo : pageResult.getList()) {
            MesMdmItemDO item = itemMap.get(vo.getItemId());
            if (item != null) {
                vo.setItemCode(item.getCode());
                vo.setItemName(item.getName());
                vo.setSpecification(item.getSpecification());
                MesMdUnitMeasureDO unit = unitMap.get(item.getUnitMeasureId());
                if (unit != null) {
                    vo.setUnitMeasureName(unit.getName());
                }
            }
            MesWmWarehouseDO warehouse = warehouseMap.get(vo.getWarehouseId());
            if (warehouse != null) {
                vo.setWarehouseName(warehouse.getName());
            }
        }
        return success(pageResult);
    }
    /**
     * 获取业务类型名称
     */