fix: 优化逻辑

This commit is contained in:
tangwei 2026-06-29 14:17:37 +08:00
parent fc09d69302
commit d439191a9b
3 changed files with 21 additions and 42 deletions

View File

@ -29,4 +29,7 @@ public class MsOperationLog implements Serializable {
@TableField("REMARK")
private String remark;
@TableField("TABLE_NAME")
private String tableName;
}

View File

@ -382,6 +382,7 @@ public class MsOperationLogServiceImpl implements IMsOperationLogService {
MsOperationLog log = new MsOperationLog();
log.setOperator(resolveOperator());
log.setOperateTime(new Date());
log.setTableName(ENG_TABLE_NAME);
log.setSource(StrUtil.trimToNull(source));
log.setRemark(remark);
return log;

View File

@ -48,15 +48,6 @@ public class EnvWqDataServiceImpl implements EnvWqDataService {
private static final LinkedHashMap<String, String> WQ_UPDATE_COLUMN_MAP = new LinkedHashMap<>();
private static final Map<String, String> WQ_FIELD_MEANING_MAP = new LinkedHashMap<>();
private static final List<String> WQ_SNAPSHOT_COLUMNS = Arrays.asList(
"STCD", "TM", "DT", "DRTP", "YEAR", "MONTH",
"WTMP", "PH", "DOX", "CODMN", "CODCR", "BOD5", "NH3N", "TP", "TN",
"CU", "ZN", "F", "SE", "ARS", "HG", "CD", "CR6", "PB", "CN",
"VLPH", "OIL", "LAS", "S2", "FCG", "CL", "SO4", "NO3", "THRD",
"COND", "FE", "MN", "AL", "CHLA", "CLARITY", "TU", "CYANO",
"WQGRD", "SFDB", "WQ_SFDBHN_YS", "IS_DELETED"
);
static {
WQ_UPDATE_COLUMN_MAP.put("wtmp", "WTMP");
WQ_UPDATE_COLUMN_MAP.put("ph", "PH");
@ -144,8 +135,6 @@ public class EnvWqDataServiceImpl implements EnvWqDataService {
WQ_FIELD_MEANING_MAP.put("WWQTG", "水功能区目标");
WQ_FIELD_MEANING_MAP.put("SFDB", "是否达标");
WQ_FIELD_MEANING_MAP.put("WQ_SFDBHN_YS", "是否达标湖内饮用水源");
WQ_FIELD_MEANING_MAP.put("ROW_KEY", "删除记录标识");
WQ_FIELD_MEANING_MAP.put("ROW_DATA", "删除记录数据");
}
@Resource
@ -4176,12 +4165,19 @@ public class EnvWqDataServiceImpl implements EnvWqDataService {
List<MsOperationLogDetail> details = new ArrayList<>();
for (Map<String, Object> row : rows) {
String stcd = asString(row.get("STCD"));
String rowKey = buildWqRowKey(tableName, row);
String rowSnapshot = buildWqRowSnapshot(row);
details.add(buildWqDetail(mainLog.getId(), tableName, stcd, "ROW_KEY",
rowKey, rowKey, null, null, "删除记录"));
details.add(buildWqDetail(mainLog.getId(), tableName, stcd, "ROW_DATA",
rowSnapshot, rowSnapshot, null, null, "删除记录"));
for (Map.Entry<String, Object> entry : row.entrySet()) {
String fieldCode = entry.getKey();
if (StrUtil.isBlank(fieldCode)) {
continue;
}
Object oldValue = entry.getValue();
if (oldValue == null) {
continue;
}
details.add(buildWqDetail(mainLog.getId(), tableName, stcd, fieldCode,
oldValue, resolveWqDisplayValue(fieldCode, oldValue),
null, null, "删除字段值"));
}
}
batchInsertWqLogDetails(details);
}
@ -4190,6 +4186,7 @@ public class EnvWqDataServiceImpl implements EnvWqDataService {
MsOperationLog log = new MsOperationLog();
log.setOperator(resolveLogOperator());
log.setOperateTime(new Date());
log.setTableName(WQ_HOUR_TABLE_NAME);
log.setSource(StrUtil.trimToNull(source));
log.setRemark(remark);
return log;
@ -4222,34 +4219,12 @@ public class EnvWqDataServiceImpl implements EnvWqDataService {
if (CollUtil.isEmpty(details)) {
return;
}
msOperationLogDetailMapper.insert(details);
}
private String buildWqRowKey(String tableName, Map<String, Object> row) {
if (WQ_HOUR_TABLE_NAME.equals(tableName)) {
return "STCD=" + formatLogValue(row.get("STCD")) + ", TM=" + formatLogValue(row.get("TM"));
}
if (WQ_DAY_TABLE_NAME.equals(tableName)) {
return "STCD=" + formatLogValue(row.get("STCD")) + ", DT=" + formatLogValue(row.get("DT"));
}
return "STCD=" + formatLogValue(row.get("STCD")) + ", DRTP=" + formatLogValue(row.get("DRTP")) +
", YEAR=" + formatLogValue(row.get("YEAR")) + ", MONTH=" + formatLogValue(row.get("MONTH"));
}
private String buildWqRowSnapshot(Map<String, Object> row) {
if (row == null || row.isEmpty()) {
return null;
}
List<String> parts = new ArrayList<>();
for (String column : WQ_SNAPSHOT_COLUMNS) {
Object value = row.get(column);
String text = formatLogValue(value);
if (StrUtil.isBlank(text)) {
for (MsOperationLogDetail detail : details) {
if (detail == null) {
continue;
}
parts.add(column + "=" + text);
msOperationLogDetailMapper.insert(detail);
}
return parts.isEmpty() ? null : String.join("; ", parts);
}
private Object resolveWqDisplayValue(String fieldCode, Object rawValue) {