grid_warn_log.go 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181
  1. package service
  2. import (
  3. "dy-admin/internal/pcmserver/bus/model"
  4. "dy-admin/internal/pcmserver/bus/model/request"
  5. "dy-admin/internal/pcmserver/common"
  6. "dy-admin/internal/pcmserver/global"
  7. "dy-admin/internal/pcmserver/pkg/code"
  8. systemService "dy-admin/internal/pcmserver/sys/service"
  9. "dy-admin/internal/pcmserver/utils"
  10. "dy-admin/pkg/log"
  11. "dy-admin/pkg/rescode"
  12. "go.uber.org/zap"
  13. "time"
  14. )
  15. type GridWarnLogService struct {
  16. }
  17. func (s *GridWarnLogService) CreateGridWarnLog(log model.GridWarnLog) (err error) {
  18. err = global.DB.Create(&log).Error
  19. if err != nil {
  20. return rescode.RegisterErrorWithCause(err, code.ErrCodeMap[code.ErrDatabaseCode])
  21. }
  22. return
  23. }
  24. func (s *GridWarnLogService) DeleteGridWarnLogByIds(ids common.IdsReq) (err error) {
  25. if err = global.DB.Delete(&[]model.GridWarnLog{}, "id in (?)", ids.IDs).Error; err != nil {
  26. return rescode.RegisterErrorWithCause(err, code.ErrCodeMap[code.ErrDatabaseCode])
  27. }
  28. return
  29. }
  30. func (s *GridWarnLogService) GetGridWarnLogList(info request.GridWarnLogSearch, dataPermission *BusPermission) (list []model.GridWarnLog, total int64, err error) {
  31. var limit, offset int
  32. if info.Page == 0 || info.PageSize == 0 {
  33. limit = -1
  34. offset = -1
  35. } else {
  36. limit = info.PageSize
  37. offset = info.PageSize * (info.Page - 1)
  38. }
  39. var (
  40. startTime, endTime *time.Time
  41. )
  42. if info.StartTimeStr != "" {
  43. startTime, err = utils.ParseSecondTime(info.StartTimeStr)
  44. if err != nil {
  45. return list, total, rescode.RegisterErrorWithCause(nil, code.ErrCodeMap[code.ErrLeaveParseTimeCode])
  46. }
  47. }
  48. if info.EndTimeStr != "" {
  49. endTime, err = utils.ParseSecondTime(info.EndTimeStr)
  50. if err != nil {
  51. return list, total, rescode.RegisterErrorWithCause(nil, code.ErrCodeMap[code.ErrLeaveParseTimeCode])
  52. }
  53. }
  54. var logModel model.GridWarnLog
  55. db := global.DB.Model(&logModel).Scopes(Permission(logModel.TableName(), dataPermission))
  56. if info.DepartmentName != "" {
  57. db = db.Where("department_name LIKE ?", "%"+info.DepartmentName+"%")
  58. }
  59. if info.StaffName != "" {
  60. db = db.Where("staff_name LIKE ?", "%"+info.StaffName+"%")
  61. }
  62. if info.CabinetName != "" {
  63. db = db.Where("cabinet_name LIKE ?", "%"+info.CabinetName+"%")
  64. }
  65. if info.WarnState != "" {
  66. db = db.Where("warn_state = ?", info.WarnState)
  67. }
  68. if startTime != nil && endTime == nil {
  69. db = db.Where("created_at >= ?", startTime).Where("created_at <= ?", time.Now())
  70. }
  71. if endTime != nil && startTime == nil {
  72. db = db.Where("created_at >= ?", time.Now()).Where("created_at <= ?", endTime)
  73. }
  74. if startTime != nil && endTime != nil {
  75. db = db.Where("created_at >= ?", startTime).Where("created_at <= ?", endTime)
  76. }
  77. err = db.Count(&total).Error
  78. if err != nil {
  79. return
  80. }
  81. if err = db.Order("id desc").Limit(limit).Offset(offset).Find(&list).Error; err != nil {
  82. return list, total, rescode.RegisterErrorWithCause(err, code.ErrCodeMap[code.ErrDatabaseCode])
  83. }
  84. return
  85. }
  86. func (s *GridWarnLogService) GetGridWarnLogStatistics(info request.GridWarnLogStatistics) (list []model.LogStatistics, err error) {
  87. var (
  88. startTime, endTime *time.Time
  89. )
  90. if info.StartTimeStr != "" {
  91. startTime, err = utils.ParseMinuteTime(info.StartTimeStr)
  92. if err != nil {
  93. return list, rescode.RegisterErrorWithCause(nil, code.ErrCodeMap[code.ErrLeaveParseTimeCode])
  94. }
  95. }
  96. if info.EndTimeStr != "" {
  97. endTime, err = utils.ParseMinuteTime(info.EndTimeStr)
  98. if err != nil {
  99. return list, rescode.RegisterErrorWithCause(nil, code.ErrCodeMap[code.ErrLeaveParseTimeCode])
  100. }
  101. }
  102. var where string
  103. args := make([]interface{}, 0)
  104. deptIds, err := systemService.ServicesGroupApp.DeptService.GetSonDeptIds(info.DeptID)
  105. if err != nil {
  106. log.Warn("get son deptIds err", zap.Error(err))
  107. } else {
  108. where = "Where department_id in (?)"
  109. args = append(args, deptIds)
  110. }
  111. if info.Year != 0 {
  112. where += " AND year = ?"
  113. args = append(args, info.Year)
  114. }
  115. if info.Month != 0 {
  116. where += " AND month = ?"
  117. args = append(args, info.Month)
  118. }
  119. if info.Week != 0 {
  120. where += " AND week = ?"
  121. args = append(args, info.Week)
  122. }
  123. if info.WarnState != "" {
  124. where += " AND warn_state = ?"
  125. args = append(args, info.WarnState)
  126. }
  127. if startTime != nil && endTime == nil {
  128. where += " AND start_time > ? AND end_time < ?"
  129. args = append(args, startTime, time.Now())
  130. }
  131. if endTime != nil && startTime == nil {
  132. where += " AND start_time > ? AND end_time < ?"
  133. args = append(args, time.Now(), endTime)
  134. }
  135. if startTime != nil && endTime != nil {
  136. where += " AND start_time > ? AND end_time < ?"
  137. args = append(args, startTime, endTime)
  138. }
  139. err = global.DB.Raw("SELECT staff_id,staff_name,COUNT(*) AS total FROM bus_grid_warn_logs "+where+
  140. " GROUP BY staff_id,staff_name ORDER BY total DESC ", args...).Scan(&list).Error
  141. if err != nil {
  142. return list, rescode.RegisterErrorWithCause(err, code.ErrCodeMap[code.ErrDatabaseCode])
  143. }
  144. return
  145. }
  146. func (s *GridWarnLogService) GetDayGridWarnLogByDeptId(deptId int) (list []model.GridWarnLog, total int64, err error) {
  147. now := time.Now()
  148. dateStr := utils.FormatDateTime(&now)
  149. startTime, err := utils.ParseSecondTime(dateStr + " 00:00:00")
  150. endTime, err := utils.ParseSecondTime(dateStr + " 23:59:59")
  151. var logModel model.GridWarnLog
  152. err = global.DB.Model(&logModel).Where("created_at >= ?", startTime).Where("created_at <= ?", endTime).Where("department_id = ?", deptId).
  153. Count(&total).Order("id desc").Find(&list).Error
  154. if err != nil {
  155. return list, total, rescode.RegisterErrorWithCause(err, code.ErrCodeMap[code.ErrDatabaseCode])
  156. }
  157. return
  158. }