package crontab import ( "fmt" "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" ) func (e *Entry) FindAdultAbortionRate(pastureList []*model.AppPastureList, cowType string, startTime, endTime int64) map[int64]string { res := make(map[int64]string) for _, pasture := range pastureList { var count int64 pref := e.DB.Model(new(model.EventAbortion)). Where("pasture_id = ?", pasture.Id). Where("abortion_at BETWEEN ? AND ?", startTime, endTime). Where("is_append = ?", pasturePb.IsShow_Ok) if cowType == "youth" { pref.Where("lact = ?", 0) } if cowType == "adult" { pref.Where("lact > ?", 0) } if err := pref.Count(&count).Error; err != nil { zaplog.Error("FindAdultAbortionRate", zap.Any("pasture_id", pasture.Id), zap.Any("err", err)) } res[pasture.Id] = fmt.Sprintf("%d", count) } return res } func (e *Entry) FindDepartureNumber(pastureList []*model.AppPastureList, departureType pasturePb.DepartureType_Kind, startTime, endTime int64) map[int64]string { res := make(map[int64]string) for _, pasture := range pastureList { var count int64 if err := e.DB.Model(new(model.EventDeparture)). Where("pasture_id = ?", pasture.Id). Where("departure_at BETWEEN ? AND ?", startTime, endTime). Where("departure_type = ?", departureType). Count(&count).Error; err != nil { zaplog.Error("FindAllDieNumber", zap.Any("pasture_id", pasture.Id), zap.Any("err", err)) } res[pasture.Id] = fmt.Sprintf("%d", count) } return res } func (e *Entry) FindDiseaseNumber(pastureList []*model.AppPastureList, startTime, endTime int64) map[int64]string { res := make(map[int64]string) for _, pasture := range pastureList { var count int64 if err := e.DB.Model(new(model.EventCowDisease)). Where("pasture_id = ?", pasture.Id). Where("disease_at BETWEEN ? AND ?", startTime, endTime). Where("diagnosed_result = ?", pasturePb.IsShow_Ok). Count(&count).Error; err != nil { zaplog.Error("FindDiseaseNumber", zap.Any("pasture_id", pasture.Id), zap.Any("err", err)) } res[pasture.Id] = fmt.Sprintf("%d", count) } return res } func (e *Entry) FindCureNumber(pastureList []*model.AppPastureList, startTime, endTime int64) map[int64]string { res := make(map[int64]string) for _, pasture := range pastureList { var count int64 if err := e.DB.Model(new(model.EventCowDisease)). Where("pasture_id = ?", pasture.Id). Where("curable_at BETWEEN ? AND ?", startTime, endTime). Where("diagnosed_result = ?", pasturePb.IsShow_Ok). Count(&count).Error; err != nil { zaplog.Error("FindCureNumber", zap.Any("pasture_id", pasture.Id), zap.Any("err", err)) } res[pasture.Id] = fmt.Sprintf("%d", count) } return res } func (e *Entry) FindCalfDieNumber(pastureList []*model.AppPastureList, departureType pasturePb.DepartureType_Kind, startTime, endTime int64) map[int64]string { res := make(map[int64]string) for _, pasture := range pastureList { var count int64 if err := e.DB.Model(new(model.EventDeparture)). Where("pasture_id = ?", pasture.Id). Where("departure_at BETWEEN ? AND ?", startTime, endTime). Where("departure_type = ?", departureType). Where("day_age <= ?", 60). Count(&count).Error; err != nil { zaplog.Error("FindAllDieNumber", zap.Any("pasture_id", pasture.Id), zap.Any("err", err)) } res[pasture.Id] = fmt.Sprintf("%d", count) } return res }