@@ -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 f ill RawMaterialThickness( List < WmsMaterialCoilVo > record s) {
List < String > enterCoilNos = records . stream ( )
. map ( WmsMaterialCoilVo : : getEnterCoilNo )
private Map < String , String > bu ild RawMaterialThicknessMap ( Collection < String > enterCoilNo s) {
if ( enterCoilNos = = null | | enterCoilNos . isEmpty ( ) ) {
return Collections . emptyMap ( ) ;
}
List < String > distinctNos = enterCoilNos . stream ( )
. filter ( StringUtils : : isNotBlank )
. distinct ( )
. collect ( Collectors . toList ( ) ) ;
if ( enterCoilNo s . isE mpty( ) ) {
return ;
if ( distinctNos . isEmpty ( ) ) {
return Collection s . e mptyMap ( ) ;
}
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 )