---
panlei
2019-11-06 993dc81c942d6b1315684cda034c8859a6f4d02b
insertdata/insertDataToEs.go
@@ -109,6 +109,7 @@
   IsAckAlarm      int         `json:"isAckAlarm"`
   IsCollect       int         `json:"isCollect"`
   IsDelete        int         `json:"isDelete"`
   TargetInfo      []Target
}
type AlarmRule struct {
@@ -164,20 +165,7 @@
   videoPersonUrl = "http://" + localConfig1.AlarmIp + ":" + strconv.Itoa(int(localConfig1.AlarmPort)) + "/" + EsInfo.EsIndex.VideoPersons.IndexName + "/" + EsInfo.EsIndex.VideoPersons.IndexType
   personAction = "http://" + localConfig1.AlarmIp + ":" + strconv.Itoa(int(localConfig1.AlarmPort)) + "/" + EsInfo.EsIndex.Personaction.IndexName + "/" + EsInfo.EsIndex.Personaction.IndexType
   InsertFace(msg, "")
   // 如果标签中含有持续时间首次报警的timeLabel的话则不需要过人体追踪,不然就没的插入了
   fk := ruleserver.TrackOrNot(msg.RuleResult)
   if fk {
      InsertYolo(msg, "")
      //if msg.Cid == "61de081a-7ed9-4970-8432-41d642c35456" {
      //   logger.Warn("捕捉188摄像机的持续时间任务.....")
      //   os.Exit(1)
      //}
   } else {
      flag := ruleserver.BodyIsSame(msg.SdkMessage)
      if !flag {
         InsertYolo(msg, "")
      }
   }
   InsertYolo(msg, "")
}
// 往es中插入人脸数据
@@ -206,6 +194,13 @@
            }
            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("上传小图出错")
            }
            // 上传大图
            if imgMaxUrl == "" {
               bigPhotoUrl := make(map[string]interface{})
               bigPhotoUrl, err = util.DrawPolygonOnImageForFace(msg.Cid, i, msg.RuleResult["face"].([]structure.FaceResult), weedfsUrl)
@@ -213,23 +208,6 @@
               imgMaxUrl = bigPhotoUrl["fileUrl"].(string)
               picTime = i.Timestamp
            }
            // 人脸检测,没有相似的底库人员
            localConfig, err := cache.GetServerInfo()
            if err != nil {
               logger.Error("查询本机信息失败!")
            }
            serverIp, err := GetLocalIP()
            // 查询cameraName
            camera, err := cache.GetCameraById(msg.Cid)
            if err != nil {
               logger.Error("查询摄像机信息失败")
            }
            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 := ""
            logger.Info(sex)
            if face.ThftRes.Gender == 1 {
@@ -254,7 +232,7 @@
            pervideo := PerVideoPicture{
               esDataId,
               msg.Cid,
               camera.Addr,
               msg.Push.Cam.Addr,
               picTime,
               imgMaxUrl,
               msg.Tasklab.Taskid,
@@ -271,10 +249,10 @@
               face.ThftRes.Beauty,
               base64.StdEncoding.EncodeToString(face.Feature),
               []string{resp["fileUrl"].(string)},
               "暂无集群",
               localConfig.ServerId,
               localConfig.ServerName,
               serverIp,
               msg.Push.VideoUrl,
               msg.Push.ServerId,
               msg.Push.ServerName,
               msg.Push.LocalIp,
               "",
               linksId,
               face.Score,
@@ -297,7 +275,7 @@
            } else {
               logger.Info("插入es返回的信息:", resp1)
               // 发出录像信号
               ruleserver.AddLxMessage(&protomsg.VideotapeInfo{EsDataId: esDataId, CameraId: msg.Cid, TaskId: msg.Tasklab.Taskid, ImgId: i.Id, SdkIds: []string{}, Type: 1})
               ruleserver.AddLxMessage(&protomsg.VideotapeInfo{EsDataId: esDataId, CameraId: msg.Cid, TaskId: msg.Tasklab.Taskid, VideoUrl:msg.Push.VideoUrl,ImgId: i.Id, SdkIds: []string{}, Type: 1})
            }
         }
      }
@@ -364,6 +342,7 @@
         logger.Info("往ES插yolo数据")
         var sdkNames string = ""
         alarmRules := []AlarmRule{}
         var targetInfos []Target
         url := []string{}
         for _, yoloResult := range msg.RuleResult["yolo"].([]structure.Result) {
            if yoloResult.Others.TimeLabel == "01" || yoloResult.Others.TimeLabel == "10" {
@@ -398,6 +377,25 @@
                     if resp1["fileUrl"] != nil {
                        url = append(url, resp1["fileUrl"].(string))
                     }
                  }
               }
               // 装配目标信息数据
               for _,target := range yoloResult.Location  {
                  // 去重添加
                  logger.Info("装配前的原始数据是:",target)
                  var flag = true
                  for _,selectTarget := range targetInfos  {
                     if strconv.FormatUint(target.TargetId, 10) == selectTarget.TargetId {
                        flag = false
                        break
                     }
                  }
                  if flag {
                     var target1 = new(Target)
                     target1.TargetId = strconv.FormatUint(target.TargetId, 10)
                     target1.TargetScore = target.TargetScore
                     target1.TargetLocation = Points{TopLeft:Point{target.X,target.Y},BottomRight:Point{target.X+target.Width,target.Y+target.Height}}
                     targetInfos = append(targetInfos,*target1)
                  }
               }
            }
@@ -444,18 +442,7 @@
            // 不是报警数据不存
            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()
         if resp["fileUrl"] != nil {
            url = append(url, resp["fileUrl"].(string))
            esDataId := uuid.NewV4().String()
@@ -466,25 +453,26 @@
            peraction := Personaction{
               esDataId,
               msg.Cid,
               camera.Name,
               camera.Addr,
               msg.Push.Cam.Name,
               msg.Push.Cam.Addr,
               msg.Tasklab.Taskid,
               msg.Tasklab.Taskname,
               sdkNames,
               "",
               alarmRules,
               localConfig.ServerId,
               localConfig.ServerName,
               serverIp,
               msg.Push.ServerId,
               msg.Push.ServerName,
               msg.Push.LocalIp,
               "",
               url,
               i.Timestamp,
               linksId,
               "",
               msg.Push.VideoUrl,
               isAlarm,
               0,
               0,
               0,
               targetInfos,
            }
            requstbody, err := json.Marshal(peraction)
@@ -499,7 +487,8 @@
            } else {
               logger.Debug("插入es返回的数据信息是:", resp1)
               // 发出录像信号
               ruleserver.AddLxMessage(&protomsg.VideotapeInfo{EsDataId: esDataId, CameraId: msg.Cid, TaskId: msg.Tasklab.Taskid, ImgId: i.Id, SdkIds: []string{}, Type: 2})
               logger.Info("给录像的视频地址:",msg.Push.VideoUrl)
               ruleserver.AddLxMessage(&protomsg.VideotapeInfo{EsDataId: esDataId, CameraId: msg.Cid, TaskId: msg.Tasklab.Taskid,VideoUrl:msg.Push.VideoUrl, ImgId: i.Id, SdkIds: []string{}, Type: 2})
               logger.Warn("__________________________________________往ES插入yolo数据成功")
               //os.Exit(1)
            }