diff --git a/klp-wms/src/main/java/com/klp/service/impl/WmsTransferOrderItemServiceImpl.java b/klp-wms/src/main/java/com/klp/service/impl/WmsTransferOrderItemServiceImpl.java index bb0fe9da..481598f4 100644 --- a/klp-wms/src/main/java/com/klp/service/impl/WmsTransferOrderItemServiceImpl.java +++ b/klp-wms/src/main/java/com/klp/service/impl/WmsTransferOrderItemServiceImpl.java @@ -6,20 +6,14 @@ import com.klp.common.core.domain.PageQuery; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.klp.domain.*; import com.klp.domain.bo.WmsMaterialCoilBo; import com.klp.domain.vo.WmsMaterialCoilVo; +import com.klp.mapper.*; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import com.klp.domain.bo.WmsTransferOrderItemBo; import com.klp.domain.vo.WmsTransferOrderItemVo; -import com.klp.domain.WmsTransferOrderItem; -import com.klp.domain.WmsRawMaterial; -import com.klp.domain.WmsProduct; -import com.klp.domain.WmsMaterialCoil; -import com.klp.mapper.WmsTransferOrderItemMapper; -import com.klp.mapper.WmsRawMaterialMapper; -import com.klp.mapper.WmsProductMapper; -import com.klp.mapper.WmsMaterialCoilMapper; import com.klp.service.IWmsTransferOrderItemService; import com.klp.service.IWmsMaterialCoilService; import com.klp.service.IWmsWarehouseService; @@ -45,6 +39,7 @@ public class WmsTransferOrderItemServiceImpl implements IWmsTransferOrderItemSer private final WmsMaterialCoilMapper coilMapper; private final IWmsMaterialCoilService coilService; private final IWmsWarehouseService warehouseService; + private final WmsWarehouseMapper warehouseMapper; /** * 查询调拨单明细 @@ -66,31 +61,7 @@ public class WmsTransferOrderItemServiceImpl implements IWmsTransferOrderItemSer LambdaQueryWrapper lqw = buildQueryWrapper(bo); Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); List records = result.getRecords(); - String collect = records.stream() - .map(WmsTransferOrderItemVo::getCoilId) - .filter(Objects::nonNull) - .distinct() - .map(String::valueOf) - .collect(Collectors.joining(","));// 收集结果 - if (!collect.isEmpty()) { - WmsMaterialCoilBo coilBo = new WmsMaterialCoilBo(); - coilBo.setCoilIds(collect); - List coilList = coilService.queryList(coilBo); - Map coilMap = coilList.stream() - .collect(Collectors.toMap(WmsMaterialCoilVo::getCoilId, v -> v, (oldVal, newVal) -> oldVal)); - for (WmsTransferOrderItemVo vo : records) { - WmsMaterialCoilVo coilVo = coilMap.get(vo.getCoilId()); - if (coilVo != null) { - vo.setCoil(coilVo); - } - } - } - - if (!records.isEmpty()) { - for (WmsTransferOrderItemVo vo : records) { - fillDetailInfo(vo); - } - } + fillBatchInfo(records); return TableDataInfo.build(result); } @@ -101,31 +72,163 @@ public class WmsTransferOrderItemServiceImpl implements IWmsTransferOrderItemSer public List queryList(WmsTransferOrderItemBo bo) { LambdaQueryWrapper lqw = buildQueryWrapper(bo); List list = baseMapper.selectVoList(lqw); - String coilIdsStr = list.stream() - .map(WmsTransferOrderItemVo::getCoilId) - .filter(Objects::nonNull) // 过滤 null - .distinct() // 去重 - .map(String::valueOf) // Long 转 String - .collect(Collectors.joining(",")); // 直接拼接成逗号字符串 - if (!coilIdsStr.isEmpty()) { + fillBatchInfo(list); + return list; + } + + private void fillBatchInfo(List list) { + if (list == null || list.isEmpty()) { + return; + } + + // 收集所有需要的ID + List coilIds = list.stream() + .map(WmsTransferOrderItemVo::getCoilId) + .filter(Objects::nonNull) + .distinct() + .collect(Collectors.toList()); + + // 收集:改之前物料ID + List itemIdsBefore = list.stream() + .map(WmsTransferOrderItemVo::getItemIdBefore) + .filter(Objects::nonNull) + .distinct() + .collect(Collectors.toList()); + + // 2. 收集:改之后物料ID + List itemIdsAfter = list.stream() + .map(WmsTransferOrderItemVo::getItemIdAfter) + .filter(Objects::nonNull) + .distinct() + .collect(Collectors.toList()); + + // 3. 收集:改前仓库ID + List warehouseIdsBefore = list.stream() + .map(WmsTransferOrderItemVo::getWarehouseIdBefore) + .filter(Objects::nonNull) + .distinct() + .collect(Collectors.toList()); + + // 4. 收集:改后仓库ID + List warehouseIdsAfter = list.stream() + .map(WmsTransferOrderItemVo::getWarehouseIdAfter) + .filter(Objects::nonNull) + .distinct() + .collect(Collectors.toList()); + + // 5. 合并所有仓库ID(和物料ID逻辑完全一致!) + List warehouseIds = new ArrayList<>(); + warehouseIds.addAll(warehouseIdsBefore); + warehouseIds.addAll(warehouseIdsAfter); + + // 批量查询钢卷 + Map coilMap = new HashMap<>(); + if (!coilIds.isEmpty()) { + String coilIdsStr = String.join(",", coilIds.stream().map(String::valueOf).collect(Collectors.toList())); WmsMaterialCoilBo coilBo = new WmsMaterialCoilBo(); coilBo.setCoilIds(coilIdsStr); List coilList = coilService.queryList(coilBo); - Map coilMap = coilList.stream() - .collect(Collectors.toMap(WmsMaterialCoilVo::getCoilId, v -> v)); - for (WmsTransferOrderItemVo vo : list) { - WmsMaterialCoilVo coilVo = coilMap.get(vo.getCoilId()); - if (coilVo != null) { - vo.setCoil(coilVo); + coilMap = coilList.stream().collect(Collectors.toMap(WmsMaterialCoilVo::getCoilId, v -> v, (a, b) -> a)); + } + + // 批量查询原料 + List allItemIds = new ArrayList<>(itemIdsBefore); + allItemIds.addAll(itemIdsAfter); + List rawMaterialIds = allItemIds.stream().distinct().collect(Collectors.toList()); + Map rawMaterialMap = new HashMap<>(); + if (!rawMaterialIds.isEmpty()) { + List rawMaterials = rawMaterialMapper.selectBatchIds(rawMaterialIds); + rawMaterialMap = rawMaterials.stream().collect(Collectors.toMap(WmsRawMaterial::getRawMaterialId, v -> v, (a, b) -> a)); + } + + // 批量查询产品 + List productIds = allItemIds.stream().distinct().collect(Collectors.toList()); + Map productMap = new HashMap<>(); + if (!productIds.isEmpty()) { + List products = productMapper.selectBatchIds(productIds); + productMap = products.stream().collect(Collectors.toMap(WmsProduct::getProductId, v -> v, (a, b) -> a)); + } + + Map warehouseNameMap = new HashMap<>(); + if (!warehouseIds.isEmpty()) { + // 批量查 + List warehouseList = warehouseMapper.selectBatchIds(warehouseIds); + warehouseNameMap = warehouseList.stream() + .collect(Collectors.toMap( + WmsWarehouse::getWarehouseId, + WmsWarehouse::getWarehouseName, + (a, b) -> a + )); + } + + // 填充数据 + for (WmsTransferOrderItemVo vo : list) { + // 钢卷信息 + WmsMaterialCoilVo coilVo = coilMap.get(vo.getCoilId()); + if (coilVo != null) { + vo.setCoil(coilVo); + } + + // 改之前物料信息 + fillMaterialInfoByMap(vo, vo.getItemIdBefore(), vo.getMaterialTypeBefore(), "Before", rawMaterialMap, productMap); + + // 改之后物料信息 + fillMaterialInfoByMap(vo, vo.getItemIdAfter(), vo.getMaterialTypeAfter(), "After", rawMaterialMap, productMap); + + // 库区名称 + vo.setWarehouseNameBefore(warehouseNameMap.get(vo.getWarehouseIdBefore())); + vo.setWarehouseNameAfter(warehouseNameMap.get(vo.getWarehouseIdAfter())); + + // 物料类型名称 + vo.setMaterialTypeBeforeName(vo.getMaterialTypeBefore() != null ? (vo.getMaterialTypeBefore() == 1 ? "原料" : "成品") : null); + vo.setMaterialTypeAfterName(vo.getMaterialTypeAfter() != null ? (vo.getMaterialTypeAfter() == 1 ? "原料" : "成品") : null); + } + } + + private void fillMaterialInfoByMap(WmsTransferOrderItemVo vo, Long itemId, Long materialType, String suffix, + Map rawMaterialMap, Map productMap) { + if (itemId == null || materialType == null) { + return; + } + if (materialType == 1) { + WmsRawMaterial raw = rawMaterialMap.get(itemId); + if (raw != null) { + if ("Before".equals(suffix)) { + vo.setMaterialNameBefore(raw.getRawMaterialName()); + vo.setSpecificationBefore(raw.getSpecification()); + vo.setMaterialBefore(raw.getMaterial()); + vo.setSurfaceTreatmentBefore(raw.getSurfaceTreatmentDesc()); + vo.setManufacturerBefore(raw.getManufacturer()); + vo.setZincLayerBefore(raw.getZincLayer()); + } else if ("After".equals(suffix)) { + vo.setMaterialNameAfter(raw.getRawMaterialName()); + vo.setSpecificationAfter(raw.getSpecification()); + vo.setMaterialAfter(raw.getMaterial()); + vo.setSurfaceTreatmentAfter(raw.getSurfaceTreatmentDesc()); + vo.setManufacturerAfter(raw.getManufacturer()); + vo.setZincLayerAfter(raw.getZincLayer()); + } + } + } else if (materialType == 2) { + WmsProduct product = productMap.get(itemId); + if (product != null) { + if ("Before".equals(suffix)) { + vo.setMaterialNameBefore(product.getProductName()); + vo.setSpecificationBefore(product.getSpecification()); + vo.setMaterialBefore(product.getMaterial()); + vo.setSurfaceTreatmentBefore(product.getSurfaceTreatmentDesc()); + vo.setManufacturerBefore(product.getManufacturer()); + vo.setZincLayerBefore(product.getZincLayer()); + } else if ("After".equals(suffix)) { + vo.setMaterialNameAfter(product.getProductName()); + vo.setSpecificationAfter(product.getSpecification()); + vo.setMaterialAfter(product.getMaterial()); + vo.setSurfaceTreatmentAfter(product.getSurfaceTreatmentDesc()); + vo.setManufacturerAfter(product.getManufacturer()); + vo.setZincLayerAfter(product.getZincLayer()); } } } - if (!list.isEmpty()) { - for (WmsTransferOrderItemVo vo : list) { - fillDetailInfo(vo); - } - } - return list; } private void fillDetailInfo(WmsTransferOrderItemVo vo) { @@ -424,6 +527,7 @@ public class WmsTransferOrderItemServiceImpl implements IWmsTransferOrderItemSer } if (itemType != null) { coil.setItemType(itemType); + coil.setMaterialType(bo.getMaterialTypeAfter() == 1 ? "原料" : "成品"); } if (warehouseId != null) { coil.setWarehouseId(warehouseId); @@ -472,6 +576,7 @@ public class WmsTransferOrderItemServiceImpl implements IWmsTransferOrderItemSer if (coil != null) { coil.setItemId(originalItemId); coil.setItemType(originalMaterialType == 1 ? "raw_material" : "product"); + coil.setMaterialType(originalMaterialType == 1 ? "原料" : "成品"); coil.setWarehouseId(originalWarehouseId); coilMapper.updateById(coil); }