panlei
2019-07-12 509506fd53635830ff43572df0d7845debf376f9
改造定时器
1个文件已修改
448 ■■■■ 已修改文件
insertdata/insertDataToEs.go 448 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
insertdata/insertDataToEs.go
@@ -101,255 +101,257 @@
func InsertToEs(msg ruleserver.ResultMsg) {
    // 直接从规则的标签数据里拿符合规则的人脸结果
    if msg.RuleResult["face"] != nil && len(msg.RuleResult["face"].([]ruleserver.Arg)) > 0 {
        logger.Info("往ES插人脸数据")
        for _, face := range msg.RuleResult["face"].([]ruleserver.Arg) {
            // 上传大图
            // 解压缩并上传图片
            bdata, err := util.UnCompress(msg.Data)
            if err != nil {
                panic("解压缩图片时出现错误")
            }
            i := protomsg.Image{}
            err = proto.Unmarshal(bdata, &i)
            bigPhotoUrl := make(map[string]interface{})
            bigPhotoUrl, err = util.PostFormBufferData(weedfsUrl, i, uuid.NewV4().String())
            logger.Info(bigPhotoUrl)
            if len(face.Liker) == 0 {
                // 人脸检测,没有相似的底库人员
                localConfig, err := cache.GetServerInfo()
                if err != nil {
                    logger.Error("查询本机信息失败!")
                }
                serverIp, err := GetLocalIP()
    if msg.RuleResult["timeLable"] == "10" {
        if msg.RuleResult["face"] != nil && len(msg.RuleResult["face"].([]ruleserver.Arg)) > 0 {
            logger.Info("往ES插人脸数据")
            for _, face := range msg.RuleResult["face"].([]ruleserver.Arg) {
                // 上传大图
                // 解压缩并上传图片
                bdata, err := util.UnCompress(msg.Data)
                if err != nil {
                    panic("解压缩图片时出现错误")
                }
                // 查询cameraName
                camera, err := cache.GetCameraById(msg.Cid)
                if err != nil {
                    logger.Error("查询摄像机信息失败")
                }
                i := protomsg.Image{}
                err = proto.Unmarshal(bdata, &i)
                bytes := util.SubImg(i, int(face.Location.X), int(face.Location.Y), int(face.Location.X+face.Location.Width), int(face.Location.Y+face.Location.Height))
                resp, err := util.PostFormBufferData1(weedfsUrl, bytes, uuid.NewV4().String())
                if err != nil {
                    logger.Error("上传小图出错")
                }
                logger.Info("================小图地址:",resp["fileUrl"].(string))
                sex := ""
                if face.ThftRes.Gender == 1 {
                    sex = "男"
                bigPhotoUrl := make(map[string]interface{})
                bigPhotoUrl, err = util.PostFormBufferData(weedfsUrl, i, uuid.NewV4().String())
                logger.Info(bigPhotoUrl)
                if len(face.Liker) == 0 {
                    // 人脸检测,没有相似的底库人员
                    localConfig, err := cache.GetServerInfo()
                    if err != nil {
                        logger.Error("查询本机信息失败!")
                    }
                    serverIp, err := GetLocalIP()
                    // 解压缩并上传图片
                    bdata, err := util.UnCompress(msg.Data)
                    if err != nil {
                        panic("解压缩图片时出现错误")
                    }
                    // 查询cameraName
                    camera, err := cache.GetCameraById(msg.Cid)
                    if err != nil {
                        logger.Error("查询摄像机信息失败")
                    }
                    i := protomsg.Image{}
                    err = proto.Unmarshal(bdata, &i)
                    bytes := util.SubImg(i, int(face.Location.X), int(face.Location.Y), int(face.Location.X+face.Location.Width), int(face.Location.Y+face.Location.Height))
                    resp, err := util.PostFormBufferData1(weedfsUrl, bytes, uuid.NewV4().String())
                    if err != nil {
                        logger.Error("上传小图出错")
                    }
                    logger.Info("================小图地址:",resp["fileUrl"].(string))
                    sex := ""
                    if face.ThftRes.Gender == 1 {
                        sex = "男"
                    } else {
                        sex = "女"
                    }
                    race := getRaceString(face.ThftRes.Race)
                    ageDescription := getDescription(face.ThftRes.Age)
                    pervideo := PerVideoPicture{
                        uuid.NewV4().String(),
                        msg.Cid,
                        camera.Addr,
                        time.Now().Format("2006-01-02 15:04:05"),
                        strings.Split(bigPhotoUrl["fileUrl"].(string), "/")[1],
                        msg.Tasklab.Taskid,
                        msg.Tasklab.Taskname,
                        "人脸",
                        "",
                        time.Now().Format("2006-01-02 15:04:05"), // 只检测,没有比对时间
                        sex,
                        face.ThftRes.Age,
                        ageDescription,
                        race,
                        face.ThftRes.Smile,
                        face.ThftRes.Beauty,
                        string(face.Feature),
                        []string{strings.Split(resp["fileUrl"].(string), "/")[1]},
                        "暂无集群",
                        localConfig.ServerId,
                        localConfig.ServerName,
                        serverIp,
                        "",
                        face.Score,
                        1,
                        0,
                        0,
                        0,
                        []*protomsg.Baseinfo{},
                    }
                    requstbody, err := json.Marshal(pervideo)
                    if err != nil {
                        logger.Info("json parse error ", err)
                        return
                    }
                    err1 := EsReq("POST", "http://192.168.1.182:9200/videopersons/perVideoPicture", requstbody)
                    if err1 != nil {
                        logger.Error("上传ES出错!---",err1)
                    }
                    //logger.Info(err.Error())
                } else {
                    sex = "女"
                }
                race := getRaceString(face.ThftRes.Race)
                ageDescription := getDescription(face.ThftRes.Age)
                    // 人脸比对
                    logger.Warn("___________________________________________这是有baseinfo的")
                    localConfig, err := cache.GetServerInfo()
                    if err != nil {
                        logger.Info("查询本机信息失败!")
                    }
                    serverIp, err := GetLocalIP()
                    // 解压缩并上传图片
                    bdata, err := util.UnCompress(msg.Data)
                    if err != nil {
                        panic("解压缩图片时出现错误")
                    }
                    // 查询cameraName
                    camera, err := cache.GetCameraById(msg.Cid)
                    if err != nil {
                        logger.Error("查询摄像机信息失败")
                    }
                    i := protomsg.Image{}
                    err = proto.Unmarshal(bdata, &i)
                    //logger.Info("-------------------------------------------看下宽和高", i.Width, i.Height)
                    bytes := util.SubImg(i, int(face.Location.X), int(face.Location.Y), int(face.Location.X+face.Location.Width), int(face.Location.Y+face.Location.Height))
                    resp, err := util.PostFormBufferData1(weedfsUrl, bytes, uuid.NewV4().String())
                    if err != nil {
                        logger.Error("上传小图出错")
                    }
                    logger.Info("================小图地址:",resp["fileUrl"].(string))
                    sex := ""
                    if face.ThftRes.Gender == 1 {
                        sex = "男"
                    } else {
                        sex = "女"
                    }
                    race := getRaceString(face.ThftRes.Race)
                    ageDescription := getDescription(face.ThftRes.Age)
                    pervideo := PerVideoPicture{
                        uuid.NewV4().String(),
                        msg.Cid,
                        camera.Addr,
                        time.Now().Format("2006-01-02 15:04:05"),
                        strings.Split(bigPhotoUrl["fileUrl"].(string), "/")[1],
                        msg.Tasklab.Taskid,
                        msg.Tasklab.Taskname,
                        "人脸",
                        "",
                        time.Now().Format("2006-01-02 15:04:05"), // 只检测,没有比对时间
                        sex,
                        face.ThftRes.Age,
                        ageDescription,
                        race,
                        face.ThftRes.Smile,
                        face.ThftRes.Beauty,
                        "",
                        []string{strings.Split(resp["fileUrl"].(string), "/")[1]},
                        "暂无集群",
                        localConfig.ServerId,
                        localConfig.ServerName,
                        serverIp,
                        "",
                        face.Score,
                        1,
                        0,
                        0,
                        0,
                        face.Liker,
                    }
                    requstbody, err := json.Marshal(pervideo)
                pervideo := PerVideoPicture{
                    uuid.NewV4().String(),
                    msg.Cid,
                    camera.Addr,
                    time.Now().Format("2006-01-02 15:04:05"),
                    strings.Split(bigPhotoUrl["fileUrl"].(string), "/")[1],
                    msg.Tasklab.Taskid,
                    msg.Tasklab.Taskname,
                    "人脸",
                    "",
                    time.Now().Format("2006-01-02 15:04:05"), // 只检测,没有比对时间
                    sex,
                    face.ThftRes.Age,
                    ageDescription,
                    race,
                    face.ThftRes.Smile,
                    face.ThftRes.Beauty,
                    string(face.Feature),
                    []string{strings.Split(resp["fileUrl"].(string), "/")[1]},
                    "暂无集群",
                    localConfig.ServerId,
                    localConfig.ServerName,
                    serverIp,
                    "",
                    face.Score,
                    1,
                    0,
                    0,
                    0,
                    []*protomsg.Baseinfo{},
                }
                requstbody, err := json.Marshal(pervideo)
                    if err != nil {
                        logger.Error("json parse error ", err)
                        return
                if err != nil {
                    logger.Info("json parse error ", err)
                    return
                    }
                    err = EsReq("POST", "http://192.168.1.182:9200/videopersons/perVideoPicture", requstbody)
                    logger.Info("------------------------------------------哈哈哈哈,底库有人")
                }
                err1 := EsReq("POST", "http://192.168.1.182:9200/videopersons/perVideoPicture", requstbody)
                if err1 != nil {
                    logger.Error("上传ES出错!---",err1)
                }
                //logger.Info(err.Error())
            } else {
                // 人脸比对
                logger.Warn("___________________________________________这是有baseinfo的")
                localConfig, err := cache.GetServerInfo()
                if err != nil {
                    logger.Info("查询本机信息失败!")
                }
                serverIp, err := GetLocalIP()
            }
        }
        if msg.RuleResult["yolo"] != nil && len(msg.RuleResult["yolo"].([]ruleserver.Result)) > 0 {
            logger.Info("往ES插yolo数据")
            var sdkNames string = ""
            alarmRules := []AlarmRule{}
            for _, yoloResult := range msg.RuleResult["yolo"].([]ruleserver.Result) {
                sdkNames = sdkNames + yoloResult.SdkName
                alarm := ChangeToString(yoloResult.AlarmLevel)
                alarmRules = append(alarmRules, AlarmRule{yoloResult.RuleGroupId, alarm, yoloResult.RuleText})
            }
            isAlarm := 0
            resp := make(map[string]interface{})
            if len(alarmRules) > 0 {
                isAlarm = 1
                // 解压缩并上传图片
                bdata, err := util.UnCompress(msg.Data)
                if err != nil {
                    panic("解压缩图片时出现错误")
                }
                // 查询cameraName
                camera, err := cache.GetCameraById(msg.Cid)
                if err != nil {
                    logger.Error("查询摄像机信息失败")
                }
                i := protomsg.Image{}
                err = proto.Unmarshal(bdata, &i)
                //logger.Info("-------------------------------------------看下宽和高", i.Width, i.Height)
                bytes := util.SubImg(i, int(face.Location.X), int(face.Location.Y), int(face.Location.X+face.Location.Width), int(face.Location.Y+face.Location.Height))
                resp, err := util.PostFormBufferData1(weedfsUrl, bytes, uuid.NewV4().String())
                //resp, err = util.PostFormBufferData(weedfsUrl, i, uuid.NewV4().String())
                resp, err = util.DrawPolygonOnImage(msg.Cid, i,msg.RuleResult["yolo"].([]ruleserver.Result))
                if err != nil {
                    logger.Error("上传小图出错")
                }
                logger.Info("================小图地址:",resp["fileUrl"].(string))
                sex := ""
                if face.ThftRes.Gender == 1 {
                    sex = "男"
                    logger.Error("画框或上传图片服务器出错", err)
                } else {
                    sex = "女"
                    logger.Info("上传的图片信息:",resp)
                }
                race := getRaceString(face.ThftRes.Race)
                ageDescription := getDescription(face.ThftRes.Age)
                pervideo := PerVideoPicture{
                    uuid.NewV4().String(),
                    msg.Cid,
                    camera.Addr,
                    time.Now().Format("2006-01-02 15:04:05"),
                    strings.Split(bigPhotoUrl["fileUrl"].(string), "/")[1],
                    msg.Tasklab.Taskid,
                    msg.Tasklab.Taskname,
                    "人脸",
                    "",
                    time.Now().Format("2006-01-02 15:04:05"), // 只检测,没有比对时间
                    sex,
                    face.ThftRes.Age,
                    ageDescription,
                    race,
                    face.ThftRes.Smile,
                    face.ThftRes.Beauty,
                    "",
                    []string{strings.Split(resp["fileUrl"].(string), "/")[1]},
                    "暂无集群",
                    localConfig.ServerId,
                    localConfig.ServerName,
                    serverIp,
                    "",
                    face.Score,
                    1,
                    0,
                    0,
                    0,
                    face.Liker,
                }
                requstbody, err := json.Marshal(pervideo)
                if err != nil {
                    logger.Error("json parse error ", err)
                    return
                }
                err = EsReq("POST", "http://192.168.1.182:9200/videopersons/perVideoPicture", requstbody)
                logger.Info("------------------------------------------哈哈哈哈,底库有人")
            }
        }
    }
    if msg.RuleResult["yolo"] != nil && len(msg.RuleResult["yolo"].([]ruleserver.Result)) > 0 {
        logger.Info("往ES插yolo数据")
        var sdkNames string = ""
        alarmRules := []AlarmRule{}
        for _, yoloResult := range msg.RuleResult["yolo"].([]ruleserver.Result) {
            sdkNames = sdkNames + yoloResult.SdkName
            alarm := ChangeToString(yoloResult.AlarmLevel)
            alarmRules = append(alarmRules, AlarmRule{yoloResult.RuleGroupId, alarm, yoloResult.RuleText})
        }
        isAlarm := 0
        resp := make(map[string]interface{})
        if len(alarmRules) > 0 {
            isAlarm = 1
            // 解压缩并上传图片
            bdata, err := util.UnCompress(msg.Data)
            if err != nil {
                panic("解压缩图片时出现错误")
            }
            i := protomsg.Image{}
            err = proto.Unmarshal(bdata, &i)
            //resp, err = util.PostFormBufferData(weedfsUrl, i, uuid.NewV4().String())
            resp, err = util.DrawPolygonOnImage(msg.Cid, i,msg.RuleResult["yolo"].([]ruleserver.Result))
            if err != nil {
                logger.Error("画框或上传图片服务器出错", err)
            } else {
                logger.Info("上传的图片信息:",resp)
                isAlarm = 0
                // 不是报警数据不存
                return
            }
        } else {
            isAlarm = 0
            // 不是报警数据不存
            return
        }
        // logger.Println("图片上传返回值:", resp)
        // 查询本机信息
        localConfig, err := cache.GetServerInfo()
        if err != nil {
            logger.Error("查询本机信息失败!")
        }
        // 查询cameraName
        camera, err := cache.GetCameraById(msg.Cid)
        if err != nil {
            logger.Error("查询摄像机信息失败")
        }
        serverIp, err := GetLocalIP()
        peraction := Personaction{
            uuid.NewV4().String(),
            msg.Cid,
            camera.Name,
            camera.Addr,
            msg.Tasklab.Taskid,
            msg.Tasklab.Taskname,
            sdkNames,
            "",
            alarmRules,
            localConfig.ServerId,
            localConfig.ServerName,
            serverIp,
            "",
            []string{strings.Split(resp["fileUrl"].(string), "/")[1]},
            time.Now().Format("2006-01-02 15:04:05"),
            "",
            isAlarm,
            0,
            0,
            0,
        }
        requstbody, err := json.Marshal(peraction)
            // logger.Println("图片上传返回值:", resp)
            // 查询本机信息
            localConfig, err := cache.GetServerInfo()
            if err != nil {
                logger.Error("查询本机信息失败!")
            }
            // 查询cameraName
            camera, err := cache.GetCameraById(msg.Cid)
            if err != nil {
                logger.Error("查询摄像机信息失败")
            }
            serverIp, err := GetLocalIP()
            peraction := Personaction{
                uuid.NewV4().String(),
                msg.Cid,
                camera.Name,
                camera.Addr,
                msg.Tasklab.Taskid,
                msg.Tasklab.Taskname,
                sdkNames,
                "",
                alarmRules,
                localConfig.ServerId,
                localConfig.ServerName,
                serverIp,
                "",
                []string{strings.Split(resp["fileUrl"].(string), "/")[1]},
                time.Now().Format("2006-01-02 15:04:05"),
                "",
                isAlarm,
                0,
                0,
                0,
            }
            requstbody, err := json.Marshal(peraction)
        if err != nil {
            logger.Info("json parse error ", err)
            return
            if err != nil {
                logger.Info("json parse error ", err)
                return
        }
        err = EsReq("POST", "http://192.168.1.182:9200/personaction/perVideoAction", requstbody)
        if err != nil {
            logger.Error("往ES插入数据失败", err)
        } else {
            logger.Warn("__________________________________________往ES插入yolo数据成功")
            //os.Exit(1)
            }
            err = EsReq("POST", "http://192.168.1.182:9200/personaction/perVideoAction", requstbody)
            if err != nil {
                logger.Error("往ES插入数据失败", err)
            } else {
                logger.Warn("__________________________________________往ES插入yolo数据成功")
                //os.Exit(1)
            }
        }
    }
}