package models import ( "Cold_Data/conf" "Cold_Data/logs" "encoding/json" "fmt" "github.com/astaxie/beego/cache" _ "github.com/astaxie/beego/cache/redis" "strconv" "time" ) var redisCache_DeviceSensor cache.Cache func init() { config := fmt.Sprintf(`{"key":"%s","conn":"%s","dbNum":"%s","password":"%s"}`, "ColdDataV_Company", conf.Redis_address, conf.Redis_dbNum, conf.Redis_password) logs.Println(config) var err error redisCache_DeviceSensor, err = cache.NewCache("redis", config) if err != nil || redisCache_DeviceSensor == nil { errMsg := "failed to init redis" logs.Println(errMsg, err) panic(any(errMsg)) } } // ---------------- Redis ------------------- // Redis_Set(m.T_sn,m) // Redis 更新缓存 func Redis_DeviceSensor_Set(T_id int, r Company_Project) (err error) { key := strconv.Itoa(T_id) //json序列化 str, err := json.Marshal(r) if err != nil { logs.PrintlnError("Redis_DeviceSensor_Set", err) return } err = redisCache_DeviceSensor.Put(key, str, 24*time.Hour) if err != nil { logs.Println("set key:", key, ",value:", str, err) } return } func Redis_DeviceSensor_Get(key string) (r Company_Project, is bool) { if redisCache_DeviceSensor.IsExist(key) { //println("找到key:",key) v := redisCache_DeviceSensor.Get(key) json.Unmarshal(v.([]byte), &r) return r, true } //println("没有 找到key:",key) return Company_Project{}, false } ////////////////////////// // 设备列表类 type DeviceList_Project struct { T_sn string // 设备序列号 KF开头,环境监测主机。 YD开头,温途监测主机 T_id int // 传感器编号 T_name string // 标题 T_sort int // 排序 T_3dview string //3D 视图ID T_type int // 0:未知类型 1库房 2移动 T_link int // 0:断开/故障 1连接 :实时数据 // 实时数据 T_t float32 // 温度 T_rh float32 // 湿度 T_Tlower float32 // 温度下限 T_Tupper float32 // 温度上限 T_RHlower float32 // 湿度下限 T_RHupper float32 // 湿度上限 T_time string // 采集时间 // 设备同步参数 T_Dattery int // 电量 T_Site string // GPS :实时数据 T_monitor int // 监控状态 0 未监控 1 监控 :记录数据(=0) 下线(=0) T_online int // 在线状态 0 未启用 1 在线 2 离线 :上下线 T_online_s int // 在线状态-备用 0 未启用 1 在线 2 离线 :上下线 } // 设备类 type Device_Project struct { T_库房总数 int T_移动总数 int T_移动离线总数 int T_移动监控总数 int //DeviceList []DeviceList_Project } // 报警类 type Warning_Project struct { //T_库房报警总数 int T_库房未处理总数 int T_库房设备报警数_今天 int T_库房报警设备数_今天 int //T_库房设备报警数_昨天 int //T_库房设备报警数_近7天 int //T_库房设备报警数_本月 int //T_库房设备报警数_上一月 int T_库房报警类型统计 map[string]int //T_库房报警设备数_近7天 map[string]int //T_移动警数总数 int T_移动未处理总数 int T_移动设备报警数_今天 int T_移动报警设备数_今天 int T_移动报警类型统计 map[string]int //T_移动设备报警数_昨天 int //T_移动设备报警数_近7天 int //T_移动设备报警数_本月 int //T_移动设备报警数_上一月 int //T_移动报警设备数_近7天 map[string]int T_报警设备数_近7天 map[string]int T_报警设备数_近30天 map[string]int T_报警设备数_近90天 map[string]int T_探头报警类型统计 map[string]int T_探头报警类型统计_30天 map[string]int T_探头报警类型统计_90天 map[string]int } // 任务类 type Task_Project struct { T_任务总数_今天 int //T_任务总数_昨天 int //T_任务总数_近7天 int //T_任务总数_本月 int //T_任务总数_上一月 int //T_任务总数_近一年 map[string]int T_任务总数_近7天 map[string]int T_任务设备数_今天 int //T_任务设备数_昨天 int //T_任务设备数_近7天 int //T_任务设备数_本月 int //T_任务设备数_上一月 int } // 公司类 type Company_Project struct { Company_Id int Company_name string Company_key string Company_plan string Company_data string Company_v3d string Company_Address string Company_coordinate string Company_mid int Company_path string Device Device_Project Warning Warning_Project Task Task_Project Children []*Company_Project }