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") @TableField("REMARK")
private String 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(); MsOperationLog log = new MsOperationLog();
log.setOperator(resolveOperator()); log.setOperator(resolveOperator());
log.setOperateTime(new Date()); log.setOperateTime(new Date());
log.setTableName(ENG_TABLE_NAME);
log.setSource(StrUtil.trimToNull(source)); log.setSource(StrUtil.trimToNull(source));
log.setRemark(remark); log.setRemark(remark);
return log; 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 LinkedHashMap<String, String> WQ_UPDATE_COLUMN_MAP = new LinkedHashMap<>();
private static final Map<String, String> WQ_FIELD_MEANING_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 { static {
WQ_UPDATE_COLUMN_MAP.put("wtmp", "WTMP"); WQ_UPDATE_COLUMN_MAP.put("wtmp", "WTMP");
WQ_UPDATE_COLUMN_MAP.put("ph", "PH"); 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("WWQTG", "水功能区目标");
WQ_FIELD_MEANING_MAP.put("SFDB", "是否达标"); WQ_FIELD_MEANING_MAP.put("SFDB", "是否达标");
WQ_FIELD_MEANING_MAP.put("WQ_SFDBHN_YS", "是否达标湖内饮用水源"); WQ_FIELD_MEANING_MAP.put("WQ_SFDBHN_YS", "是否达标湖内饮用水源");
WQ_FIELD_MEANING_MAP.put("ROW_KEY", "删除记录标识");
WQ_FIELD_MEANING_MAP.put("ROW_DATA", "删除记录数据");
} }
@Resource @Resource
@ -4176,12 +4165,19 @@ public class EnvWqDataServiceImpl implements EnvWqDataService {
List<MsOperationLogDetail> details = new ArrayList<>(); List<MsOperationLogDetail> details = new ArrayList<>();
for (Map<String, Object> row : rows) { for (Map<String, Object> row : rows) {
String stcd = asString(row.get("STCD")); String stcd = asString(row.get("STCD"));
String rowKey = buildWqRowKey(tableName, row); for (Map.Entry<String, Object> entry : row.entrySet()) {
String rowSnapshot = buildWqRowSnapshot(row); String fieldCode = entry.getKey();
details.add(buildWqDetail(mainLog.getId(), tableName, stcd, "ROW_KEY", if (StrUtil.isBlank(fieldCode)) {
rowKey, rowKey, null, null, "删除记录")); continue;
details.add(buildWqDetail(mainLog.getId(), tableName, stcd, "ROW_DATA", }
rowSnapshot, rowSnapshot, null, null, "删除记录")); Object oldValue = entry.getValue();
if (oldValue == null) {
continue;
}
details.add(buildWqDetail(mainLog.getId(), tableName, stcd, fieldCode,
oldValue, resolveWqDisplayValue(fieldCode, oldValue),
null, null, "删除字段值"));
}
} }
batchInsertWqLogDetails(details); batchInsertWqLogDetails(details);
} }
@ -4190,6 +4186,7 @@ public class EnvWqDataServiceImpl implements EnvWqDataService {
MsOperationLog log = new MsOperationLog(); MsOperationLog log = new MsOperationLog();
log.setOperator(resolveLogOperator()); log.setOperator(resolveLogOperator());
log.setOperateTime(new Date()); log.setOperateTime(new Date());
log.setTableName(WQ_HOUR_TABLE_NAME);
log.setSource(StrUtil.trimToNull(source)); log.setSource(StrUtil.trimToNull(source));
log.setRemark(remark); log.setRemark(remark);
return log; return log;
@ -4222,34 +4219,12 @@ public class EnvWqDataServiceImpl implements EnvWqDataService {
if (CollUtil.isEmpty(details)) { if (CollUtil.isEmpty(details)) {
return; return;
} }
msOperationLogDetailMapper.insert(details); for (MsOperationLogDetail detail : details) {
} if (detail == null) {
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)) {
continue; continue;
} }
parts.add(column + "=" + text); msOperationLogDetailMapper.insert(detail);
} }
return parts.isEmpty() ? null : String.join("; ", parts);
} }
private Object resolveWqDisplayValue(String fieldCode, Object rawValue) { private Object resolveWqDisplayValue(String fieldCode, Object rawValue) {