cow_indicators_health.go 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. package crontab
  2. import (
  3. "fmt"
  4. "kpt-pasture/model"
  5. pasturePb "gitee.com/xuyiping_admin/go_proto/proto/go/backend/cow"
  6. "gitee.com/xuyiping_admin/pkg/logger/zaplog"
  7. "go.uber.org/zap"
  8. )
  9. func (e *Entry) FindAdultAbortionRate(pastureList []*model.AppPastureList, cowType string, startTime, endTime int64) map[int64]string {
  10. res := make(map[int64]string)
  11. for _, pasture := range pastureList {
  12. var count int64
  13. pref := e.DB.Model(new(model.EventAbortion)).
  14. Where("pasture_id = ?", pasture.Id).
  15. Where("abortion_at BETWEEN ? AND ?", startTime, endTime).
  16. Where("is_append = ?", pasturePb.IsShow_Ok)
  17. if cowType == "youth" {
  18. pref.Where("lact = ?", 0)
  19. }
  20. if cowType == "adult" {
  21. pref.Where("lact > ?", 0)
  22. }
  23. if err := pref.Count(&count).Error; err != nil {
  24. zaplog.Error("FindAdultAbortionRate", zap.Any("pasture_id", pasture.Id), zap.Any("err", err))
  25. }
  26. res[pasture.Id] = fmt.Sprintf("%d", count)
  27. }
  28. return res
  29. }
  30. func (e *Entry) FindDepartureNumber(pastureList []*model.AppPastureList, saleKind pasturePb.SalesType_Kind, startTime, endTime int64) map[int64]string {
  31. res := make(map[int64]string)
  32. for _, pasture := range pastureList {
  33. var count int64
  34. if err := e.DB.Model(new(model.EventSale)).
  35. Where("pasture_id = ?", pasture.Id).
  36. Where("departure_at BETWEEN ? AND ?", startTime, endTime).
  37. Where("sale_kind = ?", saleKind).
  38. Count(&count).Error; err != nil {
  39. zaplog.Error("FindAllDieNumber", zap.Any("pasture_id", pasture.Id), zap.Any("err", err))
  40. }
  41. res[pasture.Id] = fmt.Sprintf("%d", count)
  42. }
  43. return res
  44. }
  45. func (e *Entry) FindDiseaseNumber(pastureList []*model.AppPastureList, startTime, endTime int64) map[int64]string {
  46. res := make(map[int64]string)
  47. for _, pasture := range pastureList {
  48. var count int64
  49. if err := e.DB.Model(new(model.EventCowDisease)).
  50. Where("pasture_id = ?", pasture.Id).
  51. Where("disease_at BETWEEN ? AND ?", startTime, endTime).
  52. Where("diagnosed_result = ?", pasturePb.IsShow_Ok).
  53. Count(&count).Error; err != nil {
  54. zaplog.Error("FindDiseaseNumber", zap.Any("pasture_id", pasture.Id), zap.Any("err", err))
  55. }
  56. res[pasture.Id] = fmt.Sprintf("%d", count)
  57. }
  58. return res
  59. }
  60. func (e *Entry) FindCureNumber(pastureList []*model.AppPastureList, startTime, endTime int64) map[int64]string {
  61. res := make(map[int64]string)
  62. for _, pasture := range pastureList {
  63. var count int64
  64. if err := e.DB.Model(new(model.EventCowDisease)).
  65. Where("pasture_id = ?", pasture.Id).
  66. Where("curable_at BETWEEN ? AND ?", startTime, endTime).
  67. Where("diagnosed_result = ?", pasturePb.IsShow_Ok).
  68. Count(&count).Error; err != nil {
  69. zaplog.Error("FindCureNumber", zap.Any("pasture_id", pasture.Id), zap.Any("err", err))
  70. }
  71. res[pasture.Id] = fmt.Sprintf("%d", count)
  72. }
  73. return res
  74. }
  75. func (e *Entry) FindDeathNumber(pastureList []*model.AppPastureList, startTime, endTime int64, isCalf bool) map[int64]string {
  76. res := make(map[int64]string)
  77. for _, pasture := range pastureList {
  78. var count int64
  79. pref := e.DB.Model(new(model.EventDeath)).
  80. Where("pasture_id = ?", pasture.Id).
  81. Where("death_at BETWEEN ? AND ?", startTime, endTime)
  82. if isCalf {
  83. pref.Where("day_age <= ?", 60)
  84. }
  85. if err := pref.Count(&count).Error; err != nil {
  86. zaplog.Error("FindAllDieNumber", zap.Any("pasture_id", pasture.Id), zap.Any("err", err))
  87. }
  88. res[pasture.Id] = fmt.Sprintf("%d", count)
  89. }
  90. return res
  91. }