Browse Source

Merge branch 'feature/group_list' of xuyiping/kpt-tmr-group into release/v1.0.2

xuyiping 1 year ago
parent
commit
274b413586

+ 37 - 26
module/backend/dashboard_service.go

@@ -122,16 +122,14 @@ func (s *StoreEntry) PasturePrefExecTimeData(ctx context.Context, req *operation
 	return res, nil
 }
 
-func (s *StoreEntry) PastureSprinkleFeedTime(ctx context.Context, req *operationPb.SprinkleFeedTimeRequest) (map[string][]*model.SprinkleStatisticsDataList, error) {
-
-	res := make(map[string][]*model.SprinkleStatisticsDataList, 0)
+func (s *StoreEntry) PastureSprinkleFeedTime(ctx context.Context, req *operationPb.SprinkleFeedTimeRequest) (map[int64][]*model.SprinkleStatisticsDataList, []*model.GroupPasture, error) {
+	res, pastureList := make(map[int64][]*model.SprinkleStatisticsDataList), make([]*model.GroupPasture, 0)
 	wg := sync.WaitGroup{}
 	wg.Add(len(req.PastureIds))
 	var muError error
 	for _, pasture := range req.PastureIds {
 		go func(pId int32) {
 			defer wg.Done()
-
 			groupPasture, err := s.GetGroupPastureListById(ctx, int64(pId))
 			if err != nil {
 				zaplog.Error("PastureSprinkleFeedTime", zap.Any("GetGroupPastureListById", err))
@@ -145,6 +143,7 @@ func (s *StoreEntry) PastureSprinkleFeedTime(ctx context.Context, req *operation
 				StartDate:     req.StartDate,
 				EndDate:       req.EndDate,
 			}
+
 			if err = s.PastureHttpClient(ctx, model.DashboardSprinkleFeedTimeUrl, int64(pId), body, response); err != nil {
 				muError = multierr.Append(muError, err)
 				zaplog.Error("PastureSprinkleFeedTime",
@@ -159,11 +158,12 @@ func (s *StoreEntry) PastureSprinkleFeedTime(ctx context.Context, req *operation
 			if response.Code != http.StatusOK {
 				muError = multierr.Append(muError, xerr.Custom(response.Msg))
 			}
-			res[groupPasture.Name] = response.Data
+			res[groupPasture.Id] = response.Data
+			pastureList = append(pastureList, groupPasture)
 		}(pasture)
 	}
 	wg.Wait()
-	return res, nil
+	return res, pastureList, nil
 }
 
 func (s *StoreEntry) SearchAnalysisAccuracy(ctx context.Context, req *operationPb.SearchAnalysisAccuracyRequest) (*model.SearchAnalysisAccuracyResponse1, error) {
@@ -680,35 +680,46 @@ func (s *StoreEntry) SprinkleFeedTime(ctx context.Context, req *operationPb.Spri
 			TableList: make([]*model.SprinkleFeedTimeTable, 0),
 		},
 	}
-	pastureSprinkleDataList, err := s.PastureSprinkleFeedTime(ctx, req)
+	pastureSprinkleDataList, pastureSlice, err := s.PastureSprinkleFeedTime(ctx, req)
 	if err != nil {
 		return nil, xerr.WithStack(err)
 	}
 
+	sort.Slice(pastureSlice, func(i, j int) bool {
+		return pastureSlice[i].PastureId < pastureSlice[j].PastureId
+	})
+
 	tableList := make([]*model.SprinkleFeedTimeTable, 0)
 	infoSprinkleNumber, errorSprinkleNumber := make([]int32, 0), make([]int32, 0)
-	for pastureName, data := range pastureSprinkleDataList {
-		sprinkleFeedTimeList := make(map[int32]map[int32][]int64, 0)
-		for _, v := range data {
-			tableList = append(tableList, &model.SprinkleFeedTimeTable{
-				PastureName:             pastureName,
-				BarnName:                v.FName,
-				ClassNumber:             fmt.Sprintf("%d", v.Times),
-				RealitySprinkleFeedTime: tool.TimeSub(v.InTime, v.ProcessTime),
-			})
-			realityTime := tool.TimeSub(v.InTime, v.ProcessTime)
-			realityTimeUnix, _ := time.Parse(model.LayoutTime, realityTime)
-			if sprinkleFeedTimeList[v.FBarId] == nil {
-				sprinkleFeedTimeList[v.FBarId] = make(map[int32][]int64, 0)
+	for _, pasture := range pastureSlice {
+		for pastureId, data := range pastureSprinkleDataList {
+			if pastureId != pasture.PastureId {
+				continue
+			}
+
+			sprinkleFeedTimeList := make(map[int32]map[int32][]int64, 0)
+			for _, v := range data {
+				tableList = append(tableList, &model.SprinkleFeedTimeTable{
+					PastureName:             pasture.Name,
+					BarnName:                v.FName,
+					ClassNumber:             fmt.Sprintf("%d", v.Times),
+					RealitySprinkleFeedTime: tool.TimeSub(v.InTime, v.ProcessTime),
+				})
+				realityTime := tool.TimeSub(v.InTime, v.ProcessTime)
+				realityTimeUnix, _ := time.Parse(model.LayoutTime, realityTime)
+				if sprinkleFeedTimeList[v.FBarId] == nil {
+					sprinkleFeedTimeList[v.FBarId] = make(map[int32][]int64, 0)
+				}
+				sprinkleFeedTimeList[v.FBarId][v.Times] = append(sprinkleFeedTimeList[v.FBarId][v.Times], realityTimeUnix.Unix())
 			}
-			sprinkleFeedTimeList[v.FBarId][v.Times] = append(sprinkleFeedTimeList[v.FBarId][v.Times], realityTimeUnix.Unix())
-		}
-		res.Data.Chart.Title = append(res.Data.Chart.Title, pastureName)
 
-		infoNumber, errNumber := sprinkleExecTimeAnalysis(sprinkleFeedTimeList)
-		infoSprinkleNumber = append(infoSprinkleNumber, infoNumber)
-		errorSprinkleNumber = append(errorSprinkleNumber, errNumber)
+			res.Data.Chart.Title = append(res.Data.Chart.Title, pasture.Name)
+			infoNumber, errNumber := sprinkleExecTimeAnalysis(sprinkleFeedTimeList)
+			infoSprinkleNumber = append(infoSprinkleNumber, infoNumber)
+			errorSprinkleNumber = append(errorSprinkleNumber, errNumber)
+		}
 	}
+
 	res.Data.Chart.SprinkleNumberList = append(res.Data.Chart.SprinkleNumberList, infoSprinkleNumber, errorSprinkleNumber)
 	res.Data.TableList = tableList
 	return res, nil

+ 1 - 1
module/backend/pasture_service.go

@@ -62,7 +62,7 @@ func (s *StoreEntry) PastureAccountDistribution(ctx context.Context, groupPastur
 		return xerr.WithStack(err)
 	}
 
-	if res.Code != http.StatusOK {
+	if res.Code == http.StatusOK {
 		if err := s.DB.Model(new(model.GroupPasture)).Where("id = ?", groupPasture.Id).Update("is_distribution", operationPb.IsShow_OK).Error; err != nil {
 			zaplog.Error("AccountDistribution-Update", zap.Any("url", model.PastureAccountDistributionURl), zap.Any("err", err), zap.Any("body", body), zap.Any("res", res))
 			return xerr.Customf("%s", res.Msg)

+ 8 - 0
module/backend/pasture_sync_service.go

@@ -148,6 +148,10 @@ func (s *StoreEntry) FeedFormulaSyncData(ctx context.Context, req *operationPb.F
 			if err = s.FeedFormulaInsert(ctx, groupPasture, response.Data.List); err != nil {
 				return xerr.WithStack(err)
 			}
+			if total <= (pageSize * page) {
+				break
+			}
+			page++
 		}
 
 	}
@@ -289,6 +293,10 @@ func (s *StoreEntry) FeedFormulaDetailListSyncData(ctx context.Context, req *ope
 			if response.Data.Total > 0 && response.Data.List != nil {
 				total = int(math.Ceil(float64(response.Data.Total) / float64(pageSize)))
 			}
+			if total <= (page * pageSize) {
+				break
+			}
+			page++
 			if err = s.FeedFormulaDetailInsert(ctx, groupPasture, response.Data.List); err != nil {
 				return xerr.WithStack(err)
 			}