panlei
2019-12-11 4243a710f702b601b1d5a7dc2c765191c191201d
把插入es的so放进中间件
1 文件已重命名
4个文件已修改
46 ■■■■■ 已修改文件
algorithm/middleware/insertDataToEs.go 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
algorithm/middleware/readyData.go 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
insertdata/insertDataToEs.go 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruleserver/ruleToformula.go 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
structure/rule.go 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
algorithm/middleware/insertDataToEs.go
File was renamed from algorithm/insertEs/insertDataToEs.go
@@ -899,3 +899,12 @@
        return nil
    }
}
//func Insert2Es(msg structure.ResultMsg,weedfsUrl1,videoPersonUrl1,serverIp1,serverPort1 string) {
//    if msg.RuleResult["label"] != nil && len(msg.RuleResult["label"].([]structure.Result)) > 0 {
//        for msg.RuleResult["label"].([]structure.Result) {
//
//        }
//    }
//}
algorithm/middleware/readyData.go
@@ -222,7 +222,7 @@
        for _, info := range Track.Result {
            logger.Info("接收跟踪数据:",info.Id,info.Confidence)
            photoMap := structure.PhotoMap{structure.SourcePhoto{Id: strconv.Itoa(int(info.Id)),Score: float64(info.Confidence)*100,Rects: rectFormat(info.RcHuman), Type: "track"},structure.SourcePhoto{}}
            FacePush2Body(&photoMap,m.Tasklab.Sdkinfos)
            //FacePush2Body(&photoMap,m.Tasklab.Sdkinfos)
            logger.Info("组装后的跟踪数据:",photoMap)
            arg.Photo = append(arg.Photo, photoMap)
        }
insertdata/insertDataToEs.go
@@ -8,9 +8,9 @@
    "strconv"
)
var weedfsUrl, videoPersonUrl, personAction string
var serverIp string
var serverPort string
//var weedfsUrl, videoPersonUrl, personAction string
//var serverIp string
//var serverPort string
func InsertToEs(msg structure.ResultMsg) {
    defer func() {
        if err := recover(); err != nil {
@@ -21,15 +21,15 @@
    if err != nil {
        panic("配置文件不合法")
    }
    weedfsUrl = "http://" + localConfig1.WebPicIp + ":" + strconv.Itoa(int(localConfig1.WebPicPort)) + "/submit"
    videoPersonUrl = "http://" + localConfig1.AlarmIp + ":" + strconv.Itoa(int(localConfig1.AlarmPort)) + "/" + structure.EsInfo.EsIndex.AIOcean.IndexName + "/" + structure.EsInfo.EsIndex.AIOcean.IndexType+"?refresh=true"
    serverIp = localConfig1.AlarmIp
    serverPort = strconv.Itoa(int(localConfig1.AlarmPort))
    weedfsUrl := "http://" + localConfig1.WebPicIp + ":" + strconv.Itoa(int(localConfig1.WebPicPort)) + "/submit"
    videoPersonUrl := "http://" + localConfig1.AlarmIp + ":" + strconv.Itoa(int(localConfig1.AlarmPort)) + "/" + structure.EsInfo.EsIndex.AIOcean.IndexName + "/" + structure.EsInfo.EsIndex.AIOcean.IndexType+"?refresh=true"
    serverIp := localConfig1.AlarmIp
    serverPort := strconv.Itoa(int(localConfig1.AlarmPort))
    handle(msg,weedfsUrl,videoPersonUrl,serverIp,serverPort)
}
func handle (msg structure.ResultMsg,weedfsUrl,videoPersonUrl,serverIp,serverPort string) {
    p,err :=  plugin.Open("./algorithm/insertEs.so")
    p,err :=  plugin.Open("./algorithm/middleware.so")
    if err != nil {
        panic(err)
    }
ruleserver/ruleToformula.go
@@ -119,6 +119,7 @@
    result,sdkNames,polygonId = CallMiddleware(args,*groupRule,&label,message)
    if result {
        // 最后过持续时间等时间维度的条件   把时间规则位置调整到这个位置是为了缓存数据         !!!!!ps: 对画面中单个目标做定时器的不用再过画面定时器
        for j := 0; j < len(groupRule.Rules); j++ {
            for _, sdkData := range args.Sdkdata {
@@ -355,7 +356,7 @@
            if flag {
                m := make(map[string]interface{})
                m["yolo"] = []structure.Result{}
                m["yolo"] = append(m["yolo"].([]structure.Result), structure.Result{args.TaskId, "", "", true, 0, "", am.FilterData, am.AreaJson, false,label})
                m["yolo"] = append(m["yolo"].([]structure.Result), structure.Result{args.TaskId, "", "", true, 0, "", am.FilterData, true,am.AreaJson, false,label})
                timeLength, _ := strconv.Atoi(rule.SdkArgValue)
                timeEle := TimeElement{N: timeLength, InitN: timeLength, AlarmFlag: false, BufferFlag: 10, CacheSdkData: structure.ResultMsg{message, m}} // 扔进去一个定时器元素(并缓存当前画面帧数据)
                //TimeEleList = make(map[string]timeElement)
@@ -370,6 +371,7 @@
}
func AssembResultLabel(args *structure.SdkDatas, groupRule *protomsg.GroupRule,sdkNames string,taskId string,polygonId string,label structure.Others) []int{
    faces := []*structure.Arg{}
    yolos := []*structure.Arg{}
    targets := []*structure.Arg{}
@@ -427,27 +429,27 @@
    //logger.Info("触发的区域id:",polygonId)
    var labelTypes []int // 0为yolo标签,1为face标签 2为两者标签
    if sdkNames != "" && len(targets) == 0 {
        args.RuleResult["yolo"] = append(args.RuleResult["yolo"].([]structure.Result), structure.Result{taskId, sdkNames, groupRule.GroupId, groupRule.DefenceState, groupRule.AlarmLevel, groupRule.GroupText, yolos, polygonId, islink,label})
        args.RuleResult["yolo"] = append(args.RuleResult["yolo"].([]structure.Result), structure.Result{taskId, sdkNames, groupRule.GroupId, groupRule.DefenceState, groupRule.AlarmLevel, groupRule.GroupText, yolos, true,polygonId, islink,label})
        labelTypes = append(labelTypes,0)
        //logger.Info("-------------------yolo结果标签长度", len(args.RuleResult["yolo"].([]Result)))
    }
    if faceFlag {
        args.RuleResult["face"] = append(args.RuleResult["face"].([]structure.Result), structure.Result{taskId, sdkNames, groupRule.GroupId, groupRule.DefenceState, groupRule.AlarmLevel, groupRule.GroupText, faces, polygonId, islink,label})
        args.RuleResult["face"] = append(args.RuleResult["face"].([]structure.Result), structure.Result{taskId, sdkNames, groupRule.GroupId, groupRule.DefenceState, groupRule.AlarmLevel, groupRule.GroupText, faces, false,polygonId, islink,label})
        //logger.Info("-------------------face结果标签", len(args.RuleResult["face"].([]structure.Result)))
        labelTypes = append(labelTypes,1)
    }
    if len(targets) > 0 {
        args.RuleResult["target"] = append(args.RuleResult["target"].([]structure.Result), structure.Result{taskId, sdkNames, groupRule.GroupId, groupRule.DefenceState, groupRule.AlarmLevel, groupRule.GroupText, targets, polygonId, islink,label})
        args.RuleResult["target"] = append(args.RuleResult["target"].([]structure.Result), structure.Result{taskId, sdkNames, groupRule.GroupId, groupRule.DefenceState, groupRule.AlarmLevel, groupRule.GroupText, targets, false,polygonId, islink,label})
        //logger.Info("-------------------目标持续结果标签", len(args.RuleResult["target"].([]structure.Result)))
        labelTypes = append(labelTypes,2)
    }
    if len(cars) > 0 {
        args.RuleResult["plate"] = append(args.RuleResult["plate"].([]structure.Result), structure.Result{taskId, sdkNames, groupRule.GroupId, groupRule.DefenceState, groupRule.AlarmLevel, groupRule.GroupText, cars, polygonId, islink,label})
        args.RuleResult["plate"] = append(args.RuleResult["plate"].([]structure.Result), structure.Result{taskId, sdkNames, groupRule.GroupId, groupRule.DefenceState, groupRule.AlarmLevel, groupRule.GroupText, cars, false,polygonId, islink,label})
        //logger.Info("-------------------车牌结果标签", len(args.RuleResult["plate"].([]structure.Result)))
        labelTypes = append(labelTypes,3)
    }
    if len(personTrack) > 0 {
        args.RuleResult["track"] = append(args.RuleResult["track"].([]structure.Result), structure.Result{taskId, sdkNames, groupRule.GroupId, groupRule.DefenceState, groupRule.AlarmLevel, groupRule.GroupText, personTrack, polygonId, islink,label})
        args.RuleResult["track"] = append(args.RuleResult["track"].([]structure.Result), structure.Result{taskId, sdkNames, groupRule.GroupId, groupRule.DefenceState, groupRule.AlarmLevel, groupRule.GroupText, personTrack, false,polygonId, islink,label})
        //logger.Info("-------------------车牌结果标签", len(args.RuleResult["plate"].([]structure.Result)))
        labelTypes = append(labelTypes,4)
    }
structure/rule.go
@@ -87,13 +87,12 @@
// 过规则库打上的标签
type Result struct {
    TaskId       string // 任务id
    SdkName      string
    SdkName      string // 算法名称
    RuleGroupId  string // 规则组id
    DefenceState bool   // 是否布防
    AlarmLevel   int32  // 报警等级
    RuleText     string // 文字版规则组
    //Location     []TargetInfo // 目标的坐标
    AlarmObj     []*Arg // 报警的目标数据  打算废掉上面的Location
    AlarmObj     []*Arg // 报警的目标数据
    AlarmPolygon string // 触发的报警框
    IsLink       bool   // 是否是联动任务
    Others