From 3d9434052c024257c267cfbc535e66215890544c Mon Sep 17 00:00:00 2001 From: jyha00 Date: Mon, 23 Jun 2025 19:37:39 +0900 Subject: [PATCH] =?UTF-8?q?=EC=9E=AC=EC=9D=B4=EC=9A=A9=EC=8B=A4=EC=A0=81?= =?UTF-8?q?=ED=98=84=ED=99=A9=20=EC=97=91=EC=85=80=20=EB=8B=A4=EC=9A=B4?= =?UTF-8?q?=EB=A1=9C=EB=93=9C=20=EC=99=84=EB=A3=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../prfmncSttn/pbnstPrfmncSttn/page.tsx | 21 +++++++-------- .../prfmncSttn/pbnstPrfmncSttn/excel.tsx | 24 ++++++++++++++++++ .../prfmncSttn/pbnstPrfmncSttn/index.tsx | 7 +---- apps/wr/public/sample_pbnstPrfmncSttn.xlsx | Bin 0 -> 11525 bytes 4 files changed, 36 insertions(+), 16 deletions(-) create mode 100644 apps/wr/app/store/prfmncSttn/pbnstPrfmncSttn/excel.tsx create mode 100644 apps/wr/public/sample_pbnstPrfmncSttn.xlsx diff --git a/apps/wr/app/ruseFcltMng/prfmncSttn/pbnstPrfmncSttn/page.tsx b/apps/wr/app/ruseFcltMng/prfmncSttn/pbnstPrfmncSttn/page.tsx index 9389bab16..8064aa2bb 100644 --- a/apps/wr/app/ruseFcltMng/prfmncSttn/pbnstPrfmncSttn/page.tsx +++ b/apps/wr/app/ruseFcltMng/prfmncSttn/pbnstPrfmncSttn/page.tsx @@ -3,6 +3,7 @@ import { useWrStore } from "@/app/store"; import { btnClass } from "@/app/store/common/code"; import { initValInUsage, initValOutUsage, subTotalObj, totalObj, type FcPrfType, type PrfType } from "@/app/store/prfmncReg/pbnstPrfmncReg/type"; +import { excelPrfmncSttnParsing } from "@/app/store/prfmncSttn/pbnstPrfmncSttn/excel"; import { excelDownload, yearOptions } from "@/components/lib/func/commom"; import SearchInputText from "@/components/ui/searchInput/searchInput"; import { CHART_FORM, ContentsDiv, MainChart, ScrollArea, SearchBaseForm, SearchInput, SelectBox, Title, UiTable, type ChartConfig, type ReturnType } from "@common/business_components"; @@ -23,7 +24,7 @@ export default function PbnstPrfmncSttn() { pbnNmSearch } = useWrStore((state) => state); const { monthHeadList } = prfmnc - const { pbnstPrfHeadList, pbnstPrfmncRes, prfmncRes, rawData, selectYearList } = pbnstPrfmncSttn; + const { pbnstPrfHeadList, prfmncRes, rawData, selectYearList } = pbnstPrfmncSttn; const [isChHead, setIsChHead] = useState(false); const [fromDate, setFromDate] = useState(String(new Date().getFullYear())); const [toDate, setToDate] = useState(String(new Date().getFullYear())); @@ -32,14 +33,16 @@ export default function PbnstPrfmncSttn() { const ref = useRef({} as ReturnType); const [swtrmtFcltNm, setSwtrmtFcltNm] = useState(); const [pbnRuseNm, setPbnRuseNm] = useState(""); + const [excelData, setExcelData] = useState([]); const excelClick = useCallback(() => { excelDownload( - [[]], - "하수재이용실적 현황", - "sample_pbnstPrfmncReg.xlsx", - "A1:O1" + excelData, + "하수재이용실적 현황", + "sample_pbnstPrfmncSttn.xlsx", + "A1:N1", + 2 ); - }, [prfmnc.excelList]); + }, [excelData]); const [chartConfig, setChartConfig] = useState({}); const [chartData, setChartData] = useState([]); @@ -72,13 +75,11 @@ export default function PbnstPrfmncSttn() { chartData6: lineChartDataProps[]; }>(); - - type dnChartForm = { label: string, val: number, fill?: string }; type barChartForm = { label: string, "장내용수": number, "장외용수": number }; type lineChartDataProps = { label: string, val: number, color: string }; - const prfTableData = (prfList: PrfType[], year:string) => { + const prfTableData = (prfList: PrfType[], year: string) => { const inUsageData = structuredClone(initValInUsage); const outUsageData = structuredClone(initValOutUsage); @@ -132,7 +133,7 @@ export default function PbnstPrfmncSttn() { } const tableData = [...inUsageData, ...outUsageData, usageTotalObj]; setPrfData(tableData); - + setExcelData(excelPrfmncSttnParsing(prfData ?? [])) } else { setPrfData([]); } diff --git a/apps/wr/app/store/prfmncSttn/pbnstPrfmncSttn/excel.tsx b/apps/wr/app/store/prfmncSttn/pbnstPrfmncSttn/excel.tsx new file mode 100644 index 000000000..113a35289 --- /dev/null +++ b/apps/wr/app/store/prfmncSttn/pbnstPrfmncSttn/excel.tsx @@ -0,0 +1,24 @@ +export const excelPrfmncSttnParsing = ( + data: any[] +): string[][] => { + const excelExportData: string[][] = []; + data.forEach((item) => { + excelExportData.push([ + item.용수명, + item.total, + item["1월"], + item["2월"], + item["3월"], + item["4월"], + item["5월"], + item["6월"], + item["7월"], + item["8월"], + item["9월"], + item["10월"], + item["11월"], + item["12월"], + ]); + }); + return excelExportData; +}; \ No newline at end of file diff --git a/apps/wr/app/store/prfmncSttn/pbnstPrfmncSttn/index.tsx b/apps/wr/app/store/prfmncSttn/pbnstPrfmncSttn/index.tsx index 8af811463..d0e958785 100644 --- a/apps/wr/app/store/prfmncSttn/pbnstPrfmncSttn/index.tsx +++ b/apps/wr/app/store/prfmncSttn/pbnstPrfmncSttn/index.tsx @@ -49,7 +49,6 @@ const hasuListFetch = async (page: string, sggOrCity: string) => { checkWrRegListRes?.fcltCds, fetchType.COMMON ); - console.log("api 호출", rainRes) const data = checkWrRegListRes.fcPrfList.map((item: FcPrfType) => { const findData = rainRes.data.find( (fclt: pubHasuType) => @@ -87,7 +86,7 @@ export const pbnstPrfmncSttnActionsExport: (set: any) => pbnstPrfmncSttnActions yearHead[0].title = i + "년도" } yearHeader = [...yearHeader, ...yearHead] - selectList.push({text: i + "년도", val: String(i)} ) + selectList.push({ text: i + "년도", val: String(i) }) } set((state: pbnstPrfmncSttnState) => { return { @@ -143,7 +142,6 @@ export const pbnstPrfmncSttnActionsExport: (set: any) => pbnstPrfmncSttnActions bscFctCdList, `wr`, ) - console.log("res", res) let inUsageSum = 0; let outUsageSum = 0; let usageSum = 0; @@ -177,9 +175,6 @@ export const pbnstPrfmncSttnActionsExport: (set: any) => pbnstPrfmncSttnActions resData.push({ ...data, ...acc }) } }) - - - return set((state: pbnstPrfmncSttnState) => ({ ...state, pbnstPrfmncSttn: { diff --git a/apps/wr/public/sample_pbnstPrfmncSttn.xlsx b/apps/wr/public/sample_pbnstPrfmncSttn.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..1834349845d9f8e15590ecffbb7a2feb21a0f8f1 GIT binary patch literal 11525 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 R00Tn;Jt{y{5~u!o_dgHU6xjd( literal 0 HcmV?d00001