| | |
| | | "webserver/extend/util" |
| | | "webserver/models" |
| | | "webserver/service" |
| | | esApi "basic.com/pubsub/esutil.git" |
| | | ) |
| | | |
| | | type FileController struct { |
| | |
| | | } |
| | | } |
| | | |
| | | type CompareResult struct { |
| | | Id string `json:"id"` |
| | | CompareScore float32 `json:"compareScore"` |
| | | CameraId string `json:"cameraId"` |
| | | CameraAddr string `json:"cameraAddr"` |
| | | PicDate string `json:"picDate"` |
| | | Content string `json:"content"` |
| | | IsAlarm int `json:"isAlarm"` |
| | | PicMaxUrl string `json:"picMaxUrl"` |
| | | PicSmUrl []string `json:"picSmUrl"` |
| | | Sex string `json:"sex"` |
| | | AgeDescription string `json:"ageDescription"` |
| | | Race string `json:"race"` |
| | | TaskId string `json:"taskId"` |
| | | TaskName string `json:"taskName"` |
| | | BaseInfo []DbPersonVo `json:"baseInfo"` |
| | | VideoUrl string `json:"videoUrl"` |
| | | SdkName string `json:"sdkName"` |
| | | } |
| | | type DbPersonVo struct { |
| | | BwType string `json:"bwType"` |
| | | CompareScore float32 `json:"compareScore"` |
| | | IdCard string `json:"idCard"` |
| | | MonitorLevel string `json:"monitorLevel"` |
| | | PersonId string `json:"personId"` |
| | | PersonName string `json:"personName"` |
| | | PersonPicUrl string `json:"personPicUrl"` |
| | | PhoneNum string `json:"phoneNum"` |
| | | Sex string `json:"sex"` |
| | | TableId string `json:"tableId"` |
| | | TableName string `json:"tableName"` |
| | | } |
| | | |
| | | //填充向前端返回的数据 |
| | | func FillDataToCompareResult(compResult *protomsg.SdkCompareResult) []CompareResult { |
| | | resultList :=make([]CompareResult,0) |
| | | |
| | | dbPersonM := make(map[string]*protomsg.SdkCompareEach, 0) |
| | | captureM := make(map[string]*protomsg.SdkCompareEach, 0) |
| | | personIds :=make([]string,0) |
| | | captureIds := make([]string,0) |
| | | for _,v :=range compResult.CompareResult{ |
| | | if v.Tableid == service.CaptureTable { |
| | | captureM[v.Id] = v |
| | | captureIds = append(captureIds,v.Id) |
| | | } else { |
| | | dbPersonM[v.Id] = v |
| | | personIds = append(personIds,v.Id) |
| | | } |
| | | } |
| | | logger.Debug("comp len(personIds):", len(personIds)) |
| | | logger.Debug("comp len(captureIds):", len(captureIds)) |
| | | esServerIp := config.EsInfo.Masterip |
| | | esServerPort := config.EsInfo.Httpport |
| | | index := config.EsInfo.EsIndex.Dbtablepersons.IndexName |
| | | var dbpersons []protomsg.Dbperson |
| | | if len(personIds) >0 { |
| | | dbpersons, _ = esApi.Dbpersoninfosbyid(personIds, index, esServerIp, esServerPort) |
| | | } |
| | | |
| | | logger.Debug("comp dbpersons.len:", len(dbpersons)) |
| | | if dbpersons !=nil { |
| | | for _,p :=range dbpersons { |
| | | var dbP = DbPersonVo { |
| | | PersonId: p.Id, |
| | | IdCard: p.IdCard, |
| | | CompareScore: util.ParseScore(dbPersonM[p.Id].CompareScore), |
| | | MonitorLevel: p.MonitorLevel, |
| | | PersonName: p.PersonName, |
| | | PersonPicUrl: p.PersonPicUrl, |
| | | PhoneNum: p.PhoneNum, |
| | | Sex: p.Sex, |
| | | TableId: p.TableId, |
| | | } |
| | | dbTableInfos, _ := esApi.Dbtablefosbyid([]string{p.TableId}, config.EsInfo.EsIndex.DbTables.IndexName, esServerIp, esServerPort) |
| | | if dbTableInfos !=nil{ |
| | | dbP.BwType = dbTableInfos[0].BwType |
| | | dbP.TableName = dbTableInfos[0].TableName |
| | | } |
| | | var cr = CompareResult{ |
| | | BaseInfo:[]DbPersonVo{ dbP }, |
| | | } |
| | | resultList = append(resultList,cr) |
| | | } |
| | | } |
| | | if len(captureIds) >0 { |
| | | videopersons, _ := esApi.Videopersonsinfosbyid(captureIds, config.EsInfo.EsIndex.VideoPersons.IndexName, config.EsInfo.Masterip, config.EsInfo.Httpport) |
| | | logger.Debug("comp videoPersons.len:",len(videopersons)) |
| | | for _,vp :=range videopersons { |
| | | isAlarmInt, _ := strconv.Atoi(vp.IsAlarm) |
| | | bi := make([]DbPersonVo,0) |
| | | for _,p :=range vp.BaseInfo { |
| | | bi = append(bi, DbPersonVo{ |
| | | PersonId: p.PersonId, |
| | | IdCard: p.IdCard, |
| | | CompareScore: util.ParseScore(p.CompareScore), |
| | | MonitorLevel: parseMonitorLevel(p.MonitorLevel), |
| | | PersonName: p.PersonName, |
| | | PersonPicUrl: p.PersonPicUrl, |
| | | PhoneNum: p.PhoneNum, |
| | | Sex: p.Sex, |
| | | TableId: p.TableId, |
| | | }) |
| | | } |
| | | vpE := CompareResult{ |
| | | Id: vp.Id, |
| | | CompareScore: util.ParseScore(captureM[vp.Id].CompareScore), |
| | | CameraId: vp.CameraId, |
| | | CameraAddr: vp.CameraAddr, |
| | | PicDate: vp.PicDate, |
| | | PicMaxUrl: vp.PicMaxUrl, |
| | | PicSmUrl: vp.PicSmUrl, |
| | | IsAlarm: isAlarmInt, |
| | | Sex: vp.Sex, |
| | | AgeDescription: vp.AgeDescription, |
| | | Race: vp.Race, |
| | | TaskName: vp.TaskName, |
| | | TaskId: vp.TaskId, |
| | | VideoUrl: vp.VideoUrl, |
| | | BaseInfo: bi, |
| | | SdkName: "人脸", |
| | | } |
| | | resultList = append(resultList,vpE) |
| | | } |
| | | } |
| | | return resultList |
| | | } |
| | | |
| | | func parseMonitorLevel(level string) string { |
| | | if level == "1" { |
| | | return "一级" |
| | | } |
| | | if level == "2" { |
| | | return "二级" |
| | | } |
| | | if level == "3" { |
| | | return "三级" |
| | | } |
| | | return level |
| | | } |
| | | |
| | | // @Summary 以图搜图 |
| | | // @Description 以图搜图 |
| | | // @Accept json |
| | |
| | | m :=make(map[string]interface{},0) |
| | | m["compareNum"] = searchBody.CompareNum |
| | | m["total"] = 0 |
| | | m["totalList"] = []service.CompareResult{} |
| | | m["totalList"] = []CompareResult{} |
| | | util.ResponseFormat(c,code.CompareResultGone,m) |
| | | } |
| | | } |
| | |
| | | |
| | | compareService := service.NewFaceCompareService(arg) |
| | | compareOnce := compareService.Compare() |
| | | //logger.Debug("compareResult.len:",*compareOnce) |
| | | dataList := compareOnce.CompareData |
| | | |
| | | totalData := compareOnce.CompareData |
| | | logger.Debug("comp 比对结束,用时:",time.Since(timeStart)) |
| | | |
| | | service.SortByScore(dataList) |
| | | totalList := len(dataList) |
| | | m := make(map[string]interface{},3) |
| | | m["compareNum"] = compareOnce.CompareNum |
| | | m["total"] = totalList |
| | | if totalList <= searchBody.Size { |
| | | m["totalList"] = dataList |
| | | if totalData!=nil && len(*totalData)>0{ |
| | | //按分值排序 |
| | | service.SortByScore(totalData) |
| | | total := len(*totalData) |
| | | |
| | | m["compareNum"] = compareOnce.CompareNum |
| | | m["total"] = total |
| | | var sCompResult protomsg.SdkCompareResult |
| | | if total <= searchBody.Size { |
| | | sCompResult.CompareResult = *totalData |
| | | } else { |
| | | sCompResult.CompareResult = (*totalData)[0:searchBody.Size] |
| | | } |
| | | resultList := FillDataToCompareResult(&sCompResult) |
| | | m["totalList"] = resultList |
| | | logger.Debug("comp 比对加排序返回用时:", time.Since(timeStart)) |
| | | |
| | | } else { |
| | | m["totalList"] = dataList[0:searchBody.Size] |
| | | m["total"] = 0 |
| | | m["compareNum"] = searchBody.CompareNum |
| | | m["totalList"] = []CompareResult{} |
| | | } |
| | | logger.Debug("comp 比对加排序返回用时:", time.Since(timeStart)) |
| | | util.ResponseFormat(c,code.Success,m) |
| | | } |
| | | } |
| | | |
| | | func GetCompareDataTwice(co *service.CompareOnce,arg *models.EsSearch) map[string]interface{} { |
| | | camIds := arg.TreeNodes |
| | | tabIds := arg.Tabs |
| | | taskIds := arg.Tasks |
| | | alarmLevels := arg.AlarmLevel |
| | | timeArr := arg.SearchTime |
| | | input := arg.InputValue |
| | | resultList := make([]service.CompareResult,0) |
| | | for _,cr :=range co.CompareData { |
| | | if cr.Id !=""{ |
| | | n :=0 |
| | | if len(camIds) == 0 || isInArr(cr.CameraId,camIds) { |
| | | n++ |
| | | } |
| | | if len(tabIds) == 0 { |
| | | n++ |
| | | } |
| | | if len(taskIds) == 0 || isInArr(cr.TaskId, taskIds) { |
| | | n++ |
| | | } |
| | | //判断报警等级 |
| | | if len(alarmLevels) == 0 { |
| | | //camIds := arg.TreeNodes |
| | | //tabIds := arg.Tabs |
| | | //taskIds := arg.Tasks |
| | | //alarmLevels := arg.AlarmLevel |
| | | //timeArr := arg.SearchTime |
| | | //input := arg.InputValue |
| | | //resultList := make([]CompareResult,0) |
| | | //for _,each :=range *co.CompareData { |
| | | // if each.Id !=""{ |
| | | // n :=0 |
| | | // if len(camIds) == 0 || isInArr(each.CameraId,camIds) { |
| | | // n++ |
| | | // } |
| | | // if len(tabIds) == 0 { |
| | | // n++ |
| | | // } |
| | | // if len(taskIds) == 0 || isInArr(each.TaskId, taskIds) { |
| | | // n++ |
| | | // } |
| | | // //判断报警等级 |
| | | // if len(alarmLevels) == 0 { |
| | | // |
| | | // } |
| | | // n++ |
| | | // //判断时间 |
| | | // if len(timeArr) == 0 { |
| | | // |
| | | // } |
| | | // n++ |
| | | // if input == ""{ |
| | | // |
| | | // } |
| | | // n++ |
| | | // if n == 6 { |
| | | // resultList = append(resultList,cr) |
| | | // } |
| | | // } else { |
| | | // resultList = append(resultList,cr) |
| | | // } |
| | | //} |
| | | |
| | | } |
| | | n++ |
| | | //判断时间 |
| | | if len(timeArr) == 0 { |
| | | |
| | | } |
| | | n++ |
| | | if input == ""{ |
| | | |
| | | } |
| | | n++ |
| | | if n == 6 { |
| | | resultList = append(resultList,cr) |
| | | } |
| | | } else { |
| | | resultList = append(resultList,cr) |
| | | } |
| | | } |
| | | //logger.Debug("GetCompareDataTwice.data:",resultList) |
| | | service.SortByScore(resultList) |
| | | //service.SortByScore(resultList) |
| | | from := (arg.Page-1)*arg.Size |
| | | to := from + arg.Size |
| | | lenth := len(resultList) |
| | | m := make(map[string]interface{},0) |
| | | m["total"] = lenth |
| | | m["compareNum"] = arg.CompareNum |
| | | |
| | | if from < len(resultList) { |
| | | if to <= len(resultList) { |
| | | m["totalList"] = resultList[from:to] |
| | | } else { |
| | | lte := len(resultList) |
| | | m["totalList"] = resultList[from:lte] |
| | | } |
| | | var sCompResult protomsg.SdkCompareResult |
| | | total := len(*co.CompareData) |
| | | if total <= to { |
| | | sCompResult.CompareResult = (*co.CompareData)[from:total] |
| | | } else { |
| | | m["totalList"] = []service.CompareResult{} |
| | | sCompResult.CompareResult = (*co.CompareData)[from:to] |
| | | } |
| | | resultList := FillDataToCompareResult(&sCompResult) |
| | | |
| | | m := make(map[string]interface{},0) |
| | | m["total"] = total |
| | | m["compareNum"] = arg.CompareNum |
| | | m["totalList"] = resultList |
| | | //if from < len(resultList) { |
| | | // if to <= len(resultList) { |
| | | // m["totalList"] = resultList[from:to] |
| | | // } else { |
| | | // lte := len(resultList) |
| | | // m["totalList"] = resultList[from:lte] |
| | | // } |
| | | //} else { |
| | | // m["totalList"] = []CompareResult{} |
| | | //} |
| | | return m |
| | | } |
| | | |