package db
|
|
import (
|
"basic.com/valib/logger.git"
|
"errors"
|
"gorm.io/gorm"
|
"time"
|
)
|
|
type MoveInout struct {
|
ID string `gorm:"column:id;type:varchar(255);" json:"id"`
|
OrgId string `gorm:"column:org_id;type:varchar(299);not null;default:''"` // 派出所id
|
CommunityID string `gorm:"uniqueIndex:idx_document_number_community_id;index:community_id_last_appearance_time;column:community_id;type:varchar(299);not null;default:''"` // 小区id
|
DocumentNumber string `gorm:"uniqueIndex:idx_document_number_community_id;column:document_number;type:varchar(299);not null;default:''"` //最后出现地点
|
MoveInDate string `gorm:"column:move_in_date;type:date;" json:"moveInDate"` //搬入日期
|
MoveOutDate string `gorm:"column:move_out_date;type:date;" json:"moveOutDate"` //搬出日期
|
Status string `gorm:"column:status;"`
|
MoveType string `gorm:"column:move_type;"`
|
DaysAppeared int `gorm:"column:days_appeared;type:int(11);not null;default:0" json:"daysAppeared"` // 出现天数
|
LastAppearanceTime int64 `gorm:"index:community_id_last_appearance_time;column:last_appearance_time;type:int;not null;default:0" json:"lastAppearanceTime"` //最后出现时间
|
LastLocation string `gorm:"column:last_location;type:varchar(255);not null;default:''" json:"lastLocation"` //最后出现地点
|
CreatedAt time.Time
|
UpdatedAt time.Time
|
DeletedAt gorm.DeletedAt `gorm:"index" json:"-"`
|
}
|
|
// 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)
|
continue
|
}
|
|
// 如果记录存在,则更新
|
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
|
}
|