|
@@ -185,6 +185,9 @@ func (s *StoreEntry) SearchAnalysisAccuracy(ctx context.Context, req *operationP
|
|
|
})
|
|
|
|
|
|
pastureAnalysisAccuracy, err := s.PasturePrefAnalysisData(ctx, req)
|
|
|
+ if err != nil {
|
|
|
+ return nil, xerr.WithStack(err)
|
|
|
+ }
|
|
|
res.Data.Table = s.TitleList(ctx, pastureAnalysisAccuracy)
|
|
|
|
|
|
dashboardTopData, err := s.DashboardTopPasture(ctx, req)
|
|
@@ -211,6 +214,72 @@ func (s *StoreEntry) SearchAnalysisAccuracy(ctx context.Context, req *operationP
|
|
|
},
|
|
|
}
|
|
|
|
|
|
+ maTitleValueList, mcTitleValueList, saTitleValueList, scTitleValueList := make([]float64, 0), make([]float64, 0), make([]float64, 0), make([]float64, 0)
|
|
|
+ for pastureId, data := range pastureAnalysisAccuracy {
|
|
|
+ if _, err = s.GetGroupPastureListById(ctx, pastureId); err != nil {
|
|
|
+ zaplog.Error("SearchAnalysisAccuracy GetGroupPastureListById",
|
|
|
+ zap.Any("pastureId", pastureId), zap.Any("error", err))
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ if data == nil {
|
|
|
+ continue
|
|
|
+ }
|
|
|
+
|
|
|
+ mixedFodderAccurateRatioDataList := make([]string, 0)
|
|
|
+ for _, v := range data.MixedFodderAccurateRatio {
|
|
|
+ mixedFodderAccurateRatioDataList = append(mixedFodderAccurateRatioDataList, fmt.Sprintf("%.2f", v.Ratio))
|
|
|
+ maTitleValueList = append(maTitleValueList, v.Ratio)
|
|
|
+ }
|
|
|
+
|
|
|
+ mixedFodderCorrectRatioDataList := make([]string, 0)
|
|
|
+ for _, v := range data.MixedFodderCorrectRatio {
|
|
|
+ mixedFodderCorrectRatioDataList = append(mixedFodderCorrectRatioDataList, fmt.Sprintf("%.2f", v.Ratio))
|
|
|
+ mcTitleValueList = append(mcTitleValueList, v.Ratio)
|
|
|
+ }
|
|
|
+
|
|
|
+ sprinkleFodderRatioDataList := make([]string, 0)
|
|
|
+ for _, v := range data.SprinkleFodderAccurateRatio {
|
|
|
+ sprinkleFodderRatioDataList = append(sprinkleFodderRatioDataList, fmt.Sprintf("%.2f", v.Ratio))
|
|
|
+ saTitleValueList = append(saTitleValueList, v.Ratio)
|
|
|
+ }
|
|
|
+
|
|
|
+ sprinkleFodderCorrectRatioDataList := make([]string, 0)
|
|
|
+ for _, v := range data.SprinkleFodderCorrectRatio {
|
|
|
+ sprinkleFodderCorrectRatioDataList = append(sprinkleFodderCorrectRatioDataList, fmt.Sprintf("%.2f", v.Ratio))
|
|
|
+ scTitleValueList = append(scTitleValueList, v.Ratio)
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ pastureTopDataList, err := s.TopPasture(ctx, req)
|
|
|
+ if err != nil {
|
|
|
+ zaplog.Error("SearchAnalysisAccuracy", zap.Any("TopPasture", err), zap.Any("request", req))
|
|
|
+ return nil, xerr.WithStack(err)
|
|
|
+ }
|
|
|
+
|
|
|
+ sort.Float64s(maTitleValueList)
|
|
|
+ dashboardTopData1.MixedFodderAccurateRatio.MaxValue = fmt.Sprintf("%.2f", maTitleValueList[len(maTitleValueList)-1])
|
|
|
+ dashboardTopData1.MixedFodderAccurateRatio.MinValue = fmt.Sprintf("%.2f", maTitleValueList[0])
|
|
|
+ dashboardTopData1.MixedFodderAccurateRatio.MiddleValue = fmt.Sprintf("%.2f", tool.Median(maTitleValueList))
|
|
|
+ dashboardTopData1.MixedFodderAccurateRatio.TopOneName = pastureTopDataList.Data.MixedFodderAccurateRatio[0].PastureName
|
|
|
+
|
|
|
+ sort.Float64s(mcTitleValueList)
|
|
|
+ dashboardTopData1.MixedFodderCorrectRatio.MaxValue = fmt.Sprintf("%.2f", mcTitleValueList[len(mcTitleValueList)-1])
|
|
|
+ dashboardTopData1.MixedFodderCorrectRatio.MinValue = fmt.Sprintf("%.2f", mcTitleValueList[0])
|
|
|
+ dashboardTopData1.MixedFodderCorrectRatio.MiddleValue = fmt.Sprintf("%.2f", tool.Median(mcTitleValueList))
|
|
|
+ dashboardTopData1.MixedFodderCorrectRatio.TopOneName = pastureTopDataList.Data.MixedFodderCorrectRatio[0].PastureName
|
|
|
+
|
|
|
+ sort.Float64s(saTitleValueList)
|
|
|
+ dashboardTopData1.SprinkleFodderAccurateRatio.MaxValue = fmt.Sprintf("%.2f", saTitleValueList[len(saTitleValueList)-1])
|
|
|
+ dashboardTopData1.SprinkleFodderAccurateRatio.MinValue = fmt.Sprintf("%.2f", saTitleValueList[0])
|
|
|
+ dashboardTopData1.SprinkleFodderAccurateRatio.MiddleValue = fmt.Sprintf("%.2f", tool.Median(saTitleValueList))
|
|
|
+ dashboardTopData1.SprinkleFodderAccurateRatio.TopOneName = pastureTopDataList.Data.SprinkleFodderAccurateRatio[0].PastureName
|
|
|
+
|
|
|
+ sort.Float64s(scTitleValueList)
|
|
|
+ dashboardTopData1.SprinkleFodderCorrectRatio.MaxValue = fmt.Sprintf("%.2f", scTitleValueList[len(scTitleValueList)-1])
|
|
|
+ dashboardTopData1.SprinkleFodderCorrectRatio.MinValue = fmt.Sprintf("%.2f", scTitleValueList[0])
|
|
|
+ dashboardTopData1.SprinkleFodderCorrectRatio.MiddleValue = fmt.Sprintf("%.2f", tool.Median(scTitleValueList))
|
|
|
+ dashboardTopData1.SprinkleFodderCorrectRatio.TopOneName = pastureTopDataList.Data.SprinkleFodderCorrectRatio[0].PastureName
|
|
|
+
|
|
|
for _, v := range dashboardTopData.MixedFodderCorrectRatio {
|
|
|
dashboardTopData1.MixedFodderCorrectRatio.Title = append(dashboardTopData1.MixedFodderCorrectRatio.Title, v.PastureName)
|
|
|
dashboardTopData1.MixedFodderCorrectRatio.Ratio = append(dashboardTopData1.MixedFodderCorrectRatio.Ratio, v.Ratio)
|