算法提交
This commit is contained in:
@@ -10,8 +10,8 @@
|
||||
pm.Powerr_Id AS powerId,
|
||||
pm.Powerr_Name AS powerName,
|
||||
pm.org_name as orgName,
|
||||
pg.Generatrix_Id AS generatrixId,
|
||||
pm.Generatrix_Name AS generatrixName,
|
||||
pg.id AS generatrixId,
|
||||
pm.Line_Name AS generatrixName,
|
||||
pm.Id AS monitorId,
|
||||
pm.`Name` AS monitorName,
|
||||
pg.Scale AS generatrixVoltageLevel
|
||||
|
||||
@@ -17,44 +17,42 @@ public class ConverterDetailStatisticsDTO {
|
||||
|
||||
/*主键 是否必填:是*/
|
||||
private String id;
|
||||
/*发生超标或暂态母线日均占比(%) 是否必填:否*/
|
||||
private BigDecimal abnormalBusAvgRate;
|
||||
/*发生超标或暂态母线数量(条) 是否必填:是*/
|
||||
private Integer abnormalBusNum;
|
||||
/*发生超标或暂态母线占比(%) 是否必填:否*/
|
||||
private BigDecimal abnormalBusRate;
|
||||
/*发生超标或暂态换流站日均占比(%) 是否必填:否*/
|
||||
private BigDecimal abnormalConverterAvgRate;
|
||||
/*发生超标或暂态换流站数量(条) 是否必填:否*/
|
||||
private Integer abnormalConverterNum;
|
||||
/*发生超标或暂态换流站占比(%) 是否必填:否*/
|
||||
private BigDecimal abnormalConverterRate;
|
||||
/*市级单位id 是否必填:是*/
|
||||
private String cityId;
|
||||
/*市级单位名称 是否必填:否*/
|
||||
private String cityName;
|
||||
/*监测交流母线数量(条) 是否必填:否*/
|
||||
private Integer monitorAlternatingBusNum;
|
||||
/*交流母线监测率(%) 是否必填:否*/
|
||||
private BigDecimal monitorAlternatingBusRate;
|
||||
/*监测换流站数量(座) 是否必填:是*/
|
||||
private Integer monitorConverterNum;
|
||||
/*换流站监测率(%) 是否必填:*/
|
||||
private BigDecimal monitorConverterRate;
|
||||
/*在运交流母线数量(条) 是否必填:是*/
|
||||
private Integer onlineAlternatingBusNum;
|
||||
/*在运换流站数量(座) 是否必填:是*/
|
||||
private Integer onlineConverterNum;
|
||||
|
||||
/*省级单位名称 是否必填:否*/
|
||||
private String provinceName;
|
||||
/*省级单位id 是否必填:是*/
|
||||
private String provinceId;
|
||||
|
||||
/*市级单位id 是否必填:是*/
|
||||
private String cityId;
|
||||
/*市级单位名称 是否必填:否*/
|
||||
private String cityName;
|
||||
|
||||
|
||||
|
||||
/*统计日期 是否必填:是*/
|
||||
private String statisticalDate;
|
||||
/*统计类型 是否必填:是*/
|
||||
private String statisticalType;
|
||||
|
||||
/*统计层级 是否必填:是*/
|
||||
private String statisticalLevel;
|
||||
|
||||
|
||||
/*在运交流母线数量(条) 是否必填:是*/
|
||||
private Integer onlineAlternatingBusNum;
|
||||
/*在运换流站数量(座) 是否必填:是*/
|
||||
private Integer onlineConverterNum;
|
||||
|
||||
/*发生超标或暂态母线数量(条) 是否必填:是*/
|
||||
private Integer abnormalBusNum;
|
||||
|
||||
|
||||
/*监测换流站数量(座) 是否必填:是*/
|
||||
private Integer monitorConverterNum;
|
||||
/*监测交流母线数量(条) 是否必填:否*/
|
||||
private Integer monitorAlternatingBusNum;
|
||||
|
||||
/*累计发生超标或暂态换流站数量(座) 是否必填:否*/
|
||||
private Integer abnormalConverterCount;
|
||||
/*累计监测换流站数量(座) 是否必填:否*/
|
||||
@@ -66,4 +64,33 @@ public class ConverterDetailStatisticsDTO {
|
||||
|
||||
|
||||
|
||||
|
||||
/*发生超标或暂态换流站数量(条) 是否必填:否*/
|
||||
private Integer abnormalConverterNum;
|
||||
|
||||
/*发生超标或暂态母线日均占比(%) 是否必填:否*/
|
||||
private BigDecimal abnormalBusAvgRate;
|
||||
|
||||
/*发生超标或暂态母线占比(%) 是否必填:否*/
|
||||
private BigDecimal abnormalBusRate;
|
||||
/*发生超标或暂态换流站日均占比(%) 是否必填:否*/
|
||||
private BigDecimal abnormalConverterAvgRate;
|
||||
|
||||
/*发生超标或暂态换流站占比(%) 是否必填:否*/
|
||||
private BigDecimal abnormalConverterRate;
|
||||
|
||||
|
||||
/*交流母线监测率(%) 是否必填:否*/
|
||||
private BigDecimal monitorAlternatingBusRate;
|
||||
|
||||
/*换流站监测率(%) 是否必填:*/
|
||||
private BigDecimal monitorConverterRate;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,100 @@
|
||||
package com.njcn.harmonic.pojo.dto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
/**
|
||||
* Description:
|
||||
* Date: 2023/12/12 14:40【需求编号】
|
||||
*
|
||||
* @author clam
|
||||
* @version V1.0.0
|
||||
*/
|
||||
@Data
|
||||
public class PqTypicalSourceCreateDTO {
|
||||
|
||||
/*唯一标识 uuid是否必填:是*/
|
||||
private String id;
|
||||
|
||||
/*统计日期 年yyyy,月yyyy-MM,日yyyy-MM-dd是否必填:是*/
|
||||
private String statisticalDate;
|
||||
/*统计层级 见3.20是否必填:是*/
|
||||
private String statisticalLevel;
|
||||
/*统计类型 见3.19是否必填:是*/
|
||||
private String statisticalType;
|
||||
/*指标类型 见3.18是否必填:是*/
|
||||
private String indexType;
|
||||
|
||||
/*所属网省id 取ISC平台上的组织id是否必填:是*/
|
||||
private String provinceId;
|
||||
/*所属网省名称 取ISC平台上的组织名称是否必填:是*/
|
||||
private String provinceName;
|
||||
/*所属地市id 取ISC平台上的组织id是否必填:*/
|
||||
private String cityId;
|
||||
/*所属地市名称 取ISC平台上的组织名称是否必填:*/
|
||||
private String cityName;
|
||||
/*所属区县id 取ISC平台上的组织id是否必填:*/
|
||||
private String countyId;
|
||||
/*所属区县名称 取ISC平台上的组织名称是否必填:*/
|
||||
private String countyName;
|
||||
|
||||
/*行业分类 见3.21,当典型源荷为“其他干扰源”的时候为必填。是否必填:*/
|
||||
private String industryType;
|
||||
/*干扰源数量 是否必填:是*/
|
||||
private Integer interferenceSourceNum;
|
||||
|
||||
|
||||
/*闪变平均超占比 存放百分比是否必填:是*/
|
||||
private BigDecimal flickerAvgOvRate;
|
||||
/*闪变超标数 是否必填:是*/
|
||||
private Integer flickerOvNum;
|
||||
/*闪变超标占比 是否必填:是*/
|
||||
private BigDecimal flickerOvRate;
|
||||
|
||||
|
||||
/*谐波电流平均超标占比 是否必填:是*/
|
||||
private BigDecimal iAvgOvRate;
|
||||
/*谐波电流超标数 是否必填:是*/
|
||||
private Integer iOvNum;
|
||||
/*谐波电流超标占比 是否必填:是*/
|
||||
private BigDecimal iOvRate;
|
||||
|
||||
/*负序电流平均超标占比 是否必填:是*/
|
||||
private BigDecimal inseqAvgOvRate;
|
||||
/*负序电流超标数 是否必填:是*/
|
||||
private Integer inseqOvNum;
|
||||
/*负序电流超标占比 是否必填:是*/
|
||||
private BigDecimal inseqOvRate;
|
||||
|
||||
|
||||
|
||||
/*三相不平衡超标数 是否必填:是*/
|
||||
private Integer unbanOvNum;
|
||||
/*三相不平衡超标占比 是否必填:是*/
|
||||
private BigDecimal unbanOvRate;
|
||||
/*三相不平衡平均超标占比 是否必填:是*/
|
||||
private BigDecimal unbanAvgOvRate;
|
||||
|
||||
/*谐波电压平均超标占比 是否必填:是*/
|
||||
private BigDecimal vAvgOvRate;
|
||||
/*谐波电压超标数 是否必填:是*/
|
||||
private Integer vOvNum;
|
||||
/*谐波电压超标占比 是否必填:是*/
|
||||
private BigDecimal vOvRate;
|
||||
|
||||
/*实现监测数量 是否必填:是*/
|
||||
private Integer monitorNum;
|
||||
/*监测率 是否必填:是*/
|
||||
private BigDecimal monitoringRate;
|
||||
/*超标数 是否必填:是*/
|
||||
private Integer ovNum;
|
||||
/*超标占比 是否必填:是*/
|
||||
private BigDecimal ovRate;
|
||||
|
||||
/*累计超标天数合计 是否必填:*/
|
||||
private Integer ovDayCount;
|
||||
/*平均超标天数 当统计类型是月数据、年数据时必填是否必填:*/
|
||||
private BigDecimal averageOvDays;
|
||||
|
||||
}
|
||||
@@ -38,6 +38,8 @@ public class SubstationQualityStatisticsDTO {
|
||||
private String converterId;
|
||||
/*换流站名称 是否必填:是*/
|
||||
private String converterName;
|
||||
/*电压等级 是否必填:是*/
|
||||
private String voltageLevel;
|
||||
|
||||
/*母线id 是否必填:否*/
|
||||
private String busId;
|
||||
@@ -51,8 +53,13 @@ public class SubstationQualityStatisticsDTO {
|
||||
|
||||
/*站内有效监测点数量(个) 是否必填:是*/
|
||||
private Integer effectiveMonitorNum;
|
||||
/*谐波电压超标天数 是否必填:否*/
|
||||
private Integer harmvOvDay;
|
||||
/*当年累计月数 是否必填:否*/
|
||||
private Integer monthsCount;
|
||||
/*月均超标天数 是否必填:否*/
|
||||
private BigDecimal monthOvDays;
|
||||
|
||||
/*奇次谐波电压限值(%) 是否必填:是*/
|
||||
private BigDecimal oddVoltLimit;
|
||||
/*累计超标天数 是否必填:否*/
|
||||
@@ -71,18 +78,13 @@ public class SubstationQualityStatisticsDTO {
|
||||
private BigDecimal v5;
|
||||
/*7次谐波电压95%概率值(%) 是否必填:否*/
|
||||
private BigDecimal v7;
|
||||
/*电压等级 是否必填:是*/
|
||||
private String voltageLevel;
|
||||
|
||||
/*电压总谐波畸变率95%概率值统计值(%) 是否必填:否*/
|
||||
private BigDecimal vthd;
|
||||
/*电压总谐波畸变率95%概率值限值(%) 是否必填:是*/
|
||||
private BigDecimal vthdLimit;
|
||||
|
||||
/*谐波电压超标天数 是否必填:否*/
|
||||
private Integer harmvOvDay;
|
||||
|
||||
/*当年累计月数 是否必填:否*/
|
||||
private Integer monthsCount;
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,93 @@
|
||||
package com.njcn.harmonic.pojo.po.send;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
/**
|
||||
*
|
||||
* Description:
|
||||
* Date: 2023/12/11 11:35【需求编号】
|
||||
*
|
||||
* @author clam
|
||||
* @version V1.0.0
|
||||
*/
|
||||
@Data
|
||||
@TableName(value = "converterdetailstatistics")
|
||||
public class ConverterdetailstatisticsPO {
|
||||
@TableId(value = "id", type = IdType.INPUT)
|
||||
private String id;
|
||||
|
||||
@TableField(value = "abnormalBusAvgRate")
|
||||
private BigDecimal abnormalBusAvgRate;
|
||||
|
||||
@TableField(value = "abnormalBusNum")
|
||||
private Integer abnormalBusNum;
|
||||
|
||||
@TableField(value = "abnormalBusRate")
|
||||
private BigDecimal abnormalBusRate;
|
||||
|
||||
@TableField(value = "abnormalConverterAvgRate")
|
||||
private BigDecimal abnormalConverterAvgRate;
|
||||
|
||||
@TableField(value = "abnormalConverterNum")
|
||||
private Integer abnormalConverterNum;
|
||||
|
||||
@TableField(value = "abnormalConverterRate")
|
||||
private BigDecimal abnormalConverterRate;
|
||||
|
||||
@TableField(value = "cityId")
|
||||
private String cityId;
|
||||
|
||||
@TableField(value = "cityName")
|
||||
private String cityName;
|
||||
|
||||
@TableField(value = "monitorAlternatingBusNum")
|
||||
private Integer monitorAlternatingBusNum;
|
||||
|
||||
@TableField(value = "monitorAlternatingBusRate")
|
||||
private BigDecimal monitorAlternatingBusRate;
|
||||
|
||||
@TableField(value = "monitorConverterNum")
|
||||
private Integer monitorConverterNum;
|
||||
|
||||
@TableField(value = "monitorConverterRate")
|
||||
private BigDecimal monitorConverterRate;
|
||||
|
||||
@TableField(value = "onlineAlternatingBusNum")
|
||||
private Integer onlineAlternatingBusNum;
|
||||
|
||||
@TableField(value = "onlineConverterNum")
|
||||
private Integer onlineConverterNum;
|
||||
|
||||
@TableField(value = "provinceName")
|
||||
private String provinceName;
|
||||
|
||||
@TableField(value = "provinceId")
|
||||
private String provinceId;
|
||||
|
||||
@TableField(value = "statisticalDate")
|
||||
private String statisticalDate;
|
||||
|
||||
@TableField(value = "statisticalType")
|
||||
private String statisticalType;
|
||||
|
||||
@TableField(value = "statisticalLevel")
|
||||
private String statisticalLevel;
|
||||
|
||||
@TableField(value = "abnormalConverterCount")
|
||||
private Integer abnormalConverterCount;
|
||||
|
||||
@TableField(value = "monitorConverterCount")
|
||||
private Integer monitorConverterCount;
|
||||
|
||||
@TableField(value = "abnormalBusCount")
|
||||
private Integer abnormalBusCount;
|
||||
|
||||
@TableField(value = "monitorAlternatingBusCount")
|
||||
private Integer monitorAlternatingBusCount;
|
||||
}
|
||||
@@ -0,0 +1,123 @@
|
||||
package com.njcn.harmonic.pojo.po.send;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
/**
|
||||
*
|
||||
* Description:
|
||||
* Date: 2023/12/12 15:16【需求编号】
|
||||
*
|
||||
* @author clam
|
||||
* @version V1.0.0
|
||||
*/
|
||||
@Data
|
||||
@TableName(value = "pq_typical_source_create")
|
||||
public class PqTypicalSourceCreatePO {
|
||||
@TableId(value = "id", type = IdType.INPUT)
|
||||
private String id;
|
||||
|
||||
@TableField(value = "statisticalDate")
|
||||
private String statisticalDate;
|
||||
|
||||
@TableField(value = "statisticalLevel")
|
||||
private String statisticalLevel;
|
||||
|
||||
@TableField(value = "statisticalType")
|
||||
private String statisticalType;
|
||||
|
||||
@TableField(value = "indexType")
|
||||
private String indexType;
|
||||
|
||||
@TableField(value = "provinceId")
|
||||
private String provinceId;
|
||||
|
||||
@TableField(value = "provinceName")
|
||||
private String provinceName;
|
||||
|
||||
@TableField(value = "cityId")
|
||||
private String cityId;
|
||||
|
||||
@TableField(value = "cityName")
|
||||
private String cityName;
|
||||
|
||||
@TableField(value = "countyId")
|
||||
private String countyId;
|
||||
|
||||
@TableField(value = "countyName")
|
||||
private String countyName;
|
||||
|
||||
@TableField(value = "industryType")
|
||||
private String industryType;
|
||||
|
||||
@TableField(value = "interferenceSourceNum")
|
||||
private Integer interferenceSourceNum;
|
||||
|
||||
@TableField(value = "averageOvDays")
|
||||
private BigDecimal averageOvDays;
|
||||
|
||||
@TableField(value = "flickerAvgOvRate")
|
||||
private BigDecimal flickerAvgOvRate;
|
||||
|
||||
@TableField(value = "flickerOvNum")
|
||||
private Integer flickerOvNum;
|
||||
|
||||
@TableField(value = "flickerOvRate")
|
||||
private BigDecimal flickerOvRate;
|
||||
|
||||
@TableField(value = "iAvgOvRate")
|
||||
private BigDecimal iAvgOvRate;
|
||||
|
||||
@TableField(value = "iOvNum")
|
||||
private Integer iOvNum;
|
||||
|
||||
@TableField(value = "iOvRate")
|
||||
private BigDecimal iOvRate;
|
||||
|
||||
@TableField(value = "inseqAvgOvRate")
|
||||
private BigDecimal inseqAvgOvRate;
|
||||
|
||||
@TableField(value = "inseqOvNum")
|
||||
private Integer inseqOvNum;
|
||||
|
||||
@TableField(value = "inseqOvRate")
|
||||
private BigDecimal inseqOvRate;
|
||||
|
||||
@TableField(value = "monitorNum")
|
||||
private Integer monitorNum;
|
||||
|
||||
@TableField(value = "monitoringRate")
|
||||
private BigDecimal monitoringRate;
|
||||
|
||||
@TableField(value = "ovNum")
|
||||
private Integer ovNum;
|
||||
|
||||
@TableField(value = "ovRate")
|
||||
private BigDecimal ovRate;
|
||||
|
||||
@TableField(value = "unbanOvNum")
|
||||
private Integer unbanOvNum;
|
||||
|
||||
@TableField(value = "unbanOvRate")
|
||||
private BigDecimal unbanOvRate;
|
||||
|
||||
@TableField(value = "vAvgOvRate")
|
||||
private BigDecimal vAvgOvRate;
|
||||
|
||||
@TableField(value = "vOvNum")
|
||||
private Integer vOvNum;
|
||||
|
||||
@TableField(value = "vOvRate")
|
||||
private BigDecimal vOvRate;
|
||||
|
||||
@TableField(value = "unbanAvgOvRate")
|
||||
private BigDecimal unbanAvgOvRate;
|
||||
|
||||
@TableField(value = "ovDayCount")
|
||||
private Integer ovDayCount;
|
||||
}
|
||||
@@ -0,0 +1,115 @@
|
||||
package com.njcn.harmonic.pojo.po.send;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
/**
|
||||
*
|
||||
* Description:
|
||||
* Date: 2023/12/7 16:21【需求编号】
|
||||
*
|
||||
* @author clam
|
||||
* @version V1.0.0
|
||||
*/
|
||||
@Data
|
||||
@TableName(value = "substation_quality_statistics")
|
||||
public class SubstationQualityStatisticsPO {
|
||||
|
||||
@TableId(value = "id", type = IdType.INPUT)
|
||||
private String id;
|
||||
|
||||
@TableField(value = "statisticalDate")
|
||||
private String statisticalDate;
|
||||
|
||||
@TableField(value = "statisticalType")
|
||||
private String statisticalType;
|
||||
|
||||
@TableField(value = "provinceId")
|
||||
private String provinceId;
|
||||
|
||||
@TableField(value = "provinceName")
|
||||
private String provinceName;
|
||||
|
||||
@TableField(value = "cityId")
|
||||
private String cityId;
|
||||
|
||||
@TableField(value = "cityName")
|
||||
private String cityName;
|
||||
|
||||
@TableField(value = "countyId")
|
||||
private String countyId;
|
||||
|
||||
@TableField(value = "countyName")
|
||||
private String countyName;
|
||||
|
||||
@TableField(value = "converterId")
|
||||
private String converterId;
|
||||
|
||||
@TableField(value = "converterName")
|
||||
private String converterName;
|
||||
|
||||
@TableField(value = "voltageLevel")
|
||||
private String voltageLevel;
|
||||
|
||||
@TableField(value = "busId")
|
||||
private String busId;
|
||||
|
||||
@TableField(value = "busName")
|
||||
private String busName;
|
||||
|
||||
@TableField(value = "busVoltageLevel")
|
||||
private String busVoltageLevel;
|
||||
|
||||
@TableField(value = "monitorId")
|
||||
private String monitorId;
|
||||
|
||||
@TableField(value = "effectiveMonitorNum")
|
||||
private Integer effectiveMonitorNum;
|
||||
|
||||
@TableField(value = "harmvOvDay")
|
||||
private Integer harmvOvDay;
|
||||
|
||||
@TableField(value = "monthsCount")
|
||||
private Integer monthsCount;
|
||||
|
||||
@TableField(value = "monthOvDays")
|
||||
private BigDecimal monthOvDays;
|
||||
|
||||
@TableField(value = "oddVoltLimit")
|
||||
private BigDecimal oddVoltLimit;
|
||||
|
||||
@TableField(value = "totalOvDays")
|
||||
private Integer totalOvDays;
|
||||
|
||||
@TableField(value = "v11")
|
||||
private BigDecimal v11;
|
||||
|
||||
@TableField(value = "v13")
|
||||
private BigDecimal v13;
|
||||
|
||||
@TableField(value = "v23")
|
||||
private BigDecimal v23;
|
||||
|
||||
@TableField(value = "v25")
|
||||
private BigDecimal v25;
|
||||
|
||||
@TableField(value = "v3")
|
||||
private BigDecimal v3;
|
||||
|
||||
@TableField(value = "v5")
|
||||
private BigDecimal v5;
|
||||
|
||||
@TableField(value = "v7")
|
||||
private BigDecimal v7;
|
||||
|
||||
@TableField(value = "vthd")
|
||||
private BigDecimal vthd;
|
||||
|
||||
@TableField(value = "vthdLimit")
|
||||
private BigDecimal vthdLimit;
|
||||
}
|
||||
@@ -1,41 +0,0 @@
|
||||
package com.njcn.harmonic.controller.majornetwork;
|
||||
|
||||
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.harmonic.service.majornetwork.StationDataQualityService;
|
||||
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.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
/**
|
||||
* Description:
|
||||
* Date: 2023/12/6 15:50【需求编号】
|
||||
*
|
||||
* @author clam
|
||||
* @version V1.0.0
|
||||
*/
|
||||
|
||||
@RestController
|
||||
@Api(tags = "上报电能质量换流站指标统计明细及统计数据接口")
|
||||
@RequiredArgsConstructor
|
||||
@RequestMapping("/StationDataQuality")
|
||||
public class StationDataQualitySendController extends BaseController {
|
||||
private final StationDataQualityService stationDataQualityService;
|
||||
@PostMapping("/report")
|
||||
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
|
||||
@ApiOperation("上报电能质量换流站指标统计明细及统计数据接口")
|
||||
public HttpResult<Boolean> report() {
|
||||
String methodDescribe = getMethodDescribe("report");
|
||||
|
||||
boolean flag = stationDataQualityService.report();
|
||||
|
||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, flag, methodDescribe);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
package com.njcn.harmonic.controller.send;
|
||||
|
||||
import com.njcn.web.controller.BaseController;
|
||||
import io.swagger.annotations.Api;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
/**
|
||||
* Description:河北国网上送接口
|
||||
* * 2.4.1.17接收电能质量主配网监测点统计数据接口
|
||||
* Date: 2023/12/13 14:52【需求编号】
|
||||
*
|
||||
* @author clam
|
||||
* @version V1.0.0
|
||||
*/
|
||||
@Slf4j
|
||||
@RestController
|
||||
@RequestMapping("/Converterdetail")
|
||||
@Api(tags = "电能质量主配网监测点统计数据")
|
||||
@RequiredArgsConstructor
|
||||
public class ConverterdetailstatisticsController extends BaseController {
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
package com.njcn.harmonic.controller.send;
|
||||
|
||||
import com.njcn.web.controller.BaseController;
|
||||
import io.swagger.annotations.Api;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
/**
|
||||
* Description:2.4.1.9 接收电能质量典型源荷指标统计数据接口
|
||||
* Date: 2023/12/13 14:52【需求编号】
|
||||
*
|
||||
* @author clam
|
||||
* @version V1.0.0
|
||||
*/
|
||||
|
||||
@Slf4j
|
||||
@RestController
|
||||
@RequestMapping("/pqTypicalSourceCreate")
|
||||
@Api(tags = "能质量典型源荷指标统计数据")
|
||||
@RequiredArgsConstructor
|
||||
public class PqTypicalSourceCreateController extends BaseController {
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
package com.njcn.harmonic.controller.send;
|
||||
|
||||
import com.njcn.web.controller.BaseController;
|
||||
import io.swagger.annotations.Api;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
/**
|
||||
*需求:
|
||||
* * FWJK-PMS3.0-TC0013-电能质量管理两级贯通接口V1.10
|
||||
* * 2.4.1.19 接收电能质量换流站指标统计明细数据接口
|
||||
*
|
||||
* @author clam
|
||||
* @version V1.0.0
|
||||
*/
|
||||
|
||||
|
||||
@Slf4j
|
||||
@RestController
|
||||
@RequestMapping("/substationQuality")
|
||||
@Api(tags = "接收电能质量换流站指标统计明细数据")
|
||||
@RequiredArgsConstructor
|
||||
public class SubstationQualityStatisticsController extends BaseController {
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
package com.njcn.harmonic.mapper.send;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.njcn.harmonic.pojo.po.send.ConverterdetailstatisticsPO;
|
||||
|
||||
/**
|
||||
*
|
||||
* Description:
|
||||
* Date: 2023/12/11 11:35【需求编号】
|
||||
*
|
||||
* @author clam
|
||||
* @version V1.0.0
|
||||
*/
|
||||
public interface ConverterdetailstatisticsPOMapper extends BaseMapper<ConverterdetailstatisticsPO> {
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
package com.njcn.harmonic.mapper.send;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.njcn.harmonic.pojo.po.send.PqTypicalSourceCreatePO;
|
||||
|
||||
/**
|
||||
*
|
||||
* Description:
|
||||
* Date: 2023/12/12 15:16【需求编号】
|
||||
*
|
||||
* @author clam
|
||||
* @version V1.0.0
|
||||
*/
|
||||
public interface PqTypicalSourceCreatePOMapper extends BaseMapper<PqTypicalSourceCreatePO> {
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
package com.njcn.harmonic.mapper.send;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.njcn.harmonic.pojo.po.send.SubstationQualityStatisticsPO;
|
||||
|
||||
/**
|
||||
*
|
||||
* Description:
|
||||
* Date: 2023/12/7 16:21【需求编号】
|
||||
*
|
||||
* @author clam
|
||||
* @version V1.0.0
|
||||
*/
|
||||
public interface SubstationQualityStatisticsPOMapper extends BaseMapper<SubstationQualityStatisticsPO> {
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
<?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.prepare.harmonic.mapper.mysql.send.ConverterdetailstatisticsPOMapper">
|
||||
<!--@mbg.generated-->
|
||||
<!--@Table converterdetailstatistics-->
|
||||
|
||||
<sql id="Base_Column_List">
|
||||
<!--@mbg.generated-->
|
||||
id, abnormalBusAvgRate, abnormalBusNum, abnormalBusRate, abnormalConverterAvgRate,
|
||||
abnormalConverterNum, abnormalConverterRate, cityId, cityName, monitorAlternatingBusNum,
|
||||
monitorAlternatingBusRate, monitorConverterNum, monitorConverterRate, onlineAlternatingBusNum,
|
||||
onlineConverterNum, provinceName, provinceId, statisticalDate, statisticalType, statisticalLevel,
|
||||
abnormalConverterCount, monitorConverterCount, abnormalBusCount, monitorAlternatingBusCount
|
||||
</sql>
|
||||
</mapper>
|
||||
@@ -0,0 +1,13 @@
|
||||
<?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.prepare.harmonic.mapper.mysql.send.PqTypicalSourceCreatePOMapper">
|
||||
|
||||
<sql id="Base_Column_List">
|
||||
<!--@mbg.generated-->
|
||||
id, statisticalDate, statisticalLevel, statisticalType, indexType, provinceId, provinceName,
|
||||
cityId, cityName, countyId, countyName, industryType, interferenceSourceNum, averageOvDays,
|
||||
flickerAvgOvRate, flickerOvNum, flickerOvRate, iAvgOvRate, iOvNum, iOvRate, inseqAvgOvRate,
|
||||
inseqOvNum, inseqOvRate, monitorNum, monitoringRate, ovNum, ovRate, unbanOvNum, unbanOvRate,
|
||||
vAvgOvRate, vOvNum, vOvRate, unbanAvgOvRate, ovDayCount
|
||||
</sql>
|
||||
</mapper>
|
||||
@@ -0,0 +1,12 @@
|
||||
<?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.prepare.harmonic.mapper.mysql.send.SubstationQualityStatisticsPOMapper">
|
||||
|
||||
<sql id="Base_Column_List">
|
||||
<!--@mbg.generated-->
|
||||
id, statisticalDate, statisticalType, provinceId, provinceName, cityId, cityName,
|
||||
countyId, countyName, converterId, converterName, voltageLevel, busId, busName, busVoltageLevel,
|
||||
monitorId, effectiveMonitorNum, harmvOvDay, monthsCount, monthOvDays, oddVoltLimit,
|
||||
totalOvDays, v11, v13, v23, v25, v3, v5, v7, vthd, vthdLimit
|
||||
</sql>
|
||||
</mapper>
|
||||
@@ -1,12 +0,0 @@
|
||||
package com.njcn.harmonic.service.majornetwork;
|
||||
|
||||
/**
|
||||
* Description:
|
||||
* Date: 2023/12/6 15:57【需求编号】
|
||||
*
|
||||
* @author clam
|
||||
* @version V1.0.0
|
||||
*/
|
||||
public interface StationDataQualityService {
|
||||
boolean report();
|
||||
}
|
||||
@@ -1,46 +0,0 @@
|
||||
package com.njcn.harmonic.service.majornetwork.impl;
|
||||
|
||||
import com.njcn.device.pms.api.MonitorClient;
|
||||
import com.njcn.device.pms.pojo.po.Monitor;
|
||||
import com.njcn.harmonic.pojo.dto.SubstationQualityStatisticsDTO;
|
||||
import com.njcn.harmonic.service.majornetwork.StationDataQualityService;
|
||||
import com.njcn.user.api.DeptFeignClient;
|
||||
import com.njcn.user.pojo.vo.PvTerminalTreeVO;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* Description:
|
||||
* Date: 2023/12/6 15:57【需求编号】
|
||||
*
|
||||
* @author clam
|
||||
* @version V1.0.0
|
||||
*/
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class StationDataQualityServiceImpl implements StationDataQualityService {
|
||||
|
||||
private final MonitorClient monitorClient;
|
||||
private final DeptFeignClient deptFeignClient;
|
||||
@Override
|
||||
public boolean report() {
|
||||
|
||||
List<Monitor> data = monitorClient.getMonitorList(new ArrayList<>()).getData();
|
||||
List<PvTerminalTreeVO> deptList = deptFeignClient.allDeptList().getData();
|
||||
Map<String, PvTerminalTreeVO> mapCode = deptList.stream().collect(Collectors.toMap(PvTerminalTreeVO::getCode, Function.identity()));
|
||||
Map<String, PvTerminalTreeVO> mapList = deptList.stream().collect(Collectors.toMap(PvTerminalTreeVO::getId, Function.identity()));
|
||||
data.stream().forEach(temp->{
|
||||
SubstationQualityStatisticsDTO substaticsDTO = new SubstationQualityStatisticsDTO();
|
||||
substaticsDTO.setId("1");
|
||||
|
||||
});
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
package com.njcn.harmonic.service.send;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.njcn.harmonic.pojo.po.send.ConverterdetailstatisticsPO;
|
||||
|
||||
/**
|
||||
*
|
||||
* Description:
|
||||
* Date: 2023/12/11 11:35【需求编号】
|
||||
*
|
||||
* @author clam
|
||||
* @version V1.0.0
|
||||
*/
|
||||
public interface ConverterdetailstatisticsPOService extends IService<ConverterdetailstatisticsPO>{
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
package com.njcn.harmonic.service.send;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.njcn.harmonic.pojo.po.send.PqTypicalSourceCreatePO;
|
||||
|
||||
/**
|
||||
*
|
||||
* Description:
|
||||
* Date: 2023/12/12 15:16【需求编号】
|
||||
*
|
||||
* @author clam
|
||||
* @version V1.0.0
|
||||
*/
|
||||
public interface PqTypicalSourceCreatePOService extends IService<PqTypicalSourceCreatePO>{
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
package com.njcn.harmonic.service.send;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.njcn.harmonic.pojo.po.send.SubstationQualityStatisticsPO;
|
||||
|
||||
/**
|
||||
*
|
||||
* Description:
|
||||
* Date: 2023/12/7 16:21【需求编号】
|
||||
*
|
||||
* @author clam
|
||||
* @version V1.0.0
|
||||
*/
|
||||
public interface SubstationQualityStatisticsPOService extends IService<SubstationQualityStatisticsPO>{
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
package com.njcn.harmonic.service.send.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.njcn.harmonic.pojo.po.send.ConverterdetailstatisticsPO;
|
||||
import com.njcn.harmonic.service.send.ConverterdetailstatisticsPOService;
|
||||
import com.njcn.prepare.harmonic.mapper.mysql.send.ConverterdetailstatisticsPOMapper;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
*
|
||||
* Description:
|
||||
* Date: 2023/12/11 11:35【需求编号】
|
||||
*
|
||||
* @author clam
|
||||
* @version V1.0.0
|
||||
*/
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class ConverterdetailstatisticsPOServiceImpl extends ServiceImpl<ConverterdetailstatisticsPOMapper, ConverterdetailstatisticsPO> implements ConverterdetailstatisticsPOService {
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
package com.njcn.harmonic.service.send.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.njcn.harmonic.pojo.po.send.PqTypicalSourceCreatePO;
|
||||
import com.njcn.harmonic.service.send.PqTypicalSourceCreatePOService;
|
||||
import com.njcn.prepare.harmonic.mapper.mysql.send.PqTypicalSourceCreatePOMapper;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
*
|
||||
* Description:
|
||||
* Date: 2023/12/12 15:16【需求编号】
|
||||
*
|
||||
* @author clam
|
||||
* @version V1.0.0
|
||||
*/
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class PqTypicalSourceCreatePOServiceImpl extends ServiceImpl<PqTypicalSourceCreatePOMapper, PqTypicalSourceCreatePO> implements PqTypicalSourceCreatePOService {
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
package com.njcn.harmonic.service.send.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.njcn.harmonic.pojo.po.send.SubstationQualityStatisticsPO;
|
||||
import com.njcn.harmonic.service.send.SubstationQualityStatisticsPOService;
|
||||
import com.njcn.prepare.harmonic.mapper.mysql.send.SubstationQualityStatisticsPOMapper;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
*
|
||||
* Description:
|
||||
* Date: 2023/12/7 16:21【需求编号】
|
||||
*
|
||||
* @author clam
|
||||
* @version V1.0.0
|
||||
*/
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class SubstationQualityStatisticsPOServiceImpl extends ServiceImpl<SubstationQualityStatisticsPOMapper, SubstationQualityStatisticsPO> implements SubstationQualityStatisticsPOService {
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -12,6 +12,8 @@ import com.njcn.prepare.harmonic.service.mysql.area.RStatOrgService;
|
||||
import com.njcn.prepare.harmonic.service.mysql.dim.*;
|
||||
import com.njcn.prepare.harmonic.service.mysql.line.PollutionService;
|
||||
import com.njcn.prepare.harmonic.service.mysql.newalgorithm.*;
|
||||
import com.njcn.prepare.harmonic.service.mysql.send.ConverterdetailstatisticsPOService;
|
||||
import com.njcn.prepare.harmonic.service.mysql.send.PqTypicalSourceCreatePOService;
|
||||
import com.njcn.prepare.harmonic.service.mysql.upload.IRUploadPointStatisticalDataDService;
|
||||
import com.yomahub.liteflow.annotation.LiteflowComponent;
|
||||
import com.yomahub.liteflow.annotation.LiteflowMethod;
|
||||
@@ -69,6 +71,10 @@ public class OrgPointExecutor extends BaseExecutor{
|
||||
private final RDimBusStationEventStartisMPOService rDimBusStationEventStartisMPOService;
|
||||
private final RDimBusStationEventStartisYPOService rDimBusStationEventStartisYPOService;
|
||||
private final IRUploadPointStatisticalDataDService irUploadPointStatisticalDataDService;
|
||||
|
||||
|
||||
private final ConverterdetailstatisticsPOService converterdetailstatisticsPOService;
|
||||
private final PqTypicalSourceCreatePOService pqTypicalSourceCreatePOService;
|
||||
/**
|
||||
*
|
||||
* 3.3.2. 单位标数据质量
|
||||
@@ -615,4 +621,31 @@ public class OrgPointExecutor extends BaseExecutor{
|
||||
irUploadPointStatisticalDataDService.insertPointStatisticalDataDay(bindCmp.getRequestData());
|
||||
}
|
||||
|
||||
/**
|
||||
* 河北国网上送接口
|
||||
* 2.4.1.18 接收电能质量换流站指标汇总统计数据接口
|
||||
* xuyang
|
||||
*/
|
||||
@LiteflowMethod(value = LiteFlowMethodEnum.IS_ACCESS, nodeId = "converterdetailstatistics", nodeType = NodeTypeEnum.COMMON)
|
||||
public boolean converterdetailstatisticsAccess(NodeComponent bindCmp) {
|
||||
return isAccess(bindCmp);
|
||||
}
|
||||
@LiteflowMethod(value = LiteFlowMethodEnum.PROCESS, nodeId = "converterdetailstatistics", nodeType = NodeTypeEnum.COMMON)
|
||||
public void converterdetailstatisticsProcess(NodeComponent bindCmp) {
|
||||
CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam = bindCmp.getRequestData();
|
||||
converterdetailstatisticsPOService.handlerDay(calculatedParam);
|
||||
}
|
||||
/**
|
||||
*河北国网上送接口
|
||||
*2.4.1.9 接收电能质量典型源荷指标统计数据接口
|
||||
*/
|
||||
@LiteflowMethod(value = LiteFlowMethodEnum.IS_ACCESS, nodeId = "pqTypicalSourceCreatePOService", nodeType = NodeTypeEnum.COMMON)
|
||||
public boolean pqTypicalSourceCreatePOServiceAccess(NodeComponent bindCmp) {
|
||||
return isAccess(bindCmp);
|
||||
}
|
||||
@LiteflowMethod(value = LiteFlowMethodEnum.PROCESS, nodeId = "pqTypicalSourceCreatePOService", nodeType = NodeTypeEnum.COMMON)
|
||||
public void pqTypicalSourceCreatePOServiceProcess(NodeComponent bindCmp) {
|
||||
CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam = bindCmp.getRequestData();
|
||||
pqTypicalSourceCreatePOService.handlerDay(calculatedParam);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ import com.njcn.prepare.harmonic.pojo.bo.CalculatedParam;
|
||||
import com.njcn.prepare.harmonic.service.mysql.line.PollutionService;
|
||||
import com.njcn.prepare.harmonic.service.mysql.newalgorithm.RStatSubstationService;
|
||||
import com.njcn.prepare.harmonic.service.mysql.upload.IRUploadSubstationStatisticalDataDService;
|
||||
import com.njcn.prepare.harmonic.service.mysql.send.SubstationQualityStatisticsPOService;
|
||||
import com.yomahub.liteflow.annotation.LiteflowComponent;
|
||||
import com.yomahub.liteflow.annotation.LiteflowMethod;
|
||||
import com.yomahub.liteflow.core.NodeComponent;
|
||||
@@ -26,6 +27,7 @@ public class SubStationExecutor extends BaseExecutor{
|
||||
|
||||
private final PollutionService pollutionService;
|
||||
private final RStatSubstationService rStatSubstationService;
|
||||
private final SubstationQualityStatisticsPOService substationQualityStatisticsPOService;
|
||||
private final IRUploadSubstationStatisticalDataDService rUploadSubstationStatisticalDataDService;
|
||||
|
||||
|
||||
@@ -64,6 +66,26 @@ public class SubStationExecutor extends BaseExecutor{
|
||||
}
|
||||
}
|
||||
}
|
||||
/**需求:
|
||||
* FWJK-PMS3.0-TC0013-电能质量管理两级贯通接口V1.10
|
||||
* 2.4.1.19 接收电能质量换流站指标统计明细数据接口
|
||||
*
|
||||
*/
|
||||
@LiteflowMethod(value = LiteFlowMethodEnum.IS_ACCESS, nodeId = "substationQualityStatistics", nodeType = NodeTypeEnum.COMMON)
|
||||
public boolean processSubstationQualityStatistics(NodeComponent bindCmp) {
|
||||
return isAccess(bindCmp);
|
||||
}
|
||||
@LiteflowMethod(value = LiteFlowMethodEnum.PROCESS, nodeId = "substationQualityStatistics", nodeType = NodeTypeEnum.COMMON)
|
||||
public void processSubstationQualityStatisticss(NodeComponent bindCmp) {
|
||||
String tag = bindCmp.getTag();
|
||||
CalculatedParam<String> calculatedParam = bindCmp.getRequestData();
|
||||
|
||||
substationQualityStatisticsPOService.handleDay(calculatedParam);
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/********************************************算法负责人:xy***********************************************************/
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
package com.njcn.prepare.harmonic.mapper.mysql.send;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.njcn.harmonic.pojo.po.send.ConverterdetailstatisticsPO;
|
||||
|
||||
/**
|
||||
*
|
||||
* Description:
|
||||
* Date: 2023/12/11 11:35【需求编号】
|
||||
*
|
||||
* @author clam
|
||||
* @version V1.0.0
|
||||
*/
|
||||
public interface ConverterdetailstatisticsPOMapper extends BaseMapper<ConverterdetailstatisticsPO> {
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
package com.njcn.prepare.harmonic.mapper.mysql.send;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.njcn.harmonic.pojo.po.send.PqTypicalSourceCreatePO;
|
||||
|
||||
/**
|
||||
*
|
||||
* Description:
|
||||
* Date: 2023/12/12 15:16【需求编号】
|
||||
*
|
||||
* @author clam
|
||||
* @version V1.0.0
|
||||
*/
|
||||
public interface PqTypicalSourceCreatePOMapper extends BaseMapper<PqTypicalSourceCreatePO> {
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
package com.njcn.prepare.harmonic.mapper.mysql.send;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.njcn.harmonic.pojo.po.send.SubstationQualityStatisticsPO;
|
||||
|
||||
/**
|
||||
*
|
||||
* Description:
|
||||
* Date: 2023/12/7 16:21【需求编号】
|
||||
*
|
||||
* @author clam
|
||||
* @version V1.0.0
|
||||
*/
|
||||
public interface SubstationQualityStatisticsPOMapper extends BaseMapper<SubstationQualityStatisticsPO> {
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
<?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.prepare.harmonic.mapper.mysql.send.ConverterdetailstatisticsPOMapper">
|
||||
<resultMap id="BaseResultMap" type="com.njcn.harmonic.pojo.po.send.ConverterdetailstatisticsPO">
|
||||
<!--@mbg.generated-->
|
||||
<!--@Table converterdetailstatistics-->
|
||||
<result column="id" jdbcType="VARCHAR" property="id" />
|
||||
<result column="abnormalBusAvgRate" jdbcType="DECIMAL" property="abnormalbusavgrate" />
|
||||
<result column="abnormalBusNum" jdbcType="INTEGER" property="abnormalbusnum" />
|
||||
<result column="abnormalBusRate" jdbcType="DECIMAL" property="abnormalbusrate" />
|
||||
<result column="abnormalConverterAvgRate" jdbcType="DECIMAL" property="abnormalConverterAvgRateabnormalconverteravgrate" />
|
||||
<result column="abnormalConverterNum" jdbcType="INTEGER" property="abnormalconverternum" />
|
||||
<result column="abnormalConverterRate" jdbcType="DECIMAL" property="abnormalconverterrate" />
|
||||
<result column="cityId" jdbcType="VARCHAR" property="cityid" />
|
||||
<result column="cityName" jdbcType="VARCHAR" property="cityname" />
|
||||
<result column="monitorAlternatingBusNum" jdbcType="INTEGER" property="monitoralternatingbusnum" />
|
||||
<result column="monitorAlternatingBusRate" jdbcType="DECIMAL" property="monitoralternatingbusrate" />
|
||||
<result column="monitorConverterNum" jdbcType="INTEGER" property="monitorconverternum" />
|
||||
<result column="monitorConverterRate" jdbcType="DECIMAL" property="monitorconverterrate" />
|
||||
<result column="onlineAlternatingBusNum" jdbcType="INTEGER" property="onlinealternatingbusnum" />
|
||||
<result column="onlineConverterNum" jdbcType="INTEGER" property="onlineconverternum" />
|
||||
<result column="provinceName" jdbcType="VARCHAR" property="provincename" />
|
||||
<result column="provinceId" jdbcType="VARCHAR" property="provinceid" />
|
||||
<result column="statisticalDate" jdbcType="VARCHAR" property="statisticaldate" />
|
||||
<result column="statisticalType" jdbcType="VARCHAR" property="statisticaltype" />
|
||||
<result column="statisticalLevel" jdbcType="VARCHAR" property="statisticallevel" />
|
||||
<result column="abnormalConverterCount" jdbcType="INTEGER" property="abnormalconvertercount" />
|
||||
<result column="monitorConverterCount" jdbcType="INTEGER" property="monitorconvertercount" />
|
||||
<result column="abnormalBusCount" jdbcType="INTEGER" property="abnormalbuscount" />
|
||||
<result column="monitorAlternatingBusCount" jdbcType="INTEGER" property="monitoralternatingbuscount" />
|
||||
</resultMap>
|
||||
<sql id="Base_Column_List">
|
||||
<!--@mbg.generated-->
|
||||
id, abnormalBusAvgRate, abnormalBusNum, abnormalBusRate, abnormalConverterAvgRate,
|
||||
abnormalConverterNum, abnormalConverterRate, cityId, cityName, monitorAlternatingBusNum,
|
||||
monitorAlternatingBusRate, monitorConverterNum, monitorConverterRate, onlineAlternatingBusNum,
|
||||
onlineConverterNum, provinceName, provinceId, statisticalDate, statisticalType, statisticalLevel,
|
||||
abnormalConverterCount, monitorConverterCount, abnormalBusCount, monitorAlternatingBusCount
|
||||
</sql>
|
||||
</mapper>
|
||||
@@ -0,0 +1,13 @@
|
||||
<?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.prepare.harmonic.mapper.mysql.send.PqTypicalSourceCreatePOMapper">
|
||||
|
||||
<sql id="Base_Column_List">
|
||||
<!--@mbg.generated-->
|
||||
id, statisticalDate, statisticalLevel, statisticalType, indexType, provinceId, provinceName,
|
||||
cityId, cityName, countyId, countyName, industryType, interferenceSourceNum, averageOvDays,
|
||||
flickerAvgOvRate, flickerOvNum, flickerOvRate, iAvgOvRate, iOvNum, iOvRate, inseqAvgOvRate,
|
||||
inseqOvNum, inseqOvRate, monitorNum, monitoringRate, ovNum, ovRate, unbanOvNum, unbanOvRate,
|
||||
vAvgOvRate, vOvNum, vOvRate, unbanAvgOvRate, ovDayCount
|
||||
</sql>
|
||||
</mapper>
|
||||
@@ -0,0 +1,46 @@
|
||||
<?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.prepare.harmonic.mapper.mysql.send.SubstationQualityStatisticsPOMapper">
|
||||
<resultMap id="BaseResultMap" type="com.njcn.harmonic.pojo.po.send.SubstationQualityStatisticsPO">
|
||||
<!--@mbg.generated-->
|
||||
<!--@Table substation_quality_statistics-->
|
||||
<id column="id" jdbcType="VARCHAR" property="id" />
|
||||
<result column="statisticalDate" jdbcType="VARCHAR" property="statisticaldate" />
|
||||
<result column="statisticalType" jdbcType="VARCHAR" property="statisticaltype" />
|
||||
<result column="provinceId" jdbcType="VARCHAR" property="provinceid" />
|
||||
<result column="provinceName" jdbcType="VARCHAR" property="provincename" />
|
||||
<result column="cityId" jdbcType="VARCHAR" property="cityid" />
|
||||
<result column="cityName" jdbcType="VARCHAR" property="cityname" />
|
||||
<result column="countyId" jdbcType="VARCHAR" property="countyid" />
|
||||
<result column="countyName" jdbcType="VARCHAR" property="countyname" />
|
||||
<result column="converterId" jdbcType="VARCHAR" property="converterid" />
|
||||
<result column="converterName" jdbcType="VARCHAR" property="convertername" />
|
||||
<result column="voltageLevel" jdbcType="VARCHAR" property="voltagelevel" />
|
||||
<result column="busId" jdbcType="VARCHAR" property="busid" />
|
||||
<result column="busName" jdbcType="VARCHAR" property="busname" />
|
||||
<result column="busVoltageLevel" jdbcType="VARCHAR" property="busvoltagelevel" />
|
||||
<result column="monitorId" jdbcType="VARCHAR" property="monitorid" />
|
||||
<result column="effectiveMonitorNum" jdbcType="INTEGER" property="effectivemonitornum" />
|
||||
<result column="harmvOvDay" jdbcType="INTEGER" property="harmvovday" />
|
||||
<result column="monthsCount" jdbcType="INTEGER" property="monthscount" />
|
||||
<result column="monthOvDays" jdbcType="DECIMAL" property="monthovdays" />
|
||||
<result column="oddVoltLimit" jdbcType="DECIMAL" property="oddvoltlimit" />
|
||||
<result column="totalOvDays" jdbcType="INTEGER" property="totalovdays" />
|
||||
<result column="v11" jdbcType="DECIMAL" property="v11" />
|
||||
<result column="v13" jdbcType="DECIMAL" property="v13" />
|
||||
<result column="v23" jdbcType="DECIMAL" property="v23" />
|
||||
<result column="v25" jdbcType="DECIMAL" property="v25" />
|
||||
<result column="v3" jdbcType="DECIMAL" property="v3" />
|
||||
<result column="v5" jdbcType="DECIMAL" property="v5" />
|
||||
<result column="v7" jdbcType="DECIMAL" property="v7" />
|
||||
<result column="vthd" jdbcType="DECIMAL" property="vthd" />
|
||||
<result column="vthdLimit" jdbcType="DECIMAL" property="vthdlimit" />
|
||||
</resultMap>
|
||||
<sql id="Base_Column_List">
|
||||
<!--@mbg.generated-->
|
||||
id, statisticalDate, statisticalType, provinceId, provinceName, cityId, cityName,
|
||||
countyId, countyName, converterId, converterName, voltageLevel, busId, busName, busVoltageLevel,
|
||||
monitorId, effectiveMonitorNum, harmvOvDay, monthsCount, monthOvDays, oddVoltLimit,
|
||||
totalOvDays, v11, v13, v23, v25, v3, v5, v7, vthd, vthdLimit
|
||||
</sql>
|
||||
</mapper>
|
||||
@@ -0,0 +1,20 @@
|
||||
package com.njcn.prepare.harmonic.service.mysql.send;
|
||||
|
||||
import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO;
|
||||
import com.njcn.harmonic.pojo.po.send.ConverterdetailstatisticsPO;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.njcn.prepare.harmonic.pojo.bo.CalculatedParam;
|
||||
|
||||
/**
|
||||
*
|
||||
* Description:
|
||||
* Date: 2023/12/11 11:35【需求编号】
|
||||
*
|
||||
* @author clam
|
||||
* @version V1.0.0
|
||||
*/
|
||||
public interface ConverterdetailstatisticsPOService extends IService<ConverterdetailstatisticsPO>{
|
||||
|
||||
|
||||
void handlerDay(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam);
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
package com.njcn.prepare.harmonic.service.mysql.send;
|
||||
|
||||
import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO;
|
||||
import com.njcn.harmonic.pojo.po.send.PqTypicalSourceCreatePO;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.njcn.prepare.harmonic.pojo.bo.CalculatedParam;
|
||||
|
||||
/**
|
||||
*
|
||||
* Description:
|
||||
* Date: 2023/12/12 15:16【需求编号】
|
||||
*
|
||||
* @author clam
|
||||
* @version V1.0.0
|
||||
*/
|
||||
public interface PqTypicalSourceCreatePOService extends IService<PqTypicalSourceCreatePO>{
|
||||
|
||||
|
||||
void handlerDay(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam);
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
package com.njcn.prepare.harmonic.service.mysql.send;
|
||||
|
||||
import com.njcn.harmonic.pojo.po.send.SubstationQualityStatisticsPO;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.njcn.prepare.harmonic.pojo.bo.CalculatedParam;
|
||||
|
||||
/**
|
||||
*
|
||||
* Description:
|
||||
* Date: 2023/12/7 16:21【需求编号】
|
||||
*
|
||||
* @author clam
|
||||
* @version V1.0.0
|
||||
*/
|
||||
public interface SubstationQualityStatisticsPOService extends IService<SubstationQualityStatisticsPO>{
|
||||
|
||||
|
||||
void handleDay(CalculatedParam<String> calculatedParam);
|
||||
}
|
||||
@@ -0,0 +1,290 @@
|
||||
package com.njcn.prepare.harmonic.service.mysql.send.impl;
|
||||
|
||||
import cn.hutool.core.date.DatePattern;
|
||||
import cn.hutool.core.date.LocalDateTimeUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO;
|
||||
import com.njcn.device.biz.pojo.dto.LineDevGetDTO;
|
||||
import com.njcn.device.pms.api.MonitorClient;
|
||||
import com.njcn.device.pms.api.PmsGeneratrixClient;
|
||||
import com.njcn.device.pms.api.StatationStatClient;
|
||||
import com.njcn.device.pms.pojo.dto.PmsGeneratrixDTO;
|
||||
import com.njcn.device.pms.pojo.param.PmsBaseParam;
|
||||
import com.njcn.device.pms.pojo.param.PmsGeneratrixParam;
|
||||
import com.njcn.device.pms.pojo.po.Monitor;
|
||||
import com.njcn.device.pms.pojo.po.StatationStat;
|
||||
import com.njcn.harmonic.pojo.po.RMpEventDetailDPO;
|
||||
import com.njcn.harmonic.pojo.po.day.RStatLimitRateDPO;
|
||||
import com.njcn.harmonic.pojo.po.send.ConverterdetailstatisticsPO;
|
||||
import com.njcn.prepare.harmonic.mapper.mysql.send.ConverterdetailstatisticsPOMapper;
|
||||
import com.njcn.prepare.harmonic.pojo.bo.CalculatedParam;
|
||||
import com.njcn.prepare.harmonic.pojo.mysql.ROperatingMonitorDPO;
|
||||
import com.njcn.prepare.harmonic.service.mysql.day.IRStatLimitRateDService;
|
||||
import com.njcn.prepare.harmonic.service.mysql.line.RMpEventDetailDService;
|
||||
import com.njcn.prepare.harmonic.service.mysql.line.ROperatingMonitorService;
|
||||
import com.njcn.prepare.harmonic.service.mysql.send.ConverterdetailstatisticsPOService;
|
||||
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 com.njcn.user.api.DeptFeignClient;
|
||||
import com.njcn.user.pojo.vo.PvTerminalTreeVO;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.time.LocalDate;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
*
|
||||
* Description:
|
||||
* Date: 2023/12/11 11:35【需求编号】
|
||||
*
|
||||
* @author clam
|
||||
* @version V1.0.0
|
||||
*/
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class ConverterdetailstatisticsPOServiceImpl extends ServiceImpl<ConverterdetailstatisticsPOMapper, ConverterdetailstatisticsPO> implements ConverterdetailstatisticsPOService{
|
||||
|
||||
|
||||
private final MonitorClient monitorClient;
|
||||
private final DeptFeignClient deptFeignClient;
|
||||
private final StatationStatClient statationStatClient;
|
||||
private final PmsGeneratrixClient pmsGeneratrixClient;
|
||||
private final DicDataFeignClient dicDataFeignClient;
|
||||
private final IRStatLimitRateDService irStatLimitRateDService;
|
||||
private final ROperatingMonitorService rOperatingMonitorService;
|
||||
private final RMpEventDetailDService rMpEventDetailDService;
|
||||
|
||||
@Override
|
||||
public void handlerDay(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam) {
|
||||
|
||||
List<ConverterdetailstatisticsPO> converterdetailstatisticsPOList = new ArrayList<>();
|
||||
LocalDate localDate = LocalDateTimeUtil.parseDate(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN);
|
||||
|
||||
|
||||
List<DictData> supvVoltageDicList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DEV_VOLTAGE.getCode()).getData();
|
||||
//过滤交流电压等级
|
||||
List<String> exchangeList = supvVoltageDicList.stream().filter(temp -> temp.getName().contains("交流")).map(DictData::getId).collect(Collectors.toList());
|
||||
Map<String, DictData> mapVoltage = supvVoltageDicList.stream().collect(Collectors.toMap(DictData::getId, Function.identity()));
|
||||
List<StatationStat> stationList = statationStatClient.getstatationStatList(new PmsBaseParam()).getData();
|
||||
List<DictData> data1 = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.LINE_STATE.getCode()).getData();
|
||||
DictData run = data1.stream().filter(temp->Objects.equals(temp.getCode(),DicDataEnum.RUN.getCode())).findFirst().get();
|
||||
List<PvTerminalTreeVO> deptList = deptFeignClient.allDeptList().getData();
|
||||
Map<String, PvTerminalTreeVO> mapCode = deptList.stream().collect(Collectors.toMap(PvTerminalTreeVO::getCode, Function.identity()));
|
||||
Map<String, PvTerminalTreeVO> mapList = deptList.stream().collect(Collectors.toMap(PvTerminalTreeVO::getId, Function.identity()));
|
||||
|
||||
for (DeptGetChildrenMoreDTO deptGetChildrenMoreDTO : calculatedParam.getIdList()) {
|
||||
|
||||
ConverterdetailstatisticsPO converterdetailstatisticsPO = new ConverterdetailstatisticsPO();
|
||||
converterdetailstatisticsPO.setStatisticalDate(calculatedParam.getDataDate());
|
||||
converterdetailstatisticsPO.setStatisticalType("03");
|
||||
|
||||
if (mapCode.containsKey(deptGetChildrenMoreDTO.getUnitId())) {
|
||||
PvTerminalTreeVO pvTerminalTreeVO = mapCode.get(deptGetChildrenMoreDTO.getUnitId());
|
||||
String[] split = (pvTerminalTreeVO.getPids() + StrUtil.COMMA + pvTerminalTreeVO.getId())
|
||||
.split(StrUtil.COMMA);
|
||||
if (split.length != 4) {
|
||||
continue;
|
||||
}
|
||||
for (int i = 2; i < split.length; i++) {
|
||||
//省
|
||||
if (i == 2) {
|
||||
if (mapList.containsKey(split[i])) {
|
||||
pvTerminalTreeVO = mapList.get(split[i]);
|
||||
converterdetailstatisticsPO.setProvinceName(pvTerminalTreeVO.getName());
|
||||
converterdetailstatisticsPO.setProvinceId(pvTerminalTreeVO.getCode());
|
||||
converterdetailstatisticsPO.setStatisticalLevel("3");
|
||||
}
|
||||
}
|
||||
//市
|
||||
if (i == 3) {
|
||||
if (mapList.containsKey(split[i])) {
|
||||
pvTerminalTreeVO = mapList.get(split[i]);
|
||||
converterdetailstatisticsPO.setCityName(pvTerminalTreeVO.getName());
|
||||
converterdetailstatisticsPO.setCityId(pvTerminalTreeVO.getCode());
|
||||
converterdetailstatisticsPO.setStatisticalLevel("4");
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
converterdetailstatisticsPO.setId(converterdetailstatisticsPO.getCityId()+"-"+calculatedParam.getDataDate());
|
||||
|
||||
if (!CollectionUtils.isEmpty(deptGetChildrenMoreDTO.getLineBaseList())) {
|
||||
List<LineDevGetDTO> lineBaseList = deptGetChildrenMoreDTO.getLineBaseList();
|
||||
List<String> tempLineList = lineBaseList.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList());
|
||||
List<Monitor> tempMonitor = monitorClient.getMonitorList(tempLineList).getData();
|
||||
tempMonitor = tempMonitor.stream().filter(temp -> Objects.equals(temp.getMonitorState(), run.getId())).collect(Collectors.toList());
|
||||
List<String> tempIds = tempMonitor.stream().map(Monitor::getId).collect(Collectors.toList());
|
||||
List<String> generatrixIds = tempMonitor.stream().map(Monitor::getLineId).distinct().collect(Collectors.toList());
|
||||
List<String> powerrIds = tempMonitor.stream().map(Monitor::getPowerrId).distinct().collect(Collectors.toList());
|
||||
PmsGeneratrixParam pmsGeneratrixParam = new PmsGeneratrixParam();
|
||||
pmsGeneratrixParam.setGeneratrixIds(generatrixIds);
|
||||
List<PmsGeneratrixDTO> data = pmsGeneratrixClient.getGeneratrixInfo(pmsGeneratrixParam).getData();
|
||||
List<String> exchangelineIds = data.stream().filter(temp -> exchangeList.contains(temp.getGeneratrixVoltageLevel())).
|
||||
map(PmsGeneratrixDTO::getGeneratrixId).collect(Collectors.toList());
|
||||
converterdetailstatisticsPO.setOnlineAlternatingBusNum(exchangelineIds.size());
|
||||
converterdetailstatisticsPO.setOnlineConverterNum(powerrIds.size());
|
||||
//监测监测点
|
||||
List<ROperatingMonitorDPO> list = new ArrayList<>();
|
||||
if (!CollectionUtils.isEmpty(tempIds)) {
|
||||
list = rOperatingMonitorService.lambdaQuery().
|
||||
in(ROperatingMonitorDPO::getMeasurementPointId, tempIds).
|
||||
eq(ROperatingMonitorDPO::getDataDate, calculatedParam.getDataDate()).
|
||||
ge(ROperatingMonitorDPO::getDataIntegrityRate, 0.95).
|
||||
eq(ROperatingMonitorDPO::getIsUnusual, 1).list();
|
||||
|
||||
}
|
||||
//
|
||||
List<String> collect = list.stream().map(ROperatingMonitorDPO::getMeasurementPointId).collect(Collectors.toList());
|
||||
//监测监测点
|
||||
List<Monitor> supervisLines = tempMonitor.stream().filter(temp -> collect.contains(temp.getId())).distinct().collect(Collectors.toList());
|
||||
List<String> supervispowerrIds = supervisLines.stream().map(Monitor::getPowerrId).distinct().collect(Collectors.toList());
|
||||
|
||||
List<String> supervisgeneratrixIds = supervisLines.stream().map(Monitor::getLineId).distinct().collect(Collectors.toList());
|
||||
List<String> supervisexchangelineIds = data.stream().filter(temp -> supervisgeneratrixIds.contains(temp.getGeneratrixVoltageLevel())).
|
||||
map(PmsGeneratrixDTO::getGeneratrixId).collect(Collectors.toList());
|
||||
|
||||
converterdetailstatisticsPO.setMonitorAlternatingBusCount(supervisexchangelineIds.size());
|
||||
converterdetailstatisticsPO.setMonitorConverterCount(supervispowerrIds.size());
|
||||
converterdetailstatisticsPO.setMonitorAlternatingBusNum(supervisexchangelineIds.size());
|
||||
converterdetailstatisticsPO.setMonitorConverterNum(supervispowerrIds.size());
|
||||
//发生暂态,稳态的监测点集合
|
||||
List<String> abnormallines;
|
||||
if (!CollectionUtils.isEmpty(tempIds)) {
|
||||
List<RStatLimitRateDPO> rStatLimitRateDPOS = irStatLimitRateDService.lambdaQuery().in(RStatLimitRateDPO::getLineId,tempIds).eq(RStatLimitRateDPO::getTime,localDate).eq(RStatLimitRateDPO::getPhasicType,"T").list();
|
||||
List<RMpEventDetailDPO> rMpEventDetailDPOList = rMpEventDetailDService.lambdaQuery().in(RMpEventDetailDPO::getMeasurementPointId, tempIds).eq(RMpEventDetailDPO::getDataDate, localDate).list();
|
||||
List<String> limitIds = rStatLimitRateDPOS.stream().filter(temp ->
|
||||
(temp.getVoltageDevOvertime() +
|
||||
temp.getFlickerOvertime() +
|
||||
temp.getUbalanceOvertime() +
|
||||
temp.getUharm2Overtime() +
|
||||
temp.getUharm3Overtime() +
|
||||
temp.getUharm4Overtime() +
|
||||
temp.getUharm5Overtime() +
|
||||
temp.getUharm6Overtime() +
|
||||
temp.getUharm7Overtime() +
|
||||
temp.getUharm8Overtime() +
|
||||
temp.getUharm9Overtime() +
|
||||
temp.getUharm10Overtime() +
|
||||
temp.getUharm11Overtime() +
|
||||
temp.getUharm12Overtime() +
|
||||
temp.getUharm13Overtime() +
|
||||
temp.getUharm14Overtime() +
|
||||
temp.getUharm15Overtime() +
|
||||
temp.getUharm16Overtime() +
|
||||
temp.getUharm17Overtime() +
|
||||
temp.getUharm18Overtime() +
|
||||
temp.getUharm19Overtime() +
|
||||
temp.getUharm20Overtime() +
|
||||
temp.getUharm21Overtime() +
|
||||
temp.getUharm22Overtime() +
|
||||
temp.getUharm23Overtime() +
|
||||
temp.getUharm24Overtime() +
|
||||
temp.getUharm25Overtime() +
|
||||
temp.getIharm2Overtime() +
|
||||
temp.getIharm3Overtime() +
|
||||
temp.getIharm4Overtime() +
|
||||
temp.getIharm5Overtime() +
|
||||
temp.getIharm6Overtime() +
|
||||
temp.getIharm7Overtime() +
|
||||
temp.getIharm8Overtime() +
|
||||
temp.getIharm9Overtime() +
|
||||
temp.getIharm10Overtime() +
|
||||
temp.getIharm11Overtime() +
|
||||
temp.getIharm12Overtime() +
|
||||
temp.getIharm13Overtime() +
|
||||
temp.getIharm14Overtime() +
|
||||
temp.getIharm15Overtime() +
|
||||
temp.getIharm16Overtime() +
|
||||
temp.getIharm17Overtime() +
|
||||
temp.getIharm18Overtime() +
|
||||
temp.getIharm19Overtime() +
|
||||
temp.getIharm20Overtime() +
|
||||
temp.getIharm21Overtime() +
|
||||
temp.getIharm22Overtime() +
|
||||
temp.getIharm23Overtime() +
|
||||
temp.getIharm24Overtime() +
|
||||
temp.getIharm25Overtime() +
|
||||
temp.getInuharm1Overtime() +
|
||||
temp.getInuharm2Overtime() +
|
||||
temp.getInuharm3Overtime() +
|
||||
temp.getInuharm4Overtime() +
|
||||
temp.getInuharm5Overtime() +
|
||||
temp.getInuharm6Overtime() +
|
||||
temp.getInuharm7Overtime() +
|
||||
temp.getInuharm8Overtime() +
|
||||
temp.getInuharm9Overtime() +
|
||||
temp.getInuharm10Overtime() +
|
||||
temp.getInuharm11Overtime() +
|
||||
temp.getInuharm12Overtime() +
|
||||
temp.getInuharm13Overtime() +
|
||||
temp.getInuharm14Overtime() +
|
||||
temp.getInuharm15Overtime() +
|
||||
temp.getInuharm16Overtime() +
|
||||
temp.getFreqDevOvertime() +
|
||||
temp.getINegOvertime()) > 0
|
||||
).map(RStatLimitRateDPO::getLineId).distinct().collect(Collectors.toList());
|
||||
List<String> eventLineIds = rMpEventDetailDPOList.stream().filter(temp -> (temp.getInterruptTimes() +
|
||||
temp.getSagTimes() +
|
||||
temp.getSwellTimes()) > 0).map(RMpEventDetailDPO::getMeasurementPointId).distinct().collect(Collectors.toList());
|
||||
|
||||
limitIds.retainAll(eventLineIds);
|
||||
abnormallines = limitIds;
|
||||
} else {
|
||||
abnormallines = new ArrayList<>();
|
||||
}
|
||||
List<Monitor> abnormalmonitor = tempMonitor.stream().filter(temp -> abnormallines.contains(temp.getId())).distinct().collect(Collectors.toList());
|
||||
|
||||
List<String> abnormalpowerrIds = supervisLines.stream().map(Monitor::getPowerrId).distinct().collect(Collectors.toList());
|
||||
|
||||
List<String> abnormalgeneratrixIds = supervisLines.stream().map(Monitor::getLineId).distinct().collect(Collectors.toList());
|
||||
converterdetailstatisticsPO.setAbnormalBusNum(abnormalgeneratrixIds.size());
|
||||
converterdetailstatisticsPO.setAbnormalBusCount(abnormalgeneratrixIds.size());
|
||||
converterdetailstatisticsPO.setAbnormalConverterCount(abnormalpowerrIds.size());
|
||||
converterdetailstatisticsPO.setAbnormalConverterNum(abnormalpowerrIds.size());
|
||||
|
||||
converterdetailstatisticsPO.setAbnormalBusRate(divideAndRound(converterdetailstatisticsPO.getAbnormalBusNum(),generatrixIds.size()));
|
||||
converterdetailstatisticsPO.setAbnormalBusAvgRate(divideAndRound(converterdetailstatisticsPO.getAbnormalBusNum(),generatrixIds.size()));
|
||||
|
||||
converterdetailstatisticsPO.setAbnormalConverterRate(divideAndRound(converterdetailstatisticsPO.getAbnormalConverterNum(),powerrIds.size()));
|
||||
converterdetailstatisticsPO.setAbnormalConverterAvgRate(divideAndRound(converterdetailstatisticsPO.getAbnormalConverterNum(),powerrIds.size()));
|
||||
|
||||
converterdetailstatisticsPO.setMonitorConverterRate(divideAndRound(converterdetailstatisticsPO.getMonitorConverterNum(),powerrIds.size()));
|
||||
converterdetailstatisticsPO.setMonitorAlternatingBusRate(divideAndRound(converterdetailstatisticsPO.getMonitorAlternatingBusNum(),generatrixIds.size()));
|
||||
}
|
||||
converterdetailstatisticsPOList.add(converterdetailstatisticsPO);
|
||||
|
||||
}
|
||||
if(!CollectionUtils.isEmpty(converterdetailstatisticsPOList)){
|
||||
this.saveOrUpdateBatch(converterdetailstatisticsPOList);
|
||||
}
|
||||
}
|
||||
/**
|
||||
* @Description: divideAndRound
|
||||
* @Param: 两个int做除法返回BigDecimal保留2位小数 考虑到被除数为0的情况
|
||||
* @return: java.math.BigDecimal
|
||||
* @Author: clam
|
||||
* @Date: 2023/12/12
|
||||
*/
|
||||
public BigDecimal divideAndRound(Integer a, Integer b) {
|
||||
if (b == 0) {
|
||||
return BigDecimal.valueOf(0.00);
|
||||
}
|
||||
BigDecimal num1 = new BigDecimal(a);
|
||||
BigDecimal num2 = new BigDecimal(b);
|
||||
BigDecimal result = num1.divide(num2, 2, RoundingMode.HALF_UP);
|
||||
return result;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,294 @@
|
||||
package com.njcn.prepare.harmonic.service.mysql.send.impl;
|
||||
|
||||
import cn.hutool.core.date.DatePattern;
|
||||
import cn.hutool.core.date.LocalDateTimeUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO;
|
||||
import com.njcn.device.biz.pojo.dto.LineDevGetDTO;
|
||||
import com.njcn.harmonic.pojo.po.RMpPartHarmonicDetailD;
|
||||
import com.njcn.harmonic.pojo.po.RMpSurplusHarmonicDetailD;
|
||||
import com.njcn.harmonic.pojo.po.send.PqTypicalSourceCreatePO;
|
||||
import com.njcn.prepare.harmonic.mapper.mysql.line.RMpPartHarmonicDetailDMapper;
|
||||
import com.njcn.prepare.harmonic.mapper.mysql.line.RMpSurplusHarmonicDetailDMapper;
|
||||
import com.njcn.prepare.harmonic.mapper.mysql.send.PqTypicalSourceCreatePOMapper;
|
||||
import com.njcn.prepare.harmonic.pojo.bo.CalculatedParam;
|
||||
import com.njcn.prepare.harmonic.pojo.mysql.ROperatingMonitorDPO;
|
||||
import com.njcn.prepare.harmonic.service.mysql.line.ROperatingMonitorService;
|
||||
import com.njcn.prepare.harmonic.service.mysql.send.PqTypicalSourceCreatePOService;
|
||||
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 com.njcn.user.api.DeptFeignClient;
|
||||
import com.njcn.user.pojo.vo.PvTerminalTreeVO;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.time.LocalDate;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
*
|
||||
* Description:
|
||||
* Date: 2023/12/12 15:16【需求编号】
|
||||
*
|
||||
* @author clam
|
||||
* @version V1.0.0
|
||||
*/
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class PqTypicalSourceCreatePOServiceImpl extends ServiceImpl<PqTypicalSourceCreatePOMapper, PqTypicalSourceCreatePO> implements PqTypicalSourceCreatePOService{
|
||||
|
||||
private final DeptFeignClient deptFeignClient;
|
||||
private final DicDataFeignClient dicDataFeignClient;
|
||||
|
||||
private final RMpPartHarmonicDetailDMapper rMpPartHarmonicDetailDMapper;
|
||||
private final RMpSurplusHarmonicDetailDMapper rMpSurplusHarmonicDetailDMapper;
|
||||
private final ROperatingMonitorService rOperatingMonitorService;
|
||||
|
||||
/*
|
||||
*01 电压
|
||||
*02 长时间闪变
|
||||
*03 三相电压不平衡
|
||||
*04 电压总谐波畸变率
|
||||
*05 各次谐波电压
|
||||
*06 负序电流
|
||||
*
|
||||
* */
|
||||
@Override
|
||||
public void handlerDay(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam) {
|
||||
|
||||
List<PqTypicalSourceCreatePO> pqTypicalSourceCreatePOList = new ArrayList<>();
|
||||
LocalDate localDate = LocalDateTimeUtil.parseDate(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN);
|
||||
|
||||
QueryWrapper<RMpPartHarmonicDetailD> queryWrapper = new QueryWrapper<>();
|
||||
QueryWrapper<RMpSurplusHarmonicDetailD> rMpSurplusHarmonicDetailDQueryWrapper = new QueryWrapper<>();
|
||||
|
||||
|
||||
List<PvTerminalTreeVO> deptList = deptFeignClient.allDeptList().getData();
|
||||
Map<String, PvTerminalTreeVO> mapCode = deptList.stream().collect(Collectors.toMap(PvTerminalTreeVO::getCode, Function.identity()));
|
||||
Map<String, PvTerminalTreeVO> mapList = deptList.stream().collect(Collectors.toMap(PvTerminalTreeVO::getId, Function.identity()));
|
||||
List<DictData> indicatorTypeDate = dicDataFeignClient.getDicDataByTypeCode(
|
||||
DicDataTypeEnum.STEADY_STATIS.getCode()).getData();
|
||||
for (DeptGetChildrenMoreDTO deptGetChildrenMoreDTO : calculatedParam.getIdList()) {
|
||||
List<String> collect1 = deptGetChildrenMoreDTO.getLineBaseList().stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList());
|
||||
|
||||
|
||||
//站内有效监测点数量
|
||||
Integer effectiveMonitorNum;
|
||||
|
||||
List<RMpPartHarmonicDetailD> rMpPartHarmonicDetailDS;
|
||||
List<RMpSurplusHarmonicDetailD> rMpSurplusHarmonicDetailDS;
|
||||
if (!CollectionUtils.isEmpty(collect1)) {
|
||||
List<ROperatingMonitorDPO> list = rOperatingMonitorService.lambdaQuery().
|
||||
in(ROperatingMonitorDPO::getMeasurementPointId, collect1).
|
||||
eq(ROperatingMonitorDPO::getDataDate, calculatedParam.getDataDate()).
|
||||
ge(ROperatingMonitorDPO::getDataIntegrityRate, 0.95).
|
||||
eq(ROperatingMonitorDPO::getIsUnusual, 1).list();
|
||||
effectiveMonitorNum = list.size();
|
||||
|
||||
queryWrapper.clear();
|
||||
queryWrapper.
|
||||
in("measurement_point_id",collect1).
|
||||
eq("data_date",localDate);
|
||||
rMpPartHarmonicDetailDS = rMpPartHarmonicDetailDMapper.selectList(queryWrapper);
|
||||
|
||||
rMpSurplusHarmonicDetailDQueryWrapper.clear();
|
||||
rMpSurplusHarmonicDetailDQueryWrapper.
|
||||
in("measurement_point_id",collect1).
|
||||
eq("data_date",localDate);
|
||||
rMpSurplusHarmonicDetailDS = rMpSurplusHarmonicDetailDMapper.selectList(rMpSurplusHarmonicDetailDQueryWrapper);
|
||||
|
||||
} else {
|
||||
rMpSurplusHarmonicDetailDS = new ArrayList<>();
|
||||
rMpPartHarmonicDetailDS = new ArrayList<>();
|
||||
effectiveMonitorNum = 0;
|
||||
}
|
||||
|
||||
// rStatOrgDPOQueryWrapper.clear();
|
||||
// rStatOrgDPOQueryWrapper.select("effective_measurement").
|
||||
// eq("org_no",deptGetChildrenMoreDTO.getUnitId()).
|
||||
// eq("data_type",dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId()).
|
||||
// eq("data_date",localDate);
|
||||
// RStatOrgDPO rStatOrgDPO = rStatOrgDMapper.selectOne(rStatOrgDPOQueryWrapper);
|
||||
|
||||
indicatorTypeDate.forEach(dictData -> {
|
||||
if(Objects.equals(dictData.getCode(), DicDataEnum.HARMONIC_VOLTAGE.getCode())||
|
||||
Objects.equals(dictData.getCode(), DicDataEnum.FLICKER.getCode())||
|
||||
Objects.equals(dictData.getCode(), DicDataEnum.phase_Voltage.getCode())||
|
||||
// Objects.equals(dictData.getCode(), DicDataEnum.HARMONIC_CURRENT.getCode())||
|
||||
Objects.equals(dictData.getCode(), DicDataEnum.NEG_CURRENT.getCode()
|
||||
)){
|
||||
PqTypicalSourceCreatePO pqTypicalSourceCreatePO = new PqTypicalSourceCreatePO();
|
||||
pqTypicalSourceCreatePO = initPqTypicalSourceCreatePO(pqTypicalSourceCreatePO,dictData.getCode(),rMpPartHarmonicDetailDS,rMpSurplusHarmonicDetailDS,collect1.size());
|
||||
pqTypicalSourceCreatePO.setStatisticalDate(calculatedParam.getDataDate());
|
||||
pqTypicalSourceCreatePO.setStatisticalType("03");
|
||||
|
||||
pqTypicalSourceCreatePO.setMonitorNum(effectiveMonitorNum);
|
||||
pqTypicalSourceCreatePO.setMonitoringRate(divideAndRound(effectiveMonitorNum,collect1.size()));
|
||||
|
||||
|
||||
if (mapCode.containsKey(deptGetChildrenMoreDTO.getUnitId())) {
|
||||
PvTerminalTreeVO pvTerminalTreeVO = mapCode.get(deptGetChildrenMoreDTO.getUnitId());
|
||||
String[] split = (pvTerminalTreeVO.getPids() + StrUtil.COMMA + pvTerminalTreeVO.getId())
|
||||
.split(StrUtil.COMMA);
|
||||
if (split.length <3) {
|
||||
return;
|
||||
}
|
||||
|
||||
for (int i = 2; i < split.length; i++) {
|
||||
//省
|
||||
if (i == 2) {
|
||||
if (mapList.containsKey(split[i])) {
|
||||
pvTerminalTreeVO = mapList.get(split[i]);
|
||||
pqTypicalSourceCreatePO.setProvinceName(pvTerminalTreeVO.getName());
|
||||
pqTypicalSourceCreatePO.setProvinceId(pvTerminalTreeVO.getCode());
|
||||
pqTypicalSourceCreatePO.setStatisticalLevel("3");
|
||||
}
|
||||
}
|
||||
//市
|
||||
if (i == 3) {
|
||||
if (mapList.containsKey(split[i])) {
|
||||
pvTerminalTreeVO = mapList.get(split[i]);
|
||||
pqTypicalSourceCreatePO.setCityName(pvTerminalTreeVO.getName());
|
||||
pqTypicalSourceCreatePO.setCityId(pvTerminalTreeVO.getCode());
|
||||
pqTypicalSourceCreatePO.setStatisticalLevel("4");
|
||||
|
||||
}
|
||||
}
|
||||
//县
|
||||
if (i == 4) {
|
||||
if (mapList.containsKey(split[i])) {
|
||||
pvTerminalTreeVO = mapList.get(split[i]);
|
||||
pqTypicalSourceCreatePO.setCountyName(pvTerminalTreeVO.getName());
|
||||
pqTypicalSourceCreatePO.setCountyId(pvTerminalTreeVO.getCode());
|
||||
pqTypicalSourceCreatePO.setStatisticalLevel("5");
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
pqTypicalSourceCreatePO.setId(deptGetChildrenMoreDTO.getUnitId()+"-"+pqTypicalSourceCreatePO.getIndexType()+"-"+calculatedParam.getDataDate());
|
||||
pqTypicalSourceCreatePOList.add(pqTypicalSourceCreatePO);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
if(!CollectionUtils.isEmpty(pqTypicalSourceCreatePOList)){
|
||||
this.saveOrUpdateBatch(pqTypicalSourceCreatePOList);
|
||||
}
|
||||
}
|
||||
|
||||
private PqTypicalSourceCreatePO initPqTypicalSourceCreatePO(PqTypicalSourceCreatePO pqTypicalSourceCreatePO,
|
||||
String code,
|
||||
List<RMpPartHarmonicDetailD> rMpPartHarmonicDetailDS,
|
||||
List<RMpSurplusHarmonicDetailD> rMpSurplusHarmonicDetailDS,
|
||||
int count) {
|
||||
BigDecimal initialvalue = new BigDecimal(0.00);
|
||||
pqTypicalSourceCreatePO.setInterferenceSourceNum(count);
|
||||
|
||||
pqTypicalSourceCreatePO.setFlickerOvNum(0);
|
||||
pqTypicalSourceCreatePO.setFlickerOvRate(initialvalue);
|
||||
pqTypicalSourceCreatePO.setFlickerAvgOvRate(initialvalue);
|
||||
|
||||
pqTypicalSourceCreatePO.setIOvNum(0);
|
||||
pqTypicalSourceCreatePO.setIOvRate(initialvalue);
|
||||
pqTypicalSourceCreatePO.setIAvgOvRate(initialvalue);
|
||||
//负序电流
|
||||
int inseqOvNum = Integer.valueOf(rMpPartHarmonicDetailDS.stream().filter(temp ->temp.getIsINeg()==1).count()+"");
|
||||
pqTypicalSourceCreatePO.setInseqOvNum(inseqOvNum);
|
||||
pqTypicalSourceCreatePO.setInseqOvRate(divideAndRound(inseqOvNum,count));
|
||||
pqTypicalSourceCreatePO.setInseqAvgOvRate(divideAndRound(inseqOvNum,count));
|
||||
|
||||
pqTypicalSourceCreatePO.setUnbanOvNum(0);
|
||||
pqTypicalSourceCreatePO.setUnbanOvRate(initialvalue);
|
||||
pqTypicalSourceCreatePO.setUnbanAvgOvRate(initialvalue);
|
||||
|
||||
pqTypicalSourceCreatePO.setVOvNum(0);
|
||||
pqTypicalSourceCreatePO.setVOvRate(initialvalue);
|
||||
pqTypicalSourceCreatePO.setVAvgOvRate(initialvalue);
|
||||
|
||||
//稳态指标是否超标(0:否 1:是)
|
||||
int ovNum = Integer.valueOf(rMpPartHarmonicDetailDS.stream().filter(temp ->temp.getIsHarmonic()==1).count()+"");
|
||||
pqTypicalSourceCreatePO.setOvNum(ovNum);
|
||||
pqTypicalSourceCreatePO.setOvRate(divideAndRound(ovNum,count));
|
||||
if(ovNum>0){
|
||||
pqTypicalSourceCreatePO.setOvDayCount(1);
|
||||
pqTypicalSourceCreatePO.setAverageOvDays(new BigDecimal(1.00));
|
||||
}else {
|
||||
pqTypicalSourceCreatePO.setOvDayCount(0);
|
||||
pqTypicalSourceCreatePO.setAverageOvDays(initialvalue);
|
||||
}
|
||||
|
||||
if (Objects.equals(code,DicDataEnum.FLICKER.getCode())) {
|
||||
pqTypicalSourceCreatePO.setIndexType("02");
|
||||
int value = Integer.valueOf(rMpSurplusHarmonicDetailDS.stream().filter(temp ->temp.getIsFlicker()==1).count()+"");
|
||||
pqTypicalSourceCreatePO.setFlickerOvNum(value);
|
||||
pqTypicalSourceCreatePO.setFlickerOvRate(divideAndRound(value,count));
|
||||
pqTypicalSourceCreatePO.setFlickerAvgOvRate(divideAndRound(value,count));
|
||||
|
||||
} else if (Objects.equals(code,DicDataEnum.NEG_CURRENT.getCode())) {
|
||||
pqTypicalSourceCreatePO.setIndexType("06");
|
||||
int value = Integer.valueOf(rMpPartHarmonicDetailDS.stream().filter(temp ->temp.getIsINeg()==1).count()+"");
|
||||
|
||||
pqTypicalSourceCreatePO.setInseqOvNum(value);
|
||||
pqTypicalSourceCreatePO.setInseqOvRate(divideAndRound(value,count));
|
||||
pqTypicalSourceCreatePO.setInseqAvgOvRate(divideAndRound(value,count));
|
||||
|
||||
}
|
||||
// else if (Objects.equals(code,DicDataEnum.HARMONIC_CURRENT.getCode())) {
|
||||
// pqTypicalSourceCreatePO.setIndexType("02");
|
||||
//
|
||||
// }
|
||||
else if (Objects.equals(code,DicDataEnum.phase_Voltage.getCode())) {
|
||||
int value = Integer.valueOf(rMpPartHarmonicDetailDS.stream().filter(temp ->temp.getIsUnbalance()==1).count()+"");
|
||||
|
||||
pqTypicalSourceCreatePO.setIndexType("03");
|
||||
|
||||
pqTypicalSourceCreatePO.setUnbanOvNum(value);
|
||||
pqTypicalSourceCreatePO.setUnbanOvRate(divideAndRound(value,count));
|
||||
pqTypicalSourceCreatePO.setUnbanAvgOvRate(divideAndRound(value,count));
|
||||
|
||||
} else if (Objects.equals(code,DicDataEnum.HARMONIC_VOLTAGE.getCode())) {
|
||||
int value = Integer.valueOf(rMpPartHarmonicDetailDS.stream().filter(temp ->temp.getIsV()==1).count()+"");
|
||||
|
||||
pqTypicalSourceCreatePO.setIndexType("01");
|
||||
pqTypicalSourceCreatePO.setVOvNum(value);
|
||||
pqTypicalSourceCreatePO.setVOvRate(divideAndRound(value,count));
|
||||
pqTypicalSourceCreatePO.setVAvgOvRate(divideAndRound(value,count));
|
||||
|
||||
}
|
||||
|
||||
return pqTypicalSourceCreatePO;
|
||||
}
|
||||
|
||||
/**
|
||||
* @Description: divideAndRound
|
||||
* @Param: 两个int做除法返回BigDecimal保留2位小数 考虑到被除数为0的情况
|
||||
* @return: java.math.BigDecimal
|
||||
* @Author: clam
|
||||
* @Date: 2023/12/12
|
||||
*/
|
||||
public BigDecimal divideAndRound(Integer a, Integer b) {
|
||||
if (b == 0) {
|
||||
return BigDecimal.valueOf(0.00);
|
||||
}
|
||||
BigDecimal num1 = new BigDecimal(a);
|
||||
BigDecimal num2 = new BigDecimal(b);
|
||||
BigDecimal result = num1.divide(num2, 2, RoundingMode.HALF_UP);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,208 @@
|
||||
package com.njcn.prepare.harmonic.service.mysql.send.impl;
|
||||
|
||||
import cn.hutool.core.date.DatePattern;
|
||||
import cn.hutool.core.date.DateTime;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.date.LocalDateTimeUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.njcn.device.pms.api.MonitorClient;
|
||||
import com.njcn.device.pms.api.StatationStatClient;
|
||||
import com.njcn.device.pms.pojo.param.PmsBaseParam;
|
||||
import com.njcn.device.pms.pojo.po.Monitor;
|
||||
import com.njcn.device.pms.pojo.po.StatationStat;
|
||||
import com.njcn.harmonic.pojo.po.day.RStatDataVDPO;
|
||||
import com.njcn.harmonic.pojo.po.send.SubstationQualityStatisticsPO;
|
||||
import com.njcn.prepare.harmonic.mapper.mysql.send.SubstationQualityStatisticsPOMapper;
|
||||
import com.njcn.prepare.harmonic.pojo.bo.CalculatedParam;
|
||||
import com.njcn.prepare.harmonic.pojo.mysql.ROperatingMonitorDPO;
|
||||
import com.njcn.prepare.harmonic.pojo.po.RStatSubstationMPO;
|
||||
import com.njcn.prepare.harmonic.service.mysql.day.IRStatDataVDService;
|
||||
import com.njcn.prepare.harmonic.service.mysql.line.ROperatingMonitorService;
|
||||
import com.njcn.prepare.harmonic.service.mysql.newalgorithm.RStatSubstationMPOService;
|
||||
import com.njcn.prepare.harmonic.service.mysql.send.SubstationQualityStatisticsPOService;
|
||||
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 com.njcn.user.api.DeptFeignClient;
|
||||
import com.njcn.user.pojo.vo.PvTerminalTreeVO;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
*
|
||||
* Description:
|
||||
* Date: 2023/12/7 16:21【需求编号】
|
||||
*
|
||||
* @author clam
|
||||
* @version V1.0.0
|
||||
*/
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class SubstationQualityStatisticsPOServiceImpl extends ServiceImpl<SubstationQualityStatisticsPOMapper, SubstationQualityStatisticsPO> implements SubstationQualityStatisticsPOService{
|
||||
|
||||
private final MonitorClient monitorClient;
|
||||
private final DeptFeignClient deptFeignClient;
|
||||
private final StatationStatClient statationStatClient;
|
||||
// private final PmsGeneratrixClient pmsGeneratrixClient;
|
||||
private final DicDataFeignClient dicDataFeignClient;
|
||||
private final ROperatingMonitorService rOperatingMonitorService;
|
||||
|
||||
private final IRStatDataVDService IRStatDataVDService;
|
||||
private final RStatSubstationMPOService rStatSubstationMPOService;
|
||||
@Override
|
||||
public void handleDay(CalculatedParam<String> calculatedParam) {
|
||||
|
||||
|
||||
List<SubstationQualityStatisticsPO> substationQualityStatisticsPOList = new ArrayList<>();
|
||||
List<Monitor> monitorList = monitorClient.getMonitorList(new ArrayList<>()).getData();
|
||||
// List<GeneratrixAndPowerStationDTO> pmsGeneratrixDTOList = pmsGeneratrixClient.getGeneratrixAndPowerStationInfo(new PmsGeneratrixParam()).getData();
|
||||
List<StatationStat> stationList = statationStatClient.getstatationStatList(new PmsBaseParam()).getData();
|
||||
List<PvTerminalTreeVO> deptList = deptFeignClient.allDeptList().getData();
|
||||
Map<String, PvTerminalTreeVO> mapCode = deptList.stream().collect(Collectors.toMap(PvTerminalTreeVO::getCode, Function.identity()));
|
||||
Map<String, PvTerminalTreeVO> mapList = deptList.stream().collect(Collectors.toMap(PvTerminalTreeVO::getId, Function.identity()));
|
||||
|
||||
|
||||
DateTime begin = DateUtil.beginOfMonth(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN));
|
||||
DateTime end = DateUtil.endOfMonth(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN));
|
||||
//日date
|
||||
// LocalDate date = LocalDateTimeUtil.parseDate(calculatedParam.getDataDate(),DatePattern.NORM_DATE_PATTERN);
|
||||
//月date
|
||||
LocalDate localDate = LocalDateTimeUtil.parseDate( DateUtil.format(begin, DatePattern.NORM_DATE_PATTERN), DatePattern.NORM_DATE_PATTERN);
|
||||
|
||||
List<DictData> supvVoltageDicList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DEV_VOLTAGE.getCode()).getData();
|
||||
Map<String, DictData> mapVoltage = supvVoltageDicList.stream().collect(Collectors.toMap(DictData::getId, Function.identity()));
|
||||
DictData run = dicDataFeignClient.getDicDataByCode(DicDataEnum.RUN.getCode()).getData();
|
||||
|
||||
|
||||
for (StatationStat temp : stationList) {
|
||||
SubstationQualityStatisticsPO substationQualityStatisticsPO = new SubstationQualityStatisticsPO();
|
||||
// List<GeneratrixAndPowerStationDTO> tempGeneratrixDTOList = pmsGeneratrixDTOList.stream().filter(pmsGeneratrixDTO -> Objects.equals(pmsGeneratrixDTO.getPowerId(), temp.getPowerId())).collect(Collectors.toList());
|
||||
List<Monitor> tempMonitorList = monitorList.stream().filter(monitor -> Objects.equals(monitor.getPowerrId(), temp.getPowerId())).collect(Collectors.toList());
|
||||
List<String> monitorIdList = tempMonitorList.stream().map(Monitor::getId).collect(Collectors.toList());
|
||||
substationQualityStatisticsPO.setStatisticalDate(calculatedParam.getDataDate());
|
||||
substationQualityStatisticsPO.setStatisticalType("03");
|
||||
|
||||
if (mapCode.containsKey(temp.getOrgId())) {
|
||||
PvTerminalTreeVO pvTerminalTreeVO = mapCode.get(temp.getOrgId());
|
||||
String[] split = (pvTerminalTreeVO.getPids() + StrUtil.COMMA + pvTerminalTreeVO.getId())
|
||||
.split(StrUtil.COMMA);
|
||||
for (int i = 2; i < split.length; i++) {
|
||||
//省
|
||||
if (i == 2) {
|
||||
if (mapList.containsKey(split[i])) {
|
||||
pvTerminalTreeVO = mapList.get(split[i]);
|
||||
substationQualityStatisticsPO.setProvinceName(pvTerminalTreeVO.getName());
|
||||
substationQualityStatisticsPO.setProvinceId(pvTerminalTreeVO.getCode());
|
||||
}
|
||||
}
|
||||
//市
|
||||
if (i == 3) {
|
||||
if (mapList.containsKey(split[i])) {
|
||||
pvTerminalTreeVO = mapList.get(split[i]);
|
||||
substationQualityStatisticsPO.setCityName(pvTerminalTreeVO.getName());
|
||||
substationQualityStatisticsPO.setCityId(pvTerminalTreeVO.getCode());
|
||||
}
|
||||
}
|
||||
//县
|
||||
if (i == 4) {
|
||||
if (mapList.containsKey(split[i])) {
|
||||
pvTerminalTreeVO = mapList.get(split[i]);
|
||||
substationQualityStatisticsPO.setCountyName(pvTerminalTreeVO.getName());
|
||||
substationQualityStatisticsPO.setCountyId(pvTerminalTreeVO.getCode());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
substationQualityStatisticsPO.setConverterId(temp.getPowerId());
|
||||
substationQualityStatisticsPO.setConverterName(temp.getPowerName());
|
||||
substationQualityStatisticsPO.setId(temp.getPowerId()+"-"+calculatedParam.getDataDate());
|
||||
|
||||
//电站等级
|
||||
if (mapVoltage.containsKey(temp.getVoltageLevel())) {
|
||||
substationQualityStatisticsPO.setVoltageLevel(String.format("%02d", mapVoltage.get(temp.getVoltageLevel()).getAlgoDescribe()));
|
||||
}
|
||||
substationQualityStatisticsPO.setBusId("");
|
||||
substationQualityStatisticsPO.setBusName("");
|
||||
substationQualityStatisticsPO.setBusVoltageLevel("");
|
||||
substationQualityStatisticsPO.setMonitorId("");
|
||||
|
||||
//站内有效监测点数量
|
||||
Integer effectiveMonitorNum = 0;
|
||||
if (!CollectionUtils.isEmpty(monitorIdList)) {
|
||||
List<ROperatingMonitorDPO> list = rOperatingMonitorService.lambdaQuery().
|
||||
in(ROperatingMonitorDPO::getMeasurementPointId, monitorIdList).
|
||||
eq(ROperatingMonitorDPO::getDataDate, calculatedParam.getDataDate()).
|
||||
ge(ROperatingMonitorDPO::getDataIntegrityRate, 0.95).
|
||||
eq(ROperatingMonitorDPO::getIsUnusual, 1).list();
|
||||
effectiveMonitorNum = list.size();
|
||||
}
|
||||
|
||||
|
||||
substationQualityStatisticsPO.setEffectiveMonitorNum(effectiveMonitorNum);
|
||||
//换流站电压等级》500kv,奇次谐波电压限值为1.6,压总谐波畸变率95%概率值限值为2.0
|
||||
substationQualityStatisticsPO.setOddVoltLimit(BigDecimal.valueOf(1.6).setScale(1,BigDecimal.ROUND_HALF_UP));
|
||||
substationQualityStatisticsPO.setVthdLimit(BigDecimal.valueOf(2.0).setScale(1,BigDecimal.ROUND_HALF_UP));
|
||||
RStatSubstationMPO one = rStatSubstationMPOService.lambdaQuery().eq(RStatSubstationMPO::getSubstationId, temp.getPowerId()).eq(RStatSubstationMPO::getDataDate, localDate).one();
|
||||
if (!Objects.isNull(one)){
|
||||
substationQualityStatisticsPO.setHarmvOvDay(one.getVOverDay().intValue());
|
||||
substationQualityStatisticsPO.setMonthsCount(localDate.getMonthValue());
|
||||
substationQualityStatisticsPO.setMonthOvDays(BigDecimal.valueOf(one.getVOverDay()));
|
||||
substationQualityStatisticsPO.setTotalOvDays(one.getHarmonicOverDay().intValue());
|
||||
}
|
||||
if (!CollectionUtils.isEmpty(monitorIdList)) {
|
||||
List<RStatDataVDPO> cp95 = IRStatDataVDService.lambdaQuery().
|
||||
in(RStatDataVDPO::getLineId, monitorIdList).
|
||||
eq(RStatDataVDPO::getTime, calculatedParam.getDataDate()).
|
||||
eq(RStatDataVDPO::getValueType, "CP95").list();
|
||||
|
||||
if (!CollectionUtils.isEmpty(cp95)) {
|
||||
double vthd = cp95.stream().mapToDouble(RStatDataVDPO::getVThd).average().getAsDouble();
|
||||
substationQualityStatisticsPO.setVthd(BigDecimal.valueOf(vthd).setScale(1,BigDecimal.ROUND_HALF_UP));
|
||||
|
||||
double v3 = cp95.stream().mapToDouble(RStatDataVDPO::getVThd).average().getAsDouble();
|
||||
substationQualityStatisticsPO.setV3(BigDecimal.valueOf(v3).setScale(1,BigDecimal.ROUND_HALF_UP));
|
||||
|
||||
double v5 = cp95.stream().mapToDouble(RStatDataVDPO::getV5).average().getAsDouble();
|
||||
substationQualityStatisticsPO.setV5(BigDecimal.valueOf(v5).setScale(1,BigDecimal.ROUND_HALF_UP));
|
||||
|
||||
double v7 = cp95.stream().mapToDouble(RStatDataVDPO::getV7).average().getAsDouble();
|
||||
substationQualityStatisticsPO.setV7(BigDecimal.valueOf(v7).setScale(1,BigDecimal.ROUND_HALF_UP));
|
||||
|
||||
double v11 = cp95.stream().mapToDouble(RStatDataVDPO::getV11).average().getAsDouble();
|
||||
substationQualityStatisticsPO.setV11(BigDecimal.valueOf(v11).setScale(1,BigDecimal.ROUND_HALF_UP));
|
||||
|
||||
double v13 = cp95.stream().mapToDouble(RStatDataVDPO::getV13).average().getAsDouble();
|
||||
substationQualityStatisticsPO.setV13(BigDecimal.valueOf(v13).setScale(1,BigDecimal.ROUND_HALF_UP));
|
||||
|
||||
double v23 = cp95.stream().mapToDouble(RStatDataVDPO::getV23).average().getAsDouble();
|
||||
substationQualityStatisticsPO.setV23(BigDecimal.valueOf(v23).setScale(1,BigDecimal.ROUND_HALF_UP));
|
||||
|
||||
double v25 = cp95.stream().mapToDouble(RStatDataVDPO::getV25).average().getAsDouble();
|
||||
substationQualityStatisticsPO.setV25(BigDecimal.valueOf(v25).setScale(1,BigDecimal.ROUND_HALF_UP));
|
||||
|
||||
}
|
||||
}
|
||||
substationQualityStatisticsPOList.add(substationQualityStatisticsPO);
|
||||
|
||||
|
||||
}
|
||||
|
||||
if(!CollectionUtils.isEmpty(substationQualityStatisticsPOList)){
|
||||
this.saveOrUpdateBatch(substationQualityStatisticsPOList);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user