1
0

2 Коммитууд fa8ca17a40 ... fd7088d3fd

Эзэн SHA1 Мессеж Огноо
  Yi fd7088d3fd cow: neckRingGroupComparison update 2 сар өмнө
  Yi fa8ca17a40 cow: neckRingGroupComparison update 2 сар өмнө

+ 27 - 16
model/neck_active_habit.go

@@ -414,25 +414,36 @@ func (n NeckActiveHabitSlice) ToPBApp() *pasturePb.CowNeckRingAppData {
 	return res
 }
 
-func (n NeckActiveHabitSlice) ToOriginalDataList(curveName string) []int32 {
-	originalDateList := make([]int32, 0)
+func (n NeckActiveHabitSlice) ToOriginalDataList(curveName string, dateTimeList []string) []int32 {
+	originalDataList := make([]int32, 0)
+	dateTimeMap := make(map[string]*NeckActiveHabit)
 	for _, v := range n {
-		switch curveName {
-		case "active": // 活动量
-			originalDateList = append(originalDateList, v.High)
-		case "rumina": // 反刍
-			originalDateList = append(originalDateList, v.Rumina)
-		case "intake": // 采食
-			originalDateList = append(originalDateList, v.Intake)
-		case "inactive": // 休息
-			originalDateList = append(originalDateList, v.Inactive)
-		case "chew": // 咀嚼
-			originalDateList = append(originalDateList, v.Rumina+v.Intake)
-		case "immobility": // 静止
-			originalDateList = append(originalDateList, 120-v.Active)
+		dateTime := fmt.Sprintf("%s %02d", v.HeatDate, util.ExpectedFrameIDs[v.Frameid]*2+1)
+		dateTimeMap[dateTime] = v
+	}
+
+	for _, v := range dateTimeList {
+		if originalData, ok := dateTimeMap[v]; ok {
+			switch curveName {
+			case "active": // 活动量
+				originalDataList = append(originalDataList, originalData.High)
+			case "rumina": // 反刍
+				originalDataList = append(originalDataList, originalData.Rumina)
+			case "intake": // 采食
+				originalDataList = append(originalDataList, originalData.Intake)
+			case "inactive": // 休息
+				originalDataList = append(originalDataList, originalData.Inactive)
+			case "chew": // 咀嚼
+				originalDataList = append(originalDataList, originalData.Rumina+originalData.Intake)
+			case "immobility": // 静止
+				originalDataList = append(originalDataList, 120-originalData.Active)
+			}
+		} else {
+			originalDataList = append(originalDataList, 0)
 		}
 	}
-	return originalDateList
+
+	return originalDataList
 }
 
 type MaxHabitIdModel struct {

+ 1 - 1
module/backend/cow_more.go

@@ -473,7 +473,7 @@ func (s *StoreEntry) BehaviorCurveGroupComparison(ctx context.Context, req *past
 			dataTimeList = append(dataTimeList, fmt.Sprintf("%s %02d", v, i))
 		}
 	}
-	originalDataList := model.NeckActiveHabitSlice(neckActiveHabitList).ToOriginalDataList(req.CurveName)
+	originalDataList := model.NeckActiveHabitSlice(neckActiveHabitList).ToOriginalDataList(req.CurveName, dataTimeList)
 	q1, q3 := s.CowIQR(cowInfo, req.CurveName, dayRange, dataTimeList)
 	return &pasturePb.BehaviorCurveGroupComparisonResponse{
 		Code: http.StatusOK,