fix: 优化逻辑
This commit is contained in:
parent
fcb300f2d4
commit
77681adba9
@ -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定位转换
|
||||
*/
|
||||
|
||||
@ -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<String, String> ENG_CODE_NAME_FIELD_MAP = new LinkedHashMap<>();
|
||||
|
||||
private static final Set<String> 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<MsOperationLogDetail> details = new ArrayList<>();
|
||||
Set<String> 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<MsOperationLogDetail> details = new ArrayList<>();
|
||||
Set<String> 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));
|
||||
}
|
||||
|
||||
@ -203,6 +203,7 @@ public class SdEngInfoBHServiceImpl extends ServiceImpl<SdEngInfoBHMapper, SdEng
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public boolean addEngInfo(SdEngInfoBH engInfo, String source) {
|
||||
fillRelatedNameFields(engInfo);
|
||||
boolean result = this.save(engInfo);
|
||||
if (result) {
|
||||
msOperationLogService.recordEngAddLog(engInfo, source);
|
||||
@ -219,13 +220,131 @@ public class SdEngInfoBHServiceImpl extends ServiceImpl<SdEngInfoBHMapper, SdEng
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public boolean updateEngInfo(SdEngInfoBH engInfo, String source) {
|
||||
SdEngInfoBH before = engInfo == null ? null : this.getById(engInfo.getStcd());
|
||||
boolean result = this.updateById(engInfo);
|
||||
SdEngInfoBH after = before == null ? engInfo : BeanUtil.copyProperties(before, SdEngInfoBH.class);
|
||||
if (after != null) {
|
||||
BeanUtil.copyProperties(engInfo, after, CopyOptions.create().ignoreNullValue());
|
||||
fillRelatedNameFields(after);
|
||||
}
|
||||
boolean result = this.updateById(after);
|
||||
if (result && before != null) {
|
||||
msOperationLogService.recordEngUpdateLog(before, engInfo, source);
|
||||
msOperationLogService.recordEngUpdateLog(before, after, source);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
private void fillRelatedNameFields(SdEngInfoBH engInfo) {
|
||||
if (engInfo == null) {
|
||||
return;
|
||||
}
|
||||
Map<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> 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<SdEngInfoBH>().eq(SdEngInfoBH::getStcd, stcd).set(SdEngInfoBH::getIsDeleted, 1));
|
||||
|
||||
Loading…
Reference in New Issue
Block a user