---
panlei
2019-12-17 2388d5adbdfe5abaa8395a992bca134c093268b2
algorithm/middleware/insertDataToEs.go
@@ -1,7 +1,6 @@
package main
import (
   "encoding/base64"
   "encoding/json"
   "errors"
   "net"
@@ -9,15 +8,15 @@
   "strconv"
   "time"
   "basic.com/valib/logger.git"
   "github.com/golang/protobuf/proto"
   "github.com/satori/go.uuid"
   "basic.com/valib/logger.git"
   "ruleprocess/cache"
   "ruleprocess/structure"
   "basic.com/pubsub/protomsg.git"
   "basic.com/pubsub/esutil.git"
   "basic.com/pubsub/protomsg.git"
   "ruleprocess/cache"
   "ruleprocess/ruleserver"
   "ruleprocess/structure"
   "ruleprocess/util"
)
@@ -134,7 +133,7 @@
      faces = PutFace(faces, results.([]structure.Result))
      //logger.Info("整理后的数据:",faces)
      if faces != nil {
         logger.Warn("face不为nil")
         logger.Warn("目标不为nil")
         var imgMaxUrl []string = []string{}
         var picTime string = ""
         for _, face := range faces {
@@ -171,15 +170,14 @@
            target.TargetId = face.Id
            target.TargetScore = face.Score
            target.TargetType = face.Type
            target.Feature = base64.StdEncoding.EncodeToString(face.Feature)
            target.Feature = 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}}}
            target.AttachTarget = SourceTarget{face.AttachArg.Id,face.AttachArg.Score,face.AttachArg.Type,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)
            sdkname := ""
            id := face.Uuid
            switch key {
            case "face":
               sdkname = "人脸"
@@ -187,51 +185,45 @@
               sdkname = "车牌识别"
            case "track":
               sdkname = "跟踪"
               logger.Info("数据到了此处")
               if len(face.Liker) == 1{
                  id = face.Liker[0].TargetId
               }
            }
            //logger.Info("人脸目标target:",targetInfos)
            pervideo := PerVideoPicture{LinkInfo{
               id,
               msg.Cid,
               msg.Push.Cam.Addr,
               msg.Push.Cam.Name,
               picTime,
               imgMaxUrl,
               msg.Tasklab.Taskid,
               msg.Tasklab.Taskname,
               sdkname,
               "",
               alarmRules,
               time.Now().Format("2006-01-02 15:04:05"), // 只检测,没有比对时间
               lable,
               lableAttach,
               "",
               msg.Push.ServerId,
               msg.Push.ServerName,
               msg.Push.LocalIp,
               "",
               true,
               false,
               false,
               false,
               face.Liker,
               targetInfos,
            },
               "",
               []*LinkInfo{},
            }
            requstbody, err := json.Marshal(pervideo)
            if err != nil {
               logger.Info("json parse error ", err)
               return
            }
            if key == "track" && len(face.Liker) == 1{
               logger.Info("确认过眼神是要追加的数据")
               pervideo1 := LinkInfo{
                  face.Liker[0].TargetId,
                  msg.Cid,
                  msg.Push.Cam.Addr,
                  msg.Push.Cam.Name,
                  picTime,
                  imgMaxUrl,
                  msg.Tasklab.Taskid,
                  msg.Tasklab.Taskname,
                  sdkname,
                  "",
                  alarmRules,
                  time.Now().Format("2006-01-02 15:04:05"), // 只检测,没有比对时间
                  lable,
                  lableAttach,
                  "",
                  msg.Push.ServerId,
                  msg.Push.ServerName,
                  msg.Push.LocalIp,
                  "",
                  true,
                  false,
                  false,
                  false,
                  face.Liker,
                  targetInfos,
               }
               requstbody, err := json.Marshal(pervideo1)
               if err != nil {
                  logger.Info("json parse error ", err)
                  return
               }
               esid := face.Liker[0].TargetId
               logger.Info("liker信息:",*face.Liker[0])
               returnMsg, err1 := esutil.AppendTargetInfo(esid, string(requstbody),structure.EsInfo.EsIndex.AIOcean.IndexName,serverIp,serverPort)
               if err1 != nil {
                  logger.Error("追加数据出错!---", err1)
@@ -241,6 +233,48 @@
                  ruleserver.AddLxMessage(&protomsg.VideotapeInfo{EsDataId: face.Uuid, CameraId: msg.Cid, TaskId: msg.Tasklab.Taskid, VideoUrl: msg.Push.VideoUrl, ImgId: i.Id, SdkIds: []string{"-1"}, Type: 1})
               }
            } else {
               id := face.Uuid
               if id == "" {
                  // 比到了相似的人但在此摄像机下已经出现过,最后不能插入数据库
                  logger.Info("冗余数据,并不入库")
                  continue
               }
               pervideo := PerVideoPicture{LinkInfo{
                  id,
                  msg.Cid,
                  msg.Push.Cam.Addr,
                  msg.Push.Cam.Name,
                  picTime,
                  imgMaxUrl,
                  msg.Tasklab.Taskid,
                  msg.Tasklab.Taskname,
                  sdkname,
                  "",
                  alarmRules,
                  time.Now().Format("2006-01-02 15:04:05"), // 只检测,没有比对时间
                  lable,
                  lableAttach,
                  "",
                  msg.Push.ServerId,
                  msg.Push.ServerName,
                  msg.Push.LocalIp,
                  "",
                  true,
                  false,
                  false,
                  false,
                  face.Liker,
                  targetInfos,
               },
                  "",
                  []*LinkInfo{},
               }
               requstbody, err := json.Marshal(pervideo)
               if err != nil {
                  logger.Info("json parse error ", err)
                  return
               }
               resp1, err1 := insertdata.EsReq("POST", videoPersonUrl, requstbody)
               if err1 != nil {
                  logger.Error("上传ES出错!---", err1)