panlei
2019-11-13 7e71b19cab380b069e0270c11b81294145a51e5f
insertdata/insertDataToEs.go
@@ -40,6 +40,7 @@
   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"`
@@ -67,15 +68,15 @@
   IsCollect       int                   `json:"isCollect"`
   IsDelete        int                   `json:"isDelete"`
   BaseInfo        []*structure.BaseInfo `json:"baseInfo"`
   TargetInfo      []Target
   LinkTag         string          `json:"linkTag"`
   LinkTagInfo     []*PerVideoPicture `json:"linkTagInfo"`
   TargetInfo      []Target              `json:"targetInfo"`
   LinkTag         string                `json:"linkTag"`
   LinkTagInfo     []*PerVideoPicture    `json:"linkTagInfo"`
}
type Target struct {
   TargetId       string  `json:"targetId"`
   TargetScore    float64 `json:"targetScore"`
   TargetLocation Points
   TargetLocation Points  `json:"targetLocation"`
}
type Points struct {
@@ -84,34 +85,34 @@
}
type Point struct {
   Lat float64 `json:"lat"`
   Lon float64 `json:"lon"`
   X float64 `json:"x"`
   Y float64 `json:"y"`
}
//  yolo行为的数据结构
type Personaction struct {
   Id              string      `json:"id"`
   CameraId        string      `json:"cameraId"`
   CameraName      string      `json:"cameraName"`
   CameraAddr      string      `json:"cameraAddr"`
   TaskId          string      `json:"taskId"`
   TaskName        string      `json:"taskName"`
   SdkName         string      `json:"sdkName"`
   Content         string      `json:"content"`
   AlarmRules      []AlarmRule `json:"alarmRules"`
   AnalyServerId   string      `json:"analyServerId"`
   AnalyServerName string      `json:"analyServerName"`
   AnalyServerIp   string      `json:"analyServerIp"`
   ClusterId       string      `json:"clusterId"`
   PicSmUrl        []string    `json:"picSmUrl"`
   PicDate         string      `json:"picDate"`
   VideoUrl        string      `json:"videoUrl"`
   IsAlarm         int         `json:"isAlarm"`
   IsAckAlarm      int         `json:"isAckAlarm"`
   IsCollect       int         `json:"isCollect"`
   IsDelete        int         `json:"isDelete"`
   TargetInfo      []Target
   LinkTag         string          `json:"linkTag"`
   Id              string             `json:"id"`
   CameraId        string             `json:"cameraId"`
   CameraName      string             `json:"cameraName"`
   CameraAddr      string             `json:"cameraAddr"`
   TaskId          string             `json:"taskId"`
   TaskName        string             `json:"taskName"`
   SdkName         string             `json:"sdkName"`
   Content         string             `json:"content"`
   AlarmRules      []AlarmRule        `json:"alarmRules"`
   AnalyServerId   string             `json:"analyServerId"`
   AnalyServerName string             `json:"analyServerName"`
   AnalyServerIp   string             `json:"analyServerIp"`
   ClusterId       string             `json:"clusterId"`
   PicSmUrl        []string           `json:"picSmUrl"`
   PicDate         string             `json:"picDate"`
   VideoUrl        string             `json:"videoUrl"`
   IsAlarm         int                `json:"isAlarm"`
   IsAckAlarm      int                `json:"isAckAlarm"`
   IsCollect       int                `json:"isCollect"`
   IsDelete        int                `json:"isDelete"`
   TargetInfo      []Target           `json:"targetInfo"`
   LinkTag         string             `json:"linkTag"`
   LinkTagInfo     []*PerVideoPicture `json:"linkTagInfo"`
}
@@ -120,7 +121,6 @@
   AlarmLevel   string `json:"alarmLevel"`
   RuleText     string `json:"ruleText"`
   DefenceState bool   `json:"defenceState"`
   IsLink       bool   `json:"isLink"`
   LinkInfo     string `json:"linkInfo"`
}
@@ -168,7 +168,7 @@
            //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, faceResult.IsLink, ""})
               alarmRules = append(alarmRules, AlarmRule{faceResult.RuleGroupId, alarm, faceResult.RuleText, faceResult.DefenceState, ""})
            }
            i := protomsg.Image{}
            err = proto.Unmarshal(bdata, &i)
@@ -202,11 +202,12 @@
            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}}
            //logger.Info("人脸的id:",strconv.FormatUint(face.Id, 10))
            var targetInfos []Target
            targetInfos = append(targetInfos,*target)
            targetInfos = append(targetInfos, *target)
            pervideo := PerVideoPicture{
               face.Uuid,
               msg.Cid,
               msg.Push.Cam.Addr,
               msg.Push.Cam.Name,
               picTime,
               imgMaxUrl,
               msg.Tasklab.Taskid,
@@ -248,7 +249,7 @@
            if err1 != nil {
               logger.Error("上传ES出错!---", err1)
            } else {
               logger.Info("插入es返回的信息:", resp1)
               logger.Info("插入es返回的信息(人脸):", resp1)
               // 发出录像信号
               ruleserver.AddLxMessage(&protomsg.VideotapeInfo{EsDataId: msg.Push.PushId, CameraId: msg.Cid, TaskId: msg.Tasklab.Taskid, VideoUrl: msg.Push.VideoUrl, ImgId: i.Id, SdkIds: []string{}, Type: 1})
            }
@@ -329,7 +330,7 @@
               if yoloResult.IsLink {
                  linkInfo = "联动任务"
               }
               alarmRules = append(alarmRules, AlarmRule{yoloResult.RuleGroupId, alarm, yoloResult.RuleText, yoloResult.DefenceState, yoloResult.IsLink, linkInfo})
               alarmRules = append(alarmRules, AlarmRule{yoloResult.RuleGroupId, alarm, yoloResult.RuleText, yoloResult.DefenceState, linkInfo})
               // 上传缓存数据的图片拿到url
               if yoloResult.Others.CacheData != nil {
                  //InsertYolo(msg.RuleResult["cacheData"].(ruleserver.ResultMsg))
@@ -380,9 +381,13 @@
            if (yoloResult.Others.TimeLabel == "01" || yoloResult.Others.TimeLabel == "10") && yoloResult.Others.LinkCache != nil && len(yoloResult.Others.LinkCache) > 1 {
               for _, msg2 := range yoloResult.Others.LinkCache {
                  // 把msg2的数据装配成一个PerVideoPicture结构体
                  linkTagInfos = append(linkTagInfos,msg2PersonVideo(msg2))
                  linkTagInfos = append(linkTagInfos, msg2PersonVideo(msg2))
               }
            }
         }
         linkTag := ""
         if len(linkTagInfos) > 0 {
            linkTag = "联动任务"
         }
         isAlarm := 0
         resp := make(map[string]interface{})
@@ -433,7 +438,7 @@
               0,
               0,
               targetInfos,
               "",
               linkTag,
               linkTagInfos,
            }
            requstbody, err := json.Marshal(peraction)
@@ -446,7 +451,7 @@
            if err2 != nil {
               logger.Error("往ES插入数据失败", err)
            } else {
               logger.Debug("插入es返回的数据信息是:", resp1)
               logger.Debug("插入es返回的数据信息是(yolo):", resp1)
               // 发出录像信号
               ruleserver.AddLxMessage(&protomsg.VideotapeInfo{EsDataId: msg.Push.PushId, CameraId: msg.Cid, TaskId: msg.Tasklab.Taskid, VideoUrl: msg.Push.VideoUrl, ImgId: i.Id, SdkIds: []string{}, Type: 2})
               logger.Warn("__________________________________________往ES插入yolo数据成功")
@@ -542,7 +547,7 @@
   return race
}
func msg2PersonVideo (msg structure.ResultMsg) *PerVideoPicture{
func msg2PersonVideo(msg structure.ResultMsg) *PerVideoPicture {
   if msg.RuleResult["yolo"] != nil && len(msg.RuleResult["yolo"].([]structure.Result)) > 0 {
      // 先判断一下数据带的规则标签是否有可以插入的
      flag := false
@@ -568,7 +573,7 @@
               if yoloResult.IsLink {
                  linkInfo = "联动任务"
               }
               alarmRules = append(alarmRules, AlarmRule{yoloResult.RuleGroupId, alarm, yoloResult.RuleText, yoloResult.DefenceState, yoloResult.IsLink, linkInfo})
               alarmRules = append(alarmRules, AlarmRule{yoloResult.RuleGroupId, alarm, yoloResult.RuleText, yoloResult.DefenceState, linkInfo})
               // 上传缓存数据的图片拿到url
               if yoloResult.Others.CacheData != nil {
                  //InsertYolo(msg.RuleResult["cacheData"].(ruleserver.ResultMsg))
@@ -644,6 +649,7 @@
               msg.Push.PushId + "-" + uuid.NewV4().String(),
               msg.Cid,
               msg.Push.Cam.Addr,
               msg.Push.Cam.Name,
               i.Timestamp,
               "",
               msg.Tasklab.Taskid,
@@ -652,7 +658,7 @@
               "",
               alarmRules,
               time.Now().Format("2006-01-02 15:04:05"), // 只检测,没有比对时间
               "",                                      //暂改为人脸id strconv.FormatUint(face.Id, 10)
               "",                                       //暂改为人脸id strconv.FormatUint(face.Id, 10)
               0,
               "", // 暂改为分值fmt.Sprintf("%.2f",face.Score)
               "",
@@ -686,4 +692,4 @@
   } else {
      return nil
   }
}
}