package nats_server import ( "database/sql/driver" "encoding/json" "fmt" "time" ) type JsonTime struct { time.Time } func (t JsonTime) MarshalJSON() ([]byte, error) { str := fmt.Sprintf("\"%s\"", t.Format("2006-01-02 15:04:05")) return []byte(str), nil } func (t JsonTime) Value() (driver.Value, error) { var zeroTime time.Time if t.Time.UnixNano() == zeroTime.UnixNano() { return nil, nil } return t.Time, nil } func (t *JsonTime) Scan(v interface{}) error { value, ok := v.(time.Time) if ok { *t = JsonTime{Time: value} return nil } return fmt.Errorf("error %v", v) } type DeviceSensor_R struct { T_sn string // 设备序列号 KF开头,环境监测主机。 YD开头,温途监测主机 T_id int // 传感器编号 T_name string // 标题 //T_pid int // 公司id //T_pid_name string // 公司名称 // //T_3dview string // 3D 视图ID //T_sort int // 排序 //T_Dattery int // 电量 //T_Site string // GPS //T_monitor int // 记录状态 //T_online int // 在线状态 1 在线 0 离线 //T_online_s int // 在线状态-备用 0 未启用 1 在线 2 离线 //T_datashow int // 0 屏蔽数据展示 1 正常数据展示 //T_type int // 类型 //T_link int // 0:断开/故障 1连接 实时数据 //T_State int // 0 屏蔽 1 正常 (屏蔽后 只有内部管理员才能看到,用户 输入SN\名称 搜索时 也能看到) T_DeviceSensorData DeviceData_R2 // 传感器最新数据 T_DeviceSensorParameter DeviceSensorParameter_R // 设备参数 } type DeviceData_R2 struct { T_t float32 // 温度 T_rh float32 // 湿度 T_site string // GPS T_time string // 采集时间 } type DeviceData_ struct { T_id int // 传感器id T_sp int // 传感器参数id T_t float32 // 温度 T_rh float32 // 湿度 T_site string // GPS T_time time.Time // 采集时间 } func (ab *DeviceData_) MarshalJSON() ([]byte, error) { loc, _ := time.LoadLocation("Asia/Shanghai") type Alias DeviceData_ return json.Marshal(&struct { T_time string `json:"T_time,omitempty"` *Alias }{ T_time: ab.T_time.In(loc).Format("2006-01-02 15:04:05"), Alias: (*Alias)(ab), }) } type DeviceSensor struct { Id int `orm:"column(ID);size(11);auto;pk"` T_sn string `orm:"index;size(256);null"` // 设备序列号 KF开头,环境监测主机。 YD开头,温途监测主机 T_id int `orm:"index;size(11);null"` // 传感器编号 T_sp int `orm:"size(11);null"` // 传感器参数id T_name string `orm:"size(256);null"` // 标题 T_pid int `orm:"index;size(256);null"` // Account.Company 绑定公司 T_Class string `orm:"size(256);null"` // Device.DeviceClass.Id 设备分类 C1|C2| T_Notice string `orm:"size(256);null"` // 通知绑定 T_datashow int `orm:"size(2);default(1)"` // 0 屏蔽数据展示 1 正常数据展示 (屏蔽后 数据展示无法看到,设备管理中 不受影响) T_sort int `orm:"size(200);default(1)"` // 排序 T_3dview string `orm:"size(256);null"` // 3D 视图ID T_type int `orm:"size(4);null"` // Device.DeviceSensorType 1库房 2移动 T_link int `orm:"size(4);default(1)"` // 0:断开/故障 1连接 实时数据 T_State int `orm:"index;size(2);default(1)"` // 0 屏蔽 1 正常 (屏蔽后 只有内部管理员才能看到,用户 输入SN\名称 搜索时 也能看到) // 设备同步参数 T_Dattery int `orm:"size(4);null"` // 电量 T_Site string `orm:"size(200);null"` // GPS T_monitor int `orm:"size(2);null"` // 监控状态 0 未监控 1 监控 T_online int `orm:"size(2);default(1)"` // 在线状态 0 未启用 1 在线 2 离线 T_online_s int `orm:"size(2);default(0)"` // 在线状态-备用 0 未启用 1 在线 2 离线 CreateTime time.Time `orm:"column(create_time);type(timestamp);null;auto_now_add"` //auto_now_add 第一次保存时才设置时间 UpdateTime time.Time `orm:"column(update_time);type(timestamp);null;auto_now"` //auto_now 每次 model 保存时都会对时间自动更新 } type DeviceData_R struct { T_sn string // sn T_id int // 传感器id T_name string // 传感器名称 T_t float32 // 温度 T_rh float32 // 湿度 T_site string // GPS T_tl float32 // 温度下限 T_tu float32 // 温度上限 T_rhl float32 // 湿度下限 T_rhu float32 // 湿度上限 T_time string // 采集时间 //T_sp int // 传感器参数id //T_ist int // 温度 1开启 2关闭 //T_ish int // 湿度 1开启 2关闭 //T_remark string // 备注 } type DeviceSensorParameter_R struct { Id int T_name string // 报警 T_Tlower float32 // 温度下限 T_Tupper float32 // 温度上限 T_RHlower float32 // 湿度下限 T_RHupper float32 // 湿度上限 // 预警 //T_enprel int // 是否启用预警 //T_tprel float32 // 温度预警下限 //T_tpreu float32 // 温度预警上限 //T_hprel float32 // 湿度预警下限 //T_hpreu float32 // 温度预警上限 //T_enprelnote int // 预警记录数据 //T_speed int // 传感器采样率 s(1~240) 默认:15 * //T_sense int // 传感器灵敏度 s(0~10) 默认:5 //T_en int // en:是否启用传感器, //T_free int // free:监测点是否为闲置状态(空库,只监测不报警) T_time JsonTime } type Device_R struct { T_sn string // 设备序列号 KF开头,环境监测主机。 YD开头,温途监测主机 T_devName string // 设备名称 T_protocol int // 1 1.0协议 2 2.0协议 T_VerifyTime string // 验证时间 T_CalibrationTime string // 校准时间 T_PatrolTime string // 巡检时间 T_ist int // 温度 1开启 2关闭 T_ish int // 湿度 1开启 2关闭 T_Dattery int // 电量 T_Site string // GPS T_monitor int // 监控状态 0 未监控 1 监控 停止记录 T_online int // 在线状态 0 未启用 1 在线 2 离线 T_online_s int // 在线状态-备用 0 未启用 1 在线 2 离线 T_State int // 0 屏蔽 1 正常 // 硬件信息 T_model string // KF200BG 产品型号 T_ProductTypeName string // 验证工具LoRa 产品统称 + 类型 T_sver string // "1.0.0",//软件版本 T_hver string // "1.0.0",//硬件版本 T_imei string // "867387060327718",//模组imei T_iccid string // "89860477102170049750",//sim卡号 T_rssi string // "80",//信号强度 CreateTime string //auto_now_add 第一次保存时才设置时间 UpdateTime string //auto_now 每次 model 保存时都会对时间自动更新 T_DeviceSensor_Num int // 传感器数量 } type Company_R struct { Id int T_mid int // 上一级 ID T_name string // 公司名称 T_plan string // 平面图 T_data string // 大数据 T_v3d string // 3D 视图 T_money float32 // 余额 T_warning int // 报警统计 T_key string T_type int // 公司类型 1-医药公司 2-运输企业 T_Charging int Children []Company_R } type Device struct { T_sn string // 设备序列号 T_pid int // Account.Company 绑定公司 T_devName string // 设备名称 20字 T_protocol int // 冷链通讯协议 1 :1.0协议 2 :2.0协议 3 :3.0协议 T_mqttid string // MQTT 服务ID T_VerifyTime time.Time // 验证时间 T_CalibrationTime time.Time // 校准时间 T_PatrolTime time.Time // 巡检时间 T_abandonTime time.Time // 弃用时间 T_ist int // 温度 1开启 2关闭 T_ish int // 湿度 1开启 2关闭 T_State int // 0 屏蔽 1 正常 (屏蔽后 只有内部管理员才能看到,用户 输入SN\名称 搜索时 也能看到) // 设备同步参数 T_Dattery int // 电量 T_Site string // GPS T_monitor int // 监控状态 0 未监控 1 监控 停止记录 T_online int // 在线状态 0 未启用 1 在线 2 离线 T_online_s int // 在线状态-备用 0 未启用 1 在线 2 离线 // 硬件信息 T_model string // KF200BG 设备型号 T_sver string // "1.0.0",//软件版本 T_hver string // "1.0.0",//硬件版本 T_imei string // "867387060327718",//模组imei T_iccid string // "89860477102170049750",//sim卡号 T_rssi string // "80",//信号强度 CreateTime time.Time //auto_now_add 第一次保存时才设置时间 UpdateTime time.Time //auto_now 每次 model 保存时都会对时间自动更新 } // 设备任务 type DeviceTask struct { Id int `orm:"column(ID);size(11);auto;pk"` T_sn string `orm:"size(256);null"` // 设备序列号 KF开头,环境监测主机。 YD开头,温途监测主机 T_Ut_start time.Time `orm:"type(timestamp);null;"` // 采集时间 T_Ut_end time.Time `orm:"type(timestamp);null;"` // 采集时间 T_Ut time.Time `orm:"type(timestamp);null;"` // 采集时间 T_State int `orm:"size(2);default(1)"` // 1 start:开始监测任务, // 2 stop:结束监测任务, // 3 print:中途打印任务 }