feat(wms): 优化钢卷库区操作记录吞吐报表统计功能

- 后端新增 statistics 接口聚合图表数据,避免前端遍历计算
- 新增 WmsCoilWarehouseOperationLogStatisticsVo 数据传输对象
- 实现按操作人汇总、按日趋势、汇总指标三个维度的数据查询
- 前端 record 页面集成统计卡片、趋势图、饼图、柱状图展示
- 优化分页逻辑,移除前端全量数据存储和分页计算
- 添加完整的 SQL 统计查询语句支持多维度数据聚合
This commit is contained in:
2026-06-22 17:27:08 +08:00
parent 6436d56ab8
commit b5a269a37a
8 changed files with 254 additions and 111 deletions

View File

@@ -9,6 +9,7 @@ import com.klp.common.core.domain.PageQuery;
import javax.validation.constraints.NotNull;
import java.util.Collection;
import com.klp.domain.vo.WmsCoilWarehouseOperationLogExportVo;
import com.klp.domain.vo.WmsCoilWarehouseOperationLogStatisticsVo;
import java.util.Date;
import java.util.List;
@@ -85,4 +86,12 @@ public interface IWmsCoilWarehouseOperationLogService {
* @return 导出数据列表
*/
List<WmsCoilWarehouseOperationLogExportVo> exportBySecondWarehouseIdAndTimeRange(Long secondWarehouseId, Integer operationType, Integer inOutType, Date startTime, Date endTime);
/**
* 吞吐报表统计 —— 后端聚合,返回图表所需全部数据
*
* @param bo 查询条件(与 /list 共用同一套 BO
* @return 统计结果(汇总卡片 + 操作人排名 + 按日趋势)
*/
WmsCoilWarehouseOperationLogStatisticsVo statistics(WmsCoilWarehouseOperationLogBo bo);
}

View File

@@ -18,6 +18,7 @@ import org.springframework.stereotype.Service;
import com.klp.domain.bo.WmsCoilWarehouseOperationLogBo;
import com.klp.domain.vo.WmsCoilWarehouseOperationLogVo;
import com.klp.domain.vo.WmsCoilWarehouseOperationLogExportVo;
import com.klp.domain.vo.WmsCoilWarehouseOperationLogStatisticsVo;
import java.math.BigDecimal;
import com.klp.domain.vo.WmsMaterialCoilVo;
import com.klp.domain.WmsCoilWarehouseOperationLog;
@@ -352,4 +353,34 @@ public class WmsCoilWarehouseOperationLogServiceImpl implements IWmsCoilWarehous
default: return String.valueOf(inOutType);
}
}
@Override
public WmsCoilWarehouseOperationLogStatisticsVo statistics(WmsCoilWarehouseOperationLogBo bo) {
Long actualWarehouseId = bo.getActualWarehouseId();
Integer operationType = bo.getOperationType();
Integer inOutType = bo.getInOutType();
String createBy = bo.getCreateBy();
Date startTime = bo.getCreateStartTime();
Date endTime = bo.getCreateEndTime();
// 一次 RPC 内三次轻量 GROUP BY 查询,远比拉取全量 rows 再聚合快
WmsCoilWarehouseOperationLogStatisticsVo summary =
baseMapper.selectStatisticsSummary(actualWarehouseId, operationType, inOutType, createBy, startTime, endTime);
List<WmsCoilWarehouseOperationLogStatisticsVo.UserSummary> userSummary =
baseMapper.selectUserSummary(actualWarehouseId, operationType, inOutType, createBy, startTime, endTime);
List<WmsCoilWarehouseOperationLogStatisticsVo.TrendItem> trendData =
baseMapper.selectTrendData(actualWarehouseId, operationType, inOutType, createBy, startTime, endTime);
if (summary == null) {
summary = new WmsCoilWarehouseOperationLogStatisticsVo();
summary.setTotalCount(0);
summary.setTotalWeight(BigDecimal.ZERO);
summary.setWarehouseCount(0);
}
summary.setUserSummary(userSummary);
summary.setTrendData(trendData);
return summary;
}
}