1.终端和主配网监测点,国网下穿接口编写
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
package com.njcn.device.pms.pojo.param.gw;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author wr
|
||||
* @description
|
||||
* @date 2024/5/16 9:57
|
||||
*/
|
||||
@Data
|
||||
public class GwStatisticalParam {
|
||||
|
||||
@ApiModelProperty("统计日期-结束")
|
||||
private String endDate;
|
||||
|
||||
@ApiModelProperty("导出标识:page-导出本页,all-导出全部")
|
||||
private String exportFlag;
|
||||
|
||||
@ApiModelProperty("01-在运,02-在线")
|
||||
private String flag;
|
||||
|
||||
@ApiModelProperty("组织结构id")
|
||||
private String nodeId;
|
||||
|
||||
@ApiModelProperty("组织结构等级")
|
||||
private String nodeLevel;
|
||||
|
||||
@ApiModelProperty("单位id")
|
||||
private String orgId;
|
||||
|
||||
@ApiModelProperty("单位名称")
|
||||
private String orgLevel;
|
||||
|
||||
@ApiModelProperty("统计日期-开始")
|
||||
private String startDate;
|
||||
|
||||
@ApiModelProperty("统计日期")
|
||||
private String statDate;
|
||||
|
||||
@ApiModelProperty("数据类型,01-年数据,02-月数据,03-日数据")
|
||||
private String statType;
|
||||
|
||||
@ApiModelProperty("01-变电站,02-换流站,03-电气化铁路,04-风电场,05-光伏电站,06-冶炼负荷,07-重要敏感用户,08-其他")
|
||||
private String stationType;
|
||||
|
||||
@ApiModelProperty("页码")
|
||||
private Integer pageNum;
|
||||
|
||||
@ApiModelProperty("每页条数")
|
||||
private Integer pageSize;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
package com.njcn.device.pms.pojo.param.gw;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author wr
|
||||
* @description 查询监测终端数据列表入参
|
||||
* @date 2024/5/29 15:56
|
||||
*/
|
||||
@Data
|
||||
public class GwTerminalParam {
|
||||
|
||||
|
||||
@ApiModelProperty("设备状态:10:未投运;20:在运;30:退役;31:现场留用;33:待报废;40:报废;50:再利用;60:备品备件;70:调拨。")
|
||||
private List<String> deployState;
|
||||
|
||||
@ApiModelProperty("设备类型")
|
||||
private String deviceType;
|
||||
|
||||
@ApiModelProperty("页码")
|
||||
private Integer pageNum;
|
||||
|
||||
@ApiModelProperty("每页条数")
|
||||
private Integer pageSize;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,90 @@
|
||||
package com.njcn.device.pms.pojo.vo.gw;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* @author wr
|
||||
* @description
|
||||
* @date 2024/5/29 16:06
|
||||
*/
|
||||
@Data
|
||||
public class Statistical {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
|
||||
@ApiModelProperty("实收数")
|
||||
private String actualCollectNum;
|
||||
|
||||
@ApiModelProperty("监测母线id")
|
||||
private String busId;
|
||||
|
||||
@ApiModelProperty("母线名称")
|
||||
private String busName;
|
||||
|
||||
@ApiModelProperty("所属地市")
|
||||
private String cityId;
|
||||
|
||||
@ApiModelProperty("所属地市名称")
|
||||
private String cityName;
|
||||
|
||||
@ApiModelProperty("数据完整率")
|
||||
private String dataFullRate;
|
||||
|
||||
@ApiModelProperty("应收数")
|
||||
private String expectCollectNum;
|
||||
|
||||
@ApiModelProperty("运维单位")
|
||||
private String maintOrg;
|
||||
|
||||
@ApiModelProperty("运维单位名称")
|
||||
private String maintOrgName;
|
||||
|
||||
@ApiModelProperty("监测点Id")
|
||||
private String monitorId;
|
||||
|
||||
@ApiModelProperty("监测点名称")
|
||||
private String monitorName;
|
||||
|
||||
@ApiModelProperty("监测对象名称")
|
||||
private String monitorObjName;
|
||||
|
||||
@ApiModelProperty("监测对象大类")
|
||||
private String monitorObjPre;
|
||||
|
||||
@ApiModelProperty("监测对象大类名称")
|
||||
private String monitorObjPreName;
|
||||
|
||||
@ApiModelProperty("监测点类别")
|
||||
private String monitorType;
|
||||
|
||||
@ApiModelProperty("监测点类别名称")
|
||||
private String monitorTypeName;
|
||||
|
||||
@ApiModelProperty("在线日期")
|
||||
private String onlineDate;
|
||||
|
||||
@ApiModelProperty("主键")
|
||||
private String psrId;
|
||||
|
||||
@ApiModelProperty("所属电站id")
|
||||
private String stationId;
|
||||
|
||||
@ApiModelProperty("所属电站名称")
|
||||
private String stationName;
|
||||
|
||||
@ApiModelProperty("监测点状态")
|
||||
private String status;
|
||||
|
||||
@ApiModelProperty("监测点状态名称")
|
||||
private String statusName;
|
||||
|
||||
@ApiModelProperty("监测点电压等级")
|
||||
private String voltageLevel;
|
||||
|
||||
@ApiModelProperty("监测点电压等级名称")
|
||||
private String voltageLevelName;
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,57 @@
|
||||
package com.njcn.device.pms.controller.gwPush;
|
||||
|
||||
import com.njcn.common.pojo.annotation.OperateInfo;
|
||||
import com.njcn.common.pojo.enums.common.LogEnum;
|
||||
import com.njcn.device.pms.pojo.param.gw.GwStatisticalParam;
|
||||
import com.njcn.device.pms.pojo.param.gw.GwTerminalParam;
|
||||
import com.njcn.device.pms.pojo.vo.gw.Statistical;
|
||||
import com.njcn.device.pms.service.gwPush.MonitorStatisticsService;
|
||||
import com.njcn.web.pojo.dto.PmsHttpResult;
|
||||
import com.njcn.web.pojo.dto.PmsPage;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiImplicitParam;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
|
||||
/**
|
||||
* @author wr
|
||||
* @description
|
||||
* @date 2024/5/16 9:22
|
||||
*/
|
||||
@Slf4j
|
||||
@RestController
|
||||
@RequestMapping("/basicInfo")
|
||||
@Api(tags = "主配网监测点统计下穿")
|
||||
@RequiredArgsConstructor
|
||||
public class MonitorStatisticalController {
|
||||
|
||||
private final MonitorStatisticsService monitorStatisticsService;
|
||||
|
||||
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
|
||||
@PostMapping("/Equipment/getMonitorTerminalData")
|
||||
@ApiOperation("查询监测终端数据列表")
|
||||
@ApiImplicitParam(name = "param", value = "实体参数", required = true)
|
||||
public PmsHttpResult<PmsPage<Map<String, String>>> getMonitorTerminalData(@RequestBody GwTerminalParam param) {
|
||||
PmsPage<Map<String, String>> PmsPage = monitorStatisticsService.getMonitorTerminalData(param);
|
||||
return new PmsHttpResult<>(0, PmsPage);
|
||||
}
|
||||
|
||||
|
||||
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
|
||||
@PostMapping("/jcd/getMonitorStatisticalDetailList")
|
||||
@ApiOperation("查询主配网监测点统计")
|
||||
@ApiImplicitParam(name = "param", value = "实体参数", required = true)
|
||||
public PmsHttpResult<PmsPage<Statistical>> getMonitorStatisticalDetailList(@RequestBody GwStatisticalParam param) {
|
||||
PmsPage<Statistical> PmsPage = monitorStatisticsService.getMonitorStatisticalDetailList(param);;
|
||||
return new PmsHttpResult<>(0, PmsPage);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -4,6 +4,7 @@ package com.njcn.device.pms.mapper.majornetwork;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.njcn.device.pms.pojo.dto.MonitorIntegrityDataDTO;
|
||||
import com.njcn.device.pms.pojo.param.DataQualityDetailsParam;
|
||||
import com.njcn.device.pq.pojo.param.LineBaseQueryParam;
|
||||
import com.njcn.device.pq.pojo.param.OnlineRateParam;
|
||||
import com.njcn.device.pq.pojo.po.LineDataIntegrity;
|
||||
@@ -26,4 +27,18 @@ public interface RStatIntegrityDMapper extends BaseMapper<RStatIntegrityD> {
|
||||
|
||||
Page<RStatIntegrityD> getMonitorIntegrityData (@Param("page") Page<RStatIntegrityD> page,@Param("monitorIntegrityDataDTO")MonitorIntegrityDataDTO monitorIntegrityDataDTO,@Param("ids")List<String> ids);
|
||||
|
||||
|
||||
/**
|
||||
* @Description: 实收数大于0的,监测点数据完整率信息
|
||||
* @param monitorIds 监测点id
|
||||
* @param startTime 开始时间
|
||||
* @param endTime 结束时间
|
||||
* @param type 是否判断实收数大于0
|
||||
* @Date: 2024/5/30 9:48
|
||||
*/
|
||||
List<RStatIntegrityVO> getMonitorRealTimeBeZero(@Param("monitorIds") List<String> monitorIds,
|
||||
@Param("startTime") String startTime,
|
||||
@Param("endTime") String endTime,
|
||||
@Param("type") Integer type
|
||||
);
|
||||
}
|
||||
|
||||
@@ -21,5 +21,37 @@
|
||||
</if>
|
||||
|
||||
</select>
|
||||
<select id="getMonitorRealTimeBeZero" resultType="com.njcn.device.pq.pojo.vo.RStatIntegrityVO">
|
||||
SELECT
|
||||
line_index lineIndex,
|
||||
CONVERT (
|
||||
SUM( real_time )* 100 / SUM( due_time ),
|
||||
DECIMAL ( 15, 2 )) AS integrityRate,
|
||||
sum( real_time ) `realTime`,
|
||||
sum( due_time ) dueTime
|
||||
FROM
|
||||
r_stat_integrity_d
|
||||
<where>
|
||||
<if test="monitorIds.size > 0">
|
||||
AND line_index IN
|
||||
<foreach collection='monitorIds' item='item' index="index" open='(' separator=',' close=')'>
|
||||
#{item}
|
||||
</foreach>
|
||||
</if>
|
||||
<if test="startTime != null and startTime !=''">
|
||||
AND time_id >= #{startTime}
|
||||
</if>
|
||||
<if test="endTime != null and endTime != ''">
|
||||
AND time_id <= #{endTime}
|
||||
</if>
|
||||
</where>
|
||||
GROUP BY
|
||||
lineIndex
|
||||
<if test="type != null ">
|
||||
HAVING
|
||||
realTime > 0
|
||||
</if>
|
||||
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
|
||||
@@ -1,8 +1,13 @@
|
||||
package com.njcn.device.pms.service.gwPush;
|
||||
|
||||
import com.njcn.device.pms.pojo.param.gw.GwStatisticalParam;
|
||||
import com.njcn.device.pms.pojo.param.gw.GwTerminalParam;
|
||||
import com.njcn.device.pms.pojo.vo.gw.MonitorEnergy;
|
||||
import com.njcn.device.pms.pojo.vo.gw.Statistical;
|
||||
import com.njcn.web.pojo.dto.PmsPage;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 国网台账类上送
|
||||
@@ -22,4 +27,21 @@ public interface MonitorStatisticsService {
|
||||
* @Date: 2024/3/22 9:49
|
||||
*/
|
||||
List<MonitorEnergy> getGwMonitorEnergy(String deptId);
|
||||
|
||||
|
||||
/**
|
||||
* @Description: 查询监测终端数据列表
|
||||
* @param param
|
||||
* @Author: wr
|
||||
* @Date: 2024/5/29 16:22
|
||||
*/
|
||||
PmsPage<Map<String, String>> getMonitorTerminalData(GwTerminalParam param);
|
||||
|
||||
/**
|
||||
* @Description: 查询主配网监测点统计
|
||||
* @param param
|
||||
* @Author: wr
|
||||
* @Date: 2024/5/29 16:32
|
||||
*/
|
||||
PmsPage<Statistical> getMonitorStatisticalDetailList(GwStatisticalParam param);
|
||||
}
|
||||
|
||||
@@ -1,21 +1,31 @@
|
||||
package com.njcn.device.pms.service.gwPush.impl;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.util.NumberUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.njcn.common.pojo.enums.common.DataStateEnum;
|
||||
import com.njcn.device.biz.pojo.dto.DeptGetBase;
|
||||
import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO;
|
||||
import com.njcn.device.biz.pojo.dto.LineDevGetDTO;
|
||||
import com.njcn.device.biz.pojo.param.DeptGetLineParam;
|
||||
import com.njcn.device.pms.mapper.majornetwork.MonitorMapper;
|
||||
import com.njcn.device.pms.pojo.po.Monitor;
|
||||
import com.njcn.device.pms.pojo.po.PmsNewEnergy;
|
||||
import com.njcn.device.pms.mapper.majornetwork.PmsGeneratrixWireMapper;
|
||||
import com.njcn.device.pms.mapper.majornetwork.RStatIntegrityDMapper;
|
||||
import com.njcn.device.pms.mapper.majornetwork.StatationStatMapper;
|
||||
import com.njcn.device.pms.pojo.param.gw.GwStatisticalParam;
|
||||
import com.njcn.device.pms.pojo.param.gw.GwTerminalParam;
|
||||
import com.njcn.device.pms.pojo.po.*;
|
||||
import com.njcn.device.pms.pojo.vo.gw.MonitorEnergy;
|
||||
import com.njcn.device.pms.pojo.vo.gw.Statistical;
|
||||
import com.njcn.device.pms.service.gwPush.IPmsNewEnergyService;
|
||||
import com.njcn.device.pms.service.gwPush.MonitorStatisticsService;
|
||||
import com.njcn.device.pms.service.ledgerManger.CommTerminalService;
|
||||
import com.njcn.device.pms.service.majornetwork.ITerminalService;
|
||||
import com.njcn.device.pms.service.majornetwork.ITractionStationService;
|
||||
import com.njcn.device.pq.pojo.vo.RStatIntegrityVO;
|
||||
import com.njcn.system.api.DicDataFeignClient;
|
||||
import com.njcn.system.api.DictTreeFeignClient;
|
||||
import com.njcn.system.enums.DicDataTypeEnum;
|
||||
@@ -25,10 +35,12 @@ import com.njcn.system.pojo.po.SysDicTreePO;
|
||||
import com.njcn.system.pojo.vo.DictTreeVO;
|
||||
import com.njcn.user.api.DeptFeignClient;
|
||||
import com.njcn.user.pojo.dto.DeptDTO;
|
||||
import com.njcn.web.pojo.dto.PmsPage;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
@@ -45,9 +57,15 @@ public class MonitorStatisticsServiceImpl implements MonitorStatisticsService {
|
||||
private final CommTerminalService commTerminalService;
|
||||
private final DictTreeFeignClient dictTreeFeignClient;
|
||||
private final IPmsNewEnergyService pmsNewEnergyService;
|
||||
private final MonitorMapper monitorIdList;
|
||||
private final MonitorMapper monitorMapper;
|
||||
private final DeptFeignClient deptFeignClient;
|
||||
private final DicDataFeignClient dicDataFeignClient;
|
||||
private final RStatIntegrityDMapper integrityDMapper;
|
||||
private final PmsGeneratrixWireMapper generatrixWireMapper;
|
||||
private final StatationStatMapper statationStatMapper;
|
||||
private final ITractionStationService tractionStationService;
|
||||
private final ITerminalService terminalService;
|
||||
|
||||
@Override
|
||||
public List<List<String>> getGwMonitorStatistics(String deptId) {
|
||||
List<List<String>> info = new ArrayList<>();
|
||||
@@ -94,7 +112,7 @@ public class MonitorStatisticsServiceImpl implements MonitorStatisticsService {
|
||||
line = new ArrayList<>();
|
||||
line.add(deptMonitor.getUnitName());
|
||||
List<LineDevGetDTO> lineBaseList = deptMonitor.getLineBaseList();
|
||||
if(CollUtil.isEmpty(lineBaseList)){
|
||||
if (CollUtil.isEmpty(lineBaseList)) {
|
||||
continue;
|
||||
}
|
||||
List<LineDevGetDTO> upToGridList = lineBaseList.stream().filter(item -> Objects.equals(item.getIsUpToGrid(), DataStateEnum.ENABLE.getCode()))
|
||||
@@ -110,7 +128,7 @@ public class MonitorStatisticsServiceImpl implements MonitorStatisticsService {
|
||||
public List<MonitorEnergy> getGwMonitorEnergy(String deptId) {
|
||||
List<DictData> data = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DEV_VOLTAGE.getCode()).getData();
|
||||
|
||||
List<List<String>> voltage=new ArrayList<>();
|
||||
List<List<String>> voltage = new ArrayList<>();
|
||||
//220kv电压等级
|
||||
List<String> than220kv = data.stream().filter(x -> Double.valueOf(x.getValue()) == 220).map(DictData::getId).collect(Collectors.toList());
|
||||
//110kv电压等级
|
||||
@@ -123,7 +141,7 @@ public class MonitorStatisticsServiceImpl implements MonitorStatisticsService {
|
||||
voltage.add(than220kv);
|
||||
voltage.add(than110kv);
|
||||
voltage.add(lessThan110kv);
|
||||
List<String> totalVoltage=new ArrayList<>();
|
||||
List<String> totalVoltage = new ArrayList<>();
|
||||
totalVoltage.addAll(than220kv);
|
||||
totalVoltage.addAll(than110kv);
|
||||
totalVoltage.addAll(lessThan110kv);
|
||||
@@ -143,9 +161,9 @@ public class MonitorStatisticsServiceImpl implements MonitorStatisticsService {
|
||||
dictTreeVOS.add(windFarms);
|
||||
for (DeptGetBase pmsGeneralDeviceDTO : deptChildrenByParent) {
|
||||
monitorEnergy = new MonitorEnergy();
|
||||
list=new ArrayList<>();
|
||||
list = new ArrayList<>();
|
||||
monitorEnergy.setOrgName(pmsGeneralDeviceDTO.getUnitName());
|
||||
List<Monitor> monitors = monitorIdList.selectMonitorAndNewEnergy(pmsGeneralDeviceDTO.getUnitChildrenList(), Arrays.asList(powerStation.getId(), windFarms.getId()));
|
||||
List<Monitor> monitors = monitorMapper.selectMonitorAndNewEnergy(pmsGeneralDeviceDTO.getUnitChildrenList(), Arrays.asList(powerStation.getId(), windFarms.getId()));
|
||||
//获取场站台账信息
|
||||
List<PmsNewEnergy> newEnergies = pmsNewEnergyService.list(new LambdaQueryWrapper<PmsNewEnergy>()
|
||||
.in(PmsNewEnergy::getObjType, Arrays.asList(powerStation.getId(), windFarms.getId()))
|
||||
@@ -162,18 +180,18 @@ public class MonitorStatisticsServiceImpl implements MonitorStatisticsService {
|
||||
|
||||
List<MonitorEnergy.VoltageInfo> voltageInfos = new ArrayList<>();
|
||||
for (List<String> strings : voltage) {
|
||||
MonitorEnergy.VoltageInfo info=new MonitorEnergy.VoltageInfo();
|
||||
MonitorEnergy.VoltageInfo info = new MonitorEnergy.VoltageInfo();
|
||||
long monitorNum = powerStationMonitors.stream().filter(x -> strings.contains(x.getVoltageLevel())).map(Monitor::getTractionId).distinct().count();
|
||||
info.setMonitorNum(monitorNum);
|
||||
long totalNum = powerStationEnergies.stream().filter(x -> strings.contains(x.getVoltageLevel())).map(PmsNewEnergy::getId).distinct().count();
|
||||
info.setTotalNum(totalNum);
|
||||
info.setMonitorRate(totalNum==0?0:NumberUtil.div(monitorNum*100.0, totalNum, 2));
|
||||
info.setMonitorRate(totalNum == 0 ? 0 : NumberUtil.div(monitorNum * 100.0, totalNum, 2));
|
||||
long deviceNum = powerStationMonitors.stream().filter(x -> strings.contains(x.getVoltageLevel())).map(Monitor::getTerminalId).distinct().count();
|
||||
info.setDeviceNum(deviceNum);
|
||||
long SubsNum = powerStationMonitors.stream().filter(x -> strings.contains(x.getVoltageLevel())).map(Monitor::getPowerrId).distinct().count();
|
||||
long SubstationsNum = powerStationEnergies.stream().filter(x -> strings.contains(x.getVoltageLevel())).map(PmsNewEnergy::getPowerrName).distinct().count();
|
||||
info.setSubstationsNum(SubstationsNum);
|
||||
info.setSubstationsRate(SubstationsNum==0?0:NumberUtil.div(SubsNum*100.0, SubstationsNum, 2));
|
||||
info.setSubstationsRate(SubstationsNum == 0 ? 0 : NumberUtil.div(SubsNum * 100.0, SubstationsNum, 2));
|
||||
voltageInfos.add(info);
|
||||
}
|
||||
|
||||
@@ -186,26 +204,374 @@ public class MonitorStatisticsServiceImpl implements MonitorStatisticsService {
|
||||
return monitorEnergyList;
|
||||
}
|
||||
|
||||
@Override
|
||||
public PmsPage<Map<String, String>> getMonitorTerminalData(GwTerminalParam param) {
|
||||
|
||||
//终端状态
|
||||
List<DictData> devStatus = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DEV_STATUS.getCode()).getData();
|
||||
List<String> devStatusIds = devStatus.stream().filter(x -> param.getDeployState().contains(x.getValue())).map(DictData::getId).collect(Collectors.toList());
|
||||
Map<String, DictData> mapDevStatus = devStatus.stream().collect(Collectors.toMap(DictData::getId, Function.identity()));
|
||||
|
||||
|
||||
//测量信号输入形式
|
||||
List<DictData> signal = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.INPUT_SIGNAL.getCode()).getData();
|
||||
Map<String, DictData> mapSignal = signal.stream().collect(Collectors.toMap(DictData::getId, Function.identity()));
|
||||
|
||||
//生产厂家
|
||||
List<DictData> manufacture = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DEV_MANUFACTURER.getCode()).getData();
|
||||
Map<String, DictData> mapManufacture = manufacture.stream().collect(Collectors.toMap(DictData::getId, Function.identity()));
|
||||
|
||||
|
||||
LambdaQueryWrapper<Monitor> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||
lambdaQueryWrapper.select(Monitor::getTerminalId);
|
||||
lambdaQueryWrapper.eq(Monitor::getIsUpToGrid, 1);
|
||||
List<Monitor> monitors = monitorMapper.selectList( lambdaQueryWrapper);
|
||||
|
||||
List<String> terminalIds = monitors.stream().map(Monitor::getTerminalId).collect(Collectors.toList());
|
||||
Page<PmsTerminal> page = terminalService.page(new Page<>(param.getPageNum(), param.getPageSize()),
|
||||
new LambdaQueryWrapper<PmsTerminal>()
|
||||
.in(PmsTerminal::getId, terminalIds)
|
||||
.in(CollUtil.isNotEmpty(devStatusIds), PmsTerminal::getTerminalState,devStatusIds)
|
||||
);
|
||||
List<PmsTerminal> records = page.getRecords();
|
||||
List<Map<String, String>> info = new ArrayList<>();
|
||||
Map<String, String> map;
|
||||
for (PmsTerminal terminal : records) {
|
||||
map = new LinkedHashMap<>();
|
||||
//电能质量监测装置
|
||||
map.put("deviceKind", "");
|
||||
//运维单位ID
|
||||
map.put("maintOrg", terminal.getOperationId());
|
||||
//信号输出形式
|
||||
map.put("signalInputForm", "");
|
||||
//电站类型
|
||||
map.put("stationType", "");
|
||||
//设备增加方式名称
|
||||
map.put("source#Name", "");
|
||||
//设备增加方式
|
||||
map.put("source", "");
|
||||
//电流输出变化
|
||||
map.put("currsigInputChanqutity", "");
|
||||
//资产单位名称
|
||||
map.put("astOrg#Name", "");
|
||||
//资产单位
|
||||
map.put("astOrg", "");
|
||||
//屏柜类型
|
||||
map.put("cabinetType", "");
|
||||
//时间
|
||||
map.put("ctime", "");
|
||||
//型号
|
||||
map.put("model", "");
|
||||
//电站名称
|
||||
map.put("station#Name", "");
|
||||
//设备所有者
|
||||
map.put("equipmentOwner", "");
|
||||
//制造商编号
|
||||
map.put("manufactureNum", "");
|
||||
//Ip地址
|
||||
map.put("ipAddress", terminal.getIp());
|
||||
//设备编码
|
||||
map.put("equipCode", "");
|
||||
//子网
|
||||
map.put("subnetMask", "");
|
||||
//设备ID
|
||||
map.put("astId", "");
|
||||
//mac地址
|
||||
map.put("macAddress", "");
|
||||
//信号输出形式名称
|
||||
if (mapSignal.containsKey(terminal.getInputType())) {
|
||||
DictData dictData = mapSignal.get(terminal.getInputType());
|
||||
map.put("signalInputForm#Name", dictData.getName());
|
||||
}
|
||||
//运维单位名称
|
||||
map.put("maintOrg#Name", terminal.getOperationName());
|
||||
//名字
|
||||
map.put("name", terminal.getName());
|
||||
//装置等级
|
||||
map.put("deviceLevel", "");
|
||||
//工程编号
|
||||
map.put("projectNum", "");
|
||||
//工程名称
|
||||
map.put("projectName", "");
|
||||
//操作日期
|
||||
map.put("operateDate", "");
|
||||
|
||||
//设备状态
|
||||
if (mapDevStatus.containsKey(terminal.getTerminalState())) {
|
||||
DictData dictData = mapDevStatus.get(terminal.getTerminalState());
|
||||
//设备状态字典
|
||||
map.put("deployState", dictData.getValue());
|
||||
//设备状态字典名称
|
||||
map.put("deployState#Name", dictData.getName());
|
||||
}
|
||||
|
||||
//硬盘容量
|
||||
map.put("hardDiskCapacity", "");
|
||||
//城市
|
||||
map.put("city", "");
|
||||
//时间同步
|
||||
map.put("timeSynchronization", "");
|
||||
//资产性质
|
||||
map.put("astNature", "");
|
||||
|
||||
//生产厂家
|
||||
if (mapManufacture.containsKey(terminal.getManufacture())) {
|
||||
DictData dictData = mapManufacture.get(terminal.getManufacture());
|
||||
map.put("manufacturer", dictData.getName());
|
||||
}
|
||||
|
||||
//设备所属名称
|
||||
map.put("astOrgName", "");
|
||||
//电压信号输入变化
|
||||
map.put("voltsigInputChanqutity", "");
|
||||
//运行编号
|
||||
map.put("runDevName", "");
|
||||
//设备电源电压
|
||||
map.put("devPowerVoltage", "");
|
||||
//变电站
|
||||
map.put("station", "");
|
||||
//制造日期
|
||||
map.put("manufactureDate", "");
|
||||
//资产性质名称
|
||||
map.put("astNature#Name", "");
|
||||
//端口编号
|
||||
map.put("portNum", "");
|
||||
//保养组名称
|
||||
map.put("maintGroup#Name", "");
|
||||
//保养组
|
||||
map.put("maintGroup", "");
|
||||
//制造商名称
|
||||
map.put("manufacturer#Name", "");
|
||||
//发现日期
|
||||
map.put("detectDate", "");
|
||||
//城市名称
|
||||
map.put("city#Name", "");
|
||||
//变电站类型名称
|
||||
map.put("stationType#Name", "");
|
||||
|
||||
//设备级别名称
|
||||
map.put("deviceLevel#Name", "");
|
||||
//储藏柜
|
||||
map.put("cabinet", "");
|
||||
//网关
|
||||
map.put("gateway", "");
|
||||
//电站电压等级名称
|
||||
map.put("stationVoltageLevelName", "");
|
||||
//终端识别码
|
||||
map.put("terminalIdentifyCode", "");
|
||||
//终端键
|
||||
map.put("terminalKey", "");
|
||||
info.add(map);
|
||||
}
|
||||
PmsPage pmsPage = BeanUtil.copyProperties(page, PmsPage.class);
|
||||
pmsPage.setList(info);
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public PmsPage<Statistical> getMonitorStatisticalDetailList(GwStatisticalParam param) {
|
||||
//在线监测点 监测点实收数量大于0,则标识这个监测点就是在线的
|
||||
List<RStatIntegrityVO> monitorRealTimeBeZero = new ArrayList<>();
|
||||
List<String> lineIds = new ArrayList<>();
|
||||
if ("02".equals(param.getFlag())) {
|
||||
monitorRealTimeBeZero.addAll(integrityDMapper.getMonitorRealTimeBeZero(null, param.getStartDate(), param.getEndDate(), 0));
|
||||
lineIds.addAll(monitorRealTimeBeZero.stream().map(RStatIntegrityVO::getLineIndex).collect(Collectors.toList()));
|
||||
}
|
||||
List<String> objTypeIds = new ArrayList<>();
|
||||
LambdaQueryWrapper<Monitor> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||
if (StrUtil.isNotBlank(param.getOrgId())) {
|
||||
List<String> data = deptFeignClient.getDepSonSelfCodetByCode(param.getOrgId()).getData();
|
||||
lambdaQueryWrapper.in(Monitor::getOrgId, data);
|
||||
}
|
||||
String monitorObjPreName;
|
||||
if ("08".equals(param.getStationType())) {
|
||||
monitorObjPreName="其他";
|
||||
//特殊处理
|
||||
List<SysDicTreePO> sysDicTreePOList = dictTreeFeignClient.queryAll().getData();
|
||||
List<SysDicTreePO> typicDic = sysDicTreePOList.stream()
|
||||
.filter(item -> Objects.equals(DicTreeEnum.Trans_Sub.getCode(), item.getCode()) ||
|
||||
Objects.equals(DicTreeEnum.Converter.getCode(), item.getCode()) ||
|
||||
Objects.equals(DicTreeEnum.Ele_Railways.getCode(), item.getCode()) ||
|
||||
Objects.equals(DicTreeEnum.Wind_Farms.getCode(), item.getCode()) ||
|
||||
Objects.equals(DicTreeEnum.Power_Station.getCode(), item.getCode()) ||
|
||||
Objects.equals(DicTreeEnum.Smelting_Load.getCode(), item.getCode()) ||
|
||||
Objects.equals(DicTreeEnum.Imp_Users.getCode(), item.getCode()))
|
||||
.collect(Collectors.toList());
|
||||
|
||||
for (SysDicTreePO sysDicTreePO : typicDic) {
|
||||
List<DictTreeVO> temList = dictTreeFeignClient.query(sysDicTreePO.getId()).getData();
|
||||
List<String> ids = temList.stream().map(DictTreeVO::getId).collect(Collectors.toList());
|
||||
objTypeIds.addAll(ids);
|
||||
objTypeIds.add(sysDicTreePO.getId());
|
||||
}
|
||||
lambdaQueryWrapper.notIn(Monitor::getObjType, objTypeIds);
|
||||
} else {
|
||||
//01-变电站,02-换流站,03-电气化铁路,04-风电场,05-光伏电站,06-冶炼负荷,07-重要敏感用户,08-其他
|
||||
String code;
|
||||
switch (param.getStationType()) {
|
||||
case "01":
|
||||
monitorObjPreName=DicTreeEnum.Trans_Sub.getName();
|
||||
code = DicTreeEnum.Trans_Sub.getCode();
|
||||
break;
|
||||
case "02":
|
||||
monitorObjPreName=DicTreeEnum.Converter.getName();
|
||||
code = DicTreeEnum.Converter.getCode();
|
||||
break;
|
||||
case "03":
|
||||
monitorObjPreName=DicTreeEnum.Ele_Railways.getName();
|
||||
code = DicTreeEnum.Ele_Railways.getCode();
|
||||
break;
|
||||
case "04":
|
||||
monitorObjPreName=DicTreeEnum.Wind_Farms.getName();
|
||||
code = DicTreeEnum.Wind_Farms.getCode();
|
||||
break;
|
||||
case "05":
|
||||
monitorObjPreName=DicTreeEnum.Power_Station.getName();
|
||||
code = DicTreeEnum.Power_Station.getCode();
|
||||
break;
|
||||
case "06":
|
||||
monitorObjPreName=DicTreeEnum.Smelting_Load.getName();
|
||||
code = DicTreeEnum.Smelting_Load.getCode();
|
||||
break;
|
||||
case "07":
|
||||
monitorObjPreName=DicTreeEnum.Imp_Users.getName();
|
||||
code = DicTreeEnum.Imp_Users.getCode();
|
||||
break;
|
||||
default:
|
||||
return new PmsPage<>(param.getPageNum(), param.getPageSize());
|
||||
}
|
||||
String id = dictTreeFeignClient.queryByCode(code).getData().getId();
|
||||
List<DictTreeVO> objType = dictTreeFeignClient.query(id).getData();
|
||||
objTypeIds.add(id);
|
||||
if (CollUtil.isNotEmpty(objType)) {
|
||||
objTypeIds.addAll(objType.stream().map(DictTreeVO::getId).collect(Collectors.toList()));
|
||||
}
|
||||
lambdaQueryWrapper.in(Monitor::getObjType, objTypeIds);
|
||||
}
|
||||
|
||||
//获取监测点信息
|
||||
lambdaQueryWrapper.eq(Monitor::getIsUpToGrid, 1);
|
||||
lambdaQueryWrapper.in(CollUtil.isNotEmpty(lineIds), Monitor::getId, lineIds);
|
||||
Page<Monitor> monitorList = monitorMapper.selectPage(new Page<>(param.getPageNum(), param.getPageSize()), lambdaQueryWrapper);
|
||||
|
||||
if (CollUtil.isNotEmpty(monitorList.getRecords())) {
|
||||
List<String> monitorId = monitorList.getRecords().stream().map(Monitor::getId).distinct().collect(Collectors.toList());
|
||||
monitorRealTimeBeZero.addAll(integrityDMapper.getMonitorRealTimeBeZero(monitorId, param.getStartDate(), param.getEndDate(), null));
|
||||
}
|
||||
//线路变电站
|
||||
List<String> wireIds = monitorList.getRecords().stream().map(Monitor::getLineId).distinct().collect(Collectors.toList());
|
||||
List<String> powerIds = monitorList.getRecords().stream().map(Monitor::getPowerrId).distinct().collect(Collectors.toList());
|
||||
List<GeneratrixWire> wiresList = new ArrayList<>();
|
||||
List<StatationStat> stationStats = new ArrayList<>();
|
||||
if (CollUtil.isNotEmpty(lineIds)) {
|
||||
wiresList.addAll(generatrixWireMapper.selectBatchIds(wireIds));
|
||||
}
|
||||
if (CollUtil.isNotEmpty(powerIds)) {
|
||||
stationStats.addAll(statationStatMapper.selectBatchIds(powerIds));
|
||||
}
|
||||
Map<String, GeneratrixWire> wireMap = wiresList.stream().collect(Collectors
|
||||
.toMap(GeneratrixWire::getId, Function.identity()));
|
||||
Map<String, StatationStat> powerMap = stationStats.stream().collect(Collectors
|
||||
.toMap(StatationStat::getPowerId, Function.identity()));
|
||||
//电压等级
|
||||
List<DictData> voltage = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DEV_VOLTAGE.getCode()).getData();
|
||||
Map<String, DictData> mapVoltage = voltage.stream().collect(Collectors.toMap(DictData::getId, Function.identity()));
|
||||
//运行状态
|
||||
List<DictData> lineState = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.LINE_STATE.getCode()).getData();
|
||||
Map<String, DictData> mapLineState = lineState.stream().collect(Collectors.toMap(DictData::getId, Function.identity()));
|
||||
//分类行业
|
||||
List<DictData> industryType = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.INDUSTRY_TYPE.getCode()).getData();
|
||||
Map<String, DictData> mapIndustryType = industryType.stream().collect(Collectors.toMap(DictData::getId, Function.identity()));
|
||||
//获取已存在牵引站的信息
|
||||
List<String> tractionIds = monitorList.getRecords().stream().map(Monitor::getTractionId).collect(Collectors.toList());
|
||||
List<TractionStation> tractionStationList = new ArrayList<>();
|
||||
if (CollUtil.isNotEmpty(powerIds)) {
|
||||
tractionStationList.addAll(tractionStationService.list(new LambdaQueryWrapper<TractionStation>()
|
||||
.in(TractionStation::getId, tractionIds)));
|
||||
}
|
||||
|
||||
|
||||
Map<String, RStatIntegrityVO> integrityVOMap = monitorRealTimeBeZero.stream().collect(Collectors.toMap(RStatIntegrityVO::getLineIndex, Function.identity()));
|
||||
List<Statistical> info = new ArrayList<>();
|
||||
Statistical statistical;
|
||||
|
||||
|
||||
for (Monitor monitor : monitorList.getRecords()) {
|
||||
statistical = new Statistical();
|
||||
if (integrityVOMap.containsKey(monitor.getId())) {
|
||||
RStatIntegrityVO integrity = integrityVOMap.get(monitor.getId());
|
||||
statistical.setActualCollectNum(integrity.getRealTime().toString());
|
||||
statistical.setExpectCollectNum(integrity.getDueTime().toString());
|
||||
statistical.setDataFullRate(integrity.getIntegrityRate().toString());
|
||||
} else {
|
||||
statistical.setActualCollectNum("0");
|
||||
statistical.setExpectCollectNum("0");
|
||||
statistical.setDataFullRate("0");
|
||||
}
|
||||
//母线的电压等级
|
||||
if (wireMap.containsKey(monitor.getLineId())) {
|
||||
GeneratrixWire generatrixWire = wireMap.get(monitor.getLineId());
|
||||
statistical.setBusId(generatrixWire.getMidBusId());
|
||||
statistical.setBusName(generatrixWire.getName());
|
||||
}
|
||||
statistical.setCityId(monitor.getOrgId());
|
||||
statistical.setCityName(monitor.getOrgName());
|
||||
statistical.setMaintOrg(monitor.getOperationId());
|
||||
statistical.setMaintOrgName(monitor.getOperationName());
|
||||
statistical.setMonitorId(monitor.getMonitorId());
|
||||
statistical.setMonitorName(monitor.getName());
|
||||
statistical.setMonitorObjName(monitor.getMonitorObjectName());
|
||||
statistical.setOnlineDate(param.getEndDate());
|
||||
statistical.setPsrId(monitor.getId());
|
||||
|
||||
statistical.setMonitorObjPre(param.getStationType());
|
||||
statistical.setMonitorObjPreName(monitorObjPreName);
|
||||
// statistical.setMonitorType();
|
||||
// statistical.setMonitorTypeName();
|
||||
//变电站
|
||||
if (powerMap.containsKey(monitor.getPowerrId())) {
|
||||
StatationStat statationStat = powerMap.get(monitor.getPowerrId());
|
||||
statistical.setStationId(statationStat.getMidStationId());
|
||||
statistical.setStationName(statationStat.getPowerName());
|
||||
}
|
||||
//电压等级
|
||||
if (mapVoltage.containsKey(monitor.getVoltageLevel())) {
|
||||
statistical.setVoltageLevel(String.format("%02d", mapVoltage.get(monitor.getVoltageLevel()).getAlgoDescribe()));
|
||||
statistical.setVoltageLevelName(mapVoltage.get(monitor.getVoltageLevel()).getName());
|
||||
}
|
||||
//运行状态
|
||||
if (mapLineState.containsKey(monitor.getMonitorState())) {
|
||||
statistical.setStatus(mapLineState.get(monitor.getMonitorState()).getValue());
|
||||
statistical.setStatusName(mapLineState.get(monitor.getMonitorState()).getName());
|
||||
}
|
||||
info.add(statistical);
|
||||
}
|
||||
PmsPage pmsPage = BeanUtil.copyProperties(monitorList, PmsPage.class);
|
||||
pmsPage.setList(info);
|
||||
return pmsPage;
|
||||
}
|
||||
|
||||
private List<String> addmetWorkList(Map<String, List<String>> mapSourceLoad, List<LineDevGetDTO> upToGridList, List<String> line) {
|
||||
long total = 0;
|
||||
for (String s : mapSourceLoad.keySet()) {
|
||||
List<String> value = mapSourceLoad.get(s);
|
||||
long monitorCount = upToGridList.stream().filter(item -> value.contains(item.getObjType()) &&
|
||||
Objects.equals(item.getMonitorUploadStatus(), DataStateEnum.ENABLE.getCode())
|
||||
).map(LineDevGetDTO::getPointId).count();
|
||||
long monitorCount = upToGridList.stream().filter(item -> value.contains(item.getObjType()) &&
|
||||
Objects.equals(item.getMonitorUploadStatus(), DataStateEnum.ENABLE.getCode())
|
||||
).map(LineDevGetDTO::getPointId).count();
|
||||
total += monitorCount;
|
||||
line.add(String.valueOf(monitorCount));
|
||||
}
|
||||
line.add(String.valueOf(total));
|
||||
return line;
|
||||
}
|
||||
|
||||
private List<String> addSourceLoadList(Map<String, List<String>> mapSourceLoad, List<LineDevGetDTO> upToGridList, List<String> line) {
|
||||
long total = 0;
|
||||
for (String s : mapSourceLoad.keySet()) {
|
||||
List<String> value = mapSourceLoad.get(s);
|
||||
long monitorCount = upToGridList.stream().filter(item -> value.contains(item.getObjType()) &&
|
||||
Objects.equals(item.getIsUploadHead(), DataStateEnum.ENABLE.getCode())
|
||||
).map(LineDevGetDTO::getPointId).count();
|
||||
long monitorCount = upToGridList.stream().filter(item -> value.contains(item.getObjType()) &&
|
||||
Objects.equals(item.getIsUploadHead(), DataStateEnum.ENABLE.getCode())
|
||||
).map(LineDevGetDTO::getPointId).count();
|
||||
total += monitorCount;
|
||||
line.add(String.valueOf(monitorCount));
|
||||
}
|
||||
@@ -218,22 +584,24 @@ public class MonitorStatisticsServiceImpl implements MonitorStatisticsService {
|
||||
line.add(String.valueOf(total));
|
||||
return line;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param objType 监测点对象类型大类
|
||||
* @param objType 监测点对象类型大类
|
||||
* @param objTypeAll 监测点所有对象类型
|
||||
* @return
|
||||
*/
|
||||
private Map<String, List<String>> mapDicIds(List<SysDicTreePO> objType, List<SysDicTreePO> objTypeAll) {
|
||||
private Map<String, List<String>> mapDicIds(List<SysDicTreePO> objType, List<SysDicTreePO> objTypeAll) {
|
||||
Map<String, List<String>> mapKey = new LinkedHashMap<>();
|
||||
for(SysDicTreePO load : objType){
|
||||
for (SysDicTreePO load : objType) {
|
||||
List<String> ids = objTypeAll.stream().filter(item -> item.getPid().equals(load.getId()) ||
|
||||
item.getId().equals(load.getId())
|
||||
).map(SysDicTreePO::getId).collect(Collectors.toList());;
|
||||
).map(SysDicTreePO::getId).collect(Collectors.toList());
|
||||
;
|
||||
mapKey.put(load.getCode(), ids);
|
||||
}
|
||||
return mapKey;
|
||||
}
|
||||
|
||||
public List<DeptGetBase> getDeptChildrenByParent(String deptId) {
|
||||
List<DeptGetBase> result = new ArrayList<>();
|
||||
List<DeptDTO> deptDTOList = deptFeignClient.getDepSonDetailByDeptId(deptId).getData();
|
||||
|
||||
@@ -672,7 +672,7 @@ public class MonitorServiceImpl extends ServiceImpl<MonitorMapper, Monitor> impl
|
||||
List<String> data = deptFeignClient.getDepSonSelfCodetByCode(param.getOrgId()).getData();
|
||||
lambdaQueryWrapper.in(Monitor::getOrgId, data);
|
||||
}
|
||||
if (StrUtil.isBlank(param.getStatisticsType())) {
|
||||
if ("04".equals(param.getStatisticsType())) {
|
||||
//特殊处理
|
||||
List<SysDicTreePO> sysDicTreePOList = dictTreeFeignClient.queryAll().getData();
|
||||
List<SysDicTreePO> typicDic = sysDicTreePOList.stream()
|
||||
@@ -702,9 +702,6 @@ public class MonitorServiceImpl extends ServiceImpl<MonitorMapper, Monitor> impl
|
||||
case "03":
|
||||
code = DicTreeEnum.Power_Station.getCode();
|
||||
break;
|
||||
case "04":
|
||||
code = DicTreeEnum.Imp_Users.getCode();
|
||||
break;
|
||||
default:
|
||||
return new Page<>(param.getPageNum(), param.getPageSize());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user