---
panlei
2019-12-05 51699d23949c80c13b68f29cd1eca0e109e84a0d
insertdata/insertDataToEs.go
@@ -1,19 +1,20 @@
package insertdata
import (
   "basic.com/valib/logger.git"
   "encoding/base64"
   "encoding/json"
   "errors"
   "net"
   "ruleprocess/cache"
   "ruleprocess/structure"
   "strconv"
   "time"
   "basic.com/pubsub/protomsg.git"
   "github.com/golang/protobuf/proto"
   "github.com/satori/go.uuid"
   logger "github.com/alecthomas/log4go"
   "ruleprocess/cache"
   "ruleprocess/structure"
   "basic.com/pubsub/protomsg.git"
   "ruleprocess/ruleserver"
   "ruleprocess/util"
)
@@ -27,43 +28,6 @@
   ServerIp       string `yaml:"serverIp"`
   ServerPort     string `yaml:"serverPort"`
   DbTablePersons string `yaml:"dbTablePersons"`
}
//func InitInsertEs() {
//   weedfsUrl = "http://"+WeedFs.Ip+":"+strconv.Itoa(WeedFs.UploadPort)+"/submit"
//   videoPersonUrl = "http://"+EsInfo.Masterip+":"+EsInfo.Httpport+"/"+EsInfo.EsIndex.VideoPersons.IndexName+"/"+EsInfo.EsIndex.VideoPersons.IndexType
//   personAction = "http://"+EsInfo.Masterip+":"+EsInfo.Httpport+"/"+EsInfo.EsIndex.Personaction.IndexName+"/"+EsInfo.EsIndex.Personaction.IndexType
//}
// 人脸的数据结构
type PerVideoPicture struct {
   Id              string                `json:"id"`
   CameraId        string                `json:"cameraId"`
   CameraAddr      string                `json:"cameraAddr"`
   CameraName      string                `json:"cameraName"`
   PicDate         string                `json:"picDate"`
   PicMaxUrl       []string              `json:"picMaxUrl"`
   TaskId          string                `json:"taskId"`
   TaskName        string                `json:"taskName"`
   SdkName         string                `json:"sdkName"`
   Content         string                `json:"content"`
   AlarmRules      []AlarmRule           `json:"alarmRules"`
   LikeDate        string                `json:"likeDate"`
   ShowLabels      string                `json:"showLabels"`
   OtherLabels     string                `json:"otherLabels"`
   VideoUrl        string                `json:"videoUrl"`
   AnalyServerId   string                `json:"analyServerId"`
   AnalyServerName string                `json:"analyServerName"`
   AnalyServerIp   string                `json:"analyServerIp"`
   ClusterId       string                `json:"clusterId"`
   IsAlarm         bool                  `json:"isAlarm"`
   IsAckAlarm      bool                  `json:"isAckAlarm"`
   IsCollect       bool                  `json:"isCollect"`
   IsDelete        bool                  `json:"isDelete"`
   BaseInfo        []*structure.BaseInfo `json:"baseInfo"`
   TargetInfo      []Target              `json:"targetInfo"`
   LinkTag         string                `json:"linkTag"`
   LinkTagInfo     []*LinkInfo           `json:"linkTagInfo"`
}
type LinkInfo struct {
@@ -94,13 +58,24 @@
   TargetInfo      []Target              `json:"targetInfo"`
}
type Target struct {
//  统一的数据结构
type PerVideoPicture struct {
   LinkInfo
   LinkTag         string                `json:"linkTag"`
   LinkTagInfo     []*LinkInfo           `json:"linkTagInfo"`
}
type SourceTarget struct {
   TargetId       string  `json:"targetId"`
   TargetScore    float64 `json:"targetScore"`
   TargetType     string  `json:"targetType"`
   Feature        string  `json:"feature"`
   PicSmUrl       string  `json:"picSmUrl"`
   TargetLocation Points  `json:"targetLocation"`
}
type Target struct {
   SourceTarget
   AttachTarget SourceTarget `json:"attachTarget"`
}
type Points struct {
@@ -138,7 +113,7 @@
      panic("配置文件不合法")
   }
   weedfsUrl = "http://" + localConfig1.WebPicIp + ":" + strconv.Itoa(int(localConfig1.WebPicPort)) + "/submit"
   videoPersonUrl = "http://" + localConfig1.AlarmIp + ":" + strconv.Itoa(int(localConfig1.AlarmPort)) + "/" + EsInfo.EsIndex.AIOcean.IndexName + "/" + EsInfo.EsIndex.AIOcean.IndexType
   videoPersonUrl = "http://" + localConfig1.AlarmIp + ":" + strconv.Itoa(int(localConfig1.AlarmPort)) + "/" + EsInfo.EsIndex.AIOcean.IndexName + "/" + EsInfo.EsIndex.AIOcean.IndexType+"?refresh=true"
   InsertFace(msg)
   InsertYolo(msg)
   InsertTarget(msg)
@@ -146,9 +121,9 @@
// 往es中插入人脸类型数据
func InsertFace(msg structure.ResultMsg) {
   if (msg.RuleResult["face"] != nil && len(msg.RuleResult["face"].([]structure.Result)) > 0) || (msg.RuleResult["plate"] != nil && len(msg.RuleResult["plate"].([]structure.Result)) > 0) {
   if (msg.RuleResult["face"] != nil && len(msg.RuleResult["face"].([]structure.Result)) > 0) || (msg.RuleResult["plate"] != nil && len(msg.RuleResult["plate"].([]structure.Result)) > 0) || (msg.RuleResult["track"] != nil && len(msg.RuleResult["track"].([]structure.Result)) > 0) {
      for key, results := range msg.RuleResult {
         if key == "face" || key == "plate" {
         if key == "face" || key == "plate" || key == "track"{
            logger.Info("往ES插人脸数据(或车牌数据)")
            faces := []*ObjAndRules{}
            faces = PutFace(faces, results.([]structure.Result))
@@ -165,7 +140,7 @@
                     panic("解压缩图片时出现错误")
                  }
                  alarmRules := []AlarmRule{}
                  logger.Info("循环每一个目标")
                  //logger.Info("循环每一个目标")
                  for _, faceResult := range face.rules {
                     alarm := ChangeToString(faceResult.DefenceState, faceResult.AlarmLevel)
                     alarmRules = append(alarmRules, AlarmRule{faceResult.RuleGroupId, alarm, faceResult.RuleText, faceResult.DefenceState, ""})
@@ -194,6 +169,7 @@
                  target.Feature = base64.StdEncoding.EncodeToString(face.Feature)
                  target.PicSmUrl = resp["fileUrl"].(string)
                  target.TargetLocation = Points{TopLeft: Point{face.Location.X, face.Location.Y}, BottomRight: Point{face.Location.X + face.Location.Width, face.Location.Y + face.Location.Height}}
                  target.AttachTarget = SourceTarget{face.AttachArg.Id,face.AttachArg.Score,face.AttachArg.Type,base64.StdEncoding.EncodeToString(face.AttachArg.Feature),"",Points{TopLeft: Point{face.AttachArg.Location.X, face.AttachArg.Location.Y}, BottomRight: Point{face.AttachArg.Location.X + face.AttachArg.Location.Width, face.AttachArg.Location.Y + face.AttachArg.Location.Height}}}
                  var targetInfos []Target
                  targetInfos = append(targetInfos, *target)
@@ -204,8 +180,8 @@
                  case "plate":
                     sdkname = "车牌识别"
                  }
                  logger.Info("人脸目标target:",targetInfos)
                  pervideo := PerVideoPicture{
                  //logger.Info("人脸目标target:",targetInfos)
                  pervideo := PerVideoPicture{LinkInfo{
                     face.Uuid,
                     msg.Cid,
                     msg.Push.Cam.Addr,
@@ -231,6 +207,7 @@
                     false,
                     face.Liker,
                     targetInfos,
                  },
                     "",
                     []*LinkInfo{},
                  }
@@ -324,7 +301,7 @@
                  linkInfo = "联动任务"
               }
               alarmRules = append(alarmRules, AlarmRule{yoloResult.RuleGroupId, alarm, yoloResult.RuleText, yoloResult.DefenceState, linkInfo})
               logger.Info("打印任务名称:", )
               //logger.Info("打印任务名称:", )
               // 上传缓存数据的图片拿到url
               if yoloResult.Others.CacheData != nil {
                  //InsertYolo(msg.RuleResult["cacheData"].(ruleserver.ResultMsg))
@@ -413,7 +390,7 @@
         if resp["fileUrl"] != nil {
            url = append(url, resp["fileUrl"].(string))
            //esDataId := uuid.NewV4().String()
            peraction := PerVideoPicture{
            peraction := PerVideoPicture{LinkInfo{
               msg.Push.PushId,
               msg.Cid,
               msg.Push.Cam.Addr,
@@ -439,6 +416,7 @@
               false,
               nil,
               targetInfos,
            },
               linkTag,
               linkTagInfos,
            }
@@ -575,7 +553,7 @@
                  return
               }
               //esDataId := uuid.NewV4().String()
               peraction := PerVideoPicture{
               peraction := PerVideoPicture{LinkInfo{
                  msg.Push.PushId,
                  msg.Cid,
                  msg.Push.Cam.Addr,
@@ -601,6 +579,7 @@
                  false,
                  nil,
                  targetInfos,
               },
                  linkTag,
                  linkTagInfos,
               }