package task import ( "basic.com/valib/logger.git" "ruleModelEngine/cache" "ruleModelEngine/db" "time" ) func UnderageClimbingToRooftop(taskPerson db.TaskPerson) bool { if taskPerson.Floor == "" { return false } age, err := db.GetAgeById(taskPerson.DocumentNumber) if err != nil { logger.Error("GetAgeById: ", err) return false } floor, _ := extractFloorNumber(taskPerson.Floor) if age <= 16 && floor == cache.Device[taskPerson.CameraId].MaxBuildingFloor && taskPerson.TargetType == "body" { return true } return false } func UnderageEnteringCommercialBuilding(taskPerson db.TaskPerson) bool { age, err := db.GetAgeById(taskPerson.DocumentNumber) if err != nil { logger.Error("GetAgeById: ", err) return false } //floor, _ := extractFloorNumber(taskPerson.Floor) if age <= 16 && taskPerson.TargetType == "face" && cache.Device[taskPerson.CameraId].BuildingType == db.BuildingTypeMixedUse { return true } return false } func ClimbingFloorsIllegally(taskPerson db.TaskPerson, hours int, times int) bool { layout := "2006-01-02 15:04:05" picDate, err := time.Parse(layout, taskPerson.PicDate) startTime := picDate.Add(time.Duration(-hours) * time.Hour).Format(layout) floors, err := db.QueryCheckDataByDocumentNumber(taskPerson.DocumentNumber, startTime, taskPerson.PicDate) if err != nil { logger.Error("QueryCheckDataByDocumentNumber: ", err) return false } if floors >= times { return true } return false } func EnteringButNotLeaving(docNumber string, communityId string, cameraIds []string, days int) bool { total, err := db.QueryTimesByDocNumberDays(docNumber, communityId, cameraIds, days-1) if err != nil { logger.Error("QueryTimesByDocNumberDays err: ", err) } if total == 0 { return true } return false } func registeredAddressNotMatchActualResidence(taskPerson db.TaskPerson) bool { idCard := db.GetIdCardById(taskPerson.DocumentNumber) if idCard == "" { return false } if _, ok := cache.PublicHouse[taskPerson.CommunityId]; !ok { return false } // 有身份证号, 小区属于公租房, 公租房登记身份证号没有该条记录, 返回true personStatus := db.GetDBPersonStatus(taskPerson.DocumentNumber, taskPerson.CommunityId) logger.Debugf("Actual residence get person id:%s status: %s", taskPerson.DocumentNumber, personStatus) if personStatus == "resident" || personStatus == "permanent_resident" { if _, ok := cache.PublicHouse[taskPerson.CommunityId][idCard]; !ok { // 控制程序运行期间只输出一次报警 if _, ok := cache.PublicHouseAlarmCache[idCard]; ok { return false } else { cache.PublicHouseAlarmCache[idCard] = struct{}{} return true } } } return false }