sunty
2024-05-27 6597287fc412ce914aba41fe571ed05817cf371c
db/repository.go
@@ -8,12 +8,8 @@
// 查询小区表
func GetCommunityIDs() ([]string, error) {
   db, err := ConnectDB()
   if err != nil {
      return nil, err
   }
   // 查询数据
   var db = DB
   var communityIDs []string
   result := db.Table("domain_unit").Where("domainType = ?", 1).Pluck("id", &communityIDs)
   if result.Error != nil {
@@ -23,13 +19,33 @@
   return communityIDs, nil
}
// 查询设备表
func GetDeviceData() ([]Device, error) {
   // 查询数据
   var db = DB
   var device []Device
   result := db.Table("device").Where("communityID != ?", "").Find(&device)
   if result.Error != nil {
      return nil, result.Error
   }
   return device, nil
}
// 查询全部数据
func GetAllData() ([]PersonnelStatusRule, error) {
   db, err := ConnectDB()
   if err != nil {
func GetAllTaskData() ([]Task, error) {
   var db = DB
   var task []Task
   if err := db.Find(&task).Error; err != nil {
      return nil, err
   }
   return task, nil
}
// 查询全部数据
func GetAllData() ([]PersonnelStatusRule, error) {
   var db = DB
   var rules []PersonnelStatusRule
   if err := db.Find(&rules).Error; err != nil {
      return nil, err
@@ -40,18 +56,14 @@
// 查询住户时间数据
func GetResidentData(status, communityID string) ([]Resident, error) {
   db, err := ConnectDB()
   if err != nil {
      return nil, err
   }
   var residents []Resident
   //var db = DB.Debug()
   var db = DB
   // 执行查询
   rows, err := db.Table("person_status").
      Select("person_status.documentNumber", "person_status.communityID", "snapshot_count_summary.last_appearance_time", "snapshot_count_summary.created_at").
      Joins("INNER JOIN snapshot_count_summary ON person_status.documentNumber = snapshot_count_summary.document_number AND person_status.communityID = snapshot_count_summary.community_id").
      Where("person_status.status = ? AND person_status.communityID = ?", status, communityID).
   rows, err := db.Table("snapshot_count_summary").
      Select("document_number", "community_id", "last_appearance_time", "created_at").
      Where("status = ? AND community_id = ?", status, communityID).
      //Where("snapshot_count_summary.created_at is not null").
      Rows()
   if err != nil {
      return nil, err
@@ -61,10 +73,12 @@
   // 遍历查询结果
   for rows.Next() {
      var resident Resident
      err := rows.Scan(&resident.DocumentNumber, &resident.CommunityID, &resident.LastAppearanceTime, &resident.CreateAt)
      err := rows.Scan(&resident.DocumentNumber, &resident.CommunityId, &resident.LastAppearanceTime, &resident.CreateAt)
      if err != nil {
         logger.Error("err: ", err)
         return nil, err
      }
      //fmt.Println("resident111: ", resident)
      residents = append(residents, resident)
   }
   if err := rows.Err(); err != nil {
@@ -76,11 +90,7 @@
// 查询人物属性
func GetDBPersonStatusData(id string) ([]PersonStatus, error) {
   db, err := ConnectDB()
   if err != nil {
      return nil, err
   }
   var db = DB
   // 查询数据
   var personStatusList []PersonStatus
   if err := db.Table("person_status").
@@ -93,37 +103,44 @@
   return personStatusList, nil
}
// 根据社区id和住户属性查询住户档案编号
func GetDocNumberFromPersonStatus(id, status string) ([]string, error) {
   db, err := ConnectDB()
   if err != nil {
      return nil, err
   }
// 查询人物年龄
func GetAgeById(id string) (int, error) {
   var db = DB
   // 查询数据
   var personStatusList []PersonStatus
   if err := db.Table("person_status").
      Select("documentNumber, status, frequentAddress").
      Where("communityID = ? AND status = ?", id, status).
      Find(&personStatusList).Error; err != nil {
      return nil, err
   var age int
   if err := db.Table("dbtablepersons").
      Select("age").
      Where("id = ?", id).
      Find(&age).Error; err != nil {
      return 0, err
   }
   docNum := make([]string, 0)
   for _, ps := range personStatusList {
      docNum = append(docNum, ps.DocumentNumber)
   }
   return docNum, nil
   return age, nil
}
//// 根据社区id和住户属性查询住户档案编号
//func GetDocNumberFromPersonStatus(id, status string) ([]string, error) {
//   var db = DB
//   // 查询数据
//   var personStatusList []PersonStatus
//   if err := db.Table("person_status").
//      Select("documentNumber, status, frequentAddress").
//      Where("communityID = ? AND status = ?", id, status).
//      Find(&personStatusList).Error; err != nil {
//      return nil, err
//   }
//
//   docNum := make([]string, 0)
//   for _, ps := range personStatusList {
//      docNum = append(docNum, ps.DocumentNumber)
//   }
//
//   return docNum, nil
//}
// 查询人物身份属性表
func GetLabelManageIdentity(IdentityType int) ([]LabelManage, error) {
   db, err := ConnectDB()
   if err != nil {
      return nil, err
   }
   var db = DB
   // 查询数据
   var labelManageIdentity []LabelManage
   if err := db.Table("label_manage").
@@ -136,13 +153,23 @@
   return labelManageIdentity, nil
}
// 根据dbtablepersons表id查询目标档案年龄
func QueryAgeById(id string) (int, error) {
   var db = DB
   var age int
   err := db.Table("dbtablepersons").
      Select("age").
      Where("id = ?", id).
      Scan(&age).Error
   if err != nil {
      return 0, err
   }
   return age, nil
}
// UpdatePersonInfo 更新或插入多个人员信息
func UpdateMoveInout(personsMoveInout []MoveInout) error {
   // 数据库连接信息
   db, err := ConnectDB()
   if err != nil {
      return err
   }
   var db = DB
   // 遍历人员信息
   for _, personMoveInout := range personsMoveInout {
@@ -158,6 +185,7 @@
      // 如果记录存在,则更新
      if existingPerson.DocumentNumber != "" {
         //fmt.Println("existingPerson.DocumentNumber: ", existingPerson.DocumentNumber)
         if existingPerson.Status != "Verified" {
            err := db.Model(&MoveInout{}).
               Where("document_number = ? AND community_id = ?", personMoveInout.DocumentNumber, personMoveInout.CommunityID).
@@ -180,7 +208,9 @@
         }
      } else {
         // 如果记录不存在,则插入新记录
         err := db.Create(&personsMoveInout).Error
         //fmt.Println("插入记录失败")
         //fmt.Println("data", &personMoveInout)
         err := db.Create(&personMoveInout).Error
         if err != nil {
            return err
         }
@@ -193,11 +223,7 @@
// UpdatePersonInfo 更新或插入多个人员身份信息
func UpdateDBPersonLabel(personsIdentity []Identity) error {
   // 数据库连接信息
   db, err := ConnectDB()
   if err != nil {
      return err
   }
   var db = DB
   // 遍历人员信息
   for _, personIdentity := range personsIdentity {
@@ -247,17 +273,13 @@
// UpdatePersonInfo 更新或插入多个人员信息
func UpdatePersonInfo(persons []PersonStatus, communityID string) error {
   // 数据库连接信息
   db, err := ConnectDB()
   if err != nil {
      return err
   }
   var db = DB
   // 遍历人员信息
   for _, person := range persons {
      // 检查记录是否存在
      var existingPerson PersonStatus
      err := db.Where("documentNumber = ? AND communityID = ?", person.DocumentNumber, communityID).First(&existingPerson).Error
      err := db.Where("document_number = ? AND community_id = ?", person.DocumentNumber, communityID).First(&existingPerson).Error
      if err != nil && !errors.Is(err, gorm.ErrRecordNotFound) {
         logger.Error("Query person error:", err, person.DocumentNumber, communityID)
         //fmt.Println("asdasfasfasf")
@@ -268,22 +290,22 @@
      // 如果记录存在,则更新
      if existingPerson.DocumentNumber != "" {
         err := db.Model(&PersonStatus{}).
            Where("documentNumber = ? AND communityID = ?", person.DocumentNumber, communityID).
            Where("document_number = ? AND community_id = ?", person.DocumentNumber, communityID).
            Updates(map[string]interface{}{
               "status":          person.Status,
               "frequentAddress": person.FrequentAddress,
               "status":           person.Status,
               "frequent_address": person.FrequentAddress,
            }).Error
         if err != nil {
            return err
         }
      } else {
         // 如果记录不存在,则插入新记录
         err := db.Create(&person).Error
         if err != nil {
            return err
         }
      }
      //else {
      //   // 如果记录不存在,则插入新记录
      //   err := db.Create(&person).Error
      //   if err != nil {
      //      return err
      //   }
      //}
   }
   return nil