package db import ( "basic.com/valib/logger.git" "errors" "gorm.io/gorm" ) // 查询小区表 func GetCommunityIDs() ([]string, error) { // 查询数据 var db = DB var communityIDs []string result := db.Table("domain_unit").Where("domainType = ?", 1).Pluck("id", &communityIDs) if result.Error != nil { return nil, result.Error } 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 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 } return rules, nil } // 查询住户时间数据 func GetResidentData(status, communityID string) ([]Resident, error) { var residents []Resident //var db = DB.Debug() var db = DB // 执行查询 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 } defer rows.Close() // 遍历查询结果 for rows.Next() { var resident Resident 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 { return nil, err } return residents, nil } // 查询人物属性 func GetDBPersonStatusData(id string) ([]PersonStatus, error) { var db = DB // 查询数据 var personStatusList []PersonStatus if err := db.Table("person_status"). Select("documentNumber, status, frequentAddress"). Where("communityID = ?", id). Find(&personStatusList).Error; err != nil { return nil, err } return personStatusList, nil } // 查询人物年龄 func GetAgeById(id string) (int, error) { var db = DB // 查询数据 var age int if err := db.Table("dbtablepersons"). Select("age"). Where("id = ?", id). Find(&age).Error; err != nil { return 0, err } 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) { var db = DB // 查询数据 var labelManageIdentity []LabelManage if err := db.Table("label_manage"). Select("id, name, valid_days"). Where("type = ?", IdentityType). Find(&labelManageIdentity).Error; err != nil { return nil, err } 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 { var db = DB // 遍历人员信息 for _, personMoveInout := range personsMoveInout { // 检查记录是否存在 var existingPerson MoveInout err := db.Where("document_number = ? AND community_id = ?", personMoveInout.DocumentNumber, personMoveInout.CommunityID).First(&existingPerson).Error if err != nil && !errors.Is(err, gorm.ErrRecordNotFound) { logger.Error("Query person error:", err, personMoveInout.DocumentNumber, personMoveInout.CommunityID) //fmt.Println("asdasfasfasf") continue //return err } // 如果记录存在,则更新 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). Updates(map[string]interface{}{ "status": personMoveInout.Status, "move_out_date": personMoveInout.MoveOutDate, }).Error if err != nil { return err } } else { err := db.Model(&MoveInout{}). Where("document_number = ? AND community_id = ?", personMoveInout.DocumentNumber, personMoveInout.CommunityID). Updates(map[string]interface{}{ "move_out_date": personMoveInout.MoveOutDate, }).Error if err != nil { return err } } } else { // 如果记录不存在,则插入新记录 //fmt.Println("插入记录失败") //fmt.Println("data", &personMoveInout) err := db.Create(&personMoveInout).Error if err != nil { return err } } } return nil } // UpdatePersonInfo 更新或插入多个人员身份信息 func UpdateDBPersonLabel(personsIdentity []Identity) error { var db = DB // 遍历人员信息 for _, personIdentity := range personsIdentity { // 检查记录是否存在 var existingPerson Identity err := db.Where("dbtablepersons_id = ? AND community_id = ? AND label_id = ?", personIdentity.DocumentNumber, personIdentity.CommunityID, personIdentity.LabelId, ).First(&existingPerson).Error if err != nil && !errors.Is(err, gorm.ErrRecordNotFound) { logger.Error("Query person error:", err, personIdentity.DocumentNumber, personIdentity.CommunityID, personIdentity.LabelId) //fmt.Println("asdasfasfasf") continue //return err } // 如果记录存在,则更新 if existingPerson.DocumentNumber != "" { err := db.Model(&Identity{}). Where("dbtablepersons_id = ? AND community_id = ? AND label_id = ?", personIdentity.DocumentNumber, personIdentity.CommunityID, personIdentity.LabelId, ). Updates(map[string]interface{}{ "expire_time": personIdentity.ExpireTime, }).Error if err != nil { return err } } else { // 如果记录不存在,则插入新记录 err := db.Create(&personIdentity).Error if err != nil { return err } } } return nil } // UpdatePersonInfo 更新或插入多个人员信息 func UpdatePersonInfo(persons []PersonStatus, communityID string) error { var db = DB // 遍历人员信息 for _, person := range persons { // 检查记录是否存在 var existingPerson PersonStatus 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") continue //return err } // 如果记录存在,则更新 if existingPerson.DocumentNumber != "" { err := db.Model(&PersonStatus{}). Where("document_number = ? AND community_id = ?", person.DocumentNumber, communityID). Updates(map[string]interface{}{ "status": person.Status, "frequent_address": person.FrequentAddress, }).Error if err != nil { return err } } //else { // // 如果记录不存在,则插入新记录 // err := db.Create(&person).Error // if err != nil { // return err // } //} } return nil }