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
|
@Bean
|
||||||
public GroupedOpenApi groupLygkApi() {
|
public GroupedOpenApi groupLygkApi() {
|
||||||
return GroupedOpenApi.builder()
|
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')")
|
@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);
|
||||||
|
|||||||
@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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_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.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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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