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

- 在pom.xml中添加klp-wms依赖模块
- 引入WmsMaterialCoil和WmsMaterialCoilVo相关类
- 注入WmsMaterialCoilMapper用于钢卷信息查询
- 实现enrichWithCoilInfo方法批量获取钢卷详情
- 优化查询逻辑支持单条和分页查询的钢卷信息填充
- 在TsAcceptCoilRelVo中新增coilInfo字段存储钢卷信息
This commit is contained in:
2026-06-21 14:15:54 +08:00
parent 0c05455ae3
commit f068daba0b
3 changed files with 59 additions and 2 deletions

View File

@@ -15,5 +15,9 @@
<groupId>com.klp</groupId>
<artifactId>klp-common</artifactId>
</dependency>
<dependency>
<groupId>com.klp</groupId>
<artifactId>klp-wms</artifactId>
</dependency>
</dependencies>
</project>

View File

@@ -4,6 +4,7 @@ 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.domain.vo.WmsMaterialCoilVo;
import lombok.Data;
@@ -43,5 +44,10 @@ public class TsAcceptCoilRelVo {
@ExcelProperty(value = "备注")
private String remark;
/**
* 关联的钢卷信息(丰富返回值)
*/
private WmsMaterialCoilVo coilInfo;
}

View File

@@ -1,6 +1,7 @@
package com.klp.flow.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.klp.common.core.page.TableDataInfo;
import com.klp.common.core.domain.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -8,15 +9,20 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import com.klp.domain.WmsMaterialCoil;
import com.klp.domain.vo.WmsMaterialCoilVo;
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 java.util.List;
import java.util.Map;
import java.util.Collection;
import java.util.Collections;
import java.util.stream.Collectors;
/**
* 受理单关联钢卷中间Service业务层处理
@@ -29,13 +35,18 @@ import java.util.Collection;
public class TsAcceptCoilRelServiceImpl implements ITsAcceptCoilRelService {
private final TsAcceptCoilRelMapper baseMapper;
private final WmsMaterialCoilMapper wmsMaterialCoilMapper;
/**
* 查询受理单关联钢卷中间
*/
@Override
public TsAcceptCoilRelVo queryById(Long relId){
return baseMapper.selectVoById(relId);
TsAcceptCoilRelVo vo = baseMapper.selectVoById(relId);
if (vo != null) {
enrichWithCoilInfo(Collections.singletonList(vo));
}
return vo;
}
/**
@@ -45,6 +56,7 @@ public class TsAcceptCoilRelServiceImpl implements ITsAcceptCoilRelService {
public TableDataInfo<TsAcceptCoilRelVo> queryPageList(TsAcceptCoilRelBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<TsAcceptCoilRel> lqw = buildQueryWrapper(bo);
Page<TsAcceptCoilRelVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
enrichWithCoilInfo(result.getRecords());
return TableDataInfo.build(result);
}
@@ -54,7 +66,42 @@ public class TsAcceptCoilRelServiceImpl implements ITsAcceptCoilRelService {
@Override
public List<TsAcceptCoilRelVo> queryList(TsAcceptCoilRelBo bo) {
LambdaQueryWrapper<TsAcceptCoilRel> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
List<TsAcceptCoilRelVo> list = baseMapper.selectVoList(lqw);
enrichWithCoilInfo(list);
return list;
}
/**
* 根据关联表中的coilId批量查询钢卷信息并填充到VO中
*/
private void enrichWithCoilInfo(List<TsAcceptCoilRelVo> voList) {
if (voList == null || voList.isEmpty()) {
return;
}
// 收集所有coilId去重
List<Long> coilIds = voList.stream()
.map(TsAcceptCoilRelVo::getCoilId)
.filter(id -> id != null)
.distinct()
.collect(Collectors.toList());
if (coilIds.isEmpty()) {
return;
}
// 批量查询钢卷信息
QueryWrapper<WmsMaterialCoil> qw = new QueryWrapper<>();
qw.in("mc.coil_id", coilIds);
qw.eq("mc.del_flag", 0);
qw.orderByDesc("mc.create_time");
List<WmsMaterialCoilVo> coilList = wmsMaterialCoilMapper.selectVoListWithDynamicJoin(qw);
// 按coilId建立索引
Map<Long, WmsMaterialCoilVo> coilMap = coilList.stream()
.collect(Collectors.toMap(WmsMaterialCoilVo::getCoilId, c -> c, (a, b) -> a));
// 填充到VO中
for (TsAcceptCoilRelVo vo : voList) {
if (vo.getCoilId() != null) {
vo.setCoilInfo(coilMap.get(vo.getCoilId()));
}
}
}
private LambdaQueryWrapper<TsAcceptCoilRel> buildQueryWrapper(TsAcceptCoilRelBo bo) {