diff --git a/klp-wms/src/main/java/com/klp/domain/vo/WmsFurnacePlanCoilVo.java b/klp-wms/src/main/java/com/klp/domain/vo/WmsFurnacePlanCoilVo.java index 71bd7617..d313c176 100644 --- a/klp-wms/src/main/java/com/klp/domain/vo/WmsFurnacePlanCoilVo.java +++ b/klp-wms/src/main/java/com/klp/domain/vo/WmsFurnacePlanCoilVo.java @@ -37,12 +37,10 @@ public class WmsFurnacePlanCoilVo { @ExcelProperty(value = "入场钢卷号") private String enterCoilNo; - @ExcelProperty(value = "实际库位ID") - private Long actualWarehouseId; - - @ExcelProperty(value = "实际库位") - private String actualWarehouseName; @ExcelProperty(value = "创建时间") private Date createTime; + + // 钢卷全部信息 + private WmsMaterialCoilVo coil; } diff --git a/klp-wms/src/main/java/com/klp/service/impl/WmsFurnacePlanServiceImpl.java b/klp-wms/src/main/java/com/klp/service/impl/WmsFurnacePlanServiceImpl.java index dfae3d67..c754bf05 100644 --- a/klp-wms/src/main/java/com/klp/service/impl/WmsFurnacePlanServiceImpl.java +++ b/klp-wms/src/main/java/com/klp/service/impl/WmsFurnacePlanServiceImpl.java @@ -15,6 +15,7 @@ import com.klp.domain.bo.WmsFurnacePlanCoilBo; import com.klp.domain.bo.WmsMaterialCoilBo; import com.klp.domain.vo.WmsFurnacePlanCoilVo; import com.klp.domain.vo.WmsFurnacePlanVo; +import com.klp.domain.vo.WmsMaterialCoilVo; import com.klp.mapper.*; import com.klp.service.IWmsFurnacePlanService; import com.klp.service.IWmsMaterialCoilService; @@ -23,10 +24,7 @@ import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Date; -import java.util.List; +import java.util.*; import java.util.stream.Collectors; /** @@ -176,59 +174,79 @@ public class WmsFurnacePlanServiceImpl implements IWmsFurnacePlanService { @Override public List queryPlanCoils(Long planId) { - List list = planCoilMapper.selectVoList(Wrappers.lambdaQuery() - .eq(WmsFurnacePlanCoil::getPlanId, planId)); - if (list == null || list.isEmpty()) { - return list; + // 1. 查询计划钢卷关联记录 + List planCoils = planCoilMapper.selectVoList( + Wrappers.lambdaQuery() + .eq(WmsFurnacePlanCoil::getPlanId, planId) + ); + if (planCoils == null || planCoils.isEmpty()) { + return planCoils; } - List coilIds = list.stream() + + // 2. 收集钢卷ID并批量查询钢卷信息 + List coilIds = planCoils.stream() .map(WmsFurnacePlanCoilVo::getCoilId) - .filter(id -> id != null) + .filter(Objects::nonNull) .distinct() .collect(Collectors.toList()); if (coilIds.isEmpty()) { - return list; + return planCoils; } - List materialCoils = materialCoilMapper.selectBatchIds(coilIds); - java.util.Map coilMap = materialCoils.stream() - .collect(Collectors.toMap(WmsMaterialCoil::getCoilId, item -> item, (a, b) -> a)); - List actualWarehouseIds = materialCoils.stream() - .map(WmsMaterialCoil::getActualWarehouseId) - .filter(id -> id != null) - .distinct() - .collect(Collectors.toList()); - java.util.Map warehouseMap = actualWarehouseIds.isEmpty() - ? java.util.Collections.emptyMap() - : actualWarehouseMapper.selectBatchIds(actualWarehouseIds).stream() - .collect(Collectors.toMap(WmsActualWarehouse::getActualWarehouseId, - WmsActualWarehouse::getActualWarehouseName, (a, b) -> a)); - // 查询逻辑库区信息 - List logicWarehouseIds = list.stream() - .map(WmsFurnacePlanCoilVo::getLogicWarehouseId) - .filter(id -> id != null) - .distinct() - .collect(Collectors.toList()); - java.util.Map logicWarehouseMap = logicWarehouseIds.isEmpty() - ? java.util.Collections.emptyMap() - : warehouseMapper.selectBatchIds(logicWarehouseIds).stream() - .collect(Collectors.toMap(WmsWarehouse::getWarehouseId, - WmsWarehouse::getWarehouseName, (a, b) -> a)); + String coilIdsStr = coilIds.stream() + .map(String::valueOf) + .collect(Collectors.joining(",")); + WmsMaterialCoilBo coilBo = new WmsMaterialCoilBo(); + coilBo.setCoilIds(coilIdsStr); + List materialCoils = materialCoilService.queryList(coilBo); + Map coilMap = materialCoils.stream() + .collect(Collectors.toMap(WmsMaterialCoilVo::getCoilId, item -> item, (a, b) -> a)); - list.forEach(item -> { - WmsMaterialCoil coil = coilMap.get(item.getCoilId()); - if (coil != null) { - item.setEnterCoilNo(coil.getEnterCoilNo()); - item.setActualWarehouseId(coil.getActualWarehouseId()); - item.setActualWarehouseName(warehouseMap.get(coil.getActualWarehouseId())); - } - // 设置逻辑库区名称 - if (item.getLogicWarehouseId() != null) { - item.setLogicWarehouseId(item.getLogicWarehouseId()); - item.setLogicWarehouseName(logicWarehouseMap.get(item.getLogicWarehouseId())); - } - }); - return list; + // 3. 批量查询逻辑库区名称 + Map logicWarehouseMap = buildLogicWarehouseNameMap( + planCoils.stream() + .map(WmsFurnacePlanCoilVo::getLogicWarehouseId) + .filter(Objects::nonNull) + .distinct() + .collect(Collectors.toList()) + ); + + // 4. 填充钢卷信息 + planCoils.forEach(planCoil -> fillCoilInfo(planCoil, coilMap, logicWarehouseMap)); + + return planCoils; + } + + /** + * 构建逻辑库区ID到名称的映射 + */ + private Map buildLogicWarehouseNameMap(List warehouseIds) { + if (warehouseIds.isEmpty()) { + return Collections.emptyMap(); + } + return warehouseMapper.selectBatchIds(warehouseIds).stream() + .collect(Collectors.toMap(WmsWarehouse::getWarehouseId, + WmsWarehouse::getWarehouseName, (a, b) -> a)); + } + + /** + * 填充钢卷信息 + */ + private void fillCoilInfo( + WmsFurnacePlanCoilVo planCoil, + Map coilMap, + Map logicWarehouseMap) { + // 填充钢卷基本信息(实际库区名称已在钢卷信息中) + WmsMaterialCoilVo coil = coilMap.get(planCoil.getCoilId()); + if (coil != null) { + planCoil.setEnterCoilNo(coil.getEnterCoilNo()); + planCoil.setCoil(coil); + } + + // 填充逻辑库区名称 + if (planCoil.getLogicWarehouseId() != null) { + planCoil.setLogicWarehouseName(logicWarehouseMap.get(planCoil.getLogicWarehouseId())); + } } @Override