checkrecordservice.go 2.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. package service
  2. import (
  3. "strconv"
  4. "strings"
  5. "sws_xcx/models"
  6. "sws_xcx/utils"
  7. "github.com/jinzhu/gorm"
  8. )
  9. type CheckRecordService struct {
  10. rdb *gorm.DB
  11. wdb *gorm.DB
  12. }
  13. func NewCheckRecordService() *CheckRecordService {
  14. return &CheckRecordService{
  15. rdb: ReadDB(),
  16. wdb: WriteDB(),
  17. }
  18. }
  19. func (s *CheckRecordService) GetCheckRecordByAcc(deviceId uint64, acc int) (record models.CheckRecord, err error) {
  20. record = models.CheckRecord{}
  21. err = s.rdb.Model(&record).Where("device_id = ? and acc = ?", deviceId, acc).First(&record).Error
  22. if err != nil && err == gorm.ErrRecordNotFound {
  23. err = nil
  24. }
  25. return
  26. }
  27. func (s *CheckRecordService) GetCheckRecordList(pageNum, pageSize int, userid uint64) (vos []models.AppCheckRecordVO, total int, err error) {
  28. offset := (pageNum - 1) * pageSize
  29. records := make([]*models.CheckRecord, pageSize)
  30. err = s.rdb.Model(&models.CheckRecord{}).Where("user_id= ? and delete_flag = ?", 0).Count(&total).Order("id desc").Offset(offset).Limit(pageSize).Find(&records).Error
  31. if len(records) > 0 {
  32. is := NewCheckItemService()
  33. cnItems, err1 := is.GetCheckItems("cn", "1")
  34. if err1 != nil {
  35. utils.ErrorLog("GetCheckItems err:%v ", err1)
  36. }
  37. mcn := make(map[int]models.CheckItem, len(cnItems))
  38. for _, item := range cnItems {
  39. mcn[item.Id] = *item
  40. }
  41. vos = make([]models.AppCheckRecordVO, len(records))
  42. for i, r := range records {
  43. vo := models.AppCheckRecordVO{}
  44. vo.CheckRecordId = r.Id
  45. vo.UserId = r.UserId
  46. if r.UserId > 0 {
  47. vo.Bind = 1
  48. }
  49. vo.CheckDate = models.Time(r.Ctime)
  50. vo.View = r.View
  51. vo.AlertCount = 0
  52. //vo.AlertGrade = 0
  53. if r.AlertItemIds != "" {
  54. ids := strings.Split(r.AlertItemIds, ",")
  55. names := make([]string, len(ids))
  56. for j, id := range ids {
  57. ii, _ := strconv.Atoi(id)
  58. if item, ok := mcn[ii]; ok {
  59. names[j] = item.NameCn
  60. }
  61. }
  62. vo.AlertItems = names
  63. vo.AlertCount = len(ids)
  64. }
  65. vo.NormalCount = len(cnItems) - vo.AlertCount
  66. vos[i] = vo
  67. }
  68. }
  69. return
  70. }
  71. func (s *CheckRecordService) CreateCheckRecord(checkRecord *models.CheckRecord) error {
  72. return s.wdb.Model(checkRecord).Create(checkRecord).Error
  73. }
  74. func (s *CheckRecordService) CreateCheckRecordItem(checkRecordItem *models.CheckRecordItem) error {
  75. return s.wdb.Model(checkRecordItem).Create(checkRecordItem).Error
  76. }
  77. func (s *CheckRecordService) UpdateCheckRecordAlertItems(id int64, alertItemIds string) error {
  78. return s.wdb.Model(&models.CheckRecord{}).Where("id = ?", id).Update("alert_item_ids", alertItemIds).Error
  79. }
  80. func (s *CheckRecordService) GetCheckRecordItems(recordId int64) (recordItems []*models.CheckRecordItem, err error) {
  81. err = s.rdb.Model(&models.CheckRecordItem{}).Where("check_id = ?", recordId).Find(&recordItems).Error
  82. return
  83. }
  84. func (s *CheckRecordService) GetCheckRecordById(id int64) (record models.CheckRecord, err error) {
  85. err = s.rdb.Model(&record).Where("id = ?", id).First(&record).Error
  86. return
  87. }