Files
nbi_alarm/handle/api/req_sync_alarm_file.go
2023-08-22 19:25:39 +08:00

101 lines
2.8 KiB
Go

package api
import (
"fmt"
"omc/conf"
"omc/core"
"omc/core/consts"
"omc/core/file"
"omc/core/manage"
"omc/core/parse"
"omc/handle/service"
"strconv"
"time"
"github.com/aceld/zinx/ziface"
"github.com/aceld/zinx/zlog"
"github.com/aceld/zinx/znet"
)
var ackSyncAlarmFileMsgID uint32 = 6
var ackSyncAlarmFileMsgName string = "ackSyncAlarmFile"
// SyncAlarmFileApi 文件方式同步告警请求
type SyncAlarmFileApi struct {
znet.BaseRouter
}
// Handle
// reqSyncAlarmFile;reqId=33;startTime=2014-11-27 10:00:00;endTime=2014-11-27 10:30:00; syncSource =0
func (*SyncAlarmFileApi) Handle(request ziface.IRequest) {
// 消息处理
checker := []string{"reqId", "syncSource"}
body, err := parse.RequestBodyDecode(request, checker)
if err != nil {
zlog.Ins().ErrorF("inlaid message body %s", err.Error())
request.GetConnection().SendMsg(ackSyncAlarmFileMsgID, core.ResultError(ackSyncAlarmFileMsgName, err.Error(), ""))
return
}
reqId := body.Data["reqId"]
//管理模块
m := manage.GetManager(request.GetConnection().GetName())
if m == nil {
zlog.Ins().ErrorF("server internal error")
request.GetConnection().SendMsg(ackSyncAlarmFileMsgID, core.ResultError(ackSyncAlarmFileMsgName, "server internal error", reqId))
return
}
// 检查用户是否登录
u := m.GetUserByPID(body.UID)
if !u.LoginState || u.AlarmType != consts.FILE {
zlog.Ins().ErrorF("no permissions ")
request.GetConnection().SendMsg(ackSyncAlarmFileMsgID, core.ResultError(ackSyncAlarmFileMsgName, "no permissions", reqId))
return
}
//查询需要上报的告警信息
start := ""
end := ""
syncSource := ""
alarmSeq := 0
fmt.Println("body.Data:", body.Data)
//map[alarmSeq:1 reqId:35 syncSource:1]
// map[endTime:2023-07-15 23:59:59 reqId:34 startTime:2023-01-08 16:07:00 syncSource:0]
if v, ok := body.Data["startTime"]; ok {
start = v
}
if v, ok := body.Data["endTime"]; ok {
end = v
}
if v, ok := body.Data["syncSource"]; ok {
syncSource = v
}
if v, ok := body.Data["alarmSeq"]; ok {
if seq, err := strconv.Atoi(v); err == nil {
alarmSeq = seq
}
}
neBind, _ := parse.ConvertBindFlag(m.BindFlag)
alarms, err := service.GetAlarm(neBind.NeType, neBind.NeId, start, end, syncSource, alarmSeq)
if err != nil || len(alarms) == 0 {
request.GetConnection().SendMsg(ackSyncAlarmFileMsgID, core.ResultError(ackSyncAlarmFileMsgName, "not find record", reqId))
return
}
//ack
request.GetConnection().SendMsg(ackSyncAlarmFileMsgID, core.ResultSuccess(ackSyncAlarmFileMsgName, "", reqId))
//打包结果文件
//打包生成文件
var meta file.FileMeta
meta.DirRoot = conf.OmcConf.FTPRoot
meta.Province = m.Province
meta.DeviceCode = m.DeviceCode
meta.Index = "001"
meta.Time = time.Now().Format("20060102150405")
meta.Compress = false
go service.GenFile(request, &meta, alarms)
}