add: kpiC report 2 FE
This commit is contained in:
@@ -32,6 +32,13 @@ func (k *KpiCReport) Get(c *gin.Context) {
|
|||||||
tableName := TableName() + "_" + strings.ToLower(querys.NeType)
|
tableName := TableName() + "_" + strings.ToLower(querys.NeType)
|
||||||
dborm := datasource.DefaultDB().Table(tableName)
|
dborm := datasource.DefaultDB().Table(tableName)
|
||||||
|
|
||||||
|
if querys.NeID != "" {
|
||||||
|
conditions = append(conditions, "rm_uid = (select n.rm_uid from ne_info n where n.ne_type=? and n.ne_id=? and n.status=1)")
|
||||||
|
params = append(params, querys.NeType, querys.NeID)
|
||||||
|
} else {
|
||||||
|
c.JSON(http.StatusBadRequest, services.ErrResp("Not found required parameter NE ID"))
|
||||||
|
return
|
||||||
|
}
|
||||||
if querys.StartTime != "" {
|
if querys.StartTime != "" {
|
||||||
conditions = append(conditions, "created_at >= ?")
|
conditions = append(conditions, "created_at >= ?")
|
||||||
params = append(params, querys.StartTime)
|
params = append(params, querys.StartTime)
|
||||||
@@ -70,6 +77,94 @@ func (k *KpiCReport) Get(c *gin.Context) {
|
|||||||
//c.JSON(http.StatusOK, reports)
|
//c.JSON(http.StatusOK, reports)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (k *KpiCReport) GetReport2FE(c *gin.Context) {
|
||||||
|
var results []KpiCReport
|
||||||
|
|
||||||
|
var conditions []string
|
||||||
|
var params []any
|
||||||
|
|
||||||
|
var querys KpiCReportQuery
|
||||||
|
if err := c.ShouldBindQuery(&querys); err != nil {
|
||||||
|
c.JSON(http.StatusBadRequest, services.ErrResp(err.Error()))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// construct condition to get
|
||||||
|
if querys.NeType != "" {
|
||||||
|
conditions = append(conditions, "ne_type = ?")
|
||||||
|
params = append(params, strings.ToUpper(querys.NeType))
|
||||||
|
} else {
|
||||||
|
c.JSON(http.StatusBadRequest, services.ErrResp("Not found required parameter NE type"))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
tableName := TableName() + "_" + strings.ToLower(querys.NeType)
|
||||||
|
dborm := datasource.DefaultDB().Table(tableName)
|
||||||
|
|
||||||
|
if querys.NeID != "" {
|
||||||
|
conditions = append(conditions, "rm_uid = (select n.rm_uid from ne_info n where n.ne_type=? and n.ne_id=? and n.status=1)")
|
||||||
|
params = append(params, querys.NeType, querys.NeID)
|
||||||
|
} else {
|
||||||
|
c.JSON(http.StatusBadRequest, services.ErrResp("Not found required parameter NE ID"))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if querys.StartTime != "" {
|
||||||
|
conditions = append(conditions, "created_at >= ?")
|
||||||
|
params = append(params, querys.StartTime)
|
||||||
|
}
|
||||||
|
if querys.EndTime != "" {
|
||||||
|
conditions = append(conditions, "created_at <= ?")
|
||||||
|
params = append(params, querys.EndTime)
|
||||||
|
}
|
||||||
|
|
||||||
|
whereSql := ""
|
||||||
|
if len(conditions) > 0 {
|
||||||
|
whereSql += strings.Join(conditions, " and ")
|
||||||
|
dborm = dborm.Where(whereSql, params...)
|
||||||
|
}
|
||||||
|
// page number and size
|
||||||
|
if pageSize := querys.PageSize; pageSize > 0 {
|
||||||
|
dborm = dborm.Limit(pageSize)
|
||||||
|
if pageNum := querys.PageNum; pageNum > 0 {
|
||||||
|
dborm = dborm.Offset((pageNum - 1) * pageSize)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// order by
|
||||||
|
if sortField, sortOrder := querys.SortField, querys.SortOrder; sortField != "" && sortOrder != "" {
|
||||||
|
orderBy := fmt.Sprintf("%s %s", sortField, sortOrder)
|
||||||
|
dborm = dborm.Order(orderBy)
|
||||||
|
}
|
||||||
|
|
||||||
|
//err := datasource.DefaultDB().Table(tableName).Where(whereSql, params...).Find(&reports).Error
|
||||||
|
err := dborm.Find(&results).Error
|
||||||
|
if err != nil {
|
||||||
|
c.JSON(http.StatusInternalServerError, services.ErrResp(err.Error()))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
var reports []map[string]any
|
||||||
|
for _, r := range results {
|
||||||
|
report := map[string]any{
|
||||||
|
// kip_id ...
|
||||||
|
"neType": *r.NeType,
|
||||||
|
"neId": querys.NeID,
|
||||||
|
"neName": *r.NeName,
|
||||||
|
"rmUID": *r.RmUID,
|
||||||
|
"startIndex": r.Index,
|
||||||
|
"timeGroup": r.Date[:10] + " " + *r.StartTime,
|
||||||
|
"createdAt": r.CreatedAt,
|
||||||
|
"granularity": r.Granularity,
|
||||||
|
"tenantID": r.TenantID,
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, k := range r.KpiValues {
|
||||||
|
report[k.KPIID] = k.Value
|
||||||
|
}
|
||||||
|
reports = append(reports, report)
|
||||||
|
}
|
||||||
|
c.JSON(http.StatusOK, services.DataResp(reports))
|
||||||
|
}
|
||||||
|
|
||||||
func (k *KpiCReport) GetTotalList(c *gin.Context) {
|
func (k *KpiCReport) GetTotalList(c *gin.Context) {
|
||||||
var reports []KpiCReport
|
var reports []KpiCReport
|
||||||
var conditions []string
|
var conditions []string
|
||||||
|
|||||||
@@ -32,6 +32,7 @@ type KpiCReport struct {
|
|||||||
|
|
||||||
type KpiCReportQuery struct {
|
type KpiCReportQuery struct {
|
||||||
NeType string `json:"neType" form:"neType" binding:"required"`
|
NeType string `json:"neType" form:"neType" binding:"required"`
|
||||||
|
NeID string `json:"neId" form:"neId" binding:"required"`
|
||||||
RmUID string `json:"rmUID" form:"rmUID"`
|
RmUID string `json:"rmUID" form:"rmUID"`
|
||||||
StartTime string `json:"startTime" form:"startTime"`
|
StartTime string `json:"startTime" form:"startTime"`
|
||||||
EndTime string `json:"endTime" form:"endTime"`
|
EndTime string `json:"endTime" form:"endTime"`
|
||||||
@@ -43,6 +44,17 @@ type KpiCReportQuery struct {
|
|||||||
PageSize int `json:"pageSize" form:"pageSize"`
|
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"`
|
||||||
|
TenantID string `json:"tenantID" gorm:"column:tenant_id"`
|
||||||
|
}
|
||||||
|
|
||||||
func TableName() string {
|
func TableName() string {
|
||||||
return "kpi_c_report"
|
return "kpi_c_report"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,6 +12,10 @@ func Register(r *gin.RouterGroup) {
|
|||||||
{
|
{
|
||||||
var k *KpiCReport
|
var k *KpiCReport
|
||||||
pmKPIC.GET("/report",
|
pmKPIC.GET("/report",
|
||||||
|
middleware.PreAuthorize(nil),
|
||||||
|
k.GetReport2FE,
|
||||||
|
)
|
||||||
|
pmKPIC.GET("/report/list",
|
||||||
middleware.PreAuthorize(nil),
|
middleware.PreAuthorize(nil),
|
||||||
k.Get,
|
k.Get,
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -292,6 +292,21 @@ func PostKPIReportFromNF(w http.ResponseWriter, r *http.Request) {
|
|||||||
TenantID: &kpiData.TenantID,
|
TenantID: &kpiData.TenantID,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 发送到匹配的网元
|
||||||
|
neInfo := neService.NewNeInfoImpl.SelectNeInfoByRmuid(kpiData.RmUid)
|
||||||
|
// custom kpi report to FE
|
||||||
|
kpiCEvent := map[string]any{
|
||||||
|
// kip_id ...
|
||||||
|
"neType": kpiData.NEType,
|
||||||
|
"neId": neInfo.NeId,
|
||||||
|
"neName": kpiData.NEName,
|
||||||
|
"rmUID": kpiData.RmUid,
|
||||||
|
"startIndex": kpiData.Index,
|
||||||
|
"timeGroup": kpiData.Date[:10] + " " + kpiData.StartTime,
|
||||||
|
"createdAt": kpiData.CreatedAt,
|
||||||
|
"granularity": kpiData.Granularity,
|
||||||
|
"tenantID": kpiData.TenantID,
|
||||||
|
}
|
||||||
kpiCList := kpi_c_title.GetActiveKPICList(kpiData.NEType)
|
kpiCList := kpi_c_title.GetActiveKPICList(kpiData.NEType)
|
||||||
for _, k := range kpiCList {
|
for _, k := range kpiCList {
|
||||||
result, err := evaluate.CalcExpr(*k.Expression, kpiValMap)
|
result, err := evaluate.CalcExpr(*k.Expression, kpiValMap)
|
||||||
@@ -305,18 +320,19 @@ func PostKPIReportFromNF(w http.ResponseWriter, r *http.Request) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
report.KpiValues = append(report.KpiValues, *kpiCVal)
|
report.KpiValues = append(report.KpiValues, *kpiCVal)
|
||||||
|
|
||||||
|
// set KPIC event kpiid and value
|
||||||
|
kpiCEvent[kpiCVal.KPIID] = kpiCVal.Value
|
||||||
}
|
}
|
||||||
|
|
||||||
// KPI自定义指标入库
|
// KPI自定义指标入库
|
||||||
kpi_c_report.InsertKpiCReport(kpiData.NEType, report)
|
kpi_c_report.InsertKpiCReport(kpiData.NEType, report)
|
||||||
|
|
||||||
// 发送到匹配的网元
|
|
||||||
neInfo := neService.NewNeInfoImpl.SelectNeInfoByRmuid(kpiData.RmUid)
|
|
||||||
if neInfo.RmUID == kpiData.RmUid {
|
if neInfo.RmUID == kpiData.RmUid {
|
||||||
// 推送到ws订阅组
|
// 推送到ws订阅组
|
||||||
wsService.NewWSSendImpl.ByGroupID(fmt.Sprintf("%s%s_%s", wsService.GROUP_KPI, neInfo.NeType, neInfo.NeId), kpiEvent)
|
wsService.NewWSSendImpl.ByGroupID(fmt.Sprintf("%s%s_%s", wsService.GROUP_KPI, neInfo.NeType, neInfo.NeId), kpiEvent)
|
||||||
// 推送自定义KPI到ws订阅组
|
// 推送自定义KPI到ws订阅组
|
||||||
wsService.NewWSSendImpl.ByGroupID(fmt.Sprintf("%s%s_%s", wsService.GROUP_KPI_C, neInfo.NeType, neInfo.NeId), report)
|
wsService.NewWSSendImpl.ByGroupID(fmt.Sprintf("%s%s_%s", wsService.GROUP_KPI_C, neInfo.NeType, neInfo.NeId), kpiCEvent)
|
||||||
if neInfo.NeType == "UPF" {
|
if neInfo.NeType == "UPF" {
|
||||||
// 推送标识为:12_RMUID, exp: 12_4400HXUPF001
|
// 推送标识为:12_RMUID, exp: 12_4400HXUPF001
|
||||||
wsService.NewWSSendImpl.ByGroupID(wsService.GROUP_KPI_UPF+kpiReport.Task.NE.RmUID, kpiEvent)
|
wsService.NewWSSendImpl.ByGroupID(wsService.GROUP_KPI_UPF+kpiReport.Task.NE.RmUID, kpiEvent)
|
||||||
|
|||||||
Reference in New Issue
Block a user