123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246 |
- package backend
- import (
- "context"
- "errors"
- "kpt-pasture/model"
- pasturePb "gitee.com/xuyiping_admin/go_proto/proto/go/backend/cow"
- "gorm.io/gorm"
- "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("pasture_id = ?", userModel.AppPasture.Id).
- 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,
- "is_bind": pasturePb.NeckRingIsBind_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
- }
- func (s *StoreEntry) PastureInit(ctx context.Context, pastureId int64) error {
- if pastureId <= 0 {
- return xerr.New("pastureId invalid")
- }
- pasture := &model.AppPastureList{}
- if err := s.DB.Model(new(model.AppPastureList)).
- Where("id = ?", pastureId).
- First(pasture).Error; err != nil {
- return xerr.Customf("该牧场不存在:%d", pastureId)
- }
- deptList := make([]*model.SystemDept, 0)
- if err := s.DB.Model(new(model.SystemDept)).
- Where("id = ?", pasture.Id).
- Find(&deptList).Error; err != nil {
- return xerr.Customf("牧场初始化数据失败:%s", err.Error())
- }
- if len(deptList) > 0 {
- return xerr.Customf("该牧场已初始化:%d", pastureId)
- }
- dataWaringTypeEnumList := s.DataWaringTypeEnumList("all")
- dataWarningList := model.DataWarningInitData(pastureId, dataWaringTypeEnumList)
- if err := s.DB.Transaction(func(tx *gorm.DB) error {
- for _, dataWarning := range dataWarningList {
- if err := tx.Model(new(model.DataWarning)).
- Create(dataWarning).Error; err != nil {
- zaplog.Error("PastureInit-DataWarning", zap.Any("error", err))
- }
- dataWarningItemsList := model.DataWarningItemsInitData(pastureId, dataWarning)
- if err := tx.Model(new(model.DataWarningItems)).
- Create(dataWarningItemsList).Error; err != nil {
- zaplog.Error("PastureInit-DataWarningItems", zap.Any("error", err))
- }
- }
- nackRingConfigureList := model.NeckRingConfigureInit(pastureId)
- if err := tx.Model(new(model.NeckRingConfigure)).
- Create(nackRingConfigureList).Error; err != nil {
- zaplog.Error("PastureInit-NeckRingConfigure", zap.Any("error", err))
- }
- // 初始化牧场和部门数据
- newSystemPastureDept := model.NewSystemPastureDeptInit(pasture)
- if err := tx.Model(new(model.SystemDept)).
- Create(newSystemPastureDept).Error; err != nil {
- zaplog.Error("PastureInit-SystemDept", zap.Any("error", err))
- }
- newSystemDept := model.NewSystemDeptInit(pasture.Id, newSystemPastureDept.Id)
- if err := tx.Model(new(model.SystemDept)).
- Create(newSystemDept).Error; err != nil {
- zaplog.Error("PastureInit-SystemDept", zap.Any("error", err))
- }
- return nil
- }); err != nil {
- return xerr.WithStack(err)
- }
- return nil
- }
- func (s *StoreEntry) AdmissionAge(ctx context.Context) error {
- /*for k, v := range admissionAgeMap {
- cowInfo, err := s.GetCowInfoByEarNumber(ctx, 4, k)
- if err != nil {
- zaplog.Error("CalvingAge", zap.Any("k", k), zap.Any("v", v), zap.Any("err", err))
- continue
- }
- admissionAt, _ := util.TimeParseLocal(model.LayoutTime2, v)
- if !admissionAt.IsZero() {
- cowInfo.AdmissionAt = admissionAt.Unix()
- cowInfo.AdmissionAge = cowInfo.GetAdmissionAge()
- if err = s.DB.Model(new(model.Cow)).
- Where("id = ?", cowInfo.Id).
- Updates(map[string]interface{}{
- "admission_at": cowInfo.AdmissionAt,
- "admission_age": cowInfo.AdmissionAge,
- }).Error; err != nil {
- zaplog.Error("CalvingAge", zap.Any("err", err))
- }
- }
- }*/
- return nil
- }
- func (s *StoreEntry) CalvingAge(ctx context.Context) error {
- /*for k, v := range calvingAgeMap {
- if v == "" {
- continue
- }
- cowInfo, err := s.GetCowInfoByEarNumber(ctx, 4, k)
- if err != nil {
- zaplog.Error("CalvingAge", zap.Any("k", k), zap.Any("v", v), zap.Any("err", err))
- continue
- }
- calvingAt, _ := util.TimeParseLocal(model.LayoutTime2, v)
- if !calvingAt.IsZero() {
- cowInfo.LastCalvingAt = calvingAt.Unix()
- cowInfo.LactationAge = cowInfo.GetLactationDays()
- if err = s.DB.Model(new(model.Cow)).
- Where("id = ?", cowInfo.Id).
- Updates(map[string]interface{}{
- "last_calving_at": cowInfo.LastCalvingAt,
- "lactation_age": cowInfo.LactationAge,
- }).Error; err != nil {
- zaplog.Error("CalvingAge", zap.Any("err", err))
- }
- }
- }*/
- return nil
- }
|