1.终端和主配网监测点,国网下穿接口编写

This commit is contained in:
wr
2024-06-02 17:45:26 +08:00
parent 7b43430e03
commit f181b9bbb2
10 changed files with 761 additions and 27 deletions

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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);
}
}

View File

@@ -4,6 +4,7 @@ package com.njcn.device.pms.mapper.majornetwork;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.njcn.device.pms.pojo.dto.MonitorIntegrityDataDTO; 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.LineBaseQueryParam;
import com.njcn.device.pq.pojo.param.OnlineRateParam; import com.njcn.device.pq.pojo.param.OnlineRateParam;
import com.njcn.device.pq.pojo.po.LineDataIntegrity; 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); 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
);
} }

View File

@@ -21,5 +21,37 @@
</if> </if>
</select> </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 &lt;= #{endTime}
</if>
</where>
GROUP BY
lineIndex
<if test="type != null ">
HAVING
realTime > 0
</if>
</select>
</mapper> </mapper>

View File

@@ -1,8 +1,13 @@
package com.njcn.device.pms.service.gwPush; 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.MonitorEnergy;
import com.njcn.device.pms.pojo.vo.gw.Statistical;
import com.njcn.web.pojo.dto.PmsPage;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* 国网台账类上送 * 国网台账类上送
@@ -22,4 +27,21 @@ public interface MonitorStatisticsService {
* @Date: 2024/3/22 9:49 * @Date: 2024/3/22 9:49
*/ */
List<MonitorEnergy> getGwMonitorEnergy(String deptId); 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);
} }

View File

@@ -1,21 +1,31 @@
package com.njcn.device.pms.service.gwPush.impl; package com.njcn.device.pms.service.gwPush.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; 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.common.pojo.enums.common.DataStateEnum;
import com.njcn.device.biz.pojo.dto.DeptGetBase; import com.njcn.device.biz.pojo.dto.DeptGetBase;
import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO; import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO;
import com.njcn.device.biz.pojo.dto.LineDevGetDTO; import com.njcn.device.biz.pojo.dto.LineDevGetDTO;
import com.njcn.device.biz.pojo.param.DeptGetLineParam; import com.njcn.device.biz.pojo.param.DeptGetLineParam;
import com.njcn.device.pms.mapper.majornetwork.MonitorMapper; import com.njcn.device.pms.mapper.majornetwork.MonitorMapper;
import com.njcn.device.pms.pojo.po.Monitor; import com.njcn.device.pms.mapper.majornetwork.PmsGeneratrixWireMapper;
import com.njcn.device.pms.pojo.po.PmsNewEnergy; 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.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.IPmsNewEnergyService;
import com.njcn.device.pms.service.gwPush.MonitorStatisticsService; import com.njcn.device.pms.service.gwPush.MonitorStatisticsService;
import com.njcn.device.pms.service.ledgerManger.CommTerminalService; 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.DicDataFeignClient;
import com.njcn.system.api.DictTreeFeignClient; import com.njcn.system.api.DictTreeFeignClient;
import com.njcn.system.enums.DicDataTypeEnum; 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.system.pojo.vo.DictTreeVO;
import com.njcn.user.api.DeptFeignClient; import com.njcn.user.api.DeptFeignClient;
import com.njcn.user.pojo.dto.DeptDTO; import com.njcn.user.pojo.dto.DeptDTO;
import com.njcn.web.pojo.dto.PmsPage;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.*; import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.util.stream.Stream; import java.util.stream.Stream;
@@ -45,9 +57,15 @@ public class MonitorStatisticsServiceImpl implements MonitorStatisticsService {
private final CommTerminalService commTerminalService; private final CommTerminalService commTerminalService;
private final DictTreeFeignClient dictTreeFeignClient; private final DictTreeFeignClient dictTreeFeignClient;
private final IPmsNewEnergyService pmsNewEnergyService; private final IPmsNewEnergyService pmsNewEnergyService;
private final MonitorMapper monitorIdList; private final MonitorMapper monitorMapper;
private final DeptFeignClient deptFeignClient; private final DeptFeignClient deptFeignClient;
private final DicDataFeignClient dicDataFeignClient; 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 @Override
public List<List<String>> getGwMonitorStatistics(String deptId) { public List<List<String>> getGwMonitorStatistics(String deptId) {
List<List<String>> info = new ArrayList<>(); List<List<String>> info = new ArrayList<>();
@@ -94,7 +112,7 @@ public class MonitorStatisticsServiceImpl implements MonitorStatisticsService {
line = new ArrayList<>(); line = new ArrayList<>();
line.add(deptMonitor.getUnitName()); line.add(deptMonitor.getUnitName());
List<LineDevGetDTO> lineBaseList = deptMonitor.getLineBaseList(); List<LineDevGetDTO> lineBaseList = deptMonitor.getLineBaseList();
if(CollUtil.isEmpty(lineBaseList)){ if (CollUtil.isEmpty(lineBaseList)) {
continue; continue;
} }
List<LineDevGetDTO> upToGridList = lineBaseList.stream().filter(item -> Objects.equals(item.getIsUpToGrid(), DataStateEnum.ENABLE.getCode())) 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) { public List<MonitorEnergy> getGwMonitorEnergy(String deptId) {
List<DictData> data = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DEV_VOLTAGE.getCode()).getData(); List<DictData> data = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DEV_VOLTAGE.getCode()).getData();
List<List<String>> voltage=new ArrayList<>(); List<List<String>> voltage = new ArrayList<>();
//220kv电压等级 //220kv电压等级
List<String> than220kv = data.stream().filter(x -> Double.valueOf(x.getValue()) == 220).map(DictData::getId).collect(Collectors.toList()); List<String> than220kv = data.stream().filter(x -> Double.valueOf(x.getValue()) == 220).map(DictData::getId).collect(Collectors.toList());
//110kv电压等级 //110kv电压等级
@@ -123,7 +141,7 @@ public class MonitorStatisticsServiceImpl implements MonitorStatisticsService {
voltage.add(than220kv); voltage.add(than220kv);
voltage.add(than110kv); voltage.add(than110kv);
voltage.add(lessThan110kv); voltage.add(lessThan110kv);
List<String> totalVoltage=new ArrayList<>(); List<String> totalVoltage = new ArrayList<>();
totalVoltage.addAll(than220kv); totalVoltage.addAll(than220kv);
totalVoltage.addAll(than110kv); totalVoltage.addAll(than110kv);
totalVoltage.addAll(lessThan110kv); totalVoltage.addAll(lessThan110kv);
@@ -143,9 +161,9 @@ public class MonitorStatisticsServiceImpl implements MonitorStatisticsService {
dictTreeVOS.add(windFarms); dictTreeVOS.add(windFarms);
for (DeptGetBase pmsGeneralDeviceDTO : deptChildrenByParent) { for (DeptGetBase pmsGeneralDeviceDTO : deptChildrenByParent) {
monitorEnergy = new MonitorEnergy(); monitorEnergy = new MonitorEnergy();
list=new ArrayList<>(); list = new ArrayList<>();
monitorEnergy.setOrgName(pmsGeneralDeviceDTO.getUnitName()); 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>() List<PmsNewEnergy> newEnergies = pmsNewEnergyService.list(new LambdaQueryWrapper<PmsNewEnergy>()
.in(PmsNewEnergy::getObjType, Arrays.asList(powerStation.getId(), windFarms.getId())) .in(PmsNewEnergy::getObjType, Arrays.asList(powerStation.getId(), windFarms.getId()))
@@ -162,18 +180,18 @@ public class MonitorStatisticsServiceImpl implements MonitorStatisticsService {
List<MonitorEnergy.VoltageInfo> voltageInfos = new ArrayList<>(); List<MonitorEnergy.VoltageInfo> voltageInfos = new ArrayList<>();
for (List<String> strings : voltage) { 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(); long monitorNum = powerStationMonitors.stream().filter(x -> strings.contains(x.getVoltageLevel())).map(Monitor::getTractionId).distinct().count();
info.setMonitorNum(monitorNum); info.setMonitorNum(monitorNum);
long totalNum = powerStationEnergies.stream().filter(x -> strings.contains(x.getVoltageLevel())).map(PmsNewEnergy::getId).distinct().count(); long totalNum = powerStationEnergies.stream().filter(x -> strings.contains(x.getVoltageLevel())).map(PmsNewEnergy::getId).distinct().count();
info.setTotalNum(totalNum); 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(); long deviceNum = powerStationMonitors.stream().filter(x -> strings.contains(x.getVoltageLevel())).map(Monitor::getTerminalId).distinct().count();
info.setDeviceNum(deviceNum); info.setDeviceNum(deviceNum);
long SubsNum = powerStationMonitors.stream().filter(x -> strings.contains(x.getVoltageLevel())).map(Monitor::getPowerrId).distinct().count(); 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(); long SubstationsNum = powerStationEnergies.stream().filter(x -> strings.contains(x.getVoltageLevel())).map(PmsNewEnergy::getPowerrName).distinct().count();
info.setSubstationsNum(SubstationsNum); 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); voltageInfos.add(info);
} }
@@ -186,26 +204,374 @@ public class MonitorStatisticsServiceImpl implements MonitorStatisticsService {
return monitorEnergyList; 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) { private List<String> addmetWorkList(Map<String, List<String>> mapSourceLoad, List<LineDevGetDTO> upToGridList, List<String> line) {
long total = 0; long total = 0;
for (String s : mapSourceLoad.keySet()) { for (String s : mapSourceLoad.keySet()) {
List<String> value = mapSourceLoad.get(s); List<String> value = mapSourceLoad.get(s);
long monitorCount = upToGridList.stream().filter(item -> value.contains(item.getObjType()) && long monitorCount = upToGridList.stream().filter(item -> value.contains(item.getObjType()) &&
Objects.equals(item.getMonitorUploadStatus(), DataStateEnum.ENABLE.getCode()) Objects.equals(item.getMonitorUploadStatus(), DataStateEnum.ENABLE.getCode())
).map(LineDevGetDTO::getPointId).count(); ).map(LineDevGetDTO::getPointId).count();
total += monitorCount; total += monitorCount;
line.add(String.valueOf(monitorCount)); line.add(String.valueOf(monitorCount));
} }
line.add(String.valueOf(total)); line.add(String.valueOf(total));
return line; return line;
} }
private List<String> addSourceLoadList(Map<String, List<String>> mapSourceLoad, List<LineDevGetDTO> upToGridList, List<String> line) { private List<String> addSourceLoadList(Map<String, List<String>> mapSourceLoad, List<LineDevGetDTO> upToGridList, List<String> line) {
long total = 0; long total = 0;
for (String s : mapSourceLoad.keySet()) { for (String s : mapSourceLoad.keySet()) {
List<String> value = mapSourceLoad.get(s); List<String> value = mapSourceLoad.get(s);
long monitorCount = upToGridList.stream().filter(item -> value.contains(item.getObjType()) && long monitorCount = upToGridList.stream().filter(item -> value.contains(item.getObjType()) &&
Objects.equals(item.getIsUploadHead(), DataStateEnum.ENABLE.getCode()) Objects.equals(item.getIsUploadHead(), DataStateEnum.ENABLE.getCode())
).map(LineDevGetDTO::getPointId).count(); ).map(LineDevGetDTO::getPointId).count();
total += monitorCount; total += monitorCount;
line.add(String.valueOf(monitorCount)); line.add(String.valueOf(monitorCount));
} }
@@ -218,22 +584,24 @@ public class MonitorStatisticsServiceImpl implements MonitorStatisticsService {
line.add(String.valueOf(total)); line.add(String.valueOf(total));
return line; return line;
} }
/** /**
* * @param objType 监测点对象类型大类
* @param objType 监测点对象类型大类
* @param objTypeAll 监测点所有对象类型 * @param objTypeAll 监测点所有对象类型
* @return * @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<>(); 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()) || List<String> ids = objTypeAll.stream().filter(item -> item.getPid().equals(load.getId()) ||
item.getId().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); mapKey.put(load.getCode(), ids);
} }
return mapKey; return mapKey;
} }
public List<DeptGetBase> getDeptChildrenByParent(String deptId) { public List<DeptGetBase> getDeptChildrenByParent(String deptId) {
List<DeptGetBase> result = new ArrayList<>(); List<DeptGetBase> result = new ArrayList<>();
List<DeptDTO> deptDTOList = deptFeignClient.getDepSonDetailByDeptId(deptId).getData(); List<DeptDTO> deptDTOList = deptFeignClient.getDepSonDetailByDeptId(deptId).getData();

View File

@@ -672,7 +672,7 @@ public class MonitorServiceImpl extends ServiceImpl<MonitorMapper, Monitor> impl
List<String> data = deptFeignClient.getDepSonSelfCodetByCode(param.getOrgId()).getData(); List<String> data = deptFeignClient.getDepSonSelfCodetByCode(param.getOrgId()).getData();
lambdaQueryWrapper.in(Monitor::getOrgId, data); lambdaQueryWrapper.in(Monitor::getOrgId, data);
} }
if (StrUtil.isBlank(param.getStatisticsType())) { if ("04".equals(param.getStatisticsType())) {
//特殊处理 //特殊处理
List<SysDicTreePO> sysDicTreePOList = dictTreeFeignClient.queryAll().getData(); List<SysDicTreePO> sysDicTreePOList = dictTreeFeignClient.queryAll().getData();
List<SysDicTreePO> typicDic = sysDicTreePOList.stream() List<SysDicTreePO> typicDic = sysDicTreePOList.stream()
@@ -702,9 +702,6 @@ public class MonitorServiceImpl extends ServiceImpl<MonitorMapper, Monitor> impl
case "03": case "03":
code = DicTreeEnum.Power_Station.getCode(); code = DicTreeEnum.Power_Station.getCode();
break; break;
case "04":
code = DicTreeEnum.Imp_Users.getCode();
break;
default: default:
return new Page<>(param.getPageNum(), param.getPageSize()); return new Page<>(param.getPageNum(), param.getPageSize());
} }

View File

@@ -237,7 +237,76 @@
from ( from (
SELECT SELECT
my_index, my_index,
sum( all_time )+sum( flicker_all_time )AS allCount SUM( freq_dev_overtime )+
SUM( flicker_overtime ) +
SUM( voltage_dev_overtime )+
SUM( ubalance_overtime ) +
SUM( uaberrance_overtime ) +
SUM( i_neg_overtime ) +
sum(if((uharm_2_overtime+
uharm_3_overtime+
uharm_4_overtime+
uharm_5_overtime+
uharm_6_overtime+
uharm_7_overtime+
uharm_8_overtime+
uharm_9_overtime+
uharm_10_overtime+
uharm_11_overtime+
uharm_12_overtime+
uharm_13_overtime+
uharm_14_overtime+
uharm_15_overtime+
uharm_16_overtime+
uharm_17_overtime+
uharm_18_overtime+
uharm_19_overtime+
uharm_20_overtime+
uharm_21_overtime+
uharm_22_overtime+
uharm_23_overtime+
uharm_24_overtime+
uharm_25_overtime)>0,1,0))+
sum(if((iharm_2_overtime+
iharm_3_overtime+
iharm_4_overtime+
iharm_5_overtime+
iharm_6_overtime+
iharm_7_overtime+
iharm_8_overtime+
iharm_9_overtime+
iharm_10_overtime+
iharm_11_overtime+
iharm_12_overtime+
iharm_13_overtime+
iharm_14_overtime+
iharm_15_overtime+
iharm_16_overtime+
iharm_17_overtime+
iharm_18_overtime+
iharm_19_overtime+
iharm_20_overtime+
iharm_21_overtime+
iharm_22_overtime+
iharm_23_overtime+
iharm_24_overtime+
iharm_25_overtime)>0,1,0)) +
sum(if((inuharm_1_overtime+
inuharm_2_overtime+
inuharm_3_overtime+
inuharm_4_overtime+
inuharm_5_overtime+
inuharm_6_overtime+
inuharm_7_overtime+
inuharm_8_overtime+
inuharm_9_overtime+
inuharm_10_overtime+
inuharm_11_overtime+
inuharm_12_overtime+
inuharm_13_overtime+
inuharm_14_overtime+
inuharm_15_overtime+
inuharm_16_overtime)>0,1,0)) AS allCount
FROM FROM
r_stat_limit_target_d r_stat_limit_target_d
<where> <where>