fix(wms): 解决已发货钢卷占用实际库区的问题

- 添加了对已发货钢卷的状态检查,防止其占用实际库区
- 实现了已发货钢卷释放旧库区的功能
- 优化了库区状态更新逻辑,增加了对-1标识的判断
- 在钢卷占用库区时添加了发货状态验证

refactor(da): 优化酸轧OEE月度任务初始化方式

- 将@PostConstruct替换为ApplicationRunner接口实现
- 添加@Async注解实现异步执行,避免阻塞项目启动
- 重构了启动时OEE汇总计算的执行时机和方式
This commit is contained in:
2026-03-13 10:58:59 +08:00
parent 64d1d4683b
commit 56b05a02a1
2 changed files with 26 additions and 7 deletions

View File

@@ -1167,6 +1167,13 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
throw new RuntimeException("历史钢卷不允许占用实际库区!");
}
}
// 2. 已发货的钢卷不能占用实际库区,给出提醒
if (bo.getStatus() != null && bo.getStatus().equals(1)) {
if (bo.getActualWarehouseId() != null && !bo.getActualWarehouseId().equals(-1L)) {
throw new RuntimeException("已发货的钢卷不允许占用实际库区!");
}
}
// 直接更新钢卷属性
WmsMaterialCoil updateCoil = BeanUtil.toBean(bo, WmsMaterialCoil.class);
validEntityBeforeSave(updateCoil);
@@ -1188,8 +1195,14 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
// 更新实际库区的启用状态
if (flag) {
// 只有当新的库区ID不为空且与原库区ID不同时才更新库区状态
if (bo.getActualWarehouseId() != null && !bo.getActualWarehouseId().equals(oldCoil.getActualWarehouseId())) {
// 已发货的钢卷不能占用实际库区,释放旧库区
if (bo.getStatus() != null && bo.getStatus().equals(1)) {
if (oldCoil.getActualWarehouseId() != null) {
updateActualWarehouseEnableStatus(oldCoil.getActualWarehouseId(), null);
}
} else if (bo.getActualWarehouseId() != null && !bo.getActualWarehouseId().equals(-1L)
&& !bo.getActualWarehouseId().equals(oldCoil.getActualWarehouseId())) {
// 只有当新的库区ID不为空且不为-1且与原库区ID不同时才更新库区状态
updateActualWarehouseEnableStatus(oldCoil.getActualWarehouseId(), bo.getActualWarehouseId());
}
}