From 70a7d1ec98064e1acb3130e56e16c45af52ade6c Mon Sep 17 00:00:00 2001
From: feiyu02 <risaku@163.com>
Date: 星期二, 24 十月 2023 12:03:49 +0800
Subject: [PATCH] 新增数据分析模块完成

---
 src/main/java/com/flightfeather/monitor/analysis/dust/BaseExceptionContinuous.kt |   37 ++++++++++++++++++++++++++++++++-----
 1 files changed, 32 insertions(+), 5 deletions(-)

diff --git a/src/main/java/com/flightfeather/monitor/analysis/dust/BaseExceptionContinuous.kt b/src/main/java/com/flightfeather/monitor/analysis/dust/BaseExceptionContinuous.kt
index 73d1a0c..5908e86 100644
--- a/src/main/java/com/flightfeather/monitor/analysis/dust/BaseExceptionContinuous.kt
+++ b/src/main/java/com/flightfeather/monitor/analysis/dust/BaseExceptionContinuous.kt
@@ -8,10 +8,17 @@
  */
 abstract class BaseExceptionContinuous(config: DustExceptionSetting) : BaseDustExceptionAnalysis(config) {
 
+    // 璧峰鏁版嵁涓嬫爣
     private var sIndex = 0
+    // 璧峰鏁版嵁瀵硅薄
     private var startData: DustSiteData? = null
+    // 鏈熬鏁版嵁涓嬫爣
     private var eIndex = -1
+    // 鏈熬鏁版嵁瀵硅薄
     private var lastData: DustSiteData? = null
+    // 璧峰鏁版嵁涓庢湯灏炬暟鎹棿闅�
+    open var durationCount = 1
+    private var existException = false
 
     /**
      * 鍒ゆ柇鏄惁婊¤冻寮傚父鏉′欢
@@ -24,10 +31,12 @@
     abstract fun judgeDuration(sIndex: Int, eIndex: Int): Boolean
 
     override fun init() {
+        super.init()
         startData = null
         lastData = null
         sIndex = 0
         eIndex = -1
+        existException = false
     }
 
     override fun onNextData(data: DustSiteData) {
@@ -36,11 +45,26 @@
             startData = data
         }
         // 鍒ゆ柇鐩搁偦鏁版嵁鏄惁杩炵画骞朵笖鏄惁婊¤冻寮傚父鍒ゆ柇
-        if (!(isContinuous(lastData, data) && judgeException(lastData, data))) {
+        if (!isContinuous(lastData, data)) {
             checkResult()
-            sIndex = eIndex
-            startData = data
+            if (eIndex - sIndex >= durationCount) {
+                sIndex = eIndex
+                startData = data
+            }
+        } else {
+            if (judgeException(lastData, data)) {
+                existException = true
+            } else {
+                checkResult()
+                if (eIndex - sIndex >= durationCount) {
+                    sIndex = eIndex
+                    startData = data
+                }
+            }
         }
+//        if (!(isContinuous(lastData, data) && judgeException(lastData, data))) {
+//
+//        }
         lastData = data
     }
 
@@ -52,8 +76,11 @@
      * 妫�鏌ヨ繛缁紓甯哥粨鏉熸椂锛屾槸鍚︾鍚堝紓甯稿瓨鍌ㄦ潯浠�
      */
     private fun checkResult() {
-        if (judgeDuration(sIndex, eIndex)) {
-            resultList.add(newResult(lastData, startData!!))
+        if (existException && judgeDuration(sIndex, eIndex)) {
+            startData?.let {
+                resultList.add(newResult(it, lastData))
+            }
+            existException = false
         }
     }
 }
\ No newline at end of file

--
Gitblit v1.9.3