diff --git a/features/fm/alarm.go b/features/fm/alarm.go index 5a376527..a3e95865 100644 --- a/features/fm/alarm.go +++ b/features/fm/alarm.go @@ -485,7 +485,7 @@ func alarmEventNew(neInfo neModel.NeInfo, v Alarm) (neDataModel.AlarmEvent, erro } // 网元重启后,有跟踪任务的需要重新补发启动任务 if v.AlarmCode == constants.ALARM_EVENT_REBOOT { - traceService.NewTraceTask.RunUnstopped() + traceService.NewTraceTask.RunUnstopped(neInfo.NeType, neInfo.NeId) } return alarmEvent, nil } diff --git a/src/modules/trace/repository/trace_task.go b/src/modules/trace/repository/trace_task.go index 6a842431..0894c171 100644 --- a/src/modules/trace/repository/trace_task.go +++ b/src/modules/trace/repository/trace_task.go @@ -116,11 +116,11 @@ func (r TraceTask) SelectByIds(ids []int64) []model.TraceTask { } // SelectByUnstopped 查询未停止的任务补发 -func (r TraceTask) SelectByUnstopped() []model.TraceTask { +func (r TraceTask) SelectByUnstopped(neStr string) []model.TraceTask { rows := []model.TraceTask{} tx := db.DB("").Model(&model.TraceTask{}) // 构建查询条件 - tx = tx.Where("end_time > ?", time.Now().UnixMilli()) + tx = tx.Where("end_time > ? and ne_list like ?", time.Now().UnixMilli(), fmt.Sprintf("%%%s%%", neStr)) // 查询数据 if err := tx.Find(&rows).Error; err != nil { logger.Errorf("query find err => %v", err.Error()) diff --git a/src/modules/trace/service/trace_task.go b/src/modules/trace/service/trace_task.go index f47cd4ae..305fe2f0 100644 --- a/src/modules/trace/service/trace_task.go +++ b/src/modules/trace/service/trace_task.go @@ -202,8 +202,9 @@ func (r TraceTask) createTaskToNe(task *model.TraceTask, ignoreErr bool) error { return fmt.Errorf("ne list is empty") } // 生成任务ID - traceId := r.traceTaskRepository.LastID() + 1 // 生成任务ID < 65535 - task.TraceId = fmt.Sprint(traceId) + if task.TraceId == "" { + task.TraceId = fmt.Sprint(r.traceTaskRepository.LastID() + 1) // 生成任务ID < 65535 + } // 发送任务给网元 errNe := []string{} @@ -331,8 +332,9 @@ func (r TraceTask) DeleteByIds(ids []int64) (int64, error) { } // RunUnstopped 启动跟踪未停止的任务 -func (r TraceTask) RunUnstopped() { - tasks := r.traceTaskRepository.SelectByUnstopped() +func (r TraceTask) RunUnstopped(neType string, neId string) { + neStr := fmt.Sprintf("%s_%s", neType, neId) + tasks := r.traceTaskRepository.SelectByUnstopped(neStr) for _, task := range tasks { r.createTaskToNe(&task, true) }