72 lines
2.8 KiB
Go
72 lines
2.8 KiB
Go
package kpi_c_report
|
||
|
||
import (
|
||
"database/sql/driver"
|
||
"encoding/json"
|
||
"fmt"
|
||
"time"
|
||
)
|
||
|
||
type KpiCVal struct {
|
||
KPIID string `json:"kpi_id" gorm:"column:kpi_id"`
|
||
Value float64 `json:"value" gorm:"column:value"`
|
||
Err string `json:"err" gorm:"column:err"`
|
||
}
|
||
|
||
type KpiCValues []KpiCVal
|
||
|
||
type KpiCReport struct {
|
||
ID int `gorm:"column:id;primary_key;auto_increment" json:"id"`
|
||
NeType *string `gorm:"column:ne_type;default:NULL" json:"neType,omitempty"`
|
||
NeName *string `gorm:"column:ne_name;default:" json:"neName,omitempty"`
|
||
RmUID *string `gorm:"column:rm_uid;default:NULL" json:"rmUid,omitempty"`
|
||
Date string `gorm:"column:date" json:"date"` // time.Time `gorm:"column:date" json:"date"`
|
||
StartTime *string `gorm:"column:start_time;default:NULL" json:"startTime,omitempty"`
|
||
EndTime *string `gorm:"column:end_time;default:NULL" json:"endTime,omitempty"`
|
||
Index int16 `gorm:"column:index" json:"index"`
|
||
Granularity *int8 `gorm:"column:granularity;default:60" json:"granularity,omitempty"` //Time granualarity: 5/10/.../60/300 (second)
|
||
KpiValues KpiCValues `gorm:"column:kpi_values;type:json" json:"kpiValues,omitempty"`
|
||
CreatedAt *time.Time `gorm:"column:created_at;default:current_timestamp()" json:"createdAt,omitempty"`
|
||
}
|
||
|
||
type KpiCReportQuery struct {
|
||
NeType string `json:"neType" form:"neType" binding:"required"`
|
||
NeID string `json:"neId" form:"neId" binding:"required"`
|
||
RmUID string `json:"rmUID" form:"rmUID"`
|
||
StartTime string `json:"startTime" form:"startTime"`
|
||
EndTime string `json:"endTime" form:"endTime"`
|
||
UserName string `json:"userName" form:"userName"`
|
||
SortField string `json:"sortField" form:"sortField" binding:"omitempty,oneof=created_at"` // 排序字段,填写结果字段
|
||
SortOrder string `json:"sortOrder" form:"sortOrder" binding:"omitempty,oneof=asc desc"` // 排序升降序,asc desc
|
||
PageNum int `json:"pageNum" form:"pageNum"`
|
||
PageSize int `json:"pageSize" form:"pageSize"`
|
||
}
|
||
|
||
type KpiCReport2FE struct {
|
||
NeType string `json:"neType" gorm:"column:ne_type"`
|
||
NeId string `json:"neId"`
|
||
NeName string `json:"neName" gorm:"column:ne_name"`
|
||
RmUID string `json:"rmUid" gorm:"column:rm_uid"`
|
||
TimeGroup string `json:"timeGroup"`
|
||
StartIndex int16 `json:"startIndex" gorm:"column:index"`
|
||
Granularity int8 `json:"granularity" gorm:"column:granularity"`
|
||
}
|
||
|
||
func TableName() string {
|
||
return "kpi_c_report"
|
||
}
|
||
|
||
// 将 KpiCValues 转换为 JSON 字节
|
||
func (k KpiCValues) Value() (driver.Value, error) {
|
||
return json.Marshal(k)
|
||
}
|
||
|
||
// 从字节中扫描 KpiCValues
|
||
func (k *KpiCValues) Scan(value interface{}) error {
|
||
b, ok := value.([]byte)
|
||
if !ok {
|
||
return fmt.Errorf("failed to scan value: %v", value)
|
||
}
|
||
return json.Unmarshal(b, k)
|
||
}
|