算法提交

This commit is contained in:
hzj
2023-12-13 15:40:48 +08:00
parent e1f697f180
commit e5ca1cbd05
39 changed files with 1834 additions and 135 deletions

View File

@@ -10,8 +10,8 @@
pm.Powerr_Id AS powerId, pm.Powerr_Id AS powerId,
pm.Powerr_Name AS powerName, pm.Powerr_Name AS powerName,
pm.org_name as orgName, pm.org_name as orgName,
pg.Generatrix_Id AS generatrixId, pg.id AS generatrixId,
pm.Generatrix_Name AS generatrixName, pm.Line_Name AS generatrixName,
pm.Id AS monitorId, pm.Id AS monitorId,
pm.`Name` AS monitorName, pm.`Name` AS monitorName,
pg.Scale AS generatrixVoltageLevel pg.Scale AS generatrixVoltageLevel

View File

@@ -17,44 +17,42 @@ public class ConverterDetailStatisticsDTO {
/*主键 是否必填:是*/ /*主键 是否必填:是*/
private String id; 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; private String provinceName;
/*省级单位id 是否必填:是*/ /*省级单位id 是否必填:是*/
private String provinceId; private String provinceId;
/*市级单位id 是否必填:是*/
private String cityId;
/*市级单位名称 是否必填:否*/
private String cityName;
/*统计日期 是否必填:是*/ /*统计日期 是否必填:是*/
private String statisticalDate; private String statisticalDate;
/*统计类型 是否必填:是*/ /*统计类型 是否必填:是*/
private String statisticalType; private String statisticalType;
/*统计层级 是否必填:是*/ /*统计层级 是否必填:是*/
private String statisticalLevel; private String statisticalLevel;
/*在运交流母线数量(条) 是否必填:是*/
private Integer onlineAlternatingBusNum;
/*在运换流站数量(座) 是否必填:是*/
private Integer onlineConverterNum;
/*发生超标或暂态母线数量(条) 是否必填:是*/
private Integer abnormalBusNum;
/*监测换流站数量(座) 是否必填:是*/
private Integer monitorConverterNum;
/*监测交流母线数量(条) 是否必填:否*/
private Integer monitorAlternatingBusNum;
/*累计发生超标或暂态换流站数量(座) 是否必填:否*/ /*累计发生超标或暂态换流站数量(座) 是否必填:否*/
private Integer abnormalConverterCount; 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;
} }

View File

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

View File

@@ -38,6 +38,8 @@ public class SubstationQualityStatisticsDTO {
private String converterId; private String converterId;
/*换流站名称 是否必填:是*/ /*换流站名称 是否必填:是*/
private String converterName; private String converterName;
/*电压等级 是否必填:是*/
private String voltageLevel;
/*母线id 是否必填:否*/ /*母线id 是否必填:否*/
private String busId; private String busId;
@@ -51,8 +53,13 @@ public class SubstationQualityStatisticsDTO {
/*站内有效监测点数量(个) 是否必填:是*/ /*站内有效监测点数量(个) 是否必填:是*/
private Integer effectiveMonitorNum; private Integer effectiveMonitorNum;
/*谐波电压超标天数 是否必填:否*/
private Integer harmvOvDay;
/*当年累计月数 是否必填:否*/
private Integer monthsCount;
/*月均超标天数 是否必填:否*/ /*月均超标天数 是否必填:否*/
private BigDecimal monthOvDays; private BigDecimal monthOvDays;
/*奇次谐波电压限值(% 是否必填:是*/ /*奇次谐波电压限值(% 是否必填:是*/
private BigDecimal oddVoltLimit; private BigDecimal oddVoltLimit;
/*累计超标天数 是否必填:否*/ /*累计超标天数 是否必填:否*/
@@ -71,18 +78,13 @@ public class SubstationQualityStatisticsDTO {
private BigDecimal v5; private BigDecimal v5;
/*7次谐波电压95%概率值(% 是否必填:否*/ /*7次谐波电压95%概率值(% 是否必填:否*/
private BigDecimal v7; private BigDecimal v7;
/*电压等级 是否必填:是*/
private String voltageLevel;
/*电压总谐波畸变率95%概率值统计值(% 是否必填:否*/ /*电压总谐波畸变率95%概率值统计值(% 是否必填:否*/
private BigDecimal vthd; private BigDecimal vthd;
/*电压总谐波畸变率95%概率值限值(% 是否必填:是*/ /*电压总谐波畸变率95%概率值限值(% 是否必填:是*/
private BigDecimal vthdLimit; private BigDecimal vthdLimit;
/*谐波电压超标天数 是否必填:否*/
private Integer harmvOvDay;
/*当年累计月数 是否必填:否*/
private Integer monthsCount;

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -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.dim.*;
import com.njcn.prepare.harmonic.service.mysql.line.PollutionService; import com.njcn.prepare.harmonic.service.mysql.line.PollutionService;
import com.njcn.prepare.harmonic.service.mysql.newalgorithm.*; 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.njcn.prepare.harmonic.service.mysql.upload.IRUploadPointStatisticalDataDService;
import com.yomahub.liteflow.annotation.LiteflowComponent; import com.yomahub.liteflow.annotation.LiteflowComponent;
import com.yomahub.liteflow.annotation.LiteflowMethod; import com.yomahub.liteflow.annotation.LiteflowMethod;
@@ -69,6 +71,10 @@ public class OrgPointExecutor extends BaseExecutor{
private final RDimBusStationEventStartisMPOService rDimBusStationEventStartisMPOService; private final RDimBusStationEventStartisMPOService rDimBusStationEventStartisMPOService;
private final RDimBusStationEventStartisYPOService rDimBusStationEventStartisYPOService; private final RDimBusStationEventStartisYPOService rDimBusStationEventStartisYPOService;
private final IRUploadPointStatisticalDataDService irUploadPointStatisticalDataDService; private final IRUploadPointStatisticalDataDService irUploadPointStatisticalDataDService;
private final ConverterdetailstatisticsPOService converterdetailstatisticsPOService;
private final PqTypicalSourceCreatePOService pqTypicalSourceCreatePOService;
/** /**
* *
* 3.3.2. 单位标数据质量 * 3.3.2. 单位标数据质量
@@ -615,4 +621,31 @@ public class OrgPointExecutor extends BaseExecutor{
irUploadPointStatisticalDataDService.insertPointStatisticalDataDay(bindCmp.getRequestData()); 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);
}
} }

View File

@@ -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.line.PollutionService;
import com.njcn.prepare.harmonic.service.mysql.newalgorithm.RStatSubstationService; 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.upload.IRUploadSubstationStatisticalDataDService;
import com.njcn.prepare.harmonic.service.mysql.send.SubstationQualityStatisticsPOService;
import com.yomahub.liteflow.annotation.LiteflowComponent; import com.yomahub.liteflow.annotation.LiteflowComponent;
import com.yomahub.liteflow.annotation.LiteflowMethod; import com.yomahub.liteflow.annotation.LiteflowMethod;
import com.yomahub.liteflow.core.NodeComponent; import com.yomahub.liteflow.core.NodeComponent;
@@ -26,6 +27,7 @@ public class SubStationExecutor extends BaseExecutor{
private final PollutionService pollutionService; private final PollutionService pollutionService;
private final RStatSubstationService rStatSubstationService; private final RStatSubstationService rStatSubstationService;
private final SubstationQualityStatisticsPOService substationQualityStatisticsPOService;
private final IRUploadSubstationStatisticalDataDService rUploadSubstationStatisticalDataDService; 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***********************************************************/ /********************************************算法负责人:xy***********************************************************/

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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