feat: 查询基地/基地流域树数据
This commit is contained in:
parent
b8163ce312
commit
95b6e1f341
@ -41,4 +41,10 @@ public class EngEqDataController {
|
|||||||
QgcQecStaticVo result = engEqDataService.getQgcStaticData(dataSourceRequest, type);
|
QgcQecStaticVo result = engEqDataService.getQgcStaticData(dataSourceRequest, type);
|
||||||
return result == null ? ResponseResult.success() : ResponseResult.successData(result);
|
return result == null ? ResponseResult.success() : ResponseResult.successData(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@PostMapping("/wbsb/GetKendoList")
|
||||||
|
@Operation(summary = "查询基地/基地流域树数据")
|
||||||
|
public ResponseResult getWbsbList(@RequestBody DataSourceRequest dataSourceRequest) {
|
||||||
|
return ResponseResult.successData(engEqDataService.getWbsbList(dataSourceRequest));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,60 @@
|
|||||||
|
package com.yfd.platform.qgc_eng.eq.entity.vo;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Schema(description = "基地/基地流域树节点")
|
||||||
|
public class WbsbVo implements Serializable {
|
||||||
|
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
private String id;
|
||||||
|
private String recordUser;
|
||||||
|
private Date recordTime;
|
||||||
|
private Date modifyTime;
|
||||||
|
private String displayRecordUser;
|
||||||
|
private String isolateType;
|
||||||
|
private String wbsType;
|
||||||
|
private String wbsCode;
|
||||||
|
private String wbsName;
|
||||||
|
private String wbsSname;
|
||||||
|
private String wbsNameEn;
|
||||||
|
private String wbsSnameEn;
|
||||||
|
private Integer enable;
|
||||||
|
private String description;
|
||||||
|
private String parentId;
|
||||||
|
private String parentCode;
|
||||||
|
private Integer treeLevel;
|
||||||
|
private Integer hasChildren;
|
||||||
|
private String objId;
|
||||||
|
private String topWbsType;
|
||||||
|
private String fullPath;
|
||||||
|
private Integer internal;
|
||||||
|
private BigDecimal lgtd;
|
||||||
|
private BigDecimal lttd;
|
||||||
|
private BigDecimal area;
|
||||||
|
private BigDecimal perimeter;
|
||||||
|
private String synopsis;
|
||||||
|
private String introduce;
|
||||||
|
private String logo;
|
||||||
|
private String inffile;
|
||||||
|
private Integer orderIndex;
|
||||||
|
private String filterContent;
|
||||||
|
private String departmentId;
|
||||||
|
private String systemId;
|
||||||
|
private String platformId;
|
||||||
|
private String reachWwqtg;
|
||||||
|
private BigDecimal maxElev;
|
||||||
|
private BigDecimal minElev;
|
||||||
|
private String datTp;
|
||||||
|
private String rvAg;
|
||||||
|
private Integer ifInnRv;
|
||||||
|
private String showControl;
|
||||||
|
private String stcd;
|
||||||
|
private String displayDepartment;
|
||||||
|
}
|
||||||
@ -3,10 +3,13 @@ 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.QgcQecStaticVo;
|
import com.yfd.platform.qgc_eng.eq.entity.vo.QgcQecStaticVo;
|
||||||
|
import com.yfd.platform.qgc_eng.eq.entity.vo.WbsbVo;
|
||||||
|
|
||||||
public interface EngEqDataService {
|
public interface EngEqDataService {
|
||||||
|
|
||||||
DataSourceResult getKendoListCust(DataSourceRequest dataSourceRequest);
|
DataSourceResult getKendoListCust(DataSourceRequest dataSourceRequest);
|
||||||
|
|
||||||
QgcQecStaticVo getQgcStaticData(DataSourceRequest dataSourceRequest, String type);
|
QgcQecStaticVo getQgcStaticData(DataSourceRequest dataSourceRequest, String type);
|
||||||
|
|
||||||
|
DataSourceResult<WbsbVo> getWbsbList(DataSourceRequest dataSourceRequest);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -15,6 +15,7 @@ import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqDataVo;
|
|||||||
import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqStaticIntervalVo;
|
import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqStaticIntervalVo;
|
||||||
import com.yfd.platform.qgc_eng.eq.entity.vo.QgcQecStaticVo;
|
import com.yfd.platform.qgc_eng.eq.entity.vo.QgcQecStaticVo;
|
||||||
import com.yfd.platform.qgc_eng.eq.entity.vo.QgcQecVo;
|
import com.yfd.platform.qgc_eng.eq.entity.vo.QgcQecVo;
|
||||||
|
import com.yfd.platform.qgc_eng.eq.entity.vo.WbsbVo;
|
||||||
import com.yfd.platform.qgc_eng.eq.service.EngEqDataService;
|
import com.yfd.platform.qgc_eng.eq.service.EngEqDataService;
|
||||||
import com.yfd.platform.utils.QgcQueryWrapperUtil;
|
import com.yfd.platform.utils.QgcQueryWrapperUtil;
|
||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
@ -108,6 +109,15 @@ public class EngEqDataServiceImpl implements EngEqDataService {
|
|||||||
.setList(list);
|
.setList(list);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public DataSourceResult<WbsbVo> getWbsbList(DataSourceRequest dataSourceRequest) {
|
||||||
|
DataSourceLoadOptionsBase loadOptions = dataSourceRequest == null ? null : dataSourceRequest.toDevRequest();
|
||||||
|
if (CollUtil.isEmpty(dataSourceRequest == null ? null : dataSourceRequest.getGroup())) {
|
||||||
|
return queryWbsbDetailList(dataSourceRequest, loadOptions);
|
||||||
|
}
|
||||||
|
return queryWbsbGroupList(dataSourceRequest, loadOptions);
|
||||||
|
}
|
||||||
|
|
||||||
private DataSourceResult<EngEqDataVo> queryDetailList(DataSourceRequest dataSourceRequest,
|
private DataSourceResult<EngEqDataVo> queryDetailList(DataSourceRequest dataSourceRequest,
|
||||||
DataSourceLoadOptionsBase loadOptions) {
|
DataSourceLoadOptionsBase loadOptions) {
|
||||||
StringBuilder sql = new StringBuilder();
|
StringBuilder sql = new StringBuilder();
|
||||||
@ -134,6 +144,101 @@ public class EngEqDataServiceImpl implements EngEqDataService {
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private DataSourceResult<WbsbVo> queryWbsbDetailList(DataSourceRequest dataSourceRequest,
|
||||||
|
DataSourceLoadOptionsBase loadOptions) {
|
||||||
|
StringBuilder sql = new StringBuilder();
|
||||||
|
sql.append("SELECT ")
|
||||||
|
.append(buildWbsbDetailSelectSql(dataSourceRequest == null ? null : dataSourceRequest.getSelect()))
|
||||||
|
.append(" FROM (")
|
||||||
|
.append(buildWbsbViewSql())
|
||||||
|
.append(") t WHERE 1 = 1 ");
|
||||||
|
|
||||||
|
Map<String, Object> paramMap = new HashMap<>();
|
||||||
|
String filterSql = buildWbsbFilterCondition(dataSourceRequest == null ? null : dataSourceRequest.getFilter(), paramMap, new int[]{0});
|
||||||
|
if (StrUtil.isNotBlank(filterSql)) {
|
||||||
|
sql.append(" AND ").append(filterSql).append(" ");
|
||||||
|
}
|
||||||
|
sql.append(buildWbsbDetailOrderBySql(dataSourceRequest == null ? null : dataSourceRequest.getSort()));
|
||||||
|
|
||||||
|
Page<?> page = loadOptions == null ? null : QgcQueryWrapperUtil.buildPage(loadOptions, loadOptions.getSkip(), loadOptions.getTake());
|
||||||
|
List<WbsbVo> list = microservicDynamicSQLMapper.pageAllListWithResultType(page, sql.toString(), paramMap, WbsbVo.class);
|
||||||
|
DataSourceResult<WbsbVo> result = new DataSourceResult<>();
|
||||||
|
result.setData(list);
|
||||||
|
result.setTotal(page != null ? page.getTotal() : list.size());
|
||||||
|
result.setAggregates(new HashMap<>());
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
private DataSourceResult<WbsbVo> queryWbsbGroupList(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 = mapWbsbColumn(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 = mapWbsbColumn(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.WBSCODE AS WBSCODE");
|
||||||
|
selectItems.add("COUNT(*) AS COUNT_WBSCODE");
|
||||||
|
}
|
||||||
|
|
||||||
|
StringBuilder sql = new StringBuilder();
|
||||||
|
sql.append("SELECT ")
|
||||||
|
.append(String.join(", ", selectItems))
|
||||||
|
.append(" FROM (")
|
||||||
|
.append(buildWbsbViewSql())
|
||||||
|
.append(") t WHERE 1 = 1 ");
|
||||||
|
|
||||||
|
Map<String, Object> paramMap = new HashMap<>();
|
||||||
|
String filterSql = buildWbsbFilterCondition(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 = mapWbsbColumn(descriptor.getField());
|
||||||
|
if (StrUtil.isNotBlank(column)) {
|
||||||
|
groupByColumns.add(column);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!groupByColumns.isEmpty()) {
|
||||||
|
sql.append(" GROUP BY ").append(String.join(", ", groupByColumns)).append(" ");
|
||||||
|
}
|
||||||
|
sql.append(buildWbsbGroupOrderBySql(groups));
|
||||||
|
|
||||||
|
List<Map<String, Object>> rows = microservicDynamicSQLMapper.pageAllList(null, sql.toString(), paramMap);
|
||||||
|
DataSourceResult<WbsbVo> result = new DataSourceResult<>();
|
||||||
|
if (Boolean.TRUE.equals(dataSourceRequest.getGroupResultFlat())) {
|
||||||
|
result.setData((List<WbsbVo>) (List<?>) new GroupHelper().faltGroup(rows, Arrays.asList(groupInfos)));
|
||||||
|
} else {
|
||||||
|
result.setData((List<WbsbVo>) (List<?>) new GroupHelper().group(rows, Arrays.asList(groupInfos)));
|
||||||
|
}
|
||||||
|
result.setTotal((long) rows.size());
|
||||||
|
result.setAggregates(new HashMap<>());
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
private List<EngEqStaticIntervalVo> queryStaticIntervals(DataSourceRequest dataSourceRequest, String type) {
|
private List<EngEqStaticIntervalVo> queryStaticIntervals(DataSourceRequest dataSourceRequest, String type) {
|
||||||
StringBuilder sql = new StringBuilder();
|
StringBuilder sql = new StringBuilder();
|
||||||
Map<String, Object> paramMap = new HashMap<>();
|
Map<String, Object> paramMap = new HashMap<>();
|
||||||
@ -459,6 +564,247 @@ public class EngEqDataServiceImpl implements EngEqDataService {
|
|||||||
"END";
|
"END";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private String buildWbsbViewSql() {
|
||||||
|
return "SELECT " +
|
||||||
|
"t.BASEID AS id, " +
|
||||||
|
"t.RECORD_USER AS recordUser, " +
|
||||||
|
"t.RECORD_TIME AS recordTime, " +
|
||||||
|
"t.MODIFY_TIME AS modifyTime, " +
|
||||||
|
"CAST(NULL AS VARCHAR2(36)) AS displayRecordUser, " +
|
||||||
|
"CAST(NULL AS VARCHAR2(36)) AS isolateType, " +
|
||||||
|
"'PSB' AS wbsType, " +
|
||||||
|
"t.BASEID AS wbsCode, " +
|
||||||
|
"t.BASENAME AS wbsName, " +
|
||||||
|
"t.SHORTNAME AS wbsSname, " +
|
||||||
|
"CAST(NULL AS VARCHAR2(255)) AS wbsNameEn, " +
|
||||||
|
"CAST(NULL AS VARCHAR2(255)) AS wbsSnameEn, " +
|
||||||
|
"t.ENABLED AS enable, " +
|
||||||
|
"t.RMK AS description, " +
|
||||||
|
"CASE WHEN t.PBASEID = '0' THEN NULL ELSE t.PBASEID END AS parentId, " +
|
||||||
|
"CASE WHEN t.PBASEID = '0' THEN NULL ELSE t.PBASEID END AS parentCode, " +
|
||||||
|
"t.GRD AS treeLevel, " +
|
||||||
|
"CASE WHEN EXISTS (SELECT 1 FROM SD_HYDROBASE c WHERE c.PBASEID = t.BASEID AND NVL(c.IS_DELETED, 0) = 0) THEN 1 ELSE 0 END AS hasChildren, " +
|
||||||
|
"CAST(NULL AS VARCHAR2(36)) AS objId, " +
|
||||||
|
"CAST(NULL AS VARCHAR2(20)) AS topWbsType, " +
|
||||||
|
"t.PATH AS fullPath, " +
|
||||||
|
"1 AS internal, " +
|
||||||
|
"CAST(NULL AS NUMBER(10,6)) AS lgtd, " +
|
||||||
|
"CAST(NULL AS NUMBER(10,6)) AS lttd, " +
|
||||||
|
"CAST(NULL AS NUMBER(18,6)) AS area, " +
|
||||||
|
"CAST(NULL AS NUMBER(18,6)) AS perimeter, " +
|
||||||
|
"CAST(NULL AS VARCHAR2(4000)) AS synopsis, " +
|
||||||
|
"t.DES AS introduce, " +
|
||||||
|
"CAST(NULL AS VARCHAR2(255)) AS logo, " +
|
||||||
|
"CAST(NULL AS VARCHAR2(255)) AS inffile, " +
|
||||||
|
"t.ORDER_INDEX AS orderIndex, " +
|
||||||
|
"CAST(NULL AS VARCHAR2(255)) AS filterContent, " +
|
||||||
|
"CAST(NULL AS VARCHAR2(36)) AS departmentId, " +
|
||||||
|
"CAST(NULL AS VARCHAR2(36)) AS systemId, " +
|
||||||
|
"CAST(NULL AS VARCHAR2(36)) AS platformId, " +
|
||||||
|
"CAST(NULL AS VARCHAR2(50)) AS reachWwqtg, " +
|
||||||
|
"CAST(NULL AS NUMBER(10,6)) AS maxElev, " +
|
||||||
|
"CAST(NULL AS NUMBER(10,6)) AS minElev, " +
|
||||||
|
"CAST(NULL AS VARCHAR2(50)) AS datTp, " +
|
||||||
|
"CAST(NULL AS VARCHAR2(50)) AS rvAg, " +
|
||||||
|
"CAST(NULL AS NUMBER(1,0)) AS ifInnRv, " +
|
||||||
|
"CAST(NULL AS VARCHAR2(2000)) AS showControl, " +
|
||||||
|
"CAST(NULL AS VARCHAR2(36)) AS stcd, " +
|
||||||
|
"CAST(NULL AS VARCHAR2(255)) AS displayDepartment " +
|
||||||
|
"FROM SD_HYDROBASE t WHERE NVL(t.IS_DELETED, 0) = 0 " +
|
||||||
|
"UNION ALL " +
|
||||||
|
"SELECT " +
|
||||||
|
"t.HBRVCD || '_' || t.BASEID AS id, " +
|
||||||
|
"t.RECORD_USER AS recordUser, " +
|
||||||
|
"t.RECORD_TIME AS recordTime, " +
|
||||||
|
"t.MODIFY_TIME AS modifyTime, " +
|
||||||
|
"CAST(NULL AS VARCHAR2(36)) AS displayRecordUser, " +
|
||||||
|
"CAST(NULL AS VARCHAR2(36)) AS isolateType, " +
|
||||||
|
"'PSB_RVCD' AS wbsType, " +
|
||||||
|
"t.HBRVCD AS wbsCode, " +
|
||||||
|
"t.HBRVNM AS wbsName, " +
|
||||||
|
"CAST(NULL AS VARCHAR2(255)) AS wbsSname, " +
|
||||||
|
"CAST(NULL AS VARCHAR2(255)) AS wbsNameEn, " +
|
||||||
|
"CAST(NULL AS VARCHAR2(255)) AS wbsSnameEn, " +
|
||||||
|
"t.ENABLED AS enable, " +
|
||||||
|
"t.REMARK AS description, " +
|
||||||
|
"CASE WHEN t.PHBRVCD IS NULL OR t.PHBRVCD = '0' THEN NULL ELSE t.PHBRVCD || '_' || t.BASEID END AS parentId, " +
|
||||||
|
"CASE WHEN t.PHBRVCD IS NULL OR t.PHBRVCD = '0' THEN NULL ELSE t.PHBRVCD END AS parentCode, " +
|
||||||
|
"t.GRD AS treeLevel, " +
|
||||||
|
"CASE WHEN EXISTS (SELECT 1 FROM SD_HBRV_DIC c WHERE c.PHBRVCD = t.HBRVCD AND c.BASEID = t.BASEID AND NVL(c.IS_DELETED, 0) = 0) THEN 1 ELSE 0 END AS hasChildren, " +
|
||||||
|
"t.BASEID AS objId, " +
|
||||||
|
"'PSB' AS topWbsType, " +
|
||||||
|
"t.PATH AS fullPath, " +
|
||||||
|
"1 AS internal, " +
|
||||||
|
"CAST(NULL AS NUMBER(10,6)) AS lgtd, " +
|
||||||
|
"CAST(NULL AS NUMBER(10,6)) AS lttd, " +
|
||||||
|
"CAST(NULL AS NUMBER(18,6)) AS area, " +
|
||||||
|
"CAST(NULL AS NUMBER(18,6)) AS perimeter, " +
|
||||||
|
"CAST(NULL AS VARCHAR2(4000)) AS synopsis, " +
|
||||||
|
"CAST(NULL AS VARCHAR2(4000)) AS introduce, " +
|
||||||
|
"CAST(NULL AS VARCHAR2(255)) AS logo, " +
|
||||||
|
"CAST(NULL AS VARCHAR2(255)) AS inffile, " +
|
||||||
|
"t.ORDER_INDEX AS orderIndex, " +
|
||||||
|
"CAST(NULL AS VARCHAR2(255)) AS filterContent, " +
|
||||||
|
"CAST(NULL AS VARCHAR2(36)) AS departmentId, " +
|
||||||
|
"CAST(NULL AS VARCHAR2(36)) AS systemId, " +
|
||||||
|
"CAST(NULL AS VARCHAR2(36)) AS platformId, " +
|
||||||
|
"CAST(NULL AS VARCHAR2(50)) AS reachWwqtg, " +
|
||||||
|
"CAST(NULL AS NUMBER(10,6)) AS maxElev, " +
|
||||||
|
"CAST(NULL AS NUMBER(10,6)) AS minElev, " +
|
||||||
|
"CAST(NULL AS VARCHAR2(50)) AS datTp, " +
|
||||||
|
"CAST(NULL AS VARCHAR2(50)) AS rvAg, " +
|
||||||
|
"CAST(NULL AS NUMBER(1,0)) AS ifInnRv, " +
|
||||||
|
"CAST(NULL AS VARCHAR2(2000)) AS showControl, " +
|
||||||
|
"CAST(NULL AS VARCHAR2(36)) AS stcd, " +
|
||||||
|
"CAST(NULL AS VARCHAR2(255)) AS displayDepartment " +
|
||||||
|
"FROM SD_HBRV_DIC t WHERE NVL(t.IS_DELETED, 0) = 0 AND t.ORDER_INDEX IS NOT NULL";
|
||||||
|
}
|
||||||
|
|
||||||
|
private String buildWbsbDetailSelectSql(List<String> selectFields) {
|
||||||
|
Map<String, String> columns = wbsbFieldColumns();
|
||||||
|
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> wbsbFieldColumns() {
|
||||||
|
Map<String, String> columns = new LinkedHashMap<>();
|
||||||
|
columns.put("id", "t.id AS id");
|
||||||
|
columns.put("recordUser", "t.recordUser AS recordUser");
|
||||||
|
columns.put("recordTime", "t.recordTime AS recordTime");
|
||||||
|
columns.put("modifyTime", "t.modifyTime AS modifyTime");
|
||||||
|
columns.put("displayRecordUser", "t.displayRecordUser AS displayRecordUser");
|
||||||
|
columns.put("isolateType", "t.isolateType AS isolateType");
|
||||||
|
columns.put("wbsType", "t.wbsType AS wbsType");
|
||||||
|
columns.put("wbsCode", "t.wbsCode AS wbsCode");
|
||||||
|
columns.put("wbsName", "t.wbsName AS wbsName");
|
||||||
|
columns.put("wbsSname", "t.wbsSname AS wbsSname");
|
||||||
|
columns.put("wbsNameEn", "t.wbsNameEn AS wbsNameEn");
|
||||||
|
columns.put("wbsSnameEn", "t.wbsSnameEn AS wbsSnameEn");
|
||||||
|
columns.put("enable", "t.enable AS enable");
|
||||||
|
columns.put("description", "t.description AS description");
|
||||||
|
columns.put("parentId", "t.parentId AS parentId");
|
||||||
|
columns.put("parentCode", "t.parentCode AS parentCode");
|
||||||
|
columns.put("treeLevel", "t.treeLevel AS treeLevel");
|
||||||
|
columns.put("hasChildren", "t.hasChildren AS hasChildren");
|
||||||
|
columns.put("objId", "t.objId AS objId");
|
||||||
|
columns.put("topWbsType", "t.topWbsType AS topWbsType");
|
||||||
|
columns.put("fullPath", "t.fullPath AS fullPath");
|
||||||
|
columns.put("internal", "t.internal AS internal");
|
||||||
|
columns.put("lgtd", "t.lgtd AS lgtd");
|
||||||
|
columns.put("lttd", "t.lttd AS lttd");
|
||||||
|
columns.put("area", "t.area AS area");
|
||||||
|
columns.put("perimeter", "t.perimeter AS perimeter");
|
||||||
|
columns.put("synopsis", "t.synopsis AS synopsis");
|
||||||
|
columns.put("introduce", "t.introduce AS introduce");
|
||||||
|
columns.put("logo", "t.logo AS logo");
|
||||||
|
columns.put("inffile", "t.inffile AS inffile");
|
||||||
|
columns.put("orderIndex", "t.orderIndex AS orderIndex");
|
||||||
|
columns.put("filterContent", "t.filterContent AS filterContent");
|
||||||
|
columns.put("departmentId", "t.departmentId AS departmentId");
|
||||||
|
columns.put("systemId", "t.systemId AS systemId");
|
||||||
|
columns.put("platformId", "t.platformId AS platformId");
|
||||||
|
columns.put("reachWwqtg", "t.reachWwqtg AS reachWwqtg");
|
||||||
|
columns.put("maxElev", "t.maxElev AS maxElev");
|
||||||
|
columns.put("minElev", "t.minElev AS minElev");
|
||||||
|
columns.put("datTp", "t.datTp AS datTp");
|
||||||
|
columns.put("rvAg", "t.rvAg AS rvAg");
|
||||||
|
columns.put("ifInnRv", "t.ifInnRv AS ifInnRv");
|
||||||
|
columns.put("showControl", "t.showControl AS showControl");
|
||||||
|
columns.put("stcd", "t.stcd AS stcd");
|
||||||
|
columns.put("displayDepartment", "t.displayDepartment AS displayDepartment");
|
||||||
|
return columns;
|
||||||
|
}
|
||||||
|
|
||||||
|
private String buildWbsbFilterCondition(DataSourceRequest.FilterDescriptor filter,
|
||||||
|
Map<String, Object> paramMap,
|
||||||
|
int[] indexHolder) {
|
||||||
|
if (filter == null) {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
if (StrUtil.isNotBlank(filter.getField())) {
|
||||||
|
return buildWbsbLeafCondition(filter, paramMap, indexHolder);
|
||||||
|
}
|
||||||
|
if (CollUtil.isEmpty(filter.getFilters())) {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
List<String> conditions = new ArrayList<>();
|
||||||
|
for (DataSourceRequest.FilterDescriptor child : filter.getFilters()) {
|
||||||
|
String childSql = buildWbsbFilterCondition(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 buildWbsbLeafCondition(DataSourceRequest.FilterDescriptor filter,
|
||||||
|
Map<String, Object> paramMap,
|
||||||
|
int[] indexHolder) {
|
||||||
|
String column = mapWbsbColumn(filter.getField());
|
||||||
|
if (StrUtil.isBlank(column)) {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
return buildGenericCondition(column, filter, paramMap, indexHolder, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
private String buildWbsbDetailOrderBySql(List<DataSourceRequest.SortDescriptor> sortList) {
|
||||||
|
if (CollUtil.isEmpty(sortList)) {
|
||||||
|
return " ORDER BY NVL(t.orderIndex, 999999) ASC, t.wbsCode ASC";
|
||||||
|
}
|
||||||
|
List<String> orders = new ArrayList<>();
|
||||||
|
for (DataSourceRequest.SortDescriptor sort : sortList) {
|
||||||
|
if (sort == null || StrUtil.isBlank(sort.getField())) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
String column = mapWbsbColumn(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.orderIndex, 999999) ASC, t.wbsCode ASC";
|
||||||
|
}
|
||||||
|
return " ORDER BY " + String.join(", ", orders);
|
||||||
|
}
|
||||||
|
|
||||||
|
private String buildWbsbGroupOrderBySql(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 = mapWbsbColumn(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 String buildFilterCondition(DataSourceRequest.FilterDescriptor filter,
|
private String buildFilterCondition(DataSourceRequest.FilterDescriptor filter,
|
||||||
Map<String, Object> paramMap,
|
Map<String, Object> paramMap,
|
||||||
int[] indexHolder) {
|
int[] indexHolder) {
|
||||||
@ -747,6 +1093,34 @@ public class EngEqDataServiceImpl implements EngEqDataService {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private String mapWbsbColumn(String field) {
|
||||||
|
if (StrUtil.isBlank(field)) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return switch (field) {
|
||||||
|
case "id" -> "t.id";
|
||||||
|
case "wbsType" -> "t.wbsType";
|
||||||
|
case "wbsCode" -> "t.wbsCode";
|
||||||
|
case "wbsName" -> "t.wbsName";
|
||||||
|
case "wbsSname" -> "t.wbsSname";
|
||||||
|
case "enable" -> "t.enable";
|
||||||
|
case "description" -> "t.description";
|
||||||
|
case "parentId" -> "t.parentId";
|
||||||
|
case "parentCode" -> "t.parentCode";
|
||||||
|
case "treeLevel" -> "t.treeLevel";
|
||||||
|
case "hasChildren" -> "t.hasChildren";
|
||||||
|
case "objId", "objid" -> "t.objId";
|
||||||
|
case "topWbsType" -> "t.topWbsType";
|
||||||
|
case "fullPath" -> "t.fullPath";
|
||||||
|
case "internal" -> "t.internal";
|
||||||
|
case "introduce" -> "t.introduce";
|
||||||
|
case "orderIndex" -> "NVL(t.orderIndex, 999999)";
|
||||||
|
case "recordTime" -> "t.recordTime";
|
||||||
|
case "modifyTime" -> "t.modifyTime";
|
||||||
|
default -> null;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
private String mapEqColumn(String field) {
|
private String mapEqColumn(String field) {
|
||||||
if (StrUtil.isBlank(field)) {
|
if (StrUtil.isBlank(field)) {
|
||||||
return null;
|
return null;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user