sql.go 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  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) GetCowInfoByImei(imei string) *model.Cow {
  25. res := &model.Cow{}
  26. if err := e.DB.Model(new(model.Cow)).Where("neck_ring_number = ?", imei).First(res).Error; err != nil {
  27. return nil
  28. }
  29. return res
  30. }
  31. func (e *Entry) GetSystemConfigure(name string) *model.SystemConfigure {
  32. res := &model.SystemConfigure{}
  33. if err := e.DB.Model(new(model.SystemConfigure)).
  34. Where("name = ?", name).
  35. Where("is_show = ?", pasturePb.IsShow_Ok).
  36. First(res).Error; err != nil {
  37. return nil
  38. }
  39. return res
  40. }
  41. func (e *Entry) IsExistNeckActiveHabit(neckRingNumber, heatDate string, frameId int32) (*model.NeckActiveHabit, int64) {
  42. count := int64(0)
  43. neckRingProcess := &model.NeckRingProcess{}
  44. if err := e.DB.Model(new(model.NeckRingProcess)).
  45. Where("neck_ring_number = ?", neckRingNumber).
  46. Where("active_date = ?", heatDate).
  47. Where("frameid = ?", frameId).
  48. Count(&count).Error; err != nil {
  49. return nil, 0
  50. }
  51. res := &model.NeckActiveHabit{}
  52. if neckRingProcess != nil && neckRingProcess.HabitId > 0 {
  53. if err := e.DB.Model(new(model.NeckActiveHabit)).
  54. Where("id = ?", neckRingProcess.HabitId).
  55. First(res).Error; err != nil {
  56. return nil, 0
  57. }
  58. }
  59. return res, count
  60. }
  61. // GetMinIdByHeatDate 获取最小的id
  62. func (e *Entry) GetMinIdByHeatDate(heatDate string, defaultId int64) (int64, error) {
  63. xMinId := struct {
  64. Id int64
  65. }{}
  66. if err := e.DB.Model(new(model.NeckActiveHabit)).
  67. Select("MIN(id) as id").
  68. //Where("heat_date = ?", minHeatDateParse.AddDate(0, 0, -1).Format(model.LayoutDate2)).
  69. Where("heat_date >= ?", heatDate).
  70. First(&xMinId).Error; err != nil {
  71. if errors.Is(err, gorm.ErrRecordNotFound) {
  72. xMinId.Id = defaultId
  73. } else {
  74. return 0, xerr.WithStack(err)
  75. }
  76. }
  77. return xMinId.Id, nil
  78. }
  79. func (e *Entry) FindPastureList() []*model.AppPastureList {
  80. res := make([]*model.AppPastureList, 0)
  81. if err := e.DB.Model(new(model.AppPastureList)).
  82. Where("is_show = ?", pasturePb.IsShow_Ok).
  83. Find(&res).Error; err != nil {
  84. zaplog.Error("FindPastureList error", zap.Any("err", err))
  85. return res
  86. }
  87. return res
  88. }
  89. func (e *Entry) GetSystemConfigure2(pastureId int64, name string) (*model.SystemConfigure, error) {
  90. res := &model.SystemConfigure{}
  91. if err := e.DB.Model(new(model.SystemConfigure)).
  92. Where("name = ?", name).
  93. Where("pasture_id = ?", pastureId).
  94. Where("is_show = ?", pasturePb.IsShow_Ok).
  95. First(res).Error; err != nil {
  96. return nil, xerr.WithStack(err)
  97. }
  98. return res, nil
  99. }