From 1466e04638ce0d94616d62917c20d2509015ce8a Mon Sep 17 00:00:00 2001 From: leedj312 Date: Wed, 14 May 2025 16:16:51 +0900 Subject: [PATCH] =?UTF-8?q?=EC=98=A8=EB=B0=B0=EC=88=98=20=ED=98=84?= =?UTF-8?q?=ED=99=A9=20=EC=97=91=EC=85=80=20=EB=8B=A4=EC=9A=B4=EB=A1=9C?= =?UTF-8?q?=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 --- .../ruseFcltMng/fcltSttn/htdflSttn/page.tsx | 66 +++++++++++++----- .../ruseFcltMng/fcltReg/htdflReg/index.tsx | 10 +-- .../ruseFcltMng/fcltSttn/htdflSttn/excel.tsx | 30 ++++++++ .../ruseFcltMng/fcltSttn/htdflSttn/index.tsx | 14 +++- apps/wr/public/sample_htdflSttn.xlsx | Bin 0 -> 10139 bytes 5 files changed, 94 insertions(+), 26 deletions(-) create mode 100644 apps/wr/app/store/ruseFcltMng/fcltSttn/htdflSttn/excel.tsx create mode 100644 apps/wr/public/sample_htdflSttn.xlsx diff --git a/apps/wr/app/ruseFcltMng/fcltSttn/htdflSttn/page.tsx b/apps/wr/app/ruseFcltMng/fcltSttn/htdflSttn/page.tsx index 2e06b05b3..1bd6bda67 100644 --- a/apps/wr/app/ruseFcltMng/fcltSttn/htdflSttn/page.tsx +++ b/apps/wr/app/ruseFcltMng/fcltSttn/htdflSttn/page.tsx @@ -6,7 +6,11 @@ import type { chgBuilding, customRainBdst, } from "@/app/store/ruseFcltMng/fcltReg/rainReg"; -import { getCityOrSgg, tableData } from "@/components/lib/func/commom"; +import { + excelDownload, + getCityOrSgg, + tableData, +} from "@/components/lib/func/commom"; import HeadChModal from "@/components/ui/modal/sttn/headChModal/headChModal"; import { ContentsDiv, @@ -22,9 +26,12 @@ import SttnDetailModal from "@/components/ui/modal/sttn/sttnDetailModal/sttnDeta import BdstChgModal from "@/components/ui/modal/fcltReg/bdstChgModal/bdstChgModal"; import { Button } from "@common/components/ui"; import { useCallback, useEffect, useRef, useState } from "react"; +import { excelHtdflSttnParsing } from "@/app/store/ruseFcltMng/fcltSttn/htdflSttn/excel"; export default function HtdflSttn() { - const { code, htdflSttn, htdflSttnSearch, initHtdfl} = useWrStore((state) => state); + const { code, htdflSttn, htdflSttnSearch, initHtdfl } = useWrStore( + (state) => state + ); const { htdflSttnRes } = htdflSttn; const ref = useRef({} as ReturnType); @@ -44,26 +51,52 @@ export default function HtdflSttn() { const codeData = getCityOrSgg(ref); const excelClick = useCallback(() => { - if (codeData) htdflSttnSearch(1, "10000", codeData); - }, []); + if (codeData) htdflSttnSearch(1, "10000", codeData); + }, [htdflSttnSearch, codeData]); useEffect(() => { if (codeData != null) htdflSttnSearch(pageNation, "20", codeData); }, [pageNation]); const cellClick = (index: number | undefined, headId: string) => { - if(headId!=='chBuildingYn' && index!==undefined && bdstTable!==undefined){ - setDetailModal({isOpen:true ,data:bdstTable[index] }) - }else if( headId==='chBuildingYn' && index!==undefined && bdstTable!==undefined){ + if ( + headId !== "chBuildingYn" && + index !== undefined && + bdstTable !== undefined + ) { + setDetailModal({ isOpen: true, data: bdstTable[index] }); + } else if ( + headId === "chBuildingYn" && + index !== undefined && + bdstTable !== undefined + ) { if ( bdstTable[index] && - bdstTable[index]?.chgBuilding[0]?.bdstChgNm!==null - + bdstTable[index]?.chgBuilding[0]?.bdstChgNm !== null ) { - setBdstChgProps({ isOpen:true , chBuilding: bdstTable[index].chgBuilding}); + setBdstChgProps({ + isOpen: true, + chBuilding: bdstTable[index].chgBuilding, + }); } } }; + useEffect(() => { + const excelDown = async () => { + if (htdflSttn.excelList.length > 0) { + if (htdflSttn.excelList.length === 0) return; + const excelData = await tableData(htdflSttn.excelList, { code }); + const htdflExcel = excelHtdflSttnParsing(excelData); + excelDownload( + htdflExcel as [[]], + "온배수시설 현황", + "sample_htdflSttn.xlsx", + "A1:S3" + ); + } + }; + excelDown(); + }, [htdflSttn.excelList, code]); useEffect(() => { if (!htdflSttn.isInit) { @@ -165,12 +198,13 @@ export default function HtdflSttn() { } /> { - setDetailModal({...detailModal, isOpen:!detailModal.isOpen}) - }} - bodyClass={"w-[40vw] max-w-none max-h-[calc(100%-70px)]"} - body={}/> + open={detailModal.isOpen} + onOpenChange={() => { + setDetailModal({ ...detailModal, isOpen: !detailModal.isOpen }); + }} + bodyClass={"w-[40vw] max-w-none max-h-[calc(100%-70px)]"} + body={} + /> new Date()), @@ -27,16 +29,8 @@ export const hdtflZod = z.object({ anlOperCst: z.number().default(0), instlCstSprtYn: z.enum(["Y", "N"]).nullish(), instlCstSprtAmt: z.number().nullish().default(0), - // grntchBdstCertYn: z.enum(["Y", "N"]), - // grntchBdstCertYr: z .string().default("") - // .refine((year) =>year.length ===0 || /^\d{4}$/.test(year),{ - // message:'4자리 연도만 입력하세요' - // }), grntchBdstCertNo: z.string().nullish().default(""), grntchBdstCertGrd: z.string().nullish().default(""), - // crgRdctYn: z.enum(["Y", "N"]), - // crgRdctBss: z.string().nullish().default(""), - // crgRdctAmt: z.number().nullish().default(0), ruseFcltFlg: z.string().nullish().default(""), bdstUsgCd: z.number().default(0), lawTrgtYn: z.enum(["Y", "N"]).nullish(), diff --git a/apps/wr/app/store/ruseFcltMng/fcltSttn/htdflSttn/excel.tsx b/apps/wr/app/store/ruseFcltMng/fcltSttn/htdflSttn/excel.tsx new file mode 100644 index 000000000..671eacae8 --- /dev/null +++ b/apps/wr/app/store/ruseFcltMng/fcltSttn/htdflSttn/excel.tsx @@ -0,0 +1,30 @@ +import type { customHtdflBdst } from "../../fcltReg/htdflReg"; + +export const excelHtdflSttnParsing = (data: customHtdflBdst[]): string[][] => { + const excelExportData: string[][] = []; + + data.forEach((item) => { + excelExportData.push([ + String(item.cityText??""), + String(item.sggText??""), + item.bdstNm ?? "", + item.daddr ?? "", + String(item.frstArchPrmsnDt ?? ""), + String(item.reuseBuilding?.[0]?.htdflObj.etgtType ?? ""), + String(item.reuseBuilding?.[0]?.htdflObj.fclCpct ?? ""), // fix: added missing parenthesis + String(item.reuseBuilding?.[0]?.htdflObj.plwtYn ? "Y" :"N"), // fix: added missing parenthesis + String(item.reuseBuilding?.[0]?.htdflObj.orgwtWtritSpt ?? ""), // fix: added missing parenthesis + String(item.reuseBuilding?.[0]?.htdflObj.wtritEntrcTp ?? ""), // fix: removed as it doesn't exist in the provided context + String(item.reuseBuilding?.[0]?.htdflObj.orgwtOcrnProcs ?? ""), // fix: removed as it doesn't exist in the provided context + String( item.reuseBuilding?.[0]?.htdflObj?.amtgnr ?? ""), // fix: removed as it doesn't exist in the provided context + String(item.reuseBuilding?.[0]?.htdflObj?.prcsProcsYn ?? ""), // fix: removed as it doesn't exist in the provided context + String( '컬럼확인'), // fix: removed as it doesn't exist in the provided context + String(item.reuseBuilding?.[0]?.htdflObj?.prcsFcltCpct ?? ""), // fix: removed as it doesn't exist in the provided context + String(item.reuseBuilding?.[0]?.htdflObj?.fmYn ?? ""), // fix: removed as it doesn't exist in the provided context + String(item.reuseBuilding?.[0]?.htdflObj?.utztnCpct ?? ""), // fix: removed as it doesn't exist in the provided context + String(item.reuseBuilding?.[0]?.htdflObj?.utztnUsg ?? ""), // fix: removed as it doesn't exist in the provided context + String(item.reuseBuilding?.[0]?.htdflObj?.emsnExitTp ?? ""), // fix: removed as it doesn't exist in the provided context + ]); + }); + return excelExportData; +}; diff --git a/apps/wr/app/store/ruseFcltMng/fcltSttn/htdflSttn/index.tsx b/apps/wr/app/store/ruseFcltMng/fcltSttn/htdflSttn/index.tsx index 0dedb1570..2df318c45 100644 --- a/apps/wr/app/store/ruseFcltMng/fcltSttn/htdflSttn/index.tsx +++ b/apps/wr/app/store/ruseFcltMng/fcltSttn/htdflSttn/index.tsx @@ -5,6 +5,8 @@ import type { z } from "zod"; import { controlHeadView } from "../rainSttn"; import type { customHtdflBdst } from "../../fcltReg/htdflReg"; import { fetchType, getFetch } from "@/components/lib/api"; +import { excelHtdflSttnParsing } from "./excel"; +import { tableData } from "@/components/lib/func/commom"; const htdflSttHeadList = htdflSttHeadListExport; const htdflSttNodeList = htdflSttNodeListExport; @@ -15,6 +17,8 @@ export type htdflSttnState = { htdflSttHeadList: z.infer; htdflSttNodeList: CommonTableProps[]; htdflSttnRes:customHtdflBdst[] + excelList: []; + }; }; type htdflSttnActions = { @@ -32,6 +36,7 @@ export const htdflSttnStateExport: htdflSttnState = { htdflSttHeadList: htdflSttHeadList, htdflSttNodeList: htdflSttNodeList, htdflSttnRes:[], + excelList:[], isInit: false, }, }; @@ -66,18 +71,21 @@ export const htdflSttnActionsExport: (set: any) => htdflSttnActions = ( }, htdflSttnSearch: async (page: number, total: string, con: string) => { try { + console.log(page) const htdflSttnRes = await getFetch( fetchType.WR, `/drain/facilityList/${page}/${total}/${con}` ); if (Number(total) > 9000) { - // const htdflExcel = excelHtdflSttnParsing(htdflSttnRes); + + set((state: htdflSttnState) => { + return { ...state, htdflSttn: { ...state.htdflSttn, - // excelList: htdflExcel, + excelList: htdflSttnRes, }, }; }); @@ -111,5 +119,7 @@ export const htdflSttnActionsExport: (set: any) => htdflSttnActions = ( }, })); }, + + } } \ No newline at end of file diff --git a/apps/wr/public/sample_htdflSttn.xlsx b/apps/wr/public/sample_htdflSttn.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..fd1dc5a8917a8538bf940cc9f9f957f37408230b GIT binary patch literal 10139 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 literal 0 HcmV?d00001