feat: 生态流量泄放设施统计查询
This commit is contained in:
parent
eea7aa8213
commit
c44c8d2229
@ -5,6 +5,7 @@ import com.yfd.platform.common.DataSourceRequest;
|
||||
import com.yfd.platform.common.DataSourceResult;
|
||||
import com.yfd.platform.config.ResponseResult;
|
||||
import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqBaseMsstbprptVo;
|
||||
import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqBaseVmsstbprptVo;
|
||||
import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqDrtpDataVo;
|
||||
import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqIntervalVo;
|
||||
import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqLimitQueryVo;
|
||||
@ -81,6 +82,13 @@ public class EngEqDataController {
|
||||
return ResponseResult.successData(result);
|
||||
}
|
||||
|
||||
@PostMapping("/base/vmsstbprpt/GetKendoList")
|
||||
@Operation(summary = "生态流量泄放设施统计查询")
|
||||
public ResponseResult getBaseVmsstbprptList(@RequestBody DataSourceRequest dataSourceRequest) {
|
||||
DataSourceResult<EngEqBaseVmsstbprptVo> result = engEqDataService.getBaseVmsstbprptList(dataSourceRequest);
|
||||
return ResponseResult.successData(result);
|
||||
}
|
||||
|
||||
@PostMapping("/interval/qgc/hour/GetKendoListCust")
|
||||
@Operation(summary = "生态流量达标率小时统计(二级页面)")
|
||||
public ResponseResult getQgcHourKendoListCust(@RequestBody DataSourceRequest dataSourceRequest) {
|
||||
|
||||
@ -0,0 +1,61 @@
|
||||
package com.yfd.platform.qgc_eng.eq.entity.vo;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
@Data
|
||||
@Schema(description = "生态流量泄放设施统计查询")
|
||||
public class EngEqBaseVmsstbprptVo implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Schema(description = "设施类型编码")
|
||||
private String sttpCode;
|
||||
|
||||
@Schema(description = "设施类型名称")
|
||||
private String sttpName;
|
||||
|
||||
@Schema(description = "设施编码")
|
||||
private String stcd;
|
||||
|
||||
@Schema(description = "设施名称")
|
||||
private String stnm;
|
||||
|
||||
@Schema(description = "所属电站编码")
|
||||
private String rstcd;
|
||||
|
||||
@Schema(description = "所属电站名称")
|
||||
private String rstcdName;
|
||||
|
||||
@Schema(description = "基地编码")
|
||||
private String baseId;
|
||||
|
||||
@Schema(description = "基地名称")
|
||||
private String baseName;
|
||||
|
||||
@Schema(description = "基地流域编码")
|
||||
private String hbrvcd;
|
||||
|
||||
@Schema(description = "基地流域名称")
|
||||
private String hbrvcdName;
|
||||
|
||||
@Schema(description = "数据接入状态")
|
||||
private Integer dtin;
|
||||
|
||||
@Schema(description = "建设状态分类")
|
||||
private Integer bldsttCode;
|
||||
|
||||
@Schema(description = "基地排序")
|
||||
private Integer baseStepSort;
|
||||
|
||||
@Schema(description = "流域排序")
|
||||
private Integer rvcdStepSort;
|
||||
|
||||
@Schema(description = "所属电站排序")
|
||||
private Integer rstcdStepSort;
|
||||
|
||||
@Schema(description = "设施排序")
|
||||
private Integer siteStepSort;
|
||||
}
|
||||
@ -3,6 +3,7 @@ package com.yfd.platform.qgc_eng.eq.service;
|
||||
import com.yfd.platform.common.DataSourceRequest;
|
||||
import com.yfd.platform.common.DataSourceResult;
|
||||
import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqBaseMsstbprptVo;
|
||||
import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqBaseVmsstbprptVo;
|
||||
import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqDayDataVo;
|
||||
import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqDrtpDataVo;
|
||||
import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqDayIntervalVo;
|
||||
@ -35,6 +36,8 @@ public interface EngEqDataService {
|
||||
|
||||
DataSourceResult<EngEqBaseMsstbprptVo> getBaseMsstbprptList(DataSourceRequest dataSourceRequest);
|
||||
|
||||
DataSourceResult<EngEqBaseVmsstbprptVo> getBaseVmsstbprptList(DataSourceRequest dataSourceRequest);
|
||||
|
||||
DataSourceResult<EngEqHourIntervalVo> getQgcHourKendoListCust(DataSourceRequest dataSourceRequest);
|
||||
|
||||
DataSourceResult<EngEqDayIntervalVo> getQgcDayKendoListCust(DataSourceRequest dataSourceRequest);
|
||||
|
||||
@ -13,6 +13,7 @@ import com.yfd.platform.common.MicroservicDynamicSQLMapper;
|
||||
import com.yfd.platform.common.enums.QecIntervalEnum;
|
||||
import com.yfd.platform.common.enums.ShowEnum;
|
||||
import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqBaseMsstbprptVo;
|
||||
import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqBaseVmsstbprptVo;
|
||||
import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqDataVo;
|
||||
import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqDayDataVo;
|
||||
import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqDrtpDataVo;
|
||||
@ -112,6 +113,15 @@ public class EngEqDataServiceImpl implements EngEqDataService {
|
||||
return queryBaseMsstbprptGroupList(dataSourceRequest, loadOptions);
|
||||
}
|
||||
|
||||
@Override
|
||||
public DataSourceResult<EngEqBaseVmsstbprptVo> getBaseVmsstbprptList(DataSourceRequest dataSourceRequest) {
|
||||
DataSourceLoadOptionsBase loadOptions = dataSourceRequest == null ? null : dataSourceRequest.toDevRequest();
|
||||
if (CollUtil.isEmpty(dataSourceRequest == null ? null : dataSourceRequest.getGroup())) {
|
||||
return queryBaseVmsstbprptDetailList(dataSourceRequest, loadOptions);
|
||||
}
|
||||
return queryBaseVmsstbprptGroupList(dataSourceRequest, loadOptions);
|
||||
}
|
||||
|
||||
private DataSourceResult<EngEqBaseMsstbprptVo> queryBaseMsstbprptDetailList(DataSourceRequest dataSourceRequest,
|
||||
DataSourceLoadOptionsBase loadOptions) {
|
||||
StringBuilder sql = new StringBuilder();
|
||||
@ -202,6 +212,9 @@ public class EngEqDataServiceImpl implements EngEqDataService {
|
||||
} else {
|
||||
result.setData((List<EngEqBaseMsstbprptVo>) (List<?>) new GroupHelper().group(rows, Arrays.asList(groupInfos)));
|
||||
}
|
||||
if (CollUtil.isNotEmpty((List<?>) result.getData()) && ((List<?>) result.getData()).get(0) instanceof Group) {
|
||||
populateBaseMsstbprptGroupKeyNames((List<Group>) (List<?>) result.getData());
|
||||
}
|
||||
result.setTotal((long) rows.size());
|
||||
result.setAggregates(new HashMap<>());
|
||||
return result;
|
||||
@ -212,14 +225,7 @@ public class EngEqDataServiceImpl implements EngEqDataService {
|
||||
"eq.STCD AS stcd, " +
|
||||
"eq.STNM AS stnm, " +
|
||||
"eq.STTP AS sttpCode, " +
|
||||
"CASE eq.STTP " +
|
||||
" WHEN 'EQ_1' THEN '生态放流孔' " +
|
||||
" WHEN 'EQ_2' THEN '生态放流闸' " +
|
||||
" WHEN 'EQ_3' THEN '生态放流洞' " +
|
||||
" WHEN 'EQ_4' THEN '生态放流管' " +
|
||||
" WHEN 'EQ_5' THEN '基荷发电' " +
|
||||
" WHEN 'EQ_6' THEN '生态机组' " +
|
||||
" ELSE eq.STTP END AS sttpName, " +
|
||||
"NVL(sttp.STTP_NAME, eq.STTP) AS sttpName, " +
|
||||
"eq.RSTCD AS rstcd, " +
|
||||
"eng.ENNM AS rstcdName, " +
|
||||
"eq.BASE_ID AS baseId, " +
|
||||
@ -238,6 +244,8 @@ public class EngEqDataServiceImpl implements EngEqDataService {
|
||||
"eq.TM AS tm, " +
|
||||
"eq.ORDER_INDEX AS orderIndex " +
|
||||
"FROM SD_EQ_B_H eq " +
|
||||
"LEFT JOIN SD_STTP_B sttp ON sttp.STTP_CODE = eq.STTP " +
|
||||
" AND NVL(sttp.IS_DELETED, 0) = 0 AND NVL(sttp.ENABLE, 1) = 1 " +
|
||||
"LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = eq.RSTCD AND NVL(eng.IS_DELETED, 0) = 0 " +
|
||||
"LEFT JOIN SD_HYDROBASE hb ON hb.BASEID = eq.BASE_ID AND NVL(hb.IS_DELETED, 0) = 0 " +
|
||||
"LEFT JOIN SD_HBRV_DIC hbrv ON hbrv.HBRVCD = eq.HBRVCD AND hbrv.BASEID = eq.BASE_ID " +
|
||||
@ -291,6 +299,170 @@ public class EngEqDataServiceImpl implements EngEqDataService {
|
||||
return columns;
|
||||
}
|
||||
|
||||
private DataSourceResult<EngEqBaseVmsstbprptVo> queryBaseVmsstbprptDetailList(DataSourceRequest dataSourceRequest,
|
||||
DataSourceLoadOptionsBase loadOptions) {
|
||||
StringBuilder sql = new StringBuilder();
|
||||
sql.append("SELECT ")
|
||||
.append(buildBaseVmsstbprptDetailSelectSql(dataSourceRequest == null ? null : dataSourceRequest.getSelect()))
|
||||
.append(" FROM (")
|
||||
.append(buildBaseVmsstbprptViewSql())
|
||||
.append(") t WHERE 1 = 1 ");
|
||||
|
||||
Map<String, Object> paramMap = new HashMap<>();
|
||||
String filterSql = buildBaseVmsstbprptFilterCondition(dataSourceRequest == null ? null : dataSourceRequest.getFilter(), paramMap, new int[]{0});
|
||||
if (StrUtil.isNotBlank(filterSql)) {
|
||||
sql.append(" AND ").append(filterSql).append(" ");
|
||||
}
|
||||
sql.append(buildBaseVmsstbprptDetailOrderBySql(dataSourceRequest == null ? null : dataSourceRequest.getSort()));
|
||||
|
||||
Page<?> page = loadOptions == null ? null : QgcQueryWrapperUtil.buildPage(loadOptions, loadOptions.getSkip(), loadOptions.getTake());
|
||||
List<EngEqBaseVmsstbprptVo> list = microservicDynamicSQLMapper.pageAllListWithResultType(page, sql.toString(), paramMap, EngEqBaseVmsstbprptVo.class);
|
||||
DataSourceResult<EngEqBaseVmsstbprptVo> result = new DataSourceResult<>();
|
||||
result.setData(list);
|
||||
result.setTotal(page != null ? page.getTotal() : list.size());
|
||||
result.setAggregates(new HashMap<>());
|
||||
return result;
|
||||
}
|
||||
|
||||
private DataSourceResult<EngEqBaseVmsstbprptVo> queryBaseVmsstbprptGroupList(DataSourceRequest dataSourceRequest,
|
||||
DataSourceLoadOptionsBase loadOptions) {
|
||||
List<DataSourceRequest.GroupDescriptor> groups = dataSourceRequest.getGroup();
|
||||
GroupingInfo[] groupInfos = loadOptions == null ? new GroupingInfo[0] : loadOptions.getGroup();
|
||||
List<String> selectItems = new ArrayList<>();
|
||||
for (DataSourceRequest.GroupDescriptor descriptor : groups) {
|
||||
if (descriptor == null || StrUtil.isBlank(descriptor.getField())) {
|
||||
continue;
|
||||
}
|
||||
String column = mapBaseVmsstbprptColumn(descriptor.getField());
|
||||
if (StrUtil.isBlank(column)) {
|
||||
continue;
|
||||
}
|
||||
selectItems.add(column + " AS " + descriptor.getField().toUpperCase());
|
||||
selectItems.add("COUNT(*) AS COUNT_" + descriptor.getField().toUpperCase());
|
||||
if (CollUtil.isNotEmpty(descriptor.getAggregates())) {
|
||||
for (DataSourceRequest.AggregateDescriptor aggregate : descriptor.getAggregates()) {
|
||||
String aggregateColumn = mapBaseVmsstbprptColumn(aggregate.getField());
|
||||
if (StrUtil.isBlank(aggregateColumn) || StrUtil.isBlank(aggregate.getAggregate())) {
|
||||
continue;
|
||||
}
|
||||
selectItems.add(buildAggregateSql(aggregate.getAggregate(), aggregateColumn, aggregate.getField()));
|
||||
}
|
||||
}
|
||||
}
|
||||
if (selectItems.isEmpty()) {
|
||||
selectItems.add("t.STCD AS STCD");
|
||||
selectItems.add("COUNT(*) AS COUNT_STCD");
|
||||
}
|
||||
|
||||
StringBuilder sql = new StringBuilder();
|
||||
sql.append("SELECT ")
|
||||
.append(String.join(", ", selectItems))
|
||||
.append(" FROM (")
|
||||
.append(buildBaseVmsstbprptViewSql())
|
||||
.append(") t WHERE 1 = 1 ");
|
||||
|
||||
Map<String, Object> paramMap = new HashMap<>();
|
||||
String filterSql = buildBaseVmsstbprptFilterCondition(dataSourceRequest == null ? null : dataSourceRequest.getFilter(), paramMap, new int[]{0});
|
||||
if (StrUtil.isNotBlank(filterSql)) {
|
||||
sql.append(" AND ").append(filterSql).append(" ");
|
||||
}
|
||||
|
||||
List<String> groupByColumns = new ArrayList<>();
|
||||
for (DataSourceRequest.GroupDescriptor descriptor : groups) {
|
||||
if (descriptor == null || StrUtil.isBlank(descriptor.getField())) {
|
||||
continue;
|
||||
}
|
||||
String column = mapBaseVmsstbprptColumn(descriptor.getField());
|
||||
if (StrUtil.isNotBlank(column)) {
|
||||
groupByColumns.add(column);
|
||||
}
|
||||
}
|
||||
if (!groupByColumns.isEmpty()) {
|
||||
sql.append(" GROUP BY ").append(String.join(", ", groupByColumns)).append(" ");
|
||||
}
|
||||
sql.append(buildBaseVmsstbprptGroupOrderBySql(groups));
|
||||
|
||||
List<Map<String, Object>> rows = microservicDynamicSQLMapper.pageAllList(null, sql.toString(), paramMap);
|
||||
DataSourceResult<EngEqBaseVmsstbprptVo> result = new DataSourceResult<>();
|
||||
if (Boolean.TRUE.equals(dataSourceRequest.getGroupResultFlat())) {
|
||||
result.setData((List<EngEqBaseVmsstbprptVo>) (List<?>) new GroupHelper().faltGroup(rows, Arrays.asList(groupInfos)));
|
||||
} else {
|
||||
result.setData((List<EngEqBaseVmsstbprptVo>) (List<?>) new GroupHelper().group(rows, Arrays.asList(groupInfos)));
|
||||
}
|
||||
result.setTotal((long) rows.size());
|
||||
result.setAggregates(new HashMap<>());
|
||||
return result;
|
||||
}
|
||||
|
||||
private String buildBaseVmsstbprptViewSql() {
|
||||
return "SELECT " +
|
||||
"eq.STTP AS sttpCode, " +
|
||||
"NVL(sttp.STTP_NAME, eq.STTP) AS sttpName, " +
|
||||
"eq.STCD AS stcd, " +
|
||||
"eq.STNM AS stnm, " +
|
||||
"eq.RSTCD AS rstcd, " +
|
||||
"eng.ENNM AS rstcdName, " +
|
||||
"eq.BASE_ID AS baseId, " +
|
||||
"hb.BASENAME AS baseName, " +
|
||||
"eq.HBRVCD AS hbrvcd, " +
|
||||
"hbrv.HBRVNM AS hbrvcdName, " +
|
||||
"eq.DTIN AS dtin, " +
|
||||
"eq.BLDSTT_CODE AS bldsttCode, " +
|
||||
"NVL(hb.ORDER_INDEX, 999999) AS baseStepSort, " +
|
||||
"NVL(along.ORDER_INDEX, 999999) AS rvcdStepSort, " +
|
||||
"NVL(eng.ORDER_INDEX, 999999) AS rstcdStepSort, " +
|
||||
"NVL(eq.ORDER_INDEX, 999999) AS siteStepSort " +
|
||||
"FROM SD_EQ_B_H eq " +
|
||||
"LEFT JOIN SD_STTP_B sttp ON sttp.STTP_CODE = eq.STTP " +
|
||||
" AND NVL(sttp.IS_DELETED, 0) = 0 AND NVL(sttp.ENABLED, 1) = 1 " +
|
||||
"LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = eq.RSTCD AND NVL(eng.IS_DELETED, 0) = 0 " +
|
||||
"LEFT JOIN SD_HYDROBASE hb ON hb.BASEID = eq.BASE_ID AND NVL(hb.IS_DELETED, 0) = 0 " +
|
||||
"LEFT JOIN SD_HBRV_DIC hbrv ON hbrv.HBRVCD = eq.HBRVCD AND hbrv.BASEID = eq.BASE_ID " +
|
||||
" AND NVL(hbrv.IS_DELETED, 0) = 0 AND NVL(hbrv.ENABLED, 1) = 1 " +
|
||||
"LEFT JOIN MS_ALONG_B along ON along.RVCD = eq.HBRVCD AND along.CODE = 'common' AND NVL(along.IS_DELETED, 0) = 0 " +
|
||||
"WHERE NVL(eq.IS_DELETED, 0) = 0";
|
||||
}
|
||||
|
||||
private String buildBaseVmsstbprptDetailSelectSql(List<String> selectFields) {
|
||||
Map<String, String> columns = baseVmsstbprptFieldColumns();
|
||||
List<String> selected = new ArrayList<>();
|
||||
if (CollUtil.isEmpty(selectFields)) {
|
||||
selected.addAll(columns.values());
|
||||
} else {
|
||||
for (String field : selectFields) {
|
||||
String column = columns.get(field);
|
||||
if (StrUtil.isNotBlank(column)) {
|
||||
selected.add(column);
|
||||
}
|
||||
}
|
||||
if (selected.isEmpty()) {
|
||||
selected.addAll(columns.values());
|
||||
}
|
||||
}
|
||||
return String.join(", ", selected);
|
||||
}
|
||||
|
||||
private Map<String, String> baseVmsstbprptFieldColumns() {
|
||||
Map<String, String> columns = new LinkedHashMap<>();
|
||||
columns.put("sttpCode", "t.sttpCode AS sttpCode");
|
||||
columns.put("sttpName", "t.sttpName AS sttpName");
|
||||
columns.put("stcd", "t.stcd AS stcd");
|
||||
columns.put("stnm", "t.stnm AS stnm");
|
||||
columns.put("rstcd", "t.rstcd AS rstcd");
|
||||
columns.put("rstcdName", "t.rstcdName AS rstcdName");
|
||||
columns.put("baseId", "t.baseId AS baseId");
|
||||
columns.put("baseName", "t.baseName AS baseName");
|
||||
columns.put("hbrvcd", "t.hbrvcd AS hbrvcd");
|
||||
columns.put("hbrvcdName", "t.hbrvcdName AS hbrvcdName");
|
||||
columns.put("dtin", "t.dtin AS dtin");
|
||||
columns.put("bldsttCode", "t.bldsttCode AS bldsttCode");
|
||||
columns.put("baseStepSort", "t.baseStepSort AS baseStepSort");
|
||||
columns.put("rvcdStepSort", "t.rvcdStepSort AS rvcdStepSort");
|
||||
columns.put("rstcdStepSort", "t.rstcdStepSort AS rstcdStepSort");
|
||||
columns.put("siteStepSort", "t.siteStepSort AS siteStepSort");
|
||||
return columns;
|
||||
}
|
||||
|
||||
private DataSourceResult<EngEqMsstbprptVo> queryMsstbprptDetailList(DataSourceRequest dataSourceRequest,
|
||||
DataSourceLoadOptionsBase loadOptions) {
|
||||
StringBuilder sql = new StringBuilder();
|
||||
@ -1217,6 +1389,58 @@ public class EngEqDataServiceImpl implements EngEqDataService {
|
||||
populateHourDayGroupKeyNames(groups, baseNameCache, hbrvNameCache);
|
||||
}
|
||||
|
||||
private void populateBaseMsstbprptGroupKeyNames(List<Group> groups) {
|
||||
if (CollUtil.isEmpty(groups)) {
|
||||
return;
|
||||
}
|
||||
Map<String, String> sttpNameCache = new HashMap<>();
|
||||
Map<String, String> baseNameCache = new HashMap<>();
|
||||
Map<String, String> hbrvNameCache = new HashMap<>();
|
||||
populateBaseMsstbprptGroupKeyNames(groups, sttpNameCache, baseNameCache, hbrvNameCache);
|
||||
}
|
||||
|
||||
private void populateBaseMsstbprptGroupKeyNames(List<Group> groups,
|
||||
Map<String, String> sttpNameCache,
|
||||
Map<String, String> baseNameCache,
|
||||
Map<String, String> hbrvNameCache) {
|
||||
for (Group group : groups) {
|
||||
if (group == null) {
|
||||
continue;
|
||||
}
|
||||
if (StrUtil.isBlank(group.getKeyName())) {
|
||||
group.setKeyName(resolveBaseMsstbprptGroupKeyName(group.getField(), group.getKey(),
|
||||
sttpNameCache, baseNameCache, hbrvNameCache));
|
||||
}
|
||||
if (CollUtil.isNotEmpty(group.getItems()) && group.getItems().get(0) instanceof Group) {
|
||||
populateBaseMsstbprptGroupKeyNames((List<Group>) group.getItems(), sttpNameCache, baseNameCache, hbrvNameCache);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private String resolveBaseMsstbprptGroupKeyName(Object field,
|
||||
Object key,
|
||||
Map<String, String> sttpNameCache,
|
||||
Map<String, String> baseNameCache,
|
||||
Map<String, String> hbrvNameCache) {
|
||||
if (field == null || key == null) {
|
||||
return null;
|
||||
}
|
||||
String fieldName = String.valueOf(field);
|
||||
String keyValue = String.valueOf(key);
|
||||
if (StrUtil.isBlank(keyValue)) {
|
||||
return null;
|
||||
}
|
||||
return switch (fieldName) {
|
||||
case "sttpName", "stnm", "rstcdName", "baseName", "hbrvcdName", "bldsttCodeName", "dtinName" -> keyValue;
|
||||
case "sttp", "sttpCode" -> StrUtil.blankToDefault(resolveSttpName(keyValue, sttpNameCache), keyValue);
|
||||
case "baseId" -> StrUtil.blankToDefault(resolveBaseName(keyValue, baseNameCache), keyValue);
|
||||
case "hbrvcd" -> StrUtil.blankToDefault(resolveHbrvName(keyValue, hbrvNameCache), keyValue);
|
||||
case "dtin" -> resolveDtinName(keyValue);
|
||||
case "bldsttCode" -> resolveBldsttName(keyValue);
|
||||
default -> keyValue;
|
||||
};
|
||||
}
|
||||
|
||||
private void populateHourDayGroupKeyNames(List<Group> groups,
|
||||
Map<String, String> baseNameCache,
|
||||
Map<String, String> hbrvNameCache) {
|
||||
@ -1307,6 +1531,38 @@ public class EngEqDataServiceImpl implements EngEqDataService {
|
||||
return name == null ? null : String.valueOf(name);
|
||||
}
|
||||
|
||||
private String resolveSttpName(String sttpCode, Map<String, String> cache) {
|
||||
if (StrUtil.isBlank(sttpCode)) {
|
||||
return null;
|
||||
}
|
||||
if (cache.containsKey(sttpCode)) {
|
||||
return cache.get(sttpCode);
|
||||
}
|
||||
Map<String, Object> paramMap = new HashMap<>();
|
||||
paramMap.put("code", sttpCode);
|
||||
List<Map<String, Object>> rows = microservicDynamicSQLMapper.pageAllList(null,
|
||||
"SELECT sttp.STTP_NAME AS name FROM SD_STTP_B sttp " +
|
||||
"WHERE sttp.STTP_CODE = #{map.code} " +
|
||||
"AND NVL(sttp.IS_DELETED, 0) = 0 " +
|
||||
"AND NVL(sttp.ENABLE, 1) = 1 " +
|
||||
"AND ROWNUM = 1",
|
||||
paramMap);
|
||||
String name = extractName(rows);
|
||||
if (StrUtil.isBlank(name)) {
|
||||
name = switch (sttpCode) {
|
||||
case "EQ_1" -> "生态放流孔";
|
||||
case "EQ_2" -> "生态放流闸";
|
||||
case "EQ_3" -> "生态放流洞";
|
||||
case "EQ_4" -> "生态放流管";
|
||||
case "EQ_5" -> "基荷发电";
|
||||
case "EQ_6" -> "生态机组";
|
||||
default -> null;
|
||||
};
|
||||
}
|
||||
cache.put(sttpCode, name);
|
||||
return name;
|
||||
}
|
||||
|
||||
private String resolveDtinName(String keyValue) {
|
||||
return switch (keyValue) {
|
||||
case "1" -> "是";
|
||||
@ -2827,6 +3083,79 @@ public class EngEqDataServiceImpl implements EngEqDataService {
|
||||
return result;
|
||||
}
|
||||
|
||||
private String buildBaseVmsstbprptFilterCondition(DataSourceRequest.FilterDescriptor filter,
|
||||
Map<String, Object> paramMap,
|
||||
int[] indexHolder) {
|
||||
if (filter == null) {
|
||||
return "";
|
||||
}
|
||||
if (StrUtil.isNotBlank(filter.getField())) {
|
||||
String column = mapBaseVmsstbprptColumn(filter.getField());
|
||||
if (StrUtil.isBlank(column)) {
|
||||
return "";
|
||||
}
|
||||
return buildGenericCondition(column, filter, paramMap, indexHolder, false);
|
||||
}
|
||||
if (CollUtil.isEmpty(filter.getFilters())) {
|
||||
return "";
|
||||
}
|
||||
List<String> conditions = new ArrayList<>();
|
||||
for (DataSourceRequest.FilterDescriptor child : filter.getFilters()) {
|
||||
String childSql = buildBaseVmsstbprptFilterCondition(child, paramMap, indexHolder);
|
||||
if (StrUtil.isNotBlank(childSql)) {
|
||||
conditions.add("(" + childSql + ")");
|
||||
}
|
||||
}
|
||||
if (conditions.isEmpty()) {
|
||||
return "";
|
||||
}
|
||||
String logic = "or".equalsIgnoreCase(filter.getLogic()) ? " OR " : " AND ";
|
||||
return String.join(logic, conditions);
|
||||
}
|
||||
|
||||
private String buildBaseVmsstbprptDetailOrderBySql(List<DataSourceRequest.SortDescriptor> sortList) {
|
||||
if (CollUtil.isEmpty(sortList)) {
|
||||
return " ORDER BY NVL(t.baseStepSort, 999999) ASC, NVL(t.rvcdStepSort, 999999) ASC, " +
|
||||
"NVL(t.rstcdStepSort, 999999) ASC, NVL(t.siteStepSort, 999999) ASC, t.stcd ASC";
|
||||
}
|
||||
List<String> orders = new ArrayList<>();
|
||||
for (DataSourceRequest.SortDescriptor sort : sortList) {
|
||||
if (sort == null || StrUtil.isBlank(sort.getField())) {
|
||||
continue;
|
||||
}
|
||||
String column = mapBaseVmsstbprptColumn(sort.getField());
|
||||
if (StrUtil.isBlank(column)) {
|
||||
continue;
|
||||
}
|
||||
String dir = "desc".equalsIgnoreCase(sort.getDir()) || "des".equalsIgnoreCase(sort.getDir()) ? "DESC" : "ASC";
|
||||
orders.add(column + " " + dir);
|
||||
}
|
||||
if (orders.isEmpty()) {
|
||||
return " ORDER BY NVL(t.baseStepSort, 999999) ASC, NVL(t.rvcdStepSort, 999999) ASC, " +
|
||||
"NVL(t.rstcdStepSort, 999999) ASC, NVL(t.siteStepSort, 999999) ASC, t.stcd ASC";
|
||||
}
|
||||
return " ORDER BY " + String.join(", ", orders);
|
||||
}
|
||||
|
||||
private String buildBaseVmsstbprptGroupOrderBySql(List<DataSourceRequest.GroupDescriptor> groups) {
|
||||
if (CollUtil.isEmpty(groups)) {
|
||||
return "";
|
||||
}
|
||||
List<String> orders = new ArrayList<>();
|
||||
for (DataSourceRequest.GroupDescriptor descriptor : groups) {
|
||||
if (descriptor == null || StrUtil.isBlank(descriptor.getField())) {
|
||||
continue;
|
||||
}
|
||||
String column = mapBaseVmsstbprptColumn(descriptor.getField());
|
||||
if (StrUtil.isBlank(column)) {
|
||||
continue;
|
||||
}
|
||||
String dir = "desc".equalsIgnoreCase(descriptor.getDir()) || "des".equalsIgnoreCase(descriptor.getDir()) ? "DESC" : "ASC";
|
||||
orders.add(column + " " + dir);
|
||||
}
|
||||
return orders.isEmpty() ? "" : " ORDER BY " + String.join(", ", orders);
|
||||
}
|
||||
|
||||
private DataSourceResult<WbsbVo> queryWbsbDetailList(DataSourceRequest dataSourceRequest,
|
||||
DataSourceLoadOptionsBase loadOptions) {
|
||||
StringBuilder sql = new StringBuilder();
|
||||
@ -5074,6 +5403,31 @@ public class EngEqDataServiceImpl implements EngEqDataService {
|
||||
};
|
||||
}
|
||||
|
||||
private String mapBaseVmsstbprptColumn(String field) {
|
||||
if (StrUtil.isBlank(field)) {
|
||||
return null;
|
||||
}
|
||||
return switch (field) {
|
||||
case "sttpCode" -> "t.sttpCode";
|
||||
case "sttpName" -> "t.sttpName";
|
||||
case "stcd" -> "t.stcd";
|
||||
case "stnm" -> "t.stnm";
|
||||
case "rstcd" -> "t.rstcd";
|
||||
case "rstcdName" -> "t.rstcdName";
|
||||
case "baseId" -> "t.baseId";
|
||||
case "baseName" -> "t.baseName";
|
||||
case "hbrvcd" -> "t.hbrvcd";
|
||||
case "hbrvcdName" -> "t.hbrvcdName";
|
||||
case "dtin" -> "t.dtin";
|
||||
case "bldsttCode" -> "t.bldsttCode";
|
||||
case "baseStepSort" -> "NVL(t.baseStepSort, 999999)";
|
||||
case "rvcdStepSort" -> "NVL(t.rvcdStepSort, 999999)";
|
||||
case "rstcdStepSort" -> "NVL(t.rstcdStepSort, 999999)";
|
||||
case "siteStepSort" -> "NVL(t.siteStepSort, 999999)";
|
||||
default -> null;
|
||||
};
|
||||
}
|
||||
|
||||
private String mapWbsbColumn(String field) {
|
||||
if (StrUtil.isBlank(field)) {
|
||||
return null;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user