From 77681adba93fd798a5084ffaacf57ea3c954faa4 Mon Sep 17 00:00:00 2001 From: tangwei Date: Thu, 25 Jun 2026 15:39:18 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BC=98=E5=8C=96=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/yfd/platform/constant/Constant.java | 2 +- .../impl/MsOperationLogServiceImpl.java | 193 ++++++++++++++++-- .../service/impl/SdEngInfoBHServiceImpl.java | 123 ++++++++++- 3 files changed, 302 insertions(+), 16 deletions(-) diff --git a/backend/src/main/java/com/yfd/platform/constant/Constant.java b/backend/src/main/java/com/yfd/platform/constant/Constant.java index c460999e..32eab6e9 100644 --- a/backend/src/main/java/com/yfd/platform/constant/Constant.java +++ b/backend/src/main/java/com/yfd/platform/constant/Constant.java @@ -13,7 +13,7 @@ public class Constant { public static final String DATE_TIME_FORMAT = "yyyy-MM-dd HH:mm:ss"; public static final String CODE_KEY = "code-key-"; - public static final long CODE_EXPIRATION_TIME = 1000 * 60; + public static final long CODE_EXPIRATION_TIME = 1000 * 60 * 2; /** * 用于IP定位转换 */ 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 0e2ec828..141c247d 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 @@ -20,9 +20,11 @@ import java.lang.reflect.Field; import java.lang.reflect.Modifier; import java.util.ArrayList; import java.util.Date; +import java.util.HashSet; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.Set; @Service public class MsOperationLogServiceImpl implements IMsOperationLogService { @@ -33,22 +35,146 @@ public class MsOperationLogServiceImpl implements IMsOperationLogService { static { ENG_FIELD_MEANING_MAP.put("STCD", "电站编码"); + 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("HBRVCD", "所属基地流域编码"); + 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("ADDVCD", "所属行政区编码"); + 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("REACHCD", "所属河段编码"); + ENG_FIELD_MEANING_MAP.put("REACHCD_NAME", "所属河段名称"); ENG_FIELD_MEANING_MAP.put("HYCD", "所属公司编码"); + 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("BLPRD", "所属建设阶段"); ENG_FIELD_MEANING_MAP.put("BLDSTT", "建设状态"); ENG_FIELD_MEANING_MAP.put("BLDSTT_CODE", "建设状态分类"); + ENG_FIELD_MEANING_MAP.put("ENGTP", "工程类别"); + ENG_FIELD_MEANING_MAP.put("PRSC", "工程规模"); + ENG_FIELD_MEANING_MAP.put("SCRSC", "工程规模(水库库容)"); + ENG_FIELD_MEANING_MAP.put("PRGR", "工程等别"); + ENG_FIELD_MEANING_MAP.put("FN", "主要功能"); + ENG_FIELD_MEANING_MAP.put("BSSSIN", "地震基本烈度"); + ENG_FIELD_MEANING_MAP.put("FRSSIN", "设防地震烈度"); + ENG_FIELD_MEANING_MAP.put("ADJUST_ENG", "是否调节水库"); + ENG_FIELD_MEANING_MAP.put("ISHVBRRG", "有无拦河坝"); ENG_FIELD_MEANING_MAP.put("DVTP", "开发方式"); + ENG_FIELD_MEANING_MAP.put("CNTP", "建设类型"); ENG_FIELD_MEANING_MAP.put("DTIN", "数据是否接入"); + ENG_FIELD_MEANING_MAP.put("DTIN_TM", "数据接入时间"); + ENG_FIELD_MEANING_MAP.put("USFL", "是否启用"); + ENG_FIELD_MEANING_MAP.put("MONTH_REPORT", "是否发布月报"); + ENG_FIELD_MEANING_MAP.put("TB_WAY", "填报方式"); + ENG_FIELD_MEANING_MAP.put("TB_FREQUENCY", "填报频率"); ENG_FIELD_MEANING_MAP.put("RGCP", "调节性能"); ENG_FIELD_MEANING_MAP.put("LGTD", "经度"); ENG_FIELD_MEANING_MAP.put("LTTD", "纬度"); + ENG_FIELD_MEANING_MAP.put("ELEV", "高程"); ENG_FIELD_MEANING_MAP.put("STLC", "站址"); ENG_FIELD_MEANING_MAP.put("ORDER_INDEX", "排序"); + ENG_FIELD_MEANING_MAP.put("STDSDT", "规划设计日期"); + ENG_FIELD_MEANING_MAP.put("PSTSTDT", "计划开工日期"); + ENG_FIELD_MEANING_MAP.put("PESSTDT", "计划完工日期"); + ENG_FIELD_MEANING_MAP.put("SWDT", "开工日期"); + ENG_FIELD_MEANING_MAP.put("JCDT", "建成日期"); + ENG_FIELD_MEANING_MAP.put("WDDT", "退役/拆除日期"); + ENG_FIELD_MEANING_MAP.put("JLDT", "截流日期"); + ENG_FIELD_MEANING_MAP.put("INTRODUCE", "电站简介"); + ENG_FIELD_MEANING_MAP.put("LOGO", "电站LOGO"); + ENG_FIELD_MEANING_MAP.put("INFFILE", "介绍弹窗图片"); + ENG_FIELD_MEANING_MAP.put("DMAT", "坝体材质"); + ENG_FIELD_MEANING_MAP.put("DMTP", "坝体类型"); + ENG_FIELD_MEANING_MAP.put("MNUN", "管理单位"); + ENG_FIELD_MEANING_MAP.put("CMUN", "主管单位"); + ENG_FIELD_MEANING_MAP.put("BLSYS", "归属部门"); + ENG_FIELD_MEANING_MAP.put("ROLL", "绕经度方向旋转矩阵值"); + ENG_FIELD_MEANING_MAP.put("PITCH", "绕纬度方向旋转矩阵值"); + ENG_FIELD_MEANING_MAP.put("HEADING", "绕高程方向旋转矩阵值"); + ENG_FIELD_MEANING_MAP.put("SCALE", "模型缩放比例"); + ENG_FIELD_MEANING_MAP.put("IMPDSTRZ", "是否受下游顶托"); + ENG_FIELD_MEANING_MAP.put("PROV", "工程概况"); + ENG_FIELD_MEANING_MAP.put("ESTRYDIS", "河口距离"); + ENG_FIELD_MEANING_MAP.put("THRSMDAYS", "三同时评价允许误差天数"); + ENG_FIELD_MEANING_MAP.put("ZJXYDZ", "直接下游电站"); + ENG_FIELD_MEANING_MAP.put("EDTUN", "编制单位"); + ENG_FIELD_MEANING_MAP.put("EDTTM", "编制时间"); + ENG_FIELD_MEANING_MAP.put("DSNSTT", "勘测设计情况"); + ENG_FIELD_MEANING_MAP.put("YSDLEN", "引水道长"); + ENG_FIELD_MEANING_MAP.put("DMRKTP", "坝基岩性"); + ENG_FIELD_MEANING_MAP.put("HNTJZL", "混凝土浇筑量"); + ENG_FIELD_MEANING_MAP.put("GNTP", "容量构成"); + ENG_FIELD_MEANING_MAP.put("CNTRAR", "控制流域面积"); + ENG_FIELD_MEANING_MAP.put("CNTRSC", "控制面积占全流域比例"); + ENG_FIELD_MEANING_MAP.put("AVYRP", "多年平均降水量"); + ENG_FIELD_MEANING_MAP.put("AVQ", "多年平均流量"); + ENG_FIELD_MEANING_MAP.put("DSAVQ", "电站未建枯水期平均流量"); + ENG_FIELD_MEANING_MAP.put("DSMXQ", "设计洪峰流量"); + ENG_FIELD_MEANING_MAP.put("CHMXQ", "校核洪峰流量"); + ENG_FIELD_MEANING_MAP.put("RVLEN", "河道长度"); + ENG_FIELD_MEANING_MAP.put("RVGR", "河道比降"); + ENG_FIELD_MEANING_MAP.put("AVW", "多年平均径流量"); + ENG_FIELD_MEANING_MAP.put("AVYRQ", "多年平均年径流量"); + ENG_FIELD_MEANING_MAP.put("AVSD", "多年平均输沙量"); + ENG_FIELD_MEANING_MAP.put("AVS", "多年平均含沙量"); + ENG_FIELD_MEANING_MAP.put("MYAVMNAT", "多年平均最低气温"); + ENG_FIELD_MEANING_MAP.put("DSW1", "设计一日洪量"); + ENG_FIELD_MEANING_MAP.put("DSW3", "设计三日洪量"); + ENG_FIELD_MEANING_MAP.put("CHFLDR", "校核洪水历时"); + ENG_FIELD_MEANING_MAP.put("CHFLW", "校核洪水总量"); + ENG_FIELD_MEANING_MAP.put("CPSC", "库容系数"); + ENG_FIELD_MEANING_MAP.put("NRZAR", "正常蓄水位时水库面积"); + ENG_FIELD_MEANING_MAP.put("BCKLEN", "水库回水长度"); + ENG_FIELD_MEANING_MAP.put("NRAVWT", "天然河流平均水温"); + ENG_FIELD_MEANING_MAP.put("NRMXAVWT", "天然河流最高温月份多年平均水温"); + ENG_FIELD_MEANING_MAP.put("NRMNAVWT", "天然河流最低温月份多年平均水温"); + ENG_FIELD_MEANING_MAP.put("DNAVWT", "建成后坝下平均水温"); + ENG_FIELD_MEANING_MAP.put("DNMXAVWT", "建成后坝下最高温月份多年平均水温"); + ENG_FIELD_MEANING_MAP.put("DNMNAVWT", "建成后坝下最低温月份多年平均水温"); + ENG_FIELD_MEANING_MAP.put("NRUPAR", "坝址以上流域面积"); + ENG_FIELD_MEANING_MAP.put("NRAVZ", "坝址天然河流平均水位"); + ENG_FIELD_MEANING_MAP.put("NRAVH", "坝址天然河流平均水深"); + ENG_FIELD_MEANING_MAP.put("DSNFQFRQ", "设计入库洪水流量"); + ENG_FIELD_MEANING_MAP.put("CKFQFQR", "校核入库洪水流量"); + ENG_FIELD_MEANING_MAP.put("OBMXW3", "实测最大洪量(三天)"); + ENG_FIELD_MEANING_MAP.put("FDCZ", "水库淹没城镇"); + ENG_FIELD_MEANING_MAP.put("FDQT", "淹没其它设施"); + ENG_FIELD_MEANING_MAP.put("DSTCRVR", "距河源距离"); + ENG_FIELD_MEANING_MAP.put("CKW3", "校核洪量(三天)"); + ENG_FIELD_MEANING_MAP.put("FSLTDZ", "防洪限制水位"); + ENG_FIELD_MEANING_MAP.put("RSTP", "资源类别"); + ENG_FIELD_MEANING_MAP.put("ADJCPS", "调节库容单独"); + ENG_FIELD_MEANING_MAP.put("ADJCPM", "调节库容联合"); + ENG_FIELD_MEANING_MAP.put("YRGEB", "已正建规模装机容量"); + ENG_FIELD_MEANING_MAP.put("TTPWRB", "已正建规模年发电量"); + ENG_FIELD_MEANING_MAP.put("DMCREL", "坝顶高程"); + ENG_FIELD_MEANING_MAP.put("WSC", "水量利用系数"); + ENG_FIELD_MEANING_MAP.put("MXDMHG", "最大坝高"); + ENG_FIELD_MEANING_MAP.put("MXDMHGL", "最大坝高(左)"); + ENG_FIELD_MEANING_MAP.put("MXDMHGR", "最大坝高(右)"); + ENG_FIELD_MEANING_MAP.put("WVTPEL", "防浪墙顶高程"); + } + + private static final Map ENG_CODE_NAME_FIELD_MAP = new LinkedHashMap<>(); + + private static final Set ENG_NAME_COLUMNS = new HashSet<>(); + + static { + 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("RVCD", "RVCD_NAME"); + ENG_CODE_NAME_FIELD_MAP.put("ADDVCD", "ADDVCD_NAME"); + ENG_CODE_NAME_FIELD_MAP.put("COUNTRY", "COUNTRY_NAME"); + ENG_CODE_NAME_FIELD_MAP.put("HYCD", "HYNM"); + 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()); } @Resource @@ -66,17 +192,28 @@ public class MsOperationLogServiceImpl implements IMsOperationLogService { msOperationLogMapper.insert(mainLog); List details = new ArrayList<>(); + Set processedColumns = new HashSet<>(); for (Field field : SdEngInfoBH.class.getDeclaredFields()) { if (shouldSkipField(field)) { continue; } field.setAccessible(true); + String columnName = resolveColumnName(field); + if (ENG_NAME_COLUMNS.contains(columnName) || processedColumns.contains(columnName)) { + continue; + } Object newValue = getFieldValue(field, engInfo); if (newValue == null) { continue; } - details.add(buildDetail(mainLog.getId(), engInfo.getStcd(), resolveColumnName(field), - null, newValue, "新增字段值")); + String nameColumn = ENG_CODE_NAME_FIELD_MAP.get(columnName); + Object newNameValue = StrUtil.isBlank(nameColumn) ? newValue : getColumnValue(engInfo, nameColumn); + details.add(buildDetail(mainLog.getId(), engInfo.getStcd(), columnName, + null, null, newValue, newNameValue, "新增字段值")); + processedColumns.add(columnName); + if (StrUtil.isNotBlank(nameColumn)) { + processedColumns.add(nameColumn); + } } batchInsertDetails(details); } @@ -93,18 +230,30 @@ public class MsOperationLogServiceImpl implements IMsOperationLogService { msOperationLogMapper.insert(mainLog); List details = new ArrayList<>(); + Set processedColumns = new HashSet<>(); for (Field field : SdEngInfoBH.class.getDeclaredFields()) { if (shouldSkipField(field)) { continue; } field.setAccessible(true); - Object oldValue = getFieldValue(field, before); - Object newValue = getFieldValue(field, after); - if (equalsValue(oldValue, newValue)) { + String columnName = resolveColumnName(field); + if (ENG_NAME_COLUMNS.contains(columnName) || processedColumns.contains(columnName)) { continue; } - details.add(buildDetail(mainLog.getId(), after.getStcd(), resolveColumnName(field), - oldValue, newValue, "修改字段值")); + 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); + if (equalsValue(oldValue, newValue) && equalsValue(oldNameValue, newNameValue)) { + continue; + } + details.add(buildDetail(mainLog.getId(), after.getStcd(), columnName, + oldValue, oldNameValue, newValue, newNameValue, "修改字段值")); + processedColumns.add(columnName); + if (StrUtil.isNotBlank(nameColumn)) { + processedColumns.add(nameColumn); + } } batchInsertDetails(details); } @@ -121,8 +270,10 @@ public class MsOperationLogServiceImpl implements IMsOperationLogService { private MsOperationLogDetail buildDetail(String mainId, String stationCode, String fieldCode, - Object oldValue, - Object newValue, + Object oldValueCode, + Object oldValueName, + Object newValueCode, + Object newValueName, String remark) { MsOperationLogDetail detail = new MsOperationLogDetail(); detail.setMainId(mainId); @@ -130,10 +281,10 @@ public class MsOperationLogServiceImpl implements IMsOperationLogService { detail.setStationCode(stationCode); detail.setFieldCode(fieldCode); detail.setFieldMeaning(ENG_FIELD_MEANING_MAP.getOrDefault(fieldCode, fieldCode)); - detail.setOldValueCode(formatValue(oldValue)); - detail.setOldValueName(formatValue(oldValue)); - detail.setNewValueCode(formatValue(newValue)); - detail.setNewValueName(formatValue(newValue)); + detail.setOldValueCode(formatValue(oldValueCode)); + detail.setOldValueName(formatValue(oldValueName)); + detail.setNewValueCode(formatValue(newValueCode)); + detail.setNewValueName(formatValue(newValueName)); detail.setRemark(remark); return detail; } @@ -173,6 +324,22 @@ public class MsOperationLogServiceImpl implements IMsOperationLogService { } } + private Object getColumnValue(Object target, String columnName) { + if (target == null || StrUtil.isBlank(columnName)) { + return null; + } + for (Field field : SdEngInfoBH.class.getDeclaredFields()) { + if (shouldSkipField(field)) { + continue; + } + field.setAccessible(true); + if (StrUtil.equals(resolveColumnName(field), columnName)) { + return getFieldValue(field, target); + } + } + return null; + } + private boolean equalsValue(Object oldValue, Object newValue) { return StrUtil.equals(formatValue(oldValue), formatValue(newValue)); } diff --git a/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdEngInfoBHServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdEngInfoBHServiceImpl.java index 05de1201..4d59891b 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdEngInfoBHServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdEngInfoBHServiceImpl.java @@ -203,6 +203,7 @@ public class SdEngInfoBHServiceImpl extends ServiceImpl paramMap = new HashMap<>(); + paramMap.put("baseId", engInfo.getBaseId()); + paramMap.put("hbrvcd", engInfo.getHbrvcd()); + paramMap.put("rvcd", engInfo.getRvcd()); + paramMap.put("addvcd", engInfo.getAddvcd()); + paramMap.put("country", engInfo.getCountry()); + paramMap.put("hycd", engInfo.getHycd()); + paramMap.put("topHycd", engInfo.getTopHycd()); + paramMap.put("reachcd", engInfo.getReachcd()); + + Map row = microservicDynamicSQLMapper.getOneBySql(buildEngRelatedNameSql(paramMap), paramMap); + engInfo.setBaseName(resolveRelatedName(engInfo.getBaseId(), row, "BASENAME")); + engInfo.setHbrvcdName(resolveRelatedName(engInfo.getHbrvcd(), row, "HBRVNM")); + engInfo.setRvcdName(resolveRelatedName(engInfo.getRvcd(), row, "RVNM")); + engInfo.setAddvcdName(resolveRelatedName(engInfo.getAddvcd(), row, "ADDVNM")); + engInfo.setCountryName(resolveRelatedName(engInfo.getCountry(), row, "COUNTRY_NAME")); + engInfo.setHynm(resolveRelatedName(engInfo.getHycd(), row, "HYNM")); + engInfo.setTopHynm(resolveRelatedName(engInfo.getTopHycd(), row, "TOP_HYNM")); + engInfo.setReachcdName(resolveRelatedName(engInfo.getReachcd(), row, "REACHCD_NAME")); + } + + private String buildEngRelatedNameSql(Map paramMap) { + StringBuilder sql = new StringBuilder("SELECT "); + sql.append(buildScalarNameSelect( + StringUtils.hasText((String) paramMap.get("baseId")), + "(SELECT hb.BASENAME FROM SD_HYDROBASE hb WHERE hb.BASEID = #{map.baseId} AND NVL(hb.IS_DELETED, 0) = 0 AND ROWNUM = 1)", + "BASENAME" + )); + sql.append(", "); + sql.append(buildHbrvNameSelect(paramMap)); + sql.append(", "); + sql.append(buildScalarNameSelect( + StringUtils.hasText((String) paramMap.get("rvcd")), + "(SELECT rv.RVNM FROM SD_RVCD_DIC rv WHERE rv.RVCD = #{map.rvcd} AND ROWNUM = 1)", + "RVNM" + )); + sql.append(", "); + sql.append(buildScalarNameSelect( + StringUtils.hasText((String) paramMap.get("addvcd")), + "(SELECT addv.ADDVNM FROM SD_ADDVCD_DIC addv WHERE addv.ADDVCD = #{map.addvcd} AND ROWNUM = 1)", + "ADDVNM" + )); + sql.append(", "); + sql.append(buildScalarNameSelect( + StringUtils.hasText((String) paramMap.get("country")), + "(SELECT country.COUNTRY_NAME FROM SD_COUNTRY_B country WHERE country.COUNTRY_ID = #{map.country} " + + "AND NVL(country.ENABLED, 1) = 1 AND ROWNUM = 1)", + "COUNTRY_NAME" + )); + sql.append(", "); + sql.append(buildScalarNameSelect( + StringUtils.hasText((String) paramMap.get("hycd")), + "(SELECT hy.HYNM FROM SD_HYCD_DIC hy WHERE hy.HYCD = #{map.hycd} " + + "AND NVL(hy.IS_DELETED, 0) = 0 AND NVL(hy.ENABLED, 1) = 1 AND ROWNUM = 1)", + "HYNM" + )); + sql.append(", "); + sql.append(buildScalarNameSelect( + StringUtils.hasText((String) paramMap.get("topHycd")), + "(SELECT hy.HYNM FROM SD_HYCD_DIC hy WHERE hy.HYCD = #{map.topHycd} " + + "AND NVL(hy.IS_DELETED, 0) = 0 AND NVL(hy.ENABLED, 1) = 1 AND ROWNUM = 1)", + "TOP_HYNM" + )); + sql.append(", "); + sql.append(buildScalarNameSelect( + StringUtils.hasText((String) paramMap.get("reachcd")), + "(SELECT rv.RVNM FROM SD_RVCD_DIC rv WHERE rv.RVCD = #{map.reachcd} AND ROWNUM = 1)", + "REACHCD_NAME" + )); + sql.append(" FROM DUAL"); + return sql.toString(); + } + + private String buildHbrvNameSelect(Map paramMap) { + if (!StringUtils.hasText((String) paramMap.get("hbrvcd"))) { + return "NULL AS HBRVNM"; + } + StringBuilder sql = new StringBuilder("(SELECT hbrv.HBRVNM FROM SD_HBRV_DIC hbrv WHERE hbrv.HBRVCD = #{map.hbrvcd} "); + if (StringUtils.hasText((String) paramMap.get("baseId"))) { + sql.append("AND hbrv.BASEID = #{map.baseId} "); + } + sql.append("AND NVL(hbrv.IS_DELETED, 0) = 0 AND NVL(hbrv.ENABLED, 1) = 1 AND ROWNUM = 1) AS HBRVNM"); + return sql.toString(); + } + + private String buildScalarNameSelect(boolean hasText, String querySql, String alias) { + if (!hasText) { + return "NULL AS " + alias; + } + return querySql + " AS " + alias; + } + + private String resolveRelatedName(String code, Map row, String column) { + if (code == null) { + return null; + } + if (code.isBlank()) { + return ""; + } + if (row == null) { + return null; + } + Object value = row.get(column); + if (value == null) { + value = row.get(column.toLowerCase()); + } + return value == null ? null : String.valueOf(value); + } + @Override public boolean deleteEngInfo(String stcd) { return this.update( new LambdaUpdateWrapper().eq(SdEngInfoBH::getStcd, stcd).set(SdEngInfoBH::getIsDeleted, 1));