feat/BE/US-282/TASK-301,302,303-Adjust Schema Database, Adjust Validation and Req Body, and fixing daily gain, and change logic daily gain

This commit is contained in:
ragilap
2025-12-08 12:49:50 +07:00
parent cbb7f45c5f
commit 6e176688fa
@@ -804,14 +804,10 @@ func (s *recordingService) computeAndUpdateMetrics(ctx context.Context, tx *gorm
return fmt.Errorf("getFeedUsageInGrams: %w", err) return fmt.Errorf("getFeedUsageInGrams: %w", err)
} }
fcrId, err := s.Repository.GetFcrID(tx, recording.ProjectFlockKandangId)
if err != nil {
return fmt.Errorf("getFcrID: %w", err)
}
currentAvgGrams := recordingutil.ToGrams(currentAvgWeight) currentAvgGrams := recordingutil.ToGrams(currentAvgWeight)
currentAvgKg := recordingutil.GramsToKg(currentAvgGrams) currentAvgKg := recordingutil.GramsToKg(currentAvgGrams)
prevAvgGrams := recordingutil.ToGrams(prevAvgWeight) prevAvgGrams := recordingutil.ToGrams(prevAvgWeight)
prevAvgKg := recordingutil.GramsToKg(prevAvgGrams)
currentDepletion := float64(totalDepletionQty) currentDepletion := float64(totalDepletionQty)
cumDepletionQty := prevCumDepletionQty + currentDepletion cumDepletionQty := prevCumDepletionQty + currentDepletion
@@ -821,9 +817,10 @@ func (s *recordingService) computeAndUpdateMetrics(ctx context.Context, tx *gorm
} }
recording.TotalDepletionQty = &cumDepletionQty recording.TotalDepletionQty = &cumDepletionQty
var remainingChick float64
if totalChick > 0 { if totalChick > 0 {
totalChickFloat := float64(totalChick) totalChickFloat := float64(totalChick)
remainingChick := totalChickFloat - cumDepletionQty remainingChick = totalChickFloat - cumDepletionQty
if remainingChick < 0 { if remainingChick < 0 {
remainingChick = 0 remainingChick = 0
} }
@@ -848,24 +845,19 @@ func (s *recordingService) computeAndUpdateMetrics(ctx context.Context, tx *gorm
updates["daily_gain"] = dailyGainKg updates["daily_gain"] = dailyGainKg
recording.DailyGain = &dailyGainKg recording.DailyGain = &dailyGainKg
} else { } else {
updates["daily_gain"] = gorm.Expr("NULL") dailyGainKg := 0.0
recording.DailyGain = nil updates["daily_gain"] = dailyGainKg
recording.DailyGain = &dailyGainKg
} }
if fcrId != 0 && currentAvgKg > 0 && day > 0 { if currentAvgKg > 0 && remainingChick > 0 {
if fcrWeightKg, ok, err := s.Repository.GetFcrStandardWeightKg(tx, fcrId, currentAvgKg); err != nil { avgDailyGain := (currentAvgKg - prevAvgKg) / remainingChick
return fmt.Errorf("getFcrStandardWeightKg: %w", err) updates["avg_daily_gain"] = avgDailyGain
} else if ok { recording.AvgDailyGain = &avgDailyGain
avgDailyGain := (currentAvgKg - fcrWeightKg) / float64(day)
updates["avg_daily_gain"] = avgDailyGain
recording.AvgDailyGain = &avgDailyGain
} else {
updates["avg_daily_gain"] = gorm.Expr("NULL")
recording.AvgDailyGain = nil
}
} else { } else {
updates["avg_daily_gain"] = gorm.Expr("NULL") avgDailyGain := 0.0
recording.AvgDailyGain = nil updates["avg_daily_gain"] = avgDailyGain
recording.AvgDailyGain = &avgDailyGain
} }
if usageInGrams > 0 && totalChick > 0 { if usageInGrams > 0 && totalChick > 0 {