feat(wms): 增加物料类型查询条件

-在查询条件中添加了对 itemType 字段的精确匹配
- 使用 StringUtils.isNotBlank 确保查询条件的有效性- 提升了 WmsMaterialCoil 数据查询的灵活性和准确性
This commit is contained in:
2025-10-29 14:05:11 +08:00
parent e16e734104
commit 62631db76e

View File

@@ -74,7 +74,7 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
if (vo == null) {
return null;
}
// 如果查询到的是历史数据,尝试查找对应的当前数据
if (vo.getDataType() != null && vo.getDataType() == 0) {
// 根据入场钢卷号查找当前数据
@@ -82,7 +82,7 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
lqw.eq(WmsMaterialCoil::getEnterCoilNo, vo.getEnterCoilNo())
.eq(WmsMaterialCoil::getDataType, 1) // 查找当前数据
.orderByDesc(WmsMaterialCoil::getCreateTime); // 按创建时间倒序,获取最新的
List<WmsMaterialCoilVo> currentDataList = baseMapper.selectVoList(lqw);
if (!currentDataList.isEmpty()) {
// 如果找到当前数据,返回最新的当前数据
@@ -168,6 +168,7 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
lqw.eq(bo.getWarehouseId() != null, WmsMaterialCoil::getWarehouseId, bo.getWarehouseId());
lqw.eq(bo.getHasMergeSplit() != null, WmsMaterialCoil::getHasMergeSplit, bo.getHasMergeSplit());
lqw.eq(bo.getStatus() != null, WmsMaterialCoil::getStatus, bo.getStatus());
lqw.eq(StringUtils.isNotBlank(bo.getItemType()), WmsMaterialCoil::getItemType, bo.getItemType());
return lqw;
}
@@ -353,7 +354,7 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
newCoil.setCoilId(null); // 清空ID让数据库自动生成新的ID
newCoil.setDataType(1); // 设置为当前数据
newCoil.setQrcodeRecordId(oldCoil.getQrcodeRecordId()); // 继承二维码ID
// 确保关键字段不丢失
if (newCoil.getEnterCoilNo() == null) {
newCoil.setEnterCoilNo(oldCoil.getEnterCoilNo());
@@ -367,7 +368,7 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
if (newCoil.getItemId() == null) {
newCoil.setItemId(oldCoil.getItemId());
}
validEntityBeforeSave(newCoil);
boolean flag = baseMapper.insert(newCoil) > 0;
if (flag) {
@@ -447,15 +448,15 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
if (newCoil.getWarehouseId() == null) {
newCoil.setWarehouseId(oldCoil.getWarehouseId());
}
// 为每个子钢卷生成独立二维码
Long newQrcodeId = generateQrcodeForSplit(oldCoil, newCoilBo, allNewCoilNos);
newCoil.setQrcodeRecordId(newQrcodeId);
validEntityBeforeSave(newCoil);
baseMapper.insert(newCoil);
newCoils.add(newCoil);
// 更新二维码内容中的coilId
updateQrcodeCoilId(newQrcodeId, newCoil.getCoilId());
}
@@ -478,7 +479,7 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
WmsMaterialCoil newCoil = BeanUtil.toBean(bo, WmsMaterialCoil.class);
newCoil.setCoilId(null);
newCoil.setDataType(1);
// 从第一个参与合卷的原始钢卷获取基本信息
if (!bo.getNewCoils().isEmpty()) {
WmsMaterialCoil firstOriginalCoil = baseMapper.selectById(bo.getNewCoils().get(0).getCoilId());
@@ -786,18 +787,18 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
try {
// 1. 查询所有相关的二维码记录(包括分卷后的独立二维码)
List<WmsGenerateRecordVo> allQrRecords = new ArrayList<>();
// 首先查询主二维码(以入场钢卷号为序列号的)
WmsGenerateRecordBo qrBo = new WmsGenerateRecordBo();
qrBo.setSerialNumber(enterCoilNo);
List<WmsGenerateRecordVo> mainQrRecords = generateRecordService.queryList(qrBo);
allQrRecords.addAll(mainQrRecords);
// 然后查询所有以该入场钢卷号开头的二维码(分卷后的二维码)
WmsGenerateRecordBo splitQrBo = new WmsGenerateRecordBo();
List<WmsGenerateRecordVo> allRecords = generateRecordService.queryList(splitQrBo);
for (WmsGenerateRecordVo record : allRecords) {
if (record.getSerialNumber() != null &&
if (record.getSerialNumber() != null &&
record.getSerialNumber().startsWith(enterCoilNo + "-") &&
!allQrRecords.contains(record)) {
allQrRecords.add(record);
@@ -811,20 +812,20 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
// 2. 合并所有二维码的steps信息去重并重新编号
Map<String, Map<String, Object>> uniqueSteps = new HashMap<>(); // 用于去重
Set<String> allCoilNos = new HashSet<>();
for (WmsGenerateRecordVo qrRecord : allQrRecords) {
ObjectMapper objectMapper = new ObjectMapper();
@SuppressWarnings("unchecked")
Map<String, Object> contentMap = objectMapper.readValue(qrRecord.getContent(), Map.class);
@SuppressWarnings("unchecked")
List<Map<String, Object>> steps = (List<Map<String, Object>>) contentMap.get("steps");
if (steps != null) {
for (Map<String, Object> step : steps) {
// 创建唯一标识:操作类型 + 相关钢卷号
String stepKey = createStepKey(step);
// 如果是新的步骤,添加到唯一步骤集合中
if (!uniqueSteps.containsKey(stepKey)) {
Map<String, Object> uniqueStep = new HashMap<>(step);
@@ -832,7 +833,7 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
uniqueStep.put("qrcode_id", qrRecord.getRecordId());
uniqueSteps.put(stepKey, uniqueStep);
}
// 提取钢卷号
extractCoilNo(step, "current_coil_no", allCoilNos);
extractCoilNo(step, "new_current_coil_no", allCoilNos);
@@ -846,10 +847,10 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
}
}
}
// 转换为列表并按原始步骤号排序(保持时间顺序)
List<Map<String, Object>> allSteps = new ArrayList<>(uniqueSteps.values());
// 按原始步骤号排序,保持实际操作的时间顺序
allSteps.sort((a, b) -> {
Integer stepA = (Integer) a.get("step");
@@ -858,7 +859,7 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
if (stepB == null) stepB = 0;
return stepA.compareTo(stepB);
});
// 重新编号(保持连续性)
for (int i = 0; i < allSteps.size(); i++) {
allSteps.get(i).put("display_step", i + 1);
@@ -903,14 +904,14 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
fillRelatedObjects(vo);
}
}
// 如果没有找到记录,尝试查询所有相关的钢卷(包括历史数据)
if (result.isEmpty()) {
LambdaQueryWrapper<WmsMaterialCoil> lqw = Wrappers.lambdaQuery();
lqw.eq(WmsMaterialCoil::getEnterCoilNo, enterCoilNo);
lqw.orderByAsc(WmsMaterialCoil::getCreateTime);
result = baseMapper.selectVoList(lqw);
// 填充每个记录的关联对象信息
for (WmsMaterialCoilVo vo : result) {
fillRelatedObjects(vo);
@@ -935,11 +936,11 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
*/
private String createStepKey(Map<String, Object> step) {
StringBuilder keyBuilder = new StringBuilder();
// 使用操作类型和主要标识符创建唯一key
String operation = (String) step.get("operation");
keyBuilder.append(operation).append("-");
// 根据操作类型使用不同的标识符
if ("分卷".equals(operation)) {
// 分卷:使用原钢卷号 + 分卷列表
@@ -957,10 +958,10 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
keyBuilder.append(step.get("old_current_coil_no")).append("->");
keyBuilder.append(step.get("new_current_coil_no"));
}
return keyBuilder.toString();
}
/**
* 从step中提取钢卷号