---
panlei
2019-08-16 6cd1a1f3e75cf8406fa293fd8a34386d5633a430
insertdata/insertDataToEs.go
@@ -7,10 +7,8 @@
   "fmt"
   "io/ioutil"
   "net"
   "os"
   "ruleprocess/cache"
   "ruleprocess/logger"
   "strings"
   "time"
   "basic.com/pubsub/protomsg.git"
@@ -111,6 +109,8 @@
   AlarmLevel   string `json:"alarmLevel"`
   RuleText     string `json:"ruleText"`
   DefenceState bool   `json:"defenceState"`
   IsLink       bool   `json:"isLink"`
   LinkInfo    string `json:"linkInfo"`
}
// 一个face对多个规则组的归置人脸的结构体
@@ -165,8 +165,9 @@
func InsertFace(msg ruleserver.ResultMsg, linkId string) {
   if msg.RuleResult["face"] != nil && len(msg.RuleResult["face"].([]ruleserver.FaceResult)) > 0 {
      logger.Info("往ES插人脸数据")
      faces := PutFace(msg)
      logger.Info("整理后的数据:",faces)
      faces := []*FaceAndRules{}
      faces = PutFace(faces,msg)
      //logger.Info("整理后的数据:",faces)
      if faces != nil {
         for _,face := range faces {
            // 上传大图
@@ -177,10 +178,10 @@
            }
            alarmRules := []AlarmRule{}
            logger.Warn("人脸id为:",face.Id,"人脸的规则长度为:",len(face.rules))
            os.Exit(1)
            //os.Exit(1)
            for _,faceResult := range face.rules {
               alarm := ChangeToString(faceResult.DefenceState, faceResult.AlarmLevel)
               alarmRules = append(alarmRules, AlarmRule{faceResult.RuleGroupId, alarm, faceResult.RuleText, faceResult.DefenceState})
               alarmRules = append(alarmRules, AlarmRule{faceResult.RuleGroupId, alarm, faceResult.RuleText, faceResult.DefenceState,faceResult.IsLink,""})
            }
            i := protomsg.Image{}
            err = proto.Unmarshal(bdata, &i)
@@ -203,7 +204,7 @@
            if err != nil {
               logger.Error("上传小图出错")
            }
            logger.Info("================小图地址:", resp["fileUrl"].(string))
            //logger.Info("================小图地址:", resp["fileUrl"].(string))
            sex := ""
            if face.ThftRes.Gender == 1 {
               sex = "男"
@@ -222,7 +223,7 @@
               msg.Cid,
               camera.Addr,
               i.Timestamp,
               strings.Split(bigPhotoUrl["fileUrl"].(string), "/")[1],
               bigPhotoUrl["fileUrl"].(string),
               msg.Tasklab.Taskid,
               msg.Tasklab.Taskname,
               "人脸",
@@ -236,7 +237,7 @@
               face.ThftRes.Smile,
               face.ThftRes.Beauty,
               base64.StdEncoding.EncodeToString(face.Feature),
               []string{strings.Split(resp["fileUrl"].(string), "/")[1]},
               []string{resp["fileUrl"].(string)},
               "暂无集群",
               localConfig.ServerId,
               localConfig.ServerName,
@@ -270,33 +271,48 @@
}
// 归置人脸
func PutFace(msg ruleserver.ResultMsg) []FaceAndRules{
func PutFace(faces []*FaceAndRules,msg ruleserver.ResultMsg)[]*FaceAndRules{
   if msg.RuleResult["face"] != nil && len(msg.RuleResult["face"].([]ruleserver.FaceResult)) > 0 {
      logger.Info("整理人脸数据")
      faces := []FaceAndRules{}
      for _, faceResult := range msg.RuleResult["face"].([]ruleserver.FaceResult) {
         hebingFace(faces, faceResult)
         faces = hebingFace(faces, faceResult)
      }
      return faces
   } else {
      return nil
   }
}
func hebingFace(faces []FaceAndRules, faceResult ruleserver.FaceResult) {
func hebingFace(faces []*FaceAndRules, faceResult ruleserver.FaceResult) []*FaceAndRules{
   for _, arg := range faceResult.Args {
      // 拿到每一张人脸
      logger.Info("归置人脸时相似者的数量:",len(arg.Liker))
      flag := false
      for _, face := range faces {
         for _,lik := range face.Liker {
            logger.Warn("--------合并人脸时相似者:",lik.PersonId,lik.TableName)
         }
         if arg.Id == face.Id {
            flag = true
            face.rules = append(face.rules,faceResult.Result)
            // 相似者去重归并
            for _,liker := range arg.Liker {
               flag1 := true
               for _,liker1 := range face.Liker {
                  if liker.PersonId == liker1.PersonId {
                     flag1 = false
                  }
               }
               if flag1 {
                  face.Liker = append(face.Liker,liker)
               }
            }
            //face.Liker = append(face.Liker,arg.Liker...)
         }
      }
      if flag {
         faces = append(faces, FaceAndRules{arg, []ruleserver.Result{faceResult.Result}})
      if !flag {
         faces = append(faces, &FaceAndRules{arg, []ruleserver.Result{faceResult.Result}})
      }
   }
   logger.Info("整理中的数据",faces)
   return faces
}
// 往es中插入yolo数据
@@ -321,7 +337,11 @@
               //logger.Info("应该进来才对的")
               sdkNames = sdkNames + yoloResult.SdkName
               alarm := ChangeToString(yoloResult.DefenceState, yoloResult.AlarmLevel)
               alarmRules = append(alarmRules, AlarmRule{yoloResult.RuleGroupId, alarm, yoloResult.RuleText, yoloResult.DefenceState})
               linkInfo := ""
               if yoloResult.IsLink {
                  linkInfo = "联动任务"
               }
               alarmRules = append(alarmRules, AlarmRule{yoloResult.RuleGroupId, alarm, yoloResult.RuleText, yoloResult.DefenceState,yoloResult.IsLink,linkInfo})
               // 上传缓存数据的图片拿到url
               if yoloResult.Others.CacheData != nil {
                  //InsertYolo(msg.RuleResult["cacheData"].(ruleserver.ResultMsg))
@@ -341,7 +361,7 @@
                     } else {
                        logger.Info("上传的图片信息:", resp1)
                     }
                     url = append(url, strings.Split(resp1["fileUrl"].(string), "/")[1])
                     url = append(url, resp1["fileUrl"].(string))
                  }
               }
            }
@@ -400,7 +420,7 @@
         }
         serverIp, err := GetLocalIP()
         url = append(url, strings.Split(resp["fileUrl"].(string), "/")[1])
         url = append(url, resp["fileUrl"].(string))
         esDataId := uuid.NewV4().String()
         linksId := ""
         if linkId != "" {
@@ -495,7 +515,7 @@
      localConfig.ServerName,
      serverIp,
      "",
      []string{strings.Split(resp["fileUrl"].(string), "/")[1]},
      []string{resp["fileUrl"].(string)},
      i.Timestamp,
      "",
      "",
@@ -553,7 +573,7 @@
      msg.Cid,
      camera.Addr,
      i.Timestamp,
      strings.Split(bigPhotoUrl["fileUrl"].(string), "/")[1],
      bigPhotoUrl["fileUrl"].(string),
      msg.Tasklab.Taskid,
      msg.Tasklab.Taskname,
      "人脸",