代码调整

This commit is contained in:
2022-11-10 10:47:55 +08:00
parent de1c9a6209
commit 11048c17f1
130 changed files with 10553 additions and 0 deletions

View File

@@ -0,0 +1,74 @@
package com.njcn.event.pojo.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
/**
* 监测点电压暂降和短时中断分布情况(用于前端表格展示)
* @Title EventDipShortDistributionTableVO
* @Package com.njcn.event.pojo.vo
* @Author jianghaifei
* @Date 2022-10-31 14:35
* @Version V1.0
*/
@Data
public class EventDipShortDistributionTableVO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 特征幅值
*/
@ApiModelProperty(name = "featureAmplitude",value = "特征幅值")
private String featureAmplitude;
/**
* 持续时间0-100ms
*/
@ApiModelProperty(name = "duration100",value = "持续时间0-100ms")
private Integer duration100;
/**
* 持续时间100-250ms
*/
@ApiModelProperty(name = "duration250",value = "持续时间100-250ms")
private Integer duration250;
/**
* 持续时间250-500ms
*/
@ApiModelProperty(name = "duration500",value = "持续时间250-500ms")
private Integer duration500;
/**
* 持续时间500-1000ms
*/
@ApiModelProperty(name = "duration1000",value = "持续时间500-1000ms")
private Integer duration1000;
/**
* 持续时间1000-3000ms
*/
@ApiModelProperty(name = "duration3000",value = "持续时间1000-3000ms")
private Integer duration3000;
/**
* 持续时间3000-10000ms
*/
@ApiModelProperty(name = "duration10000",value = "持续时间3000-10000ms")
private Integer duration10000;
/**
* 持续时间10000-20000ms
*/
@ApiModelProperty(name = "duration20000",value = "持续时间10000-20000ms")
private Integer duration20000;
/**
* 持续时间20000-60000ms
*/
@ApiModelProperty(name = "duration60000",value = "持续时间20000-60000ms")
private Integer duration60000;
}

View File

@@ -0,0 +1,43 @@
package com.njcn.event.pojo.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
/**监测点电压暂升分布情况(用于前端表格展示)
* @Title EventRiseDistributionTableVO
* @Package com.njcn.event.pojo.vo
* @Author jianghaifei
* @Date 2022-10-31 15:17
* @Version V1.0
*/
@Data
public class EventRiseDistributionTableVO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 特征幅值
*/
@ApiModelProperty(name = "featureAmplitude",value = "特征幅值")
private String featureAmplitude;
/**
* 持续时间100ms-500ms
*/
@ApiModelProperty(name = "duration500",value = "持续时间100ms-500ms")
private Integer duration500;
/**
* 持续时间500ms-5000ms
*/
@ApiModelProperty(name = "duration5000",value = "持续时间500ms-5000ms")
private Integer duration5000;
/**
* 持续时间5000ms-60000ms
*/
@ApiModelProperty(name = "duration60000",value = "持续时间5000ms-60000ms")
private Integer duration60000;
}

View File

@@ -0,0 +1,89 @@
package com.njcn.event.controller.distribution;
import com.njcn.common.pojo.annotation.OperateInfo;
import com.njcn.common.pojo.enums.common.LogEnum;
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
import com.njcn.common.pojo.response.HttpResult;
import com.njcn.common.utils.HttpResultUtil;
import com.njcn.event.pojo.param.EventMonitorReportParam;
import com.njcn.event.pojo.vo.EventDipShortDistributionTableVO;
import com.njcn.event.pojo.vo.EventMonitorReportVO;
import com.njcn.event.pojo.vo.EventRiseDistributionTableVO;
import com.njcn.event.service.distribution.PwEventMonitorReportService;
import com.njcn.web.controller.BaseController;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
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;
/**
* 暂态指标监测点统计报表
* @Title EventMonitorDailyReportController
* @Package com.njcn.event.controller
* @Author jianghaifei
* @Date 2022-10-25 09:36
* @Version V1.0
*/
@RestController
@RequestMapping("/pwEventMonitorReport")
@Api(tags = "配网-暂态指标统计报表")
@RequiredArgsConstructor
public class PwEventMonitorReportController extends BaseController {
private final PwEventMonitorReportService eventMonitorReportService;
/***
* @author jianghaifei
* @date 2022-10-29 16:37
* @param eventMonitorReportParam
* @return com.njcn.common.pojo.response.HttpResult<java.util.List<com.njcn.event.pojo.vo.EventMonitorReportVO>>
*/
@PostMapping("getMonitorEventCount")
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@ApiOperation("监测点暂态事件发生次数")
public HttpResult<List<EventMonitorReportVO>> getMonitorEventCount(@RequestBody EventMonitorReportParam eventMonitorReportParam) {
String methodDescribe = getMethodDescribe("getMonitorEventCount");
List<EventMonitorReportVO> list = eventMonitorReportService.getMonitorEventCount(eventMonitorReportParam);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe);
}
/***
*
* @author jianghaifei
* @date 2022-10-29 14:08
* @param eventMonitorReportParam
* @return com.njcn.common.pojo.response.HttpResult<com.njcn.event.pojo.vo.EventDipShortDistributionVO>
*/
@PostMapping("getEventDipShortDistribution")
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@ApiOperation("暂态指标监测点电压暂降和短时中断分布情况")
public HttpResult<List<EventDipShortDistributionTableVO>> getEventDipShortDistribution(@RequestBody EventMonitorReportParam eventMonitorReportParam) {
String methodDescribe = getMethodDescribe("getEventDipShortDistribution");
List<EventDipShortDistributionTableVO> list = eventMonitorReportService.getEventDipShortDistributionByCond(eventMonitorReportParam);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe);
}
/***
*
* @author jianghaifei
* @date 2022-10-29 14:08
* @param eventMonitorReportParam
* @return com.njcn.common.pojo.response.HttpResult<com.njcn.event.pojo.vo.EventRiseDistributionVO>
*/
@PostMapping("getEventRiseDistribution")
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@ApiOperation("暂态指标监测点电压暂升分布情况")
public HttpResult<List<EventRiseDistributionTableVO>> getEventRiseDistribution(@RequestBody EventMonitorReportParam eventMonitorReportParam) {
String methodDescribe = getMethodDescribe("getEventRiseDistribution");
List<EventRiseDistributionTableVO> list = eventMonitorReportService.getEventRiseDistributionByCond(eventMonitorReportParam);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe);
}
}

View File

@@ -0,0 +1,56 @@
package com.njcn.event.mapper.distribution;
import com.njcn.event.pojo.po.EventDistributionStatisticsPO;
import com.njcn.event.pojo.po.EventDurationLineChartPO;
import com.njcn.event.pojo.po.EventFeatureAmplitudeLineChartPO;
import com.njcn.event.pojo.po.RmpEventDetailPO;
import com.njcn.event.pojo.vo.EventDipShortDistributionVO;
import com.njcn.event.pojo.vo.EventRiseDistributionVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
/***
*
* @author jianghaifei
* @date 2022-11-08 09:26
* @return
*/
@Mapper
public interface PwEventDistributionStatisticsMapper {
/**
* 获取监测点暂态事件明细数据
*
* @param monitorIdList 监测点id
* @param startTime 开始时间
* @param endTime 结束时间
* @return 监测点暂态事件明细数据
*/
List<RmpEventDetailPO> getRmpEventDetail(@Param("monitorIdList") List<String> monitorIdList,
@Param("startTime") String startTime,
@Param("endTime") String endTime);
/***
* 获取监测点电压暂降和短时中断分布情况
* @author jianghaifei
* @date 2022-11-8 09:26:34
* @param map
* @return com.njcn.event.pojo.vo.EventDipShortDistributionVO
*/
EventDipShortDistributionVO getEventDipShortDistributionByCond(Map<String, Object> map);
/***
* 获取监测点电压暂升分布情况
* @author jianghaifei
* @date 2022-11-8 09:26:29
* @param map
* @return com.njcn.event.pojo.vo.EventRiseDistributionVO
*/
EventRiseDistributionVO getEventRiseDistributionByCond(Map<String, Object> map);
}

View File

@@ -0,0 +1,265 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.njcn.event.mapper.distribution.PwEventDistributionStatisticsMapper">
<!--获取监测点暂态事件明细数据-->
<select id="getRmpEventDetail" resultType="com.njcn.event.pojo.po.RmpEventDetailPO">
SELECT
measurement_point_id as measurementPointId,
start_time AS startTime,
duration AS duration,
feature_amplitude AS featureAmplitude
FROM
`r_mp_event_detail`
</select>
<!--获取监测点电压暂降和短时中断分布情况-->
<select id="getEventDipShortDistributionByCond"
resultType="com.njcn.event.pojo.vo.EventDipShortDistributionVO">
SELECT
COALESCE( sum( CASE WHEN r.feature_amplitude &gt;= 80 AND r.feature_amplitude &lt;= 90 AND duration &gt; 10 AND
duration &lt;= 100 THEN 1 ELSE 0 END ), 0 ) "featureAmp90with100ms",
COALESCE( sum( CASE WHEN r.feature_amplitude &gt;= 80 AND r.feature_amplitude &lt;= 90 AND duration &gt; 100 AND
duration &lt;= 250 THEN 1 ELSE 0 END ), 0 ) "featureAmp90with250ms",
COALESCE( sum( CASE WHEN r.feature_amplitude &gt;= 80 AND r.feature_amplitude &lt;= 90 AND duration &gt; 250 AND
duration &lt;= 500 THEN 1 ELSE 0 END ), 0 ) "featureAmp90with500ms",
COALESCE( sum( CASE WHEN r.feature_amplitude &gt;= 80 AND r.feature_amplitude &lt;= 90 AND duration &gt; 500 AND
duration &lt;= 1000 THEN 1 ELSE 0 END ), 0 ) "featureAmp90with1000ms",
COALESCE( sum( CASE WHEN r.feature_amplitude &gt;= 80 AND r.feature_amplitude &lt;= 90 AND duration &gt; 1000 AND
duration &lt;= 3000 THEN 1 ELSE 0 END ), 0 ) "featureAmp90with3000ms",
COALESCE( sum( CASE WHEN r.feature_amplitude &gt;= 80 AND r.feature_amplitude &lt;= 90 AND duration &gt; 3000 AND
duration &lt;= 10000 THEN 1 ELSE 0 END ), 0 ) "featureAmp90with10000ms",
COALESCE( sum( CASE WHEN r.feature_amplitude &gt;= 80 AND r.feature_amplitude &lt;= 90 AND duration &gt; 10000 AND
duration &lt;= 20000 THEN 1 ELSE 0 END ), 0 ) "featureAmp90with20000ms",
COALESCE( sum( CASE WHEN r.feature_amplitude &gt;= 80 AND r.feature_amplitude &lt;= 90 AND duration &gt; 20000 AND
duration &lt;= 60000 THEN 1 ELSE 0 END ), 0 ) "featureAmp90with60000ms",
COALESCE( sum( CASE WHEN r.feature_amplitude &gt;= 70 AND r.feature_amplitude &lt; 80 AND duration &gt; 10 AND
duration &lt;= 100 THEN 1 ELSE 0 END ), 0 ) "featureAmp80with100ms",
COALESCE( sum( CASE WHEN r.feature_amplitude &gt;= 70 AND r.feature_amplitude &lt; 80 AND duration &gt; 100 AND
duration &lt;= 250 THEN 1 ELSE 0 END ), 0 ) "featureAmp80with250ms",
COALESCE( sum( CASE WHEN r.feature_amplitude &gt;= 70 AND r.feature_amplitude &lt; 80 AND duration &gt; 250 AND
duration &lt;= 500 THEN 1 ELSE 0 END ), 0 ) "featureAmp80with500ms",
COALESCE( sum( CASE WHEN r.feature_amplitude &gt;= 70 AND r.feature_amplitude &lt; 80 AND duration &gt; 500 AND
duration &lt;= 1000 THEN 1 ELSE 0 END ), 0 ) "featureAmp80with1000ms",
COALESCE( sum( CASE WHEN r.feature_amplitude &gt;= 70 AND r.feature_amplitude &lt; 80 AND duration &gt; 1000 AND
duration &lt;= 3000 THEN 1 ELSE 0 END ), 0 ) "featureAmp80with3000ms",
COALESCE( sum( CASE WHEN r.feature_amplitude &gt;= 70 AND r.feature_amplitude &lt; 80 AND duration &gt; 3000 AND
duration &lt;= 10000 THEN 1 ELSE 0 END ), 0 ) "featureAmp80with10000ms",
COALESCE( sum( CASE WHEN r.feature_amplitude &gt;= 70 AND r.feature_amplitude &lt; 80 AND duration &gt; 10000 AND
duration &lt;= 20000 THEN 1 ELSE 0 END ), 0 ) "featureAmp80with20000ms",
COALESCE( sum( CASE WHEN r.feature_amplitude &gt;= 70 AND r.feature_amplitude &lt; 80 AND duration &gt; 20000 AND
duration &lt;= 60000 THEN 1 ELSE 0 END ), 0 ) "featureAmp80with60000ms",
COALESCE( sum( CASE WHEN r.feature_amplitude &gt;= 60 AND r.feature_amplitude &lt; 70 AND duration &gt; 10 AND
duration &lt;= 100 THEN 1 ELSE 0 END ), 0 ) "featureAmp70with100ms",
COALESCE( sum( CASE WHEN r.feature_amplitude &gt;= 60 AND r.feature_amplitude &lt; 70 AND duration &gt; 100 AND
duration &lt;= 250 THEN 1 ELSE 0 END ), 0 ) "featureAmp70with250ms",
COALESCE( sum( CASE WHEN r.feature_amplitude &gt;= 60 AND r.feature_amplitude &lt; 70 AND duration &gt; 250 AND
duration &lt;= 500 THEN 1 ELSE 0 END ), 0 ) "featureAmp70with500ms",
COALESCE( sum( CASE WHEN r.feature_amplitude &gt;= 60 AND r.feature_amplitude &lt; 70 AND duration &gt; 500 AND
duration &lt;= 1000 THEN 1 ELSE 0 END ), 0 ) "featureAmp70with1000ms",
COALESCE( sum( CASE WHEN r.feature_amplitude &gt;= 60 AND r.feature_amplitude &lt; 70 AND duration &gt; 1000 AND
duration &lt;= 3000 THEN 1 ELSE 0 END ), 0 ) "featureAmp70with3000ms",
COALESCE( sum( CASE WHEN r.feature_amplitude &gt;= 60 AND r.feature_amplitude &lt; 70 AND duration &gt; 3000 AND
duration &lt;= 10000 THEN 1 ELSE 0 END ), 0 ) "featureAmp70with10000ms",
COALESCE( sum( CASE WHEN r.feature_amplitude &gt;= 60 AND r.feature_amplitude &lt; 70 AND duration &gt; 10000 AND
duration &lt;= 20000 THEN 1 ELSE 0 END ), 0 ) "featureAmp70with20000ms",
COALESCE( sum( CASE WHEN r.feature_amplitude &gt;= 60 AND r.feature_amplitude &lt; 70 AND duration &gt; 20000 AND
duration &lt;= 60000 THEN 1 ELSE 0 END ), 0 ) "featureAmp70with60000ms",
COALESCE( sum( CASE WHEN r.feature_amplitude &gt;= 50 AND r.feature_amplitude &lt; 60 AND duration &gt; 10 AND
duration &lt;= 100 THEN 1 ELSE 0 END ), 0 ) "featureAmp60with100ms",
COALESCE( sum( CASE WHEN r.feature_amplitude &gt;= 50 AND r.feature_amplitude &lt; 60 AND duration &gt; 100 AND
duration &lt;= 250 THEN 1 ELSE 0 END ), 0 ) "featureAmp60with250ms",
COALESCE( sum( CASE WHEN r.feature_amplitude &gt;= 50 AND r.feature_amplitude &lt; 60 AND duration &gt; 250 AND
duration &lt;= 500 THEN 1 ELSE 0 END ), 0 ) "featureAmp60with500ms",
COALESCE( sum( CASE WHEN r.feature_amplitude &gt;= 50 AND r.feature_amplitude &lt; 60 AND duration &gt; 500 AND
duration &lt;= 1000 THEN 1 ELSE 0 END ), 0 ) "featureAmp60with1000ms",
COALESCE( sum( CASE WHEN r.feature_amplitude &gt;= 50 AND r.feature_amplitude &lt; 60 AND duration &gt; 1000 AND
duration &lt;= 3000 THEN 1 ELSE 0 END ), 0 ) "featureAmp60with3000ms",
COALESCE( sum( CASE WHEN r.feature_amplitude &gt;= 50 AND r.feature_amplitude &lt; 60 AND duration &gt; 3000 AND
duration &lt;= 10000 THEN 1 ELSE 0 END ), 0 ) "featureAmp60with10000ms",
COALESCE( sum( CASE WHEN r.feature_amplitude &gt;= 50 AND r.feature_amplitude &lt; 60 AND duration &gt; 10000 AND
duration &lt;= 20000 THEN 1 ELSE 0 END ), 0 ) "featureAmp60with20000ms",
COALESCE( sum( CASE WHEN r.feature_amplitude &gt;= 50 AND r.feature_amplitude &lt; 60 AND duration &gt; 20000 AND
duration &lt;= 60000 THEN 1 ELSE 0 END ), 0 ) "featureAmp60with60000ms",
COALESCE( sum( CASE WHEN r.feature_amplitude &gt;= 40 AND r.feature_amplitude &lt; 50 AND duration &gt; 10 AND
duration &lt;= 100 THEN 1 ELSE 0 END ), 0 ) "featureAmp50with100ms",
COALESCE( sum( CASE WHEN r.feature_amplitude &gt;= 40 AND r.feature_amplitude &lt; 50 AND duration &gt; 100 AND
duration &lt;= 250 THEN 1 ELSE 0 END ), 0 ) "featureAmp50with250ms",
COALESCE( sum( CASE WHEN r.feature_amplitude &gt;= 40 AND r.feature_amplitude &lt; 50 AND duration &gt; 250 AND
duration &lt;= 500 THEN 1 ELSE 0 END ), 0 ) "featureAmp50with500ms",
COALESCE( sum( CASE WHEN r.feature_amplitude &gt;= 40 AND r.feature_amplitude &lt; 50 AND duration &gt; 500 AND
duration &lt;= 1000 THEN 1 ELSE 0 END ), 0 ) "featureAmp50with1000ms",
COALESCE( sum( CASE WHEN r.feature_amplitude &gt;= 40 AND r.feature_amplitude &lt; 50 AND duration &gt; 1000 AND
duration &lt;= 3000 THEN 1 ELSE 0 END ), 0 ) "featureAmp50with3000ms",
COALESCE( sum( CASE WHEN r.feature_amplitude &gt;= 40 AND r.feature_amplitude &lt; 50 AND duration &gt; 3000 AND
duration &lt;= 10000 THEN 1 ELSE 0 END ), 0 ) "featureAmp50with10000ms",
COALESCE( sum( CASE WHEN r.feature_amplitude &gt;= 40 AND r.feature_amplitude &lt; 50 AND duration &gt; 10000 AND
duration &lt;= 20000 THEN 1 ELSE 0 END ), 0 ) "featureAmp50with20000ms",
COALESCE( sum( CASE WHEN r.feature_amplitude &gt;= 40 AND r.feature_amplitude &lt; 50 AND duration &gt; 20000 AND
duration &lt;= 60000 THEN 1 ELSE 0 END ), 0 ) "featureAmp50with60000ms",
COALESCE( sum( CASE WHEN r.feature_amplitude &gt;= 30 AND r.feature_amplitude &lt; 40 AND duration &gt; 10 AND
duration &lt;= 100 THEN 1 ELSE 0 END ), 0 ) "featureAmp40with100ms",
COALESCE( sum( CASE WHEN r.feature_amplitude &gt;= 30 AND r.feature_amplitude &lt; 40 AND duration &gt; 100 AND
duration &lt;= 250 THEN 1 ELSE 0 END ), 0 ) "featureAmp40with250ms",
COALESCE( sum( CASE WHEN r.feature_amplitude &gt;= 30 AND r.feature_amplitude &lt; 40 AND duration &gt; 250 AND
duration &lt;= 500 THEN 1 ELSE 0 END ), 0 ) "featureAmp40with500ms",
COALESCE( sum( CASE WHEN r.feature_amplitude &gt;= 30 AND r.feature_amplitude &lt; 40 AND duration &gt; 500 AND
duration &lt;= 1000 THEN 1 ELSE 0 END ), 0 ) "featureAmp40with1000ms",
COALESCE( sum( CASE WHEN r.feature_amplitude &gt;= 30 AND r.feature_amplitude &lt; 40 AND duration &gt; 1000 AND
duration &lt;= 3000 THEN 1 ELSE 0 END ), 0 ) "featureAmp40with3000ms",
COALESCE( sum( CASE WHEN r.feature_amplitude &gt;= 30 AND r.feature_amplitude &lt; 40 AND duration &gt; 3000 AND
duration &lt;= 10000 THEN 1 ELSE 0 END ), 0 ) "featureAmp40with10000ms",
COALESCE( sum( CASE WHEN r.feature_amplitude &gt;= 30 AND r.feature_amplitude &lt; 40 AND duration &gt; 10000 AND
duration &lt;= 20000 THEN 1 ELSE 0 END ), 0 ) "featureAmp40with20000ms",
COALESCE( sum( CASE WHEN r.feature_amplitude &gt;= 30 AND r.feature_amplitude &lt; 40 AND duration &gt; 20000 AND
duration &lt;= 60000 THEN 1 ELSE 0 END ), 0 ) "featureAmp40with60000ms",
COALESCE( sum( CASE WHEN r.feature_amplitude &gt;= 20 AND r.feature_amplitude &lt; 30 AND duration &gt; 10 AND
duration &lt;= 100 THEN 1 ELSE 0 END ), 0 ) "featureAmp30with100ms",
COALESCE( sum( CASE WHEN r.feature_amplitude &gt;= 20 AND r.feature_amplitude &lt; 30 AND duration &gt; 100 AND
duration &lt;= 250 THEN 1 ELSE 0 END ), 0 ) "featureAmp30with250ms",
COALESCE( sum( CASE WHEN r.feature_amplitude &gt;= 20 AND r.feature_amplitude &lt; 30 AND duration &gt; 250 AND
duration &lt;= 500 THEN 1 ELSE 0 END ), 0 ) "featureAmp30with500ms",
COALESCE( sum( CASE WHEN r.feature_amplitude &gt;= 20 AND r.feature_amplitude &lt; 30 AND duration &gt; 500 AND
duration &lt;= 1000 THEN 1 ELSE 0 END ), 0 ) "featureAmp30with1000ms",
COALESCE( sum( CASE WHEN r.feature_amplitude &gt;= 20 AND r.feature_amplitude &lt; 30 AND duration &gt; 1000 AND
duration &lt;= 3000 THEN 1 ELSE 0 END ), 0 ) "featureAmp30with3000ms",
COALESCE( sum( CASE WHEN r.feature_amplitude &gt;= 20 AND r.feature_amplitude &lt; 30 AND duration &gt; 3000 AND
duration &lt;= 10000 THEN 1 ELSE 0 END ), 0 ) "featureAmp30with10000ms",
COALESCE( sum( CASE WHEN r.feature_amplitude &gt;= 20 AND r.feature_amplitude &lt; 30 AND duration &gt; 10000 AND
duration &lt;= 20000 THEN 1 ELSE 0 END ), 0 ) "featureAmp30with20000ms",
COALESCE( sum( CASE WHEN r.feature_amplitude &gt;= 20 AND r.feature_amplitude &lt; 30 AND duration &gt; 20000 AND
duration &lt;= 60000 THEN 1 ELSE 0 END ), 0 ) "featureAmp30with60000ms",
COALESCE( sum( CASE WHEN r.feature_amplitude &gt;= 10 AND r.feature_amplitude &lt; 20 AND duration &gt; 10 AND
duration &lt;= 100 THEN 1 ELSE 0 END ), 0 ) "featureAmp20with100ms",
COALESCE( sum( CASE WHEN r.feature_amplitude &gt;= 10 AND r.feature_amplitude &lt; 20 AND duration &gt; 100 AND
duration &lt;= 250 THEN 1 ELSE 0 END ), 0 ) "featureAmp20with250ms",
COALESCE( sum( CASE WHEN r.feature_amplitude &gt;= 10 AND r.feature_amplitude &lt; 20 AND duration &gt; 250 AND
duration &lt;= 500 THEN 1 ELSE 0 END ), 0 ) "featureAmp20with500ms",
COALESCE( sum( CASE WHEN r.feature_amplitude &gt;= 10 AND r.feature_amplitude &lt; 20 AND duration &gt; 500 AND
duration &lt;= 1000 THEN 1 ELSE 0 END ), 0 ) "featureAmp20with1000ms",
COALESCE( sum( CASE WHEN r.feature_amplitude &gt;= 10 AND r.feature_amplitude &lt; 20 AND duration &gt; 1000 AND
duration &lt;= 3000 THEN 1 ELSE 0 END ), 0 ) "featureAmp20with3000ms",
COALESCE( sum( CASE WHEN r.feature_amplitude &gt;= 10 AND r.feature_amplitude &lt; 20 AND duration &gt; 3000 AND
duration &lt;= 10000 THEN 1 ELSE 0 END ), 0 ) "featureAmp20with10000ms",
COALESCE( sum( CASE WHEN r.feature_amplitude &gt;= 10 AND r.feature_amplitude &lt; 20 AND duration &gt; 10000 AND
duration &lt;= 20000 THEN 1 ELSE 0 END ), 0 ) "featureAmp20with20000ms",
COALESCE( sum( CASE WHEN r.feature_amplitude &gt;= 10 AND r.feature_amplitude &lt; 20 AND duration &gt; 20000 AND
duration &lt;= 60000 THEN 1 ELSE 0 END ), 0 ) "featureAmp20with60000ms",
COALESCE( sum( CASE WHEN r.feature_amplitude &gt;= 0 AND r.feature_amplitude &lt; 10 AND duration &gt; 10 AND
duration &lt;= 100 THEN 1 ELSE 0 END ), 0 ) "featureAmp10with100ms",
COALESCE( sum( CASE WHEN r.feature_amplitude &gt;= 0 AND r.feature_amplitude &lt; 10 AND duration &gt; 100 AND
duration &lt;= 250 THEN 1 ELSE 0 END ), 0 ) "featureAmp10with250ms",
COALESCE( sum( CASE WHEN r.feature_amplitude &gt;= 0 AND r.feature_amplitude &lt; 10 AND duration &gt; 250 AND
duration &lt;= 500 THEN 1 ELSE 0 END ), 0 ) "featureAmp10with500ms",
COALESCE( sum( CASE WHEN r.feature_amplitude &gt;= 0 AND r.feature_amplitude &lt; 10 AND duration &gt; 500 AND
duration &lt;= 1000 THEN 1 ELSE 0 END ), 0 ) "featureAmp10with1000ms",
COALESCE( sum( CASE WHEN r.feature_amplitude &gt;= 0 AND r.feature_amplitude &lt; 10 AND duration &gt; 1000 AND
duration &lt;= 3000 THEN 1 ELSE 0 END ), 0 ) "featureAmp10with3000ms",
COALESCE( sum( CASE WHEN r.feature_amplitude &gt;= 0 AND r.feature_amplitude &lt; 10 AND duration &gt; 3000 AND
duration &lt;= 10000 THEN 1 ELSE 0 END ), 0 ) "featureAmp10with10000ms",
COALESCE( sum( CASE WHEN r.feature_amplitude &gt;= 0 AND r.feature_amplitude &lt; 10 AND duration &gt; 10000 AND
duration &lt;= 20000 THEN 1 ELSE 0 END ), 0 ) "featureAmp10with20000ms",
COALESCE( sum( CASE WHEN r.feature_amplitude &gt;= 0 AND r.feature_amplitude &lt; 10 AND duration &gt; 20000 AND
duration &lt;= 60000 THEN 1 ELSE 0 END ), 0 ) "featureAmp10with60000ms"
FROM
(
SELECT
duration,
feature_amplitude
FROM
r_mp_event_detail
WHERE 1 = 1
AND measurement_point_id IN
<foreach collection="monitorIdList" item="item" open="(" close=")" separator=",">
#{item}
</foreach>
AND event_type IN
<foreach collection="eventTypeList" item="type" open="(" close=")" separator=",">
#{type}
</foreach>
<choose>
<when test="dateType != null and dateType == 3">
<if test="startTime != null and startTime != ''">
AND DATE_FORMAT(start_time, '%Y-%m') &gt;= #{startTime}
</if>
<if test="endTime != null and endTime != ''">
AND DATE_FORMAT(start_time, '%Y-%m') &lt;= #{endTime}
</if>
</when>
<when test="dateType != null and dateType == 5">
<if test="startTime != null and startTime != ''">
AND DATE_FORMAT(start_time, '%Y-%m-%d') &gt;= #{startTime}
</if>
<if test="endTime != null and endTime != ''">
AND DATE_FORMAT(start_time, '%Y-%m-%d') &lt;= #{endTime}
</if>
</when>
</choose>
)
r
</select>
<!--获取监测点电压暂升分布情况-->
<select id="getEventRiseDistributionByCond" resultType="com.njcn.event.pojo.vo.EventRiseDistributionVO">
SELECT
COALESCE(sum(CASE WHEN r.feature_amplitude &gt;= 120 AND duration &gt; 10 AND duration &lt;= 500 THEN 1 ELSE 0 END), 0) "featureAmp120with500ms",
COALESCE(sum(CASE WHEN r.feature_amplitude &gt;= 120 AND duration &gt; 500 AND duration &lt;= 5000 THEN 1 ELSE 0 END), 0) "featureAmp120with5000ms",
COALESCE(sum(CASE WHEN r.feature_amplitude &gt;= 120 AND duration &gt; 5000 AND duration &lt;= 60000 THEN 1 ELSE 0 END), 0) "featureAmp120with60000ms",
COALESCE(sum(CASE WHEN r.feature_amplitude &gt;= -120 AND r.feature_amplitude &lt;= 110 AND duration &gt; 10 AND duration &lt;= 500 THEN 1 ELSE 0 END), 0) "featureAmp110with500ms",
COALESCE(sum(CASE WHEN r.feature_amplitude &gt;= -120 AND r.feature_amplitude &lt;= 110 AND duration &gt; 500 AND duration &lt;= 5000 THEN 1 ELSE 0 END), 0) "featureAmp110with5000ms",
COALESCE(sum(CASE WHEN r.feature_amplitude &gt;= -120 AND r.feature_amplitude &lt;= 110 AND duration &gt; 5000 AND duration &lt;= 60000 THEN 1 ELSE 0 END), 0) "featureAmp110with60000ms"
FROM
(
SELECT
duration,
feature_amplitude
FROM
r_mp_event_detail
WHERE 1 = 1
AND measurement_point_id IN
<foreach collection="monitorIdList" item="item" open="(" close=")" separator=",">
#{item}
</foreach>
AND event_type IN
<foreach collection="eventTypeList" item="type" open="(" close=")" separator=",">
#{type}
</foreach>
<choose>
<when test="dateType != null and dateType == 3">
<if test="startTime != null and startTime != ''">
AND DATE_FORMAT(start_time, '%Y-%m') &gt;= #{startTime}
</if>
<if test="endTime != null and endTime != ''">
AND DATE_FORMAT(start_time, '%Y-%m') &lt;= #{endTime}
</if>
</when>
<when test="dateType != null and dateType == 5">
<if test="startTime != null and startTime != ''">
AND DATE_FORMAT(start_time, '%Y-%m-%d') &gt;= #{startTime}
</if>
<if test="endTime != null and endTime != ''">
AND DATE_FORMAT(start_time, '%Y-%m-%d') &lt;= #{endTime}
</if>
</when>
</choose>
)
r
</select>
</mapper>

View File

@@ -0,0 +1,356 @@
package com.njcn.event.service.distribution.Impl;
import cn.hutool.core.collection.CollUtil;
import com.njcn.common.pojo.constant.BizParamConstant;
import com.njcn.device.pms.api.PwMonitorClient;
import com.njcn.device.pms.pojo.dto.PwPmsMonitorDTO;
import com.njcn.device.pms.pojo.param.PwPmsMonitorParam;
import com.njcn.event.mapper.distribution.PwEventDistributionStatisticsMapper;
import com.njcn.event.mapper.distribution.PwRmpEventDetailMapper;
import com.njcn.event.pojo.param.EventMonitorReportParam;
import com.njcn.event.pojo.po.RmpEventDetailPO;
import com.njcn.event.pojo.vo.*;
import com.njcn.event.service.distribution.PwEventMonitorReportService;
import com.njcn.system.api.DicDataFeignClient;
import com.njcn.system.enums.DicDataEnum;
import com.njcn.system.enums.DicDataTypeEnum;
import com.njcn.system.pojo.po.DictData;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.*;
import java.util.stream.Collectors;
/**
* @Title EventMonitorDailyReportServiceImpl
* @Package com.njcn.event.service.Impl
* @Author jianghaifei
* @Date 2022-10-25 09:39
* @Version V1.0
*/
@Service
@RequiredArgsConstructor
public class PwEventMonitorReportServiceImpl implements PwEventMonitorReportService {
private final PwMonitorClient pwMonitorClient;
private final PwRmpEventDetailMapper rmpEventDetailMapper;
private final DicDataFeignClient dicDataFeignClient;
private final PwEventDistributionStatisticsMapper eventDistributionStatisticsMapper;
/***
* 监测点暂态事件发生次数
* @author jianghaifei
* @date 2022-10-29 18:05
* @param eventMonitorReportParam
* @return java.util.List<com.njcn.event.pojo.vo.EventMonitorReportVO>
*/
@Override
public List<EventMonitorReportVO> getMonitorEventCount(EventMonitorReportParam eventMonitorReportParam) {
//提取查询参数
// String monitorName = eventMonitorReportParam.getMonitorName(); //监测点名称
// String id = eventMonitorReportParam.getId(); //单位id
String startTime = eventMonitorReportParam.getStartTime(); //开始时间
String endTime = eventMonitorReportParam.getEndTime(); //结束时间
Integer type = eventMonitorReportParam.getType(); //时间类型(日/月)
//查询监测点信息
List<PwPmsMonitorDTO> monitorList = this.getMonitorList(eventMonitorReportParam);
List<String> monitorIdList = monitorList.stream().map(PwPmsMonitorDTO::getMonitorId).collect(Collectors.toList()); //监测点id信息
Map<String, PwPmsMonitorDTO> monitorMap = monitorList.stream().collect(Collectors.toMap(PwPmsMonitorDTO::getMonitorId, monitor -> monitor));
//获取电压等级的字典
List<DictData> voltageLevelList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DEV_VOLTAGE.getCode()).getData();
//将电压信息转成mapkeyid valuename
Map<String, String> voltageLevelMap = voltageLevelList.stream().collect(Collectors.toMap(DictData::getId, DictData::getName));
//获取暂态指标的字典
List<DictData> eventStatisList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.EVENT_STATIS.getCode()).getData();
//将暂态指标信息转成mapkeyid value实体
Map<String, DictData> eventStatisMap = eventStatisList.stream().collect(Collectors.toMap(DictData::getId, data -> data));
//将暂态指标信息转成mapkeycode value实体
// Map<String, DictData> eventStatisMapByCode = eventStatisList.stream().collect(Collectors.toMap(DictData::getCode, data -> data));
//查询暂态事件明细
List<RmpEventDetailPO> detailList;
if (BizParamConstant.STAT_BIZ_MONTH.equals(type + "")) { //按月查
detailList = rmpEventDetailMapper.getDetailsOfTransientEventsByMonth(monitorIdList, null, startTime, endTime);
} else { //按日查
detailList = rmpEventDetailMapper.getDetailsOfTransientEvents(monitorIdList, null, startTime, endTime);
}
Map<String, List<RmpEventDetailPO>> groupByMIdDetailMap = detailList.stream().collect(Collectors.groupingBy(RmpEventDetailPO::getMeasurementPointId, Collectors.toList()));
List<EventMonitorReportVO> resultList = new ArrayList<>();
groupByMIdDetailMap.forEach((key, monitorEventDetailList) -> {
//封装返回需要返回的信息
PwPmsMonitorDTO pmsMonitorDTO = monitorMap.get(key);
EventMonitorReportVO eventMonitorReportVO = new EventMonitorReportVO();
eventMonitorReportVO.setDate(startTime); //查询时间
//监测点基本信息
eventMonitorReportVO.setMonitorId(pmsMonitorDTO.getMonitorId()); //监测点id
eventMonitorReportVO.setMonitorName(pmsMonitorDTO.getMonitorName()); //监测点name
eventMonitorReportVO.setOrgId(pmsMonitorDTO.getOrgId()); //单位id
eventMonitorReportVO.setOrgName(pmsMonitorDTO.getOrgName()); //单位name
eventMonitorReportVO.setVoltageLevel(pmsMonitorDTO.getVoltageLevel()); //监测点电压等级
eventMonitorReportVO.setVoltageLevelName(voltageLevelMap.get(pmsMonitorDTO.getVoltageLevel())); //监测点电压等级名称
//暂升、暂降、短时中断次数
Map<String, List<RmpEventDetailPO>> countMap = monitorEventDetailList.stream().collect(Collectors.groupingBy(RmpEventDetailPO::getEventType, Collectors.toList()));
countMap.forEach((countKey, value) -> {
String code = eventStatisMap.get(countKey).getCode();
//电压暂降次数
if (DicDataEnum.VOLTAGE_DIP.getCode().equalsIgnoreCase(code)) {
eventMonitorReportVO.setVoltageDipCount(CollUtil.isNotEmpty(value) ? value.size() : 0);
}
//电压暂升次数
if (DicDataEnum.VOLTAGE_RISE.getCode().equalsIgnoreCase(code)) {
eventMonitorReportVO.setVoltageRiseCount(CollUtil.isNotEmpty(value) ? value.size() : 0);
}
//短时中断
if (DicDataEnum.SHORT_INTERRUPTIONS.getCode().equalsIgnoreCase(code)) {
eventMonitorReportVO.setShortInterruptionCount(CollUtil.isNotEmpty(value) ? value.size() : 0);
}
});
//重新校验设置属性值避免值是null
eventMonitorReportVO.setVoltageDipCount(eventMonitorReportVO.getVoltageDipCount() == null ? 0 : eventMonitorReportVO.getVoltageDipCount());
eventMonitorReportVO.setVoltageRiseCount(eventMonitorReportVO.getVoltageRiseCount() == null ? 0 : eventMonitorReportVO.getVoltageRiseCount());
eventMonitorReportVO.setShortInterruptionCount(eventMonitorReportVO.getShortInterruptionCount() == null ? 0 : eventMonitorReportVO.getShortInterruptionCount());
resultList.add(eventMonitorReportVO);
});
return resultList;
}
/***
* 暂态指标监测点电压暂降和短时中断分布情况
* @author jianghaifei
* @date 2022-10-28 14:56
* @param eventMonitorReportParam
* @return com.njcn.event.pojo.vo.EventDipShortDistributionVO
*/
@Override
public List<EventDipShortDistributionTableVO> getEventDipShortDistributionByCond(EventMonitorReportParam eventMonitorReportParam) {
//提取参数
// String monitorName = eventMonitorReportParam.getMonitorName(); //监测点名称
// String id = eventMonitorReportParam.getId(); //单位id
String startTime = eventMonitorReportParam.getStartTime(); //开始时间
String endTime = eventMonitorReportParam.getEndTime(); //结束时间
Integer type = eventMonitorReportParam.getType(); //时间类型(日/月)
//查询监测点信息
List<PwPmsMonitorDTO> monitorList = this.getMonitorList(eventMonitorReportParam);
List<String> monitorIdList = monitorList.stream().map(PwPmsMonitorDTO::getMonitorId).collect(Collectors.toList()); //监测点id集合
//获取暂态指标的字典
List<DictData> eventStatisList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.EVENT_STATIS.getCode()).getData();
//将暂态指标信息转成mapkeycode value实体
Map<String, DictData> eventStatisMapByCode = eventStatisList.stream().collect(Collectors.toMap(DictData::getCode, data -> data));
//短时中断、暂降分布情况
Map<String, Object> condMap = new HashMap<>();
condMap.put("monitorIdList", monitorIdList);
condMap.put("startTime", startTime);
condMap.put("endTime", endTime);
condMap.put("eventTypeList", Arrays.asList(eventStatisMapByCode.get(DicDataEnum.VOLTAGE_DIP.getCode()).getId(), eventStatisMapByCode.get(DicDataEnum.SHORT_INTERRUPTIONS.getCode()).getId()));
condMap.put("dateType", type);
EventDipShortDistributionVO eventDipShortDistribution = eventDistributionStatisticsMapper.getEventDipShortDistributionByCond(condMap);
//设置返回数据
List<EventDipShortDistributionTableVO> list = new ArrayList<>();
//特征幅值[80,90]
EventDipShortDistributionTableVO entity8090 = new EventDipShortDistributionTableVO();
entity8090.setFeatureAmplitude("[80,90]");
entity8090.setDuration100(eventDipShortDistribution.getFeatureAmp90with100ms()); //持续时间10ms-100ms
entity8090.setDuration250(eventDipShortDistribution.getFeatureAmp90with250ms()); //持续时间100ms-250ms
entity8090.setDuration500(eventDipShortDistribution.getFeatureAmp90with500ms()); //持续时间250ms-500ms
entity8090.setDuration1000(eventDipShortDistribution.getFeatureAmp90with1000ms()); //持续时间500ms-1000ms
entity8090.setDuration3000(eventDipShortDistribution.getFeatureAmp90with3000ms()); //持续时间1000ms-3000ms
entity8090.setDuration10000(eventDipShortDistribution.getFeatureAmp90with10000ms()); //持续时间3000ms-10000ms
entity8090.setDuration20000(eventDipShortDistribution.getFeatureAmp90with20000ms()); //持续时间10000ms-20000ms
entity8090.setDuration60000(eventDipShortDistribution.getFeatureAmp90with60000ms()); //持续时间20000ms-60000ms
list.add(entity8090);
//特征幅值[70,80)
EventDipShortDistributionTableVO entity7080 = new EventDipShortDistributionTableVO();
entity7080.setFeatureAmplitude("[70,80)");
entity7080.setDuration100(eventDipShortDistribution.getFeatureAmp80with100ms()); //持续时间10ms-100ms
entity7080.setDuration250(eventDipShortDistribution.getFeatureAmp80with250ms()); //持续时间100ms-250ms
entity7080.setDuration500(eventDipShortDistribution.getFeatureAmp80with500ms()); //持续时间250ms-500ms
entity7080.setDuration1000(eventDipShortDistribution.getFeatureAmp80with1000ms()); //持续时间500ms-1000ms
entity7080.setDuration3000(eventDipShortDistribution.getFeatureAmp80with3000ms()); //持续时间1000ms-3000ms
entity7080.setDuration10000(eventDipShortDistribution.getFeatureAmp80with10000ms()); //持续时间3000ms-10000ms
entity7080.setDuration20000(eventDipShortDistribution.getFeatureAmp80with20000ms()); //持续时间10000ms-20000ms
entity7080.setDuration60000(eventDipShortDistribution.getFeatureAmp80with60000ms()); //持续时间20000ms-60000ms
list.add(entity7080);
//特征幅值[60,70)
EventDipShortDistributionTableVO entity6070 = new EventDipShortDistributionTableVO();
entity6070.setFeatureAmplitude("[60,70)");
entity6070.setDuration100(eventDipShortDistribution.getFeatureAmp70with100ms()); //持续时间10ms-100ms
entity6070.setDuration250(eventDipShortDistribution.getFeatureAmp70with250ms()); //持续时间100ms-250ms
entity6070.setDuration500(eventDipShortDistribution.getFeatureAmp70with500ms()); //持续时间250ms-500ms
entity6070.setDuration1000(eventDipShortDistribution.getFeatureAmp70with1000ms()); //持续时间500ms-1000ms
entity6070.setDuration3000(eventDipShortDistribution.getFeatureAmp70with3000ms()); //持续时间1000ms-3000ms
entity6070.setDuration10000(eventDipShortDistribution.getFeatureAmp70with10000ms()); //持续时间3000ms-10000ms
entity6070.setDuration20000(eventDipShortDistribution.getFeatureAmp70with20000ms()); //持续时间10000ms-20000ms
entity6070.setDuration60000(eventDipShortDistribution.getFeatureAmp70with60000ms()); //持续时间20000ms-60000ms
list.add(entity6070);
//特征幅值[50,60)
EventDipShortDistributionTableVO entity5060 = new EventDipShortDistributionTableVO();
entity5060.setFeatureAmplitude("[50,60)");
entity5060.setDuration100(eventDipShortDistribution.getFeatureAmp60with100ms()); //持续时间10ms-100ms
entity5060.setDuration250(eventDipShortDistribution.getFeatureAmp60with250ms()); //持续时间100ms-250ms
entity5060.setDuration500(eventDipShortDistribution.getFeatureAmp60with500ms()); //持续时间250ms-500ms
entity5060.setDuration1000(eventDipShortDistribution.getFeatureAmp60with1000ms()); //持续时间500ms-1000ms
entity5060.setDuration3000(eventDipShortDistribution.getFeatureAmp60with3000ms()); //持续时间1000ms-3000ms
entity5060.setDuration10000(eventDipShortDistribution.getFeatureAmp60with10000ms()); //持续时间3000ms-10000ms
entity5060.setDuration20000(eventDipShortDistribution.getFeatureAmp60with20000ms()); //持续时间10000ms-20000ms
entity5060.setDuration60000(eventDipShortDistribution.getFeatureAmp60with60000ms()); //持续时间20000ms-60000ms
list.add(entity5060);
//特征幅值[40,50)
EventDipShortDistributionTableVO entity4050 = new EventDipShortDistributionTableVO();
entity4050.setFeatureAmplitude("[40,50)");
entity4050.setDuration100(eventDipShortDistribution.getFeatureAmp50with100ms()); //持续时间10ms-100ms
entity4050.setDuration250(eventDipShortDistribution.getFeatureAmp50with250ms()); //持续时间100ms-250ms
entity4050.setDuration500(eventDipShortDistribution.getFeatureAmp50with500ms()); //持续时间250ms-500ms
entity4050.setDuration1000(eventDipShortDistribution.getFeatureAmp50with1000ms()); //持续时间500ms-1000ms
entity4050.setDuration3000(eventDipShortDistribution.getFeatureAmp50with3000ms()); //持续时间1000ms-3000ms
entity4050.setDuration10000(eventDipShortDistribution.getFeatureAmp50with10000ms()); //持续时间3000ms-10000ms
entity4050.setDuration20000(eventDipShortDistribution.getFeatureAmp50with20000ms()); //持续时间10000ms-20000ms
entity4050.setDuration60000(eventDipShortDistribution.getFeatureAmp50with60000ms()); //持续时间20000ms-60000ms
list.add(entity4050);
//特征幅值[30,40)
EventDipShortDistributionTableVO entity3040 = new EventDipShortDistributionTableVO();
entity3040.setFeatureAmplitude("[30,40)");
entity3040.setDuration100(eventDipShortDistribution.getFeatureAmp40with100ms()); //持续时间10ms-100ms
entity3040.setDuration250(eventDipShortDistribution.getFeatureAmp40with250ms()); //持续时间100ms-250ms
entity3040.setDuration500(eventDipShortDistribution.getFeatureAmp40with500ms()); //持续时间250ms-500ms
entity3040.setDuration1000(eventDipShortDistribution.getFeatureAmp40with1000ms()); //持续时间500ms-1000ms
entity3040.setDuration3000(eventDipShortDistribution.getFeatureAmp40with3000ms()); //持续时间1000ms-3000ms
entity3040.setDuration10000(eventDipShortDistribution.getFeatureAmp40with10000ms()); //持续时间3000ms-10000ms
entity3040.setDuration20000(eventDipShortDistribution.getFeatureAmp40with20000ms()); //持续时间10000ms-20000ms
entity3040.setDuration60000(eventDipShortDistribution.getFeatureAmp40with60000ms()); //持续时间20000ms-60000ms
list.add(entity3040);
//特征幅值[20,30)
EventDipShortDistributionTableVO entity2030 = new EventDipShortDistributionTableVO();
entity2030.setFeatureAmplitude("[20,30)");
entity2030.setDuration100(eventDipShortDistribution.getFeatureAmp30with100ms()); //持续时间10ms-100ms
entity2030.setDuration250(eventDipShortDistribution.getFeatureAmp30with250ms()); //持续时间100ms-250ms
entity2030.setDuration500(eventDipShortDistribution.getFeatureAmp30with500ms()); //持续时间250ms-500ms
entity2030.setDuration1000(eventDipShortDistribution.getFeatureAmp30with1000ms()); //持续时间500ms-1000ms
entity2030.setDuration3000(eventDipShortDistribution.getFeatureAmp30with3000ms()); //持续时间1000ms-3000ms
entity2030.setDuration10000(eventDipShortDistribution.getFeatureAmp30with10000ms()); //持续时间3000ms-10000ms
entity2030.setDuration20000(eventDipShortDistribution.getFeatureAmp30with20000ms()); //持续时间10000ms-20000ms
entity2030.setDuration60000(eventDipShortDistribution.getFeatureAmp30with60000ms()); //持续时间20000ms-60000ms
list.add(entity2030);
//特征幅值[10,20)
EventDipShortDistributionTableVO entity1020 = new EventDipShortDistributionTableVO();
entity1020.setFeatureAmplitude("[10,20)");
entity1020.setDuration100(eventDipShortDistribution.getFeatureAmp20with100ms()); //持续时间10ms-100ms
entity1020.setDuration250(eventDipShortDistribution.getFeatureAmp20with250ms()); //持续时间100ms-250ms
entity1020.setDuration500(eventDipShortDistribution.getFeatureAmp20with500ms()); //持续时间250ms-500ms
entity1020.setDuration1000(eventDipShortDistribution.getFeatureAmp20with1000ms()); //持续时间500ms-1000ms
entity1020.setDuration3000(eventDipShortDistribution.getFeatureAmp20with3000ms()); //持续时间1000ms-3000ms
entity1020.setDuration10000(eventDipShortDistribution.getFeatureAmp20with10000ms()); //持续时间3000ms-10000ms
entity1020.setDuration20000(eventDipShortDistribution.getFeatureAmp20with20000ms()); //持续时间10000ms-20000ms
entity1020.setDuration60000(eventDipShortDistribution.getFeatureAmp20with60000ms()); //持续时间20000ms-60000ms
list.add(entity1020);
//特征幅值[0,10)
EventDipShortDistributionTableVO entity10 = new EventDipShortDistributionTableVO();
entity10.setFeatureAmplitude("[0,10)");
entity10.setDuration100(eventDipShortDistribution.getFeatureAmp10with100ms()); //持续时间10ms-100ms
entity10.setDuration250(eventDipShortDistribution.getFeatureAmp10with250ms()); //持续时间100ms-250ms
entity10.setDuration500(eventDipShortDistribution.getFeatureAmp10with500ms()); //持续时间250ms-500ms
entity10.setDuration1000(eventDipShortDistribution.getFeatureAmp10with1000ms()); //持续时间500ms-1000ms
entity10.setDuration3000(eventDipShortDistribution.getFeatureAmp10with3000ms()); //持续时间1000ms-3000ms
entity10.setDuration10000(eventDipShortDistribution.getFeatureAmp10with10000ms()); //持续时间3000ms-10000ms
entity10.setDuration20000(eventDipShortDistribution.getFeatureAmp10with20000ms()); //持续时间10000ms-20000ms
entity10.setDuration60000(eventDipShortDistribution.getFeatureAmp10with60000ms()); //持续时间20000ms-60000ms
list.add(entity10);
return list;
}
/***
* 暂态指标监测点电压暂升分布情况
* @author jianghaifei
* @date 2022-10-29 14:08
* @param eventMonitorReportParam
* @return com.njcn.event.pojo.vo.EventRiseDistributionVO
*/
@Override
public List<EventRiseDistributionTableVO> getEventRiseDistributionByCond(EventMonitorReportParam eventMonitorReportParam) {
//提取参数
// String monitorName = eventMonitorReportParam.getMonitorName(); //监测点名称
// String id = eventMonitorReportParam.getId(); //单位id
String startTime = eventMonitorReportParam.getStartTime(); //开始时间
String endTime = eventMonitorReportParam.getEndTime(); //结束时间
Integer type = eventMonitorReportParam.getType(); //时间类型(日/月)
//查询监测点信息
List<PwPmsMonitorDTO> monitorList = this.getMonitorList(eventMonitorReportParam);
List<String> monitorIdList = monitorList.stream().map(PwPmsMonitorDTO::getMonitorId).collect(Collectors.toList()); //监测点id集合
//获取暂态指标的字典
List<DictData> eventStatisList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.EVENT_STATIS.getCode()).getData();
//将暂态指标信息转成mapkeycode value实体
Map<String, DictData> eventStatisMapByCode = eventStatisList.stream().collect(Collectors.toMap(DictData::getCode, data -> data));
//暂升分布情况
Map<String, Object> riseCondMap = new HashMap<>();
riseCondMap.put("monitorIdList", monitorIdList);
riseCondMap.put("startTime", startTime);
riseCondMap.put("endTime", endTime);
riseCondMap.put("eventTypeList", Collections.singletonList(eventStatisMapByCode.get(DicDataEnum.VOLTAGE_RISE.getCode()).getId()));
riseCondMap.put("dateType", type);
EventRiseDistributionVO eventRiseDistribution = eventDistributionStatisticsMapper.getEventRiseDistributionByCond(riseCondMap);
//设置返回数据
List<EventRiseDistributionTableVO> list = new ArrayList<>();
//特征幅值U1≥120
EventRiseDistributionTableVO entity120 = new EventRiseDistributionTableVO();
entity120.setFeatureAmplitude("≥120");
entity120.setDuration500(eventRiseDistribution.getFeatureAmp120with500ms()); //持续时间100ms-500ms
entity120.setDuration5000(eventRiseDistribution.getFeatureAmp120with5000ms()); //持续时间500ms-5000ms
entity120.setDuration60000(eventRiseDistribution.getFeatureAmp120with60000ms()); //持续时间5000ms-60000ms
list.add(entity120);
//特征幅值-120-110
EventRiseDistributionTableVO entity110 = new EventRiseDistributionTableVO();
entity110.setFeatureAmplitude("-120,110");
entity110.setDuration500(eventRiseDistribution.getFeatureAmp110with500ms()); //持续时间100ms-500ms
entity110.setDuration5000(eventRiseDistribution.getFeatureAmp110with5000ms()); //持续时间500ms-5000ms
entity110.setDuration60000(eventRiseDistribution.getFeatureAmp110with60000ms()); //持续时间5000ms-60000ms
list.add(entity110);
return list;
}
/***
* 获取单位(及子孙单位)下的监测点信息(抽取的公共方法)
* @author jianghaifei
* @date 2022-10-29 17:37
* @param eventMonitorReportParam
* @return java.util.List<com.njcn.device.pms.pojo.dto.PmsMonitorDTO>
*/
private List<PwPmsMonitorDTO> getMonitorList(EventMonitorReportParam eventMonitorReportParam) {
//提起参数
String id = eventMonitorReportParam.getId(); //单位id
String monitorName = eventMonitorReportParam.getMonitorName(); //台区名称
//根据条件查询单位下面的所有配网监测点
PwPmsMonitorParam pwPmsMonitorParam = new PwPmsMonitorParam();
pwPmsMonitorParam.setOrgId(id); //单位id
pwPmsMonitorParam.setMonitorName(monitorName); //台区名称(监测点名称)
List<PwPmsMonitorDTO> pwMonitorList = pwMonitorClient.getPwMonitorList(pwPmsMonitorParam).getData();
return pwMonitorList;
}
}

View File

@@ -0,0 +1,28 @@
package com.njcn.event.service.distribution;
import com.njcn.event.pojo.param.EventMonitorReportParam;
import com.njcn.event.pojo.vo.EventDipShortDistributionTableVO;
import com.njcn.event.pojo.vo.EventMonitorReportVO;
import com.njcn.event.pojo.vo.EventRiseDistributionTableVO;
import java.util.List;
/**
* 配网暂态指标
* @Title EventMonitorDailyReportService
* @Package com.njcn.event.service
* @Author jianghaifei
* @Date 2022-10-25 09:39
* @Version V1.0
*/
public interface PwEventMonitorReportService {
//监测点暂态事件发生次数
List<EventMonitorReportVO> getMonitorEventCount(EventMonitorReportParam eventMonitorReportParam);
//暂态指标监测点电压暂降和短时中断分布情况
List<EventDipShortDistributionTableVO> getEventDipShortDistributionByCond(EventMonitorReportParam eventMonitorReportParam);
//暂态指标监测点电压暂升分布情况
List<EventRiseDistributionTableVO> getEventRiseDistributionByCond(EventMonitorReportParam eventMonitorReportParam);
}