sql.go 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. package mqtt
  2. import (
  3. "errors"
  4. "kpt-pasture/model"
  5. "gitee.com/xuyiping_admin/pkg/logger/zaplog"
  6. "go.uber.org/zap"
  7. "gitee.com/xuyiping_admin/pkg/xerr"
  8. "gorm.io/gorm"
  9. pasturePb "gitee.com/xuyiping_admin/go_proto/proto/go/backend/cow"
  10. )
  11. // NeckRingIsBind 脖环是否绑定
  12. func (e *Entry) NeckRingIsBind(number string) bool {
  13. var count int64 = 0
  14. if err := e.DB.Model(new(model.NeckRing)).Where("number = ?", number).
  15. Where("status != ?", pasturePb.NeckRingStatus_Unbind).
  16. Count(&count).Error; err != nil {
  17. return false
  18. }
  19. if count > 0 {
  20. return true
  21. }
  22. return false
  23. }
  24. func (e *Entry) GetCowInfoByNeckRingNumber(pastureId int64, neckRingNumber string) *model.Cow {
  25. res := &model.Cow{}
  26. if err := e.DB.Model(new(model.Cow)).
  27. Where("pasture_id = ?", pastureId).
  28. Where("neck_ring_number = ?", neckRingNumber).
  29. Where("admission_status = ?", pasturePb.AdmissionStatus_Admission).
  30. First(res).Error; err != nil {
  31. return nil
  32. }
  33. return res
  34. }
  35. func (e *Entry) GetSystemConfigure(name string) *model.SystemConfigure {
  36. res := &model.SystemConfigure{}
  37. if err := e.DB.Model(new(model.SystemConfigure)).
  38. Where("name = ?", name).
  39. Where("is_show = ?", pasturePb.IsShow_Ok).
  40. First(res).Error; err != nil {
  41. return nil
  42. }
  43. return res
  44. }
  45. func (e *Entry) IsExistNeckActiveHabit(neckRingNumber, heatDate string, frameId int32) (*model.NeckActiveHabit, int64) {
  46. count := int64(0)
  47. neckRingProcess := &model.NeckRingProcess{}
  48. if err := e.DB.Model(new(model.NeckRingProcess)).
  49. Where("neck_ring_number = ?", neckRingNumber).
  50. Where("active_date = ?", heatDate).
  51. Where("frameid = ?", frameId).
  52. Count(&count).
  53. First(neckRingProcess).Error; err != nil {
  54. return nil, 0
  55. }
  56. res := &model.NeckActiveHabit{}
  57. if neckRingProcess != nil {
  58. if neckRingProcess.HabitId > 0 {
  59. if err := e.DB.Model(new(model.NeckActiveHabit)).
  60. Where("id = ?", neckRingProcess.HabitId).
  61. First(res).Error; err != nil {
  62. return nil, 0
  63. }
  64. } else {
  65. if err := e.DB.Model(new(model.NeckActiveHabit)).
  66. Where("heat_date = ?", heatDate).
  67. Where("neck_ring_number = ?", neckRingNumber).
  68. Where("frameid = ?", frameId).
  69. First(res).Error; err != nil {
  70. return nil, 0
  71. }
  72. if err := e.DB.Model(new(model.NeckRingProcess)).
  73. Where("id = ?", neckRingProcess.Id).
  74. Where("frameid = ?", frameId).
  75. Update("habit_id", res.Id).Error; err != nil {
  76. return nil, 0
  77. }
  78. }
  79. }
  80. return res, count
  81. }
  82. // GetMinIdByHeatDate 获取最小的id
  83. func (e *Entry) GetMinIdByHeatDate(heatDate string, defaultId int64) (int64, error) {
  84. xMinId := struct {
  85. Id int64
  86. }{}
  87. if err := e.DB.Model(new(model.NeckActiveHabit)).
  88. Select("MIN(id) as id").
  89. Where("heat_date = ?", heatDate).
  90. First(&xMinId).Error; err != nil {
  91. if errors.Is(err, gorm.ErrRecordNotFound) {
  92. xMinId.Id = defaultId
  93. } else {
  94. return 0, xerr.WithStack(err)
  95. }
  96. }
  97. return xMinId.Id, nil
  98. }
  99. func (e *Entry) FindPastureList() []*model.AppPastureList {
  100. res := make([]*model.AppPastureList, 0)
  101. if err := e.DB.Model(new(model.AppPastureList)).
  102. Where("is_show = ?", pasturePb.IsShow_Ok).
  103. Find(&res).Error; err != nil {
  104. zaplog.Error("FindPastureList error", zap.Any("err", err))
  105. return res
  106. }
  107. return res
  108. }
  109. func (e *Entry) GetSystemConfigure2(pastureId int64, name string) (*model.SystemConfigure, error) {
  110. res := &model.SystemConfigure{}
  111. if err := e.DB.Model(new(model.SystemConfigure)).
  112. Where("name = ?", name).
  113. Where("pasture_id = ?", pastureId).
  114. Where("is_show = ?", pasturePb.IsShow_Ok).
  115. First(res).Error; err != nil {
  116. return nil, xerr.WithStack(err)
  117. }
  118. return res, nil
  119. }