feat(flow): 添加钢卷关联合同订单信息查询功能
- 引入 WmsCoilContractRelVo 和 WmsCoilContractRelMapper 依赖 - 在 TsAcceptCoilRelServiceImpl 中添加 wmsCoilContractRelMapper 注入 - 修改 enrichWithCoilInfo 方法同时查询钢卷关联的合同/订单信息 - 通过一次 SQL JOIN 查询批量获取钢卷合同关系数据 - 按 coilId 分组合同订单信息并填充到钢卷信息中 - 优化查询性能减少数据库访问次数
This commit is contained in:
@@ -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));
|
||||
// 批量查询钢卷关联的合同/订单信息(一次SQL,JOIN 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user