123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202 |
- package backend
- import (
- "context"
- "errors"
- "kpt-pasture/model"
- pasturePb "gitee.com/xuyiping_admin/go_proto/proto/go/backend/cow"
- "gitee.com/xuyiping_admin/pkg/xerr"
- "gorm.io/gorm"
- )
- // FindLastEventMatingByCowId 根据cowId获取最近一次配种表信息
- func (s *StoreEntry) FindLastEventMatingByCowId(ctx context.Context, pastureId, cowId int64) (*model.EventMating, error) {
- newEventMating := &model.EventMating{}
- if err := s.DB.Model(new(model.EventMating)).
- Where("cow_id = ?", cowId).
- Where("pasture_id = ?", pastureId).
- Order("id desc").
- First(newEventMating).Error; err != nil {
- return nil, xerr.WithStack(err)
- }
- return newEventMating, nil
- }
- func (s *StoreEntry) FindEventEstrusByCowId(pastureId, cowId int64, startTime, endTime int64) bool {
- var count int64
- if err := s.DB.Model(new(model.EventEstrus)).
- Where("cow_id = ?", cowId).
- Where("pasture_id = ?", pastureId).
- Where("reality_day BETWEEN ? AND ?", startTime, endTime).
- Where("is_show = ? ", pasturePb.IsShow_Ok).
- Count(&count).Error; err != nil {
- return false
- }
- return count > 0
- }
- func (s *StoreEntry) FindEventMatingByCowId(pastureId, cowId int64) bool {
- var count int64
- if err := s.DB.Model(new(model.EventMating)).
- Where("cow_id = ?", cowId).
- Where("pasture_id = ?", pastureId).
- Where("is_show = ? ", pasturePb.IsShow_Ok).
- Count(&count).Error; err != nil {
- return false
- }
- return count > 0
- }
- func (s *StoreEntry) GetOutboundById(ctx context.Context, pastureId, id int64) (*model.Outbound, error) {
- res := &model.Outbound{}
- if err := s.DB.Model(new(model.Outbound)).Where("pasture_id = ?", pastureId).
- Where("id = ?", id).First(res).Error; err != nil {
- return nil, xerr.WithStack(err)
- }
- return res, nil
- }
- func (s *StoreEntry) GetOutboundDetailByOutboundId(ctx context.Context, id int64) ([]*model.OutboundDetail, error) {
- list := make([]*model.OutboundDetail, 0)
- if err := s.DB.Model(new(model.OutboundDetail)).
- Where("outbound_id = ?", id).
- Where("is_delete = ?", pasturePb.IsShow_Ok).
- Find(&list).Error; err != nil {
- return nil, xerr.WithStack(err)
- }
- return list, nil
- }
- func (s *StoreEntry) FindEventPregnantCheckIsExIstByCowId(ctx context.Context, cow *model.Cow) (*model.EventPregnantCheck, error) {
- newEventPregnantCheck := &model.EventPregnantCheck{}
- if err := s.DB.Model(new(model.EventPregnantCheck)).
- Where("cow_id = ?", cow.Id).
- Where("lact = ?", cow.Lact).
- Where("status = ?", pasturePb.IsShow_No).
- Order("id desc").
- First(newEventPregnantCheck).Error; err != nil {
- if errors.Is(err, gorm.ErrRecordNotFound) {
- return nil, xerr.Customf("该牛只: %d 孕检数据未找到", cow.Id)
- } else {
- return nil, xerr.WithStack(err)
- }
- }
- return newEventPregnantCheck, nil
- }
- func (s *StoreEntry) DiseaseMaps(ctx context.Context) (map[int64]*model.Disease, error) {
- res := make(map[int64]*model.Disease)
- list := make([]*model.Disease, 0)
- if err := s.DB.Model(new(model.Disease)).Where("is_show = ?", pasturePb.IsShow_Ok).Find(&list).Error; err != nil {
- return nil, xerr.WithStack(err)
- }
- for _, v := range list {
- res[v.Id] = v
- }
- return res, nil
- }
- // NeckRingIsExist 根据neckRingNumber判断该耳环是否存在
- func (s *StoreEntry) NeckRingIsExist(pastureId int64, number string) (*model.NeckRing, bool) {
- neckRing := &model.NeckRing{}
- if err := s.DB.Model(new(model.NeckRing)).
- Where("neck_ring_number = ?", number).
- Where("pasture_id = ?", pastureId).
- First(neckRing).Error; err != nil {
- if errors.Is(err, gorm.ErrRecordNotFound) {
- return nil, false
- } else {
- return nil, false
- }
- }
- return neckRing, true
- }
- func (s *StoreEntry) GetEventLogList(
- cowId int64, lact int32,
- eventCategoryId pasturePb.EventCategory_Kind,
- paginationModel *pasturePb.PaginationModel,
- ) ([]*model.EventCowLog, error) {
- eventLogList := make([]*model.EventCowLog, 0)
- newEventCowLog := &model.EventCowLog{CowId: cowId}
- pref := s.DB.Table(newEventCowLog.TableName()).
- Where("cow_id = ?", cowId)
- if lact >= 0 {
- pref.Where("lact = ?", lact)
- }
- if eventCategoryId > 0 {
- pref.Where("event_category_id = ?", eventCategoryId)
- }
- if err := pref.Order("id desc").
- Offset(int(paginationModel.PageOffset)).
- Limit(int(paginationModel.PageSize)).
- Find(&eventLogList).Error; err != nil {
- return nil, xerr.WithStack(err)
- }
- return eventLogList, nil
- }
- func (s *StoreEntry) FindIndicatorsDetailsList(ctx context.Context) ([]*model.IndicatorsDetails, error) {
- list := make([]*model.IndicatorsDetails, 0)
- if err := s.DB.Model(new(model.IndicatorsDetails)).Find(&list).Error; err != nil {
- return nil, xerr.WithStack(err)
- }
- return list, nil
- }
- func (s *StoreEntry) GetCowLastEvent(pastureId, cowId int64, eventCategoryId pasturePb.EventCategory_Kind) *model.EventCowLog {
- newEventCowLog := &model.EventCowLog{CowId: cowId}
- pref := s.DB.Table(newEventCowLog.TableName()).
- Where("cow_id = ?", cowId).Where("pasture_id = ?", pastureId)
- if eventCategoryId > 0 {
- pref.Where("event_category_kind = ?", eventCategoryId)
- }
- if err := pref.Order("id desc").
- First(newEventCowLog); err != nil {
- return nil
- }
- return newEventCowLog
- }
- // IsExistCalvingCalf 根据cowId查询犊牛信息
- func (s *StoreEntry) IsExistCalvingCalf(pastureId, cowId int64) (*model.CalvingCalf, bool) {
- calvingCalf := &model.CalvingCalf{}
- if err := s.DB.Model(new(model.CalvingCalf)).
- Where("cow_id = ?", cowId).
- Where("pasture_id = ?", pastureId).
- First(calvingCalf).Error; err != nil {
- if errors.Is(err, gorm.ErrRecordNotFound) {
- return nil, false
- } else {
- return nil, false
- }
- }
- return calvingCalf, true
- }
- func (s *StoreEntry) GetAppPastureListByFarmId(ctx context.Context, farmId string) (*model.AppPastureList, error) {
- res := &model.AppPastureList{}
- if err := s.DB.Model(new(model.AppPastureList)).
- Where("farm_id = ?", farmId).
- First(res).Error; err != nil {
- if errors.Is(err, gorm.ErrRecordNotFound) {
- return nil, xerr.Custom("请选择牧场信息")
- } else {
- return nil, xerr.WithStack(err)
- }
- }
- if res.Id == 0 {
- return nil, xerr.Custom("请选择牧场信息")
- }
- if res.IsShow != pasturePb.IsShow_Ok {
- return nil, xerr.Custom("改牧场已禁用")
- }
- return res, nil
- }
|