diff --git a/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/MsOperationLogServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/MsOperationLogServiceImpl.java index 141c247d..00f2d699 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/MsOperationLogServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/MsOperationLogServiceImpl.java @@ -38,21 +38,21 @@ public class MsOperationLogServiceImpl implements IMsOperationLogService { ENG_FIELD_MEANING_MAP.put("TM", "数据时间"); ENG_FIELD_MEANING_MAP.put("ENNM", "电站名称"); 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_NAME", "所属基地流域名称"); +// ENG_FIELD_MEANING_MAP.put("HBRVCD_NAME", "所属基地流域名称"); 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_NAME", "所属行政区名称"); +// ENG_FIELD_MEANING_MAP.put("ADDVCD_NAME", "所属行政区名称"); 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_NAME", "所属河段名称"); +// ENG_FIELD_MEANING_MAP.put("REACHCD_NAME", "所属河段名称"); 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_HYNM", "所属集团名称"); +// ENG_FIELD_MEANING_MAP.put("TOP_HYNM", "所属集团名称"); ENG_FIELD_MEANING_MAP.put("BLPRD", "所属建设阶段"); ENG_FIELD_MEANING_MAP.put("BLDSTT", "建设状态"); ENG_FIELD_MEANING_MAP.put("BLDSTT_CODE", "建设状态分类"); @@ -165,6 +165,8 @@ public class MsOperationLogServiceImpl implements IMsOperationLogService { private static final Set ENG_NAME_COLUMNS = new HashSet<>(); + private static final Map> ENG_DICT_VALUE_NAME_MAP = new LinkedHashMap<>(); + static { ENG_CODE_NAME_FIELD_MAP.put("BASE_ID", "BASE_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("REACHCD", "REACHCD_NAME"); 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 @@ -243,8 +332,8 @@ public class MsOperationLogServiceImpl implements IMsOperationLogService { Object oldValue = getFieldValue(field, before); Object newValue = getFieldValue(field, after); String nameColumn = ENG_CODE_NAME_FIELD_MAP.get(columnName); - Object oldNameValue = StrUtil.isBlank(nameColumn) ? oldValue : getColumnValue(before, nameColumn); - Object newNameValue = StrUtil.isBlank(nameColumn) ? newValue : getColumnValue(after, nameColumn); + Object oldNameValue = resolveNameValue(columnName, nameColumn, oldValue, before); + Object newNameValue = resolveNameValue(columnName, nameColumn, newValue, after); if (equalsValue(oldValue, newValue) && equalsValue(oldNameValue, newNameValue)) { continue; } @@ -340,6 +429,48 @@ public class MsOperationLogServiceImpl implements IMsOperationLogService { 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 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 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 buildValueNameMap(String... keyValues) { + Map 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) { return StrUtil.equals(formatValue(oldValue), formatValue(newValue)); }