zhaoqingang
2025-02-19 fca319958029fa924308e50cb61202d7d6ff5008
models/disappear.go
@@ -80,20 +80,37 @@
   return nil
}
type PersonInfo struct {
   DocumentNumber     string `json:"document_number"`
   CommunityId        string `json:"community_id"`
   OrgId              string `json:"org_id"`
   PersonName         string `json:"person_name"`
   IdCard             string `json:"id_card"`
   LastAppearanceTime int64  `json:"last_appearance_time"`
   LastDirection      string `json:"last_direction"`
   LastLocation       string `json:"last_location"`
}
func (m *DisappearModel) Run() error {
   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(`
@@ -215,8 +232,7 @@
   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
         }
      }