feat: 查询基地/基地流域树数据
This commit is contained in:
parent
b8163ce312
commit
95b6e1f341
@ -41,4 +41,10 @@ public class EngEqDataController {
|
||||
QgcQecStaticVo result = engEqDataService.getQgcStaticData(dataSourceRequest, type);
|
||||
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.DataSourceResult;
|
||||
import com.yfd.platform.qgc_eng.eq.entity.vo.QgcQecStaticVo;
|
||||
import com.yfd.platform.qgc_eng.eq.entity.vo.WbsbVo;
|
||||
|
||||
public interface EngEqDataService {
|
||||
|
||||
DataSourceResult getKendoListCust(DataSourceRequest dataSourceRequest);
|
||||
|
||||
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.QgcQecStaticVo;
|
||||
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.utils.QgcQueryWrapperUtil;
|
||||
import jakarta.annotation.Resource;
|
||||
@ -108,6 +109,15 @@ public class EngEqDataServiceImpl implements EngEqDataService {
|
||||
.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,
|
||||
DataSourceLoadOptionsBase loadOptions) {
|
||||
StringBuilder sql = new StringBuilder();
|
||||
@ -134,6 +144,101 @@ public class EngEqDataServiceImpl implements EngEqDataService {
|
||||
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) {
|
||||
StringBuilder sql = new StringBuilder();
|
||||
Map<String, Object> paramMap = new HashMap<>();
|
||||
@ -459,6 +564,247 @@ public class EngEqDataServiceImpl implements EngEqDataService {
|
||||
"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,
|
||||
Map<String, Object> paramMap,
|
||||
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) {
|
||||
if (StrUtil.isBlank(field)) {
|
||||
return null;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user