冀北地图接口开发

This commit is contained in:
zhuxinyu
2023-05-11 14:53:24 +08:00
parent 0e4bdb62fd
commit 06e0ddf802
9 changed files with 216 additions and 18 deletions

View File

@@ -0,0 +1,42 @@
package com.njcn.device.pms.pojo.dto;
import lombok.Data;
import java.io.Serializable;
import java.util.HashMap;
import java.util.List;
@Data
public class PmsLedgerStaticDTO implements Serializable {
/**
* 监测点统计
*/
private List<PmsSimpleDTO> monitorStatistics;
/**
* 装置统计
*/
private List<PmsSimpleDTO> terminalStatistics;
/**
* 在线率统计
*/
private List<PmsSimpleDTO> OnlineRateStatistics;
/**
* 完整性统计
*/
private List<PmsSimpleDTO> integrityStatistics;
/**
* 根据单位统计监测点数量
*/
private HashMap<String,List<PmsSimpleDTO>> monitorStatisticsByDept;
/**
* 根据单位统计终端数量
*/
private HashMap<String,List<PmsSimpleDTO>> terminalStatisticsByDept;
}

View File

@@ -0,0 +1,27 @@
package com.njcn.device.pms.pojo.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
@Data
public class PmsSimpleDTO implements Serializable {
@ApiModelProperty(name = "name", value = "名称")
private String name;
@ApiModelProperty(name = "value", value = "数值")
private Double[] value;
@ApiModelProperty(name = "value", value = "数值")
private Double doubleValue;
@ApiModelProperty(name = "statistics", value = "数量")
private Integer statistics;
@ApiModelProperty(name = "classification", value = "分类")
private String classification;
private Integer sort;
}

View File

@@ -7,6 +7,7 @@ import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;
import com.njcn.device.pms.pojo.dto.PmsSimpleDTO;
import lombok.*;
/**
@@ -60,6 +61,8 @@ public class SubstationExpend implements Serializable {
*/
private String deptId;
private String deptName;
/**
* 关联台账变电站pq_substation表主键
*/
@@ -72,7 +75,7 @@ public class SubstationExpend implements Serializable {
*/
private String connectType;
private List<SimpleDTO> sites;
private List<PmsSimpleDTO> sites;
// public SubstationExpend(String name, String type, BigDecimal lng, BigDecimal lat, String deptId) {
// this.name = name;

View File

@@ -7,7 +7,9 @@ import com.njcn.common.pojo.enums.response.CommonResponseEnum;
import com.njcn.common.pojo.param.StatisticsBizBaseParam;
import com.njcn.common.pojo.response.HttpResult;
import com.njcn.common.utils.HttpResultUtil;
import com.njcn.device.pms.pojo.dto.PmsLedgerStaticDTO;
import com.njcn.device.pms.pojo.param.PmsBaseParam;
import com.njcn.device.pms.pojo.param.PmsDeviceInfoParam;
import com.njcn.device.pms.pojo.po.SubstationExpend;
import com.njcn.device.pms.service.ISubstationExpendService;
import io.swagger.annotations.Api;
@@ -36,7 +38,7 @@ import java.util.Map;
* @since 2023-05-08
*/
@Slf4j
@Api(tags = "变电站地图信息")
@Api(tags = "冀北变电站地图信息")
@RestController
@RequestMapping("/pms/substationExpend")
@RequiredArgsConstructor
@@ -47,14 +49,24 @@ public class SubstationExpendController extends BaseController {
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/getSubstationExpendInfo")
@ApiOperation("变电站信息")
@ApiImplicitParam(name = "param", value = "变电站信息参数", required = true)
@ApiOperation("冀北变电站地图信息")
@ApiImplicitParam(name = "param", value = "冀北变电站地图信息参数", required = true)
public HttpResult<Map<String, List<SubstationExpend>>> getSubstationExpendInfo(@RequestBody StatisticsBizBaseParam param) {
String methodDescribe = getMethodDescribe("getSubstationExpendInfo");
Map<String, List<SubstationExpend>> result = substationExpendService.getSubstationExpendInfo(param);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/getLedgerStatic")
@ApiOperation("冀北主网监测点台账统计")
@ApiImplicitParam(name = "param", value = "冀北主网监测点台账统计参数", required = true)
public HttpResult<PmsLedgerStaticDTO> getLedgerStatic(@RequestBody PmsDeviceInfoParam param) {
String methodDescribe = getMethodDescribe("getLedgerStatic");
PmsLedgerStaticDTO result = substationExpendService.getLedgerStatistics(param);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);
}
// @OperateInfo(info = LogEnum.BUSINESS_COMMON)
// @PostMapping("/insert")
// @ApiOperation("变电站信息")

View File

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.njcn.device.pms.pojo.dto.PmsMonitorBaseDTO;
import com.njcn.device.pms.pojo.dto.PmsSimpleDTO;
import com.njcn.device.pms.pojo.param.PmsDeviceInfoParam;
import com.njcn.device.pms.pojo.param.TaiZhangParam;
import com.njcn.device.pms.pojo.po.DistributionMonitor;
@@ -67,6 +68,11 @@ public interface DistributionMonitorMapper extends BaseMapper<DistributionMonito
List<DistributionMonitor> distributionMonitorListByCondition(@Param("deptIds")List<String> deptIds, @Param("monitorSort")String monitorSort);
List<PmsSimpleDTO> statisticMonitorWithMonitorSort(@Param("list") List<String> monitorIds);
List<PmsSimpleDTO> statisticTerminal(@Param("list") List<String> terminalIds);
List<PmsSimpleDTO> getOnlineRate(@Param("list") List<String> terminalIds);
List<PmsSimpleDTO> getIntegrity(@Param("list") List<String> terminalIds);
}

View File

@@ -182,7 +182,53 @@ AND EXISTS (
a.Monitor_Id = temp.id
)
</select>
<select id="statisticMonitorWithMonitorSort" resultType="com.njcn.device.pms.pojo.dto.PmsSimpleDTO">
SELECT
COUNT(pdm.Monitor_Id) AS statistics,
pdm.Monitor_Sort AS name
FROM pms_distribution_monitor pdm
WHERE pdm.Monitor_Id IN
<foreach item="item" collection="list" separator="," open="(" close=")">
#{item}
</foreach>
GROUP BY pdm.Monitor_Sort
</select>
<select id="statisticTerminal" resultType="com.njcn.device.pms.pojo.dto.PmsSimpleDTO">
SELECT
COUNT(pdm.Terminal_Id) statistics,
pdm.Monitor_Sort name
FROM pms_distribution_monitor pdm
WHERE pdm.Terminal_Id IN
<foreach item="item" collection="list" separator="," open="(" close=")">
#{item}
</foreach>
GROUP BY pdm.Monitor_Sort
</select>
<select id="getOnlineRate" resultType="com.njcn.device.pms.pojo.dto.PmsSimpleDTO">
SELECT
pdm.Monitor_Sort name,
SUM(rmded.dev_effective_rate) doubleValue
FROM pms_distribution_monitor pdm
LEFT JOIN r_mp_dev_evaluate_detail rmded ON pdm.Terminal_Id = rmded.device_id
WHERE pdm.Terminal_Id IN
<foreach item="item" collection="list" separator="," open="(" close=")">
#{item}
</foreach>
GROUP BY pdm.Monitor_Sort
</select>
<select id="getIntegrity" resultType="com.njcn.device.pms.pojo.dto.PmsSimpleDTO">
SELECT
pdm.Monitor_Sort name,
SUM(romd.data_integrity_rate) doubleValue
FROM pms_distribution_monitor pdm
LEFT JOIN r_operating_monitor_d romd ON pdm.Monitor_Id = romd.measurement_point_id
WHERE pdm.Monitor_Id IN
<foreach item="item" collection="list" separator="," open="(" close=")">
#{item}
</foreach>
GROUP BY pdm.Monitor_Sort
</select>
</mapper>

View File

@@ -5,18 +5,13 @@
<select id="getSubList" resultType="com.njcn.device.pms.pojo.po.SubstationExpend">
SELECT pse.*,
sdd.Name typeName,
psr.Break_site,
psr.connect_type
FROM pms_substation_expend pse
LEFT JOIN sys_dict_data sdd ON pse.Type = sdd.Id
LEFT JOIN pms_substation_relation psr ON psr.Start_Station_Id = pse.Id
WHERE pse.Dept_Id IN
<foreach item="item" collection="list" open="(" separator="," close=")">
#{item}
</foreach>
<if test="param.getType!=null and param.getType!=''">
AND sdd.Id = #{param.getType}
</if>
</select>
</mapper>

View File

@@ -3,6 +3,8 @@ package com.njcn.device.pms.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.njcn.common.pojo.param.StatisticsBizBaseParam;
import com.njcn.device.pms.pojo.dto.PmsLedgerStaticDTO;
import com.njcn.device.pms.pojo.param.PmsDeviceInfoParam;
import com.njcn.device.pms.pojo.po.SubstationExpend;
import java.util.List;
@@ -22,4 +24,5 @@ public interface ISubstationExpendService extends IService<SubstationExpend> {
Map<String, List<SubstationExpend>> getSubstationExpendInfo(StatisticsBizBaseParam param);
PmsLedgerStaticDTO getLedgerStatistics(PmsDeviceInfoParam param);
}

View File

@@ -4,10 +4,14 @@ package com.njcn.device.pms.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.CollectionUtil;
import com.alibaba.fastjson.JSON;
import com.njcn.common.pojo.dto.SimpleDTO;
import com.njcn.common.pojo.param.StatisticsBizBaseParam;
import com.njcn.device.pms.api.PmsGeneralDeviceInfoClient;
import com.njcn.device.pms.mapper.SubstationExpendMapper;
import com.njcn.device.pms.pojo.dto.PwPmsMonitorDTO;
import com.njcn.device.pms.mapper.majornetwork.DistributionMonitorMapper;
import com.njcn.device.pms.pojo.dto.PmsGeneralDeviceDTO;
import com.njcn.device.pms.pojo.dto.PmsLedgerStaticDTO;
import com.njcn.device.pms.pojo.dto.PmsSimpleDTO;
import com.njcn.device.pms.pojo.param.PmsDeviceInfoParam;
import com.njcn.device.pms.pojo.po.SubstationExpend;
import com.njcn.device.pms.service.ISubstationExpendService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -15,9 +19,9 @@ import com.njcn.user.api.DeptFeignClient;
import com.njcn.user.pojo.dto.DeptDTO;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;
@@ -39,36 +43,96 @@ public class SubstationExpendServiceImpl extends ServiceImpl<SubstationExpendMap
private final SubstationExpendMapper substationExpendMapper;
private final PmsGeneralDeviceInfoClient pmsGeneralDeviceInfoClient;
private final DistributionMonitorMapper distributionMonitorMapper;
@Override
public Map<String, List<SubstationExpend>> getSubstationExpendInfo(StatisticsBizBaseParam param) {
Map<String, List<SubstationExpend>> map = new HashMap<>();
List<DeptDTO> deptInfos = deptFeignClient.getDeptDescendantIndexes(param.getId(), Stream.of(0, 1).collect(Collectors.toList())).getData();
Map<String, List<DeptDTO>> deptMap = deptInfos.stream().collect(Collectors.groupingBy(DeptDTO::getCode));
if (CollectionUtil.isNotEmpty(deptInfos)) {
List<String> list = deptInfos.stream()
.map(DeptDTO::getId)
.map(DeptDTO::getCode)
.collect(Collectors.toList());
// 获取部门所属变电站
List<SubstationExpend> subList=substationExpendMapper.getSubList(list, param);
if (CollUtil.isNotEmpty(subList)) {
subList.forEach (
t -> {
if (t.getDeptId()!=null){
t.setDeptName(deptMap.get(t.getDeptId()).get(0).getName());
}
if (t.getBreakSite()!=null) {
List<SimpleDTO> simpleDTOS = new ArrayList<>();
List<PmsSimpleDTO> simpleDTOS = new ArrayList<>();
String[][] arr = JSON.parseObject(t.getBreakSite(), String[][].class);
List<String[]> sites = Arrays.asList(arr);
for (String[] site : sites) {
SimpleDTO simpleDTO = new SimpleDTO();
PmsSimpleDTO simpleDTO = new PmsSimpleDTO();
simpleDTO.setName("");
simpleDTO.setValue(Arrays.toString(site));
Double[] ds=new Double[site.length];
for(int i=0;i<site.length;i++){
ds[i]=Double.valueOf(site[i]);
}
simpleDTO.setValue(ds);
simpleDTOS.add(simpleDTO);
}
t.setSites(simpleDTOS);
}
}
);
map = subList.stream().collect(Collectors.groupingBy(SubstationExpend::getDeptId));
map = subList.stream().collect(Collectors.groupingBy(SubstationExpend::getDeptName));
}
}
return map;
}
@Override
public PmsLedgerStaticDTO getLedgerStatistics(PmsDeviceInfoParam param) {
PmsLedgerStaticDTO ledgerStaticDTO = new PmsLedgerStaticDTO();
List<PmsGeneralDeviceDTO> generalDeviceDTOS = pmsGeneralDeviceInfoClient.getPwPmsDeviceInfoWithOrgId(param).getData();
// 统计监测点
List<String> monitorIds = new ArrayList<>();
generalDeviceDTOS.stream().forEach(e -> monitorIds.addAll(e.getMonitorIdList()));
List<PmsSimpleDTO> monitorStatistic = distributionMonitorMapper.statisticMonitorWithMonitorSort(monitorIds);
ledgerStaticDTO.setMonitorStatistics(monitorStatistic);
// 根据单位统计监测点数量
HashMap<String,List<PmsSimpleDTO>> monitorMap = new HashMap<>();
for (PmsGeneralDeviceDTO generalDeviceDTO : generalDeviceDTOS) {
List<PmsSimpleDTO> monitors = new ArrayList<>();
if (CollectionUtil.isNotEmpty(generalDeviceDTO.getMonitorIdList())) {
monitors = distributionMonitorMapper.statisticMonitorWithMonitorSort(generalDeviceDTO.getMonitorIdList());
}
monitorMap.put(generalDeviceDTO.getName(),monitors);
}
ledgerStaticDTO.setMonitorStatisticsByDept(monitorMap);
// 统计终端
List<String> terminalIds = new ArrayList<>();
generalDeviceDTOS.stream().forEach(e -> terminalIds.addAll(e.getTerminalIdList()));
List<PmsSimpleDTO> terminalNumStatistic = distributionMonitorMapper.statisticTerminal(terminalIds);
ledgerStaticDTO.setTerminalStatistics(terminalNumStatistic);
// 根据单位统计终端数量
HashMap<String,List<PmsSimpleDTO>> terminalsMap = new HashMap<>();
for (PmsGeneralDeviceDTO generalDeviceDTO : generalDeviceDTOS) {
List<PmsSimpleDTO> terminals = distributionMonitorMapper.statisticTerminal(terminalIds);
terminalsMap.put(generalDeviceDTO.getName(),terminals);
}
ledgerStaticDTO.setTerminalStatisticsByDept(terminalsMap);
// 统计在线率
List<PmsSimpleDTO> onlineRateStatistic = distributionMonitorMapper.getOnlineRate(terminalIds);
double sum = onlineRateStatistic.stream().mapToDouble(PmsSimpleDTO::getDoubleValue).sum();
onlineRateStatistic.forEach(dto -> dto.setDoubleValue(new BigDecimal(dto.getDoubleValue() * 100 / sum).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue()));
ledgerStaticDTO.setTerminalStatistics(onlineRateStatistic);
// 完整性
List<PmsSimpleDTO> integrityStatistic = distributionMonitorMapper.getIntegrity(terminalIds);
double s = integrityStatistic.stream().mapToDouble(PmsSimpleDTO::getDoubleValue).sum();
integrityStatistic.forEach(dto -> dto.setDoubleValue(new BigDecimal(dto.getDoubleValue() * 100 / s).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue()));
return ledgerStaticDTO;
}
}