|
@@ -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
|