feat(flow): 添加钢卷关联合同订单信息查询功能

- 引入 WmsCoilContractRelVo 和 WmsCoilContractRelMapper 依赖
- 在 TsAcceptCoilRelServiceImpl 中添加 wmsCoilContractRelMapper 注入
- 修改 enrichWithCoilInfo 方法同时查询钢卷关联的合同/订单信息
- 通过一次 SQL JOIN 查询批量获取钢卷合同关系数据
- 按 coilId 分组合同订单信息并填充到钢卷信息中
- 优化查询性能减少数据库访问次数
This commit is contained in:
2026-06-21 15:11:27 +08:00
parent c33b27d174
commit b939052a88

View File

@@ -11,12 +11,14 @@ import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import com.klp.domain.WmsMaterialCoil;
import com.klp.domain.vo.WmsMaterialCoilVo;
import com.klp.domain.vo.WmsCoilContractRelVo;
import com.klp.flow.domain.bo.TsAcceptCoilRelBo;
import com.klp.flow.domain.vo.TsAcceptCoilRelVo;
import com.klp.flow.domain.TsAcceptCoilRel;
import com.klp.flow.mapper.TsAcceptCoilRelMapper;
import com.klp.flow.service.ITsAcceptCoilRelService;
import com.klp.mapper.WmsMaterialCoilMapper;
import com.klp.mapper.WmsCoilContractRelMapper;
import java.util.List;
import java.util.Map;
@@ -36,6 +38,7 @@ public class TsAcceptCoilRelServiceImpl implements ITsAcceptCoilRelService {
private final TsAcceptCoilRelMapper baseMapper;
private final WmsMaterialCoilMapper wmsMaterialCoilMapper;
private final WmsCoilContractRelMapper wmsCoilContractRelMapper;
/**
* 查询受理单关联钢卷中间
@@ -73,6 +76,7 @@ public class TsAcceptCoilRelServiceImpl implements ITsAcceptCoilRelService {
/**
* 根据关联表中的coilId批量查询钢卷信息并填充到VO中
* 同时批量查询钢卷关联的合同/订单信息
*/
private void enrichWithCoilInfo(List<TsAcceptCoilRelVo> voList) {
if (voList == null || voList.isEmpty()) {
@@ -96,10 +100,20 @@ public class TsAcceptCoilRelServiceImpl implements ITsAcceptCoilRelService {
// 按coilId建立索引
Map<Long, WmsMaterialCoilVo> coilMap = coilList.stream()
.collect(Collectors.toMap(WmsMaterialCoilVo::getCoilId, c -> c, (a, b) -> a));
// 批量查询钢卷关联的合同/订单信息一次SQLJOIN crm_order
List<WmsCoilContractRelVo> allOrderList = wmsCoilContractRelMapper.selectOrdersByCoilIds(coilIds);
// 按coilId分组
Map<Long, List<WmsCoilContractRelVo>> orderMap = allOrderList.stream()
.collect(Collectors.groupingBy(WmsCoilContractRelVo::getCoilId));
// 填充到VO中
for (TsAcceptCoilRelVo vo : voList) {
if (vo.getCoilId() != null) {
vo.setCoilInfo(coilMap.get(vo.getCoilId()));
WmsMaterialCoilVo coilInfo = coilMap.get(vo.getCoilId());
if (coilInfo != null) {
// 填充合同/订单列表
coilInfo.setOrderList(orderMap.get(vo.getCoilId()));
}
vo.setCoilInfo(coilInfo);
}
}
}