mirror of
https://gitlab.com/mbugroup/lti-api.git
synced 2026-05-20 13:31:56 +00:00
codex/fix: uniformity week calculation
This commit is contained in:
@@ -939,12 +939,27 @@ func (s *repportService) getUniformityByWeek(ctx context.Context, projectFlockKa
|
||||
return result, nil
|
||||
}
|
||||
|
||||
weekExpr := fmt.Sprintf(`CASE
|
||||
WHEN u.uniform_date IS NULL OR pc.chick_in_date IS NULL THEN 0
|
||||
WHEN u.uniform_date::date < pc.chick_in_date THEN 0
|
||||
WHEN UPPER(pf.category) = 'LAYING' THEN (((u.uniform_date::date - pc.chick_in_date)::int) / 7) + %d
|
||||
ELSE (((u.uniform_date::date - pc.chick_in_date)::int) / 7) + 1
|
||||
END`, config.LayingWeekStart())
|
||||
|
||||
var rows []entity.ProjectFlockKandangUniformity
|
||||
if err := s.db.WithContext(ctx).
|
||||
Model(&entity.ProjectFlockKandangUniformity{}).
|
||||
Select("week, uniformity, uniform_date, id, chart_data").
|
||||
Where("project_flock_kandang_id = ?", projectFlockKandangID).
|
||||
Where("week IN ?", weeks).
|
||||
Table("project_flock_kandang_uniformity AS u").
|
||||
Select(fmt.Sprintf("%s AS week, u.uniformity, u.uniform_date, u.id, u.chart_data", weekExpr)).
|
||||
Joins("JOIN project_flock_kandangs AS pfk ON pfk.id = u.project_flock_kandang_id").
|
||||
Joins("JOIN project_flocks AS pf ON pf.id = pfk.project_flock_id").
|
||||
Joins(`JOIN (
|
||||
SELECT project_flock_kandang_id, MIN(chick_in_date)::date AS chick_in_date
|
||||
FROM project_chickins
|
||||
WHERE deleted_at IS NULL
|
||||
GROUP BY project_flock_kandang_id
|
||||
) AS pc ON pc.project_flock_kandang_id = u.project_flock_kandang_id`).
|
||||
Where("u.project_flock_kandang_id = ?", projectFlockKandangID).
|
||||
Where(fmt.Sprintf("%s IN ?", weekExpr), weeks).
|
||||
Order("uniform_date DESC").
|
||||
Order("id DESC").
|
||||
Find(&rows).Error; err != nil {
|
||||
|
||||
Reference in New Issue
Block a user