From aaaa6ad735ecab1188101df6e01730fd234d362c Mon Sep 17 00:00:00 2001 From: tangwei Date: Wed, 10 Jun 2026 10:29:36 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E6=A4=8D=E7=89=A9=E5=9B=AD=E5=8D=95?= =?UTF-8?q?=E7=AB=99=E5=9F=BA=E7=A1=80=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/VpConstructionController.java | 8 +++ .../qgc_env/vap/entity/vo/VpStBaseInfoVo.java | 51 +++++++++++++++++++ .../vap/entity/vo/VpStInfoResultVo.java | 26 ++++++++++ .../vap/service/VpConstructionService.java | 3 ++ .../impl/VpConstructionServiceImpl.java | 49 ++++++++++++++++++ 5 files changed, 137 insertions(+) create mode 100644 backend/src/main/java/com/yfd/platform/qgc_env/vap/entity/vo/VpStBaseInfoVo.java create mode 100644 backend/src/main/java/com/yfd/platform/qgc_env/vap/entity/vo/VpStInfoResultVo.java diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/vap/controller/VpConstructionController.java b/backend/src/main/java/com/yfd/platform/qgc_env/vap/controller/VpConstructionController.java index 70eb01fc..8074c214 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_env/vap/controller/VpConstructionController.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/vap/controller/VpConstructionController.java @@ -7,8 +7,10 @@ import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.annotation.Resource; import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -32,4 +34,10 @@ public class VpConstructionController { public ResponseResult getVmsstbprptList(@RequestBody DataSourceRequest dataSourceRequest) { return ResponseResult.successData(vpConstructionService.processVmsstbprptList(dataSourceRequest)); } + + @GetMapping("/msstbprpt/getStInfoByStcd") + @Operation(summary = "植物园单站基础信息") + public ResponseResult getStInfoByStcd(@RequestParam String stcd) { + return ResponseResult.successData(vpConstructionService.getStInfoByStcd(stcd)); + } } diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/vap/entity/vo/VpStBaseInfoVo.java b/backend/src/main/java/com/yfd/platform/qgc_env/vap/entity/vo/VpStBaseInfoVo.java new file mode 100644 index 00000000..3b212f66 --- /dev/null +++ b/backend/src/main/java/com/yfd/platform/qgc_env/vap/entity/vo/VpStBaseInfoVo.java @@ -0,0 +1,51 @@ +package com.yfd.platform.qgc_env.vap.entity.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +@Schema(description = "植物园单站基础信息") +public class VpStBaseInfoVo { + + @Schema(description = "站点编码") + private String stcd; + + @Schema(description = "站点名称") + private String stnm; + + @Schema(description = "站类编码") + private String sttpCode; + + @Schema(description = "站类名称") + private String sttpName; + + @Schema(description = "站类全路径") + private String sttpFullPath; + + @Schema(description = "站类层级") + private Integer sttpTreeLevel; + + @Schema(description = "关联站点编码") + private String stCode; + + @Schema(description = "关联站点名称") + private String stName; + + @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; +} diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/vap/entity/vo/VpStInfoResultVo.java b/backend/src/main/java/com/yfd/platform/qgc_env/vap/entity/vo/VpStInfoResultVo.java new file mode 100644 index 00000000..b7e2a0f8 --- /dev/null +++ b/backend/src/main/java/com/yfd/platform/qgc_env/vap/entity/vo/VpStInfoResultVo.java @@ -0,0 +1,26 @@ +package com.yfd.platform.qgc_env.vap.entity.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.ArrayList; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + +@Data +@Schema(description = "植物园站点详情返回") +public class VpStInfoResultVo { + + @Schema(description = "主信息兼容对象") + private Map msStbprpT = new LinkedHashMap<>(); + + @Schema(description = "测值列表") + private List stcdValVoList = new ArrayList<>(); + + @Schema(description = "关联列表") + private List relList = new ArrayList<>(); + + @Schema(description = "站点基础信息") + private VpStBaseInfoVo stBaseInfo; +} diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/vap/service/VpConstructionService.java b/backend/src/main/java/com/yfd/platform/qgc_env/vap/service/VpConstructionService.java index e2c99950..f14e2723 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_env/vap/service/VpConstructionService.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/vap/service/VpConstructionService.java @@ -2,10 +2,13 @@ package com.yfd.platform.qgc_env.vap.service; import com.yfd.platform.common.DataSourceRequest; import com.yfd.platform.common.DataSourceResult; +import com.yfd.platform.qgc_env.vap.entity.vo.VpStInfoResultVo; public interface VpConstructionService { DataSourceResult processKendoList(DataSourceRequest dataSourceRequest); DataSourceResult processVmsstbprptList(DataSourceRequest dataSourceRequest); + + VpStInfoResultVo getStInfoByStcd(String stcd); } diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/vap/service/impl/VpConstructionServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_env/vap/service/impl/VpConstructionServiceImpl.java index 84a1995d..4895d671 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_env/vap/service/impl/VpConstructionServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/vap/service/impl/VpConstructionServiceImpl.java @@ -10,6 +10,8 @@ import com.yfd.platform.common.GroupingInfo; import com.yfd.platform.common.MicroservicDynamicSQLMapper; import com.yfd.platform.common.PageInfo; import com.yfd.platform.qgc_env.vap.entity.vo.VpConstructionSituationVo; +import com.yfd.platform.qgc_env.vap.entity.vo.VpStBaseInfoVo; +import com.yfd.platform.qgc_env.vap.entity.vo.VpStInfoResultVo; import com.yfd.platform.qgc_env.vap.entity.vo.VpVmsstbprptVo; import com.yfd.platform.qgc_env.vap.service.VpConstructionService; import com.yfd.platform.utils.KendoUtil; @@ -128,6 +130,26 @@ public class VpConstructionServiceImpl implements VpConstructionService { return result; } + @Override + public VpStInfoResultVo getStInfoByStcd(String stcd) { + VpStInfoResultVo result = new VpStInfoResultVo(); + if (StrUtil.isBlank(stcd)) { + return result; + } + Map paramMap = new HashMap<>(); + paramMap.put("stcd", stcd); + List list = microservicDynamicSQLMapper.pageAllListWithResultType( + null, + buildStInfoByStcdSql(), + paramMap, + VpStBaseInfoVo.class + ); + if (!list.isEmpty()) { + result.setStBaseInfo(list.get(0)); + } + return result; + } + private String buildBaseSql(boolean botanicalGarden, boolean nationwide) { String baseIdExpr = botanicalGarden ? "CASE WHEN vp.BASE_ID IS NULL THEN 'null' ELSE vp.BASE_ID END" @@ -479,6 +501,33 @@ public class VpConstructionServiceImpl implements VpConstructionService { "WHERE NVL(vp.IS_DELETED, 0) = 0"; } + private String buildStInfoByStcdSql() { + return "SELECT " + + "vp.STCD AS stcd, " + + "vp.STNM AS stnm, " + + "vp.STTP AS sttpCode, " + + "sttp.STTP_NAME AS sttpName, " + + "sttp.FULL_PATH AS sttpFullPath, " + + "sttp.TREE_LEVEL AS sttpTreeLevel, " + + "CAST(NULL AS VARCHAR2(100)) AS stCode, " + + "CAST(NULL AS VARCHAR2(200)) AS stName, " + + "vp.BASE_ID AS baseId, " + + "hb.BASENAME AS baseName, " + + "vp.HBRVCD AS hbrvcd, " + + "hbrv.HBRVNM AS hbrvcdName, " + + "eng.REACHCD AS rvcd, " + + "rv.RVNM AS rvcdName " + + "FROM SD_VP_B_H vp " + + "LEFT JOIN SD_HYDROBASE hb ON hb.BASEID = vp.BASE_ID AND NVL(hb.IS_DELETED, 0) = 0 " + + "LEFT JOIN SD_HBRV_DIC hbrv ON hbrv.HBRVCD = vp.HBRVCD AND hbrv.BASEID = vp.BASE_ID " + + " AND NVL(hbrv.IS_DELETED, 0) = 0 AND NVL(hbrv.ENABLED, 1) = 1 " + + "LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = vp.RSTCD AND NVL(eng.IS_DELETED, 0) = 0 " + + "LEFT JOIN SD_RVCD_DIC rv ON rv.RVCD = eng.REACHCD " + + "LEFT JOIN SD_STTP_B sttp ON sttp.STTP_CODE = vp.STTP " + + " AND NVL(sttp.IS_DELETED, 0) = 0 AND NVL(sttp.ENABLE, 1) = 1 " + + "WHERE NVL(vp.IS_DELETED, 0) = 0 AND vp.STCD = #{map.stcd}"; + } + private String buildVmsstbprptFilterCondition(DataSourceRequest.FilterDescriptor filter, Map paramMap, int[] indexHolder) {