ref: v3变更,,表结构变更coreId/neId
This commit is contained in:
@@ -61,6 +61,17 @@ func (s AlarmController) List(c *gin.Context) {
|
||||
c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_PARSER, errMsgs))
|
||||
return
|
||||
}
|
||||
|
||||
if query.NeUID != "" {
|
||||
// 查询网元获取IP
|
||||
neInfo := s.neInfoService.FindByNeUid(query.NeUID)
|
||||
if neInfo.ID == 0 || neInfo.NeUid != query.NeUID {
|
||||
c.JSON(200, resp.ErrMsg("neInfo not found"))
|
||||
return
|
||||
}
|
||||
query.NeID = neInfo.ID
|
||||
}
|
||||
|
||||
// 查询数据
|
||||
rows, total := s.alarmService.FindByPage(query)
|
||||
c.JSON(200, resp.OkData(map[string]any{"rows": rows, "total": total}))
|
||||
@@ -99,8 +110,7 @@ func (s AlarmController) Remove(c *gin.Context) {
|
||||
// PUT /clear
|
||||
func (s AlarmController) Clear(c *gin.Context) {
|
||||
var body struct {
|
||||
CoreUID string `json:"coreUid" form:"coreUid" binding:"required"` // 核心网唯一标识
|
||||
Id int64 `json:"id" binding:"required"`
|
||||
ID string `form:"id" json:"id" binding:"required"` // 记录ID 批量多个逗号分隔
|
||||
}
|
||||
if err := c.ShouldBindBodyWithJSON(&body); err != nil {
|
||||
errMsgs := fmt.Sprintf("bind err: %s", resp.FormatBindError(err))
|
||||
@@ -108,10 +118,17 @@ func (s AlarmController) Clear(c *gin.Context) {
|
||||
return
|
||||
}
|
||||
|
||||
// 处理字符转id数组后去重
|
||||
uniqueIDs := parse.RemoveDuplicatesToArray(body.ID, ",")
|
||||
// 转换成int64数组类型
|
||||
ids := make([]int64, 0)
|
||||
for _, v := range uniqueIDs {
|
||||
ids = append(ids, parse.Number(v))
|
||||
}
|
||||
|
||||
clearUser := reqctx.LoginUserToUserName(c)
|
||||
rows, err := s.alarmService.ClearById(
|
||||
body.Id,
|
||||
body.CoreUID,
|
||||
rows, err := s.alarmService.ClearByIds(
|
||||
ids,
|
||||
clearUser,
|
||||
constants.ALARM_CLEAR_TYPE_MANUAL_CLEAR,
|
||||
)
|
||||
@@ -127,9 +144,7 @@ func (s AlarmController) Clear(c *gin.Context) {
|
||||
// PUT /ack
|
||||
func (s AlarmController) Ack(c *gin.Context) {
|
||||
var body struct {
|
||||
CoreUID string `json:"coreUid" form:"coreUid" binding:"required"` // 核心网唯一标识
|
||||
Id int64 `json:"id" binding:"required"`
|
||||
AckState bool `json:"ackState" binding:"omitempty"`
|
||||
ID string `form:"id" json:"id" binding:"required"` // 记录ID 批量多个逗号分隔
|
||||
}
|
||||
if err := c.ShouldBindBodyWithJSON(&body); err != nil {
|
||||
errMsgs := fmt.Sprintf("bind err: %s", resp.FormatBindError(err))
|
||||
@@ -137,10 +152,17 @@ func (s AlarmController) Ack(c *gin.Context) {
|
||||
return
|
||||
}
|
||||
|
||||
// 处理字符转id数组后去重
|
||||
uniqueIDs := parse.RemoveDuplicatesToArray(body.ID, ",")
|
||||
// 转换成int64数组类型
|
||||
ids := make([]int64, 0)
|
||||
for _, v := range uniqueIDs {
|
||||
ids = append(ids, parse.Number(v))
|
||||
}
|
||||
|
||||
ackUser := reqctx.LoginUserToUserName(c)
|
||||
rows, err := s.alarmService.AckById(
|
||||
body.Id,
|
||||
body.CoreUID,
|
||||
rows, err := s.alarmService.AckByIds(
|
||||
ids,
|
||||
ackUser,
|
||||
constants.ALARM_ACK_STATE_ACK,
|
||||
)
|
||||
@@ -156,7 +178,6 @@ func (s AlarmController) Ack(c *gin.Context) {
|
||||
// GET /count/severity
|
||||
func (s AlarmController) CountSeverity(c *gin.Context) {
|
||||
var query struct {
|
||||
CoreUID string `form:"coreUid" binding:"required"` // 核心网唯一标识
|
||||
AlarmStatus string `json:"alarmStatus" form:"alarmStatus" binding:"required,oneof=Clear Active"` // 告警状态
|
||||
}
|
||||
if err := c.ShouldBindQuery(&query); err != nil {
|
||||
@@ -165,7 +186,7 @@ func (s AlarmController) CountSeverity(c *gin.Context) {
|
||||
return
|
||||
}
|
||||
|
||||
data := s.alarmService.CountSeverity(query.CoreUID, query.AlarmStatus)
|
||||
data := s.alarmService.CountSeverity(query.AlarmStatus)
|
||||
c.JSON(200, resp.OkData(data))
|
||||
}
|
||||
|
||||
@@ -174,7 +195,6 @@ func (s AlarmController) CountSeverity(c *gin.Context) {
|
||||
// GET /count/type
|
||||
func (s AlarmController) CountType(c *gin.Context) {
|
||||
var query struct {
|
||||
CoreUID string `form:"coreUid" binding:"required"` // 核心网唯一标识
|
||||
AlarmStatus string `json:"alarmStatus" form:"alarmStatus" binding:"required,oneof=Clear Active"` // 告警状态
|
||||
}
|
||||
if err := c.ShouldBindQuery(&query); err != nil {
|
||||
@@ -183,7 +203,7 @@ func (s AlarmController) CountType(c *gin.Context) {
|
||||
return
|
||||
}
|
||||
|
||||
data := s.alarmService.CountType(query.CoreUID, query.AlarmStatus)
|
||||
data := s.alarmService.CountType(query.AlarmStatus)
|
||||
c.JSON(200, resp.OkData(data))
|
||||
}
|
||||
|
||||
@@ -192,7 +212,6 @@ func (s AlarmController) CountType(c *gin.Context) {
|
||||
// GET /count/top
|
||||
func (s AlarmController) CountTop(c *gin.Context) {
|
||||
var query struct {
|
||||
CoreUID string `form:"coreUid" binding:"required"` // 核心网唯一标识
|
||||
AlarmStatus string `json:"alarmStatus" form:"alarmStatus" binding:"required,oneof=Clear Active"` // 告警状态
|
||||
Top int `json:"top" form:"top" binding:"required"` // 前几
|
||||
}
|
||||
@@ -202,7 +221,7 @@ func (s AlarmController) CountTop(c *gin.Context) {
|
||||
return
|
||||
}
|
||||
|
||||
data := s.alarmService.CountNe(query.CoreUID, query.AlarmStatus, query.Top)
|
||||
data := s.alarmService.CountNe(query.AlarmStatus, query.Top)
|
||||
c.JSON(200, resp.OkData(data))
|
||||
}
|
||||
|
||||
@@ -239,10 +258,17 @@ func (s AlarmController) Export(c *gin.Context) {
|
||||
c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_PARSER, errMsgs))
|
||||
return
|
||||
}
|
||||
// 限制导出数据集
|
||||
if query.PageSize > 10000 {
|
||||
query.PageSize = 10000
|
||||
|
||||
if query.NeUID != "" {
|
||||
// 查询网元获取IP
|
||||
neInfo := s.neInfoService.FindByNeUid(query.NeUID)
|
||||
if neInfo.ID == 0 || neInfo.NeUid != query.NeUID {
|
||||
c.JSON(200, resp.ErrMsg("neInfo not found"))
|
||||
return
|
||||
}
|
||||
query.NeID = neInfo.ID
|
||||
}
|
||||
|
||||
// 查询数据
|
||||
rows, total := s.alarmService.FindByPage(query)
|
||||
if total == 0 {
|
||||
|
||||
@@ -66,9 +66,9 @@ func (s BackupController) FTPInfo(c *gin.Context) {
|
||||
// POST /ftp
|
||||
func (s BackupController) FTPPush(c *gin.Context) {
|
||||
var body struct {
|
||||
Path string `form:"path" binding:"required"` // 路径必须是 BACKUP_DIR 开头的路径
|
||||
Filename string `form:"fileName" binding:"required"`
|
||||
Tag string `form:"tag" binding:"required"` // 标签,用于区分不同的备份文件
|
||||
Path string `json:"path" binding:"required"` // 路径必须是 BACKUP_DIR 开头的路径
|
||||
Filename string `json:"fileName" binding:"required"`
|
||||
Tag string `json:"tag" binding:"required"` // 标签,用于区分不同的备份文件
|
||||
}
|
||||
if err := c.ShouldBindBodyWithJSON(&body); err != nil {
|
||||
errMsgs := fmt.Sprintf("bind err: %s", resp.FormatBindError(err))
|
||||
|
||||
@@ -47,22 +47,22 @@ type KPIController struct {
|
||||
// @Router /ne/data/kpi/data [get]
|
||||
func (s KPIController) KPIData(c *gin.Context) {
|
||||
language := reqctx.AcceptLanguage(c)
|
||||
var querys model.KPIQuery
|
||||
if err := c.ShouldBindQuery(&querys); err != nil {
|
||||
var query model.KPIQuery
|
||||
if err := c.ShouldBindQuery(&query); err != nil {
|
||||
errMsgs := fmt.Sprintf("bind err: %s", resp.FormatBindError(err))
|
||||
c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_PARSER, errMsgs))
|
||||
return
|
||||
}
|
||||
|
||||
// 查询网元获取IP
|
||||
neInfo := s.neInfoService.FindByCoreUidAndNeUid(querys.CoreUID, querys.NeUID)
|
||||
if neInfo.CoreUID != querys.CoreUID || neInfo.NeUID != querys.NeUID {
|
||||
neInfo := s.neInfoService.FindByNeUid(query.NeUID)
|
||||
if neInfo.ID == 0 || neInfo.NeUid != query.NeUID {
|
||||
c.JSON(200, resp.ErrMsg(i18n.TKey(language, "app.common.noNEInfo")))
|
||||
return
|
||||
}
|
||||
|
||||
// 查询数据
|
||||
kpiData := s.kpiReportService.FindData(querys)
|
||||
kpiData := s.kpiReportService.FindData(neInfo.NeType, neInfo.ID, query)
|
||||
c.JSON(200, resp.OkData(kpiData))
|
||||
}
|
||||
|
||||
|
||||
@@ -49,22 +49,22 @@ type KPICController struct {
|
||||
// @Router /ne/data/kpic/data [get]
|
||||
func (s KPICController) KPIData(c *gin.Context) {
|
||||
language := reqctx.AcceptLanguage(c)
|
||||
var querys model.KPICQuery
|
||||
if err := c.ShouldBindQuery(&querys); err != nil {
|
||||
var query model.KPICQuery
|
||||
if err := c.ShouldBindQuery(&query); err != nil {
|
||||
errMsgs := fmt.Sprintf("bind err: %s", resp.FormatBindError(err))
|
||||
c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_PARSER, errMsgs))
|
||||
return
|
||||
}
|
||||
|
||||
// 查询网元获取IP
|
||||
neInfo := s.neInfoService.FindByCoreUidAndNeUid(querys.CoreUID, querys.NeUID)
|
||||
if neInfo.CoreUID != querys.CoreUID || neInfo.NeUID != querys.NeUID {
|
||||
neInfo := s.neInfoService.FindByNeUid(query.NeUID)
|
||||
if neInfo.ID == 0 || neInfo.NeUid != query.NeUID {
|
||||
c.JSON(200, resp.ErrMsg(i18n.TKey(language, "app.common.noNEInfo")))
|
||||
return
|
||||
}
|
||||
|
||||
// 查询数据
|
||||
kpiData := s.kpicReportService.FindData(querys)
|
||||
kpiData := s.kpicReportService.FindData(neInfo.NeType, neInfo.ID, query)
|
||||
c.JSON(200, resp.OkData(kpiData))
|
||||
}
|
||||
|
||||
|
||||
@@ -49,7 +49,6 @@ type NBStateController struct {
|
||||
// @Description Base Station Status List
|
||||
// @Router /nb-state/list [get]
|
||||
func (s NBStateController) List(c *gin.Context) {
|
||||
language := reqctx.AcceptLanguage(c)
|
||||
var query model.NBStateQuery
|
||||
if err := c.ShouldBindQuery(&query); err != nil {
|
||||
errMsgs := fmt.Sprintf("bind err: %s", resp.FormatBindError(err))
|
||||
@@ -57,12 +56,13 @@ func (s NBStateController) List(c *gin.Context) {
|
||||
return
|
||||
}
|
||||
|
||||
// 查询网元信息 rmUID
|
||||
neInfo := s.neInfoService.FindByCoreUidAndNeUid(query.CoreUID, query.NeUID)
|
||||
if neInfo.CoreUID != query.CoreUID || neInfo.NeUID != query.NeUID {
|
||||
c.JSON(200, resp.ErrMsg(i18n.TKey(language, "app.common.noNEInfo")))
|
||||
// 查询网元获取IP
|
||||
neInfo := s.neInfoService.FindByNeUid(query.NeUID)
|
||||
if neInfo.ID == 0 || neInfo.NeUid != query.NeUID {
|
||||
c.JSON(200, resp.ErrMsg("neInfo not found"))
|
||||
return
|
||||
}
|
||||
query.NeID = neInfo.ID
|
||||
|
||||
// 查询数据
|
||||
rows, total := s.nbStateService.FindByPage(query)
|
||||
@@ -85,24 +85,23 @@ func (s NBStateController) List(c *gin.Context) {
|
||||
func (s NBStateController) Export(c *gin.Context) {
|
||||
language := reqctx.AcceptLanguage(c)
|
||||
// 查询结果,根据查询条件结果,单页最大值限制
|
||||
var querys model.NBStateQuery
|
||||
if err := c.ShouldBindBodyWithJSON(&querys); err != nil {
|
||||
var query model.NBStateQuery
|
||||
if err := c.ShouldBindBodyWithJSON(&query); err != nil {
|
||||
errMsgs := fmt.Sprintf("bind err: %s", resp.FormatBindError(err))
|
||||
c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_PARSER, errMsgs))
|
||||
return
|
||||
}
|
||||
// 限制导出数据集
|
||||
if querys.PageSize > 10000 {
|
||||
querys.PageSize = 10000
|
||||
}
|
||||
// 查询网元信息 rmUID
|
||||
neInfo := s.neInfoService.FindByCoreUidAndNeUid(querys.CoreUID, querys.NeUID)
|
||||
if neInfo.CoreUID != querys.CoreUID || neInfo.NeUID != querys.NeUID {
|
||||
c.JSON(200, resp.ErrMsg(i18n.TKey(language, "app.common.noNEInfo")))
|
||||
|
||||
// 查询网元获取IP
|
||||
neInfo := s.neInfoService.FindByNeUid(query.NeUID)
|
||||
if neInfo.ID == 0 || neInfo.NeUid != query.NeUID {
|
||||
c.JSON(200, resp.ErrMsg("neInfo not found"))
|
||||
return
|
||||
}
|
||||
query.NeID = neInfo.ID
|
||||
|
||||
rows, total := s.nbStateService.FindByPage(querys)
|
||||
// 查询数据
|
||||
rows, total := s.nbStateService.FindByPage(query)
|
||||
if total == 0 {
|
||||
// 导出数据记录为空
|
||||
c.JSON(200, resp.ErrMsg(i18n.TKey(language, "app.common.exportEmpty")))
|
||||
|
||||
@@ -46,13 +46,21 @@ type NEStateController struct {
|
||||
// @Description NE Status Record - Memory/CPU/Disk List
|
||||
// @Router /ne-state/list [get]
|
||||
func (s NEStateController) List(c *gin.Context) {
|
||||
var query model.NEStateQuery
|
||||
var query model.NeStateQuery
|
||||
if err := c.ShouldBindQuery(&query); err != nil {
|
||||
errMsgs := fmt.Sprintf("bind err: %s", resp.FormatBindError(err))
|
||||
c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_PARSER, errMsgs))
|
||||
return
|
||||
}
|
||||
|
||||
// 查询网元获取IP
|
||||
neInfo := s.neInfoService.FindByNeUid(query.NeUID)
|
||||
if neInfo.ID == 0 || neInfo.NeUid != query.NeUID {
|
||||
c.JSON(200, resp.ErrMsg("neInfo not found"))
|
||||
return
|
||||
}
|
||||
query.NeID = neInfo.ID
|
||||
|
||||
// 查询数据
|
||||
rows, total := s.neStateService.FindByPage(query)
|
||||
c.JSON(200, resp.OkData(map[string]any{"rows": rows, "total": total}))
|
||||
|
||||
@@ -3,14 +3,13 @@ package model
|
||||
// Alarm 告警记录
|
||||
type Alarm struct {
|
||||
ID int64 `json:"id" gorm:"column:id;primaryKey;autoIncrement"`
|
||||
CoreUID string `json:"coreUid" gorm:"column:core_uid"` // 核心网唯一标识
|
||||
NeUID string `json:"neUid" gorm:"column:ne_uid"` // 网元唯一标识
|
||||
NeType string `json:"neType" gorm:"column:ne_type"` // 网元类型
|
||||
AlarmSeq int64 `json:"alarmSeq" gorm:"column:alarm_seq"` // 告警序号 连续递增
|
||||
NeID int64 `json:"neId" gorm:"column:ne_id" binding:"required"` // 网元ID
|
||||
CreatedTime int64 `json:"createdTime" gorm:"column:created_time"` // 创建时间
|
||||
AlarmSeq int64 `json:"alarmSeq" gorm:"column:alarm_seq"` // 告警序号 同网元类型连续递增
|
||||
AlarmId string `json:"alarmId" gorm:"column:alarm_id"` // 告警ID
|
||||
AlarmTitle string `json:"alarmTitle" gorm:"column:alarm_title"` // 告警标题
|
||||
AlarmCode int64 `json:"alarmCode" gorm:"column:alarm_code"` // 告警状态码
|
||||
EventTime int64 `json:"eventTime" gorm:"column:event_time"` // 事件产生时间
|
||||
EventTime int64 `json:"eventTime" gorm:"column:event_time"` // 产生时间
|
||||
AlarmType string `json:"alarmType" gorm:"column:alarm_type"` // 告警类型
|
||||
OrigSeverity string `json:"origSeverity" gorm:"column:orig_severity"` // 严重程度
|
||||
PerceivedSeverity string `json:"perceivedSeverity" gorm:"column:perceived_severity"` // 告警级别
|
||||
@@ -28,7 +27,12 @@ type Alarm struct {
|
||||
ClearType string `json:"clearType" gorm:"column:clear_type"` // 清除状态
|
||||
ClearTime int64 `json:"clearTime" gorm:"column:clear_time"` // 清除时间
|
||||
ClearUser string `json:"clearUser" gorm:"column:clear_user"` // 清除用户
|
||||
CreatedAt int64 `json:"createdAt" gorm:"column:created_at"` // 记录创建存储毫秒
|
||||
|
||||
// ====== 非数据库字段属性 ======
|
||||
|
||||
NeUid string `json:"neUid,omitempty" gorm:"->"` // 网元唯一标识
|
||||
NeName string `json:"neName,omitempty" gorm:"->"` // 网元名称
|
||||
NeType string `json:"neType,omitempty" gorm:"->"` // 网元类型
|
||||
}
|
||||
|
||||
// TableName 表名称
|
||||
@@ -38,17 +42,16 @@ func (*Alarm) TableName() string {
|
||||
|
||||
// AlarmQuery 告警数据查询参数结构体
|
||||
type AlarmQuery struct {
|
||||
CoreUID string `json:"coreUid" form:"coreUid" binding:"required"` // 核心网唯一标识
|
||||
NeUID string `json:"neUid" form:"neUid"` // 网元唯一标识
|
||||
NeType string `json:"neType" form:"neType"` // 网元类型
|
||||
NeUID string `json:"neUid" form:"neUid"` // 网元唯一标识
|
||||
NeID int64 `json:"neId" form:"neId"` // 网元ID
|
||||
AlarmCode string `json:"alarmCode" form:"alarmCode"`
|
||||
AlarmType string `json:"alarmType" form:"alarmType"`
|
||||
AlarmStatus string `json:"alarmStatus" form:"alarmStatus" binding:"omitempty,oneof=Clear Active"` // 告警状态
|
||||
OrigSeverity string `json:"origSeverity" form:"origSeverity"` // 告警类型
|
||||
BeginTime int64 `json:"beginTime" form:"beginTime"` // 开始时间 查event_time
|
||||
BeginTime int64 `json:"beginTime" form:"beginTime"` // 开始时间 查created_time
|
||||
EndTime int64 `json:"endTime" form:"endTime"`
|
||||
SortField string `json:"sortField" form:"sortField" binding:"omitempty,oneof=event_time id"` // 排序字段,填写结果字段
|
||||
SortOrder string `json:"sortOrder" form:"sortOrder" binding:"omitempty,oneof=asc desc"` // 排序升降序,asc desc
|
||||
SortField string `json:"sortField" form:"sortField" binding:"omitempty,oneof=createdTime id"` // 排序字段,填写结果字段
|
||||
SortOrder string `json:"sortOrder" form:"sortOrder" binding:"omitempty,oneof=asc desc"` // 排序升降序,asc desc
|
||||
PageNum int64 `json:"pageNum" form:"pageNum" binding:"required"`
|
||||
PageSize int64 `json:"pageSize" form:"pageSize" binding:"required"`
|
||||
}
|
||||
|
||||
@@ -3,14 +3,13 @@ package model
|
||||
// AlarmEvent 告警_事件记录表
|
||||
type AlarmEvent struct {
|
||||
ID int64 `json:"id" gorm:"column:id;primaryKey;autoIncrement"`
|
||||
CoreUID string `json:"coreUid" gorm:"column:core_uid"` // 核心网唯一标识
|
||||
NeUID string `json:"neUid" gorm:"column:ne_uid"` // 网元唯一标识
|
||||
NeType string `json:"neType" gorm:"column:ne_type"` // 网元类型
|
||||
NeID int64 `json:"neId" gorm:"column:ne_id" binding:"required"` // 网元ID
|
||||
CreatedTime int64 `json:"createdTime" gorm:"column:created_time"` // 创建时间
|
||||
AlarmSeq int64 `json:"alarmSeq" gorm:"column:alarm_seq"` // 告警序号 连续递增
|
||||
AlarmId string `json:"alarmId" gorm:"column:alarm_id"` // 告警ID
|
||||
AlarmTitle string `json:"alarmTitle" gorm:"column:alarm_title"` // 告警标题
|
||||
AlarmCode int64 `json:"alarmCode" gorm:"column:alarm_code"` // 告警状态码
|
||||
EventTime int64 `json:"eventTime" gorm:"column:event_time"` // 事件产生时间
|
||||
EventTime int64 `json:"eventTime" gorm:"column:event_time"` // 产生时间
|
||||
ObjectUid string `json:"objectUid" gorm:"column:object_uid"` // 对象ID
|
||||
ObjectName string `json:"objectName" gorm:"column:object_name"` // 对象名称
|
||||
ObjectType string `json:"objectType" gorm:"column:object_type"` // 对象类型
|
||||
@@ -22,7 +21,12 @@ type AlarmEvent struct {
|
||||
ClearType string `json:"clearType" gorm:"column:clear_type"` // 清除状态
|
||||
ClearTime int64 `json:"clearTime" gorm:"column:clear_time"` // 清除时间
|
||||
ClearUser string `json:"clearUser" gorm:"column:clear_user"` // 清除用户
|
||||
CreatedAt int64 `json:"createdAt" gorm:"column:created_at"` // 记录创建存储毫秒
|
||||
|
||||
// ====== 非数据库字段属性 ======
|
||||
|
||||
NeUid string `json:"neUid,omitempty" gorm:"->"` // 网元唯一标识
|
||||
NeName string `json:"neName,omitempty" gorm:"->"` // 网元名称
|
||||
NeType string `json:"neType,omitempty" gorm:"->"` // 网元类型
|
||||
}
|
||||
|
||||
// TableName 表名称
|
||||
@@ -32,15 +36,14 @@ func (*AlarmEvent) TableName() string {
|
||||
|
||||
// AlarmEventQuery 告警事件数据查询参数结构体
|
||||
type AlarmEventQuery struct {
|
||||
CoreUID string `json:"coreUid" form:"coreUid" binding:"required"` // 核心网唯一标识
|
||||
NeUID string `json:"neUid" form:"neUid"` // 网元唯一标识
|
||||
NeType string `json:"neType" form:"neType"` // 网元类型
|
||||
NeUID string `json:"neUid" form:"neUid"` // 网元唯一标识
|
||||
NeID int64 `json:"neId" form:"neId"` // 网元ID
|
||||
AlarmCode string `json:"alarmCode" form:"alarmCode"`
|
||||
AlarmStatus string `json:"alarmStatus" form:"alarmStatus" binding:"omitempty,oneof=Clear Active"` // 告警状态
|
||||
BeginTime int64 `json:"beginTime" form:"beginTime"` // 开始时间 查event_time
|
||||
BeginTime int64 `json:"beginTime" form:"beginTime"` // 开始时间 查created_time
|
||||
EndTime int64 `json:"endTime" form:"endTime"`
|
||||
SortField string `json:"sortField" form:"sortField" binding:"omitempty,oneof=event_time id"` // 排序字段,填写结果字段
|
||||
SortOrder string `json:"sortOrder" form:"sortOrder" binding:"omitempty,oneof=asc desc"` // 排序升降序,asc desc
|
||||
SortField string `json:"sortField" form:"sortField" binding:"omitempty,oneof=createdTime eventTime id"` // 排序字段,填写结果字段
|
||||
SortOrder string `json:"sortOrder" form:"sortOrder" binding:"omitempty,oneof=asc desc"` // 排序升降序,asc desc
|
||||
PageNum int64 `json:"pageNum" form:"pageNum" binding:"required"`
|
||||
PageSize int64 `json:"pageSize" form:"pageSize" binding:"required"`
|
||||
}
|
||||
|
||||
@@ -3,21 +3,25 @@ package model
|
||||
// AlarmForwardLog 告警_转发日志记录
|
||||
type AlarmForwardLog struct {
|
||||
ID int64 `json:"id" gorm:"column:id;primaryKey;autoIncrement"`
|
||||
CoreUID string `json:"coreUid" gorm:"column:core_uid"` // 核心网唯一标识
|
||||
NeUID string `json:"neUid" gorm:"column:ne_uid"` // 网元唯一标识
|
||||
NeType string `json:"neType" gorm:"column:ne_type"` // 网元类型
|
||||
AlarmSeq int64 `json:"alarmSeq" gorm:"column:alarm_seq"` // 告警序号 连续递增
|
||||
AlarmId string `json:"alarmId" gorm:"column:alarm_id"` // 告警ID
|
||||
AlarmCode int64 `json:"alarmCode" gorm:"column:alarm_code"` // 告警状态码
|
||||
AlarmTitle string `json:"alarmTitle" gorm:"column:alarm_title"` // 告警标题
|
||||
AlarmStatus string `json:"alarmStatus" gorm:"column:alarm_status"` // 告警状态
|
||||
AlarmType string `json:"alarmType" gorm:"column:alarm_type"` // 告警类型
|
||||
OrigSeverity string `json:"origSeverity" gorm:"column:orig_severity"` // 严重程度
|
||||
EventTime int64 `json:"eventTime" gorm:"column:event_time"` // 事件产生时间
|
||||
CreatedAt int64 `json:"createdAt" gorm:"column:created_at"` // 创建时间
|
||||
Type string `json:"type" gorm:"column:type"` // 转发方式 SMS/EMAIL/SMSC
|
||||
Target string `json:"target" gorm:"column:target"` // 发送目标用户
|
||||
Result string `json:"result" gorm:"column:result"` // 发送结果
|
||||
NeID int64 `json:"neId" gorm:"column:ne_id" binding:"required"` // 网元ID
|
||||
CreatedTime int64 `json:"createdTime" gorm:"column:created_time"` // 创建时间
|
||||
AlarmSeq int64 `json:"alarmSeq" gorm:"column:alarm_seq"` // 告警序号 连续递增
|
||||
AlarmId string `json:"alarmId" gorm:"column:alarm_id"` // 告警ID
|
||||
AlarmCode int64 `json:"alarmCode" gorm:"column:alarm_code"` // 告警状态码
|
||||
AlarmTitle string `json:"alarmTitle" gorm:"column:alarm_title"` // 告警标题
|
||||
AlarmStatus string `json:"alarmStatus" gorm:"column:alarm_status"` // 告警状态
|
||||
AlarmType string `json:"alarmType" gorm:"column:alarm_type"` // 告警类型
|
||||
OrigSeverity string `json:"origSeverity" gorm:"column:orig_severity"` // 严重程度
|
||||
EventTime int64 `json:"eventTime" gorm:"column:event_time"` // 产生时间
|
||||
Type string `json:"type" gorm:"column:type"` // 转发方式 SMS/EMAIL/SMSC
|
||||
Target string `json:"target" gorm:"column:target"` // 发送目标用户
|
||||
Result string `json:"result" gorm:"column:result"` // 发送结果
|
||||
|
||||
// ====== 非数据库字段属性 ======
|
||||
|
||||
NeUid string `json:"neUid,omitempty" gorm:"->"` // 网元唯一标识
|
||||
NeName string `json:"neName,omitempty" gorm:"->"` // 网元名称
|
||||
NeType string `json:"neType,omitempty" gorm:"->"` // 网元类型
|
||||
}
|
||||
|
||||
// TableName 表名称
|
||||
@@ -27,13 +31,12 @@ func (*AlarmForwardLog) TableName() string {
|
||||
|
||||
// AlarmForwardLogQuery 告警转发日志数据查询参数结构体
|
||||
type AlarmForwardLogQuery struct {
|
||||
CoreUID string `json:"coreUid" form:"coreUid" binding:"required"` // 核心网唯一标识
|
||||
NeUID string `json:"neUid" form:"neUid"` // 网元唯一标识
|
||||
NeType string `json:"neType" form:"neType"` // 网元类型
|
||||
BeginTime int64 `json:"beginTime" form:"beginTime"` // 开始时间
|
||||
NeUID string `json:"neUid" form:"neUid"` // 网元唯一标识
|
||||
NeID int64 `json:"neId" form:"neId"` // 网元ID
|
||||
BeginTime int64 `json:"beginTime" form:"beginTime"` // 开始时间 查created_time
|
||||
EndTime int64 `json:"endTime" form:"endTime"`
|
||||
SortField string `json:"sortField" form:"sortField" binding:"omitempty,oneof=event_time id"` // 排序字段,填写结果字段
|
||||
SortOrder string `json:"sortOrder" form:"sortOrder" binding:"omitempty,oneof=asc desc"` // 排序升降序,asc desc
|
||||
SortField string `json:"sortField" form:"sortField" binding:"omitempty,oneof=createdTime eventTime id"` // 排序字段,填写结果字段
|
||||
SortOrder string `json:"sortOrder" form:"sortOrder" binding:"omitempty,oneof=asc desc"` // 排序升降序,asc desc
|
||||
PageNum int64 `json:"pageNum" form:"pageNum" binding:"required"`
|
||||
PageSize int64 `json:"pageSize" form:"pageSize" binding:"required"`
|
||||
}
|
||||
|
||||
@@ -3,18 +3,22 @@ package model
|
||||
// AlarmLog 告警_日志记录
|
||||
type AlarmLog struct {
|
||||
ID int64 `json:"id" gorm:"column:id;primaryKey;autoIncrement"`
|
||||
CoreUID string `json:"coreUid" gorm:"column:core_uid"` // 核心网唯一标识
|
||||
NeUID string `json:"neUid" gorm:"column:ne_uid"` // 网元唯一标识
|
||||
NeType string `json:"neType" gorm:"column:ne_type"` // 网元类型
|
||||
AlarmSeq int64 `json:"alarmSeq" gorm:"column:alarm_seq"` // 告警序号 连续递增
|
||||
AlarmId string `json:"alarmId" gorm:"column:alarm_id"` // 告警ID
|
||||
AlarmCode int64 `json:"alarmCode" gorm:"column:alarm_code"` // 告警状态码
|
||||
AlarmTitle string `json:"alarmTitle" gorm:"column:alarm_title"` // 告警标题
|
||||
AlarmStatus string `json:"alarmStatus" gorm:"column:alarm_status"` // 告警状态
|
||||
AlarmType string `json:"alarmType" gorm:"column:alarm_type"` // 告警类型
|
||||
OrigSeverity string `json:"origSeverity" gorm:"column:orig_severity"` // 严重程度
|
||||
EventTime int64 `json:"eventTime" gorm:"column:event_time"` // 事件产生时间
|
||||
CreatedAt int64 `json:"createdAt" gorm:"column:created_at"` // 创建时间
|
||||
NeID int64 `json:"neId" gorm:"column:ne_id" binding:"required"` // 网元ID
|
||||
CreatedTime int64 `json:"createdTime" gorm:"column:created_time"` // 创建时间
|
||||
AlarmSeq int64 `json:"alarmSeq" gorm:"column:alarm_seq"` // 告警序号 连续递增
|
||||
AlarmId string `json:"alarmId" gorm:"column:alarm_id"` // 告警ID
|
||||
AlarmCode int64 `json:"alarmCode" gorm:"column:alarm_code"` // 告警状态码
|
||||
AlarmTitle string `json:"alarmTitle" gorm:"column:alarm_title"` // 告警标题
|
||||
AlarmStatus string `json:"alarmStatus" gorm:"column:alarm_status"` // 告警状态
|
||||
AlarmType string `json:"alarmType" gorm:"column:alarm_type"` // 告警类型
|
||||
OrigSeverity string `json:"origSeverity" gorm:"column:orig_severity"` // 严重程度
|
||||
EventTime int64 `json:"eventTime" gorm:"column:event_time"` // 产生时间
|
||||
|
||||
// ====== 非数据库字段属性 ======
|
||||
|
||||
NeUid string `json:"neUid,omitempty" gorm:"->"` // 网元唯一标识
|
||||
NeName string `json:"neName,omitempty" gorm:"->"` // 网元名称
|
||||
NeType string `json:"neType,omitempty" gorm:"->"` // 网元类型
|
||||
}
|
||||
|
||||
// TableName 表名称
|
||||
@@ -24,15 +28,14 @@ func (*AlarmLog) TableName() string {
|
||||
|
||||
// AlarmLogQuery 告警日志数据查询参数结构体
|
||||
type AlarmLogQuery struct {
|
||||
CoreUID string `json:"coreUid" form:"coreUid" binding:"required"` // 核心网唯一标识
|
||||
NeUID string `json:"neUid" form:"neUid"` // 网元唯一标识
|
||||
NeType string `json:"neType" form:"neType"` // 网元类型
|
||||
NeID int64 `json:"neId" form:"neId"` // 网元ID
|
||||
AlarmStatus string `json:"alarmStatus" form:"alarmStatus" binding:"omitempty,oneof=Clear Active"` // 告警状态
|
||||
OrigSeverity string `json:"origSeverity" form:"origSeverity"` // 告警类型
|
||||
BeginTime int64 `json:"beginTime" form:"beginTime"` // 开始时间 查event_time
|
||||
BeginTime int64 `json:"beginTime" form:"beginTime"` // 开始时间 查created_time
|
||||
EndTime int64 `json:"endTime" form:"endTime"`
|
||||
SortField string `json:"sortField" form:"sortField" binding:"omitempty,oneof=event_time id"` // 排序字段,填写结果字段
|
||||
SortOrder string `json:"sortOrder" form:"sortOrder" binding:"omitempty,oneof=asc desc"` // 排序升降序,asc desc
|
||||
SortField string `json:"sortField" form:"sortField" binding:"omitempty,oneof=createdTime eventTime id"` // 排序字段,填写结果字段
|
||||
SortOrder string `json:"sortOrder" form:"sortOrder" binding:"omitempty,oneof=asc desc"` // 排序升降序,asc desc
|
||||
PageNum int64 `json:"pageNum" form:"pageNum" binding:"required"`
|
||||
PageSize int64 `json:"pageSize" form:"pageSize" binding:"required"`
|
||||
}
|
||||
|
||||
@@ -22,16 +22,12 @@ func (*KpiCTitle) TableName() string {
|
||||
// KpiCReport 自定义指标报表信息对象
|
||||
type KpiCReport struct {
|
||||
ID int64 `json:"id" gorm:"column:id;primaryKey;autoIncrement"`
|
||||
CoreUID string `json:"coreUid" gorm:"column:core_uid"` // 核心网唯一标识
|
||||
NeUID string `json:"neUid" gorm:"column:ne_uid"` // 网元唯一标识
|
||||
NeType string `json:"neType" gorm:"column:ne_type"` // 网元类型
|
||||
Date string `json:"date" gorm:"column:date"` // Date of the report yyyy-mm-dd hh:mi:ss
|
||||
StartTime string `json:"startTime" gorm:"column:start_time"` // Start time of the report hh:mi:ss
|
||||
EndTime string `json:"endTime" gorm:"column:end_time"` // End time of the report hh:mi:ss
|
||||
Index int64 `json:"index" gorm:"column:index"` // Index of the report
|
||||
Granularity int64 `json:"granularity" gorm:"column:granularity"` // Time granualarity: 5/10/.../60/300 (second)
|
||||
KpiValues string `json:"kpiValues" gorm:"column:kpi_values"` // KPI values JSON String
|
||||
CreatedAt int64 `json:"createdAt" gorm:"column:created_at"` // Creation time
|
||||
NeID int64 `json:"neId" gorm:"column:ne_id" binding:"required"` // 网元ID
|
||||
CreatedTime int64 `json:"createdTime" gorm:"column:created_time"` // 创建时间
|
||||
RecordTime int64 `json:"recordTime" gorm:"column:record_time"` // 记录时间
|
||||
Index int64 `json:"index" gorm:"column:index"` // Index of the report
|
||||
Granularity int64 `json:"granularity" gorm:"column:granularity"` // Time granualarity: 5/10/.../60/300 (second)
|
||||
KpiValues string `json:"kpiValues" gorm:"column:kpi_values"` // KPI values JSON String
|
||||
}
|
||||
|
||||
// TableName 表名称
|
||||
@@ -41,11 +37,9 @@ func (*KpiCReport) TableName() string {
|
||||
|
||||
// KPICQuery 指标查询参数结构体
|
||||
type KPICQuery struct {
|
||||
CoreUID string `json:"coreUid" form:"coreUid" binding:"required"` // 核心网唯一标识
|
||||
NeUID string `json:"neUid" form:"neUid" binding:"required"` // 网元唯一标识
|
||||
NeType string `json:"neType" form:"neType" binding:"required"` // 网元类型
|
||||
BeginTime int64 `form:"beginTime" binding:"required"` // 开始时间戳(毫秒)1739361200999
|
||||
EndTime int64 `form:"endTime" binding:"required"` // 结束时间戳(毫秒)1739361210088
|
||||
NeUID string `json:"neUid" form:"neUid"` // 网元唯一标识
|
||||
BeginTime int64 `form:"beginTime" binding:"required"` // 开始时间戳(毫秒)1739361200999
|
||||
EndTime int64 `form:"endTime" binding:"required"` // 结束时间戳(毫秒)1739361210088
|
||||
Interval int64 `form:"interval" binding:"required,oneof=5 60 300 900 1800 3600"`
|
||||
RmUID string `form:"rmUID"`
|
||||
SortField string `form:"sortField" binding:"omitempty,oneof=timeGroup"`
|
||||
|
||||
@@ -19,16 +19,12 @@ func (*KpiTitle) TableName() string {
|
||||
// KpiReport 指标报表信息对象
|
||||
type KpiReport struct {
|
||||
ID int64 `json:"id" gorm:"column:id;primaryKey;autoIncrement"`
|
||||
CoreUID string `json:"coreUid" gorm:"column:core_uid"` // 核心网唯一标识
|
||||
NeUID string `json:"neUid" gorm:"column:ne_uid"` // 网元唯一标识
|
||||
NeType string `json:"neType" gorm:"column:ne_type"` // 网元类型
|
||||
Date string `json:"date" gorm:"column:date"` // Date of the report yyyy-mm-dd hh:mi:ss
|
||||
StartTime string `json:"startTime" gorm:"column:start_time"` // Start time of the report hh:mi:ss
|
||||
EndTime string `json:"endTime" gorm:"column:end_time"` // End time of the report hh:mi:ss
|
||||
Index int64 `json:"index" gorm:"column:index"` // Index of the report
|
||||
Granularity int64 `json:"granularity" gorm:"column:granularity"` // Time granualarity: 5/10/.../60/300 (second)
|
||||
KpiValues string `json:"kpiValues" gorm:"column:kpi_values"` // KPI values JSON String
|
||||
CreatedAt int64 `json:"createdAt" gorm:"column:created_at"` // Creation time 接收到的timestamp秒级存储毫秒时间戳
|
||||
NeID int64 `json:"neId" gorm:"column:ne_id" binding:"required"` // 网元ID
|
||||
CreatedTime int64 `json:"createdTime" gorm:"column:created_time"` // 创建时间
|
||||
RecordTime int64 `json:"recordTime" gorm:"column:record_time"` // 记录时间
|
||||
Index int64 `json:"index" gorm:"column:index"` // Index of the report
|
||||
Granularity int64 `json:"granularity" gorm:"column:granularity"` // Time granualarity: 5/10/.../60/300 (second)
|
||||
KpiValues string `json:"kpiValues" gorm:"column:kpi_values"` // KPI values JSON String
|
||||
}
|
||||
|
||||
// TableName 表名称
|
||||
@@ -38,11 +34,9 @@ func (*KpiReport) TableName() string {
|
||||
|
||||
// KPIQuery 指标查询参数结构体
|
||||
type KPIQuery struct {
|
||||
CoreUID string `json:"coreUid" form:"coreUid" binding:"required"` // 核心网唯一标识
|
||||
NeUID string `json:"neUid" form:"neUid" binding:"required"` // 网元唯一标识
|
||||
NeType string `json:"neType" form:"neType" binding:"required"` // 网元类型
|
||||
BeginTime int64 `form:"beginTime" binding:"required"` // 开始时间戳(毫秒)1739361200999
|
||||
EndTime int64 `form:"endTime" binding:"required"` // 结束时间戳(毫秒)1739361210088
|
||||
NeUID string `json:"neUid" form:"neUid"` // 网元唯一标识
|
||||
BeginTime int64 `form:"beginTime" binding:"required"` // 开始时间戳(毫秒)1739361200999
|
||||
EndTime int64 `form:"endTime" binding:"required"` // 结束时间戳(毫秒)1739361210088
|
||||
Interval int64 `form:"interval" binding:"required,oneof=5 60 300 900 1800 3600"`
|
||||
SortField string `form:"sortField" binding:"omitempty,oneof=timeGroup"`
|
||||
SortOrder string `form:"sortOrder" binding:"omitempty,oneof=asc desc"`
|
||||
|
||||
@@ -3,16 +3,14 @@ package model
|
||||
// NBState 基站状态记录表 nb_state
|
||||
type NBState struct {
|
||||
ID int64 `json:"id" gorm:"column:id;primaryKey;autoIncrement"`
|
||||
CoreUID string `json:"coreUid" gorm:"column:core_uid"` // 核心网唯一标识
|
||||
NeUID string `json:"neUid" gorm:"column:ne_uid"` // 网元唯一标识
|
||||
NeType string `json:"neType" gorm:"column:ne_type"` // 网元类型
|
||||
CreateTime int64 `json:"createTime" gorm:"column:create_time"` // 创建时间
|
||||
Address string `json:"address" gorm:"column:address"` // 基站IP地址
|
||||
NbName string `json:"nbName" gorm:"column:nb_name"` // 基站设备名称
|
||||
Name string `json:"name" gorm:"column:name"` // 基站名称
|
||||
Position string `json:"position" gorm:"column:position"` // 基站位置
|
||||
State string `json:"state" gorm:"column:state"` // 基站状态 OFF ON
|
||||
Time string `json:"time" gorm:"column:time"` // 状态时间
|
||||
NeID int64 `json:"neId" gorm:"column:ne_id" binding:"required"` // 网元ID
|
||||
CreateTime int64 `json:"createTime" gorm:"column:create_time"` // 创建时间
|
||||
Address string `json:"address" gorm:"column:address"` // 基站IP地址
|
||||
NbName string `json:"nbName" gorm:"column:nb_name"` // 基站设备名称
|
||||
Name string `json:"name" gorm:"column:name"` // 基站名称
|
||||
Position string `json:"position" gorm:"column:position"` // 基站位置
|
||||
State string `json:"state" gorm:"column:state"` // 基站状态 OFF ON
|
||||
Time string `json:"time" gorm:"column:time"` // 状态时间
|
||||
}
|
||||
|
||||
// TableName 表名称
|
||||
@@ -22,14 +20,13 @@ func (*NBState) TableName() string {
|
||||
|
||||
// NBStateQuery 查询参数结构体
|
||||
type NBStateQuery struct {
|
||||
CoreUID string `json:"coreUid" form:"coreUid" binding:"required"` // 核心网唯一标识
|
||||
NeUID string `json:"neUid" form:"neUid" binding:"required"` // 网元唯一标识
|
||||
NeType string `json:"neType" form:"neType"` // 网元类型
|
||||
NeUID string `json:"neUid" form:"neUid" binding:"required"` // 网元唯一标识
|
||||
NeID int64 `json:"neId" form:"neId"` // 网元ID
|
||||
PageNum int64 `json:"pageNum" form:"pageNum" binding:"required"`
|
||||
PageSize int64 `json:"pageSize" form:"pageSize" binding:"required"`
|
||||
Status string `json:"status" form:"status"`
|
||||
StartTime string `json:"startTime" form:"startTime"`
|
||||
EndTime string `json:"endTime" form:"endTime"`
|
||||
StartTime int64 `json:"startTime" form:"startTime"`
|
||||
EndTime int64 `json:"endTime" form:"endTime"`
|
||||
SortField string `json:"sortField" form:"sortField" binding:"omitempty,oneof=id create_time"` // 排序字段,填写结果字段
|
||||
SortOrder string `json:"sortOrder" form:"sortOrder" binding:"omitempty,oneof=asc desc"` // 排序升降序,asc desc
|
||||
}
|
||||
|
||||
@@ -1,37 +1,30 @@
|
||||
package model
|
||||
|
||||
// NEState 网元状态记录表 ne_state
|
||||
type NEState struct {
|
||||
// NeState 网元_状态记录内存/CPU/磁盘
|
||||
type NeState struct {
|
||||
ID int64 `json:"id" gorm:"column:id;primaryKey;autoIncrement"`
|
||||
CoreUID string `json:"coreUid" gorm:"column:core_uid"` // 核心网唯一标识
|
||||
NeUID string `json:"neUid" gorm:"column:ne_uid"` // 网元唯一标识
|
||||
NeType string `json:"neType" gorm:"column:ne_type"` // 网元类型
|
||||
Version string `json:"version" gorm:"column:version"` // 版本
|
||||
Capability int64 `json:"capability" gorm:"column:capability"` // 用户容量
|
||||
SerialNum string `json:"serialNum" gorm:"column:serial_num"` // 序列号
|
||||
ExpiryDate string `json:"expiryDate" gorm:"column:expiry_date"` // 许可证到期日期
|
||||
SysCpuUsage float64 `json:"sysCpuUsage" gorm:"column:sys_cpu_usage"` // cpu使用率-sys
|
||||
SysMemUsage float64 `json:"sysMemUsage" gorm:"column:sys_mem_usage"` // 内存使用率-sys
|
||||
SysDiskUsage float64 `json:"sysDiskUsage" gorm:"column:sys_disk_usage"` // 磁盘使用率-sys
|
||||
NfCpuUsage float64 `json:"nfCpuUsage" gorm:"column:nf_cpu_usage"` // cpu使用率-nf
|
||||
NfMemUsed int64 `json:"nfMemUsed" gorm:"column:nf_mem_used"` // 内存使用KB-nf
|
||||
CreateTime int64 `json:"createTime" gorm:"column:create_time"` // 创建时间
|
||||
NeID int64 `json:"neId" gorm:"column:ne_id" binding:"required"` // 网元ID
|
||||
CreateTime int64 `json:"createTime" gorm:"column:create_time"` // 创建时间
|
||||
SysCpuUsage float64 `json:"sysCpuUsage" gorm:"column:sys_cpu_usage"` // cpu使用率-sys
|
||||
SysMemUsage float64 `json:"sysMemUsage" gorm:"column:sys_mem_usage"` // 内存使用率-sys
|
||||
SysDiskUsage float64 `json:"sysDiskUsage" gorm:"column:sys_disk_usage"` // 磁盘使用率-sys
|
||||
NfCpuUsage float64 `json:"nfCpuUsage" gorm:"column:nf_cpu_usage"` // cpu使用率-nf
|
||||
NfMemUsed int64 `json:"nfMemUsed" gorm:"column:nf_mem_used"` // 内存使用KB-nf
|
||||
}
|
||||
|
||||
// TableName 表名称
|
||||
func (*NEState) TableName() string {
|
||||
func (*NeState) TableName() string {
|
||||
return "ne_state"
|
||||
}
|
||||
|
||||
// NEStateQuery 查询参数结构体
|
||||
type NEStateQuery struct {
|
||||
CoreUID string `json:"coreUid" form:"coreUid" binding:"required"` // 核心网唯一标识
|
||||
NeUID string `json:"neUid" form:"neUid" binding:"required"` // 网元唯一标识
|
||||
NeType string `json:"neType" form:"neType"` // 网元类型
|
||||
type NeStateQuery struct {
|
||||
NeUID string `json:"neUid" form:"neUid" binding:"required"` // 网元唯一标识
|
||||
NeID int64 `json:"neId" form:"neId"` // 网元ID
|
||||
PageNum int64 `json:"pageNum" form:"pageNum" binding:"required"`
|
||||
PageSize int64 `json:"pageSize" form:"pageSize" binding:"required"`
|
||||
BeginTime string `json:"beginTime" form:"beginTime"`
|
||||
EndTime string `json:"endTime" form:"endTime"`
|
||||
BeginTime int64 `json:"beginTime" form:"beginTime"`
|
||||
EndTime int64 `json:"endTime" form:"endTime"`
|
||||
SortField string `json:"sortField" form:"sortField" binding:"omitempty,oneof=id create_time"` // 排序字段,填写结果字段
|
||||
SortOrder string `json:"sortOrder" form:"sortOrder" binding:"omitempty,oneof=asc desc"` // 排序升降序,asc desc
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package repository
|
||||
|
||||
import (
|
||||
"sort"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
@@ -19,14 +20,8 @@ type Alarm struct{}
|
||||
func (r Alarm) SelectByPage(query model.AlarmQuery) ([]model.Alarm, int64) {
|
||||
tx := db.DB("").Model(&model.Alarm{})
|
||||
// 查询条件拼接
|
||||
if query.NeType != "" {
|
||||
tx = tx.Where("ne_type = ?", query.NeType)
|
||||
}
|
||||
if query.NeUID != "" {
|
||||
tx = tx.Where("ne_uid = ?", query.NeUID)
|
||||
}
|
||||
if query.CoreUID != "" {
|
||||
tx = tx.Where("core_uid = ?", query.CoreUID)
|
||||
if query.NeID != 0 {
|
||||
tx = tx.Where("ne_id = ?", query.NeID)
|
||||
}
|
||||
if query.AlarmCode != "" {
|
||||
tx = tx.Where("alarm_code = ?", query.AlarmCode)
|
||||
@@ -40,12 +35,11 @@ func (r Alarm) SelectByPage(query model.AlarmQuery) ([]model.Alarm, int64) {
|
||||
if query.OrigSeverity != "" {
|
||||
tx = tx.Where("orig_severity in (?)", strings.Split(query.OrigSeverity, ","))
|
||||
}
|
||||
|
||||
if query.BeginTime != 0 {
|
||||
tx = tx.Where("event_time >= ?", query.BeginTime)
|
||||
tx = tx.Where("created_time >= ?", query.BeginTime)
|
||||
}
|
||||
if query.EndTime != 0 {
|
||||
tx = tx.Where("event_time <= ?", query.EndTime)
|
||||
tx = tx.Where("created_time <= ?", query.EndTime)
|
||||
}
|
||||
|
||||
// 查询结果
|
||||
@@ -57,38 +51,75 @@ func (r Alarm) SelectByPage(query model.AlarmQuery) ([]model.Alarm, int64) {
|
||||
return rows, total
|
||||
}
|
||||
|
||||
// 排序
|
||||
if query.SortField != "" {
|
||||
sortField := query.SortField
|
||||
if query.SortOrder == "desc" {
|
||||
sortField = sortField + " desc"
|
||||
}
|
||||
tx = tx.Order(sortField)
|
||||
}
|
||||
|
||||
// 查询数据分页
|
||||
pageNum, pageSize := db.PageNumSize(query.PageNum, query.PageSize)
|
||||
tx = tx.Limit(pageSize).Offset(pageSize * pageNum)
|
||||
|
||||
// 关联查询
|
||||
tx = tx.Joins("left join ne_info on ne_info.id = alarm.ne_id")
|
||||
tx = tx.Select("alarm.*, ne_info.ne_name, ne_info.ne_type, ne_info.ne_uid")
|
||||
err := tx.Find(&rows).Error
|
||||
if err != nil {
|
||||
logger.Errorf("query find err => %v", err.Error())
|
||||
return rows, total
|
||||
}
|
||||
|
||||
// 排序
|
||||
r.sortRows(query.SortField, query.SortOrder, rows)
|
||||
return rows, total
|
||||
}
|
||||
|
||||
// sortRows 排序数据集合
|
||||
// sortField 排序字段 支持id createdTime eventTime
|
||||
// sortOrder 排序顺序 升序asc 降序desc
|
||||
func (r Alarm) sortRows(sortField, sortOrder string, rows []model.Alarm) {
|
||||
if sortField == "" {
|
||||
return
|
||||
}
|
||||
sort.SliceStable(rows, func(i, j int) bool {
|
||||
// 支持的排序字段映射
|
||||
fieldGetters := map[string]func(*model.Alarm) any{
|
||||
"id": func(row *model.Alarm) any { return row.ID },
|
||||
"eventTime": func(row *model.Alarm) any { return row.EventTime },
|
||||
"createdTime": func(row *model.Alarm) any { return row.CreatedTime },
|
||||
// 可添加更多支持的字段
|
||||
}
|
||||
|
||||
// 获取字段 getter 函数
|
||||
getter, ok := fieldGetters[sortField]
|
||||
if !ok {
|
||||
// 非法字段,使用默认排序(id升序)
|
||||
return rows[i].ID < rows[j].ID
|
||||
}
|
||||
|
||||
// 获取比较值
|
||||
valI, valJ := getter(&rows[i]), getter(&rows[j])
|
||||
|
||||
// 根据字段类型进行比较
|
||||
switch v := valI.(type) {
|
||||
case int64:
|
||||
if sortOrder == "desc" {
|
||||
return v > valJ.(int64)
|
||||
}
|
||||
return v < valJ.(int64)
|
||||
case string:
|
||||
if sortOrder == "desc" {
|
||||
return v > valJ.(string)
|
||||
}
|
||||
return v < valJ.(string)
|
||||
default:
|
||||
// 不支持的字段类型,使用默认排序
|
||||
return rows[i].ID < rows[j].ID
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
// Select 查询集合
|
||||
func (r Alarm) Select(param model.Alarm) []model.Alarm {
|
||||
tx := db.DB("").Model(&model.Alarm{})
|
||||
// 查询条件拼接
|
||||
if param.NeType != "" {
|
||||
tx = tx.Where("ne_type = ?", param.NeType)
|
||||
}
|
||||
if param.NeUID != "" {
|
||||
tx = tx.Where("ne_uid = ?", param.NeUID)
|
||||
}
|
||||
if param.CoreUID != "" {
|
||||
tx = tx.Where("core_uid = ?", param.CoreUID)
|
||||
if param.NeID != 0 {
|
||||
tx = tx.Where("ne_id = ?", param.NeID)
|
||||
}
|
||||
if param.AlarmCode > 0 {
|
||||
tx = tx.Where("alarm_code = ?", param.AlarmCode)
|
||||
@@ -132,8 +163,8 @@ func (r Alarm) SelectByIds(ids []int64) []model.Alarm {
|
||||
|
||||
// Insert 新增信息 返回新增数据ID
|
||||
func (r Alarm) Insert(param model.Alarm) int64 {
|
||||
if param.CreatedAt == 0 {
|
||||
param.CreatedAt = time.Now().UnixMilli()
|
||||
if param.CreatedTime == 0 {
|
||||
param.CreatedTime = time.Now().UnixMilli()
|
||||
}
|
||||
// 执行插入
|
||||
if err := db.DB("").Create(¶m).Error; err != nil {
|
||||
@@ -151,7 +182,7 @@ func (r Alarm) Update(param model.Alarm) int64 {
|
||||
tx := db.DB("").Model(&model.Alarm{})
|
||||
// 构建查询条件
|
||||
tx = tx.Where("id = ?", param.ID)
|
||||
tx = tx.Omit("id", "created_at")
|
||||
tx = tx.Omit("id", "created_time")
|
||||
// 执行更新
|
||||
if err := tx.Updates(param).Error; err != nil {
|
||||
logger.Errorf("update err => %v", err.Error())
|
||||
@@ -174,9 +205,9 @@ func (r Alarm) DeleteByIds(ids []int64) int64 {
|
||||
}
|
||||
|
||||
// SelectAlarmSeqLast 查询网元告警最后一条序号
|
||||
func (r Alarm) SelectAlarmSeqLast(coreUid, neUid string) int64 {
|
||||
func (r Alarm) SelectAlarmSeqLast(neId int64) int64 {
|
||||
tx := db.DB("").Model(&model.Alarm{})
|
||||
tx = tx.Where("core_uid=? and ne_uid=?", coreUid, neUid)
|
||||
tx = tx.Where("ne_id=?", neId)
|
||||
tx = tx.Select("alarm_seq").Order("alarm_seq DESC")
|
||||
// 查询数据
|
||||
var alarmSeq int64 = 0
|
||||
@@ -188,10 +219,10 @@ func (r Alarm) SelectAlarmSeqLast(coreUid, neUid string) int64 {
|
||||
}
|
||||
|
||||
// GroupTotal 分组统计
|
||||
func (r Alarm) GroupTotal(coreUid, alarmStatus string, group string, limit int) []map[string]any {
|
||||
func (r Alarm) GroupTotal(alarmStatus string, group string, limit int) []map[string]any {
|
||||
tx := db.DB("").Model(&model.Alarm{})
|
||||
tx = tx.Select("count(*) as total", group)
|
||||
tx = tx.Where("core_uid=? and alarm_status=? ", coreUid, alarmStatus)
|
||||
tx = tx.Where("alarm_status=? ", alarmStatus)
|
||||
tx = tx.Group(group).Order("total DESC")
|
||||
// 查询数据
|
||||
var rows []map[string]any = make([]map[string]any, 0)
|
||||
|
||||
@@ -2,6 +2,7 @@ package repository
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"sort"
|
||||
"time"
|
||||
|
||||
"be.ems/src/framework/database/db"
|
||||
@@ -19,14 +20,8 @@ type AlarmEvent struct{}
|
||||
func (r AlarmEvent) SelectByPage(query model.AlarmEventQuery) ([]model.AlarmEvent, int64) {
|
||||
tx := db.DB("").Model(&model.AlarmEvent{})
|
||||
// 查询条件拼接
|
||||
if query.NeType != "" {
|
||||
tx = tx.Where("ne_type = ?", query.NeType)
|
||||
}
|
||||
if query.NeUID != "" {
|
||||
tx = tx.Where("ne_uid = ?", query.NeUID)
|
||||
}
|
||||
if query.CoreUID != "" {
|
||||
tx = tx.Where("core_uid = ?", query.CoreUID)
|
||||
if query.NeID != 0 {
|
||||
tx = tx.Where("ne_id = ?", query.NeID)
|
||||
}
|
||||
if query.AlarmCode != "" {
|
||||
tx = tx.Where("alarm_code like ?", fmt.Sprintf("%s%%", query.AlarmCode))
|
||||
@@ -50,38 +45,75 @@ func (r AlarmEvent) SelectByPage(query model.AlarmEventQuery) ([]model.AlarmEven
|
||||
return rows, total
|
||||
}
|
||||
|
||||
// 排序
|
||||
if query.SortField != "" {
|
||||
sortField := query.SortField
|
||||
if query.SortOrder == "desc" {
|
||||
sortField = sortField + " desc"
|
||||
}
|
||||
tx = tx.Order(sortField)
|
||||
}
|
||||
|
||||
// 查询数据分页
|
||||
pageNum, pageSize := db.PageNumSize(query.PageNum, query.PageSize)
|
||||
tx = tx.Limit(pageSize).Offset(pageSize * pageNum)
|
||||
|
||||
// 关联查询
|
||||
tx = tx.Joins("left join ne_info on ne_info.id = alarm_event.ne_id")
|
||||
tx = tx.Select("alarm_event.*, ne_info.ne_name, ne_info.ne_type, ne_info.ne_uid")
|
||||
err := tx.Find(&rows).Error
|
||||
if err != nil {
|
||||
logger.Errorf("query find err => %v", err.Error())
|
||||
return rows, total
|
||||
}
|
||||
|
||||
// 排序
|
||||
r.sortRows(query.SortField, query.SortOrder, rows)
|
||||
return rows, total
|
||||
}
|
||||
|
||||
// sortRows 排序数据集合
|
||||
// sortField 排序字段 支持id createdTime eventTime
|
||||
// sortOrder 排序顺序 升序asc 降序desc
|
||||
func (r AlarmEvent) sortRows(sortField, sortOrder string, rows []model.AlarmEvent) {
|
||||
if sortField == "" {
|
||||
return
|
||||
}
|
||||
sort.SliceStable(rows, func(i, j int) bool {
|
||||
// 支持的排序字段映射
|
||||
fieldGetters := map[string]func(*model.AlarmEvent) any{
|
||||
"id": func(row *model.AlarmEvent) any { return row.ID },
|
||||
"eventTime": func(row *model.AlarmEvent) any { return row.EventTime },
|
||||
"createdTime": func(row *model.AlarmEvent) any { return row.CreatedTime },
|
||||
// 可添加更多支持的字段
|
||||
}
|
||||
|
||||
// 获取字段 getter 函数
|
||||
getter, ok := fieldGetters[sortField]
|
||||
if !ok {
|
||||
// 非法字段,使用默认排序(id升序)
|
||||
return rows[i].ID < rows[j].ID
|
||||
}
|
||||
|
||||
// 获取比较值
|
||||
valI, valJ := getter(&rows[i]), getter(&rows[j])
|
||||
|
||||
// 根据字段类型进行比较
|
||||
switch v := valI.(type) {
|
||||
case int64:
|
||||
if sortOrder == "desc" {
|
||||
return v > valJ.(int64)
|
||||
}
|
||||
return v < valJ.(int64)
|
||||
case string:
|
||||
if sortOrder == "desc" {
|
||||
return v > valJ.(string)
|
||||
}
|
||||
return v < valJ.(string)
|
||||
default:
|
||||
// 不支持的字段类型,使用默认排序
|
||||
return rows[i].ID < rows[j].ID
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
// Select 查询集合
|
||||
func (r AlarmEvent) Select(param model.AlarmEvent) []model.AlarmEvent {
|
||||
tx := db.DB("").Model(&model.AlarmEvent{})
|
||||
// 查询条件拼接
|
||||
if param.NeType != "" {
|
||||
tx = tx.Where("ne_type = ?", param.NeType)
|
||||
}
|
||||
if param.NeUID != "" {
|
||||
tx = tx.Where("ne_uid = ?", param.NeUID)
|
||||
}
|
||||
if param.CoreUID != "" {
|
||||
tx = tx.Where("core_uid = ?", param.CoreUID)
|
||||
if param.NeID != 0 {
|
||||
tx = tx.Where("ne_id = ?", param.NeID)
|
||||
}
|
||||
if param.AlarmId != "" {
|
||||
tx = tx.Where("alarm_id = ?", param.AlarmId)
|
||||
@@ -120,8 +152,8 @@ func (r AlarmEvent) SelectByIds(ids []int64) []model.AlarmEvent {
|
||||
|
||||
// Insert 新增信息 返回新增数据ID
|
||||
func (r AlarmEvent) Insert(param model.AlarmEvent) int64 {
|
||||
if param.CreatedAt == 0 {
|
||||
param.CreatedAt = time.Now().UnixMilli()
|
||||
if param.CreatedTime == 0 {
|
||||
param.CreatedTime = time.Now().UnixMilli()
|
||||
}
|
||||
// 执行插入
|
||||
if err := db.DB("").Create(¶m).Error; err != nil {
|
||||
@@ -139,7 +171,7 @@ func (r AlarmEvent) Update(param model.AlarmEvent) int64 {
|
||||
tx := db.DB("").Model(&model.AlarmEvent{})
|
||||
// 构建查询条件
|
||||
tx = tx.Where("id = ?", param.ID)
|
||||
tx = tx.Omit("id", "created_at")
|
||||
tx = tx.Omit("id", "created_time")
|
||||
// 执行更新
|
||||
if err := tx.Updates(param).Error; err != nil {
|
||||
logger.Errorf("update err => %v", err.Error())
|
||||
@@ -162,9 +194,9 @@ func (r AlarmEvent) DeleteByIds(ids []int64) int64 {
|
||||
}
|
||||
|
||||
// SelectAlarmEventSeqLast 查询网元告警最后一条序号
|
||||
func (r AlarmEvent) SelectAlarmEventSeqLast(coreUid, neUid string) int64 {
|
||||
func (r AlarmEvent) SelectAlarmEventSeqLast(neID int64) int64 {
|
||||
tx := db.DB("").Model(&model.AlarmEvent{})
|
||||
tx = tx.Where("core_uid=? and ne_uid=?", coreUid, neUid)
|
||||
tx = tx.Where("ne_id=?", neID)
|
||||
tx = tx.Select("alarm_seq").Order("alarm_seq DESC")
|
||||
// 查询数据
|
||||
var AlarmEventSeq int64 = 0
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package repository
|
||||
|
||||
import (
|
||||
"sort"
|
||||
"time"
|
||||
|
||||
"be.ems/src/framework/database/db"
|
||||
@@ -18,20 +19,14 @@ type AlarmForwardLog struct{}
|
||||
func (r AlarmForwardLog) SelectByPage(query model.AlarmForwardLogQuery) ([]model.AlarmForwardLog, int64) {
|
||||
tx := db.DB("").Model(&model.AlarmForwardLog{})
|
||||
// 查询条件拼接
|
||||
if query.NeType != "" {
|
||||
tx = tx.Where("ne_type = ?", query.NeType)
|
||||
}
|
||||
if query.NeUID != "" {
|
||||
tx = tx.Where("ne_uid = ?", query.NeUID)
|
||||
}
|
||||
if query.CoreUID != "" {
|
||||
tx = tx.Where("core_uid = ?", query.CoreUID)
|
||||
if query.NeID != 0 {
|
||||
tx = tx.Where("ne_id = ?", query.NeID)
|
||||
}
|
||||
if query.BeginTime != 0 {
|
||||
tx = tx.Where("created_at >= ?", query.BeginTime)
|
||||
tx = tx.Where("created_time >= ?", query.BeginTime)
|
||||
}
|
||||
if query.EndTime != 0 {
|
||||
tx = tx.Where("created_at <= ?", query.EndTime)
|
||||
tx = tx.Where("created_time <= ?", query.EndTime)
|
||||
}
|
||||
|
||||
// 查询结果
|
||||
@@ -43,26 +38,69 @@ func (r AlarmForwardLog) SelectByPage(query model.AlarmForwardLogQuery) ([]model
|
||||
return rows, total
|
||||
}
|
||||
|
||||
// 排序
|
||||
if query.SortField != "" {
|
||||
sortField := query.SortField
|
||||
if query.SortOrder == "desc" {
|
||||
sortField = sortField + " desc"
|
||||
}
|
||||
tx = tx.Order(sortField)
|
||||
}
|
||||
|
||||
// 查询数据分页
|
||||
pageNum, pageSize := db.PageNumSize(query.PageNum, query.PageSize)
|
||||
tx = tx.Limit(pageSize).Offset(pageSize * pageNum)
|
||||
|
||||
// 关联查询
|
||||
tx = tx.Joins("left join ne_info on ne_info.id = alarm_forward_log.ne_id")
|
||||
tx = tx.Select("alarm_forward_log.*, ne_info.ne_name, ne_info.ne_type, ne_info.ne_uid")
|
||||
err := tx.Find(&rows).Error
|
||||
if err != nil {
|
||||
logger.Errorf("query find err => %v", err.Error())
|
||||
return rows, total
|
||||
}
|
||||
|
||||
// 排序
|
||||
r.sortRows(query.SortField, query.SortOrder, rows)
|
||||
return rows, total
|
||||
}
|
||||
|
||||
// sortRows 排序数据集合
|
||||
// sortField 排序字段 支持id createdTime eventTime
|
||||
// sortOrder 排序顺序 升序asc 降序desc
|
||||
func (r AlarmForwardLog) sortRows(sortField, sortOrder string, rows []model.AlarmForwardLog) {
|
||||
if sortField == "" {
|
||||
return
|
||||
}
|
||||
sort.SliceStable(rows, func(i, j int) bool {
|
||||
// 支持的排序字段映射
|
||||
fieldGetters := map[string]func(*model.AlarmForwardLog) any{
|
||||
"id": func(row *model.AlarmForwardLog) any { return row.ID },
|
||||
"eventTime": func(row *model.AlarmForwardLog) any { return row.EventTime },
|
||||
"createdTime": func(row *model.AlarmForwardLog) any { return row.CreatedTime },
|
||||
// 可添加更多支持的字段
|
||||
}
|
||||
|
||||
// 获取字段 getter 函数
|
||||
getter, ok := fieldGetters[sortField]
|
||||
if !ok {
|
||||
// 非法字段,使用默认排序(id升序)
|
||||
return rows[i].ID < rows[j].ID
|
||||
}
|
||||
|
||||
// 获取比较值
|
||||
valI, valJ := getter(&rows[i]), getter(&rows[j])
|
||||
|
||||
// 根据字段类型进行比较
|
||||
switch v := valI.(type) {
|
||||
case int64:
|
||||
if sortOrder == "desc" {
|
||||
return v > valJ.(int64)
|
||||
}
|
||||
return v < valJ.(int64)
|
||||
case string:
|
||||
if sortOrder == "desc" {
|
||||
return v > valJ.(string)
|
||||
}
|
||||
return v < valJ.(string)
|
||||
default:
|
||||
// 不支持的字段类型,使用默认排序
|
||||
return rows[i].ID < rows[j].ID
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
// SelectByIds 通过ID查询
|
||||
func (r AlarmForwardLog) SelectByIds(ids []int64) []model.AlarmForwardLog {
|
||||
rows := []model.AlarmForwardLog{}
|
||||
@@ -95,8 +133,8 @@ func (r AlarmForwardLog) DeleteByIds(ids []int64) int64 {
|
||||
|
||||
// Insert 新增信息
|
||||
func (r AlarmForwardLog) Insert(param model.AlarmForwardLog) int64 {
|
||||
if param.CreatedAt == 0 {
|
||||
param.CreatedAt = time.Now().UnixMilli()
|
||||
if param.CreatedTime == 0 {
|
||||
param.CreatedTime = time.Now().UnixMilli()
|
||||
}
|
||||
// 执行插入
|
||||
if err := db.DB("").Create(¶m).Error; err != nil {
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package repository
|
||||
|
||||
import (
|
||||
"sort"
|
||||
"time"
|
||||
|
||||
"be.ems/src/framework/database/db"
|
||||
@@ -18,23 +19,17 @@ type AlarmLog struct{}
|
||||
func (r AlarmLog) SelectByPage(query model.AlarmLogQuery) ([]model.AlarmLog, int64) {
|
||||
tx := db.DB("").Model(&model.AlarmLog{})
|
||||
// 查询条件拼接
|
||||
if query.NeType != "" {
|
||||
tx = tx.Where("ne_type = ?", query.NeType)
|
||||
}
|
||||
if query.NeUID != "" {
|
||||
tx = tx.Where("ne_uid = ?", query.NeUID)
|
||||
}
|
||||
if query.CoreUID != "" {
|
||||
tx = tx.Where("core_uid = ?", query.CoreUID)
|
||||
if query.NeID != 0 {
|
||||
tx = tx.Where("ne_id = ?", query.NeID)
|
||||
}
|
||||
if query.AlarmStatus != "" {
|
||||
tx = tx.Where("alarm_status = ?", query.AlarmStatus)
|
||||
}
|
||||
if query.BeginTime != 0 {
|
||||
tx = tx.Where("created_at >= ?", query.BeginTime)
|
||||
tx = tx.Where("created_time >= ?", query.BeginTime)
|
||||
}
|
||||
if query.EndTime != 0 {
|
||||
tx = tx.Where("created_at <= ?", query.EndTime)
|
||||
tx = tx.Where("created_time <= ?", query.EndTime)
|
||||
}
|
||||
|
||||
// 查询结果
|
||||
@@ -46,26 +41,69 @@ func (r AlarmLog) SelectByPage(query model.AlarmLogQuery) ([]model.AlarmLog, int
|
||||
return rows, total
|
||||
}
|
||||
|
||||
// 排序
|
||||
if query.SortField != "" {
|
||||
sortField := query.SortField
|
||||
if query.SortOrder == "desc" {
|
||||
sortField = sortField + " desc"
|
||||
}
|
||||
tx = tx.Order(sortField)
|
||||
}
|
||||
|
||||
// 查询数据分页
|
||||
pageNum, pageSize := db.PageNumSize(query.PageNum, query.PageSize)
|
||||
tx = tx.Limit(pageSize).Offset(pageSize * pageNum)
|
||||
|
||||
// 关联查询
|
||||
tx = tx.Joins("left join ne_info on ne_info.id = alarm_log.ne_id")
|
||||
tx = tx.Select("alarm_log.*, ne_info.ne_name, ne_info.ne_type, ne_info.ne_uid")
|
||||
err := tx.Find(&rows).Error
|
||||
if err != nil {
|
||||
logger.Errorf("query find err => %v", err.Error())
|
||||
return rows, total
|
||||
}
|
||||
|
||||
// 排序
|
||||
r.sortRows(query.SortField, query.SortOrder, rows)
|
||||
return rows, total
|
||||
}
|
||||
|
||||
// sortRows 排序数据集合
|
||||
// sortField 排序字段 支持id createdTime eventTime
|
||||
// sortOrder 排序顺序 升序asc 降序desc
|
||||
func (r AlarmLog) sortRows(sortField, sortOrder string, rows []model.AlarmLog) {
|
||||
if sortField == "" {
|
||||
return
|
||||
}
|
||||
sort.SliceStable(rows, func(i, j int) bool {
|
||||
// 支持的排序字段映射
|
||||
fieldGetters := map[string]func(*model.AlarmLog) any{
|
||||
"id": func(row *model.AlarmLog) any { return row.ID },
|
||||
"eventTime": func(row *model.AlarmLog) any { return row.EventTime },
|
||||
"createdTime": func(row *model.AlarmLog) any { return row.CreatedTime },
|
||||
// 可添加更多支持的字段
|
||||
}
|
||||
|
||||
// 获取字段 getter 函数
|
||||
getter, ok := fieldGetters[sortField]
|
||||
if !ok {
|
||||
// 非法字段,使用默认排序(id升序)
|
||||
return rows[i].ID < rows[j].ID
|
||||
}
|
||||
|
||||
// 获取比较值
|
||||
valI, valJ := getter(&rows[i]), getter(&rows[j])
|
||||
|
||||
// 根据字段类型进行比较
|
||||
switch v := valI.(type) {
|
||||
case int64:
|
||||
if sortOrder == "desc" {
|
||||
return v > valJ.(int64)
|
||||
}
|
||||
return v < valJ.(int64)
|
||||
case string:
|
||||
if sortOrder == "desc" {
|
||||
return v > valJ.(string)
|
||||
}
|
||||
return v < valJ.(string)
|
||||
default:
|
||||
// 不支持的字段类型,使用默认排序
|
||||
return rows[i].ID < rows[j].ID
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
// SelectByIds 通过ID查询
|
||||
func (r AlarmLog) SelectByIds(ids []int64) []model.AlarmLog {
|
||||
rows := []model.AlarmLog{}
|
||||
@@ -98,8 +136,8 @@ func (r AlarmLog) DeleteByIds(ids []int64) int64 {
|
||||
|
||||
// Insert 新增信息
|
||||
func (r AlarmLog) Insert(param model.AlarmLog) int64 {
|
||||
if param.CreatedAt == 0 {
|
||||
param.CreatedAt = time.Now().UnixMilli()
|
||||
if param.CreatedTime == 0 {
|
||||
param.CreatedTime = time.Now().UnixMilli()
|
||||
}
|
||||
// 执行插入
|
||||
if err := db.DB("").Create(¶m).Error; err != nil {
|
||||
|
||||
@@ -18,28 +18,25 @@ var NewKpiCReport = &KpiCReport{}
|
||||
type KpiCReport struct{}
|
||||
|
||||
// SelectGoldKPI 通过网元指标数据信息
|
||||
func (r KpiCReport) SelectKPI(query model.KPICQuery) []model.KpiCReport {
|
||||
func (r KpiCReport) SelectKPI(neType string, neId int64, query model.KPICQuery) []model.KpiCReport {
|
||||
rows := []model.KpiCReport{}
|
||||
if query.NeType == "" {
|
||||
if neType == "" {
|
||||
return rows
|
||||
}
|
||||
|
||||
tx := db.DB("").Model(&model.KpiCReport{})
|
||||
// 表名
|
||||
tableName := fmt.Sprintf("kpi_c_report_%s", strings.ToLower(query.NeType))
|
||||
tableName := fmt.Sprintf("kpi_c_report_%s", strings.ToLower(neType))
|
||||
tx.Table(tableName)
|
||||
// 构建查询条件
|
||||
if query.NeUID != "" {
|
||||
tx = tx.Where("ne_uid = ?", query.NeUID)
|
||||
}
|
||||
if query.CoreUID != "" {
|
||||
tx = tx.Where("core_uid = ?", query.CoreUID)
|
||||
if neId != 0 {
|
||||
tx = tx.Where("ne_id = ?", neId)
|
||||
}
|
||||
if query.BeginTime != 0 {
|
||||
tx = tx.Where("created_at >= ?", query.BeginTime)
|
||||
tx = tx.Where("created_time >= ?", query.BeginTime)
|
||||
}
|
||||
if query.EndTime != 0 {
|
||||
tx = tx.Where("created_at <= ?", query.EndTime)
|
||||
tx = tx.Where("created_time <= ?", query.EndTime)
|
||||
}
|
||||
// 查询数据
|
||||
if err := tx.Find(&rows).Error; err != nil {
|
||||
@@ -47,59 +44,65 @@ func (r KpiCReport) SelectKPI(query model.KPICQuery) []model.KpiCReport {
|
||||
return rows
|
||||
}
|
||||
// 排序
|
||||
if query.SortField != "" {
|
||||
sortField := query.SortField
|
||||
sortOrder := query.SortOrder
|
||||
sort.SliceStable(rows, func(i, j int) bool {
|
||||
// 支持的排序字段映射
|
||||
fieldGetters := map[string]func(*model.KpiCReport) any{
|
||||
"id": func(row *model.KpiCReport) any { return row.ID },
|
||||
"timeGroup": func(row *model.KpiCReport) any { return row.CreatedAt },
|
||||
"createdAt": func(row *model.KpiCReport) any { return row.CreatedAt },
|
||||
// 可添加更多支持的字段
|
||||
}
|
||||
|
||||
// 获取字段 getter 函数
|
||||
getter, ok := fieldGetters[sortField]
|
||||
if !ok {
|
||||
// 非法字段,使用默认排序(id升序)
|
||||
return rows[i].ID < rows[j].ID
|
||||
}
|
||||
|
||||
// 获取比较值
|
||||
valI, valJ := getter(&rows[i]), getter(&rows[j])
|
||||
|
||||
// 根据字段类型进行比较
|
||||
switch v := valI.(type) {
|
||||
case int64:
|
||||
if sortOrder == "desc" {
|
||||
return v > valJ.(int64)
|
||||
}
|
||||
return v < valJ.(int64)
|
||||
case string:
|
||||
if sortOrder == "desc" {
|
||||
return v > valJ.(string)
|
||||
}
|
||||
return v < valJ.(string)
|
||||
default:
|
||||
// 不支持的字段类型,使用默认排序
|
||||
return rows[i].ID < rows[j].ID
|
||||
}
|
||||
})
|
||||
}
|
||||
r.sortRows(query.SortField, query.SortOrder, rows)
|
||||
return rows
|
||||
}
|
||||
|
||||
// sortRows 排序数据集合
|
||||
// sortField 排序字段 支持id timeGroup createdAt
|
||||
// sortOrder 排序顺序 升序asc 降序desc
|
||||
func (r KpiCReport) sortRows(sortField, sortOrder string, rows []model.KpiCReport) {
|
||||
if sortField == "" {
|
||||
return
|
||||
}
|
||||
sort.SliceStable(rows, func(i, j int) bool {
|
||||
// 支持的排序字段映射
|
||||
fieldGetters := map[string]func(*model.KpiCReport) any{
|
||||
"id": func(row *model.KpiCReport) any { return row.ID },
|
||||
"timeGroup": func(row *model.KpiCReport) any { return row.CreatedTime },
|
||||
"createdTime": func(row *model.KpiCReport) any { return row.CreatedTime },
|
||||
// 可添加更多支持的字段
|
||||
}
|
||||
|
||||
// 获取字段 getter 函数
|
||||
getter, ok := fieldGetters[sortField]
|
||||
if !ok {
|
||||
// 非法字段,使用默认排序(id升序)
|
||||
return rows[i].ID < rows[j].ID
|
||||
}
|
||||
|
||||
// 获取比较值
|
||||
valI, valJ := getter(&rows[i]), getter(&rows[j])
|
||||
|
||||
// 根据字段类型进行比较
|
||||
switch v := valI.(type) {
|
||||
case int64:
|
||||
if sortOrder == "desc" {
|
||||
return v > valJ.(int64)
|
||||
}
|
||||
return v < valJ.(int64)
|
||||
case string:
|
||||
if sortOrder == "desc" {
|
||||
return v > valJ.(string)
|
||||
}
|
||||
return v < valJ.(string)
|
||||
default:
|
||||
// 不支持的字段类型,使用默认排序
|
||||
return rows[i].ID < rows[j].ID
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
// Insert 新增信息 返回新增数据ID
|
||||
func (r KpiCReport) Insert(param model.KpiCReport) int64 {
|
||||
if param.NeType == "" {
|
||||
func (r KpiCReport) Insert(neType string, param model.KpiCReport) int64 {
|
||||
if neType == "" {
|
||||
return 0
|
||||
}
|
||||
if param.CreatedAt == 0 {
|
||||
param.CreatedAt = time.Now().UnixMilli()
|
||||
if param.CreatedTime == 0 {
|
||||
param.CreatedTime = time.Now().UnixMilli()
|
||||
}
|
||||
// 表名
|
||||
tableName := fmt.Sprintf("kpi_c_report_%s", strings.ToLower(param.NeType))
|
||||
tableName := fmt.Sprintf("kpi_c_report_%s", strings.ToLower(neType))
|
||||
// 执行插入
|
||||
if err := db.DB("").Table(tableName).Create(¶m).Error; err != nil {
|
||||
logger.Errorf("insert err => %v", err.Error())
|
||||
|
||||
@@ -18,28 +18,25 @@ var NewKpiReport = &KpiReport{}
|
||||
type KpiReport struct{}
|
||||
|
||||
// SelectGoldKPI 通过网元指标数据信息
|
||||
func (r KpiReport) SelectKPI(query model.KPIQuery) []model.KpiReport {
|
||||
func (r KpiReport) SelectKPI(neType string, neId int64, query model.KPIQuery) []model.KpiReport {
|
||||
rows := []model.KpiReport{}
|
||||
if query.NeType == "" {
|
||||
if neType == "" {
|
||||
return rows
|
||||
}
|
||||
|
||||
tx := db.DB("").Model(&model.KpiReport{})
|
||||
// 表名
|
||||
tableName := fmt.Sprintf("kpi_report_%s", strings.ToLower(query.NeType))
|
||||
tableName := fmt.Sprintf("kpi_report_%s", strings.ToLower(neType))
|
||||
tx = tx.Table(tableName)
|
||||
// 构建查询条件
|
||||
if query.NeUID != "" {
|
||||
tx = tx.Where("ne_uid = ?", query.NeUID)
|
||||
}
|
||||
if query.CoreUID != "" {
|
||||
tx = tx.Where("core_uid = ?", query.CoreUID)
|
||||
if neId != 0 {
|
||||
tx = tx.Where("ne_id = ?", neId)
|
||||
}
|
||||
if query.BeginTime != 0 {
|
||||
tx = tx.Where("created_at >= ?", query.BeginTime)
|
||||
tx = tx.Where("created_time >= ?", query.BeginTime)
|
||||
}
|
||||
if query.EndTime != 0 {
|
||||
tx = tx.Where("created_at <= ?", query.EndTime)
|
||||
tx = tx.Where("created_time <= ?", query.EndTime)
|
||||
}
|
||||
// 查询数据
|
||||
if err := tx.Find(&rows).Error; err != nil {
|
||||
@@ -47,59 +44,65 @@ func (r KpiReport) SelectKPI(query model.KPIQuery) []model.KpiReport {
|
||||
return rows
|
||||
}
|
||||
// 排序
|
||||
if query.SortField != "" {
|
||||
sortField := query.SortField
|
||||
sortOrder := query.SortOrder
|
||||
sort.SliceStable(rows, func(i, j int) bool {
|
||||
// 支持的排序字段映射
|
||||
fieldGetters := map[string]func(*model.KpiReport) any{
|
||||
"id": func(row *model.KpiReport) any { return row.ID },
|
||||
"timeGroup": func(row *model.KpiReport) any { return row.CreatedAt },
|
||||
"createdAt": func(row *model.KpiReport) any { return row.CreatedAt },
|
||||
// 可添加更多支持的字段
|
||||
}
|
||||
|
||||
// 获取字段 getter 函数
|
||||
getter, ok := fieldGetters[sortField]
|
||||
if !ok {
|
||||
// 非法字段,使用默认排序(id升序)
|
||||
return rows[i].ID < rows[j].ID
|
||||
}
|
||||
|
||||
// 获取比较值
|
||||
valI, valJ := getter(&rows[i]), getter(&rows[j])
|
||||
|
||||
// 根据字段类型进行比较
|
||||
switch v := valI.(type) {
|
||||
case int64:
|
||||
if sortOrder == "desc" {
|
||||
return v > valJ.(int64)
|
||||
}
|
||||
return v < valJ.(int64)
|
||||
case string:
|
||||
if sortOrder == "desc" {
|
||||
return v > valJ.(string)
|
||||
}
|
||||
return v < valJ.(string)
|
||||
default:
|
||||
// 不支持的字段类型,使用默认排序
|
||||
return rows[i].ID < rows[j].ID
|
||||
}
|
||||
})
|
||||
}
|
||||
r.sortRows(query.SortField, query.SortOrder, rows)
|
||||
return rows
|
||||
}
|
||||
|
||||
// sortRows 排序数据集合
|
||||
// sortField 排序字段 支持id timeGroup createdAt
|
||||
// sortOrder 排序顺序 升序asc 降序desc
|
||||
func (r KpiReport) sortRows(sortField, sortOrder string, rows []model.KpiReport) {
|
||||
if sortField == "" {
|
||||
return
|
||||
}
|
||||
sort.SliceStable(rows, func(i, j int) bool {
|
||||
// 支持的排序字段映射
|
||||
fieldGetters := map[string]func(*model.KpiReport) any{
|
||||
"id": func(row *model.KpiReport) any { return row.ID },
|
||||
"timeGroup": func(row *model.KpiReport) any { return row.CreatedTime },
|
||||
"createdTime": func(row *model.KpiReport) any { return row.CreatedTime },
|
||||
// 可添加更多支持的字段
|
||||
}
|
||||
|
||||
// 获取字段 getter 函数
|
||||
getter, ok := fieldGetters[sortField]
|
||||
if !ok {
|
||||
// 非法字段,使用默认排序(id升序)
|
||||
return rows[i].ID < rows[j].ID
|
||||
}
|
||||
|
||||
// 获取比较值
|
||||
valI, valJ := getter(&rows[i]), getter(&rows[j])
|
||||
|
||||
// 根据字段类型进行比较
|
||||
switch v := valI.(type) {
|
||||
case int64:
|
||||
if sortOrder == "desc" {
|
||||
return v > valJ.(int64)
|
||||
}
|
||||
return v < valJ.(int64)
|
||||
case string:
|
||||
if sortOrder == "desc" {
|
||||
return v > valJ.(string)
|
||||
}
|
||||
return v < valJ.(string)
|
||||
default:
|
||||
// 不支持的字段类型,使用默认排序
|
||||
return rows[i].ID < rows[j].ID
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
// Insert 新增信息 返回新增数据ID
|
||||
func (r KpiReport) Insert(param model.KpiReport) int64 {
|
||||
if param.CoreUID == "" || param.NeUID == "" || param.NeType == "" {
|
||||
func (r KpiReport) Insert(neType string, param model.KpiReport) int64 {
|
||||
if neType == "" {
|
||||
return 0
|
||||
}
|
||||
if param.CreatedAt == 0 {
|
||||
param.CreatedAt = time.Now().UnixMilli()
|
||||
if param.CreatedTime == 0 {
|
||||
param.CreatedTime = time.Now().UnixMilli()
|
||||
}
|
||||
// 表名
|
||||
tableName := fmt.Sprintf("kpi_report_%s", strings.ToLower(param.NeType))
|
||||
tableName := fmt.Sprintf("kpi_report_%s", strings.ToLower(neType))
|
||||
// 执行插入
|
||||
if err := db.DB("").Table(tableName).Create(¶m).Error; err != nil {
|
||||
logger.Errorf("insert err => %v", err.Error())
|
||||
@@ -108,34 +111,19 @@ func (r KpiReport) Insert(param model.KpiReport) int64 {
|
||||
return param.ID
|
||||
}
|
||||
|
||||
// SelectUPF 查询UPF数据 N3上行,N6下行
|
||||
func (r KpiReport) SelectUPF(coreUid, neUid string, beginTime, endTime int64) []model.KpiReport {
|
||||
tx := db.DB("").Model(&model.KpiReport{})
|
||||
// 表名
|
||||
tx = tx.Table("kpi_report_upf")
|
||||
tx = tx.Where("core_uid = ? and ne_uid = ?", coreUid, neUid)
|
||||
tx = tx.Where("created_at >= ?", beginTime)
|
||||
tx = tx.Where("created_at <= ?", endTime)
|
||||
// 查询数据
|
||||
// Select 查询数据
|
||||
func (r KpiReport) Select(neType string, neId int64, beginTime, endTime int64) []model.KpiReport {
|
||||
rows := []model.KpiReport{}
|
||||
if err := tx.Select("kpi_values", "created_at").Find(&rows).Error; err != nil {
|
||||
logger.Errorf("query find err => %v", err.Error())
|
||||
if neType == "" {
|
||||
return rows
|
||||
}
|
||||
return rows
|
||||
}
|
||||
|
||||
// SelectIMS 查询IMS数据
|
||||
func (r KpiReport) SelectIMS(coreUid, neUid string, beginTime, endTime int64) []model.KpiReport {
|
||||
tx := db.DB("").Model(&model.KpiReport{})
|
||||
// 表名
|
||||
tx = tx.Table("kpi_report_ims")
|
||||
tx = tx.Where("core_uid = ? and ne_uid = ?", coreUid, neUid)
|
||||
tx = tx.Where("created_at >= ?", beginTime)
|
||||
tx = tx.Where("created_at <= ?", endTime)
|
||||
tx = tx.Table(fmt.Sprintf("kpi_report_%s", strings.ToLower(neType)))
|
||||
tx = tx.Where("ne_id = ?", neId)
|
||||
tx = tx.Where("created_time >= ? and created_time <= ?", beginTime, endTime)
|
||||
// 查询数据
|
||||
rows := []model.KpiReport{}
|
||||
if err := tx.Select("kpi_values", "created_at").Find(&rows).Error; err != nil {
|
||||
if err := tx.Select("kpi_values", "created_time").Find(&rows).Error; err != nil {
|
||||
logger.Errorf("query find err => %v", err.Error())
|
||||
return rows
|
||||
}
|
||||
|
||||
@@ -18,31 +18,17 @@ type NBState struct{}
|
||||
func (r NBState) SelectByPage(query model.NBStateQuery) ([]model.NBState, int64) {
|
||||
tx := db.DB("").Model(&model.NBState{})
|
||||
// 查询条件拼接
|
||||
if query.NeType != "" {
|
||||
tx = tx.Where("ne_type = ?", query.NeType)
|
||||
}
|
||||
if query.NeUID != "" {
|
||||
tx = tx.Where("ne_uid = ?", query.NeUID)
|
||||
}
|
||||
if query.CoreUID != "" {
|
||||
tx = tx.Where("core_uid = ?", query.CoreUID)
|
||||
if query.NeID != 0 {
|
||||
tx = tx.Where("ne_id = ?", query.NeID)
|
||||
}
|
||||
if query.Status != "" {
|
||||
tx = tx.Where("state = ?", query.Status)
|
||||
}
|
||||
if query.StartTime != "" {
|
||||
startTime := query.StartTime
|
||||
if len(startTime) == 10 {
|
||||
startTime = startTime + "000"
|
||||
}
|
||||
tx = tx.Where("create_time >= ?", startTime)
|
||||
if query.StartTime != 0 {
|
||||
tx = tx.Where("create_time >= ?", query.StartTime)
|
||||
}
|
||||
if query.EndTime != "" {
|
||||
endTime := query.EndTime
|
||||
if len(endTime) == 10 {
|
||||
endTime = endTime + "999"
|
||||
}
|
||||
tx = tx.Where("create_time <= ?", endTime)
|
||||
if query.EndTime != 0 {
|
||||
tx = tx.Where("create_time <= ?", query.EndTime)
|
||||
}
|
||||
|
||||
// 查询结果
|
||||
@@ -54,15 +40,6 @@ func (r NBState) SelectByPage(query model.NBStateQuery) ([]model.NBState, int64)
|
||||
return rows, total
|
||||
}
|
||||
|
||||
// 排序
|
||||
if query.SortField != "" {
|
||||
sortField := query.SortField
|
||||
if query.SortOrder == "desc" {
|
||||
sortField = sortField + " desc"
|
||||
}
|
||||
tx = tx.Order(sortField)
|
||||
}
|
||||
|
||||
// 查询数据分页
|
||||
pageNum, pageSize := db.PageNumSize(query.PageNum, query.PageSize)
|
||||
tx = tx.Limit(pageSize).Offset(pageSize * pageNum)
|
||||
@@ -82,7 +59,11 @@ func (r NBState) SelectByIds(ids []string) []model.NBState {
|
||||
}
|
||||
tx := db.DB("").Model(&model.NBState{})
|
||||
// 构建查询条件
|
||||
tx = tx.Where("id in ?", ids)
|
||||
if len(ids) == 1 {
|
||||
tx = tx.Where("id = ?", ids[0])
|
||||
} else {
|
||||
tx = tx.Where("id in ?", ids)
|
||||
}
|
||||
// 查询数据
|
||||
if err := tx.Find(&rows).Error; err != nil {
|
||||
logger.Errorf("query find err => %v", err.Error())
|
||||
|
||||
@@ -8,58 +8,35 @@ import (
|
||||
"be.ems/src/modules/ne_data/model"
|
||||
)
|
||||
|
||||
// 实例化数据层 NEState 结构体
|
||||
var NewNEState = &NEState{}
|
||||
// 实例化数据层 NeState 结构体
|
||||
var NewNeState = &NeState{}
|
||||
|
||||
// NEState 网元状态记录表 数据层处理
|
||||
type NEState struct{}
|
||||
// NeState 网元状态记录表 数据层处理
|
||||
type NeState struct{}
|
||||
|
||||
// SelectByPage 分页查询集合
|
||||
func (r NEState) SelectByPage(query model.NEStateQuery) ([]model.NEState, int64) {
|
||||
tx := db.DB("").Model(&model.NEState{})
|
||||
func (r NeState) SelectByPage(query model.NeStateQuery) ([]model.NeState, int64) {
|
||||
tx := db.DB("").Model(&model.NeState{})
|
||||
// 查询条件拼接
|
||||
if query.NeType != "" {
|
||||
tx = tx.Where("ne_type = ?", query.NeType)
|
||||
if query.NeID != 0 {
|
||||
tx = tx.Where("ne_id = ?", query.NeID)
|
||||
}
|
||||
if query.NeUID != "" {
|
||||
tx = tx.Where("ne_uid = ?", query.NeUID)
|
||||
if query.BeginTime != 0 {
|
||||
tx = tx.Where("create_time >= ?", query.BeginTime)
|
||||
}
|
||||
if query.CoreUID != "" {
|
||||
tx = tx.Where("core_uid = ?", query.CoreUID)
|
||||
}
|
||||
if query.BeginTime != "" {
|
||||
startTime := query.BeginTime
|
||||
if len(startTime) == 10 {
|
||||
startTime = startTime + "000"
|
||||
}
|
||||
tx = tx.Where("create_time >= ?", startTime)
|
||||
}
|
||||
if query.EndTime != "" {
|
||||
endTime := query.EndTime
|
||||
if len(endTime) == 10 {
|
||||
endTime = endTime + "999"
|
||||
}
|
||||
tx = tx.Where("create_time <= ?", endTime)
|
||||
if query.EndTime != 0 {
|
||||
tx = tx.Where("create_time <= ?", query.EndTime)
|
||||
}
|
||||
|
||||
// 查询结果
|
||||
var total int64 = 0
|
||||
rows := []model.NEState{}
|
||||
rows := []model.NeState{}
|
||||
|
||||
// 查询数量为0直接返回
|
||||
if err := tx.Count(&total).Error; err != nil || total <= 0 {
|
||||
return rows, total
|
||||
}
|
||||
|
||||
// 排序
|
||||
if query.SortField != "" {
|
||||
sortField := query.SortField
|
||||
if query.SortOrder == "desc" {
|
||||
sortField = sortField + " desc"
|
||||
}
|
||||
tx = tx.Order(sortField)
|
||||
}
|
||||
|
||||
// 查询数据分页
|
||||
pageNum, pageSize := db.PageNumSize(query.PageNum, query.PageSize)
|
||||
tx = tx.Limit(pageSize).Offset(pageSize * pageNum)
|
||||
@@ -72,14 +49,18 @@ func (r NEState) SelectByPage(query model.NEStateQuery) ([]model.NEState, int64)
|
||||
}
|
||||
|
||||
// SelectByIds 通过ID查询
|
||||
func (r NEState) SelectByIds(ids []string) []model.NEState {
|
||||
rows := []model.NEState{}
|
||||
func (r NeState) SelectByIds(ids []string) []model.NeState {
|
||||
rows := []model.NeState{}
|
||||
if len(ids) <= 0 {
|
||||
return rows
|
||||
}
|
||||
tx := db.DB("").Model(&model.NEState{})
|
||||
tx := db.DB("").Model(&model.NeState{})
|
||||
// 构建查询条件
|
||||
tx = tx.Where("id in ?", ids)
|
||||
if len(ids) == 1 {
|
||||
tx = tx.Where("id = ?", ids[0])
|
||||
} else {
|
||||
tx = tx.Where("id in ?", ids)
|
||||
}
|
||||
// 查询数据
|
||||
if err := tx.Find(&rows).Error; err != nil {
|
||||
logger.Errorf("query find err => %v", err.Error())
|
||||
@@ -89,12 +70,12 @@ func (r NEState) SelectByIds(ids []string) []model.NEState {
|
||||
}
|
||||
|
||||
// DeleteByTime 删除信息
|
||||
func (r NEState) DeleteByTime(ltTime int64) int64 {
|
||||
func (r NeState) DeleteByTime(ltTime int64) int64 {
|
||||
if ltTime <= 0 {
|
||||
return 0
|
||||
}
|
||||
tx := db.DB("").Where("create_time < ?", ltTime)
|
||||
if err := tx.Delete(&model.NEState{}).Error; err != nil {
|
||||
if err := tx.Delete(&model.NeState{}).Error; err != nil {
|
||||
logger.Errorf("delete err => %v", err.Error())
|
||||
return 0
|
||||
}
|
||||
@@ -102,7 +83,7 @@ func (r NEState) DeleteByTime(ltTime int64) int64 {
|
||||
}
|
||||
|
||||
// Insert 新增信息
|
||||
func (r NEState) Insert(param model.NEState) int64 {
|
||||
func (r NeState) Insert(param model.NeState) int64 {
|
||||
param.CreateTime = time.Now().UnixMilli()
|
||||
// 执行插入
|
||||
if err := db.DB("").Create(¶m).Error; err != nil {
|
||||
|
||||
@@ -12,6 +12,7 @@ import (
|
||||
"be.ems/src/framework/i18n"
|
||||
"be.ems/src/framework/utils/date"
|
||||
"be.ems/src/framework/utils/file"
|
||||
neService "be.ems/src/modules/ne/service"
|
||||
"be.ems/src/modules/ne_data/model"
|
||||
"be.ems/src/modules/ne_data/repository"
|
||||
sysService "be.ems/src/modules/system/service"
|
||||
@@ -64,24 +65,18 @@ func (r Alarm) DeleteByIds(ids []int64) (int64, error) {
|
||||
}
|
||||
|
||||
// FindAlarmSeqLast 查询网元告警最后一条序号
|
||||
func (s Alarm) FindAlarmSeqLast(coreUid, neUid string) int64 {
|
||||
return s.alarmRepository.SelectAlarmSeqLast(coreUid, neUid)
|
||||
func (s Alarm) FindAlarmSeqLast(neId int64) int64 {
|
||||
return s.alarmRepository.SelectAlarmSeqLast(neId)
|
||||
}
|
||||
|
||||
// ClearById 清除告警信息
|
||||
func (r Alarm) ClearById(id int64, coreUid, clearUser, clearType string) (int64, error) {
|
||||
func (r Alarm) ClearByIds(ids []int64, clearUser, clearType string) (int64, error) {
|
||||
// 检查是否存在
|
||||
arr := r.alarmRepository.SelectByIds([]int64{id})
|
||||
if len(arr) != 1 {
|
||||
arr := r.alarmRepository.SelectByIds(ids)
|
||||
if len(arr) != len(ids) {
|
||||
return 0, fmt.Errorf("not match id")
|
||||
}
|
||||
|
||||
for _, v := range arr {
|
||||
if v.CoreUID != coreUid {
|
||||
return 0, fmt.Errorf("data not match, id: %d", v.ID)
|
||||
}
|
||||
}
|
||||
|
||||
var rows int64 = 0
|
||||
for _, v := range arr {
|
||||
// 状态检查AlarmCode变更告警ID
|
||||
@@ -99,19 +94,13 @@ func (r Alarm) ClearById(id int64, coreUid, clearUser, clearType string) (int64,
|
||||
}
|
||||
|
||||
// AckById 确认清除告警信息
|
||||
func (r Alarm) AckById(id int64, coreUid, ackUser, ackState string) (int64, error) {
|
||||
func (r Alarm) AckByIds(ids []int64, ackUser, ackState string) (int64, error) {
|
||||
// 检查是否存在
|
||||
arr := r.alarmRepository.SelectByIds([]int64{id})
|
||||
if len(arr) != 1 {
|
||||
arr := r.alarmRepository.SelectByIds(ids)
|
||||
if len(arr) != len(ids) {
|
||||
return 0, fmt.Errorf("not match id")
|
||||
}
|
||||
|
||||
for _, v := range arr {
|
||||
if v.CoreUID != coreUid {
|
||||
return 0, fmt.Errorf("data not match, id: %d", v.ID)
|
||||
}
|
||||
}
|
||||
|
||||
var rows int64 = 0
|
||||
for _, v := range arr {
|
||||
v.AckState = ackState
|
||||
@@ -123,7 +112,7 @@ func (r Alarm) AckById(id int64, coreUid, ackUser, ackState string) (int64, erro
|
||||
}
|
||||
|
||||
// CountType 告警类别数量
|
||||
func (s Alarm) CountType(coreUid, alarmStatus string) []map[string]any {
|
||||
func (s Alarm) CountType(alarmStatus string) []map[string]any {
|
||||
data := []map[string]any{}
|
||||
alarmTypeArr := []string{
|
||||
oam.ALARM_TYPE_COMMUNICATION_ALARM,
|
||||
@@ -140,7 +129,7 @@ func (s Alarm) CountType(coreUid, alarmStatus string) []map[string]any {
|
||||
}
|
||||
|
||||
// 告警类别数量
|
||||
rows := s.alarmRepository.GroupTotal(coreUid, alarmStatus, "alarm_type", -1)
|
||||
rows := s.alarmRepository.GroupTotal(alarmStatus, "alarm_type", -1)
|
||||
for _, item := range data {
|
||||
for _, v := range rows {
|
||||
str := fmt.Sprint(v["alarm_type"])
|
||||
@@ -154,7 +143,7 @@ func (s Alarm) CountType(coreUid, alarmStatus string) []map[string]any {
|
||||
}
|
||||
|
||||
// CountSeverity 告警级别数量
|
||||
func (s Alarm) CountSeverity(coreUid, alarmStatus string) []map[string]any {
|
||||
func (s Alarm) CountSeverity(alarmStatus string) []map[string]any {
|
||||
data := []map[string]any{}
|
||||
alarmTypeArr := []string{
|
||||
oam.ALARM_SEVERITY_CRITICAL,
|
||||
@@ -170,7 +159,7 @@ func (s Alarm) CountSeverity(coreUid, alarmStatus string) []map[string]any {
|
||||
}
|
||||
|
||||
// 数量
|
||||
rows := s.alarmRepository.GroupTotal(coreUid, alarmStatus, "perceived_severity", -1)
|
||||
rows := s.alarmRepository.GroupTotal(alarmStatus, "perceived_severity", -1)
|
||||
for _, item := range data {
|
||||
for _, v := range rows {
|
||||
str := fmt.Sprint(v["perceived_severity"])
|
||||
@@ -184,8 +173,8 @@ func (s Alarm) CountSeverity(coreUid, alarmStatus string) []map[string]any {
|
||||
}
|
||||
|
||||
// CountNe 告警状态前几排名
|
||||
func (s Alarm) CountNe(coreUid, alarmStatus string, top int) []map[string]any {
|
||||
data := s.alarmRepository.GroupTotal(coreUid, alarmStatus, "ne_type", top)
|
||||
func (s Alarm) CountNe(alarmStatus string, top int) []map[string]any {
|
||||
data := s.alarmRepository.GroupTotal(alarmStatus, "ne_type", top)
|
||||
for _, v := range data {
|
||||
v["neType"] = fmt.Sprint(v["ne_type"])
|
||||
v["total"] = parse.Number(v["total"])
|
||||
@@ -206,19 +195,21 @@ func (r Alarm) ExportXlsx(rows []model.Alarm, fileName, language, alarmStatus st
|
||||
"F1": i18n.TKey(language, "alarm.export.alarmCode"),
|
||||
"G1": i18n.TKey(language, "ne.common.neType"),
|
||||
"H1": i18n.TKey(language, "ne.common.neName"),
|
||||
"I1": i18n.TKey(language, "ne.common.neId"),
|
||||
"I1": i18n.TKey(language, "ne.common.neUid"),
|
||||
}
|
||||
if alarmStatus == "0" {
|
||||
headerCells["J1"] = i18n.TKey(language, "alarm.export.clearUser")
|
||||
headerCells["K1"] = i18n.TKey(language, "alarm.export.clearTime")
|
||||
headerCells["L1"] = i18n.TKey(language, "alarm.export.clearType")
|
||||
}
|
||||
neInfoService := neService.NewNeInfo
|
||||
dictDataService := sysService.NewSysDictData
|
||||
// 读取字典数据 告警原始严重程度
|
||||
dictActiveAlarmType := sysService.NewSysDictData.FindByType("active_alarm_type")
|
||||
dictActiveAlarmType := dictDataService.FindByType("active_alarm_type")
|
||||
// 读取字典数据 告警类型
|
||||
dictActiveClearType := sysService.NewSysDictData.FindByType("active_clear_type")
|
||||
dictActiveClearType := dictDataService.FindByType("active_clear_type")
|
||||
// 读取字典数据 告警确认类型
|
||||
dictActiveAlarmSeverity := sysService.NewSysDictData.FindByType("active_alarm_severity")
|
||||
dictActiveAlarmSeverity := dictDataService.FindByType("active_alarm_severity")
|
||||
// 从第二行开始的数据
|
||||
dataCells := make([]map[string]any, 0)
|
||||
for i, row := range rows {
|
||||
@@ -250,6 +241,7 @@ func (r Alarm) ExportXlsx(rows []model.Alarm, fileName, language, alarmStatus st
|
||||
}
|
||||
eventTimeStr := date.ParseDateToStr(row.EventTime, date.YYYY_MM_DDTHH_MM_SSZ)
|
||||
|
||||
neInfo := neInfoService.FindByNeId(row.NeID)
|
||||
cells := map[string]any{
|
||||
"A" + idx: alarmType,
|
||||
"B" + idx: origSeverity,
|
||||
@@ -257,9 +249,9 @@ func (r Alarm) ExportXlsx(rows []model.Alarm, fileName, language, alarmStatus st
|
||||
"D" + idx: eventTimeStr,
|
||||
"E" + idx: row.AlarmId,
|
||||
"F" + idx: row.AlarmCode,
|
||||
"G" + idx: row.NeType,
|
||||
"H" + idx: row.NeUID,
|
||||
"I" + idx: row.CoreUID,
|
||||
"G" + idx: neInfo.NeType,
|
||||
"H" + idx: neInfo.NeName,
|
||||
"I" + idx: neInfo.NeUid,
|
||||
}
|
||||
if alarmStatus == "0" {
|
||||
clearTimeStr := date.ParseDateToStr(row.ClearTime, date.YYYY_MM_DDTHH_MM_SSZ)
|
||||
|
||||
@@ -57,24 +57,18 @@ func (r AlarmEvent) DeleteByIds(ids []int64) (int64, error) {
|
||||
}
|
||||
|
||||
// FindAlarmEventSeqLast 查询网元告警最后一条序号
|
||||
func (s AlarmEvent) FindAlarmEventSeqLast(coreUid, neUid string) int64 {
|
||||
return s.alarmEventRepository.SelectAlarmEventSeqLast(coreUid, neUid)
|
||||
func (s AlarmEvent) FindAlarmEventSeqLast(neid int64) int64 {
|
||||
return s.alarmEventRepository.SelectAlarmEventSeqLast(neid)
|
||||
}
|
||||
|
||||
// ClearById 清除告警信息
|
||||
func (r AlarmEvent) ClearById(id int64, coreUid, clearUser, clearType string) (int64, error) {
|
||||
func (r AlarmEvent) ClearByIds(ids []int64, clearUser, clearType string) (int64, error) {
|
||||
// 检查是否存在
|
||||
arr := r.alarmEventRepository.SelectByIds([]int64{id})
|
||||
if len(arr) != 1 {
|
||||
arr := r.alarmEventRepository.SelectByIds(ids)
|
||||
if len(arr) != len(ids) {
|
||||
return 0, fmt.Errorf("not match id")
|
||||
}
|
||||
|
||||
for _, v := range arr {
|
||||
if v.CoreUID != coreUid {
|
||||
return 0, fmt.Errorf("data not match, id: %d", v.ID)
|
||||
}
|
||||
}
|
||||
|
||||
var rows int64 = 0
|
||||
for _, v := range arr {
|
||||
v.AlarmStatus = oam.ALARM_STATUS_CLEAR
|
||||
|
||||
@@ -21,15 +21,15 @@ type KpiCReport struct {
|
||||
}
|
||||
|
||||
// FindKPI 通过网元指标数据信息
|
||||
func (s KpiCReport) FindData(query model.KPICQuery) []map[string]any {
|
||||
func (s KpiCReport) FindData(neType string, neId int64, query model.KPICQuery) []map[string]any {
|
||||
// 标题单位映射
|
||||
kpicTitles := s.kpiCReportRepository.SelectKPITitle(query.NeType)
|
||||
kpicTitles := s.kpiCReportRepository.SelectKPITitle(neType)
|
||||
kpicTitleUnitMap := map[string]string{}
|
||||
for _, v := range kpicTitles {
|
||||
kpicTitleUnitMap[v.KpiId] = v.Unit
|
||||
}
|
||||
// 原始数据
|
||||
rows := s.kpiCReportRepository.SelectKPI(query)
|
||||
rows := s.kpiCReportRepository.SelectKPI(neType, neId, query)
|
||||
if len(rows) <= 0 {
|
||||
return []map[string]any{}
|
||||
}
|
||||
@@ -47,11 +47,10 @@ func (s KpiCReport) FindData(query model.KPICQuery) []map[string]any {
|
||||
}
|
||||
|
||||
item := map[string]any{
|
||||
"neType": row.NeType,
|
||||
"neUid": row.NeUID,
|
||||
"coreUID": row.CoreUID,
|
||||
"neType": neType,
|
||||
"neId": row.NeID,
|
||||
"startIndex": row.Index,
|
||||
"timeGroup": row.CreatedAt,
|
||||
"timeGroup": row.CreatedTime,
|
||||
}
|
||||
|
||||
// 遍历 kpiValues 数组
|
||||
@@ -141,8 +140,8 @@ func (s KpiCReport) FindData(query model.KPICQuery) []map[string]any {
|
||||
}
|
||||
|
||||
// Insert 新增信息
|
||||
func (s KpiCReport) Insert(param model.KpiCReport) int64 {
|
||||
return s.kpiCReportRepository.Insert(param)
|
||||
func (s KpiCReport) Insert(neType string, param model.KpiCReport) int64 {
|
||||
return s.kpiCReportRepository.Insert(neType, param)
|
||||
}
|
||||
|
||||
// FindKPITitle 网元对应的指标名称
|
||||
|
||||
@@ -25,9 +25,9 @@ type KpiReport struct {
|
||||
}
|
||||
|
||||
// FindData 通过网元指标数据信息
|
||||
func (s KpiReport) FindData(query model.KPIQuery) []map[string]any {
|
||||
func (s KpiReport) FindData(neType string, neId int64, query model.KPIQuery) []map[string]any {
|
||||
// 原始数据
|
||||
rows := s.kpiReportRepository.SelectKPI(query)
|
||||
rows := s.kpiReportRepository.SelectKPI(neType, neId, query)
|
||||
if len(rows) <= 0 {
|
||||
return []map[string]any{}
|
||||
}
|
||||
@@ -45,11 +45,10 @@ func (s KpiReport) FindData(query model.KPIQuery) []map[string]any {
|
||||
}
|
||||
|
||||
item := map[string]any{
|
||||
"neType": row.NeType,
|
||||
"neUid": row.NeUID,
|
||||
"coreUID": row.CoreUID,
|
||||
"neType": neType,
|
||||
"neId": row.NeID,
|
||||
"startIndex": row.Index,
|
||||
"timeGroup": row.CreatedAt,
|
||||
"timeGroup": row.CreatedTime,
|
||||
}
|
||||
|
||||
// 遍历 kpiValues 数组
|
||||
@@ -132,8 +131,8 @@ func (s KpiReport) FindData(query model.KPIQuery) []map[string]any {
|
||||
}
|
||||
|
||||
// Insert 新增信息
|
||||
func (s KpiReport) Insert(param model.KpiReport) int64 {
|
||||
return s.kpiReportRepository.Insert(param)
|
||||
func (s KpiReport) Insert(neType string, param model.KpiReport) int64 {
|
||||
return s.kpiReportRepository.Insert(neType, param)
|
||||
}
|
||||
|
||||
// FindTitle 网元对应的指标名称
|
||||
@@ -174,7 +173,7 @@ func (r KpiReport) TitleInsert(param model.KpiTitle) int64 {
|
||||
// UPFTodayFlowFind 查询UPF总流量 N3上行 N6下行
|
||||
// day 统计天数
|
||||
// down / 1000 / 1000 单位M
|
||||
func (r KpiReport) UPFTodayFlowFind(neUid string, day int) (int64, int64) {
|
||||
func (r KpiReport) UPFTodayFlowFind(neId int64, day int) (int64, int64) {
|
||||
// 获取当前日期
|
||||
now := time.Now()
|
||||
var upTotal, downTotal int64
|
||||
@@ -182,7 +181,7 @@ func (r KpiReport) UPFTodayFlowFind(neUid string, day int) (int64, int64) {
|
||||
// 查询最近day天的数据
|
||||
for i := 0; i <= day; i++ {
|
||||
dateKey := now.AddDate(0, 0, -i).Format("2006-01-02")
|
||||
key := fmt.Sprintf("%s:UPF_FLOW:%s:%s", constants.CACHE_NE_DATA, neUid, dateKey)
|
||||
key := fmt.Sprintf("%s:UPF_FLOW:%d:%s", constants.CACHE_NE_DATA, neId, dateKey)
|
||||
|
||||
// 读取缓存数据
|
||||
up, err := redis.GetHash("", key, "up")
|
||||
@@ -202,10 +201,10 @@ func (r KpiReport) UPFTodayFlowFind(neUid string, day int) (int64, int64) {
|
||||
}
|
||||
|
||||
// UPFTodayFlow UPF流量今日统计
|
||||
func (r KpiReport) UPFTodayFlowUpdate(neUid string, upValue, downValue int64) error {
|
||||
func (r KpiReport) UPFTodayFlowUpdate(neId int64, upValue, downValue int64) error {
|
||||
// 按日期存储统计数据
|
||||
dateKey := time.Now().Format("2006-01-02")
|
||||
key := fmt.Sprintf("%s:UPF_FLOW:%s:%s", constants.CACHE_NE_DATA, neUid, dateKey)
|
||||
key := fmt.Sprintf("%s:UPF_FLOW:%d:%s", constants.CACHE_NE_DATA, neId, dateKey)
|
||||
|
||||
// 使用HIncrBy实时累加统计值
|
||||
if err := redis.IncrBy("", key, "up", upValue); err != nil {
|
||||
@@ -220,7 +219,7 @@ func (r KpiReport) UPFTodayFlowUpdate(neUid string, upValue, downValue int64) er
|
||||
// UPFTodayFlowLoad UPF上下行数据到redis
|
||||
// day 统计天数
|
||||
func (r KpiReport) UPFTodayFlowLoad(day int) {
|
||||
cacheKeys, _ := redis.GetKeys("", constants.CACHE_NE_INFO+":UPF:*")
|
||||
cacheKeys, _ := redis.GetKeys("", constants.CACHE_NE_DATA+":UPF:*")
|
||||
if len(cacheKeys) == 0 {
|
||||
return
|
||||
}
|
||||
@@ -232,16 +231,16 @@ func (r KpiReport) UPFTodayFlowLoad(day int) {
|
||||
if len(jsonStr) > 7 {
|
||||
json.Unmarshal([]byte(jsonStr), &v)
|
||||
}
|
||||
if v.NeType == "UPF" && v.NeUID != "" {
|
||||
if v.NeType == "UPF" && v.NeUid != "" {
|
||||
// 查询最近day天的数据
|
||||
for i := 0; i <= day; i++ {
|
||||
dateKey := now.AddDate(0, 0, -i).Format("2006-01-02")
|
||||
key := fmt.Sprintf("%s:UPF_FLOW:%s:%s", constants.CACHE_NE_DATA, v.NeUID, dateKey)
|
||||
key := fmt.Sprintf("%s:UPF_FLOW:%s:%s", constants.CACHE_NE_DATA, v.NeUid, dateKey)
|
||||
// 根据传入天数计算时间范围
|
||||
beginTime := now.AddDate(0, 0, -i).Truncate(24 * time.Hour).UnixMilli()
|
||||
endTime := beginTime + 24*60*60*1000 - 1
|
||||
// 查询历史数据
|
||||
rows := r.kpiReportRepository.SelectUPF(v.CoreUID, v.NeUID, beginTime, endTime)
|
||||
rows := r.kpiReportRepository.Select(v.NeType, v.ID, beginTime, endTime)
|
||||
var upTotal, downTotal int64
|
||||
|
||||
// 处理历史数据
|
||||
@@ -283,7 +282,7 @@ func (r KpiReport) UPFTodayFlowLoad(day int) {
|
||||
|
||||
// IMSBusyHour IMS忙时流量统计
|
||||
// SCSCF.06呼叫尝试次数 SCSCF.09呼叫成功次数
|
||||
func (r KpiReport) IMSBusyHour(coreUid string, neUid string, timestamp int64) []map[string]any {
|
||||
func (r KpiReport) IMSBusyHour(neType string, neId int64, timestamp int64) []map[string]any {
|
||||
t := time.UnixMilli(timestamp)
|
||||
beginTime := t
|
||||
endTime := t
|
||||
@@ -300,14 +299,14 @@ func (r KpiReport) IMSBusyHour(coreUid string, neUid string, timestamp int64) []
|
||||
endTime = beginTime.Add(time.Hour - time.Millisecond)
|
||||
}
|
||||
// 转换为毫秒级时间戳
|
||||
rows := r.kpiReportRepository.SelectIMS(coreUid, neUid, beginTime.UnixMilli(), endTime.UnixMilli())
|
||||
rows := r.kpiReportRepository.Select(neType, neId, beginTime.UnixMilli(), endTime.UnixMilli())
|
||||
|
||||
// 创建一个map来存储按时间段合并后的数据
|
||||
timeGroup := make(map[int64]map[string]int64)
|
||||
// 遍历每个数据项
|
||||
for _, row := range rows {
|
||||
// 将毫秒时间戳转换为小时级时间戳(保留到小时的起始毫秒)
|
||||
timeHour := row.CreatedAt / 3600000 * 3600000 // 1小时 = 3600000毫秒
|
||||
timeHour := row.CreatedTime / 3600000 * 3600000 // 1小时 = 3600000毫秒
|
||||
|
||||
// 解析 JSON 字符串为 map
|
||||
var kpiValues []map[string]any
|
||||
@@ -357,20 +356,20 @@ type TrafficData struct {
|
||||
}
|
||||
|
||||
// IMSBusyWeek IMS忙时流量统计 周
|
||||
func (r KpiReport) IMSBusyWeek(coreUid string, neUid string, weekStart, weekEnd int64) map[string]any {
|
||||
func (r KpiReport) IMSBusyWeek(neType string, neId int64, weekStart, weekEnd int64) map[string]any {
|
||||
weekStartTime := time.UnixMilli(weekStart)
|
||||
weekEndTime := time.UnixMilli(weekEnd)
|
||||
|
||||
// 1. 获取一周内每小时的呼叫数据
|
||||
// 转换为毫秒级时间戳
|
||||
rows := r.kpiReportRepository.SelectIMS(coreUid, neUid, weekStartTime.UnixMilli(), weekEndTime.UnixMilli())
|
||||
rows := r.kpiReportRepository.Select(neType, neId, weekStartTime.UnixMilli(), weekEndTime.UnixMilli())
|
||||
|
||||
// 创建一个map来存储按时间段合并后的数据
|
||||
timeGroup := make(map[int64]map[string]int64)
|
||||
// 遍历每个数据项
|
||||
for _, row := range rows {
|
||||
// 将毫秒时间戳转换为小时级时间戳(保留到小时的起始毫秒)
|
||||
timeHour := row.CreatedAt / 3600000 * 3600000 // 1小时 = 3600000毫秒
|
||||
timeHour := row.CreatedTime / 3600000 * 3600000 // 1小时 = 3600000毫秒
|
||||
|
||||
// 解析 JSON 字符串为 map
|
||||
var kpiValues []map[string]any
|
||||
|
||||
@@ -7,21 +7,21 @@ import (
|
||||
|
||||
// 实例化数据层 NEState 结构体
|
||||
var NewNEState = &NEState{
|
||||
neStateRepository: repository.NewNEState,
|
||||
neStateRepository: repository.NewNeState,
|
||||
}
|
||||
|
||||
// NEState 网元状态记录表 服务层处理
|
||||
type NEState struct {
|
||||
neStateRepository *repository.NEState // 网元状态记录信息
|
||||
neStateRepository *repository.NeState // 网元状态记录信息
|
||||
}
|
||||
|
||||
// FindByPage 根据条件分页查询
|
||||
func (r NEState) FindByPage(query model.NEStateQuery) ([]model.NEState, int64) {
|
||||
func (r NEState) FindByPage(query model.NeStateQuery) ([]model.NeState, int64) {
|
||||
return r.neStateRepository.SelectByPage(query)
|
||||
}
|
||||
|
||||
// Insert 插入数据
|
||||
func (r NEState) Insert(item model.NEState) int64 {
|
||||
func (r NEState) Insert(item model.NeState) int64 {
|
||||
return r.neStateRepository.Insert(item)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user