[FIX/BE-US-390] dashboard statistic hpp global and avg seling price not refrence to filter

This commit is contained in:
ragilap
2026-01-13 00:15:48 +07:00
parent 5ddfb2c745
commit 6a166ceb86
@@ -98,12 +98,14 @@ func (s dashboardService) buildPerformanceStatistics(ctx context.Context, params
endDate := params.PeriodEnd
endExclusive := params.PeriodEndExclusive
hppCurrent, hppLast, err := s.calculateHppGlobal(ctx, filter, startDate, endExclusive, endDate, location)
globalStartDate, globalEndDate, globalEndExclusive := currentPeriodDates(location)
hppCurrent, hppLast, err := s.calculateHppGlobal(ctx, globalStartDate, globalEndExclusive, globalEndDate, location)
if err != nil {
return nil, err
}
sellingCurrent, sellingLast, err := s.calculateSellingPrice(ctx, filter, endDate, location)
sellingCurrent, sellingLast, err := s.calculateSellingPrice(ctx, globalEndDate, location)
if err != nil {
return nil, err
}
@@ -843,12 +845,12 @@ func percentDelta(current, last float64) float64 {
return (current - last) / last
}
func (s dashboardService) calculateHppGlobal(ctx context.Context, filter *validation.DashboardFilter, startDate, endExclusive, endDate time.Time, location *time.Location) (float64, float64, error) {
totalEggKg, err := s.Repository.SumEggProductionWeightKg(ctx, startDate, endExclusive, filter)
func (s dashboardService) calculateHppGlobal(ctx context.Context, startDate, endExclusive, endDate time.Time, location *time.Location) (float64, float64, error) {
totalEggKg, err := s.Repository.SumEggProductionWeightKg(ctx, startDate, endExclusive, nil)
if err != nil {
return 0, 0, err
}
totalCost, err := s.sumHppCost(ctx, filter, startDate, endExclusive)
totalCost, err := s.sumHppCost(ctx, nil, startDate, endExclusive)
if err != nil {
return 0, 0, err
}
@@ -859,11 +861,11 @@ func (s dashboardService) calculateHppGlobal(ctx context.Context, filter *valida
}
lastMonthStart, lastMonthEndExclusive := monthRange(endDate.AddDate(0, -1, 0), location)
lastEggKg, err := s.Repository.SumEggProductionWeightKg(ctx, lastMonthStart, lastMonthEndExclusive, filter)
lastEggKg, err := s.Repository.SumEggProductionWeightKg(ctx, lastMonthStart, lastMonthEndExclusive, nil)
if err != nil {
return 0, 0, err
}
lastCost, err := s.sumHppCost(ctx, filter, lastMonthStart, lastMonthEndExclusive)
lastCost, err := s.sumHppCost(ctx, nil, lastMonthStart, lastMonthEndExclusive)
if err != nil {
return 0, 0, err
}
@@ -876,16 +878,16 @@ func (s dashboardService) calculateHppGlobal(ctx context.Context, filter *valida
return hppCurrent, hppLast, nil
}
func (s dashboardService) calculateSellingPrice(ctx context.Context, filter *validation.DashboardFilter, endDate time.Time, location *time.Location) (float64, float64, error) {
func (s dashboardService) calculateSellingPrice(ctx context.Context, endDate time.Time, location *time.Location) (float64, float64, error) {
startPrevMonth, endPrevMonthExclusive := monthRange(endDate.AddDate(0, -1, 0), location)
currentEndExclusive := endDate.AddDate(0, 0, 1)
currentAvg, err := s.avgSellingPrice(ctx, filter, startPrevMonth, currentEndExclusive)
currentAvg, err := s.avgSellingPrice(ctx, nil, startPrevMonth, currentEndExclusive)
if err != nil {
return 0, 0, err
}
lastAvg, err := s.avgSellingPrice(ctx, filter, startPrevMonth, endPrevMonthExclusive)
lastAvg, err := s.avgSellingPrice(ctx, nil, startPrevMonth, endPrevMonthExclusive)
if err != nil {
return 0, 0, err
}
@@ -1027,3 +1029,11 @@ func monthRange(t time.Time, location *time.Location) (time.Time, time.Time) {
endExclusive := start.AddDate(0, 1, 0)
return start, endExclusive
}
func currentPeriodDates(location *time.Location) (time.Time, time.Time, time.Time) {
now := time.Now().In(location)
startDate := time.Date(now.Year(), now.Month(), 1, 0, 0, 0, 0, location)
endDate := time.Date(now.Year(), now.Month(), now.Day(), 0, 0, 0, 0, location)
endExclusive := endDate.AddDate(0, 0, 1)
return startDate, endDate, endExclusive
}