From be131e37c2888e027767cbae0039629b1a4eedee Mon Sep 17 00:00:00 2001 From: jsyang Date: Mon, 18 Aug 2025 14:35:24 +0900 Subject: [PATCH] =?UTF-8?q?-=EC=8B=9C=EC=84=A4=EA=B5=AC=EB=B6=84=20?= =?UTF-8?q?=EC=82=AD=EC=A0=9C=20-500=EC=9D=B4=ED=95=98=20>=20500=EB=AF=B8?= =?UTF-8?q?=EB=A7=8C=20-=EB=8C=80=EC=8B=9C=EB=B3=B4=EB=93=9C=EC=97=90?= =?UTF-8?q?=EC=84=9C=20=EC=B4=9D=EC=9D=B8=EC=84=A4=EB=B9=84=20=EC=9C=A0?= =?UTF-8?q?=EC=9E=85=EC=9D=B4=20=EC=97=86=EC=9D=84=20=EA=B2=BD=EC=9A=B0=20?= =?UTF-8?q?=ED=95=B4=EB=8B=B9=20=ED=96=89=20=EC=82=AD=EC=A0=9C=20-?= =?UTF-8?q?=EC=A7=80=ED=95=98=EC=88=98=EC=9C=A0=EC=9E=85=EB=9F=89=20?= =?UTF-8?q?=EB=AA=A8=EB=8B=AC=20=EC=8B=9C=EC=84=A4=EB=AA=85=EC=98=A4?= =?UTF-8?q?=EB=A5=98=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../(with-layout)/processFacility/page.tsx | 1 - .../underWaterInput/modal/page.tsx | 15 +-- .../(with-layout)/underWaterInput/page.tsx | 9 +- apps/fo/app/store/common/index.tsx | 2 +- apps/fo/app/store/dashboard/index.tsx | 111 ++++++++---------- 5 files changed, 64 insertions(+), 74 deletions(-) diff --git a/apps/fo/app/pages/(with-layout)/processFacility/page.tsx b/apps/fo/app/pages/(with-layout)/processFacility/page.tsx index 109b64562..a694d3a45 100644 --- a/apps/fo/app/pages/(with-layout)/processFacility/page.tsx +++ b/apps/fo/app/pages/(with-layout)/processFacility/page.tsx @@ -249,7 +249,6 @@ export default function ProcessFacilitySearch() { setFcltCpct(val.toString())} value={fcltCpct} selectClass={undefined} /> setOperationValue(val.toString())} value={operationValue} selectClass={undefined} /> - setFacilityPartValue(val.toString())} value={facilityPartValue} selectClass={undefined} /> } rightChildren={undefined} selectSidoData={selectSidoData} diff --git a/apps/fo/app/pages/(with-layout)/underWaterInput/modal/page.tsx b/apps/fo/app/pages/(with-layout)/underWaterInput/modal/page.tsx index 498fe3a1a..79c35b251 100644 --- a/apps/fo/app/pages/(with-layout)/underWaterInput/modal/page.tsx +++ b/apps/fo/app/pages/(with-layout)/underWaterInput/modal/page.tsx @@ -7,8 +7,9 @@ import { Table, TableCell, TableHead, TableRow, TabsContent } from "@common/comp import { useEffect, useState } from "react"; type ModalProps ={ - fcltyName: string; - searchYear : string; + fcltyCd?: string; + fcltyName?: string; + searchYear? : string; } const tabList1 = [ @@ -17,7 +18,7 @@ const tabList1 = [ { value: 'tab_term_winter', label: '동절기' }, ]; -export default function UnderWaterInputModal({fcltyName='', searchYear=new Date().getFullYear().toString()} : ModalProps) { +export default function UnderWaterInputModal({fcltyCd='', fcltyName='',searchYear=new Date().getFullYear().toString()} : ModalProps) { // 그리드 관련 const {UnderWaterDetail, unserWaterModal} = useFoStore((state) => state); @@ -64,8 +65,8 @@ export default function UnderWaterInputModal({fcltyName='', searchYear=new Date( }, [searchYear, tabTerm]); useEffect(()=>{ - unserWaterModal(fcltyName, searchYear, searchYear+'01', searchYear+'12'); - }, [fcltyName, searchYear, unserWaterModal]); + unserWaterModal(fcltyCd, searchYear, searchYear+'01', searchYear+'12'); + }, [fcltyCd, searchYear, unserWaterModal]); useEffect(() => { if(endYmDate < startYmDate) { @@ -83,8 +84,8 @@ export default function UnderWaterInputModal({fcltyName='', searchYear=new Date( }, [startYmDate, endYmDate, gridListUnderWaterDetail, prevStartYmDate, prevEndYmDate]); useEffect(() => { - unserWaterModal(fcltyName, searchYear, prevStartYmDate, prevEndYmDate); - } , [fcltyName, searchYear, unserWaterModal, prevStartYmDate, prevEndYmDate]); + unserWaterModal(fcltyCd, searchYear, prevStartYmDate, prevEndYmDate); + } , [fcltyCd, searchYear, unserWaterModal, prevStartYmDate, prevEndYmDate]); return ( <> diff --git a/apps/fo/app/pages/(with-layout)/underWaterInput/page.tsx b/apps/fo/app/pages/(with-layout)/underWaterInput/page.tsx index 8debdb15e..e731fb7a3 100644 --- a/apps/fo/app/pages/(with-layout)/underWaterInput/page.tsx +++ b/apps/fo/app/pages/(with-layout)/underWaterInput/page.tsx @@ -66,11 +66,11 @@ export default function UnderWaterInput() { // 모달 상태 추가 const [selectedRow, setSelectedRow] = useState(null); + const [fcltyCd, setFcltyCd] = useState(""); const [fcltyNm, setFcltyNm] = useState(""); // 그리드 관련 const searchInputRef = useRef(null); - // 초기화 변수 const [resetPage, setResetPage] = useState(false); // 표 너비 @@ -116,7 +116,8 @@ export default function UnderWaterInput() { // 셀 클릭 시 모달 표시 const cellClick = (index: number) => { if (underWater[index]) { - setFcltyNm(underWater[index].bscFctCd); + setFcltyCd(underWater[index].bscFctCd || ""); + setFcltyNm(underWater[index].bscFctNm || ""); setSelectedRow(index); // 클릭한 행의 index 저장 } }; @@ -129,7 +130,7 @@ export default function UnderWaterInput() { initializeCommonData(); searchUnderWaterList(1, 10, selectSearchYear[0]?.val || "0"); } - }, [isInit, initializeCommonData, searchUnderWaterList]); + }, [isInit, initializeCommonData, searchUnderWaterList, selectSearchYear]); useEffect(() => { if (excelList && excelList.length > 0) { @@ -227,7 +228,7 @@ export default function UnderWaterInput() { {selectedRow !== null && ( } + body={} bodyClass="sm:max-w-[90vw] w-[1000px] h-[770px]" open={selectedRow !== null} onOpenChange={(open) => !open && closeModal()} diff --git a/apps/fo/app/store/common/index.tsx b/apps/fo/app/store/common/index.tsx index 5811b9c7e..5646ea126 100644 --- a/apps/fo/app/store/common/index.tsx +++ b/apps/fo/app/store/common/index.tsx @@ -131,7 +131,7 @@ const selectEnvPartSigunData: SelectDataType[] = [ // 상향 하향 데이터 const selectUpdownData:SelectDataType[] = [ { text: "전체", val: '0' }, - { text: "500이하", val: '400' }, + { text: "500미만", val: '400' }, { text: "500이상", val: '500' }, ]; diff --git a/apps/fo/app/store/dashboard/index.tsx b/apps/fo/app/store/dashboard/index.tsx index d27e05f13..ec19ceed5 100644 --- a/apps/fo/app/store/dashboard/index.tsx +++ b/apps/fo/app/store/dashboard/index.tsx @@ -355,29 +355,29 @@ const upHeadListOperationStatus : TableUpperProps[] = [ const upHeadListRainManage : TableUpperProps[] = [ { id: "rainItem", title: "강우량", row:0, rowSpan:2 }, - { id: "rainRate", title: "강우조건\n비율(%)", row:0, rowSpan:2 }, - { id: "rainDay", title: "일수", row:0, rowSpan:2 }, + { id: "rainRate", title: "강우조건\n비율(%)", row:0, rowSpan:2, align: "right" }, + { id: "rainDay", title: "일수", row:0, rowSpan:2, align: "right" }, { id: "A", title: "유입(㎥/일)", row:0, colSpan:2 }, - { id: "inflAmnt", title: "유입유량", row:1 }, - { id: "fctCpc", title: "시설용량대비", row:1 }, + { id: "inflAmnt", title: "유입유량", row:1, align: "right" }, + { id: "fctCpc", title: "시설용량대비", row:1, align: "right" }, { id: "B", title: "설계유입수질(㎎/L)", row:0, colSpan:5 }, - { id: "dsInflWqltBod", title: "BOD", row:1 }, - { id: "dsInflWqltCod", title: "TOC\n(COD)", row:1 }, - { id: "dsInflWqltSs", title: "SS", row:1 }, - { id: "dsInflWqltTn", title: "T-N", row:1 }, - { id: "dsInflWqltTp", title: "T-P", row:1 }, + { id: "dsInflWqltBod", title: "BOD", row:1, align: "right" }, + { id: "dsInflWqltCod", title: "TOC\n(COD)", row:1, align: "right" }, + { id: "dsInflWqltSs", title: "SS", row:1, align: "right" }, + { id: "dsInflWqltTn", title: "T-N", row:1, align: "right" }, + { id: "dsInflWqltTp", title: "T-P", row:1, align: "right" }, { id: "C", title: "유입수질(㎎/L)", row:0, colSpan:5 }, - { id: "inflAssctBfrWqltBod", title: "BOD", row:1 }, - { id: "inflAssctBfrWqltToc", title: "TOC\n(COD)", row:1 }, - { id: "inflAssctBfrWqltSs", title: "SS", row:1 }, - { id: "inflAssctBfrWqltTn", title: "T-N", row:1 }, - { id: "inflAssctBfrWqltTp", title: "T-P", row:1 }, + { id: "inflAssctBfrWqltBod", title: "BOD", row:1, align: "right" }, + { id: "inflAssctBfrWqltToc", title: "TOC\n(COD)", row:1, align: "right" }, + { id: "inflAssctBfrWqltSs", title: "SS", row:1, align: "right" }, + { id: "inflAssctBfrWqltTn", title: "T-N", row:1, align: "right" }, + { id: "inflAssctBfrWqltTp", title: "T-P", row:1, align: "right" }, { id: "D", title: "방류수질(㎎/L)", row:0, colSpan:5 }, - { id: "efflWqltBod", title: "BOD", row:1 }, - { id: "efflWqltToc", title: "TOC\n(COD)", row:1 }, - { id: "efflWqltSs", title: "SS", row:1 }, - { id: "efflWqltTn", title: "T-N", row:1 }, - { id: "efflWqltTp", title: "T-P", row:1 }, + { id: "efflWqltBod", title: "BOD", row:1, align: "right" }, + { id: "efflWqltToc", title: "TOC\n(COD)", row:1, align: "right" }, + { id: "efflWqltSs", title: "SS", row:1, align: "right" }, + { id: "efflWqltTn", title: "T-N", row:1, align: "right" }, + { id: "efflWqltTp", title: "T-P", row:1, align: "right" }, ] const upHeadListDrainageEquipment : TableUpperProps[] = [ @@ -401,7 +401,7 @@ const upHeadListDrainageEquipment : TableUpperProps[] = [ { id: "etc", title: "비고", row:0, upName:"upChangeRe7", upSequnce:1 }, ] -const operationalStatusList : OperationalStatusListProps[] = [ +let operationalStatusList : OperationalStatusListProps[] = [ { flowRate : '유량\n(㎥/일)', waterQlty : '유입', @@ -1173,6 +1173,7 @@ export const dashBoardReducer:(set:(fn: (state: DashBoardType) => DashBoardType) const yearAvg = data.yearData===null?'':(data.yearData.AVG_INFL_AMNT?data.yearData.AVG_INFL_AMNT:0)+(data.yearData.AVG_SUM_FLOW?data.yearData.AVG_SUM_FLOW:0)+(data.yearData.AVG_RETURN_AMNT?data.yearData.AVG_RETURN_AMNT:0); const yearMax = data.yearData===null?'':(data.yearData.MAX_INFL_AMNT?data.yearData.MAX_INFL_AMNT:0)+(data.yearData.MAX_SUM_FLOW?data.yearData.MAX_SUM_FLOW:0)+(data.yearData.MAX_RETURN_AMNT?data.yearData.MAX_RETURN_AMNT:0); const yearMin = data.yearData===null?'':(data.yearData.MIN_INFL_AMNT?data.yearData.MIN_INFL_AMNT:0)+(data.yearData.MIN_SUM_FLOW?data.yearData.MIN_SUM_FLOW:0)+(data.yearData.MIN_RETURN_AMNT?data.yearData.MIN_RETURN_AMNT:0); + operationalStatusList[0].yearAvg = yearAvg; operationalStatusList[0].yearMax = yearMax; operationalStatusList[0].yearMin = yearMin; @@ -1193,11 +1194,26 @@ export const dashBoardReducer:(set:(fn: (state: DashBoardType) => DashBoardType) (data.summerSunny.AVG_TP_INFL_WQLT_TP ? data.summerSunny.AVG_TP_INFL_WQLT_TP : 0) ); // 겨울 - operationalStatusList[0].winterAll = data.winter === null ? '' : (data.winter.AVG_INFL_AMNT ? data.winter.AVG_INFL_AMNT : 0) + (data.winter.AVG_SUM_FLOW ? data.winter.AVG_SUM_FLOW : 0) + (data.winter.AVG_TP_INFL_WQLT_TP ? data.winter.AVG_TP_INFL_WQLT_TP : 0); - operationalStatusList[0].winterSunnyMin = data.winterSunny === null ? '' : (data.winterSunny.MIN_INFL_AMNT ? data.winterSunny.MIN_INFL_AMNT : 0) + (data.winterSunny.MIN_SUM_FLOW ? data.winterSunny.MIN_SUM_FLOW : 0) + (data.winterSunny.MIN_TP_INFL_WQLT_TP ? data.winterSunny.MIN_TP_INFL_WQLT_TP : 0); - operationalStatusList[0].winterSunnyAvg = data.winterSunny === null ? '' : (data.winterSunny.AVG_INFL_AMNT ? data.winterSunny.AVG_INFL_AMNT : 0) + (data.winterSunny.AVG_SUM_FLOW ? data.winterSunny.AVG_SUM_FLOW : 0) + (data.winterSunny.AVG_TP_INFL_WQLT_TP ? data.winterSunny.AVG_TP_INFL_WQLT_TP : 0); - operationalStatusList[0].winterSunnyMax = data.winterSunny === null ? '' : (data.winterSunny.MAX_INFL_AMNT ? data.winterSunny.MAX_INFL_AMNT : 0) + (data.winterSunny.MAX_SUM_FLOW ? data.winterSunny.MAX_SUM_FLOW : 0) + (data.winterSunny.MAX_TP_INFL_WQLT_TP ? data.winterSunny.MAX_TP_INFL_WQLT_TP : 0); - + operationalStatusList[0].winterAll = data.winter === null ? '' : ( + (data.winter.AVG_INFL_AMNT ? data.winter.AVG_INFL_AMNT : 0) + + (data.winter.AVG_SUM_FLOW ? data.winter.AVG_SUM_FLOW : 0) + + (data.winter.AVG_TP_INFL_WQLT_TP ? data.winter.AVG_TP_INFL_WQLT_TP : 0) + ); + operationalStatusList[0].winterSunnyMin = data.winterSunny === null ? '' : ( + (data.winterSunny.MIN_INFL_AMNT ? data.winterSunny.MIN_INFL_AMNT : 0) + + (data.winterSunny.MIN_SUM_FLOW ? data.winterSunny.MIN_SUM_FLOW : 0) + + (data.winterSunny.MIN_TP_INFL_WQLT_TP ? data.winterSunny.MIN_TP_INFL_WQLT_TP : 0) + ); + operationalStatusList[0].winterSunnyAvg = data.winterSunny === null ? '' : ( + (data.winterSunny.AVG_INFL_AMNT ? data.winterSunny.AVG_INFL_AMNT : 0) + + (data.winterSunny.AVG_SUM_FLOW ? data.winterSunny.AVG_SUM_FLOW : 0) + + (data.winterSunny.AVG_TP_INFL_WQLT_TP ? data.winterSunny.AVG_TP_INFL_WQLT_TP : 0) + ); + operationalStatusList[0].winterSunnyMax = data.winterSunny === null ? '' : ( + (data.winterSunny.MAX_INFL_AMNT ? data.winterSunny.MAX_INFL_AMNT : 0) + + (data.winterSunny.MAX_SUM_FLOW ? data.winterSunny.MAX_SUM_FLOW : 0) + + (data.winterSunny.MAX_TP_INFL_WQLT_TP ? data.winterSunny.MAX_TP_INFL_WQLT_TP : 0) + ); // 연계처리수 let yearDay = 0; let summerDay = 0; @@ -1364,37 +1380,10 @@ export const dashBoardReducer:(set:(fn: (state: DashBoardType) => DashBoardType) } } - //const excelDownList: RainManageExcelType[] = []; - /* if(isExcel){ - res.data.forEach(item => { - dataFormSetting(item) - item.fctCpc = parseFloat(item.fctCpc.toString().replace(/,/g, '')); - item.sidoNm = item.lclgvrnmntNm.split(' ')[0]?.toString() || ''; - item.sggNm = item.lclgvrnmntNm.split(' ')[1]?.toString() || ''; - excelDownList.push({ - 시설코드: item.bscFctCd, - 시설이름: item.bscFctNm, - 측정일자: item.msrDt, - 시도: item.sidoNm, - 시군구: item.sggNm, - 주소: item.addr, - 용량: item.fctCpc, - 유입BOD: item.inflAssctBfrWqltBod, - 유입TN: item.inflAssctBfrWqltTn, - 유입TP: item.inflAssctBfrWqltTp, - 유출BOD: item.efflWqltBod, - 유출TN: item.efflWqltTn, - 유출TP: item.efflWqltTp, - 환경청: item.rgnNm, - 유역: item.rvbsn, - 대유역: item.lgbsn, - 중유역: item.mdmbsn, - }); - }); - }else{ */ - /* data.forEach((item: OperationalStatusListProps) => { - }); */ - /* } */ + // + if(data.yearData.TP_INFL_WQLT_TP === null || data.yearData.TP_INFL_WQLT_TP === undefined || data.yearData.TP_INFL_WQLT_TP === 'null') { + operationalStatusList = operationalStatusList.slice(0, 10); + } set((state: DashBoardType) => ({ ...state, OperationStatus: { @@ -1405,7 +1394,7 @@ export const dashBoardReducer:(set:(fn: (state: DashBoardType) => DashBoardType) }, })) }, - + searchMainGraph: async (searchYear: string, fcltyCd: string) => { set((state: DashBoardType) => ({ ...state, @@ -1864,8 +1853,8 @@ export const dashBoardReducer:(set:(fn: (state: DashBoardType) => DashBoardType) const filteredData = itemList.map((item, index) => ({ rainItem: item, rainRate: rainRate[index] || '0', - rainDay: rainDate[index] ? Number(rainDate[index].toFixed(1)) : '', - inflAmnt: inflAmnt[index] ? Number((Math.round(inflAmnt[index] * 10) / 10).toFixed(1)) : '', + rainDay: rainDate[index] ? Number(rainDate[index].toFixed(1)) : '0', + inflAmnt: inflAmnt[index] ? Number((Math.round(inflAmnt[index] * 1) / 1)) : '', fctCpc: inflAmnt[index] ? (Math.round((inflAmnt[index] / fcltyCpcValue) * 10) / 10).toFixed(1) : '', dsInflWqltBod: dsInflWqltBod[index] ? (Math.round(dsInflWqltBod[index] * 10) / 10).toFixed(1) : '', dsInflWqltCod: dsInflWqltCod[index] ? (Math.round(dsInflWqltCod[index] * 10) / 10).toFixed(1) : '', @@ -1890,8 +1879,8 @@ export const dashBoardReducer:(set:(fn: (state: DashBoardType) => DashBoardType) excelList.push({ 강우량: item.rainItem, 강우조건비율: item.rainRate ? Number(Number(item.rainRate).toFixed(1)) : '', - 일수: item.rainDay ? Number(Number(item.rainDay).toFixed(1)) : '', - 유입유량: item.inflAmnt ? Number((Math.round(Number(item.inflAmnt) * 10) / 10).toFixed(1)) : '', + 일수: item.rainDay ? Number(Number(item.rainDay).toFixed(1)) : 0, + 유입유량: item.inflAmnt ? Number((Math.round(Number(item.inflAmnt) * 1) / 1)) : '', 시설용량대비: item.fctCpc ? (Math.round(Number(item.fctCpc) * 10) / 10).toFixed(1) : '', 설계유입수질BOD: item.dsInflWqltBod ? (Math.round(Number(item.dsInflWqltBod) * 10) / 10).toFixed(1) : '', 설계유입수질TOC: item.dsInflWqltCod ? (Math.round(Number(item.dsInflWqltCod) * 10) / 10).toFixed(1) : '',