feat(wms): 添加钢卷号重复检查功能
- 在新增钢卷时检查当前钢卷号是否重复 - 在简单更新时检查当前钢卷号是否重复并排除自身 - 在单个更新时检查当前钢卷号是否重复并排除自身 - 在分卷操作时检查每个子钢卷号是否重复 - 在合卷操作时检查新钢卷号是否重复 - 在子钢卷创建时检查子钢卷号是否重复 - 在退货操作时检查当前钢卷号是否重复并排除自身 - 修复历史钢卷恢复时的重复检查参数传递问题
This commit is contained in:
@@ -1490,6 +1490,12 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public WmsMaterialCoilVo insertByBo(WmsMaterialCoilBo bo) {
|
||||
// 检查当前钢卷号是否重复(新增)
|
||||
Map<String, Object> duplicateCheck = checkCoilNoDuplicate(null, null, bo.getCurrentCoilNo(), null);
|
||||
if ("current".equals(duplicateCheck.get("duplicateType")) || "both".equals(duplicateCheck.get("duplicateType"))) {
|
||||
throw new RuntimeException("新增失败:当前钢卷号[" + bo.getCurrentCoilNo() + "]已存在");
|
||||
}
|
||||
|
||||
// 1. 生成二维码
|
||||
Long qrcodeRecordId = generateQrcodeForInsert(bo);
|
||||
bo.setQrcodeRecordId(qrcodeRecordId);
|
||||
@@ -1669,6 +1675,12 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
|
||||
throw new RuntimeException("钢卷ID不能为空");
|
||||
}
|
||||
|
||||
// 检查当前钢卷号是否重复(简单更新,传入coilId排除自身)
|
||||
Map<String, Object> duplicateCheck = checkCoilNoDuplicate(bo.getCoilId(), null, bo.getCurrentCoilNo(), null);
|
||||
if ("current".equals(duplicateCheck.get("duplicateType")) || "both".equals(duplicateCheck.get("duplicateType"))) {
|
||||
throw new RuntimeException("更新失败:当前钢卷号[" + bo.getCurrentCoilNo() + "]已存在");
|
||||
}
|
||||
|
||||
// 检查独占状态
|
||||
validateCoilOperationPermission(bo.getCoilId(), "简单更新");
|
||||
|
||||
@@ -1801,6 +1813,12 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
|
||||
throw new RuntimeException("原钢卷已被更新");
|
||||
}
|
||||
|
||||
// 检查当前钢卷号是否重复(单个更新,传入coilId排除自身)
|
||||
Map<String, Object> duplicateCheck = checkCoilNoDuplicate(bo.getCoilId(), null, bo.getCurrentCoilNo(), null);
|
||||
if ("current".equals(duplicateCheck.get("duplicateType")) || "both".equals(duplicateCheck.get("duplicateType"))) {
|
||||
throw new RuntimeException("更新失败:当前钢卷号[" + bo.getCurrentCoilNo() + "]已存在");
|
||||
}
|
||||
|
||||
// 若修改实际库位,先进行校验
|
||||
if (bo.getActualWarehouseId() != null) {
|
||||
Long ignoreOccupiedId = Objects.equals(bo.getActualWarehouseId(), oldCoil.getActualWarehouseId())
|
||||
@@ -2046,6 +2064,14 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
|
||||
throw new RuntimeException("分卷操作需要原钢卷信息");
|
||||
}
|
||||
|
||||
// 检查每个子钢卷的当前钢卷号是否重复
|
||||
for (WmsMaterialCoilBo newCoilBo : bo.getNewCoils()) {
|
||||
Map<String, Object> duplicateCheck = checkCoilNoDuplicate(null, null, newCoilBo.getCurrentCoilNo(), null);
|
||||
if ("current".equals(duplicateCheck.get("duplicateType")) || "both".equals(duplicateCheck.get("duplicateType"))) {
|
||||
throw new RuntimeException("分卷失败:子钢卷号[" + newCoilBo.getCurrentCoilNo() + "]已存在");
|
||||
}
|
||||
}
|
||||
|
||||
// 1. 将原始钢卷的二维码标记为失效(status=0)
|
||||
if (oldCoil.getQrcodeRecordId() != null) {
|
||||
WmsGenerateRecordBo oldQrBo = new WmsGenerateRecordBo();
|
||||
@@ -2166,6 +2192,14 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
|
||||
// 1. 将参与合卷的原始钢卷的二维码标记为失效,并将钢卷标记为历史数据
|
||||
//在合卷之前需要判断前端传来的bo.getNewCoils()中的所有原始钢卷的coilId是否已经是历史卷
|
||||
validateOriginalCoilsForMerge(bo.getNewCoils());
|
||||
|
||||
// 检查合卷后新钢卷的当前钢卷号是否重复
|
||||
if (StringUtils.isNotBlank(bo.getCurrentCoilNo())) {
|
||||
Map<String, Object> duplicateCheck = checkCoilNoDuplicate(null, null, bo.getCurrentCoilNo(), null);
|
||||
if ("current".equals(duplicateCheck.get("duplicateType")) || "both".equals(duplicateCheck.get("duplicateType"))) {
|
||||
throw new RuntimeException("合卷失败:当前钢卷号[" + bo.getCurrentCoilNo() + "]已存在");
|
||||
}
|
||||
}
|
||||
for (WmsMaterialCoilBo originalCoilBo : bo.getNewCoils()) {
|
||||
if (originalCoilBo.getCoilId() != null) {
|
||||
WmsMaterialCoil originalCoil = baseMapper.selectById(originalCoilBo.getCoilId());
|
||||
@@ -4290,7 +4324,7 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
|
||||
|
||||
// // 检查恢复的钢卷的当前钢卷号是否重复
|
||||
// for (WmsMaterialCoil originalCoil : originalCoils) {
|
||||
// Map<String, Object> duplicateCheck = checkCoilNoDuplicate(originalCoil.getCoilId(), originalCoil.getEnterCoilNo(), originalCoil.getCurrentCoilNo());
|
||||
// Map<String, Object> duplicateCheck = checkCoilNoDuplicate(originalCoil.getCoilId(), null, originalCoil.getCurrentCoilNo(), null);
|
||||
// boolean currentCoilNoDuplicate = (boolean) duplicateCheck.get("currentCoilNoDuplicate");
|
||||
// if (currentCoilNoDuplicate) {
|
||||
// String errorMsg = "无法恢复原始钢卷,存在重复的钢卷号:原始钢卷的当前钢卷号[" + originalCoil.getCurrentCoilNo() + "]重复。";
|
||||
@@ -5036,11 +5070,11 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
|
||||
throw new RuntimeException("待操作记录不存在或不匹配");
|
||||
}
|
||||
|
||||
// // 4. 检查子钢卷号是否重复
|
||||
// Map<String, Object> duplicateCheck = checkCoilNoDuplicate(null, parentCoil.getEnterCoilNo(), childCoilBo.getCurrentCoilNo());
|
||||
// if ("current".equals(duplicateCheck.get("duplicateType")) || "both".equals(duplicateCheck.get("duplicateType"))) {
|
||||
// throw new RuntimeException("子钢卷号[" + childCoilBo.getCurrentCoilNo() + "]已存在");
|
||||
// }
|
||||
// 4. 检查子钢卷号是否重复
|
||||
Map<String, Object> duplicateCheck = checkCoilNoDuplicate(null, null, childCoilBo.getCurrentCoilNo(), null);
|
||||
if ("current".equals(duplicateCheck.get("duplicateType")) || "both".equals(duplicateCheck.get("duplicateType"))) {
|
||||
throw new RuntimeException("子钢卷号[" + childCoilBo.getCurrentCoilNo() + "]已存在");
|
||||
}
|
||||
|
||||
// 校验每个子卷的实际库位
|
||||
if (childCoilBo.getActualWarehouseId() != null) {
|
||||
@@ -5351,6 +5385,12 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
|
||||
throw new RuntimeException("该钢卷是历史钢卷");
|
||||
}
|
||||
|
||||
// 检查当前钢卷号是否重复(退货时用原钢卷号创建新钢卷,传入coilId排除自身)
|
||||
Map<String, Object> duplicateCheck = checkCoilNoDuplicate(coilId, null, oldCoil.getCurrentCoilNo(), null);
|
||||
if ("current".equals(duplicateCheck.get("duplicateType")) || "both".equals(duplicateCheck.get("duplicateType"))) {
|
||||
throw new RuntimeException("退货失败:当前钢卷号[" + oldCoil.getCurrentCoilNo() + "]已存在");
|
||||
}
|
||||
|
||||
WmsWarehouseBo warehouseBo = new WmsWarehouseBo();
|
||||
warehouseBo.setWarehouseName("退货仓");
|
||||
warehouseBo.setWarehouseCode("return");
|
||||
|
||||
Reference in New Issue
Block a user