platformAlarmService.go 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. package service
  2. import (
  3. "iot_manager_service/app/warn/dao"
  4. edgeService "iot_manager_service/app/warn/edge_service"
  5. "iot_manager_service/app/warn/model"
  6. "iot_manager_service/util/common"
  7. "strconv"
  8. "time"
  9. )
  10. var PlatformAlarmService = new(platformAlarmService)
  11. type platformAlarmService struct{}
  12. // GetList 报警列表
  13. func (s platformAlarmService) GetList(tenantId int, filter model.RequestPlatFormAlartFilter) ([]model.PlatFormAlartData, int64, error) {
  14. var list []model.PlatFormAlartData
  15. dao := dao.PlatformAlarm{
  16. TenantId: strconv.Itoa(tenantId),
  17. }
  18. levelArr := make(map[int]string)
  19. levelArr[1] = "紧急"
  20. levelArr[2] = "严重"
  21. levelArr[3] = "普通"
  22. gets, i, err := dao.Gets(filter)
  23. for _, alart := range gets {
  24. list = append(list, model.PlatFormAlartData{
  25. ID: alart.ID,
  26. ArmDeviceName: alart.ArmDeviceName,
  27. ArmDeviceSn: alart.ArmDeviceSn,
  28. ArmDeviceTypeName: alart.ArmDeviceTypeName,
  29. ArmContent: alart.ArmContent,
  30. LampPoleName: alart.LampPoleName,
  31. LampPoleSn: alart.LampPoleSn,
  32. ArmTime: alart.ArmTime.String(),
  33. ArmEndTime: alart.ArmEndTime.String(),
  34. ArmLevel: alart.ArmLevel,
  35. ArmLevelName: levelArr[alart.ArmLevel],
  36. LampPoleLocation: alart.LampPoleLocation,
  37. ArmHandleTime: alart.ArmHandleTime.String(),
  38. OpsStatus: alart.ArmHandle,
  39. })
  40. }
  41. return list, i, err
  42. }
  43. // Refresh 同步边缘接口报警数据
  44. func (s platformAlarmService) Refresh(tenantId int) error {
  45. viewDao := dao.ViewsAllCode{TenantId: tenantId}
  46. alls, err := viewDao.GetAlls()
  47. if err != nil {
  48. return err
  49. }
  50. newAllCode := make(map[string]dao.ViewsAllCode)
  51. for _, viewsAllCode := range alls {
  52. if viewsAllCode.Sn != "" {
  53. newAllCode[viewsAllCode.Sn] = viewsAllCode
  54. }
  55. }
  56. edgeService := edgeService.RecordAlarmRecord{}
  57. maxId, maxUpDateTime := dao.PlatformAlarm{}.GetMaxIdAndUpDateTime()
  58. list, err := edgeService.SyncAlartRecord(maxId, maxUpDateTime)
  59. if err != nil {
  60. return err
  61. }
  62. alarms := []dao.PlatformAlarm{}
  63. for _, data := range list {
  64. viewInfo := newAllCode[data.Code]
  65. parse := common.TimeStringToGoTime(data.Tend)
  66. ArmTime := common.TimeStringToGoTime(data.Tstart)
  67. ArmSource := 1
  68. if data.Cid != 0 {
  69. ArmSource = 2
  70. }
  71. alarms = append(alarms, dao.PlatformAlarm{
  72. ID: data.ID,
  73. TenantId: strconv.Itoa(tenantId),
  74. ArmDeviceType: viewInfo.DeviceType,
  75. ArmDeviceTypeName: viewInfo.DeviceTypeName,
  76. ArmDeviceId: viewInfo.DeviceId,
  77. ArmDeviceName: viewInfo.DeviceName,
  78. ArmDeviceSn: data.Code,
  79. LampPoleId: viewInfo.LampPoleId,
  80. LampPoleName: viewInfo.LampPoleName,
  81. LampPoleSn: viewInfo.LampPoleSn,
  82. LampPoleLocation: viewInfo.Address,
  83. ArmSource: ArmSource,
  84. ArmEndTime: common.Time(parse),
  85. ArmTime: common.Time(ArmTime),
  86. ArmHandle: 1,
  87. ArmLevel: data.Level,
  88. ArmContent: data.Content,
  89. Status: 0, //告警发送
  90. Cid: uint(data.Cid),
  91. Cname: data.Cname,
  92. Sid: data.Sid,
  93. Threshold: float64(data.Threshold),
  94. })
  95. }
  96. err = dao.PlatformAlarm{}.BatchCreate(alarms)
  97. return err
  98. }
  99. // HandleAlarm 告警处理
  100. func (s platformAlarmService) HandleAlarm(tenant_id int, id int, armHandle int, remark string) error {
  101. dao := dao.PlatformAlarm{
  102. ID: id,
  103. ArmHandle: armHandle,
  104. ArmHanleRemark: remark,
  105. ArmHandleTime: common.Time(time.Now()),
  106. }
  107. return dao.Update()
  108. }
  109. // GetWarnCount 根据设备类型 取
  110. func (s platformAlarmService) GetWarnCount(tenantId int, deviceType int) (int64, error) {
  111. alarm := dao.PlatformAlarm{TenantId: strconv.Itoa(tenantId), ArmDeviceType: deviceType}
  112. return alarm.GetWarnCount()
  113. }
  114. // GetNotNotifyAlarm 返回最近几天没有发送告警通知的警告
  115. func (s platformAlarmService) GetNotNotifyAlarm(day int) ([]dao.PlatformAlarm, error) {
  116. start := time.Now().AddDate(0, 0, -day).Format("2006-01-02- 15:04:05")
  117. return dao.PlatformAlarm{}.GetsAlarmByTime(start)
  118. }