43 lines
1.2 KiB
TypeScript
43 lines
1.2 KiB
TypeScript
"use client";
|
|
|
|
import { postBlobData } from "@/components/lib/api";
|
|
import { fileDownload } from "@/components/lib/utils/fileDownload";
|
|
import {
|
|
AGED_PIPE_EXCEL_FIELDS,
|
|
normalizeAgedPipeFilters,
|
|
type AgedPipeFilters,
|
|
} from "./agedPipeUtils";
|
|
|
|
type AgedPipeExportProgress = {
|
|
fileName?: string;
|
|
progressPercent?: number;
|
|
status: "QUEUED" | "RUNNING" | "COMPLETED";
|
|
};
|
|
|
|
/** 노후관로 CSV 다운로드를 요청한다. */
|
|
export const downloadAgedPipeCsv = async (
|
|
filters: AgedPipeFilters,
|
|
onProgress?: (progress: AgedPipeExportProgress) => void,
|
|
) => {
|
|
const normalizedFilters = normalizeAgedPipeFilters(filters);
|
|
|
|
onProgress?.({ status: "RUNNING", progressPercent: 0 });
|
|
|
|
const { blob, fileName } = await postBlobData("v1/fclts/agedPipes/exportJobs/download", {
|
|
elapsedYears: normalizedFilters.elapsedYears,
|
|
ctpvCd: normalizedFilters.ctpvCd,
|
|
sggCd: normalizedFilters.sggCd,
|
|
format: "csv",
|
|
columns: [...AGED_PIPE_EXCEL_FIELDS],
|
|
});
|
|
|
|
const resolvedFileName = fileName || "노후관로_현황.csv";
|
|
fileDownload(blob, resolvedFileName);
|
|
onProgress?.({ status: "COMPLETED", fileName: resolvedFileName, progressPercent: 100 });
|
|
|
|
return {
|
|
status: "COMPLETED" as const,
|
|
fileName: resolvedFileName,
|
|
};
|
|
};
|