qixiaoning
2025-12-01 5ee5331527a19cb477cfebb8643c606fa2e42797
milvus查询record记录接口修改,查询milvus暂存数据
2个文件已修改
147 ■■■■ 已修改文件
camera-common/models/Record.go 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
camera-service/controllers/camera.go 112 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
camera-common/models/Record.go
@@ -50,7 +50,7 @@
    IsWarning          int64                     `json:"is_warning"`
    ZhDescClass        string                    `json:"zh_desc_class"`
    TaskName           string                    `json:"task_name"`
    WarnTaskName       string                    `json:"warn_task_name"`
    WarnTaskId         string                    `json:"warn_task_id"`
    EventLevelName     string                    `json:"event_level_name"`
    DetectNum          int64                     `json:"detect_num"`
    Suggestion         string                    `json:"suggestion"`
@@ -84,6 +84,7 @@
    TargetInfo         []TargetInfo              `json:"targetInfo"`
    FileId             string                    `json:"fileId"`     // 数据栈文件id
    DataSource         string                    `json:"dataSource"` // 数据来源:摄像机, 数据栈
    DynamicLevel       string                    `json:"dynamic_level"`
}
type Point struct {
@@ -131,9 +132,10 @@
}
type TaskOption struct {
    TaskId     int64  `db:"task_id" json:"taskId"`
    TaskName   string `db:"task_name" json:"taskName"`
    EventLevel int64  `db:"event_level" json:"eventLevel"`
    TaskId         int64  `db:"task_id" json:"taskId"`
    TaskName       string `db:"task_name" json:"taskName"`
    EventLevel     int64  `db:"event_level" json:"eventLevel"`
    EventLevelName string `db:"event_level_name" json:"eventLevelName"`
}
type CheckOption struct {
@@ -417,7 +419,7 @@
            case "warn_task_id":
                WarnColumn := field.(*entity.ColumnVarChar).Data()
                if len(WarnColumn) > 0 {
                    record.WarnTaskName = WarnColumn[i]
                    record.WarnTaskId = WarnColumn[i]
                }
            case "event_level_name":
                EVColumn := field.(*entity.ColumnVarChar).Data()
@@ -622,14 +624,25 @@
// 获取事件
func GetEventByIds(ids []int64) (items []DictOption, err error) {
    placeholders := make([]string, len(ids))
    args := make([]interface{}, len(ids))
    // 动态生成 UNION ALL 子查询
    unionAllParts := make([]string, len(ids))
    for i, id := range ids {
        placeholders[i] = "?"
        args[i] = id
        unionAllParts[i] = fmt.Sprintf("SELECT %d AS dict_id", id)
    }
    sqlStr := `select dict_id,dict_name,dict_value from mal_dict_type where dict_id in (` + strings.Join(placeholders, ",") + `)`
    if err := db.Raw(sqlStr, args...).Scan(&items).Error; err != nil {
    // 拼接 UNION ALL 子查询
    unionAllQuery := strings.Join(unionAllParts, " UNION ALL ")
    // 拼接最终 SQL 查询
    sqlStr := fmt.Sprintf(`
        SELECT t.dict_id, t.dict_name, t.dict_value
        FROM mal_dict_type t
        JOIN (
        %s
        ) AS input_list
        ON t.dict_id = input_list.dict_id;`, unionAllQuery)
    if err := db.Raw(sqlStr).Scan(&items).Error; err != nil {
        return nil, err
    }
camera-service/controllers/camera.go
@@ -1213,7 +1213,7 @@
            IsWarning:       v.IsWarning,
            DetectNum:       v.DetectNum,
            TaskName:        v.TaskName,
            WarnTaskName:    v.WarnTaskName,
            WarnTaskId:      v.WarnTaskId,
            ZhDescClass:     v.ZhDescClass,
            EventLevelName:  v.EventLevelName,
            KnowledgeId:     v.KnowledgeId,
@@ -1231,14 +1231,15 @@
            VideoName:       v.CameraName,
            CameraAddr:      v.CameraName,
            CameraName:      v.CameraName,
            DynamicLevel:    v.DynamicLevel,
        }
        var taskId []int64
        //任务id重新赋值
        if len(v.WarnTaskName) > 0 {
        if len(v.WarnTaskId) > 0 {
            v.TaskId = []int64{}
            taskId = []int64{}
            arr := strings.Split(v.WarnTaskName, ";")
            arr := strings.Split(v.WarnTaskId, ";")
            for _, temp := range arr {
                if len(temp) > 0 {
@@ -1249,21 +1250,50 @@
            }
            v.TaskId = taskId
        }
        items, _ := models.GetTaskByIds(v.TaskId)
        // items, _ := models.GetTaskByIds(v.TaskId)
        //任务名称
        // items, _ := db.GetTaskByIds(v.TaskId)
        items := []models.TaskOption{}
        //if strings.Contains(v.TaskName, ",") {
        taskNames := strings.Split(v.TaskName, ",")
        for _, name := range taskNames {
            task := models.TaskOption{}
            if len(name) > 0 {
                if strings.Contains(name, "_") {
                    tempNames := strings.Split(name, "_")
                    if len(tempNames[0]) > 0 {
                        id, _ := strconv.ParseInt(tempNames[0], 10, 64)
                        task.TaskId = id
                    }
                    task.TaskName = tempNames[1]
                }
            }
            items = append(items, task)
        }
        //}
        temp.TaskNames = items
        //任务名称重新赋值
        var result string
        if len(taskId) > 0 && len(items) > 0 {
            v.EventLevelId = []int64{}
            for index, item := range items {
                v.EventLevelId = append(v.EventLevelId, item.EventLevel)
                if index > 0 {
                    result += ","
        var result1 string
        if len(items) > 0 {
            for _, item := range items {
                // v.EventLevelId = append(v.EventLevelId, item.EventLevel)
                if containsID(taskId, item.TaskId) {
                    result += item.TaskName + ","
                }
                result += item.TaskName
                result1 += item.TaskName + ","
            }
            temp.TaskName = result
            if len(taskId) > 0 {
                temp.TaskName = result
            } else {
                temp.TaskName = result1
            }
        }
        //任务
        temp.TaskName = strings.TrimSuffix(temp.TaskName, ",")
        //视频内容
        // items4, _ := models.GetVideoById(v.VideoPointId)
@@ -1279,19 +1309,51 @@
        temp.RuleNames = items3
        //事件
        items5, _ := models.GetEventByIds(v.EventLevelId)
        temp.EventLevels = items5
        items5 := []models.TaskOption{}
        //if strings.Contains(v.EventLevelName, ",") {
        eventNames := strings.Split(v.EventLevelName, ",")
        for _, name := range eventNames {
            task := models.TaskOption{}
            if len(name) > 0 {
                if strings.Contains(name, "_") {
                    tempNames := strings.Split(name, "_")
                    if len(tempNames[0]) > 0 {
                        id, _ := strconv.ParseInt(tempNames[0], 10, 64)
                        task.TaskId = id
                    }
                    task.EventLevelName = tempNames[1]
                }
            }
            items5 = append(items5, task)
        }
        //}
        tempEventName := temp.DynamicLevel
        //事件等级重新赋值
        var result2 string
        if len(taskId) > 0 && len(items5) > 0 {
            for i, item5 := range items5 {
                if i > 0 {
                    result2 += ","
        var result22 string
        if len(taskId) > 0 {
            for _, item5 := range items5 {
                if containsID(taskId, item5.TaskId) {
                    result2 += item5.EventLevelName + ","
                }
                result2 += item5.DictValue
                result22 += item5.EventLevelName + ","
            }
            temp.EventLevelName = result2
            if len(taskId) > 0 {
                temp.EventLevelName = result2
            } else {
                temp.EventLevelName = result22
            }
            temp.EventLevelName = strings.TrimSuffix(temp.EventLevelName, ",")
            if len(tempEventName) > 0 {
                if len(temp.EventLevelName) > 0 {
                    temp.EventLevelName = tempEventName + "," + temp.EventLevelName
                } else {
                    temp.EventLevelName = tempEventName
                }
            }
        }
        //知识库
@@ -1323,6 +1385,16 @@
    return &bhomeclient.Reply{Success: true, Msg: "获取成功", Data: pageRes}
}
// 包含id
func containsID(taskId []int64, id int64) bool {
    for _, v := range taskId {
        if v == id {
            return true
        }
    }
    return false
}
/**
 *获取督查任务
 */