analysis.go 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. package backend
  2. import (
  3. "context"
  4. "kpt-pasture/model"
  5. "net/http"
  6. pasturePb "gitee.com/xuyiping_admin/go_proto/proto/go/backend/cow"
  7. )
  8. // GrowthCurve 生长曲线 获取图表数据
  9. func (s *StoreEntry) GrowthCurve(ctx context.Context, req *pasturePb.SearchGrowthCurvesRequest) (*pasturePb.GrowthCurvesResponse, error) {
  10. // 查询数据
  11. cowList := make([]*model.Cow, 0)
  12. pref := s.DB.Model(new(model.Cow)).Where("is_remove = ?", pasturePb.IsShow_Ok)
  13. if req.GetCowId() != "" {
  14. pref.Where("id IN ?", req.GetCowId())
  15. }
  16. if req.BirthStartDate > 0 && req.BirthEndDate > 0 && req.BirthStartDate <= req.BirthEndDate {
  17. pref.Where("birth_at BETWEEN ? AND ?", req.GetBirthStartDate(), req.GetBirthEndDate())
  18. }
  19. if err := pref.Find(&cowList).Error; err != nil {
  20. return nil, err
  21. }
  22. // 计算图表数据
  23. chartsList := &pasturePb.Charts{
  24. CowId: make([]int32, 0),
  25. Weight: make([]float32, 0),
  26. DayAge: make([]int32, 0),
  27. }
  28. cowData := make([]*pasturePb.CowList, 0)
  29. for _, cow := range cowList {
  30. currentWeight := float32(cow.CurrentWeight) / 100
  31. cowData = append(cowData, &pasturePb.CowList{
  32. CowId: int32(cow.Id),
  33. EarNumber: cow.EarNumber,
  34. DayAge: cow.GetDayAge(),
  35. PenName: "",
  36. CurrentWeight: currentWeight,
  37. BirthAt: int32(cow.BirthAt),
  38. BirthWeight: float32(cow.BirthWeight) / 100,
  39. LastWeightAt: int32(cow.LastWeightAt),
  40. DailyWeightGain: 0,
  41. AverageDailyWeightGain: 0,
  42. })
  43. chartsList.CowId = append(chartsList.CowId, int32(cow.Id))
  44. chartsList.Weight = append(chartsList.Weight, currentWeight)
  45. chartsList.DayAge = append(chartsList.DayAge, cow.GetDayAge())
  46. }
  47. // 返回数据
  48. return &pasturePb.GrowthCurvesResponse{
  49. Code: http.StatusOK,
  50. Message: "success",
  51. Data: &pasturePb.GrowthCurveData{
  52. Table: cowData,
  53. Charts: chartsList,
  54. },
  55. }, nil
  56. }