This commit is contained in:
砂糖
2026-03-28 17:52:03 +08:00

View File

@@ -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<WmsTransferOrderItem> lqw = buildQueryWrapper(bo);
Page<WmsTransferOrderItemVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
List<WmsTransferOrderItemVo> 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<WmsMaterialCoilVo> coilList = coilService.queryList(coilBo);
Map<Long, WmsMaterialCoilVo> 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<WmsTransferOrderItemVo> queryList(WmsTransferOrderItemBo bo) {
LambdaQueryWrapper<WmsTransferOrderItem> lqw = buildQueryWrapper(bo);
List<WmsTransferOrderItemVo> 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<WmsTransferOrderItemVo> list) {
if (list == null || list.isEmpty()) {
return;
}
// 收集所有需要的ID
List<Long> coilIds = list.stream()
.map(WmsTransferOrderItemVo::getCoilId)
.filter(Objects::nonNull)
.distinct()
.collect(Collectors.toList());
// 收集改之前物料ID
List<Long> itemIdsBefore = list.stream()
.map(WmsTransferOrderItemVo::getItemIdBefore)
.filter(Objects::nonNull)
.distinct()
.collect(Collectors.toList());
// 2. 收集改之后物料ID
List<Long> itemIdsAfter = list.stream()
.map(WmsTransferOrderItemVo::getItemIdAfter)
.filter(Objects::nonNull)
.distinct()
.collect(Collectors.toList());
// 3. 收集改前仓库ID
List<Long> warehouseIdsBefore = list.stream()
.map(WmsTransferOrderItemVo::getWarehouseIdBefore)
.filter(Objects::nonNull)
.distinct()
.collect(Collectors.toList());
// 4. 收集改后仓库ID
List<Long> warehouseIdsAfter = list.stream()
.map(WmsTransferOrderItemVo::getWarehouseIdAfter)
.filter(Objects::nonNull)
.distinct()
.collect(Collectors.toList());
// 5. 合并所有仓库ID和物料ID逻辑完全一致
List<Long> warehouseIds = new ArrayList<>();
warehouseIds.addAll(warehouseIdsBefore);
warehouseIds.addAll(warehouseIdsAfter);
// 批量查询钢卷
Map<Long, WmsMaterialCoilVo> 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<WmsMaterialCoilVo> coilList = coilService.queryList(coilBo);
Map<Long, WmsMaterialCoilVo> 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<Long> allItemIds = new ArrayList<>(itemIdsBefore);
allItemIds.addAll(itemIdsAfter);
List<Long> rawMaterialIds = allItemIds.stream().distinct().collect(Collectors.toList());
Map<Long, WmsRawMaterial> rawMaterialMap = new HashMap<>();
if (!rawMaterialIds.isEmpty()) {
List<WmsRawMaterial> rawMaterials = rawMaterialMapper.selectBatchIds(rawMaterialIds);
rawMaterialMap = rawMaterials.stream().collect(Collectors.toMap(WmsRawMaterial::getRawMaterialId, v -> v, (a, b) -> a));
}
// 批量查询产品
List<Long> productIds = allItemIds.stream().distinct().collect(Collectors.toList());
Map<Long, WmsProduct> productMap = new HashMap<>();
if (!productIds.isEmpty()) {
List<WmsProduct> products = productMapper.selectBatchIds(productIds);
productMap = products.stream().collect(Collectors.toMap(WmsProduct::getProductId, v -> v, (a, b) -> a));
}
Map<Long, String> warehouseNameMap = new HashMap<>();
if (!warehouseIds.isEmpty()) {
// 批量查
List<WmsWarehouse> 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<Long, WmsRawMaterial> rawMaterialMap, Map<Long, WmsProduct> 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);
}