package cn.iocoder.yudao.module.mes.dal.mysql.dashboard; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import java.time.LocalDateTime; import java.util.List; import java.util.Map; /** * 管理驾驶舱统计 Mapper *

* 手写 SQL 聚合生产、质检、库存、出库、追溯五大维度核心指标。 * * @author 超级管理员 */ @Mapper public interface MesDashboardMapper { // ========== 生产维度 ========== /** 按状态统计批次数量,返回 [{ "status": 10, "count": 5 }] */ List> selectBatchCountGroupByStatus(); /** 按状态统计袋码数量,返回 [{ "status": 10, "count": 5 }] */ List> selectBagCodeCountGroupByStatus(); /** 统计托盘码总数 */ Long selectPalletTotal(); /** 统计今日扫码入库袋数(扫码成功事件数量之和) */ Long selectTodayInboundBagCount(@Param("beginTime") LocalDateTime beginTime); /** 按天聚合新增批次数,返回 [{ "date": "2026-08-13", "count": 1 }] */ List> selectDailyBatchCount(@Param("beginTime") LocalDateTime beginTime, @Param("endTime") LocalDateTime endTime); /** 按天聚合新增袋码数 */ List> selectDailyBagCodeCount(@Param("beginTime") LocalDateTime beginTime, @Param("endTime") LocalDateTime endTime); /** 按天聚合新增托盘码数 */ List> selectDailyPalletCount(@Param("beginTime") LocalDateTime beginTime, @Param("endTime") LocalDateTime endTime); /** 按天聚合扫码入库袋数(扫码成功事件数量之和),返回 [{ "date": "...", "quantity": 100 }] */ List> selectDailyInboundBagQuantity(@Param("beginTime") LocalDateTime beginTime, @Param("endTime") LocalDateTime endTime); // ========== 质检维度 ========== /** 按检验结果统计数量,返回 [{ "result": 1, "count": 5 }] */ List> selectQualityCountGroupByResult(); /** 指标均值与合格率,返回 [{ "indicatorCode", "checkCount", "averageValue", "passRate" }] */ List> selectIndicatorStatistics(); // ========== 库存维度 ========== /** 按库存状态汇总数量,返回 [{ "stockState": 10, "quantity": 100 }] */ List> selectStockGroupByState(); /** 按仓库汇总数量,返回 [{ "name": "仓库A", "quantity": 100 }] */ List> selectStockGroupByWarehouse(); /** 按品种汇总数量,返回 [{ "name": "棉花", "quantity": 100 }] */ List> selectStockGroupByItem(); // ========== 出库维度 ========== /** 出库汇总(单数/总量/今日出库量),返回单行 Map:{ orderTotal, quantityTotal, todayQuantity } */ Map selectOutboundSummary(@Param("beginTime") LocalDateTime beginTime); /** 按天聚合出库量,返回 [{ "date": "...", "quantity": 100 }] */ List> selectOutboundDailyQuantity(@Param("beginTime") LocalDateTime beginTime, @Param("endTime") LocalDateTime endTime); /** 按经销商汇总出库量(TOP 20),返回 [{ "name": "经销商A", "quantity": 100 }] */ List> selectOutboundGroupByClient(); }