冀北地图接口开发
This commit is contained in:
@@ -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;
|
||||
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
@@ -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("变电站信息")
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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>
|
||||
|
||||
|
||||
@@ -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>
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user