feat: 告警清除/确认/状态检查任务
This commit is contained in:
@@ -52,7 +52,7 @@ type AlarmController struct {
|
||||
// @Summary Alarm List
|
||||
// @Description Alarm List
|
||||
// @Router /neData/alarm/list [get]
|
||||
func (s *AlarmController) List(c *gin.Context) {
|
||||
func (s AlarmController) List(c *gin.Context) {
|
||||
var query model.AlarmQuery
|
||||
if err := c.ShouldBindQuery(&query); err != nil {
|
||||
errMsgs := fmt.Sprintf("bind err: %s", resp.FormatBindError(err))
|
||||
@@ -67,7 +67,7 @@ func (s *AlarmController) List(c *gin.Context) {
|
||||
// 告警删除
|
||||
//
|
||||
// DELETE /:id
|
||||
func (s *AlarmController) Remove(c *gin.Context) {
|
||||
func (s AlarmController) Remove(c *gin.Context) {
|
||||
language := reqctx.AcceptLanguage(c)
|
||||
id := c.Param("id")
|
||||
if id == "" {
|
||||
@@ -91,3 +91,48 @@ func (s *AlarmController) Remove(c *gin.Context) {
|
||||
msg := i18n.TTemplate(language, "app.common.deleteSuccess", map[string]any{"num": rows})
|
||||
c.JSON(200, resp.OkMsg(msg))
|
||||
}
|
||||
|
||||
// 告警清除
|
||||
//
|
||||
// PUT /clear
|
||||
func (s AlarmController) Clear(c *gin.Context) {
|
||||
var body struct {
|
||||
Ids []int64 `json:"ids" binding:"required"`
|
||||
}
|
||||
if err := c.ShouldBindBodyWithJSON(&body); err != nil {
|
||||
errMsgs := fmt.Sprintf("bind err: %s", resp.FormatBindError(err))
|
||||
c.JSON(422, resp.CodeMsg(40422, errMsgs))
|
||||
return
|
||||
}
|
||||
|
||||
clearUser := reqctx.LoginUserToUserName(c)
|
||||
rows, err := s.alarmService.AlarmClearByIds(body.Ids, clearUser)
|
||||
if err != nil {
|
||||
c.JSON(200, resp.ErrMsg(err.Error()))
|
||||
return
|
||||
}
|
||||
c.JSON(200, resp.OkData(rows))
|
||||
}
|
||||
|
||||
// 告警确认
|
||||
//
|
||||
// PUT /ack
|
||||
func (s AlarmController) Ack(c *gin.Context) {
|
||||
var body struct {
|
||||
Ids []int64 `json:"ids" binding:"required"`
|
||||
AckState bool `json:"ackState" binding:"omitempty"`
|
||||
}
|
||||
if err := c.ShouldBindBodyWithJSON(&body); err != nil {
|
||||
errMsgs := fmt.Sprintf("bind err: %s", resp.FormatBindError(err))
|
||||
c.JSON(422, resp.CodeMsg(40422, errMsgs))
|
||||
return
|
||||
}
|
||||
|
||||
ackUser := reqctx.LoginUserToUserName(c)
|
||||
rows, err := s.alarmService.AlarmAckByIds(body.Ids, ackUser, body.AckState)
|
||||
if err != nil {
|
||||
c.JSON(200, resp.ErrMsg(err.Error()))
|
||||
return
|
||||
}
|
||||
c.JSON(200, resp.OkData(rows))
|
||||
}
|
||||
|
||||
@@ -40,6 +40,14 @@ func Setup(router *gin.Engine) {
|
||||
middleware.PreAuthorize(nil),
|
||||
controller.NewAlarm.Remove,
|
||||
)
|
||||
alarmGroup.PUT("/clear",
|
||||
middleware.PreAuthorize(nil),
|
||||
controller.NewAlarm.Clear,
|
||||
)
|
||||
alarmGroup.PUT("/ack",
|
||||
middleware.PreAuthorize(nil),
|
||||
controller.NewAlarm.Ack,
|
||||
)
|
||||
}
|
||||
|
||||
// 基站状态历史记录信息 含AMF/MME
|
||||
|
||||
@@ -2,7 +2,9 @@ package service
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
"be.ems/src/framework/constants"
|
||||
"be.ems/src/modules/network_data/model"
|
||||
"be.ems/src/modules/network_data/repository"
|
||||
)
|
||||
@@ -57,3 +59,58 @@ func (r Alarm) DeleteByIds(ids []int64) (int64, error) {
|
||||
func (s Alarm) FindAlarmSeqLast(neType, neId string) int64 {
|
||||
return s.alarmRepository.SelectAlarmSeqLast(neType, neId)
|
||||
}
|
||||
|
||||
// AlarmClearByIds 批量清除告警信息
|
||||
func (r Alarm) AlarmClearByIds(ids []int64, clearUser string) (int64, error) {
|
||||
// 检查是否存在
|
||||
arr := r.alarmRepository.SelectByIds(ids)
|
||||
if len(arr) <= 0 {
|
||||
return 0, fmt.Errorf("no data")
|
||||
}
|
||||
|
||||
if len(arr) == len(ids) {
|
||||
var rows int64 = 0
|
||||
for _, v := range arr {
|
||||
// 状态检查AlarmCode变更告警ID
|
||||
if v.AlarmCode == constants.ALARM_STATE_CHECK {
|
||||
v.AlarmId = fmt.Sprintf("%d%d", v.AlarmCode, v.EventTime)
|
||||
}
|
||||
v.AlarmStatus = "0"
|
||||
// 告警清除
|
||||
v.ClearType = 2
|
||||
v.ClearTime = time.Now().UnixMilli()
|
||||
v.ClearUser = clearUser
|
||||
rows += r.alarmRepository.Update(v)
|
||||
}
|
||||
return rows, nil
|
||||
}
|
||||
// 清除失败!
|
||||
return 0, fmt.Errorf("clear fail")
|
||||
}
|
||||
|
||||
// AlarmAckByIds 批量确认清除告警信息
|
||||
func (r Alarm) AlarmAckByIds(ids []int64, ackUser string, ackState bool) (int64, error) {
|
||||
// 检查是否存在
|
||||
arr := r.alarmRepository.SelectByIds(ids)
|
||||
if len(arr) <= 0 {
|
||||
return 0, fmt.Errorf("no data")
|
||||
}
|
||||
|
||||
if len(arr) == len(ids) {
|
||||
var rows int64 = 0
|
||||
for _, v := range arr {
|
||||
// 确认清除
|
||||
if ackState {
|
||||
v.AckState = 1
|
||||
} else {
|
||||
v.AckState = 0
|
||||
}
|
||||
v.AckTime = time.Now().UnixMilli()
|
||||
v.AckUser = ackUser
|
||||
rows += r.alarmRepository.Update(v)
|
||||
}
|
||||
return rows, nil
|
||||
}
|
||||
// 清除失败!
|
||||
return 0, fmt.Errorf("ack fail")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user