feat(wms): 添加钢卷号重复检查和最大钢卷号查询功能

- 实现了钢卷号重复检查接口,支持检查入场钢卷号和当前钢卷号是否重复
- 添加了根据入场钢卷号前缀查询最大入场钢卷号的功能
- 在服务层新增了 checkCoilNoDuplicate 方法用于重复验证逻辑
- 在服务层新增了 getMaxEnterCoilNoByPrefix 方法用于获取最大钢卷号
- 在控制器层暴露了对应的 REST API 接口
- 完善了相关方法的文档注释和参数校验
This commit is contained in:
2026-01-12 15:51:43 +08:00
parent c19fee0909
commit 5e1416ce03
3 changed files with 141 additions and 0 deletions

View File

@@ -2252,4 +2252,86 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
return old2NextCoilIdMap;
}
/**
* 检查钢卷号是否重复
* 根据入场钢卷号和当前钢卷号查询数据库,判断哪个钢卷号重复
*/
@Override
public Map<String, Object> checkCoilNoDuplicate(String enterCoilNo, String currentCoilNo) {
Map<String, Object> result = new HashMap<>();
boolean enterCoilNoDuplicate = false;
boolean currentCoilNoDuplicate = false;
// 检查入场钢卷号是否重复
if (StringUtils.isNotBlank(enterCoilNo)) {
LambdaQueryWrapper<WmsMaterialCoil> enterWrapper = Wrappers.lambdaQuery();
enterWrapper.eq(WmsMaterialCoil::getEnterCoilNo, enterCoilNo)
.eq(WmsMaterialCoil::getDelFlag, 0);
long enterCount = baseMapper.selectCount(enterWrapper);
enterCoilNoDuplicate = enterCount > 0;
}
// 检查当前钢卷号是否重复
if (StringUtils.isNotBlank(currentCoilNo)) {
LambdaQueryWrapper<WmsMaterialCoil> currentWrapper = Wrappers.lambdaQuery();
currentWrapper.eq(WmsMaterialCoil::getCurrentCoilNo, currentCoilNo)
.eq(WmsMaterialCoil::getDelFlag, 0);
long currentCount = baseMapper.selectCount(currentWrapper);
currentCoilNoDuplicate = currentCount > 0;
}
// 判断重复类型
String duplicateType;
if (enterCoilNoDuplicate && currentCoilNoDuplicate) {
duplicateType = "both";
} else if (enterCoilNoDuplicate) {
duplicateType = "enter";
} else if (currentCoilNoDuplicate) {
duplicateType = "current";
} else {
duplicateType = "none";
}
result.put("duplicateType", duplicateType);
result.put("enterCoilNoDuplicate", enterCoilNoDuplicate);
result.put("currentCoilNoDuplicate", currentCoilNoDuplicate);
return result;
}
/**
* 根据入场钢卷号前缀查询最大的入场钢卷号
* 前端传入入场钢卷号的前四位,查询所有符合的入场钢卷号,返回最大值
*/
@Override
public Map<String, Object> getMaxEnterCoilNoByPrefix(String enterCoilNoPrefix) {
Map<String, Object> result = new HashMap<>();
if (StringUtils.isBlank(enterCoilNoPrefix)) {
result.put("maxEnterCoilNo", null);
result.put("prefix", enterCoilNoPrefix);
return result;
}
// 查询所有以该前缀开头的入场钢卷号
LambdaQueryWrapper<WmsMaterialCoil> wrapper = Wrappers.lambdaQuery();
wrapper.likeRight(WmsMaterialCoil::getEnterCoilNo, enterCoilNoPrefix)
.eq(WmsMaterialCoil::getDelFlag, 0)
.orderByDesc(WmsMaterialCoil::getEnterCoilNo)
.last("LIMIT 1");
WmsMaterialCoil maxCoil = baseMapper.selectOne(wrapper);
String maxEnterCoilNo = null;
if (maxCoil != null && StringUtils.isNotBlank(maxCoil.getEnterCoilNo())) {
maxEnterCoilNo = maxCoil.getEnterCoilNo();
}
result.put("maxEnterCoilNo", maxEnterCoilNo);
result.put("prefix", enterCoilNoPrefix);
return result;
}
}