yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/transaction/MesWmTransactionServiceImpl.java
@@ -5,6 +5,8 @@
import cn.hutool.core.util.ObjUtil;
import cn.hutool.core.util.StrUtil;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
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.dal.dataobject.mdm.MesMdmItemDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.batch.MesWmBatchDO;
@@ -24,6 +26,8 @@
import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseDefaultService;
import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseLocationService;
import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseService;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -175,6 +179,23 @@
        return transactionMapper.selectPage(pageReqVO);
    }
    @Override
    public PageResult<MesWmStockSummaryRespVO> getStockSummaryPage(MesWmStockSummaryReqVO reqVO) {
        // 未指定时间时默认统计近三个月:期初为两个月前 1 日 0 点,期末为当前时间
        LocalDateTime endTime = reqVO.getEndTime() != null ? reqVO.getEndTime() : LocalDateTime.now();
        LocalDateTime startTime = reqVO.getStartTime() != null ? reqVO.getStartTime()
                : endTime.toLocalDate().withDayOfMonth(1).minusMonths(2).atStartOfDay();
        if (startTime.isAfter(endTime)) {
            throw new ServiceException(400, StrUtil.format(
                    "查询开始时间[{}]晚于结束时间[{}],请调整时间范围后重试",
                    startTime, endTime));
        }
        IPage<MesWmStockSummaryRespVO> page = transactionMapper.selectStockSummaryPage(
                new Page<>(reqVO.getPageNo(), reqVO.getPageSize()),
                reqVO.getItemId(), reqVO.getWarehouseId(), startTime, endTime);
        return new PageResult<>(page.getRecords(), page.getTotal());
    }
    // ==================== 私有校验方法 ====================
    /**