diff --git a/klp-crm/src/main/java/com/klp/crm/domain/vo/CrmOrderVo.java b/klp-crm/src/main/java/com/klp/crm/domain/vo/CrmOrderVo.java index 5a8c67ed..af1db5d6 100644 --- a/klp-crm/src/main/java/com/klp/crm/domain/vo/CrmOrderVo.java +++ b/klp-crm/src/main/java/com/klp/crm/domain/vo/CrmOrderVo.java @@ -2,12 +2,15 @@ package com.klp.crm.domain.vo; import java.math.BigDecimal; import java.util.Date; +import java.util.List; + import com.fasterxml.jackson.annotation.JsonFormat; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelProperty; import com.klp.common.annotation.ExcelDictFormat; import com.klp.common.convert.ExcelDictConvert; import com.klp.common.core.domain.BaseEntity; +import com.klp.domain.vo.WmsMaterialCoilVo; import lombok.Data; @@ -292,4 +295,8 @@ public class CrmOrderVo extends BaseEntity { private String createByName; //更新人 private String updateByName; + /** + * 关联的钢卷列表 + */ + private List coilList; } diff --git a/klp-crm/src/main/java/com/klp/crm/service/impl/CrmOrderServiceImpl.java b/klp-crm/src/main/java/com/klp/crm/service/impl/CrmOrderServiceImpl.java index a5e42939..3e176b46 100644 --- a/klp-crm/src/main/java/com/klp/crm/service/impl/CrmOrderServiceImpl.java +++ b/klp-crm/src/main/java/com/klp/crm/service/impl/CrmOrderServiceImpl.java @@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.klp.common.utils.StringUtils; import com.klp.crm.domain.vo.CrmOrderOperationTraceVo; +import com.klp.mapper.WmsCoilContractRelMapper; import com.klp.system.service.ISysUserService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -17,6 +18,11 @@ import com.klp.crm.domain.vo.CrmOrderVo; import com.klp.crm.domain.CrmOrder; import com.klp.crm.mapper.CrmOrderMapper; import com.klp.crm.service.ICrmOrderService; +import com.klp.domain.WmsCoilContractRel; +import com.klp.domain.bo.WmsMaterialCoilBo; +import com.klp.domain.vo.WmsMaterialCoilVo; +import com.klp.service.IWmsCoilContractRelService; +import com.klp.service.IWmsMaterialCoilService; import java.util.*; import java.util.stream.Collectors; @@ -35,6 +41,10 @@ public class CrmOrderServiceImpl implements ICrmOrderService { private final ISysUserService userService; + private final WmsCoilContractRelMapper coilContractRelMapper; + + private final IWmsMaterialCoilService materialCoilService; + /** * 查询正式订单主 */ @@ -76,6 +86,57 @@ public class CrmOrderServiceImpl implements ICrmOrderService { } } } + + // 查询订单关联的钢卷ID列表 + List contractIds = records.stream() + .map(CrmOrderVo::getOrderId) + .filter(Objects::nonNull) + .distinct() + .collect(Collectors.toList()); + + if (!contractIds.isEmpty()) { + // 批量查询钢卷与合同关联关系 + LambdaQueryWrapper coilQw = Wrappers.lambdaQuery(); + coilQw.in(WmsCoilContractRel::getContractId, contractIds); + coilQw.eq(WmsCoilContractRel::getDelFlag, 0); + List coilRels = coilContractRelMapper.selectList(coilQw); + + // 按contractId分组,收集coilId列表 + Map> coilIdMap = coilRels.stream() + .filter(rel -> rel.getContractId() != null && rel.getCoilId() != null) + .collect(Collectors.groupingBy( + WmsCoilContractRel::getContractId, + Collectors.mapping(WmsCoilContractRel::getCoilId, Collectors.toList()) + )); + + // 查询所有相关钢卷的详细信息 + Set allCoilIds = coilIdMap.values().stream() + .flatMap(List::stream) + .collect(Collectors.toSet()); + + Map coilVoMap = Collections.emptyMap(); + if (!allCoilIds.isEmpty()) { + WmsMaterialCoilBo coilBo = new WmsMaterialCoilBo(); + coilBo.setCoilIds(allCoilIds.stream().map(String::valueOf).collect(Collectors.joining(","))); + List allCoils = materialCoilService.queryList(coilBo); + coilVoMap = allCoils.stream() + .collect(Collectors.toMap(WmsMaterialCoilVo::getCoilId, c -> c, (a, b) -> a)); + } + + // 设置到每个订单的coilIds和coilList字段 + for (CrmOrderVo vo : records) { + if (vo.getContractId() != null && coilIdMap.containsKey(vo.getContractId())) { + List coilIdList = coilIdMap.get(vo.getContractId()); + // 设置coilList(钢卷详细信息列表) + List coilList = coilIdList.stream() + .map(coilVoMap::get) + .filter(Objects::nonNull) + .collect(Collectors.toList()); + vo.setCoilList(coilList); + } + } + } + return TableDataInfo.build(result); }