feat: 获取已配置电站及流域树形数据
This commit is contained in:
parent
e18ec36653
commit
282c2ccdd0
@ -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
|
||||
public GroupedOpenApi groupLygkApi() {
|
||||
return GroupedOpenApi.builder()
|
||||
|
||||
@ -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')")
|
||||
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 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")
|
||||
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 " +
|
||||
"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 " +
|
||||
"GROUP BY t1.ID, RULE_NAME, RULE_CODE, lvl")
|
||||
List<WarnRuleVo> getRuleListByStcd(@Param("stcd") String stcd, @Param("ruleType") String ruleType);
|
||||
|
||||
@ -3,6 +3,7 @@ package com.yfd.platform.qgc_base.service;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.yfd.platform.common.DataSourceRequest;
|
||||
import com.yfd.platform.qgc_base.domain.MsPsbmodulelbB;
|
||||
import com.yfd.platform.qgc_sys.psbmodulelbb.vo.WbsBPpVo;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@ -30,4 +31,9 @@ public interface IMsPsbmodulelbBService extends IService<MsPsbmodulelbB> {
|
||||
* 逻辑删除
|
||||
*/
|
||||
boolean deleteData(String id);
|
||||
|
||||
/**
|
||||
* 获取已配置电站及流域树形数据
|
||||
*/
|
||||
List<WbsBPpVo> getTreeConfiguredps(DataSourceRequest dataSourceRequest);
|
||||
}
|
||||
|
||||
@ -9,10 +9,12 @@ import com.fasterxml.jackson.core.type.TypeReference;
|
||||
import com.fasterxml.jackson.databind.DeserializationFeature;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
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.mapper.*;
|
||||
import com.yfd.platform.qgc_base.service.IMsOperationLogService;
|
||||
import com.yfd.platform.qgc_base.service.IMsPsbmodulelbBService;
|
||||
import com.yfd.platform.qgc_sys.psbmodulelbb.vo.WbsBPpVo;
|
||||
import com.yfd.platform.utils.SecurityUtils;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
@ -46,6 +48,9 @@ public class MsPsbmodulelbBServiceImpl extends ServiceImpl<MsPsbmodulelbBMapper,
|
||||
@Resource
|
||||
private IMsOperationLogService msOperationLogService;
|
||||
|
||||
@Resource
|
||||
private MicroservicDynamicSQLMapper microservicDynamicSQLMapper;
|
||||
|
||||
@Override
|
||||
public List<MsPsbmodulelbB> queryPageList(DataSourceRequest request) {
|
||||
String templateId = getFilterFieldValue(request, "templateId");
|
||||
@ -210,6 +215,66 @@ public class MsPsbmodulelbBServiceImpl extends ServiceImpl<MsPsbmodulelbBMapper,
|
||||
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_ID,HBRVCD_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;
|
||||
}
|
||||
|
||||
// ==================== 私有辅助方法 ====================
|
||||
|
||||
/**
|
||||
|
||||
@ -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.mapper.MsPplayoutBMapper;
|
||||
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.tags.Tag;
|
||||
import jakarta.annotation.Resource;
|
||||
@ -88,9 +89,9 @@ public class MsPsbmodulelbBController {
|
||||
}
|
||||
}
|
||||
|
||||
@DeleteMapping("/{id}")
|
||||
@PostMapping("/delete")
|
||||
@Operation(summary = "逻辑删除电站与布局组件配置")
|
||||
public ResponseResult delete(@PathVariable("id") String id) {
|
||||
public ResponseResult delete(@RequestParam String id) {
|
||||
if (StringUtils.isBlank(id)) {
|
||||
return ResponseResult.error("id 不能为空");
|
||||
}
|
||||
@ -101,4 +102,11 @@ public class MsPsbmodulelbBController {
|
||||
return ResponseResult.error("删除失败,记录不存在");
|
||||
}
|
||||
}
|
||||
|
||||
@PostMapping("/getTreeConfiguredps")
|
||||
@Operation(summary = "获取已配置电站及流域树形数据")
|
||||
public ResponseResult getTreeConfiguredps(@RequestBody DataSourceRequest dataSourceRequest) {
|
||||
List<WbsBPpVo> list = msPsbmodulelbBService.getTreeConfiguredps(dataSourceRequest);
|
||||
return ResponseResult.successData(list);
|
||||
}
|
||||
}
|
||||
|
||||
@ -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;
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user