|  | @@ -122,8 +122,8 @@ func (s *StoreEntry) PasturePrefExecTimeData(ctx context.Context, req *operation
 | 
	
		
			
				|  |  |  	return res, nil
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -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)
 | 
	
		
			
				|  |  | +func (s *StoreEntry) PastureSprinkleFeedTime(ctx context.Context, req *operationPb.SprinkleFeedTimeRequest) (map[int64][]*model.SprinkleStatisticsDataList, map[int64]*model.GroupPasture, error) {
 | 
	
		
			
				|  |  | +	res, pastureList := make(map[int64][]*model.SprinkleStatisticsDataList), make(map[int64]*model.GroupPasture, 0)
 | 
	
		
			
				|  |  |  	wg := sync.WaitGroup{}
 | 
	
		
			
				|  |  |  	wg.Add(len(req.PastureIds))
 | 
	
		
			
				|  |  |  	var muError error
 | 
	
	
		
			
				|  | @@ -159,7 +159,7 @@ func (s *StoreEntry) PastureSprinkleFeedTime(ctx context.Context, req *operation
 | 
	
		
			
				|  |  |  				muError = multierr.Append(muError, xerr.Custom(response.Msg))
 | 
	
		
			
				|  |  |  			}
 | 
	
		
			
				|  |  |  			res[groupPasture.Id] = response.Data
 | 
	
		
			
				|  |  | -			pastureList = append(pastureList, groupPasture)
 | 
	
		
			
				|  |  | +			pastureList[groupPasture.Id] = groupPasture
 | 
	
		
			
				|  |  |  		}(pasture)
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  	wg.Wait()
 | 
	
	
		
			
				|  | @@ -680,27 +680,30 @@ func (s *StoreEntry) SprinkleFeedTime(ctx context.Context, req *operationPb.Spri
 | 
	
		
			
				|  |  |  			TableList: make([]*model.SprinkleFeedTimeTable, 0),
 | 
	
		
			
				|  |  |  		},
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  | -	pastureSprinkleDataList, pastureSlice, err := s.PastureSprinkleFeedTime(ctx, req)
 | 
	
		
			
				|  |  | +	pastureSprinkleDataList, pastureList, 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 _, pasture := range pastureSlice {
 | 
	
		
			
				|  |  | -		for pastureId, data := range pastureSprinkleDataList {
 | 
	
		
			
				|  |  | -			if pastureId != pasture.PastureId {
 | 
	
		
			
				|  |  | -				continue
 | 
	
		
			
				|  |  | -			}
 | 
	
		
			
				|  |  | +	infoSprinkleNumber, errorSprinkleNumber, pastureIds := make([]int32, 0), make([]int32, 0), make([]int, 0)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	for pastureId, _ := range pastureSprinkleDataList {
 | 
	
		
			
				|  |  | +		pastureIds = append(pastureIds, int(pastureId))
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	sort.Ints(pastureIds)
 | 
	
		
			
				|  |  | +	pastureInfo := &model.GroupPasture{}
 | 
	
		
			
				|  |  | +	for _, pastureId := range pastureIds {
 | 
	
		
			
				|  |  | +		if pastureData, ok := pastureList[int64(pastureId)]; ok {
 | 
	
		
			
				|  |  | +			pastureInfo = pastureData
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +		if data, ok := pastureSprinkleDataList[int64(pastureId)]; ok {
 | 
	
		
			
				|  |  |  			sprinkleFeedTimeList := make(map[int32]map[int32][]int64, 0)
 | 
	
		
			
				|  |  |  			for _, v := range data {
 | 
	
		
			
				|  |  |  				tableList = append(tableList, &model.SprinkleFeedTimeTable{
 | 
	
		
			
				|  |  | -					PastureName:             pasture.Name,
 | 
	
		
			
				|  |  | +					PastureName:             pastureInfo.Name,
 | 
	
		
			
				|  |  |  					BarnName:                v.FName,
 | 
	
		
			
				|  |  |  					ClassNumber:             fmt.Sprintf("%d", v.Times),
 | 
	
		
			
				|  |  |  					RealitySprinkleFeedTime: tool.TimeSub(v.InTime, v.ProcessTime),
 | 
	
	
		
			
				|  | @@ -713,7 +716,7 @@ func (s *StoreEntry) SprinkleFeedTime(ctx context.Context, req *operationPb.Spri
 | 
	
		
			
				|  |  |  				sprinkleFeedTimeList[v.FBarId][v.Times] = append(sprinkleFeedTimeList[v.FBarId][v.Times], realityTimeUnix.Unix())
 | 
	
		
			
				|  |  |  			}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -			res.Data.Chart.Title = append(res.Data.Chart.Title, pasture.Name)
 | 
	
		
			
				|  |  | +			res.Data.Chart.Title = append(res.Data.Chart.Title, pastureInfo.Name)
 | 
	
		
			
				|  |  |  			infoNumber, errNumber := sprinkleExecTimeAnalysis(sprinkleFeedTimeList)
 | 
	
		
			
				|  |  |  			infoSprinkleNumber = append(infoSprinkleNumber, infoNumber)
 | 
	
		
			
				|  |  |  			errorSprinkleNumber = append(errorSprinkleNumber, errNumber)
 |