package backend import ( "context" "kpt-pasture/model" pasturePb "gitee.com/xuyiping_admin/go_proto/proto/go/backend/cow" "gitee.com/xuyiping_admin/pkg/logger/zaplog" "go.uber.org/zap" "gitee.com/xuyiping_admin/pkg/xerr" ) func (s *StoreEntry) CowNeckRingNumberBound(ctx context.Context, pagination *pasturePb.PaginationModel) error { userModel, err := s.GetUserModel(ctx) if err != nil { return xerr.WithStack(err) } lastNeckRing := &model.NeckRing{} if err = s.DB.Model(new(model.NeckRing)). Order("cow_id desc"). First(lastNeckRing).Error; err != nil { return xerr.WithStack(err) } cowList := make([]*model.Cow, 0) if err = s.DB.Model(new(model.Cow)). Where("id > ?", lastNeckRing.CowId). Limit(int(pagination.PageSize)). Offset(int(pagination.PageOffset)). Find(&cowList).Error; err != nil { return xerr.WithStack(err) } newNeckRingList := make([]*model.NeckRing, 0) newNeckRingBindLogList := make([]*model.NeckRingBindLog, 0) for _, v := range cowList { newNeckRing := model.NewNeckRing(userModel.AppPasture.Id, v.NeckRingNumber, v.Id, userModel.SystemUser) newNeckRingList = append(newNeckRingList, newNeckRing) newNeckRingBindLog := model.NewNeckRingBindLog(userModel.AppPasture.Id, v.NeckRingNumber, v.Id, userModel.SystemUser) newNeckRingBindLogList = append(newNeckRingBindLogList, newNeckRingBindLog) } if err = s.DB.Model(new(model.NeckRing)). Create(newNeckRingList).Error; err != nil { zaplog.Error("CowNeckRingNumberBound-NewNeckRing", zap.Any("error", err)) } if err = s.DB.Model(new(model.NeckRingBindLog)). Create(newNeckRingBindLogList).Error; err != nil { zaplog.Error("CowNeckRingNumberBound-NeckRingBindLog", zap.Any("error", err)) } return nil } func (s *StoreEntry) CowNeckRingNumberBound2(ctx context.Context, pagination *pasturePb.PaginationModel) error { userModel, err := s.GetUserModel(ctx) if err != nil { return xerr.WithStack(err) } lastNeckRing := &model.NeckRing{} if err = s.DB.Model(new(model.NeckRing)). Order("cow_id desc"). First(lastNeckRing).Error; err != nil { return xerr.WithStack(err) } cowList := make([]*model.Cow, 0) if err = s.DB.Model(new(model.Cow)). Where("neck_ring_number != ?", ""). Limit(int(pagination.PageSize)). Offset(int(pagination.PageOffset)). Find(&cowList).Error; err != nil { return xerr.WithStack(err) } newNeckRingList := make([]*model.NeckRing, 0) newNeckRingBindLogList := make([]*model.NeckRingBindLog, 0) for _, v := range cowList { newNeckRing := model.NewNeckRing(userModel.AppPasture.Id, v.NeckRingNumber, v.Id, userModel.SystemUser) newNeckRingList = append(newNeckRingList, newNeckRing) newNeckRingBindLog := model.NewNeckRingBindLog(userModel.AppPasture.Id, v.NeckRingNumber, v.Id, userModel.SystemUser) newNeckRingBindLogList = append(newNeckRingBindLogList, newNeckRingBindLog) } if err = s.DB.Model(new(model.NeckRing)). Create(newNeckRingList).Error; err != nil { zaplog.Error("CowNeckRingNumberBound-NewNeckRing", zap.Any("error", err)) } if err = s.DB.Model(new(model.NeckRingBindLog)). Create(newNeckRingBindLogList).Error; err != nil { zaplog.Error("CowNeckRingNumberBound-NeckRingBindLog", zap.Any("error", err)) } return nil } func (s *StoreEntry) UpdateCowPen(ctx context.Context, pagination *pasturePb.PaginationModel) error { cowList := make([]*model.Cow, 0) if err := s.DB.Model(new(model.Cow)). Where("pen_name = ?", ""). Limit(int(pagination.PageSize)). Offset(int(pagination.PageOffset)). Find(&cowList).Error; err != nil { return xerr.WithStack(err) } penMap := s.PenMap(ctx, 1) for _, v := range cowList { pen := penMap[v.PenId] if pen == nil { continue } if err := s.DB.Model(new(model.Cow)). Where("id = ?", v.Id). Update("pen_name", pen.Name).Error; err != nil { zaplog.Error("UpdateCowPen", zap.Any("error", err)) } } return nil }