feat: 生态流量周旬月季年数据
This commit is contained in:
parent
47fa1688d6
commit
5632e00f0b
@ -4,6 +4,7 @@ import com.yfd.platform.common.DataSourceLoadOptionsBase;
|
|||||||
import com.yfd.platform.common.DataSourceRequest;
|
import com.yfd.platform.common.DataSourceRequest;
|
||||||
import com.yfd.platform.common.DataSourceResult;
|
import com.yfd.platform.common.DataSourceResult;
|
||||||
import com.yfd.platform.config.ResponseResult;
|
import com.yfd.platform.config.ResponseResult;
|
||||||
|
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.EngEqIntervalVo;
|
||||||
import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqMsstbprptVo;
|
import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqMsstbprptVo;
|
||||||
import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqRuleVo;
|
import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqRuleVo;
|
||||||
@ -42,6 +43,13 @@ public class EngEqDataController {
|
|||||||
return ResponseResult.successData(engEqDataService.getDayKendoListCust(dataSourceRequest));
|
return ResponseResult.successData(engEqDataService.getDayKendoListCust(dataSourceRequest));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@PostMapping("/data/drtp/GetKendoListCust")
|
||||||
|
@Operation(summary = "生态流量周旬月季年数据")
|
||||||
|
public ResponseResult getDrtpKendoListCust(@RequestBody DataSourceRequest dataSourceRequest) {
|
||||||
|
DataSourceResult<EngEqDrtpDataVo> result = engEqDataService.getDrtpKendoListCust(dataSourceRequest);
|
||||||
|
return ResponseResult.successData(result);
|
||||||
|
}
|
||||||
|
|
||||||
@PostMapping("/interval/GetKendoListCust")
|
@PostMapping("/interval/GetKendoListCust")
|
||||||
@Operation(summary = "生态流量达标情况")
|
@Operation(summary = "生态流量达标情况")
|
||||||
public ResponseResult getIntervalKendoListCust(@RequestBody DataSourceRequest dataSourceRequest) {
|
public ResponseResult getIntervalKendoListCust(@RequestBody DataSourceRequest dataSourceRequest) {
|
||||||
|
|||||||
@ -0,0 +1,126 @@
|
|||||||
|
package com.yfd.platform.qgc_eng.eq.entity.vo;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Schema(description = "生态流量周旬月季年数据")
|
||||||
|
public class EngEqDrtpDataVo {
|
||||||
|
|
||||||
|
@Schema(description = "主键")
|
||||||
|
private String id;
|
||||||
|
|
||||||
|
@Schema(description = "电站编码")
|
||||||
|
private String stcd;
|
||||||
|
|
||||||
|
@Schema(description = "电站名称")
|
||||||
|
private String stnm;
|
||||||
|
|
||||||
|
@Schema(description = "工程名称")
|
||||||
|
private String ennm;
|
||||||
|
|
||||||
|
@Schema(description = "基地编码")
|
||||||
|
private String baseId;
|
||||||
|
|
||||||
|
@Schema(description = "基地名称")
|
||||||
|
private String baseName;
|
||||||
|
|
||||||
|
@Schema(description = "基地流域编码")
|
||||||
|
private String hbrvcd;
|
||||||
|
|
||||||
|
@Schema(description = "基地流域名称")
|
||||||
|
private String hbrvcdName;
|
||||||
|
|
||||||
|
@Schema(description = "流域编码")
|
||||||
|
private String rvcd;
|
||||||
|
|
||||||
|
@Schema(description = "流域名称")
|
||||||
|
private String rvcdName;
|
||||||
|
|
||||||
|
@Schema(description = "行政区名称")
|
||||||
|
private String addvcdName;
|
||||||
|
|
||||||
|
@Schema(description = "入库流量")
|
||||||
|
private BigDecimal qi;
|
||||||
|
|
||||||
|
@Schema(description = "出库流量")
|
||||||
|
private BigDecimal qo;
|
||||||
|
|
||||||
|
@Schema(description = "坝上水位")
|
||||||
|
private BigDecimal rz;
|
||||||
|
|
||||||
|
@Schema(description = "坝下水位")
|
||||||
|
private BigDecimal dz;
|
||||||
|
|
||||||
|
@Schema(description = "生态流量限值(环保部)")
|
||||||
|
private BigDecimal qecLimit;
|
||||||
|
|
||||||
|
@Schema(description = "生态流量")
|
||||||
|
private BigDecimal qec;
|
||||||
|
|
||||||
|
@Schema(description = "生态流量限值(水利部)")
|
||||||
|
private BigDecimal mwrLimit;
|
||||||
|
|
||||||
|
@Schema(description = "生态流量限值(多年平均)")
|
||||||
|
private BigDecimal avqLimit;
|
||||||
|
|
||||||
|
@Schema(description = "生态流量系数(环保部)")
|
||||||
|
private BigDecimal qecC;
|
||||||
|
|
||||||
|
@Schema(description = "生态流量系数(水利部)")
|
||||||
|
private BigDecimal mwrC;
|
||||||
|
|
||||||
|
@Schema(description = "生态流量系数(多年平均)")
|
||||||
|
private BigDecimal avqC;
|
||||||
|
|
||||||
|
@Schema(description = "生态流量是否达标")
|
||||||
|
private Integer sfdb;
|
||||||
|
|
||||||
|
@Schema(description = "生态流量是否达标中文")
|
||||||
|
private String sfdbName;
|
||||||
|
|
||||||
|
@Schema(description = "生态流量是否达标(环保部)")
|
||||||
|
private Integer qecSfdb;
|
||||||
|
|
||||||
|
@Schema(description = "生态流量是否达标(水利部)")
|
||||||
|
private Integer mwrSfdb;
|
||||||
|
|
||||||
|
@Schema(description = "生态流量是否达标(水利部)中文")
|
||||||
|
private String mwrSfdbName;
|
||||||
|
|
||||||
|
@Schema(description = "生态流量是否达标(多年平均)")
|
||||||
|
private Integer avqSfdb;
|
||||||
|
|
||||||
|
@Schema(description = "生态流量是否达标(多年平均)中文")
|
||||||
|
private String avqSfdbName;
|
||||||
|
|
||||||
|
@Schema(description = "数据时间")
|
||||||
|
private Date tm;
|
||||||
|
|
||||||
|
@Schema(description = "月")
|
||||||
|
private Integer month;
|
||||||
|
|
||||||
|
@Schema(description = "年")
|
||||||
|
private Integer year;
|
||||||
|
|
||||||
|
@Schema(description = "维度类型")
|
||||||
|
private String drtp;
|
||||||
|
|
||||||
|
@Schema(description = "时段")
|
||||||
|
private Integer dr;
|
||||||
|
|
||||||
|
@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.DataSourceRequest;
|
||||||
import com.yfd.platform.common.DataSourceResult;
|
import com.yfd.platform.common.DataSourceResult;
|
||||||
import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqDayDataVo;
|
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;
|
import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqDayIntervalVo;
|
||||||
import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqHourIntervalVo;
|
import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqHourIntervalVo;
|
||||||
import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqIntervalVo;
|
import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqIntervalVo;
|
||||||
@ -21,6 +22,8 @@ public interface EngEqDataService {
|
|||||||
|
|
||||||
DataSourceResult<EngEqDayDataVo> getDayKendoListCust(DataSourceRequest dataSourceRequest);
|
DataSourceResult<EngEqDayDataVo> getDayKendoListCust(DataSourceRequest dataSourceRequest);
|
||||||
|
|
||||||
|
DataSourceResult<EngEqDrtpDataVo> getDrtpKendoListCust(DataSourceRequest dataSourceRequest);
|
||||||
|
|
||||||
DataSourceResult<EngEqIntervalVo> getIntervalKendoListCust(DataSourceRequest dataSourceRequest);
|
DataSourceResult<EngEqIntervalVo> getIntervalKendoListCust(DataSourceRequest dataSourceRequest);
|
||||||
|
|
||||||
DataSourceResult<EngEqMsstbprptVo> getMsstbprptList(DataSourceRequest dataSourceRequest);
|
DataSourceResult<EngEqMsstbprptVo> getMsstbprptList(DataSourceRequest dataSourceRequest);
|
||||||
|
|||||||
@ -13,6 +13,7 @@ import com.yfd.platform.common.enums.QecIntervalEnum;
|
|||||||
import com.yfd.platform.common.enums.ShowEnum;
|
import com.yfd.platform.common.enums.ShowEnum;
|
||||||
import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqDataVo;
|
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.EngEqDayDataVo;
|
||||||
|
import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqDrtpDataVo;
|
||||||
import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqDayIntervalVo;
|
import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqDayIntervalVo;
|
||||||
import com.yfd.platform.qgc_eng.eq.entity.vo.EngFidVo;
|
import com.yfd.platform.qgc_eng.eq.entity.vo.EngFidVo;
|
||||||
import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqHourIntervalVo;
|
import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqHourIntervalVo;
|
||||||
@ -70,6 +71,15 @@ public class EngEqDataServiceImpl implements EngEqDataService {
|
|||||||
return queryDayGroupList(dataSourceRequest, loadOptions);
|
return queryDayGroupList(dataSourceRequest, loadOptions);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public DataSourceResult<EngEqDrtpDataVo> getDrtpKendoListCust(DataSourceRequest dataSourceRequest) {
|
||||||
|
DataSourceLoadOptionsBase loadOptions = dataSourceRequest == null ? null : dataSourceRequest.toDevRequest();
|
||||||
|
if (CollUtil.isEmpty(dataSourceRequest == null ? null : dataSourceRequest.getGroup())) {
|
||||||
|
return queryDrtpDetailList(dataSourceRequest, loadOptions);
|
||||||
|
}
|
||||||
|
return queryDrtpGroupList(dataSourceRequest, loadOptions);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public DataSourceResult<EngEqIntervalVo> getIntervalKendoListCust(DataSourceRequest dataSourceRequest) {
|
public DataSourceResult<EngEqIntervalVo> getIntervalKendoListCust(DataSourceRequest dataSourceRequest) {
|
||||||
DataSourceLoadOptionsBase loadOptions = dataSourceRequest == null ? null : dataSourceRequest.toDevRequest();
|
DataSourceLoadOptionsBase loadOptions = dataSourceRequest == null ? null : dataSourceRequest.toDevRequest();
|
||||||
@ -1590,6 +1600,101 @@ public class EngEqDataServiceImpl implements EngEqDataService {
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private DataSourceResult<EngEqDrtpDataVo> queryDrtpDetailList(DataSourceRequest dataSourceRequest,
|
||||||
|
DataSourceLoadOptionsBase loadOptions) {
|
||||||
|
StringBuilder sql = new StringBuilder();
|
||||||
|
sql.append("SELECT ")
|
||||||
|
.append(buildDrtpDetailSelectSql(dataSourceRequest == null ? null : dataSourceRequest.getSelect()))
|
||||||
|
.append(" FROM (")
|
||||||
|
.append(buildDrtpViewSql())
|
||||||
|
.append(") t WHERE 1 = 1 ");
|
||||||
|
|
||||||
|
Map<String, Object> paramMap = new HashMap<>();
|
||||||
|
String filterSql = buildDrtpFilterCondition(dataSourceRequest == null ? null : dataSourceRequest.getFilter(), paramMap, new int[]{0});
|
||||||
|
if (StrUtil.isNotBlank(filterSql)) {
|
||||||
|
sql.append(" AND ").append(filterSql).append(" ");
|
||||||
|
}
|
||||||
|
sql.append(buildDrtpDetailOrderBySql(dataSourceRequest == null ? null : dataSourceRequest.getSort()));
|
||||||
|
|
||||||
|
Page<?> page = loadOptions == null ? null : QgcQueryWrapperUtil.buildPage(loadOptions, loadOptions.getSkip(), loadOptions.getTake());
|
||||||
|
List<EngEqDrtpDataVo> list = microservicDynamicSQLMapper.pageAllListWithResultType(page, sql.toString(), paramMap, EngEqDrtpDataVo.class);
|
||||||
|
DataSourceResult<EngEqDrtpDataVo> result = new DataSourceResult<>();
|
||||||
|
result.setData(list);
|
||||||
|
result.setTotal(page != null ? page.getTotal() : list.size());
|
||||||
|
result.setAggregates(new HashMap<>());
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
private DataSourceResult<EngEqDrtpDataVo> queryDrtpGroupList(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 = mapDrtpColumn(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 = mapDrtpColumn(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(buildDrtpViewSql())
|
||||||
|
.append(") t WHERE 1 = 1 ");
|
||||||
|
|
||||||
|
Map<String, Object> paramMap = new HashMap<>();
|
||||||
|
String filterSql = buildDrtpFilterCondition(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 = mapDrtpColumn(descriptor.getField());
|
||||||
|
if (StrUtil.isNotBlank(column)) {
|
||||||
|
groupByColumns.add(column);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!groupByColumns.isEmpty()) {
|
||||||
|
sql.append(" GROUP BY ").append(String.join(", ", groupByColumns)).append(" ");
|
||||||
|
}
|
||||||
|
sql.append(buildDrtpGroupOrderBySql(groups));
|
||||||
|
|
||||||
|
List<Map<String, Object>> rows = microservicDynamicSQLMapper.pageAllList(null, sql.toString(), paramMap);
|
||||||
|
DataSourceResult<EngEqDrtpDataVo> result = new DataSourceResult<>();
|
||||||
|
if (Boolean.TRUE.equals(dataSourceRequest.getGroupResultFlat())) {
|
||||||
|
result.setData((List<EngEqDrtpDataVo>) (List<?>) new GroupHelper().faltGroup(rows, Arrays.asList(groupInfos)));
|
||||||
|
} else {
|
||||||
|
result.setData((List<EngEqDrtpDataVo>) (List<?>) new GroupHelper().group(rows, Arrays.asList(groupInfos)));
|
||||||
|
}
|
||||||
|
result.setTotal((long) rows.size());
|
||||||
|
result.setAggregates(new HashMap<>());
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
private DataSourceResult<EngEqIntervalVo> queryIntervalDetailList(DataSourceRequest dataSourceRequest,
|
private DataSourceResult<EngEqIntervalVo> queryIntervalDetailList(DataSourceRequest dataSourceRequest,
|
||||||
DataSourceLoadOptionsBase loadOptions) {
|
DataSourceLoadOptionsBase loadOptions) {
|
||||||
Map<String, Object> paramMap = new HashMap<>();
|
Map<String, Object> paramMap = new HashMap<>();
|
||||||
@ -2683,6 +2788,75 @@ public class EngEqDataServiceImpl implements EngEqDataService {
|
|||||||
"WHERE NVL(day.IS_DELETED, 0) = 0";
|
"WHERE NVL(day.IS_DELETED, 0) = 0";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private String buildDrtpViewSql() {
|
||||||
|
return "SELECT " +
|
||||||
|
"drtp.ID AS id, " +
|
||||||
|
"eng.STCD AS stcd, " +
|
||||||
|
"eng.ENNM AS stnm, " +
|
||||||
|
"eng.ENNM AS ennm, " +
|
||||||
|
"eng.BASE_ID AS baseId, " +
|
||||||
|
"hb.BASENAME AS baseName, " +
|
||||||
|
"eng.HBRVCD AS hbrvcd, " +
|
||||||
|
"hbrv.HBRVNM AS hbrvcdName, " +
|
||||||
|
"eng.RVCD AS rvcd, " +
|
||||||
|
"rv.RVNM AS rvcdName, " +
|
||||||
|
"addv.ADDVNM AS addvcdName, " +
|
||||||
|
"runDrtp.QI AS qi, " +
|
||||||
|
"runDrtp.QO AS qo, " +
|
||||||
|
"runDrtp.RZ AS rz, " +
|
||||||
|
"runDrtp.DZ AS dz, " +
|
||||||
|
"drtp.QEC_LIMIT AS qecLimit, " +
|
||||||
|
"drtp.QEC AS qec, " +
|
||||||
|
"drtp.MWR_LIMIT AS mwrLimit, " +
|
||||||
|
"drtp.AVQ_LIMIT AS avqLimit, " +
|
||||||
|
"drtp.QEC_C AS qecC, " +
|
||||||
|
"drtp.MWR_C AS mwrC, " +
|
||||||
|
"drtp.AVQ_C AS avqC, " +
|
||||||
|
"drtp.SFDB AS sfdb, " +
|
||||||
|
"CASE NVL(drtp.SFDB, -1) WHEN 0 THEN '不达标' WHEN 1 THEN '达标' WHEN 2 THEN '无生态流量数据' WHEN 3 THEN '无生态流量限值要求' ELSE NULL END AS sfdbName, " +
|
||||||
|
"drtp.SFDB AS qecSfdb, " +
|
||||||
|
"drtp.MWR_SFDB AS mwrSfdb, " +
|
||||||
|
"CASE NVL(drtp.MWR_SFDB, -1) WHEN 0 THEN '不达标' WHEN 1 THEN '达标' WHEN 2 THEN '无生态流量数据' WHEN 3 THEN '无生态流量限值要求' ELSE NULL END AS mwrSfdbName, " +
|
||||||
|
"drtp.AVQ_SFDB AS avqSfdb, " +
|
||||||
|
"CASE NVL(drtp.AVQ_SFDB, -1) WHEN 0 THEN '不达标' WHEN 1 THEN '达标' WHEN 2 THEN '无生态流量数据' WHEN 3 THEN '无生态流量限值要求' ELSE NULL END AS avqSfdbName, " +
|
||||||
|
"drtp.TM AS tm, " +
|
||||||
|
"drtp.YEAR AS year, " +
|
||||||
|
"drtp.MONTH AS month, " +
|
||||||
|
"drtp.DRTP AS drtp, " +
|
||||||
|
"drtp.DR AS dr, " +
|
||||||
|
"NVL(hb.ORDER_INDEX, 999999) AS baseStepSort, " +
|
||||||
|
"NVL(along.ORDER_INDEX, 999999) AS rvcdStepSort, " +
|
||||||
|
"NVL(rstSort.SORT, 999999) AS rstcdStepSort, " +
|
||||||
|
"NVL(siteSort.SORT, 999999) AS siteStepSort " +
|
||||||
|
"FROM SD_QECDRTP_S drtp " +
|
||||||
|
"INNER JOIN SD_ENGINFO_B_H eng ON eng.STCD = drtp.STCD AND NVL(eng.IS_DELETED, 0) = 0 " +
|
||||||
|
"LEFT JOIN SD_HYDROBASE hb ON hb.BASEID = eng.BASE_ID AND NVL(hb.IS_DELETED, 0) = 0 " +
|
||||||
|
"LEFT JOIN SD_HBRV_DIC hbrv ON hbrv.HBRVCD = eng.HBRVCD AND hbrv.BASEID = eng.BASE_ID " +
|
||||||
|
" AND NVL(hbrv.IS_DELETED, 0) = 0 AND NVL(hbrv.ENABLED, 1) = 1 " +
|
||||||
|
"LEFT JOIN SD_RVCD_DIC rv ON rv.RVCD = eng.RVCD " +
|
||||||
|
"LEFT JOIN SD_ADDVCD_DIC addv ON addv.ADDVCD = eng.ADDVCD " +
|
||||||
|
"LEFT JOIN MS_ALONG_B along ON along.RVCD = eng.HBRVCD AND along.CODE = 'common' AND NVL(along.IS_DELETED, 0) = 0 " +
|
||||||
|
"LEFT JOIN ( " +
|
||||||
|
" SELECT det.SORT, cfg.RVCD, det.STCD " +
|
||||||
|
" FROM MS_ALONGDET_B det " +
|
||||||
|
" INNER JOIN MS_ALONG_B cfg ON det.ALONG_ID = cfg.ID " +
|
||||||
|
" WHERE NVL(det.IS_DELETED, 0) = 0 AND NVL(cfg.IS_DELETED, 0) = 0 AND cfg.CODE = 'common' " +
|
||||||
|
") rstSort ON rstSort.RVCD = eng.HBRVCD AND rstSort.STCD = eng.STCD " +
|
||||||
|
"LEFT JOIN ( " +
|
||||||
|
" SELECT det.SORT, cfg.RVCD, det.STCD " +
|
||||||
|
" FROM MS_ALONGDET_B det " +
|
||||||
|
" INNER JOIN MS_ALONG_B cfg ON det.ALONG_ID = cfg.ID " +
|
||||||
|
" WHERE NVL(det.IS_DELETED, 0) = 0 AND NVL(cfg.IS_DELETED, 0) = 0 AND cfg.CODE = 'common' " +
|
||||||
|
") siteSort ON siteSort.RVCD = eng.HBRVCD AND siteSort.STCD = eng.STCD " +
|
||||||
|
"LEFT JOIN SD_HYDROPWDRTP_S runDrtp ON drtp.STCD = runDrtp.STCD " +
|
||||||
|
" AND drtp.DRTP = runDrtp.DRTP " +
|
||||||
|
" AND NVL(drtp.DR, -1) = NVL(runDrtp.DR, -1) " +
|
||||||
|
" AND NVL(drtp.MONTH, -1) = NVL(runDrtp.MONTH, -1) " +
|
||||||
|
" AND drtp.YEAR = runDrtp.YEAR " +
|
||||||
|
" AND NVL(runDrtp.IS_DELETED, 0) = 0 " +
|
||||||
|
"WHERE NVL(drtp.IS_DELETED, 0) = 0";
|
||||||
|
}
|
||||||
|
|
||||||
private String buildDayRunDaySql() {
|
private String buildDayRunDaySql() {
|
||||||
return "SELECT run.STCD, TRUNC(run.TM) AS DT, " +
|
return "SELECT run.STCD, TRUNC(run.TM) AS DT, " +
|
||||||
"AVG(run.QI) AS QI, AVG(run.QO) AS QO, AVG(run.RZ) AS RZ, AVG(run.DZ) AS DZ " +
|
"AVG(run.QI) AS QI, AVG(run.QO) AS QO, AVG(run.RZ) AS RZ, AVG(run.DZ) AS DZ " +
|
||||||
@ -2729,6 +2903,25 @@ public class EngEqDataServiceImpl implements EngEqDataService {
|
|||||||
return String.join(", ", selected);
|
return String.join(", ", selected);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private String buildDrtpDetailSelectSql(List<String> selectFields) {
|
||||||
|
Map<String, String> columns = drtpFieldColumns();
|
||||||
|
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> detailFieldColumns() {
|
private Map<String, String> detailFieldColumns() {
|
||||||
Map<String, String> columns = new LinkedHashMap<>();
|
Map<String, String> columns = new LinkedHashMap<>();
|
||||||
columns.put("id", "sqr.ID AS id");
|
columns.put("id", "sqr.ID AS id");
|
||||||
@ -2815,6 +3008,49 @@ public class EngEqDataServiceImpl implements EngEqDataService {
|
|||||||
return columns;
|
return columns;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private Map<String, String> drtpFieldColumns() {
|
||||||
|
Map<String, String> columns = new LinkedHashMap<>();
|
||||||
|
columns.put("id", "t.id AS id");
|
||||||
|
columns.put("stcd", "t.stcd AS stcd");
|
||||||
|
columns.put("stnm", "t.stnm AS stnm");
|
||||||
|
columns.put("ennm", "t.ennm AS ennm");
|
||||||
|
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("rvcd", "t.rvcd AS rvcd");
|
||||||
|
columns.put("rvcdName", "t.rvcdName AS rvcdName");
|
||||||
|
columns.put("addvcdName", "t.addvcdName AS addvcdName");
|
||||||
|
columns.put("qi", "t.qi AS qi");
|
||||||
|
columns.put("qo", "t.qo AS qo");
|
||||||
|
columns.put("rz", "t.rz AS rz");
|
||||||
|
columns.put("dz", "t.dz AS dz");
|
||||||
|
columns.put("qecLimit", "t.qecLimit AS qecLimit");
|
||||||
|
columns.put("qec", "t.qec AS qec");
|
||||||
|
columns.put("mwrLimit", "t.mwrLimit AS mwrLimit");
|
||||||
|
columns.put("avqLimit", "t.avqLimit AS avqLimit");
|
||||||
|
columns.put("qecC", "t.qecC AS qecC");
|
||||||
|
columns.put("mwrC", "t.mwrC AS mwrC");
|
||||||
|
columns.put("avqC", "t.avqC AS avqC");
|
||||||
|
columns.put("sfdb", "t.sfdb AS sfdb");
|
||||||
|
columns.put("sfdbName", "t.sfdbName AS sfdbName");
|
||||||
|
columns.put("qecSfdb", "t.qecSfdb AS qecSfdb");
|
||||||
|
columns.put("mwrSfdb", "t.mwrSfdb AS mwrSfdb");
|
||||||
|
columns.put("mwrSfdbName", "t.mwrSfdbName AS mwrSfdbName");
|
||||||
|
columns.put("avqSfdb", "t.avqSfdb AS avqSfdb");
|
||||||
|
columns.put("avqSfdbName", "t.avqSfdbName AS avqSfdbName");
|
||||||
|
columns.put("tm", "t.tm AS tm");
|
||||||
|
columns.put("year", "t.year AS year");
|
||||||
|
columns.put("month", "t.month AS month");
|
||||||
|
columns.put("drtp", "t.drtp AS drtp");
|
||||||
|
columns.put("dr", "t.dr AS dr");
|
||||||
|
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 String buildDetailOrderBySql(List<DataSourceRequest.SortDescriptor> sortList) {
|
private String buildDetailOrderBySql(List<DataSourceRequest.SortDescriptor> sortList) {
|
||||||
if (CollUtil.isEmpty(sortList)) {
|
if (CollUtil.isEmpty(sortList)) {
|
||||||
return " ORDER BY baseStepSort ASC, rvcdStepSort ASC, rstcdStepSort ASC, siteStepSort ASC, tm DESC";
|
return " ORDER BY baseStepSort ASC, rvcdStepSort ASC, rstcdStepSort ASC, siteStepSort ASC, tm DESC";
|
||||||
@ -3596,6 +3832,10 @@ public class EngEqDataServiceImpl implements EngEqDataService {
|
|||||||
return "dt".equalsIgnoreCase(field) || "tm".equalsIgnoreCase(field);
|
return "dt".equalsIgnoreCase(field) || "tm".equalsIgnoreCase(field);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private boolean isEqDrtpDateField(String field) {
|
||||||
|
return "tm".equalsIgnoreCase(field);
|
||||||
|
}
|
||||||
|
|
||||||
private String buildEqValueExpr(String paramKey, boolean dateField, Object value) {
|
private String buildEqValueExpr(String paramKey, boolean dateField, Object value) {
|
||||||
if (!dateField || value == null) {
|
if (!dateField || value == null) {
|
||||||
return "#{map." + paramKey + "}";
|
return "#{map." + paramKey + "}";
|
||||||
@ -3684,6 +3924,83 @@ public class EngEqDataServiceImpl implements EngEqDataService {
|
|||||||
return orders.isEmpty() ? "" : " ORDER BY " + String.join(", ", orders);
|
return orders.isEmpty() ? "" : " ORDER BY " + String.join(", ", orders);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private String buildDrtpFilterCondition(DataSourceRequest.FilterDescriptor filter,
|
||||||
|
Map<String, Object> paramMap,
|
||||||
|
int[] indexHolder) {
|
||||||
|
if (filter == null) {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
if (StrUtil.isNotBlank(filter.getField())) {
|
||||||
|
return buildDrtpLeafCondition(filter, paramMap, indexHolder);
|
||||||
|
}
|
||||||
|
if (CollUtil.isEmpty(filter.getFilters())) {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
List<String> conditions = new ArrayList<>();
|
||||||
|
for (DataSourceRequest.FilterDescriptor child : filter.getFilters()) {
|
||||||
|
String childSql = buildDrtpFilterCondition(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 buildDrtpLeafCondition(DataSourceRequest.FilterDescriptor filter,
|
||||||
|
Map<String, Object> paramMap,
|
||||||
|
int[] indexHolder) {
|
||||||
|
String column = mapDrtpColumn(filter.getField());
|
||||||
|
if (StrUtil.isBlank(column)) {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
return buildGenericCondition(column, filter, paramMap, indexHolder, isEqDrtpDateField(filter.getField()));
|
||||||
|
}
|
||||||
|
|
||||||
|
private String buildDrtpDetailOrderBySql(List<DataSourceRequest.SortDescriptor> sortList) {
|
||||||
|
if (CollUtil.isEmpty(sortList)) {
|
||||||
|
return " ORDER BY baseStepSort ASC, rvcdStepSort ASC, rstcdStepSort ASC, siteStepSort ASC, year DESC, month DESC, drtp ASC, dr ASC";
|
||||||
|
}
|
||||||
|
List<String> orders = new ArrayList<>();
|
||||||
|
for (DataSourceRequest.SortDescriptor sort : sortList) {
|
||||||
|
if (sort == null || StrUtil.isBlank(sort.getField())) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
String column = mapDrtpOrderColumn(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 baseStepSort ASC, rvcdStepSort ASC, rstcdStepSort ASC, siteStepSort ASC, year DESC, month DESC, drtp ASC, dr ASC";
|
||||||
|
}
|
||||||
|
return " ORDER BY " + String.join(", ", orders);
|
||||||
|
}
|
||||||
|
|
||||||
|
private String buildDrtpGroupOrderBySql(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 = mapDrtpColumn(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);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -4247,4 +4564,66 @@ public class EngEqDataServiceImpl implements EngEqDataService {
|
|||||||
default -> null;
|
default -> null;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private String mapDrtpColumn(String field) {
|
||||||
|
if (StrUtil.isBlank(field)) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return switch (field) {
|
||||||
|
case "id" -> "t.id";
|
||||||
|
case "stcd" -> "t.stcd";
|
||||||
|
case "stnm", "ennm" -> "t.ennm";
|
||||||
|
case "baseId" -> "t.baseId";
|
||||||
|
case "baseName" -> "t.baseName";
|
||||||
|
case "hbrvcd" -> "t.hbrvcd";
|
||||||
|
case "hbrvcdName" -> "t.hbrvcdName";
|
||||||
|
case "rvcd" -> "t.rvcd";
|
||||||
|
case "rvcdName" -> "t.rvcdName";
|
||||||
|
case "addvcdName" -> "t.addvcdName";
|
||||||
|
case "qi" -> "t.qi";
|
||||||
|
case "qo" -> "t.qo";
|
||||||
|
case "rz" -> "t.rz";
|
||||||
|
case "dz" -> "t.dz";
|
||||||
|
case "qecLimit" -> "t.qecLimit";
|
||||||
|
case "qec" -> "t.qec";
|
||||||
|
case "mwrLimit" -> "t.mwrLimit";
|
||||||
|
case "avqLimit" -> "t.avqLimit";
|
||||||
|
case "qecC" -> "t.qecC";
|
||||||
|
case "mwrC" -> "t.mwrC";
|
||||||
|
case "avqC" -> "t.avqC";
|
||||||
|
case "sfdb" -> "t.sfdb";
|
||||||
|
case "sfdbName" -> "t.sfdbName";
|
||||||
|
case "qecSfdb" -> "t.qecSfdb";
|
||||||
|
case "mwrSfdb" -> "t.mwrSfdb";
|
||||||
|
case "mwrSfdbName" -> "t.mwrSfdbName";
|
||||||
|
case "avqSfdb" -> "t.avqSfdb";
|
||||||
|
case "avqSfdbName" -> "t.avqSfdbName";
|
||||||
|
case "tm" -> "t.tm";
|
||||||
|
case "year" -> "t.year";
|
||||||
|
case "month" -> "t.month";
|
||||||
|
case "drtp" -> "t.drtp";
|
||||||
|
case "dr" -> "t.dr";
|
||||||
|
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 mapDrtpOrderColumn(String field) {
|
||||||
|
if (StrUtil.isBlank(field)) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return switch (field) {
|
||||||
|
case "id", "baseId", "hbrvcd", "rvcd", "qecC", "mwrC", "avqC",
|
||||||
|
"sfdbName", "qecSfdb", "mwrSfdb", "mwrSfdbName", "avqSfdb",
|
||||||
|
"avqSfdbName", "baseStepSort", "rvcdStepSort", "rstcdStepSort",
|
||||||
|
"siteStepSort", "tm", "year", "month", "drtp", "dr", "stcd",
|
||||||
|
"stnm", "ennm", "qi", "qo", "qec", "sfdb", "rz", "dz",
|
||||||
|
"qecLimit", "mwrLimit", "avqLimit", "baseName", "rvcdName",
|
||||||
|
"hbrvcdName", "addvcdName" -> field;
|
||||||
|
default -> null;
|
||||||
|
};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user