refactor(wms): 优化卷材变更日志记录逻辑

- 重构加工变换日志记录,支持合并、分卷等不同场景
- 修改快照对比逻辑,合并新旧键值以避免遗漏空值字段
- 调整仓库层级排序算法,移除四级库位的序号修正
- 注释掉卷材合同关系中的日志记录代码
- 在撤回导出时清空操作人员信息
This commit is contained in:
2026-07-11 16:49:20 +08:00
parent 74827f696b
commit 2dbbb942ef
5 changed files with 96 additions and 70 deletions

View File

@@ -81,13 +81,34 @@ public class CoilChangeLogAspect {
insertLog(changeType, null, newId, null, newSnapshot, coilChangeLog.value());
}
} else if (changeType.isProcessing()) {
// 加工变换:旧卷 → 新卷,一一对应(或 多旧 → 一新)
for (int i = 0; i < oldCoilIds.size(); i++) {
Long oldId = oldCoilIds.get(i);
Long newId = (i < newCoilIds.size()) ? newCoilIds.get(i) : null;
// 加工变换:旧卷 → 新卷
Long commonNewId = newCoilIds.isEmpty() ? null : newCoilIds.get(0);
if (changeType == CoilChangeType.MERGE) {
// N旧→1新每个旧卷都指向同一个新卷
for (int i = 0; i < oldCoilIds.size(); i++) {
Long oldId = oldCoilIds.get(i);
Map<String, Object> oldSnapshot = oldSnapshots.get(oldId);
Map<String, Object> newSnapshot = commonNewId != null ? queryCoilSnapshot(commonNewId) : null;
insertLog(changeType, oldId, commonNewId, oldSnapshot, newSnapshot, coilChangeLog.value());
}
} else if (oldCoilIds.size() == 1 && newCoilIds.size() > 1) {
// 1旧→N新分卷每个新卷一条日志都指向同一个旧母卷
Long oldId = oldCoilIds.get(0);
Map<String, Object> oldSnapshot = oldSnapshots.get(oldId);
Map<String, Object> newSnapshot = (newId != null) ? queryCoilSnapshot(newId) : null;
insertLog(changeType, oldId, newId, oldSnapshot, newSnapshot, coilChangeLog.value());
String label = coilChangeLog.value() + "-分卷";
for (Long newId : newCoilIds) {
Map<String, Object> newSnapshot = queryCoilSnapshot(newId);
insertLog(changeType, oldId, newId, oldSnapshot, newSnapshot, label);
}
} else {
// 一一对应:单步加工/回滚/单子卷等
for (int i = 0; i < oldCoilIds.size(); i++) {
Long oldId = oldCoilIds.get(i);
Long newId = (i < newCoilIds.size()) ? newCoilIds.get(i) : null;
Map<String, Object> oldSnapshot = oldSnapshots.get(oldId);
Map<String, Object> newSnapshot = (newId != null) ? queryCoilSnapshot(newId) : null;
insertLog(changeType, oldId, newId, oldSnapshot, newSnapshot, coilChangeLog.value());
}
}
} else {
// 原地修改:相同 ID
@@ -254,7 +275,7 @@ public class CoilChangeLogAspect {
* 对比新旧快照,返回变更字段差异 Map
*/
private Map<String, Map<String, Object>> computeDiff(Map<String, Object> oldSnapshot,
Map<String, Object> newSnapshot) {
Map<String, Object> newSnapshot) {
Map<String, Map<String, Object>> diff = new LinkedHashMap<>();
// 检查旧值变更或新增