feat(service): 扩展钢卷号重复检查功能支持厂家原料卷号

- 在 checkCoilNoDuplicate 方法中新增 supplierCoilNo 参数
- 添加厂家原料卷号重复检查逻辑并排除自身记录
- 更新重复类型判断增加 supplier 选项
- 完善返回结果包含厂家原料卷号重复状态
- 同步更新控制器层接口参数传递
- 修正方法注释文档说明新增参数和返回值字段
This commit is contained in:
2026-03-11 09:14:13 +08:00
parent 1862908eb1
commit 3afc296e40
3 changed files with 36 additions and 9 deletions

View File

@@ -296,19 +296,23 @@ public class WmsMaterialCoilController extends BaseController {
* 检查钢卷号是否重复 * 检查钢卷号是否重复
* 前端传入入场钢卷号和当前钢卷号,返回哪个钢卷号重复 * 前端传入入场钢卷号和当前钢卷号,返回哪个钢卷号重复
* *
* @param coilId 钢卷ID修改时传入用于排除自身
* @param enterCoilNo 入场钢卷号 * @param enterCoilNo 入场钢卷号
* @param currentCoilNo 当前钢卷号 * @param currentCoilNo 当前钢卷号
* @param supplierCoilNo 厂家原料卷号
* @return 返回结果,包含: * @return 返回结果,包含:
* - duplicateType: "enter" (入场钢卷号重复), "current" (当前钢卷号重复), "both" (都重复), "none" (都不重复) * - duplicateType: "enter" (入场钢卷号重复), "current" (当前钢卷号重复), "supplier" (厂家原料卷号重复), "both" (都重复), "none" (都不重复)
* - enterCoilNoDuplicate: 入场钢卷号是否重复 * - enterCoilNoDuplicate: 入场钢卷号是否重复
* - currentCoilNoDuplicate: 当前钢卷号是否重复 * - currentCoilNoDuplicate: 当前钢卷号是否重复
* - supplierCoilNoDuplicate: 厂家原料卷号是否重复
*/ */
@GetMapping("/checkCoilNoDuplicate") @GetMapping("/checkCoilNoDuplicate")
public R<Map<String, Object>> checkCoilNoDuplicate( public R<Map<String, Object>> checkCoilNoDuplicate(
@RequestParam(required = false) Long coilId, @RequestParam(required = false) Long coilId,
@RequestParam(required = false) String enterCoilNo, @RequestParam(required = false) String enterCoilNo,
@RequestParam(required = false) String currentCoilNo) { @RequestParam(required = false) String currentCoilNo,
Map<String, Object> result = iWmsMaterialCoilService.checkCoilNoDuplicate(coilId,enterCoilNo, currentCoilNo); @RequestParam(required = false) String supplierCoilNo) {
Map<String, Object> result = iWmsMaterialCoilService.checkCoilNoDuplicate(coilId, enterCoilNo, currentCoilNo, supplierCoilNo);
return R.ok(result); return R.ok(result);
} }

View File

@@ -139,16 +139,19 @@ public interface IWmsMaterialCoilService {
/** /**
* 检查钢卷号是否重复 * 检查钢卷号是否重复
* 根据入场钢卷号当前钢卷号查询数据库,判断哪个钢卷号重复 * 根据入场钢卷号当前钢卷号和厂家原料卷号查询数据库,判断哪个钢卷号重复
* *
* @param coilId 钢卷ID修改时传入用于排除自身
* @param enterCoilNo 入场钢卷号 * @param enterCoilNo 入场钢卷号
* @param currentCoilNo 当前钢卷号 * @param currentCoilNo 当前钢卷号
* @param supplierCoilNo 厂家原料卷号
* @return 返回结果Map包含 * @return 返回结果Map包含
* - duplicateType: "enter" (入场钢卷号重复), "current" (当前钢卷号重复), "both" (都重复), "none" (都不重复) * - duplicateType: "enter" (入场钢卷号重复), "current" (当前钢卷号重复), "supplier" (厂家原料卷号重复), "both" (都重复), "none" (都不重复)
* - enterCoilNoDuplicate: 入场钢卷号是否重复 (true/false) * - enterCoilNoDuplicate: 入场钢卷号是否重复 (true/false)
* - currentCoilNoDuplicate: 当前钢卷号是否重复 (true/false) * - currentCoilNoDuplicate: 当前钢卷号是否重复 (true/false)
* - supplierCoilNoDuplicate: 厂家原料卷号是否重复 (true/false)
*/ */
Map<String, Object> checkCoilNoDuplicate(Long coilId, String enterCoilNo, String currentCoilNo); Map<String, Object> checkCoilNoDuplicate(Long coilId, String enterCoilNo, String currentCoilNo, String supplierCoilNo);
/** /**
* 根据入场钢卷号前缀查询最大的入场钢卷号 * 根据入场钢卷号前缀查询最大的入场钢卷号

View File

@@ -2784,11 +2784,11 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
/** /**
* 检查钢卷号是否重复 * 检查钢卷号是否重复
* 根据入场钢卷号当前钢卷号查询数据库,判断哪个钢卷号重复 * 根据入场钢卷号当前钢卷号和厂家原料卷号查询数据库,判断哪个钢卷号重复
* 新增逻辑:修改历史记录时不检查重复 * 新增逻辑:修改历史记录时不检查重复
*/ */
@Override @Override
public Map<String, Object> checkCoilNoDuplicate(Long coilId, String enterCoilNo, String currentCoilNo) { public Map<String, Object> checkCoilNoDuplicate(Long coilId, String enterCoilNo, String currentCoilNo, String supplierCoilNo) {
Map<String, Object> result = new HashMap<>(); Map<String, Object> result = new HashMap<>();
// 新增核心逻辑:先判断是否操作的是历史记录 // 新增核心逻辑:先判断是否操作的是历史记录
@@ -2800,12 +2800,14 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
result.put("duplicateType", "none"); result.put("duplicateType", "none");
result.put("enterCoilNoDuplicate", false); result.put("enterCoilNoDuplicate", false);
result.put("currentCoilNoDuplicate", false); result.put("currentCoilNoDuplicate", false);
result.put("supplierCoilNoDuplicate", false);
return result; // 直接返回,不执行后续检查 return result; // 直接返回,不执行后续检查
} }
} }
boolean enterCoilNoDuplicate = false; boolean enterCoilNoDuplicate = false;
boolean currentCoilNoDuplicate = false; boolean currentCoilNoDuplicate = false;
boolean supplierCoilNoDuplicate = false;
// 检查入场钢卷号是否重复 // 检查入场钢卷号是否重复
if (StringUtils.isNotBlank(enterCoilNo)) { if (StringUtils.isNotBlank(enterCoilNo)) {
@@ -2836,14 +2838,31 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
currentCoilNoDuplicate = currentCount > 0; currentCoilNoDuplicate = currentCount > 0;
} }
// 检查厂家原料卷号是否重复
if (StringUtils.isNotBlank(supplierCoilNo)) {
LambdaQueryWrapper<WmsMaterialCoil> supplierWrapper = Wrappers.lambdaQuery();
supplierWrapper.eq(WmsMaterialCoil::getSupplierCoilNo, supplierCoilNo)
.eq(WmsMaterialCoil::getDelFlag, 0)
.eq(WmsMaterialCoil::getDataType, 1);
// 如果是修改操作,排除自身
if (coilId != null) {
supplierWrapper.ne(WmsMaterialCoil::getCoilId, coilId);
}
long supplierCount = baseMapper.selectCount(supplierWrapper);
supplierCoilNoDuplicate = supplierCount > 0;
}
// 判断重复类型 // 判断重复类型
String duplicateType; String duplicateType;
if (enterCoilNoDuplicate && currentCoilNoDuplicate) { if (enterCoilNoDuplicate && currentCoilNoDuplicate && supplierCoilNoDuplicate) {
duplicateType = "both"; duplicateType = "both";
} else if (enterCoilNoDuplicate) { } else if (enterCoilNoDuplicate) {
duplicateType = "enter"; duplicateType = "enter";
} else if (currentCoilNoDuplicate) { } else if (currentCoilNoDuplicate) {
duplicateType = "current"; duplicateType = "current";
} else if (supplierCoilNoDuplicate) {
duplicateType = "supplier";
} else { } else {
duplicateType = "none"; duplicateType = "none";
} }
@@ -2851,6 +2870,7 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
result.put("duplicateType", duplicateType); result.put("duplicateType", duplicateType);
result.put("enterCoilNoDuplicate", enterCoilNoDuplicate); result.put("enterCoilNoDuplicate", enterCoilNoDuplicate);
result.put("currentCoilNoDuplicate", currentCoilNoDuplicate); result.put("currentCoilNoDuplicate", currentCoilNoDuplicate);
result.put("supplierCoilNoDuplicate", supplierCoilNoDuplicate);
return result; return result;
} }