panlei
2019-08-01 b18beafcaaa2e2086610f22079842b2e5af6e283
联动规则稳定版
2个文件已修改
45 ■■■■■ 已修改文件
insertdata/insertDataToEs.go 32 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruleserver/ruleToformula.go 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
insertdata/insertDataToEs.go
@@ -7,7 +7,6 @@
    "fmt"
    "io/ioutil"
    "net"
    "os"
    "ruleprocess/cache"
    "ruleprocess/logger"
    "strings"
@@ -72,6 +71,7 @@
    AnalyServerName string                 `json:"analyServerName"`
    AnalyServerIp   string                 `json:"analyServerIp"`
    ClusterId       string                 `json:"clusterId"`
    LinkId            string                   `json:"linkId"`
    DetectScore     float64                `json:"detectScore"`
    IsAlarm         int                    `json:"isAlarm"`
    IsAckAlarm      int                    `json:"isAckAlarm"`
@@ -97,6 +97,7 @@
    ClusterId       string      `json:"clusterId"`
    PicSmUrl        []string    `json:"picSmUrl"`
    PicDate         string      `json:"picDate"`
    LinkId            string        `json:"linkId"`
    VideoUrl        string      `json:"videoUrl"`
    IsAlarm         int         `json:"isAlarm"`
    IsAckAlarm      int         `json:"isAckAlarm"`
@@ -136,15 +137,15 @@
//    //}
//}
func InsertToEs(msg ruleserver.ResultMsg) {
    InsertFace(msg)
    InsertFace(msg,"")
    //flag := ruleserver.BodyIsSame(msg.SdkMessage)
    //if !flag {
    InsertYolo(msg)
    InsertYolo(msg,"")
    //}
}
// 往es中插入人脸数据
func InsertFace(msg ruleserver.ResultMsg) {
func InsertFace(msg ruleserver.ResultMsg,linkId string) {
    if msg.RuleResult["face"] != nil && len(msg.RuleResult["face"].([]ruleserver.FaceResult)) > 0 {
        logger.Info("往ES插人脸数据")
        for _, faceResult := range msg.RuleResult["face"].([]ruleserver.FaceResult) {
@@ -189,6 +190,10 @@
                race := getRaceString(face.ThftRes.Race)
                ageDescription := getDescription(face.ThftRes.Age)
                esDataId := uuid.NewV4().String()
                linksId := ""
                if linkId != "" {
                    linksId = linkId
                }
                pervideo := PerVideoPicture{
                    esDataId,
                    msg.Cid,
@@ -214,6 +219,7 @@
                    localConfig.ServerName,
                    serverIp,
                    "",
                    linksId,
                    face.Score,
                    1,
                    0,
@@ -290,6 +296,7 @@
        localConfig.ServerName,
        serverIp,
        "",
        "",
        0,
        1,
        0,
@@ -318,12 +325,12 @@
}
// 往es中插入yolo数据
func InsertYolo(msg ruleserver.ResultMsg) {
func InsertYolo(msg ruleserver.ResultMsg,linkId string) {
    if msg.RuleResult["yolo"] != nil && len(msg.RuleResult["yolo"].([]ruleserver.Result)) > 0 {
        // 先判断一下数据带的规则标签是否有可以插入的
        flag := false
        for _, res := range msg.RuleResult["yolo"].([]ruleserver.Result) {
            logger.Info("定时器打的数字标签:",res.Others.TimeLabel)
            //logger.Info("定时器打的数字标签:",res.Others.TimeLabel)
            if res.Others.TimeLabel == "01" || res.Others.TimeLabel == "10" {
                flag = true
            }
@@ -336,7 +343,7 @@
            for _, yoloResult := range msg.RuleResult["yolo"].([]ruleserver.Result) {
                if yoloResult.Others.TimeLabel == "01" || yoloResult.Others.TimeLabel == "10" {
                    // 拼出sdkname
                    logger.Info("应该进来才对的")
                    //logger.Info("应该进来才对的")
                    sdkNames = sdkNames + yoloResult.SdkName
                    alarm := ChangeToString(yoloResult.DefenceState, yoloResult.AlarmLevel)
                    alarmRules = append(alarmRules, AlarmRule{yoloResult.RuleGroupId, alarm, yoloResult.RuleText, yoloResult.DefenceState})
@@ -367,9 +374,10 @@
            linkFlag := false
            for _, yoloResult := range msg.RuleResult["yolo"].([]ruleserver.Result) {
                if (yoloResult.Others.TimeLabel == "01" || yoloResult.Others.TimeLabel == "10") && yoloResult.Others.LinkCache != nil && len(yoloResult.Others.LinkCache) > 1{
                    linkId := uuid.NewV4().String()
                    for _, msg2 := range yoloResult.Others.LinkCache {
                        logger.Warn("插入联动数据","此帧数据的id为",msg2.Cid)
                        InsertYolo(msg2)
                        InsertYolo(msg2,linkId)
                        linkFlag = true
                    }
                }
@@ -377,7 +385,7 @@
            if linkFlag {
                // 联动数据中包含本帧数据,插入联动数据后就不需要插入本帧数据了
                logger.Warn("成功插入两个联动图片")
                os.Exit(1)
                //os.Exit(1)
                return
            }
            //logger.Info("--------走到这儿就不一样")
@@ -419,6 +427,10 @@
            url = append(url, strings.Split(resp["fileUrl"].(string), "/")[1])
            esDataId := uuid.NewV4().String()
            linksId := ""
            if linkId != "" {
                linksId = linkId
            }
            peraction := Personaction{
                esDataId,
                msg.Cid,
@@ -435,6 +447,7 @@
                "",
                url,
                i.Timestamp,
                linksId,
                "",
                isAlarm,
                0,
@@ -510,6 +523,7 @@
        []string{strings.Split(resp["fileUrl"].(string), "/")[1]},
        i.Timestamp,
        "",
        "",
        0,
        0,
        0,
ruleserver/ruleToformula.go
@@ -335,11 +335,11 @@
                //logger.Debug("------locations的内容:", locations)
                if sdkNames != "" {
                    args.RuleResult["yolo"] = append(args.RuleResult["yolo"].([]Result), Result{taskId, sdkNames, groupRule.GroupId,groupRule.DefenceState,groupRule.AlarmLevel, groupRule.GroupText, locations, polygonId,label})
                    logger.Info("-------------------yolo结果标签长度", len(args.RuleResult["yolo"].([]Result)))
                    //logger.Info("-------------------yolo结果标签长度", len(args.RuleResult["yolo"].([]Result)))
                }
                if faceFlag {
                    args.RuleResult["face"] = append(args.RuleResult["face"].([]FaceResult), FaceResult{Result{taskId, sdkNames, groupRule.GroupId,groupRule.DefenceState,groupRule.AlarmLevel, groupRule.GroupText, []Rect{}, polygonId,label},faces})
                    logger.Info("-------------------face结果标签", len(args.RuleResult["face"].([]FaceResult)))
                    //logger.Info("-------------------face结果标签", len(args.RuleResult["face"].([]FaceResult)))
                }
                return true
            } else {
@@ -430,18 +430,14 @@
                tempMap := make(map[string]interface{})
                for k,result := range args.RuleResult {
                    if k == "yolo" {
                        logger.Info("有没有yolo标签")
                        tempMap[k] = []Result{}
                        for _,res := range result.([]Result) {
                            logger.Info("进一次yolo循环")
                            tempMap[k] = append(tempMap[k].([]Result),res)
                        }
                    }
                    if k == "face" {
                        logger.Info("有没有face标签")
                        tempMap[k] = []FaceResult{}
                        for _,res := range result.([]FaceResult) {
                            logger.Info("进一次face循环")
                            tempMap[k] = append(tempMap[k].([]FaceResult),res)
                        }
                    }
@@ -484,6 +480,11 @@
                            args.RuleResult["yolo"].([]Result)[i].Others.LinkCache = label.LinkCache
                        }
                    }
                    for i := 0; i < len(args.RuleResult["face"].([]FaceResult)); i++  {
                        if args.RuleResult["face"].([]FaceResult)[i].RuleGroupId == groupRule.GroupId { // 把联动数据追加上
                            args.RuleResult["face"].([]FaceResult)[i].Others.LinkCache = label.LinkCache
                        }
                    }
                }
            }
        } else {