Merge.go 3.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. package test
  2. import (
  3. "database/sql"
  4. "fmt"
  5. "gorm.io/driver/mysql"
  6. "gorm.io/gorm"
  7. "strings"
  8. "time"
  9. )
  10. var db *gorm.DB
  11. var sqlDB *sql.DB
  12. type WarningDB struct {
  13. Id int64 `gorm:"column:ID;type:bigint;primaryKey"`
  14. T_pid int32 `gorm:"column:t_pid;"` // Account.Company 绑定公司
  15. T_tp int `gorm:"column:t_tp;"` // 报警类型 ->WarningList
  16. T_sn string `gorm:"column:t_sn;index;size:256;"` // 设备序列号
  17. T_D_name string `gorm:"column:t__d_name;size:256;"` // 设备名称
  18. T_id int32 `gorm:"column:t_id;"` // 传感器 ID
  19. T_DS_name string `gorm:"column:t__d_s_name;size:256;"` // 传感器名称
  20. T_Remark string `gorm:"column:t__remark;type:longtext;"` // 采集内容
  21. T_Ut time.Time `gorm:"column:t__ut;type:datetime;"` // 采集时间
  22. T_fUt time.Time `gorm:"column:t_f_ut;type:datetime;"` // 首次采集时间
  23. T_Text string `gorm:"column:t__text;type:longtext;"` // 处理备注
  24. T_Log string `gorm:"column:t__log;type:longtext;"` // 通知日志
  25. T_Msid int32 `gorm:"column:t__msid;"` // 消息ID
  26. T_State int `gorm:"column:t__state;size:2;default:2"` // 0 删除 1 不处理 2 已处理 3 未处理
  27. CreateTime time.Time `gorm:"column:create_time;type:datetime;autoUpdateTime"` //auto_now_add 第一次保存时才设置时间
  28. UpdateTime time.Time `gorm:"column:update_time;type:datetime;autoCreateTime"` //auto_now 每次 model 保存时都会对时间自动更新
  29. }
  30. var MysqlServer_UrlPort = "127.0.0.1:40306"
  31. var MysqlServer_Database = "cold"
  32. var MysqlServer_Username = "cold"
  33. var MysqlServer_Password = "yjwyEckZS7rE5H!"
  34. func init() {
  35. // 连接数据库
  36. var err error
  37. dsn := MysqlServer_Username + ":" + MysqlServer_Password + "@tcp(" + MysqlServer_UrlPort + ")/" + MysqlServer_Database + "?charset=utf8mb4&loc=Local&parseTime=True"
  38. db, err = gorm.Open(mysql.Open(dsn), &gorm.Config{})
  39. if err != nil {
  40. fmt.Println(err)
  41. }
  42. sqlDB, err = db.DB()
  43. // SetMaxIdleConns 设置空闲连接池中的最大连接数。
  44. sqlDB.SetMaxIdleConns(1)
  45. // SetMaxOpenConns 设置数据库连接最大打开数。
  46. sqlDB.SetMaxOpenConns(10)
  47. // SetConnMaxLifetime 设置可重用连接的最长时间
  48. sqlDB.SetConnMaxLifetime(time.Hour)
  49. //db.AutoMigrate(&DeviceWarning{})
  50. //db.SetLogger(log.New(logs.LogxOrm, "\r\nWarningBack:", 0))
  51. fmt.Println("db init")
  52. }
  53. func Handy(time_a, time_b, WHERE string) {
  54. var TABLE = "warning_2024_04"
  55. //var TABLE = "my_users"
  56. var count int64
  57. var Warning_list []WarningDB
  58. //rows, _ := db.Raw("SELECT * FROM "+TABLE+" WHERE `t_tp` = ? LIMIT 10,20;", 110).Rows() // (*sql.Rows, error)
  59. db.Table(TABLE).Where("t_tp = ?", 110).Count(&count)
  60. db.Table(TABLE).Where("t_tp = ?", 110).Limit(10).Offset(0).Find(&Warning_list)
  61. return
  62. }
  63. func (t *WarningDB) Create(TableName string) {
  64. CreateSQL:
  65. result := db.Table(TableName).Create(t)
  66. if result.Error != nil {
  67. if strings.Compare(result.Error.Error(), "doesn't exist") != 0 {
  68. db.Table(TableName).AutoMigrate(&WarningDB{})
  69. goto CreateSQL
  70. }
  71. }
  72. }