Browse Source

dashboard: accuracy

Yi 1 year ago
parent
commit
4e451327f6
2 changed files with 72 additions and 10 deletions
  1. 13 0
      model/analysis_accuracy.go
  2. 59 10
      module/backend/dashboard_service.go

+ 13 - 0
model/analysis_accuracy.go

@@ -27,6 +27,19 @@ func (c *AnalysisAccuracy) TableName() string {
 	return "analysis_accuracy"
 }
 
+type SearchAnalysisAccuracyResponse1 struct {
+	Code int32        `json:"code"`
+	Msg  string       `json:"msg"`
+	Data *PastureTop1 `json:"data"`
+}
+
+type PastureTop1 struct {
+	MixedFodderAccurateRatio    [][]string `json:"mixed_fodder_accurate_ratio"`
+	MixedFodderCorrectRatio     [][]string `json:"mixed_fodder_correct_ratio"`
+	SprinkleFodderAccurateRatio [][]string `json:"sprinkle_fodder_accurate_ratio"`
+	SprinkleFodderCorrectRatio  [][]string `json:"sprinkle_fodder_correct_ratio"`
+}
+
 type SearchAnalysisAccuracyResponse struct {
 	Code int32                 `json:"code"`
 	Msg  string                `json:"msg"`

+ 59 - 10
module/backend/dashboard_service.go

@@ -75,7 +75,6 @@ func (s *StoreEntry) PasturePrefAnalysisData(ctx context.Context, req *operation
 }
 
 func (s *StoreEntry) PasturePrefExecTimeData(ctx context.Context, req *operationPb.SearchAnalysisAccuracyRequest) (map[string]*model.ExecTimeData, error) {
-
 	res := make(map[string]*model.ExecTimeData, 0)
 	wg := sync.WaitGroup{}
 	wg.Add(len(req.PastureIds))
@@ -167,7 +166,50 @@ func (s *StoreEntry) PastureSprinkleFeedTime(ctx context.Context, req *operation
 	return res, nil
 }
 
-func (s *StoreEntry) SearchAnalysisAccuracy(ctx context.Context, req *operationPb.SearchAnalysisAccuracyRequest) (*model.SearchAnalysisAccuracyResponse, error) {
+func (s *StoreEntry) SearchAnalysisAccuracy(ctx context.Context, req *operationPb.SearchAnalysisAccuracyRequest) (*model.SearchAnalysisAccuracyResponse1, error) {
+	res := &model.SearchAnalysisAccuracyResponse1{
+		Code: http.StatusOK,
+		Msg:  "ok",
+		Data: nil,
+	}
+
+	dashboardTopData, err := s.DashboardTopPasture(ctx, req)
+	if err != nil {
+		return nil, xerr.WithStack(err)
+	}
+
+	dashboardTopData1 := &model.PastureTop1{
+		MixedFodderAccurateRatio:    make([][]string, 2),
+		MixedFodderCorrectRatio:     make([][]string, 2),
+		SprinkleFodderAccurateRatio: make([][]string, 2),
+		SprinkleFodderCorrectRatio:  make([][]string, 2),
+	}
+
+	for _, v := range dashboardTopData.MixedFodderCorrectRatio {
+		dashboardTopData1.MixedFodderCorrectRatio[0] = append(dashboardTopData1.MixedFodderCorrectRatio[0], v.PastureName)
+		dashboardTopData1.MixedFodderCorrectRatio[1] = append(dashboardTopData1.MixedFodderCorrectRatio[1], fmt.Sprintf("%f%", v.Ratio))
+	}
+
+	for _, v := range dashboardTopData.MixedFodderAccurateRatio {
+		dashboardTopData1.MixedFodderAccurateRatio[0] = append(dashboardTopData1.MixedFodderAccurateRatio[0], v.PastureName)
+		dashboardTopData1.MixedFodderAccurateRatio[1] = append(dashboardTopData1.MixedFodderAccurateRatio[1], fmt.Sprintf("%f%", v.Ratio))
+	}
+
+	for _, v := range dashboardTopData.SprinkleFodderAccurateRatio {
+		dashboardTopData1.SprinkleFodderAccurateRatio[0] = append(dashboardTopData1.SprinkleFodderAccurateRatio[0], v.PastureName)
+		dashboardTopData1.SprinkleFodderAccurateRatio[1] = append(dashboardTopData1.SprinkleFodderAccurateRatio[1], fmt.Sprintf("%f%", v.Ratio))
+	}
+
+	for _, v := range dashboardTopData.SprinkleFodderCorrectRatio {
+		dashboardTopData1.SprinkleFodderCorrectRatio[0] = append(dashboardTopData1.SprinkleFodderCorrectRatio[0], v.PastureName)
+		dashboardTopData1.SprinkleFodderCorrectRatio[1] = append(dashboardTopData1.SprinkleFodderCorrectRatio[1], fmt.Sprintf("%f%", v.Ratio))
+	}
+
+	res.Data = dashboardTopData1
+	return res, nil
+}
+
+func (s *StoreEntry) SearchAnalysisAccuracyOld(ctx context.Context, req *operationPb.SearchAnalysisAccuracyRequest) (*model.SearchAnalysisAccuracyResponse, error) {
 	res := &model.SearchAnalysisAccuracyResponse{
 		Code: http.StatusOK,
 		Msg:  "ok",
@@ -300,17 +342,26 @@ func (s *StoreEntry) SearchAnalysisAccuracy(ctx context.Context, req *operationP
 
 // TopPasture 牧场排名
 func (s *StoreEntry) TopPasture(ctx context.Context, req *operationPb.SearchAnalysisAccuracyRequest) (*model.GetPastureTopResponse, error) {
+	res := &model.GetPastureTopResponse{
+		Code: http.StatusOK,
+		Msg:  "ok",
+		Data: nil,
+	}
+	dashboardTopData, err := s.DashboardTopPasture(ctx, req)
+	if err != nil {
+		return nil, xerr.WithStack(err)
+	}
+	res.Data = dashboardTopData
+	return res, nil
+}
+
+func (s *StoreEntry) DashboardTopPasture(ctx context.Context, req *operationPb.SearchAnalysisAccuracyRequest) (*model.PastureTop, error) {
 	dashboardTopData := &model.PastureTop{
 		MixedFodderAccurateRatio:    make([]*model.PastureTopData, 0),
 		MixedFodderCorrectRatio:     make([]*model.PastureTopData, 0),
 		SprinkleFodderAccurateRatio: make([]*model.PastureTopData, 0),
 		SprinkleFodderCorrectRatio:  make([]*model.PastureTopData, 0),
 	}
-	res := &model.GetPastureTopResponse{
-		Code: http.StatusOK,
-		Msg:  "ok",
-		Data: nil,
-	}
 	analysisAccuracy, err := s.PasturePrefAnalysisData(ctx, req)
 	if err != nil {
 		return nil, xerr.WithStack(err)
@@ -385,9 +436,7 @@ func (s *StoreEntry) TopPasture(ctx context.Context, req *operationPb.SearchAnal
 			dashboardTopData.SprinkleFodderCorrectRatio = dashboardTopRand(req, dashboardTopData.SprinkleFodderCorrectRatio)
 		}
 	}
-
-	res.Data = dashboardTopData
-	return res, nil
+	return dashboardTopData, nil
 }
 
 func (s *StoreEntry) TitleList(ctx context.Context, pastureAnalysisList map[int64]*model.PastureAnalysisAccuracyData) *model.Table {