123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127 |
- package backend
- import (
- "context"
- "errors"
- "kpt-pasture/model"
- "gorm.io/gorm"
- 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 _, cow := range cowList {
- newNeckRing := model.NewNeckRing(userModel.AppPasture.Id, cow.NeckRingNumber, cow, userModel.SystemUser)
- newNeckRingList = append(newNeckRingList, newNeckRing)
- newNeckRingBindLog := model.NewNeckRingBindLog(userModel.AppPasture.Id, cow.NeckRingNumber, cow, 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)
- }
- 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)
- }
- for _, cow := range cowList {
- newNeckRing := model.NewNeckRing(userModel.AppPasture.Id, cow.NeckRingNumber, cow, userModel.SystemUser)
- oldNeckRing := &model.NeckRing{}
- if err = s.DB.Model(new(model.NeckRing)).
- Where("pasture_id = ?", userModel.AppPasture.Id).
- Where("neck_ring_number = ?", cow.NeckRingNumber).
- First(oldNeckRing).Error; err != nil {
- if errors.Is(err, gorm.ErrRecordNotFound) {
- if err = s.DB.Model(new(model.NeckRing)).Create(newNeckRing).Error; err != nil {
- zaplog.Error("CowNeckRingNumberBound2-NewNeckRing", zap.Any("error", err))
- }
- } else {
- continue
- }
- }
- if oldNeckRing.Id > 0 {
- if err = s.DB.Model(new(model.NeckRing)).
- Where("id = ?", oldNeckRing.Id).Updates(map[string]interface{}{
- "cow_id": cow.Id,
- "ear_number": cow.EarNumber,
- "status": pasturePb.NeckRingStatus_Bind,
- }).Error; err != nil {
- zaplog.Error("CowNeckRingNumberBound2-OldNeckRing", 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
- }
|