Przeglądaj źródła

warning: health appUpdate

Yi 3 dni temu
rodzic
commit
6bd0519cb5

+ 0 - 4
model/neck_active_habit.go

@@ -82,10 +82,6 @@ func (n *NeckActiveHabit) UnShardTableName() string {
 	return "neck_active_habit"
 }
 
-/*func (n *NeckActiveHabit) TableName() string {
-	return fmt.Sprintf("%s_%06d", n.UnShardTableName(), n.PastureId)
-}*/
-
 func (n *NeckActiveHabit) TableName() string {
 	return "neck_active_habit"
 }

+ 7 - 3
model/neck_ring_health_warning.go

@@ -63,6 +63,7 @@ func (n NeckRingHealthWarningSlice) ToPB(
 	cowMap map[int64]*Cow,
 	eventLogMap map[int64]string,
 	healthStatusMap map[pasturePb.HealthStatus_Kind]string,
+	dayData map[int64]*NeckActiveHabit,
 ) []*pasturePb.HealthWarningItem {
 	res := make([]*pasturePb.HealthWarningItem, len(n))
 	for i, v := range n {
@@ -70,13 +71,10 @@ func (n NeckRingHealthWarningSlice) ToPB(
 		if ln, ok := warningHealthLevelMap[v.Level]; ok {
 			levelName = ln
 		}
-
 		data := &pasturePb.HealthWarningItem{
 			Id:                     int32(v.Id),
 			CowId:                  int32(v.CowId),
 			EarNumber:              v.EarNumber,
-			PenId:                  0,
-			PenName:                "",
 			Score:                  v.Score,
 			HeatDate:               v.HeatDate,
 			MinHigh:                v.MinHigh,
@@ -88,6 +86,12 @@ func (n NeckRingHealthWarningSlice) ToPB(
 			Level:                  v.Level,
 			LevelName:              levelName,
 			ChangeChewTime:         v.ChewSum - v.BeforeThreeSumChew,
+			ChangeHigh:             float32(dayData[v.CowId].ChangeHigh),
+			ChangeRumina:           float32(dayData[v.CowId].ChangeRumina),
+			DayRumina:              float32(dayData[v.CowId].Rumina),
+			DayIntake:              float32(dayData[v.CowId].Intake),
+			DayInactive:            float32(dayData[v.CowId].Inactive),
+			DayImmobility:          float32(dayData[v.CowId].Active),
 		}
 
 		if cow, ok := cowMap[v.CowId]; ok {

+ 27 - 1
module/backend/neck_ring_warning.go

@@ -170,14 +170,39 @@ func (s *StoreEntry) NeckRingWarningHealthCowList(ctx context.Context, req *past
 		}
 	}
 
+	dayData := make(map[int64]*model.NeckActiveHabit)
 	if len(cowIds) > 0 {
 		cowList, _ := s.GetCowInfoByCowIds(ctx, userModel.AppPasture.Id, cowIds)
 		for _, cow := range cowList {
 			cowMap[cow.Id] = cow
 		}
 
-		// 获取牛的牛当前脖环数据
+		neckRingHabitList := make([]*model.NeckActiveHabit, 0)
+		if err = s.DB.Model(new(model.NeckActiveHabit)).
+			Select("rumina,intake,inactive,active,change_rumina,change_high,active_time").
+			Where("pasture_id = ?", userModel.AppPasture.Id).
+			Where("cow_id IN ?", cowIds).
+			Where("heat_date = ?", time.Now().Format(model.LayoutDate2)).
+			Where("is_show = ?", pasturePb.IsShow_Ok).
+			Find(&neckRingHabitList).Error; err != nil {
+			zaplog.Error("GetNeckRingHabitList", zap.Error(err))
+		}
 
+		if len(neckRingHabitList) > 0 {
+			for _, v := range neckRingHabitList {
+				if _, ok := dayData[v.CowId]; ok {
+					dayData[v.CowId].Active += 120 - v.Active
+					dayData[v.CowId].Inactive += v.Inactive
+					dayData[v.CowId].Intake += v.Intake
+					dayData[v.CowId].Rumina += v.Rumina
+					if dayData[v.CowId].ActiveTime < v.ActiveTime {
+						dayData[v.CowId].ChangeRumina = v.ChangeRumina
+						dayData[v.CowId].ActiveTime = v.ActiveTime
+						dayData[v.CowId].ChangeHigh = v.ChangeHigh
+					}
+				}
+			}
+		}
 	}
 
 	return &pasturePb.HealthWarningResponse{
@@ -192,6 +217,7 @@ func (s *StoreEntry) NeckRingWarningHealthCowList(ctx context.Context, req *past
 				cowMap,
 				eventLogMap,
 				healthStatusMap,
+				dayData,
 			),
 		},
 	}, nil