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