| | |
| | | results := make([]*db.ModelTaskResults, 0) |
| | | var ageFilter, labelFilter, keyFilter, lastFilter []PersonInfo |
| | | |
| | | if m.MinAge == 0 && m.PersonLabel == "" && m.KeyPersonType == "" { |
| | | err := db.GetDB().Raw(` |
| | | SELECT |
| | | s.document_number, |
| | | s.community_id, |
| | | s.org_id, |
| | | p.person_name, |
| | | p.id_card, |
| | | s.last_appearance_time, |
| | | s.last_direction, |
| | | s.last_location |
| | | FROM |
| | | snapshot_count_summary AS s |
| | | JOIN person AS p ON p.id = s.document_number |
| | | WHERE |
| | | s.last_appearance_time > ? |
| | | `, m.StartTime).Scan(&lastFilter).Error |
| | | if err != nil { |
| | | logger.Warnf(err.Error()) |
| | | } |
| | | |
| | | if len(lastFilter) == 0 { |
| | | return fmt.Errorf("no results found that match the condition %+v", m.Task.Rules) |
| | | } |
| | | |
| | | logger.Debugf("task %s match default result %d", m.Task.Name, len(lastFilter)) |
| | | } |
| | | |
| | | if m.MinAge > 0 { |
| | | err := db.GetDB().Raw(` |
| | | SELECT |
| | |
| | | for _, p := range lastFilter { |
| | | if len(m.AreaIds) > 0 { |
| | | _, o1 := m.AreaIds[p.CommunityId] |
| | | _, o2 := m.AreaIds[p.OrgId] |
| | | if !o1 && !o2 { |
| | | if !o1 { |
| | | continue |
| | | } |
| | | } |