From a3c70fb5457e2f001ea61469a5ad19559624cce9 Mon Sep 17 00:00:00 2001
From: xy <748613696@qq.com>
Date: Sun, 2 Jun 2024 10:24:04 +0800
Subject: [PATCH] =?UTF-8?q?=E5=BC=82=E5=B8=B8=E6=95=B0=E6=8D=AE=E5=88=A4?=
=?UTF-8?q?=E6=96=AD=E8=B0=83=E6=95=B4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
mysql-data/mysql-source/pom.xml | 11 ++-
mysql-data/mysql-target/pom.xml | 52 +++++++-----
.../impl/OracleToMysqlServiceImpl.java | 15 ++--
.../java/com/njcn/mysql/util/PubUtils.java | 80 ++++++++++++++++---
4 files changed, 113 insertions(+), 45 deletions(-)
diff --git a/mysql-data/mysql-source/pom.xml b/mysql-data/mysql-source/pom.xml
index fe6117a..da360db 100644
--- a/mysql-data/mysql-source/pom.xml
+++ b/mysql-data/mysql-source/pom.xml
@@ -1,12 +1,14 @@
+
+
- 4.0.0
+ mysql-data
com.njcn
- data-migration
1.0.0
- mysql-source
+ 4.0.0
+
mysql-source
@@ -86,11 +88,13 @@
com.fasterxml.jackson.datatype
jackson-datatype-jsr310
+
com.njcn
oracle-source
1.0.0
+
org.apache.commons
commons-collections4
@@ -101,5 +105,6 @@
mysql
mysql-connector-java
+
diff --git a/mysql-data/mysql-target/pom.xml b/mysql-data/mysql-target/pom.xml
index 60d245d..c2a3807 100644
--- a/mysql-data/mysql-target/pom.xml
+++ b/mysql-data/mysql-target/pom.xml
@@ -1,13 +1,15 @@
+
+
- 4.0.0
- com.njcn
mysql-data
+ com.njcn
1.0.0
- mysql-target
+ 4.0.0
mysql-target
+
8
8
@@ -24,6 +26,7 @@
+
com.njcn
mysql-source
@@ -36,18 +39,9 @@
-
- mysqlTarget
+ mysql-target
-
- org.apache.maven.plugins
- maven-compiler-plugin
- 3.8.0
-
- -Xlint:unchecked
-
-
org.springframework.boot
spring-boot-maven-plugin
@@ -61,12 +55,35 @@
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 3.8.1
+
+ 1.8
+ 1.8
+ true
+
+
+
+ org.apache.maven.plugins
+ maven-source-plugin
+ 2.2.1
+
+
+ attach-sources
+
+ jar-no-fork
+
+
+
+
+
com.spotify
docker-maven-plugin
- 1.2.2
+ 1.0.0
-
build-image
${docker.operate}
@@ -80,20 +97,15 @@
http://${docker.repostory}
${docker.repostory}/${docker.registry.name}/${project.artifactId}
-
latest
-
${docker.url}
${basedir}/
-
/ROOT
-
${project.build.directory}
-
${project.build.finalName}.jar
diff --git a/mysql-data/mysql-target/src/main/java/com/njcn/mysql/service/impl/OracleToMysqlServiceImpl.java b/mysql-data/mysql-target/src/main/java/com/njcn/mysql/service/impl/OracleToMysqlServiceImpl.java
index 7e9da97..ce298da 100644
--- a/mysql-data/mysql-target/src/main/java/com/njcn/mysql/service/impl/OracleToMysqlServiceImpl.java
+++ b/mysql-data/mysql-target/src/main/java/com/njcn/mysql/service/impl/OracleToMysqlServiceImpl.java
@@ -7,11 +7,6 @@ import com.njcn.mysql.bo.po.*;
import com.njcn.mysql.service.*;
import com.njcn.mysql.util.PubUtils;
import com.njcn.oracle.bo.po.*;
-import com.njcn.oracle.bo.po.DayHarmrateV;
-import com.njcn.oracle.bo.po.DayV;
-import com.njcn.oracle.bo.po.LimitRate;
-import com.njcn.oracle.bo.po.PqsIntegrity;
-import com.njcn.oracle.bo.po.*;
import lombok.AllArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
@@ -447,7 +442,7 @@ public class OracleToMysqlServiceImpl implements OracleToMysqlService {
po1.setPhaseType(data.getPhasicType());
po1.setValueType(valueType);
//异常数据判断
- po1.setQualityFlag(PubUtils.judgeData(TargetEnum.DAY_HARM_RATE_V.getCode(),data));
+ po1.setQualityFlag(PubUtils.judgeData(TargetEnum.DAY_HARM_RATE_V.getCode(),data,null));
return po1;
}
@@ -470,7 +465,7 @@ public class OracleToMysqlServiceImpl implements OracleToMysqlService {
po1.setVZero(data.getVZero());
po1.setVThd(data.getVThd());
//异常数据判断
- po1.setQualityFlag(PubUtils.judgeData(TargetEnum.DAY_V.getCode(),data));
+ po1.setQualityFlag(PubUtils.judgeData(TargetEnum.DAY_V.getCode(),data,null));
} else if (Objects.equals(valueType,"MAX")) {
po1.setRms(data.getRmsMax());
po1.setVuDev(data.getVuDevMax());
@@ -483,7 +478,7 @@ public class OracleToMysqlServiceImpl implements OracleToMysqlService {
po1.setVZero(data.getVZeroMax());
po1.setVThd(data.getVThdMax());
//异常数据判断
- po1.setQualityFlag(PubUtils.judgeData(TargetEnum.DAY_V.getCode(),data));
+ po1.setQualityFlag(PubUtils.judgeData(TargetEnum.DAY_V.getCode(),data,"Max"));
} else if (Objects.equals(valueType,"MIN")) {
po1.setRms(data.getRmsMin());
po1.setVuDev(data.getVuDevMin());
@@ -496,7 +491,7 @@ public class OracleToMysqlServiceImpl implements OracleToMysqlService {
po1.setVZero(data.getVZeroMin());
po1.setVThd(data.getVThdMin());
//异常数据判断
- po1.setQualityFlag(PubUtils.judgeData(TargetEnum.DAY_V.getCode(),data));
+ po1.setQualityFlag(PubUtils.judgeData(TargetEnum.DAY_V.getCode(),data,"Min"));
} else if (Objects.equals(valueType,"CP95")) {
po1.setRms(data.getRmsCp95());
po1.setVuDev(data.getVuDevCp95());
@@ -509,7 +504,7 @@ public class OracleToMysqlServiceImpl implements OracleToMysqlService {
po1.setVZero(data.getVZeroCp95());
po1.setVThd(data.getVThdCp95());
//异常数据判断
- po1.setQualityFlag(PubUtils.judgeData(TargetEnum.DAY_V.getCode(),data));
+ po1.setQualityFlag(PubUtils.judgeData(TargetEnum.DAY_V.getCode(),data,"Cp95"));
}
return po1;
}
diff --git a/mysql-data/mysql-target/src/main/java/com/njcn/mysql/util/PubUtils.java b/mysql-data/mysql-target/src/main/java/com/njcn/mysql/util/PubUtils.java
index 79b5f3e..290c4a9 100644
--- a/mysql-data/mysql-target/src/main/java/com/njcn/mysql/util/PubUtils.java
+++ b/mysql-data/mysql-target/src/main/java/com/njcn/mysql/util/PubUtils.java
@@ -8,10 +8,7 @@ import com.njcn.oracle.bo.po.DayV;
import java.lang.reflect.Method;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.List;
+import java.util.*;
public class PubUtils {
@@ -59,17 +56,60 @@ public class PubUtils {
* code: 指标名称
* object: 数据实体
*/
- public static int judgeData(Integer code, Object object) {
+ public static int judgeData(Integer code, Object object, String type) {
int result = 0;
switch (code) {
case 0:
DayV data = new ObjectMapper().convertValue(object, DayV.class);
- if (data.getFreq() > 57.5|| data.getFreq() < 42.5
- || Math.abs(data.getVuDev()) >20.0|| Math.abs(data.getVlDev()) >20.0
- || Math.abs(data.getFreqDev()) >7.5
- || data.getVUnbalance() <0.0|| data.getVUnbalance() > 40.0
- || data.getVThd() < 0.0 || data.getVThd() > 30.0) {
- result = 1;
+ try {
+ String methodName1 = "getFreq" + (Objects.isNull(type)?"":type);
+ Method method1 = data.getClass().getMethod(methodName1);
+ //防止数据异常大,超过数据库字段设置的大小
+ float value1 = Math.min((Float) method1.invoke(data), 999999.0f);
+
+ String methodName2 = "getVuDev" + (Objects.isNull(type)?"":type);
+ Method method2 = data.getClass().getMethod(methodName2);
+ float value2 = Math.min((Float) method2.invoke(data), 999999.0f);
+
+ String methodName3 = "getVlDev" + (Objects.isNull(type)?"":type);
+ Method method3 = data.getClass().getMethod(methodName3);
+ float value3 = Math.min((Float) method3.invoke(data), 999999.0f);
+
+ String methodName4 = "getFreqDev" + (Objects.isNull(type)?"":type);
+ Method method4 = data.getClass().getMethod(methodName4);
+ float value4 = Math.min((Float) method4.invoke(data), 999999.0f);
+
+ String methodName5 = "getVUnbalance" + (Objects.isNull(type)?"":type);
+ Method method5 = data.getClass().getMethod(methodName5);
+ float value5 = Math.min((Float) method5.invoke(data), 999999.0f);
+
+ String methodName6 = "getVThd" + (Objects.isNull(type)?"":type);
+ Method method6 = data.getClass().getMethod(methodName6);
+ float value6 = Math.min((Float) method6.invoke(data), 999999.0f);
+
+ List phase = Arrays.asList("A","B","C");
+ //频率异常判断
+ if (Objects.equals(data.getPhasicType(),"T") && (value1 > 57.5|| value1 < 42.5)){
+ result = 1;
+ }
+ //电压偏差异常判断
+ if (phase.contains(data.getPhasicType()) && (Math.abs(value2) >20.0|| Math.abs(value3) >20.0)){
+ result = 1;
+ }
+ //频率偏差异常判断
+ if (Objects.equals(data.getPhasicType(),"T") && Math.abs(value4) >7.5){
+ result = 1;
+ }
+ //三相电压不平衡度异常判断
+ if (Objects.equals(data.getPhasicType(),"T") && (value5 <0.0|| value5 > 40.0)){
+ result = 1;
+ }
+ //电压总谐波畸变率异常判断
+ if (phase.contains(data.getPhasicType()) && (value6 < 0.0 || value6 > 30.0)){
+ result = 1;
+ }
+ } catch (Exception e) {
+ e.getMessage();
}
return result;
case 4:
@@ -108,7 +148,8 @@ public class PubUtils {
Object value = getMethod.invoke(data);
if (value != null) {
BigDecimal bigDecimalValue = new BigDecimal(value.toString());
- float floatValue = bigDecimalValue.floatValue();
+ //防止数据异常大,超过数据库字段设置的大小
+ float floatValue = Math.min(bigDecimalValue.floatValue(), 999999.0f);
Method setMethod = po1.getClass().getMethod(methodNameSet, Float.class);
setMethod.invoke(po1, floatValue);
}
@@ -131,6 +172,21 @@ public class PubUtils {
Method method = data.getClass().getMethod(methodName);
Float value = (Float) method.invoke(data);
avgData.add(value);
+
+ String methodName2 = "getV" + i + "Max";
+ Method method2 = data.getClass().getMethod(methodName2);
+ Float value2 = (Float) method2.invoke(data);
+ avgData.add(value2);
+
+ String methodName3 = "getV" + i + "Min";
+ Method method3 = data.getClass().getMethod(methodName3);
+ Float value3 = (Float) method3.invoke(data);
+ avgData.add(value3);
+
+ String methodName4 = "getV" + i + "Cp95";
+ Method method4 = data.getClass().getMethod(methodName4);
+ Float value4 = (Float) method4.invoke(data);
+ avgData.add(value4);
}
} catch (Exception e) {
e.printStackTrace();