feat(wms): 增加物料类型查询条件
-在查询条件中添加了对 itemType 字段的精确匹配 - 使用 StringUtils.isNotBlank 确保查询条件的有效性- 提升了 WmsMaterialCoil 数据查询的灵活性和准确性
This commit is contained in:
@@ -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中提取钢卷号
|
||||
|
||||
Reference in New Issue
Block a user