Merge branch 'dev-tw'
This commit is contained in:
commit
48bfe316d7
@ -36,6 +36,12 @@ public class EngEqDataController {
|
|||||||
return ResponseResult.successData(engEqDataService.getKendoListCust(dataSourceRequest));
|
return ResponseResult.successData(engEqDataService.getKendoListCust(dataSourceRequest));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@PostMapping("/data/day/GetKendoListCust")
|
||||||
|
@Operation(summary = "生态流量日数据")
|
||||||
|
public ResponseResult getDayKendoListCust(@RequestBody DataSourceRequest dataSourceRequest) {
|
||||||
|
return ResponseResult.successData(engEqDataService.getDayKendoListCust(dataSourceRequest));
|
||||||
|
}
|
||||||
|
|
||||||
@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,123 @@
|
|||||||
|
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 EngEqDayDataVo {
|
||||||
|
|
||||||
|
@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 dt;
|
||||||
|
|
||||||
|
@Schema(description = "环保部规则详情ID")
|
||||||
|
private String qecRuleDid;
|
||||||
|
|
||||||
|
@Schema(description = "水利部规则详情ID")
|
||||||
|
private String qecMwrruleDid;
|
||||||
|
|
||||||
|
@Schema(description = "去年同期生态流量")
|
||||||
|
private BigDecimal beforeQec;
|
||||||
|
|
||||||
|
@Schema(description = "基地排序")
|
||||||
|
private Integer baseStepSort;
|
||||||
|
|
||||||
|
@Schema(description = "流域排序")
|
||||||
|
private Integer rvcdStepSort;
|
||||||
|
|
||||||
|
@Schema(description = "电站排序")
|
||||||
|
private Integer rstcdStepSort;
|
||||||
|
|
||||||
|
@Schema(description = "站点排序")
|
||||||
|
private Integer siteStepSort;
|
||||||
|
}
|
||||||
@ -2,6 +2,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.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;
|
||||||
@ -18,6 +19,8 @@ public interface EngEqDataService {
|
|||||||
|
|
||||||
DataSourceResult getKendoListCust(DataSourceRequest dataSourceRequest);
|
DataSourceResult getKendoListCust(DataSourceRequest dataSourceRequest);
|
||||||
|
|
||||||
|
DataSourceResult<EngEqDayDataVo> getDayKendoListCust(DataSourceRequest dataSourceRequest);
|
||||||
|
|
||||||
DataSourceResult<EngEqIntervalVo> getIntervalKendoListCust(DataSourceRequest dataSourceRequest);
|
DataSourceResult<EngEqIntervalVo> getIntervalKendoListCust(DataSourceRequest dataSourceRequest);
|
||||||
|
|
||||||
DataSourceResult<EngEqMsstbprptVo> getMsstbprptList(DataSourceRequest dataSourceRequest);
|
DataSourceResult<EngEqMsstbprptVo> getMsstbprptList(DataSourceRequest dataSourceRequest);
|
||||||
|
|||||||
@ -12,6 +12,7 @@ import com.yfd.platform.common.MicroservicDynamicSQLMapper;
|
|||||||
import com.yfd.platform.common.enums.QecIntervalEnum;
|
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.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;
|
||||||
@ -60,6 +61,15 @@ public class EngEqDataServiceImpl implements EngEqDataService {
|
|||||||
return queryGroupList(dataSourceRequest, loadOptions);
|
return queryGroupList(dataSourceRequest, loadOptions);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public DataSourceResult<EngEqDayDataVo> getDayKendoListCust(DataSourceRequest dataSourceRequest) {
|
||||||
|
DataSourceLoadOptionsBase loadOptions = dataSourceRequest == null ? null : dataSourceRequest.toDevRequest();
|
||||||
|
if (CollUtil.isEmpty(dataSourceRequest == null ? null : dataSourceRequest.getGroup())) {
|
||||||
|
return queryDayDetailList(dataSourceRequest, loadOptions);
|
||||||
|
}
|
||||||
|
return queryDayGroupList(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();
|
||||||
@ -1485,6 +1495,101 @@ public class EngEqDataServiceImpl implements EngEqDataService {
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private DataSourceResult<EngEqDayDataVo> queryDayDetailList(DataSourceRequest dataSourceRequest,
|
||||||
|
DataSourceLoadOptionsBase loadOptions) {
|
||||||
|
StringBuilder sql = new StringBuilder();
|
||||||
|
sql.append("SELECT ")
|
||||||
|
.append(buildDayDetailSelectSql(dataSourceRequest == null ? null : dataSourceRequest.getSelect()))
|
||||||
|
.append(" FROM (")
|
||||||
|
.append(buildDayViewSql())
|
||||||
|
.append(") t WHERE 1 = 1 ");
|
||||||
|
|
||||||
|
Map<String, Object> paramMap = new HashMap<>();
|
||||||
|
String filterSql = buildDayFilterCondition(dataSourceRequest == null ? null : dataSourceRequest.getFilter(), paramMap, new int[]{0});
|
||||||
|
if (StrUtil.isNotBlank(filterSql)) {
|
||||||
|
sql.append(" AND ").append(filterSql).append(" ");
|
||||||
|
}
|
||||||
|
sql.append(buildDayDetailOrderBySql(dataSourceRequest == null ? null : dataSourceRequest.getSort()));
|
||||||
|
|
||||||
|
Page<?> page = loadOptions == null ? null : QgcQueryWrapperUtil.buildPage(loadOptions, loadOptions.getSkip(), loadOptions.getTake());
|
||||||
|
List<EngEqDayDataVo> list = microservicDynamicSQLMapper.pageAllListWithResultType(page, sql.toString(), paramMap, EngEqDayDataVo.class);
|
||||||
|
DataSourceResult<EngEqDayDataVo> result = new DataSourceResult<>();
|
||||||
|
result.setData(list);
|
||||||
|
result.setTotal(page != null ? page.getTotal() : list.size());
|
||||||
|
result.setAggregates(new HashMap<>());
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
private DataSourceResult<EngEqDayDataVo> queryDayGroupList(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 = mapDayColumn(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 = mapDayColumn(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(buildDayViewSql())
|
||||||
|
.append(") t WHERE 1 = 1 ");
|
||||||
|
|
||||||
|
Map<String, Object> paramMap = new HashMap<>();
|
||||||
|
String filterSql = buildDayFilterCondition(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 = mapDayColumn(descriptor.getField());
|
||||||
|
if (StrUtil.isNotBlank(column)) {
|
||||||
|
groupByColumns.add(column);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!groupByColumns.isEmpty()) {
|
||||||
|
sql.append(" GROUP BY ").append(String.join(", ", groupByColumns)).append(" ");
|
||||||
|
}
|
||||||
|
sql.append(buildDayGroupOrderBySql(groups));
|
||||||
|
|
||||||
|
List<Map<String, Object>> rows = microservicDynamicSQLMapper.pageAllList(null, sql.toString(), paramMap);
|
||||||
|
DataSourceResult<EngEqDayDataVo> result = new DataSourceResult<>();
|
||||||
|
if (Boolean.TRUE.equals(dataSourceRequest.getGroupResultFlat())) {
|
||||||
|
result.setData((List<EngEqDayDataVo>) (List<?>) new GroupHelper().faltGroup(rows, Arrays.asList(groupInfos)));
|
||||||
|
} else {
|
||||||
|
result.setData((List<EngEqDayDataVo>) (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<>();
|
||||||
@ -2513,6 +2618,79 @@ public class EngEqDataServiceImpl implements EngEqDataService {
|
|||||||
"LEFT JOIN SD_QEC_R bsqr ON bsqr.STCD = sqr.STCD AND ADD_MONTHS(bsqr.TM, 12) = sqr.TM AND NVL(bsqr.IS_DELETED, 0) = 0 ";
|
"LEFT JOIN SD_QEC_R bsqr ON bsqr.STCD = sqr.STCD AND ADD_MONTHS(bsqr.TM, 12) = sqr.TM AND NVL(bsqr.IS_DELETED, 0) = 0 ";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private String buildDayViewSql() {
|
||||||
|
return "SELECT " +
|
||||||
|
"day.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, " +
|
||||||
|
"runDay.QI AS qi, " +
|
||||||
|
"runDay.QO AS qo, " +
|
||||||
|
"runDay.RZ AS rz, " +
|
||||||
|
"runDay.DZ AS dz, " +
|
||||||
|
"day.QEC_LIMIT AS qecLimit, " +
|
||||||
|
"day.QEC AS qec, " +
|
||||||
|
"day.MWR_LIMIT AS mwrLimit, " +
|
||||||
|
"day.AVQ_LIMIT AS avqLimit, " +
|
||||||
|
"day.QEC_C AS qecC, " +
|
||||||
|
"day.MWR_C AS mwrC, " +
|
||||||
|
"day.AVQ_C AS avqC, " +
|
||||||
|
"day.SFDB AS sfdb, " +
|
||||||
|
"CASE NVL(day.SFDB, -1) WHEN 0 THEN '不达标' WHEN 1 THEN '达标' WHEN 2 THEN '无生态流量数据' WHEN 3 THEN '无生态流量限值要求' ELSE NULL END AS sfdbName, " +
|
||||||
|
"day.SFDB AS qecSfdb, " +
|
||||||
|
"day.MWR_SFDB AS mwrSfdb, " +
|
||||||
|
"CASE NVL(day.MWR_SFDB, -1) WHEN 0 THEN '不达标' WHEN 1 THEN '达标' WHEN 2 THEN '无生态流量数据' WHEN 3 THEN '无生态流量限值要求' ELSE NULL END AS mwrSfdbName, " +
|
||||||
|
"day.AVQ_SFDB AS avqSfdb, " +
|
||||||
|
"CASE NVL(day.AVQ_SFDB, -1) WHEN 0 THEN '不达标' WHEN 1 THEN '达标' WHEN 2 THEN '无生态流量数据' WHEN 3 THEN '无生态流量限值要求' ELSE NULL END AS avqSfdbName, " +
|
||||||
|
"day.DT AS dt, " +
|
||||||
|
"day.QEC_RULE_DID AS qecRuleDid, " +
|
||||||
|
"day.QEC_MWRRULE_DID AS qecMwrruleDid, " +
|
||||||
|
"beforeDay.QEC AS beforeQec, " +
|
||||||
|
"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_QECDAY_S day " +
|
||||||
|
"INNER JOIN SD_ENGINFO_B_H eng ON eng.STCD = day.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 (" + buildDayRunDaySql() + ") runDay ON runDay.STCD = day.STCD AND runDay.DT = day.DT " +
|
||||||
|
"LEFT JOIN SD_QECDAY_S beforeDay ON beforeDay.STCD = day.STCD " +
|
||||||
|
" AND ADD_MONTHS(beforeDay.DT, 12) = day.DT AND NVL(beforeDay.IS_DELETED, 0) = 0 " +
|
||||||
|
"WHERE NVL(day.IS_DELETED, 0) = 0";
|
||||||
|
}
|
||||||
|
|
||||||
|
private String buildDayRunDaySql() {
|
||||||
|
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 " +
|
||||||
|
"FROM SD_HYDROPW_R run " +
|
||||||
|
"WHERE NVL(run.IS_DELETED, 0) = 0 " +
|
||||||
|
"GROUP BY run.STCD, TRUNC(run.TM)";
|
||||||
|
}
|
||||||
|
|
||||||
private String buildDetailSelectSql(List<String> selectFields) {
|
private String buildDetailSelectSql(List<String> selectFields) {
|
||||||
Map<String, String> columns = detailFieldColumns();
|
Map<String, String> columns = detailFieldColumns();
|
||||||
List<String> selected = new ArrayList<>();
|
List<String> selected = new ArrayList<>();
|
||||||
@ -2532,6 +2710,25 @@ public class EngEqDataServiceImpl implements EngEqDataService {
|
|||||||
return String.join(", ", selected);
|
return String.join(", ", selected);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private String buildDayDetailSelectSql(List<String> selectFields) {
|
||||||
|
Map<String, String> columns = dayFieldColumns();
|
||||||
|
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");
|
||||||
@ -2576,6 +2773,48 @@ public class EngEqDataServiceImpl implements EngEqDataService {
|
|||||||
return columns;
|
return columns;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private Map<String, String> dayFieldColumns() {
|
||||||
|
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("dt", "t.dt AS dt");
|
||||||
|
columns.put("qecRuleDid", "t.qecRuleDid AS qecRuleDid");
|
||||||
|
columns.put("qecMwrruleDid", "t.qecMwrruleDid AS qecMwrruleDid");
|
||||||
|
columns.put("beforeQec", "t.beforeQec AS beforeQec");
|
||||||
|
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";
|
||||||
@ -3353,6 +3592,10 @@ public class EngEqDataServiceImpl implements EngEqDataService {
|
|||||||
return "tm".equalsIgnoreCase(field);
|
return "tm".equalsIgnoreCase(field);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private boolean isEqDayDateField(String field) {
|
||||||
|
return "dt".equalsIgnoreCase(field) || "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 + "}";
|
||||||
@ -3364,6 +3607,83 @@ public class EngEqDataServiceImpl implements EngEqDataService {
|
|||||||
return "TO_DATE(#{map." + paramKey + "}, 'YYYY-MM-DD HH24:MI:SS')";
|
return "TO_DATE(#{map." + paramKey + "}, 'YYYY-MM-DD HH24:MI:SS')";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private String buildDayFilterCondition(DataSourceRequest.FilterDescriptor filter,
|
||||||
|
Map<String, Object> paramMap,
|
||||||
|
int[] indexHolder) {
|
||||||
|
if (filter == null) {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
if (StrUtil.isNotBlank(filter.getField())) {
|
||||||
|
return buildDayLeafCondition(filter, paramMap, indexHolder);
|
||||||
|
}
|
||||||
|
if (CollUtil.isEmpty(filter.getFilters())) {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
List<String> conditions = new ArrayList<>();
|
||||||
|
for (DataSourceRequest.FilterDescriptor child : filter.getFilters()) {
|
||||||
|
String childSql = buildDayFilterCondition(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 buildDayLeafCondition(DataSourceRequest.FilterDescriptor filter,
|
||||||
|
Map<String, Object> paramMap,
|
||||||
|
int[] indexHolder) {
|
||||||
|
String column = mapDayColumn(filter.getField());
|
||||||
|
if (StrUtil.isBlank(column)) {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
return buildGenericCondition(column, filter, paramMap, indexHolder, isEqDayDateField(filter.getField()));
|
||||||
|
}
|
||||||
|
|
||||||
|
private String buildDayDetailOrderBySql(List<DataSourceRequest.SortDescriptor> sortList) {
|
||||||
|
if (CollUtil.isEmpty(sortList)) {
|
||||||
|
return " ORDER BY baseStepSort ASC, rvcdStepSort ASC, rstcdStepSort ASC, siteStepSort ASC, dt DESC";
|
||||||
|
}
|
||||||
|
List<String> orders = new ArrayList<>();
|
||||||
|
for (DataSourceRequest.SortDescriptor sort : sortList) {
|
||||||
|
if (sort == null || StrUtil.isBlank(sort.getField())) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
String column = mapDayOrderColumn(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, dt DESC";
|
||||||
|
}
|
||||||
|
return " ORDER BY " + String.join(", ", orders);
|
||||||
|
}
|
||||||
|
|
||||||
|
private String buildDayGroupOrderBySql(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 = mapDayColumn(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);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -3825,6 +4145,51 @@ public class EngEqDataServiceImpl implements EngEqDataService {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private String mapDayColumn(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 "dt", "tm" -> "t.dt";
|
||||||
|
case "qecRuleDid" -> "t.qecRuleDid";
|
||||||
|
case "qecMwrruleDid" -> "t.qecMwrruleDid";
|
||||||
|
case "beforeQec" -> "t.beforeQec";
|
||||||
|
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 mapOrderColumn(String field) {
|
private String mapOrderColumn(String field) {
|
||||||
if (StrUtil.isBlank(field)) {
|
if (StrUtil.isBlank(field)) {
|
||||||
return null;
|
return null;
|
||||||
@ -3837,4 +4202,18 @@ public class EngEqDataServiceImpl implements EngEqDataService {
|
|||||||
default -> null;
|
default -> null;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private String mapDayOrderColumn(String field) {
|
||||||
|
if (StrUtil.isBlank(field)) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return switch (field) {
|
||||||
|
case "baseStepSort", "rvcdStepSort", "rstcdStepSort", "siteStepSort",
|
||||||
|
"dt", "stcd", "stnm", "ennm", "qi", "qo", "qec", "sfdb",
|
||||||
|
"rz", "dz", "qecLimit", "mwrLimit", "avqLimit", "baseName",
|
||||||
|
"rvcdName", "hbrvcdName", "addvcdName", "beforeQec" -> field;
|
||||||
|
case "tm" -> "dt";
|
||||||
|
default -> null;
|
||||||
|
};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -226,6 +226,9 @@ public class FpVmsstbprptVo implements Serializable {
|
|||||||
@Schema(description = "数据来源")
|
@Schema(description = "数据来源")
|
||||||
private String vlsr;
|
private String vlsr;
|
||||||
|
|
||||||
|
@Schema(description = "LOGO")
|
||||||
|
private String logo;
|
||||||
|
|
||||||
@Schema(description = "数据来源时间")
|
@Schema(description = "数据来源时间")
|
||||||
private Date vlsrTm;
|
private Date vlsrTm;
|
||||||
|
|
||||||
|
|||||||
@ -98,6 +98,7 @@ public class FpBuildServiceImpl implements FpBuildService {
|
|||||||
StringBuilder sql = new StringBuilder();
|
StringBuilder sql = new StringBuilder();
|
||||||
sql.append("SELECT ")
|
sql.append("SELECT ")
|
||||||
.append("fp.STCD AS stcd, ")
|
.append("fp.STCD AS stcd, ")
|
||||||
|
.append("fp.LOGO AS logo, ")
|
||||||
.append("fp.STNM AS stnm, ")
|
.append("fp.STNM AS stnm, ")
|
||||||
.append("fp.STTP AS sttpCode, ")
|
.append("fp.STTP AS sttpCode, ")
|
||||||
.append("sttp.STTP_NAME AS sttpName, ")
|
.append("sttp.STTP_NAME AS sttpName, ")
|
||||||
@ -313,6 +314,7 @@ public class FpBuildServiceImpl implements FpBuildService {
|
|||||||
columnMap.put("sttpName", "sttp.STTP_NAME");
|
columnMap.put("sttpName", "sttp.STTP_NAME");
|
||||||
columnMap.put("sttpFullPath", "sttp.FULL_PATH");
|
columnMap.put("sttpFullPath", "sttp.FULL_PATH");
|
||||||
columnMap.put("rstcd", "fp.RSTCD");
|
columnMap.put("rstcd", "fp.RSTCD");
|
||||||
|
columnMap.put("logo", "fp.LOGO");
|
||||||
columnMap.put("ennm", "eng.ENNM");
|
columnMap.put("ennm", "eng.ENNM");
|
||||||
columnMap.put("baseId", "eng.BASE_ID");
|
columnMap.put("baseId", "eng.BASE_ID");
|
||||||
columnMap.put("baseName", "hb.BASENAME");
|
columnMap.put("baseName", "hb.BASENAME");
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user