package models

import (
	"time"
)

// RadarData 网关上报 雷达数据
type RadarData struct {
	ID        int64     `gorm:"primary_key"`             //主键
	DID       string    `gorm:"type:varchar(32)"`        //设备编码 UDP发送端地址
	GID       string    `gorm:"type:varchar(32)"`        //网关ID UDP接收端
	IP        string    `gorm:"type:varchar(32)"`        //设备IP
	Port      string    `gorm:"type:varchar(32)"`        //设备端口 0-65535
	Time      time.Time `gorm:"type:datetime"`           //日期
	UID       uint16    `gorm:"type:smallint;default:0"` //序列号，16位连续，0-65535，溢出后归0
	RadarID   uint64    `gorm:"type:bigint;default:0"`   //雷达通讯包里的ID，区分不同的物体
	Type      uint8     `gorm:"type:smallint;default:0"` // 类型 0点目标 1车目标
	Speed     float64   `gorm:"type:float;default:0"`    //  速度值，单位是KM/H
	Dist      float64   `gorm:"type:float;default:0"`    //  距离值，单位米
	CreatedAt time.Time
}

func (RadarData) TableName() string {
	return "t_radar_data"
}

func (o RadarData) Save() error {
	return G_db.Create(&o).Error
}

// RadarHourData 雷达数据小时统计
type RadarHourData struct {
	DID             string    `gorm:"type:varchar(32);not null;primary_key"`        //设备编码 UDP发送端地址
	GID             string    `gorm:"type:varchar(32);not null;primary_key"`        //网关ID UDP接收端
	Type            uint8     `gorm:"type:smallint;default:0;not null;primary_key"` // 类型 0点目标 1车目标
	Total           int       `gorm:"type:int;default:0;"`                          // 对应类型总数
	OverSpeedNumber int       `gorm:"type:int;default:0"`                           // 超速数量
	SpeedMinNumber  int       `gorm:"type:int;default:0"`                           // <0 速度区间数量
	Speed20Number   int       `gorm:"type:int;default:0"`                           // 0-20 速度区间数量
	Speed40Number   int       `gorm:"type:int;default:0"`                           // 20-40 速度区间数量
	Speed60Number   int       `gorm:"type:int;default:0"`                           // 40-60 速度区间数量
	Speed80Number   int       `gorm:"type:int;default:0"`                           // 60-80 速度区间数量
	Speed100Number  int       `gorm:"type:int;default:0"`                           // 80-100 速度区间数量
	Speed120Number  int       `gorm:"type:int;default:0"`                           // 100-120 速度区间数量
	SpeedMaxNumber  int       `gorm:"type:int;default:0"`                           // >120 速度区间数量
	Time            time.Time `gorm:"type:datetime;not null;primary_key"`           //日期 2022-07-28 15:00:00
}

func (RadarHourData) TableName() string {
	return "t_radar_hour_data"
}

func (o RadarHourData) Save() error {
	return G_db.Create(&o).Error
}

// RadarDayData 雷达数据每日统计
type RadarDayData struct {
	DID             string    `gorm:"type:varchar(32);not null;primary_key"`        //设备编码 UDP发送端地址
	GID             string    `gorm:"type:varchar(32);not null;primary_key"`        //网关ID UDP接收端
	Type            uint8     `gorm:"type:smallint;default:0;not null;primary_key"` // 类型 0点目标 1车目标
	Total           int       `gorm:"type:int;default:0"`                           // 对应类型总数
	OverSpeedNumber int       `gorm:"type:int;default:0"`                           // 超速数量
	SpeedMinNumber  int       `gorm:"type:int;default:0"`                           // <0 速度区间数量
	Speed20Number   int       `gorm:"type:int;default:0"`                           // 0-20 速度区间数量
	Speed40Number   int       `gorm:"type:int;default:0"`                           // 20-40 速度区间数量
	Speed60Number   int       `gorm:"type:int;default:0"`                           // 40-60 速度区间数量
	Speed80Number   int       `gorm:"type:int;default:0"`                           // 60-80 速度区间数量
	Speed100Number  int       `gorm:"type:int;default:0"`                           // 80-100 速度区间数量
	Speed120Number  int       `gorm:"type:int;default:0"`                           // 100-120 速度区间数量
	SpeedMaxNumber  int       `gorm:"type:int;default:0"`                           // >120 速度区间数量
	Date            time.Time `gorm:"type:date;not null;primary_key"`               //日期 2022-07-28
}

func (RadarDayData) TableName() string {
	return "t_radar_day_data"
}

func (o RadarDayData) Save() error {
	return G_db.Create(&o).Error
}
