预处理模块代码合拼

This commit is contained in:
2023-01-12 11:44:44 +08:00
parent de08816b36
commit bc7deab760
136 changed files with 7400 additions and 921 deletions

View File

@@ -14,8 +14,8 @@
<properties> <properties>
<maven.compiler.source>8</maven.compiler.source> <maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target> <maven.compiler.target>8</maven.compiler.target>
<org.projectlombok.version>1.18.6</org.projectlombok.version> <org.projectlombok.version>1.18.12</org.projectlombok.version>
<org.mapstruct.version>1.3.0.Final</org.mapstruct.version> <org.mapstruct.version>1.4.2.Final</org.mapstruct.version>
</properties> </properties>
@@ -82,7 +82,7 @@
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.mapstruct</groupId> <groupId>org.mapstruct</groupId>
<artifactId>mapstruct-jdk8</artifactId> <artifactId>mapstruct</artifactId>
<version>${org.mapstruct.version}</version> <version>${org.mapstruct.version}</version>
</dependency> </dependency>
@@ -91,6 +91,11 @@
<artifactId>mapstruct-processor</artifactId> <artifactId>mapstruct-processor</artifactId>
<version>${org.mapstruct.version}</version> <version>${org.mapstruct.version}</version>
</dependency> </dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok-mapstruct-binding</artifactId>
<version>0.2.0</version>
</dependency>
<!-- 要与mapstruct版本匹配用同一时间的版本,不然会出现各种问题 --> <!-- 要与mapstruct版本匹配用同一时间的版本,不然会出现各种问题 -->
<dependency> <dependency>
@@ -106,6 +111,31 @@
<version>${project.version}</version> <version>${project.version}</version>
</dependency> </dependency>
<!--调用minio服务器-->
<dependency>
<groupId>me.tongfei</groupId>
<artifactId>progressbar</artifactId>
<version>0.5.3</version>
</dependency>
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>4.8.1</version>
</dependency>
<dependency>
<groupId>io.minio</groupId>
<artifactId>minio</artifactId>
<version>8.2.1</version>
<exclusions>
<exclusion>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency> <dependency>
<groupId>com.njcn</groupId> <groupId>com.njcn</groupId>
<artifactId>prepare-api</artifactId> <artifactId>prepare-api</artifactId>
@@ -116,16 +146,20 @@
<dependency> <dependency>
<groupId>com.baomidou</groupId> <groupId>com.baomidou</groupId>
<artifactId>dynamic-datasource-spring-boot-starter</artifactId> <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
<version>3.5.1</version>
</dependency> </dependency>
<!--oracle驱动--> <!--oracle驱动-->
<dependency> <dependency>
<groupId>com.oracle.database.jdbc</groupId> <groupId>com.oracle.database.jdbc</groupId>
<artifactId>ojdbc8</artifactId> <artifactId>ojdbc8</artifactId>
<version>21.6.0.0</version>
</dependency> </dependency>
<!-- 不支持的字符集 (在类路径中添加 orai18n.jar): ZHS16GBK --> <!-- 不支持的字符集 (在类路径中添加 orai18n.jar): ZHS16GBK -->
<dependency> <dependency>
<groupId>com.oracle.database.nls</groupId> <groupId>com.oracle.database.nls</groupId>
<artifactId>orai18n</artifactId> <artifactId>orai18n</artifactId>
<version>21.1.0.0</version>
</dependency> </dependency>
</dependencies> </dependencies>
@@ -160,7 +194,7 @@
<executions> <executions>
<execution> <execution>
<id>build-image</id> <id>build-image</id>
<phase>${docker.operate}</phase> <phase>site</phase>
<goals> <goals>
<goal>build</goal> <goal>build</goal>
</goals> </goals>

View File

@@ -0,0 +1,46 @@
package com.njcn.prepare.harmonic.constant;
/**
* @author qijian
*/
public interface AlgorithmParam {
/**
* 暂态/稳态
*/
Integer TEMPORARY_STATE = 0;
Integer STEADY_STATE = 1;
/**
* 主网/配网
*/
Integer MAIN_NET = 1;
Integer DIS_NET = 2;
/**
* 数据来源Oracle/InfluxDB
*/
Integer ORACLE_DATA = 0;
Integer INFLUX_DATA = 1;
/**
* 监测点数据完整率 统计间隔
*/
Integer TIME_INTERVAL = 15;
/*
* 监测点暂态指标超标事件类型
* 0扰动1暂降2暂升3中断4其他5录波
*/
Integer DISTURBANCE= 0;
Integer SAG= 1;
Integer RISE= 2;
Integer INTERRUPT= 3;
Integer other= 4;
Integer RECORDING_WAVE= 5;
}

View File

@@ -0,0 +1,77 @@
package com.njcn.prepare.harmonic.constant;
import com.njcn.redis.utils.RedisUtil;
import com.njcn.system.api.DicDataFeignClient;
import com.njcn.system.enums.DicDataTypeEnum;
import com.njcn.system.pojo.po.DictData;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import java.util.List;
import java.util.Set;
/**
* Description:
* 接口文档访问地址http://serverIP:port/swagger-ui.html
* Date: 2022/11/25 16:21【需求编号】
*
* @author clam
* @version V1.0.0
*/
@Component
@Slf4j
public class DictCache {
public static final String NAME_KEY = "DicCache:";
public static final String SPLIT_SIGN = "-";
private @Autowired
DicDataFeignClient dicDataFeignClient;
private @Autowired
RedisUtil redisUtil;
private @Autowired
RedisTemplate<String, Object> redisTemplate;
@PostConstruct
public void init(){
log.info("系统启动中。。。加载dictDataMap");
/*todo 后续将字典表全部加载*/
List<DictData> data = dicDataFeignClient.getDicDataByTypeCode (DicDataTypeEnum.LINE_STATE.getCode ( )).getData ( );
List<DictData> data2 = dicDataFeignClient.getDicDataByTypeCode (DicDataTypeEnum.DEV_STATUS.getCode ( )).getData ( );
List<DictData> data3 = dicDataFeignClient.getDicDataByTypeCode (DicDataTypeEnum.LINE_SORT.getCode ( )).getData ( );
/*
* key:NAME_KEY前缀清缓存使用+SPLIT_SIGN拼接符号+DicDataTypeEnum+SPLIT_SIGN拼接符号+Code
* Value:id
* */
data.forEach (temp->{
redisUtil.saveByKey (NAME_KEY+SPLIT_SIGN+DicDataTypeEnum.LINE_STATE.getCode ( )+SPLIT_SIGN+temp.getCode (),temp.getId ());
});
data2.forEach (temp->{
redisUtil.saveByKey (NAME_KEY+SPLIT_SIGN+DicDataTypeEnum.DEV_STATUS.getCode ( )+SPLIT_SIGN+temp.getCode (),temp.getId ());
});
data3.forEach (temp->{
redisUtil.saveByKey (NAME_KEY+SPLIT_SIGN+DicDataTypeEnum.LINE_SORT.getCode ( )+SPLIT_SIGN+temp.getCode (),temp.getId ());
});
}
@PreDestroy
public void destroy(){
log.info("系统运行结束");
Set<String> keys = redisTemplate.keys(NAME_KEY + "*");
redisTemplate.delete(keys);
}
}

View File

@@ -24,215 +24,215 @@ public interface InfluxdbPOConverter {
InfluxdbPOConverter INFLUXDB_PO_CONVERTER = Mappers.getMapper (InfluxdbPOConverter.class); InfluxdbPOConverter INFLUXDB_PO_CONVERTER = Mappers.getMapper (InfluxdbPOConverter.class);
/*DataHarmRateVPO*/ /*DataHarmRateVPO*/
@Mapping(source = "v1", target = "fundamentalVoltageMax") @Mapping(source = "v1", target = "fundamentalVoltageMax" ,numberFormat = "#.000")
@Mapping(source = "v2", target = "harmonicVoltageContent2Max") @Mapping(source = "v2", target = "harmonicVoltageContent2Max" ,numberFormat = "#.000")
@Mapping(source = "v3", target = "harmonicVoltageContent3Max") @Mapping(source = "v3", target = "harmonicVoltageContent3Max" ,numberFormat = "#.000")
@Mapping(source = "v4", target = "harmonicVoltageContent4Max") @Mapping(source = "v4", target = "harmonicVoltageContent4Max" ,numberFormat = "#.000")
@Mapping(source = "v5", target = "harmonicVoltageContent5Max") @Mapping(source = "v5", target = "harmonicVoltageContent5Max" ,numberFormat = "#.000")
@Mapping(source = "v6", target = "harmonicVoltageContent6Max") @Mapping(source = "v6", target = "harmonicVoltageContent6Max" ,numberFormat = "#.000")
@Mapping(source = "v7", target = "harmonicVoltageContent7Max") @Mapping(source = "v7", target = "harmonicVoltageContent7Max" ,numberFormat = "#.000")
@Mapping(source = "v8", target = "harmonicVoltageContent8Max") @Mapping(source = "v8", target = "harmonicVoltageContent8Max" ,numberFormat = "#.000")
@Mapping(source = "v9", target = "harmonicVoltageContent9Max") @Mapping(source = "v9", target = "harmonicVoltageContent9Max" ,numberFormat = "#.000")
@Mapping(source = "v10", target = "harmonicVoltageContent10Max") @Mapping(source = "v10", target = "harmonicVoltageContent10Max" ,numberFormat = "#.000")
@Mapping(source = "v11", target = "harmonicVoltageContent11Max") @Mapping(source = "v11", target = "harmonicVoltageContent11Max" ,numberFormat = "#.000")
@Mapping(source = "v12", target = "harmonicVoltageContent12Max") @Mapping(source = "v12", target = "harmonicVoltageContent12Max" ,numberFormat = "#.000")
@Mapping(source = "v13", target = "harmonicVoltageContent13Max") @Mapping(source = "v13", target = "harmonicVoltageContent13Max" ,numberFormat = "#.000")
@Mapping(source = "v14", target = "harmonicVoltageContent14Max") @Mapping(source = "v14", target = "harmonicVoltageContent14Max" ,numberFormat = "#.000")
@Mapping(source = "v15", target = "harmonicVoltageContent15Max") @Mapping(source = "v15", target = "harmonicVoltageContent15Max" ,numberFormat = "#.000")
@Mapping(source = "v16", target = "harmonicVoltageContent16Max") @Mapping(source = "v16", target = "harmonicVoltageContent16Max" ,numberFormat = "#.000")
@Mapping(source = "v17", target = "harmonicVoltageContent17Max") @Mapping(source = "v17", target = "harmonicVoltageContent17Max" ,numberFormat = "#.000")
@Mapping(source = "v18", target = "harmonicVoltageContent18Max") @Mapping(source = "v18", target = "harmonicVoltageContent18Max" ,numberFormat = "#.000")
@Mapping(source = "v19", target = "harmonicVoltageContent19Max") @Mapping(source = "v19", target = "harmonicVoltageContent19Max" ,numberFormat = "#.000")
@Mapping(source = "v20", target = "harmonicVoltageContent20Max") @Mapping(source = "v20", target = "harmonicVoltageContent20Max" ,numberFormat = "#.000")
@Mapping(source = "v21", target = "harmonicVoltageContent21Max") @Mapping(source = "v21", target = "harmonicVoltageContent21Max" ,numberFormat = "#.000")
@Mapping(source = "v22", target = "harmonicVoltageContent22Max") @Mapping(source = "v22", target = "harmonicVoltageContent22Max" ,numberFormat = "#.000")
@Mapping(source = "v23", target = "harmonicVoltageContent23Max") @Mapping(source = "v23", target = "harmonicVoltageContent23Max" ,numberFormat = "#.000")
@Mapping(source = "v24", target = "harmonicVoltageContent24Max") @Mapping(source = "v24", target = "harmonicVoltageContent24Max" ,numberFormat = "#.000")
@Mapping(source = "v25", target = "harmonicVoltageContent25Max") @Mapping(source = "v25", target = "harmonicVoltageContent25Max" ,numberFormat = "#.000")
@Mapping(source = "v26", target = "harmonicVoltageContent26Max") @Mapping(source = "v26", target = "harmonicVoltageContent26Max" ,numberFormat = "#.000")
@Mapping(source = "v27", target = "harmonicVoltageContent27Max") @Mapping(source = "v27", target = "harmonicVoltageContent27Max" ,numberFormat = "#.000")
@Mapping(source = "v28", target = "harmonicVoltageContent28Max") @Mapping(source = "v28", target = "harmonicVoltageContent28Max" ,numberFormat = "#.000")
@Mapping(source = "v29", target = "harmonicVoltageContent29Max") @Mapping(source = "v29", target = "harmonicVoltageContent29Max" ,numberFormat = "#.000")
@Mapping(source = "v30", target = "harmonicVoltageContent30Max") @Mapping(source = "v30", target = "harmonicVoltageContent30Max" ,numberFormat = "#.000")
@Mapping(source = "v31", target = "harmonicVoltageContent31Max") @Mapping(source = "v31", target = "harmonicVoltageContent31Max" ,numberFormat = "#.000")
@Mapping(source = "v32", target = "harmonicVoltageContent32Max") @Mapping(source = "v32", target = "harmonicVoltageContent32Max" ,numberFormat = "#.000")
@Mapping(source = "v33", target = "harmonicVoltageContent33Max") @Mapping(source = "v33", target = "harmonicVoltageContent33Max" ,numberFormat = "#.000")
@Mapping(source = "v34", target = "harmonicVoltageContent34Max") @Mapping(source = "v34", target = "harmonicVoltageContent34Max" ,numberFormat = "#.000")
@Mapping(source = "v35", target = "harmonicVoltageContent35Max") @Mapping(source = "v35", target = "harmonicVoltageContent35Max" ,numberFormat = "#.000")
@Mapping(source = "v36", target = "harmonicVoltageContent36Max") @Mapping(source = "v36", target = "harmonicVoltageContent36Max" ,numberFormat = "#.000")
@Mapping(source = "v37", target = "harmonicVoltageContent37Max") @Mapping(source = "v37", target = "harmonicVoltageContent37Max" ,numberFormat = "#.000")
@Mapping(source = "v38", target = "harmonicVoltageContent38Max") @Mapping(source = "v38", target = "harmonicVoltageContent38Max" ,numberFormat = "#.000")
@Mapping(source = "v39", target = "harmonicVoltageContent39Max") @Mapping(source = "v39", target = "harmonicVoltageContent39Max" ,numberFormat = "#.000")
@Mapping(source = "v40", target = "harmonicVoltageContent40Max") @Mapping(source = "v40", target = "harmonicVoltageContent40Max" ,numberFormat = "#.000")
@Mapping(source = "v41", target = "harmonicVoltageContent41Max") @Mapping(source = "v41", target = "harmonicVoltageContent41Max" ,numberFormat = "#.000")
@Mapping(source = "v42", target = "harmonicVoltageContent42Max") @Mapping(source = "v42", target = "harmonicVoltageContent42Max" ,numberFormat = "#.000")
@Mapping(source = "v43", target = "harmonicVoltageContent43Max") @Mapping(source = "v43", target = "harmonicVoltageContent43Max" ,numberFormat = "#.000")
@Mapping(source = "v44", target = "harmonicVoltageContent44Max") @Mapping(source = "v44", target = "harmonicVoltageContent44Max" ,numberFormat = "#.000")
@Mapping(source = "v45", target = "harmonicVoltageContent45Max") @Mapping(source = "v45", target = "harmonicVoltageContent45Max" ,numberFormat = "#.000")
@Mapping(source = "v46", target = "harmonicVoltageContent46Max") @Mapping(source = "v46", target = "harmonicVoltageContent46Max" ,numberFormat = "#.000")
@Mapping(source = "v47", target = "harmonicVoltageContent47Max") @Mapping(source = "v47", target = "harmonicVoltageContent47Max" ,numberFormat = "#.000")
@Mapping(source = "v48", target = "harmonicVoltageContent48Max") @Mapping(source = "v48", target = "harmonicVoltageContent48Max" ,numberFormat = "#.000")
@Mapping(source = "v49", target = "harmonicVoltageContent49Max") @Mapping(source = "v49", target = "harmonicVoltageContent49Max" ,numberFormat = "#.000")
@Mapping(source = "v50", target = "harmonicVoltageContent50Max") @Mapping(source = "v50", target = "harmonicVoltageContent50Max" ,numberFormat = "#.000")
public RMpHarmonicVRateReportD dataVPOTORMpHarmonicPReportDPOMax(DataHarmRateVPO dataVPO); public RMpHarmonicVRateReportD dataVPOTORMpHarmonicPReportDPOMax(DataHarmRateVPO dataVPO);
@Mapping(source = "v1", target = "fundamentalVoltageMin") @Mapping(source = "v1", target = "fundamentalVoltageMin",numberFormat = "#.000")
@Mapping(source = "v2", target = "harmonicVoltageContent2Min") @Mapping(source = "v2", target = "harmonicVoltageContent2Min",numberFormat = "#.000")
@Mapping(source = "v3", target = "harmonicVoltageContent3Min") @Mapping(source = "v3", target = "harmonicVoltageContent3Min",numberFormat = "#.000")
@Mapping(source = "v4", target = "harmonicVoltageContent4Min") @Mapping(source = "v4", target = "harmonicVoltageContent4Min",numberFormat = "#.000")
@Mapping(source = "v5", target = "harmonicVoltageContent5Min") @Mapping(source = "v5", target = "harmonicVoltageContent5Min",numberFormat = "#.000")
@Mapping(source = "v6", target = "harmonicVoltageContent6Min") @Mapping(source = "v6", target = "harmonicVoltageContent6Min",numberFormat = "#.000")
@Mapping(source = "v7", target = "harmonicVoltageContent7Min") @Mapping(source = "v7", target = "harmonicVoltageContent7Min",numberFormat = "#.000")
@Mapping(source = "v8", target = "harmonicVoltageContent8Min") @Mapping(source = "v8", target = "harmonicVoltageContent8Min",numberFormat = "#.000")
@Mapping(source = "v9", target = "harmonicVoltageContent9Min") @Mapping(source = "v9", target = "harmonicVoltageContent9Min",numberFormat = "#.000")
@Mapping(source = "v10", target = "harmonicVoltageContent10Min") @Mapping(source = "v10", target = "harmonicVoltageContent10Min",numberFormat = "#.000")
@Mapping(source = "v11", target = "harmonicVoltageContent11Min") @Mapping(source = "v11", target = "harmonicVoltageContent11Min",numberFormat = "#.000")
@Mapping(source = "v12", target = "harmonicVoltageContent12Min") @Mapping(source = "v12", target = "harmonicVoltageContent12Min",numberFormat = "#.000")
@Mapping(source = "v13", target = "harmonicVoltageContent13Min") @Mapping(source = "v13", target = "harmonicVoltageContent13Min",numberFormat = "#.000")
@Mapping(source = "v14", target = "harmonicVoltageContent14Min") @Mapping(source = "v14", target = "harmonicVoltageContent14Min",numberFormat = "#.000")
@Mapping(source = "v15", target = "harmonicVoltageContent15Min") @Mapping(source = "v15", target = "harmonicVoltageContent15Min",numberFormat = "#.000")
@Mapping(source = "v16", target = "harmonicVoltageContent16Min") @Mapping(source = "v16", target = "harmonicVoltageContent16Min",numberFormat = "#.000")
@Mapping(source = "v17", target = "harmonicVoltageContent17Min") @Mapping(source = "v17", target = "harmonicVoltageContent17Min",numberFormat = "#.000")
@Mapping(source = "v18", target = "harmonicVoltageContent18Min") @Mapping(source = "v18", target = "harmonicVoltageContent18Min",numberFormat = "#.000")
@Mapping(source = "v19", target = "harmonicVoltageContent19Min") @Mapping(source = "v19", target = "harmonicVoltageContent19Min",numberFormat = "#.000")
@Mapping(source = "v20", target = "harmonicVoltageContent20Min") @Mapping(source = "v20", target = "harmonicVoltageContent20Min",numberFormat = "#.000")
@Mapping(source = "v21", target = "harmonicVoltageContent21Min") @Mapping(source = "v21", target = "harmonicVoltageContent21Min",numberFormat = "#.000")
@Mapping(source = "v22", target = "harmonicVoltageContent22Min") @Mapping(source = "v22", target = "harmonicVoltageContent22Min",numberFormat = "#.000")
@Mapping(source = "v23", target = "harmonicVoltageContent23Min") @Mapping(source = "v23", target = "harmonicVoltageContent23Min",numberFormat = "#.000")
@Mapping(source = "v24", target = "harmonicVoltageContent24Min") @Mapping(source = "v24", target = "harmonicVoltageContent24Min",numberFormat = "#.000")
@Mapping(source = "v25", target = "harmonicVoltageContent25Min") @Mapping(source = "v25", target = "harmonicVoltageContent25Min",numberFormat = "#.000")
@Mapping(source = "v26", target = "harmonicVoltageContent26Min") @Mapping(source = "v26", target = "harmonicVoltageContent26Min",numberFormat = "#.000")
@Mapping(source = "v27", target = "harmonicVoltageContent27Min") @Mapping(source = "v27", target = "harmonicVoltageContent27Min",numberFormat = "#.000")
@Mapping(source = "v28", target = "harmonicVoltageContent28Min") @Mapping(source = "v28", target = "harmonicVoltageContent28Min",numberFormat = "#.000")
@Mapping(source = "v29", target = "harmonicVoltageContent29Min") @Mapping(source = "v29", target = "harmonicVoltageContent29Min",numberFormat = "#.000")
@Mapping(source = "v30", target = "harmonicVoltageContent30Min") @Mapping(source = "v30", target = "harmonicVoltageContent30Min",numberFormat = "#.000")
@Mapping(source = "v31", target = "harmonicVoltageContent31Min") @Mapping(source = "v31", target = "harmonicVoltageContent31Min",numberFormat = "#.000")
@Mapping(source = "v32", target = "harmonicVoltageContent32Min") @Mapping(source = "v32", target = "harmonicVoltageContent32Min",numberFormat = "#.000")
@Mapping(source = "v33", target = "harmonicVoltageContent33Min") @Mapping(source = "v33", target = "harmonicVoltageContent33Min",numberFormat = "#.000")
@Mapping(source = "v34", target = "harmonicVoltageContent34Min") @Mapping(source = "v34", target = "harmonicVoltageContent34Min",numberFormat = "#.000")
@Mapping(source = "v35", target = "harmonicVoltageContent35Min") @Mapping(source = "v35", target = "harmonicVoltageContent35Min",numberFormat = "#.000")
@Mapping(source = "v36", target = "harmonicVoltageContent36Min") @Mapping(source = "v36", target = "harmonicVoltageContent36Min",numberFormat = "#.000")
@Mapping(source = "v37", target = "harmonicVoltageContent37Min") @Mapping(source = "v37", target = "harmonicVoltageContent37Min",numberFormat = "#.000")
@Mapping(source = "v38", target = "harmonicVoltageContent38Min") @Mapping(source = "v38", target = "harmonicVoltageContent38Min",numberFormat = "#.000")
@Mapping(source = "v39", target = "harmonicVoltageContent39Min") @Mapping(source = "v39", target = "harmonicVoltageContent39Min",numberFormat = "#.000")
@Mapping(source = "v40", target = "harmonicVoltageContent40Min") @Mapping(source = "v40", target = "harmonicVoltageContent40Min",numberFormat = "#.000")
@Mapping(source = "v41", target = "harmonicVoltageContent41Min") @Mapping(source = "v41", target = "harmonicVoltageContent41Min",numberFormat = "#.000")
@Mapping(source = "v42", target = "harmonicVoltageContent42Min") @Mapping(source = "v42", target = "harmonicVoltageContent42Min",numberFormat = "#.000")
@Mapping(source = "v43", target = "harmonicVoltageContent43Min") @Mapping(source = "v43", target = "harmonicVoltageContent43Min",numberFormat = "#.000")
@Mapping(source = "v44", target = "harmonicVoltageContent44Min") @Mapping(source = "v44", target = "harmonicVoltageContent44Min",numberFormat = "#.000")
@Mapping(source = "v45", target = "harmonicVoltageContent45Min") @Mapping(source = "v45", target = "harmonicVoltageContent45Min",numberFormat = "#.000")
@Mapping(source = "v46", target = "harmonicVoltageContent46Min") @Mapping(source = "v46", target = "harmonicVoltageContent46Min",numberFormat = "#.000")
@Mapping(source = "v47", target = "harmonicVoltageContent47Min") @Mapping(source = "v47", target = "harmonicVoltageContent47Min",numberFormat = "#.000")
@Mapping(source = "v48", target = "harmonicVoltageContent48Min") @Mapping(source = "v48", target = "harmonicVoltageContent48Min",numberFormat = "#.000")
@Mapping(source = "v49", target = "harmonicVoltageContent49Min") @Mapping(source = "v49", target = "harmonicVoltageContent49Min",numberFormat = "#.000")
@Mapping(source = "v50", target = "harmonicVoltageContent50Min") @Mapping(source = "v50", target = "harmonicVoltageContent50Min",numberFormat = "#.000")
public RMpHarmonicVRateReportD dataVPOTORMpHarmonicPReportDPOMin(DataHarmRateVPO dataVPO); public RMpHarmonicVRateReportD dataVPOTORMpHarmonicPReportDPOMin(DataHarmRateVPO dataVPO);
@Mapping(source = "v1", target = "fundamentalVoltageAvg") @Mapping(source = "v1", target = "fundamentalVoltageAvg",numberFormat = "#.000")
@Mapping(source = "v2", target = "harmonicVoltageContent2Avg") @Mapping(source = "v2", target = "harmonicVoltageContent2Avg",numberFormat = "#.000")
@Mapping(source = "v3", target = "harmonicVoltageContent3Avg") @Mapping(source = "v3", target = "harmonicVoltageContent3Avg",numberFormat = "#.000")
@Mapping(source = "v4", target = "harmonicVoltageContent4Avg") @Mapping(source = "v4", target = "harmonicVoltageContent4Avg",numberFormat = "#.000")
@Mapping(source = "v5", target = "harmonicVoltageContent5Avg") @Mapping(source = "v5", target = "harmonicVoltageContent5Avg",numberFormat = "#.000")
@Mapping(source = "v6", target = "harmonicVoltageContent6Avg") @Mapping(source = "v6", target = "harmonicVoltageContent6Avg",numberFormat = "#.000")
@Mapping(source = "v7", target = "harmonicVoltageContent7Avg") @Mapping(source = "v7", target = "harmonicVoltageContent7Avg",numberFormat = "#.000")
@Mapping(source = "v8", target = "harmonicVoltageContent8Avg") @Mapping(source = "v8", target = "harmonicVoltageContent8Avg",numberFormat = "#.000")
@Mapping(source = "v9", target = "harmonicVoltageContent9Avg") @Mapping(source = "v9", target = "harmonicVoltageContent9Avg",numberFormat = "#.000")
@Mapping(source = "v10", target = "harmonicVoltageContent10Avg") @Mapping(source = "v10", target = "harmonicVoltageContent10Avg",numberFormat = "#.000")
@Mapping(source = "v11", target = "harmonicVoltageContent11Avg") @Mapping(source = "v11", target = "harmonicVoltageContent11Avg",numberFormat = "#.000")
@Mapping(source = "v12", target = "harmonicVoltageContent12Avg") @Mapping(source = "v12", target = "harmonicVoltageContent12Avg",numberFormat = "#.000")
@Mapping(source = "v13", target = "harmonicVoltageContent13Avg") @Mapping(source = "v13", target = "harmonicVoltageContent13Avg",numberFormat = "#.000")
@Mapping(source = "v14", target = "harmonicVoltageContent14Avg") @Mapping(source = "v14", target = "harmonicVoltageContent14Avg",numberFormat = "#.000")
@Mapping(source = "v15", target = "harmonicVoltageContent15Avg") @Mapping(source = "v15", target = "harmonicVoltageContent15Avg",numberFormat = "#.000")
@Mapping(source = "v16", target = "harmonicVoltageContent16Avg") @Mapping(source = "v16", target = "harmonicVoltageContent16Avg",numberFormat = "#.000")
@Mapping(source = "v17", target = "harmonicVoltageContent17Avg") @Mapping(source = "v17", target = "harmonicVoltageContent17Avg",numberFormat = "#.000")
@Mapping(source = "v18", target = "harmonicVoltageContent18Avg") @Mapping(source = "v18", target = "harmonicVoltageContent18Avg",numberFormat = "#.000")
@Mapping(source = "v19", target = "harmonicVoltageContent19Avg") @Mapping(source = "v19", target = "harmonicVoltageContent19Avg",numberFormat = "#.000")
@Mapping(source = "v20", target = "harmonicVoltageContent20Avg") @Mapping(source = "v20", target = "harmonicVoltageContent20Avg",numberFormat = "#.000")
@Mapping(source = "v21", target = "harmonicVoltageContent21Avg") @Mapping(source = "v21", target = "harmonicVoltageContent21Avg",numberFormat = "#.000")
@Mapping(source = "v22", target = "harmonicVoltageContent22Avg") @Mapping(source = "v22", target = "harmonicVoltageContent22Avg",numberFormat = "#.000")
@Mapping(source = "v23", target = "harmonicVoltageContent23Avg") @Mapping(source = "v23", target = "harmonicVoltageContent23Avg",numberFormat = "#.000")
@Mapping(source = "v24", target = "harmonicVoltageContent24Avg") @Mapping(source = "v24", target = "harmonicVoltageContent24Avg",numberFormat = "#.000")
@Mapping(source = "v25", target = "harmonicVoltageContent25Avg") @Mapping(source = "v25", target = "harmonicVoltageContent25Avg",numberFormat = "#.000")
@Mapping(source = "v26", target = "harmonicVoltageContent26Avg") @Mapping(source = "v26", target = "harmonicVoltageContent26Avg",numberFormat = "#.000")
@Mapping(source = "v27", target = "harmonicVoltageContent27Avg") @Mapping(source = "v27", target = "harmonicVoltageContent27Avg",numberFormat = "#.000")
@Mapping(source = "v28", target = "harmonicVoltageContent28Avg") @Mapping(source = "v28", target = "harmonicVoltageContent28Avg",numberFormat = "#.000")
@Mapping(source = "v29", target = "harmonicVoltageContent29Avg") @Mapping(source = "v29", target = "harmonicVoltageContent29Avg",numberFormat = "#.000")
@Mapping(source = "v30", target = "harmonicVoltageContent30Avg") @Mapping(source = "v30", target = "harmonicVoltageContent30Avg",numberFormat = "#.000")
@Mapping(source = "v31", target = "harmonicVoltageContent31Avg") @Mapping(source = "v31", target = "harmonicVoltageContent31Avg",numberFormat = "#.000")
@Mapping(source = "v32", target = "harmonicVoltageContent32Avg") @Mapping(source = "v32", target = "harmonicVoltageContent32Avg",numberFormat = "#.000")
@Mapping(source = "v33", target = "harmonicVoltageContent33Avg") @Mapping(source = "v33", target = "harmonicVoltageContent33Avg",numberFormat = "#.000")
@Mapping(source = "v34", target = "harmonicVoltageContent34Avg") @Mapping(source = "v34", target = "harmonicVoltageContent34Avg",numberFormat = "#.000")
@Mapping(source = "v35", target = "harmonicVoltageContent35Avg") @Mapping(source = "v35", target = "harmonicVoltageContent35Avg",numberFormat = "#.000")
@Mapping(source = "v36", target = "harmonicVoltageContent36Avg") @Mapping(source = "v36", target = "harmonicVoltageContent36Avg",numberFormat = "#.000")
@Mapping(source = "v37", target = "harmonicVoltageContent37Avg") @Mapping(source = "v37", target = "harmonicVoltageContent37Avg",numberFormat = "#.000")
@Mapping(source = "v38", target = "harmonicVoltageContent38Avg") @Mapping(source = "v38", target = "harmonicVoltageContent38Avg",numberFormat = "#.000")
@Mapping(source = "v39", target = "harmonicVoltageContent39Avg") @Mapping(source = "v39", target = "harmonicVoltageContent39Avg",numberFormat = "#.000")
@Mapping(source = "v40", target = "harmonicVoltageContent40Avg") @Mapping(source = "v40", target = "harmonicVoltageContent40Avg",numberFormat = "#.000")
@Mapping(source = "v41", target = "harmonicVoltageContent41Avg") @Mapping(source = "v41", target = "harmonicVoltageContent41Avg",numberFormat = "#.000")
@Mapping(source = "v42", target = "harmonicVoltageContent42Avg") @Mapping(source = "v42", target = "harmonicVoltageContent42Avg",numberFormat = "#.000")
@Mapping(source = "v43", target = "harmonicVoltageContent43Avg") @Mapping(source = "v43", target = "harmonicVoltageContent43Avg",numberFormat = "#.000")
@Mapping(source = "v44", target = "harmonicVoltageContent44Avg") @Mapping(source = "v44", target = "harmonicVoltageContent44Avg",numberFormat = "#.000")
@Mapping(source = "v45", target = "harmonicVoltageContent45Avg") @Mapping(source = "v45", target = "harmonicVoltageContent45Avg",numberFormat = "#.000")
@Mapping(source = "v46", target = "harmonicVoltageContent46Avg") @Mapping(source = "v46", target = "harmonicVoltageContent46Avg",numberFormat = "#.000")
@Mapping(source = "v47", target = "harmonicVoltageContent47Avg") @Mapping(source = "v47", target = "harmonicVoltageContent47Avg",numberFormat = "#.000")
@Mapping(source = "v48", target = "harmonicVoltageContent48Avg") @Mapping(source = "v48", target = "harmonicVoltageContent48Avg",numberFormat = "#.000")
@Mapping(source = "v49", target = "harmonicVoltageContent49Avg") @Mapping(source = "v49", target = "harmonicVoltageContent49Avg",numberFormat = "#.000")
@Mapping(source = "v50", target = "harmonicVoltageContent50Avg") @Mapping(source = "v50", target = "harmonicVoltageContent50Avg",numberFormat = "#.000")
public RMpHarmonicVRateReportD dataVPOTORMpHarmonicPReportDPOAvg(DataHarmRateVPO dataVPO); public RMpHarmonicVRateReportD dataVPOTORMpHarmonicPReportDPOAvg(DataHarmRateVPO dataVPO);
@Mapping(source = "v1", target = "fundamentalVoltage95") @Mapping(source = "v1", target = "fundamentalVoltage95",numberFormat = "#.000")
@Mapping(source = "v2", target = "harmonicVoltageContent295") @Mapping(source = "v2", target = "harmonicVoltageContent295",numberFormat = "#.000")
@Mapping(source = "v3", target = "harmonicVoltageContent395") @Mapping(source = "v3", target = "harmonicVoltageContent395",numberFormat = "#.000")
@Mapping(source = "v4", target = "harmonicVoltageContent495") @Mapping(source = "v4", target = "harmonicVoltageContent495",numberFormat = "#.000")
@Mapping(source = "v5", target = "harmonicVoltageContent595") @Mapping(source = "v5", target = "harmonicVoltageContent595",numberFormat = "#.000")
@Mapping(source = "v6", target = "harmonicVoltageContent695") @Mapping(source = "v6", target = "harmonicVoltageContent695",numberFormat = "#.000")
@Mapping(source = "v7", target = "harmonicVoltageContent795") @Mapping(source = "v7", target = "harmonicVoltageContent795",numberFormat = "#.000")
@Mapping(source = "v8", target = "harmonicVoltageContent895") @Mapping(source = "v8", target = "harmonicVoltageContent895",numberFormat = "#.000")
@Mapping(source = "v9", target = "harmonicVoltageContent995") @Mapping(source = "v9", target = "harmonicVoltageContent995",numberFormat = "#.000")
@Mapping(source = "v10", target = "harmonicVoltageContent1095") @Mapping(source = "v10", target = "harmonicVoltageContent1095",numberFormat = "#.000")
@Mapping(source = "v11", target = "harmonicVoltageContent1195") @Mapping(source = "v11", target = "harmonicVoltageContent1195",numberFormat = "#.000")
@Mapping(source = "v12", target = "harmonicVoltageContent1295") @Mapping(source = "v12", target = "harmonicVoltageContent1295",numberFormat = "#.000")
@Mapping(source = "v13", target = "harmonicVoltageContent1395") @Mapping(source = "v13", target = "harmonicVoltageContent1395",numberFormat = "#.000")
@Mapping(source = "v14", target = "harmonicVoltageContent1495") @Mapping(source = "v14", target = "harmonicVoltageContent1495",numberFormat = "#.000")
@Mapping(source = "v15", target = "harmonicVoltageContent1595") @Mapping(source = "v15", target = "harmonicVoltageContent1595",numberFormat = "#.000")
@Mapping(source = "v16", target = "harmonicVoltageContent1695") @Mapping(source = "v16", target = "harmonicVoltageContent1695",numberFormat = "#.000")
@Mapping(source = "v17", target = "harmonicVoltageContent1795") @Mapping(source = "v17", target = "harmonicVoltageContent1795",numberFormat = "#.000")
@Mapping(source = "v18", target = "harmonicVoltageContent1895") @Mapping(source = "v18", target = "harmonicVoltageContent1895",numberFormat = "#.000")
@Mapping(source = "v19", target = "harmonicVoltageContent1995") @Mapping(source = "v19", target = "harmonicVoltageContent1995",numberFormat = "#.000")
@Mapping(source = "v20", target = "harmonicVoltageContent2095") @Mapping(source = "v20", target = "harmonicVoltageContent2095",numberFormat = "#.000")
@Mapping(source = "v21", target = "harmonicVoltageContent2195") @Mapping(source = "v21", target = "harmonicVoltageContent2195",numberFormat = "#.000")
@Mapping(source = "v22", target = "harmonicVoltageContent2295") @Mapping(source = "v22", target = "harmonicVoltageContent2295",numberFormat = "#.000")
@Mapping(source = "v23", target = "harmonicVoltageContent2395") @Mapping(source = "v23", target = "harmonicVoltageContent2395",numberFormat = "#.000")
@Mapping(source = "v24", target = "harmonicVoltageContent2495") @Mapping(source = "v24", target = "harmonicVoltageContent2495",numberFormat = "#.000")
@Mapping(source = "v25", target = "harmonicVoltageContent2595") @Mapping(source = "v25", target = "harmonicVoltageContent2595",numberFormat = "#.000")
@Mapping(source = "v26", target = "harmonicVoltageContent2695") @Mapping(source = "v26", target = "harmonicVoltageContent2695",numberFormat = "#.000")
@Mapping(source = "v27", target = "harmonicVoltageContent2795") @Mapping(source = "v27", target = "harmonicVoltageContent2795",numberFormat = "#.000")
@Mapping(source = "v28", target = "harmonicVoltageContent2895") @Mapping(source = "v28", target = "harmonicVoltageContent2895",numberFormat = "#.000")
@Mapping(source = "v29", target = "harmonicVoltageContent2995") @Mapping(source = "v29", target = "harmonicVoltageContent2995",numberFormat = "#.000")
@Mapping(source = "v30", target = "harmonicVoltageContent3095") @Mapping(source = "v30", target = "harmonicVoltageContent3095",numberFormat = "#.000")
@Mapping(source = "v31", target = "harmonicVoltageContent3195") @Mapping(source = "v31", target = "harmonicVoltageContent3195",numberFormat = "#.000")
@Mapping(source = "v32", target = "harmonicVoltageContent3295") @Mapping(source = "v32", target = "harmonicVoltageContent3295",numberFormat = "#.000")
@Mapping(source = "v33", target = "harmonicVoltageContent3395") @Mapping(source = "v33", target = "harmonicVoltageContent3395",numberFormat = "#.000")
@Mapping(source = "v34", target = "harmonicVoltageContent3495") @Mapping(source = "v34", target = "harmonicVoltageContent3495",numberFormat = "#.000")
@Mapping(source = "v35", target = "harmonicVoltageContent3595") @Mapping(source = "v35", target = "harmonicVoltageContent3595",numberFormat = "#.000")
@Mapping(source = "v36", target = "harmonicVoltageContent3695") @Mapping(source = "v36", target = "harmonicVoltageContent3695",numberFormat = "#.000")
@Mapping(source = "v37", target = "harmonicVoltageContent3795") @Mapping(source = "v37", target = "harmonicVoltageContent3795",numberFormat = "#.000")
@Mapping(source = "v38", target = "harmonicVoltageContent3895") @Mapping(source = "v38", target = "harmonicVoltageContent3895",numberFormat = "#.000")
@Mapping(source = "v39", target = "harmonicVoltageContent3995") @Mapping(source = "v39", target = "harmonicVoltageContent3995",numberFormat = "#.000")
@Mapping(source = "v40", target = "harmonicVoltageContent4095") @Mapping(source = "v40", target = "harmonicVoltageContent4095",numberFormat = "#.000")
@Mapping(source = "v41", target = "harmonicVoltageContent4195") @Mapping(source = "v41", target = "harmonicVoltageContent4195",numberFormat = "#.000")
@Mapping(source = "v42", target = "harmonicVoltageContent4295") @Mapping(source = "v42", target = "harmonicVoltageContent4295",numberFormat = "#.000")
@Mapping(source = "v43", target = "harmonicVoltageContent4395") @Mapping(source = "v43", target = "harmonicVoltageContent4395",numberFormat = "#.000")
@Mapping(source = "v44", target = "harmonicVoltageContent4495") @Mapping(source = "v44", target = "harmonicVoltageContent4495",numberFormat = "#.000")
@Mapping(source = "v45", target = "harmonicVoltageContent4595") @Mapping(source = "v45", target = "harmonicVoltageContent4595",numberFormat = "#.000")
@Mapping(source = "v46", target = "harmonicVoltageContent4695") @Mapping(source = "v46", target = "harmonicVoltageContent4695",numberFormat = "#.000")
@Mapping(source = "v47", target = "harmonicVoltageContent4795") @Mapping(source = "v47", target = "harmonicVoltageContent4795",numberFormat = "#.000")
@Mapping(source = "v48", target = "harmonicVoltageContent4895") @Mapping(source = "v48", target = "harmonicVoltageContent4895",numberFormat = "#.000")
@Mapping(source = "v49", target = "harmonicVoltageContent4995") @Mapping(source = "v49", target = "harmonicVoltageContent4995",numberFormat = "#.000")
@Mapping(source = "v50", target = "harmonicVoltageContent5095") @Mapping(source = "v50", target = "harmonicVoltageContent5095",numberFormat = "#.000")
public RMpHarmonicVRateReportD dataVPOTORMpHarmonicPReportDPO95(DataHarmRateVPO dataVPO); public RMpHarmonicVRateReportD dataVPOTORMpHarmonicPReportDPO95(DataHarmRateVPO dataVPO);
@@ -1557,4 +1557,74 @@ public interface InfluxdbPOConverter {
@Mapping(source = "cp952.pf", target = "spPowerFactor95") @Mapping(source = "cp952.pf", target = "spPowerFactor95")
@Mapping(source = "cp952.df", target = "spFundamentalPowerFactor95") @Mapping(source = "cp952.df", target = "spFundamentalPowerFactor95")
public RMpMeasurePhaseReportD RMpMeasurePhaseReportDPOConverterCp95(DataVPO cp95, DataIPO cp951, DataHarmPowerPPO cp952, DataHarmPowerSPO cp953, DataHarmPowerQPO cp954); public RMpMeasurePhaseReportD RMpMeasurePhaseReportDPOConverterCp95(DataVPO cp95, DataIPO cp951, DataHarmPowerPPO cp952, DataHarmPowerSPO cp953, DataHarmPowerQPO cp954);
/*RMpMeasureReportDPO*/
@Mapping(source = "max.freq", target = "frequencyMax")
@Mapping(source = "max.freqDev", target = "frequencyDeviationMax")
@Mapping(source = "max.VPos", target = "positiveSequenceVoltageMax")
@Mapping(source = "max.VNeg", target = "negativeSequenceVoltageMax")
@Mapping(source = "max.VZero", target = "zeroSequenceVoltageMax")
@Mapping(source = "max.VUnbalance", target = "negativeSequenceVoltageUnbalanceMax")
@Mapping(source = "max1.IPos", target = "positiveSequenceCurrentMax")
@Mapping(source = "max1.INeg", target = "negativeSequenceCurrentMax")
@Mapping(source = "max1.IZero", target = "zeroSequenceCurrentMax")
@Mapping(source = "max1.IUnbalance", target = "negativeSequenceCurrentUnbalanceMax")
@Mapping(source = "max2.p", target = "totalActivePowerMax")
@Mapping(source = "max2.pf", target = "tpPowerFactorMax")
@Mapping(source = "max2.df", target = "fundamentalPowerFactorMax")
@Mapping(source = "max4.q", target = "totalReactivePowerMax")
@Mapping(source = "max3.s", target = "totalApparentPowerMax")
public RMpMeasureReportD RMpMeasureReportDPOConverterMax(DataVPO max, DataIPO max1, DataHarmPowerPPO max2, DataHarmPowerSPO max3, DataHarmPowerQPO max4);
@Mapping(source = "min.freq", target = "frequencyMin")
@Mapping(source = "min.freqDev", target = "frequencyDeviationMin")
@Mapping(source = "min.VPos", target = "positiveSequenceVoltageMin")
@Mapping(source = "min.VNeg", target = "negativeSequenceVoltageMin")
@Mapping(source = "min.VZero", target = "zeroSequenceVoltageMin")
@Mapping(source = "min.VUnbalance", target = "negativeSequenceVoltageUnbalanceMin")
@Mapping(source = "min1.IPos", target = "positiveSequenceCurrentMin")
@Mapping(source = "min1.INeg", target = "negativeSequenceCurrentMin")
@Mapping(source = "min1.IZero", target = "zeroSequenceCurrentMin")
@Mapping(source = "min1.IUnbalance", target = "negativeSequenceCurrentUnbalanceMin")
@Mapping(source = "min2.p", target = "totalActivePowerMin")
@Mapping(source = "min2.pf", target = "tpPowerFactorMin")
@Mapping(source = "min2.df", target = "fundamentalPowerFactorMin")
@Mapping(source = "min4.q", target = "totalReactivePowerMin")
@Mapping(source = "min3.s", target = "totalApparentPowerMin")
public RMpMeasureReportD RMpMeasureReportDPOConverterMin(DataVPO min, DataIPO min1, DataHarmPowerPPO min2, DataHarmPowerSPO min3, DataHarmPowerQPO min4);
@Mapping(source = "avg.freq", target = "frequencyAvg")
@Mapping(source = "avg.freqDev", target = "frequencyDeviationAvg")
@Mapping(source = "avg.VPos", target = "positiveSequenceVoltageAvg")
@Mapping(source = "avg.VNeg", target = "negativeSequenceVoltageAvg")
@Mapping(source = "avg.VZero", target = "zeroSequenceVoltageAvg")
@Mapping(source = "avg.VUnbalance", target = "negativeSequenceVoltageUnbalanceAvg")
@Mapping(source = "avg1.IPos", target = "positiveSequenceCurrentAvg")
@Mapping(source = "avg1.INeg", target = "negativeSequenceCurrentAvg")
@Mapping(source = "avg1.IZero", target = "zeroSequenceCurrentAvg")
@Mapping(source = "avg1.IUnbalance", target = "negativeSequenceCurrentUnbalanceAvg")
@Mapping(source = "avg2.p", target = "totalActivePowerAvg")
@Mapping(source = "avg2.pf", target = "tpPowerFactorAvg")
@Mapping(source = "avg2.df", target = "fundamentalPowerFactorAvg")
@Mapping(source = "avg4.q", target = "totalReactivePowerAvg")
@Mapping(source = "avg3.s", target = "totalApparentPowerAvg")
public RMpMeasureReportD RMpMeasureReportDPOConverterAVg(DataVPO avg, DataIPO avg1, DataHarmPowerPPO avg2, DataHarmPowerSPO avg3, DataHarmPowerQPO avg4);
@Mapping(source = "cp95.freq", target = "frequency95")
@Mapping(source = "cp95.freqDev", target = "frequencyDeviation95")
@Mapping(source = "cp95.VPos", target = "positiveSequenceVoltage95")
@Mapping(source = "cp95.VNeg", target = "negativeSequenceVoltage95")
@Mapping(source = "cp95.VZero", target = "zeroSequenceVoltage95")
@Mapping(source = "cp95.VUnbalance", target = "negativeSequenceVoltageUnbalance95")
@Mapping(source = "cp951.IPos", target = "positiveSequenceCurrent95")
@Mapping(source = "cp951.INeg", target = "negativeSequenceCurrent95")
@Mapping(source = "cp951.IZero", target = "zeroSequenceCurrent95")
@Mapping(source = "cp951.IUnbalance", target = "negativeSequenceCurrentUnbalance95")
@Mapping(source = "cp952.p", target = "totalActivePower95")
@Mapping(source = "cp952.pf", target = "tpPowerFactor95")
@Mapping(source = "cp952.df", target = "fundamentalPowerFactor95")
@Mapping(source = "cp954.q", target = "totalReactivePower95")
@Mapping(source = "cp953.s", target = "totalApparentPower95")
public RMpMeasureReportD RMpMeasureReportDPOConverterCp95(DataVPO cp95, DataIPO cp951, DataHarmPowerPPO cp952, DataHarmPowerSPO cp953, DataHarmPowerQPO cp954);
} }

View File

@@ -1,15 +0,0 @@
package com.njcn.prepare.harmonic.constant;
/**
* @author qijian
*/
public interface Param {
/**
* 稳态/固态
*/
Integer SOLID_STATE = 0;
Integer STEADY_STATE = 1;
}

View File

@@ -0,0 +1,29 @@
package com.njcn.prepare.harmonic.constant;
import lombok.Getter;
/**
* 异常处理类
* @author qijian
* @version 1.0.0
* @date 2022年11月11日 09:56
*/
@Getter
public enum PqsPrepareExceptionEnum {
/**
* 过程监督异常响应码的范围:
* A00550 ~ A00649
*/
REDIS_NULL_EXCEPTION("A0001","redis缓存异常重新加载redis"),
;
private final String code;
private final String message;
PqsPrepareExceptionEnum(String code, String message) {
this.code = code;
this.message = message;
}
}

View File

@@ -0,0 +1,76 @@
package com.njcn.prepare.harmonic.controller.area;
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.prepare.harmonic.pojo.param.PrimaryGridParam;
import com.njcn.prepare.harmonic.service.mysql.area.AreaCountService;
import com.njcn.user.api.DeptFeignClient;
import com.njcn.user.pojo.vo.PvTerminalTreeVO;
import com.njcn.web.controller.BaseController;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
* Description:
* 接口文档访问地址http://serverIP:port/swagger-ui.html
* Date: 2022/12/13 11:14【需求编号】
*
* @author clam
* @version V1.0.0
*/
@Slf4j
@Api(tags = "区域统计(r_stat_org_d表数据需要先生成r_stat_abnormal_dr_mp_integrity_d表)")
@RestController
@RequestMapping("AreaCount")
@RequiredArgsConstructor
public class AreaCountController extends BaseController {
private @Autowired
DeptFeignClient deptFeignClient;
private @Autowired
AreaCountService areaCountService;
@ApiOperation("区域统计有效接入监测点个数计算(r_stat_org_d表数据)")
@ApiImplicitParam(value = "primaryGridParam",name = "primaryGridParam",required = true)
@PostMapping("areaCountHanlder")
@OperateInfo(info = LogEnum.BUSINESS_MEDIUM)
public HttpResult<Boolean> areaCountHanlder(@RequestBody PrimaryGridParam primaryGridParam ){
log.info(LocalDateTime.now()+"areaCountHanlder开始执行");
String methodDescribe = getMethodDescribe("areaCountHanlder");
Boolean result = true;
List<String> orgIdList = new ArrayList<> ();
if(CollectionUtils.isEmpty (primaryGridParam.getOrgIdList ())){
/*todo 不知道是否需要补招*/
List<PvTerminalTreeVO> dept = deptFeignClient.allDeptList().getData();
orgIdList = dept.stream ( ).map (PvTerminalTreeVO::getId).collect (Collectors.toList ( ));
}else{
orgIdList = primaryGridParam.getOrgIdList ();
}
primaryGridParam.setOrgIdList (orgIdList);
areaCountService.areaCountHanlder (primaryGridParam);
if (result){
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, true, methodDescribe);
} else {
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.FAIL, false, methodDescribe);
}
}
}

View File

@@ -0,0 +1,114 @@
package com.njcn.prepare.harmonic.controller.area;
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.device.pms.api.PmsTerminalClient;
import com.njcn.device.pms.pojo.po.PmsTerminal;
import com.njcn.prepare.harmonic.pojo.param.PrimaryGridDataIntegrityParam;
import com.njcn.prepare.harmonic.pojo.param.PrimaryGridParam;
import com.njcn.prepare.harmonic.service.mysql.area.PrimaryGridDataService;
import com.njcn.user.api.DeptFeignClient;
import com.njcn.user.pojo.vo.PvTerminalTreeVO;
import com.njcn.web.controller.BaseController;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
* Description:r_operating_index_d
* 接口文档访问地址http://serverIP:port/swagger-ui.html
* Date: 2022/11/24 14:31【需求编号】
*
* @author clam
* @version V1.0.0
*/
@Slf4j
@Api(tags = "主网单位数据统计(r_operating_index_d表数据需要先生成r_stat_abnormal_dr_mp_integrity_d表)")
@RestController
@RequestMapping("primaryGridData")
@RequiredArgsConstructor
public class PrimaryGridDataController extends BaseController {
private @Autowired
PrimaryGridDataService primaryGridDataService;
private @Autowired
DeptFeignClient deptFeignClient;
private @Autowired
PmsTerminalClient pmsTerminalClient;
@ApiOperation("主网单位数据同步(r_operating_index_d表数据)")
@ApiImplicitParam(value = "primaryGridParam",name = "primaryGridParam",required = true)
@PostMapping("primaryGridDataHanlder")
@OperateInfo(info = LogEnum.BUSINESS_MEDIUM)
public HttpResult<Boolean> primaryGridDataHanlder(@RequestBody PrimaryGridParam primaryGridParam ){
log.info(LocalDateTime.now()+"primaryGridDataHanlder开始执行");
String methodDescribe = getMethodDescribe("primaryGridDataHanlder");
Boolean result = true;
List<String> orgIdList = new ArrayList<> ();
if(CollectionUtils.isEmpty (primaryGridParam.getOrgIdList ())){
/*todo 不知道是否需要补招*/
List<PvTerminalTreeVO> dept = deptFeignClient.allDeptList().getData();
orgIdList = dept.stream ( ).map (PvTerminalTreeVO::getId).collect (Collectors.toList ( ));
}else{
orgIdList = primaryGridParam.getOrgIdList ();
}
primaryGridParam.setOrgIdList (orgIdList);
primaryGridDataService.primaryGridDataHanlder (primaryGridParam);
if (result){
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, true, methodDescribe);
} else {
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.FAIL, false, methodDescribe);
}
}
@ApiOperation("主网终端数据完整率月统计")
@ApiImplicitParam(value = "primaryGridDataIntegrityParam",name = "primaryGridDataIntegrityParam",required = true)
@PostMapping("primaryGridDataIntegrityHanlder")
@OperateInfo(info = LogEnum.BUSINESS_MEDIUM)
public HttpResult<Boolean> primaryGridDataIntegrityHanlder(@RequestBody PrimaryGridDataIntegrityParam primaryGridDataIntegrityParam ){
log.info(LocalDateTime.now()+"primaryGridDataIntegrityHanlder开始执行");
String methodDescribe = getMethodDescribe("primaryGridDataIntegrityHanlder");
Boolean result = true;
List<String> orgIdList = new ArrayList<> ();
if(CollectionUtils.isEmpty (primaryGridDataIntegrityParam.getDeviceId ())){
/*todo 不知道是否需要补招*/
List<PmsTerminal> data = pmsTerminalClient.getTerminalSelectList ( ).getData ( );
orgIdList = data.stream ().map (PmsTerminal::getId).collect(Collectors.toList());
}else{
orgIdList = primaryGridDataIntegrityParam.getDeviceId ();
}
primaryGridDataIntegrityParam.setDeviceId (orgIdList);
primaryGridDataService.primaryGridDataIntegrityHanlder (primaryGridDataIntegrityParam);
if (result){
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, true, methodDescribe);
} else {
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.FAIL, false, methodDescribe);
}
}
}

View File

@@ -0,0 +1,68 @@
package com.njcn.prepare.harmonic.controller.area;
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.prepare.harmonic.pojo.param.PrimaryGridParam;
import com.njcn.prepare.harmonic.service.mysql.area.RStatAbnormalDPOService;
import com.njcn.web.controller.BaseController;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
/**
* Description:
* 接口文档访问地址http://serverIP:port/swagger-ui.html
* Date: 2022/11/28 19:27【需求编号】
*
* @author clam
* @version V1.0.0
*/
@Slf4j
@Api(tags = "主网单位数据统计(r_stat_abnormal_d表数据)")
@RestController
@RequestMapping("AbnormalData")
@RequiredArgsConstructor
public class RStatAbnormalDDataHanlderController extends BaseController {
private @Autowired
RStatAbnormalDPOService rStatAbnormalDPOService;
@ApiOperation("主网单位数据同步(r_stat_abnormal_d表数据)")
@ApiImplicitParam(value = "primaryGridParam",name = "primaryGridParam",required = true)
@PostMapping("(rStatAbnormalDDataHanlder")
@OperateInfo(info = LogEnum.BUSINESS_MEDIUM)
public HttpResult<Boolean> rStatAbnormalDDataHanlder(@RequestBody PrimaryGridParam primaryGridParam ){
log.info(LocalDateTime.now()+"rStatAbnormalDDataHanlder开始执行");
String methodDescribe = getMethodDescribe("rStatAbnormalDDataHanlder");
Boolean result = true;
List<String> orgIdList = new ArrayList<> ();
if(CollectionUtils.isEmpty (primaryGridParam.getOrgIdList ())){
/*todo 不知道是否需要补招*/
//orgIdList = lineFeignClient.getLineList ( ).getData ( );
}else{
orgIdList = primaryGridParam.getOrgIdList ();
}
primaryGridParam.setOrgIdList (orgIdList);
rStatAbnormalDPOService.rStatAbnormalDDataHanlder(primaryGridParam);
if (result){
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, true, methodDescribe);
} else {
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.FAIL, false, methodDescribe);
}
}
}

View File

@@ -0,0 +1,51 @@
package com.njcn.prepare.harmonic.controller.line;
import com.njcn.common.pojo.annotation.OperateInfo;
import com.njcn.common.pojo.constant.OperateType;
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.prepare.harmonic.pojo.param.LineParam;
import com.njcn.prepare.harmonic.service.mysql.line.AlarmDetailService;
import com.njcn.web.controller.BaseController;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @author qijian
* @date 2022/12/28
* 监测点指标告警明细
*/
@Validated
@Slf4j
@RestController
@RequestMapping("/alarmDetail")
@Api(tags = "监测点指标告警明细")
@AllArgsConstructor
public class AlarmDetailController extends BaseController {
private final AlarmDetailService alarmDetailService;
@OperateInfo(info = LogEnum.BUSINESS_COMMON,operateType = OperateType.ADD)
@PostMapping("/alarmDetailAlarm")
@ApiOperation("监测点指标告警日统计")
@ApiImplicitParam(name = "lineParam", value = "算法通用查询参数", required = true)
public HttpResult<Boolean> alarmDetailAlarm(@RequestBody @Validated LineParam lineParam) {
String methodDescribe = getMethodDescribe("alarmDetailAlarm");
boolean res = alarmDetailService.alarmDetailAlarm(lineParam);
if(res){
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
}else {
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.FAIL, null, methodDescribe);
}
}
}

View File

@@ -0,0 +1,53 @@
package com.njcn.prepare.harmonic.controller.line;
import com.njcn.common.pojo.annotation.OperateInfo;
import com.njcn.common.pojo.constant.OperateType;
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.device.pq.enums.DeviceResponseEnum;
import com.njcn.prepare.harmonic.pojo.param.LineParam;
import com.njcn.prepare.harmonic.service.mysql.line.DataExceptionService;
import com.njcn.web.controller.BaseController;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @author qijian
* @date 2022/10/26
* 数据是否异常
*/
@Validated
@Slf4j
@RestController
@RequestMapping("/dataException")
@Api(tags = "数据是否异常")
@AllArgsConstructor
public class DataExceptionController extends BaseController {
private final DataExceptionService dataExceptionService;
@OperateInfo(info = LogEnum.BUSINESS_COMMON,operateType = OperateType.ADD)
@PostMapping("/lineDataException")
@ApiOperation("监测点数据是否异常")
@ApiImplicitParam(name = "lineParam", value = "算法通用查询参数", required = true)
public HttpResult<String> lineDataException(@RequestBody @Validated LineParam lineParam) {
String methodDescribe = getMethodDescribe("lineDataException");
DeviceResponseEnum deviceResponseEnum = dataExceptionService.lineDataException(lineParam);
if(deviceResponseEnum != null){
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, deviceResponseEnum.getMessage(), methodDescribe);
}else {
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.FAIL, "不存在数据异常!", methodDescribe);
}
}
}

View File

@@ -0,0 +1,52 @@
package com.njcn.prepare.harmonic.controller.line;
import com.njcn.common.pojo.annotation.OperateInfo;
import com.njcn.common.pojo.constant.OperateType;
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.prepare.harmonic.pojo.param.LineParam;
import com.njcn.prepare.harmonic.service.mysql.line.DataIntegrityRateService;
import com.njcn.web.controller.BaseController;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @author qijian
* @date 2022/10/26
* 数据完整率算法
*/
@Validated
@Slf4j
@RestController
@RequestMapping("/dataIntegrityRate")
@Api(tags = "数据完整率算法")
@AllArgsConstructor
public class DataIntegrityRateController extends BaseController {
private final DataIntegrityRateService dataIntegrityRateService;
@OperateInfo(info = LogEnum.BUSINESS_COMMON,operateType = OperateType.ADD)
@PostMapping("/lineDataIntegrityRate")
@ApiOperation("监测点日数据完整率")
@ApiImplicitParam(name = "lineParam", value = "算法通用查询参数", required = true)
public HttpResult<Boolean> lineDataIntegrityRate(@RequestBody @Validated LineParam lineParam) {
String methodDescribe = getMethodDescribe("lineDataIntegrityRate");
boolean res = dataIntegrityRateService.lineDataIntegrityRate(lineParam);
if(res){
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
}else {
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.FAIL, null, methodDescribe);
}
}
}

View File

@@ -5,6 +5,7 @@ import com.njcn.common.pojo.enums.common.LogEnum;
import com.njcn.common.pojo.enums.response.CommonResponseEnum; import com.njcn.common.pojo.enums.response.CommonResponseEnum;
import com.njcn.common.pojo.response.HttpResult; import com.njcn.common.pojo.response.HttpResult;
import com.njcn.common.utils.HttpResultUtil; import com.njcn.common.utils.HttpResultUtil;
import com.njcn.device.pq.api.LineFeignClient;
import com.njcn.prepare.harmonic.pojo.param.LineParam; import com.njcn.prepare.harmonic.pojo.param.LineParam;
import com.njcn.prepare.harmonic.service.mysql.line.DistortionRateService; import com.njcn.prepare.harmonic.service.mysql.line.DistortionRateService;
import com.njcn.web.controller.BaseController; import com.njcn.web.controller.BaseController;
@@ -13,12 +14,17 @@ import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.util.CollectionUtils;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
/** /**
* @author xiaoyao * @author xiaoyao
* @version 1.0.0 * @version 1.0.0
@@ -32,6 +38,7 @@ import org.springframework.web.bind.annotation.RestController;
public class DistortionRateController extends BaseController { public class DistortionRateController extends BaseController {
private final DistortionRateService distortionRateService; private final DistortionRateService distortionRateService;
private final LineFeignClient lineFeignClient;
@OperateInfo(info = LogEnum.BUSINESS_COMMON) @OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/distortionRate") @PostMapping("/distortionRate")
@@ -42,4 +49,25 @@ public class DistortionRateController extends BaseController {
distortionRateService.distortionRate(lineParam); distortionRateService.distortionRate(lineParam);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
} }
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/distortionRateBySource")
@ApiOperation("谐波畸变率排名")
@ApiImplicitParam(name = "lineParam", value = "参数", required = true)
public HttpResult<String> distortionRateBySource(@RequestBody @Validated LineParam lineParam){
log.info(LocalDateTime.now()+"distortionRateBySource开始执行");
String methodDescribe = getMethodDescribe("distortionRateBySource");
List<String> indexLists = new ArrayList<> ();
if(CollectionUtils.isEmpty (lineParam.getLineIds ())){
indexLists = lineFeignClient.getLineList ( ).getData ( );
}else{
indexLists = lineParam.getLineIds ();
}
lineParam.setLineIds (indexLists);
distortionRateService.distortionRateBySource (lineParam);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
}
} }

View File

@@ -0,0 +1,64 @@
package com.njcn.prepare.harmonic.controller.line;
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.device.pq.api.LineFeignClient;
import com.njcn.prepare.harmonic.pojo.param.LineParam;
import com.njcn.prepare.harmonic.service.mysql.line.PqsEventdetailHandlerService;
import com.njcn.web.controller.BaseController;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.util.CollectionUtils;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
/**
* Description:
* 接口文档访问地址http://serverIP:port/swagger-ui.html
* Date: 2022/12/28 13:47【需求编号】
*
* @author clam
* @version V1.0.0
*/
@Slf4j
@Api(tags = "监测点暂态指标超标明细")
@RestController
@RequestMapping("/eventdetail")
@RequiredArgsConstructor
public class PqsEventdetailController extends BaseController {
private final LineFeignClient lineFeignClient;
private final PqsEventdetailHandlerService pqsEventdetailHandlerService;
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/eventdetailHandler")
@ApiOperation("监测点暂态指标处理")
@ApiImplicitParam(name = "lineParam", value = "参数", required = true)
public HttpResult<String> eventdetailHandler(@RequestBody @Validated LineParam lineParam){
log.info(LocalDateTime.now()+"eventdetailHandler始执行");
String methodDescribe = getMethodDescribe("eventdetailHandler");
List<String> indexLists = new ArrayList<> ();
if(CollectionUtils.isEmpty (lineParam.getLineIds ())){
indexLists = lineFeignClient.getLineList ( ).getData ( );
}else{
indexLists = lineParam.getLineIds ();
}
lineParam.setLineIds (indexLists);
pqsEventdetailHandlerService.eventdetailHandler (lineParam);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
}
}

View File

@@ -0,0 +1,96 @@
package com.njcn.prepare.harmonic.controller.line;
import com.njcn.common.pojo.annotation.OperateInfo;
import com.njcn.common.pojo.constant.OperateType;
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.prepare.harmonic.pojo.param.LineParam;
import com.njcn.prepare.harmonic.service.mysql.line.SteadyIndexExceedService;
import com.njcn.web.controller.BaseController;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @author qijian
* @date 2022/12/02
* 监测点稳态指标超标明细
*/
@Validated
@Slf4j
@RestController
@RequestMapping("/steadyIndexExceed")
@Api(tags = "监测点稳态指标超标明细")
@AllArgsConstructor
public class SteadyIndexExceedController extends BaseController {
private final SteadyIndexExceedService steadyIndexExceedService;
@OperateInfo(info = LogEnum.BUSINESS_COMMON,operateType = OperateType.ADD)
@PostMapping("/isValueExceedID")
@ApiOperation("日统计I、II、III类监测点是否超标限值")
@ApiImplicitParam(name = "lineParam", value = "算法通用查询参数", required = true)
public HttpResult<Boolean> isValueExceedID(@RequestBody @Validated LineParam lineParam) {
String methodDescribe = getMethodDescribe("isValueExceedID");
boolean res = steadyIndexExceedService.isValueExceedID(lineParam);
if(res){
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
}else {
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.FAIL, null, methodDescribe);
}
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON,operateType = OperateType.ADD)
@PostMapping("/isValueExceedIID")
@ApiOperation("日统计I、II类监测点是否超标限值")
@ApiImplicitParam(name = "lineParam", value = "算法通用查询参数", required = true)
public HttpResult<Boolean> isValueExceedIID(@RequestBody @Validated LineParam lineParam) {
String methodDescribe = getMethodDescribe("isValueExceedIID");
boolean res = steadyIndexExceedService.isValueExceedIID(lineParam);
if(res){
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
}else {
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.FAIL, null, methodDescribe);
}
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON,operateType = OperateType.ADD)
@PostMapping("/isValueExceedIM")
@ApiOperation("月统计I、II、III类监测点是否超标限值")
@ApiImplicitParam(name = "lineParam", value = "算法通用查询参数", required = true)
public HttpResult<Boolean> isValueExceedIM(@RequestBody @Validated LineParam lineParam) {
String methodDescribe = getMethodDescribe("isValueExceedIM");
boolean res = steadyIndexExceedService.isValueExceedIM(lineParam);
if(res){
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
}else {
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.FAIL, null, methodDescribe);
}
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON,operateType = OperateType.ADD)
@PostMapping("/isValueExceedIIM")
@ApiOperation("月统计I、II类监测点是否超标限值")
@ApiImplicitParam(name = "lineParam", value = "算法通用查询参数", required = true)
public HttpResult<Boolean> isValueExceedIIM(@RequestBody @Validated LineParam lineParam) {
String methodDescribe = getMethodDescribe("isValueExceedIIM");
boolean res = steadyIndexExceedService.isValueExceedIIM(lineParam);
if(res){
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
}else {
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.FAIL, null, methodDescribe);
}
}
}

View File

@@ -0,0 +1,18 @@
package com.njcn.prepare.harmonic.mapper.mysql.area;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.njcn.harmonic.pojo.po.PmsMonitorPO;
import org.apache.ibatis.annotations.Mapper;
/**
*
* Description:
* 接口文档访问地址http://serverIP:port/swagger-ui.html
* Date: 2022/11/25 10:10【需求编号】
*
* @author clam
* @version V1.0.0
*/
@Mapper
public interface PmsMonitorPOMapper extends BaseMapper<PmsMonitorPO> {
}

View File

@@ -0,0 +1,18 @@
package com.njcn.prepare.harmonic.mapper.mysql.area;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.njcn.harmonic.pojo.po.PmsTerminalPO;
import org.apache.ibatis.annotations.Mapper;
/**
*
* Description:
* 接口文档访问地址http://serverIP:port/swagger-ui.html
* Date: 2022/11/25 10:11【需求编号】
*
* @author clam
* @version V1.0.0
*/
@Mapper
public interface PmsTerminalPOMapper extends BaseMapper<PmsTerminalPO> {
}

View File

@@ -0,0 +1,18 @@
package com.njcn.prepare.harmonic.mapper.mysql.area;
import com.github.jeffreyning.mybatisplus.base.MppBaseMapper;
import com.njcn.prepare.harmonic.pojo.oracle.PqsEventdetailPO;
import org.apache.ibatis.annotations.Mapper;
/**
*
* Description:
* 接口文档访问地址http://serverIP:port/swagger-ui.html
* Date: 2022/12/28 13:46【需求编号】
*
* @author clam
* @version V1.0.0
*/
@Mapper
public interface PqsEventdetailMapper extends MppBaseMapper<PqsEventdetailPO> {
}

View File

@@ -0,0 +1,18 @@
package com.njcn.prepare.harmonic.mapper.mysql.area;
import com.github.jeffreyning.mybatisplus.base.MppBaseMapper;
import com.njcn.harmonic.pojo.po.RMpDevEvaluateDetailPO;
import org.apache.ibatis.annotations.Mapper;
/**
*
* Description:
* 接口文档访问地址http://serverIP:port/swagger-ui.html
* Date: 2022/12/1 9:18【需求编号】
*
* @author clam
* @version V1.0.0
*/
@Mapper
public interface RMpDevEvaluateDetailPOMapper extends MppBaseMapper<RMpDevEvaluateDetailPO> {
}

View File

@@ -0,0 +1,18 @@
package com.njcn.prepare.harmonic.mapper.mysql.area;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.njcn.harmonic.pojo.po.RMpIntegrityDPO;
import org.apache.ibatis.annotations.Mapper;
/**
*
* Description:
* 接口文档访问地址http://serverIP:port/swagger-ui.html
* Date: 2022/11/25 14:33【需求编号】
*
* @author clam
* @version V1.0.0
*/
@Mapper
public interface RMpIntegrityDPOMapper extends BaseMapper<RMpIntegrityDPO> {
}

View File

@@ -0,0 +1,18 @@
package com.njcn.prepare.harmonic.mapper.mysql.area;
import com.github.jeffreyning.mybatisplus.base.MppBaseMapper;
import com.njcn.harmonic.pojo.po.RMpTargetWarnDPO;
import org.apache.ibatis.annotations.Mapper;
/**
*
* Description:
* 接口文档访问地址http://serverIP:port/swagger-ui.html
* Date: 2022/12/15 11:00【需求编号】
*
* @author clam
* @version V1.0.0
*/
@Mapper
public interface RMpTargetWarnDMapper extends MppBaseMapper<RMpTargetWarnDPO> {
}

View File

@@ -0,0 +1,19 @@
package com.njcn.prepare.harmonic.mapper.mysql.area;
import com.github.jeffreyning.mybatisplus.base.MppBaseMapper;
import com.njcn.harmonic.pojo.po.ROperatingIndexDPO;
import org.apache.ibatis.annotations.Mapper;
/**
*
* Description:
* 接口文档访问地址http://serverIP:port/swagger-ui.html
* Date: 2022/11/25 10:01【需求编号】
*
* @author clam
* @version V1.0.0
*/
@Mapper
public interface ROperatingIndexDPOMapper extends MppBaseMapper<ROperatingIndexDPO> {
}

View File

@@ -0,0 +1,18 @@
package com.njcn.prepare.harmonic.mapper.mysql.area;
import com.github.jeffreyning.mybatisplus.base.MppBaseMapper;
import com.njcn.harmonic.pojo.po.ROperatingIndexMPO;
import org.apache.ibatis.annotations.Mapper;
/**
*
* Description:
* 接口文档访问地址http://serverIP:port/swagger-ui.html
* Date: 2022/11/30 13:59【需求编号】
*
* @author clam
* @version V1.0.0
*/
@Mapper
public interface ROperatingIndexMPOMapper extends MppBaseMapper<ROperatingIndexMPO> {
}

View File

@@ -0,0 +1,18 @@
package com.njcn.prepare.harmonic.mapper.mysql.area;
import com.github.jeffreyning.mybatisplus.base.MppBaseMapper;
import com.njcn.harmonic.pojo.po.ROperatingIndexQPO;
import org.apache.ibatis.annotations.Mapper;
/**
*
* Description:
* 接口文档访问地址http://serverIP:port/swagger-ui.html
* Date: 2022/11/30 15:58【需求编号】
*
* @author clam
* @version V1.0.0
*/
@Mapper
public interface ROperatingIndexQPOMapper extends MppBaseMapper<ROperatingIndexQPO> {
}

View File

@@ -0,0 +1,18 @@
package com.njcn.prepare.harmonic.mapper.mysql.area;
import com.github.jeffreyning.mybatisplus.base.MppBaseMapper;
import com.njcn.harmonic.pojo.po.ROperatingIndexYPO;
import org.apache.ibatis.annotations.Mapper;
/**
*
* Description:
* 接口文档访问地址http://serverIP:port/swagger-ui.html
* Date: 2022/11/30 15:58【需求编号】
*
* @author clam
* @version V1.0.0
*/
@Mapper
public interface ROperatingIndexYPOMapper extends MppBaseMapper<ROperatingIndexYPO> {
}

View File

@@ -0,0 +1,17 @@
package com.njcn.prepare.harmonic.mapper.mysql.area;
import com.github.jeffreyning.mybatisplus.base.MppBaseMapper;
import com.njcn.harmonic.pojo.po.RStatAbnormalDPO;
import org.apache.ibatis.annotations.Mapper;
/**
* Description:
* 接口文档访问地址http://serverIP:port/swagger-ui.html
* Date: 2022/11/28 19:31【需求编号】
*
* @author clam
* @version V1.0.0
*/
@Mapper
public interface RStatAbnormalDPOMapper extends MppBaseMapper<RStatAbnormalDPO> {
}

View File

@@ -0,0 +1,18 @@
package com.njcn.prepare.harmonic.mapper.mysql.area;
import com.github.jeffreyning.mybatisplus.base.MppBaseMapper;
import com.njcn.harmonic.pojo.po.RStatOrgDPO;
import org.apache.ibatis.annotations.Mapper;
/**
*
* Description:
* 接口文档访问地址http://serverIP:port/swagger-ui.html
* Date: 2022/12/13 15:39【需求编号】
*
* @author clam
* @version V1.0.0
*/
@Mapper
public interface RStatOrgDMapper extends MppBaseMapper<RStatOrgDPO> {
}

View File

@@ -0,0 +1,18 @@
package com.njcn.prepare.harmonic.mapper.mysql.area;
import com.github.jeffreyning.mybatisplus.base.MppBaseMapper;
import com.njcn.harmonic.pojo.po.RStatOrgMPO;
import org.apache.ibatis.annotations.Mapper;
/**
*
* Description:
* 接口文档访问地址http://serverIP:port/swagger-ui.html
* Date: 2022/12/14 16:17【需求编号】
*
* @author clam
* @version V1.0.0
*/
@Mapper
public interface RStatOrgMMapper extends MppBaseMapper<RStatOrgMPO> {
}

View File

@@ -0,0 +1,37 @@
<?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.area.PqsEventdetailMapper">
<resultMap id="BaseResultMap" type="com.njcn.prepare.harmonic.pojo.oracle.PqsEventdetailPO">
<!--@mbg.generated-->
<!--@Table PQS_EVENTDETAIL-->
<id column="EVENTDETAIL_INDEX" jdbcType="VARCHAR" property="eventdetailIndex" />
<result column="LINEID" jdbcType="DECIMAL" property="lineid" />
<result column="TIMEID" jdbcType="TIMESTAMP" property="timeid" />
<result column="MS" jdbcType="DECIMAL" property="ms" />
<result column="DESCRIBE" jdbcType="VARCHAR" property="describe" />
<result column="WAVETYPE" jdbcType="DECIMAL" property="wavetype" />
<result column="PERSISTTIME" jdbcType="FLOAT" property="persisttime" />
<result column="EVENTVALUE" jdbcType="FLOAT" property="eventvalue" />
<result column="EVENTREASON" jdbcType="VARCHAR" property="eventreason" />
<result column="EVENTTYPE" jdbcType="VARCHAR" property="eventtype" />
<result column="EVENTASS_INDEX" jdbcType="VARCHAR" property="eventassIndex" />
<result column="DQTIME" jdbcType="FLOAT" property="dqtime" />
<result column="DEALTIME" jdbcType="TIMESTAMP" property="dealtime" />
<result column="DEALFLAG" jdbcType="DECIMAL" property="dealflag" />
<result column="NUM" jdbcType="DECIMAL" property="num" />
<result column="FILEFLAG" jdbcType="DECIMAL" property="fileflag" />
<result column="FIRSTTIME" jdbcType="TIMESTAMP" property="firsttime" />
<result column="FIRSTTYPE" jdbcType="VARCHAR" property="firsttype" />
<result column="FIRSTMS" jdbcType="DECIMAL" property="firstms" />
<result column="WAVENAME" jdbcType="VARCHAR" property="wavename" />
<result column="ENERGY" jdbcType="FLOAT" property="energy" />
<result column="SEVERITY" jdbcType="FLOAT" property="severity" />
<result column="SAGSOURCE" jdbcType="VARCHAR" property="sagsource" />
</resultMap>
<sql id="Base_Column_List">
<!--@mbg.generated-->
EVENTDETAIL_INDEX, LINEID, TIMEID, MS, "DESCRIBE", WAVETYPE, PERSISTTIME, EVENTVALUE,
EVENTREASON, EVENTTYPE, EVENTASS_INDEX, DQTIME, DEALTIME, DEALFLAG, NUM, FILEFLAG,
FIRSTTIME, FIRSTTYPE, FIRSTMS, WAVENAME, ENERGY, SEVERITY, SAGSOURCE
</sql>
</mapper>

View File

@@ -0,0 +1,18 @@
<?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.area.RMpDevEvaluateDetailPOMapper">
<resultMap id="BaseResultMap" type="com.njcn.harmonic.pojo.po.RMpDevEvaluateDetailPO">
<!--@mbg.generated-->
<!--@Table r_mp_dev_evaluate_detail-->
<id column="data_date" jdbcType="TIMESTAMP" property="dataDate" />
<id column="device_id" jdbcType="VARCHAR" property="deviceId" />
<result column="dev_target_rate" jdbcType="FLOAT" property="devTargetRate" />
<result column="dev_data_rate" jdbcType="FLOAT" property="devDataRate" />
<result column="dev_score" jdbcType="FLOAT" property="devScore" />
<result column="dev_effective_rate" jdbcType="FLOAT" property="devEffectiveRate" />
</resultMap>
<sql id="Base_Column_List">
<!--@mbg.generated-->
data_date, device_id, dev_target_rate, dev_data_rate, dev_score, dev_effective_rate
</sql>
</mapper>

View File

@@ -0,0 +1,26 @@
<?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.area.RMpTargetWarnDMapper">
<resultMap id="BaseResultMap" type="com.njcn.harmonic.pojo.po.RMpTargetWarnDPO">
<!--@mbg.generated-->
<!--@Table r_mp_target_warn_d-->
<id column="measurement_point_id" jdbcType="VARCHAR" property="measurementPointId" />
<id column="data_date" jdbcType="DATE" property="dataDate" />
<result column="is_effective" jdbcType="TINYINT" property="isEffective" />
<result column="is_harmonic" jdbcType="TINYINT" property="isHarmonic" />
<result column="is_event" jdbcType="TINYINT" property="isEvent" />
<result column="is_warn" jdbcType="TINYINT" property="isWarn" />
<result column="is_v_dev_warn" jdbcType="TINYINT" property="isVDevWarn" />
<result column="is_freq_warn" jdbcType="TINYINT" property="isFreqWarn" />
<result column="is_unbalance_warn" jdbcType="TINYINT" property="isUnbalanceWarn" />
<result column="is_v_warn" jdbcType="TINYINT" property="isVWarn" />
<result column="is_flicker_warn" jdbcType="TINYINT" property="isFlickerWarn" />
<result column="is_sag_warn" jdbcType="TINYINT" property="isSagWarn" />
<result column="is_interrupt_warn" jdbcType="TINYINT" property="isInterruptWarn" />
</resultMap>
<sql id="Base_Column_List">
<!--@mbg.generated-->
measurement_point_id, data_date, is_effective, is_harmonic, is_event, is_warn, is_v_dev_warn,
is_freq_warn, is_unbalance_warn, is_v_warn, is_flicker_warn, is_sag_warn, is_interrupt_warn
</sql>
</mapper>

View File

@@ -0,0 +1,27 @@
<?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.area.ROperatingIndexMPOMapper">
<resultMap id="BaseResultMap" type="com.njcn.harmonic.pojo.po.ROperatingIndexMPO">
<!--@mbg.generated-->
<!--@Table r_operating_index_m-->
<id column="org_no" jdbcType="VARCHAR" property="orgNo" />
<id column="data_date" jdbcType="TIMESTAMP" property="dataDate" />
<result column="measurement_run_points" jdbcType="INTEGER" property="measurementRunPoints" />
<result column="transit_measurement_points" jdbcType="INTEGER" property="transitMeasurementPoints" />
<result column="effective_access_measurement_count" jdbcType="INTEGER" property="effectiveAccessMeasurementCount" />
<result column="online_measurement_points" jdbcType="INTEGER" property="onlineMeasurementPoints" />
<result column="online_measurement_count" jdbcType="INTEGER" property="onlineMeasurementCount" />
<result column="should_count" jdbcType="INTEGER" property="shouldCount" />
<result column="should_point_coverage" jdbcType="FLOAT" property="shouldPointCoverage" />
<result column="data_integrity_rate" jdbcType="FLOAT" property="dataIntegrityRate" />
<result column="data_right_rate" jdbcType="FLOAT" property="dataRightRate" />
<result column="index_integrity_rate" jdbcType="FLOAT" property="indexIntegrityRate" />
<result column="is_unusual" jdbcType="INTEGER" property="isUnusual" />
</resultMap>
<sql id="Base_Column_List">
<!--@mbg.generated-->
org_no, data_date, measurement_run_points, transit_measurement_points, effective_access_measurement_count,
online_measurement_points, online_measurement_count, should_count, should_point_coverage,
data_integrity_rate, data_right_rate, index_integrity_rate, is_unusual
</sql>
</mapper>

View File

@@ -0,0 +1,27 @@
<?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.area.ROperatingIndexQPOMapper">
<resultMap id="BaseResultMap" type="com.njcn.harmonic.pojo.po.ROperatingIndexQPO">
<!--@mbg.generated-->
<!--@Table r_operating_index_q-->
<id column="org_no" jdbcType="VARCHAR" property="orgNo" />
<id column="data_date" jdbcType="TIMESTAMP" property="dataDate" />
<result column="measurement_run_points" jdbcType="INTEGER" property="measurementRunPoints" />
<result column="transit_measurement_points" jdbcType="INTEGER" property="transitMeasurementPoints" />
<result column="effective_access_measurement_count" jdbcType="INTEGER" property="effectiveAccessMeasurementCount" />
<result column="online_measurement_points" jdbcType="INTEGER" property="onlineMeasurementPoints" />
<result column="online_measurement_count" jdbcType="INTEGER" property="onlineMeasurementCount" />
<result column="should_count" jdbcType="INTEGER" property="shouldCount" />
<result column="should_point_coverage" jdbcType="FLOAT" property="shouldPointCoverage" />
<result column="data_integrity_rate" jdbcType="FLOAT" property="dataIntegrityRate" />
<result column="data_right_rate" jdbcType="FLOAT" property="dataRightRate" />
<result column="index_integrity_rate" jdbcType="FLOAT" property="indexIntegrityRate" />
<result column="is_unusual" jdbcType="INTEGER" property="isUnusual" />
</resultMap>
<sql id="Base_Column_List">
<!--@mbg.generated-->
org_no, data_date, measurement_run_points, transit_measurement_points, effective_access_measurement_count,
online_measurement_points, online_measurement_count, should_count, should_point_coverage,
data_integrity_rate, data_right_rate, index_integrity_rate, is_unusual
</sql>
</mapper>

View File

@@ -0,0 +1,27 @@
<?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.area.ROperatingIndexYPOMapper">
<resultMap id="BaseResultMap" type="com.njcn.harmonic.pojo.po.ROperatingIndexYPO">
<!--@mbg.generated-->
<!--@Table r_operating_index_y-->
<id column="org_no" jdbcType="VARCHAR" property="orgNo" />
<id column="data_date" jdbcType="TIMESTAMP" property="dataDate" />
<result column="measurement_run_points" jdbcType="INTEGER" property="measurementRunPoints" />
<result column="transit_measurement_points" jdbcType="INTEGER" property="transitMeasurementPoints" />
<result column="effective_access_measurement_count" jdbcType="INTEGER" property="effectiveAccessMeasurementCount" />
<result column="online_measurement_points" jdbcType="INTEGER" property="onlineMeasurementPoints" />
<result column="online_measurement_count" jdbcType="INTEGER" property="onlineMeasurementCount" />
<result column="should_count" jdbcType="INTEGER" property="shouldCount" />
<result column="should_point_coverage" jdbcType="FLOAT" property="shouldPointCoverage" />
<result column="data_integrity_rate" jdbcType="FLOAT" property="dataIntegrityRate" />
<result column="data_right_rate" jdbcType="FLOAT" property="dataRightRate" />
<result column="index_integrity_rate" jdbcType="FLOAT" property="indexIntegrityRate" />
<result column="is_unusual" jdbcType="INTEGER" property="isUnusual" />
</resultMap>
<sql id="Base_Column_List">
<!--@mbg.generated-->
org_no, data_date, measurement_run_points, transit_measurement_points, effective_access_measurement_count,
online_measurement_points, online_measurement_count, should_count, should_point_coverage,
data_integrity_rate, data_right_rate, index_integrity_rate, is_unusual
</sql>
</mapper>

View File

@@ -0,0 +1,24 @@
<?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.area.RStatOrgDMapper">
<resultMap id="BaseResultMap" type="com.njcn.harmonic.pojo.po.RStatOrgDPO">
<!--@mbg.generated-->
<!--@Table r_stat_org_d-->
<id column="org_no" jdbcType="VARCHAR" property="orgNo" />
<id column="data_date" jdbcType="TIMESTAMP" property="dataDate" />
<id column="measurement_type_class" jdbcType="VARCHAR" property="measurementTypeClass" />
<id column="data_type" jdbcType="VARCHAR" property="dataType" />
<result column="all_count" jdbcType="INTEGER" property="allCount" />
<result column="effective_measurement" jdbcType="INTEGER" property="effectiveMeasurement" />
<result column="harmonic_measurement" jdbcType="INTEGER" property="harmonicMeasurement" />
<result column="event_measurement" jdbcType="INTEGER" property="eventMeasurement" />
<result column="event_count" jdbcType="INTEGER" property="eventCount" />
<result column="should_count" jdbcType="INTEGER" property="shouldCount" />
<result column="warn_count" jdbcType="INTEGER" property="warnCount" />
</resultMap>
<sql id="Base_Column_List">
<!--@mbg.generated-->
org_no, data_date, measurement_type_class, data_type, all_count, effective_measurement,
harmonic_measurement, event_measurement, event_count, should_count, warn_count
</sql>
</mapper>

View File

@@ -0,0 +1,37 @@
<?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.area.RStatOrgMMapper">
<resultMap id="BaseResultMap" type="com.njcn.harmonic.pojo.po.RStatOrgMPO">
<!--@mbg.generated-->
<!--@Table r_stat_org_m-->
<id column="org_no" jdbcType="VARCHAR" property="orgNo" />
<result column="data_date" jdbcType="TIMESTAMP" property="dataDate" />
<result column="measurement_type_class" jdbcType="VARCHAR" property="measurementTypeClass" />
<result column="all_count" jdbcType="INTEGER" property="allCount" />
<result column="effective_measurement_average" jdbcType="INTEGER" property="effectiveMeasurementAverage" />
<result column="effective_measurement_accrued" jdbcType="INTEGER" property="effectiveMeasurementAccrued" />
<result column="harmonic_measurement_average" jdbcType="INTEGER" property="harmonicMeasurementAverage" />
<result column="harmonic_measurement_accrued" jdbcType="INTEGER" property="harmonicMeasurementAccrued" />
<result column="harmonic_measurement_ratio_average" jdbcType="FLOAT" property="harmonicMeasurementRatioAverage" />
<result column="over_day_accrued" jdbcType="INTEGER" property="overDayAccrued" />
<result column="freq_pass_rate" jdbcType="FLOAT" property="freqPassRate" />
<result column="v_dev_pass_rate" jdbcType="FLOAT" property="vDevPassRate" />
<result column="flicker_pass_rate" jdbcType="FLOAT" property="flickerPassRate" />
<result column="event_measurement_average" jdbcType="INTEGER" property="eventMeasurementAverage" />
<result column="event_measurement_accrued" jdbcType="INTEGER" property="eventMeasurementAccrued" />
<result column="event_measurement_ratio_average" jdbcType="FLOAT" property="eventMeasurementRatioAverage" />
<result column="event_freq" jdbcType="FLOAT" property="eventFreq" />
<result column="event_count" jdbcType="INTEGER" property="eventCount" />
<result column="should_count" jdbcType="INTEGER" property="shouldCount" />
<result column="warn_count" jdbcType="INTEGER" property="warnCount" />
<result column="data_type" jdbcType="VARCHAR" property="dataType" />
</resultMap>
<sql id="Base_Column_List">
<!--@mbg.generated-->
org_no, data_date, measurement_type_class, all_count, effective_measurement_average,
effective_measurement_accrued, harmonic_measurement_average, harmonic_measurement_accrued,
harmonic_measurement_ratio_average, over_day_accrued, freq_pass_rate, v_dev_pass_rate,
flicker_pass_rate, event_measurement_average, event_measurement_accrued, event_measurement_ratio_average,
event_freq, event_count, should_count, warn_count, data_type
</sql>
</mapper>

View File

@@ -0,0 +1,13 @@
package com.njcn.prepare.harmonic.mapper.mysql.line;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.njcn.device.pq.pojo.po.PmsAbnormalRules;
/**
* PmsAbnormalRulesMapper
*
* @author qijian
* @date 2022/10/26
*/
public interface PmsAbnormalRulesMapper extends BaseMapper<PmsAbnormalRules> {
}

View File

@@ -0,0 +1,27 @@
package com.njcn.prepare.harmonic.mapper.mysql.line;
import com.github.jeffreyning.mybatisplus.base.MppBaseMapper;
import com.njcn.harmonic.pojo.po.RMpEventDetailDPO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.time.LocalDate;
import java.time.LocalDateTime;
/**
*
* Description:
* 接口文档访问地址http://serverIP:port/swagger-ui.html
* Date: 2022/12/28 14:58【需求编号】
*
* @author clam
* @version V1.0.0
*/
@Mapper
public interface RMpEventDetailDMapper extends MppBaseMapper<RMpEventDetailDPO> {
int getSagTimes(@Param("lineId") String lineId, @Param("date") LocalDate date);
int getInterruptTimes(@Param("lineId") String lineId, @Param("date") LocalDate date);
}

View File

@@ -0,0 +1,18 @@
package com.njcn.prepare.harmonic.mapper.mysql.line;
import com.github.jeffreyning.mybatisplus.base.MppBaseMapper;
import com.njcn.harmonic.pojo.po.RMpEventDetailMPO;
import org.apache.ibatis.annotations.Mapper;
/**
*
* Description:
* 接口文档访问地址http://serverIP:port/swagger-ui.html
* Date: 2022/12/28 14:58【需求编号】
*
* @author clam
* @version V1.0.0
*/
@Mapper
public interface RMpEventDetailMMapper extends MppBaseMapper<RMpEventDetailMPO> {
}

View File

@@ -0,0 +1,18 @@
package com.njcn.prepare.harmonic.mapper.mysql.line;
import com.github.jeffreyning.mybatisplus.base.MppBaseMapper;
import com.njcn.harmonic.pojo.po.RMpEventDetailQPO;
import org.apache.ibatis.annotations.Mapper;
/**
*
* Description:
* 接口文档访问地址http://serverIP:port/swagger-ui.html
* Date: 2022/12/28 14:58【需求编号】
*
* @author clam
* @version V1.0.0
*/
@Mapper
public interface RMpEventDetailQMapper extends MppBaseMapper<RMpEventDetailQPO> {
}

View File

@@ -0,0 +1,18 @@
package com.njcn.prepare.harmonic.mapper.mysql.line;
import com.github.jeffreyning.mybatisplus.base.MppBaseMapper;
import com.njcn.harmonic.pojo.po.RMpEventDetailYPO;
import org.apache.ibatis.annotations.Mapper;
/**
*
* Description:
* 接口文档访问地址http://serverIP:port/swagger-ui.html
* Date: 2022/12/28 14:58【需求编号】
*
* @author clam
* @version V1.0.0
*/
@Mapper
public interface RMpEventDetailYMapper extends MppBaseMapper<RMpEventDetailYPO> {
}

View File

@@ -2,6 +2,9 @@ package com.njcn.prepare.harmonic.mapper.mysql.line;
import com.github.jeffreyning.mybatisplus.base.MppBaseMapper; import com.github.jeffreyning.mybatisplus.base.MppBaseMapper;
import com.njcn.harmonic.pojo.po.RMpHarmonicVRateReportD; import com.njcn.harmonic.pojo.po.RMpHarmonicVRateReportD;
import org.apache.ibatis.annotations.Param;
import java.time.LocalDate;
/** /**
* *
@@ -13,4 +16,7 @@ import com.njcn.harmonic.pojo.po.RMpHarmonicVRateReportD;
* @version V1.0.0 * @version V1.0.0
*/ */
public interface RMpHarmonicVRateReportDPOMapper extends MppBaseMapper<RMpHarmonicVRateReportD> { public interface RMpHarmonicVRateReportDPOMapper extends MppBaseMapper<RMpHarmonicVRateReportD> {
double getMaxVoltageHarmonicThd95(@Param("lineId") String lineId, @Param("date") LocalDate date);
} }

View File

@@ -0,0 +1,14 @@
package com.njcn.prepare.harmonic.mapper.mysql.line;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.njcn.device.pq.pojo.po.RMpIntegrityD;
/**
* RMpIntegrityDMapper
*
* @author qijian
* @date 2022/10/26
*/
public interface RMpIntegrityDMapper extends BaseMapper<RMpIntegrityD> {
}

View File

@@ -2,6 +2,9 @@ package com.njcn.prepare.harmonic.mapper.mysql.line;
import com.github.jeffreyning.mybatisplus.base.MppBaseMapper; import com.github.jeffreyning.mybatisplus.base.MppBaseMapper;
import com.njcn.harmonic.pojo.po.RMpMeasurePhaseReportD; import com.njcn.harmonic.pojo.po.RMpMeasurePhaseReportD;
import org.apache.ibatis.annotations.Param;
import java.time.LocalDate;
/** /**
* *
@@ -13,4 +16,6 @@ import com.njcn.harmonic.pojo.po.RMpMeasurePhaseReportD;
* @version V1.0.0 * @version V1.0.0
*/ */
public interface RMpMeasurePhaseReportDPOMapper extends MppBaseMapper<RMpMeasurePhaseReportD> { public interface RMpMeasurePhaseReportDPOMapper extends MppBaseMapper<RMpMeasurePhaseReportD> {
double getMaxVDeUp(@Param("lineId") String lineId, @Param("date") LocalDate date);
} }

View File

@@ -2,6 +2,9 @@ package com.njcn.prepare.harmonic.mapper.mysql.line;
import com.github.jeffreyning.mybatisplus.base.MppBaseMapper; import com.github.jeffreyning.mybatisplus.base.MppBaseMapper;
import com.njcn.harmonic.pojo.po.RMpMeasureReportD; import com.njcn.harmonic.pojo.po.RMpMeasureReportD;
import org.apache.ibatis.annotations.Param;
import java.time.LocalDate;
/** /**
* *
@@ -13,4 +16,8 @@ import com.njcn.harmonic.pojo.po.RMpMeasureReportD;
* @version V1.0.0 * @version V1.0.0
*/ */
public interface RMpMeasureReportDPOMapper extends MppBaseMapper<RMpMeasureReportD> { public interface RMpMeasureReportDPOMapper extends MppBaseMapper<RMpMeasureReportD> {
double getMaxFrequencyDeviation(@Param("lineId") String lineId, @Param("date") LocalDate date);
double getMaxUnbalance95(@Param("lineId") String lineId, @Param("date") LocalDate date);
} }

View File

@@ -0,0 +1,20 @@
package com.njcn.prepare.harmonic.mapper.mysql.line;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.njcn.harmonic.pojo.po.RMpPartHarmonicDetailD;
import com.njcn.harmonic.pojo.po.RMpPartHarmonicDetailM;
import org.apache.ibatis.annotations.Param;
import java.time.LocalDate;
/**
* RMpPartHarmonicDetailDMapper
*
* @author qijian
* @version 1.0.0
* @createTime 2022/12/5 - 15:21
*/
public interface RMpPartHarmonicDetailDMapper extends BaseMapper<RMpPartHarmonicDetailD> {
RMpPartHarmonicDetailM getPartSumByData(@Param("lineId") String lineId, @Param("startTime") LocalDate startTime, @Param("endTime") LocalDate endTime);
}

View File

@@ -0,0 +1,15 @@
package com.njcn.prepare.harmonic.mapper.mysql.line;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.njcn.harmonic.pojo.po.RMpPartHarmonicDetailM;
/**
* RMpPartHarmonicDetailMMapper
*
* @author qijian
* @version 1.0.0
* @createTime 2022/12/12 - 15:21
*/
public interface RMpPartHarmonicDetailMMapper extends BaseMapper<RMpPartHarmonicDetailM> {
}

View File

@@ -2,6 +2,9 @@ package com.njcn.prepare.harmonic.mapper.mysql.line;
import com.github.jeffreyning.mybatisplus.base.MppBaseMapper; import com.github.jeffreyning.mybatisplus.base.MppBaseMapper;
import com.njcn.prepare.harmonic.pojo.mysql.po.line.RMpPltReportDPO; import com.njcn.prepare.harmonic.pojo.mysql.po.line.RMpPltReportDPO;
import org.apache.ibatis.annotations.Param;
import java.time.LocalDate;
/** /**
* *
@@ -13,4 +16,7 @@ import com.njcn.prepare.harmonic.pojo.mysql.po.line.RMpPltReportDPO;
* @version V1.0.0 * @version V1.0.0
*/ */
public interface RMpPltReportDPOMapper extends MppBaseMapper<RMpPltReportDPO> { public interface RMpPltReportDPOMapper extends MppBaseMapper<RMpPltReportDPO> {
double getMaxFlashing(@Param("lineId") String lineId, @Param("date") LocalDate date);
} }

View File

@@ -0,0 +1,20 @@
package com.njcn.prepare.harmonic.mapper.mysql.line;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.njcn.harmonic.pojo.po.RMpSurplusHarmonicDetailD;
import com.njcn.harmonic.pojo.po.RMpSurplusHarmonicDetailM;
import org.apache.ibatis.annotations.Param;
import java.time.LocalDate;
/**
* RMpSurplusHarmonicDetailDMapper
*
* @author qijian
* @version 1.0.0
* @createTime 2022/12/8 - 15:21
*/
public interface RMpSurplusHarmonicDetailDMapper extends BaseMapper<RMpSurplusHarmonicDetailD> {
RMpSurplusHarmonicDetailM getSurplusSumByData(@Param("lineId") String lineId, @Param("startTime") LocalDate startTime, @Param("endTime") LocalDate endTime);
}

View File

@@ -0,0 +1,15 @@
package com.njcn.prepare.harmonic.mapper.mysql.line;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.njcn.harmonic.pojo.po.RMpSurplusHarmonicDetailM;
/**
* RMpSurplusHarmonicDetailMMapper
*
* @author qijian
* @version 1.0.0
* @createTime 2022/12/12 - 15:21
*/
public interface RMpSurplusHarmonicDetailMMapper extends BaseMapper<RMpSurplusHarmonicDetailM> {
}

View File

@@ -0,0 +1,14 @@
package com.njcn.prepare.harmonic.mapper.mysql.line;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.njcn.device.pq.pojo.po.RStatAbnormalD;
/**
* RStatAbnormalDMapper
*
* @author qijian
* @date 2022/10/26
*/
public interface RStatAbnormalDMapper extends BaseMapper<RStatAbnormalD> {
}

View File

@@ -2,7 +2,7 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!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.line.ExcelRptTempMapper"> <mapper namespace="com.njcn.prepare.harmonic.mapper.mysql.line.ExcelRptTempMapper">
<select id="getActiveTempList" resultType="com.njcn.prepare.harmonic.pojo.po.ExcelRptTemp"> <select id="getActiveTempList" resultType="com.njcn.harmonic.pojo.po.ExcelRptTemp">
SELECT SELECT
DISTINCT t1.* DISTINCT t1.*
FROM FROM

View File

@@ -0,0 +1,24 @@
<?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.line.RMpEventDetailDMapper">
<select id="getSagTimes" resultType="int">
SELECT
IFNULL( MAX( sag_times ), 0 )
FROM
`r_mp_event_detail_d`
WHERE
measurement_point_id = #{lineId}
<![CDATA[AND DATE_FORMAT(data_date, '%Y-%m-%d') = #{date}]]>
</select>
<select id="getInterruptTimes" resultType="int">
SELECT
IFNULL( MAX( interrupt_times ), 0 )
FROM
`r_mp_event_detail_d`
WHERE
measurement_point_id = #{lineId}
<![CDATA[AND DATE_FORMAT(data_date, '%Y-%m-%d') = #{date}]]>
</select>
</mapper>

View File

@@ -0,0 +1,17 @@
<?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.line.RMpEventDetailMMapper">
<resultMap id="BaseResultMap" type="com.njcn.harmonic.pojo.po.RMpEventDetailMPO">
<!--@mbg.generated-->
<!--@Table r_mp_event_detail_m-->
<id column="measurement_point_id" jdbcType="VARCHAR" property="measurementPointId" />
<id column="data_date" jdbcType="TIMESTAMP" property="dataDate" />
<result column="swell_times" jdbcType="INTEGER" property="swellTimes" />
<result column="sag_times" jdbcType="INTEGER" property="sagTimes" />
<result column="interrupt_times" jdbcType="INTEGER" property="interruptTimes" />
</resultMap>
<sql id="Base_Column_List">
<!--@mbg.generated-->
measurement_point_id, data_date, swell_times, sag_times, interrupt_times
</sql>
</mapper>

View File

@@ -0,0 +1,17 @@
<?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.line.RMpEventDetailQMapper">
<resultMap id="BaseResultMap" type="com.njcn.harmonic.pojo.po.RMpEventDetailQPO">
<!--@mbg.generated-->
<!--@Table r_mp_event_detail_q-->
<id column="measurement_point_id" jdbcType="VARCHAR" property="measurementPointId" />
<id column="data_date" jdbcType="TIMESTAMP" property="dataDate" />
<result column="swell_times" jdbcType="INTEGER" property="swellTimes" />
<result column="sag_times" jdbcType="INTEGER" property="sagTimes" />
<result column="interrupt_times" jdbcType="INTEGER" property="interruptTimes" />
</resultMap>
<sql id="Base_Column_List">
<!--@mbg.generated-->
measurement_point_id, data_date, swell_times, sag_times, interrupt_times
</sql>
</mapper>

View File

@@ -0,0 +1,17 @@
<?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.line.RMpEventDetailYMapper">
<resultMap id="BaseResultMap" type="com.njcn.harmonic.pojo.po.RMpEventDetailYPO">
<!--@mbg.generated-->
<!--@Table r_mp_event_detail_y-->
<id column="measurement_point_id" jdbcType="VARCHAR" property="measurementPointId" />
<id column="data_date" jdbcType="TIMESTAMP" property="dataDate" />
<result column="swell_times" jdbcType="INTEGER" property="swellTimes" />
<result column="sag_times" jdbcType="INTEGER" property="sagTimes" />
<result column="interrupt_times" jdbcType="INTEGER" property="interruptTimes" />
</resultMap>
<sql id="Base_Column_List">
<!--@mbg.generated-->
measurement_point_id, data_date, swell_times, sag_times, interrupt_times
</sql>
</mapper>

View File

@@ -1,286 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?> <?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"> <!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.line.RMpHarmonicVRateReportDPOMapper"> <mapper namespace="com.njcn.prepare.harmonic.mapper.mysql.line.RMpHarmonicVRateReportDPOMapper">
<resultMap id="BaseResultMap" type="com.njcn.harmonic.pojo.po.RMpHarmonicVRateReportD">
<!--@mbg.generated--> <select id="getMaxVoltageHarmonicThd95" resultType="double">
<!--@Table r_mp_harmonic_v_rate_report_d--> SELECT
<id column="measurement_point_id" jdbcType="VARCHAR" property="measurementPointId" /> IFNULL(max( voltage_harmonic_thd_95 ),0)
<id column="data_date" jdbcType="DATE" property="dataDate" /> FROM
<id column="phase" jdbcType="VARCHAR" property="phase" /> `r_mp_harmonic_v_rate_report_d`
<result column="voltage_harmonic_thd_max" jdbcType="FLOAT" property="voltageHarmonicThdMax" /> WHERE
<result column="voltage_harmonic_thd_min" jdbcType="FLOAT" property="voltageHarmonicThdMin" /> measurement_point_id = #{lineId}
<result column="voltage_harmonic_thd_avg" jdbcType="FLOAT" property="voltageHarmonicThdAvg" /> <![CDATA[AND data_date = #{date}]]>
<result column="voltage_harmonic_thd_95" jdbcType="FLOAT" property="voltageHarmonicThd95" /> AND phase IN ('A','B','C')
<result column="fundamental_voltage_max" jdbcType="FLOAT" property="fundamentalVoltageMax" /> </select>
<result column="fundamental_voltage_min" jdbcType="FLOAT" property="fundamentalVoltageMin" />
<result column="fundamental_voltage_avg" jdbcType="FLOAT" property="fundamentalVoltageAvg" />
<result column="fundamental_voltage_95" jdbcType="FLOAT" property="fundamentalVoltage95" />
<result column="harmonic_voltage_content_2_max" jdbcType="FLOAT" property="harmonicVoltageContent2Max" />
<result column="harmonic_voltage_content_2_min" jdbcType="FLOAT" property="harmonicVoltageContent2Min" />
<result column="harmonic_voltage_content_2_avg" jdbcType="FLOAT" property="harmonicVoltageContent2Avg" />
<result column="harmonic_voltage_content_2_95" jdbcType="FLOAT" property="harmonicVoltageContent295" />
<result column="harmonic_voltage_content_3_max" jdbcType="FLOAT" property="harmonicVoltageContent3Max" />
<result column="harmonic_voltage_content_3_min" jdbcType="FLOAT" property="harmonicVoltageContent3Min" />
<result column="harmonic_voltage_content_3_avg" jdbcType="FLOAT" property="harmonicVoltageContent3Avg" />
<result column="harmonic_voltage_content_3_95" jdbcType="FLOAT" property="harmonicVoltageContent395" />
<result column="harmonic_voltage_content_4_max" jdbcType="FLOAT" property="harmonicVoltageContent4Max" />
<result column="harmonic_voltage_content_4_min" jdbcType="FLOAT" property="harmonicVoltageContent4Min" />
<result column="harmonic_voltage_content_4_avg" jdbcType="FLOAT" property="harmonicVoltageContent4Avg" />
<result column="harmonic_voltage_content_4_95" jdbcType="FLOAT" property="harmonicVoltageContent495" />
<result column="harmonic_voltage_content_5_max" jdbcType="FLOAT" property="harmonicVoltageContent5Max" />
<result column="harmonic_voltage_content_5_min" jdbcType="FLOAT" property="harmonicVoltageContent5Min" />
<result column="harmonic_voltage_content_5_avg" jdbcType="FLOAT" property="harmonicVoltageContent5Avg" />
<result column="harmonic_voltage_content_5_95" jdbcType="FLOAT" property="harmonicVoltageContent595" />
<result column="harmonic_voltage_content_6_max" jdbcType="FLOAT" property="harmonicVoltageContent6Max" />
<result column="harmonic_voltage_content_6_min" jdbcType="FLOAT" property="harmonicVoltageContent6Min" />
<result column="harmonic_voltage_content_6_avg" jdbcType="FLOAT" property="harmonicVoltageContent6Avg" />
<result column="harmonic_voltage_content_6_95" jdbcType="FLOAT" property="harmonicVoltageContent695" />
<result column="harmonic_voltage_content_7_max" jdbcType="FLOAT" property="harmonicVoltageContent7Max" />
<result column="harmonic_voltage_content_7_min" jdbcType="FLOAT" property="harmonicVoltageContent7Min" />
<result column="harmonic_voltage_content_7_avg" jdbcType="FLOAT" property="harmonicVoltageContent7Avg" />
<result column="harmonic_voltage_content_7_95" jdbcType="FLOAT" property="harmonicVoltageContent795" />
<result column="harmonic_voltage_content_8_max" jdbcType="FLOAT" property="harmonicVoltageContent8Max" />
<result column="harmonic_voltage_content_8_min" jdbcType="FLOAT" property="harmonicVoltageContent8Min" />
<result column="harmonic_voltage_content_8_avg" jdbcType="FLOAT" property="harmonicVoltageContent8Avg" />
<result column="harmonic_voltage_content_8_95" jdbcType="FLOAT" property="harmonicVoltageContent895" />
<result column="harmonic_voltage_content_9_max" jdbcType="FLOAT" property="harmonicVoltageContent9Max" />
<result column="harmonic_voltage_content_9_min" jdbcType="FLOAT" property="harmonicVoltageContent9Min" />
<result column="harmonic_voltage_content_9_avg" jdbcType="FLOAT" property="harmonicVoltageContent9Avg" />
<result column="harmonic_voltage_content_9_95" jdbcType="FLOAT" property="harmonicVoltageContent995" />
<result column="harmonic_voltage_content_10_max" jdbcType="FLOAT" property="harmonicVoltageContent10Max" />
<result column="harmonic_voltage_content_10_min" jdbcType="FLOAT" property="harmonicVoltageContent10Min" />
<result column="harmonic_voltage_content_10_avg" jdbcType="FLOAT" property="harmonicVoltageContent10Avg" />
<result column="harmonic_voltage_content_10_95" jdbcType="FLOAT" property="harmonicVoltageContent1095" />
<result column="harmonic_voltage_content_11_max" jdbcType="FLOAT" property="harmonicVoltageContent11Max" />
<result column="harmonic_voltage_content_11_min" jdbcType="FLOAT" property="harmonicVoltageContent11Min" />
<result column="harmonic_voltage_content_11_avg" jdbcType="FLOAT" property="harmonicVoltageContent11Avg" />
<result column="harmonic_voltage_content_11_95" jdbcType="FLOAT" property="harmonicVoltageContent1195" />
<result column="harmonic_voltage_content_12_max" jdbcType="FLOAT" property="harmonicVoltageContent12Max" />
<result column="harmonic_voltage_content_12_min" jdbcType="FLOAT" property="harmonicVoltageContent12Min" />
<result column="harmonic_voltage_content_12_avg" jdbcType="FLOAT" property="harmonicVoltageContent12Avg" />
<result column="harmonic_voltage_content_12_95" jdbcType="FLOAT" property="harmonicVoltageContent1295" />
<result column="harmonic_voltage_content_13_max" jdbcType="FLOAT" property="harmonicVoltageContent13Max" />
<result column="harmonic_voltage_content_13_min" jdbcType="FLOAT" property="harmonicVoltageContent13Min" />
<result column="harmonic_voltage_content_13_avg" jdbcType="FLOAT" property="harmonicVoltageContent13Avg" />
<result column="harmonic_voltage_content_13_95" jdbcType="FLOAT" property="harmonicVoltageContent1395" />
<result column="harmonic_voltage_content_14_max" jdbcType="FLOAT" property="harmonicVoltageContent14Max" />
<result column="harmonic_voltage_content_14_min" jdbcType="FLOAT" property="harmonicVoltageContent14Min" />
<result column="harmonic_voltage_content_14_avg" jdbcType="FLOAT" property="harmonicVoltageContent14Avg" />
<result column="harmonic_voltage_content_14_95" jdbcType="FLOAT" property="harmonicVoltageContent1495" />
<result column="harmonic_voltage_content_15_max" jdbcType="FLOAT" property="harmonicVoltageContent15Max" />
<result column="harmonic_voltage_content_15_min" jdbcType="FLOAT" property="harmonicVoltageContent15Min" />
<result column="harmonic_voltage_content_15_avg" jdbcType="FLOAT" property="harmonicVoltageContent15Avg" />
<result column="harmonic_voltage_content_15_95" jdbcType="FLOAT" property="harmonicVoltageContent1595" />
<result column="harmonic_voltage_content_16_max" jdbcType="FLOAT" property="harmonicVoltageContent16Max" />
<result column="harmonic_voltage_content_16_min" jdbcType="FLOAT" property="harmonicVoltageContent16Min" />
<result column="harmonic_voltage_content_16_avg" jdbcType="FLOAT" property="harmonicVoltageContent16Avg" />
<result column="harmonic_voltage_content_16_95" jdbcType="FLOAT" property="harmonicVoltageContent1695" />
<result column="harmonic_voltage_content_17_max" jdbcType="FLOAT" property="harmonicVoltageContent17Max" />
<result column="harmonic_voltage_content_17_min" jdbcType="FLOAT" property="harmonicVoltageContent17Min" />
<result column="harmonic_voltage_content_17_avg" jdbcType="FLOAT" property="harmonicVoltageContent17Avg" />
<result column="harmonic_voltage_content_17_95" jdbcType="FLOAT" property="harmonicVoltageContent1795" />
<result column="harmonic_voltage_content_18_max" jdbcType="FLOAT" property="harmonicVoltageContent18Max" />
<result column="harmonic_voltage_content_18_min" jdbcType="FLOAT" property="harmonicVoltageContent18Min" />
<result column="harmonic_voltage_content_18_avg" jdbcType="FLOAT" property="harmonicVoltageContent18Avg" />
<result column="harmonic_voltage_content_18_95" jdbcType="FLOAT" property="harmonicVoltageContent1895" />
<result column="harmonic_voltage_content_19_max" jdbcType="FLOAT" property="harmonicVoltageContent19Max" />
<result column="harmonic_voltage_content_19_min" jdbcType="FLOAT" property="harmonicVoltageContent19Min" />
<result column="harmonic_voltage_content_19_avg" jdbcType="FLOAT" property="harmonicVoltageContent19Avg" />
<result column="harmonic_voltage_content_19_95" jdbcType="FLOAT" property="harmonicVoltageContent1995" />
<result column="harmonic_voltage_content_20_max" jdbcType="FLOAT" property="harmonicVoltageContent20Max" />
<result column="harmonic_voltage_content_20_min" jdbcType="FLOAT" property="harmonicVoltageContent20Min" />
<result column="harmonic_voltage_content_20_avg" jdbcType="FLOAT" property="harmonicVoltageContent20Avg" />
<result column="harmonic_voltage_content_20_95" jdbcType="FLOAT" property="harmonicVoltageContent2095" />
<result column="harmonic_voltage_content_21_max" jdbcType="FLOAT" property="harmonicVoltageContent21Max" />
<result column="harmonic_voltage_content_21_min" jdbcType="FLOAT" property="harmonicVoltageContent21Min" />
<result column="harmonic_voltage_content_21_avg" jdbcType="FLOAT" property="harmonicVoltageContent21Avg" />
<result column="harmonic_voltage_content_21_95" jdbcType="FLOAT" property="harmonicVoltageContent2195" />
<result column="harmonic_voltage_content_22_max" jdbcType="FLOAT" property="harmonicVoltageContent22Max" />
<result column="harmonic_voltage_content_22_min" jdbcType="FLOAT" property="harmonicVoltageContent22Min" />
<result column="harmonic_voltage_content_22_avg" jdbcType="FLOAT" property="harmonicVoltageContent22Avg" />
<result column="harmonic_voltage_content_22_95" jdbcType="FLOAT" property="harmonicVoltageContent2295" />
<result column="harmonic_voltage_content_23_max" jdbcType="FLOAT" property="harmonicVoltageContent23Max" />
<result column="harmonic_voltage_content_23_min" jdbcType="FLOAT" property="harmonicVoltageContent23Min" />
<result column="harmonic_voltage_content_23_avg" jdbcType="FLOAT" property="harmonicVoltageContent23Avg" />
<result column="harmonic_voltage_content_23_95" jdbcType="FLOAT" property="harmonicVoltageContent2395" />
<result column="harmonic_voltage_content_24_max" jdbcType="FLOAT" property="harmonicVoltageContent24Max" />
<result column="harmonic_voltage_content_24_min" jdbcType="FLOAT" property="harmonicVoltageContent24Min" />
<result column="harmonic_voltage_content_24_avg" jdbcType="FLOAT" property="harmonicVoltageContent24Avg" />
<result column="harmonic_voltage_content_24_95" jdbcType="FLOAT" property="harmonicVoltageContent2495" />
<result column="harmonic_voltage_content_25_max" jdbcType="FLOAT" property="harmonicVoltageContent25Max" />
<result column="harmonic_voltage_content_25_min" jdbcType="FLOAT" property="harmonicVoltageContent25Min" />
<result column="harmonic_voltage_content_25_avg" jdbcType="FLOAT" property="harmonicVoltageContent25Avg" />
<result column="harmonic_voltage_content_25_95" jdbcType="FLOAT" property="harmonicVoltageContent2595" />
<result column="harmonic_voltage_content_26_max" jdbcType="FLOAT" property="harmonicVoltageContent26Max" />
<result column="harmonic_voltage_content_26_min" jdbcType="FLOAT" property="harmonicVoltageContent26Min" />
<result column="harmonic_voltage_content_26_avg" jdbcType="FLOAT" property="harmonicVoltageContent26Avg" />
<result column="harmonic_voltage_content_26_95" jdbcType="FLOAT" property="harmonicVoltageContent2695" />
<result column="harmonic_voltage_content_27_max" jdbcType="FLOAT" property="harmonicVoltageContent27Max" />
<result column="harmonic_voltage_content_27_min" jdbcType="FLOAT" property="harmonicVoltageContent27Min" />
<result column="harmonic_voltage_content_27_avg" jdbcType="FLOAT" property="harmonicVoltageContent27Avg" />
<result column="harmonic_voltage_content_27_95" jdbcType="FLOAT" property="harmonicVoltageContent2795" />
<result column="harmonic_voltage_content_28_max" jdbcType="FLOAT" property="harmonicVoltageContent28Max" />
<result column="harmonic_voltage_content_28_min" jdbcType="FLOAT" property="harmonicVoltageContent28Min" />
<result column="harmonic_voltage_content_28_avg" jdbcType="FLOAT" property="harmonicVoltageContent28Avg" />
<result column="harmonic_voltage_content_28_95" jdbcType="FLOAT" property="harmonicVoltageContent2895" />
<result column="harmonic_voltage_content_29_max" jdbcType="FLOAT" property="harmonicVoltageContent29Max" />
<result column="harmonic_voltage_content_29_min" jdbcType="FLOAT" property="harmonicVoltageContent29Min" />
<result column="harmonic_voltage_content_29_avg" jdbcType="FLOAT" property="harmonicVoltageContent29Avg" />
<result column="harmonic_voltage_content_29_95" jdbcType="FLOAT" property="harmonicVoltageContent2995" />
<result column="harmonic_voltage_content_30_max" jdbcType="FLOAT" property="harmonicVoltageContent30Max" />
<result column="harmonic_voltage_content_30_min" jdbcType="FLOAT" property="harmonicVoltageContent30Min" />
<result column="harmonic_voltage_content_30_avg" jdbcType="FLOAT" property="harmonicVoltageContent30Avg" />
<result column="harmonic_voltage_content_30_95" jdbcType="FLOAT" property="harmonicVoltageContent3095" />
<result column="harmonic_voltage_content_31_max" jdbcType="FLOAT" property="harmonicVoltageContent31Max" />
<result column="harmonic_voltage_content_31_min" jdbcType="FLOAT" property="harmonicVoltageContent31Min" />
<result column="harmonic_voltage_content_31_avg" jdbcType="FLOAT" property="harmonicVoltageContent31Avg" />
<result column="harmonic_voltage_content_31_95" jdbcType="FLOAT" property="harmonicVoltageContent3195" />
<result column="harmonic_voltage_content_32_max" jdbcType="FLOAT" property="harmonicVoltageContent32Max" />
<result column="harmonic_voltage_content_32_min" jdbcType="FLOAT" property="harmonicVoltageContent32Min" />
<result column="harmonic_voltage_content_32_avg" jdbcType="FLOAT" property="harmonicVoltageContent32Avg" />
<result column="harmonic_voltage_content_32_95" jdbcType="FLOAT" property="harmonicVoltageContent3295" />
<result column="harmonic_voltage_content_33_max" jdbcType="FLOAT" property="harmonicVoltageContent33Max" />
<result column="harmonic_voltage_content_33_min" jdbcType="FLOAT" property="harmonicVoltageContent33Min" />
<result column="harmonic_voltage_content_33_avg" jdbcType="FLOAT" property="harmonicVoltageContent33Avg" />
<result column="harmonic_voltage_content_33_95" jdbcType="FLOAT" property="harmonicVoltageContent3395" />
<result column="harmonic_voltage_content_34_max" jdbcType="FLOAT" property="harmonicVoltageContent34Max" />
<result column="harmonic_voltage_content_34_min" jdbcType="FLOAT" property="harmonicVoltageContent34Min" />
<result column="harmonic_voltage_content_34_avg" jdbcType="FLOAT" property="harmonicVoltageContent34Avg" />
<result column="harmonic_voltage_content_34_95" jdbcType="FLOAT" property="harmonicVoltageContent3495" />
<result column="harmonic_voltage_content_35_max" jdbcType="FLOAT" property="harmonicVoltageContent35Max" />
<result column="harmonic_voltage_content_35_min" jdbcType="FLOAT" property="harmonicVoltageContent35Min" />
<result column="harmonic_voltage_content_35_avg" jdbcType="FLOAT" property="harmonicVoltageContent35Avg" />
<result column="harmonic_voltage_content_35_95" jdbcType="FLOAT" property="harmonicVoltageContent3595" />
<result column="harmonic_voltage_content_36_max" jdbcType="FLOAT" property="harmonicVoltageContent36Max" />
<result column="harmonic_voltage_content_36_min" jdbcType="FLOAT" property="harmonicVoltageContent36Min" />
<result column="harmonic_voltage_content_36_avg" jdbcType="FLOAT" property="harmonicVoltageContent36Avg" />
<result column="harmonic_voltage_content_36_95" jdbcType="FLOAT" property="harmonicVoltageContent3695" />
<result column="harmonic_voltage_content_37_max" jdbcType="FLOAT" property="harmonicVoltageContent37Max" />
<result column="harmonic_voltage_content_37_min" jdbcType="FLOAT" property="harmonicVoltageContent37Min" />
<result column="harmonic_voltage_content_37_avg" jdbcType="FLOAT" property="harmonicVoltageContent37Avg" />
<result column="harmonic_voltage_content_37_95" jdbcType="FLOAT" property="harmonicVoltageContent3795" />
<result column="harmonic_voltage_content_38_max" jdbcType="FLOAT" property="harmonicVoltageContent38Max" />
<result column="harmonic_voltage_content_38_min" jdbcType="FLOAT" property="harmonicVoltageContent38Min" />
<result column="harmonic_voltage_content_38_avg" jdbcType="FLOAT" property="harmonicVoltageContent38Avg" />
<result column="harmonic_voltage_content_38_95" jdbcType="FLOAT" property="harmonicVoltageContent3895" />
<result column="harmonic_voltage_content_39_max" jdbcType="FLOAT" property="harmonicVoltageContent39Max" />
<result column="harmonic_voltage_content_39_min" jdbcType="FLOAT" property="harmonicVoltageContent39Min" />
<result column="harmonic_voltage_content_39_avg" jdbcType="FLOAT" property="harmonicVoltageContent39Avg" />
<result column="harmonic_voltage_content_39_95" jdbcType="FLOAT" property="harmonicVoltageContent3995" />
<result column="harmonic_voltage_content_40_max" jdbcType="FLOAT" property="harmonicVoltageContent40Max" />
<result column="harmonic_voltage_content_40_min" jdbcType="FLOAT" property="harmonicVoltageContent40Min" />
<result column="harmonic_voltage_content_40_avg" jdbcType="FLOAT" property="harmonicVoltageContent40Avg" />
<result column="harmonic_voltage_content_40_95" jdbcType="FLOAT" property="harmonicVoltageContent4095" />
<result column="harmonic_voltage_content_41_max" jdbcType="FLOAT" property="harmonicVoltageContent41Max" />
<result column="harmonic_voltage_content_41_min" jdbcType="FLOAT" property="harmonicVoltageContent41Min" />
<result column="harmonic_voltage_content_41_avg" jdbcType="FLOAT" property="harmonicVoltageContent41Avg" />
<result column="harmonic_voltage_content_41_95" jdbcType="FLOAT" property="harmonicVoltageContent4195" />
<result column="harmonic_voltage_content_42_max" jdbcType="FLOAT" property="harmonicVoltageContent42Max" />
<result column="harmonic_voltage_content_42_min" jdbcType="FLOAT" property="harmonicVoltageContent42Min" />
<result column="harmonic_voltage_content_42_avg" jdbcType="FLOAT" property="harmonicVoltageContent42Avg" />
<result column="harmonic_voltage_content_42_95" jdbcType="FLOAT" property="harmonicVoltageContent4295" />
<result column="harmonic_voltage_content_43_max" jdbcType="FLOAT" property="harmonicVoltageContent43Max" />
<result column="harmonic_voltage_content_43_min" jdbcType="FLOAT" property="harmonicVoltageContent43Min" />
<result column="harmonic_voltage_content_43_avg" jdbcType="FLOAT" property="harmonicVoltageContent43Avg" />
<result column="harmonic_voltage_content_43_95" jdbcType="FLOAT" property="harmonicVoltageContent4395" />
<result column="harmonic_voltage_content_44_max" jdbcType="FLOAT" property="harmonicVoltageContent44Max" />
<result column="harmonic_voltage_content_44_min" jdbcType="FLOAT" property="harmonicVoltageContent44Min" />
<result column="harmonic_voltage_content_44_avg" jdbcType="FLOAT" property="harmonicVoltageContent44Avg" />
<result column="harmonic_voltage_content_44_95" jdbcType="FLOAT" property="harmonicVoltageContent4495" />
<result column="harmonic_voltage_content_45_max" jdbcType="FLOAT" property="harmonicVoltageContent45Max" />
<result column="harmonic_voltage_content_45_min" jdbcType="FLOAT" property="harmonicVoltageContent45Min" />
<result column="harmonic_voltage_content_45_avg" jdbcType="FLOAT" property="harmonicVoltageContent45Avg" />
<result column="harmonic_voltage_content_45_95" jdbcType="FLOAT" property="harmonicVoltageContent4595" />
<result column="harmonic_voltage_content_46_max" jdbcType="FLOAT" property="harmonicVoltageContent46Max" />
<result column="harmonic_voltage_content_46_min" jdbcType="FLOAT" property="harmonicVoltageContent46Min" />
<result column="harmonic_voltage_content_46_avg" jdbcType="FLOAT" property="harmonicVoltageContent46Avg" />
<result column="harmonic_voltage_content_46_95" jdbcType="FLOAT" property="harmonicVoltageContent4695" />
<result column="harmonic_voltage_content_47_max" jdbcType="FLOAT" property="harmonicVoltageContent47Max" />
<result column="harmonic_voltage_content_47_min" jdbcType="FLOAT" property="harmonicVoltageContent47Min" />
<result column="harmonic_voltage_content_47_avg" jdbcType="FLOAT" property="harmonicVoltageContent47Avg" />
<result column="harmonic_voltage_content_47_95" jdbcType="FLOAT" property="harmonicVoltageContent4795" />
<result column="harmonic_voltage_content_48_max" jdbcType="FLOAT" property="harmonicVoltageContent48Max" />
<result column="harmonic_voltage_content_48_min" jdbcType="FLOAT" property="harmonicVoltageContent48Min" />
<result column="harmonic_voltage_content_48_avg" jdbcType="FLOAT" property="harmonicVoltageContent48Avg" />
<result column="harmonic_voltage_content_48_95" jdbcType="FLOAT" property="harmonicVoltageContent4895" />
<result column="harmonic_voltage_content_49_max" jdbcType="FLOAT" property="harmonicVoltageContent49Max" />
<result column="harmonic_voltage_content_49_min" jdbcType="FLOAT" property="harmonicVoltageContent49Min" />
<result column="harmonic_voltage_content_49_avg" jdbcType="FLOAT" property="harmonicVoltageContent49Avg" />
<result column="harmonic_voltage_content_49_95" jdbcType="FLOAT" property="harmonicVoltageContent4995" />
<result column="harmonic_voltage_content_50_max" jdbcType="FLOAT" property="harmonicVoltageContent50Max" />
<result column="harmonic_voltage_content_50_min" jdbcType="FLOAT" property="harmonicVoltageContent50Min" />
<result column="harmonic_voltage_content_50_avg" jdbcType="FLOAT" property="harmonicVoltageContent50Avg" />
<result column="harmonic_voltage_content_50_95" jdbcType="FLOAT" property="harmonicVoltageContent5095" />
</resultMap>
<sql id="Base_Column_List">
<!--@mbg.generated-->
measurement_point_id, data_date, phase, voltage_harmonic_thd_max, voltage_harmonic_thd_min,
voltage_harmonic_thd_avg, voltage_harmonic_thd_95, fundamental_voltage_max, fundamental_voltage_min,
fundamental_voltage_avg, fundamental_voltage_95, harmonic_voltage_content_2_max,
harmonic_voltage_content_2_min, harmonic_voltage_content_2_avg, harmonic_voltage_content_2_95,
harmonic_voltage_content_3_max, harmonic_voltage_content_3_min, harmonic_voltage_content_3_avg,
harmonic_voltage_content_3_95, harmonic_voltage_content_4_max, harmonic_voltage_content_4_min,
harmonic_voltage_content_4_avg, harmonic_voltage_content_4_95, harmonic_voltage_content_5_max,
harmonic_voltage_content_5_min, harmonic_voltage_content_5_avg, harmonic_voltage_content_5_95,
harmonic_voltage_content_6_max, harmonic_voltage_content_6_min, harmonic_voltage_content_6_avg,
harmonic_voltage_content_6_95, harmonic_voltage_content_7_max, harmonic_voltage_content_7_min,
harmonic_voltage_content_7_avg, harmonic_voltage_content_7_95, harmonic_voltage_content_8_max,
harmonic_voltage_content_8_min, harmonic_voltage_content_8_avg, harmonic_voltage_content_8_95,
harmonic_voltage_content_9_max, harmonic_voltage_content_9_min, harmonic_voltage_content_9_avg,
harmonic_voltage_content_9_95, harmonic_voltage_content_10_max, harmonic_voltage_content_10_min,
harmonic_voltage_content_10_avg, harmonic_voltage_content_10_95, harmonic_voltage_content_11_max,
harmonic_voltage_content_11_min, harmonic_voltage_content_11_avg, harmonic_voltage_content_11_95,
harmonic_voltage_content_12_max, harmonic_voltage_content_12_min, harmonic_voltage_content_12_avg,
harmonic_voltage_content_12_95, harmonic_voltage_content_13_max, harmonic_voltage_content_13_min,
harmonic_voltage_content_13_avg, harmonic_voltage_content_13_95, harmonic_voltage_content_14_max,
harmonic_voltage_content_14_min, harmonic_voltage_content_14_avg, harmonic_voltage_content_14_95,
harmonic_voltage_content_15_max, harmonic_voltage_content_15_min, harmonic_voltage_content_15_avg,
harmonic_voltage_content_15_95, harmonic_voltage_content_16_max, harmonic_voltage_content_16_min,
harmonic_voltage_content_16_avg, harmonic_voltage_content_16_95, harmonic_voltage_content_17_max,
harmonic_voltage_content_17_min, harmonic_voltage_content_17_avg, harmonic_voltage_content_17_95,
harmonic_voltage_content_18_max, harmonic_voltage_content_18_min, harmonic_voltage_content_18_avg,
harmonic_voltage_content_18_95, harmonic_voltage_content_19_max, harmonic_voltage_content_19_min,
harmonic_voltage_content_19_avg, harmonic_voltage_content_19_95, harmonic_voltage_content_20_max,
harmonic_voltage_content_20_min, harmonic_voltage_content_20_avg, harmonic_voltage_content_20_95,
harmonic_voltage_content_21_max, harmonic_voltage_content_21_min, harmonic_voltage_content_21_avg,
harmonic_voltage_content_21_95, harmonic_voltage_content_22_max, harmonic_voltage_content_22_min,
harmonic_voltage_content_22_avg, harmonic_voltage_content_22_95, harmonic_voltage_content_23_max,
harmonic_voltage_content_23_min, harmonic_voltage_content_23_avg, harmonic_voltage_content_23_95,
harmonic_voltage_content_24_max, harmonic_voltage_content_24_min, harmonic_voltage_content_24_avg,
harmonic_voltage_content_24_95, harmonic_voltage_content_25_max, harmonic_voltage_content_25_min,
harmonic_voltage_content_25_avg, harmonic_voltage_content_25_95, harmonic_voltage_content_26_max,
harmonic_voltage_content_26_min, harmonic_voltage_content_26_avg, harmonic_voltage_content_26_95,
harmonic_voltage_content_27_max, harmonic_voltage_content_27_min, harmonic_voltage_content_27_avg,
harmonic_voltage_content_27_95, harmonic_voltage_content_28_max, harmonic_voltage_content_28_min,
harmonic_voltage_content_28_avg, harmonic_voltage_content_28_95, harmonic_voltage_content_29_max,
harmonic_voltage_content_29_min, harmonic_voltage_content_29_avg, harmonic_voltage_content_29_95,
harmonic_voltage_content_30_max, harmonic_voltage_content_30_min, harmonic_voltage_content_30_avg,
harmonic_voltage_content_30_95, harmonic_voltage_content_31_max, harmonic_voltage_content_31_min,
harmonic_voltage_content_31_avg, harmonic_voltage_content_31_95, harmonic_voltage_content_32_max,
harmonic_voltage_content_32_min, harmonic_voltage_content_32_avg, harmonic_voltage_content_32_95,
harmonic_voltage_content_33_max, harmonic_voltage_content_33_min, harmonic_voltage_content_33_avg,
harmonic_voltage_content_33_95, harmonic_voltage_content_34_max, harmonic_voltage_content_34_min,
harmonic_voltage_content_34_avg, harmonic_voltage_content_34_95, harmonic_voltage_content_35_max,
harmonic_voltage_content_35_min, harmonic_voltage_content_35_avg, harmonic_voltage_content_35_95,
harmonic_voltage_content_36_max, harmonic_voltage_content_36_min, harmonic_voltage_content_36_avg,
harmonic_voltage_content_36_95, harmonic_voltage_content_37_max, harmonic_voltage_content_37_min,
harmonic_voltage_content_37_avg, harmonic_voltage_content_37_95, harmonic_voltage_content_38_max,
harmonic_voltage_content_38_min, harmonic_voltage_content_38_avg, harmonic_voltage_content_38_95,
harmonic_voltage_content_39_max, harmonic_voltage_content_39_min, harmonic_voltage_content_39_avg,
harmonic_voltage_content_39_95, harmonic_voltage_content_40_max, harmonic_voltage_content_40_min,
harmonic_voltage_content_40_avg, harmonic_voltage_content_40_95, harmonic_voltage_content_41_max,
harmonic_voltage_content_41_min, harmonic_voltage_content_41_avg, harmonic_voltage_content_41_95,
harmonic_voltage_content_42_max, harmonic_voltage_content_42_min, harmonic_voltage_content_42_avg,
harmonic_voltage_content_42_95, harmonic_voltage_content_43_max, harmonic_voltage_content_43_min,
harmonic_voltage_content_43_avg, harmonic_voltage_content_43_95, harmonic_voltage_content_44_max,
harmonic_voltage_content_44_min, harmonic_voltage_content_44_avg, harmonic_voltage_content_44_95,
harmonic_voltage_content_45_max, harmonic_voltage_content_45_min, harmonic_voltage_content_45_avg,
harmonic_voltage_content_45_95, harmonic_voltage_content_46_max, harmonic_voltage_content_46_min,
harmonic_voltage_content_46_avg, harmonic_voltage_content_46_95, harmonic_voltage_content_47_max,
harmonic_voltage_content_47_min, harmonic_voltage_content_47_avg, harmonic_voltage_content_47_95,
harmonic_voltage_content_48_max, harmonic_voltage_content_48_min, harmonic_voltage_content_48_avg,
harmonic_voltage_content_48_95, harmonic_voltage_content_49_max, harmonic_voltage_content_49_min,
harmonic_voltage_content_49_avg, harmonic_voltage_content_49_95, harmonic_voltage_content_50_max,
harmonic_voltage_content_50_min, harmonic_voltage_content_50_avg, harmonic_voltage_content_50_95
</sql>
</mapper> </mapper>

View File

@@ -1,65 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?> <?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"> <!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.line.RMpMeasurePhaseReportDPOMapper"> <mapper namespace="com.njcn.prepare.harmonic.mapper.mysql.line.RMpMeasurePhaseReportDPOMapper">
<resultMap id="BaseResultMap" type="com.njcn.harmonic.pojo.po.RMpMeasurePhaseReportD">
<!--@mbg.generated--> <select id="getMaxVDeUp" resultType="double">
<!--@Table r_mp_measure_phase_report_d--> SELECT
<id column="measurement_point_id" jdbcType="VARCHAR" property="measurementPointId" /> IFNULL(max( v_de_up_max ),0)
<id column="data_date" jdbcType="DATE" property="dataDate" /> FROM
<id column="phase" jdbcType="VARCHAR" property="phase" /> `r_mp_measure_phase_report_d`
<result column="phase_voltage_effective_max" jdbcType="FLOAT" property="phaseVoltageEffectiveMax" /> WHERE
<result column="phase_voltage_effective_min" jdbcType="FLOAT" property="phaseVoltageEffectiveMin" /> measurement_point_id = #{lineId}
<result column="phase_voltage_effective_avg" jdbcType="FLOAT" property="phaseVoltageEffectiveAvg" /> <![CDATA[AND data_date = #{date}]]>
<result column="phase_voltage_effective_95" jdbcType="FLOAT" property="phaseVoltageEffective95" /> AND phase IN ('A','B','C')
<result column="line_voltage_effective_max" jdbcType="FLOAT" property="lineVoltageEffectiveMax" /> </select>
<result column="line_voltage_effective_min" jdbcType="FLOAT" property="lineVoltageEffectiveMin" />
<result column="line_voltage_effective_avg" jdbcType="FLOAT" property="lineVoltageEffectiveAvg" />
<result column="line_voltage_effective_95" jdbcType="FLOAT" property="lineVoltageEffective95" />
<result column="v_de_up_max" jdbcType="FLOAT" property="vDeUpMax" />
<result column="v_de_up_min" jdbcType="FLOAT" property="vDeUpMin" />
<result column="v_de_up_avg" jdbcType="FLOAT" property="vDeUpAvg" />
<result column="v_de_up_95" jdbcType="FLOAT" property="vDeUp95" />
<result column="v_de_low_max" jdbcType="FLOAT" property="vDeLowMax" />
<result column="v_de_low_min" jdbcType="FLOAT" property="vDeLowMin" />
<result column="v_de_low_avg" jdbcType="FLOAT" property="vDeLowAvg" />
<result column="v_de_low_95" jdbcType="FLOAT" property="vDeLow95" />
<result column="current_effective_max" jdbcType="FLOAT" property="currentEffectiveMax" />
<result column="current_effective_min" jdbcType="FLOAT" property="currentEffectiveMin" />
<result column="current_effective_avg" jdbcType="FLOAT" property="currentEffectiveAvg" />
<result column="current_effective_95" jdbcType="FLOAT" property="currentEffective95" />
<result column="sp_active_power_max" jdbcType="FLOAT" property="spActivePowerMax" />
<result column="sp_active_power_min" jdbcType="FLOAT" property="spActivePowerMin" />
<result column="sp_active_power_avg" jdbcType="FLOAT" property="spActivePowerAvg" />
<result column="sp_active_power_95" jdbcType="FLOAT" property="spActivePower95" />
<result column="sp_reactive_power_max" jdbcType="FLOAT" property="spReactivePowerMax" />
<result column="sp_reactive_power_min" jdbcType="FLOAT" property="spReactivePowerMin" />
<result column="sp_reactive_power_avg" jdbcType="FLOAT" property="spReactivePowerAvg" />
<result column="sp_reactive_power_95" jdbcType="FLOAT" property="spReactivePower95" />
<result column="sp_apparent_power_max" jdbcType="FLOAT" property="spApparentPowerMax" />
<result column="sp_apparent_power_min" jdbcType="FLOAT" property="spApparentPowerMin" />
<result column="sp_apparent_power_avg" jdbcType="FLOAT" property="spApparentPowerAvg" />
<result column="sp_apparent_power_95" jdbcType="FLOAT" property="spApparentPower95" />
<result column="sp_power_factor_max" jdbcType="FLOAT" property="spPowerFactorMax" />
<result column="sp_power_factor_min" jdbcType="FLOAT" property="spPowerFactorMin" />
<result column="sp_power_factor_avg" jdbcType="FLOAT" property="spPowerFactorAvg" />
<result column="sp_power_factor_95" jdbcType="FLOAT" property="spPowerFactor95" />
<result column="sp_fundamental_power_factor_max" jdbcType="FLOAT" property="spFundamentalPowerFactorMax" />
<result column="sp_fundamental_power_factor_min" jdbcType="FLOAT" property="spFundamentalPowerFactorMin" />
<result column="sp_fundamental_power_factor_avg" jdbcType="FLOAT" property="spFundamentalPowerFactorAvg" />
<result column="sp_fundamental_power_factor_95" jdbcType="FLOAT" property="spFundamentalPowerFactor95" />
</resultMap>
<sql id="Base_Column_List">
<!--@mbg.generated-->
measurement_point_id, data_date, phase, phase_voltage_effective_max, phase_voltage_effective_min,
phase_voltage_effective_avg, phase_voltage_effective_95, line_voltage_effective_max,
line_voltage_effective_min, line_voltage_effective_avg, line_voltage_effective_95,
v_de_up_max, v_de_up_min, v_de_up_avg, v_de_up_95, v_de_low_max, v_de_low_min, v_de_low_avg,
v_de_low_95, current_effective_max, current_effective_min, current_effective_avg,
current_effective_95, sp_active_power_max, sp_active_power_min, sp_active_power_avg,
sp_active_power_95, sp_reactive_power_max, sp_reactive_power_min, sp_reactive_power_avg,
sp_reactive_power_95, sp_apparent_power_max, sp_apparent_power_min, sp_apparent_power_avg,
sp_apparent_power_95, sp_power_factor_max, sp_power_factor_min, sp_power_factor_avg,
sp_power_factor_95, sp_fundamental_power_factor_max, sp_fundamental_power_factor_min,
sp_fundamental_power_factor_avg, sp_fundamental_power_factor_95
</sql>
</mapper> </mapper>

View File

@@ -1,135 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?> <?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"> <!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.line.RMpMeasureReportDPOMapper"> <mapper namespace="com.njcn.prepare.harmonic.mapper.mysql.line.RMpMeasureReportDPOMapper">
<resultMap id="BaseResultMap" type="com.njcn.harmonic.pojo.po.RMpMeasureReportD"> <select id="getMaxFrequencyDeviation" resultType="double">
<!--@mbg.generated--> SELECT
<!--@Table r_mp_measure_report_d--> IFNULL(max( frequency_deviation_max ),0)
<id column="measurement_point_id" jdbcType="VARCHAR" property="measurementPointId" /> FROM
<id column="data_date" jdbcType="DATE" property="dataDate" /> `r_mp_measure_report_d`
<result column="frequency_max" jdbcType="FLOAT" property="frequencyMax" /> WHERE
<result column="frequency_min" jdbcType="FLOAT" property="frequencyMin" /> measurement_point_id = #{lineId}
<result column="frequency_avg" jdbcType="FLOAT" property="frequencyAvg" /> <![CDATA[AND data_date = #{date}]]>
<result column="frequency_95" jdbcType="FLOAT" property="frequency95" /> </select>
<result column="frequency_deviation_max" jdbcType="FLOAT" property="frequencyDeviationMax" />
<result column="frequency_deviation_min" jdbcType="FLOAT" property="frequencyDeviationMin" /> <select id="getMaxUnbalance95" resultType="double">
<result column="frequency_deviation_avg" jdbcType="FLOAT" property="frequencyDeviationAvg" /> SELECT
<result column="frequency_deviation_95" jdbcType="FLOAT" property="frequencyDeviation95" /> IFNULL(max( NEGATIVE_SEQUENCE_VOLTAGE_UNBALANCE_95 ),0)
<result column="total_active_power_max" jdbcType="FLOAT" property="totalActivePowerMax" /> FROM
<result column="total_active_power_min" jdbcType="FLOAT" property="totalActivePowerMin" /> `r_mp_measure_report_d`
<result column="total_active_power_avg" jdbcType="FLOAT" property="totalActivePowerAvg" /> WHERE
<result column="total_active_power_95" jdbcType="FLOAT" property="totalActivePower95" /> measurement_point_id = #{lineId}
<result column="total_reactive_power_max" jdbcType="FLOAT" property="totalReactivePowerMax" /> <![CDATA[AND data_date = #{date}]]>
<result column="total_reactive_power_min" jdbcType="FLOAT" property="totalReactivePowerMin" /> </select>
<result column="total_reactive_power_avg" jdbcType="FLOAT" property="totalReactivePowerAvg" />
<result column="total_reactive_power_95" jdbcType="FLOAT" property="totalReactivePower95" />
<result column="total_apparent_power_max" jdbcType="FLOAT" property="totalApparentPowerMax" />
<result column="total_apparent_power_min" jdbcType="FLOAT" property="totalApparentPowerMin" />
<result column="total_apparent_power_avg" jdbcType="FLOAT" property="totalApparentPowerAvg" />
<result column="total_apparent_power_95" jdbcType="FLOAT" property="totalApparentPower95" />
<result column="tp_power_factor_max" jdbcType="FLOAT" property="tpPowerFactorMax" />
<result column="tp_power_factor_min" jdbcType="FLOAT" property="tpPowerFactorMin" />
<result column="tp_power_factor_avg" jdbcType="FLOAT" property="tpPowerFactorAvg" />
<result column="tp_power_factor_95" jdbcType="FLOAT" property="tpPowerFactor95" />
<result column="fundamental_power_factor_max" jdbcType="FLOAT" property="fundamentalPowerFactorMax" />
<result column="fundamental_power_factor_min" jdbcType="FLOAT" property="fundamentalPowerFactorMin" />
<result column="fundamental_power_factor_avg" jdbcType="FLOAT" property="fundamentalPowerFactorAvg" />
<result column="fundamental_power_factor_95" jdbcType="FLOAT" property="fundamentalPowerFactor95" />
<result column="positive_sequence_voltage_max" jdbcType="FLOAT" property="positiveSequenceVoltageMax" />
<result column="positive_sequence_voltage_min" jdbcType="FLOAT" property="positiveSequenceVoltageMin" />
<result column="positive_sequence_voltage_avg" jdbcType="FLOAT" property="positiveSequenceVoltageAvg" />
<result column="positive_sequence_voltage_95" jdbcType="FLOAT" property="positiveSequenceVoltage95" />
<result column="negative_sequence_voltage_max" jdbcType="FLOAT" property="negativeSequenceVoltageMax" />
<result column="negative_sequence_voltage_min" jdbcType="FLOAT" property="negativeSequenceVoltageMin" />
<result column="negative_sequence_voltage_avg" jdbcType="FLOAT" property="negativeSequenceVoltageAvg" />
<result column="negative_sequence_voltage_95" jdbcType="FLOAT" property="negativeSequenceVoltage95" />
<result column="zero_sequence_voltage_max" jdbcType="FLOAT" property="zeroSequenceVoltageMax" />
<result column="zero_sequence_voltage_min" jdbcType="FLOAT" property="zeroSequenceVoltageMin" />
<result column="zero_sequence_voltage_avg" jdbcType="FLOAT" property="zeroSequenceVoltageAvg" />
<result column="zero_sequence_voltage_95" jdbcType="FLOAT" property="zeroSequenceVoltage95" />
<result column="negative_sequence_voltage_unbalance_max" jdbcType="FLOAT" property="negativeSequenceVoltageUnbalanceMax" />
<result column="negative_sequence_voltage_unbalance_min" jdbcType="FLOAT" property="negativeSequenceVoltageUnbalanceMin" />
<result column="negative_sequence_voltage_unbalance_avg" jdbcType="FLOAT" property="negativeSequenceVoltageUnbalanceAvg" />
<result column="negative_sequence_voltage_unbalance_95" jdbcType="FLOAT" property="negativeSequenceVoltageUnbalance95" />
<result column="zero_sequence_voltage_unbalance_max" jdbcType="FLOAT" property="zeroSequenceVoltageUnbalanceMax" />
<result column="zero_sequence_voltage_unbalance_min" jdbcType="FLOAT" property="zeroSequenceVoltageUnbalanceMin" />
<result column="zero_sequence_voltage_unbalance_avg" jdbcType="FLOAT" property="zeroSequenceVoltageUnbalanceAvg" />
<result column="zero_sequence_voltage_unbalance_95" jdbcType="FLOAT" property="zeroSequenceVoltageUnbalance95" />
<result column="positive_sequence_current_max" jdbcType="FLOAT" property="positiveSequenceCurrentMax" />
<result column="positive_sequence_current_min" jdbcType="FLOAT" property="positiveSequenceCurrentMin" />
<result column="positive_sequence_current_avg" jdbcType="FLOAT" property="positiveSequenceCurrentAvg" />
<result column="positive_sequence_current_95" jdbcType="FLOAT" property="positiveSequenceCurrent95" />
<result column="negative_sequence_current_max" jdbcType="FLOAT" property="negativeSequenceCurrentMax" />
<result column="negative_sequence_current_min" jdbcType="FLOAT" property="negativeSequenceCurrentMin" />
<result column="negative_sequence_current_avg" jdbcType="FLOAT" property="negativeSequenceCurrentAvg" />
<result column="negative_sequence_current_95" jdbcType="FLOAT" property="negativeSequenceCurrent95" />
<result column="zero_sequence_current_max" jdbcType="FLOAT" property="zeroSequenceCurrentMax" />
<result column="zero_sequence_current_min" jdbcType="FLOAT" property="zeroSequenceCurrentMin" />
<result column="zero_sequence_current_avg" jdbcType="FLOAT" property="zeroSequenceCurrentAvg" />
<result column="zero_sequence_current_95" jdbcType="FLOAT" property="zeroSequenceCurrent95" />
<result column="negative_sequence_current_unbalance_max" jdbcType="FLOAT" property="negativeSequenceCurrentUnbalanceMax" />
<result column="negative_sequence_current_unbalance_min" jdbcType="FLOAT" property="negativeSequenceCurrentUnbalanceMin" />
<result column="negative_sequence_current_unbalance_avg" jdbcType="FLOAT" property="negativeSequenceCurrentUnbalanceAvg" />
<result column="negative_sequence_current_unbalance_95" jdbcType="FLOAT" property="negativeSequenceCurrentUnbalance95" />
<result column="zero_sequence_current_imbalance_max" jdbcType="FLOAT" property="zeroSequenceCurrentImbalanceMax" />
<result column="zero_sequence_current_imbalance_min" jdbcType="FLOAT" property="zeroSequenceCurrentImbalanceMin" />
<result column="zero_sequence_current_imbalance_avg" jdbcType="FLOAT" property="zeroSequenceCurrentImbalanceAvg" />
<result column="zero_sequence_current_imbalance_95" jdbcType="FLOAT" property="zeroSequenceCurrentImbalance95" />
<result column="equivalent_apparent_power_max" jdbcType="FLOAT" property="equivalentApparentPowerMax" />
<result column="equivalent_apparent_power_min" jdbcType="FLOAT" property="equivalentApparentPowerMin" />
<result column="equivalent_apparent_power_avg" jdbcType="FLOAT" property="equivalentApparentPowerAvg" />
<result column="equivalent_apparent_power_95" jdbcType="FLOAT" property="equivalentApparentPower95" />
<result column="equivalent_power_factor_max" jdbcType="FLOAT" property="equivalentPowerFactorMax" />
<result column="equivalent_power_factor_min" jdbcType="FLOAT" property="equivalentPowerFactorMin" />
<result column="equivalent_power_factor_avg" jdbcType="FLOAT" property="equivalentPowerFactorAvg" />
<result column="equivalent_power_factor_95" jdbcType="FLOAT" property="equivalentPowerFactor95" />
<result column="fundamental_wave_rateo_max" jdbcType="FLOAT" property="fundamentalWaveRateoMax" />
<result column="fundamental_wave_rateo_min" jdbcType="FLOAT" property="fundamentalWaveRateoMin" />
<result column="fundamental_wave_rateo_avg" jdbcType="FLOAT" property="fundamentalWaveRateoAvg" />
<result column="fundamental_wave_rateo_95" jdbcType="FLOAT" property="fundamentalWaveRateo95" />
<result column="fundamental_wave_apparent_max" jdbcType="FLOAT" property="fundamentalWaveApparentMax" />
<result column="fundamental_wave_apparent_min" jdbcType="FLOAT" property="fundamentalWaveApparentMin" />
<result column="fundamental_wave_apparent_avg" jdbcType="FLOAT" property="fundamentalWaveApparentAvg" />
<result column="fundamental_wave_apparent_95" jdbcType="FLOAT" property="fundamentalWaveApparent95" />
<result column="nonfundamental_wave_rateo_max" jdbcType="FLOAT" property="nonfundamentalWaveRateoMax" />
<result column="nonfundamental_wave_rateo_min" jdbcType="FLOAT" property="nonfundamentalWaveRateoMin" />
<result column="nonfundamental_wave_rateo_avg" jdbcType="FLOAT" property="nonfundamentalWaveRateoAvg" />
<result column="nonfundamental_wave_rateo_95" jdbcType="FLOAT" property="nonfundamentalWaveRateo95" />
<result column="unbalanced_apparent_power_max" jdbcType="FLOAT" property="unbalancedApparentPowerMax" />
<result column="unbalanced_apparent_power_min" jdbcType="FLOAT" property="unbalancedApparentPowerMin" />
<result column="unbalanced_apparent_power_avg" jdbcType="FLOAT" property="unbalancedApparentPowerAvg" />
<result column="unbalanced_apparent_power_95" jdbcType="FLOAT" property="unbalancedApparentPower95" />
</resultMap>
<sql id="Base_Column_List">
<!--@mbg.generated-->
measurement_point_id, data_date, frequency_max, frequency_min, frequency_avg, frequency_95,
frequency_deviation_max, frequency_deviation_min, frequency_deviation_avg, frequency_deviation_95,
total_active_power_max, total_active_power_min, total_active_power_avg, total_active_power_95,
total_reactive_power_max, total_reactive_power_min, total_reactive_power_avg, total_reactive_power_95,
total_apparent_power_max, total_apparent_power_min, total_apparent_power_avg, total_apparent_power_95,
tp_power_factor_max, tp_power_factor_min, tp_power_factor_avg, tp_power_factor_95,
fundamental_power_factor_max, fundamental_power_factor_min, fundamental_power_factor_avg,
fundamental_power_factor_95, positive_sequence_voltage_max, positive_sequence_voltage_min,
positive_sequence_voltage_avg, positive_sequence_voltage_95, negative_sequence_voltage_max,
negative_sequence_voltage_min, negative_sequence_voltage_avg, negative_sequence_voltage_95,
zero_sequence_voltage_max, zero_sequence_voltage_min, zero_sequence_voltage_avg,
zero_sequence_voltage_95, negative_sequence_voltage_unbalance_max, negative_sequence_voltage_unbalance_min,
negative_sequence_voltage_unbalance_avg, negative_sequence_voltage_unbalance_95,
zero_sequence_voltage_unbalance_max, zero_sequence_voltage_unbalance_min, zero_sequence_voltage_unbalance_avg,
zero_sequence_voltage_unbalance_95, positive_sequence_current_max, positive_sequence_current_min,
positive_sequence_current_avg, positive_sequence_current_95, negative_sequence_current_max,
negative_sequence_current_min, negative_sequence_current_avg, negative_sequence_current_95,
zero_sequence_current_max, zero_sequence_current_min, zero_sequence_current_avg,
zero_sequence_current_95, negative_sequence_current_unbalance_max, negative_sequence_current_unbalance_min,
negative_sequence_current_unbalance_avg, negative_sequence_current_unbalance_95,
zero_sequence_current_imbalance_max, zero_sequence_current_imbalance_min, zero_sequence_current_imbalance_avg,
zero_sequence_current_imbalance_95, equivalent_apparent_power_max, equivalent_apparent_power_min,
equivalent_apparent_power_avg, equivalent_apparent_power_95, equivalent_power_factor_max,
equivalent_power_factor_min, equivalent_power_factor_avg, equivalent_power_factor_95,
fundamental_wave_rateo_max, fundamental_wave_rateo_min, fundamental_wave_rateo_avg,
fundamental_wave_rateo_95, fundamental_wave_apparent_max, fundamental_wave_apparent_min,
fundamental_wave_apparent_avg, fundamental_wave_apparent_95, nonfundamental_wave_rateo_max,
nonfundamental_wave_rateo_min, nonfundamental_wave_rateo_avg, nonfundamental_wave_rateo_95,
unbalanced_apparent_power_max, unbalanced_apparent_power_min, unbalanced_apparent_power_avg,
unbalanced_apparent_power_95
</sql>
</mapper> </mapper>

View File

@@ -0,0 +1,76 @@
<?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.line.RMpPartHarmonicDetailDMapper">
<select id="getPartSumByData" resultType="com.njcn.harmonic.pojo.po.RMpPartHarmonicDetailM">
SELECT
measurement_point_id,
sum( is_harmonic ) measurement_over_day,
sum( is_freq ) freq_over_day,
sum( is_v_dev_up ) v_dev_up_over_day,
sum( is_v_dev_low ) v_dev_low_over_day,
sum( is_v_dev ) v_dev_over_day,
sum( is_v_thd ) v_thd_over_day,
sum( is_v ) v_over_day,
sum( is_i ) i_over_day,
sum( is_v_2 ) v_2_over_day,
sum( is_v_3 ) v_3_over_day,
sum( is_v_4 ) v_4_over_day,
sum( is_v_5 ) v_5_over_day,
sum( is_v_6 ) v_6_over_day,
sum( is_v_7 ) v_7_over_day,
sum( is_v_8 ) v_8_over_day,
sum( is_v_9 ) v_9_over_day,
sum( is_v_10 ) v_10_over_day,
sum( is_v_11 ) v_11_over_day,
sum( is_v_12 ) v_12_over_day,
sum( is_v_13 ) v_13_over_day,
sum( is_v_14 ) v_14_over_day,
sum( is_v_15 ) v_15_over_day,
sum( is_v_16 ) v_16_over_day,
sum( is_v_17 ) v_17_over_day,
sum( is_v_18 ) v_18_over_day,
sum( is_v_19 ) v_19_over_day,
sum( is_v_20 ) v_20_over_day,
sum( is_v_21 ) v_21_over_day,
sum( is_v_22 ) v_22_over_day,
sum( is_v_23 ) v_23_over_day,
sum( is_v_24 ) v_24_over_day,
sum( is_v_25 ) v_25_over_day,
sum( is_i_2 ) i_2_over_day,
sum( is_i_3 ) i_3_over_day,
sum( is_i_4 ) i_4_over_day,
sum( is_i_5 ) i_5_over_day,
sum( is_i_6 ) i_6_over_day,
sum( is_i_7 ) i_7_over_day,
sum( is_i_8 ) i_8_over_day,
sum( is_i_9 ) i_9_over_day,
sum( is_i_10 ) i_10_over_day,
sum( is_i_11 ) i_11_over_day,
sum( is_i_12 ) i_12_over_day,
sum( is_i_13 ) i_13_over_day,
sum( is_i_14 ) i_14_over_day,
sum( is_i_15 ) i_15_over_day,
sum( is_i_16 ) i_16_over_day,
sum( is_i_17 ) i_17_over_day,
sum( is_i_18 ) i_18_over_day,
sum( is_i_19 ) i_19_over_day,
sum( is_i_20 ) i_20_over_day,
sum( is_i_21 ) i_21_over_day,
sum( is_i_22 ) i_22_over_day,
sum( is_i_23 ) i_23_over_day,
sum( is_i_24 ) i_24_over_day,
sum( is_i_25 ) i_25_over_day,
sum( is_unbalance ) unbalance_over_day,
sum( is_i_neg ) i_neg_over_day
FROM
`r_mp_part_harmonic_detail_d`
WHERE
<![CDATA[data_date >= #{startTime}]]>
AND <![CDATA[data_date <= #{endTime}]]>
AND measurement_point_id = #{lineId}
GROUP BY
measurement_point_id
</select>
</mapper>

View File

@@ -1,20 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?> <?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"> <!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.line.RMpPltReportDPOMapper"> <mapper namespace="com.njcn.prepare.harmonic.mapper.mysql.line.RMpPltReportDPOMapper">
<resultMap id="BaseResultMap" type="com.njcn.prepare.harmonic.pojo.mysql.po.line.RMpPltReportDPO">
<!--@mbg.generated--> <select id="getMaxFlashing" resultType="double">
<!--@Table r_mp_plt_report_d--> SELECT
<id column="measurement_point_id" jdbcType="VARCHAR" property="measurementPointId" /> IFNULL(max( long_time_flashing_max ),0)
<id column="data_date" jdbcType="DATE" property="dataDate" /> FROM
<id column="phase" jdbcType="VARCHAR" property="phase" /> `r_mp_plt_report_d`
<result column="long_time_flashing_max" jdbcType="FLOAT" property="longTimeFlashingMax" /> WHERE
<result column="long_time_flashing_min" jdbcType="FLOAT" property="longTimeFlashingMin" /> measurement_point_id = #{lineId}
<result column="long_time_flashing_avg" jdbcType="FLOAT" property="longTimeFlashingAvg" /> <![CDATA[AND data_date = #{date}]]>
<result column="long_time_flashing_95" jdbcType="FLOAT" property="longTimeFlashing95" /> AND phase IN ('A','B','C')
</resultMap> </select>
<sql id="Base_Column_List">
<!--@mbg.generated-->
measurement_point_id, data_date, phase, long_time_flashing_max, long_time_flashing_min,
long_time_flashing_avg, long_time_flashing_95
</sql>
</mapper> </mapper>

View File

@@ -0,0 +1,36 @@
<?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.line.RMpSurplusHarmonicDetailDMapper">
<select id="getSurplusSumByData" resultType="com.njcn.harmonic.pojo.po.RMpSurplusHarmonicDetailM">
SELECT
measurement_point_id,
sum( is_inuharm ) inuharm_over_day,
sum( is_flicker ) flicker_over_day,
sum( is_inuharm_1 ) inuharm_1_over_day,
sum( is_inuharm_2 ) inuharm_2_over_day,
sum( is_inuharm_3 ) inuharm_3_over_day,
sum( is_inuharm_4 ) inuharm_4_over_day,
sum( is_inuharm_5 ) inuharm_5_over_day,
sum( is_inuharm_6 ) inuharm_6_over_day,
sum( is_inuharm_7 ) inuharm_7_over_day,
sum( is_inuharm_8 ) inuharm_8_over_day,
sum( is_inuharm_9 ) inuharm_9_over_day,
sum( is_inuharm_10 ) inuharm_10_over_day,
sum( is_inuharm_11 ) inuharm_11_over_day,
sum( is_inuharm_12 ) inuharm_12_over_day,
sum( is_inuharm_13 ) inuharm_13_over_day,
sum( is_inuharm_14 ) inuharm_14_over_day,
sum( is_inuharm_15 ) inuharm_15_over_day,
sum( is_inuharm_16 ) inuharm_16_over_day
FROM
`r_mp_surplus_harmonic_detail_d`
WHERE
<![CDATA[data_date >= #{startTime}]]>
AND <![CDATA[data_date <= #{endTime}]]>
AND measurement_point_id = #{lineId}
GROUP BY
measurement_point_id
</select>
</mapper>

View File

@@ -0,0 +1,20 @@
package com.njcn.prepare.harmonic.mapper.oracle;
import cn.hutool.core.date.DateTime;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.njcn.prepare.harmonic.pojo.oracle.DataFlickerOracle;
import com.njcn.prepare.harmonic.pojo.vo.DataFlickerOracleVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
* DataFlickerOracleMapper
*
* @author qijian
* @date 2022/12/01
*/
@Mapper
public interface DataFlickerOracleMapper extends BaseMapper<DataFlickerOracle> {
DataFlickerOracleVO getTwoCountForDataIntegrityRate(@Param("lineId") Integer lineId, @Param("startTime") DateTime startTime, @Param("endTime") DateTime endTime);
}

View File

@@ -0,0 +1,24 @@
package com.njcn.prepare.harmonic.mapper.oracle;
import cn.hutool.core.date.DateTime;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.njcn.prepare.harmonic.pojo.oracle.DataVOraclePO;
import com.njcn.prepare.harmonic.pojo.vo.DataVOracleVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
* Description:
* 接口文档访问地址http://serverIP:port/swagger-ui.html
* Date: 2022/11/29 11:45【需求编号】
*
* @author clam
* @version V1.0.0
*/
@Mapper
public interface DataVOraclePOMapper extends BaseMapper<DataVOraclePO> {
DataVOracleVO getFiveItemsForDataException(@Param("lineId") Integer lineId, @Param("startTime") DateTime startTime, @Param("endTime") DateTime endTime);
DataVOracleVO getFiveCountForDataIntegrityRate(@Param("lineId") Integer lineId, @Param("startTime") DateTime startTime, @Param("endTime") DateTime endTime);
}

View File

@@ -0,0 +1,16 @@
package com.njcn.prepare.harmonic.mapper.oracle;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.njcn.prepare.harmonic.pojo.oracle.LimitRateOracle;
import org.apache.ibatis.annotations.Mapper;
/**
* LimitRateOracleMapper
*
* @author qijian
* @date 2022/12/05
*/
@Mapper
public interface LimitRateOracleMapper extends BaseMapper<LimitRateOracle> {
}

View File

@@ -0,0 +1,17 @@
package com.njcn.prepare.harmonic.mapper.oracle;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.njcn.prepare.harmonic.pojo.oracle.PqLinedetailPO;
import org.apache.ibatis.annotations.Mapper;
/**
* Description:
* 接口文档访问地址http://serverIP:port/swagger-ui.html
* Date: 2022/11/29 11:20【需求编号】
*
* @author clam
* @version V1.0.0
*/
@Mapper
public interface PqLinedetailPOMapper extends BaseMapper<PqLinedetailPO> {
}

View File

@@ -0,0 +1,20 @@
<?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.oracle.DataFlickerOracleMapper">
<select id="getTwoCountForDataIntegrityRate" resultType="com.njcn.prepare.harmonic.pojo.vo.DataFlickerOracleVO">
SELECT
LINEID,
COUNT( PST ) AS pstCount,
COUNT( PLT ) AS pltCount
FROM
DATA_FLICKER
WHERE
<![CDATA[TIMEID >= #{startTime}]]>
AND <![CDATA[TIMEID <= #{endTime}]]>
AND LINEID = #{lineId}
AND PHASIC_TYPE = 'A'
GROUP BY
LINEID
</select>
</mapper>

View File

@@ -0,0 +1,66 @@
<?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.oracle.DataVOraclePOMapper">
<select id="getFiveItemsForDataException" resultType="com.njcn.prepare.harmonic.pojo.vo.DataVOracleVO">
SELECT
a.*,
b.*
FROM
(
SELECT
LINEID,
AVG( RMS_MAX ) AS rmsMax,
AVG( RMS_MIN ) AS rmsMin,
AVG( V_THD_MAX ) AS vThdMax,
AVG( V_THD_MIN ) AS vThdMin
FROM
DATA_V
WHERE
<![CDATA[TIMEID >= #{startTime}]]>
AND <![CDATA[TIMEID <= #{endTime}]]>
AND LINEID = #{lineId}
AND PHASIC_TYPE IN ( 'A', 'B', 'C' )
GROUP BY
LINEID
) a
LEFT JOIN (
SELECT
LINEID,
AVG( FREQ_MAX ) AS freqMax,
AVG( FREQ_MIN ) AS freqMin,
AVG( RMSAB_MAX ) + AVG( RMSBC_MAX ) + AVG( RMSCA_MAX ) AS rmsLvrMax,
AVG( RMSAB_MIN ) + AVG( RMSBC_MIN ) + AVG( RMSCA_MIN ) AS rmsLvrMin,
AVG( V_UNBALANCE_MAX ) AS vUnbalanceMax,
AVG( V_UNBALANCE_MIN ) AS vUnbalanceMin
FROM
DATA_V
WHERE
<![CDATA[TIMEID >= #{startTime}]]>
AND <![CDATA[TIMEID <= #{endTime}]]>
AND LINEID = #{lineId}
AND PHASIC_TYPE = 'T'
GROUP BY
LINEID
) b ON a.LINEID = b.LINEID
</select>
<select id="getFiveCountForDataIntegrityRate" resultType="com.njcn.prepare.harmonic.pojo.vo.DataVOracleVO">
SELECT
LINEID,
COUNT( FREQ ) AS freqCount,
COUNT( RMS ) AS rmsCount,
COUNT( RMSAB ) + COUNT( RMSBC ) + COUNT( RMSCA ) AS rmsLvrCount,
COUNT( V_THD ) AS vThdCount,
COUNT( V_UNBALANCE ) AS vUnbalanceCount
FROM
DATA_V
WHERE
<![CDATA[TIMEID >= #{startTime}]]>
AND <![CDATA[TIMEID <= #{endTime}]]>
AND LINEID = #{lineId}
AND PHASIC_TYPE = 'A'
GROUP BY
LINEID
</select>
</mapper>

View File

@@ -0,0 +1,5 @@
<?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.oracle.LimitRateOracleMapper">
</mapper>

View File

@@ -0,0 +1,5 @@
<?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.oracle.PqLinedetailPOMapper">
</mapper>

View File

@@ -0,0 +1,29 @@
package com.njcn.prepare.harmonic.service.influxdb;
import com.njcn.device.pq.pojo.po.DataV;
import java.util.Date;
/**
* 数据是否异常
*
* @author qijian
* @version 1.0.0
* @createTime 2022/11/28 - 10:09
*/
public interface DataExceptionInfluxService {
/**
* 取前四项指标相别为A
* @author qijian
* @date 2022/11/28
*/
DataV getFirstFourItems(String lineId, Date date, Integer type);
/**
* 取三相不平衡度相别为T
* @author qijian
* @date 2022/11/28
*/
DataV getUnbalance(String lineId, Date date, Integer type);
}

View File

@@ -0,0 +1,29 @@
package com.njcn.prepare.harmonic.service.influxdb;
import com.njcn.device.pq.pojo.po.DataV;
import com.njcn.prepare.harmonic.pojo.po.DataFlicker;
import java.util.Date;
/**
* 数据完整率算法
*
* @author qijian
* @version 1.0.0
* @createTime 2022/11/29 - 10:09
*/
public interface DataIntegrityRateInfluxService {
/**
* 获取data_v表五项稳态指标日数量
* @author qijian
* @date 2022/11/29
*/
DataV getFiveSteadyData(String lineId, Date date, Integer type);
/**
* 根据data_flicker表获取两项闪变指标数量
* @author qijian
* @date 2022/11/29
*/
DataFlicker getTwoFlickerData(String lineId, Date date, Integer type);
}

View File

@@ -0,0 +1,98 @@
package com.njcn.prepare.harmonic.service.influxdb.impl;
import cn.hutool.core.date.DateTime;
import com.njcn.device.pq.pojo.po.DataV;
import com.njcn.influxdb.param.InfluxDBPublicParam;
import com.njcn.influxdb.param.InfluxDBSqlConstant;
import com.njcn.influxdb.param.InfluxDBTableConstant;
import com.njcn.influxdb.utils.InfluxDbUtils;
import com.njcn.prepare.harmonic.service.influxdb.DataExceptionInfluxService;
import com.njcn.prepare.harmonic.utils.PublicUtil;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.influxdb.dto.QueryResult;
import org.influxdb.impl.InfluxDBResultMapper;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
* 数据是否异常 influxDB业务
*
* @author qijian
* @version 1.0.0
* @createTime 2022/11/28 - 10:09
*/
@Service
@RequiredArgsConstructor
@Slf4j
public class DataExceptionInfluxServiceImpl implements DataExceptionInfluxService {
// private final InfluxDbUtils influxDbUtils;
private final InfluxDbUtils influxDbUtils = new InfluxDbUtils("admin", "njcnpqs", "http://192.168.1.18:8086", "pqsbase", "");
/**
* 取前四项指标相别为A
* @author qijian
* @date 2022/11/28
*/
@Override
public DataV getFirstFourItems(String lineId, Date date, Integer type) {
InfluxDBResultMapper resultMapper = new InfluxDBResultMapper();
String searchSql = "MAX(freq) as freq_max,MIN(freq) as freq_min,MAX(rms) as rms_max,MIN(rms) as rms_min,MAX(rms_lvr) as rms_lvr_max,MIN(rms_lvr) as rms_lvr_min,MAX(v_thd) as v_thd_max,MIN(v_thd) as v_thd_min ";
String sql = getAppend(lineId, date, type, searchSql, "A");
QueryResult query = influxDbUtils.query(sql);
List<DataV> dataVS = resultMapper.toPOJO(query, DataV.class);
if (dataVS.size() > 0){
DataV dataV = dataVS.get(0);
return dataV;
}
return null;
}
/**
* 取三相不平衡度相别为T
* @author qijian
* @date 2022/11/28
*/
@Override
public DataV getUnbalance(String lineId, Date date, Integer type) {
InfluxDBResultMapper resultMapper = new InfluxDBResultMapper();
String searchSql = "MAX(v_unbalance) as v_unbalance_max,MIN(v_unbalance) as v_unbalance_min ";
String sql = getAppend(lineId, date,type, searchSql, "T");
QueryResult query = influxDbUtils.query(sql);
List<DataV> dataVS = resultMapper.toPOJO(query, DataV.class);
if (dataVS.size() > 0){
DataV dataV = dataVS.get(0);
return dataV;
}
return null;
}
/**
* 拼装sql
* @param id,date,searchSql,tableName 参数
* @return 结果
*/
private String getAppend(String id, Date date, Integer type, String searchSql, String phase) {
StringBuilder stringBuilder = new StringBuilder();
//根据类型获取日期的开始和结束
Map<String, DateTime> beginAndEndByDate = PublicUtil.getBeginAndEndByDate(type, date);
//拼接
stringBuilder.append(InfluxDBSqlConstant.SELECT).append(searchSql)
.append(InfluxDBSqlConstant.FROM).append(InfluxDBPublicParam.DATA_V)
.append(InfluxDBSqlConstant.WHERE).append(InfluxDBPublicParam.TIME).append(InfluxDBSqlConstant.GE).append(InfluxDBSqlConstant.QM).append(beginAndEndByDate.get("startTime")).append(InfluxDBSqlConstant.QM)
.append(InfluxDBSqlConstant.AND).append(InfluxDBPublicParam.TIME).append(InfluxDBSqlConstant.LE).append(InfluxDBSqlConstant.QM).append(beginAndEndByDate.get("endTime")).append(InfluxDBSqlConstant.QM)
.append(InfluxDBSqlConstant.AND).append(InfluxDBPublicParam.LINE_ID).append(InfluxDBSqlConstant.EQ).append(InfluxDBSqlConstant.QM).append(id).append(InfluxDBSqlConstant.QM)
.append(InfluxDBSqlConstant.AND).append(InfluxDBPublicParam.VALUE_TYPE).append(InfluxDBSqlConstant.EQ).append(InfluxDBSqlConstant.QM).append(InfluxDBTableConstant.AVG).append(InfluxDBSqlConstant.QM);
if (InfluxDBTableConstant.PHASE_TYPE_T.equals(phase)){
stringBuilder.append(InfluxDBSqlConstant.AND).append(InfluxDBPublicParam.PHASIC_TYPE).append(InfluxDBSqlConstant.EQ).append(InfluxDBSqlConstant.QM).append(InfluxDBTableConstant.PHASE_TYPE_T).append(InfluxDBSqlConstant.QM);
}else{
stringBuilder.append(InfluxDBSqlConstant.AND).append(InfluxDBPublicParam.PHASIC_TYPE).append(InfluxDBSqlConstant.EQ).append(InfluxDBSqlConstant.QM).append(InfluxDBTableConstant.PHASE_TYPE_A).append(InfluxDBSqlConstant.QM);
}
return stringBuilder.toString();
}
}

View File

@@ -0,0 +1,101 @@
package com.njcn.prepare.harmonic.service.influxdb.impl;
import cn.hutool.core.date.DateTime;
import com.njcn.device.pq.pojo.po.DataV;
import com.njcn.influxdb.param.InfluxDBPublicParam;
import com.njcn.influxdb.param.InfluxDBSqlConstant;
import com.njcn.influxdb.param.InfluxDBTableConstant;
import com.njcn.influxdb.utils.InfluxDbUtils;
import com.njcn.prepare.harmonic.pojo.po.DataFlicker;
import com.njcn.prepare.harmonic.service.influxdb.DataIntegrityRateInfluxService;
import com.njcn.prepare.harmonic.utils.PublicUtil;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.influxdb.dto.QueryResult;
import org.influxdb.impl.InfluxDBResultMapper;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
* 数据完整率 influxDB业务
*
* @author qijian
* @version 1.0.0
* @createTime 2022/11/29 - 10:09
*/
@Service
@RequiredArgsConstructor
@Slf4j
public class DataIntegrityRateInfluxServiceImpl implements DataIntegrityRateInfluxService {
// private final InfluxDbUtils influxDbUtils;
private final InfluxDbUtils influxDbUtils = new InfluxDbUtils("admin", "njcnpqs", "http://192.168.1.18:8086", "pqsbase", "");
/**
* 获取data_v表五项稳态指标日数量
* @author qijian
* @date 2022/11/29
*/
@Override
public DataV getFiveSteadyData(String lineId, Date date, Integer type) {
//根据data_v表获取五项稳态指标日数量count
InfluxDBResultMapper resultMapper = new InfluxDBResultMapper();
String searchSql = "count(freq) as freq_count,count(rms) as rms_count,count(rms_lvr) as rms_lvr_count,count(v_thd) as v_thd_count,count(v_unbalance) as v_unbalance_count ";
String sql = getAppend(lineId, date,type, searchSql, InfluxDBPublicParam.DATA_V);
QueryResult query = influxDbUtils.query(sql);
List<DataV> dataVS = resultMapper.toPOJO(query, DataV.class);
if (dataVS.size() > 0){
DataV dataV = dataVS.get(0);
return dataV;
}
return null;
}
/**
* 根据data_flicker表获取两项闪变指标数量
* @author qijian
* @date 2022/11/29
* @return
*/
@Override
public DataFlicker getTwoFlickerData(String lineId, Date date, Integer type) {
//根据data_v表获取五项稳态指标日数量count
InfluxDBResultMapper resultMapper = new InfluxDBResultMapper();
String searchSql = "count(pst) as pst_count,count(plt) as plt_count ";
String sql = getAppend(lineId, date,type, searchSql, InfluxDBPublicParam.DATA_FLICKER);
QueryResult query = influxDbUtils.query(sql);
List<DataFlicker> dataFlickers = resultMapper.toPOJO(query, DataFlicker.class);
if (dataFlickers.size() > 0){
DataFlicker dataFlicker = dataFlickers.get(0);
return dataFlicker;
}
return null;
}
/**
* 拼装sql
* @param id,date,searchSql,tableName 参数
* @param type
* @return 结果
*/
private String getAppend(String id, Date date, Integer type, String searchSql, String tableName) {
StringBuilder stringBuilder = new StringBuilder();
//根据类型获取日期的开始和结束
Map<String, DateTime> beginAndEndByDate = PublicUtil.getBeginAndEndByDate(type, date);
//拼接
stringBuilder.append(InfluxDBSqlConstant.SELECT).append(searchSql)
.append(InfluxDBSqlConstant.FROM).append(tableName)
.append(InfluxDBSqlConstant.WHERE).append(InfluxDBPublicParam.TIME).append(InfluxDBSqlConstant.GE).append(InfluxDBSqlConstant.QM).append(beginAndEndByDate.get("startTime")).append(InfluxDBSqlConstant.QM)
.append(InfluxDBSqlConstant.AND).append(InfluxDBPublicParam.TIME).append(InfluxDBSqlConstant.LE).append(InfluxDBSqlConstant.QM).append(beginAndEndByDate.get("endTime")).append(InfluxDBSqlConstant.QM)
.append(InfluxDBSqlConstant.AND).append(InfluxDBPublicParam.LINE_ID).append(InfluxDBSqlConstant.EQ).append(InfluxDBSqlConstant.QM).append(id).append(InfluxDBSqlConstant.QM)
.append(InfluxDBSqlConstant.AND).append(InfluxDBPublicParam.PHASIC_TYPE).append(InfluxDBSqlConstant.EQ).append(InfluxDBSqlConstant.QM).append(InfluxDBTableConstant.PHASE_TYPE_A).append(InfluxDBSqlConstant.QM);
if (InfluxDBPublicParam.DATA_V.equals(tableName)){
stringBuilder.append(InfluxDBSqlConstant.AND).append(InfluxDBPublicParam.VALUE_TYPE).append(InfluxDBSqlConstant.EQ).append(InfluxDBSqlConstant.QM).append(InfluxDBTableConstant.AVG).append(InfluxDBSqlConstant.QM);
}
return stringBuilder.toString();
}
}

View File

@@ -0,0 +1,322 @@
package com.njcn.prepare.harmonic.service.mysql.Impl.area;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.njcn.common.pojo.exception.BusinessException;
import com.njcn.device.pms.api.DistributionMonitorClient;
import com.njcn.device.pms.pojo.po.DistributionMonitor;
import com.njcn.harmonic.pojo.po.PmsMonitorPO;
import com.njcn.harmonic.pojo.po.RStatAbnormalDPO;
import com.njcn.harmonic.pojo.po.RStatOrgDPO;
import com.njcn.harmonic.pojo.po.RStatOrgMPO;
import com.njcn.prepare.harmonic.constant.AlgorithmParam;
import com.njcn.prepare.harmonic.constant.DictCache;
import com.njcn.prepare.harmonic.constant.PqsPrepareExceptionEnum;
import com.njcn.prepare.harmonic.mapper.mysql.area.RStatAbnormalDPOMapper;
import com.njcn.prepare.harmonic.pojo.dto.MonitorDataIntegrityDTO;
import com.njcn.prepare.harmonic.pojo.param.PrimaryGridParam;
import com.njcn.prepare.harmonic.service.mysql.area.*;
import com.njcn.redis.utils.RedisUtil;
import com.njcn.system.enums.DicDataEnum;
import com.njcn.system.enums.DicDataTypeEnum;
import lombok.SneakyThrows;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
/**
* Description:
* 接口文档访问地址http://serverIP:port/swagger-ui.html
* Date: 2022/12/13 14:34【需求编号】
*
* @author clam
* @version V1.0.0
*/
@Service
public class AreaCountServiceImpl implements AreaCountService {
private @Autowired
PmsMonitorPOService pmsMonitorPOService;
private @Autowired
RMpIntegrityDPOService rMpIntegrityDPOService;
private @Autowired
RStatAbnormalDPOMapper rStatAbnormalDPOMapper;
private @Autowired
DistributionMonitorClient distributionMonitorClient;
private @Autowired
RStatOrgDService rStatOrgDService;
private @Autowired
RStatOrgMService rStatOrgMService;
private @Autowired
RMpTargetWarnDService rMpTargetWarnDService;
private @Autowired
RedisUtil redisUtil;
@Override
@Async("asyncExecutor")
public void areaCountHanlder(PrimaryGridParam primaryGridParam) {
if (Objects.equals (primaryGridParam.getDataSource ( ), AlgorithmParam.ORACLE_DATA)) {
this.hanlderOracleData (primaryGridParam);
} else if (Objects.equals (primaryGridParam.getDataSource ( ), AlgorithmParam.INFLUX_DATA)) {
this.hanlderInfludxbData (primaryGridParam);
}
}
/**
* @Description: 处理influxdb数据 todo 本次不做处理
* @Param: [primaryGridParam]
* @return: void
* @Author: clam
* @Date: 2022/11/25
*/
private void hanlderInfludxbData(PrimaryGridParam primaryGridParam) {
}
/**
* @Description: hanlderOracleData 目前只处理日表
* @Param: [primaryGridParam]
* @return: void
* @Author: clam
* @Date: 2022/12/13
*/
private void hanlderOracleData(PrimaryGridParam primaryGridParam) {
Integer type = primaryGridParam.getType ( );
switch (type) {
// case 1:
// this.hanlderOracleYear (primaryGridParam);
// break;
// case 2:
// this.hanlderOracleQtr (primaryGridParam);
// break;
case 3:
this.hanlderOracleMonth (primaryGridParam);
break;
case 5:
this.hanlderOracleDay (primaryGridParam);
break;
default:
break;
}
}
@SneakyThrows
private void hanlderOracleMonth(PrimaryGridParam primaryGridParam) {
List<String> orgIdList = primaryGridParam.getOrgIdList ( );
String dataDate = primaryGridParam.getDataDate ( );
List<RStatOrgMPO> rStatOrgMPOList = new ArrayList<> ( );
final Date tempDate = new SimpleDateFormat ("yyyy-MM-dd").parse (dataDate);
/*在运的字典表id配网123类监测点字典表id用于for循环中过滤*/
String lineTypeOneId = redisUtil.getStringByKey (DictCache.NAME_KEY +
DictCache.SPLIT_SIGN + DicDataTypeEnum.LINE_SORT.getCode ( ) +
DictCache.SPLIT_SIGN + DicDataEnum.LINE_ONE.getCode ( ));
String lineTypeTwoId = redisUtil.getStringByKey (DictCache.NAME_KEY +
DictCache.SPLIT_SIGN + DicDataTypeEnum.LINE_SORT.getCode ( ) +
DictCache.SPLIT_SIGN + DicDataEnum.LINE_TWO.getCode ( ));
String lineTypeThreeId = redisUtil.getStringByKey (DictCache.NAME_KEY +
DictCache.SPLIT_SIGN + DicDataTypeEnum.LINE_SORT.getCode ( ) +
DictCache.SPLIT_SIGN + DicDataEnum.LINE_THREE.getCode ( ));
if (
StringUtils.isEmpty (lineTypeOneId) ||
StringUtils.isEmpty (lineTypeTwoId) ||
StringUtils.isEmpty (lineTypeThreeId)) {
throw new BusinessException (PqsPrepareExceptionEnum.REDIS_NULL_EXCEPTION);
}
orgIdList.forEach (orgid -> {
/*1.2.2.1. 主网区域分类有效接入监测点数*/
/*主网在运监测点*/
List<PmsMonitorPO> pmsMonitorPOS = pmsMonitorPOService.qurymeasurementRunPoints (orgid);
/* 根据监测点对象类型分组获取监测点*/
Map<String, List<PmsMonitorPO>> collect = pmsMonitorPOS.stream ( ).collect (Collectors.groupingBy (PmsMonitorPO::getMonitorObjectType));
for (Map.Entry<String, List<PmsMonitorPO>> entry : collect.entrySet ( )) {
/*计算出当前机构不同监测点对象类型累计稳态超标监测点数*/
List<String> monitorIdList = entry.getValue ( ).stream ( ).map (PmsMonitorPO::getId).collect (Collectors.toList ( ));
Integer integer = rMpTargetWarnDService.queryHarmonicMeasurementAccrued (monitorIdList, dataDate);
RStatOrgMPO rStatOrgMPO = new RStatOrgMPO ( );
rStatOrgMPO.setOrgNo (orgid);
rStatOrgMPO.setMeasurementTypeClass (entry.getKey ( ));
rStatOrgMPO.setDataDate (tempDate);
rStatOrgMPO.setDataType ("01");
rStatOrgMPO.setHarmonicMeasurementAccrued (integer);
rStatOrgMPOList.add (rStatOrgMPO);
}
/* 配网区域分类1.2.3类有效接入监测点数*/
/*monitorSort=""获取配网监1,2,3类测点全部数据*/
RStatOrgMPO rStatOrgMPOOne = packageRStatOrgMPO (orgid, lineTypeOneId, dataDate);
RStatOrgMPO rStatOrgMPOTwo = packageRStatOrgMPO (orgid, lineTypeTwoId, dataDate);
RStatOrgMPO rStatOrgMPOThree = packageRStatOrgMPO (orgid, lineTypeThreeId, dataDate);
rStatOrgMPOList.add (rStatOrgMPOOne);
rStatOrgMPOList.add (rStatOrgMPOTwo);
rStatOrgMPOList.add (rStatOrgMPOThree);
}
);
rStatOrgMService.saveOrUpdateBatchByMultiId (rStatOrgMPOList,500);
}
/**
* @Description: hanlderOracleDay
* @Param: [primaryGridParam]
* @return: void
* @Author: clam
* @Date: 2022/12/13
*/
@SneakyThrows
private void hanlderOracleDay(PrimaryGridParam primaryGridParam) {
List<String> orgIdList = primaryGridParam.getOrgIdList ( );
String dataDate = primaryGridParam.getDataDate ( );
List<RStatOrgDPO> rStatOrgDPOList = new ArrayList<> ( );
final Date tempDate = new SimpleDateFormat ("yyyy-MM-dd").parse (dataDate);
/*在运的字典表id配网123类监测点字典表id用于for循环中过滤*/
String lineTypeOneId = redisUtil.getStringByKey (DictCache.NAME_KEY +
DictCache.SPLIT_SIGN + DicDataTypeEnum.LINE_SORT.getCode ( ) +
DictCache.SPLIT_SIGN + DicDataEnum.LINE_ONE.getCode ( ));
String lineTypeTwoId = redisUtil.getStringByKey (DictCache.NAME_KEY +
DictCache.SPLIT_SIGN + DicDataTypeEnum.LINE_SORT.getCode ( ) +
DictCache.SPLIT_SIGN + DicDataEnum.LINE_TWO.getCode ( ));
String lineTypeThreeId = redisUtil.getStringByKey (DictCache.NAME_KEY +
DictCache.SPLIT_SIGN + DicDataTypeEnum.LINE_SORT.getCode ( ) +
DictCache.SPLIT_SIGN + DicDataEnum.LINE_THREE.getCode ( ));
if (
StringUtils.isEmpty (lineTypeOneId) ||
StringUtils.isEmpty (lineTypeTwoId) ||
StringUtils.isEmpty (lineTypeThreeId)) {
throw new BusinessException (PqsPrepareExceptionEnum.REDIS_NULL_EXCEPTION);
}
orgIdList.forEach (orgid -> {
/*1.2.2.1. 主网区域分类有效接入监测点数*/
/*主网在运监测点*/
List<PmsMonitorPO> pmsMonitorPOS = pmsMonitorPOService.qurymeasurementRunPoints (orgid);
/* 根据监测点对象类型分组获取监测点*/
Map<String, List<PmsMonitorPO>> collect = pmsMonitorPOS.stream ( ).collect (Collectors.groupingBy (PmsMonitorPO::getMonitorObjectType));
for (Map.Entry<String, List<PmsMonitorPO>> entry : collect.entrySet ( )) {
/*计算出当前监测点对象类型有效接入监测点个数*/
List<String> monitorIdList = entry.getValue ( ).stream ( ).map (PmsMonitorPO::getId).collect (Collectors.toList ( ));
Integer integer = this.queryEffectiveAccessMeasurementCount (monitorIdList, dataDate);
RStatOrgDPO rStatOrgDPO = new RStatOrgDPO ( );
rStatOrgDPO.setOrgNo (orgid);
rStatOrgDPO.setMeasurementTypeClass (entry.getKey ( ));
rStatOrgDPO.setDataDate (tempDate);
rStatOrgDPO.setDataType ("01");
rStatOrgDPO.setEffectiveMeasurement (integer);
rStatOrgDPOList.add (rStatOrgDPO);
}
/* 配网区域分类1.2.3类有效接入监测点数*/
/*monitorSort=""获取配网监1,2,3类测点全部数据*/
RStatOrgDPO rStatOrgDPOOne = packageRStatOrgDPO (orgid, lineTypeOneId, dataDate);
RStatOrgDPO rStatOrgDPOTwo = packageRStatOrgDPO (orgid, lineTypeTwoId, dataDate);
RStatOrgDPO rStatOrgDPOThree = packageRStatOrgDPO (orgid, lineTypeThreeId, dataDate);
rStatOrgDPOList.add (rStatOrgDPOOne);
rStatOrgDPOList.add (rStatOrgDPOTwo);
rStatOrgDPOList.add (rStatOrgDPOThree);
}
);
rStatOrgDService.saveOrUpdateBatchByMultiId (rStatOrgDPOList,500);
}
@SneakyThrows
private RStatOrgMPO packageRStatOrgMPO(String orgid, String lineTypeId, String dataDate) {
RStatOrgMPO rStatOrgMPO = new RStatOrgMPO ( );
List<DistributionMonitor> distributionMonitorList = distributionMonitorClient.distributionMonitorListByCondition (orgid, lineTypeId).getData ( );
final Date tempDate = new SimpleDateFormat ("yyyy-MM-dd").parse (dataDate);
/*计算出当前监测点对象类型有效接入监测点个数*/
List<String> monitorIdList = distributionMonitorList.stream ( ).map (DistributionMonitor::getMonitorId).collect (Collectors.toList ( ));
Integer integer = rMpTargetWarnDService.queryHarmonicMeasurementAccrued (monitorIdList, dataDate);
rStatOrgMPO.setOrgNo (orgid);
rStatOrgMPO.setMeasurementTypeClass (lineTypeId);
rStatOrgMPO.setDataDate (tempDate);
rStatOrgMPO.setDataType ("02");
rStatOrgMPO.setHarmonicMeasurementAccrued (integer);
return rStatOrgMPO;
}
/**
* @Description: 计算123类配网有效接入监测 后包装成RStatOrgDPO
* @Param: [orgid, lineTypeId, dataDate]
* @return: com.njcn.prepare.harmonic.pojo.mysql.po.RStatOrgDPO
* @Author: clam
* @Date: 2022/12/14
*/
@SneakyThrows
private RStatOrgDPO packageRStatOrgDPO(String orgid, String lineTypeId, String dataDate) {
RStatOrgDPO rStatOrgDPO = new RStatOrgDPO ( );
List<DistributionMonitor> distributionMonitorList = distributionMonitorClient.distributionMonitorListByCondition (orgid, lineTypeId).getData ( );
final Date tempDate = new SimpleDateFormat ("yyyy-MM-dd").parse (dataDate);
/*计算出当前监测点对象类型有效接入监测点个数*/
List<String> monitorIdList = distributionMonitorList.stream ( ).map (DistributionMonitor::getMonitorId).collect (Collectors.toList ( ));
Integer integer = this.queryEffectiveAccessMeasurementCount (monitorIdList, dataDate);
rStatOrgDPO.setOrgNo (orgid);
rStatOrgDPO.setMeasurementTypeClass (lineTypeId);
rStatOrgDPO.setDataDate (tempDate);
rStatOrgDPO.setDataType ("02");
rStatOrgDPO.setEffectiveMeasurement (integer);
return rStatOrgDPO;
}
/**
* @Description: 有效接入监测点个数
* 1.获取pms_monitor表中监测点状态为投运的监测点id列表
* 2.根据id查询r_mp_integrity_d表中当天各项指标个数采用以下公式计算数据完整率
* 3.〖数据完整率〗_日统计=(频率+相电压+线电压+畸变率+不平衡度)/(有效值数据个数*5)*100%
* 判定监测点数据完整率是否大于95%
* 4、根据id查询r_stat_abnormal_d表value_alarm为1。
* 5、以上两个条件满足表明该监测点为有效监测点。
* 6、统计有效监测点个数
* @Param: [indexlist, dataDate]
* @return: java.lang.String
* @Author: clam
* @Date: 2022/11/25
*/
private Integer queryEffectiveAccessMeasurementCount(List<String> indexlist, String dataDate) {
/*获取监测点的数据完整性*/
List<MonitorDataIntegrityDTO> monitorDataIntegrityDTOList = rMpIntegrityDPOService.calculateDataIntegrity (indexlist, dataDate);
/*获取完整率>0.95的监测点id*/
List<String> collect = monitorDataIntegrityDTOList.stream ( ).
filter (temp -> temp.getDataIntegrity ( ).compareTo (new BigDecimal (0.95)) == 1
).map (MonitorDataIntegrityDTO::getId).collect (Collectors.toList ( ));
/*获取完整率>0.95条件下value_alarm为1的监测点id*/
if (CollectionUtils.isEmpty (collect)) {
return 0;
}
QueryWrapper<RStatAbnormalDPO> rStatAbnormalDPOLambdaQueryWrapper = new QueryWrapper ( );
rStatAbnormalDPOLambdaQueryWrapper.select ("measurement_point_id").
in ("measurement_point_id", collect).
eq ("value_alarm", 1).
eq ("DATE_FORMAT( data_date ,'%Y-%m-%d')", dataDate);
List<RStatAbnormalDPO> rStatAbnormalDPOS = rStatAbnormalDPOMapper.selectList (rStatAbnormalDPOLambdaQueryWrapper);
return rStatAbnormalDPOS.size ( );
}
}

View File

@@ -0,0 +1,69 @@
package com.njcn.prepare.harmonic.service.mysql.Impl.area;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.njcn.common.pojo.exception.BusinessException;
import com.njcn.harmonic.pojo.po.PmsMonitorPO;
import com.njcn.prepare.harmonic.constant.DictCache;
import com.njcn.prepare.harmonic.constant.PqsPrepareExceptionEnum;
import com.njcn.prepare.harmonic.mapper.mysql.area.PmsMonitorPOMapper;
import com.njcn.prepare.harmonic.service.mysql.area.PmsMonitorPOService;
import com.njcn.redis.utils.RedisUtil;
import com.njcn.system.enums.DicDataEnum;
import com.njcn.system.enums.DicDataTypeEnum;
import com.njcn.user.api.DeptFeignClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import java.util.List;
/**
*
* Description:
* 接口文档访问地址http://serverIP:port/swagger-ui.html
* Date: 2022/11/29 15:32【需求编号】
*
* @author clam
* @version V1.0.0
*/
@Service
public class PmsMonitorPOServiceImpl extends ServiceImpl<PmsMonitorPOMapper, PmsMonitorPO> implements PmsMonitorPOService{
private @Autowired
RedisUtil redisUtil;
private @Autowired
PmsMonitorPOMapper pmsMonitorPOMapper;
private @Autowired
DeptFeignClient deptFeignClient;
/**
* @Description: 在运监测点集合
* @Param: [orgid]
* @return: java.lang.Integer
* @Author: clam
* @Date: 2022/11/25
*/
@Override
public List<PmsMonitorPO> qurymeasurementRunPoints(String orgid) {
LambdaQueryWrapper<PmsMonitorPO> monitorPOLambdaQueryWrapper = new LambdaQueryWrapper ( );
/*获取当前部门及子部门*/
List<String> deptIds = deptFeignClient.getDepSonSelfCodetByDeptId(orgid).getData();
monitorPOLambdaQueryWrapper.in (PmsMonitorPO::getOrgId, deptIds);
// List<DictData> data = dicDataFeignClient.getDicDataByTypeCode (DicDataTypeEnum.LINE_STATE.getCode ( )).getData ( );
// List<DictData> collect = data.stream ( ).filter (temp -> Objects.equals (temp.getCode ( ), DicDataEnum.RUN.getCode ())).collect (Collectors.toList ( ));
String state = redisUtil.getStringByKey (DictCache.NAME_KEY+
DictCache.SPLIT_SIGN+ DicDataTypeEnum.LINE_STATE.getCode ( )+
DictCache.SPLIT_SIGN+ DicDataEnum.RUN.getCode ( ));
if(StringUtils.isEmpty (state)){
throw new BusinessException (PqsPrepareExceptionEnum.REDIS_NULL_EXCEPTION);
}
monitorPOLambdaQueryWrapper.eq (PmsMonitorPO::getMonitorState, state);
List<PmsMonitorPO> pmsMonitorPOS = pmsMonitorPOMapper.selectList (monitorPOLambdaQueryWrapper);
return pmsMonitorPOS;
}
}

View File

@@ -0,0 +1,51 @@
package com.njcn.prepare.harmonic.service.mysql.Impl.area;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.njcn.harmonic.pojo.po.PmsTerminalPO;
import com.njcn.prepare.harmonic.mapper.mysql.area.PmsTerminalPOMapper;
import com.njcn.prepare.harmonic.service.mysql.area.PmsTerminalPOService;
import com.njcn.user.api.DeptFeignClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
/**
*
* Description:
* 接口文档访问地址http://serverIP:port/swagger-ui.html
* Date: 2022/11/29 15:53【需求编号】
*
* @author clam
* @version V1.0.0
*/
@Service
public class PmsTerminalPOServiceImpl extends ServiceImpl<PmsTerminalPOMapper, PmsTerminalPO> implements PmsTerminalPOService{
private @Autowired
PmsTerminalPOMapper pmsTerminalPOMapper;
private @Autowired
DeptFeignClient deptFeignClient;
/**
* @Description: 监测终端集合
* @Param: [orgid]
* @return: java.util.List<com.njcn.prepare.harmonic.pojo.po.PmsTerminalPO>
* @Author: clam
* @Date: 2022/11/25
*/
@Override
public List<PmsTerminalPO> queryOnlineMeasurementPoints(String orgid) {
List<PmsTerminalPO> list = new ArrayList<> ();
LambdaQueryWrapper<PmsTerminalPO> wrapper = new LambdaQueryWrapper ( );
/*获取当前部门及子部门*/
List<String> deptIds = deptFeignClient.getDepSonSelfCodetByDeptId(orgid).getData();
wrapper.in (PmsTerminalPO::getOrgId, deptIds);
list = pmsTerminalPOMapper.selectList (wrapper);
return list;
}
}

View File

@@ -0,0 +1,538 @@
package com.njcn.prepare.harmonic.service.mysql.Impl.area;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.njcn.common.pojo.exception.BusinessException;
import com.njcn.harmonic.pojo.po.*;
import com.njcn.prepare.harmonic.constant.AlgorithmParam;
import com.njcn.prepare.harmonic.constant.DictCache;
import com.njcn.prepare.harmonic.constant.PqsPrepareExceptionEnum;
import com.njcn.prepare.harmonic.mapper.mysql.area.RStatAbnormalDPOMapper;
import com.njcn.prepare.harmonic.pojo.dto.MonitorDataIntegrityDTO;
import com.njcn.prepare.harmonic.pojo.oracle.PqLinedetailPO;
import com.njcn.prepare.harmonic.pojo.param.PrimaryGridDataIntegrityParam;
import com.njcn.prepare.harmonic.pojo.param.PrimaryGridParam;
import com.njcn.prepare.harmonic.service.mysql.area.*;
import com.njcn.prepare.harmonic.service.oracle.DataVOraclePOService;
import com.njcn.prepare.harmonic.service.oracle.PqLinedetailPOService;
import com.njcn.redis.utils.RedisUtil;
import com.njcn.system.enums.DicDataEnum;
import com.njcn.system.enums.DicDataTypeEnum;
import lombok.SneakyThrows;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
/**
* Description:
* 接口文档访问地址http://serverIP:port/swagger-ui.html
* Date: 2022/11/25 8:54【需求编号】
*
* @author clam
* @version V1.0.0
*/
@Service
public class PrimaryGridDataServiceImpl implements PrimaryGridDataService {
private @Autowired
PmsMonitorPOService pmsMonitorPOService;
private @Autowired
PmsTerminalPOService pmsTerminalPOService;
private @Autowired
PqLinedetailPOService pqLinedetailPOService;
private @Autowired
DataVOraclePOService dataVOraclePOService;
private @Autowired
RMpIntegrityDPOService rMpIntegrityDPOService;
private @Autowired
RStatAbnormalDPOMapper rStatAbnormalDPOMapper;
private @Autowired
ROperatingIndexDPOService rOperatingIndexDPOService;
private @Autowired
ROperatingIndexMPOService rOperatingIndexMPOService;
private @Autowired
ROperatingIndexQPOService rOperatingIndexQPOService;
private @Autowired
ROperatingIndexYPOService rOperatingIndexYPOService;
private @Autowired
RMpDevEvaluateDetailPOService rMpDevEvaluateDetailPOService;
private @Autowired
RedisUtil redisUtil;
/**
* @param primaryGridParam
* @Description: primaryGridDataHanlder
* @Param: [primaryGridParam]
* @return: void
* @Author: clam
* @Date: 2022/11/25
*/
@Override
@Async("asyncExecutor")
public void primaryGridDataHanlder(PrimaryGridParam primaryGridParam) {
if (Objects.equals (primaryGridParam.getDataSource ( ), AlgorithmParam.ORACLE_DATA)) {
hanlderOracleData (primaryGridParam);
} else if (Objects.equals (primaryGridParam.getDataSource ( ), AlgorithmParam.INFLUX_DATA)) {
hanlderInfludxbData (primaryGridParam);
}
}
/**
* @param primaryGridDataIntegrityParam
* @Description: 主网终端数据完整率月统计只做月统计且重mysql查数据不分数据源
* @Param: [primaryGridDataIntegrityParam]
* @return: void
* @Author: clam
* @Date: 2022/11/30
*/
@Override
@Async
@SneakyThrows
public void primaryGridDataIntegrityHanlder(PrimaryGridDataIntegrityParam primaryGridDataIntegrityParam) {
List<String> deviceIds = primaryGridDataIntegrityParam.getDeviceId ();
String dataDate = primaryGridDataIntegrityParam.getDataDate ( );
List<RMpDevEvaluateDetailPO> rMpDevEvaluateDetailPOList = new ArrayList<> ( );
final Date tempDate = new SimpleDateFormat ("yyyy-MM-dd").parse(dataDate);
deviceIds.forEach (deviceId->{
double dev_data_rate=0.00;
/*获取终端下的监测点集合*/
QueryWrapper<PmsMonitorPO> queryWrapper = new QueryWrapper<> ();
String state = redisUtil.getStringByKey (DictCache.NAME_KEY+
DictCache.SPLIT_SIGN+ DicDataTypeEnum.LINE_STATE.getCode ( )+
DictCache.SPLIT_SIGN+ DicDataEnum.RUN.getCode ( ));
if(StringUtils.isEmpty (state)){
throw new BusinessException (PqsPrepareExceptionEnum.REDIS_NULL_EXCEPTION);
}
queryWrapper.lambda ().eq (PmsMonitorPO::getTerminalId, deviceId).
eq (PmsMonitorPO::getMonitorState, state);
List<PmsMonitorPO> list = pmsMonitorPOService.list (queryWrapper);
List<String> mysqlIndexList = list.stream ( ).map (PmsMonitorPO::getId).collect (Collectors.toList ( ));
/*获取检测点的月平均数据完整率*/
List<MonitorDataIntegrityDTO> monitorDataIntegrityDTOList = rMpIntegrityDPOService.calculateMouthDataIntegrity (mysqlIndexList, dataDate);
/*求平均值*/
if(!CollectionUtils.isEmpty (monitorDataIntegrityDTOList)){
dev_data_rate = monitorDataIntegrityDTOList.stream ( ).mapToDouble (monitorDataIntegrityDTO -> {
return monitorDataIntegrityDTO.getDataIntegrity ( ).doubleValue ( );
}).average ( ).getAsDouble ( );
}
RMpDevEvaluateDetailPO rMpDevEvaluateDetailPO = new RMpDevEvaluateDetailPO();
rMpDevEvaluateDetailPO.setDeviceId (deviceId);
rMpDevEvaluateDetailPO.setDataDate (tempDate);
rMpDevEvaluateDetailPO.setDevDataRate (dev_data_rate);
rMpDevEvaluateDetailPOList.add (rMpDevEvaluateDetailPO);
});
rMpDevEvaluateDetailPOService.saveOrUpdateBatchByMultiId (rMpDevEvaluateDetailPOList,500);
}
/**
* @Description: 处理influxdb数据 todo 本次不做处理
* @Param: [primaryGridParam]
* @return: void
* @Author: clam
* @Date: 2022/11/25
*/
private void hanlderInfludxbData(PrimaryGridParam primaryGridParam) {
}
/**
* @Description: 处理Oracle数据
* @Param: [primaryGridParam]
* @return: void
* @Author: clam
* @Date: 2022/11/25
*/
private void hanlderOracleData(PrimaryGridParam primaryGridParam) {
Integer type = primaryGridParam.getType ( );
switch (type) {
case 1:
this.hanlderOracleYear (primaryGridParam);
break;
case 2:
this.hanlderOracleQtr (primaryGridParam);
break;
case 3:
this.hanlderOracleMonth (primaryGridParam);
break;
case 5:
this.hanlderOracleDay (primaryGridParam);
break;
default:
break;
}
}
/**
* @Description: hanlderOracleMonth
* @Param: [primaryGridParam]
* @return: void
* @Author: clam
* @Date: 2022/11/25
*/
@SneakyThrows
private void hanlderOracleMonth(PrimaryGridParam primaryGridParam) {
List<String> orgIdList = primaryGridParam.getOrgIdList ( );
String dataDate = primaryGridParam.getDataDate ( );
List<ROperatingIndexMPO> rOperatingIndexMPOList = new ArrayList<> ( );
final Date tempDate = new SimpleDateFormat ("yyyy-MM-dd").parse(dataDate);
orgIdList.forEach (orgid -> {
/*查询day表数据生成月表数据*/
List<ROperatingIndexDPO> list = rOperatingIndexDPOService.queryOneMothData(orgid,dataDate);
/*求平均值*/
int measurement_run_points =(int) Math.round (list.stream ( ).
mapToDouble (temp -> temp.getMeasurementRunPoints ( )).
average ( ).
getAsDouble ( ));
int transit_measurement_points =(int) Math.round (list.stream ( ).
mapToDouble (temp -> temp.getTransitMeasurementPoints ()).
average ( ).
getAsDouble ( ));
int effective_access_measurement_count =(int) Math.round (list.stream ( ).
mapToDouble (temp -> temp.getEffectiveAccessMeasurementCount ()).
average ( ).
getAsDouble ( ));
int online_measurement_points =(int) Math.round (list.stream ( ).
mapToDouble (temp -> temp.getOnlineMeasurementPoints ()).
average ( ).
getAsDouble ( ));
int online_measurement_count =(int) Math.round (list.stream ( ).
mapToDouble (temp -> temp.getOnlineMeasurementCount ()).
average ( ).
getAsDouble ( ));
/*double保留2位小数*/
Double data_integrity_rate =Math.round (list.stream ( ).
mapToDouble (temp -> temp.getDataIntegrityRate ()).
average ( ).
getAsDouble ( )*100)*0.01;
/*看day表is_unusual时候存在1存在返回1数据否异常(0:正常 1:异常)*/
Integer is_unusual =list.stream ().
map (ROperatingIndexDPO::getIsUnusual).
collect (Collectors.toList ())
.contains (1)?1:0;
ROperatingIndexMPO rOperatingIndexMPO = new ROperatingIndexMPO( );
rOperatingIndexMPO.setOrgNo (orgid);
rOperatingIndexMPO.setDataDate (tempDate);
rOperatingIndexMPO.setMeasurementRunPoints (measurement_run_points);
rOperatingIndexMPO.setTransitMeasurementPoints (transit_measurement_points);
rOperatingIndexMPO.setEffectiveAccessMeasurementCount (effective_access_measurement_count);
rOperatingIndexMPO.setOnlineMeasurementPoints (online_measurement_points);
rOperatingIndexMPO.setOnlineMeasurementCount (online_measurement_count);
rOperatingIndexMPO.setDataIntegrityRate (data_integrity_rate);
rOperatingIndexMPO.setIsUnusual (is_unusual);
rOperatingIndexMPOList.add (rOperatingIndexMPO);
});
if(!CollectionUtils.isEmpty (rOperatingIndexMPOList)){
rOperatingIndexMPOService.saveOrUpdateBatchByMultiId (rOperatingIndexMPOList,30);
}
}
/**
* @Description: hanlderOracleDay
* @Param: [primaryGridParam]
* @return: void
* @Author: clam
* @Date: 2022/11/25
*/
@SneakyThrows
private void hanlderOracleDay(PrimaryGridParam primaryGridParam) {
List<String> orgIdList = primaryGridParam.getOrgIdList ( );
String dataDate = primaryGridParam.getDataDate ( );
List<ROperatingIndexDPO> rOperatingIndexDPOList = new ArrayList<> ( );
final Date tempDate = new SimpleDateFormat ("yyyy-MM-dd").parse(dataDate);
orgIdList.forEach (orgid -> {
/*measurement_run_points:在运监测点个数*/
List<PmsMonitorPO> pmsMonitorPOS = pmsMonitorPOService.qurymeasurementRunPoints (orgid);
Integer measurement_run_points = pmsMonitorPOS.size ( );
/*获取mysql与Oracle监测点id对应关系*/
List<String> mysqlIndexList = pmsMonitorPOS.stream ( ).map (PmsMonitorPO::getId).collect (Collectors.toList ( ));
List<PqLinedetailPO> pqLinedetailPOS = pqLinedetailPOService.queryOracleIndexIdByMysqlIndexId (mysqlIndexList);
List<Integer> oracleIndexlist = pqLinedetailPOS.stream ( ).map (PqLinedetailPO::getLineIndex).collect (Collectors.toList ( ));
/*主网单位在线监测点数 transit_measurement_points*/
Integer transit_measurement_points = dataVOraclePOService.queryTransitMeasurementPoints(oracleIndexlist,primaryGridParam.getDataDate ());
/*主网单位有效接入监测点个数 effective_access_measurement_count*/
Integer effective_access_measurement_count = this.queryEffectiveAccessMeasurementCount(mysqlIndexList,primaryGridParam.getDataDate ());
/*监测终端数量 online_measurement_points*/
List<PmsTerminalPO> pmsTerminalPOS = pmsTerminalPOService.queryOnlineMeasurementPoints(orgid);
Integer online_measurement_points = pmsTerminalPOS.size ();
/*在运监测终端个数 online_measurement_count*/
String state = redisUtil.getStringByKey (DictCache.NAME_KEY+
DictCache.SPLIT_SIGN+ DicDataTypeEnum.DEV_STATUS.getCode ( )+
DictCache.SPLIT_SIGN+ DicDataEnum.RUNNING.getCode ( ));
Integer online_measurement_count = Integer.valueOf (pmsTerminalPOS.stream ( ).filter (temp -> Objects.equals (temp.getTerminalState ( ),state)).count ( )+"");
/*主网单位数据完整率 data_integrity_rate*/
double data_integrity_rate=0.00;
List<MonitorDataIntegrityDTO> monitorDataIntegrityDTOList = rMpIntegrityDPOService.calculateDataIntegrity (mysqlIndexList, dataDate);
/*求平均值*/
if(!CollectionUtils.isEmpty (monitorDataIntegrityDTOList)){
data_integrity_rate = monitorDataIntegrityDTOList.stream ( ).mapToDouble (temp -> {
return temp.getDataIntegrity ( ).doubleValue ( );
}).average ( ).getAsDouble ( );
}
/*主网单位数据异常监测点数日统计 is_unusual*/
Integer is_unusual =this.queryIsUnusualCount(mysqlIndexList,primaryGridParam.getDataDate ());
ROperatingIndexDPO rOperatingIndexDPO = new ROperatingIndexDPO( );
rOperatingIndexDPO.setOrgNo (orgid);
rOperatingIndexDPO.setDataDate (tempDate);
rOperatingIndexDPO.setMeasurementRunPoints (measurement_run_points);
rOperatingIndexDPO.setTransitMeasurementPoints (transit_measurement_points);
rOperatingIndexDPO.setEffectiveAccessMeasurementCount (effective_access_measurement_count);
rOperatingIndexDPO.setOnlineMeasurementPoints (online_measurement_points);
rOperatingIndexDPO.setOnlineMeasurementCount (online_measurement_count);
rOperatingIndexDPO.setDataIntegrityRate (data_integrity_rate);
rOperatingIndexDPO.setIsUnusual (is_unusual>0?1:0);
rOperatingIndexDPOList.add (rOperatingIndexDPO);
});
if(!CollectionUtils.isEmpty (rOperatingIndexDPOList)){
rOperatingIndexDPOService.saveOrUpdateBatchByMultiId (rOperatingIndexDPOList,30);
}
}
/**
* @Description: queryIsUnusualCount :用监测点id在r_stat_abnormal_d表中查找value_alarm为0的监测点个数
* @Param: [mysqlIndexList, dataDate]
* @return: java.lang.Integer
* @Author: clam
* @Date: 2022/11/28
*/
private Integer queryIsUnusualCount(List<String> mysqlIndexList, String dataDate) {
if(CollectionUtils.isEmpty (mysqlIndexList)){
return 0;
}
QueryWrapper<RStatAbnormalDPO> rStatAbnormalDPOLambdaQueryWrapper = new QueryWrapper ( );
rStatAbnormalDPOLambdaQueryWrapper.
in ("measurement_point_id",mysqlIndexList).
eq ("value_alarm", 0).
eq("DATE_FORMAT( data_date ,'%Y-%m-%d')",dataDate);
Integer integer = rStatAbnormalDPOMapper.selectCount (rStatAbnormalDPOLambdaQueryWrapper);
return integer;
}
/**
* @Description: 主网单位有效接入监测点个数
* 1.获取pms_monitor表中监测点状态为投运的监测点id列表
* 2.根据id查询r_mp_integrity_d表中当天各项指标个数采用以下公式计算数据完整率
* 3.〖数据完整率〗_日统计=(频率+相电压+线电压+畸变率+不平衡度)/(有效值数据个数*5)*100%
* 判定监测点数据完整率是否大于95%
* 4、根据id查询r_stat_abnormal_d表value_alarm为1。
* 5、以上两个条件满足表明该监测点为有效监测点。
* 6、统计有效监测点个数
* @Param: [indexlist, dataDate]
* @return: java.lang.String
* @Author: clam
* @Date: 2022/11/25
*/
private Integer queryEffectiveAccessMeasurementCount(List<String> indexlist, String dataDate) {
/*获取监测点的数据完整性*/
List<MonitorDataIntegrityDTO> monitorDataIntegrityDTOList = rMpIntegrityDPOService.calculateDataIntegrity (indexlist, dataDate);
/*获取完整率>0.95的监测点id*/
List<String> collect = monitorDataIntegrityDTOList.stream ( ).
filter (temp -> temp.getDataIntegrity ().compareTo (new BigDecimal (0.95)) == 1
).map (MonitorDataIntegrityDTO::getId).collect (Collectors.toList ( ));
/*获取完整率>0.95条件下value_alarm为1的监测点id*/
if(CollectionUtils.isEmpty (collect)){
return 0;
}
QueryWrapper<RStatAbnormalDPO> rStatAbnormalDPOLambdaQueryWrapper = new QueryWrapper ( );
rStatAbnormalDPOLambdaQueryWrapper.select ("measurement_point_id").
in ("measurement_point_id",collect).
eq ("value_alarm", 1).
eq("DATE_FORMAT( data_date ,'%Y-%m-%d')",dataDate);
List<RStatAbnormalDPO> rStatAbnormalDPOS = rStatAbnormalDPOMapper.selectList (rStatAbnormalDPOLambdaQueryWrapper);
return rStatAbnormalDPOS.size ();
}
/**
* @Description: hanlderOracleQtr
* @Param: [primaryGridParam]
* @return: void
* @Author: clam
* @Date: 2022/11/25
*/
@SneakyThrows
private void hanlderOracleQtr(PrimaryGridParam primaryGridParam) {
List<String> orgIdList = primaryGridParam.getOrgIdList ( );
String dataDate = primaryGridParam.getDataDate ( );
List<ROperatingIndexQPO> rOperatingIndexQPOList = new ArrayList<> ( );
final Date tempDate = new SimpleDateFormat ("yyyy-MM-dd").parse(dataDate);
orgIdList.forEach (orgid -> {
/*查询Mouth表数据生成季表数据*/
List<ROperatingIndexMPO> list = rOperatingIndexMPOService.queryOneQtrData(orgid,dataDate);
/*求平均值*/
int measurement_run_points =(int) Math.round (list.stream ( ).
mapToDouble (temp -> temp.getMeasurementRunPoints ( )).
average ( ).
getAsDouble ( ));
int transit_measurement_points =(int) Math.round (list.stream ( ).
mapToDouble (temp -> temp.getTransitMeasurementPoints ()).
average ( ).
getAsDouble ( ));
int effective_access_measurement_count =(int) Math.round (list.stream ( ).
mapToDouble (temp -> temp.getEffectiveAccessMeasurementCount ()).
average ( ).
getAsDouble ( ));
int online_measurement_points =(int) Math.round (list.stream ( ).
mapToDouble (temp -> temp.getOnlineMeasurementPoints ()).
average ( ).
getAsDouble ( ));
int online_measurement_count =(int) Math.round (list.stream ( ).
mapToDouble (temp -> temp.getOnlineMeasurementCount ()).
average ( ).
getAsDouble ( ));
/*double保留2位小数*/
Double data_integrity_rate =Math.round (list.stream ( ).
mapToDouble (temp -> temp.getDataIntegrityRate ()).
average ( ).
getAsDouble ( )*100)*0.01;
/*看day表is_unusual时候存在1存在返回1数据否异常(0:正常 1:异常)*/
Integer is_unusual =list.stream ().
map (ROperatingIndexMPO::getIsUnusual).
collect (Collectors.toList ())
.contains (1)?1:0;
ROperatingIndexQPO rOperatingIndexQPO = new ROperatingIndexQPO( );
rOperatingIndexQPO.setOrgNo (orgid);
rOperatingIndexQPO.setDataDate (tempDate);
rOperatingIndexQPO.setMeasurementRunPoints (measurement_run_points);
rOperatingIndexQPO.setTransitMeasurementPoints (transit_measurement_points);
rOperatingIndexQPO.setEffectiveAccessMeasurementCount (effective_access_measurement_count);
rOperatingIndexQPO.setOnlineMeasurementPoints (online_measurement_points);
rOperatingIndexQPO.setOnlineMeasurementCount (online_measurement_count);
rOperatingIndexQPO.setDataIntegrityRate (data_integrity_rate);
rOperatingIndexQPO.setIsUnusual (is_unusual);
rOperatingIndexQPOList.add (rOperatingIndexQPO);
});
if(!CollectionUtils.isEmpty (rOperatingIndexQPOList)){
rOperatingIndexQPOService.saveOrUpdateBatchByMultiId (rOperatingIndexQPOList,30);
}
}
/**
* @Description: hanlderOracleYear
* @Param: [primaryGridParam]
* @return: void
* @Author: clam
* @Date: 2022/11/25
*/
@SneakyThrows
private void hanlderOracleYear(PrimaryGridParam primaryGridParam) {
List<String> orgIdList = primaryGridParam.getOrgIdList ( );
String dataDate = primaryGridParam.getDataDate ( );
List<ROperatingIndexYPO> rOperatingIndexYPOList = new ArrayList<> ( );
final Date tempDate = new SimpleDateFormat ("yyyy-MM-dd").parse(dataDate);
orgIdList.forEach (orgid -> {
/*查询Mouth表数据生成年表数据*/
List<ROperatingIndexMPO> list = rOperatingIndexMPOService.queryOneYearData(orgid,dataDate);
/*求平均值*/
int measurement_run_points =(int) Math.round (list.stream ( ).
mapToDouble (temp -> temp.getMeasurementRunPoints ( )).
average ( ).
getAsDouble ( ));
int transit_measurement_points =(int) Math.round (list.stream ( ).
mapToDouble (temp -> temp.getTransitMeasurementPoints ()).
average ( ).
getAsDouble ( ));
int effective_access_measurement_count =(int) Math.round (list.stream ( ).
mapToDouble (temp -> temp.getEffectiveAccessMeasurementCount ()).
average ( ).
getAsDouble ( ));
int online_measurement_points =(int) Math.round (list.stream ( ).
mapToDouble (temp -> temp.getOnlineMeasurementPoints ()).
average ( ).
getAsDouble ( ));
int online_measurement_count =(int) Math.round (list.stream ( ).
mapToDouble (temp -> temp.getOnlineMeasurementCount ()).
average ( ).
getAsDouble ( ));
/*double保留2位小数*/
Double data_integrity_rate =Math.round (list.stream ( ).
mapToDouble (temp -> temp.getDataIntegrityRate ()).
average ( ).
getAsDouble ( )*100)*0.01;
/*看day表is_unusual时候存在1存在返回1数据否异常(0:正常 1:异常)*/
Integer is_unusual =list.stream ().
map (ROperatingIndexMPO::getIsUnusual).
collect (Collectors.toList ())
.contains (1)?1:0;
ROperatingIndexYPO rOperatingIndexYPO = new ROperatingIndexYPO( );
rOperatingIndexYPO.setOrgNo (orgid);
rOperatingIndexYPO.setDataDate (tempDate);
rOperatingIndexYPO.setMeasurementRunPoints (measurement_run_points);
rOperatingIndexYPO.setTransitMeasurementPoints (transit_measurement_points);
rOperatingIndexYPO.setEffectiveAccessMeasurementCount (effective_access_measurement_count);
rOperatingIndexYPO.setOnlineMeasurementPoints (online_measurement_points);
rOperatingIndexYPO.setOnlineMeasurementCount (online_measurement_count);
rOperatingIndexYPO.setDataIntegrityRate (data_integrity_rate);
rOperatingIndexYPO.setIsUnusual (is_unusual);
rOperatingIndexYPOList.add (rOperatingIndexYPO);
});
if(!CollectionUtils.isEmpty (rOperatingIndexYPOList)){
rOperatingIndexYPOService.saveOrUpdateBatchByMultiId (rOperatingIndexYPOList,30);
}
}
}

View File

@@ -0,0 +1,20 @@
package com.njcn.prepare.harmonic.service.mysql.Impl.area;
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
import com.njcn.harmonic.pojo.po.RMpDevEvaluateDetailPO;
import com.njcn.prepare.harmonic.mapper.mysql.area.RMpDevEvaluateDetailPOMapper;
import com.njcn.prepare.harmonic.service.mysql.area.RMpDevEvaluateDetailPOService;
import org.springframework.stereotype.Service;
/**
*
* Description:
* 接口文档访问地址http://serverIP:port/swagger-ui.html
* Date: 2022/12/1 9:18【需求编号】
*
* @author clam
* @version V1.0.0
*/
@Service
public class RMpDevEvaluateDetailPOServiceImpl extends MppServiceImpl<RMpDevEvaluateDetailPOMapper, RMpDevEvaluateDetailPO> implements RMpDevEvaluateDetailPOService{
}

View File

@@ -0,0 +1,105 @@
package com.njcn.prepare.harmonic.service.mysql.Impl.area;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.njcn.harmonic.pojo.po.RMpIntegrityDPO;
import com.njcn.prepare.harmonic.mapper.mysql.area.RMpIntegrityDPOMapper;
import com.njcn.prepare.harmonic.pojo.dto.MonitorDataIntegrityDTO;
import com.njcn.prepare.harmonic.service.mysql.area.RMpIntegrityDPOService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
*
* Description:
* 接口文档访问地址http://serverIP:port/swagger-ui.html
* Date: 2022/11/29 15:38【需求编号】
*
* @author clam
* @version V1.0.0
*/
@Service
public class RMpIntegrityDPOServiceImpl extends ServiceImpl<RMpIntegrityDPOMapper, RMpIntegrityDPO> implements RMpIntegrityDPOService{
private @Autowired
RMpIntegrityDPOMapper rMpIntegrityDPOMapper;
/**
* @Description: 获取监测点的数据完整性(日)
* @Param: 〖数据完整率〗_日统计=(频率+相电压+线电压+畸变率+不平衡度)/(有效值数据个数*5)*100%
* @return: com.njcn.prepare.harmonic.pojo.dto.MonitorDataIntegrityDTO
* @Author: clam
* @Date: 2022/11/28
*/
@Override
public List<MonitorDataIntegrityDTO> calculateDataIntegrity(List<String> indexlist, String dataDate){
List<MonitorDataIntegrityDTO> monitorDataIntegrityDTOList = new ArrayList<> ();
QueryWrapper<RMpIntegrityDPO> wrapper = new QueryWrapper ( );
if(CollectionUtils.isEmpty (indexlist)){
return monitorDataIntegrityDTOList;
}
wrapper.in ("measurement_point_id",indexlist).
eq("DATE_FORMAT( data_date ,'%Y-%m-%d')",dataDate);
List<RMpIntegrityDPO> rMpIntegrityDPOS = rMpIntegrityDPOMapper.selectList (wrapper);
monitorDataIntegrityDTOList = rMpIntegrityDPOS.stream ( ).
map (temp -> {
MonitorDataIntegrityDTO monitorDataIntegrityDTO = new MonitorDataIntegrityDTO();
Integer molecular = temp.getFreqCount ( ) + temp.getPhaseVoltageCount ( ) +
temp.getLineVoltageCount ( ) + temp.getVThdCount ( )
+ temp.getUnbalanceCount ( );
Integer denominator = 5 * temp.getEffectiveMinuteCount ( );
BigDecimal b = new BigDecimal ((float) molecular / denominator);
BigDecimal dataIntegrity = b.setScale (2, BigDecimal.ROUND_HALF_UP);
monitorDataIntegrityDTO.setId (temp.getMeasurementPointId ());
monitorDataIntegrityDTO.setDataIntegrity (dataIntegrity);
return monitorDataIntegrityDTO;
}).collect (Collectors.toList ());
return monitorDataIntegrityDTOList;
}
/**
* @Description: 获取监测点的数据完整性(月平均值)
* @Param: [indexlist, dataDate]
* @return: java.util.List<com.njcn.prepare.harmonic.pojo.dto.MonitorDataIntegrityDTO>
* @Author: clam
* @Date: 2022/12/1
*/
@Override
public List<MonitorDataIntegrityDTO> calculateMouthDataIntegrity(List<String> indexlist, String dataDate) {
List<MonitorDataIntegrityDTO> monitorDataIntegrityDTOList = new ArrayList<> ();
QueryWrapper<RMpIntegrityDPO> wrapper = new QueryWrapper ( );
if(CollectionUtils.isEmpty (indexlist)){
return monitorDataIntegrityDTOList;
}
wrapper.in ("measurement_point_id",indexlist).
eq("DATE_FORMAT( data_date ,'%Y-%m')",dataDate.substring (0, 7));
List<RMpIntegrityDPO> rMpIntegrityDPOS = rMpIntegrityDPOMapper.selectList (wrapper);
monitorDataIntegrityDTOList = rMpIntegrityDPOS.stream ( ).
map (temp -> {
MonitorDataIntegrityDTO monitorDataIntegrityDTO = new MonitorDataIntegrityDTO();
Integer molecular = temp.getFreqCount ( ) + temp.getPhaseVoltageCount ( ) +
temp.getLineVoltageCount ( ) + temp.getVThdCount ( )
+ temp.getUnbalanceCount ( );
Integer denominator = 5 * temp.getEffectiveMinuteCount ( );
BigDecimal b = new BigDecimal ((float) molecular / denominator);
BigDecimal dataIntegrity = b.setScale (2, BigDecimal.ROUND_HALF_UP);
monitorDataIntegrityDTO.setId (temp.getMeasurementPointId ());
monitorDataIntegrityDTO.setDataIntegrity (dataIntegrity);
return monitorDataIntegrityDTO;
}).collect (Collectors.toList ());
return monitorDataIntegrityDTOList;
}
}

View File

@@ -0,0 +1,54 @@
package com.njcn.prepare.harmonic.service.mysql.Impl.area;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
import com.njcn.harmonic.pojo.po.RMpTargetWarnDPO;
import com.njcn.prepare.harmonic.mapper.mysql.area.RMpTargetWarnDMapper;
import com.njcn.prepare.harmonic.service.mysql.area.RMpTargetWarnDService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.List;
/**
* Description:
* 接口文档访问地址http://serverIP:port/swagger-ui.html
* Date: 2022/12/15 11:00【需求编号】
*
* @author clam
* @version V1.0.0
*/
@Service
@DS("master")
public class RMpTargetWarnDServiceImpl extends MppServiceImpl<RMpTargetWarnDMapper, RMpTargetWarnDPO> implements RMpTargetWarnDService {
private @Autowired
RMpTargetWarnDMapper rMpTargetWarnDMapper;
/**
* @param monitorIdList
* @param dataDate
* @Description: 计算出当前机构累计稳态超标监测点数(当月)
* @Param: [monitorIdList, dataDate]
* @return: java.lang.Integer
* @Author: clam
* @Date: 2022/12/15
*/
@Override
public Integer queryHarmonicMeasurementAccrued(List<String> monitorIdList, String dataDate) {
Integer result = 0;
QueryWrapper<RMpTargetWarnDPO> wrapper = new QueryWrapper ( );
if(CollectionUtils.isEmpty (monitorIdList)){
return result;
}
wrapper.select ("distinct measurement_point_id ").
in ("measurement_point_id",monitorIdList).
eq("DATE_FORMAT( data_date ,'%Y-%m')",dataDate.substring (0, 7)).
eq ("is_harmonic",1);
result = rMpTargetWarnDMapper.selectCount (wrapper);
return result;
}
}

View File

@@ -0,0 +1,50 @@
package com.njcn.prepare.harmonic.service.mysql.Impl.area;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
import com.njcn.harmonic.pojo.po.ROperatingIndexDPO;
import com.njcn.prepare.harmonic.mapper.mysql.area.ROperatingIndexDPOMapper;
import com.njcn.prepare.harmonic.service.mysql.area.ROperatingIndexDPOService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
*
* Description:
* 接口文档访问地址http://serverIP:port/swagger-ui.html
* Date: 2022/11/25 10:01【需求编号】
*
* @author clam
* @version V1.0.0
*/
@Service
public class ROperatingIndexDPOServiceImpl extends MppServiceImpl<ROperatingIndexDPOMapper, ROperatingIndexDPO> implements ROperatingIndexDPOService{
private @Autowired
ROperatingIndexDPOMapper rOperatingIndexDPOMapper;
/**
* @param orgid
* @param dataDate
* @Description: 查询day表一个月的数据数据生成月表数据
* @Param: [orgid, dataDate]
* @return: java.util.List<com.njcn.harmonic.pojo.po.ROperatingIndexDPO>
* @Author: clam
* @Date: 2022/11/30
*/
@Override
public List<ROperatingIndexDPO> queryOneMothData(String orgid, String dataDate) {
QueryWrapper<ROperatingIndexDPO> queryWrapper = new QueryWrapper<> ();
queryWrapper.eq ("org_no", orgid).
eq("DATE_FORMAT( data_date ,'%Y-%m')",dataDate.substring (0, 7));
List<ROperatingIndexDPO> list = rOperatingIndexDPOMapper.selectList (queryWrapper);
return list;
}
}

View File

@@ -0,0 +1,69 @@
package com.njcn.prepare.harmonic.service.mysql.Impl.area;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
import com.njcn.harmonic.pojo.po.ROperatingIndexMPO;
import com.njcn.prepare.harmonic.mapper.mysql.area.ROperatingIndexMPOMapper;
import com.njcn.prepare.harmonic.service.mysql.area.ROperatingIndexMPOService;
import com.njcn.prepare.harmonic.utils.PublicUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
*
* Description:
* 接口文档访问地址http://serverIP:port/swagger-ui.html
* Date: 2022/11/30 13:59【需求编号】
*
* @author clam
* @version V1.0.0
*/
@Service
public class ROperatingIndexMPOServiceImpl extends MppServiceImpl<ROperatingIndexMPOMapper, ROperatingIndexMPO> implements ROperatingIndexMPOService{
private @Autowired
ROperatingIndexMPOMapper rOperatingIndexMPOMapper;
/**
* @param orgid
* @param dataDate
* @Description: queryOneQtrData 查询一季度Mouth表数据
* @Param: [orgid, dataDate]
* @return: java.util.List<com.njcn.prepare.harmonic.pojo.mysql.po.ROperatingIndexMPO>
* @Author: clam
* @Date: 2022/11/30
*/
@Override
public List<ROperatingIndexMPO> queryOneQtrData(String orgid, String dataDate) {
QueryWrapper<ROperatingIndexMPO> queryWrapper = new QueryWrapper<> ();
queryWrapper.eq ("org_no", orgid).
eq("QUARTER( data_date)", PublicUtil.getNowQuarter (dataDate));
List<ROperatingIndexMPO> list = rOperatingIndexMPOMapper.selectList (queryWrapper);
return list;
}
/**
* @param orgid
* @param dataDate
* @Description: queryOneYearData 查询一年Mouth表数据
* @Param: [orgid, dataDate]
* @return: java.util.List<com.njcn.prepare.harmonic.pojo.mysql.po.ROperatingIndexMPO>
* @Author: clam
* @Date: 2022/11/30
*/
@Override
public List<ROperatingIndexMPO> queryOneYearData(String orgid, String dataDate) {
QueryWrapper<ROperatingIndexMPO> queryWrapper = new QueryWrapper<> ();
queryWrapper.eq ("org_no", orgid).
eq("YEAR( data_date )",dataDate.substring (0, 4));
List<ROperatingIndexMPO> list = rOperatingIndexMPOMapper.selectList (queryWrapper);
return list;
}
}

View File

@@ -0,0 +1,22 @@
package com.njcn.prepare.harmonic.service.mysql.Impl.area;
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
import com.njcn.harmonic.pojo.po.ROperatingIndexQPO;
import com.njcn.prepare.harmonic.mapper.mysql.area.ROperatingIndexQPOMapper;
import com.njcn.prepare.harmonic.service.mysql.area.ROperatingIndexQPOService;
import org.springframework.stereotype.Service;
/**
*
* Description:
* 接口文档访问地址http://serverIP:port/swagger-ui.html
* Date: 2022/11/30 15:58【需求编号】
*
* @author clam
* @version V1.0.0
*/
@Service
public class ROperatingIndexQPOServiceImpl extends MppServiceImpl<ROperatingIndexQPOMapper, ROperatingIndexQPO> implements ROperatingIndexQPOService{
}

View File

@@ -0,0 +1,20 @@
package com.njcn.prepare.harmonic.service.mysql.Impl.area;
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
import com.njcn.harmonic.pojo.po.ROperatingIndexYPO;
import com.njcn.prepare.harmonic.mapper.mysql.area.ROperatingIndexYPOMapper;
import com.njcn.prepare.harmonic.service.mysql.area.ROperatingIndexYPOService;
import org.springframework.stereotype.Service;
/**
*
* Description:
* 接口文档访问地址http://serverIP:port/swagger-ui.html
* Date: 2022/11/30 15:58【需求编号】
*
* @author clam
* @version V1.0.0
*/
@Service
public class ROperatingIndexYPOServiceImpl extends MppServiceImpl<ROperatingIndexYPOMapper, ROperatingIndexYPO> implements ROperatingIndexYPOService{
}

View File

@@ -0,0 +1,109 @@
package com.njcn.prepare.harmonic.service.mysql.Impl.area;
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
import com.njcn.harmonic.pojo.po.PmsMonitorPO;
import com.njcn.harmonic.pojo.po.ROperatingIndexDPO;
import com.njcn.harmonic.pojo.po.RStatAbnormalDPO;
import com.njcn.prepare.harmonic.mapper.mysql.area.RStatAbnormalDPOMapper;
import com.njcn.prepare.harmonic.pojo.oracle.PqLinedetailPO;
import com.njcn.prepare.harmonic.pojo.param.PrimaryGridParam;
import com.njcn.prepare.harmonic.service.mysql.area.PmsMonitorPOService;
import com.njcn.prepare.harmonic.service.mysql.area.RStatAbnormalDPOService;
import com.njcn.prepare.harmonic.service.oracle.PqLinedetailPOService;
import lombok.SneakyThrows;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
/**
*
* Description:
* 接口文档访问地址http://serverIP:port/swagger-ui.html
* Date: 2022/11/28 19:31【需求编号】
*
* @author clam
* @version V1.0.0
*/
@Service
public class RStatAbnormalDPOServiceImpl extends MppServiceImpl<RStatAbnormalDPOMapper, RStatAbnormalDPO> implements RStatAbnormalDPOService {
private @Autowired
RStatAbnormalDPOMapper rStatAbnormalDPOMapper;
private @Autowired
PmsMonitorPOService pmsMonitorPOService;
private @Autowired
PqLinedetailPOService pqLinedetailPOService;
/**
* @param primaryGridParam
* @Description: rStatAbnormalDDataHanlder
* @Param: [primaryGridParam]
* @return: void
* @Author: clam
* @Date: 2022/11/28
*/
@Override
@Async("asyncExecutor")
public void rStatAbnormalDDataHanlder(PrimaryGridParam primaryGridParam) {
if (Objects.equals (primaryGridParam.getDataSource ( ), 0)) {
this.hanlderOracleData (primaryGridParam);
} else if (Objects.equals (primaryGridParam.getDataSource ( ), 1)) {
this.hanlderInfludxbData (primaryGridParam);
}
}
/**
* @Description: 处理influxdb数据 todo 本次不做处理
* @Param: [primaryGridParam]
* @return: void
* @Author: clam
* @Date: 2022/11/25
*/
private void hanlderInfludxbData(PrimaryGridParam primaryGridParam) {
}
/**
* @Description: 处理Oracle数据目前只有日表数据处理
* @Param: [primaryGridParam]
* @return: void
* @Author: clam
* @Date: 2022/11/25
*/
@SneakyThrows
private void hanlderOracleData(PrimaryGridParam primaryGridParam) {
List<String> orgIdList = primaryGridParam.getOrgIdList ( );
String dataDate = primaryGridParam.getDataDate ( );
List<ROperatingIndexDPO> rOperatingIndexDPOList = new ArrayList<> ( );
final Date tempDate = new SimpleDateFormat ("yyyy-MM-dd ").parse(dataDate);
orgIdList.forEach (orgid -> {
/*measurement_run_points:在运监测点个数*/
/*measurement_run_points:在运监测点个数*/
List<PmsMonitorPO> pmsMonitorPOS = pmsMonitorPOService.qurymeasurementRunPoints (orgid);
/*获取mysql与Oracle监测点id对应关系*/
List<String> mysqlIndexList = pmsMonitorPOS.stream ( ).map (PmsMonitorPO::getId).collect (Collectors.toList ( ));
List<PqLinedetailPO> pqLinedetailPOS = pqLinedetailPOService.queryOracleIndexIdByMysqlIndexId (mysqlIndexList);
List<Integer> oracleIndexlist = pqLinedetailPOS.stream ( ).map (PqLinedetailPO::getLineIndex).collect (Collectors.toList ( ));
});
}
}

View File

@@ -0,0 +1,20 @@
package com.njcn.prepare.harmonic.service.mysql.Impl.area;
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
import com.njcn.harmonic.pojo.po.RStatOrgDPO;
import com.njcn.prepare.harmonic.mapper.mysql.area.RStatOrgDMapper;
import com.njcn.prepare.harmonic.service.mysql.area.RStatOrgDService;
import org.springframework.stereotype.Service;
/**
*
* Description:
* 接口文档访问地址http://serverIP:port/swagger-ui.html
* Date: 2022/12/13 15:39【需求编号】
*
* @author clam
* @version V1.0.0
*/
@Service
public class RStatOrgDServiceImpl extends MppServiceImpl<RStatOrgDMapper, RStatOrgDPO> implements RStatOrgDService{
}

View File

@@ -0,0 +1,20 @@
package com.njcn.prepare.harmonic.service.mysql.Impl.area;
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
import com.njcn.harmonic.pojo.po.RStatOrgMPO;
import com.njcn.prepare.harmonic.mapper.mysql.area.RStatOrgMMapper;
import com.njcn.prepare.harmonic.service.mysql.area.RStatOrgMService;
import org.springframework.stereotype.Service;
/**
*
* Description:
* 接口文档访问地址http://serverIP:port/swagger-ui.html
* Date: 2022/12/14 16:17【需求编号】
*
* @author clam
* @version V1.0.0
*/
@Service
public class RStatOrgMServiceImpl extends MppServiceImpl<RStatOrgMMapper, RStatOrgMPO> implements RStatOrgMService{
}

View File

@@ -0,0 +1,423 @@
package com.njcn.prepare.harmonic.service.mysql.Impl.line;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.njcn.device.pms.api.DistributionMonitorClient;
import com.njcn.device.pms.api.MonitorClient;
import com.njcn.device.pms.pojo.po.DistributionMonitor;
import com.njcn.device.pms.pojo.po.Monitor;
import com.njcn.harmonic.pojo.po.RMpTargetWarnDPO;
import com.njcn.prepare.harmonic.mapper.mysql.area.RMpTargetWarnDMapper;
import com.njcn.prepare.harmonic.mapper.mysql.line.*;
import com.njcn.prepare.harmonic.pojo.param.LineParam;
import com.njcn.prepare.harmonic.service.mysql.line.AlarmDetailService;
import com.njcn.system.api.DicDataFeignClient;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import java.time.LocalDate;
import java.util.List;
import java.util.Objects;
/**
* 数据是否异常
*
* @author qijian
* @version 1.0.0
* @createTime 2022/11/29 - 10:09
*/
@Service
@RequiredArgsConstructor
@Slf4j
public class AlarmDetailServiceImpl implements AlarmDetailService {
private final DistributionMonitorClient distributionMonitorClient;
private final MonitorClient monitorClient;
private final DicDataFeignClient dicDataFeignClient;
private final RMpTargetWarnDMapper rMpTargetWarnDMapper;
private final RMpMeasurePhaseReportDPOMapper rMpMeasurePhaseReportDPOMapper;
private final RMpMeasureReportDPOMapper rMpMeasureReportDPOMapper;
private final RMpHarmonicVRateReportDPOMapper rMpHarmonicVRateReportDPOMapper;
private final RMpEventDetailDMapper rMpEventDetailDMapper;
private final RMpPltReportDPOMapper rMpPltReportDPOMapper;
/**
* 电压偏差告警日统计
* @author qijian
* @date 2022/12/28
* @return
*/
@Override
@Async("asyncExecutor")
public boolean alarmDetailAlarm(LineParam lineParam) {
//初始化
String date = lineParam.getDataDate();
List<String> lineIds = lineParam.getLineIds();
Integer type = lineParam.getType();
//获取监测点数据,进行业务操作
if (CollUtil.isEmpty(lineIds)){
//先获取主网的监测点信息,再获取配网的监测点信息
List<Monitor> monitorList = monitorClient.getMonitorList(lineIds).getData();
for (Monitor monitor : monitorList) {
processVoltageDeviationAlarm(date,type, monitor.getLineId());
processFrequencyDeviationAlarm(date,type, monitor.getLineId());
processUnbalance95Alarm(date,type, monitor.getLineId());
processVoltageHarmonicThd95Alarm(date,type, monitor.getLineId());
processFlashingAlarm(date,type, monitor.getLineId());
processSagTimesAlarm(date,type, monitor.getLineId());
processInterruptTimesAlarm(date,type, monitor.getLineId());
}
List<DistributionMonitor> distributionMonitorList = distributionMonitorClient.distributionMonitorList(lineIds).getData();
for (DistributionMonitor distributionMonitor : distributionMonitorList) {
processVoltageDeviationAlarm(date,type, distributionMonitor.getMonitorId());
processFrequencyDeviationAlarm(date,type, distributionMonitor.getMonitorId());
processUnbalance95Alarm(date,type, distributionMonitor.getMonitorId());
processVoltageHarmonicThd95Alarm(date,type, distributionMonitor.getMonitorId());
processFlashingAlarm(date,type, distributionMonitor.getMonitorId());
processSagTimesAlarm(date,type, distributionMonitor.getMonitorId());
processInterruptTimesAlarm(date,type, distributionMonitor.getMonitorId());
}
} else {
//根据监测点类型取数据
for (String lineId : lineIds) {
processVoltageDeviationAlarm(date,type, lineId);
processFrequencyDeviationAlarm(date,type, lineId);
processUnbalance95Alarm(date,type, lineId);
processVoltageHarmonicThd95Alarm(date,type, lineId);
processFlashingAlarm(date,type, lineId);
processSagTimesAlarm(date,type, lineId);
processInterruptTimesAlarm(date,type, lineId);
}
}
return true;
}
/**
* 处理数据(电压偏差告警日统计)
* @author qijian
* @date 2022/12/28
*/
private void processVoltageDeviationAlarm(String date, Integer type, String lineId) {
//日期条件(取前天、昨天、今天)
LocalDate localDate = LocalDate.parse(date);
LocalDate yesterday = localDate.plusDays(-1);
LocalDate beforeYesterday = yesterday.plusDays(-1);
double localMax = rMpMeasurePhaseReportDPOMapper.getMaxVDeUp(lineId, localDate);
double yesterdayMax = rMpMeasurePhaseReportDPOMapper.getMaxVDeUp(lineId, yesterday);
double beforeYesterdayMax = rMpMeasurePhaseReportDPOMapper.getMaxVDeUp(lineId, beforeYesterday);
//计算RM和CL值
double rm = ((localMax - yesterdayMax) + (yesterdayMax - beforeYesterdayMax)) / 2;
double cl = (localMax + yesterdayMax + beforeYesterdayMax) / 3;
//计算RL和UCL值
double rl = rm * 3.3;
double ucl = cl + rm * 3;
//如果本日最大值>UCL 且 本日最大值>昨日最大值,则告警
if (localMax > ucl && localMax > yesterdayMax){
RMpTargetWarnDPO rMpTargetWarnD = new RMpTargetWarnDPO();
rMpTargetWarnD.setMeasurementPointId(lineId);
rMpTargetWarnD.setDataDate(DateUtil.parse(date));
rMpTargetWarnD.setIsVDevWarn(1);
addAlarmData(rMpTargetWarnD);
return;
}
//如果本日>昨日>前日且前日的值超过RL值则告警
if (localMax > yesterdayMax && yesterdayMax > beforeYesterdayMax && beforeYesterdayMax > rl){
RMpTargetWarnDPO rMpTargetWarnD = new RMpTargetWarnDPO();
rMpTargetWarnD.setMeasurementPointId(lineId);
rMpTargetWarnD.setDataDate(DateUtil.parse(date));
rMpTargetWarnD.setIsVDevWarn(1);
addAlarmData(rMpTargetWarnD);
return;
}
}
/**
* 处理数据(频率偏差告警日统计)
* @author qijian
* @date 2022/12/29
*/
private void processFrequencyDeviationAlarm(String date, Integer type, String lineId) {
//日期条件(取前天、昨天、今天)
LocalDate localDate = LocalDate.parse(date);
LocalDate yesterday = localDate.plusDays(-1);
LocalDate beforeYesterday = yesterday.plusDays(-1);
double localMax = rMpMeasureReportDPOMapper.getMaxFrequencyDeviation(lineId, localDate);
double yesterdayMax = rMpMeasureReportDPOMapper.getMaxFrequencyDeviation(lineId, yesterday);
double beforeYesterdayMax = rMpMeasureReportDPOMapper.getMaxFrequencyDeviation(lineId, beforeYesterday);
//计算RM和CL值
double rm = ((localMax - yesterdayMax) + (yesterdayMax - beforeYesterdayMax)) / 2;
double cl = (localMax + yesterdayMax + beforeYesterdayMax) / 3;
//计算RL和UCL值
double rl = rm * 3.3;
double ucl = cl + rm * 3;
//如果本日最大值>UCL 且 本日最大值>昨日最大值,则告警
if (localMax > ucl && localMax > yesterdayMax){
RMpTargetWarnDPO rMpTargetWarnD = new RMpTargetWarnDPO();
rMpTargetWarnD.setMeasurementPointId(lineId);
rMpTargetWarnD.setDataDate(DateUtil.parse(date));
rMpTargetWarnD.setIsFreqWarn(1);
addAlarmData(rMpTargetWarnD);
return;
}
//如果本日>昨日>前日且前日的值超过RL值则告警
if (localMax > yesterdayMax && yesterdayMax > beforeYesterdayMax && beforeYesterdayMax > rl){
RMpTargetWarnDPO rMpTargetWarnD = new RMpTargetWarnDPO();
rMpTargetWarnD.setMeasurementPointId(lineId);
rMpTargetWarnD.setDataDate(DateUtil.parse(date));
rMpTargetWarnD.setIsFreqWarn(1);
addAlarmData(rMpTargetWarnD);
return;
}
}
/**
* 处理数据(三相电压不平衡告警日统计)
* @author qijian
* @date 2022/12/29
*/
private void processUnbalance95Alarm(String date, Integer type, String lineId) {
//日期条件(取前天、昨天、今天)
LocalDate localDate = LocalDate.parse(date);
LocalDate yesterday = localDate.plusDays(-1);
LocalDate beforeYesterday = yesterday.plusDays(-1);
double localMax = rMpMeasureReportDPOMapper.getMaxUnbalance95(lineId, localDate);
double yesterdayMax = rMpMeasureReportDPOMapper.getMaxUnbalance95(lineId, yesterday);
double beforeYesterdayMax = rMpMeasureReportDPOMapper.getMaxUnbalance95(lineId, beforeYesterday);
//计算RM和CL值
double rm = ((localMax - yesterdayMax) + (yesterdayMax - beforeYesterdayMax)) / 2;
double cl = (localMax + yesterdayMax + beforeYesterdayMax) / 3;
//计算RL和UCL值
double rl = rm * 3.3;
double ucl = cl + rm * 3;
//如果本日最大值>UCL 且 本日最大值>昨日最大值,则告警
if (localMax > ucl && localMax > yesterdayMax){
RMpTargetWarnDPO rMpTargetWarnD = new RMpTargetWarnDPO();
rMpTargetWarnD.setMeasurementPointId(lineId);
rMpTargetWarnD.setDataDate(DateUtil.parse(date));
rMpTargetWarnD.setIsUnbalanceWarn(1);
addAlarmData(rMpTargetWarnD);
return;
}
//如果本日>昨日>前日且前日的值超过RL值则告警
if (localMax > yesterdayMax && yesterdayMax > beforeYesterdayMax && beforeYesterdayMax > rl){
RMpTargetWarnDPO rMpTargetWarnD = new RMpTargetWarnDPO();
rMpTargetWarnD.setMeasurementPointId(lineId);
rMpTargetWarnD.setDataDate(DateUtil.parse(date));
rMpTargetWarnD.setIsUnbalanceWarn(1);
addAlarmData(rMpTargetWarnD);
return;
}
}
/**
* 处理数据(谐波电压告警日统计)
* @author qijian
* @date 2022/12/29
*/
private void processVoltageHarmonicThd95Alarm(String date, Integer type, String lineId) {
//日期条件(取前天、昨天、今天)
LocalDate localDate = LocalDate.parse(date);
LocalDate yesterday = localDate.plusDays(-1);
LocalDate beforeYesterday = yesterday.plusDays(-1);
double localMax = rMpHarmonicVRateReportDPOMapper.getMaxVoltageHarmonicThd95(lineId, localDate);
double yesterdayMax = rMpHarmonicVRateReportDPOMapper.getMaxVoltageHarmonicThd95(lineId, yesterday);
double beforeYesterdayMax = rMpHarmonicVRateReportDPOMapper.getMaxVoltageHarmonicThd95(lineId, beforeYesterday);
//计算RM和CL值
double rm = ((localMax - yesterdayMax) + (yesterdayMax - beforeYesterdayMax)) / 2;
double cl = (localMax + yesterdayMax + beforeYesterdayMax) / 3;
//计算RL和UCL值
double rl = rm * 3.3;
double ucl = cl + rm * 3;
//如果本日最大值>UCL 且 本日最大值>昨日最大值,则告警
if (localMax > ucl && localMax > yesterdayMax){
RMpTargetWarnDPO rMpTargetWarnD = new RMpTargetWarnDPO();
rMpTargetWarnD.setMeasurementPointId(lineId);
rMpTargetWarnD.setDataDate(DateUtil.parse(date));
rMpTargetWarnD.setIsVWarn(1);
addAlarmData(rMpTargetWarnD);
return;
}
//如果本日>昨日>前日且前日的值超过RL值则告警
if (localMax > yesterdayMax && yesterdayMax > beforeYesterdayMax && beforeYesterdayMax > rl){
RMpTargetWarnDPO rMpTargetWarnD = new RMpTargetWarnDPO();
rMpTargetWarnD.setMeasurementPointId(lineId);
rMpTargetWarnD.setDataDate(DateUtil.parse(date));
rMpTargetWarnD.setIsVWarn(1);
addAlarmData(rMpTargetWarnD);
return;
}
}
/**
* 处理数据(长时电压闪变告警日统计)
* @author qijian
* @date 2022/12/30
*/
private void processFlashingAlarm(String date, Integer type, String lineId) {
//日期条件(取前天、昨天、今天)
LocalDate localDate = LocalDate.parse(date);
LocalDate yesterday = localDate.plusDays(-1);
LocalDate beforeYesterday = yesterday.plusDays(-1);
double localMax = rMpPltReportDPOMapper.getMaxFlashing(lineId, localDate);
double yesterdayMax = rMpPltReportDPOMapper.getMaxFlashing(lineId, yesterday);
double beforeYesterdayMax = rMpPltReportDPOMapper.getMaxFlashing(lineId, beforeYesterday);
//计算RM和CL值
double rm = ((localMax - yesterdayMax) + (yesterdayMax - beforeYesterdayMax)) / 2;
double cl = (localMax + yesterdayMax + beforeYesterdayMax) / 3;
//计算RL和UCL值
double rl = rm * 3.3;
double ucl = cl + rm * 3;
//如果本日最大值>UCL 且 本日最大值>昨日最大值,则告警
if (localMax > ucl && localMax > yesterdayMax){
RMpTargetWarnDPO rMpTargetWarnD = new RMpTargetWarnDPO();
rMpTargetWarnD.setMeasurementPointId(lineId);
rMpTargetWarnD.setDataDate(DateUtil.parse(date));
rMpTargetWarnD.setIsFlickerWarn(1);
addAlarmData(rMpTargetWarnD);
return;
}
//如果本日>昨日>前日且前日的值超过RL值则告警
if (localMax > yesterdayMax && yesterdayMax > beforeYesterdayMax && beforeYesterdayMax > rl){
RMpTargetWarnDPO rMpTargetWarnD = new RMpTargetWarnDPO();
rMpTargetWarnD.setMeasurementPointId(lineId);
rMpTargetWarnD.setDataDate(DateUtil.parse(date));
rMpTargetWarnD.setIsFlickerWarn(1);
addAlarmData(rMpTargetWarnD);
return;
}
}
/**
* 处理数据(电压暂降告警日统计)
* @author qijian
* @date 2022/12/29
*/
private void processSagTimesAlarm(String date, Integer type, String lineId) {
//日期条件(取前天、昨天、今天)
LocalDate localDate = LocalDate.parse(date);
LocalDate yesterday = localDate.plusDays(-1);
LocalDate beforeYesterday = yesterday.plusDays(-1);
int localMax = rMpEventDetailDMapper.getSagTimes(lineId, localDate);
int yesterdayMax = rMpEventDetailDMapper.getSagTimes(lineId, yesterday);
int beforeYesterdayMax = rMpEventDetailDMapper.getSagTimes(lineId, beforeYesterday);
//计算RM和CL值
double rm = ((localMax - yesterdayMax) + (yesterdayMax - beforeYesterdayMax)) / 2;
double cl = (localMax + yesterdayMax + beforeYesterdayMax) / 3;
//计算RL和UCL值
double rl = rm * 3.3;
double ucl = cl + rm * 3;
//如果本日最大值>UCL 且 本日最大值>昨日最大值,则告警
if (localMax > ucl && localMax > yesterdayMax){
RMpTargetWarnDPO rMpTargetWarnD = new RMpTargetWarnDPO();
rMpTargetWarnD.setMeasurementPointId(lineId);
rMpTargetWarnD.setDataDate(DateUtil.parse(date));
rMpTargetWarnD.setIsSagWarn(1);
addAlarmData(rMpTargetWarnD);
return;
}
//如果本日>昨日>前日且前日的值超过RL值则告警
if (localMax > yesterdayMax && yesterdayMax > beforeYesterdayMax && beforeYesterdayMax > rl){
RMpTargetWarnDPO rMpTargetWarnD = new RMpTargetWarnDPO();
rMpTargetWarnD.setMeasurementPointId(lineId);
rMpTargetWarnD.setDataDate(DateUtil.parse(date));
rMpTargetWarnD.setIsSagWarn(1);
addAlarmData(rMpTargetWarnD);
return;
}
}
/**
* 处理数据(电压短时中断告警日统计)
* @author qijian
* @date 2022/12/29
*/
private void processInterruptTimesAlarm(String date, Integer type, String lineId) {
//日期条件(取前天、昨天、今天)
LocalDate localDate = LocalDate.parse(date);
LocalDate yesterday = localDate.plusDays(-1);
LocalDate beforeYesterday = yesterday.plusDays(-1);
int localMax = rMpEventDetailDMapper.getInterruptTimes(lineId, localDate);
int yesterdayMax = rMpEventDetailDMapper.getInterruptTimes(lineId, yesterday);
int beforeYesterdayMax = rMpEventDetailDMapper.getInterruptTimes(lineId, beforeYesterday);
//计算RM和CL值
double rm = ((localMax - yesterdayMax) + (yesterdayMax - beforeYesterdayMax)) / 2;
double cl = (localMax + yesterdayMax + beforeYesterdayMax) / 3;
//计算RL和UCL值
double rl = rm * 3.3;
double ucl = cl + rm * 3;
//如果本日最大值>UCL 且 本日最大值>昨日最大值,则告警
if (localMax > ucl && localMax > yesterdayMax){
RMpTargetWarnDPO rMpTargetWarnD = new RMpTargetWarnDPO();
rMpTargetWarnD.setMeasurementPointId(lineId);
rMpTargetWarnD.setDataDate(DateUtil.parse(date));
rMpTargetWarnD.setIsInterruptWarn(1);
addAlarmData(rMpTargetWarnD);
return;
}
//如果本日>昨日>前日且前日的值超过RL值则告警
if (localMax > yesterdayMax && yesterdayMax > beforeYesterdayMax && beforeYesterdayMax > rl){
RMpTargetWarnDPO rMpTargetWarnD = new RMpTargetWarnDPO();
rMpTargetWarnD.setMeasurementPointId(lineId);
rMpTargetWarnD.setDataDate(DateUtil.parse(date));
rMpTargetWarnD.setIsInterruptWarn(1);
addAlarmData(rMpTargetWarnD);
return;
}
}
/**
* 存入数据库
* @author qijian
* @date 2022/12/28
*/
private void addAlarmData(RMpTargetWarnDPO rMpTargetWarnD) {
LambdaQueryWrapper<RMpTargetWarnDPO> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(RMpTargetWarnDPO::getMeasurementPointId, rMpTargetWarnD.getMeasurementPointId()).eq(RMpTargetWarnDPO::getDataDate, rMpTargetWarnD.getDataDate());
RMpTargetWarnDPO rMpTargetWarnDOne = rMpTargetWarnDMapper.selectOne(lambdaQueryWrapper);
if (Objects.nonNull(rMpTargetWarnDOne)) {
rMpTargetWarnDMapper.update(rMpTargetWarnD, lambdaQueryWrapper);
} else {
rMpTargetWarnDMapper.insert(rMpTargetWarnD);
}
}
}

View File

@@ -0,0 +1,398 @@
package com.njcn.prepare.harmonic.service.mysql.Impl.line;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.njcn.device.pms.api.DistributionMonitorClient;
import com.njcn.device.pms.api.MonitorClient;
import com.njcn.device.pms.pojo.po.DistributionMonitor;
import com.njcn.device.pms.pojo.po.Monitor;
import com.njcn.device.pq.constant.Param;
import com.njcn.device.pq.enums.DeviceResponseEnum;
import com.njcn.device.pq.pojo.po.DataV;
import com.njcn.device.pq.pojo.po.PmsAbnormalRules;
import com.njcn.device.pq.pojo.po.RStatAbnormalD;
import com.njcn.prepare.harmonic.constant.AlgorithmParam;
import com.njcn.prepare.harmonic.mapper.mysql.line.PmsAbnormalRulesMapper;
import com.njcn.prepare.harmonic.mapper.mysql.line.RStatAbnormalDMapper;
import com.njcn.prepare.harmonic.pojo.oracle.PqLinedetailPO;
import com.njcn.prepare.harmonic.pojo.param.LineParam;
import com.njcn.prepare.harmonic.pojo.vo.DataVOracleVO;
import com.njcn.prepare.harmonic.service.influxdb.DataExceptionInfluxService;
import com.njcn.prepare.harmonic.service.mysql.line.DataExceptionService;
import com.njcn.prepare.harmonic.service.oracle.DataVOraclePOService;
import com.njcn.prepare.harmonic.service.oracle.PqLinedetailPOService;
import com.njcn.system.api.DicDataFeignClient;
import com.njcn.system.enums.DicDataTypeEnum;
import com.njcn.system.pojo.po.DictData;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List;
import java.util.Objects;
/**
* 数据是否异常
*
* @author qijian
* @version 1.0.0
* @createTime 2022/11/29 - 10:09
*/
@Service
@RequiredArgsConstructor
@Slf4j
public class DataExceptionServiceImpl implements DataExceptionService {
private final PmsAbnormalRulesMapper pmsAbnormalRulesMapper;
private final RStatAbnormalDMapper rStatAbnormalDMapper;
private final DistributionMonitorClient distributionMonitorClient;
private final MonitorClient monitorClient;
private final DicDataFeignClient dicDataFeignClient;
private final DataExceptionInfluxService dataExceptionInfluxService;
private final DataVOraclePOService dataVOraclePOService;
private final PqLinedetailPOService pqLinedetailPOService;
/**
* 监测点数据是否异常(日统计)
* @author qijian
* @date 2022/11/29
* @return
*/
@Override
@Async("asyncExecutor")
public DeviceResponseEnum lineDataException(LineParam lineParam) {
DeviceResponseEnum deviceResponseEnum = null;
if (Objects.equals(lineParam.getDataSource(), AlgorithmParam.ORACLE_DATA)) {
deviceResponseEnum = hanlderOracleData(lineParam);
} else if (Objects.equals(lineParam.getDataSource(), AlgorithmParam.INFLUX_DATA)) {
deviceResponseEnum = hanlderInfluxData (lineParam);
}
return deviceResponseEnum;
}
/**
* 处理数据influx>mysql
* @author qijian
* @date 2022/11/29
*/
private DeviceResponseEnum hanlderInfluxData(LineParam lineParam) {
//初始化
Date date = DateUtil.parse(lineParam.getDataDate());
List<String> lineIds = lineParam.getLineIds();
Integer type = lineParam.getType();
Integer lineType = lineParam.getLineType();
//1、取出规则
List<PmsAbnormalRules> pmsAbnormalRules = pmsAbnormalRulesMapper.selectList(null);
//2、取出电压字典
List<DictData> dictDataList = dicDataFeignClient.getDicDataByTypeName(DicDataTypeEnum.DEV_VOLTAGE.getName()).getData();
//3、获取监测点数据进行入库操作
if (CollUtil.isEmpty(lineIds)){
//先获取主网的监测点信息,再获取配网的监测点信息
List<Monitor> monitorList = monitorClient.getMonitorList(lineIds).getData();
for (Monitor monitor : monitorList) {
Double voltage = getVoltage(monitor.getVoltageLevel(), dictDataList);
DeviceResponseEnum deviceResponseEnum = processInfluxData(monitor.getLineId(), voltage, date, type, pmsAbnormalRules);
if (deviceResponseEnum != null){
return deviceResponseEnum;
}
}
List<DistributionMonitor> distributionMonitorList = distributionMonitorClient.distributionMonitorList(lineIds).getData();
for (DistributionMonitor distributionMonitor : distributionMonitorList) {
Double voltage = getVoltage(distributionMonitor.getVoltageLevel(), dictDataList);
DeviceResponseEnum deviceResponseEnum = processInfluxData(distributionMonitor.getMonitorId(), voltage, date, type, pmsAbnormalRules);
if (deviceResponseEnum != null){
return deviceResponseEnum;
}
}
} else {
//根据监测点类型取数据
if (AlgorithmParam.MAIN_NET.equals(lineType)){
List<Monitor> monitorList = monitorClient.getMonitorList(lineIds).getData();
for (Monitor monitor : monitorList) {
Double voltage = getVoltage(monitor.getVoltageLevel(), dictDataList);
DeviceResponseEnum deviceResponseEnum = processInfluxData(monitor.getLineId(), voltage, date, type, pmsAbnormalRules);
if (deviceResponseEnum != null){
return deviceResponseEnum;
}
}
}else{
List<DistributionMonitor> distributionMonitorList = distributionMonitorClient.distributionMonitorList(lineIds).getData();
for (DistributionMonitor distributionMonitor : distributionMonitorList) {
Double voltage = getVoltage(distributionMonitor.getVoltageLevel(), dictDataList);
DeviceResponseEnum deviceResponseEnum = processInfluxData(distributionMonitor.getMonitorId(), voltage, date, type, pmsAbnormalRules);
if (deviceResponseEnum != null){
return deviceResponseEnum;
}
}
}
}
return null;
}
/**
* 处理数据influx>mysql
* @author qijian
* @date 2022/11/29
* @return
*/
private DeviceResponseEnum processInfluxData(String lineId, Double voltage, Date date, Integer type, List<PmsAbnormalRules> pmsAbnormalRules) {
//取前四项进行比较相别为A
DataV dataV = dataExceptionInfluxService.getFirstFourItems(lineId,date,type);
//查不到数据为null直接返回
if (Objects.isNull(dataV)){
return null;
}
DeviceResponseEnum harmonicResponseEnum = null;
//根据规则表进行判断
for (PmsAbnormalRules pmsAbnormalRule : pmsAbnormalRules) {
//每项数据进行上下限比较MAX和MIN若有一项不在数据范围内则为异常
switch (pmsAbnormalRule.getTarget()) {
case Param.TARGET_FREQ:
//频率:正常比较
if (dataV.getFrepMIN() < pmsAbnormalRule.getLowerLimit() || dataV.getFrepMAX() > pmsAbnormalRule.getUpperLimit()){
harmonicResponseEnum = DeviceResponseEnum.ALGORITHM_FREP_RULE;
}
break;
case Param.TARGET_RMS:
//相电压有效值特殊处理在【0.85p.u.1.2p.u.】之间p.u=电压等级/1.732
pmsAbnormalRule.setLowerLimit((pmsAbnormalRule.getLowerLimit() * (voltage / 1.732)));
pmsAbnormalRule.setUpperLimit((pmsAbnormalRule.getUpperLimit() * (voltage / 1.732)));
if (dataV.getRmsMIN() < pmsAbnormalRule.getLowerLimit() || dataV.getRmsMAX() > pmsAbnormalRule.getUpperLimit()){
harmonicResponseEnum = DeviceResponseEnum.ALGORITHM_RMS_RULE;
}
break;
case Param.TARGET_RMS_LVR:
//线电压有效值特殊处理在【0.85p.u.1.2p.u.】之间p.u=电压等级
pmsAbnormalRule.setLowerLimit((pmsAbnormalRule.getLowerLimit() * voltage));
pmsAbnormalRule.setUpperLimit((pmsAbnormalRule.getUpperLimit() * voltage));
if (dataV.getRmsLvrMIN() < pmsAbnormalRule.getLowerLimit() || dataV.getRmsLvrMAX() > pmsAbnormalRule.getUpperLimit()){
harmonicResponseEnum = DeviceResponseEnum.ALGORITHM_RMS_LVR_RULE;
}
break;
case Param.TARGET_V_THD:
//电压总谐波畸变率:正常比较
if (dataV.getVThdMIN() < pmsAbnormalRule.getLowerLimit() || dataV.getVThdMAX() > pmsAbnormalRule.getUpperLimit()){
harmonicResponseEnum = DeviceResponseEnum.ALGORITHM_V_THD_RULE;
}
break;
case Param.TARGET_V_UNBALANCE:
//三相不平衡度正常比较相别为T
dataV = dataExceptionInfluxService.getUnbalance(lineId,date,type);
//InfluxDB查不到数据为null所以直接返回
if (Objects.isNull(dataV)){
return null;
}
if (dataV.getVUnbalanceMIN() < pmsAbnormalRule.getLowerLimit() || dataV.getVUnbalanceMAX() > pmsAbnormalRule.getUpperLimit()){
harmonicResponseEnum = DeviceResponseEnum.ALGORITHM_V_UNBALANCE_RULE;
}
break;
default:
break;
}
//有异常抛出并入库
if (harmonicResponseEnum != null){
addData(lineId, date);
return harmonicResponseEnum;
}
}
return null;
}
/**
* 处理数据oracle>mysql
* @author qijian
* @date 2022/11/29
* @return
*/
private DeviceResponseEnum hanlderOracleData(LineParam lineParam) {
//初始化
Date date = DateUtil.parse(lineParam.getDataDate());
List<String> lineIds = lineParam.getLineIds();
Integer type = lineParam.getType();
Integer lineType = lineParam.getLineType();
//1、取出规则
List<PmsAbnormalRules> pmsAbnormalRules = pmsAbnormalRulesMapper.selectList(null);
//2、取出电压字典
List<DictData> dictDataList = dicDataFeignClient.getDicDataByTypeName(DicDataTypeEnum.DEV_VOLTAGE.getName()).getData();
//3、获取监测点数据进行入库操作
if (CollUtil.isEmpty(lineIds)){
//先获取主网的监测点信息,再获取配网的监测点信息
List<Monitor> monitorList = monitorClient.getMonitorList(lineIds).getData();
for (Monitor monitor : monitorList) {
//根据电压字典获取电压等级
Double voltage = getVoltage(monitor.getVoltageLevel(),dictDataList);
//根据mysql监测点取oracle监测点信息
PqLinedetailPO pqLinedetailPO = pqLinedetailPOService.getOracleIndexIdByMonitorId(monitor.getLineId());
//处理数据oracle>mysql
DeviceResponseEnum deviceResponseEnum = processOracleData(pqLinedetailPO == null ? 0 : pqLinedetailPO.getLineIndex(), monitor.getLineId(), voltage, date, type, pmsAbnormalRules);
if (deviceResponseEnum != null){
return deviceResponseEnum;
}
}
List<DistributionMonitor> distributionMonitorList = distributionMonitorClient.distributionMonitorList(lineIds).getData();
for (DistributionMonitor distributionMonitor : distributionMonitorList) {
//根据电压字典获取电压等级
Double voltage = getVoltage(distributionMonitor.getVoltageLevel(),dictDataList);
//根据mysql监测点取oracle监测点信息
PqLinedetailPO pqLinedetailPO = pqLinedetailPOService.getOracleIndexIdByMonitorId(distributionMonitor.getMonitorId());
//处理数据oracle>mysql
DeviceResponseEnum deviceResponseEnum = processOracleData(pqLinedetailPO == null ? 0 : pqLinedetailPO.getLineIndex(),distributionMonitor.getMonitorId(), voltage, date, type, pmsAbnormalRules);
if (deviceResponseEnum != null){
return deviceResponseEnum;
}
}
} else {
//根据监测点类型取数据
if (AlgorithmParam.MAIN_NET.equals(lineType)){
List<Monitor> monitorList = monitorClient.getMonitorList(lineIds).getData();
for (Monitor monitor : monitorList) {
//根据电压字典获取电压等级
Double voltage = getVoltage(monitor.getVoltageLevel(),dictDataList);
//根据mysql监测点取oracle监测点信息
PqLinedetailPO pqLinedetailPO = pqLinedetailPOService.getOracleIndexIdByMonitorId(monitor.getLineId());
//处理数据oracle>mysql
DeviceResponseEnum deviceResponseEnum = processOracleData(pqLinedetailPO == null ? 0 : pqLinedetailPO.getLineIndex(),monitor.getLineId(), voltage, date, type, pmsAbnormalRules);
if (deviceResponseEnum != null){
return deviceResponseEnum;
}
}
}else{
List<DistributionMonitor> distributionMonitorList = distributionMonitorClient.distributionMonitorList(lineIds).getData();
for (DistributionMonitor distributionMonitor : distributionMonitorList) {
//根据电压字典获取电压等级
Double voltage = getVoltage(distributionMonitor.getVoltageLevel(),dictDataList);
//根据mysql监测点取oracle监测点信息
PqLinedetailPO pqLinedetailPO = pqLinedetailPOService.getOracleIndexIdByMonitorId(distributionMonitor.getMonitorId());
//处理数据oracle>mysql
DeviceResponseEnum deviceResponseEnum = processOracleData(pqLinedetailPO == null ? 0 : pqLinedetailPO.getLineIndex(),distributionMonitor.getMonitorId(), voltage, date, type, pmsAbnormalRules);
if (deviceResponseEnum != null){
return deviceResponseEnum;
}
}
}
}
return null;
}
/**
* 处理数据oracle>mysql
* @author qijian
* @date 2022/11/29
*/
private DeviceResponseEnum processOracleData(Integer lineId, String monitorId, Double voltage, Date date, Integer type, List<PmsAbnormalRules> pmsAbnormalRules) {
//取五项进行比较
DataVOracleVO dataVOracleVO = dataVOraclePOService.getFiveItemsForDataException(lineId, date, type);
//查不到数据为null直接返回
if (Objects.isNull(dataVOracleVO)){
return null;
}
DeviceResponseEnum harmonicResponseEnum = null;
//根据规则表进行判断
for (PmsAbnormalRules pmsAbnormalRule : pmsAbnormalRules) {
//每项数据进行上下限比较MAX和MIN若有一项不在数据范围内则为异常
switch (pmsAbnormalRule.getTarget()) {
case Param.TARGET_FREQ:
//频率:正常比较
if (dataVOracleVO.getFreqMin() < pmsAbnormalRule.getLowerLimit() || dataVOracleVO.getFreqMax() > pmsAbnormalRule.getUpperLimit()){
harmonicResponseEnum = DeviceResponseEnum.ALGORITHM_FREP_RULE;
}
break;
case Param.TARGET_RMS:
//相电压有效值特殊处理在【0.85p.u.1.2p.u.】之间p.u=电压等级/1.732
pmsAbnormalRule.setLowerLimit((pmsAbnormalRule.getLowerLimit() * (voltage / 1.732)));
pmsAbnormalRule.setUpperLimit((pmsAbnormalRule.getUpperLimit() * (voltage / 1.732)));
if (dataVOracleVO.getRmsMin() < pmsAbnormalRule.getLowerLimit() || dataVOracleVO.getRmsMax() > pmsAbnormalRule.getUpperLimit()){
harmonicResponseEnum = DeviceResponseEnum.ALGORITHM_RMS_RULE;
}
break;
case Param.TARGET_RMS_LVR:
//线电压有效值特殊处理在【0.85p.u.1.2p.u.】之间p.u=电压等级
pmsAbnormalRule.setLowerLimit((pmsAbnormalRule.getLowerLimit() * voltage));
pmsAbnormalRule.setUpperLimit((pmsAbnormalRule.getUpperLimit() * voltage));
if (dataVOracleVO.getRmsLvrMin() < pmsAbnormalRule.getLowerLimit() || dataVOracleVO.getRmsLvrMax() > pmsAbnormalRule.getUpperLimit()){
harmonicResponseEnum = DeviceResponseEnum.ALGORITHM_RMS_LVR_RULE;
}
break;
case Param.TARGET_V_THD:
//电压总谐波畸变率:正常比较
if (dataVOracleVO.getVThdMin() < pmsAbnormalRule.getLowerLimit() || dataVOracleVO.getVThdMax() > pmsAbnormalRule.getUpperLimit()){
harmonicResponseEnum = DeviceResponseEnum.ALGORITHM_V_THD_RULE;
}
break;
case Param.TARGET_V_UNBALANCE:
//三相不平衡度:正常比较
if (dataVOracleVO.getVUnbalanceMin() < pmsAbnormalRule.getLowerLimit() || dataVOracleVO.getVUnbalanceMax() > pmsAbnormalRule.getUpperLimit()){
harmonicResponseEnum = DeviceResponseEnum.ALGORITHM_V_UNBALANCE_RULE;
}
break;
default:
break;
}
//有异常抛出并入库
if (harmonicResponseEnum != null){
addData(monitorId, date);
return harmonicResponseEnum;
}
}
return null;
}
/**
* 有异常抛出并入库
* @author qijian
* @date 2022/11/29
*/
private void addData(String lineId, Date date) {
LambdaQueryWrapper<RStatAbnormalD> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(RStatAbnormalD::getMeasurementPointId, lineId).eq(RStatAbnormalD::getDataDate, date);
RStatAbnormalD rStatAbnormalDOne = rStatAbnormalDMapper.selectOne(lambdaQueryWrapper);
if (Objects.isNull(rStatAbnormalDOne)){
RStatAbnormalD rStatAbnormalD = new RStatAbnormalD();
rStatAbnormalD.setDataDate(date);
rStatAbnormalD.setMeasurementPointId(lineId);
rStatAbnormalD.setValueAlarm(0);
rStatAbnormalDMapper.insert(rStatAbnormalD);
}
}
/**
* 根据电压字典获取电压等级
* @author qijian
* @date 2022/11/29
*/
private Double getVoltage(String id, List<DictData> dictDataList){
for (DictData dictData : dictDataList) {
if (dictData.getId().equals(id)){
Double result = Double.valueOf(dictData.getValue());
return result;
}
}
return null;
}
}

View File

@@ -0,0 +1,227 @@
package com.njcn.prepare.harmonic.service.mysql.Impl.line;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.njcn.device.pms.api.DistributionMonitorClient;
import com.njcn.device.pms.api.MonitorClient;
import com.njcn.device.pms.pojo.po.DistributionMonitor;
import com.njcn.device.pms.pojo.po.Monitor;
import com.njcn.device.pq.pojo.po.DataV;
import com.njcn.device.pq.pojo.po.RMpIntegrityD;
import com.njcn.influxdb.utils.InfluxDbUtils;
import com.njcn.prepare.harmonic.constant.AlgorithmParam;
import com.njcn.prepare.harmonic.mapper.mysql.line.RMpIntegrityDMapper;
import com.njcn.prepare.harmonic.pojo.oracle.PqLinedetailPO;
import com.njcn.prepare.harmonic.pojo.param.LineParam;
import com.njcn.prepare.harmonic.pojo.po.DataFlicker;
import com.njcn.prepare.harmonic.pojo.vo.DataFlickerOracleVO;
import com.njcn.prepare.harmonic.pojo.vo.DataVOracleVO;
import com.njcn.prepare.harmonic.service.influxdb.DataIntegrityRateInfluxService;
import com.njcn.prepare.harmonic.service.mysql.line.DataIntegrityRateService;
import com.njcn.prepare.harmonic.service.oracle.DataFlickerOracleService;
import com.njcn.prepare.harmonic.service.oracle.DataVOraclePOService;
import com.njcn.prepare.harmonic.service.oracle.PqLinedetailPOService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List;
import java.util.Objects;
/**
* 数据完整率算法
*
* @author qijian
* @version 1.0.0
* @createTime 2022/11/29 - 10:09
*/
@Service
@RequiredArgsConstructor
@Slf4j
public class DataIntegrityRateServiceImpl implements DataIntegrityRateService {
private final InfluxDbUtils influxDbUtils;
private final RMpIntegrityDMapper rMpIntegrityDMapper;
private final DistributionMonitorClient distributionMonitorClient;
private final MonitorClient monitorClient;
private final DataIntegrityRateInfluxService dataIntegrityRateInfluxService;
private final PqLinedetailPOService pqLinedetailPOService;
private final DataVOraclePOService dataVOraclePOService;
private final DataFlickerOracleService dataFlickerOracleService;
/**
* 监测点日数据完整率
* @author qijian
* @date 2022/11/29
*/
@Override
@Async("asyncExecutor")
public boolean lineDataIntegrityRate(LineParam lineParam) {
if (Objects.equals(lineParam.getDataSource(), AlgorithmParam.ORACLE_DATA)) {
hanlderOracleData(lineParam);
} else if (Objects.equals(lineParam.getDataSource(), AlgorithmParam.INFLUX_DATA)) {
hanlderInfluxData(lineParam);
}
return true;
}
/**
* 处理数据influxDB>mysql
* @author qijian
* @date 2022/12/01
*/
private void hanlderInfluxData(LineParam lineParam) {
//初始化
Date date = DateUtil.parse(lineParam.getDataDate());
List<String> lineIds = lineParam.getLineIds();
Integer lineType = lineParam.getLineType();
Integer type = lineParam.getType();
//有效接入分钟数量根据监测点编号获取统计间隔151440 / 15 = 有效接入分钟数量
Integer effectiveMinuteCount = 1440 / AlgorithmParam.TIME_INTERVAL;
//获取监测点数据,进行入库操作
if (CollUtil.isEmpty(lineIds)){
//先获取主网的监测点信息,再获取配网的监测点信息
List<Monitor> monitorList = monitorClient.getMonitorList(lineIds).getData();
for (Monitor monitor : monitorList) {
processInfluxData(date,type,effectiveMinuteCount, monitor.getLineId());
}
List<DistributionMonitor> distributionMonitorList = distributionMonitorClient.distributionMonitorList(lineIds).getData();
for (DistributionMonitor distributionMonitor : distributionMonitorList) {
processInfluxData(date,type,effectiveMinuteCount, distributionMonitor.getMonitorId());
}
} else {
//根据监测点类型取数据
for (String lineId : lineIds) {
processInfluxData(date,type,effectiveMinuteCount, lineId);
}
}
}
/**
* 处理数据influxDB>mysql
* @author qijian
* @date 2022/12/01
*/
private void processInfluxData(Date date, Integer type, Integer effectiveMinuteCount, String lineId) {
RMpIntegrityD rMpIntegrityD = new RMpIntegrityD();
rMpIntegrityD.setEffectiveMinuteCount(effectiveMinuteCount);
rMpIntegrityD.setMeasurementPointId(lineId);
rMpIntegrityD.setDataDate(date);
//1、根据data_v表获取五项稳态指标日数量
DataV dataV = dataIntegrityRateInfluxService.getFiveSteadyData(lineId, date,type);
rMpIntegrityD.setFreqCount(dataV == null ? 0 : dataV.getFreqCount());
rMpIntegrityD.setPhaseVoltageCount(dataV == null ? 0 : dataV.getRmsCount());
rMpIntegrityD.setLineVoltageCount(dataV == null ? 0 : dataV.getRmsLvrCount());
rMpIntegrityD.setVThdCount(dataV == null ? 0 : dataV.getVThdCount());
rMpIntegrityD.setUnbalanceCount(dataV == null ? 0 : dataV.getVUnbalanceCount());
//2、根据data_flicker表获取两项闪变指标数量
DataFlicker dataFlicker = dataIntegrityRateInfluxService.getTwoFlickerData(lineId, date,type);
rMpIntegrityD.setPstCount(dataFlicker == null ? 0 : dataFlicker.getPstCount());
rMpIntegrityD.setPltCount(dataFlicker == null ? 0 : dataFlicker.getPltCount());
//3、存库
addData(rMpIntegrityD);
}
/**
* 处理数据oracle>mysql
* @author qijian
* @date 2022/12/01
*/
private void hanlderOracleData(LineParam lineParam) {
//初始化
Date date = DateUtil.parse(lineParam.getDataDate());
List<String> lineIds = lineParam.getLineIds();
Integer lineType = lineParam.getLineType();
Integer type = lineParam.getType();
//有效接入分钟数量根据监测点编号获取统计间隔151440 / 15 = 有效接入分钟数量
Integer effectiveMinuteCount = 1440 / AlgorithmParam.TIME_INTERVAL;
//获取监测点数据,进行入库操作
if (CollUtil.isEmpty(lineIds)){
//先获取主网的监测点信息,再获取配网的监测点信息
List<Monitor> monitorList = monitorClient.getMonitorList(lineIds).getData();
for (Monitor monitor : monitorList) {
//根据mysql监测点取oracle监测点信息
PqLinedetailPO pqLinedetailPO = pqLinedetailPOService.getOracleIndexIdByMonitorId(monitor.getLineId());
//处理数据oracle>mysql
processOracleData(date,type,effectiveMinuteCount, monitor.getLineId(),pqLinedetailPO == null ? 0 : pqLinedetailPO.getLineIndex());
}
List<DistributionMonitor> distributionMonitorList = distributionMonitorClient.distributionMonitorList(lineIds).getData();
for (DistributionMonitor distributionMonitor : distributionMonitorList) {
//根据mysql监测点取oracle监测点信息
PqLinedetailPO pqLinedetailPO = pqLinedetailPOService.getOracleIndexIdByMonitorId(distributionMonitor.getMonitorId());
//处理数据oracle>mysql
processOracleData(date,type,effectiveMinuteCount, distributionMonitor.getMonitorId(),pqLinedetailPO == null ? 0 : pqLinedetailPO.getLineIndex());
}
} else {
//根据监测点类型取数据
for (String lineId : lineIds) {
//根据mysql监测点取oracle监测点信息
PqLinedetailPO pqLinedetailPO = pqLinedetailPOService.getOracleIndexIdByMonitorId(lineId);
//处理数据oracle>mysql
processOracleData(date,type,effectiveMinuteCount, lineId, pqLinedetailPO == null ? 0 : pqLinedetailPO.getLineIndex());
}
}
}
/**
* 处理数据oracle>mysql
* @author qijian
* @date 2022/12/01
*/
private void processOracleData(Date date, Integer type, Integer effectiveMinuteCount, String lineId, Integer lineIndex) {
RMpIntegrityD rMpIntegrityD = new RMpIntegrityD();
rMpIntegrityD.setEffectiveMinuteCount(effectiveMinuteCount);
rMpIntegrityD.setMeasurementPointId(lineId);
rMpIntegrityD.setDataDate(date);
//1、根据data_v表获取五项稳态指标日数量
DataVOracleVO dataVOracleVO = dataVOraclePOService.getFiveCountForDataIntegrityRate(lineIndex, date, type);
rMpIntegrityD.setFreqCount(dataVOracleVO == null ? 0 : dataVOracleVO.getFreqCount());
rMpIntegrityD.setPhaseVoltageCount(dataVOracleVO == null ? 0 : dataVOracleVO.getRmsCount());
rMpIntegrityD.setLineVoltageCount(dataVOracleVO == null ? 0 : dataVOracleVO.getRmsLvrCount());
rMpIntegrityD.setVThdCount(dataVOracleVO == null ? 0 : dataVOracleVO.getVThdCount());
rMpIntegrityD.setUnbalanceCount(dataVOracleVO == null ? 0 : dataVOracleVO.getVUnbalanceCount());
//2、根据data_flicker表获取两项闪变指标数量
DataFlickerOracleVO dataFlickerOracleVO = dataFlickerOracleService.getTwoCountForDataIntegrityRate(lineIndex, date, type);
rMpIntegrityD.setPstCount(dataFlickerOracleVO == null ? 0 : dataFlickerOracleVO.getPstCount());
rMpIntegrityD.setPltCount(dataFlickerOracleVO == null ? 0 : dataFlickerOracleVO.getPltCount());
//3、存库
addData(rMpIntegrityD);
}
/**
* 存入数据库
* @author qijian
* @date 2022/12/01
*/
private void addData(RMpIntegrityD rMpIntegrityD) {
LambdaQueryWrapper<RMpIntegrityD> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(RMpIntegrityD::getMeasurementPointId, rMpIntegrityD.getMeasurementPointId()).eq(RMpIntegrityD::getDataDate, rMpIntegrityD.getDataDate());
RMpIntegrityD rMpIntegrityDOne = rMpIntegrityDMapper.selectOne(lambdaQueryWrapper);
if (Objects.nonNull(rMpIntegrityDOne)) {
rMpIntegrityDMapper.update(rMpIntegrityD, lambdaQueryWrapper);
} else {
rMpIntegrityDMapper.insert(rMpIntegrityD);
}
}
}

View File

@@ -55,6 +55,8 @@ public class DayDataServiceImpl implements DayDataService {
private final RMpInharmonicIMagReportDPOService rMpInharmonicIMagReportDPOService; private final RMpInharmonicIMagReportDPOService rMpInharmonicIMagReportDPOService;
private final RMpInharmonicVRateReportDPOService rMpInharmonicVRateReportDPOService; private final RMpInharmonicVRateReportDPOService rMpInharmonicVRateReportDPOService;
private final RMpHarmonicPReportDPOService rMpHarmonicPReportDPOService; private final RMpHarmonicPReportDPOService rMpHarmonicPReportDPOService;
private final RMpMeasurePhaseReportDPOService rMpMeasurePhaseReportDPOService;
private final RMpMeasureReportDPOService rMpMeasureReportDPOService;
private final InfluxDbUtils influxDbUtils; private final InfluxDbUtils influxDbUtils;
@@ -113,6 +115,7 @@ public class DayDataServiceImpl implements DayDataService {
List<RMpInharmonicVRateReportD> rMpInharmonicVRateReportDPOList = new ArrayList<> (); List<RMpInharmonicVRateReportD> rMpInharmonicVRateReportDPOList = new ArrayList<> ();
List<RMpHarmonicPReportDPO> rMpHarmonicPReportDPOList = new ArrayList<> (); List<RMpHarmonicPReportDPO> rMpHarmonicPReportDPOList = new ArrayList<> ();
List<RMpMeasurePhaseReportD> rMpMeasurePhaseReportDPOArrayList = new ArrayList<> (); List<RMpMeasurePhaseReportD> rMpMeasurePhaseReportDPOArrayList = new ArrayList<> ();
List<RMpMeasureReportD> rMpMeasureReportDPOArrayList = new ArrayList<> ();
@@ -221,18 +224,18 @@ public class DayDataServiceImpl implements DayDataService {
// if(!CollectionUtils.isEmpty (dataV)&&!CollectionUtils.isEmpty (dataHarmRateVPO)){ // if(!CollectionUtils.isEmpty (dataV)&&!CollectionUtils.isEmpty (dataHarmRateVPO)){
// /*转成mysql对应po*/ // /*转成mysql对应po*/
// /*dataVPO.getPhaseType ()="A"数据*/ // /*dataVPO.getPhaseType ()="A"数据*/
// RMpHarmonicVRateReportDPO rMpHarmonicVRateReportDPOA = packageRMpHarmonicVRateReportDPO (dataV, dataHarmRateVPO,"A"); // RMpHarmonicVRateReportD rMpHarmonicVRateReportDPOA = packageRMpHarmonicVRateReportDPO (dataV, dataHarmRateVPO,"A",instant);
// Optional.ofNullable (rMpHarmonicVRateReportDPOA).ifPresent (temp ->rMpHarmonicVRateReportDPOList.add (temp)); // Optional.ofNullable (rMpHarmonicVRateReportDPOA).ifPresent (temp ->rMpHarmonicVRateReportDPOList.add (temp));
// /*dataVPO.getPhaseType ()="B"数据*/ // /*dataVPO.getPhaseType ()="B"数据*/
// RMpHarmonicVRateReportDPO rMpHarmonicVRateReportDPOB = packageRMpHarmonicVRateReportDPO (dataV, dataHarmRateVPO,"B"); // RMpHarmonicVRateReportD rMpHarmonicVRateReportDPOB = packageRMpHarmonicVRateReportDPO (dataV, dataHarmRateVPO,"B",instant);
// Optional.ofNullable (rMpHarmonicVRateReportDPOB).ifPresent (temp ->rMpHarmonicVRateReportDPOList.add (temp)); // Optional.ofNullable (rMpHarmonicVRateReportDPOB).ifPresent (temp ->rMpHarmonicVRateReportDPOList.add (temp));
// //
// /*dataVPO.getPhaseType ()="C"数据*/ // /*dataVPO.getPhaseType ()="C"数据*/
// RMpHarmonicVRateReportDPO rMpHarmonicVRateReportDPOC = packageRMpHarmonicVRateReportDPO (dataV, dataHarmRateVPO, "C"); // RMpHarmonicVRateReportD rMpHarmonicVRateReportDPOC = packageRMpHarmonicVRateReportDPO (dataV, dataHarmRateVPO, "C",instant);
// Optional.ofNullable (rMpHarmonicVRateReportDPOC).ifPresent (temp ->rMpHarmonicVRateReportDPOList.add (temp)); // Optional.ofNullable (rMpHarmonicVRateReportDPOC).ifPresent (temp ->rMpHarmonicVRateReportDPOList.add (temp));
// //
// /*dataVPO.getPhaseType ()="T"数据*/ // /*dataVPO.getPhaseType ()="T"数据*/
// RMpHarmonicVRateReportDPO rMpHarmonicVRateReportDPOT = packageRMpHarmonicVRateReportDPO (dataV, dataHarmRateVPO,"T"); // RMpHarmonicVRateReportD rMpHarmonicVRateReportDPOT = packageRMpHarmonicVRateReportDPO (dataV, dataHarmRateVPO,"T",instant);
// Optional.ofNullable (rMpHarmonicVRateReportDPOT).ifPresent (temp ->rMpHarmonicVRateReportDPOList.add (temp)); // Optional.ofNullable (rMpHarmonicVRateReportDPOT).ifPresent (temp ->rMpHarmonicVRateReportDPOList.add (temp));
// //
// //
@@ -242,16 +245,16 @@ public class DayDataServiceImpl implements DayDataService {
// //
// /*转成mysql对应po*/ // /*转成mysql对应po*/
// /*dataI.getPhaseType ()="A"数据*/ // /*dataI.getPhaseType ()="A"数据*/
// RMpHarmonicIMagReportDPO a = packageRMpHarmonicIMagReportDPO (dataI, "A"); // RMpHarmonicIMagReportD a = packageRMpHarmonicIMagReportDPO (dataI, "A",instant);
// Optional.ofNullable (a).ifPresent (temp ->rMpHarmonicIMagReportDPOList.add (temp)); // Optional.ofNullable (a).ifPresent (temp ->rMpHarmonicIMagReportDPOList.add (temp));
// /*dataI.getPhaseType ()="B"数据*/ // /*dataI.getPhaseType ()="B"数据*/
// RMpHarmonicIMagReportDPO b = packageRMpHarmonicIMagReportDPO(dataI,"B"); // RMpHarmonicIMagReportD b = packageRMpHarmonicIMagReportDPO(dataI,"B",instant);
// Optional.ofNullable (b).ifPresent (temp ->rMpHarmonicIMagReportDPOList.add (temp)); // Optional.ofNullable (b).ifPresent (temp ->rMpHarmonicIMagReportDPOList.add (temp));
// /*dataI.getPhaseType ()="C"数据*/ // /*dataI.getPhaseType ()="C"数据*/
// RMpHarmonicIMagReportDPO c = packageRMpHarmonicIMagReportDPO(dataI,"C"); // RMpHarmonicIMagReportD c = packageRMpHarmonicIMagReportDPO(dataI,"C",instant);
// Optional.ofNullable (c).ifPresent (temp ->rMpHarmonicIMagReportDPOList.add (temp)); // Optional.ofNullable (c).ifPresent (temp ->rMpHarmonicIMagReportDPOList.add (temp));
// /*dataI.getPhaseType ()="T"数据*/ // /*dataI.getPhaseType ()="T"数据*/
// RMpHarmonicIMagReportDPO t = packageRMpHarmonicIMagReportDPO(dataI,"T"); // RMpHarmonicIMagReportD t = packageRMpHarmonicIMagReportDPO(dataI,"T",instant);
// Optional.ofNullable (t).ifPresent (temp ->rMpHarmonicIMagReportDPOList.add (temp)); // Optional.ofNullable (t).ifPresent (temp ->rMpHarmonicIMagReportDPOList.add (temp));
// //
// //
@@ -260,17 +263,17 @@ public class DayDataServiceImpl implements DayDataService {
// if(!CollectionUtils.isEmpty (dataFlickerPO)){ // if(!CollectionUtils.isEmpty (dataFlickerPO)){
// /*生成dayFlicker表*/ // /*生成dayFlicker表*/
// /*dataFlickerPO.getPhaseType ()="A"数据*/ // /*dataFlickerPO.getPhaseType ()="A"数据*/
// RMpFlickerReportDPO a = packageRMpFlickerReportDPOPO (dataFlickerPO, "A"); // RMpFlickerReportDPO a = packageRMpFlickerReportDPOPO (dataFlickerPO, "A",instant);
// Optional.ofNullable (a).ifPresent (temp ->rMpFlickerReportDPOList.add (temp)); // Optional.ofNullable (a).ifPresent (temp ->rMpFlickerReportDPOList.add (temp));
// //
// /*dataFlickerPO.getPhaseType ()="B"数据*/ // /*dataFlickerPO.getPhaseType ()="B"数据*/
// RMpFlickerReportDPO b = packageRMpFlickerReportDPOPO(dataFlickerPO,"B"); // RMpFlickerReportDPO b = packageRMpFlickerReportDPOPO(dataFlickerPO,"B",instant);
// Optional.ofNullable (b).ifPresent (temp ->rMpFlickerReportDPOList.add (temp)); // Optional.ofNullable (b).ifPresent (temp ->rMpFlickerReportDPOList.add (temp));
// //
// /*dataFlickerPO.getPhaseType ()="C"数据*/ // /*dataFlickerPO.getPhaseType ()="C"数据*/
// RMpFlickerReportDPO c = packageRMpFlickerReportDPOPO(dataFlickerPO,"C"); // RMpFlickerReportDPO c = packageRMpFlickerReportDPOPO(dataFlickerPO,"C",instant);
// Optional.ofNullable (c).ifPresent (temp ->rMpFlickerReportDPOList.add (temp)); // Optional.ofNullable (c).ifPresent (temp ->rMpFlickerReportDPOList.add (temp));
// // /*无T项数据*/
//// /*dataFlickerPO.getPhaseType ()="T"数据*/ //// /*dataFlickerPO.getPhaseType ()="T"数据*/
//// RMpFlickerReportDPO t = packageRMpFlickerReportDPOPO(dataFlickerPO,"T"); //// RMpFlickerReportDPO t = packageRMpFlickerReportDPOPO(dataFlickerPO,"T");
// //
@@ -279,13 +282,13 @@ public class DayDataServiceImpl implements DayDataService {
// if(!CollectionUtils.isEmpty (dataPlt)){ // if(!CollectionUtils.isEmpty (dataPlt)){
// /*转成mysql对应po*/ // /*转成mysql对应po*/
// /*DataPltPO.getPhaseType ()="A"数据*/ // /*DataPltPO.getPhaseType ()="A"数据*/
// RMpPltReportDPO a = packageRMpPltReportDPO (dataPlt, "A"); // RMpPltReportDPO a = packageRMpPltReportDPO (dataPlt, "A",instant);
// Optional.ofNullable (a).ifPresent (temp ->rMpPltReportDPOList.add (temp)); // Optional.ofNullable (a).ifPresent (temp ->rMpPltReportDPOList.add (temp));
// /*DataPltPO.getPhaseType ()="B"数据*/ // /*DataPltPO.getPhaseType ()="B"数据*/
// RMpPltReportDPO b = packageRMpPltReportDPO(dataPlt,"B"); // RMpPltReportDPO b = packageRMpPltReportDPO(dataPlt,"B",instant);
// Optional.ofNullable (b).ifPresent (temp ->rMpPltReportDPOList.add (temp)); // Optional.ofNullable (b).ifPresent (temp ->rMpPltReportDPOList.add (temp));
// /*DataPltPO.getPhaseType ()="C"数据*/ // /*DataPltPO.getPhaseType ()="C"数据*/
// RMpPltReportDPO c = packageRMpPltReportDPO(dataPlt,"C"); // RMpPltReportDPO c = packageRMpPltReportDPO(dataPlt,"C",instant);
// Optional.ofNullable (c).ifPresent (temp ->rMpPltReportDPOList.add (temp)); // Optional.ofNullable (c).ifPresent (temp ->rMpPltReportDPOList.add (temp));
//// /*DataPltPO.getPhaseType ()="T"数据*/ //// /*DataPltPO.getPhaseType ()="T"数据*/
//// RMpPltReportDPO t = packageRMpPltReportDPO(dataPlt,"T"); //// RMpPltReportDPO t = packageRMpPltReportDPO(dataPlt,"T");
@@ -293,38 +296,38 @@ public class DayDataServiceImpl implements DayDataService {
// if(!CollectionUtils.isEmpty (dataHarmRateI)) { // if(!CollectionUtils.isEmpty (dataHarmRateI)) {
// /*转成mysql对应po*/ // /*转成mysql对应po*/
// /*DataHarmRateIPO.getPhaseType ()="A"数据*/ // /*DataHarmRateIPO.getPhaseType ()="A"数据*/
// RMpHarmonicIRateReportDPO a = packageRMpHarmonicIRateReportDPO (dataHarmRateI, "A"); // RMpHarmonicIRateReportD a = packageRMpHarmonicIRateReportDPO (dataHarmRateI, "A",instant);
// Optional.ofNullable (a).ifPresent (temp -> rMpHarmonicIRateReportDPOList.add (temp)); // Optional.ofNullable (a).ifPresent (temp -> rMpHarmonicIRateReportDPOList.add (temp));
// //
// /*DataHarmRateIPO.getPhaseType ()="B"数据*/ // /*DataHarmRateIPO.getPhaseType ()="B"数据*/
// RMpHarmonicIRateReportDPO b = packageRMpHarmonicIRateReportDPO (dataHarmRateI, "B"); // RMpHarmonicIRateReportD b = packageRMpHarmonicIRateReportDPO (dataHarmRateI, "B",instant);
// Optional.ofNullable (b).ifPresent (temp -> rMpHarmonicIRateReportDPOList.add (temp)); // Optional.ofNullable (b).ifPresent (temp -> rMpHarmonicIRateReportDPOList.add (temp));
// //
// /*DataHarmRateIPO.getPhaseType ()="C"数据*/ // /*DataHarmRateIPO.getPhaseType ()="C"数据*/
// RMpHarmonicIRateReportDPO c = packageRMpHarmonicIRateReportDPO (dataHarmRateI, "C"); // RMpHarmonicIRateReportD c = packageRMpHarmonicIRateReportDPO (dataHarmRateI, "C",instant);
// Optional.ofNullable (c).ifPresent (temp -> rMpHarmonicIRateReportDPOList.add (temp)); // Optional.ofNullable (c).ifPresent (temp -> rMpHarmonicIRateReportDPOList.add (temp));
// //
// /*DataInHarmRateIPO.getPhaseType ()="T"数据*/ // /*DataInHarmRateIPO.getPhaseType ()="T"数据*/
// RMpHarmonicIRateReportDPO t = packageRMpHarmonicIRateReportDPO (dataHarmRateI, "T"); // RMpHarmonicIRateReportD t = packageRMpHarmonicIRateReportDPO (dataHarmRateI, "T",instant);
// Optional.ofNullable (t).ifPresent (temp -> rMpHarmonicIRateReportDPOList.add (temp)); // Optional.ofNullable (t).ifPresent (temp -> rMpHarmonicIRateReportDPOList.add (temp));
// } // }
// //
// if(!CollectionUtils.isEmpty (dataInHarmRateIPO)){ // if(!CollectionUtils.isEmpty (dataInHarmRateIPO)){
// /*转成mysql对应po*/ // /*转成mysql对应po*/
// /*DataInHarmRateIPO.getPhaseType ()="A"数据*/ // /*DataInHarmRateIPO.getPhaseType ()="A"数据*/
// RMpInharmonicIRateReportDPO a = packageRMpInharmonicIRateReportDPO(dataInHarmRateIPO, "A"); // RMpInharmonicIRateReportD a = packageRMpInharmonicIRateReportDPO(dataInHarmRateIPO, "A",instant);
// Optional.ofNullable (a).ifPresent (temp ->rMpInharmonicIRateReportDPOList.add (temp)); // Optional.ofNullable (a).ifPresent (temp ->rMpInharmonicIRateReportDPOList.add (temp));
// //
// /*DataInHarmRateIPO.getPhaseType ()="B"数据*/ // /*DataInHarmRateIPO.getPhaseType ()="B"数据*/
// RMpInharmonicIRateReportDPO b = packageRMpInharmonicIRateReportDPO(dataInHarmRateIPO,"B"); // RMpInharmonicIRateReportD b = packageRMpInharmonicIRateReportDPO(dataInHarmRateIPO,"B",instant);
// Optional.ofNullable (b).ifPresent (temp ->rMpInharmonicIRateReportDPOList.add (temp)); // Optional.ofNullable (b).ifPresent (temp ->rMpInharmonicIRateReportDPOList.add (temp));
// //
// /*DataInHarmRateIPO.getPhaseType ()="C"数据*/ // /*DataInHarmRateIPO.getPhaseType ()="C"数据*/
// RMpInharmonicIRateReportDPO c = packageRMpInharmonicIRateReportDPO(dataInHarmRateIPO,"C"); // RMpInharmonicIRateReportD c = packageRMpInharmonicIRateReportDPO(dataInHarmRateIPO,"C",instant);
// Optional.ofNullable (c).ifPresent (temp ->rMpInharmonicIRateReportDPOList.add (temp)); // Optional.ofNullable (c).ifPresent (temp ->rMpInharmonicIRateReportDPOList.add (temp));
// //
// /*DataInHarmRateIPO.getPhaseType ()="T"数据*/ // /*DataInHarmRateIPO.getPhaseType ()="T"数据*/
// RMpInharmonicIRateReportDPO t = packageRMpInharmonicIRateReportDPO(dataInHarmRateIPO,"T"); // RMpInharmonicIRateReportD t = packageRMpInharmonicIRateReportDPO(dataInHarmRateIPO,"T",instant);
// Optional.ofNullable (t).ifPresent (temp ->rMpInharmonicIRateReportDPOList.add (temp)); // Optional.ofNullable (t).ifPresent (temp ->rMpInharmonicIRateReportDPOList.add (temp));
// //
// //
@@ -333,32 +336,32 @@ public class DayDataServiceImpl implements DayDataService {
// if(!CollectionUtils.isEmpty (dataInHarmIPO)){ // if(!CollectionUtils.isEmpty (dataInHarmIPO)){
// /*转成mysql对应po*/ // /*转成mysql对应po*/
// /*dataInHarmIPO.getPhaseType ()="A"数据*/ // /*dataInHarmIPO.getPhaseType ()="A"数据*/
// RMpInharmonicIMagReportDPO a = packageRMpInharmonicIMagReportDPO(dataInHarmIPO, "A"); // RMpInharmonicIMagReportDPO a = packageRMpInharmonicIMagReportDPO(dataInHarmIPO, "A",instant);
// Optional.ofNullable (a).ifPresent (temp ->rMpInharmonicIMagReportDPOList.add (temp)); // Optional.ofNullable (a).ifPresent (temp ->rMpInharmonicIMagReportDPOList.add (temp));
// /*dataInHarmIPO.getPhaseType ()="B"数据*/ // /*dataInHarmIPO.getPhaseType ()="B"数据*/
// RMpInharmonicIMagReportDPO b = packageRMpInharmonicIMagReportDPO(dataInHarmIPO,"B"); // RMpInharmonicIMagReportDPO b = packageRMpInharmonicIMagReportDPO(dataInHarmIPO,"B",instant);
// Optional.ofNullable (b).ifPresent (temp ->rMpInharmonicIMagReportDPOList.add (temp)); // Optional.ofNullable (b).ifPresent (temp ->rMpInharmonicIMagReportDPOList.add (temp));
// /*dataInHarmIPO.getPhaseType ()="C"数据*/ // /*dataInHarmIPO.getPhaseType ()="C"数据*/
// RMpInharmonicIMagReportDPO c = packageRMpInharmonicIMagReportDPO(dataInHarmIPO,"C"); // RMpInharmonicIMagReportDPO c = packageRMpInharmonicIMagReportDPO(dataInHarmIPO,"C",instant);
// Optional.ofNullable (c).ifPresent (temp ->rMpInharmonicIMagReportDPOList.add (temp)); // Optional.ofNullable (c).ifPresent (temp ->rMpInharmonicIMagReportDPOList.add (temp));
// /*dataInHarmIPO.getPhaseType ()="T"数据*/ // /*dataInHarmIPO.getPhaseType ()="T"数据*/
// RMpInharmonicIMagReportDPO t = packageRMpInharmonicIMagReportDPO(dataInHarmIPO,"T"); // RMpInharmonicIMagReportDPO t = packageRMpInharmonicIMagReportDPO(dataInHarmIPO,"T",instant);
// Optional.ofNullable (t).ifPresent (temp ->rMpInharmonicIMagReportDPOList.add (temp)); // Optional.ofNullable (t).ifPresent (temp ->rMpInharmonicIMagReportDPOList.add (temp));
// //
// } // }
// if(!CollectionUtils.isEmpty (dataInHarmRateVPO)){ // if(!CollectionUtils.isEmpty (dataInHarmRateVPO)){
// /*转成mysql对应po*/ // /*转成mysql对应po*/
// /*dataInHarmRateVPO.getPhaseType ()="A"数据*/ // /*dataInHarmRateVPO.getPhaseType ()="A"数据*/
// RMpInharmonicVRateReportDPO a = packageRMpInharmonicVRateReportDPO(dataInHarmRateVPO, "A"); // RMpInharmonicVRateReportD a = packageRMpInharmonicVRateReportDPO(dataInHarmRateVPO, "A",instant);
// Optional.ofNullable (a).ifPresent (temp ->rMpInharmonicVRateReportDPOList.add (temp)); // Optional.ofNullable (a).ifPresent (temp ->rMpInharmonicVRateReportDPOList.add (temp));
// /*dataInHarmRateVPO.getPhaseType ()="B"数据*/ // /*dataInHarmRateVPO.getPhaseType ()="B"数据*/
// RMpInharmonicVRateReportDPO b = packageRMpInharmonicVRateReportDPO(dataInHarmRateVPO,"B"); // RMpInharmonicVRateReportD b = packageRMpInharmonicVRateReportDPO(dataInHarmRateVPO,"B",instant);
// Optional.ofNullable (b).ifPresent (temp ->rMpInharmonicVRateReportDPOList.add (temp)); // Optional.ofNullable (b).ifPresent (temp ->rMpInharmonicVRateReportDPOList.add (temp));
// /*dataInHarmRateVPO.getPhaseType ()="C"数据*/ // /*dataInHarmRateVPO.getPhaseType ()="C"数据*/
// RMpInharmonicVRateReportDPO c = packageRMpInharmonicVRateReportDPO(dataInHarmRateVPO,"C"); // RMpInharmonicVRateReportD c = packageRMpInharmonicVRateReportDPO(dataInHarmRateVPO,"C",instant);
// Optional.ofNullable (c).ifPresent (temp ->rMpInharmonicVRateReportDPOList.add (temp)); // Optional.ofNullable (c).ifPresent (temp ->rMpInharmonicVRateReportDPOList.add (temp));
// /*dataInHarmRateVPO.getPhaseType ()="T"数据*/ // /*dataInHarmRateVPO.getPhaseType ()="T"数据*/
// RMpInharmonicVRateReportDPO t = packageRMpInharmonicVRateReportDPO(dataInHarmRateVPO,"T"); // RMpInharmonicVRateReportD t = packageRMpInharmonicVRateReportDPO(dataInHarmRateVPO,"T",instant);
// Optional.ofNullable (t).ifPresent (temp ->rMpInharmonicVRateReportDPOList.add (temp)); // Optional.ofNullable (t).ifPresent (temp ->rMpInharmonicVRateReportDPOList.add (temp));
// //
// } // }
@@ -366,20 +369,20 @@ public class DayDataServiceImpl implements DayDataService {
// if(!CollectionUtils.isEmpty (dataHarmPowerPPO)&&!CollectionUtils.isEmpty (dataHarmPowerQPO)){ // if(!CollectionUtils.isEmpty (dataHarmPowerPPO)&&!CollectionUtils.isEmpty (dataHarmPowerQPO)){
// /*转成mysql对应po*/ // /*转成mysql对应po*/
// /*dataInHarmRateVPO.getPhaseType ()="A"数据*/ // /*dataInHarmRateVPO.getPhaseType ()="A"数据*/
// RMpHarmonicPReportDPO a = packageRMpHarmonicPReportDPO(dataHarmPowerPPO,dataHarmPowerQPO, "A"); // RMpHarmonicPReportDPO a = packageRMpHarmonicPReportDPO(dataHarmPowerPPO,dataHarmPowerQPO, "A",instant);
// Optional.ofNullable (a).ifPresent (temp ->rMpHarmonicPReportDPOList.add (temp)); // Optional.ofNullable (a).ifPresent (temp ->rMpHarmonicPReportDPOList.add (temp));
// /*dataInHarmRateVPO.getPhaseType ()="B"数据*/ // /*dataInHarmRateVPO.getPhaseType ()="B"数据*/
// RMpHarmonicPReportDPO b = packageRMpHarmonicPReportDPO(dataHarmPowerPPO,dataHarmPowerQPO,"B"); // RMpHarmonicPReportDPO b = packageRMpHarmonicPReportDPO(dataHarmPowerPPO,dataHarmPowerQPO,"B",instant);
// Optional.ofNullable (b).ifPresent (temp ->rMpHarmonicPReportDPOList.add (temp)); // Optional.ofNullable (b).ifPresent (temp ->rMpHarmonicPReportDPOList.add (temp));
// /*dataInHarmRateVPO.getPhaseType ()="C"数据*/ // /*dataInHarmRateVPO.getPhaseType ()="C"数据*/
// RMpHarmonicPReportDPO c = packageRMpHarmonicPReportDPO(dataHarmPowerPPO,dataHarmPowerQPO,"C"); // RMpHarmonicPReportDPO c = packageRMpHarmonicPReportDPO(dataHarmPowerPPO,dataHarmPowerQPO,"C",instant);
// Optional.ofNullable (c).ifPresent (temp ->rMpHarmonicPReportDPOList.add (temp)); // Optional.ofNullable (c).ifPresent (temp ->rMpHarmonicPReportDPOList.add (temp));
// /*dataInHarmRateVPO.getPhaseType ()="T"数据*/ // /*dataInHarmRateVPO.getPhaseType ()="T"数据*/
// RMpHarmonicPReportDPO t = packageRMpHarmonicPReportDPO(dataHarmPowerPPO,dataHarmPowerQPO,"T"); // RMpHarmonicPReportDPO t = packageRMpHarmonicPReportDPO(dataHarmPowerPPO,dataHarmPowerQPO,"T",instant);
// Optional.ofNullable (t).ifPresent (temp ->rMpHarmonicPReportDPOList.add (temp)); // Optional.ofNullable (t).ifPresent (temp ->rMpHarmonicPReportDPOList.add (temp));
// //
// } // }
//
// //
// if (!CollectionUtils.isEmpty (dataV) && // if (!CollectionUtils.isEmpty (dataV) &&
// !CollectionUtils.isEmpty (dataI) && // !CollectionUtils.isEmpty (dataI) &&
@@ -388,26 +391,37 @@ public class DayDataServiceImpl implements DayDataService {
// !CollectionUtils.isEmpty (dataHarmPowerQPO)) { // !CollectionUtils.isEmpty (dataHarmPowerQPO)) {
// /*转成mysql对应po*/ // /*转成mysql对应po*/
// /*dataInHarmRateVPO.getPhaseType ()="A"数据*/ // /*dataInHarmRateVPO.getPhaseType ()="A"数据*/
// RMpMeasurePhaseReportDPO a = packageRMpMeasurePhaseReportDPO(dataV,dataI,dataHarmPowerPPO,dataHarmPowers,dataHarmPowerQPO,"A"); // RMpMeasurePhaseReportD a = packageRMpMeasurePhaseReportDPO(dataV,dataI,dataHarmPowerPPO,dataHarmPowers,dataHarmPowerQPO,"A",instant);
// Optional.ofNullable (a).ifPresent (temp ->rMpMeasurePhaseReportDPOArrayList.add (temp)); // Optional.ofNullable (a).ifPresent (temp ->rMpMeasurePhaseReportDPOArrayList.add (temp));
// /*dataInHarmRateVPO.getPhaseType ()="B"数据*/ // /*dataInHarmRateVPO.getPhaseType ()="B"数据*/
// RMpMeasurePhaseReportDPO b = packageRMpMeasurePhaseReportDPO(dataV,dataI,dataHarmPowerPPO,dataHarmPowers,dataHarmPowerQPO,"B"); // RMpMeasurePhaseReportD b = packageRMpMeasurePhaseReportDPO(dataV,dataI,dataHarmPowerPPO,dataHarmPowers,dataHarmPowerQPO,"B",instant);
// Optional.ofNullable (b).ifPresent (temp ->rMpMeasurePhaseReportDPOArrayList.add (temp)); // Optional.ofNullable (b).ifPresent (temp ->rMpMeasurePhaseReportDPOArrayList.add (temp));
// /*dataInHarmRateVPO.getPhaseType ()="C"数据*/ // /*dataInHarmRateVPO.getPhaseType ()="C"数据*/
// RMpMeasurePhaseReportDPO c = packageRMpMeasurePhaseReportDPO(dataV,dataI,dataHarmPowerPPO,dataHarmPowers,dataHarmPowerQPO,"C"); // RMpMeasurePhaseReportD c = packageRMpMeasurePhaseReportDPO(dataV,dataI,dataHarmPowerPPO,dataHarmPowers,dataHarmPowerQPO,"C",instant);
// Optional.ofNullable (c).ifPresent (temp ->rMpMeasurePhaseReportDPOArrayList.add (temp)); // Optional.ofNullable (c).ifPresent (temp ->rMpMeasurePhaseReportDPOArrayList.add (temp));
// /*dataInHarmRateVPO.getPhaseType ()="T"数据*/ // /*dataInHarmRateVPO.getPhaseType ()="T"数据*/
// RMpMeasurePhaseReportDPO t = packageRMpMeasurePhaseReportDPO(dataV,dataI,dataHarmPowerPPO,dataHarmPowers,dataHarmPowerQPO,"T"); // RMpMeasurePhaseReportD t = packageRMpMeasurePhaseReportDPO(dataV,dataI,dataHarmPowerPPO,dataHarmPowers,dataHarmPowerQPO,"T",instant);
// Optional.ofNullable (t).ifPresent (temp ->rMpMeasurePhaseReportDPOArrayList.add (temp)); // Optional.ofNullable (t).ifPresent (temp ->rMpMeasurePhaseReportDPOArrayList.add (temp));
// //
// } // }
/* todo // /* todo
* r_mp_measure_phase_report_d // * r_mp_measure_report_d
* r_mp_measure_report_d // * */
* */ // if (!CollectionUtils.isEmpty (dataV) &&
// !CollectionUtils.isEmpty (dataI) &&
// !CollectionUtils.isEmpty (dataHarmPowerPPO) &&
// !CollectionUtils.isEmpty (dataHarmPowers) &&
// !CollectionUtils.isEmpty (dataHarmPowerQPO)) {
// /*转成mysql对应po*/
// /*稳态监测点非谐波不带相位指标即是T项指标*/
// RMpMeasureReportD t = packageRMpMeasureReportDPO(dataV,dataI,dataHarmPowerPPO,dataHarmPowers,dataHarmPowerQPO,"T",instant);
// Optional.ofNullable (t).ifPresent (temp ->rMpMeasureReportDPOArrayList.add (temp));
//
// }
} }
/*插入mysql*/ /*插入mysql*/
// if (!CollectionUtils.isEmpty(rMpHarmonicVRateReportDPOList)){ // if (!CollectionUtils.isEmpty(rMpHarmonicVRateReportDPOList)){
// rMpHarmonicVRateReportDPOService.saveOrUpdateBatchByMultiId (rMpHarmonicVRateReportDPOList, 50); // rMpHarmonicVRateReportDPOService.saveOrUpdateBatchByMultiId (rMpHarmonicVRateReportDPOList, 50);
@@ -441,8 +455,11 @@ public class DayDataServiceImpl implements DayDataService {
// rMpInharmonicVRateReportDPOService.saveOrUpdateBatchByMultiId (rMpInharmonicVRateReportDPOList, 50); // rMpInharmonicVRateReportDPOService.saveOrUpdateBatchByMultiId (rMpInharmonicVRateReportDPOList, 50);
// } // }
// //
// if (!CollectionUtils.isEmpty(rMpHarmonicPReportDPOList)){ // if (!CollectionUtils.isEmpty(rMpMeasurePhaseReportDPOArrayList)){
// rMpHarmonicPReportDPOService.saveOrUpdateBatchByMultiId (rMpHarmonicPReportDPOList, 50); // rMpMeasurePhaseReportDPOService.saveOrUpdateBatchByMultiId (rMpMeasurePhaseReportDPOArrayList, 50);
// }
// if (!CollectionUtils.isEmpty(rMpMeasureReportDPOArrayList)){
// rMpMeasureReportDPOService.saveOrUpdateBatchByMultiId (rMpMeasureReportDPOArrayList, 50);
// } // }
@@ -2828,7 +2845,7 @@ public class DayDataServiceImpl implements DayDataService {
* @Author: clam * @Author: clam
* @Date: 2022/10/25 * @Date: 2022/10/25
*/ */
private RMpHarmonicVRateReportD packageRMpHarmonicVRateReportDPO(List<DataVPO> dataV, List<DataHarmRateVPO> dataHarmRateVPOList, String PhaseType){ private RMpHarmonicVRateReportD packageRMpHarmonicVRateReportDPO(List<DataVPO> dataV,List<DataHarmRateVPO> dataHarmRateVPOList,String PhaseType,Instant instant){
RMpHarmonicVRateReportD result = null; RMpHarmonicVRateReportD result = null;
@@ -2843,7 +2860,7 @@ public class DayDataServiceImpl implements DayDataService {
result = new RMpHarmonicVRateReportD(); result = new RMpHarmonicVRateReportD();
result.setPhase (PhaseType); result.setPhase (PhaseType);
result.setMeasurementPointId (dataV.get (0).getLineId ()); result.setMeasurementPointId (dataV.get (0).getLineId ());
result.setDataDate (Date.from (dataV.get (0).getTime ())); result.setDataDate (Date.from (instant));
for (int i = 0; i <a.size () ; i++) { for (int i = 0; i <a.size () ; i++) {
DataVPO dataVPO = a.get (i); DataVPO dataVPO = a.get (i);
@@ -2898,7 +2915,7 @@ public class DayDataServiceImpl implements DayDataService {
* @Author: clam * @Author: clam
* @Date: 2022/10/25 * @Date: 2022/10/25
*/ */
private RMpHarmonicIMagReportD packageRMpHarmonicIMagReportDPO(List<DataIPO> dataI, String PhaseType){ private RMpHarmonicIMagReportD packageRMpHarmonicIMagReportDPO(List<DataIPO> dataI, String PhaseType,Instant instant){
RMpHarmonicIMagReportD result = null; RMpHarmonicIMagReportD result = null;
@@ -2911,7 +2928,7 @@ public class DayDataServiceImpl implements DayDataService {
result = new RMpHarmonicIMagReportD(); result = new RMpHarmonicIMagReportD();
result.setPhase (PhaseType); result.setPhase (PhaseType);
result.setMeasurementPointId (dataI.get (0).getLineId ()); result.setMeasurementPointId (dataI.get (0).getLineId ());
result.setDataDate (Date.from (dataI.get (0).getTime ())); result.setDataDate (Date.from (instant));
} }
for (int j = 0; j < a.size (); j++) { for (int j = 0; j < a.size (); j++) {
DataIPO dataIPO = a.get (j); DataIPO dataIPO = a.get (j);
@@ -2943,7 +2960,7 @@ public class DayDataServiceImpl implements DayDataService {
* @Author: clam * @Author: clam
* @Date: 2022/10/26 * @Date: 2022/10/26
*/ */
private RMpFlickerReportDPO packageRMpFlickerReportDPOPO(List<DataFlickerPO> dataFlickerPO, String PhaseType) { private RMpFlickerReportDPO packageRMpFlickerReportDPOPO(List<DataFlickerPO> dataFlickerPO, String PhaseType,Instant instant) {
RMpFlickerReportDPO result = null; RMpFlickerReportDPO result = null;
@@ -2956,7 +2973,7 @@ public class DayDataServiceImpl implements DayDataService {
result = new RMpFlickerReportDPO(); result = new RMpFlickerReportDPO();
result.setPhase (PhaseType); result.setPhase (PhaseType);
result.setMeasurementPointId (dataFlickerPO.get (0).getLineId ()); result.setMeasurementPointId (dataFlickerPO.get (0).getLineId ());
result.setDataDate (Date.from (dataFlickerPO.get (0).getTime ())); result.setDataDate (Date.from (instant));
} }
for (int j = 0; j < a.size (); j++) { for (int j = 0; j < a.size (); j++) {
@@ -2989,7 +3006,7 @@ public class DayDataServiceImpl implements DayDataService {
* @Author: clam * @Author: clam
* @Date: 2022/10/26 * @Date: 2022/10/26
*/ */
private RMpPltReportDPO packageRMpPltReportDPO(List<DataPltPO> dataPlt, String PhaseType) { private RMpPltReportDPO packageRMpPltReportDPO(List<DataPltPO> dataPlt, String PhaseType,Instant instant) {
RMpPltReportDPO result = null; RMpPltReportDPO result = null;
@@ -3002,7 +3019,7 @@ public class DayDataServiceImpl implements DayDataService {
result = new RMpPltReportDPO(); result = new RMpPltReportDPO();
result.setPhase (PhaseType); result.setPhase (PhaseType);
result.setMeasurementPointId (dataPlt.get (0).getLineId ()); result.setMeasurementPointId (dataPlt.get (0).getLineId ());
result.setDataDate (Date.from (dataPlt.get (0).getTime ())); result.setDataDate (Date.from (instant));
} }
for (int j = 0; j < a.size (); j++) { for (int j = 0; j < a.size (); j++) {
@@ -3034,7 +3051,7 @@ public class DayDataServiceImpl implements DayDataService {
* @Author: clam * @Author: clam
* @Date: 2022/10/26 * @Date: 2022/10/26
*/ */
private RMpHarmonicIRateReportD packageRMpHarmonicIRateReportDPO(List<DataHarmRateIPO> dataHarmRateIPOList, String PhaseType) { private RMpHarmonicIRateReportD packageRMpHarmonicIRateReportDPO(List<DataHarmRateIPO> dataHarmRateIPOList, String PhaseType,Instant instant) {
RMpHarmonicIRateReportD result =null; RMpHarmonicIRateReportD result =null;
@@ -3047,7 +3064,7 @@ public class DayDataServiceImpl implements DayDataService {
result = new RMpHarmonicIRateReportD(); result = new RMpHarmonicIRateReportD();
result.setPhase (PhaseType); result.setPhase (PhaseType);
result.setMeasurementPointId (dataHarmRateIPOList.get (0).getLineId ()); result.setMeasurementPointId (dataHarmRateIPOList.get (0).getLineId ());
result.setDataDate (Date.from (dataHarmRateIPOList.get (0).getTime ())); result.setDataDate (Date.from (instant));
} }
for (int j = 0; j < a.size (); j++) { for (int j = 0; j < a.size (); j++) {
@@ -3080,7 +3097,7 @@ public class DayDataServiceImpl implements DayDataService {
* @Author: clam * @Author: clam
* @Date: 2022/10/26 * @Date: 2022/10/26
*/ */
private RMpInharmonicIRateReportD packageRMpInharmonicIRateReportDPO(List<DataInHarmRateIPO> dataInHarmRateIPO, String PhaseType) { private RMpInharmonicIRateReportD packageRMpInharmonicIRateReportDPO(List<DataInHarmRateIPO> dataInHarmRateIPO, String PhaseType,Instant instant) {
RMpInharmonicIRateReportD result = null; RMpInharmonicIRateReportD result = null;
List<DataInHarmRateIPO> a = dataInHarmRateIPO.stream ( ). List<DataInHarmRateIPO> a = dataInHarmRateIPO.stream ( ).
@@ -3092,9 +3109,8 @@ public class DayDataServiceImpl implements DayDataService {
result = new RMpInharmonicIRateReportD(); result = new RMpInharmonicIRateReportD();
result.setPhase (PhaseType); result.setPhase (PhaseType);
result.setMeasurementPointId (dataInHarmRateIPO.get (0).getLineId ()); result.setMeasurementPointId (dataInHarmRateIPO.get (0).getLineId ());
result.setDataDate (Date.from (dataInHarmRateIPO.get (0).getTime ())); result.setDataDate (Date.from (instant));
} }
for (int j = 0; j < a.size ( ); j++) { for (int j = 0; j < a.size ( ); j++) {
DataInHarmRateIPO temp = a.get (j); DataInHarmRateIPO temp = a.get (j);
if (Objects.equals (temp.getValueType ( ), "MIN")) { if (Objects.equals (temp.getValueType ( ), "MIN")) {
@@ -3119,6 +3135,7 @@ public class DayDataServiceImpl implements DayDataService {
return result; return result;
} }
/** /**
* @Description: packageRMpInharmonicIMagReportDPO * @Description: packageRMpInharmonicIMagReportDPO
* @Param: [dataInHarmIPO, PhaseType] * @Param: [dataInHarmIPO, PhaseType]
@@ -3126,7 +3143,7 @@ public class DayDataServiceImpl implements DayDataService {
* @Author: clam * @Author: clam
* @Date: 2022/10/27 * @Date: 2022/10/27
*/ */
private RMpInharmonicIMagReportDPO packageRMpInharmonicIMagReportDPO(List<DataInHarmIPO> dataInHarmIPO, String PhaseType) { private RMpInharmonicIMagReportDPO packageRMpInharmonicIMagReportDPO(List<DataInHarmIPO> dataInHarmIPO, String PhaseType,Instant instant) {
RMpInharmonicIMagReportDPO result = null; RMpInharmonicIMagReportDPO result = null;
@@ -3139,9 +3156,8 @@ public class DayDataServiceImpl implements DayDataService {
result = new RMpInharmonicIMagReportDPO ( ); result = new RMpInharmonicIMagReportDPO ( );
result.setPhase (PhaseType); result.setPhase (PhaseType);
result.setMeasurementPointId (dataInHarmIPO.get (0).getLineId ( )); result.setMeasurementPointId (dataInHarmIPO.get (0).getLineId ( ));
result.setDataDate (Date.from (dataInHarmIPO.get (0).getTime ())); result.setDataDate (Date.from (instant));
} }
for (int j = 0; j < a.size (); j++) { for (int j = 0; j < a.size (); j++) {
DataInHarmIPO temp = a.get (j); DataInHarmIPO temp = a.get (j);
if(Objects.equals (temp.getValueType (), "MIN")){ if(Objects.equals (temp.getValueType (), "MIN")){
@@ -3174,7 +3190,7 @@ public class DayDataServiceImpl implements DayDataService {
* @Author: clam * @Author: clam
* @Date: 2022/10/27 * @Date: 2022/10/27
*/ */
private RMpInharmonicVRateReportD packageRMpInharmonicVRateReportDPO(List<DataInHarmRateVPO> dataInHarmRateVPO, String PhaseType) { private RMpInharmonicVRateReportD packageRMpInharmonicVRateReportDPO(List<DataInHarmRateVPO> dataInHarmRateVPO, String PhaseType,Instant instant) {
RMpInharmonicVRateReportD result = null ; RMpInharmonicVRateReportD result = null ;
@@ -3187,7 +3203,7 @@ public class DayDataServiceImpl implements DayDataService {
result = new RMpInharmonicVRateReportD(); result = new RMpInharmonicVRateReportD();
result.setPhase (PhaseType); result.setPhase (PhaseType);
result.setMeasurementPointId (dataInHarmRateVPO.get (0).getLineId ()); result.setMeasurementPointId (dataInHarmRateVPO.get (0).getLineId ());
result.setDataDate (Date.from (dataInHarmRateVPO.get (0).getTime ())); result.setDataDate (Date.from (instant));
} }
for (int j = 0; j < a.size (); j++) { for (int j = 0; j < a.size (); j++) {
@@ -3221,7 +3237,7 @@ public class DayDataServiceImpl implements DayDataService {
* @Author: clam * @Author: clam
* @Date: 2022/10/28 * @Date: 2022/10/28
*/ */
private RMpHarmonicPReportDPO packageRMpHarmonicPReportDPO(List<DataHarmPowerPPO> dataHarmPowerPPO, List<DataHarmPowerQPO> dataHarmPowerQPO, String PhaseType) { private RMpHarmonicPReportDPO packageRMpHarmonicPReportDPO(List<DataHarmPowerPPO> dataHarmPowerPPO, List<DataHarmPowerQPO> dataHarmPowerQPO, String PhaseType,Instant instant) {
RMpHarmonicPReportDPO result = null ; RMpHarmonicPReportDPO result = null ;
@@ -3238,7 +3254,7 @@ public class DayDataServiceImpl implements DayDataService {
result = new RMpHarmonicPReportDPO(); result = new RMpHarmonicPReportDPO();
result.setPhase (PhaseType); result.setPhase (PhaseType);
result.setMeasurementPointId (dataHarmPowerPPO.get (0).getLineId ()); result.setMeasurementPointId (dataHarmPowerPPO.get (0).getLineId ());
result.setDataDate (Date.from (dataHarmPowerPPO.get (0).getTime ())); result.setDataDate (Date.from (instant));
} }
for (int j = 0; j < b.size (); j++) { for (int j = 0; j < b.size (); j++) {
@@ -3287,7 +3303,7 @@ public class DayDataServiceImpl implements DayDataService {
private RMpMeasurePhaseReportD packageRMpMeasurePhaseReportDPO(List<DataVPO> dataV, List<DataIPO> dataI, List<DataHarmPowerPPO> dataHarmPowerPPO, List<DataHarmPowerSPO> dataHarmPowers, List<DataHarmPowerQPO> dataHarmPowerQPO, String PhaseType) { private RMpMeasurePhaseReportD packageRMpMeasurePhaseReportDPO(List<DataVPO> dataV, List<DataIPO> dataI, List<DataHarmPowerPPO> dataHarmPowerPPO, List<DataHarmPowerSPO> dataHarmPowers, List<DataHarmPowerQPO> dataHarmPowerQPO, String PhaseType,Instant instant) {
RMpMeasurePhaseReportD result = null ; RMpMeasurePhaseReportD result = null ;
List<DataVPO> a = dataV.stream ( ). List<DataVPO> a = dataV.stream ( ).
@@ -3315,70 +3331,254 @@ public class DayDataServiceImpl implements DayDataService {
result = new RMpMeasurePhaseReportD(); result = new RMpMeasurePhaseReportD();
result.setPhase (PhaseType); result.setPhase (PhaseType);
result.setMeasurementPointId (dataHarmPowerPPO.get (0).getLineId ()); result.setMeasurementPointId (dataHarmPowerPPO.get (0).getLineId ());
result.setDataDate (Date.from (dataHarmPowerPPO.get (0).getTime ())); result.setDataDate (Date.from (instant));
} }
//todo 非空判断 //todo 非空判断
/*max*/ /*max*/
DataVPO max = a.stream ( ).filter (temp -> Objects.equals (temp.getValueType ( ), "Max")). List<DataVPO> maxList = a.stream ( ).filter (temp -> Objects.equals (temp.getValueType ( ), "MAX")).
collect (Collectors.toList ( )).get (0); collect (Collectors.toList ( ));
DataIPO max1 = b.stream ( ).filter (temp -> Objects.equals (temp.getValueType ( ), "Max")). List<DataIPO> max1List = b.stream ( ).filter (temp -> Objects.equals (temp.getValueType ( ), "MAX")).
collect (Collectors.toList ( )).get (0); collect (Collectors.toList ( ));
DataHarmPowerPPO max2 = c.stream ( ).filter (temp -> Objects.equals (temp.getValueType ( ), "Max")). List<DataHarmPowerPPO> max2List = c.stream ( ).filter (temp -> Objects.equals (temp.getValueType ( ), "MAX")).
collect (Collectors.toList ( )).get (0); collect (Collectors.toList ( ));
DataHarmPowerSPO max3 = d.stream ( ).filter (temp -> Objects.equals (temp.getValueType ( ), "Max")). List<DataHarmPowerSPO> max3List = d.stream ( ).filter (temp -> Objects.equals (temp.getValueType ( ), "MAX")).
collect (Collectors.toList ( )).get (0); collect (Collectors.toList ( ));
DataHarmPowerQPO max4 = e.stream ( ).filter (temp -> Objects.equals (temp.getValueType ( ), "Max")). List<DataHarmPowerQPO> max4List = e.stream ( ).filter (temp -> Objects.equals (temp.getValueType ( ), "MAX")).
collect (Collectors.toList ( )).get (0); collect (Collectors.toList ( ));
if(!CollectionUtils.isEmpty (maxList)
&&!CollectionUtils.isEmpty (max1List)
&&!CollectionUtils.isEmpty (max2List)
&&!CollectionUtils.isEmpty (max3List)
&&!CollectionUtils.isEmpty (max4List)){
DataVPO max = maxList.get (0);
DataIPO max1 = max1List.get (0);
DataHarmPowerPPO max2 = max2List.get (0);
DataHarmPowerSPO max3 = max3List.get (0);
DataHarmPowerQPO max4 = max4List.get (0);
covertBean = InfluxdbPOConverter.INFLUXDB_PO_CONVERTER.RMpMeasurePhaseReportDPOConverterMax (max,max1,max2,max3,max4); covertBean = InfluxdbPOConverter.INFLUXDB_PO_CONVERTER.RMpMeasurePhaseReportDPOConverterMax (max,max1,max2,max3,max4);
BeanUtils.copyProperties (covertBean, result,getNullPropertyNames(covertBean)); BeanUtils.copyProperties (covertBean, result,getNullPropertyNames(covertBean));
}
/*min*/ /*min*/
DataVPO min = a.stream ( ).filter (temp -> Objects.equals (temp.getValueType ( ), "Min")). List<DataVPO> minList = a.stream ( ).filter (temp -> Objects.equals (temp.getValueType ( ), "MIN")).
collect (Collectors.toList ( )).get (0); collect (Collectors.toList ( ));
DataIPO min1 = b.stream ( ).filter (temp -> Objects.equals (temp.getValueType ( ), "Min")). List<DataIPO> min1List = b.stream ( ).filter (temp -> Objects.equals (temp.getValueType ( ), "MIN")).
collect (Collectors.toList ( )).get (0); collect (Collectors.toList ( ));
DataHarmPowerPPO min2 = c.stream ( ).filter (temp -> Objects.equals (temp.getValueType ( ), "Min")). List<DataHarmPowerPPO> min2List = c.stream ( ).filter (temp -> Objects.equals (temp.getValueType ( ), "MIN")).
collect (Collectors.toList ( )).get (0); collect (Collectors.toList ( ));
DataHarmPowerSPO min3 = d.stream ( ).filter (temp -> Objects.equals (temp.getValueType ( ), "Min")). List<DataHarmPowerSPO> min3List = d.stream ( ).filter (temp -> Objects.equals (temp.getValueType ( ), "MIN")).
collect (Collectors.toList ( )).get (0); collect (Collectors.toList ( ));
DataHarmPowerQPO min4 = e.stream ( ).filter (temp -> Objects.equals (temp.getValueType ( ), "Min")). List<DataHarmPowerQPO> min4List = e.stream ( ).filter (temp -> Objects.equals (temp.getValueType ( ), "MIN")).
collect (Collectors.toList ( )).get (0); collect (Collectors.toList ( ));
if(!CollectionUtils.isEmpty (minList)
&&!CollectionUtils.isEmpty (min1List)
&&!CollectionUtils.isEmpty (min2List)
&&!CollectionUtils.isEmpty (min3List)
&&!CollectionUtils.isEmpty (min4List)){
DataVPO min = minList.get (0);
DataIPO min1 = min1List.get (0);
DataHarmPowerPPO min2 = min2List.get (0);
DataHarmPowerSPO min3 = min3List.get (0);
DataHarmPowerQPO min4 = min4List.get (0);
covertBean = InfluxdbPOConverter.INFLUXDB_PO_CONVERTER.RMpMeasurePhaseReportDPOConverterMin (min,min1,min2,min3,min4); covertBean = InfluxdbPOConverter.INFLUXDB_PO_CONVERTER.RMpMeasurePhaseReportDPOConverterMin (min,min1,min2,min3,min4);
BeanUtils.copyProperties (covertBean, result,getNullPropertyNames(covertBean)); BeanUtils.copyProperties (covertBean, result,getNullPropertyNames(covertBean));
}
/*avg*/ /*avg*/
DataVPO avg = a.stream ( ).filter (temp -> Objects.equals (temp.getValueType ( ), "Avg")). List<DataVPO> avgList = a.stream ( ).filter (temp -> Objects.equals (temp.getValueType ( ), "AVG")).
collect (Collectors.toList ( )).get (0); collect (Collectors.toList ( ));
DataIPO avg1 = b.stream ( ).filter (temp -> Objects.equals (temp.getValueType ( ), "Avg")). List<DataIPO> avg1List = b.stream ( ).filter (temp -> Objects.equals (temp.getValueType ( ), "AVG")).
collect (Collectors.toList ( )).get (0); collect (Collectors.toList ( ));
DataHarmPowerPPO avg2 = c.stream ( ).filter (temp -> Objects.equals (temp.getValueType ( ), "Avg")). List<DataHarmPowerPPO> avg2List = c.stream ( ).filter (temp -> Objects.equals (temp.getValueType ( ), "AVG")).
collect (Collectors.toList ( )).get (0); collect (Collectors.toList ( ));
DataHarmPowerSPO avg3 = d.stream ( ).filter (temp -> Objects.equals (temp.getValueType ( ), "Avg")). List<DataHarmPowerSPO> avg3List = d.stream ( ).filter (temp -> Objects.equals (temp.getValueType ( ), "AVG")).
collect (Collectors.toList ( )).get (0); collect (Collectors.toList ( ));
DataHarmPowerQPO avg4 = e.stream ( ).filter (temp -> Objects.equals (temp.getValueType ( ), "Avg")). List<DataHarmPowerQPO> avg4List = e.stream ( ).filter (temp -> Objects.equals (temp.getValueType ( ), "AVG")).
collect (Collectors.toList ( )).get (0); collect (Collectors.toList ( ));
if(!CollectionUtils.isEmpty (avgList)
&&!CollectionUtils.isEmpty (avg1List)
&&!CollectionUtils.isEmpty (avg2List)
&&!CollectionUtils.isEmpty (avg3List)
&&!CollectionUtils.isEmpty (avg4List)){
DataVPO avg = avgList.get (0);
DataIPO avg1 = avg1List.get (0);
DataHarmPowerPPO avg2 = avg2List.get (0);
DataHarmPowerSPO avg3 = avg3List.get (0);
DataHarmPowerQPO avg4 = avg4List.get (0);
covertBean = InfluxdbPOConverter.INFLUXDB_PO_CONVERTER.RMpMeasurePhaseReportDPOConverterAVg (avg,avg1,avg2,avg3,avg4); covertBean = InfluxdbPOConverter.INFLUXDB_PO_CONVERTER.RMpMeasurePhaseReportDPOConverterAVg (avg,avg1,avg2,avg3,avg4);
BeanUtils.copyProperties (covertBean, result,getNullPropertyNames(covertBean)); BeanUtils.copyProperties (covertBean, result,getNullPropertyNames(covertBean));
}
/*cp95*/ /*cp95*/
DataVPO cp95 = a.stream ( ).filter (temp -> Objects.equals (temp.getValueType ( ), "CP95")). List<DataVPO> cp95List = a.stream ( ).filter (temp -> Objects.equals (temp.getValueType ( ), "CP95")).
collect (Collectors.toList ( )).get (0); collect (Collectors.toList ( ));
DataIPO cp951 = b.stream ( ).filter (temp -> Objects.equals (temp.getValueType ( ), "CP95")). List<DataIPO> cp951List = b.stream ( ).filter (temp -> Objects.equals (temp.getValueType ( ), "CP95")).
collect (Collectors.toList ( )).get (0); collect (Collectors.toList ( ));
DataHarmPowerPPO cp952 = c.stream ( ).filter (temp -> Objects.equals (temp.getValueType ( ), "CP95")). List<DataHarmPowerPPO> cp952List = c.stream ( ).filter (temp -> Objects.equals (temp.getValueType ( ), "CP95")).
collect (Collectors.toList ( )).get (0); collect (Collectors.toList ( ));
DataHarmPowerSPO cp953 = d.stream ( ).filter (temp -> Objects.equals (temp.getValueType ( ), "CP95")). List<DataHarmPowerSPO> cp953List = d.stream ( ).filter (temp -> Objects.equals (temp.getValueType ( ), "CP95")).
collect (Collectors.toList ( )).get (0); collect (Collectors.toList ( ));
DataHarmPowerQPO cp954 = e.stream ( ).filter (temp -> Objects.equals (temp.getValueType ( ), "CP95")). List<DataHarmPowerQPO> cp954List = e.stream ( ).filter (temp -> Objects.equals (temp.getValueType ( ), "CP95")).
collect (Collectors.toList ( )).get (0); collect (Collectors.toList ( ));
if(!CollectionUtils.isEmpty (cp95List)
&&!CollectionUtils.isEmpty (cp951List)
&&!CollectionUtils.isEmpty (cp952List)
&&!CollectionUtils.isEmpty (cp953List)
&&!CollectionUtils.isEmpty (cp954List)){
DataVPO cp95 = cp95List.get (0);
DataIPO cp951 = cp951List.get (0);
DataHarmPowerPPO cp952 = cp952List.get (0);
DataHarmPowerSPO cp953 = cp953List.get (0);
DataHarmPowerQPO cp954 = cp954List.get (0);
covertBean = InfluxdbPOConverter.INFLUXDB_PO_CONVERTER.RMpMeasurePhaseReportDPOConverterCp95 (cp95,cp951,cp952,cp953,cp954); covertBean = InfluxdbPOConverter.INFLUXDB_PO_CONVERTER.RMpMeasurePhaseReportDPOConverterCp95 (cp95,cp951,cp952,cp953,cp954);
BeanUtils.copyProperties (covertBean, result,getNullPropertyNames(covertBean)); BeanUtils.copyProperties (covertBean, result,getNullPropertyNames(covertBean));
}
return result; return result;
} }
private RMpMeasureReportD packageRMpMeasureReportDPO(List<DataVPO> dataV, List<DataIPO> dataI, List<DataHarmPowerPPO> dataHarmPowerPPO, List<DataHarmPowerSPO> dataHarmPowers, List<DataHarmPowerQPO> dataHarmPowerQPO, String PhaseType,Instant instant) {
RMpMeasureReportD result = null ;
List<DataVPO> a = dataV.stream ( ).
filter (temp -> Objects.equals (temp.getPhaseType ( ), PhaseType)).
collect (Collectors.toList ( ));
List<DataIPO> b = dataI.stream ( ).
filter (temp -> Objects.equals (temp.getPhaseType ( ), PhaseType)).
collect (Collectors.toList ( ));
List<DataHarmPowerPPO> c = dataHarmPowerPPO.stream ( ).
filter (temp -> Objects.equals (temp.getPhaseType ( ), PhaseType)).
collect (Collectors.toList ( ));
List<DataHarmPowerSPO> d = dataHarmPowers.stream ( ).
filter (temp -> Objects.equals (temp.getPhaseType ( ), PhaseType)).
collect (Collectors.toList ( ));
List<DataHarmPowerQPO> e = dataHarmPowerQPO.stream ( ).
filter (temp -> Objects.equals (temp.getPhaseType ( ), PhaseType)).
collect (Collectors.toList ( ));
RMpMeasureReportD covertBean = new RMpMeasureReportD();
if(!CollectionUtils.isEmpty (a)&&!CollectionUtils.isEmpty (b)){
result = new RMpMeasureReportD();
result.setMeasurementPointId (dataHarmPowerPPO.get (0).getLineId ());
result.setDataDate (Date.from (instant));
}
//todo 非空判断
/*max*/
List<DataVPO> maxList = a.stream ( ).filter (temp -> Objects.equals (temp.getValueType ( ), "MAX")).
collect (Collectors.toList ( ));
List<DataIPO> max1List = b.stream ( ).filter (temp -> Objects.equals (temp.getValueType ( ), "MAX")).
collect (Collectors.toList ( ));
List<DataHarmPowerPPO> max2List = c.stream ( ).filter (temp -> Objects.equals (temp.getValueType ( ), "MAX")).
collect (Collectors.toList ( ));
List<DataHarmPowerSPO> max3List = d.stream ( ).filter (temp -> Objects.equals (temp.getValueType ( ), "MAX")).
collect (Collectors.toList ( ));
List<DataHarmPowerQPO> max4List = e.stream ( ).filter (temp -> Objects.equals (temp.getValueType ( ), "MAX")).
collect (Collectors.toList ( ));
if(!CollectionUtils.isEmpty (maxList)
&&!CollectionUtils.isEmpty (max1List)
&&!CollectionUtils.isEmpty (max2List)
&&!CollectionUtils.isEmpty (max3List)
&&!CollectionUtils.isEmpty (max4List)){
DataVPO max = maxList.get (0);
DataIPO max1 = max1List.get (0);
DataHarmPowerPPO max2 = max2List.get (0);
DataHarmPowerSPO max3 = max3List.get (0);
DataHarmPowerQPO max4 = max4List.get (0);
covertBean = InfluxdbPOConverter.INFLUXDB_PO_CONVERTER.RMpMeasureReportDPOConverterMax (max,max1,max2,max3,max4);
BeanUtils.copyProperties (covertBean, result,getNullPropertyNames(covertBean));
}
/*min*/
List<DataVPO> minList = a.stream ( ).filter (temp -> Objects.equals (temp.getValueType ( ), "MIN")).
collect (Collectors.toList ( ));
List<DataIPO> min1List = b.stream ( ).filter (temp -> Objects.equals (temp.getValueType ( ), "MIN")).
collect (Collectors.toList ( ));
List<DataHarmPowerPPO> min2List = c.stream ( ).filter (temp -> Objects.equals (temp.getValueType ( ), "MIN")).
collect (Collectors.toList ( ));
List<DataHarmPowerSPO> min3List = d.stream ( ).filter (temp -> Objects.equals (temp.getValueType ( ), "MIN")).
collect (Collectors.toList ( ));
List<DataHarmPowerQPO> min4List = e.stream ( ).filter (temp -> Objects.equals (temp.getValueType ( ), "MIN")).
collect (Collectors.toList ( ));
if(!CollectionUtils.isEmpty (minList)
&&!CollectionUtils.isEmpty (min1List)
&&!CollectionUtils.isEmpty (min2List)
&&!CollectionUtils.isEmpty (min3List)
&&!CollectionUtils.isEmpty (min4List)){
DataVPO min = minList.get (0);
DataIPO min1 = min1List.get (0);
DataHarmPowerPPO min2 = min2List.get (0);
DataHarmPowerSPO min3 = min3List.get (0);
DataHarmPowerQPO min4 = min4List.get (0);
covertBean = InfluxdbPOConverter.INFLUXDB_PO_CONVERTER.RMpMeasureReportDPOConverterMin (min,min1,min2,min3,min4);
BeanUtils.copyProperties (covertBean, result,getNullPropertyNames(covertBean));
}
/*avg*/
List<DataVPO> avgList = a.stream ( ).filter (temp -> Objects.equals (temp.getValueType ( ), "AVG")).
collect (Collectors.toList ( ));
List<DataIPO> avg1List = b.stream ( ).filter (temp -> Objects.equals (temp.getValueType ( ), "AVG")).
collect (Collectors.toList ( ));
List<DataHarmPowerPPO> avg2List = c.stream ( ).filter (temp -> Objects.equals (temp.getValueType ( ), "AVG")).
collect (Collectors.toList ( ));
List<DataHarmPowerSPO> avg3List = d.stream ( ).filter (temp -> Objects.equals (temp.getValueType ( ), "AVG")).
collect (Collectors.toList ( ));
List<DataHarmPowerQPO> avg4List = e.stream ( ).filter (temp -> Objects.equals (temp.getValueType ( ), "AVG")).
collect (Collectors.toList ( ));
if(!CollectionUtils.isEmpty (avgList)
&&!CollectionUtils.isEmpty (avg1List)
&&!CollectionUtils.isEmpty (avg2List)
&&!CollectionUtils.isEmpty (avg3List)
&&!CollectionUtils.isEmpty (avg4List)){
DataVPO avg = avgList.get (0);
DataIPO avg1 = avg1List.get (0);
DataHarmPowerPPO avg2 = avg2List.get (0);
DataHarmPowerSPO avg3 = avg3List.get (0);
DataHarmPowerQPO avg4 = avg4List.get (0);
covertBean = InfluxdbPOConverter.INFLUXDB_PO_CONVERTER.RMpMeasureReportDPOConverterAVg (avg,avg1,avg2,avg3,avg4);
BeanUtils.copyProperties (covertBean, result,getNullPropertyNames(covertBean));
}
/*cp95*/
List<DataVPO> cp95List = a.stream ( ).filter (temp -> Objects.equals (temp.getValueType ( ), "CP95")).
collect (Collectors.toList ( ));
List<DataIPO> cp951List = b.stream ( ).filter (temp -> Objects.equals (temp.getValueType ( ), "CP95")).
collect (Collectors.toList ( ));
List<DataHarmPowerPPO> cp952List = c.stream ( ).filter (temp -> Objects.equals (temp.getValueType ( ), "CP95")).
collect (Collectors.toList ( ));
List<DataHarmPowerSPO> cp953List = d.stream ( ).filter (temp -> Objects.equals (temp.getValueType ( ), "CP95")).
collect (Collectors.toList ( ));
List<DataHarmPowerQPO> cp954List = e.stream ( ).filter (temp -> Objects.equals (temp.getValueType ( ), "CP95")).
collect (Collectors.toList ( ));
if(!CollectionUtils.isEmpty (cp95List)
&&!CollectionUtils.isEmpty (cp951List)
&&!CollectionUtils.isEmpty (cp952List)
&&!CollectionUtils.isEmpty (cp953List)
&&!CollectionUtils.isEmpty (cp954List)){
DataVPO cp95 = cp95List.get (0);
DataIPO cp951 = cp951List.get (0);
DataHarmPowerPPO cp952 = cp952List.get (0);
DataHarmPowerSPO cp953 = cp953List.get (0);
DataHarmPowerQPO cp954 = cp954List.get (0);
covertBean = InfluxdbPOConverter.INFLUXDB_PO_CONVERTER.RMpMeasureReportDPOConverterCp95 (cp95,cp951,cp952,cp953,cp954);
BeanUtils.copyProperties (covertBean, result,getNullPropertyNames(covertBean));
}
return result;
}
/** /**
* 获取所有字段为null的属性名 * 获取所有字段为null的属性名
@@ -3403,4 +3603,5 @@ public class DayDataServiceImpl implements DayDataService {
} }

View File

@@ -4,23 +4,27 @@ import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.LocalDateTimeUtil; import cn.hutool.core.date.LocalDateTimeUtil;
import com.njcn.device.pq.api.LineFeignClient; import com.njcn.device.pq.api.LineFeignClient;
import com.njcn.device.pq.pojo.po.Overlimit; import com.njcn.device.pq.pojo.po.Overlimit;
import com.njcn.harmonic.pojo.po.RMpVThd;
import com.njcn.influxdb.utils.InfluxDbUtils; import com.njcn.influxdb.utils.InfluxDbUtils;
import com.njcn.prepare.harmonic.constant.AlgorithmParam;
import com.njcn.prepare.harmonic.mapper.mysql.line.RMpVThdMapper; import com.njcn.prepare.harmonic.mapper.mysql.line.RMpVThdMapper;
import com.njcn.prepare.harmonic.pojo.param.LineParam;
import com.njcn.prepare.harmonic.pojo.influxdb.po.DataVPO; import com.njcn.prepare.harmonic.pojo.influxdb.po.DataVPO;
import com.njcn.prepare.harmonic.pojo.oracle.PqLinedetailPO;
import com.njcn.prepare.harmonic.pojo.param.LineParam;
import com.njcn.prepare.harmonic.service.mysql.line.DistortionRateService; import com.njcn.prepare.harmonic.service.mysql.line.DistortionRateService;
import com.njcn.prepare.harmonic.service.oracle.DataVOraclePOService;
import com.njcn.prepare.harmonic.service.oracle.PqLinedetailPOService;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.influxdb.dto.QueryResult; import org.influxdb.dto.QueryResult;
import org.influxdb.impl.InfluxDBResultMapper; import org.influxdb.impl.InfluxDBResultMapper;
import org.springframework.scheduling.annotation.Async; import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.ArrayList; import java.util.*;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@@ -39,6 +43,10 @@ public class DistortionRateServiceImpl implements DistortionRateService {
private final RMpVThdMapper rMpVThdMapper; private final RMpVThdMapper rMpVThdMapper;
private final
PqLinedetailPOService pqLinedetailPOService;
private final
DataVOraclePOService dataVOraclePOService;
@Override @Override
@Async("asyncExecutor") @Async("asyncExecutor")
public void distortionRate(LineParam lineParam) { public void distortionRate(LineParam lineParam) {
@@ -63,6 +71,7 @@ public class DistortionRateServiceImpl implements DistortionRateService {
} }
} }
private List<DataVPO> getDistortionRateInfluxDb(String lineId, String date) { private List<DataVPO> getDistortionRateInfluxDb(String lineId, String date) {
String processParam = " and line_id = '" + lineId + "' and time >= '" + date + " 00:00:00' and time <= '" + date + " 23:59:59' tz('Asia/Shanghai')"; String processParam = " and line_id = '" + lineId + "' and time >= '" + date + " 00:00:00' and time <= '" + date + " 23:59:59' tz('Asia/Shanghai')";
QueryResult result = influxDbUtils.query ("SELECT line_id, max(v_thd) as v_thd FROM data_v WHERE phasic_type != 'T' and value_type = 'MAX'" + processParam); QueryResult result = influxDbUtils.query ("SELECT line_id, max(v_thd) as v_thd FROM data_v WHERE phasic_type != 'T' and value_type = 'MAX'" + processParam);
@@ -73,4 +82,63 @@ public class DistortionRateServiceImpl implements DistortionRateService {
private List<Overlimit> getAllLineOutData() { private List<Overlimit> getAllLineOutData() {
return lineFeignClient.getAllLineOverLimit ("harmonic-boot", "").getData ( ); return lineFeignClient.getAllLineOverLimit ("harmonic-boot", "").getData ( );
} }
@Override
public void distortionRateBySource(LineParam lineParam) {
if (Objects.equals (lineParam.getDataSource ( ), AlgorithmParam.ORACLE_DATA)) {
hanlderOracleData (lineParam);
} else if (Objects.equals (lineParam.getDataSource ( ), AlgorithmParam.INFLUX_DATA)) {
distortionRate (lineParam);
}
}
private void hanlderOracleData(LineParam lineParam) {
Integer type = lineParam.getType ( );
switch (type) {
// case 1:
// this.hanlderOracleYear (lineParam);
// break;
// case 2:
// this.hanlderOracleQtr (lineParam);
// break;
// case 3:
// this.hanlderOracleMonth (lineParam);
// break;
case 5:
this.hanlderOracleDay (lineParam);
break;
default:
break;
}
}
@SneakyThrows
private void hanlderOracleDay(LineParam lineParam) {
List<String> lineIds = lineParam.getLineIds ( );
String dataDate = lineParam.getDataDate ( );
final Date tempDate = new SimpleDateFormat ("yyyy-MM-dd").parse (dataDate);
List<RMpVThd> rMpVThdList = new ArrayList<> ( );
lineIds.forEach (lineId -> {
RMpVThd rMpVThd = new RMpVThd();
/*获取mysql与Oracle监测点id对应关系*/
PqLinedetailPO oracleIndexIdByMonitorId = pqLinedetailPOService.getOracleIndexIdByMonitorId (lineId);
Double vThdMAx = dataVOraclePOService.queryVThdMax(oracleIndexIdByMonitorId.getLineIndex(),dataDate);
Map<String, Object> inMap = new HashMap<> ( );
inMap.put ("lineId", lineId);
inMap.put ("dataType", lineParam.getType ()+"");
inMap.put ("dataDate", tempDate);
inMap.put ("vThd", vThdMAx);
rMpVThdMapper.insertRate (inMap);
// rMpVThd.setMeasurementPointId (lineId);
// rMpVThd.setDataType (lineParam.getType ()+"");
// rMpVThd.setDataDate (tempDate);
// rMpVThd.setVThd (vThdMAx);
});
}
} }

View File

@@ -20,7 +20,6 @@ import com.njcn.prepare.harmonic.pojo.param.LineParam;
import com.njcn.prepare.harmonic.pojo.vo.AbnormalVO; import com.njcn.prepare.harmonic.pojo.vo.AbnormalVO;
import com.njcn.prepare.harmonic.service.mysql.line.NormalLimitService; import com.njcn.prepare.harmonic.service.mysql.line.NormalLimitService;
import com.njcn.user.api.DeptFeignClient; import com.njcn.user.api.DeptFeignClient;
import com.njcn.user.api.UserFeignClient;
import com.njcn.user.pojo.po.Dept; import com.njcn.user.pojo.po.Dept;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import org.influxdb.dto.QueryResult; import org.influxdb.dto.QueryResult;
@@ -53,16 +52,16 @@ public class NormalLimitServiceImpl extends ServiceImpl<AbnormalMapper, MpSurplu
@Override @Override
@Async("asyncExecutor") @Async("asyncExecutor")
public Boolean AbnormalLineData(LineParam lineParam) { public Boolean AbnormalLineData(LineParam lineParam) {
List<String> lineIds = new ArrayList<>(); List<String> lineIds = new ArrayList<>();
List<MpSurplusAbnormalD> all = new ArrayList<>(); List<MpSurplusAbnormalD> all = new ArrayList<>();
Dept dept = deptFeignClient.getRootDept().getData();
if (CollectionUtils.isEmpty(lineParam.getLineIds())) { if (CollectionUtils.isEmpty(lineParam.getLineIds())) {
Dept dept = deptFeignClient.getRootDept().getData();
DeviceInfoParam deviceInfoParam = new DeviceInfoParam(); DeviceInfoParam deviceInfoParam = new DeviceInfoParam();
deviceInfoParam.setDeptIndex(dept.getId()); deviceInfoParam.setDeptIndex(dept.getId());
deviceInfoParam.setPowerFlag(2); deviceInfoParam.setPowerFlag(2);

View File

@@ -0,0 +1,209 @@
package com.njcn.prepare.harmonic.service.mysql.Impl.line;
import com.njcn.harmonic.pojo.po.RMpEventDetailDPO;
import com.njcn.harmonic.pojo.po.RMpEventDetailMPO;
import com.njcn.harmonic.pojo.po.RMpEventDetailQPO;
import com.njcn.harmonic.pojo.po.RMpEventDetailYPO;
import com.njcn.prepare.harmonic.constant.AlgorithmParam;
import com.njcn.prepare.harmonic.pojo.oracle.PqLinedetailPO;
import com.njcn.prepare.harmonic.pojo.param.LineParam;
import com.njcn.prepare.harmonic.service.mysql.line.*;
import com.njcn.prepare.harmonic.service.oracle.PqLinedetailPOService;
import com.njcn.prepare.harmonic.service.oracle.PqsEventdetailService;
import lombok.AllArgsConstructor;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Objects;
/**
* Description:
* 接口文档访问地址http://serverIP:port/swagger-ui.html
* Date: 2022/12/28 14:11【需求编号】
*
* @author clam
* @version V1.0.0
*/
@Slf4j
@Service
@AllArgsConstructor
public class PqsEventdetailHandlerServiceImpl implements PqsEventdetailHandlerService {
private final PqLinedetailPOService pqLinedetailPOService;
private final PqsEventdetailService pqsEventdetailService;
private final RMpEventDetailDService rMpEventDetailDService;
private final RMpEventDetailMService rMpEventDetailMService;
private final RMpEventDetailQService rMpEventDetailQService;
private final RMpEventDetailYService rMpEventDetailYService;
@Override
@Async("asyncExecutor")
public void eventdetailHandler(LineParam lineParam) {
if (Objects.equals (lineParam.getDataSource ( ), AlgorithmParam.ORACLE_DATA)) {
hanlderOracleData (lineParam);
} else if (Objects.equals (lineParam.getDataSource ( ), AlgorithmParam.INFLUX_DATA)) {
hanlderInfludxbData (lineParam);
}
}
/**
* @Description: hanlderInfludxbData
* @Param: [lineParam]
* @return: void
* @Author: clam
* @Date: 2022/12/28
*/
private void hanlderInfludxbData(LineParam lineParam) {
}
/**
* @Description: hanlderOracleData
* @Param: [lineParam]
* @return: void
* @Author: clam
* @Date: 2022/12/28
*/
private void hanlderOracleData(LineParam lineParam) {
Integer type = lineParam.getType ( );
switch (type) {
case 1:
this.hanlderOracleYear (lineParam);
break;
case 2:
this.hanlderOracleQtr (lineParam);
break;
case 3:
this.hanlderOracleMonth (lineParam);
break;
case 5:
this.hanlderOracleDay (lineParam);
break;
default:
break;
}
}
@SneakyThrows
private void hanlderOracleYear(LineParam lineParam) {
List<String> lineIds = lineParam.getLineIds ( );
String dataDate = lineParam.getDataDate ( );
final Date tempDate = new SimpleDateFormat ("yyyy-MM-dd").parse (dataDate);
List<RMpEventDetailYPO> rMpEventDetailYPOList = new ArrayList<> ( );
lineIds.forEach (lineId -> {
/*查询月表数据生成年表数据*/
List<RMpEventDetailMPO> rMpEventDetailMPOList = rMpEventDetailMService.queryOneYearData(lineId,dataDate);
int sagCount = rMpEventDetailMPOList.stream ( ).mapToInt (RMpEventDetailMPO::getSagTimes).sum ( );
int riseCount = rMpEventDetailMPOList.stream ( ).mapToInt (RMpEventDetailMPO::getSwellTimes).sum ( );
int interruptCount = rMpEventDetailMPOList.stream ( ).mapToInt (RMpEventDetailMPO::getInterruptTimes).sum ( );
RMpEventDetailYPO rMpEventDetailYPO = new RMpEventDetailYPO();
rMpEventDetailYPO.setMeasurementPointId (lineId);
rMpEventDetailYPO.setDataDate (tempDate);
rMpEventDetailYPO.setSagTimes (sagCount);
rMpEventDetailYPO.setSwellTimes (riseCount);
rMpEventDetailYPO.setInterruptTimes (interruptCount);
rMpEventDetailYPOList.add (rMpEventDetailYPO);
});
rMpEventDetailYService.saveOrUpdateBatchByMultiId (rMpEventDetailYPOList,500);
}
@SneakyThrows
private void hanlderOracleQtr(LineParam lineParam) {
List<String> lineIds = lineParam.getLineIds ( );
String dataDate = lineParam.getDataDate ( );
final Date tempDate = new SimpleDateFormat ("yyyy-MM-dd").parse (dataDate);
List<RMpEventDetailQPO> rMpEventDetailQPOList = new ArrayList<> ( );
lineIds.forEach (lineId -> {
/*查询月表数据生成季表数据*/
List<RMpEventDetailMPO> rMpEventDetailMPOList = rMpEventDetailMService.queryOneQtrData(lineId,dataDate);
int sagCount = rMpEventDetailMPOList.stream ( ).mapToInt (RMpEventDetailMPO::getSagTimes).sum ( );
int riseCount = rMpEventDetailMPOList.stream ( ).mapToInt (RMpEventDetailMPO::getSwellTimes).sum ( );
int interruptCount = rMpEventDetailMPOList.stream ( ).mapToInt (RMpEventDetailMPO::getInterruptTimes).sum ( );
RMpEventDetailQPO rMpEventDetailQPO = new RMpEventDetailQPO();
rMpEventDetailQPO.setMeasurementPointId (lineId);
rMpEventDetailQPO.setDataDate (tempDate);
rMpEventDetailQPO.setSagTimes (sagCount);
rMpEventDetailQPO.setSwellTimes (riseCount);
rMpEventDetailQPO.setInterruptTimes (interruptCount);
rMpEventDetailQPOList.add (rMpEventDetailQPO);
});
rMpEventDetailQService.saveOrUpdateBatchByMultiId (rMpEventDetailQPOList,500);
}
@SneakyThrows
private void hanlderOracleMonth(LineParam lineParam) {
List<String> lineIds = lineParam.getLineIds ( );
String dataDate = lineParam.getDataDate ( );
final Date tempDate = new SimpleDateFormat ("yyyy-MM-dd").parse (dataDate);
List<RMpEventDetailMPO> rMpEventDetailMPOList = new ArrayList<> ( );
lineIds.forEach (lineId -> {
/*查询day表数据生成月表数据*/
List<RMpEventDetailDPO> rMpEventDetailDPOList = rMpEventDetailDService.queryOneMothData(lineId,dataDate);
int sagCount = rMpEventDetailDPOList.stream ( ).mapToInt (RMpEventDetailDPO::getSagTimes).sum ( );
int riseCount = rMpEventDetailDPOList.stream ( ).mapToInt (RMpEventDetailDPO::getSwellTimes).sum ( );
int interruptCount = rMpEventDetailDPOList.stream ( ).mapToInt (RMpEventDetailDPO::getInterruptTimes).sum ( );
RMpEventDetailMPO rMpEventDetailMPO = new RMpEventDetailMPO();
rMpEventDetailMPO.setMeasurementPointId (lineId);
rMpEventDetailMPO.setDataDate (tempDate);
rMpEventDetailMPO.setSagTimes (sagCount);
rMpEventDetailMPO.setSwellTimes (riseCount);
rMpEventDetailMPO.setInterruptTimes (interruptCount);
rMpEventDetailMPOList.add (rMpEventDetailMPO);
});
rMpEventDetailMService.saveOrUpdateBatchByMultiId (rMpEventDetailMPOList,500);
}
@SneakyThrows
private void hanlderOracleDay(LineParam lineParam) {
List<String> lineIds = lineParam.getLineIds ( );
String dataDate = lineParam.getDataDate ( );
final Date tempDate = new SimpleDateFormat ("yyyy-MM-dd").parse (dataDate);
List<RMpEventDetailDPO> rMpEventDetailDPOList = new ArrayList<> ( );
lineIds.forEach (lineId -> {
/*获取mysql与Oracle监测点id对应关系*/
PqLinedetailPO oracleIndexIdByMonitorId = pqLinedetailPOService.getOracleIndexIdByMonitorId (lineId);
Integer sagCount = pqsEventdetailService.queryByCondition (oracleIndexIdByMonitorId.getLineIndex(),dataDate,AlgorithmParam.SAG);
Integer riseCount = pqsEventdetailService.queryByCondition (oracleIndexIdByMonitorId.getLineIndex(),dataDate,AlgorithmParam.RISE);
Integer interruptCount = pqsEventdetailService.queryByCondition (oracleIndexIdByMonitorId.getLineIndex(),dataDate,AlgorithmParam.INTERRUPT);
RMpEventDetailDPO rMpEventDetailDPO = new RMpEventDetailDPO();
rMpEventDetailDPO.setMeasurementPointId (lineId);
rMpEventDetailDPO.setDataDate (tempDate);
rMpEventDetailDPO.setSagTimes (sagCount);
rMpEventDetailDPO.setSwellTimes (riseCount);
rMpEventDetailDPO.setInterruptTimes (interruptCount);
rMpEventDetailDPOList.add (rMpEventDetailDPO);
});
rMpEventDetailDService.saveOrUpdateBatchByMultiId (rMpEventDetailDPOList,500);
}
}

View File

@@ -0,0 +1,47 @@
package com.njcn.prepare.harmonic.service.mysql.Impl.line;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
import com.njcn.harmonic.pojo.po.RMpEventDetailDPO;
import com.njcn.prepare.harmonic.mapper.mysql.line.RMpEventDetailDMapper;
import com.njcn.prepare.harmonic.service.mysql.line.RMpEventDetailDService;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.List;
/**
*
* Description:
* 接口文档访问地址http://serverIP:port/swagger-ui.html
* Date: 2022/12/28 14:58【需求编号】
*
* @author clam
* @version V1.0.0
*/
@Service
@AllArgsConstructor
public class RMpEventDetailDServiceImpl extends MppServiceImpl<RMpEventDetailDMapper, RMpEventDetailDPO> implements RMpEventDetailDService{
private final RMpEventDetailDMapper rMpEventDetailDMapper;
/**
* @param lineId
* @param dataDate
* @Description: queryOneMothData
* @Param: [lineId, dataDate]
* @return: java.util.List<com.njcn.prepare.harmonic.pojo.mysql.po.line.RMpEventDetailDPO>
* @Author: clam
* @Date: 2022/12/28
*/
@Override
public List<RMpEventDetailDPO> queryOneMothData(String lineId, String dataDate) {
QueryWrapper<RMpEventDetailDPO> queryWrapper = new QueryWrapper<> ();
queryWrapper.eq ("measurement_point_id", lineId).
eq("DATE_FORMAT( data_date ,'%Y-%m')",dataDate.substring (0, 7));
List<RMpEventDetailDPO> list = rMpEventDetailDMapper.selectList (queryWrapper);
return list;
}
}

View File

@@ -0,0 +1,65 @@
package com.njcn.prepare.harmonic.service.mysql.Impl.line;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
import com.njcn.harmonic.pojo.po.RMpEventDetailMPO;
import com.njcn.prepare.harmonic.mapper.mysql.line.RMpEventDetailMMapper;
import com.njcn.prepare.harmonic.service.mysql.line.RMpEventDetailMService;
import com.njcn.prepare.harmonic.utils.PublicUtil;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.List;
/**
*
* Description:
* 接口文档访问地址http://serverIP:port/swagger-ui.html
* Date: 2022/12/28 14:58【需求编号】
*
* @author clam
* @version V1.0.0
*/
@Service
@AllArgsConstructor
public class RMpEventDetailMServiceImpl extends MppServiceImpl<RMpEventDetailMMapper, RMpEventDetailMPO> implements RMpEventDetailMService{
private final RMpEventDetailMMapper rMpEventDetailMMapper;
/**
* @param lineId
* @param dataDate
* @Description: queryOneQtrData 查询一季度Mouth表数据
* @Param: [lineId, dataDate]
* @return: java.util.List<com.njcn.prepare.harmonic.pojo.mysql.po.line.RMpEventDetailDPO>
* @Author: clam
* @Date: 2022/12/28
*/
@Override
public List<RMpEventDetailMPO> queryOneQtrData(String lineId, String dataDate) {
QueryWrapper<RMpEventDetailMPO> queryWrapper = new QueryWrapper<> ();
queryWrapper.eq ("measurement_point_id", lineId).
eq("QUARTER( data_date)", PublicUtil.getNowQuarter (dataDate));
List<RMpEventDetailMPO> list = rMpEventDetailMMapper.selectList (queryWrapper);
return list;
}
/**
* @param lineId
* @param dataDate
* @Description: queryOneYearData 查询一年Mouth表数据
* @Param: [lineId, dataDate]
* @return: java.util.List<com.njcn.prepare.harmonic.pojo.mysql.po.line.RMpEventDetailMPO>
* @Author: clam
* @Date: 2022/12/28
*/
@Override
public List<RMpEventDetailMPO> queryOneYearData(String lineId, String dataDate) {
QueryWrapper<RMpEventDetailMPO> queryWrapper = new QueryWrapper<> ();
queryWrapper.eq ("measurement_point_id", lineId).
eq("YEAR( data_date )",dataDate.substring (0, 4));
List<RMpEventDetailMPO> list = rMpEventDetailMMapper.selectList (queryWrapper);
return list;
}
}

View File

@@ -0,0 +1,20 @@
package com.njcn.prepare.harmonic.service.mysql.Impl.line;
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
import com.njcn.harmonic.pojo.po.RMpEventDetailQPO;
import com.njcn.prepare.harmonic.mapper.mysql.line.RMpEventDetailQMapper;
import com.njcn.prepare.harmonic.service.mysql.line.RMpEventDetailQService;
import org.springframework.stereotype.Service;
/**
*
* Description:
* 接口文档访问地址http://serverIP:port/swagger-ui.html
* Date: 2022/12/28 14:58【需求编号】
*
* @author clam
* @version V1.0.0
*/
@Service
public class RMpEventDetailQServiceImpl extends MppServiceImpl<RMpEventDetailQMapper, RMpEventDetailQPO> implements RMpEventDetailQService{
}

View File

@@ -0,0 +1,20 @@
package com.njcn.prepare.harmonic.service.mysql.Impl.line;
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
import com.njcn.harmonic.pojo.po.RMpEventDetailYPO;
import com.njcn.prepare.harmonic.mapper.mysql.line.RMpEventDetailYMapper;
import com.njcn.prepare.harmonic.service.mysql.line.RMpEventDetailYService;
import org.springframework.stereotype.Service;
/**
*
* Description:
* 接口文档访问地址http://serverIP:port/swagger-ui.html
* Date: 2022/12/28 14:58【需求编号】
*
* @author clam
* @version V1.0.0
*/
@Service
public class RMpEventDetailYServiceImpl extends MppServiceImpl<RMpEventDetailYMapper, RMpEventDetailYPO> implements RMpEventDetailYService{
}

View File

@@ -22,7 +22,7 @@ import com.njcn.influxdb.utils.InfluxDbUtils;
import com.njcn.minio.bo.MinIoUploadResDTO; import com.njcn.minio.bo.MinIoUploadResDTO;
import com.njcn.minio.config.MinIoProperties; import com.njcn.minio.config.MinIoProperties;
import com.njcn.minio.utils.MinIoUtils; import com.njcn.minio.utils.MinIoUtils;
import com.njcn.prepare.harmonic.constant.Param; import com.njcn.prepare.harmonic.constant.AlgorithmParam;
import com.njcn.prepare.harmonic.mapper.mysql.line.ExcelRptMapper; import com.njcn.prepare.harmonic.mapper.mysql.line.ExcelRptMapper;
import com.njcn.prepare.harmonic.mapper.mysql.line.ExcelRptTempMapper; import com.njcn.prepare.harmonic.mapper.mysql.line.ExcelRptTempMapper;
import com.njcn.prepare.harmonic.pojo.param.LineParam; import com.njcn.prepare.harmonic.pojo.param.LineParam;
@@ -87,7 +87,7 @@ public class ReportServiceImpl implements ReportService {
List<String> list = reportParam.getLineIds(); List<String> list = reportParam.getLineIds();
if (CollUtil.isEmpty(list)){ if (CollUtil.isEmpty(list)){
list = new ArrayList<>(); list = new ArrayList<>();
Map<String, List<String>> map = deptLineFeignClient.getLineByDeptRelation(Param.STEADY_STATE).getData(); Map<String, List<String>> map = deptLineFeignClient.getLineByDeptRelation(AlgorithmParam.STEADY_STATE).getData();
Collection<List<String>> values = map.values(); Collection<List<String>> values = map.values();
for (List<String> value : values) { for (List<String> value : values) {
list.addAll(value); list.addAll(value);
@@ -291,21 +291,18 @@ public class ReportServiceImpl implements ReportService {
}else{ }else{
sql.append(method).append(InfluxDBSqlConstant.LBK).append(data.getTemplateName()).append(InfluxDBSqlConstant.RBK).append(InfluxDBSqlConstant.AS_VALUE); sql.append(method).append(InfluxDBSqlConstant.LBK).append(data.getTemplateName()).append(InfluxDBSqlConstant.RBK).append(InfluxDBSqlConstant.AS_VALUE);
} }
sql.append(InfluxDBSqlConstant.FROM).append(data.getClassId()).append(InfluxDBSqlConstant.WHERE).append(InfluxDBTableConstant.LINE_ID).append(InfluxDBSqlConstant.EQ).append(InfluxDBSqlConstant.QM).append(lineId).append(InfluxDBSqlConstant.QM);
//相别特殊处理 //相别特殊处理
if (InfluxDBTableConstant.NO_PHASE.equals(data.getPhase())) { if (!InfluxDBTableConstant.NO_PHASE.equals(data.getPhase())) {
sql.append(InfluxDBSqlConstant.FROM).append(data.getClassId()) sql.append(InfluxDBSqlConstant.AND).append(InfluxDBTableConstant.PHASIC_TYPE).append(InfluxDBSqlConstant.EQ).append(InfluxDBSqlConstant.QM).append(data.getPhase()).append(InfluxDBSqlConstant.QM);
.append(InfluxDBSqlConstant.WHERE).append(InfluxDBTableConstant.LINE_ID).append(InfluxDBSqlConstant.EQ).append(InfluxDBSqlConstant.QM).append(lineId).append(InfluxDBSqlConstant.QM)
.append(InfluxDBSqlConstant.AND).append(InfluxDBTableConstant.VALUE_TYPE).append(InfluxDBSqlConstant.EQ).append(InfluxDBSqlConstant.QM).append(data.getStatMethod()).append(InfluxDBSqlConstant.QM)
.append(InfluxDBSqlConstant.TZ);
} else {
sql.append(InfluxDBSqlConstant.FROM).append(data.getClassId())
.append(InfluxDBSqlConstant.WHERE).append(InfluxDBTableConstant.LINE_ID).append(InfluxDBSqlConstant.EQ).append(InfluxDBSqlConstant.QM).append(lineId).append(InfluxDBSqlConstant.QM)
.append(InfluxDBSqlConstant.AND).append(InfluxDBTableConstant.VALUE_TYPE).append(InfluxDBSqlConstant.EQ).append(InfluxDBSqlConstant.QM).append(data.getStatMethod()).append(InfluxDBSqlConstant.QM)
.append(InfluxDBSqlConstant.AND).append(InfluxDBTableConstant.PHASIC_TYPE).append(InfluxDBSqlConstant.EQ).append(InfluxDBSqlConstant.QM).append(data.getPhase()).append(InfluxDBSqlConstant.QM)
.append(InfluxDBSqlConstant.TZ);
} }
//data_flicker、data_fluc、data_plt 无 value_type
if (!InfluxDBTableConstant.DATA_FLICKER.equals(data.getClassId()) && !InfluxDBTableConstant.DATA_FLUC.equals(data.getClassId()) && !InfluxDBTableConstant.DATA_PLT.equals(data.getClassId())){
sql.append(InfluxDBSqlConstant.AND).append(InfluxDBTableConstant.VALUE_TYPE).append(InfluxDBSqlConstant.EQ).append(InfluxDBSqlConstant.QM).append(data.getStatMethod()).append(InfluxDBSqlConstant.QM);
}
sql.append(InfluxDBSqlConstant.TZ);
//根据不同的库表赋值 //根据不同的库表赋值
QueryResult queryResult = influxDbUtils.query(String.valueOf(sql)); QueryResult queryResult = influxDbUtils.query(String.valueOf(sql));

Some files were not shown because too many files have changed in this diff Show More