cow_indicators_health.go 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  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. // FindAdultAbortionRate 成母牛流产率(全)
  10. func (e *Entry) FindAdultAbortionRate(pastureList []*model.AppPastureList, cowType string, startTime, endTime int64) map[int64]string {
  11. res := make(map[int64]string)
  12. for _, pasture := range pastureList {
  13. var count int64
  14. pref := e.DB.Model(new(model.EventAbortion)).
  15. Where("pasture_id = ?", pasture.Id).
  16. Where("abortion_at BETWEEN ? AND ?", startTime, endTime).
  17. Where("is_append = ?", pasturePb.IsShow_Ok)
  18. if cowType == "youth" {
  19. pref.Where("lact = ?", 0)
  20. }
  21. if cowType == "adult" {
  22. pref.Where("lact > ?", 0)
  23. }
  24. if err := pref.Count(&count).Error; err != nil {
  25. zaplog.Error("FindAdultAbortionRate", zap.Any("pasture_id", pasture.Id), zap.Any("err", err))
  26. }
  27. res[pasture.Id] = fmt.Sprintf("%d", count)
  28. }
  29. return res
  30. }
  31. // FindDepartureNumber 出栏量(销售)
  32. func (e *Entry) FindDepartureNumber(pastureList []*model.AppPastureList, saleKind pasturePb.SalesType_Kind, startTime, endTime int64) map[int64]string {
  33. res := make(map[int64]string)
  34. for _, pasture := range pastureList {
  35. var count int64
  36. if err := e.DB.Model(new(model.EventSale)).
  37. Where("pasture_id = ?", pasture.Id).
  38. Where("departure_at BETWEEN ? AND ?", startTime, endTime).
  39. Where("sale_kind = ?", saleKind).
  40. Count(&count).Error; err != nil {
  41. zaplog.Error("FindAllDieNumber", zap.Any("pasture_id", pasture.Id), zap.Any("err", err))
  42. }
  43. res[pasture.Id] = fmt.Sprintf("%d", count)
  44. }
  45. return res
  46. }
  47. // FindDiseaseNumber 发病头数
  48. func (e *Entry) FindDiseaseNumber(pastureList []*model.AppPastureList, startTime, endTime int64) map[int64]string {
  49. res := make(map[int64]string)
  50. for _, pasture := range pastureList {
  51. var count int64
  52. if err := e.DB.Model(new(model.EventCowDisease)).
  53. Where("pasture_id = ?", pasture.Id).
  54. Where("disease_at BETWEEN ? AND ?", startTime, endTime).
  55. Where("diagnosed_result = ?", pasturePb.IsShow_Ok).
  56. Count(&count).Error; err != nil {
  57. zaplog.Error("FindDiseaseNumber", zap.Any("pasture_id", pasture.Id), zap.Any("err", err))
  58. }
  59. res[pasture.Id] = fmt.Sprintf("%d", count)
  60. }
  61. return res
  62. }
  63. // FindCureNumber 治愈头数
  64. func (e *Entry) FindCureNumber(pastureList []*model.AppPastureList, startTime, endTime int64) map[int64]string {
  65. res := make(map[int64]string)
  66. for _, pasture := range pastureList {
  67. var count int64
  68. if err := e.DB.Model(new(model.EventCowDisease)).
  69. Where("pasture_id = ?", pasture.Id).
  70. Where("curable_at BETWEEN ? AND ?", startTime, endTime).
  71. Where("diagnosed_result = ?", pasturePb.IsShow_Ok).
  72. Count(&count).Error; err != nil {
  73. zaplog.Error("FindCureNumber", zap.Any("pasture_id", pasture.Id), zap.Any("err", err))
  74. }
  75. res[pasture.Id] = fmt.Sprintf("%d", count)
  76. }
  77. return res
  78. }
  79. // FindDeathNumber 全群牛死亡数
  80. func (e *Entry) FindDeathNumber(pastureList []*model.AppPastureList, startTime, endTime int64, isCalf bool) map[int64]string {
  81. res := make(map[int64]string)
  82. for _, pasture := range pastureList {
  83. var count int64
  84. pref := e.DB.Model(new(model.EventDeath)).
  85. Where("pasture_id = ?", pasture.Id).
  86. Where("death_at BETWEEN ? AND ?", startTime, endTime)
  87. if isCalf {
  88. pref.Where("day_age <= ?", 60)
  89. }
  90. if err := pref.Count(&count).Error; err != nil {
  91. zaplog.Error("FindAllDieNumber", zap.Any("pasture_id", pasture.Id), zap.Any("err", err))
  92. }
  93. res[pasture.Id] = fmt.Sprintf("%d", count)
  94. }
  95. return res
  96. }