diff --git a/apps/fo/app/pages/dashboard/facilityInfo/page.tsx b/apps/fo/app/pages/dashboard/facilityInfo/page.tsx index b774687bd..804fb9807 100644 --- a/apps/fo/app/pages/dashboard/facilityInfo/page.tsx +++ b/apps/fo/app/pages/dashboard/facilityInfo/page.tsx @@ -56,7 +56,7 @@ export default function ProcessFacilitySearch({searchYear = '', fcltyList = []}: PlanFclty, OperationStatus, searchOperationStatus, - searchPlanInfo + searchPlanInfo, } = useFoStore((state) => state); const [modalItem, setModalItem] = useState<{item: string, period: string, title: string, waterQlty: string} | null>(null); @@ -77,7 +77,10 @@ export default function ProcessFacilitySearch({searchYear = '', fcltyList = []}: const { upHeadListPlanFclty, planFcltyList, - planYearList + planYearList, + waterUsage1, + waterUsage2, + waterUsage3 } = PlanFclty; // 그리드 관련 @@ -147,20 +150,28 @@ export default function ProcessFacilitySearch({searchYear = '', fcltyList = []}: searchPlanInfo(searchYear, fcltyList[0].bscFctCd); setHasSearched(true); setPrevFacilityCode(fcltyList[0].bscFctCd); + } + }, [isInit, searchOperationStatus, searchYear, fcltyList, hasSearched, prevFacilityCode, searchPlanInfo]); + + // waterUsage 값들이 로드된 후에 테이블 데이터 업데이트 + useEffect(() => { + if (waterUsage1 !== '' && waterUsage2 !== '' && waterUsage3 !== '') { planFcltyList.forEach((el: { [key: string]: string | number | boolean }, index) => { if (index === 6) { el['item'] = (Number(searchYear)-2).toString(); - el['provisionalApproval'] = Number(fcltyList[0]?.fcltyCpc)* 0.6 - 2054.3; + el['provisionalApproval'] = waterUsage3; } else if (index === 7) { el['item'] = (Number(searchYear)-1).toString(); - el['provisionalApproval'] = Number(fcltyList[0]?.fcltyCpc)* 0.6 + 523.1; + el['provisionalApproval'] = waterUsage2; } else if (index === 8) { el['item'] = (Number(searchYear)-0).toString(); - el['provisionalApproval'] = Number(fcltyList[0]?.fcltyCpc)* 0.6 + 1521.2; + el['provisionalApproval'] = waterUsage1; + } else if(index === 4){ + el['provisionalApproval'] = (Number(waterUsage1)+Number(waterUsage2)+Number(waterUsage3))/3; } }); } - }, [isInit, searchOperationStatus, searchYear, fcltyList, hasSearched, prevFacilityCode, searchPlanInfo, planFcltyList]); + }, [waterUsage1, waterUsage2, waterUsage3, searchYear, planFcltyList]); // 연도가 바뀌면 hasSearched를 false로 리셋 useEffect(() => { setHasSearched(false); diff --git a/apps/fo/app/pages/facilityPrecipitation/page.tsx b/apps/fo/app/pages/facilityPrecipitation/page.tsx index 96456a71b..b6df81d04 100644 --- a/apps/fo/app/pages/facilityPrecipitation/page.tsx +++ b/apps/fo/app/pages/facilityPrecipitation/page.tsx @@ -94,7 +94,7 @@ export default function FacilityPrecipitation() { // 상태값 설정 setFcltCpct(selectUpdownData[0]?.val || "0"); setOperationValue(selectOperationData[0]?.val || "0"); - setSearchYear(selectSearchYear[0]?.val || "0"); + setSearchYear("2023"); // SearchInputSelect 초기화 setFcltyName(""); if (searchInputRef.current) { @@ -103,7 +103,7 @@ export default function FacilityPrecipitation() { input.value = ""; } } - searchFacilityPrecipitationList(1, 10, selectSearchYear[0]?.val || "0"); + searchFacilityPrecipitationList(1, 10, searchYear || "0"); } // 모달 닫기 diff --git a/apps/fo/app/pages/facilityWaterQlty/modal/page.tsx b/apps/fo/app/pages/facilityWaterQlty/modal/page.tsx index eadfa9ba8..1ac1bc00f 100644 --- a/apps/fo/app/pages/facilityWaterQlty/modal/page.tsx +++ b/apps/fo/app/pages/facilityWaterQlty/modal/page.tsx @@ -66,11 +66,11 @@ export default function WaterQualityModal({fcltyName='', facilityCd='', searchYe let maxefflWqltToc = 0; let maxEfflWqltSs = 0; - let maxInflAssctAftWqltBod = 0; - let maxInflAssctAftWqltTn = 0; + let maxinflAssctBfrWqltBod = 0; + let maxinflAssctBfrWqltTn = 0; let maxInflAssctBfrWqltTp = 0; - let maxInflAssctAftWqltToc = 0; - let maxInflAssctAftWqltSs = 0; + let maxinflAssctBfrWqltToc = 0; + let maxinflAssctBfrWqltSs = 0; let maxTpInflWqltBod = 0; let maxTpInflWqltTp = 0; @@ -83,11 +83,11 @@ export default function WaterQualityModal({fcltyName='', facilityCd='', searchYe let minefflWqltToc = filteredData.length > 0 ? parseNumber(filteredData[0]?.efflWqltToc) : 0; let minEfflWqltSs = filteredData.length > 0 ? parseNumber(filteredData[0]?.efflWqltSs) : 0; - let minInflAssctAftWqltBod = filteredData.length > 0 ? parseNumber(filteredData[0]?.inflAssctAftWqltBod) : 0; - let minInflAssctAftWqltTn = filteredData.length > 0 ? parseNumber(filteredData[0]?.inflAssctAftWqltTn) : 0; + let mininflAssctBfrWqltBod = filteredData.length > 0 ? parseNumber(filteredData[0]?.inflAssctBfrWqltBod) : 0; + let mininflAssctBfrWqltTn = filteredData.length > 0 ? parseNumber(filteredData[0]?.inflAssctBfrWqltTn) : 0; let minInflAssctBfrWqltTp = filteredData.length > 0 ? parseNumber(filteredData[0]?.inflAssctBfrWqltTp) : 0; - let minInflAssctAftWqltToc = filteredData.length > 0 ? parseNumber(filteredData[0]?.inflAssctAftWqltToc) : 0; - let minInflAssctAftWqltSs = filteredData.length > 0 ? parseNumber(filteredData[0]?.inflAssctAftWqltSs) : 0; + let mininflAssctBfrWqltToc = filteredData.length > 0 ? parseNumber(filteredData[0]?.inflAssctBfrWqltToc) : 0; + let mininflAssctBfrWqltSs = filteredData.length > 0 ? parseNumber(filteredData[0]?.inflAssctBfrWqltSs) : 0; let minTpInflWqltBod = filteredData.length > 0 ? parseNumber(filteredData[0]?.tpInflWqltBod) : 0; let minTpInflWqltTp = filteredData.length > 0 ? parseNumber(filteredData[0]?.tpInflWqltTp) : 0; @@ -100,11 +100,11 @@ export default function WaterQualityModal({fcltyName='', facilityCd='', searchYe let avgefflWqltToc = 0; let avgEfflWqltSs = 0; - let avgInflAssctAftWqltBod = 0; - let avgInflAssctAftWqltTn = 0; + let avginflAssctBfrWqltBod = 0; + let avginflAssctBfrWqltTn = 0; let avgInflAssctBfrWqltTp = 0; - let avgInflAssctAftWqltToc = 0; - let avgInflAssctAftWqltSs = 0; + let avginflAssctBfrWqltToc = 0; + let avginflAssctBfrWqltSs = 0; let avgTpInflWqltBod = 0; let avgTpInflWqltTp = 0; @@ -118,11 +118,11 @@ export default function WaterQualityModal({fcltyName='', facilityCd='', searchYe const efflWqltToc = parseNumber(item.efflWqltToc); const efflWqltSs = parseNumber(item.efflWqltSs); - const inflAssctAftWqltBod = parseNumber(item.inflAssctAftWqltBod); - const inflAssctAftWqltTn = parseNumber(item.inflAssctAftWqltTn); + const inflAssctBfrWqltBod = parseNumber(item.inflAssctBfrWqltBod); + const inflAssctBfrWqltTn = parseNumber(item.inflAssctBfrWqltTn); const inflAssctBfrWqltTp = parseNumber(item.inflAssctBfrWqltTp); - const inflAssctAftWqltToc = parseNumber(item.inflAssctAftWqltToc); - const inflAssctAftWqltSs = parseNumber(item.inflAssctAftWqltSs); + const inflAssctBfrWqltToc = parseNumber(item.inflAssctBfrWqltToc); + const inflAssctBfrWqltSs = parseNumber(item.inflAssctBfrWqltSs); const tpInflWqltBod = parseNumber(item.tpInflWqltBod); @@ -136,11 +136,11 @@ export default function WaterQualityModal({fcltyName='', facilityCd='', searchYe maxefflWqltToc = Math.max(maxefflWqltToc, efflWqltToc); maxEfflWqltSs = Math.max(maxEfflWqltSs, efflWqltSs); - maxInflAssctAftWqltBod = Math.max(maxInflAssctAftWqltBod, inflAssctAftWqltBod); - maxInflAssctAftWqltTn = Math.max(maxInflAssctAftWqltTn, inflAssctAftWqltTn); + maxinflAssctBfrWqltBod = Math.max(maxinflAssctBfrWqltBod, inflAssctBfrWqltBod); + maxinflAssctBfrWqltTn = Math.max(maxinflAssctBfrWqltTn, inflAssctBfrWqltTn); maxInflAssctBfrWqltTp = Math.max(maxInflAssctBfrWqltTp, inflAssctBfrWqltTp); - maxInflAssctAftWqltToc = Math.max(maxInflAssctAftWqltToc, inflAssctAftWqltToc); - maxInflAssctAftWqltSs = Math.max(maxInflAssctAftWqltSs, inflAssctAftWqltSs); + maxinflAssctBfrWqltToc = Math.max(maxinflAssctBfrWqltToc, inflAssctBfrWqltToc); + maxinflAssctBfrWqltSs = Math.max(maxinflAssctBfrWqltSs, inflAssctBfrWqltSs); maxTpInflWqltBod = Math.max(maxTpInflWqltBod, tpInflWqltBod); maxTpInflWqltTp = Math.max(maxTpInflWqltTp, tpInflWqltTp); @@ -153,11 +153,11 @@ export default function WaterQualityModal({fcltyName='', facilityCd='', searchYe minefflWqltToc = Math.min(minefflWqltToc, efflWqltToc); minEfflWqltSs = Math.min(minEfflWqltSs, efflWqltSs); - minInflAssctAftWqltBod = Math.min(minInflAssctAftWqltBod, inflAssctAftWqltBod); - minInflAssctAftWqltTn = Math.min(minInflAssctAftWqltTn, inflAssctAftWqltTn); + mininflAssctBfrWqltBod = Math.min(mininflAssctBfrWqltBod, inflAssctBfrWqltBod); + mininflAssctBfrWqltTn = Math.min(mininflAssctBfrWqltTn, inflAssctBfrWqltTn); minInflAssctBfrWqltTp = Math.min(minInflAssctBfrWqltTp, inflAssctBfrWqltTp); - minInflAssctAftWqltToc = Math.min(minInflAssctAftWqltToc, inflAssctAftWqltToc); - minInflAssctAftWqltSs = Math.min(minInflAssctAftWqltSs, inflAssctAftWqltSs); + mininflAssctBfrWqltToc = Math.min(mininflAssctBfrWqltToc, inflAssctBfrWqltToc); + mininflAssctBfrWqltSs = Math.min(mininflAssctBfrWqltSs, inflAssctBfrWqltSs); minTpInflWqltBod = Math.min(minTpInflWqltBod, tpInflWqltBod); minTpInflWqltTp = Math.min(minTpInflWqltTp, tpInflWqltTp); @@ -170,11 +170,11 @@ export default function WaterQualityModal({fcltyName='', facilityCd='', searchYe avgefflWqltToc += efflWqltToc; avgEfflWqltSs += efflWqltSs; - avgInflAssctAftWqltBod += inflAssctAftWqltBod; - avgInflAssctAftWqltTn += inflAssctAftWqltTn; + avginflAssctBfrWqltBod += inflAssctBfrWqltBod; + avginflAssctBfrWqltTn += inflAssctBfrWqltTn; avgInflAssctBfrWqltTp += inflAssctBfrWqltTp; - avgInflAssctAftWqltToc += inflAssctAftWqltToc; - avgInflAssctAftWqltSs += inflAssctAftWqltSs; + avginflAssctBfrWqltToc += inflAssctBfrWqltToc; + avginflAssctBfrWqltSs += inflAssctBfrWqltSs; avgTpInflWqltBod += tpInflWqltBod; avgTpInflWqltTp += tpInflWqltTp; @@ -190,11 +190,11 @@ export default function WaterQualityModal({fcltyName='', facilityCd='', searchYe efflWqltSs: filteredData.length==0?'0.0':(Math.round(avgEfflWqltSs / filteredData.length * 10) / 10).toFixed(1), efflWqltTn: filteredData.length==0?'0.000':(Math.round(avgEfflWqltTn / filteredData.length * 1000) / 1000).toFixed(3), efflWqltTp: filteredData.length==0?'0.000':(Math.round(avgEfflWqltTp / filteredData.length * 1000) / 1000).toFixed(3), - inflAssctAftWqltBod: filteredData.length==0?'0.0':(Math.round(avgInflAssctAftWqltBod / filteredData.length * 10) / 10).toFixed(1), - inflAssctAftWqltTn: filteredData.length==0?'0.000':(Math.round(avgInflAssctAftWqltTn / filteredData.length * 1000) / 1000).toFixed(3), + inflAssctBfrWqltBod: filteredData.length==0?'0.0':(Math.round(avginflAssctBfrWqltBod / filteredData.length * 10) / 10).toFixed(1), + inflAssctBfrWqltTn: filteredData.length==0?'0.000':(Math.round(avginflAssctBfrWqltTn / filteredData.length * 1000) / 1000).toFixed(3), inflAssctBfrWqltTp: filteredData.length==0?'0.000':(Math.round(avgInflAssctBfrWqltTp / filteredData.length * 1000) / 1000).toFixed(3), - inflAssctAftWqltToc: filteredData.length==0?'0.0':(Math.round(avgInflAssctAftWqltToc / filteredData.length * 10) / 10).toFixed(1), - inflAssctAftWqltSs: filteredData.length==0?'0.0':(Math.round(avgInflAssctAftWqltSs / filteredData.length * 10) / 10).toFixed(1), + inflAssctBfrWqltToc: filteredData.length==0?'0.0':(Math.round(avginflAssctBfrWqltToc / filteredData.length * 10) / 10).toFixed(1), + inflAssctBfrWqltSs: filteredData.length==0?'0.0':(Math.round(avginflAssctBfrWqltSs / filteredData.length * 10) / 10).toFixed(1), bscFctCd: "", bscFctNm: "", lclgvrnmntNm: "", @@ -213,11 +213,11 @@ export default function WaterQualityModal({fcltyName='', facilityCd='', searchYe efflWqltSs : Math.round(maxEfflWqltSs * 10) / 10?(Math.round(maxEfflWqltSs * 10) / 10).toFixed(1):'0.0', efflWqltTn : Math.round(maxEfflWqltTn * 1000) / 1000?(Math.round(maxEfflWqltTn * 1000) / 1000).toFixed(3):'0.000', efflWqltTp : Math.round(maxEfflWqltTp * 1000) / 1000?(Math.round(maxEfflWqltTp * 1000) / 1000).toFixed(3):'0.000', - inflAssctAftWqltBod : Math.round(maxInflAssctAftWqltBod * 10) / 10?(Math.round(maxInflAssctAftWqltBod * 10) / 10).toFixed(1):'0.0', - inflAssctAftWqltTn : Math.round(maxInflAssctAftWqltTn * 1000) / 1000?(Math.round(maxInflAssctAftWqltTn * 1000) / 1000).toFixed(3):'0.000', + inflAssctBfrWqltBod : Math.round(maxinflAssctBfrWqltBod * 10) / 10?(Math.round(maxinflAssctBfrWqltBod * 10) / 10).toFixed(1):'0.0', + inflAssctBfrWqltTn : Math.round(maxinflAssctBfrWqltTn * 1000) / 1000?(Math.round(maxinflAssctBfrWqltTn * 1000) / 1000).toFixed(3):'0.000', inflAssctBfrWqltTp : Math.round(maxInflAssctBfrWqltTp * 1000) / 1000?(Math.round(maxInflAssctBfrWqltTp * 1000) / 1000).toFixed(3):'0.000', - inflAssctAftWqltToc : Math.round(maxInflAssctAftWqltToc * 10) / 10?(Math.round(maxInflAssctAftWqltToc * 10) / 10).toFixed(1):'0.0', - inflAssctAftWqltSs : Math.round(maxInflAssctAftWqltSs * 10) / 10?(Math.round(maxInflAssctAftWqltSs * 10) / 10).toFixed(1):'0.0', + inflAssctBfrWqltToc : Math.round(maxinflAssctBfrWqltToc * 10) / 10?(Math.round(maxinflAssctBfrWqltToc * 10) / 10).toFixed(1):'0.0', + inflAssctBfrWqltSs : Math.round(maxinflAssctBfrWqltSs * 10) / 10?(Math.round(maxinflAssctBfrWqltSs * 10) / 10).toFixed(1):'0.0', bscFctCd: "", bscFctNm: "", lclgvrnmntNm: "", @@ -236,11 +236,11 @@ export default function WaterQualityModal({fcltyName='', facilityCd='', searchYe efflWqltSs : Math.round(minEfflWqltSs * 10) / 10?(Math.round(minEfflWqltSs * 10) / 10).toFixed(1) : '0.0', efflWqltTn : Math.round(minEfflWqltTn * 1000) / 1000?(Math.round(minEfflWqltTn * 1000) / 1000).toFixed(3) : '0.000', efflWqltTp : Math.round(minEfflWqltTp * 1000) / 1000?(Math.round(minEfflWqltTp * 1000) / 1000).toFixed(3) : '0.000', - inflAssctAftWqltBod : Math.round(minInflAssctAftWqltBod * 10) / 10?(Math.round(minInflAssctAftWqltBod * 10) / 10).toFixed(1) : '0.0', - inflAssctAftWqltTn : Math.round(minInflAssctAftWqltTn * 1000) / 1000?(Math.round(minInflAssctAftWqltTn * 1000) / 1000).toFixed(3) : '0.000', + inflAssctBfrWqltBod : Math.round(mininflAssctBfrWqltBod * 10) / 10?(Math.round(mininflAssctBfrWqltBod * 10) / 10).toFixed(1) : '0.0', + inflAssctBfrWqltTn : Math.round(mininflAssctBfrWqltTn * 1000) / 1000?(Math.round(mininflAssctBfrWqltTn * 1000) / 1000).toFixed(3) : '0.000', inflAssctBfrWqltTp : Math.round(minInflAssctBfrWqltTp * 1000) / 1000?(Math.round(minInflAssctBfrWqltTp * 1000) / 1000).toFixed(3) : '0.000', - inflAssctAftWqltToc : Math.round(minInflAssctAftWqltToc * 10) / 10?(Math.round(minInflAssctAftWqltToc * 10) / 10).toFixed(1) : '0.0', - inflAssctAftWqltSs : Math.round(minInflAssctAftWqltSs * 10) / 10?(Math.round(minInflAssctAftWqltSs * 10) / 10).toFixed(1) : '0.0', + inflAssctBfrWqltToc : Math.round(mininflAssctBfrWqltToc * 10) / 10?(Math.round(mininflAssctBfrWqltToc * 10) / 10).toFixed(1) : '0.0', + inflAssctBfrWqltSs : Math.round(mininflAssctBfrWqltSs * 10) / 10?(Math.round(mininflAssctBfrWqltSs * 10) / 10).toFixed(1) : '0.0', bscFctCd: "", bscFctNm: "", lclgvrnmntNm: "", @@ -293,10 +293,10 @@ export default function WaterQualityModal({fcltyName='', facilityCd='', searchYe copyYearList.forEach((item) => { excelDownList.push({ 날짜: item.msrDt, - "유입BOD(mg/L)": item.inflAssctAftWqltBod, - "유입TOC(COD)(mg/L)": item.inflAssctAftWqltToc, - "유입SS(mg/L)": item.inflAssctAftWqltSs, - "유입TN(mg/L)": item.inflAssctAftWqltTn, + "유입BOD(mg/L)": item.inflAssctBfrWqltBod, + "유입TOC(COD)(mg/L)": item.inflAssctBfrWqltToc, + "유입SS(mg/L)": item.inflAssctBfrWqltSs, + "유입TN(mg/L)": item.inflAssctBfrWqltTn, "유입TP(mg/L)": item.inflAssctBfrWqltTp, "유출BOD(mg/L)": item.efflWqltBod, "유출TOC(COD)(mg/L)": item.efflWqltToc, diff --git a/apps/fo/app/pages/facilityWaterQlty/page.tsx b/apps/fo/app/pages/facilityWaterQlty/page.tsx index 7d571a69f..079ebce81 100644 --- a/apps/fo/app/pages/facilityWaterQlty/page.tsx +++ b/apps/fo/app/pages/facilityWaterQlty/page.tsx @@ -89,7 +89,7 @@ export default function ProcessFacilitySearch() { // 상태값 설정 setFcltCpct(selectUpdownData[0]?.val || "0"); setOperationValue(selectOperationData[0]?.val || "0"); - setSearchYearValue(selectSearchYear[0]?.val || "0"); + setSearchYearValue("2023"); // SearchInputSelect 초기화 setFcltyName(""); if (searchInputRef.current) { @@ -98,7 +98,7 @@ export default function ProcessFacilitySearch() { input.value = ""; } } - searchFacilityWaterQltyList(1, 10, selectSearchYear[0]?.val || "0"); + searchFacilityWaterQltyList(1, 10, searchYearValue || "0"); } // 셀 클릭 시 모달 표시 @@ -131,7 +131,7 @@ export default function ProcessFacilitySearch() { useEffect(() => { if (!isInit) { initializeCommonData(); - searchFacilityWaterQltyList(1, 10, selectSearchYear[0]?.val || "0"); + searchFacilityWaterQltyList(1, 10, searchYearValue || "0"); } }, [isInit, initializeCommonData, searchFacilityWaterQltyList, selectSearchYear]); diff --git a/apps/fo/app/pages/flowRate/page.tsx b/apps/fo/app/pages/flowRate/page.tsx index 0c4f503e9..eb3ae4fa5 100644 --- a/apps/fo/app/pages/flowRate/page.tsx +++ b/apps/fo/app/pages/flowRate/page.tsx @@ -91,7 +91,7 @@ export default function ProcessFacilitySearch() { // 상태값 설정 setFcltCpct(selectUpdownData[0]?.val || "0"); setOperationValue(selectOperationData[0]?.val || "0"); - setSearchYearValue(selectSearchYear[0]?.val || "0"); + setSearchYearValue("2023"); // SearchInputSelect 초기화 setFcltyName(""); if (searchInputRef.current) { @@ -100,7 +100,7 @@ export default function ProcessFacilitySearch() { input.value = ""; } } - searchFlowRateList(1, 10, selectSearchYear[0]?.val || "0"); + searchFlowRateList(1, 10, searchYearValue || "0"); } // 셀 클릭 시 모달 표시 diff --git a/apps/fo/app/pages/planSewage/page.tsx b/apps/fo/app/pages/planSewage/page.tsx index c9324c246..e1242956c 100644 --- a/apps/fo/app/pages/planSewage/page.tsx +++ b/apps/fo/app/pages/planSewage/page.tsx @@ -83,7 +83,7 @@ export default function PlanSewage() { // 상태값 설정 setFcltCpct(selectUpdownData[0]?.val || "0"); setOperationValue(selectOperationData[0]?.val || "0"); - setSearchYear(selectSearchYear[0]?.val || "0"); + setSearchYear("2023"); // SearchInputSelect 초기화 setFcltyName(""); if (searchInputRef.current) { @@ -92,6 +92,7 @@ export default function PlanSewage() { input.value = ""; } } + searchPlanSewageList(1, 10, searchYear, ref.current.partValue); } /** diff --git a/apps/fo/app/pages/processArea/page.tsx b/apps/fo/app/pages/processArea/page.tsx index 92369cb45..68f055aba 100644 --- a/apps/fo/app/pages/processArea/page.tsx +++ b/apps/fo/app/pages/processArea/page.tsx @@ -83,8 +83,8 @@ export default function ProcessArea() { input.value = ""; } } - setSearchYearValue(selectSearchYear[0]?.val || "0"); - searchProcessAreaList(1, 10, '', '', selectSearchYear[0]?.val); + setSearchYearValue("2023"); + searchProcessAreaList(1, 10, '', '', searchYearValue); } // 셀 클릭 시 모달 표시 diff --git a/apps/fo/app/pages/rdi/page.tsx b/apps/fo/app/pages/rdi/page.tsx index d28c7241d..9fcb84a7d 100644 --- a/apps/fo/app/pages/rdi/page.tsx +++ b/apps/fo/app/pages/rdi/page.tsx @@ -68,7 +68,7 @@ export default function Rdi() { // 시설상태 const [operationValue, setOperationValue] = useState("0"); // 조회기간 - const [searchYear, setSearchYear] = useState(selectSearchYear[0]?.val || "0"); + const [searchYear, setSearchYear] = useState("2023"); /** * 페이지 함수 @@ -81,7 +81,7 @@ export default function Rdi() { // 상태값 설정 setFcltCpct(selectUpdownData[0]?.val || "0"); setOperationValue(selectOperationData[0]?.val || "0"); - setSearchYear(selectSearchYear[0]?.val || "0"); + setSearchYear("2023"); // SearchInputSelect 초기화 setFcltyName(""); if (searchInputRef.current) { @@ -90,7 +90,7 @@ export default function Rdi() { input.value = ""; } } - searchRdiList(1, 10, selectSearchYear[0]?.val || "0"); + searchRdiList(1, 10, searchYear); } diff --git a/apps/fo/app/pages/sewageOccur/page.tsx b/apps/fo/app/pages/sewageOccur/page.tsx index 8b004e681..9c917b681 100644 --- a/apps/fo/app/pages/sewageOccur/page.tsx +++ b/apps/fo/app/pages/sewageOccur/page.tsx @@ -97,7 +97,7 @@ export default function PlanSewage() { // 상태값 설정 setFcltCpct(selectUpdownData[0]?.val || "0"); setOperationValue(selectOperationData[0]?.val || "0"); - setSearchYear(selectSearchYear[0]?.val || "0"); + setSearchYear("2023"); // SearchInputSelect 초기화 setFcltyName(""); if (searchInputRef.current) { @@ -106,6 +106,7 @@ export default function PlanSewage() { input.value = ""; } } + searchSewageOccurList(1, 10, searchYear); } // 모달 닫기 diff --git a/apps/fo/app/pages/underWaterInput/page.tsx b/apps/fo/app/pages/underWaterInput/page.tsx index 1a5ed39a5..57f47e249 100644 --- a/apps/fo/app/pages/underWaterInput/page.tsx +++ b/apps/fo/app/pages/underWaterInput/page.tsx @@ -95,7 +95,7 @@ export default function UnderWaterInput() { // 상태값 설정 setFcltCpct(selectUpdownData[0]?.val || "0"); setOperationValue(selectOperationData[0]?.val || "0"); - setSearchYear(selectSearchYear[0]?.val || "0"); + setSearchYear("2023"); // SearchInputSelect 초기화 setFcltyName(""); if (searchInputRef.current) { @@ -104,7 +104,7 @@ export default function UnderWaterInput() { input.value = ""; } } - searchUnderWaterList(1, 10, '2023'); + searchUnderWaterList(1, 10, searchYear); } // 모달 닫기 diff --git a/apps/fo/app/store/dashboard/index.tsx b/apps/fo/app/store/dashboard/index.tsx index 43496d71e..30994609f 100644 --- a/apps/fo/app/store/dashboard/index.tsx +++ b/apps/fo/app/store/dashboard/index.tsx @@ -779,6 +779,9 @@ export type DashBoardType = { planYearList : string[]; upHeadListPlanFclty : TableUpperProps[]; planFcltyList : planFcltyListProps[]; + waterUsage1 : number | '', + waterUsage2 : number | '', + waterUsage3 : number | '', }, OperationStatus : { @@ -833,7 +836,10 @@ export const dashBoardInitState:DashBoardType = { isInit : true, planYearList : planYearList, upHeadListPlanFclty : upHeadListPlanFclty, - planFcltyList : planFcltyList + planFcltyList : planFcltyList, + waterUsage1 : 0, + waterUsage2 : 0, + waterUsage3 : 0 }, OperationStatus : { @@ -942,6 +948,46 @@ const calcValue = (operationalStatus, data, keyTxt='INFL_ASSCT_BFR_WQLT_TP') => operationalStatus.winterSunnyMax = data.winterSunny ? Number(Math.round(data.winterSunny.MAX_INFL_ASSCT_BFR_WQLT_TP * 1000) / 1000).toFixed(3).toString() : ''; } +type RtnFlowType = { + inflAmnt: string | number; + infoRnDay: string | number; + bscFctCd: string; + msrDt: string; +} + +type RtnFlowResponse = { + data: RtnFlowType[]; + count: number; +} + +const searchWaterUsage = async (searchYear: string, fcltyCd: string) => { + const waterUsage = [0, 0, 0]; + + for (let i = 0; i < 3; i++) { + try { + const res = await getFetch('fo', '/fclt/flow/' + fcltyCd + '/' + (Number(searchYear)-i)) as RtnFlowResponse; + let totWaterUsage = 0; + + if (res && res.data && Array.isArray(res.data)) { + res.data.forEach((item: RtnFlowType) => { + totWaterUsage += Number(item.inflAmnt); + }); + + if (res.count > 0) { + const avg = totWaterUsage / res.count; + waterUsage[i] = parseFloat((avg * 0.65).toFixed(2)); + } + } + } catch (error) { + console.error(`Error fetching water usage for year ${Number(searchYear)-i}:`, error); + waterUsage[i] = 0; + } + } + + console.log('waterUsage:', waterUsage); + return waterUsage; +} + // 강우영향일 계산 및 강우량 덮어씌우기 export const calRainEffectDayRainManage = (data: RainManageListProps[]) => { console.log('data', data); @@ -987,7 +1033,6 @@ export const calRainEffectDayRainManage = (data: RainManageListProps[]) => { } } - let rtnData : RainManageListProps[] = []; rtnData = data.filter((item: RainManageListProps) => item.rainEffectDay === 1); console.log('rtnData', rtnData); @@ -1009,6 +1054,7 @@ export const dashBoardReducer:(set:(fn: (state: DashBoardType) => DashBoardType) /** 시설정보 및 운영현황 - 계획정보 */ searchPlanInfo : async (targetYear: string, fcltyCd: string) => { const res = await fetchFacilityPlan(targetYear, fcltyCd); + let waterUsage = [0, 0, 0]; let minDiff=9999999; let minIndex; res.forEach((el:any, idx) => { @@ -1060,11 +1106,17 @@ export const dashBoardReducer:(set:(fn: (state: DashBoardType) => DashBoardType) dataFormSettingPlan(el); }); + waterUsage = await searchWaterUsage(targetYear, fcltyCd); + console.log(waterUsage); + set((state: DashBoardType) => ({ ...state, PlanFclty : { ...state.PlanFclty, - planFcltyList : planFcltyList + planFcltyList : planFcltyList, + waterUsage1 : waterUsage[0] || 0, + waterUsage2 : waterUsage[1] || 0, + waterUsage3 : waterUsage[2] || 0 } })); }, diff --git a/apps/fo/app/store/facilityWaterQlty/index.tsx b/apps/fo/app/store/facilityWaterQlty/index.tsx index 7008d4bc0..0d0825717 100644 --- a/apps/fo/app/store/facilityWaterQlty/index.tsx +++ b/apps/fo/app/store/facilityWaterQlty/index.tsx @@ -560,44 +560,51 @@ export const facilityWaterQltyReducer = (set: (fn: (state: FacilityWaterQltyType return; } - const tmpData:FacilityWaterQltyProps[] = []; - // facilityPrecipitation의 rainEffectDay 계산 로직을 적용 - for(let idx = 0; idx < res.data.wqltObjs.length; idx++) { - const item = res.data.wqltObjs[idx]; - if (!item) continue; - - const rainDay = Number(item.infoRnDay) >= 3 ? 1 : 0; - let rainEffectDay = 0; - - if(idx < res.data.wqltObjs.length - 2) { - if(rainDay == 1) { - rainEffectDay = 1; + + const data = res.data.wqltObjs; + // 강우영향일 계산 (강우량이 3 초과이면 무조건 강우영향일) + for(let idx = 0; idx < data.length; idx++) { + const item = data[idx]; + if(item){ + if(item.infoRnDay && Number(item.infoRnDay) > 3) { + item.rainEffectDay = 1; } else { - if(idx >= 2) { - const prevItem1 = res.data.wqltObjs[idx-1]; - const prevItem2 = res.data.wqltObjs[idx-2]; - if((prevItem1 && Number(prevItem1.infoRnDay) >= 3) || (prevItem2 && Number(prevItem2.infoRnDay) >= 3)) { - rainEffectDay = 1; - } + item.rainEffectDay = 0; + } + } + } + + // 이틀 전, 하루 전이 강우영향일(3 이상)인 경우 해당 날도 강우영향일로 설정 + for(let idx = 0; idx < data.length; idx++) { + if(data[idx]) { + // 하루 전이 강우영향일(3 이상)인 경우 + if(idx > 0 && data[idx-1]?.infoRnDay && Number(data[idx-1]?.infoRnDay) >= 3) { + data[idx]!.rainEffectDay = 1; + } + // 이틀 전이 강우영향일(3 이상)인 경우 + if(idx > 1 && data[idx-2]?.infoRnDay && Number(data[idx-2]?.infoRnDay) >= 3) { + data[idx]!.rainEffectDay = 1; + } + } + } + + for(let idx = 0; idx < data.length; idx++) { + if(data[idx] && data[idx]?.rainEffectDay === 1) { + if(idx > 1){ + if(data[idx-1]?.infoRnDay && Number(data[idx-1]?.infoRnDay) > 3) { + data[idx]!.infoRnDay = data[idx-1]!.infoRnDay; } } - } else if(idx < res.data.wqltObjs.length - 1) { - const nextItem = res.data.wqltObjs[idx+1]; - if(rainDay == 1 || (nextItem && Number(nextItem.infoRnDay) >= 3)) { - rainEffectDay = 1; + if(idx > 2){ + if(data[idx-2]?.infoRnDay && Number(data[idx-2]?.infoRnDay) > 3) { + data[idx]!.infoRnDay = data[idx-2]!.infoRnDay; + } } - } else { - rainEffectDay = rainDay; } - - tmpData.push({ - ...item, - rainEffectDay: rainEffectDay, - } as FacilityWaterQltyProps); } - - const rtnData = tmpData.map((item: FacilityWaterQltyProps) => { + + const rtnData = data.map((item: FacilityWaterQltyProps) => { dataFormSetting(item) if(item.inflAssctBfrWqltTn) { item.inflAssctBfrWqltTn = Number(Math.round(Number(item.inflAssctBfrWqltTn) * 1000)/1000).toFixed(3); diff --git a/apps/fo/app/store/sewageOccur/index.tsx b/apps/fo/app/store/sewageOccur/index.tsx index 9a6a97fd6..cdbc2ed4e 100644 --- a/apps/fo/app/store/sewageOccur/index.tsx +++ b/apps/fo/app/store/sewageOccur/index.tsx @@ -197,14 +197,14 @@ export const sewageOccurInitState: SewageOccurType = { export type SewageOccurStore = SewageOccurType & SewageOccurActions; // Add type definitions for API responses -type FlowDataItem = { +export type FlowDataItem = { inflAmnt: string | number; infoRnDay: string | number; bscFctCd: string; msrDt: string; } -type FlowResponse = { +export type FlowResponse = { data: FlowDataItem[]; count: number; }