checkrecordservice.go 4.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. package service
  2. import (
  3. "encoding/json"
  4. "fmt"
  5. "strconv"
  6. "strings"
  7. "sws_xcx/models"
  8. "sws_xcx/utils"
  9. "github.com/jinzhu/gorm"
  10. )
  11. type CheckRecordService struct {
  12. rdb *gorm.DB
  13. wdb *gorm.DB
  14. }
  15. func NewCheckRecordService() *CheckRecordService {
  16. return &CheckRecordService{
  17. rdb: ReadDB(),
  18. wdb: WriteDB(),
  19. }
  20. }
  21. func (s *CheckRecordService) GetCheckRecordByAcc(deviceId uint64, acc int) (record models.CheckRecord, err error) {
  22. record = models.CheckRecord{}
  23. err = s.rdb.Model(&record).Where("device_id = ? and acc = ?", deviceId, acc).First(&record).Error
  24. if err != nil && err == gorm.ErrRecordNotFound {
  25. err = nil
  26. }
  27. return
  28. }
  29. func (s *CheckRecordService) GetCheckRecordList(pageNum, pageSize int, userid uint64) (vos []models.AppCheckRecordVO, total int, err error) {
  30. offset := (pageNum - 1) * pageSize
  31. records := make([]*models.CheckRecord, pageSize)
  32. err = s.rdb.Model(&models.CheckRecord{}).Where("user_id= ? and delete_flag = ?", userid, 0).Count(&total).Order("id desc").Offset(offset).Limit(pageSize).Find(&records).Error
  33. if len(records) > 0 {
  34. is := NewCheckItemService()
  35. cnItems, err1 := is.GetCheckItems("cn", "1")
  36. if err1 != nil {
  37. utils.ErrorLog("GetCheckItems err:%v ", err1)
  38. }
  39. mcn := make(map[int]models.CheckItem, len(cnItems))
  40. for _, item := range cnItems {
  41. mcn[item.Id] = *item
  42. }
  43. vos = make([]models.AppCheckRecordVO, len(records))
  44. for i, r := range records {
  45. vo := models.AppCheckRecordVO{}
  46. vo.CheckRecordId = r.Id
  47. vo.UserId = r.UserId
  48. if r.UserId > 0 {
  49. vo.Bind = 1
  50. }
  51. vo.CheckDate = models.Time(r.Ctime)
  52. vo.View = r.View
  53. vo.AlertCount = 0
  54. //vo.AlertGrade = 0
  55. if r.AlertItemIds != "" {
  56. ids := strings.Split(r.AlertItemIds, ",")
  57. names := make([]string, len(ids))
  58. for j, id := range ids {
  59. ii, _ := strconv.Atoi(id)
  60. if item, ok := mcn[ii]; ok {
  61. names[j] = item.NameCn
  62. }
  63. }
  64. vo.AlertItems = names
  65. vo.AlertCount = len(ids)
  66. }
  67. vo.NormalCount = len(cnItems) - vo.AlertCount
  68. vos[i] = vo
  69. }
  70. }
  71. return
  72. }
  73. func (s *CheckRecordService) GetCheckRecordItemReport(dataNum, itemNum int, userid uint64) (reports []*models.AppCheckRecordItemReportVO, err error) {
  74. item, err := NewCheckItemService().GetCheckItemByNumber(itemNum, "cn", "1")
  75. if err != nil {
  76. return
  77. }
  78. if item.Id == 0 {
  79. err = fmt.Errorf("系统无此检查项目 num:%v", itemNum)
  80. return
  81. }
  82. var items []*models.CheckRecordItem
  83. err = s.rdb.Raw("select i.* from check_record_item as i inner join check_record as c on i.check_id=c.id where i.check_item_id = ? and c.user_id = ? and c.delete_flag=0", item.Id, userid).Order("id desc").Limit(dataNum).Scan(&items).Error
  84. if len(items) > 0 {
  85. var scopes []*models.CheckItemScopeVO
  86. json.Unmarshal([]byte(item.ScopeList), &scopes)
  87. reports = make([]*models.AppCheckRecordItemReportVO, len(items))
  88. for i, ci := range items {
  89. report := models.AppCheckRecordItemReportVO{}
  90. report.ID = item.CheckItemNumber
  91. report.CheckValueIndex = ci.CheckValueIndex
  92. report.Unit = item.Unit
  93. report.Date = models.Time(ci.Ctime)
  94. for _, scope := range scopes {
  95. if scope.Index == ci.CheckValueIndex {
  96. if scope.Num != "" {
  97. report.Value = scope.Num
  98. } else {
  99. report.Value = scope.Value
  100. }
  101. }
  102. }
  103. reports[i] = &report
  104. }
  105. }
  106. return
  107. }
  108. func (s *CheckRecordService) CreateCheckRecord(checkRecord *models.CheckRecord) error {
  109. return s.wdb.Model(checkRecord).Create(checkRecord).Error
  110. }
  111. func (s *CheckRecordService) CreateCheckRecordItem(checkRecordItem *models.CheckRecordItem) error {
  112. return s.wdb.Model(checkRecordItem).Create(checkRecordItem).Error
  113. }
  114. func (s *CheckRecordService) UpdateCheckRecordAlertItems(id int64, alertItemIds string) error {
  115. return s.wdb.Model(&models.CheckRecord{}).Where("id = ?", id).Update("alert_item_ids", alertItemIds).Error
  116. }
  117. func (s *CheckRecordService) GetCheckRecordItems(recordId int64) (recordItems []*models.CheckRecordItem, err error) {
  118. err = s.rdb.Model(&models.CheckRecordItem{}).Where("check_id = ?", recordId).Find(&recordItems).Error
  119. return
  120. }
  121. func (s *CheckRecordService) GetCheckRecordById(id int64) (record models.CheckRecord, err error) {
  122. err = s.rdb.Model(&record).Where("id = ?", id).First(&record).Error
  123. return
  124. }