feat(wms): 添加钢卷号重复检查和最大钢卷号查询功能
- 实现了钢卷号重复检查接口,支持检查入场钢卷号和当前钢卷号是否重复 - 添加了根据入场钢卷号前缀查询最大入场钢卷号的功能 - 在服务层新增了 checkCoilNoDuplicate 方法用于重复验证逻辑 - 在服务层新增了 getMaxEnterCoilNoByPrefix 方法用于获取最大钢卷号 - 在控制器层暴露了对应的 REST API 接口 - 完善了相关方法的文档注释和参数校验
This commit is contained in:
@@ -113,5 +113,29 @@ public interface IWmsMaterialCoilService {
|
||||
Map<Long, String> getUpdatedCoilIdsByOldCoilIds(List<Long> oldCoilIds);
|
||||
|
||||
int withdrawExportCoil(@NotNull(message = "主键不能为空") Long coilId);
|
||||
|
||||
/**
|
||||
* 检查钢卷号是否重复
|
||||
* 根据入场钢卷号和当前钢卷号查询数据库,判断哪个钢卷号重复
|
||||
*
|
||||
* @param enterCoilNo 入场钢卷号
|
||||
* @param currentCoilNo 当前钢卷号
|
||||
* @return 返回结果Map,包含:
|
||||
* - duplicateType: "enter" (入场钢卷号重复), "current" (当前钢卷号重复), "both" (都重复), "none" (都不重复)
|
||||
* - enterCoilNoDuplicate: 入场钢卷号是否重复 (true/false)
|
||||
* - currentCoilNoDuplicate: 当前钢卷号是否重复 (true/false)
|
||||
*/
|
||||
Map<String, Object> checkCoilNoDuplicate(String enterCoilNo, String currentCoilNo);
|
||||
|
||||
/**
|
||||
* 根据入场钢卷号前缀查询最大的入场钢卷号
|
||||
* 前端传入入场钢卷号的前四位,查询所有符合的入场钢卷号,返回最大值
|
||||
*
|
||||
* @param enterCoilNoPrefix 入场钢卷号前缀(前四位)
|
||||
* @return 返回结果Map,包含:
|
||||
* - maxEnterCoilNo: 最大的入场钢卷号
|
||||
* - prefix: 前缀值
|
||||
*/
|
||||
Map<String, Object> getMaxEnterCoilNoByPrefix(String enterCoilNoPrefix);
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user