feat(purchase): 添加采购订单供应商名称显示功能

- 引入 ErpSupplierVo 和 ErpSupplierMapper 依赖
- 在采购订单查询接口中批量获取供应商信息
- 通过流式处理构建供应商ID到名称的映射关系
- 将供应商名称动态设置到采购订单VO对象中
- 实现供应商名称的批量查询优化避免N+1问题
This commit is contained in:
2026-05-08 19:49:01 +08:00
parent 35d5582ada
commit 9674de43d4
2 changed files with 41 additions and 0 deletions

View File

@@ -39,6 +39,11 @@ public class ErpPurchaseOrderVo implements Serializable {
@ExcelProperty(value = "供应商ID") @ExcelProperty(value = "供应商ID")
private Long supplierId; private Long supplierId;
/**
* 供应商名称
*/
private String supplierName;
/** /**
* 下单日期 * 下单日期
*/ */

View File

@@ -13,10 +13,12 @@ import com.klp.erp.domain.ErpPurchaseOrderItem;
import com.klp.erp.enums.PurchaseOrderStatus; import com.klp.erp.enums.PurchaseOrderStatus;
import com.klp.erp.domain.bo.ErpPurchaseOrderBo; import com.klp.erp.domain.bo.ErpPurchaseOrderBo;
import com.klp.erp.domain.vo.ErpPurchaseOrderVo; import com.klp.erp.domain.vo.ErpPurchaseOrderVo;
import com.klp.erp.domain.vo.ErpSupplierVo;
import com.klp.erp.mapper.ErpPurchaseOrderItemMapper; import com.klp.erp.mapper.ErpPurchaseOrderItemMapper;
import com.klp.erp.mapper.ErpPurchaseOrderMapper; import com.klp.erp.mapper.ErpPurchaseOrderMapper;
import com.klp.erp.mapper.ErpPurchaseReceiptMapper; import com.klp.erp.mapper.ErpPurchaseReceiptMapper;
import com.klp.erp.mapper.ErpPurchaseReturnItemMapper; import com.klp.erp.mapper.ErpPurchaseReturnItemMapper;
import com.klp.erp.mapper.ErpSupplierMapper;
import com.klp.erp.service.IErpPurchaseOrderService; import com.klp.erp.service.IErpPurchaseOrderService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@@ -25,6 +27,8 @@ import java.math.BigDecimal;
import java.util.Collection; import java.util.Collection;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/** /**
* 采购订单主Service业务层处理 * 采购订单主Service业务层处理
@@ -40,6 +44,7 @@ public class ErpPurchaseOrderServiceImpl implements IErpPurchaseOrderService {
private final ErpPurchaseOrderItemMapper orderItemMapper; private final ErpPurchaseOrderItemMapper orderItemMapper;
private final ErpPurchaseReceiptMapper receiptMapper; private final ErpPurchaseReceiptMapper receiptMapper;
private final ErpPurchaseReturnItemMapper returnItemMapper; private final ErpPurchaseReturnItemMapper returnItemMapper;
private final ErpSupplierMapper supplierMapper;
/** /**
* 查询采购订单主 * 查询采购订单主
@@ -56,6 +61,37 @@ public class ErpPurchaseOrderServiceImpl implements IErpPurchaseOrderService {
public TableDataInfo<ErpPurchaseOrderVo> queryPageList(ErpPurchaseOrderBo bo, PageQuery pageQuery) { public TableDataInfo<ErpPurchaseOrderVo> queryPageList(ErpPurchaseOrderBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<ErpPurchaseOrder> lqw = buildQueryWrapper(bo); LambdaQueryWrapper<ErpPurchaseOrder> lqw = buildQueryWrapper(bo);
Page<ErpPurchaseOrderVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw); Page<ErpPurchaseOrderVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
// 批量查询供应商名称并映射
if (result.getRecords() != null && !result.getRecords().isEmpty()) {
// 收集所有供应商ID
List<Long> supplierIds = result.getRecords().stream()
.map(ErpPurchaseOrderVo::getSupplierId)
.filter(id -> id != null)
.distinct()
.collect(Collectors.toList());
if (!supplierIds.isEmpty()) {
// 批量查询供应商信息
List<ErpSupplierVo> suppliers = supplierMapper.selectVoBatchIds(supplierIds);
// 构建供应商ID到名称的映射
Map<Long, String> supplierNameMap = suppliers.stream()
.collect(Collectors.toMap(
ErpSupplierVo::getSupplierId,
ErpSupplierVo::getName,
(existing, replacement) -> existing // 处理重复key的情况
));
// 将供应商名称设置到采购订单VO中
result.getRecords().forEach(order -> {
if (order.getSupplierId() != null) {
order.setSupplierName(supplierNameMap.get(order.getSupplierId()));
}
});
}
}
return TableDataInfo.build(result); return TableDataInfo.build(result);
} }