feat(wms): 添加钢卷物料统计数据接口
- 在 IWmsMaterialCoilService 中新增 getStatistics 方法用于汇总统计 - 在 WmsMaterialCoilController 中添加 /statisticsList 接口 - 在 WmsMaterialCoilMapper 中新增 selectStatistics 查询方法 - 在 WmsMaterialCoilMapper.xml 中实现统计 SQL 查询 - 在 WmsMaterialCoilServiceImpl 中实现统计业务逻辑 - 支持按筛选条件统计总毛重、总净重和总数 - 采用高性能查询方式只查询 sum/count 聚合数据 - 独立统计接口不影响原有分页查询功能
This commit is contained in:
@@ -68,6 +68,15 @@ public class WmsMaterialCoilController extends BaseController {
|
||||
return iWmsMaterialCoilService.queryPageListWithBindInfo(bo, pageQuery);
|
||||
}
|
||||
|
||||
/**
|
||||
* 统计筛选条件下的全量汇总数据
|
||||
* 独立的统计接口,使用与分页列表相同的查询条件
|
||||
*/
|
||||
@GetMapping("/statisticsList")
|
||||
public R<Map<String, java.math.BigDecimal>> getStatistics(WmsMaterialCoilBo bo) {
|
||||
return R.ok(iWmsMaterialCoilService.getStatistics(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 原料钢卷库位分布查询(先库位,再钢卷映射)
|
||||
*/
|
||||
|
||||
@@ -97,5 +97,12 @@ List<WmsMaterialCoilDeliveryExportVo> selectDeliveryExportListByCoilIds(@Param("
|
||||
* @return 不匹配的钢卷列表
|
||||
*/
|
||||
List<WmsMaterialCoil> selectMismatchedItemCoils();
|
||||
|
||||
/**
|
||||
* 统计筛选条件下的全量汇总数据(高性能:只查sum/count)
|
||||
* @param qw 查询条件(只使用WHERE和JOIN部分)
|
||||
* @return 统计结果(Map包含totalGrossWeight, totalNetWeight)
|
||||
*/
|
||||
Map<String, Object> selectStatistics(@Param("ew") QueryWrapper<WmsMaterialCoil> qw);
|
||||
}
|
||||
|
||||
|
||||
@@ -42,6 +42,12 @@ public interface IWmsMaterialCoilService {
|
||||
*/
|
||||
List<WmsMaterialCoilVo> queryList(WmsMaterialCoilBo bo);
|
||||
|
||||
/**
|
||||
* 统计筛选条件下的全量汇总数据(高性能:只查sum/count)
|
||||
* 独立的统计接口,不影响分页查询
|
||||
*/
|
||||
Map<String, java.math.BigDecimal> getStatistics(WmsMaterialCoilBo bo);
|
||||
|
||||
/**
|
||||
* 新增钢卷物料表
|
||||
*/
|
||||
|
||||
@@ -342,6 +342,16 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
|
||||
return TableDataInfo.build(bindResult);
|
||||
}
|
||||
|
||||
/**
|
||||
* 统计筛选条件下的全量汇总数据(高性能:只查sum/count)
|
||||
* 独立的统计接口,不影响分页查询
|
||||
*/
|
||||
@Override
|
||||
public Map<String, BigDecimal> getStatistics(WmsMaterialCoilBo bo) {
|
||||
QueryWrapper<WmsMaterialCoil> qw = buildQueryWrapperPlus(bo);
|
||||
return selectMaterialCoilStatistics(qw);
|
||||
}
|
||||
|
||||
private Page<WmsMaterialCoilVo> queryMaterialCoilPage(WmsMaterialCoilBo bo, PageQuery pageQuery) {
|
||||
QueryWrapper<WmsMaterialCoil> qw = buildQueryWrapperPlus(bo);
|
||||
Page<WmsMaterialCoilVo> result;
|
||||
@@ -380,6 +390,30 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 统计筛选条件下的全量汇总数据(高性能:只查sum/count)
|
||||
*/
|
||||
private Map<String, BigDecimal> selectMaterialCoilStatistics(QueryWrapper<WmsMaterialCoil> qw) {
|
||||
Map<String, BigDecimal> result = new HashMap<>();
|
||||
result.put("total_gross_weight", BigDecimal.ZERO);
|
||||
result.put("total_net_weight", BigDecimal.ZERO);
|
||||
result.put("total_count", BigDecimal.ZERO);
|
||||
|
||||
try {
|
||||
Map<String, Object> stats = baseMapper.selectStatistics(qw);
|
||||
if (stats != null) {
|
||||
Object grossWeight = stats.get("total_gross_weight");
|
||||
Object netWeight = stats.get("total_net_weight");
|
||||
result.put("total_gross_weight", grossWeight != null ? new BigDecimal(grossWeight.toString()) : BigDecimal.ZERO);
|
||||
result.put("total_net_weight", netWeight != null ? new BigDecimal(netWeight.toString()) : BigDecimal.ZERO);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.warn("统计查询失败: {}", e.getMessage());
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
private void fillBindInfoForPage(List<WmsMaterialCoilBindVo> records) {
|
||||
// 绑定信息仅用于专用接口,避免污染通用分页结构
|
||||
try {
|
||||
|
||||
Reference in New Issue
Block a user