# Conflicts:
#	pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/pojo/dto/PmsSimpleDTO.java
#	pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/controller/ledgerManger/SubstationExpendController.java
#	pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/mapper/majornetwork/mapping/MonitorMapper.xml
#	pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/impl/SubstationExpendServiceImpl.java
#	pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/param/CommunicateParam.java
#	pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/param/DeviceInfoParam.java
#	pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/vo/CommunicateVO.java
#	pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/mapping/LineMapper.xml
#	pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/ISubstationExpendService.java
#	pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/SubstationExpendServiceImpl.java
#	pqs-event/event-api/src/main/java/com/njcn/event/pojo/param/WaveTypeParam.java
This commit is contained in:
huangzj
2023-05-16 09:44:57 +08:00
31 changed files with 562 additions and 109 deletions

View File

@@ -0,0 +1,28 @@
package com.njcn.algorithm.api;
import com.njcn.algorithm.api.fallback.CsEdDataFeignClientFallbackFactory;
import com.njcn.algorithm.pojo.po.CsEdDataPO;
import com.njcn.algorithm.pojo.vo.CsEdDataVO;
import com.njcn.common.pojo.constant.ServerInfo;
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
import com.njcn.common.pojo.response.HttpResult;
import com.njcn.common.utils.HttpResultUtil;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
/**
* @author xy
*/
@FeignClient(value = ServerInfo.ALGORITHM_BOOT, path = "/edData", fallbackFactory = CsEdDataFeignClientFallbackFactory.class,contextId = "edData")
public interface CsEdDataFeignClient {
@PostMapping("/findByDevTypeId")
HttpResult<CsEdDataVO> findByDevTypeId(@RequestParam("devType") String devType);
@PostMapping("/getAll")
HttpResult<List<CsEdDataPO>> getAll(@RequestParam("devType") String devType);
}

View File

@@ -0,0 +1,44 @@
package com.njcn.algorithm.api.fallback;
import com.njcn.algorithm.api.CsEdDataFeignClient;
import com.njcn.algorithm.pojo.po.CsEdDataPO;
import com.njcn.algorithm.pojo.vo.CsEdDataVO;
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
import com.njcn.common.pojo.exception.BusinessException;
import com.njcn.common.pojo.response.HttpResult;
import feign.hystrix.FallbackFactory;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import java.util.List;
/**
* @author xy
*/
@Slf4j
@Component
public class CsEdDataFeignClientFallbackFactory implements FallbackFactory<CsEdDataFeignClient> {
@Override
public CsEdDataFeignClient create(Throwable cause) {
//判断抛出异常是否为解码器抛出的业务异常
Enum<?> exceptionEnum = CommonResponseEnum.SERVICE_FALLBACK;
if (cause.getCause() instanceof BusinessException) {
BusinessException businessException = (BusinessException) cause.getCause();
}
Enum<?> finalExceptionEnum = exceptionEnum;
return new CsEdDataFeignClient() {
@Override
public HttpResult<CsEdDataVO> findByDevTypeId(String devType) {
log.error("{}异常,降级处理,异常为:{}","根据装置型号获取装置类型",cause.toString());
throw new BusinessException(finalExceptionEnum);
}
@Override
public HttpResult<List<CsEdDataPO>> getAll(String devType) {
log.error("{}异常,降级处理,异常为:{}","根据装置型号获取装置类型",cause.toString());
throw new BusinessException(finalExceptionEnum);
}
};
}
}

View File

@@ -6,7 +6,9 @@ import com.baomidou.mybatisplus.annotation.TableName;
import com.njcn.db.bo.BaseEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.util.Date;
/**
@@ -24,6 +26,7 @@ import java.util.Date;
*/
@Data
@TableName(value = "cs_ed_data")
@EqualsAndHashCode(callSuper = true)
public class CsEdDataPO extends BaseEntity {
/**
* id
@@ -83,4 +86,10 @@ public class CsEdDataPO extends BaseEntity {
@TableField(value = "file_path")
private String filePath;
/**
* 装置类型
*/
@TableField(value = "type")
private String type;
}

View File

@@ -77,4 +77,7 @@ public class CsEdDataVO extends BaseEntity {
@ApiModelProperty(value = ".bin文件")
private String filePath;
@ApiModelProperty(value = "type")
private String type;
}

View File

@@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.njcn.algorithm.pojo.param.CsEdDataAddParm;
import com.njcn.algorithm.pojo.param.CsEdDataAuditParm;
import com.njcn.algorithm.pojo.param.CsEdDataQueryParm;
import com.njcn.algorithm.pojo.po.CsDictPO;
import com.njcn.algorithm.pojo.po.CsEdDataPO;
import com.njcn.algorithm.pojo.vo.CsEdDataVO;
import com.njcn.algorithm.service.CsEdDataService;
import com.njcn.common.pojo.annotation.OperateInfo;
@@ -18,10 +20,10 @@ import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
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 org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Objects;
/**
* Description:
@@ -72,4 +74,14 @@ public class CsEdDataController extends BaseController {
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, page, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/findByDevTypeId")
@ApiOperation("根据装置型号获取装置类型")
@ApiImplicitParam(name = "devType", value = "装置型号", required = true)
public HttpResult<CsEdDataVO> findByDevTypeId(@Validated @RequestParam("devType") String devType){
String methodDescribe = getMethodDescribe("findByDevTypeId");
CsEdDataVO vo = csEdDataService.findByDevTypeId(devType);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, vo, methodDescribe);
}
}

View File

@@ -8,6 +8,8 @@ import com.njcn.algorithm.pojo.po.CsEdDataPO;
import com.baomidou.mybatisplus.extension.service.IService;
import com.njcn.algorithm.pojo.vo.CsEdDataVO;
import java.util.List;
/**
* Description:
* 接口文档访问地址http://serverIP:port/swagger-ui.html
@@ -42,5 +44,11 @@ public interface CsEdDataService extends IService<CsEdDataPO> {
* @Date: 2023/4/7
*/
IPage<CsEdDataVO> queryEdDataPage(CsEdDataQueryParm csEdDataQueryParm);
/**
* @Description: 根据装置型号获取装置类型
* @author: xuyang
*/
CsEdDataVO findByDevTypeId(String devType);
}

View File

@@ -1,5 +1,6 @@
package com.njcn.algorithm.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -16,7 +17,10 @@ import lombok.RequiredArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
/**
@@ -66,5 +70,20 @@ public class CsEdDataServiceImpl extends ServiceImpl<CsEdDataMapper, CsEdDataPO>
returnpage = this.getBaseMapper ().getPage(returnpage,csEdDataQueryParm);
return returnpage;
}
@Override
public CsEdDataVO findByDevTypeId(String devType) {
CsEdDataPO csEdDataPo = new CsEdDataPO();
LambdaQueryWrapper<CsEdDataPO> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(CsEdDataPO::getDevType,devType);
lambdaQueryWrapper.eq(CsEdDataPO::getStatus,1);
List<CsEdDataPO> list = this.baseMapper.selectList(lambdaQueryWrapper);
if (!CollectionUtils.isEmpty(list)){
csEdDataPo = list.get(0);
}
CsEdDataVO csEdDataVo = new CsEdDataVO();
BeanUtils.copyProperties(csEdDataPo,csEdDataVo);
return csEdDataVo;
}
}

View File

@@ -73,7 +73,7 @@ public class CsEquipmentDeliveryServiceImpl extends ServiceImpl<CsEquipmentDeliv
public CsEquipmentDeliveryPO queryEquipmentPOByndid(String ndid) {
QueryWrapper<CsEquipmentDeliveryPO> wrapper = new QueryWrapper();
wrapper.eq ("ndid", ndid);
wrapper.eq("status",2);
wrapper.eq("status",1);
CsEquipmentDeliveryPO csEquipmentDeliveryPO = this.baseMapper.selectOne (wrapper);
return csEquipmentDeliveryPO;
}

View File

@@ -35,7 +35,7 @@ public class PmsLedgerStaticDTO implements Serializable {
private HashMap<String,List<PmsSimpleDTO>> monitorStatisticsByDept;
/**
* 根据单位统计终端数量
*根据单位统计终端数量
*/
private HashMap<String,List<PmsSimpleDTO>> terminalStatisticsByDept;

View File

@@ -38,7 +38,7 @@ public class PmsMonitorBaseDTO implements Serializable {
private String powerrId;
/***
* 终端ID
*终端ID
*/
private String terminalId;

View File

@@ -24,4 +24,14 @@ public class PmsSimpleDTO implements Serializable {
private String classification;
private Integer sort;
@ApiModelProperty(name = "id", value = "id")
private String id;
@Data
public static class PmsSimpleOrg extends PmsSimpleDTO{
@ApiModelProperty(name = "orgName", value = "部门名称")
private String orgName;
}
}

View File

@@ -1,50 +1,50 @@
package com.njcn.device.pms.controller.ledgerManger;
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
import com.njcn.common.pojo.response.HttpResult;
import com.njcn.common.utils.HttpResultUtil;
import com.njcn.device.biz.pojo.dto.DeptGetChildrenDTO;
import com.njcn.device.biz.pojo.param.DeptGetLineParam;
import com.njcn.device.pms.service.majornetwork.IMonitorService;
import com.njcn.web.controller.BaseController;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
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.List;
/**
* @author wr
* @description
* @date 2023/4/26 10:00
*/
@RestController
@RequestMapping("/commTerminal")
@RequiredArgsConstructor
@Slf4j
@Api(tags = "通用台账-所有子孙部门以及监测点")
public class DeptMonitorController extends BaseController {
private final IMonitorService monitorService;
/**
* 通过部门获取所有子集部门所拥有的监测点
*
* @author wr
* @date 2023/4/26
*/
@PostMapping("/deptGetLineIds")
@ApiImplicitParam(name = "param", value = "请求参数", required = true)
public HttpResult<List<DeptGetChildrenDTO>> deptGetLineList(@RequestBody @Validated DeptGetLineParam param) {
String methodDescribe = getMethodDescribe("deptGetLineList");
List<DeptGetChildrenDTO> monitor = monitorService.deptMonitor(param);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, monitor, methodDescribe);
}
}
//package com.njcn.device.pms.controller.ledgerManger;
//
//import com.njcn.common.pojo.enums.response.CommonResponseEnum;
//import com.njcn.common.pojo.response.HttpResult;
//import com.njcn.common.utils.HttpResultUtil;
//import com.njcn.device.biz.pojo.dto.DeptGetChildrenDTO;
//import com.njcn.device.biz.pojo.param.DeptGetLineParam;
//import com.njcn.device.pms.service.majornetwork.IMonitorService;
//import com.njcn.web.controller.BaseController;
//import io.swagger.annotations.Api;
//import io.swagger.annotations.ApiImplicitParam;
//import lombok.RequiredArgsConstructor;
//import lombok.extern.slf4j.Slf4j;
//import org.springframework.validation.annotation.Validated;
//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.List;
//
///**
// * @author wr
// * @description
// * @date 2023/4/26 10:00
// */
//@RestController
//@RequestMapping("/commTerminal")
//@RequiredArgsConstructor
//@Slf4j
//@Api(tags = "通用台账-所有子孙部门以及监测点")
//public class DeptMonitorController extends BaseController {
//
// private final IMonitorService monitorService;
//
// /**
// * 通过部门获取所有子集部门所拥有的监测点
// *
// * @author wr
// * @date 2023/4/26
// */
// @PostMapping("/deptGetLineIds")
// @ApiImplicitParam(name = "param", value = "请求参数", required = true)
// public HttpResult<List<DeptGetChildrenDTO>> deptGetLineList(@RequestBody @Validated DeptGetLineParam param) {
// String methodDescribe = getMethodDescribe("deptGetLineList");
// List<DeptGetChildrenDTO> monitor = monitorService.deptMonitor(param);
// return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, monitor, methodDescribe);
// }
//
//}

View File

@@ -8,10 +8,10 @@ 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 com.njcn.device.pq.pojo.param.CommunicateParam;
import com.njcn.device.pq.pojo.vo.CommunicateVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
@@ -24,8 +24,6 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.njcn.web.controller.BaseController;
import java.math.BigDecimal;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
@@ -40,7 +38,7 @@ import java.util.Map;
@Slf4j
@Api(tags = "冀北变电站地图信息")
@RestController
@RequestMapping("/pms/substationExpend")
@RequestMapping("/substationExpend")
@RequiredArgsConstructor
public class SubstationExpendController extends BaseController {
@@ -48,7 +46,7 @@ public class SubstationExpendController extends BaseController {
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/getSubstationExpendInfo")
@PostMapping("/getPVSubstationExpendInfo")
@ApiOperation("冀北变电站地图信息")
@ApiImplicitParam(name = "param", value = "冀北变电站地图信息参数", required = true)
public HttpResult<Map<String, List<SubstationExpend>>> getSubstationExpendInfo(@RequestBody StatisticsBizBaseParam param) {
@@ -61,11 +59,20 @@ public class SubstationExpendController extends BaseController {
@PostMapping("/getLedgerStatic")
@ApiOperation("冀北主网监测点台账统计")
@ApiImplicitParam(name = "param", value = "冀北主网监测点台账统计参数", required = true)
public HttpResult<PmsLedgerStaticDTO> getLedgerStatic(@RequestBody PmsDeviceInfoParam param) {
public HttpResult<PmsLedgerStaticDTO> getLedgerStatic(@RequestBody StatisticsBizBaseParam param) {
String methodDescribe = getMethodDescribe("getLedgerStatic");
PmsLedgerStaticDTO result = substationExpendService.getLedgerStatistics(param);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/getPVCommunicationStatus")
@ApiOperation("冀北主网监测点pms:通讯状态统计")
@ApiImplicitParam(name = "param", value = "冀北主网监测点台账统计参数", required = true)
public HttpResult<List<CommunicateVO.PVCommunicateVO>> getPVCommunicationStatus(@RequestBody CommunicateParam param) {
String methodDescribe = getMethodDescribe("getPVCommunicationStatus");
List<CommunicateVO.PVCommunicateVO> communicationStatus = substationExpendService.getCommunicationStatus(param);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, communicationStatus, methodDescribe);
}
}

View File

@@ -203,8 +203,8 @@
</select>
<select id="statisticTerminal" resultType="com.njcn.device.pms.pojo.dto.PmsSimpleDTO">
SELECT
COUNT(t.Terminal_Id) statistics,
t.Voltage_Level name
COUNT(t.Terminal_Id) as statistics,
t.Voltage_Level as name
FROM
( SELECT
DISTINCT pm.Terminal_Id,

View File

@@ -9,7 +9,6 @@
pms_monitor.Operation_Id,
pms_monitor.Powerr_id,
pms_monitor.Terminal_Id,
pms_monitor.Generatrix_Id,
pms_monitor.line_Name,
pms_monitor.line_Id
FROM

View File

@@ -4,7 +4,6 @@ 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;

View File

@@ -1,28 +1,45 @@
package com.njcn.device.pms.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
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.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.PmsTerminal;
import com.njcn.device.pms.pojo.po.SubstationExpend;
import com.njcn.device.pms.service.ISubstationExpendService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.njcn.device.pms.service.majornetwork.IPmsGeneralDeviceService;
import com.njcn.device.pms.service.majornetwork.ITerminalService;
import com.njcn.device.pq.pojo.param.CommunicateParam;
import com.njcn.device.pq.pojo.po.Communicate;
import com.njcn.device.pq.pojo.vo.CommunicateVO;
import com.njcn.influxdb.param.InfluxDBPublicParam;
import com.njcn.influxdb.utils.InfluxDbUtils;
import com.njcn.system.api.DicDataFeignClient;
import com.njcn.system.enums.DicDataTypeEnum;
import com.njcn.system.pojo.po.DictData;
import com.njcn.user.api.DeptFeignClient;
import com.njcn.user.pojo.dto.DeptDTO;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.influxdb.dto.QueryResult;
import org.influxdb.impl.InfluxDBResultMapper;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
import java.util.stream.Stream;
@@ -43,9 +60,12 @@ public class SubstationExpendServiceImpl extends ServiceImpl<SubstationExpendMap
private final SubstationExpendMapper substationExpendMapper;
private final PmsGeneralDeviceInfoClient pmsGeneralDeviceInfoClient;
private final IPmsGeneralDeviceService pmsGeneralDeviceService;
private final DistributionMonitorMapper distributionMonitorMapper;
private final DicDataFeignClient dicDataFeignClient;
private final InfluxDbUtils influxDbUtils;
private final ITerminalService iTerminalService;
@Override
public Map<String, List<SubstationExpend>> getSubstationExpendInfo(StatisticsBizBaseParam param) {
@@ -89,26 +109,61 @@ public class SubstationExpendServiceImpl extends ServiceImpl<SubstationExpendMap
}
@Override
public PmsLedgerStaticDTO getLedgerStatistics(PmsDeviceInfoParam param) {
public PmsLedgerStaticDTO getLedgerStatistics(StatisticsBizBaseParam param) {
PmsLedgerStaticDTO ledgerStaticDTO = new PmsLedgerStaticDTO();
List<PmsGeneralDeviceDTO> generalDeviceDTOS = pmsGeneralDeviceInfoClient.getPwPmsDeviceInfoWithOrgId(param).getData();
PmsDeviceInfoParam pmsDeviceInfoParam = new PmsDeviceInfoParam();
pmsDeviceInfoParam.setDeptIndex(param.getId());
pmsDeviceInfoParam.setStatisticalType(new SimpleDTO());
List<PmsGeneralDeviceDTO> generalDeviceDTOS = pmsGeneralDeviceService.getPmsDeviceInfoWithInOrg(pmsDeviceInfoParam);
List<DictData> data = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DEV_VOLTAGE.getCode()).getData();
Map<String, DictData> collect = data.stream().collect(Collectors.toMap(DictData::getId, Function.identity()));
// 统计监测点
List<String> monitorIds = new ArrayList<>();
generalDeviceDTOS.stream().forEach(e -> monitorIds.addAll(e.getMonitorIdList()));
List<PmsSimpleDTO> monitorStatistic = distributionMonitorMapper.statisticMonitor(monitorIds);
ledgerStaticDTO.setMonitorStatistics(monitorStatistic);
//获取所有监测点信息
List<String> lineIds = generalDeviceDTOS.stream().flatMap(dto -> dto.getMonitorIdList().stream()).collect(Collectors.toList());
List<PmsSimpleDTO> pmsSimpleDTOS = distributionMonitorMapper.statisticMonitor(lineIds);
//根据电压等级进行分组
Map<String, List<PmsSimpleDTO>> voltageMap = pmsSimpleDTOS.stream().collect(Collectors.groupingBy(
x-> {if (collect.containsKey(x.getName())){
DictData dictData = collect.get(x.getName());
return dictData.getName()+"_"+dictData.getSort();
}
return null;
}
));
// 根据单位统计监测点数量
HashMap<String,List<PmsSimpleDTO>> monitorMap = new HashMap<>();
for (PmsGeneralDeviceDTO generalDeviceDTO : generalDeviceDTOS) {
List<PmsSimpleDTO> monitors = new ArrayList<>();
if (CollectionUtil.isNotEmpty(generalDeviceDTO.getMonitorIdList())) {
monitors = distributionMonitorMapper.statisticMonitor(generalDeviceDTO.getMonitorIdList());
List<List<PmsSimpleDTO.PmsSimpleOrg>> list=new ArrayList<>();
for (PmsGeneralDeviceDTO dto : generalDeviceDTOS) {
List<PmsSimpleDTO.PmsSimpleOrg> dtoList=new ArrayList<>();
for (Map.Entry<String, List<PmsSimpleDTO>> stringListEntry : voltageMap.entrySet()) {
if(StrUtil.isNotBlank(stringListEntry.getKey())){
List<PmsSimpleDTO> monitorList = stringListEntry.getValue().stream().filter(x -> dto.getMonitorIdList().contains(x.getId())).collect(Collectors.toList());
PmsSimpleDTO.PmsSimpleOrg simpleDTO=new PmsSimpleDTO.PmsSimpleOrg();
if(CollUtil.isNotEmpty(monitorList)){
simpleDTO.setStatistics((int) monitorList.stream().mapToDouble(PmsSimpleDTO::getStatistics).sum());
}else{
simpleDTO.setStatistics(0);
}
String key = stringListEntry.getKey();
String[] split = key.split("_");
simpleDTO.setName(split[0]);
simpleDTO.setSort(Integer.valueOf(split[1]));
simpleDTO.setOrgName(dto.getName());
dtoList.add(simpleDTO);
}
monitorMap.put(generalDeviceDTO.getName(),monitors);
}
ledgerStaticDTO.setMonitorStatisticsByDept(monitorMap);
dtoList.sort(Comparator.comparing(r -> r.getSort()));
list.add(dtoList);
}
ledgerStaticDTO.setMonitorStatisticsByDept(list);
// 统计终端
List<String> terminalIds = new ArrayList<>();
List<PmsGeneralDeviceDTO> filterList = generalDeviceDTOS.stream().filter(e -> e.getTerminalIdList().size() != 0).collect(Collectors.toList());
@@ -117,13 +172,54 @@ public class SubstationExpendServiceImpl extends ServiceImpl<SubstationExpendMap
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);
//获取所有终端信息
List<String> terminalList = generalDeviceDTOS.stream().flatMap(dto -> dto.getTerminalIdList().stream()).collect(Collectors.toList());
List<PmsSimpleDTO> dtoList = distributionMonitorMapper.statisticTerminal(terminalList);
//根据终端电压等级进行分组
Map<String, List<PmsSimpleDTO>> terminalMap = dtoList.stream().collect(Collectors.groupingBy(
x-> {if (collect.containsKey(x.getName())){
DictData dictData = collect.get(x.getName());
return dictData.getName()+"_"+dictData.getSort();
}
ledgerStaticDTO.setTerminalStatisticsByDept(terminalsMap);
return null;
}
));
// 根据单位统计终端数量
List<List<PmsSimpleDTO.PmsSimpleOrg>> terminalInfo=new ArrayList<>();
for (PmsGeneralDeviceDTO dto : generalDeviceDTOS) {
List<PmsSimpleDTO.PmsSimpleOrg> terminal=new ArrayList<>();
for (Map.Entry<String, List<PmsSimpleDTO>> stringListEntry : terminalMap.entrySet()) {
if(StrUtil.isNotBlank(stringListEntry.getKey())){
List<PmsSimpleDTO> monitorList = stringListEntry.getValue().stream().filter(x -> dto.getMonitorIdList().contains(x.getId())).collect(Collectors.toList());
PmsSimpleDTO.PmsSimpleOrg simpleDTO=new PmsSimpleDTO.PmsSimpleOrg();
if(CollUtil.isNotEmpty(monitorList)){
simpleDTO.setStatistics((int) monitorList.stream().mapToDouble(PmsSimpleDTO::getStatistics).sum());
}else{
simpleDTO.setStatistics(0);
}
String key = stringListEntry.getKey();
String[] split = key.split("_");
simpleDTO.setName(split[0]);
simpleDTO.setSort(Integer.valueOf(split[1]));
simpleDTO.setOrgName(dto.getName());
terminal.add(simpleDTO);
}
}
terminal.sort(Comparator.comparing(r -> r.getSort()));
terminalInfo.add(terminal);
}
ledgerStaticDTO.setTerminalStatisticsByDept(list);
// // 根据单位统计终端数量
// 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);
@@ -138,4 +234,54 @@ public class SubstationExpendServiceImpl extends ServiceImpl<SubstationExpendMap
ledgerStaticDTO.setIntegrityStatistics(integrityStatistic);
return ledgerStaticDTO;
}
@Override
public List<CommunicateVO.PVCommunicateVO> getCommunicationStatus(CommunicateParam param) {
PmsDeviceInfoParam pmsDeviceInfoParam = new PmsDeviceInfoParam();
pmsDeviceInfoParam.setDeptIndex(param.getId());
pmsDeviceInfoParam.setStatisticalType(new SimpleDTO());
List<PmsGeneralDeviceDTO> generalDeviceDTOS = pmsGeneralDeviceService.getPmsDeviceInfoWithInOrg(pmsDeviceInfoParam);
//获取所有终端id
List<String> terminalIds = generalDeviceDTOS.stream().flatMap(dto -> dto.getTerminalIdList().stream()).collect(Collectors.toList());
List<CommunicateVO.PVCommunicateVO> info =new ArrayList<>();
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("time >= '").append(DateUtil.beginOfDay(DateUtil.parse(param.getStartTime()))).append("' and ").append("time <= '").append(DateUtil.endOfDay(DateUtil.parse(param.getEndTime()))).append("' ");
// if(CollUtil.isNotEmpty(terminalIds)){
// stringBuilder.append(" and ").append("(");
// for (int i = 0; i < terminalIds.size(); i++) {
// if (terminalIds.size() - i != 1) {
// stringBuilder.append("dev_id = '").append(terminalIds.get(i)).append("' or ");
// } else {
// stringBuilder.append("dev_id = '").append(terminalIds.get(i)).append("')");
// }
// }
// }
stringBuilder.append(" limit "+param.getLimit());
String sql = "select * from " + InfluxDBPublicParam.PQS_COMMUNICATE + " where " + stringBuilder + InfluxDBPublicParam.TIME_ZONE;
// 获取暂降事件
QueryResult result = influxDbUtils.query(sql);
InfluxDBResultMapper influxDBResultMapper = new InfluxDBResultMapper();
List<Communicate> communicates = influxDBResultMapper.toPOJO(result, Communicate.class);
if(CollUtil.isEmpty(communicates)){
return info;
}
List<String> ids = communicates.stream().map(Communicate::getDevId).distinct().collect(Collectors.toList());
if(CollUtil.isNotEmpty(ids)){
List<PmsTerminal> terminalSelectByIds = iTerminalService.getTerminalSelectByIds(ids);
Map<String, String> terminalNameIp = terminalSelectByIds.stream().collect(Collectors.toMap(PmsTerminal::getId, x -> x.getName() + "_" + x.getIp()));
CommunicateVO.PVCommunicateVO communicate;
for (Communicate cate : communicates) {
communicate=new CommunicateVO.PVCommunicateVO();
BeanUtil.copyProperties(cate, communicate);
communicate.setTime(cate.getUpdateTime());
if(terminalNameIp.containsKey(cate.getDevId())){
communicate.setDevIp(terminalNameIp.get(cate.getDevId()));
}
info.add(communicate);
}
}
return info;
}
}

View File

@@ -6,7 +6,6 @@ import com.njcn.device.pms.pojo.param.PmsBaseParam;
import com.njcn.device.pms.pojo.param.PmsTerminalParam;
import com.njcn.device.pms.pojo.param.TerminalQueryParam;
import com.njcn.device.pms.pojo.po.PmsTerminal;
import com.njcn.web.pojo.param.BaseParam;
import java.util.List;

View File

@@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.njcn.common.pojo.enums.common.DataStateEnum;
import com.njcn.common.pojo.exception.BusinessException;
import com.njcn.device.pms.enums.PmsDeviceResponseEnum;
import com.njcn.device.pms.mapper.majornetwork.StatationStatMapper;
import com.njcn.device.pms.mapper.majornetwork.TerminalMapper;
import com.njcn.device.pms.pojo.param.PmsBaseParam;
import com.njcn.device.pms.pojo.param.PmsTerminalParam;
@@ -24,13 +23,11 @@ import com.njcn.system.api.DicDataFeignClient;
import com.njcn.user.api.DeptFeignClient;
import com.njcn.user.pojo.po.Dept;
import com.njcn.web.factory.PageFactory;
import com.njcn.web.pojo.param.BaseParam;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.List;
import java.util.Objects;

View File

@@ -0,0 +1,21 @@
package com.njcn.device.pq.pojo.param;
import com.njcn.common.pojo.param.StatisticsBizBaseParam;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author wr
* @description
* @date 2023/5/15 9:53
*/
@Data
public class CommunicateParam extends StatisticsBizBaseParam {
/**
* (查询条数)
*/
@ApiModelProperty("查询条数")
private Integer limit;
}

View File

@@ -168,5 +168,14 @@ public class DeviceInfoParam implements Serializable {
}
@Data
@EqualsAndHashCode(callSuper = true)
public static class CompareLimitParam extends BusinessParam{
@ApiModelProperty("查询条数")
@NotNull(message = " 查询条数查询条数不能为空")
private Integer limit;
}
}

View File

@@ -28,7 +28,9 @@ public class Communicate {
*/
@Column(name = "time")
private Instant updateTime;
/**
* 监测点id
*/
@Column(name = "line_id")
private String id;

View File

@@ -1,8 +1,12 @@
package com.njcn.device.pq.pojo.vo;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.njcn.common.utils.serializer.InstantDateSerializer;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.time.Instant;
import java.util.List;
/**
@@ -23,4 +27,30 @@ public class CommunicateVO implements Serializable {
* 事件类型(0中断1正常2退出)
*/
private List<Integer> type;
/**
* 冀北分布式光伏概览通讯状态统计(专用)
*/
@Data
public static class PVCommunicateVO{
@ApiModelProperty("监测id")
private String id;
@ApiModelProperty("终端id")
private String devId;
@ApiModelProperty("类型")
private Integer type;
@JsonSerialize(using = InstantDateSerializer.class)
@ApiModelProperty("发生时间")
private Instant time;
@ApiModelProperty("描述")
private String remark;
@ApiModelProperty("终端ip(终端名称_ip)")
private String devIp;
}
}

View File

@@ -38,7 +38,7 @@ public class SubstationExpendController extends BaseController {
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/getPVCommunicationStatus")
@ApiOperation("冀北主网监测点通讯状态统计")
@ApiOperation("冀北主网监测点pq:通讯状态统计")
@ApiImplicitParam(name = "param", value = "冀北主网监测点台账统计参数", required = true)
public HttpResult<List<CommunicateVO.PVCommunicateVO>> getPVCommunicationStatus(@RequestBody DeviceInfoParam.CompareLimitParam param) {
String methodDescribe = getMethodDescribe("getPVCommunicationStatus");

View File

@@ -211,7 +211,7 @@
<select id="getDeviceByIdOnOrOff" resultType="com.njcn.device.pq.pojo.vo.TerminalBaseVO">
SELECT
t1.name devName,t2.ip,t2.dev_type,t2.update_time,sub.name subName,gd.name gdName
t1.id devId,t1.name devName,t2.ip,t2.dev_type,t2.update_time,sub.name subName,gd.name gdName
FROM
pq_line t1,
pq_device t2,

View File

@@ -0,0 +1,25 @@
package com.njcn.device.pq.service;
import com.njcn.device.pq.pojo.param.DeviceInfoParam;
import com.njcn.device.pq.pojo.vo.CommunicateVO;
import java.util.List;
/**
* <p>
* 服务类
* </p>
*
* @author wr
* @since 2023-05-08
*/
public interface ISubstationExpendService {
/**
* 冀北主网监测点通讯状态统计
* @param param
* @return
*/
List<CommunicateVO.PVCommunicateVO> getCommunicationStatus(DeviceInfoParam.CompareLimitParam param);
}

View File

@@ -0,0 +1,89 @@
package com.njcn.device.pq.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil;
import com.njcn.device.pq.pojo.bo.DeviceType;
import com.njcn.device.pq.pojo.dto.GeneralDeviceDTO;
import com.njcn.device.pq.pojo.param.DeviceInfoParam;
import com.njcn.device.pq.pojo.po.Communicate;
import com.njcn.device.pq.pojo.vo.CommunicateVO;
import com.njcn.device.pq.pojo.vo.TerminalBaseVO;
import com.njcn.device.pq.service.ISubstationExpendService;
import com.njcn.device.pq.service.TerminalBaseService;
import com.njcn.influxdb.param.InfluxDBPublicParam;
import com.njcn.influxdb.utils.InfluxDbUtils;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.influxdb.dto.QueryResult;
import org.influxdb.impl.InfluxDBResultMapper;
import org.springframework.stereotype.Service;
import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;
/**
* <p>
* 服务实现类
* </p>
*
* @author wr
* @since 2023-05-08
*/
@Slf4j
@Service
@RequiredArgsConstructor
public class SubstationExpendServiceImpl implements ISubstationExpendService {
private final GeneralDeviceService generalDeviceService;
private final InfluxDbUtils influxDbUtils;
private final TerminalBaseService terminalBaseService;
@Override
public List<CommunicateVO.PVCommunicateVO> getCommunicationStatus(DeviceInfoParam.CompareLimitParam param) {
List<GeneralDeviceDTO> generalDeviceDTOS = generalDeviceService.getDeviceInfo(param, Stream.of(0).collect(Collectors.toList()), Stream.of(1).collect(Collectors.toList()));
//获取所有终端id
List<String> terminalIds = generalDeviceDTOS.stream().flatMap(dto -> dto.getDeviceIndexes().stream()).collect(Collectors.toList());
List<CommunicateVO.PVCommunicateVO> info =new ArrayList<>();
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("time >= '").append(DateUtil.beginOfDay(DateUtil.parse(param.getSearchBeginTime()))).append("' and ").append("time <= '").append(DateUtil.endOfDay(DateUtil.parse(param.getSearchEndTime()))).append("' ");
if(CollUtil.isNotEmpty(terminalIds)){
stringBuilder.append(" and ").append("(");
for (int i = 0; i < terminalIds.size(); i++) {
if (terminalIds.size() - i != 1) {
stringBuilder.append("dev_id = '").append(terminalIds.get(i)).append("' or ");
} else {
stringBuilder.append("dev_id = '").append(terminalIds.get(i)).append("')");
}
}
}
stringBuilder.append(" limit "+param.getLimit());
String sql = "select * from " + InfluxDBPublicParam.PQS_COMMUNICATE + " where " + stringBuilder + InfluxDBPublicParam.TIME_ZONE;
// 获取暂降事件
QueryResult result = influxDbUtils.query(sql);
InfluxDBResultMapper influxDBResultMapper = new InfluxDBResultMapper();
List<Communicate> communicates = influxDBResultMapper.toPOJO(result, Communicate.class);
if(CollUtil.isEmpty(communicates)){
return info;
}
List<String> ids = communicates.stream().map(Communicate::getDevId).distinct().collect(Collectors.toList());
if(CollUtil.isNotEmpty(ids)){
List<TerminalBaseVO> deviceByIds = terminalBaseService.getDeviceByIdOnOrOff(ids, new DeviceType(), 0);
Map<String, String> terminalNameIp = deviceByIds.stream().collect(Collectors.toMap(TerminalBaseVO::getDevId, x -> x.getDevName() + "_" + x.getIp()));
CommunicateVO.PVCommunicateVO communicate;
for (Communicate cate : communicates) {
communicate=new CommunicateVO.PVCommunicateVO();
BeanUtil.copyProperties(cate, communicate);
communicate.setTime(cate.getUpdateTime());
if(terminalNameIp.containsKey(cate.getDevId())){
communicate.setDevIp(terminalNameIp.get(cate.getDevId()));
}
info.add(communicate);
}
}
return info;
}
}

View File

@@ -40,4 +40,7 @@ public class WaveTypeParam extends DeviceInfoParam.BusinessParam {
value = "通讯状态 0.离线 1.在线"
)
private Integer comFlag = 1;
@ApiModelProperty(name = "type", value = "区分 0.pq 1.pms")
private Integer type = 0;
}

View File

@@ -55,8 +55,6 @@ import com.njcn.event.service.majornetwork.ReportService;
import com.njcn.event.utils.EchartsUtil;
import com.njcn.event.utils.FreemarkerUtil;
import com.njcn.event.utils.WordUtils;
import com.njcn.harmonic.pojo.vo.ComAssessVO;
import com.njcn.influxdb.mapper.InfluxDBResultMapperCn;
import com.njcn.influxdb.utils.InfluxDBCommUtils;
import com.njcn.influxdb.utils.InfluxDbUtils;
import com.njcn.poi.util.PoiUtil;

View File

@@ -7,7 +7,6 @@ import com.njcn.device.pq.api.GeneralDeviceInfoClient;
import com.njcn.device.pq.pojo.dto.GeneralDeviceDTO;
import com.njcn.device.pq.pojo.param.DeviceInfoParam;
import com.njcn.device.pq.pojo.param.OnlineRateParam;
import com.njcn.device.pq.pojo.po.OnlineRate;
import com.njcn.device.pq.pojo.vo.RStatOnlinerateVO;
import com.njcn.harmonic.mapper.TerminalDataMapper;
import com.njcn.harmonic.pojo.dto.PublicDTO;
@@ -15,10 +14,8 @@ import com.njcn.harmonic.pojo.vo.TerminalCensusVO;
import com.njcn.harmonic.pojo.vo.TerminalVO;
import com.njcn.harmonic.service.TerminalService;
import com.njcn.harmonic.utils.PubUtils;
import com.njcn.influxdb.param.InfluxDBPublicParam;
import com.njcn.influxdb.utils.InfluxDbUtils;
import lombok.AllArgsConstructor;
import org.influxdb.dto.QueryResult;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
@@ -28,7 +25,6 @@ import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
import static com.njcn.influxdb.param.InfluxDBPublicParam.*;
/**
* @author: chenchao