test_service.go 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. package backend
  2. import (
  3. "context"
  4. "errors"
  5. "kpt-pasture/model"
  6. "gorm.io/gorm"
  7. pasturePb "gitee.com/xuyiping_admin/go_proto/proto/go/backend/cow"
  8. "gitee.com/xuyiping_admin/pkg/logger/zaplog"
  9. "go.uber.org/zap"
  10. "gitee.com/xuyiping_admin/pkg/xerr"
  11. )
  12. func (s *StoreEntry) CowNeckRingNumberBound(ctx context.Context, pagination *pasturePb.PaginationModel) error {
  13. userModel, err := s.GetUserModel(ctx)
  14. if err != nil {
  15. return xerr.WithStack(err)
  16. }
  17. lastNeckRing := &model.NeckRing{}
  18. if err = s.DB.Model(new(model.NeckRing)).
  19. Order("cow_id desc").
  20. First(lastNeckRing).Error; err != nil {
  21. return xerr.WithStack(err)
  22. }
  23. cowList := make([]*model.Cow, 0)
  24. if err = s.DB.Model(new(model.Cow)).
  25. Where("id > ?", lastNeckRing.CowId).
  26. Limit(int(pagination.PageSize)).
  27. Offset(int(pagination.PageOffset)).
  28. Find(&cowList).Error; err != nil {
  29. return xerr.WithStack(err)
  30. }
  31. newNeckRingList := make([]*model.NeckRing, 0)
  32. newNeckRingBindLogList := make([]*model.NeckRingBindLog, 0)
  33. for _, cow := range cowList {
  34. newNeckRing := model.NewNeckRing(userModel.AppPasture.Id, cow.NeckRingNumber, cow, userModel.SystemUser)
  35. newNeckRingList = append(newNeckRingList, newNeckRing)
  36. newNeckRingBindLog := model.NewNeckRingBindLog(userModel.AppPasture.Id, cow.NeckRingNumber, cow, userModel.SystemUser)
  37. newNeckRingBindLogList = append(newNeckRingBindLogList, newNeckRingBindLog)
  38. }
  39. if err = s.DB.Model(new(model.NeckRing)).
  40. Create(newNeckRingList).Error; err != nil {
  41. zaplog.Error("CowNeckRingNumberBound-NewNeckRing", zap.Any("error", err))
  42. }
  43. if err = s.DB.Model(new(model.NeckRingBindLog)).
  44. Create(newNeckRingBindLogList).Error; err != nil {
  45. zaplog.Error("CowNeckRingNumberBound-NeckRingBindLog", zap.Any("error", err))
  46. }
  47. return nil
  48. }
  49. func (s *StoreEntry) CowNeckRingNumberBound2(ctx context.Context, pagination *pasturePb.PaginationModel) error {
  50. userModel, err := s.GetUserModel(ctx)
  51. if err != nil {
  52. return xerr.WithStack(err)
  53. }
  54. cowList := make([]*model.Cow, 0)
  55. if err = s.DB.Model(new(model.Cow)).
  56. Where("neck_ring_number != ?", "").
  57. Limit(int(pagination.PageSize)).
  58. Offset(int(pagination.PageOffset)).
  59. Find(&cowList).Error; err != nil {
  60. return xerr.WithStack(err)
  61. }
  62. for _, cow := range cowList {
  63. newNeckRing := model.NewNeckRing(userModel.AppPasture.Id, cow.NeckRingNumber, cow, userModel.SystemUser)
  64. oldNeckRing := &model.NeckRing{}
  65. if err = s.DB.Model(new(model.NeckRing)).
  66. Where("pasture_id = ?", userModel.AppPasture.Id).
  67. Where("neck_ring_number = ?", cow.NeckRingNumber).
  68. First(oldNeckRing).Error; err != nil {
  69. if errors.Is(err, gorm.ErrRecordNotFound) {
  70. if err = s.DB.Model(new(model.NeckRing)).Create(newNeckRing).Error; err != nil {
  71. zaplog.Error("CowNeckRingNumberBound2-NewNeckRing", zap.Any("error", err))
  72. }
  73. } else {
  74. continue
  75. }
  76. }
  77. if oldNeckRing.Id > 0 {
  78. if err = s.DB.Model(new(model.NeckRing)).
  79. Where("id = ?", oldNeckRing.Id).Updates(map[string]interface{}{
  80. "cow_id": cow.Id,
  81. "ear_number": cow.EarNumber,
  82. "status": pasturePb.NeckRingStatus_Bind,
  83. }).Error; err != nil {
  84. zaplog.Error("CowNeckRingNumberBound2-OldNeckRing", zap.Any("error", err))
  85. }
  86. }
  87. }
  88. return nil
  89. }
  90. func (s *StoreEntry) UpdateCowPen(ctx context.Context, pagination *pasturePb.PaginationModel) error {
  91. cowList := make([]*model.Cow, 0)
  92. if err := s.DB.Model(new(model.Cow)).
  93. Where("pen_name = ?", "").
  94. Limit(int(pagination.PageSize)).
  95. Offset(int(pagination.PageOffset)).
  96. Find(&cowList).Error; err != nil {
  97. return xerr.WithStack(err)
  98. }
  99. penMap := s.PenMap(ctx, 1)
  100. for _, v := range cowList {
  101. pen := penMap[v.PenId]
  102. if pen == nil {
  103. continue
  104. }
  105. if err := s.DB.Model(new(model.Cow)).
  106. Where("id = ?", v.Id).
  107. Update("pen_name", pen.Name).Error; err != nil {
  108. zaplog.Error("UpdateCowPen", zap.Any("error", err))
  109. }
  110. }
  111. return nil
  112. }