feat: 获取已配置电站及流域树形数据

This commit is contained in:
tangwei 2026-07-24 09:00:34 +08:00
parent e18ec36653
commit 282c2ccdd0
6 changed files with 140 additions and 4 deletions

View File

@ -274,6 +274,16 @@ public class SwaggerConfig {
} }
@Bean
public GroupedOpenApi groupPsbmodulelbbApi() {
return GroupedOpenApi.builder()
.group("5.6 电站与布局组件配置管理")
.packagesToScan("com.yfd.platform.qgc_sys.psbmodulelbb.controller")
.build();
}
@Bean @Bean
public GroupedOpenApi groupLygkApi() { public GroupedOpenApi groupLygkApi() {
return GroupedOpenApi.builder() return GroupedOpenApi.builder()

View File

@ -16,15 +16,29 @@ public interface MsWarnRuleBMapper extends BaseMapper<MsWarnRuleB> {
@Update("UPDATE MS_WARN_RULE_B SET IS_SHOW = #{isShow} WHERE RULE_CODE IN ('common','custom')") @Update("UPDATE MS_WARN_RULE_B SET IS_SHOW = #{isShow} WHERE RULE_CODE IN ('common','custom')")
void updateIsShow(@Param("isShow") Integer isShow); void updateIsShow(@Param("isShow") Integer isShow);
// @Select("SELECT RULE_NAME AS ruleName FROM (" +
// "SELECT RULE_NAME FROM MS_WARN_RULE_B " +
// "WHERE RULE_CODE = 'custom' AND STCD = #{stcd} AND IS_DELETED = 0 AND RECORD_TIME IS NOT NULL " +
// "ORDER BY RECORD_TIME DESC) WHERE ROWNUM = 1")
// String getCustomRuleNameByStcd(@Param("stcd") String stcd);
@Select("SELECT RULE_NAME AS ruleName FROM (" + @Select("SELECT RULE_NAME AS ruleName FROM (" +
"SELECT RULE_NAME FROM MS_WARN_RULE_B " + "SELECT RULE_NAME FROM MS_WARN_RULE_B " +
"WHERE RULE_CODE = 'custom' AND STCD = #{stcd} AND IS_DELETED = 0 AND RECORD_TIME IS NOT NULL " + "WHERE 1=1 AND STCD = #{stcd} AND IS_DELETED = 0 AND RECORD_TIME IS NOT NULL " +
"ORDER BY RECORD_TIME DESC) WHERE ROWNUM = 1") "ORDER BY RECORD_TIME DESC) WHERE ROWNUM = 1")
String getCustomRuleNameByStcd(@Param("stcd") String stcd); String getCustomRuleNameByStcd(@Param("stcd") String stcd);
// @Select("SELECT t1.ID, RULE_NAME AS ruleName, RULE_CODE AS ruleCode, t2.LVL AS lvl " +
// "FROM MS_WARN_RULE_B t1 INNER JOIN MS_WARN_RULE_DETAIL_B t2 ON t1.ID = t2.RULE_ID " +
// "WHERE (t1.RULE_CODE = 'common' OR (t1.RULE_CODE = 'custom' AND t1.STCD = #{stcd})) " +
// "AND t1.RULE_TYPE = #{ruleType} AND t1.IS_DELETED = 0 AND t2.IS_DELETED = 0 " +
// "GROUP BY t1.ID, RULE_NAME, RULE_CODE, lvl")
// List<WarnRuleVo> getRuleListByStcd(@Param("stcd") String stcd, @Param("ruleType") String ruleType);
@Select("SELECT t1.ID, RULE_NAME AS ruleName, RULE_CODE AS ruleCode, t2.LVL AS lvl " + @Select("SELECT t1.ID, RULE_NAME AS ruleName, RULE_CODE AS ruleCode, t2.LVL AS lvl " +
"FROM MS_WARN_RULE_B t1 INNER JOIN MS_WARN_RULE_DETAIL_B t2 ON t1.ID = t2.RULE_ID " + "FROM MS_WARN_RULE_B t1 INNER JOIN MS_WARN_RULE_DETAIL_B t2 ON t1.ID = t2.RULE_ID " +
"WHERE (t1.RULE_CODE = 'common' OR (t1.RULE_CODE = 'custom' AND t1.STCD = #{stcd})) " + "WHERE 1=1 AND t1.STCD = #{stcd} " +
"AND t1.RULE_TYPE = #{ruleType} AND t1.IS_DELETED = 0 AND t2.IS_DELETED = 0 " + "AND t1.RULE_TYPE = #{ruleType} AND t1.IS_DELETED = 0 AND t2.IS_DELETED = 0 " +
"GROUP BY t1.ID, RULE_NAME, RULE_CODE, lvl") "GROUP BY t1.ID, RULE_NAME, RULE_CODE, lvl")
List<WarnRuleVo> getRuleListByStcd(@Param("stcd") String stcd, @Param("ruleType") String ruleType); List<WarnRuleVo> getRuleListByStcd(@Param("stcd") String stcd, @Param("ruleType") String ruleType);

View File

@ -3,6 +3,7 @@ package com.yfd.platform.qgc_base.service;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.yfd.platform.common.DataSourceRequest; import com.yfd.platform.common.DataSourceRequest;
import com.yfd.platform.qgc_base.domain.MsPsbmodulelbB; import com.yfd.platform.qgc_base.domain.MsPsbmodulelbB;
import com.yfd.platform.qgc_sys.psbmodulelbb.vo.WbsBPpVo;
import java.util.List; import java.util.List;
@ -30,4 +31,9 @@ public interface IMsPsbmodulelbBService extends IService<MsPsbmodulelbB> {
* 逻辑删除 * 逻辑删除
*/ */
boolean deleteData(String id); boolean deleteData(String id);
/**
* 获取已配置电站及流域树形数据
*/
List<WbsBPpVo> getTreeConfiguredps(DataSourceRequest dataSourceRequest);
} }

View File

@ -9,10 +9,12 @@ import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import com.yfd.platform.common.DataSourceRequest; import com.yfd.platform.common.DataSourceRequest;
import com.yfd.platform.common.MicroservicDynamicSQLMapper;
import com.yfd.platform.qgc_base.domain.*; import com.yfd.platform.qgc_base.domain.*;
import com.yfd.platform.qgc_base.mapper.*; import com.yfd.platform.qgc_base.mapper.*;
import com.yfd.platform.qgc_base.service.IMsOperationLogService; import com.yfd.platform.qgc_base.service.IMsOperationLogService;
import com.yfd.platform.qgc_base.service.IMsPsbmodulelbBService; import com.yfd.platform.qgc_base.service.IMsPsbmodulelbBService;
import com.yfd.platform.qgc_sys.psbmodulelbb.vo.WbsBPpVo;
import com.yfd.platform.utils.SecurityUtils; import com.yfd.platform.utils.SecurityUtils;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
@ -46,6 +48,9 @@ public class MsPsbmodulelbBServiceImpl extends ServiceImpl<MsPsbmodulelbBMapper,
@Resource @Resource
private IMsOperationLogService msOperationLogService; private IMsOperationLogService msOperationLogService;
@Resource
private MicroservicDynamicSQLMapper microservicDynamicSQLMapper;
@Override @Override
public List<MsPsbmodulelbB> queryPageList(DataSourceRequest request) { public List<MsPsbmodulelbB> queryPageList(DataSourceRequest request) {
String templateId = getFilterFieldValue(request, "templateId"); String templateId = getFilterFieldValue(request, "templateId");
@ -210,6 +215,66 @@ public class MsPsbmodulelbBServiceImpl extends ServiceImpl<MsPsbmodulelbBMapper,
return result; return result;
} }
@Override
public List<WbsBPpVo> getTreeConfiguredps(DataSourceRequest dataSourceRequest) {
String wbsCode = getFilterFieldValue(dataSourceRequest, "wbsCode");
// 第一步获取已布局电站IS_LAYOUT=1 且未删除
StringBuilder ppsql = new StringBuilder();
ppsql.append("SELECT DISTINCT STCD FROM MS_PSBMODULELB_B WHERE IS_LAYOUT = 1 AND IS_DELETED = 0");
List<Map<String, Object>> ppList = microservicDynamicSQLMapper.getAllList(ppsql.toString(), null);
List<WbsBPpVo> list = new ArrayList<>();
if (ppList != null && !ppList.isEmpty()) {
StringBuilder stcdBuilder = new StringBuilder();
for (Map<String, Object> pp : ppList) {
stcdBuilder.append("'").append(pp.get("STCD")).append("',");
}
String stcdIn = stcdBuilder.substring(0, stcdBuilder.length() - 1);
// 第二步 SD_ENGINFO_B_H 获取电站及基地信息替代 V_MS_STBPRP_T
// HBRVCD BASE_IDHBRVCD_NAME BASE_NAME
StringBuilder basinSql = new StringBuilder();
basinSql.append("SELECT STCD AS wbsCode, ENNM AS wbsName, LGTD AS lgtd, LTTD AS lttd, ")
.append("CASE WHEN BASE_ID IS NULL THEN 'QT' ELSE BASE_ID END AS rvcd, ")
.append("CASE WHEN BASE_NAME IS NULL THEN '其他' ELSE BASE_NAME END AS rvcdName ")
.append("FROM SD_ENGINFO_B_H WHERE IS_DELETED = 0 AND STCD IN (").append(stcdIn).append(") ");
if (StringUtils.isNotBlank(wbsCode)) {
basinSql.append("AND BASE_ID = '").append(wbsCode).append("' ");
}
basinSql.append("ORDER BY ORDER_INDEX ASC");
List<WbsBPpVo> baseVoList = microservicDynamicSQLMapper.getAllListWithResultType(
basinSql.toString(), null, WbsBPpVo.class);
// 第三步按基地编码BASE_ID分组构建树形结构
Map<String, List<WbsBPpVo>> map = new LinkedHashMap<>();
for (WbsBPpVo vo : baseVoList) {
String rvcd = vo.getRvcd();
if (rvcd == null || map.get(rvcd) == null || map.get(rvcd).isEmpty()) {
List<WbsBPpVo> children = new ArrayList<>();
children.add(vo);
map.put(rvcd, children);
} else {
map.get(rvcd).add(vo);
}
}
for (Map.Entry<String, List<WbsBPpVo>> entry : map.entrySet()) {
WbsBPpVo group = new WbsBPpVo();
group.setWbsCode(entry.getKey());
List<WbsBPpVo> children = entry.getValue();
if (!children.isEmpty()) {
group.setWbsName(children.get(0).getRvcdName());
}
group.setChildren(children);
list.add(group);
}
}
return list;
}
// ==================== 私有辅助方法 ==================== // ==================== 私有辅助方法 ====================
/** /**

View File

@ -7,6 +7,7 @@ import com.yfd.platform.qgc_base.domain.MsPplayoutB;
import com.yfd.platform.qgc_base.domain.MsPsbmodulelbB; import com.yfd.platform.qgc_base.domain.MsPsbmodulelbB;
import com.yfd.platform.qgc_base.mapper.MsPplayoutBMapper; import com.yfd.platform.qgc_base.mapper.MsPplayoutBMapper;
import com.yfd.platform.qgc_base.service.IMsPsbmodulelbBService; import com.yfd.platform.qgc_base.service.IMsPsbmodulelbBService;
import com.yfd.platform.qgc_sys.psbmodulelbb.vo.WbsBPpVo;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
@ -88,9 +89,9 @@ public class MsPsbmodulelbBController {
} }
} }
@DeleteMapping("/{id}") @PostMapping("/delete")
@Operation(summary = "逻辑删除电站与布局组件配置") @Operation(summary = "逻辑删除电站与布局组件配置")
public ResponseResult delete(@PathVariable("id") String id) { public ResponseResult delete(@RequestParam String id) {
if (StringUtils.isBlank(id)) { if (StringUtils.isBlank(id)) {
return ResponseResult.error("id 不能为空"); return ResponseResult.error("id 不能为空");
} }
@ -101,4 +102,11 @@ public class MsPsbmodulelbBController {
return ResponseResult.error("删除失败,记录不存在"); return ResponseResult.error("删除失败,记录不存在");
} }
} }
@PostMapping("/getTreeConfiguredps")
@Operation(summary = "获取已配置电站及流域树形数据")
public ResponseResult getTreeConfiguredps(@RequestBody DataSourceRequest dataSourceRequest) {
List<WbsBPpVo> list = msPsbmodulelbBService.getTreeConfiguredps(dataSourceRequest);
return ResponseResult.successData(list);
}
} }

View File

@ -0,0 +1,33 @@
package com.yfd.platform.qgc_sys.psbmodulelbb.vo;
import lombok.Data;
import java.util.List;
/**
* 流域及电站VO树形结构
*/
@Data
public class WbsBPpVo {
/** 节点编码电站STCD / 基地BASE_ID */
private String wbsCode;
/** 节点名称(电站名称 / 基地名称) */
private String wbsName;
/** 子节点 */
private List<WbsBPpVo> children;
/** 经度 */
private String lgtd;
/** 纬度 */
private String lttd;
/** 基地编码 */
private String rvcd;
/** 基地名称 */
private String rvcdName;
}