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