From 355cd7f4a626af8673d3560a1cf9932a6edf2daf Mon Sep 17 00:00:00 2001 From: tangwei Date: Fri, 22 May 2026 09:44:44 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=9F=A5=E8=AF=A2=E6=B0=B4=E7=94=B5?= =?UTF-8?q?=E5=9F=BA=E5=9C=B0=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../yfd/platform/config/SwaggerConfig.java | 8 ++ .../env/controller/SdHydrobaseController.java | 9 +- .../env/entity/vo/HydrobaseWbsVo.java | 39 +++++ .../env/service/ISdHydrobaseService.java | 7 +- .../service/impl/SdHydrobaseServiceImpl.java | 133 +++++++++++++++++- 5 files changed, 193 insertions(+), 3 deletions(-) create mode 100644 backend/src/main/java/com/yfd/platform/env/entity/vo/HydrobaseWbsVo.java diff --git a/backend/src/main/java/com/yfd/platform/config/SwaggerConfig.java b/backend/src/main/java/com/yfd/platform/config/SwaggerConfig.java index 46cfb27..6a096e4 100644 --- a/backend/src/main/java/com/yfd/platform/config/SwaggerConfig.java +++ b/backend/src/main/java/com/yfd/platform/config/SwaggerConfig.java @@ -53,6 +53,14 @@ public class SwaggerConfig { .build(); } + @Bean + public GroupedOpenApi groupEnvApi() { + return GroupedOpenApi.builder() + .group("3全过程-生态环保数据服务") + .packagesToScan("com.yfd.platform.env.controller") + .build(); + } + @Bean public GroupedOpenApi groupEnvWTApi() { return GroupedOpenApi.builder() diff --git a/backend/src/main/java/com/yfd/platform/env/controller/SdHydrobaseController.java b/backend/src/main/java/com/yfd/platform/env/controller/SdHydrobaseController.java index a48ba59..9ef89df 100644 --- a/backend/src/main/java/com/yfd/platform/env/controller/SdHydrobaseController.java +++ b/backend/src/main/java/com/yfd/platform/env/controller/SdHydrobaseController.java @@ -2,6 +2,7 @@ package com.yfd.platform.env.controller; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.yfd.platform.annotation.Log; +import com.yfd.platform.common.DataSourceRequest; import com.yfd.platform.config.ResponseResult; import com.yfd.platform.env.domain.SdHydrobase; import com.yfd.platform.env.service.ISdHydrobaseService; @@ -68,6 +69,12 @@ public class SdHydrobaseController { return ResponseResult.successData(hydrobaseService.selectForDropdown(basename)); } + @PostMapping("/wbsb/GetKendoList") + @Operation(summary = "水电基地列表") + public ResponseResult getWbsbKendoList(@RequestBody DataSourceRequest dataSourceRequest) { + return ResponseResult.successData(hydrobaseService.getWbsbKendoList(dataSourceRequest)); + } + // @Log(module = "基地管理", value = "新增基地") @PostMapping("/add") @Operation(summary = "新增基地") @@ -91,4 +98,4 @@ public class SdHydrobaseController { boolean result = hydrobaseService.deleteHydrobase(baseid); return result ? ResponseResult.success("删除成功") : ResponseResult.error("删除失败"); } -} \ No newline at end of file +} diff --git a/backend/src/main/java/com/yfd/platform/env/entity/vo/HydrobaseWbsVo.java b/backend/src/main/java/com/yfd/platform/env/entity/vo/HydrobaseWbsVo.java new file mode 100644 index 0000000..f08f920 --- /dev/null +++ b/backend/src/main/java/com/yfd/platform/env/entity/vo/HydrobaseWbsVo.java @@ -0,0 +1,39 @@ +package com.yfd.platform.env.entity.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +@Schema(description = "水电基地WBS列表") +public class HydrobaseWbsVo { + + @Schema(description = "WBS编码") + private String wbsCode; + + @Schema(description = "WBS名称") + private String wbsName; + + @Schema(description = "父级WBS编码") + private String pwbsCode; + + @Schema(description = "WBS类型") + private String wbsType; + + @Schema(description = "树级别") + private String treeLevel; + + @Schema(description = "树路径") + private String path; + + @Schema(description = "排序") + private Integer orderIndex; + + @Schema(description = "备注") + private String rmk; + + @Schema(description = "简介") + private String des; + + @Schema(description = "简称") + private String shortname; +} diff --git a/backend/src/main/java/com/yfd/platform/env/service/ISdHydrobaseService.java b/backend/src/main/java/com/yfd/platform/env/service/ISdHydrobaseService.java index 096bee5..9f16b1a 100644 --- a/backend/src/main/java/com/yfd/platform/env/service/ISdHydrobaseService.java +++ b/backend/src/main/java/com/yfd/platform/env/service/ISdHydrobaseService.java @@ -1,8 +1,11 @@ package com.yfd.platform.env.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.yfd.platform.common.DataSourceRequest; +import com.yfd.platform.common.DataSourceResult; import com.baomidou.mybatisplus.extension.service.IService; import com.yfd.platform.env.domain.SdHydrobase; +import com.yfd.platform.env.entity.vo.HydrobaseWbsVo; import java.util.List; import java.util.Set; @@ -34,6 +37,8 @@ public interface ISdHydrobaseService extends IService { */ List selectForDropdown(String basename); + DataSourceResult getWbsbKendoList(DataSourceRequest dataSourceRequest); + Set getUserAuthorizedStationCodes(); /** @@ -50,4 +55,4 @@ public interface ISdHydrobaseService extends IService { * 删除基地 */ boolean deleteHydrobase(String baseid); -} \ No newline at end of file +} diff --git a/backend/src/main/java/com/yfd/platform/env/service/impl/SdHydrobaseServiceImpl.java b/backend/src/main/java/com/yfd/platform/env/service/impl/SdHydrobaseServiceImpl.java index 1a0b460..1cf1ec7 100644 --- a/backend/src/main/java/com/yfd/platform/env/service/impl/SdHydrobaseServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/env/service/impl/SdHydrobaseServiceImpl.java @@ -3,10 +3,13 @@ package com.yfd.platform.env.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.yfd.platform.common.DataSourceRequest; +import com.yfd.platform.common.DataSourceResult; import com.yfd.platform.data.domain.SysUserDataScope; import com.yfd.platform.data.mapper.SysUserDataScopeMapper; import com.yfd.platform.env.domain.SdEngInfoBH; import com.yfd.platform.env.domain.SdHydrobase; +import com.yfd.platform.env.entity.vo.HydrobaseWbsVo; import com.yfd.platform.env.mapper.SdEngInfoBHMapper; import com.yfd.platform.env.mapper.SdHydrobaseMapper; import com.yfd.platform.env.service.ISdHydrobaseService; @@ -16,8 +19,10 @@ import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; import java.util.ArrayList; +import java.util.HashMap; import java.util.HashSet; import java.util.List; +import java.util.Map; import java.util.Set; import java.util.stream.Collectors; @@ -97,6 +102,64 @@ public class SdHydrobaseServiceImpl extends ServiceImpl getWbsbKendoList(DataSourceRequest dataSourceRequest) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + List filters = new ArrayList<>(); + collectFilters(dataSourceRequest == null ? null : dataSourceRequest.getFilter(), filters); + + String wbsType = null; + String treeLevel = null; + for (DataSourceRequest.FilterDescriptor filter : filters) { + if (!"eq".equalsIgnoreCase(filter.getOperator()) || filter.getValue() == null) { + continue; + } + if ("wbsType".equals(filter.getField())) { + wbsType = String.valueOf(filter.getValue()); + } else if ("treeLevel".equals(filter.getField())) { + treeLevel = String.valueOf(filter.getValue()); + } + } + + DataSourceResult result = new DataSourceResult<>(); + result.setAggregates(new HashMap<>()); + + if (StringUtils.hasText(wbsType) && !"PSB".equalsIgnoreCase(wbsType)) { + result.setData(new ArrayList<>()); + result.setTotal(0L); + return result; + } + + if (StringUtils.hasText(treeLevel)) { + try { + wrapper.eq(SdHydrobase::getGrd, Integer.parseInt(treeLevel)); + } catch (NumberFormatException ignored) { + result.setData(new ArrayList<>()); + result.setTotal(0L); + return result; + } + } + + applySort(wrapper, dataSourceRequest == null ? null : dataSourceRequest.getSort()); + + List hydrobaseList; + if (dataSourceRequest != null && dataSourceRequest.getTake() > 0) { + Page page = new Page<>( + (long) (dataSourceRequest.getSkip() / dataSourceRequest.getTake() + 1), + dataSourceRequest.getTake() + ); + Page pageResult = this.page(page, wrapper); + hydrobaseList = pageResult.getRecords(); + result.setTotal(pageResult.getTotal()); + } else { + hydrobaseList = this.list(wrapper); + result.setTotal(hydrobaseList.size()); + } + + result.setData(hydrobaseList.stream().map(this::toHydrobaseWbsVo).collect(Collectors.toList())); + return result; + } + @Override public Set getUserAuthorizedStationCodes() { String userId = SecurityUtils.getUserId(); @@ -176,4 +239,72 @@ public class SdHydrobaseServiceImpl extends ServiceImpl filters) { + if (root == null) { + return; + } + if (StringUtils.hasText(root.getField())) { + filters.add(root); + return; + } + if (root.getFilters() == null || root.getFilters().isEmpty()) { + return; + } + for (DataSourceRequest.FilterDescriptor filter : root.getFilters()) { + collectFilters(filter, filters); + } + } + + private void applySort(LambdaQueryWrapper wrapper, List sortList) { + boolean hasSort = false; + if (sortList != null) { + for (DataSourceRequest.SortDescriptor sortDescriptor : sortList) { + if (sortDescriptor == null || !StringUtils.hasText(sortDescriptor.getField())) { + continue; + } + boolean asc = !"desc".equalsIgnoreCase(sortDescriptor.getDir()); + if ("orderIndex".equals(sortDescriptor.getField())) { + if (asc) { + wrapper.orderByAsc(SdHydrobase::getOrderIndex); + } else { + wrapper.orderByDesc(SdHydrobase::getOrderIndex); + } + hasSort = true; + } else if ("wbsCode".equals(sortDescriptor.getField())) { + if (asc) { + wrapper.orderByAsc(SdHydrobase::getBaseid); + } else { + wrapper.orderByDesc(SdHydrobase::getBaseid); + } + hasSort = true; + } else if ("wbsName".equals(sortDescriptor.getField())) { + if (asc) { + wrapper.orderByAsc(SdHydrobase::getBasename); + } else { + wrapper.orderByDesc(SdHydrobase::getBasename); + } + hasSort = true; + } + } + } + if (!hasSort) { + wrapper.orderByAsc(SdHydrobase::getOrderIndex); + } + } + + private HydrobaseWbsVo toHydrobaseWbsVo(SdHydrobase hydrobase) { + HydrobaseWbsVo vo = new HydrobaseWbsVo(); + vo.setWbsCode(hydrobase.getBaseid()); + vo.setWbsName(hydrobase.getBasename()); + vo.setPwbsCode(hydrobase.getPbaseid()); + vo.setWbsType("PSB"); + vo.setTreeLevel(hydrobase.getGrd() == null ? null : String.valueOf(hydrobase.getGrd())); + vo.setPath(hydrobase.getPath()); + vo.setOrderIndex(hydrobase.getOrderIndex()); + vo.setRmk(hydrobase.getRmk()); + vo.setDes(hydrobase.getDes()); + vo.setShortname(hydrobase.getShortname()); + return vo; + } +}