From 7ecdc67dfb92b63bdc742e5c95d62bf9774cbd7f Mon Sep 17 00:00:00 2001 From: feiyu02 <risaku@163.com> Date: 星期一, 13 十一月 2023 16:06:24 +0800 Subject: [PATCH] 1. 新增风险值的计算逻辑; --- src/main/java/com/flightfeather/monitor/analysis/dust/RiskAnalysisController.kt | 108 ++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 105 insertions(+), 3 deletions(-) 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 9105baa..afc6bc1 100644 --- a/src/main/java/com/flightfeather/monitor/analysis/dust/RiskAnalysisController.kt +++ b/src/main/java/com/flightfeather/monitor/analysis/dust/RiskAnalysisController.kt @@ -1,7 +1,109 @@ -package com.flightfeather.monitor.analysis.dust; +package com.flightfeather.monitor.analysis.dust + +import com.flightfeather.monitor.analysis.dust.risk.* +import com.flightfeather.monitor.domain.ds1.repository.* +import com.flightfeather.monitor.enumration.dust.DeviceStatus +import com.flightfeather.monitor.utils.DateUtil +import org.springframework.stereotype.Component +import java.time.LocalDate +import java.time.LocalDateTime +import java.time.ZoneId /** * 鏁版嵁椋庨櫓鍒嗘瀽鎺у埗鍣� */ -public class RiskAnalysisController { -} +@Component +class RiskAnalysisController( + private val dustExceptionSettingRep: DustExceptionSettingRep, + private val riskValueRep: RiskValueRep, + private val dustSiteStatusRep: DustSiteStatusRep, + private val dustSiteDataRep: DustSiteDataRep, + private val dustExceptionDataRep: DustExceptionDataRep, + private val dustStatisticValueRep: DustStatisticsValueRep, +) { + + private var running1 = false + private var running2 = false + + private var taskDaily: DustRiskAnalysis? = null + private var taskMonthly: DustRiskMonthAnalysis? = null + + fun init() { + dustExceptionSettingRep.findLatestSetting("閲戝北鍖�")?.let { + taskDaily = DustRiskAnalysis(it) + taskMonthly = DustRiskMonthAnalysis(it) + } + } + + fun autoRunDaily() { + val data = riskValueRep.findLatestData("day") + val yesterday = LocalDate.now().minusDays(1) + if (data == null) { + runDaily(yesterday) + } else { + val date = LocalDateTime.ofInstant(data.lst.toInstant(), ZoneId.systemDefault()) + val sT = if (date.hour == 0 && date.minute == 0 && date.second == 0) { + date.toLocalDate() + } else { + date.plusDays(1).toLocalDate() + } + val du = DateUtil.findDurationDate(sT, yesterday) + du.forEach { + runDaily(it) + } + } + } + + fun autoRunMonthly() { + val data = riskValueRep.findLatestData("month") + val lastMonth = LocalDate.now().minusMonths(1).withDayOfMonth(1) + if (data == null) { + runMonthly(lastMonth) + } else { + val date = LocalDateTime.ofInstant(data.lst.toInstant(), ZoneId.systemDefault()) + val sT = date.plusMonths(1).toLocalDate() + val du = DateUtil.findDurationMonth(sT, lastMonth) + du.forEach { + runMonthly(it) + } + } + } + + fun runDaily(date: LocalDate) { + running1 = true + taskDaily?.init() + // 鑾峰彇鎵�鏈夊綋鍓嶄笂绾垮拰鍋滆繍鐨勮澶� + dustSiteStatusRep.select(listOf(DeviceStatus.ONLINE, DeviceStatus.STOP)).forEach { s -> + s?.let { + taskDaily?.roundInit() + val dustSiteDataList = dustSiteDataRep.select(s.mnCode, date) + val dustExceptionDataList = dustExceptionDataRep.select(s.mnCode, date) + val dustStatisticValueList = dustStatisticValueRep.select(s.mnCode, date) + if (dustStatisticValueList.isEmpty()) return@forEach + taskDaily?.roundCal(dustStatisticValueList[0]!!, dustSiteDataList, dustExceptionDataList) + } + } + // 鎵�鏈夊垎鏋愮粨鏋滃叆搴� + if (taskDaily?.resultList?.isNotEmpty() == true) { + riskValueRep.insert(taskDaily?.resultList!!) + } + running1 = false + } + + fun runMonthly(date: LocalDate) { + running2 = true + taskMonthly?.init() + dustSiteStatusRep.select(listOf(DeviceStatus.ONLINE, DeviceStatus.STOP)).forEach { s -> + s?.let { + taskMonthly?.roundInit() + val riskValueList = riskValueRep.select(s.mnCode, date) + taskMonthly?.roundCal(riskValueList) + } + } + // 鎵�鏈夊垎鏋愮粨鏋滃叆搴� + if (taskMonthly?.resultList?.isNotEmpty() == true) { + riskValueRep.insert(taskMonthly?.resultList!!) + } + running2 = false + } +} \ No newline at end of file -- Gitblit v1.9.3