package controllers import ( "basic.com/dbapi.git" "basic.com/pubsub/esutil.git" "basic.com/valib/logger.git" "encoding/json" "github.com/gin-gonic/gin" "strconv" "webserver/cache" "webserver/extend/code" "webserver/extend/config" "webserver/extend/util" "webserver/models" "webserver/vo" ) // //import ( // "basic.com/dbapi.git" // "basic.com/pubsub/esutil.git" // "encoding/json" // "fmt" // "github.com/gin-gonic/gin" // "strconv" // "webserver/cache" // "webserver/extend/code" // "webserver/extend/config" // "webserver/extend/util" // "webserver/models" //) // type CameraTaskController struct { } // //用于接收多个摄像机的id,以逗号隔开 type MultiCamera struct { CameraIds []string `json:"cameraIds"` } // //type CameraTaskVo struct { // Id string `json:"id"` // CameraId string `json:"camera_id"` // TaskId string `json:"task_id"` //任务id 来自于任务表 // TimeRule string `json:"time_rule"` // ReactRule string `json:"react_rule"` // ReactDevice string `json:"react_device"` // DelFlag bool `json:"del_flag"` // UpdateFlag bool `json:"update_flag"` // Enable int `json:"enable"` //默认启用 // Sort int `json:"sort"` //任务排序 // IsFull int `json:"is_full"` //参数是否设置完整 // LinkTaskId string `json:"link_task_id"` //联动任务组 //} // //type CameraTaskSaveArg struct { // Id string `json:"id"` // SetType string `json:"set_type" example:"batchTask:批量任务,linkTask:联动任务"`//任务设置方式(批量设置还是联动任务设置) // CameraIds []string `json:"camera_ids"` // TaskId string `json:"task_id"` // GroupId string `json:"group_id"` // GroupText string `json:"group_text"` // GroupRule []CameraTaskArgVo `json:"group_rule"` //} // //type CameraTaskArgGroup struct { // Id string `json:"id"` // CameraTaskId string `json:"camera_task_id"` // GroupId string `json:"group_id"` // GroupText string `json:"group_text"` // AlarmLevel int `json:"alarm_level"` //} // //type CameraTaskArgVo struct { // Id string `json:"id"` // CameraId string `json:"camera_id"`//摄像机id // PolygonId string `json:"polygon_id"`//多边形id // SdkId string `json:"sdk_id"`//算法id // SdkArgAlias string `json:"sdk_arg_alias"`//算法参数别名 // Operator string `json:"operator"`//计算方式=,>,>=等等 // OperatorType string `json:"operator_type"`//计算的值类型 // SdkArgValue string `json:"sdk_arg_value"` //算法参数值设置 // RuleWithPre string `json:"rule_with_pre"` //与下一条的逻辑运算符 // GroupId string `json:"group_id"` //} // //type LinkCameraTasksVo struct { // //} // type CameraTaskInfoVo struct { Camera models.Camera `json:"camera"` Tasks []models.Task `json:"tasks"` Polygon CameraPolygonVo `json:"polygon"` } // // @Security ApiKeyAuth // @Summary 查询所有任务 // @Description "查询所有任务" // @Accept json // @Produce json // @Tags 摄像机规则 // @Param cameraIds body controllers.MultiCamera false "摄像机id数组" // @Success 200 {string} json "{"code":200, success:true, msg:"请求处理成功", data:"所有任务信息"}" // @Failure 500 {string} json "{"code":500, success:false msg:"",data:"错误信息内容"}" // @Router /data/api-v/camera/alltask [post] func (ctc CameraTaskController) FindTasksByCameraIds(c *gin.Context){ var mulCamera MultiCamera c.BindJSON(&mulCamera) var api dbapi.CameraRuleApi var camRuleArr []vo.CameraAndRules for _,camId :=range mulCamera.CameraIds { if b, d := api.FindByCameraId(camId); b { bytes, _ := json.Marshal(d) var camTInfo vo.CameraAndRules if err := json.Unmarshal(bytes, &camTInfo); err == nil { camRuleArr = append(camRuleArr, camTInfo) } else { logger.Debug("alltask err:", err) } } } logger.Debug("alltask camRuleArr:", camRuleArr) var result []SceneIfDelResult m := make(map[string]string) for _,cg :=range camRuleArr { for _,g := range cg.AllGroupRules { m[g.Id] = g.SceneName result = append(result, SceneIfDelResult{ Id: g.Id, Name: g.SceneName, IsDelete: false, }) } } localConf, _ := cache.GetServerInfo() if localConf.AlarmIp != "" && localConf.ServerId != "" && localConf.AlarmPort>0 { indexName := config.EsInfo.EsIndex.AiOcean.IndexName esTaskM, e := esutil.AggregateTaskList(localConf.AlarmIp, strconv.Itoa(int(localConf.AlarmPort)), indexName, localConf.ServerId) if e==nil && esTaskM !=nil { for _,tM :=range esTaskM { if _,ok := m[tM["taskId"].(string)];!ok {//表示此任务已被删除 taskId := tM["taskId"].(string) taskName := tM["taskName"].(string) if taskId != "" { result = append(result, SceneIfDelResult{ Id: taskId, Name: taskName, IsDelete: true, }) } } } } } util.ResponseFormat(c,code.Success, result) } type SceneIfDelResult struct { Id string `json:"id"` Name string `json:"name"` IsDelete bool `json:"isDelete"` } // //// @Security ApiKeyAuth //// @Summary 摄像机添加一个任务 //// @Description 摄像机添加一个任务 //// @Accept x-www-form-urlencoded //// @Produce json //// @Tags CameraTask //// @Param cameraId formData string true "摄像机id" //// @Param taskId formData string true "任务id" //// @Success 200 {string} json "{"code":200, success:true, msg:"请求处理成功", data:"单个摄像机的全部信息"}" //// @Failure 500 {string} json "{"code":500, success:false, msg:"",data:"错误信息内容"}" //// @Router /data/api-v/cameraTask/addTask [post] //func (ctc CameraTaskController) AddTask(c *gin.Context) { // cameraId := c.PostForm("cameraId") // taskId := c.PostForm("taskId") // if cameraId == "" || taskId == "" { // util.ResponseFormat(c,code.RequestParamError,"参数有误") // return // } // var api dbapi.CameraTaskApi // if b,data := api.AddTask(cameraId, taskId);b { // util.ResponseFormat(c,code.AddSuccess, data) // } else { // if data.(string) == "此国标摄像机已在其它服务器配置任务!" { // util.ResponseFormat(c,code.AddTaskErr, data) // } else { // util.ResponseFormat(c,code.ComError, data) // } // } //} // //// @Security ApiKeyAuth //// @Summary 查询所有任务 //// @Description "查询所有任务" //// @Produce json //// @Tags CameraTask //// @Param cameraId path string true "摄像机id" //// @Success 200 {string} json "{"code":200, success:true, msg:"", data:""}" //// @Failure 500 {string} json "{"code":500, success:false, msg:"", data:""}" //// @Router /data/api-v/camera/task/{cameraId} [get] //func (ctc CameraTaskController) CameraTaskAll(c *gin.Context) { // cameraId := c.Param("cameraId") // if cameraId == "" { // util.ResponseFormat(c,code.RequestParamError,"摄像机id不能为空") // return // } // var api dbapi.CameraTaskApi // flag,data := api.CameraTaskAll(cameraId) // if flag { // util.ResponseFormat(c,code.Success,data) // } else { // util.ResponseFormat(c,code.ComError,data) // } //} // //// @Security ApiKeyAuth //// @Summary 摄像机保存任务 //// @Description 摄像机保存任务 //// @Accept json //// @Produce json //// @Tags camera //// @Param args body controllers.CameraTaskSaveArg true "摄像机任务保存请求参数" //// @Success 200 {string} json "{"code":200, success:true, msg:"请求处理成功", data:"添加的任务信息"}" //// @Failure 500 {string} json "{"code":500, success:false, msg:"",data:"错误信息内容"}" //// @Router /data/api-v/camera/saveTask [post] //func (cc CameraController) CameraTaskSave(c *gin.Context) { // var saveBody CameraTaskSaveArg // err := c.BindJSON(&saveBody) // if err != nil { // util.ResponseFormat(c, code.RequestParamError, "参数有误") // return // } // var api dbapi.CameraTaskApi // paramBody := util.Struct2Map(saveBody) // fmt.Println("paramBody:",paramBody) // flag, data := api.CameraTaskSave(paramBody) // fmt.Println("data",data) // if flag { // util.ResponseFormat(c,code.Success,data) // } else { // util.ResponseFormat(c, code.ComError, data) // } //} // //type PasteRuleArg struct { // SourceId string `json:"sourceId" binding:"required"` // TargetIds []string `json:"targetIds" binging:"required"` //} // //// @Summary 复制摄像机规则到选定的多个摄像机 //// @Description 复制摄像机规则到选定的多个摄像机 //// @Accept json //// @Produce json //// @Tags CameraTask //// @Param args body controllers.PasteRuleArg true "规则复制参数" //// @Success 200 {string} json "{"code":200, success:true, msg:"", data:""}" //// @Failure 500 {string} json "{"code":500, success:false, msg:"",data:""}" //// @Router /data/api-v/camera/pasteRules [post] //func (ctc CameraTaskController) PasteRules(c *gin.Context) { // var reqBody PasteRuleArg // err := c.BindJSON(&reqBody) // if err != nil { // util.ResponseFormat(c, code.RequestParamError, "") // return // } // var api dbapi.CameraTaskApi // if api.PasteRules(reqBody.SourceId, reqBody.TargetIds) { // util.ResponseFormat(c,code.Success,"") // } else { // util.ResponseFormat(c,code.ComError,"") // } //} // //// @Security ApiKeyAuth //// @Summary 删除摄像机的任务 //// @Description 删除摄像机的任务 //// @Produce json //// @Tags camera //// @Param cameraId path string true "摄像机id" //// @Param taskId path string true "任务id" //// @Success 200 {string} json "{"code":200, success:true, msg:"请求处理成功", data:"删除的摄像机信息"}" //// @Failure 500 {string} json "{"code":500, success:false, msg:"",data:"错误信息内容"}" //// @Router /data/api-v/camera/delTask/{cameraId}/{taskId} [delete] //func (cc CameraController) CameraDelTask(c *gin.Context) { // cameraId := c.Param("cameraId") // taskId := c.Param("taskId") // if cameraId == "" || taskId == "" { // util.ResponseFormat(c,code.RequestParamError,"参数有误") // return // } // var api dbapi.CameraTaskApi // flag,data := api.DeleteCameraTask(cameraId,taskId) // // if flag { // util.ResponseFormat(c, code.Success, data) // } else { // util.ResponseFormat(c, code.ComError, data) // } //} // //type DataTransVo struct { // CameraIds []string `json:"camera_ids"` // TaskId string `json:"task_id"` // IsDataTrans int `json:"is_data_trans"` //} //type GroupAlarmLevelVo struct { // GroupId string `json:"group_id"` // AlarmLevel int `json:"alarm_level"` //} // //// @Security ApiKeyAuth //// @Summary 保存任务是否下传数据 //// @Description 保存任务是否下传数据 //// @Accept json //// @Produce json //// @Tags CameraTask //// @Param TransAndAlarmLevel body controllers.DataTransVo true "请求参数结构" //// @Success 200 {string} json "{"code":200, success:true, msg:"", data:""}" //// @Failure 500 {string} json "{"code":500, success:false, msg:"", data:""}" //// @Router /data/api-v/cameraTask/saveIsDataTrans [post] //func (ctc CameraTaskController) SaveIsDataTrans(c *gin.Context) { // var transVo DataTransVo // if err := c.BindJSON(&transVo);err!=nil { // util.ResponseFormat(c,code.RequestParamError,"参数有误") // return // } // var api dbapi.CameraTaskApi // paramBody := util.Struct2Map(transVo) // // flag ,data := api.SaveIsDataTrans(paramBody) // if flag { // util.ResponseFormat(c,code.Success,data) // } else { // util.ResponseFormat(c,code.ComError,data) // } //} // //// @Security ApiKeyAuth //// @Summary 保存规则组报警等级 //// @Description 保存规则组报警等级 //// @Accept json //// @Produce json //// @Tags CameraTask //// @Param GroupLevel body controllers.GroupAlarmLevelVo true "alarmLevel" //// @Success 200 {string} json "{"code":200, success:true, msg:"", data:""}" //// @Failure 500 {string} json "{"code":500, success:false, msg:"", data:""}" //// @Router /data/api-v/cameraTask/saveAlarmLevelByGroup [post] //func (ctc CameraTaskController) SaveAlarmLevelByGroup(c *gin.Context) { // var groupLevelVo GroupAlarmLevelVo // if err := c.BindJSON(&groupLevelVo);err !=nil { // util.ResponseFormat(c,code.RequestParamError,"参数有误") // return // } // // var api dbapi.CameraTaskApi // flag,data := api.SaveAlarmLevelByGroup(groupLevelVo.GroupId,groupLevelVo.AlarmLevel) // if flag { // util.ResponseFormat(c,code.Success,data) // } else { // util.ResponseFormat(c,code.ComError,data) // } //} // //type CameraTaskStatusVo struct { // CameraId string `json:"cameraId"` // TaskId string `json:"taskId"` // Status int `json:"status"` //} // //// @Security ApiKeyAuth //// @Summary 更新任务状态 //// @Description 更新任务状态 //// @Accept json //// @Produce json //// @Tags CameraTask //// @Param CameraTaskStatus body controllers.CameraTaskStatusVo true "参数结构体" //// @Success 200 {string} json "{"code":200, success:true, msg:"", data:""}" //// @Failure 500 {string} json "{"code":500, success:false, msg:"", data:""}" //// @Router /data/api-v/cameraTask/updateCameraTaskStatus [post] //func (ctc CameraTaskController) UpdateCameraTaskStatus(c *gin.Context) { // var paramVo CameraTaskStatusVo // if err := c.BindJSON(¶mVo);err !=nil { // util.ResponseFormat(c,code.RequestParamError,"参数有误") // return // } // var api dbapi.CameraTaskApi // flag, data := api.UpdateCameraTaskStatus(paramVo.CameraId, paramVo.TaskId, paramVo.Status) // if flag { // if data.(string) == "此任务为停用状态,请在任务管理中开启!"{ // util.ResponseFormat(c,code.TaskStoped,data) // } else { // util.ResponseFormat(c,code.UpdateSuccess,data) // } // } else { // util.ResponseFormat(c,code.ComError,data) // } //}