1ㅊㅏ완료
This commit is contained in:
44
backend/api/report/summary/weekly-list.get.ts
Normal file
44
backend/api/report/summary/weekly-list.get.ts
Normal file
@@ -0,0 +1,44 @@
|
||||
import { defineEventHandler, getQuery } from 'h3'
|
||||
import { query } from '../../../utils/db'
|
||||
|
||||
/**
|
||||
* 주차별 취합 목록
|
||||
* GET /api/report/summary/weekly-list
|
||||
*/
|
||||
export default defineEventHandler(async (event) => {
|
||||
const queryParams = getQuery(event)
|
||||
const year = queryParams.year ? parseInt(queryParams.year as string) : new Date().getFullYear()
|
||||
|
||||
// 주차별로 그룹핑
|
||||
const rows = await query(`
|
||||
SELECT
|
||||
s.report_year,
|
||||
s.report_week,
|
||||
MIN(s.week_start_date) as week_start_date,
|
||||
MAX(s.week_end_date) as week_end_date,
|
||||
COUNT(DISTINCT s.project_id) as project_count,
|
||||
SUM(s.member_count) as total_members,
|
||||
SUM(COALESCE(s.total_work_hours, 0)) as total_work_hours,
|
||||
MAX(s.aggregated_at) as latest_aggregated_at,
|
||||
ARRAY_AGG(DISTINCT p.project_name ORDER BY p.project_name) as project_names
|
||||
FROM wr_aggregated_report_summary s
|
||||
JOIN wr_project_info p ON s.project_id = p.project_id
|
||||
WHERE s.report_year = $1
|
||||
GROUP BY s.report_year, s.report_week
|
||||
ORDER BY s.report_week DESC
|
||||
`, [year])
|
||||
|
||||
return {
|
||||
weeks: rows.map((r: any) => ({
|
||||
reportYear: r.report_year,
|
||||
reportWeek: r.report_week,
|
||||
weekStartDate: r.week_start_date,
|
||||
weekEndDate: r.week_end_date,
|
||||
projectCount: parseInt(r.project_count),
|
||||
totalMembers: parseInt(r.total_members),
|
||||
totalWorkHours: parseFloat(r.total_work_hours) || 0,
|
||||
latestAggregatedAt: r.latest_aggregated_at,
|
||||
projects: r.project_names || []
|
||||
}))
|
||||
}
|
||||
})
|
||||
Reference in New Issue
Block a user