Files
weeklyreport/backend/api/maintenance/report/available.get.ts

65 lines
2.0 KiB
TypeScript

import { query } from '../../../utils/db'
/**
* 주간보고 연계용 유지보수 업무 조회
* 해당 주차에 완료된 유지보수 업무 목록
* GET /api/maintenance/report/available
*/
export default defineEventHandler(async (event) => {
const params = getQuery(event)
const projectId = params.projectId ? Number(params.projectId) : null
const weekStartDate = params.weekStartDate as string
const weekEndDate = params.weekEndDate as string
if (!projectId) {
throw createError({ statusCode: 400, message: '프로젝트 ID가 필요합니다.' })
}
// 해당 주차에 완료된 유지보수 업무 (아직 주간보고에 연결 안 된 것)
const sql = `
SELECT
m.task_id,
m.request_date,
m.request_title,
m.request_content,
m.requester_name,
m.task_type,
m.priority,
m.status,
m.resolution_content,
m.dev_completed_at,
m.ops_completed_at,
m.client_confirmed_at,
m.weekly_report_id
FROM wr_maintenance_task m
WHERE m.project_id = $1
AND m.status = 'COMPLETED'
AND m.weekly_report_id IS NULL
AND (
(m.dev_completed_at >= $2 AND m.dev_completed_at <= $3)
OR (m.ops_completed_at >= $2 AND m.ops_completed_at <= $3)
OR (m.client_confirmed_at >= $2 AND m.client_confirmed_at <= $3)
)
ORDER BY m.dev_completed_at DESC NULLS LAST, m.task_id DESC
`
const tasks = await query(sql, [projectId, weekStartDate, weekEndDate + ' 23:59:59'])
return {
tasks: tasks.map((t: any) => ({
taskId: t.task_id,
requestDate: t.request_date,
requestTitle: t.request_title,
requestContent: t.request_content,
requesterName: t.requester_name,
taskType: t.task_type,
priority: t.priority,
status: t.status,
resolutionContent: t.resolution_content,
devCompletedAt: t.dev_completed_at,
opsCompletedAt: t.ops_completed_at,
clientConfirmedAt: t.client_confirmed_at
}))
}
})