From e2392116cd6f875cdc2f46bc04b04d5305f21b56 Mon Sep 17 00:00:00 2001 From: feiyu02 <risaku@163.com> Date: 星期四, 23 十一月 2023 13:25:04 +0800 Subject: [PATCH] 1. 修改日统计值的排序查询逻辑 --- src/main/java/com/flightfeather/monitor/analysis/dust/exception/ExceptionDataMissing.kt | 67 +++- src/test/java/com/flightfeather/monitor/analysis/dust/ExceptionAnalysisControllerTest.kt | 6 src/main/java/com/flightfeather/monitor/pojo/AnalysisDustData.java | 6 src/main/java/com/flightfeather/monitor/analysis/dust/exception/ExceptionValueMutation.kt | 19 + src/main/java/com/flightfeather/monitor/domain/ds1/mapper/DustStatisticsValueMapper.kt | 7 src/main/java/com/flightfeather/monitor/controller/FugitiveDustController.java | 125 ++++---- src/main/java/com/flightfeather/monitor/enumration/dust/ExceptionType.kt | 3 src/main/java/com/flightfeather/monitor/analysis/dust/exception/ExceptionExceedingTimes.kt | 3 src/main/java/com/flightfeather/monitor/analysis/dust/exception/ExceptionDataLowValue.kt | 20 - src/main/java/com/flightfeather/monitor/analysis/dust/exception/ExceptionValidRate.kt | 58 ++++ src/main/java/com/flightfeather/monitor/domain/ds1/repository/RiskValueRep.kt | 31 ++ src/main/java/com/flightfeather/monitor/analysis/dust/exception/BaseExceptionContinuousSingle.kt | 35 ++ src/main/java/com/flightfeather/monitor/analysis/dust/exception/BaseExceptionContinuous.kt | 14 src/main/java/com/flightfeather/monitor/enumration/dust/DataStatus.kt | 16 + src/main/java/com/flightfeather/monitor/analysis/dust/ExceptionAnalysisController.kt | 15 src/main/java/com/flightfeather/monitor/analysis/dust/RiskAnalysisController.kt | 15 src/main/java/com/flightfeather/monitor/analysis/dust/exception/ExceptionNoFluctuation.kt | 6 src/main/java/com/flightfeather/monitor/service/impl/FugitiveDustServiceImpl.java | 88 +++-- src/main/java/com/flightfeather/monitor/analysis/dust/exception/ExceptionDataMissing_BackUp.kt | 37 ++ src/main/resources/mapper/ds1/DustStatisticsValueMapper.xml | 158 +++++++---- src/main/java/com/flightfeather/monitor/analysis/dust/exception/ExceptionDataExceed.kt | 5 src/main/java/com/flightfeather/monitor/service/FugitiveDustService.java | 15 src/main/java/com/flightfeather/monitor/utils/StringUtil.kt | 27 + src/main/resources/application.yml | 16 src/main/java/com/flightfeather/monitor/analysis/dust/exception/ExceptionSlideAverage.kt | 26 + 25 files changed, 577 insertions(+), 241 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 d2bb044..fe53e75 100644 --- a/src/main/java/com/flightfeather/monitor/analysis/dust/ExceptionAnalysisController.kt +++ b/src/main/java/com/flightfeather/monitor/analysis/dust/ExceptionAnalysisController.kt @@ -33,13 +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(ExceptionNoFluctuation(it)) +// add(ExceptionApproachExceeding(it)) +// add(ExceptionExceedingTimes(it)) +// add(ExceptionSlideAverage(it)) +// add(ExceptionValueMutation(it)) +// add(ExceptionDataLowValue(it)) +// add(ExceptionDataExceed(it)) +// add(ExceptionValidRate(it)) } } } diff --git a/src/main/java/com/flightfeather/monitor/analysis/dust/RiskAnalysisController.kt b/src/main/java/com/flightfeather/monitor/analysis/dust/RiskAnalysisController.kt index d43c341..61fe986 100644 --- a/src/main/java/com/flightfeather/monitor/analysis/dust/RiskAnalysisController.kt +++ b/src/main/java/com/flightfeather/monitor/analysis/dust/RiskAnalysisController.kt @@ -35,6 +35,9 @@ } } + /** + * 鏃ラ闄╃粺璁�,榛樿缁熻鏄ㄥぉ鐨勯闄╁�� + */ fun autoRunDaily() { val data = riskValueRep.findLatestData("day") val yesterday = LocalDate.now().minusDays(1) @@ -54,15 +57,21 @@ } } + /** + * 鏈堥闄╃粺璁�,鏍规嵁鏄ㄦ棩鏈�鏂版暟鎹墍鍦ㄦ湀浠�,缁熻璇ユ湀鐨勭患鍚堥闄�,鎴嚦鏄ㄥぉ + */ fun autoRunMonthly() { val data = riskValueRep.findLatestData("month") val lastMonth = LocalDate.now().minusMonths(1).withDayOfMonth(1) if (data == null) { runMonthly(lastMonth) } else { + // 鑾峰彇闇�瑕佺粺璁$殑鏈�鏂版湀浠�,鏄槰澶╂墍鍦ㄧ殑鏈堜唤(鍥犱负鐩戞祴鏁版嵁鏄粖澶╄幏鍙栨槰澶╀竴鏁村ぉ鐨勬暟鎹�) + val thisMonth = LocalDate.now().minusDays(1) + // 鏈�鏂版湀缁熻璁板綍鐨勬椂闂� val date = LocalDateTime.ofInstant(data.lst.toInstant(), ZoneId.systemDefault()) - val sT = date.plusMonths(1).toLocalDate() - val du = DateUtil.findDurationMonth(sT, lastMonth) + val sT = date.toLocalDate() + val du = DateUtil.findDurationMonth(sT, thisMonth) du.forEach { runMonthly(it) } @@ -102,7 +111,7 @@ } // 鎵�鏈夊垎鏋愮粨鏋滃叆搴� if (taskMonthly?.resultList?.isNotEmpty() == true) { - riskValueRep.insert(taskMonthly?.resultList!!) + riskValueRep.insertOrUpdate(taskMonthly?.resultList!!) } running2 = false } diff --git a/src/main/java/com/flightfeather/monitor/analysis/dust/exception/BaseExceptionContinuous.kt b/src/main/java/com/flightfeather/monitor/analysis/dust/exception/BaseExceptionContinuous.kt index 59964e3..5f7d1f6 100644 --- a/src/main/java/com/flightfeather/monitor/analysis/dust/exception/BaseExceptionContinuous.kt +++ b/src/main/java/com/flightfeather/monitor/analysis/dust/exception/BaseExceptionContinuous.kt @@ -4,21 +4,21 @@ import com.flightfeather.monitor.domain.ds1.entity.DustSiteData /** - * 杩炵画绫诲瀷鐨勫紓甯稿垎鏋愬熀绫� + * 杩炵画绫诲瀷鐨勫紓甯稿垎鏋愬熀绫�,閫傜敤浜庡綋鍓嶆暟鎹笌鐩搁偦鏁版嵁涔嬮棿鏈夊叧鑱斿叧绯荤殑鎯呭喌 */ abstract class BaseExceptionContinuous(config: DustExceptionSetting) : BaseDustExceptionAnalysis(config) { // 璧峰鏁版嵁涓嬫爣 - private var sIndex = 0 + protected var sIndex = 0 // 璧峰鏁版嵁瀵硅薄 - private var startData: DustSiteData? = null + protected var startData: DustSiteData? = null // 鏈熬鏁版嵁涓嬫爣 - private var eIndex = -1 + protected var eIndex = -1 // 鏈熬鏁版嵁瀵硅薄 - private var lastData: DustSiteData? = null + protected var lastData: DustSiteData? = null // 璧峰鏁版嵁涓庢湯灏炬暟鎹棿闅� open var durationCount = 1 - private var existException = false + protected var existException = false /** * 鍒ゆ柇鏄惁婊¤冻寮傚父鏉′欢 @@ -75,7 +75,7 @@ /** * 妫�鏌ヨ繛缁紓甯哥粨鏉熸椂锛屾槸鍚︾鍚堝紓甯稿瓨鍌ㄦ潯浠� */ - private fun checkResult() { + open fun checkResult() { if (existException && judgeDuration(sIndex, eIndex)) { startData?.let { resultList.add(newResult(it, lastData)) diff --git a/src/main/java/com/flightfeather/monitor/analysis/dust/exception/BaseExceptionContinuousSingle.kt b/src/main/java/com/flightfeather/monitor/analysis/dust/exception/BaseExceptionContinuousSingle.kt new file mode 100644 index 0000000..16d89a9 --- /dev/null +++ b/src/main/java/com/flightfeather/monitor/analysis/dust/exception/BaseExceptionContinuousSingle.kt @@ -0,0 +1,35 @@ +package com.flightfeather.monitor.analysis.dust.exception + +import com.flightfeather.monitor.domain.ds1.entity.DustExceptionSetting +import com.flightfeather.monitor.domain.ds1.entity.DustSiteData + +/** + * 杩炵画绫诲瀷鐨勫紓甯稿垎鏋愬熀绫�,鍖哄埆浜庣埗绫荤殑鍦版柟鍦ㄤ簬姝ょ寮傚父鍙拰鍗曚釜鏁版嵁鏈韩鏈夊叧,浜庣浉閭绘暟鎹棤鍏� + */ +abstract class BaseExceptionContinuousSingle(config: DustExceptionSetting) : BaseExceptionContinuous(config) { + + override fun onNextData(data: DustSiteData) { + eIndex++ + if (lastData == null) { + startData = data + } + // 鍒ゆ柇鐩搁偦鏁版嵁鏄惁杩炵画骞朵笖鏄惁婊¤冻寮傚父鍒ゆ柇 + if (!isContinuous(lastData, data)) { + checkResult() + sIndex = eIndex + startData = data + } else { + if (judgeException(lastData, data)) { + // 淇敼浜嗚捣濮嬫暟鎹殑浣嶇疆,鍙樻洿涓哄嚭鐜板紓甯哥殑璇ュ��,鑰屼笉鏄師鏉ョ殑鍑虹幇寮傚父鐨勬暟鎹殑鍓嶄竴涓�� + if (!existException) { + sIndex = eIndex + startData = data + } + existException = true + } else { + checkResult() + } + } + lastData = data + } +} \ No newline at end of file diff --git a/src/main/java/com/flightfeather/monitor/analysis/dust/exception/ExceptionDataExceed.kt b/src/main/java/com/flightfeather/monitor/analysis/dust/exception/ExceptionDataExceed.kt index 3dd3c6b..7efde9c 100644 --- a/src/main/java/com/flightfeather/monitor/analysis/dust/exception/ExceptionDataExceed.kt +++ b/src/main/java/com/flightfeather/monitor/analysis/dust/exception/ExceptionDataExceed.kt @@ -2,17 +2,18 @@ import com.flightfeather.monitor.domain.ds1.entity.DustExceptionSetting import com.flightfeather.monitor.domain.ds1.entity.DustSiteData +import com.flightfeather.monitor.enumration.dust.DataStatus import com.flightfeather.monitor.enumration.dust.ExceptionType /** * 鏁版嵁瓒呮爣寮傚父鍒嗘瀽 */ -class ExceptionDataExceed(config: DustExceptionSetting) : BaseExceptionContinuous(config) { +class ExceptionDataExceed(config: DustExceptionSetting) : BaseExceptionContinuousSingle(config) { override fun getExceptionType(): ExceptionType = ExceptionType.TYPE2 override fun judgeException(p: DustSiteData?, n: DustSiteData): Boolean { - return n.dustValue >= config.exceedingStandard + return n.dustValue >= config.exceedingStandard && n.flag == DataStatus.N.value } override fun judgeDuration(sIndex: Int, eIndex: Int): Boolean { diff --git a/src/main/java/com/flightfeather/monitor/analysis/dust/exception/ExceptionDataLowValue.kt b/src/main/java/com/flightfeather/monitor/analysis/dust/exception/ExceptionDataLowValue.kt index 353b7fe..acc2917 100644 --- a/src/main/java/com/flightfeather/monitor/analysis/dust/exception/ExceptionDataLowValue.kt +++ b/src/main/java/com/flightfeather/monitor/analysis/dust/exception/ExceptionDataLowValue.kt @@ -3,32 +3,24 @@ import com.flightfeather.monitor.domain.ds1.entity.DustExceptionData import com.flightfeather.monitor.domain.ds1.entity.DustExceptionSetting import com.flightfeather.monitor.domain.ds1.entity.DustSiteData +import com.flightfeather.monitor.enumration.dust.DataStatus import com.flightfeather.monitor.enumration.dust.ExceptionType /** * 鏁版嵁瓒呬綆寮傚父鍒嗘瀽 */ -class ExceptionDataLowValue(config: DustExceptionSetting) : BaseExceptionContinuous(config) { +class ExceptionDataLowValue(config: DustExceptionSetting) : BaseExceptionContinuousSingle(config) { override fun getExceptionType(): ExceptionType = ExceptionType.TYPE1 override fun judgeException(p: DustSiteData?, n: DustSiteData): Boolean { - return n.dustValue <= config.dataLow + val b1 = n.flag == DataStatus.OUT_MIN.value + val b2 = n.dustValue <= config.dataLow && n.flag == DataStatus.N.value + val b3 = n.flag == DataStatus.Q.value + return b1 || b2 || b3 } override fun judgeDuration(sIndex: Int, eIndex: Int): Boolean { return true - } - - override fun newResult(p: DustSiteData, n: DustSiteData?): DustExceptionData { - val eType = getExceptionType() - return DustExceptionData().apply { - mnCode = p.mnCode - exception = eType.des - exceptionType = eType.value - region = config.region - beginTime = n?.lst - endTime = n?.lst - } } } \ No newline at end of file diff --git a/src/main/java/com/flightfeather/monitor/analysis/dust/exception/ExceptionDataMissing.kt b/src/main/java/com/flightfeather/monitor/analysis/dust/exception/ExceptionDataMissing.kt index e47ae04..e85aa12 100644 --- a/src/main/java/com/flightfeather/monitor/analysis/dust/exception/ExceptionDataMissing.kt +++ b/src/main/java/com/flightfeather/monitor/analysis/dust/exception/ExceptionDataMissing.kt @@ -2,35 +2,68 @@ import com.flightfeather.monitor.domain.ds1.entity.DustExceptionSetting import com.flightfeather.monitor.domain.ds1.entity.DustSiteData +import com.flightfeather.monitor.enumration.dust.DataStatus import com.flightfeather.monitor.enumration.dust.ExceptionType import java.time.Duration +import java.time.LocalDateTime +import java.time.ZoneId +import java.util.* /** * 鏁版嵁缂哄け寮傚父鍒嗘瀽 */ -class ExceptionDataMissing(config: DustExceptionSetting) : BaseDustExceptionAnalysis(config) { - - private var lastData: DustSiteData? = null - - override fun init() { - super.init() - lastData = null - } +class ExceptionDataMissing(config: DustExceptionSetting) : BaseExceptionContinuous(config) { override fun getExceptionType(): ExceptionType = ExceptionType.TYPE0 - override fun onNextData(data: DustSiteData) { - lastData?.let { - val t1 = it.lst - val t2 = data.lst - if (Duration.between(t1?.toInstant(), t2.toInstant()).toMinutes() > config.missDataMinutes) { - resultList.add(newResult(it, data)) +// override fun onNextData(data: DustSiteData) { +// lastData?.let { +// val t1 = it.lst +// val t2 = data.lst +// val b1 = Duration.between(t1?.toInstant(), t2.toInstant()).toMinutes() >= config.missDataMinutes +// if (b1) { +// resultList.add(newResult(it, data)) +// } +// } +// lastData = data +// } + + override fun judgeException(p: DustSiteData?, n: DustSiteData): Boolean { + // 鏁版嵁缂哄け寮傚父涓嶅悓浜庡叾浠栧紓甯哥殑鐐瑰湪浜庡綋鏃ラ涓暟鎹鏋滀笉瀛樺湪锛岄渶瑕佸仛涓�娆″垽鏂� + var pData: DustSiteData? = null + if (p == null) { + //褰撻涓暟鎹繘鍏ユ椂锛岄渶瑕佸垽鏂槸鍚︿负褰撴棩鐨勭涓�涓暟鎹� + val time = LocalDateTime.ofInstant(n.lst.toInstant(), ZoneId.systemDefault()) + if (time.hour == 0 && time.minute == 0) { + return false + } + // 濡傛灉缂哄け褰撴棩棣栦釜鏁版嵁锛屽垯闇�瑕佸皢褰撳墠鏁版嵁n鍜屽綋鏃�0鐐硅繘琛屾瘮杈冿紝璁板綍鏁版嵁缂哄け寮傚父 + else { + startData = DustSiteData().apply { + mnCode = n.mnCode + lst = Date.from(time.withHour(0).withMinute(0).withSecond(0).atZone(ZoneId.systemDefault()) + .toInstant()) + flag = DataStatus.A.value + } + pData = startData } } - lastData = data + if (pData == null) return false + val t1 = pData.lst + val t2 = n.lst + val b1 = Duration.between(t1?.toInstant(), t2.toInstant()).toMinutes() >= config.missDataMinutes + val b2 = n.flag == DataStatus.A.value || n.flag == DataStatus.D.value + return b1 || b2 } - override fun onDone() { - //do noting + override fun judgeDuration(sIndex: Int, eIndex: Int): Boolean { + return true + } + + /** + * 閽堝鏁版嵁缂哄け寮傚父, 瀵规暟鎹殑杩炵画鎬т笉鍋氬垽鏂� + */ + override fun isContinuous(d1: DustSiteData?, d2: DustSiteData): Boolean { + return true } } \ No newline at end of file diff --git a/src/main/java/com/flightfeather/monitor/analysis/dust/exception/ExceptionDataMissing_BackUp.kt b/src/main/java/com/flightfeather/monitor/analysis/dust/exception/ExceptionDataMissing_BackUp.kt new file mode 100644 index 0000000..fe872d1 --- /dev/null +++ b/src/main/java/com/flightfeather/monitor/analysis/dust/exception/ExceptionDataMissing_BackUp.kt @@ -0,0 +1,37 @@ +package com.flightfeather.monitor.analysis.dust.exception + +import com.flightfeather.monitor.domain.ds1.entity.DustExceptionSetting +import com.flightfeather.monitor.domain.ds1.entity.DustSiteData +import com.flightfeather.monitor.enumration.dust.ExceptionType +import java.time.Duration + +/** + * 鏁版嵁缂哄け寮傚父鍒嗘瀽 + */ +class ExceptionDataMissing_BackUp(config: DustExceptionSetting) : BaseDustExceptionAnalysis(config) { + + private var lastData: DustSiteData? = null + + override fun init() { + super.init() + lastData = null + } + + override fun getExceptionType(): ExceptionType = ExceptionType.TYPE0 + + override fun onNextData(data: DustSiteData) { + lastData?.let { + val t1 = it.lst + val t2 = data.lst + val b1 = Duration.between(t1?.toInstant(), t2.toInstant()).toMinutes() >= config.missDataMinutes + if (b1) { + resultList.add(newResult(it, data)) + } + } + lastData = data + } + + override fun onDone() { + //do noting + } +} \ No newline at end of file diff --git a/src/main/java/com/flightfeather/monitor/analysis/dust/exception/ExceptionExceedingTimes.kt b/src/main/java/com/flightfeather/monitor/analysis/dust/exception/ExceptionExceedingTimes.kt index b67ecd9..0646ca8 100644 --- a/src/main/java/com/flightfeather/monitor/analysis/dust/exception/ExceptionExceedingTimes.kt +++ b/src/main/java/com/flightfeather/monitor/analysis/dust/exception/ExceptionExceedingTimes.kt @@ -3,6 +3,7 @@ import com.flightfeather.monitor.domain.ds1.entity.DustExceptionData import com.flightfeather.monitor.domain.ds1.entity.DustExceptionSetting import com.flightfeather.monitor.domain.ds1.entity.DustSiteData +import com.flightfeather.monitor.enumration.dust.DataStatus import com.flightfeather.monitor.enumration.dust.ExceptionType import java.time.LocalDateTime import java.time.ZoneId @@ -27,7 +28,7 @@ override fun onNextData(data: DustSiteData) { if (startData == null) startData = data - if (data.dustValue >= config.exceedingStandard) { + if (data.dustValue >= config.exceedingStandard && data.flag == DataStatus.N.value) { exceedingCount++ } } 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 c83b49e..a6d0e4f 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 @@ -2,6 +2,7 @@ import com.flightfeather.monitor.domain.ds1.entity.DustExceptionSetting import com.flightfeather.monitor.domain.ds1.entity.DustSiteData +import com.flightfeather.monitor.enumration.dust.DataStatus import com.flightfeather.monitor.enumration.dust.ExceptionType /** @@ -13,7 +14,10 @@ override fun judgeException(p: DustSiteData?, n: DustSiteData): Boolean { if (p == null) return false - return p.dustValue == n.dustValue + val b1 = p.dustValue == n.dustValue + val b2 = p.flag != DataStatus.A.value && p.flag != DataStatus.D.value + val b3 = n.flag != DataStatus.A.value && n.flag != DataStatus.D.value + return b1 && b2 && b3 } override fun judgeDuration(sIndex: Int, eIndex: Int): Boolean { diff --git a/src/main/java/com/flightfeather/monitor/analysis/dust/exception/ExceptionSlideAverage.kt b/src/main/java/com/flightfeather/monitor/analysis/dust/exception/ExceptionSlideAverage.kt index fa5ff5a..fe7f1f9 100644 --- a/src/main/java/com/flightfeather/monitor/analysis/dust/exception/ExceptionSlideAverage.kt +++ b/src/main/java/com/flightfeather/monitor/analysis/dust/exception/ExceptionSlideAverage.kt @@ -2,6 +2,7 @@ import com.flightfeather.monitor.domain.ds1.entity.DustExceptionSetting import com.flightfeather.monitor.domain.ds1.entity.DustSiteData +import com.flightfeather.monitor.enumration.dust.DataStatus import com.flightfeather.monitor.enumration.dust.ExceptionType import kotlin.math.abs @@ -12,7 +13,7 @@ private val historyDataList = mutableListOf<DustSiteData>() private val tempDataList = mutableListOf<DustSiteData>() - private val avgListReverse = mutableListOf<Double>() + private val avgListReverse = mutableListOf<Pair<Double, Boolean>>() private var startData: DustSiteData? = null private var lastData: DustSiteData? = null private var sIndex = 0 @@ -67,11 +68,17 @@ */ private fun calAvg(list: List<DustSiteData>) { var total = .0 + var valid = true val count = list.size if (count == 0) return - list.forEach { total += it.dustValue } + list.forEach { + total += it.dustValue + if (it.flag != DataStatus.N.value) { + valid = false + } + } val avg = total / count - avgListReverse.add(0, avg) + avgListReverse.add(0, Pair(avg, valid)) } /** @@ -84,14 +91,14 @@ return false } else { // 婊戝姩鍧囧�兼弧瓒虫暟閲忔椂锛岃绠楀潎鍊间箣闂存槸鍚﹁繛缁秴杩囬檺瀹氭瘮鐜� - val rateList = mutableListOf<Double>() + val rateList = mutableListOf<Pair<Double, Boolean>>() for (i in avgListReverse.indices) { if (i >= config.changeTrendTimes) break val r = calAvgChangeRate(avgListReverse[i], avgListReverse[i + config.changeTrendInterval]) rateList.add(r) } for (y in rateList) { - if (y < config.changeTrendRate) { + if (!y.second || y.first < config.changeTrendRate) { return false } } @@ -102,11 +109,12 @@ /** * 璁$畻婊戝姩鍧囧�煎彉鍖栫巼 */ - private fun calAvgChangeRate(a1: Double, a2: Double): Double { - return if (a2 == .0) { - 1.0 + private fun calAvgChangeRate(a1: Pair<Double, Boolean>, a2: Pair<Double, Boolean>): Pair<Double, Boolean> { + val valid = a1.second && a2.second + return if (a2.first == .0) { + Pair(1.0, valid) } else { - abs(a1 - a2) / a2 + Pair(abs(a1.first - a2.first) / a2.first, valid) } } 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 new file mode 100644 index 0000000..447574f --- /dev/null +++ b/src/main/java/com/flightfeather/monitor/analysis/dust/exception/ExceptionValidRate.kt @@ -0,0 +1,58 @@ +package com.flightfeather.monitor.analysis.dust.exception + +import com.flightfeather.monitor.domain.ds1.entity.DustExceptionData +import com.flightfeather.monitor.domain.ds1.entity.DustExceptionSetting +import com.flightfeather.monitor.domain.ds1.entity.DustSiteData +import com.flightfeather.monitor.enumration.dust.DataStatus +import com.flightfeather.monitor.enumration.dust.ExceptionType +import java.time.LocalDateTime +import java.time.ZoneId +import java.util.* + +/** + * 鏁版嵁鏈夋晥鐜囧紓甯� + */ +class ExceptionValidRate(config: DustExceptionSetting) : BaseDustExceptionAnalysis(config) { + + private var count = 0 + private val total = 96 + private var startData: DustSiteData? = null + + override fun init() { + super.init() + count = 0 + startData = null + } + + override fun getExceptionType(): ExceptionType = ExceptionType.TYPE8 + + override fun onNextData(data: DustSiteData) { + if (startData == null) startData = data + + if (data.flag == DataStatus.N.value) { + count++ + } + } + + override fun onDone() { + val rate = count / total + if (rate < 0.9) { + startData?.let { + val eType = getExceptionType() + val t = LocalDateTime.ofInstant(it.lst.toInstant(), ZoneId.systemDefault()) + .withHour(0).withMinute(0).withSecond(0) + val sT = Date.from(t.atZone(ZoneId.systemDefault()).toInstant()) + val n = t.plusDays(1).minusSeconds(1) + val eT = Date.from(n.atZone(ZoneId.systemDefault()).toInstant()) + resultList.add(DustExceptionData().apply { + mnCode = it.mnCode + exception = eType.des + exceptionType = eType.value + region = config.region + beginTime = sT + endTime = eT + }) + } + } + } +} \ No newline at end of file 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 1695904..2501601 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 @@ -2,6 +2,7 @@ import com.flightfeather.monitor.domain.ds1.entity.DustExceptionSetting import com.flightfeather.monitor.domain.ds1.entity.DustSiteData +import com.flightfeather.monitor.enumration.dust.DataStatus import com.flightfeather.monitor.enumration.dust.ExceptionType import kotlin.math.abs @@ -10,14 +11,28 @@ */ class ExceptionValueMutation(config: DustExceptionSetting) : BaseExceptionContinuous(config) { + /** + * 鏈紓甯哥殑杩炵画鍙戠敓娆℃暟浼氭牴鎹紓甯哥殑绋嬪害鍙樺寲 + * 褰撶獊鍙樼殑閲忕骇瓒呰繃璁惧畾鍊�1鍊嶆槸,杩炵画鍙戠敓娆℃暟瑕佹眰鍑忓皯1鍊� + */ + private var special = false + override fun getExceptionType(): ExceptionType = ExceptionType.TYPE4 override fun judgeException(p: DustSiteData?, n: DustSiteData): Boolean { if (p == null) return false - return abs((p.dustValue - n.dustValue) / p.dustValue) >= config.mutationRate + val r = abs((p.dustValue - n.dustValue) / p.dustValue) + val b1 = r >= (2 * config.mutationRate) && n.flag == DataStatus.N.value + val b2 = r >= config.mutationRate && n.flag == DataStatus.N.value + val b3 = n.flag == DataStatus.OUT_MAX.value + if (b1) special = true + return b1 || b2 || b3 } override fun judgeDuration(sIndex: Int, eIndex: Int): Boolean { - return (eIndex - sIndex + 1) >= config.mutationNum + val b1 = special && (eIndex - sIndex) >= (config.mutationNum / 2) + val b2 = (eIndex - sIndex) >= config.mutationNum + special = false + return b1 || b2 } } \ No newline at end of file diff --git a/src/main/java/com/flightfeather/monitor/controller/FugitiveDustController.java b/src/main/java/com/flightfeather/monitor/controller/FugitiveDustController.java index 5a63bf0..806e493 100644 --- a/src/main/java/com/flightfeather/monitor/controller/FugitiveDustController.java +++ b/src/main/java/com/flightfeather/monitor/controller/FugitiveDustController.java @@ -19,58 +19,68 @@ private FugitiveDustService fugitiveDustService; - //鎵皹 鐩戞祴鐐瑰巻鍙叉暟鎹� 鍚庣鍒嗛〉 @GetMapping("/history1") public Result conditonQueryAbnormalData3(@RequestParam(defaultValue = "1") Integer page, - @RequestParam(defaultValue = "20")Integer pageSize, - String siteName,String mnCode,String beginTime, String endTime,String[] scenarioType ){ - PageBean pageBean = fugitiveDustService.page(page,pageSize,siteName,mnCode, beginTime,endTime,scenarioType); + @RequestParam(defaultValue = "20") Integer pageSize, + String siteName, String mnCode, String beginTime, String endTime, String[] scenarioType) { + PageBean pageBean = fugitiveDustService.page(page, pageSize, siteName, mnCode, beginTime, endTime, scenarioType); return Result.success(pageBean); } -// 杩斿洖鏌ヨ鐨勬墍鏈夊巻鍙叉暟鎹� + // 杩斿洖鏌ヨ鐨勬墍鏈夊巻鍙叉暟鎹� @GetMapping("/historyall") - public Result conditonQueryhistoryallData(String siteName,String mnCode,String beginTime, String endTime,String[] scenarioType ){ - List<DustSiteData> list= fugitiveDustService.conditonQueryhistoryallData(siteName,mnCode, beginTime,endTime,scenarioType); + public Result conditonQueryhistoryallData(String siteName, String mnCode, String beginTime, String endTime, String[] scenarioType) { + List<DustSiteData> list = fugitiveDustService.conditonQueryhistoryallData(siteName, mnCode, beginTime, endTime, scenarioType); return Result.success(list); } -// 杩斿洖鐩戞祴鐐规暟鎹腑鐨勪笉鍚岀殑鍦烘櫙 + + // 杩斿洖鐩戞祴鐐规暟鎹腑鐨勪笉鍚岀殑鍦烘櫙 @GetMapping("/scenario") - public Result conditonQueryHistoryData(){ + public Result conditonQueryHistoryData() { List<DustSiteData> list = fugitiveDustService.scenarioData(); return Result.success(list); } -// 杩斿洖鎵�鏈夌珯鐐瑰悕瀛� + + // 杩斿洖鎵�鏈夌珯鐐瑰悕瀛� @GetMapping("/sitename") - public Result allSiteName(){ + public Result allSiteName() { List<DustSiteData> list = fugitiveDustService.allSiteName(); return Result.success(list); } -// 鏍规嵁绔欑偣鍚嶅瓧鍜屾椂闂存鏌ヨ鍧囧�煎拰 + // 鏍规嵁绔欑偣鍚嶅瓧鍜屾椂闂存鏌ヨ鍧囧�煎拰 @GetMapping("/analysisdata") - public Result analysisdata( String siteName,String beginTime, String endTime,String type){ - List<AnalysisDustData> list = fugitiveDustService.analysisdata(siteName,beginTime,endTime,type); + public Result analysisdata(String siteName, String beginTime, String endTime, String type) { + List<AnalysisDustData> list = fugitiveDustService.analysisdata(siteName, beginTime, endTime, type); return Result.success(list); } -// 鏍规嵁绔欑偣鍚嶅瓧鍜屾椂娈佃繘琛岀粺璁″垎鏋� 鍚庣鍒嗛〉 + // 鏍规嵁绔欑偣鍚嶅瓧鍜屾椂娈佃繘琛岀粺璁″垎鏋� 鍚庣鍒嗛〉 @GetMapping("/analysistime") - public Result analysisByTime( @RequestParam(defaultValue = "1") Integer page, - @RequestParam(defaultValue = "20")Integer pageSize,String siteName,String beginTime, String endTime){ - PageBean pageBean = fugitiveDustService.pageAnalysisTime(page,pageSize,siteName,beginTime,endTime); - return Result.success(pageBean); -} + public Result analysisByTime( + @RequestParam(defaultValue = "1") Integer page, + @RequestParam(defaultValue = "20") Integer pageSize, + String siteName, + String beginTime, + String endTime, + String orderProp, + Boolean asc) { + PageBean pageBean = fugitiveDustService.pageAnalysisTime(page, pageSize, siteName, beginTime, endTime, + orderProp, asc); + return Result.success(pageBean); + } + //鍔ㄦ�佽绠楀垎鏋愭暟鎹� 涓嶅垎椤� @GetMapping("/analysisall") - public Result analysisAll(String siteName,String beginTime, String endTime){ - List<AnalysisDustData> list = fugitiveDustService.analysisAll(siteName,beginTime,endTime); + public Result analysisAll(String siteName, String beginTime, String endTime) { + List<AnalysisDustData> list = fugitiveDustService.analysisAll(siteName, beginTime, endTime); return Result.success(list); } -//鑾峰緱涓嶅悓鐨勫紓甯哥被鍨� + + //鑾峰緱涓嶅悓鐨勫紓甯哥被鍨� @GetMapping("/exceptiontype") - public Result getExceptionType(){ + public Result getExceptionType() { List<DustExceptionType> list = fugitiveDustService.getExceptionType(); return Result.success(list); } @@ -79,113 +89,112 @@ //鏉′欢鏌ヨ寮傚父鏁版嵁 @GetMapping("/exceptiondata") public Result getExceptionData(@RequestParam(defaultValue = "1") Integer page, - @RequestParam(defaultValue = "20")Integer pageSize,String siteName,String [] exceptionType,String beginTime, String endTime){ - PageBean pageBean = fugitiveDustService.getExceptionData(page,pageSize,siteName,exceptionType,beginTime,endTime); - return Result.success(pageBean); -} - + @RequestParam(defaultValue = "20") Integer pageSize, String siteName, String[] exceptionType, String beginTime, String endTime) { + PageBean pageBean = fugitiveDustService.getExceptionData(page, pageSize, siteName, exceptionType, beginTime, endTime); + return Result.success(pageBean); + } //鏉′欢鏌ヨ寮傚父鏁版嵁 涓嶅垎椤� @GetMapping("/exceptiondata1") - public Result getExceptionAllData(String siteName,String [] exceptionType,String beginTime, String endTime){ - List<DustExceptionData> list = fugitiveDustService.getExceptionAllData(siteName,exceptionType,beginTime,endTime); + public Result getExceptionAllData(String siteName, String[] exceptionType, String beginTime, String endTime) { + List<DustExceptionData> list = fugitiveDustService.getExceptionAllData(siteName, exceptionType, beginTime, endTime); return Result.success(list); } //澧炲姞琛楅亾鍜岃繍缁村晢 鏉′欢鏌ヨ寮傚父鏁版嵁 @GetMapping("/exceptiondata2") public Result getExceptionData2(@RequestParam(defaultValue = "1") Integer page, - @RequestParam(defaultValue = "20")Integer pageSize,String siteName,String [] exceptionType,String beginTime, String endTime,String [] street,String [] dutyCompany){ - PageBean pageBean = fugitiveDustService.getExceptionData2(page,pageSize,siteName,exceptionType,beginTime,endTime,street,dutyCompany); + @RequestParam(defaultValue = "20") Integer pageSize, String siteName, String[] exceptionType, String beginTime, String endTime, String[] street, String[] dutyCompany) { + PageBean pageBean = fugitiveDustService.getExceptionData2(page, pageSize, siteName, exceptionType, beginTime, endTime, street, dutyCompany); return Result.success(pageBean); } //鏍规嵁鏌愭鏃堕棿鍐呮煇涓紓甯哥被鍨�,鍦板潃锛岃繍缁村晢锛岀偣浣嶅悕绉� 锛屾煡璇㈠搴旂殑搴楅摵鍚嶇О鍜岃澶囩紪鍙� @GetMapping("/sitenamecode") - public Result getExceptionSitenameAndCode(String exceptionType,String beginTime, String endTime,String [] street,String [] dutyCompany,String siteName){ - List<DustExceptionData> list = fugitiveDustService.getExceptionSitenameAndCode(exceptionType,beginTime,endTime,street,dutyCompany,siteName); + public Result getExceptionSitenameAndCode(String exceptionType, String beginTime, String endTime, String[] street, String[] dutyCompany, String siteName) { + List<DustExceptionData> list = fugitiveDustService.getExceptionSitenameAndCode(exceptionType, beginTime, endTime, street, dutyCompany, siteName); return Result.success(list); } - // 鏍规嵁鏃堕棿,鍦板潃锛岃繍缁村晢锛岀偣浣嶅悕绉帮紝杩斿洖璇ュ紓甯哥被鍨嬬殑涓暟 @GetMapping("/exceptionnum") - public Result exceptionNum(String exceptionType,String beginTime,String endTime,String [] street,String [] dutyCompany,String siteName){ - Integer list = fugitiveDustService.exceptionNum( exceptionType, beginTime, endTime,street,dutyCompany,siteName); + public Result exceptionNum(String exceptionType, String beginTime, String endTime, String[] street, String[] dutyCompany, String siteName) { + Integer list = fugitiveDustService.exceptionNum(exceptionType, beginTime, endTime, street, dutyCompany, siteName); return Result.success(list); } -// 鏌ヨ鍘嗗彶鏁版嵁 涓嶅垎椤� -@GetMapping("/history") -public Result conditonQueryHistoryData(String siteName,String beginTime, String endTime ){ - List<DustSiteData> list= fugitiveDustService.conditonQueryHistoryData(siteName,beginTime,endTime); - return Result.success(list); -} + // 鏌ヨ鍘嗗彶鏁版嵁 涓嶅垎椤� + @GetMapping("/history") + public Result conditonQueryHistoryData(String siteName, String beginTime, String endTime) { + List<DustSiteData> list = fugitiveDustService.conditonQueryHistoryData(siteName, beginTime, endTime); + return Result.success(list); + } // 杩斿洖寮傚父鐨勫簵閾烘�绘暟 @GetMapping("/exceptionsitenum") - public Result exceptionSiteNum(){ + public Result exceptionSiteNum() { List<DustExceptionData> list = fugitiveDustService.exceptionSiteNum(); return Result.success(list); } /*鏂板瀹¤鍐呭*/ @PostMapping("/audit") - public Result addAuditNotes(@RequestBody AuditInfo auditInfo){ + public Result addAuditNotes(@RequestBody AuditInfo auditInfo) { fugitiveDustService.addAuditNotes(auditInfo); return Result.success(); } + /*杩斿洖瀹℃牳琛ㄦ墍鏈夋暟鎹�*/ @PostMapping("/auditAllData") - public Result getAuditAllData(){ + public Result getAuditAllData() { List<AuditInfo> list = fugitiveDustService.getAuditAllData(); return Result.success(list); } /*鏇存柊寮傚父琛ㄦ牸*/ @PutMapping("/auditUpdate") - public Result getAuditAllData(@RequestBody AuditInfo auditInfo){ + public Result getAuditAllData(@RequestBody AuditInfo auditInfo) { fugitiveDustService.update(auditInfo); return Result.success(); } /*鏍规嵁寮傚父鏃堕棿杩斿洖鏃堕棿鍐呭凡瀹℃牳鐨勫紓甯�*/ @GetMapping("/auditnum") - public Result getHasAuditedData(String beginTime, String endTime){ - List<DustExceptionData> list = fugitiveDustService.getHasAuditedData(beginTime,endTime); + public Result getHasAuditedData(String beginTime, String endTime) { + List<DustExceptionData> list = fugitiveDustService.getHasAuditedData(beginTime, endTime); return Result.success(list); } /*鍐欏叆鐢ㄦ埛鐨勫叏灞�閰嶇疆*/ @PostMapping("setting") - public Result setting(@RequestBody DustDataAccessSetting dustDataAccessSetting){ - fugitiveDustService.setting(dustDataAccessSetting); + public Result setting(@RequestBody DustDataAccessSetting dustDataAccessSetting) { + fugitiveDustService.setting(dustDataAccessSetting); return Result.success(); } /*鏍规嵁寮傚父绫诲瀷鍜屾椂娈� 杩斿洖绔欑偣鍚嶅瓧*/ @GetMapping("/exceptionsSiteName") - public Result getSiteNameByTimeAndExceptionType(String [] exceptionType, String beginTime, String endTime){ - List<DustExceptionData> list = fugitiveDustService.getSiteNameByTimeAndExceptionType(exceptionType,beginTime,endTime); + public Result getSiteNameByTimeAndExceptionType(String[] exceptionType, String beginTime, String endTime) { + List<DustExceptionData> list = fugitiveDustService.getSiteNameByTimeAndExceptionType(exceptionType, beginTime, endTime); return Result.success(list); } @GetMapping("/analysisdataByType") - public Result analysisdataByType( String month,String type){ - List<AnalysisDustData> list = fugitiveDustService.analysisdataByType(month,type); + public Result analysisdataByType(String month, String type) { + List<AnalysisDustData> list = fugitiveDustService.analysisdataByType(month, type); return Result.success(list); } @GetMapping("/analysisdataByTimeAndType") - public Result analysisdataByTimeAndType( String beginTime,String endTime,String type){ - List<AnalysisDustData> list = fugitiveDustService.analysisdataByTimeAndType(beginTime,endTime,type); + public Result analysisdataByTimeAndType(String beginTime, String endTime, String type) { + List<AnalysisDustData> list = fugitiveDustService.analysisdataByTimeAndType(beginTime, endTime, type); return Result.success(list); } diff --git a/src/main/java/com/flightfeather/monitor/domain/ds1/mapper/DustStatisticsValueMapper.kt b/src/main/java/com/flightfeather/monitor/domain/ds1/mapper/DustStatisticsValueMapper.kt index 683641e..6fc5abe 100644 --- a/src/main/java/com/flightfeather/monitor/domain/ds1/mapper/DustStatisticsValueMapper.kt +++ b/src/main/java/com/flightfeather/monitor/domain/ds1/mapper/DustStatisticsValueMapper.kt @@ -2,6 +2,7 @@ import com.flightfeather.monitor.domain.ds1.entity.DustStatisticsValue import com.flightfeather.monitor.domain.util.MyMapper +import com.flightfeather.monitor.pojo.AnalysisDustData import org.apache.ibatis.annotations.Mapper import java.time.LocalDateTime @@ -11,4 +12,10 @@ fun dailyStatics(beginTime: LocalDateTime, endTime: LocalDateTime) fun monthlyStatics(beginTime: LocalDateTime, endTime: LocalDateTime, count: Int) + + /** + * 鏍规嵁鏉′欢鎺掑簭鏌ヨ + */ + fun selectByOrder(siteName: String, beginTime: String, endTime: String, orderProp: String?, asc: Boolean): + List<AnalysisDustData?> } \ No newline at end of file diff --git a/src/main/java/com/flightfeather/monitor/domain/ds1/repository/RiskValueRep.kt b/src/main/java/com/flightfeather/monitor/domain/ds1/repository/RiskValueRep.kt index 338db81..c63fd50 100644 --- a/src/main/java/com/flightfeather/monitor/domain/ds1/repository/RiskValueRep.kt +++ b/src/main/java/com/flightfeather/monitor/domain/ds1/repository/RiskValueRep.kt @@ -35,6 +35,37 @@ } /** + * 鎵归噺鎻掑叆鎴栨洿鏂�,浠呴檺鍚屼竴鏃ョ殑鎴栧悓涓�鏈堢殑鎵归噺鏁版嵁 + * @param list + */ + fun insertOrUpdate(list: List<RiskValue>): Int { + if (list.isEmpty()) return 0 + val newDataList = mutableListOf<RiskValue>() + val oldDataList = mutableListOf<RiskValue>() + val dataList = riskValueMapper.selectByExample(Example(RiskValue::class.java).apply { + createCriteria().andEqualTo("lst", list[0].lst) + .andEqualTo("type", list[0].type) + }) + list.forEach { l -> + val r = dataList.find { d -> + d?.mnCode == l.mnCode + } + if (r != null) { + l.id = r.id + oldDataList.add(l) + } else { + newDataList.add(l) + } + } + val r1 = riskValueMapper.insertList(newDataList) + var r2 = 0 + oldDataList.forEach { + r2 += riskValueMapper.updateByPrimaryKey(it) + } + return r1 + r2 + } + + /** * 鏌ヨ * @param mnCode * @param date diff --git a/src/main/java/com/flightfeather/monitor/enumration/dust/DataStatus.kt b/src/main/java/com/flightfeather/monitor/enumration/dust/DataStatus.kt new file mode 100644 index 0000000..d9d06ec --- /dev/null +++ b/src/main/java/com/flightfeather/monitor/enumration/dust/DataStatus.kt @@ -0,0 +1,16 @@ +package com.flightfeather.monitor.enumration.dust + +enum class DataStatus(val value: String, val des: String) { + N("N", "姝e父"), + C("C", "璁惧鏍″噯"), + D("D", "璁惧鏂紑"), + P("P", "涓�璧风數婧愭晠闅�"), + OUT_MIN("-", "瓒呰繃鏁版嵁璁惧畾鑼冨洿涓嬮檺"), + OUT_MAX("+", "瓒呰繃鏁版嵁璁惧畾鑼冨洿涓婇檺"), + Q("Q", "浣庝簬鍏ㄥ競鍥芥帶鐐筆M2.5骞冲潎娴撳害浜屽垎涔嬩竴"), + VALID(">", "棰楃矑鐗╂湁鏁堟暟鎹ぇ浜�90%"), + INVALID("<", "棰楃矑鐗╂湁鏁堟暟鎹皬浜�90%"), + R("R", "椋庨�熷ぇ浜�8m/s鍜岄洦銆侀洩绛夊ぉ姘旀潯浠�"), + J("J", "寮�灞曡閲忔瀹氭垨姣斿娴嬭瘯"), + A("A", "琛ヤ紶"), +} \ No newline at end of file diff --git a/src/main/java/com/flightfeather/monitor/enumration/dust/ExceptionType.kt b/src/main/java/com/flightfeather/monitor/enumration/dust/ExceptionType.kt index 1551ec3..fa2aae6 100644 --- a/src/main/java/com/flightfeather/monitor/enumration/dust/ExceptionType.kt +++ b/src/main/java/com/flightfeather/monitor/enumration/dust/ExceptionType.kt @@ -1,7 +1,7 @@ package com.flightfeather.monitor.enumration.dust enum class ExceptionType(val value:Int, val des:String) { - TYPE0(0, "鏂綉鎴栨帀绾�"), + TYPE0(0, "鏁版嵁缂哄け寮傚父"), TYPE1(1, "鏁版嵁瓒呬綆寮傚父"), TYPE2(2, "鏁版嵁瓒呮爣"), TYPE3(3, "鏁版嵁闀挎椂娈垫棤娉㈠姩"), @@ -9,4 +9,5 @@ TYPE5(5, "涓磋繎瓒呮爣寮傚父"), TYPE6(6, "鍗曟棩瓒呮爣娆℃暟涓磋繎澶勭綒寮傚父"), TYPE7(7, "婊戝姩骞冲潎鍊肩獊鍙樺紓甯�"), + TYPE8(8, "鏈夋晥鐜囧紓甯�"), } \ No newline at end of file diff --git a/src/main/java/com/flightfeather/monitor/pojo/AnalysisDustData.java b/src/main/java/com/flightfeather/monitor/pojo/AnalysisDustData.java index c69dd89..5c27053 100644 --- a/src/main/java/com/flightfeather/monitor/pojo/AnalysisDustData.java +++ b/src/main/java/com/flightfeather/monitor/pojo/AnalysisDustData.java @@ -21,8 +21,8 @@ private Double dayAvg; private Double min; private Double max; - private String dayOnline; - private String dayValid; - private String dayExceeding; + private Double dayOnline; + private Double dayValid; + private Double dayExceeding; private String type; } diff --git a/src/main/java/com/flightfeather/monitor/service/FugitiveDustService.java b/src/main/java/com/flightfeather/monitor/service/FugitiveDustService.java index 6c54d41..764847c 100644 --- a/src/main/java/com/flightfeather/monitor/service/FugitiveDustService.java +++ b/src/main/java/com/flightfeather/monitor/service/FugitiveDustService.java @@ -1,31 +1,33 @@ package com.flightfeather.monitor.service; import com.flightfeather.monitor.pojo.*; +import org.springframework.web.bind.annotation.RequestParam; import java.util.List; public interface FugitiveDustService { - PageBean page(Integer page, Integer pageSize, String siteName, String mnCode, String beginTime, String endTime,String[] scenarioType); + PageBean page(Integer page, Integer pageSize, String siteName, String mnCode, String beginTime, String endTime, String[] scenarioType); List<DustSiteData> scenarioData(); List<DustSiteData> allSiteName(); - List<AnalysisDustData> analysisdata( String siteName,String beginTime, String endTime,String type); + List<AnalysisDustData> analysisdata(String siteName, String beginTime, String endTime, String type); List<AnalysisDustData> analysisByTime(String siteName, String beginTime, String endTime); - PageBean pageAnalysisTime(Integer page, Integer pageSize, String siteName, String beginTime, String endTime); + PageBean pageAnalysisTime(Integer page, Integer pageSize, String siteName, String beginTime, String endTime, String orderProp, + Boolean asc); List<DustExceptionType> getExceptionType(); PageBean getExceptionData(Integer page, Integer pageSize, String siteName, String[] exceptionType, String beginTime, String endTime); - List<DustExceptionData> getExceptionSitenameAndCode(String exceptionType, String beginTime, String endTime,String [] street,String [] dutyCompany,String siteName); + List<DustExceptionData> getExceptionSitenameAndCode(String exceptionType, String beginTime, String endTime, String[] street, String[] dutyCompany, String siteName); - Integer exceptionNum(String exceptionType, String beginTime, String endTime,String [] street,String [] dutyCompany,String siteName); + Integer exceptionNum(String exceptionType, String beginTime, String endTime, String[] street, String[] dutyCompany, String siteName); List<DustSiteData> conditonQueryHistoryData(String siteName, String beginTime, String endTime); @@ -36,6 +38,7 @@ List<AnalysisDustData> analysisAll(String siteName, String beginTime, String endTime); List<DustSiteData> conditonQueryhistoryallData(String siteName, String mnCode, String beginTime, String endTime, String[] scenarioType); + /*鏂板瀹¤淇℃伅*/ void addAuditNotes(AuditInfo auditInfo); @@ -50,7 +53,7 @@ List<DustExceptionData> getSiteNameByTimeAndExceptionType(String[] exceptionType, String beginTime, String endTime); - List<AnalysisDustData> analysisdataByType(String month,String type); + List<AnalysisDustData> analysisdataByType(String month, String type); List<AnalysisDustData> analysisdataByTimeAndType(String beginTime, String endTime, String type); 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 25e7885..aafa6d7 100644 --- a/src/main/java/com/flightfeather/monitor/service/impl/FugitiveDustServiceImpl.java +++ b/src/main/java/com/flightfeather/monitor/service/impl/FugitiveDustServiceImpl.java @@ -1,13 +1,16 @@ package com.flightfeather.monitor.service.impl; +import com.flightfeather.monitor.domain.ds1.mapper.DustStatisticsValueMapper; import com.flightfeather.monitor.mapper.FugitiveDustMapper; import com.flightfeather.monitor.pojo.*; import com.flightfeather.monitor.service.FugitiveDustService; +import com.flightfeather.monitor.utils.StringUtil; import com.github.pagehelper.Page; import com.github.pagehelper.PageHelper; 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; @@ -19,18 +22,21 @@ @Autowired private FugitiveDustMapper fugitiveDustMapper; + @Autowired + private DustStatisticsValueMapper dustStatisticsValueMapper; + @Override - public PageBean page(Integer page, Integer pageSize, String siteName, String mnCode, String beginTime, String endTime,String[] scenarioType) { + public PageBean page(Integer page, Integer pageSize, String siteName, String mnCode, String beginTime, String endTime, String[] scenarioType) { //璁剧疆鍒嗛〉鍙傛暟 - PageHelper.startPage(page,pageSize); + PageHelper.startPage(page, pageSize); //鎵ц鏌ヨ - List<DustSiteData> infoList=fugitiveDustMapper.conditonQueryDustHistoryData(siteName,mnCode,beginTime,endTime,scenarioType); + List<DustSiteData> infoList = fugitiveDustMapper.conditonQueryDustHistoryData(siteName, mnCode, beginTime, endTime, scenarioType); //鑾峰彇鏌ヨ缁撴灉 - Page<DustSiteData> p=(Page<DustSiteData>)infoList; + Page<DustSiteData> p = (Page<DustSiteData>) infoList; //灏佽PageBean瀵硅薄*/ - PageBean pageBean=new PageBean(p.getTotal(),p.getResult()); - return pageBean; + PageBean pageBean = new PageBean(p.getTotal(), p.getResult()); + return pageBean; } @Override @@ -46,29 +52,29 @@ } @Override - public List<AnalysisDustData> analysisdata( String siteName,String beginTime, String endTime,String type) { - List<AnalysisDustData> list = fugitiveDustMapper.analysisdata(siteName,beginTime,endTime,type); + public List<AnalysisDustData> analysisdata(String siteName, String beginTime, String endTime, String type) { + List<AnalysisDustData> list = fugitiveDustMapper.analysisdata(siteName, beginTime, endTime, type); return list; } @Override public List<AnalysisDustData> analysisByTime(String siteName, String beginTime, String endTime) { - List<AnalysisDustData> list = fugitiveDustMapper.analysisByTime(siteName,beginTime,endTime); + List<AnalysisDustData> list = fugitiveDustMapper.analysisByTime(siteName, beginTime, endTime); return list; } @Override - public PageBean pageAnalysisTime(Integer page, Integer pageSize, String siteName, String beginTime, String endTime) { + public PageBean pageAnalysisTime(Integer page, Integer pageSize, String siteName, String beginTime, + String endTime, String orderProp, + Boolean asc) { //璁剧疆鍒嗛〉鍙傛暟 - PageHelper.startPage(page,pageSize); - //鎵ц鏌ヨ - List<AnalysisDustData> infoList=fugitiveDustMapper.analysisByTime(siteName,beginTime,endTime); + Page<AnalysisDustData> p = PageHelper.startPage(page, pageSize); //鑾峰彇鏌ヨ缁撴灉 - Page<AnalysisDustData> p=(Page<AnalysisDustData>)infoList; + String prop = StringUtil.INSTANCE.camelCaseToUnderline(orderProp); + dustStatisticsValueMapper.selectByOrder(siteName, beginTime, endTime, prop, asc); - //灏佽PageBean瀵硅薄*/ - PageBean pageBean=new PageBean(p.getTotal(),p.getResult()); - return pageBean; + //灏佽PageBean瀵硅薄 + return new PageBean(p.getTotal(), p.getResult()); } @Override @@ -80,39 +86,39 @@ @Override public PageBean getExceptionData(Integer page, Integer pageSize, String siteName, String[] exceptionType, String beginTime, String endTime) { //璁剧疆鍒嗛〉鍙傛暟 - PageHelper.startPage(page,pageSize); + PageHelper.startPage(page, pageSize); - List<DustExceptionData> infoList = fugitiveDustMapper.getExceptionData(siteName,exceptionType,beginTime,endTime); + List<DustExceptionData> infoList = fugitiveDustMapper.getExceptionData(siteName, exceptionType, beginTime, endTime); //鑾峰彇鏌ヨ缁撴灉 - Page<DustExceptionData> p=(Page<DustExceptionData>)infoList; + Page<DustExceptionData> p = (Page<DustExceptionData>) infoList; //灏佽PageBean瀵硅薄*/ - PageBean pageBean=new PageBean(p.getTotal(),p.getResult()); + PageBean pageBean = new PageBean(p.getTotal(), p.getResult()); - return pageBean; + return pageBean; } @Override - public List<DustExceptionData> getExceptionSitenameAndCode(String exceptionType, String beginTime, String endTime,String [] street,String [] dutyCompany,String siteName) { - List<DustExceptionData> list = fugitiveDustMapper.getExceptionSitenameAndCode(exceptionType,beginTime,endTime,street,dutyCompany,siteName); + public List<DustExceptionData> getExceptionSitenameAndCode(String exceptionType, String beginTime, String endTime, String[] street, String[] dutyCompany, String siteName) { + List<DustExceptionData> list = fugitiveDustMapper.getExceptionSitenameAndCode(exceptionType, beginTime, endTime, street, dutyCompany, siteName); return list; } @Override - public Integer exceptionNum(String exceptionType, String beginTime, String endTime,String [] street,String [] dutyCompany,String siteName) { - Integer list = fugitiveDustMapper.exceptionNum(exceptionType,beginTime,endTime,street,dutyCompany,siteName); + public Integer exceptionNum(String exceptionType, String beginTime, String endTime, String[] street, String[] dutyCompany, String siteName) { + Integer list = fugitiveDustMapper.exceptionNum(exceptionType, beginTime, endTime, street, dutyCompany, siteName); return list; } @Override public List<DustSiteData> conditonQueryHistoryData(String siteName, String beginTime, String endTime) { - List<DustSiteData> list = fugitiveDustMapper.conditonQueryHistoryData(siteName,beginTime,endTime); + List<DustSiteData> list = fugitiveDustMapper.conditonQueryHistoryData(siteName, beginTime, endTime); return list; } @Override public List<DustExceptionData> getExceptionAllData(String siteName, String[] exceptionType, String beginTime, String endTime) { - List<DustExceptionData> list = fugitiveDustMapper.getExceptionData(siteName,exceptionType,beginTime,endTime); + List<DustExceptionData> list = fugitiveDustMapper.getExceptionData(siteName, exceptionType, beginTime, endTime); return list; } @@ -124,22 +130,22 @@ @Override public List<AnalysisDustData> analysisAll(String siteName, String beginTime, String endTime) { - List<AnalysisDustData> list = fugitiveDustMapper.analysisByTime(siteName,beginTime,endTime); + List<AnalysisDustData> list = fugitiveDustMapper.analysisByTime(siteName, beginTime, endTime); return list; } @Override public List<DustSiteData> conditonQueryhistoryallData(String siteName, String mnCode, String beginTime, String endTime, String[] scenarioType) { - List<DustSiteData> list = fugitiveDustMapper.conditonQueryDustHistoryData(siteName,mnCode,beginTime,endTime,scenarioType); + List<DustSiteData> list = fugitiveDustMapper.conditonQueryDustHistoryData(siteName, mnCode, beginTime, endTime, scenarioType); return list; } @Override public void addAuditNotes(AuditInfo auditInfo) { - if(auditInfo.getAuditStatus()==3){ + if (auditInfo.getAuditStatus() == 3) { auditInfo.setUpdateTime(LocalDateTime.now()); auditInfo.setCreateTime(LocalDateTime.now()); - }else{ + } else { auditInfo.setCreateTime(LocalDateTime.now()); } @@ -161,7 +167,7 @@ @Override public List<DustExceptionData> getHasAuditedData(String beginTime, String endTime) { - List<DustExceptionData> list = fugitiveDustMapper.getHasAuditedData(beginTime,endTime); + List<DustExceptionData> list = fugitiveDustMapper.getHasAuditedData(beginTime, endTime); return list; } @@ -173,35 +179,35 @@ @Override public List<DustExceptionData> getSiteNameByTimeAndExceptionType(String[] exceptionType, String beginTime, String endTime) { - List<DustExceptionData> list = fugitiveDustMapper.getSiteNameByTimeAndExceptionType(exceptionType,beginTime,endTime); + List<DustExceptionData> list = fugitiveDustMapper.getSiteNameByTimeAndExceptionType(exceptionType, beginTime, endTime); return list; } @Override public List<AnalysisDustData> analysisdataByType(String month, String type) { - List<AnalysisDustData> list = fugitiveDustMapper.analysisdataByType(month,type); + List<AnalysisDustData> list = fugitiveDustMapper.analysisdataByType(month, type); return list; } @Override public List<AnalysisDustData> analysisdataByTimeAndType(String beginTime, String endTime, String type) { - List<AnalysisDustData> list = fugitiveDustMapper.analysisdataByTimeAndType(beginTime,endTime,type); + List<AnalysisDustData> list = fugitiveDustMapper.analysisdataByTimeAndType(beginTime, endTime, type); return list; } @Override public PageBean getExceptionData2(Integer page, Integer pageSize, String siteName, String[] exceptionType, String beginTime, String endTime, String[] street, String[] dutyCompany) { //璁剧疆鍒嗛〉鍙傛暟 - PageHelper.startPage(page,pageSize); + PageHelper.startPage(page, pageSize); - List<DustExceptionData> infoList = fugitiveDustMapper.getExceptionData2(siteName,exceptionType,beginTime,endTime,street,dutyCompany); + List<DustExceptionData> infoList = fugitiveDustMapper.getExceptionData2(siteName, exceptionType, beginTime, endTime, street, dutyCompany); //鑾峰彇鏌ヨ缁撴灉 - Page<DustExceptionData> p=(Page<DustExceptionData>)infoList; + Page<DustExceptionData> p = (Page<DustExceptionData>) infoList; //灏佽PageBean瀵硅薄*/ - PageBean pageBean=new PageBean(p.getTotal(),p.getResult()); + PageBean pageBean = new PageBean(p.getTotal(), p.getResult()); - return pageBean; + return pageBean; } diff --git a/src/main/java/com/flightfeather/monitor/utils/StringUtil.kt b/src/main/java/com/flightfeather/monitor/utils/StringUtil.kt new file mode 100644 index 0000000..507328c --- /dev/null +++ b/src/main/java/com/flightfeather/monitor/utils/StringUtil.kt @@ -0,0 +1,27 @@ +package com.flightfeather.monitor.utils + +/** + * 鏂囨湰宸ュ叿 + */ +object StringUtil { + + /** + * 椹煎嘲鍛藉悕娉曟枃鏈浆涓嬪垝绾挎枃鏈� + * @param t + * @return + */ + fun camelCaseToUnderline(t: String?): String? { + t ?: return null + + val result = StringBuilder() + t.forEach { + if (it.isUpperCase()) { + result.append('_') + result.append(it.lowercaseChar()) + } else { + result.append(it) + } + } + return result.toString() + } +} \ No newline at end of file diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 4ffadab..15597db 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -3,9 +3,9 @@ ds1: driver-class-name: com.mysql.cj.jdbc.Driver # 鐢熶骇鐜 -# url: jdbc:mysql://localhost:3306/fume?serverTimezone=Asia/Shanghai&prepStmtCacheSize=517&cachePrepStmts=true&autoReconnect=true&allowMultiQueries=true&useSSL=false -# username: fume -# password: fume_feiyu2023 + url: jdbc:mysql://localhost:3306/fume?serverTimezone=Asia/Shanghai&prepStmtCacheSize=517&cachePrepStmts=true&autoReconnect=true&allowMultiQueries=true&useSSL=false + username: fume + password: fume_feiyu2023 # url: jdbc:mysql://localhost:3306/qianduan_sql?serverTimezone=Asia/Shanghai&prepStmtCacheSize=517&cachePrepStmts=true&autoReconnect=true&allowMultiQueries=true&useSSL=false # username: root @@ -15,14 +15,14 @@ # username: root # password: 123456 - url: jdbc:mysql://114.215.109.124:3306/fume?serverTimezone=Asia/Shanghai&prepStmtCacheSize=517&cachePrepStmts=true&autoReconnect=true&allowMultiQueries=true&useSSL=false - username: fumeRemote - password: feiyu2023 +# url: jdbc:mysql://114.215.109.124:3306/fume?serverTimezone=Asia/Shanghai&prepStmtCacheSize=517&cachePrepStmts=true&autoReconnect=true&allowMultiQueries=true&useSSL=false +# username: fumeRemote +# password: feiyu2023 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/mapper/ds1/DustStatisticsValueMapper.xml b/src/main/resources/mapper/ds1/DustStatisticsValueMapper.xml index 4726f1b..a19b0b5 100644 --- a/src/main/resources/mapper/ds1/DustStatisticsValueMapper.xml +++ b/src/main/resources/mapper/ds1/DustStatisticsValueMapper.xml @@ -1,63 +1,105 @@ <?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="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> - <insert id="dailyStatics"> - insert into dust_statistics_value(mn_code,lst,day_avg,min,max,day_online,day_valid,day_exceeding,type) - select a.* - from (select - mn_code as mn_code, - DATE(lst) as lst, - ROUND(AVG(dust_value),3) as day_avg, - min(dust_value) as min, - max(dust_value) as max, - CONCAT(ROUND(COUNT(*)/96*100, 2), '%') as day_online, - CONCAT(ROUND(SUM(CASE WHEN dust_value >0 THEN 1 ELSE 0 END)/96 *100, 2), '%') as day_valid, - CONCAT(ROUND(SUM(CASE WHEN dust_value >= 1 THEN 1 ELSE 0 END)/96*100,2),'%') as day_exceeding, - 'day' as type - from ja_t_dust_site_data_info - where lst between #{beginTime} and #{endTime} - GROUP BY mn_code,DATE(lst) - ) as a - </insert> - <insert id="monthlyStatics"> - insert into dust_statistics_value(mn_code,lst,day_avg,min,max,day_online,day_valid,day_exceeding,type) - select a.* - from ( - SELECT - mn_code AS mn_code, - DATE_FORMAT(lst, '%Y-%m-01') AS month, - ROUND(AVG(dust_value), 3) AS month_avg, - MIN(dust_value) AS min, - MAX(dust_value) AS max, - CONCAT(ROUND(COUNT(*) / #{count} * 100, 2), '%') AS month_online, - CONCAT(ROUND(SUM(CASE WHEN flag = 'N' OR flag = 'A' THEN 1 ELSE 0 END) / #{count} * 100, 2), '%') AS month_valid, - CONCAT(ROUND(SUM(CASE WHEN dust_value >= 1 THEN 1 ELSE 0 END) / #{count} * 100, 2), '%') AS month_exceeding, - 'month' as type - FROM ja_t_dust_site_data_info - WHERE lst BETWEEN #{beginTime} and #{endTime} - GROUP BY mn_code, DATE_FORMAT(lst, '%Y-%m-01') - ) as a - </insert> + <insert id="dailyStatics"> + insert into dust_statistics_value(mn_code,lst,day_avg,min,max,day_online,day_valid,day_exceeding,type) + select a.* + from (select + mn_code as mn_code, + DATE(lst) as lst, + ROUND(AVG(dust_value),3) as day_avg, + 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, + 'day' as type + from ja_t_dust_site_data_info + where lst between #{beginTime} and #{endTime} + GROUP BY mn_code,DATE(lst) + ) as a + </insert> + <insert id="monthlyStatics"> + insert into dust_statistics_value(mn_code,lst,day_avg,min,max,day_online,day_valid,day_exceeding,type) + select a.* + from ( + SELECT + mn_code AS mn_code, + DATE_FORMAT(lst, '%Y-%m-01') AS month, + ROUND(AVG(dust_value), 3) AS month_avg, + MIN(dust_value) AS min, + 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, + 'month' as type + FROM ja_t_dust_site_data_info + WHERE lst BETWEEN #{beginTime} and #{endTime} + GROUP BY mn_code, DATE_FORMAT(lst, '%Y-%m-01') + ) as a + </insert> + + <!-- 鏍规嵁绔欑偣鍚嶅瓧鍜屾椂娈佃繘琛岀粺璁″垎鏋�--> + <select id="selectByOrder" resultType="com.flightfeather.monitor.pojo.AnalysisDustData"> + select c.name,d.* + from dust_statistics_value as d + left join ja_t_dust_site_info as c on c.mn_code = d.mn_code + <where> + <if test="siteName != null and siteName != ''"> + and c.name = #{siteName} + </if> + <if test="beginTime != null and endTime != null"> + and d.lst between #{beginTime} and #{endTime} and d.type = 'day' + </if> + </where> + <if test="orderProp == 'lst'"> + order by d.lst + </if> + <if test="orderProp == 'day_avg'"> + order by d.day_avg + </if> + <if test="orderProp == 'min'"> + order by d.min + </if> + <if test="orderProp == 'max'"> + order by d.max + </if> + <if test="orderProp == 'day_online'"> + order by d.day_online + </if> + <if test="orderProp == 'day_valid'"> + order by d.day_valid + </if> + <if test="orderProp == 'day_exceeding'"> + order by d.day_exceeding + </if> + <if test="orderProp != null and asc"> + asc + </if> + <if test="orderProp != null and !asc"> + desc + </if> + </select> </mapper> \ No newline at end of file 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 6c31c13..99cde34 100644 --- a/src/test/java/com/flightfeather/monitor/analysis/dust/ExceptionAnalysisControllerTest.kt +++ b/src/test/java/com/flightfeather/monitor/analysis/dust/ExceptionAnalysisControllerTest.kt @@ -27,9 +27,9 @@ @Test fun run() { exceptionAnalysisController.init() - var d1 = LocalDate.of(2023, 10, 26) - val d2 = LocalDate.of(2023, 10, 26) - while (Duration.between(d1.atStartOfDay(), d2.atStartOfDay()).toDays() >= 0L) { + var d1 = LocalDate.of(2023, 7, 1) + val d2 = LocalDate.of(2023, 11, 21) + while (d1.isEqual(d2) || d1.isBefore(d2)) { exceptionAnalysisController.run(d1) d1 = d1.plusDays(1) } -- Gitblit v1.9.3