qixiaoning
2025-07-24 343a89f9fa20d2d142469b2a4531e16ce03d3525
算力管理,记录查询
1个文件已添加
9个文件已修改
185 ■■■■■ 已修改文件
camera-common/models/Record.go 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
camera-common/vo/camera.go 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
camera-service/controllers/camera.go 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
chanmanage-service/controllers/pollSet.go 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
chanmanage-service/models/camera.go 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
chanmanage-service/models/db.go 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
chanmanage-service/service/pollSetService.go 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
sync-service/models/camera.go 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
sync-service/service/cameraService.go 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
sync-service/vo/camera.go 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
camera-common/models/Record.go
@@ -5,6 +5,7 @@
    "fmt"
    "math"
    "sort"
    "strconv"
    "strings"
    "time"
@@ -28,7 +29,7 @@
// 统计查询
type StaticRecord struct {
    Id                 int64                     `json:"id"`
    Id                 string                    `json:"id"`
    TaskId             []int64                   `json:"task_id"`
    RuleId             []int64                   `json:"rule_id"`
    EventLevelId       []int64                   `json:"event_level_id"`
@@ -226,7 +227,7 @@
            case "id":
                IdColumn := field.(*entity.ColumnInt64).Data()
                if len(IdColumn) > 0 {
                    record.Id = IdColumn[i]
                    record.Id = strconv.FormatInt(IdColumn[i], 10)
                }
            case "task_id":
                TaskIdColumn := field.(*entity.ColumnInt64Array).Data()
camera-common/vo/camera.go
@@ -16,7 +16,7 @@
    return v.Camera
}
//摄像机运行状态结构体
// 摄像机运行状态结构体
type CameraRunVo struct {
    Id        string `json:"id"`         //摄像机id
    Name      string `json:"name"`       //摄像机名称
@@ -32,10 +32,11 @@
type CameraRunInfo struct {
    models.Camera
    RunServerName string          `json:"runServerName"`
    Tasks         []CameraRunTask `json:"tasks"`
    Status        int             `json:"status"`
    LinkCams      [][]LinkCam     `json:"linkCams"` //与此摄像机联动的所有联动摄像机信息,分组
    RunServerName string `json:"runServerName"`
    // Tasks         []CameraRunTask `json:"tasks"`
    AllTasks []models.Task `json:"allTasks"`
    Status   int           `json:"status"`
    LinkCams [][]LinkCam   `json:"linkCams"` //与此摄像机联动的所有联动摄像机信息,分组
}
type LinkCam struct {
camera-service/controllers/camera.go
@@ -323,9 +323,9 @@
    sv := service.CameraService{}
    if sv.ChangeRunType(ccrVo) {
        cIds := strings.Join(ccrVo.CameraIds, ",")
        cc.addDbChangeMsg(h.Bk, protomsg.TableChanged_T_Camera, cIds, protomsg.DbAction_Update, "")
        _, _ = service2.DoBusReq("/data/api-v/saas/syncCamera", config.Server.AnalyServerId, aiot.RequestMethod_Post, aiot.RequestContentType_ApplicationJson, map[string]interface{}{})
        //cIds := strings.Join(ccrVo.CameraIds, ",")
        //cc.addDbChangeMsg(h.Bk, protomsg.TableChanged_T_Camera, cIds, protomsg.DbAction_Update, "")
        //    _, _ = service2.DoBusReq("/data/api-v/saas/syncCamera", config.Server.AnalyServerId, aiot.RequestMethod_Post, aiot.RequestContentType_ApplicationJson, map[string]interface{}{})
        return &bhomeclient.Reply{Success: true, Msg: "更新成功"}
    } else {
        return &bhomeclient.Reply{Success: false, Msg: "更新失败"}
chanmanage-service/controllers/pollSet.go
@@ -1,10 +1,6 @@
package controllers
import (
    "basic.com/pubsub/protomsg.git"
    "basic.com/valib/bhomeclient.git"
    "basic.com/valib/bhomedbapi.git"
    "basic.com/valib/logger.git"
    "strconv"
    "strings"
    commonModel "vamicro/camera-common/models"
@@ -13,6 +9,11 @@
    "vamicro/chanmanage-service/models"
    "vamicro/chanmanage-service/service"
    "vamicro/config"
    "basic.com/pubsub/protomsg.git"
    "basic.com/valib/bhomeclient.git"
    "basic.com/valib/bhomedbapi.git"
    "basic.com/valib/logger.git"
)
type PollSetController struct {
@@ -252,6 +253,9 @@
            }
        }
        _, allLinks := crApi.FindAllCameraLink()
        //获取督查任务
        for _, cE := range list {
            var cri vo.CameraRunInfo
            cri.CopyFromProtoCamera(cE)
@@ -265,17 +269,21 @@
                }
            }
            if cgs, ok := ruleM[cE.Id]; ok {
                for _, g := range cgs.Rules {
                    var crTask vo.CameraRunTask
            // if cgs, ok := ruleM[cE.Id]; ok {
            //     for _, g := range cgs.Rules {
            //         var crTask vo.CameraRunTask
                    crTask.HasRule = g.Enable
                    crTask.TaskName = g.SceneName
                    cri.Tasks = append(cri.Tasks, crTask)
                }
            } else {
                cri.Tasks = []vo.CameraRunTask{}
            }
            //         crTask.HasRule = g.Enable
            //         crTask.TaskName = g.SceneName
            //         cri.Tasks = append(cri.Tasks, crTask)
            //     }
            // } else {
            //     cri.Tasks = []vo.CameraRunTask{}
            // }
            var ids []string
            ids = append(ids, cE.Id)
            cri.AllTasks, _ = models.GetListTask(ids)
            //处理摄像机的状态
            if cE.RunType == commonModel.TYPE_RUNTYPE_POLL || cE.RunType == commonModel.TYPE_RUNTYPE_REALTIME {
                if crInfo, ok := ruleM[cE.Id]; ok && crInfo.Rules != nil && len(crInfo.Rules) > 0 {
chanmanage-service/models/camera.go
New file
@@ -0,0 +1,33 @@
package models
import (
    "fmt"
    "strings"
    "vamicro/camera-common/models"
)
// 查询列表数据
func GetListTask(ids []string) (items []models.Task, err error) {
    //idList := strings.Join(ids, ",")
    idList := "'" + strings.Join(ids, "','") + "'"
    // 主查询SQL
    //sqlStr := `select c.task_id, c.task_name from mal_task_video_link a left join mal_smart_task c on a.task_id = c.task_id where a.video_id in(?) ORDER BY a.task_id desc`
    sqlStr := fmt.Sprintf(`
        SELECT c.task_id, c.task_name
        FROM mal_task_video_link a
        LEFT JOIN mal_smart_task c ON a.task_id = c.task_id
        WHERE a.video_id IN (%s)
        ORDER BY a.task_id DESC
    `, idList)
    if err := db2.Raw(sqlStr).Scan(&items).Error; err != nil {
        fmt.Println(err.Error())
        return nil, err
    }
    return
}
// 获取任务统计
func GetTasks() (items []models.Task, err error) {
}
chanmanage-service/models/db.go
@@ -1,13 +1,15 @@
package models
import (
    "vamicro/config"
    "basic.com/valib/logger.git"
    "github.com/jinzhu/gorm"
    _ "github.com/jinzhu/gorm/dialects/sqlite"
    "basic.com/valib/logger.git"
    "vamicro/config"
)
var db *gorm.DB
var db2 *gorm.DB
var err error
// Init creates a connection to mysql database and
@@ -20,13 +22,21 @@
    db.LogMode(true)
    //db.SetLogger(&DbLogger{})
    db.AutoMigrate(&PollConfig{})
    db2, err = gorm.Open(config.DBconf.Name, "../config/camera-service.db")
    if err != nil {
        logger.Debug("db open error ", err)
    }
    db2.LogMode(true)
    db2.AutoMigrate(&PollConfig{})
}
//GetDB ...
// GetDB ...
func GetDB() *gorm.DB {
    return db
}
func CloseDB() {
    db.Close()
}
}
chanmanage-service/service/pollSetService.go
@@ -75,9 +75,9 @@
    return false
}
//触发条件
//1.实时摄像机切换为轮询或者监控,或者实时由监控切换为实时
//2.实时摄像机规则Enable状态改变
// 触发条件
// 1.实时摄像机切换为轮询或者监控,或者实时由监控切换为实时
// 2.实时摄像机规则Enable状态改变
func (sv *PollSetService) ResetChannelCount() {
    //1.计算做实时任务的路数
    //2.本地文件占的路数
@@ -104,7 +104,7 @@
    sv.UpdateChannelCount(pollCount, videoCount)
}
//拖动改变轮询和数据栈的数量
// 拖动改变轮询和数据栈的数量
func (sv *PollSetService) UpdateChannelCount(pollChannelCount int, videoChannelCount int) bool {
    var fasApi bhomedbapi.FileStackApi
    var err error
@@ -191,15 +191,15 @@
                v.RealRunningCount++
            }
        } else if c.RunType == bhomeclient.TYPE_RUNTYPE_POLL {
            pTotal++
            if crInfo, ok := ruleM[c.Id]; ok && crInfo.Rules != nil && len(crInfo.Rules) > 0 {
                v.PollValidCount++
            } else {
                v.PollInvalidCount++
            }
            if c.IsRunning {
                v.PollRunningCount++
            }
            // pTotal++
            // if crInfo, ok := ruleM[c.Id]; ok && crInfo.Rules != nil && len(crInfo.Rules) > 0 {
            //     v.PollValidCount++
            // } else {
            //     v.PollInvalidCount++
            // }
            // if c.IsRunning {
            //     v.PollRunningCount++
            // }
        }
    }
    v.RealTotal = rTotal
sync-service/models/camera.go
@@ -282,23 +282,3 @@
    return dbdel.RowsAffected, nil
}
// 查询列表数据
func GetListTask(ids []string) (items []Task, err error) {
    //idList := strings.Join(ids, ",")
    idList := "'" + strings.Join(ids, "','") + "'"
    // 主查询SQL
    //sqlStr := `select c.task_id, c.task_name from mal_task_video_link a left join mal_smart_task c on a.task_id = c.task_id where a.video_id in(?) ORDER BY a.task_id desc`
    sqlStr := fmt.Sprintf(`
        SELECT c.task_id, c.task_name
        FROM mal_task_video_link a
        LEFT JOIN mal_smart_task c ON a.task_id = c.task_id
        WHERE a.video_id IN (%s)
        ORDER BY a.task_id DESC
    `, idList)
    if err := db.Raw(sqlStr).Scan(&items).Error; err != nil {
        fmt.Println(err.Error())
        return nil, err
    }
    return
}
sync-service/service/cameraService.go
@@ -294,22 +294,18 @@
                    }
                }
            }
            // fb, cgs := crApi.FindAllTaskById(cE.Id)
            // if fb && cgs.Rules != nil {
            //     for _, g :=range cgs.Rules {
            //         var crTask vo.CameraRunTask
            fb, cgs := crApi.FindAllTaskById(cE.Id)
            if fb && cgs.Rules != nil {
                for _, g := range cgs.Rules {
                    var crTask vo.CameraRunTask
            //         crTask.HasRule = g.Enable
            //         crTask.TaskName = g.SceneName
            //         cri.Tasks = append(cri.Tasks, crTask)
            //     }
            // } else {
            //     cri.Tasks = []vo.CameraRunTask{}
            // }
            //根据摄像机查询任务
            var Ids []string
            Ids = append(Ids, cE.Id)
            cri.AllTasks, _ = models.GetListTask(Ids)
                    crTask.HasRule = g.Enable
                    crTask.TaskName = g.SceneName
                    cri.Tasks = append(cri.Tasks, crTask)
                }
            } else {
                cri.Tasks = []vo.CameraRunTask{}
            }
            //处理摄像机的状态
            if cE.RunType == models.TYPE_RUNTYPE_POLL || cE.RunType == models.TYPE_RUNTYPE_REALTIME {
sync-service/vo/camera.go
@@ -34,8 +34,8 @@
    models.Camera
    RunServerName string          `json:"runServerName"`
    Tasks         []CameraRunTask `json:"tasks"`
    AllTasks      []models.Task   `json:"allTasks"`
    Status        int             `json:"status"`
    //AllTasks []models.Task `json:"allTasks"`
    Status int `json:"status"`
}
type CameraRunTask struct {