feat(wms): 所有的list接口增加原料厚度以及导出增加原料厚度
- 在 WmsMaterialCoilAllExportVo 和 WmsMaterialCoilExportVo 中新增原料厚度字段 - 更新控制器中的列配置映射,添加原料厚度显示 - 实现批量查询热轧卷板原料厚度映射功能 - 重构原料厚度填充逻辑为通用方法,支持多种 VO 类型 - 在多个导出功能中集成原料厚度数据回填 - 更新 .gitignore 添加 *.json 文件忽略规则 - 优化数据库查询性能,减少重复查询操作
This commit is contained in:
@@ -597,6 +597,7 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
|
||||
|
||||
fillBindInfoForPage(bindRecords);
|
||||
fillPageCommonFields(bindRecords);
|
||||
fillRawMaterialThickness(bindRecords);
|
||||
|
||||
Page<WmsMaterialCoilBindVo> bindResult = new Page<>(result.getCurrent(), result.getSize(), result.getTotal());
|
||||
bindResult.setRecords(bindRecords);
|
||||
@@ -618,6 +619,7 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
|
||||
|
||||
// 填充通用字段(昵称等)
|
||||
fillPageCommonFields(records);
|
||||
fillRawMaterialThickness(records);
|
||||
|
||||
// 批量填充订单关联信息
|
||||
fillOrderRelForPage(records);
|
||||
@@ -639,6 +641,7 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
|
||||
|
||||
// 填充通用字段(昵称等)
|
||||
fillPageCommonFields(records);
|
||||
fillRawMaterialThickness(records);
|
||||
|
||||
// 批量查询每个钢卷的最新一条改判记录
|
||||
List<com.klp.domain.vo.WmsCoilQualityRejudgeVo> latestRejudges =
|
||||
@@ -792,25 +795,27 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量填充原料厚度:根据入场卷号查询热轧卷板原料的规格,提取*前面的数字作为厚度
|
||||
* <p>逻辑:同一个 enterCoilNo 下,找 parent_coil_id 为空、itemType=raw_material、
|
||||
* 且关联的 wms_raw_material.raw_material_name 包含"热轧卷板"的记录,
|
||||
* 取 specification 中 * 前面的数字(如 0.1*1000 → 0.1)</p>
|
||||
* 批量查询热轧卷板原料厚度映射:入场卷号 → 厚度
|
||||
* <p>根据入场卷号列表,查 parent_coil_id 为空、itemType=raw_material、
|
||||
* 且 raw_material_name 包含"热轧卷板"的记录,取 specification 中 * 前面的数字</p>
|
||||
*
|
||||
* @param enterCoilNos 入场卷号集合
|
||||
* @return enterCoilNo → 厚度 的映射(如 "25100001" → "0.1")
|
||||
*/
|
||||
private void fillRawMaterialThickness(List<WmsMaterialCoilVo> records) {
|
||||
List<String> enterCoilNos = records.stream()
|
||||
.map(WmsMaterialCoilVo::getEnterCoilNo)
|
||||
private Map<String, String> buildRawMaterialThicknessMap(Collection<String> enterCoilNos) {
|
||||
if (enterCoilNos == null || enterCoilNos.isEmpty()) {
|
||||
return Collections.emptyMap();
|
||||
}
|
||||
List<String> distinctNos = enterCoilNos.stream()
|
||||
.filter(StringUtils::isNotBlank)
|
||||
.distinct()
|
||||
.collect(Collectors.toList());
|
||||
|
||||
if (enterCoilNos.isEmpty()) {
|
||||
return;
|
||||
if (distinctNos.isEmpty()) {
|
||||
return Collections.emptyMap();
|
||||
}
|
||||
|
||||
List<Map<String, String>> rawList = baseMapper.selectRawMaterialThicknessByEnterCoilNos(enterCoilNos);
|
||||
List<Map<String, String>> rawList = baseMapper.selectRawMaterialThicknessByEnterCoilNos(distinctNos);
|
||||
if (rawList == null || rawList.isEmpty()) {
|
||||
return;
|
||||
return Collections.emptyMap();
|
||||
}
|
||||
|
||||
// 构建 enterCoilNo → 厚度 的映射
|
||||
@@ -825,8 +830,20 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
|
||||
}
|
||||
}
|
||||
}
|
||||
return thickMap;
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量填充原料厚度到 WmsMaterialCoilVo 列表
|
||||
*/
|
||||
private void fillRawMaterialThickness(List<? extends WmsMaterialCoilVo> records) {
|
||||
List<String> enterCoilNos = records.stream()
|
||||
.map(WmsMaterialCoilVo::getEnterCoilNo)
|
||||
.filter(StringUtils::isNotBlank)
|
||||
.collect(Collectors.toList());
|
||||
|
||||
Map<String, String> thickMap = buildRawMaterialThicknessMap(enterCoilNos);
|
||||
|
||||
// 回填到每条记录
|
||||
for (WmsMaterialCoilVo vo : records) {
|
||||
String thickness = thickMap.get(vo.getEnterCoilNo());
|
||||
if (thickness != null) {
|
||||
@@ -835,6 +852,27 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 通用原料厚度回填(适用于非 WmsMaterialCoilVo 子类的导出 VO)
|
||||
*/
|
||||
private <T> void fillRawMaterialThicknessForExport(List<T> list,
|
||||
java.util.function.Function<T, String> enterCoilNoGetter,
|
||||
java.util.function.BiConsumer<T, String> thicknessSetter) {
|
||||
List<String> enterCoilNos = list.stream()
|
||||
.map(enterCoilNoGetter)
|
||||
.filter(StringUtils::isNotBlank)
|
||||
.collect(Collectors.toList());
|
||||
|
||||
Map<String, String> thickMap = buildRawMaterialThicknessMap(enterCoilNos);
|
||||
|
||||
for (T item : list) {
|
||||
String thickness = thickMap.get(enterCoilNoGetter.apply(item));
|
||||
if (thickness != null) {
|
||||
thicknessSetter.accept(item, thickness);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 统计筛选条件下的全量汇总数据(高性能:只查sum/count)
|
||||
*/
|
||||
@@ -3736,6 +3774,8 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
|
||||
vo.setActualWarehouseName(null);
|
||||
}
|
||||
});
|
||||
fillRawMaterialThicknessForExport(wmsMaterialCoilExportVos,
|
||||
WmsMaterialCoilExportVo::getEnterCoilNo, WmsMaterialCoilExportVo::setRawMaterialThickness);
|
||||
return wmsMaterialCoilExportVos;
|
||||
}
|
||||
/**
|
||||
@@ -3766,6 +3806,8 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
|
||||
}
|
||||
}
|
||||
|
||||
fillRawMaterialThicknessForExport(exportVoList,
|
||||
WmsMaterialCoilAllExportVo::getEnterCoilNo, WmsMaterialCoilAllExportVo::setRawMaterialThickness);
|
||||
return exportVoList;
|
||||
}
|
||||
/**
|
||||
@@ -3805,6 +3847,8 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
|
||||
vo.setActualWarehouseName(null);
|
||||
}
|
||||
});
|
||||
fillRawMaterialThicknessForExport(wmsMaterialCoilDeliveryExportVos,
|
||||
WmsMaterialCoilDeliveryExportVo::getEnterCoilNo, WmsMaterialCoilDeliveryExportVo::setRawMaterialThickness);
|
||||
return wmsMaterialCoilDeliveryExportVos;
|
||||
}
|
||||
|
||||
@@ -3839,7 +3883,10 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
|
||||
if (coilIds.isEmpty()) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
return baseMapper.selectAnnealExportListByCoilIds(coilIds);
|
||||
List<WmsMaterialCoilAnnealExportVo> list = baseMapper.selectAnnealExportListByCoilIds(coilIds);
|
||||
fillRawMaterialThicknessForExport(list,
|
||||
WmsMaterialCoilAnnealExportVo::getEnterCoilNo, WmsMaterialCoilAnnealExportVo::setRawMaterialThickness);
|
||||
return list;
|
||||
}
|
||||
|
||||
private List<Long> parseCsvLongs(String csv) {
|
||||
@@ -6131,6 +6178,9 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
|
||||
throw new RuntimeException("未找到符合条件的钢卷数据");
|
||||
}
|
||||
|
||||
// 1.1 填充原料厚度
|
||||
fillRawMaterialThickness(coilList);
|
||||
|
||||
// 2. 收集所有钢卷ID
|
||||
List<Long> coilIds = coilList.stream()
|
||||
.map(WmsMaterialCoilVo::getCoilId)
|
||||
|
||||
Reference in New Issue
Block a user