feat(wms): 添加钢卷操作日志记录功能

- 在简单更新操作中添加调拨日志记录,区分入库和出库操作
- 在单个更新操作中添加加工日志记录,处理钢卷ID变化的情况
- 在分卷操作中添加加工日志记录,为原钢卷和子钢卷分别记录出入库
- 在合卷操作中添加加工日志记录,为参与合卷的钢卷记录出入库
- 在单步分卷完成操作中添加加工日志记录,确保完整流程追踪
- 根据实际库区变化判断是否需要记录操作日志,避免重复记录
This commit is contained in:
2026-03-06 10:09:49 +08:00
parent 88741bc062
commit f9c192a5b4

View File

@@ -1135,6 +1135,27 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
}
}
// 简单更新记录调拨日志operationType=3
// 如果老的和新的实际库区相等则不用创建记录
Long oldActualWarehouseId = oldCoil.getActualWarehouseId();
Long newActualWarehouseId = bo.getActualWarehouseId();
if (!Objects.equals(oldActualWarehouseId, newActualWarehouseId)) {
// 如果以前有真实库区,加一条调拨的出库记录
if (oldActualWarehouseId != null && oldActualWarehouseId != -1L) {
recordWarehouseOperationLog(bo.getCoilId(), oldActualWarehouseId, 3, 2, "简单更新-调拨出库");
}
// 如果前端传了新的(非-1表示入库-1表示置空出库
if (newActualWarehouseId != null) {
if (newActualWarehouseId == -1L) {
// 传-1置空算出库
recordWarehouseOperationLog(bo.getCoilId(), oldActualWarehouseId, 3, 2, "简单更新-调拨出库");
} else {
// 有新库区,算入库
recordWarehouseOperationLog(bo.getCoilId(), newActualWarehouseId, 3, 1, "简单更新-调拨入库");
}
}
}
return flag;
}
@@ -1208,6 +1229,31 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
if (bo.getActualWarehouseId() != null) {
updateActualWarehouseEnableStatus(null, bo.getActualWarehouseId());
}
// 单个更新记录加工日志operationType=2
// 老的实际库区存在则加一条加工出库记录使用老钢卷ID
// 新的实际库区存在则加一条加工入库记录使用新钢卷ID
// 新的传-1置空则算一条出库记录
// 就算老的和新的实际库区相等也应该建两条因为钢卷ID不一样
Long oldActualWarehouseId = oldCoil.getActualWarehouseId();
Long newActualWarehouseId = bo.getActualWarehouseId();
// 老的实际库区存在,加一条加工出库记录
if (oldActualWarehouseId != null && oldActualWarehouseId != -1L) {
recordWarehouseOperationLog(oldCoil.getCoilId(), oldActualWarehouseId, 2, 2, "单个更新-加工出库");
}
// 新的实际库区存在,加一条加工入库记录(传-1置空时算出库
if (newActualWarehouseId != null) {
if (newActualWarehouseId == -1L) {
// 传-1置空算出库使用老钢卷ID和老的库区
if (oldActualWarehouseId != null && oldActualWarehouseId != -1L) {
recordWarehouseOperationLog(oldCoil.getCoilId(), oldActualWarehouseId, 2, 2, "单个更新-加工出库");
}
} else {
// 有新库区,算入库
recordWarehouseOperationLog(newCoil.getCoilId(), newActualWarehouseId, 2, 1, "单个更新-加工入库");
}
}
}
return flag;
@@ -1432,6 +1478,20 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
}
}
// 分卷操作记录加工日志operationType=2
// 老的实际库区存在则加一条加工出库记录
Long oldSplitActualWarehouseId = oldCoil.getActualWarehouseId();
if (oldSplitActualWarehouseId != null && oldSplitActualWarehouseId != -1L) {
recordWarehouseOperationLog(oldCoil.getCoilId(), oldSplitActualWarehouseId, 2, 2, "分卷操作-加工出库");
}
// 为每个子钢卷的实际库区加一条加工入库记录(有的加,没有不加)
for (WmsMaterialCoil childCoil : newCoils) {
Long childActualWarehouseId = childCoil.getActualWarehouseId();
if (childActualWarehouseId != null && childActualWarehouseId != -1L) {
recordWarehouseOperationLog(childCoil.getCoilId(), childActualWarehouseId, 2, 1, "分卷操作-加工入库");
}
}
} else if (isMerge) {
// 合卷将bo作为合卷后的新钢卷newCoils中的对象作为参与合卷的原始钢卷
// 1. 将参与合卷的原始钢卷的二维码标记为失效,并将钢卷标记为历史数据
@@ -1528,6 +1588,23 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
enableWarehouseBo.setIsEnabled(0); // 设置为禁用状态
actualWarehouseService.updateByBo(enableWarehouseBo);
}
// 合卷操作记录加工日志operationType=2
// 为每个参与合卷的原始钢卷加一条加工出库记录
for (WmsMaterialCoilBo originalCoilBo : bo.getNewCoils()) {
if (originalCoilBo.getCoilId() != null) {
WmsMaterialCoil originalCoil = baseMapper.selectById(originalCoilBo.getCoilId());
if (originalCoil != null && originalCoil.getActualWarehouseId() != null
&& originalCoil.getActualWarehouseId() != -1L) {
recordWarehouseOperationLog(originalCoil.getCoilId(), originalCoil.getActualWarehouseId(), 2, 2, "合卷操作-加工出库");
}
}
}
// 为新合卷的钢卷加一条加工入库记录
Long mergeNewActualWarehouseId = bo.getActualWarehouseId();
if (mergeNewActualWarehouseId != null && mergeNewActualWarehouseId != -1L) {
recordWarehouseOperationLog(newCoil.getCoilId(), mergeNewActualWarehouseId, 2, 1, "合卷操作-加工入库");
}
}
return true;
@@ -4024,6 +4101,20 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
completePendingBo.setCompleteTime(new Date());
coilPendingActionService.updateByBo(completePendingBo);
// 7.1 单步分卷完成记录加工日志operationType=2
// 老的实际库区存在则加一条加工出库记录
Long parentActualWarehouseId = parentCoil.getActualWarehouseId();
if (parentActualWarehouseId != null && parentActualWarehouseId != -1L) {
recordWarehouseOperationLog(parentCoilId, parentActualWarehouseId, 2, 2, "单步分卷完成-加工出库");
}
// 为每个子钢卷的实际库区加一条加工入库记录(有的加,没有不加)
for (WmsMaterialCoil childCoil : childCoils) {
Long childActualWarehouseId = childCoil.getActualWarehouseId();
if (childActualWarehouseId != null && childActualWarehouseId != -1L) {
recordWarehouseOperationLog(childCoil.getCoilId(), childActualWarehouseId, 2, 1, "单步分卷完成-加工入库");
}
}
// 8. 返回结果
result.put("success", true);
result.put("parentCoilId", parentCoilId);