52 lines
1.4 KiB
TypeScript
52 lines
1.4 KiB
TypeScript
import { query } from '../../utils/db'
|
|
|
|
/**
|
|
* 사업 주간보고 목록 조회
|
|
* GET /api/business-report/list
|
|
*/
|
|
export default defineEventHandler(async (event) => {
|
|
const params = getQuery(event)
|
|
const businessId = params.businessId ? Number(params.businessId) : null
|
|
const year = params.year ? Number(params.year) : new Date().getFullYear()
|
|
|
|
let sql = `
|
|
SELECT
|
|
br.*,
|
|
b.business_name,
|
|
e.employee_name as created_by_name
|
|
FROM wr_business_weekly_report br
|
|
JOIN wr_business b ON br.business_id = b.business_id
|
|
LEFT JOIN wr_employee_info e ON br.created_by = e.employee_id
|
|
WHERE br.report_year = $1
|
|
`
|
|
const queryParams: any[] = [year]
|
|
let paramIndex = 2
|
|
|
|
if (businessId) {
|
|
sql += ` AND br.business_id = $${paramIndex++}`
|
|
queryParams.push(businessId)
|
|
}
|
|
|
|
sql += ' ORDER BY br.report_week DESC, br.business_id'
|
|
|
|
const reports = await query(sql, queryParams)
|
|
|
|
return {
|
|
reports: reports.map((r: any) => ({
|
|
businessReportId: r.business_report_id,
|
|
businessId: r.business_id,
|
|
businessName: r.business_name,
|
|
reportYear: r.report_year,
|
|
reportWeek: r.report_week,
|
|
weekStartDate: r.week_start_date,
|
|
weekEndDate: r.week_end_date,
|
|
aiSummary: r.ai_summary,
|
|
manualSummary: r.manual_summary,
|
|
status: r.status,
|
|
createdByName: r.created_by_name,
|
|
createdAt: r.created_at,
|
|
updatedAt: r.updated_at
|
|
}))
|
|
}
|
|
})
|