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

- 在 WmsMaterialWarningBo 中新增 coilIds 字段用于批量过滤
- 在 WmsMaterialWarningServiceImpl 中实现批量钢卷信息查询和填充逻辑
- 添加按逗号分隔的钢卷ID集合过滤功能
- 在 WmsMaterialWarningVo 中增加 coilVo 关联字段并设置为忽略导出
- 实现了钢卷警告与钢卷信息的关联显示功能
- 优化了查询性能通过批量获取钢卷数据减少数据库访问次数
This commit is contained in:
2026-06-09 09:58:35 +08:00
parent fdb13b7261
commit 7c9c99bf45
3 changed files with 58 additions and 0 deletions

View File

@@ -90,6 +90,11 @@ public class WmsMaterialWarningBo extends BaseEntity {
*/
private String handleRemark;
/**
* 钢卷ID集合逗号分隔用于列表查询批量过滤
*/
private String coilIds;
/**
* 备注
*/

View File

@@ -7,6 +7,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.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;
@@ -112,5 +113,11 @@ public class WmsMaterialWarningVo {
@ExcelProperty(value = "备注")
private String remark;
/**
* 钢卷信息(关联查询,不导出)
*/
@JsonIgnore
private WmsMaterialCoilVo coilVo;
}

View File

@@ -8,6 +8,9 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.klp.common.core.service.ConfigService;
import com.klp.common.utils.StringUtils;
import com.klp.domain.vo.WmsMaterialCoilVo;
import com.klp.mapper.WmsMaterialCoilMapper;
import com.klp.service.IWmsMaterialCoilService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
@@ -25,6 +28,7 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Collection;
import java.util.stream.Collectors;
/**
* 钢卷通用维度告警(长度/厚度/宽度Service业务层处理
@@ -39,6 +43,7 @@ public class WmsMaterialWarningServiceImpl implements IWmsMaterialWarningService
private final WmsMaterialWarningMapper baseMapper;
private final ConfigService configService;
private final IWmsMaterialCoilService wmsMaterialCoilService;
/**
* 查询钢卷通用维度告警(长度/厚度/宽度)
@@ -55,6 +60,33 @@ public class WmsMaterialWarningServiceImpl implements IWmsMaterialWarningService
public TableDataInfo<WmsMaterialWarningVo> queryPageList(WmsMaterialWarningBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<WmsMaterialWarning> lqw = buildQueryWrapper(bo);
Page<WmsMaterialWarningVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
// 收集所有钢卷ID批量查询钢卷信息并填充
List<WmsMaterialWarningVo> list = result.getRecords();
if (list != null && !list.isEmpty()) {
String coilIds = list.stream()
.map(WmsMaterialWarningVo::getCoilId)
.filter(java.util.Objects::nonNull)
.distinct()
.map(String::valueOf)
.collect(Collectors.joining(","));
if (!coilIds.isEmpty()) {
WmsMaterialCoilBo wmsMaterialCoilBo = new WmsMaterialCoilBo();
wmsMaterialCoilBo.setCoilIds(coilIds);
List<WmsMaterialCoilVo> coilVos = wmsMaterialCoilService.queryList(wmsMaterialCoilBo);
java.util.Map<Long, WmsMaterialCoilVo> coilMap = coilVos.stream()
.filter(v -> v.getCoilId() != null)
.collect(java.util.stream.Collectors.toMap(
WmsMaterialCoilVo::getCoilId,
v -> v,
(a, b) -> a));
for (WmsMaterialWarningVo warning : list) {
WmsMaterialCoilVo coilVo = coilMap.get(warning.getCoilId());
if (coilVo != null) {
warning.setCoilVo(coilVo);
}
}
}
}
return TableDataInfo.build(result);
}
@@ -71,6 +103,20 @@ public class WmsMaterialWarningServiceImpl implements IWmsMaterialWarningService
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<WmsMaterialWarning> lqw = Wrappers.lambdaQuery();
lqw.eq(bo.getCoilId() != null, WmsMaterialWarning::getCoilId, bo.getCoilId());
// 批量钢卷ID过滤逗号分隔
if (StringUtils.isNotBlank(bo.getCoilIds())) {
String[] ids = bo.getCoilIds().split(",");
List<Long> idList = new ArrayList<>();
for (String id : ids) {
try {
idList.add(Long.parseLong(id.trim()));
} catch (NumberFormatException ignored) {
}
}
if (!idList.isEmpty()) {
lqw.in(WmsMaterialWarning::getCoilId, idList);
}
}
lqw.eq(StringUtils.isNotBlank(bo.getWarningType()), WmsMaterialWarning::getWarningType, bo.getWarningType());
lqw.eq(bo.getTheoreticalVal() != null, WmsMaterialWarning::getTheoreticalVal, bo.getTheoreticalVal());
lqw.eq(bo.getActualVal() != null, WmsMaterialWarning::getActualVal, bo.getActualVal());