fix: 优化逻辑

This commit is contained in:
tangwei 2026-06-25 16:00:53 +08:00
parent 77681adba9
commit b895e989c9

View File

@ -38,21 +38,21 @@ public class MsOperationLogServiceImpl implements IMsOperationLogService {
ENG_FIELD_MEANING_MAP.put("TM", "数据时间"); ENG_FIELD_MEANING_MAP.put("TM", "数据时间");
ENG_FIELD_MEANING_MAP.put("ENNM", "电站名称"); ENG_FIELD_MEANING_MAP.put("ENNM", "电站名称");
ENG_FIELD_MEANING_MAP.put("BASE_ID", "所属基地编码"); ENG_FIELD_MEANING_MAP.put("BASE_ID", "所属基地编码");
ENG_FIELD_MEANING_MAP.put("BASE_NAME", "所属基地名称"); // ENG_FIELD_MEANING_MAP.put("BASE_NAME", "所属基地名称");
ENG_FIELD_MEANING_MAP.put("HBRVCD", "所属基地流域编码"); ENG_FIELD_MEANING_MAP.put("HBRVCD", "所属基地流域编码");
ENG_FIELD_MEANING_MAP.put("HBRVCD_NAME", "所属基地流域名称"); // ENG_FIELD_MEANING_MAP.put("HBRVCD_NAME", "所属基地流域名称");
ENG_FIELD_MEANING_MAP.put("RVCD", "所属流域编码"); ENG_FIELD_MEANING_MAP.put("RVCD", "所属流域编码");
ENG_FIELD_MEANING_MAP.put("RVCD_NAME", "所属流域名称"); // ENG_FIELD_MEANING_MAP.put("RVCD_NAME", "所属流域名称");
ENG_FIELD_MEANING_MAP.put("ADDVCD", "所属行政区编码"); ENG_FIELD_MEANING_MAP.put("ADDVCD", "所属行政区编码");
ENG_FIELD_MEANING_MAP.put("ADDVCD_NAME", "所属行政区名称"); // ENG_FIELD_MEANING_MAP.put("ADDVCD_NAME", "所属行政区名称");
ENG_FIELD_MEANING_MAP.put("COUNTRY", "所属国家编码"); ENG_FIELD_MEANING_MAP.put("COUNTRY", "所属国家编码");
ENG_FIELD_MEANING_MAP.put("COUNTRY_NAME", "所属国家名称"); // ENG_FIELD_MEANING_MAP.put("COUNTRY_NAME", "所属国家名称");
ENG_FIELD_MEANING_MAP.put("REACHCD", "所属河段编码"); ENG_FIELD_MEANING_MAP.put("REACHCD", "所属河段编码");
ENG_FIELD_MEANING_MAP.put("REACHCD_NAME", "所属河段名称"); // ENG_FIELD_MEANING_MAP.put("REACHCD_NAME", "所属河段名称");
ENG_FIELD_MEANING_MAP.put("HYCD", "所属公司编码"); ENG_FIELD_MEANING_MAP.put("HYCD", "所属公司编码");
ENG_FIELD_MEANING_MAP.put("HYNM", "所属公司名称"); // ENG_FIELD_MEANING_MAP.put("HYNM", "所属公司名称");
ENG_FIELD_MEANING_MAP.put("TOP_HYCD", "所属集团编码"); ENG_FIELD_MEANING_MAP.put("TOP_HYCD", "所属集团编码");
ENG_FIELD_MEANING_MAP.put("TOP_HYNM", "所属集团名称"); // ENG_FIELD_MEANING_MAP.put("TOP_HYNM", "所属集团名称");
ENG_FIELD_MEANING_MAP.put("BLPRD", "所属建设阶段"); ENG_FIELD_MEANING_MAP.put("BLPRD", "所属建设阶段");
ENG_FIELD_MEANING_MAP.put("BLDSTT", "建设状态"); ENG_FIELD_MEANING_MAP.put("BLDSTT", "建设状态");
ENG_FIELD_MEANING_MAP.put("BLDSTT_CODE", "建设状态分类"); ENG_FIELD_MEANING_MAP.put("BLDSTT_CODE", "建设状态分类");
@ -165,6 +165,8 @@ public class MsOperationLogServiceImpl implements IMsOperationLogService {
private static final Set<String> ENG_NAME_COLUMNS = new HashSet<>(); private static final Set<String> ENG_NAME_COLUMNS = new HashSet<>();
private static final Map<String, Map<String, String>> ENG_DICT_VALUE_NAME_MAP = new LinkedHashMap<>();
static { static {
ENG_CODE_NAME_FIELD_MAP.put("BASE_ID", "BASE_NAME"); ENG_CODE_NAME_FIELD_MAP.put("BASE_ID", "BASE_NAME");
ENG_CODE_NAME_FIELD_MAP.put("HBRVCD", "HBRVCD_NAME"); ENG_CODE_NAME_FIELD_MAP.put("HBRVCD", "HBRVCD_NAME");
@ -175,6 +177,93 @@ public class MsOperationLogServiceImpl implements IMsOperationLogService {
ENG_CODE_NAME_FIELD_MAP.put("TOP_HYCD", "TOP_HYNM"); ENG_CODE_NAME_FIELD_MAP.put("TOP_HYCD", "TOP_HYNM");
ENG_CODE_NAME_FIELD_MAP.put("REACHCD", "REACHCD_NAME"); ENG_CODE_NAME_FIELD_MAP.put("REACHCD", "REACHCD_NAME");
ENG_NAME_COLUMNS.addAll(ENG_CODE_NAME_FIELD_MAP.values()); ENG_NAME_COLUMNS.addAll(ENG_CODE_NAME_FIELD_MAP.values());
ENG_DICT_VALUE_NAME_MAP.put("USFL", buildValueNameMap("0", "禁用", "1", "启用"));
ENG_DICT_VALUE_NAME_MAP.put("DTIN", buildValueNameMap("0", "", "1", ""));
ENG_DICT_VALUE_NAME_MAP.put("MONTH_REPORT", buildValueNameMap("0", "", "1", ""));
ENG_DICT_VALUE_NAME_MAP.put("BLPRD", buildValueNameMap(
"1001000", "规划",
"1002000", "预可研",
"1003000", "环评",
"1004000", "可研",
"1005000", "在建",
"1006000", "招标设计",
"1007000", "施工详图",
"1009000", "建设",
"1010000", "蓄水阶段环保验收",
"1011000", "竣工",
"1012000", "竣工环保验收",
"1013000", "环境影响后评价"
));
ENG_DICT_VALUE_NAME_MAP.put("BLDSTT", buildValueNameMap(
"1", "已建成未验收",
"2", "在建",
"3", "可研",
"4", "规划",
"5", "预可研",
"6", "已核准",
"7", "招标设计",
"8", "施工详图",
"9", "其他",
"10", "已建成已验收",
"11", "已开展后评价",
"31", "项目建议书",
"32", "可研",
"33", "已审批",
"34", "初步设计",
"35", "技施设计",
"36", "在建",
"37", "已建成未验收",
"38", "已建成已验收",
"39", "已开展后评价",
"40", "其他",
"61", "规划",
"62", "项目建议书",
"63", "预可研",
"64", "可研",
"65", "已核准",
"66", "初步设计",
"67", "招标设计",
"68", "技施设计",
"69", "施工详图",
"70", "在建",
"71", "已建成未验收",
"72", "已建成已验收",
"73", "已开展后评价",
"74", "其他",
"91", "拆除"
));
ENG_DICT_VALUE_NAME_MAP.put("BLDSTT_CODE", buildValueNameMap(
"0", "未建/规划",
"1", "在建",
"2", "已建"
));
ENG_DICT_VALUE_NAME_MAP.put("ENGTP", buildValueNameMap("1", "水电站", "2", "水利工程", "3", "航电枢纽"));
ENG_DICT_VALUE_NAME_MAP.put("PRSC", buildValueNameMap("1", "大型1", "2", "大型2", "3", "中型", "4", "小型"));
ENG_DICT_VALUE_NAME_MAP.put("SCRSC", buildValueNameMap("1", "大型1", "2", "大型2", "3", "中型", "4", "小型1", "5", "小型2"));
ENG_DICT_VALUE_NAME_MAP.put("PRGR", buildValueNameMap("1", "", "2", "", "3", "", "4", "", "5", ""));
ENG_DICT_VALUE_NAME_MAP.put("FN", buildValueNameMap(
"1", "发电", "2", "防洪", "3", "灌溉", "4", "供水", "5", "航运",
"6", "旅游", "7", "环境", "8", "养殖", "9", "其他"
));
ENG_DICT_VALUE_NAME_MAP.put("BSSSIN", buildValueNameMap("5", "<Ⅵ", "6", "", "7", "", "8", "", "9", "≥Ⅸ"));
ENG_DICT_VALUE_NAME_MAP.put("FRSSIN", buildValueNameMap("0", "未设防", "6", "", "7", "", "8", "", "9", "≥Ⅸ"));
ENG_DICT_VALUE_NAME_MAP.put("ADJUST_ENG", buildValueNameMap("0", "", "1", ""));
ENG_DICT_VALUE_NAME_MAP.put("ISHVBRRG", buildValueNameMap("0", "", "1", ""));
ENG_DICT_VALUE_NAME_MAP.put("RGCP", buildValueNameMap(
"1", "多年调节", "2", "年调节", "3", "不完全年调节", "4", "径流式(无调节)",
"5", "季调节", "6", "月调节", "7", "周调节", "8", "日调节", "9", "其他"
));
ENG_DICT_VALUE_NAME_MAP.put("DMAT", buildValueNameMap("0", "混凝土坝", "1", "土坝"));
ENG_DICT_VALUE_NAME_MAP.put("DMTP", buildValueNameMap(
"0", "混合型", "1", "重力坝", "2", "拱坝", "3", "土石坝", "4", "支墩坝",
"5", "混凝土闸坝", "6", "混凝土面板堆石坝", "7", "预应力坝",
"8", "复合土工膜面板堆石坝", "9", "碾压混凝土重力坝", "10", "混凝土重力坝"
));
ENG_DICT_VALUE_NAME_MAP.put("DVTP", buildValueNameMap("1", "堤坝式", "2", "引水式", "3", "混合式"));
ENG_DICT_VALUE_NAME_MAP.put("CNTP", buildValueNameMap("1", "新建", "2", "改建", "3", "扩建", "4", "加固"));
ENG_DICT_VALUE_NAME_MAP.put("BLSYS", buildValueNameMap("1", "水利", "2", "能源", "3", "交通", "4", "农业", "5", "建设", "9", "其他"));
ENG_DICT_VALUE_NAME_MAP.put("IMPDSTRZ", buildValueNameMap("0", "", "1", ""));
} }
@Resource @Resource
@ -243,8 +332,8 @@ public class MsOperationLogServiceImpl implements IMsOperationLogService {
Object oldValue = getFieldValue(field, before); Object oldValue = getFieldValue(field, before);
Object newValue = getFieldValue(field, after); Object newValue = getFieldValue(field, after);
String nameColumn = ENG_CODE_NAME_FIELD_MAP.get(columnName); String nameColumn = ENG_CODE_NAME_FIELD_MAP.get(columnName);
Object oldNameValue = StrUtil.isBlank(nameColumn) ? oldValue : getColumnValue(before, nameColumn); Object oldNameValue = resolveNameValue(columnName, nameColumn, oldValue, before);
Object newNameValue = StrUtil.isBlank(nameColumn) ? newValue : getColumnValue(after, nameColumn); Object newNameValue = resolveNameValue(columnName, nameColumn, newValue, after);
if (equalsValue(oldValue, newValue) && equalsValue(oldNameValue, newNameValue)) { if (equalsValue(oldValue, newValue) && equalsValue(oldNameValue, newNameValue)) {
continue; continue;
} }
@ -340,6 +429,48 @@ public class MsOperationLogServiceImpl implements IMsOperationLogService {
return null; return null;
} }
private Object resolveNameValue(String fieldCode, String nameColumn, Object rawValue, SdEngInfoBH target) {
if (StrUtil.isNotBlank(nameColumn)) {
return getColumnValue(target, nameColumn);
}
return resolveDictName(fieldCode, rawValue);
}
private Object resolveDictName(String fieldCode, Object rawValue) {
String text = formatValue(rawValue);
if (StrUtil.isBlank(text)) {
return rawValue;
}
Map<String, String> dictMap = ENG_DICT_VALUE_NAME_MAP.get(fieldCode);
if (dictMap == null || dictMap.isEmpty()) {
return rawValue;
}
if (!text.contains(",") && !text.contains(";")) {
return dictMap.getOrDefault(text, rawValue == null ? null : text);
}
String[] parts = text.split("[,;]");
List<String> names = new ArrayList<>();
for (String part : parts) {
String code = StrUtil.trim(part);
if (StrUtil.isBlank(code)) {
continue;
}
names.add(dictMap.getOrDefault(code, code));
}
return names.isEmpty() ? rawValue : String.join(",", names);
}
private static Map<String, String> buildValueNameMap(String... keyValues) {
Map<String, String> valueMap = new LinkedHashMap<>();
if (keyValues == null) {
return valueMap;
}
for (int i = 0; i + 1 < keyValues.length; i += 2) {
valueMap.put(keyValues[i], keyValues[i + 1]);
}
return valueMap;
}
private boolean equalsValue(Object oldValue, Object newValue) { private boolean equalsValue(Object oldValue, Object newValue) {
return StrUtil.equals(formatValue(oldValue), formatValue(newValue)); return StrUtil.equals(formatValue(oldValue), formatValue(newValue));
} }