sunty
2024-09-05 78c5692e45a4357adffb864dfe105fa36c814ed3
添加阈值到配置文件
3个文件已修改
39 ■■■■■ 已修改文件
config/config.go 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
config/rulemodelengine.yaml 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
data/prepare.go 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
config/config.go
@@ -42,12 +42,13 @@
}
type api struct {
    Host          string `mapstructure: "host"`
    Port          string `mapstructure: "port"`
    TimeThreshold int    `mapstructure:"timeThreshold"`
    CsTimes       int    `mapstructure:"csTimes"`
    CsHours       int    `mapstructure:"csHours"`
    AInterval     int    `mapstructure:"aInterval"`
    Host                 string `mapstructure: "host"`
    Port                 string `mapstructure: "port"`
    CapAddrDaysThreshold int    `mapstructure:"capAddrDaysThreshold"`
    TimeThreshold        int    `mapstructure:"timeThreshold"`
    CsTimes              int    `mapstructure:"csTimes"`
    CsHours              int    `mapstructure:"csHours"`
    AInterval            int    `mapstructure:"aInterval"`
}
var LogConf = &LogConfig{}
config/rulemodelengine.yaml
@@ -28,7 +28,9 @@
api:
  host: 192.168.20.115
  port: 4101
  timeThreshold: 90 #timeThreshold 查询档案时间范围,为之前timeThreshold天之内的数据
  capAddrDaysThreshold: 50 #capAddrDaysThreshold 抓拍非空非1楼非地下地址天数占总天数比值,百分制
  timeThreshold: 270 #timeThreshold 查询档案时间范围,为之前timeThreshold天之内的数据
  csTimes: 10 #climbed stairs times 窜楼次数
  csHours: 5 #climbed stairs hours 窜楼预警时间 该csHours时间范围之内
  aInterval: 3 #interval time between anomalies  进出异常间隔时间
  parse2excel: true #若为true,本次仅生成报表,不跑规则
data/prepare.go
@@ -3,6 +3,7 @@
import (
    "fmt"
    "regexp"
    "ruleModelEngine/config"
    "ruleModelEngine/db"
    "strings"
    "time"
@@ -120,10 +121,11 @@
            //如果是, 提前设置好备用地址 floor1Address = detail.CaptureAddress
            floor1Address = detail.CaptureAddress
        }
        if matchFlagNoF && floor1Address != "" {
        if matchFlagNoF && floor1Address == "" {
            //如果是, 提前设置好备用地址 floor1Address = detail.CaptureAddress
            floor1Address = detail.CaptureAddress
        }
        //fmt.Println("now floor1Address:", floor1Address,"\tnow detail CaptureAddress",detail.CaptureAddress)
        //判断日期标是否满足条件 判断日期标是否为空,若为空表示是第一个元素,初始化日期靶标
        if pointDate == "" {
            //初始化日期靶标为当前日期
@@ -132,7 +134,7 @@
            pointAddress[detail.CaptureAddress]++
            //若为最后一条则计算单日常用地址
            if index == len(captureDetail)-1 {
                fmt.Println("处理前pointAddress表:", pointAddress)
                //fmt.Println("处理前pointAddress表:", pointAddress)
                //这代表仅有一条数据,将会直接把当前地址加入dateAddress 日期汇总单日常用地址表内 下方continue会直接结束循环
                //否则会初始化pointDate和pointAddress
                dateAddress[pointDate] = detail.CaptureAddress
@@ -145,7 +147,7 @@
            pointAddress[detail.CaptureAddress]++
            //若为最后一条则计算单日常用地址
            if index == len(captureDetail)-1 {
                fmt.Println("处理前pointAddress表:", pointAddress)
                //fmt.Println("处理前pointAddress表:", pointAddress)
                //计算单日常用地址 若地址内都为1F或者空地址,会返回空地址
                dateAddress[pointDate] = getfrAddress(pointAddress)
                continue
@@ -157,7 +159,7 @@
                //把当前最后一条加入    pointAddress靶标地址
                pointAddress[detail.CaptureAddress]++
                //
                fmt.Println("处理前pointAddress表:", pointAddress)
                //fmt.Println("处理前pointAddress表:", pointAddress)
                //计算单日常用地址 若地址内都为1F或者空地址,会返回空地址
                dateAddress[pointDate] = getfrAddress(pointAddress)
                continue
@@ -169,11 +171,11 @@
            pointAddress = make(map[string]int, 0)
        }
    }
    fmt.Println("抓拍地址待处理结构表:", dateAddress)
    fmt.Println("dareAddress len: ", len(dateAddress))
    //判断抓拍的非1楼非空的天数占比总天数
    if float64(len(dateAddress))/float64(len(captureDays))*100 >= 50 {
        fmt.Println("非1楼非空抓拍占比: ", float64(len(dateAddress))/float64(len(captureDays))*100)
    //fmt.Println("抓拍地址待处理结构表:", dateAddress)
    //fmt.Println("dareAddress len: ", len(dateAddress))
    //判断抓拍的非1楼非空非地下的天数占比总天数
    if float64(len(dateAddress))/float64(len(captureDays))*100 >= float64(config.Api.CapAddrDaysThreshold) {
        //fmt.Println("非1楼非空抓拍占比: ", float64(len(dateAddress))/float64(len(captureDays))*100)
        //初始化地址列表,按地址计数
        addressCount := make(map[string]int)
        //遍历之前汇总的单日常用地址列表
@@ -193,7 +195,7 @@
    }
    //fmt.Println("in address: ", inAddressCounts)
    //fmt.Println("out address: ", outAddressCounts)
    fmt.Println("final address: ", frequentAddress)
    //fmt.Println("final address: ", frequentAddress)
    return frequentAddress
}