cow_indicators_health.go 3.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  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, departureType pasturePb.DepartureType_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.EventDeparture)).
  35. Where("pasture_id = ?", pasture.Id).
  36. Where("departure_at BETWEEN ? AND ?", startTime, endTime).
  37. Where("departure_type = ?", departureType).
  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) FindCalfDieNumber(pastureList []*model.AppPastureList, departureType pasturePb.DepartureType_Kind, startTime, endTime int64) map[int64]string {
  76. res := make(map[int64]string)
  77. for _, pasture := range pastureList {
  78. var count int64
  79. if err := e.DB.Model(new(model.EventDeparture)).
  80. Where("pasture_id = ?", pasture.Id).
  81. Where("departure_at BETWEEN ? AND ?", startTime, endTime).
  82. Where("departure_type = ?", departureType).
  83. Where("day_age <= ?", 60).
  84. Count(&count).Error; err != nil {
  85. zaplog.Error("FindAllDieNumber", zap.Any("pasture_id", pasture.Id), zap.Any("err", err))
  86. }
  87. res[pasture.Id] = fmt.Sprintf("%d", count)
  88. }
  89. return res
  90. }