From 1fda1e433489e43387dbd082f8aba37d136755b2 Mon Sep 17 00:00:00 2001
From: qixiaoning <jony.kee@outlook.com>
Date: 星期四, 31 七月 2025 10:46:04 +0800
Subject: [PATCH] 算力管理增加事件等级,预警规则(任务描述)

---
 camera-service/controllers/camera.go      |   14 ++++++++++++++
 chanmanage-service/models/camera.go       |   23 +++++++++++++++++++++++
 chanmanage-service/controllers/pollSet.go |   14 +++++++++++++-
 camera-common/models/Record.go            |    1 +
 4 files changed, 51 insertions(+), 1 deletions(-)

diff --git a/camera-common/models/Record.go b/camera-common/models/Record.go
index e615e31..6901768 100644
--- a/camera-common/models/Record.go
+++ b/camera-common/models/Record.go
@@ -183,6 +183,7 @@
 	Ids      []string `json:"ids"`
 	VideoIds []string `json:"treeNodes"`
 	TaskIds  []int64  `json:"taskIds`
+	TaskName []string `json:"taskName"`
 	Warning  int64    `json:"warning`
 	Page     int64    `json:"page"`
 	PageSize int64    `json:"pageSize"`
diff --git a/camera-service/controllers/camera.go b/camera-service/controllers/camera.go
index 4cb9ce3..fe88085 100644
--- a/camera-service/controllers/camera.go
+++ b/camera-service/controllers/camera.go
@@ -1023,6 +1023,7 @@
 	pageSize := info.PageSize
 	idsStr := info.Ids
 	TaskIds := info.TaskIds
+	TaskName := info.TaskName
 	videoIdStr := info.VideoIds
 	Warning := info.Warning
 
@@ -1068,6 +1069,19 @@
 		filter += fmt.Sprintf(" and array_contains(task_id, %d)", TaskIds[0])
 	}
 
+	//鏍规嵁浠诲姟鍚嶇О
+	if len(TaskName) > 0 {
+		quotedNames := make([]string, len(TaskName))
+		for i, name := range TaskName {
+			quotedNames[i] = "'" + name + "'" // 姣忎釜鍏冪礌鍔犲崟寮曞彿
+		}
+		filter += fmt.Sprintf(" and %s in [%s]", "task_name", strings.Join(quotedNames, ","))
+	} else {
+		if Warning > 0 {
+			return &bhomeclient.Reply{Success: true, Msg: "鑾峰彇鎴愬姛", Data: nil}
+		}
+	}
+
 	//鏄惁棰勮
 	if Warning > 0 {
 		filter += fmt.Sprintf(" and is_waning == %d", Warning)
diff --git a/chanmanage-service/controllers/pollSet.go b/chanmanage-service/controllers/pollSet.go
index 49488b2..275584e 100644
--- a/chanmanage-service/controllers/pollSet.go
+++ b/chanmanage-service/controllers/pollSet.go
@@ -282,7 +282,19 @@
 			// }
 			var ids []string = []string{}
 			ids = append(ids, cE.Id)
-			cri.AllTasks, _ = models.GetListTask(ids)
+			tasks, _ := models.GetListTask(ids)
+			//rules
+			ruleMap := models.GetAllRule()
+
+			cri.AllTasks = []commonModel.TaskM{}
+			for _, item := range tasks {
+				temp := &commonModel.TaskM{
+					TaskName:        item.TaskName,
+					EventName:       item.EventName,
+					TaskDescription: ruleMap[item.TaskId],
+				}
+				cri.AllTasks = append(cri.AllTasks, *temp)
+			}
 
 			//澶勭悊鎽勫儚鏈虹殑鐘舵��
 			if cE.RunType == commonModel.TYPE_RUNTYPE_POLL || cE.RunType == commonModel.TYPE_RUNTYPE_REALTIME {
diff --git a/chanmanage-service/models/camera.go b/chanmanage-service/models/camera.go
index 7bb51cd..5b77606 100644
--- a/chanmanage-service/models/camera.go
+++ b/chanmanage-service/models/camera.go
@@ -28,6 +28,29 @@
 	return
 }
 
+func GetAllRule() map[int64]string {
+	var items []models.RuleOption
+	sqlStr := `
+	    SELECT a.file_name,a.rule_id,b.task_id
+	    FROM mal_warning_rule a
+	    LEFT JOIN mal_task_rule_link b ON a.rule_id = b.rule_id
+		WHERE task_id>0
+	    group BY a.rule_id
+	`
+	if err := db2.Raw(sqlStr).Scan(&items).Error; err != nil {
+		fmt.Println(err.Error())
+		return nil
+	}
+
+	ruleMap := make(map[int64]string)
+	for _, d2 := range items {
+		if d2.TaskId > 0 {
+			ruleMap[d2.TaskId] = d2.FileName
+		}
+	}
+	return ruleMap
+}
+
 type VideoLink struct {
 	ID      int    `gorm:"column:id"       json:"id"`
 	VideoId string `gorm:"column:video_id" json:"videoId"`

--
Gitblit v1.8.0