fix: UPF流量总计7,30天累计数据查询
This commit is contained in:
@@ -34,7 +34,7 @@ func (k *KpiCReport) Get(c *gin.Context) {
|
|||||||
dbg := dborm.DefaultDB().Table(tableName)
|
dbg := dborm.DefaultDB().Table(tableName)
|
||||||
|
|
||||||
if querys.NeID != "" {
|
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)")
|
conditions = append(conditions, "rm_uid = (select n.rm_uid from ne_info n where n.ne_type=? and n.ne_id=?)")
|
||||||
params = append(params, strings.ToUpper(querys.NeType), querys.NeID)
|
params = append(params, strings.ToUpper(querys.NeType), querys.NeID)
|
||||||
} else {
|
} else {
|
||||||
c.JSON(http.StatusBadRequest, services.ErrResp("Not found required parameter NE ID"))
|
c.JSON(http.StatusBadRequest, services.ErrResp("Not found required parameter NE ID"))
|
||||||
@@ -101,7 +101,7 @@ func (k *KpiCReport) GetReport2FE(c *gin.Context) {
|
|||||||
dbg := dborm.DefaultDB().Table(tableName)
|
dbg := dborm.DefaultDB().Table(tableName)
|
||||||
|
|
||||||
if querys.NeID != "" {
|
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)")
|
conditions = append(conditions, "rm_uid = (select n.rm_uid from ne_info n where n.ne_type=? and n.ne_id=?)")
|
||||||
params = append(params, querys.NeType, querys.NeID)
|
params = append(params, querys.NeType, querys.NeID)
|
||||||
} else {
|
} else {
|
||||||
c.JSON(http.StatusBadRequest, services.ErrResp("Not found required parameter NE ID"))
|
c.JSON(http.StatusBadRequest, services.ErrResp("Not found required parameter NE ID"))
|
||||||
|
|||||||
@@ -342,7 +342,7 @@ func PostKPIReportFromNF(w http.ResponseWriter, r *http.Request) {
|
|||||||
// 更新UPF总流量
|
// 更新UPF总流量
|
||||||
upValue := parse.Number(kpiEvent["UPF.03"])
|
upValue := parse.Number(kpiEvent["UPF.03"])
|
||||||
downValue := parse.Number(kpiEvent["UPF.06"])
|
downValue := parse.Number(kpiEvent["UPF.06"])
|
||||||
neDataService.NewPerfKPI.UPFTodayFlowUpdate(neInfo.RmUID, upValue, downValue, false)
|
neDataService.NewPerfKPI.UPFTodayFlowUpdate(neInfo.RmUID, upValue, downValue)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -326,5 +326,5 @@ func Setup(router *gin.Engine) {
|
|||||||
// InitLoad 初始参数
|
// InitLoad 初始参数
|
||||||
func InitLoad() {
|
func InitLoad() {
|
||||||
// 启动时,加载UPF上下行流量
|
// 启动时,加载UPF上下行流量
|
||||||
go service.NewPerfKPI.UPFTodayFlowLoad()
|
go service.NewPerfKPI.UPFTodayFlowLoad(30)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -45,12 +45,13 @@ func (r *PerfKPI) SelectGoldKPITitle(neType string) []model.GoldKPITitle {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// UPFTodayFlowFind 查询UPF总流量 N3上行 N6下行
|
// UPFTodayFlowFind 查询UPF总流量 N3上行 N6下行
|
||||||
|
// day 统计天数
|
||||||
func (r PerfKPI) UPFTodayFlowFind(rmUID string, day int) (int64, int64) {
|
func (r PerfKPI) UPFTodayFlowFind(rmUID string, day int) (int64, int64) {
|
||||||
// 获取当前日期
|
// 获取当前日期
|
||||||
now := time.Now()
|
now := time.Now()
|
||||||
var upTotal, downTotal int64
|
var upTotal, downTotal int64
|
||||||
|
|
||||||
// 查询最近7天的数据
|
// 查询最近day天的数据
|
||||||
for i := 0; i <= day; i++ {
|
for i := 0; i <= day; i++ {
|
||||||
dateKey := now.AddDate(0, 0, -i).Format("2006-01-02")
|
dateKey := now.AddDate(0, 0, -i).Format("2006-01-02")
|
||||||
key := fmt.Sprintf("%sUPF_FLOW:%s:%s", cachekey.NE_DATA_KEY, rmUID, dateKey)
|
key := fmt.Sprintf("%sUPF_FLOW:%s:%s", cachekey.NE_DATA_KEY, rmUID, dateKey)
|
||||||
@@ -73,28 +74,11 @@ func (r PerfKPI) UPFTodayFlowFind(rmUID string, day int) (int64, int64) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// UPFTodayFlow UPF流量今日统计
|
// UPFTodayFlow UPF流量今日统计
|
||||||
func (r PerfKPI) UPFTodayFlowUpdate(rmUID string, upValue, downValue int64, rest bool) error {
|
func (r PerfKPI) UPFTodayFlowUpdate(rmUID string, upValue, downValue int64) error {
|
||||||
// 按日期存储统计数据
|
// 按日期存储统计数据
|
||||||
dateKey := time.Now().Format("2006-01-02")
|
dateKey := time.Now().Format("2006-01-02")
|
||||||
key := fmt.Sprintf("%sUPF_FLOW:%s:%s", cachekey.NE_DATA_KEY, rmUID, dateKey)
|
key := fmt.Sprintf("%sUPF_FLOW:%s:%s", cachekey.NE_DATA_KEY, rmUID, dateKey)
|
||||||
|
|
||||||
// 重置数据
|
|
||||||
if rest {
|
|
||||||
err := redis.SetHash("", key, map[string]any{
|
|
||||||
"up": upValue,
|
|
||||||
"down": downValue,
|
|
||||||
})
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
// 设置key的过期时间为30天,自动清理旧数据
|
|
||||||
err = redis.Expire("", key, 30*24*time.Hour)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// 使用HIncrBy实时累加统计值
|
// 使用HIncrBy实时累加统计值
|
||||||
if err := redis.IncrBy("", key, "up", upValue); err != nil {
|
if err := redis.IncrBy("", key, "up", upValue); err != nil {
|
||||||
return err
|
return err
|
||||||
@@ -106,17 +90,14 @@ func (r PerfKPI) UPFTodayFlowUpdate(rmUID string, upValue, downValue int64, rest
|
|||||||
}
|
}
|
||||||
|
|
||||||
// UPFTodayFlowLoad UPF上下行数据到redis
|
// UPFTodayFlowLoad UPF上下行数据到redis
|
||||||
func (r PerfKPI) UPFTodayFlowLoad() {
|
// day 统计天数
|
||||||
|
func (r PerfKPI) UPFTodayFlowLoad(day int) {
|
||||||
cacheKeys, _ := redis.GetKeys("", cachekey.NE_KEY+"UPF:*")
|
cacheKeys, _ := redis.GetKeys("", cachekey.NE_KEY+"UPF:*")
|
||||||
if len(cacheKeys) == 0 {
|
if len(cacheKeys) == 0 {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// 今日流量
|
|
||||||
now := time.Now()
|
now := time.Now()
|
||||||
beginTime := now.Truncate(24 * time.Hour).UnixMilli()
|
|
||||||
endTime := beginTime + 24*60*60*1000 - 1
|
|
||||||
|
|
||||||
for _, key := range cacheKeys {
|
for _, key := range cacheKeys {
|
||||||
var v neModel.NeInfo
|
var v neModel.NeInfo
|
||||||
jsonStr, _ := redis.Get("", key)
|
jsonStr, _ := redis.Get("", key)
|
||||||
@@ -124,21 +105,40 @@ func (r PerfKPI) UPFTodayFlowLoad() {
|
|||||||
json.Unmarshal([]byte(jsonStr), &v)
|
json.Unmarshal([]byte(jsonStr), &v)
|
||||||
}
|
}
|
||||||
if v.NeType == "UPF" && v.RmUID != "" {
|
if v.NeType == "UPF" && v.RmUID != "" {
|
||||||
// 查询历史数据
|
// 查询最近day天的数据
|
||||||
// down * 8 / 1000 / 1000 单位M
|
for i := 0; i <= day; i++ {
|
||||||
info := r.perfKPIRepository.SelectUPFTotalFlow("UPF", v.RmUID, fmt.Sprint(beginTime), fmt.Sprint(endTime))
|
dateKey := now.AddDate(0, 0, -i).Format("2006-01-02")
|
||||||
if v, ok := info["up"]; ok && v == nil {
|
key := fmt.Sprintf("%sUPF_FLOW:%s:%s", cachekey.NE_DATA_KEY, v.RmUID, dateKey)
|
||||||
info["up"] = 0
|
// 根据传入天数计算时间范围
|
||||||
}
|
beginTime := now.AddDate(0, 0, -i).Truncate(24 * time.Hour).UnixMilli()
|
||||||
if v, ok := info["down"]; ok && v == nil {
|
endTime := beginTime + 24*60*60*1000 - 1
|
||||||
info["down"] = 0
|
// 查询历史数据
|
||||||
}
|
// down * 8 / 1000 / 1000 单位M
|
||||||
|
info := r.perfKPIRepository.SelectUPFTotalFlow("UPF", v.RmUID, fmt.Sprint(beginTime), fmt.Sprint(endTime))
|
||||||
|
if v, ok := info["up"]; ok && v == nil {
|
||||||
|
info["up"] = 0
|
||||||
|
}
|
||||||
|
if v, ok := info["down"]; ok && v == nil {
|
||||||
|
info["down"] = 0
|
||||||
|
}
|
||||||
|
|
||||||
upTotal := parse.Number(info["up"])
|
upTotal := parse.Number(info["up"])
|
||||||
downTotal := parse.Number(info["down"])
|
downTotal := parse.Number(info["down"])
|
||||||
|
|
||||||
// 将历史数据添加到Redis
|
err := redis.SetHash("", key, map[string]any{
|
||||||
r.UPFTodayFlowUpdate(v.RmUID, upTotal, downTotal, true)
|
"up": upTotal,
|
||||||
|
"down": downTotal,
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
// 设置key的过期时间为30天,自动清理旧数据
|
||||||
|
daySub := (30 - i) * 24
|
||||||
|
err = redis.Expire("", key, time.Duration(daySub)*time.Hour)
|
||||||
|
if err != nil {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user