package Device import ( "Cold_mqtt/conf" "Cold_mqtt/logs" "github.com/beego/beego/v2/adapter/orm" orm2 "github.com/beego/beego/v2/client/orm" _ "github.com/go-sql-driver/mysql" "time" ) // 设备记录数据 操作历史记录(只存放留存下来的数据,最近记录直接写到 记录数据中) type DeviceDataOld struct { Id int `orm:"column(ID);size(11);auto;pk"` T_sn string `orm:"index;size(256);"` // 主键 设备序列号 T_id int `orm:"index;size(12);"` // 主键 传感器编号 T_t float32 `orm:"size(20);digits(6);decimals(1)"` // 温度 T_rh float32 `orm:"size(20);digits(6);decimals(1)"` // 湿度 T_Site string `orm:"size(100);"` // GPS T_time time.Time `orm:"index;type(timestamp);"` // 主键 采集时间 T_operation int `orm:"size(12);"` // 操作类型 1:插入 2:替换 3:删除 4:忽略 T_uuid string `orm:"size(256);"` // 操作人 Admin->T_uuid , 如果为空字符串 则是设备本身上传的,标记为(设备) CreateTime time.Time `orm:"column(create_time);type(timestamp);auto_now_add"` //auto_now 每次 model 保存时都会对时间自动更新 } type DeviceDataOld_R struct { T_t float32 // 温度 T_rh float32 // 湿度 T_Site string // GPS T_time time.Time // 采集时间 T_operation int // 操作类型 1:插入 2:替换 3:删除 T_uuid string // 操作人 Admin->T_uuid , 如果为空字符串 则是设备本身上传的 CreateTime time.Time //auto_now 每次 model 保存时都会对时间自动更新 } func (t *DeviceDataOld) TableName() string { return "device_data_old" // 数据库名称 // ************** 替换 FormulaList ************** } func init() { //注册模型 orm.RegisterModel(new(DeviceDataOld)) } func DeviceDataOldToDeviceDataOld_R(r DeviceDataOld) (t DeviceDataOld_R) { t.T_t = r.T_t t.T_rh = r.T_rh t.T_Site = r.T_Site t.T_time = r.T_time t.T_operation = r.T_operation t.T_uuid = r.T_uuid t.CreateTime = r.CreateTime return } // ---------------- 特殊方法 ------------------- // 添加 func Add_DeviceDataOld(m DeviceDataOld) (id int64, err error) { o := orm.NewOrm() id, err = o.Insert(&m) if err != nil { logs.Println("Add_DeviceDataOld", err) } return id, err } // 获取列表 func Read_DeviceDataOld_List(T_sn string, T_id int, T_time string, page int, page_z int) (r []DeviceDataOld_R, cnt int64) { o := orm.NewOrm() // 也可以直接使用 Model 结构体作为表名 qs := o.QueryTable(new(DeviceDataOld)) var offset int64 if page_z == 0 { page_z = conf.Page_size } if page <= 1 { offset = 0 } else { offset = int64((page - 1) * page_z) } cond := orm.NewCondition() cond1 := cond.And("T_sn", T_sn).And("T_id", T_id).And("T_time", T_time) var rx []DeviceDataOld qs.Limit(page_z, offset).SetCond((*orm2.Condition)(cond1)).OrderBy("-Id").All(&rx) cnt, _ = qs.SetCond((*orm2.Condition)(cond1)).Count() for _, v := range rx { r = append(r, DeviceDataOldToDeviceDataOld_R(v)) } return r, cnt }