feat(wms): 添加钢卷长度厚度偏差自动告警功能

- 在IWmsMaterialWarningService接口中新增checkAndInsertWarnings方法定义
- 在WmsMaterialCoilServiceImpl中注入materialWarningService依赖
- 在钢卷新增、更新、拆分等操作后自动触发偏差检查和告警插入
- 实现doCheckAndInsertWarnings方法进行长度和厚度偏差计算
- 添加checkLength方法验证长度偏差是否超过10%
- 添加checkThickness方法验证厚度偏差包括偏薄ERROR和偏厚WARNING
- 实现批量插入告警记录并添加异常处理和日志记录
This commit is contained in:
2026-06-06 16:24:35 +08:00
parent cbebd5b6d6
commit 7aaa59cee1
3 changed files with 176 additions and 0 deletions

View File

@@ -78,6 +78,7 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
// private final WmsDeliveryPlanMapper deliveryPlanMapper;
private final WmsProductMapper productMapper;
private final WmsRawMaterialMapper rawMaterialMapper;
private final IWmsMaterialWarningService materialWarningService;
private final WmsDeliveryWaybillDetailMapper deliveryWaybillDetailMapper;
private final WmsCoilWarehouseOperationLogMapper wmsCoilWarehouseOperationLogMapper;
private final IWmsCoilAbnormalService coilAbnormalService;
@@ -1521,6 +1522,9 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
throw new RuntimeException("新增钢卷失败");
}
// 检查长度/厚度偏差并插入告警
materialWarningService.checkAndInsertWarnings(add);
// 设置返回用的ID并更新二维码内容中的coilId
bo.setCoilId(add.getCoilId());
updateQrcodeCoilId(qrcodeRecordId, add.getCoilId());
@@ -1732,6 +1736,10 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
updateWrapper.set(WmsMaterialCoil::getSaleId, (Long)null);
baseMapper.update(null, updateWrapper);
}
// 检查长度/厚度偏差并插入告警
materialWarningService.checkAndInsertWarnings(updateCoil);
// 如果实际库区id为-1或状态为1则清空钢卷上的实际库区绑定
if ((bo.getActualWarehouseId() != null && bo.getActualWarehouseId().equals(-1L))
|| (bo.getStatus() != null && bo.getStatus().equals(1))) {
@@ -1839,6 +1847,9 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
throw new RuntimeException("创建新钢卷失败");
}
// 检查长度/厚度偏差并插入告警
materialWarningService.checkAndInsertWarnings(newCoil);
// 如果实际库区id为-1则清空钢卷上的实际库区绑定
if (bo.getActualWarehouseId() != null && bo.getActualWarehouseId().equals(-1L)) {
clearActualWarehouseBinding(newCoil.getActualWarehouseId(), newCoil.getCoilId());
@@ -2096,6 +2107,10 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
// 把老记录的coilId赋值给新纪录的parentCoilId
newCoil.setParentCoilId(String.valueOf(oldCoil.getCoilId()));
baseMapper.insert(newCoil);
// 检查长度/厚度偏差并插入告警
materialWarningService.checkAndInsertWarnings(newCoil);
newCoils.add(newCoil);
// 更新二维码内容中的coilId
@@ -2234,6 +2249,10 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
newCoil.setParentCoilId(parentCoilIdsStr);
baseMapper.insert(newCoil);
// 检查长度/厚度偏差并插入告警
materialWarningService.checkAndInsertWarnings(newCoil);
newCoils.add(newCoil);
// 更新二维码内容中的coilId
@@ -5085,6 +5104,9 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
childCoil.setParentCoilId(String.valueOf(parentCoilId));
baseMapper.insert(childCoil);
// 检查长度/厚度偏差并插入告警
materialWarningService.checkAndInsertWarnings(childCoil);
// 插入子钢卷的异常信息
if (childCoilBo.getAbnormals() != null && !childCoilBo.getAbnormals().isEmpty()) {
for (WmsCoilAbnormalBo abnormalBo : childCoilBo.getAbnormals()) {