From c6842e8498c2d9b469890b38cd9f0d714392c445 Mon Sep 17 00:00:00 2001 From: feiyu02 <risaku@163.com> Date: 星期五, 01 十二月 2023 13:22:02 +0800 Subject: [PATCH] 1. 修改优化日统计和风险统计的逻辑 --- src/test/java/com/flightfeather/monitor/analysis/dust/ExceptionAnalysisControllerTest.kt | 4 src/main/java/com/flightfeather/monitor/analysis/dust/risk/DustRiskAnalysis.kt | 9 +- src/main/java/com/flightfeather/monitor/domain/ds1/entity/DustStatisticsValue.java | 48 ++++++------ src/main/java/com/flightfeather/monitor/analysis/dust/exception/ExceptionValueMutation.kt | 4 src/main/java/com/flightfeather/monitor/analysis/dust/ExceptionAnalysisController.kt | 24 +++--- src/main/java/com/flightfeather/monitor/analysis/dust/exception/ExceptionNoFluctuation.kt | 2 src/main/java/com/flightfeather/monitor/service/impl/FugitiveDustServiceImpl.java | 1 src/main/resources/mapper/ds1/DustStatisticsValueMapper.xml | 48 ++++++------ src/test/java/com/flightfeather/monitor/analysis/dust/RiskAnalysisControllerTest.kt | 20 +++-- src/test/java/com/flightfeather/monitor/analysis/dust/StatisticAnalysisControllerTest.kt | 4 src/main/java/com/flightfeather/monitor/scheduledtasks/dust/RiskMonthlyAnalysisTask.kt | 2 src/main/resources/generator/generatorConfig4ds1.xml | 16 ++-- src/main/resources/application.yml | 4 src/main/java/com/flightfeather/monitor/analysis/dust/exception/ExceptionApproachExceeding.kt | 2 src/main/java/com/flightfeather/monitor/analysis/dust/exception/ExceptionValidRate.kt | 2 15 files changed, 97 insertions(+), 93 deletions(-) diff --git a/src/main/java/com/flightfeather/monitor/analysis/dust/ExceptionAnalysisController.kt b/src/main/java/com/flightfeather/monitor/analysis/dust/ExceptionAnalysisController.kt index fe53e75..e80308d 100644 --- a/src/main/java/com/flightfeather/monitor/analysis/dust/ExceptionAnalysisController.kt +++ b/src/main/java/com/flightfeather/monitor/analysis/dust/ExceptionAnalysisController.kt @@ -33,14 +33,14 @@ taskList.clear() taskList.apply { add(ExceptionDataMissing(it)) -// add(ExceptionNoFluctuation(it)) -// add(ExceptionApproachExceeding(it)) -// add(ExceptionExceedingTimes(it)) -// add(ExceptionSlideAverage(it)) -// add(ExceptionValueMutation(it)) -// add(ExceptionDataLowValue(it)) -// add(ExceptionDataExceed(it)) -// add(ExceptionValidRate(it)) + add(ExceptionNoFluctuation(it)) + add(ExceptionApproachExceeding(it)) + add(ExceptionExceedingTimes(it)) + add(ExceptionSlideAverage(it)) + add(ExceptionValueMutation(it)) + add(ExceptionDataLowValue(it)) + add(ExceptionDataExceed(it)) + add(ExceptionValidRate(it)) } } } @@ -99,15 +99,15 @@ fun debugRun() { val result = mutableListOf<DustExceptionData>() - val date = LocalDate.of(2023, 7, 2) + val date = LocalDate.of(2023, 11, 22) taskList.forEach { it.init() } // 杞鏁版嵁锛岃绠楀悇涓紓甯� - val list = dustSiteDataRep.select("YZT0JS0150043", date) + val list = dustSiteDataRep.select("SHKJ0JS0150917", date) list.takeIf { it.isNotEmpty() }?.forEach { d -> - d?.let { taskList[0].onNextData(d) } + d?.let { taskList.forEach { it.onNextData(d) } } } // 鍚勪釜寮傚父鍒嗘瀽鍒嗗埆缁撴潫 - taskList[0].onDone() + taskList.forEach { it.onDone() } // 瀛樺偍鍒嗘瀽缁撴灉 taskList.forEach { result.addAll(it.resultList) } println(result) diff --git a/src/main/java/com/flightfeather/monitor/analysis/dust/exception/ExceptionApproachExceeding.kt b/src/main/java/com/flightfeather/monitor/analysis/dust/exception/ExceptionApproachExceeding.kt index c334f4f..720ffce 100644 --- a/src/main/java/com/flightfeather/monitor/analysis/dust/exception/ExceptionApproachExceeding.kt +++ b/src/main/java/com/flightfeather/monitor/analysis/dust/exception/ExceptionApproachExceeding.kt @@ -18,6 +18,6 @@ override fun judgeDuration(sIndex: Int, eIndex: Int): Boolean { // 鍒ゆ柇鏁版嵁涓磋繎瓒呮爣鏁伴噺鏄惁杩炵画瓒呰繃闄愬畾涓暟 - return (eIndex - sIndex) >= config.nearExceedNum + return (eIndex - 1 - sIndex) >= config.nearExceedNum } } \ No newline at end of file diff --git a/src/main/java/com/flightfeather/monitor/analysis/dust/exception/ExceptionNoFluctuation.kt b/src/main/java/com/flightfeather/monitor/analysis/dust/exception/ExceptionNoFluctuation.kt index a6d0e4f..1f1daf2 100644 --- a/src/main/java/com/flightfeather/monitor/analysis/dust/exception/ExceptionNoFluctuation.kt +++ b/src/main/java/com/flightfeather/monitor/analysis/dust/exception/ExceptionNoFluctuation.kt @@ -21,6 +21,6 @@ } override fun judgeDuration(sIndex: Int, eIndex: Int): Boolean { - return (eIndex - sIndex) >= config.longTimeNoChange + return (eIndex - 1 - sIndex) >= config.longTimeNoChange } } \ No newline at end of file diff --git a/src/main/java/com/flightfeather/monitor/analysis/dust/exception/ExceptionValidRate.kt b/src/main/java/com/flightfeather/monitor/analysis/dust/exception/ExceptionValidRate.kt index 447574f..f18bf38 100644 --- a/src/main/java/com/flightfeather/monitor/analysis/dust/exception/ExceptionValidRate.kt +++ b/src/main/java/com/flightfeather/monitor/analysis/dust/exception/ExceptionValidRate.kt @@ -35,7 +35,7 @@ } override fun onDone() { - val rate = count / total + val rate = count.toDouble() / total if (rate < 0.9) { startData?.let { val eType = getExceptionType() diff --git a/src/main/java/com/flightfeather/monitor/analysis/dust/exception/ExceptionValueMutation.kt b/src/main/java/com/flightfeather/monitor/analysis/dust/exception/ExceptionValueMutation.kt index 2501601..5af244c 100644 --- a/src/main/java/com/flightfeather/monitor/analysis/dust/exception/ExceptionValueMutation.kt +++ b/src/main/java/com/flightfeather/monitor/analysis/dust/exception/ExceptionValueMutation.kt @@ -30,8 +30,8 @@ } override fun judgeDuration(sIndex: Int, eIndex: Int): Boolean { - val b1 = special && (eIndex - sIndex) >= (config.mutationNum / 2) - val b2 = (eIndex - sIndex) >= config.mutationNum + val b1 = special && (eIndex - 1 - sIndex) >= (config.mutationNum / 2) + val b2 = (eIndex - 1 - sIndex) >= config.mutationNum special = false return b1 || b2 } diff --git a/src/main/java/com/flightfeather/monitor/analysis/dust/risk/DustRiskAnalysis.kt b/src/main/java/com/flightfeather/monitor/analysis/dust/risk/DustRiskAnalysis.kt index 3e05493..cd8748a 100644 --- a/src/main/java/com/flightfeather/monitor/analysis/dust/risk/DustRiskAnalysis.kt +++ b/src/main/java/com/flightfeather/monitor/analysis/dust/risk/DustRiskAnalysis.kt @@ -5,6 +5,7 @@ import java.time.LocalDate import java.time.ZoneId import java.util.* +import kotlin.math.round /** * 鎵皹鐩戞祴鏁版嵁椋庨櫓鍒嗘瀽鍩虹被 @@ -50,16 +51,16 @@ * 鍦ㄧ嚎鐜囬闄╁�� */ fun riskOnlineRate(riskValue: RiskValue, data: DustStatisticsValue) { - val dayOnline = data.dayOnline.substring(0, data.dayOnline.lastIndex).toDouble() / 100 - riskValue.onlineRisk = 1 - dayOnline + val dayOnline = data.dayOnline + riskValue.onlineRisk = round((1 - dayOnline) * 10000) / 10000 } /** * 鏈夋晥鐜囬闄╁�� */ fun riskValidRate(riskValue: RiskValue, data: DustStatisticsValue) { - val dayValid = data.dayValid.substring(0, data.dayValid.lastIndex).toDouble() / 100 - riskValue.validRisk = 1 - dayValid + val dayValid = data.dayValid + riskValue.validRisk = round((1 - dayValid) * 10000) / 10000 } /** diff --git a/src/main/java/com/flightfeather/monitor/domain/ds1/entity/DustStatisticsValue.java b/src/main/java/com/flightfeather/monitor/domain/ds1/entity/DustStatisticsValue.java index 0a18280..7a5c715 100644 --- a/src/main/java/com/flightfeather/monitor/domain/ds1/entity/DustStatisticsValue.java +++ b/src/main/java/com/flightfeather/monitor/domain/ds1/entity/DustStatisticsValue.java @@ -14,20 +14,20 @@ private Date lst; @Column(name = "day_avg") - private String dayAvg; + private Double dayAvg; - private String min; + private Double min; - private String max; + private Double max; @Column(name = "day_online") - private String dayOnline; + private Double dayOnline; @Column(name = "day_valid") - private String dayValid; + private Double dayValid; @Column(name = "day_exceeding") - private String dayExceeding; + private Double dayExceeding; private String type; @@ -76,85 +76,85 @@ /** * @return day_avg */ - public String getDayAvg() { + public Double getDayAvg() { return dayAvg; } /** * @param dayAvg */ - public void setDayAvg(String dayAvg) { - this.dayAvg = dayAvg == null ? null : dayAvg.trim(); + public void setDayAvg(Double dayAvg) { + this.dayAvg = dayAvg; } /** * @return min */ - public String getMin() { + public Double getMin() { return min; } /** * @param min */ - public void setMin(String min) { - this.min = min == null ? null : min.trim(); + public void setMin(Double min) { + this.min = min; } /** * @return max */ - public String getMax() { + public Double getMax() { return max; } /** * @param max */ - public void setMax(String max) { - this.max = max == null ? null : max.trim(); + public void setMax(Double max) { + this.max = max; } /** * @return day_online */ - public String getDayOnline() { + public Double getDayOnline() { return dayOnline; } /** * @param dayOnline */ - public void setDayOnline(String dayOnline) { - this.dayOnline = dayOnline == null ? null : dayOnline.trim(); + public void setDayOnline(Double dayOnline) { + this.dayOnline = dayOnline; } /** * @return day_valid */ - public String getDayValid() { + public Double getDayValid() { return dayValid; } /** * @param dayValid */ - public void setDayValid(String dayValid) { - this.dayValid = dayValid == null ? null : dayValid.trim(); + public void setDayValid(Double dayValid) { + this.dayValid = dayValid; } /** * @return day_exceeding */ - public String getDayExceeding() { + public Double getDayExceeding() { return dayExceeding; } /** * @param dayExceeding */ - public void setDayExceeding(String dayExceeding) { - this.dayExceeding = dayExceeding == null ? null : dayExceeding.trim(); + public void setDayExceeding(Double dayExceeding) { + this.dayExceeding = dayExceeding; } /** diff --git a/src/main/java/com/flightfeather/monitor/scheduledtasks/dust/RiskMonthlyAnalysisTask.kt b/src/main/java/com/flightfeather/monitor/scheduledtasks/dust/RiskMonthlyAnalysisTask.kt index 62f485f..400344f 100644 --- a/src/main/java/com/flightfeather/monitor/scheduledtasks/dust/RiskMonthlyAnalysisTask.kt +++ b/src/main/java/com/flightfeather/monitor/scheduledtasks/dust/RiskMonthlyAnalysisTask.kt @@ -19,7 +19,7 @@ ) : BaseDustTimingTask(requestTaskRep) { override fun doTask(localtime: LocalDateTime) { - if (taskDelay || (localtime.dayOfMonth == 1 && localtime.hour == 11 && localtime.minute == 0)) { + if (taskDelay || (localtime.hour == 11 && localtime.minute == 0)) { taskDelay = isTaskDelay(localtime) if (!taskDelay) { log.info("鏈堥闄╁垎鏋愭墽琛�") diff --git a/src/main/java/com/flightfeather/monitor/service/impl/FugitiveDustServiceImpl.java b/src/main/java/com/flightfeather/monitor/service/impl/FugitiveDustServiceImpl.java index aafa6d7..4c0a672 100644 --- a/src/main/java/com/flightfeather/monitor/service/impl/FugitiveDustServiceImpl.java +++ b/src/main/java/com/flightfeather/monitor/service/impl/FugitiveDustServiceImpl.java @@ -10,7 +10,6 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import org.springframework.web.bind.annotation.RequestParam; import java.time.LocalDateTime; import java.util.List; diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 15597db..358ae74 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -21,8 +21,8 @@ mybatis: configuration: - log-impl: org.apache.ibatis.logging.stdout.StdOutImpl -# log-impl: org.apache.ibatis.logging.nologging.NoLoggingImpl +# log-impl: org.apache.ibatis.logging.stdout.StdOutImpl + log-impl: org.apache.ibatis.logging.nologging.NoLoggingImpl map-underscore-to-camel-case: true type-aliases-package: com.flightfeather.monitor.domain.ds1.entity mapper-locations: classpath*:mapper/**/*.xml diff --git a/src/main/resources/generator/generatorConfig4ds1.xml b/src/main/resources/generator/generatorConfig4ds1.xml index bd5dfdc..04740b2 100644 --- a/src/main/resources/generator/generatorConfig4ds1.xml +++ b/src/main/resources/generator/generatorConfig4ds1.xml @@ -70,10 +70,10 @@ <!-- enableCountByExample="false"--> <!-- enableUpdateByExample="false" enableDeleteByExample="false"--> <!-- enableSelectByExample="false" selectByExampleQueryId="false"/>--> -<!-- <table tableName="dust_statistics_value" domainObjectName="DustStatisticsValue"--> -<!-- enableCountByExample="false"--> -<!-- enableUpdateByExample="false" enableDeleteByExample="false"--> -<!-- enableSelectByExample="false" selectByExampleQueryId="false"/>--> + <table tableName="dust_statistics_value" domainObjectName="DustStatisticsValue" + enableCountByExample="false" + enableUpdateByExample="false" enableDeleteByExample="false" + enableSelectByExample="false" selectByExampleQueryId="false"/> <!-- <table tableName="ja_t_dust_site_data_info" domainObjectName="DustSiteData"--> <!-- enableCountByExample="false"--> <!-- enableUpdateByExample="false" enableDeleteByExample="false"--> @@ -90,9 +90,9 @@ <!-- enableCountByExample="false"--> <!-- enableUpdateByExample="false" enableDeleteByExample="false"--> <!-- enableSelectByExample="false" selectByExampleQueryId="false"/>--> - <table tableName="du_js_t_risk_value" domainObjectName="RiskValue" - enableCountByExample="false" - enableUpdateByExample="false" enableDeleteByExample="false" - enableSelectByExample="false" selectByExampleQueryId="false"/> +<!-- <table tableName="du_js_t_risk_value" domainObjectName="RiskValue"--> +<!-- enableCountByExample="false"--> +<!-- enableUpdateByExample="false" enableDeleteByExample="false"--> +<!-- enableSelectByExample="false" selectByExampleQueryId="false"/>--> </context> </generatorConfiguration> \ No newline at end of file diff --git a/src/main/resources/mapper/ds1/DustStatisticsValueMapper.xml b/src/main/resources/mapper/ds1/DustStatisticsValueMapper.xml index a19b0b5..23b89f8 100644 --- a/src/main/resources/mapper/ds1/DustStatisticsValueMapper.xml +++ b/src/main/resources/mapper/ds1/DustStatisticsValueMapper.xml @@ -1,27 +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.flightfeather.monitor.domain.ds1.mapper.DustStatisticsValueMapper"> - <resultMap id="BaseResultMap" type="com.flightfeather.monitor.domain.ds1.entity.DustStatisticsValue"> - <!-- - WARNING - @mbg.generated - --> - <id column="id" jdbcType="INTEGER" property="id"/> - <result column="mn_code" jdbcType="VARCHAR" property="mnCode"/> - <result column="lst" jdbcType="DATE" property="lst"/> - <result column="day_avg" jdbcType="VARCHAR" property="dayAvg"/> - <result column="min" jdbcType="VARCHAR" property="min"/> - <result column="max" jdbcType="VARCHAR" property="max"/> - <result column="day_online" jdbcType="VARCHAR" property="dayOnline"/> - <result column="day_valid" jdbcType="VARCHAR" property="dayValid"/> - <result column="day_exceeding" jdbcType="VARCHAR" property="dayExceeding"/> - <result column="type" jdbcType="VARCHAR" property="type"/> - </resultMap> - <sql id="Base_Column_List"> - <!-- - WARNING - @mbg.generated - --> - id, mn_code, lst, day_avg, min, max, day_online, day_valid, day_exceeding, type - </sql> + <resultMap id="BaseResultMap" type="com.flightfeather.monitor.domain.ds1.entity.DustStatisticsValue"> + <!-- + WARNING - @mbg.generated + --> + <id column="id" jdbcType="INTEGER" property="id" /> + <result column="mn_code" jdbcType="VARCHAR" property="mnCode" /> + <result column="lst" jdbcType="DATE" property="lst" /> + <result column="day_avg" jdbcType="DOUBLE" property="dayAvg" /> + <result column="min" jdbcType="DOUBLE" property="min" /> + <result column="max" jdbcType="DOUBLE" property="max" /> + <result column="day_online" jdbcType="DOUBLE" property="dayOnline" /> + <result column="day_valid" jdbcType="DOUBLE" property="dayValid" /> + <result column="day_exceeding" jdbcType="DOUBLE" property="dayExceeding" /> + <result column="type" jdbcType="VARCHAR" property="type" /> + </resultMap> + <sql id="Base_Column_List"> + <!-- + WARNING - @mbg.generated + --> + id, mn_code, lst, day_avg, min, max, day_online, day_valid, day_exceeding, type + </sql> <insert id="dailyStatics"> insert into dust_statistics_value(mn_code,lst,day_avg,min,max,day_online,day_valid,day_exceeding,type) @@ -33,8 +33,8 @@ min(dust_value) as min, max(dust_value) as max, ROUND(COUNT(*)/96, 4) as day_online, - ROUND(SUM(CASE WHEN dust_value >0 THEN 1 ELSE 0 END)/96, 4) as day_valid, - ROUND(SUM(CASE WHEN dust_value >= 1 THEN 1 ELSE 0 END)/96, 4) as day_exceeding, + ROUND(SUM(CASE WHEN dust_value >0 THEN 1 ELSE 0 END)/96, 4) as day_valid, + ROUND(SUM(CASE WHEN dust_value >= 1 THEN 1 ELSE 0 END)/96, 4) as day_exceeding, 'day' as type from ja_t_dust_site_data_info where lst between #{beginTime} and #{endTime} @@ -53,7 +53,7 @@ MAX(dust_value) AS max, ROUND(COUNT(*) / #{count}, 4) AS month_online, ROUND(SUM(CASE WHEN flag = 'N' OR flag = 'A' THEN 1 ELSE 0 END) / #{count}, 4) AS month_valid, - ROUND(SUM(CASE WHEN dust_value >= 1 THEN 1 ELSE 0 END) / #{count}, 4) AS month_exceeding, + ROUND(SUM(CASE WHEN dust_value >= 1 THEN 1 ELSE 0 END) / #{count}, 4) AS month_exceeding, 'month' as type FROM ja_t_dust_site_data_info WHERE lst BETWEEN #{beginTime} and #{endTime} diff --git a/src/test/java/com/flightfeather/monitor/analysis/dust/ExceptionAnalysisControllerTest.kt b/src/test/java/com/flightfeather/monitor/analysis/dust/ExceptionAnalysisControllerTest.kt index 99cde34..fbe0ee1 100644 --- a/src/test/java/com/flightfeather/monitor/analysis/dust/ExceptionAnalysisControllerTest.kt +++ b/src/test/java/com/flightfeather/monitor/analysis/dust/ExceptionAnalysisControllerTest.kt @@ -27,8 +27,8 @@ @Test fun run() { exceptionAnalysisController.init() - var d1 = LocalDate.of(2023, 7, 1) - val d2 = LocalDate.of(2023, 11, 21) + var d1 = LocalDate.of(2023, 11, 27) + val d2 = LocalDate.of(2023, 11, 27) while (d1.isEqual(d2) || d1.isBefore(d2)) { exceptionAnalysisController.run(d1) d1 = d1.plusDays(1) diff --git a/src/test/java/com/flightfeather/monitor/analysis/dust/RiskAnalysisControllerTest.kt b/src/test/java/com/flightfeather/monitor/analysis/dust/RiskAnalysisControllerTest.kt index 7ac1b93..96e1c03 100644 --- a/src/test/java/com/flightfeather/monitor/analysis/dust/RiskAnalysisControllerTest.kt +++ b/src/test/java/com/flightfeather/monitor/analysis/dust/RiskAnalysisControllerTest.kt @@ -1,5 +1,6 @@ package com.flightfeather.monitor.analysis.dust +import com.flightfeather.monitor.utils.DateUtil import org.junit.Test import org.junit.jupiter.api.extension.ExtendWith import org.junit.runner.RunWith @@ -7,6 +8,7 @@ import org.springframework.boot.test.context.SpringBootTest import org.springframework.test.context.junit.jupiter.SpringExtension import org.springframework.test.context.junit4.SpringRunner +import java.time.LocalDate @RunWith(SpringRunner::class) @ExtendWith(SpringExtension::class) @@ -19,18 +21,20 @@ @Test fun autoRunDaily() { riskAnalysisController.init() -// val s = LocalDate.of(2023, 10, 1) -// val e = LocalDate.of(2023, 10, 31) -// val du = DateUtil.findDurationDate(s, e) -// du.forEach { -// riskAnalysisController.runDaily(it) -// } - riskAnalysisController.autoRunDaily() + val s = LocalDate.of(2023, 10, 1) + val e = LocalDate.of(2023, 10, 31) + val du = DateUtil.findDurationDate(s, e) + du.forEach { + riskAnalysisController.runDaily(it) + } +// riskAnalysisController.autoRunDaily() } @Test fun autoRunMonthly() { riskAnalysisController.init() - riskAnalysisController.autoRunMonthly() + val s = LocalDate.of(2023, 10, 1) + riskAnalysisController.runMonthly(s) +// riskAnalysisController.autoRunMonthly() } } \ No newline at end of file diff --git a/src/test/java/com/flightfeather/monitor/analysis/dust/StatisticAnalysisControllerTest.kt b/src/test/java/com/flightfeather/monitor/analysis/dust/StatisticAnalysisControllerTest.kt index a1d4971..0ad8e05 100644 --- a/src/test/java/com/flightfeather/monitor/analysis/dust/StatisticAnalysisControllerTest.kt +++ b/src/test/java/com/flightfeather/monitor/analysis/dust/StatisticAnalysisControllerTest.kt @@ -18,13 +18,13 @@ @Test fun dailyStatics() { - val d = LocalDate.of(2023, 7, 2) + val d = LocalDate.of(2023, 11, 27) statisticAnalysisController.dailyStatics(d) } @Test fun monthlyStatics() { - val d = LocalDate.of(2023, 7, 1) + val d = LocalDate.of(2023, 11, 1) statisticAnalysisController.monthlyStatics(d) } -- Gitblit v1.9.3