From 32939d8b1a986f0e5203aa1ae3ab859a61de2a8c Mon Sep 17 00:00:00 2001 From: jsyang Date: Thu, 11 Sep 2025 11:15:58 +0900 Subject: [PATCH] =?UTF-8?q?=EB=8C=80=EC=8B=9C=EB=B3=B4=EB=93=9C=20?= =?UTF-8?q?=EC=B4=9D=EC=9D=B8=EC=84=A4=EB=B9=84=20=EA=B3=84=EC=82=B0=20?= =?UTF-8?q?=EB=A1=9C=EC=A7=81=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/fo/app/store/dashboard/index.tsx | 66 ++++++++++++++++++++++++++- 1 file changed, 65 insertions(+), 1 deletion(-) diff --git a/apps/fo/app/store/dashboard/index.tsx b/apps/fo/app/store/dashboard/index.tsx index 460365ff3..0e0065067 100644 --- a/apps/fo/app/store/dashboard/index.tsx +++ b/apps/fo/app/store/dashboard/index.tsx @@ -753,31 +753,40 @@ const calcWaterQltyData = async (data: any[], searchYear : string|undefined, fcl // (0) 전체변수 let summerDay = 0; + let noNullSummerDay = 0; let totalInflBodAvgSummer = 0; let totalInflTnAvgSummer = 0; let totalInflTpAvgSummer = 0; let totalEfflBodAvgSummer = 0; let totalEfflTnAvgSummer = 0; let totalEfflTpAvgSummer = 0; + let totalTpInflAvgSummer = 0; let winterDay = 0; + let noNullWinterDay = 0; let totalInflBodAvgWinter = 0; let totalInflTnAvgWinter = 0; let totalInflTpAvgWinter = 0; let totalEfflBodAvgWinter = 0; let totalEfflTnAvgWinter = 0; let totalEfflTpAvgWinter = 0; + let totalTpInflAvgWinter = 0; // 전체 대상 qltyData.forEach((item: any) => { const month = item.msrDt.substring(4, 6); // 월 추출 if(month === '01' || month === '02'){ + winterDay += 1; + if(item.tpInflWqltTp != null && item.tpInflWqltTp != 0){ + noNullWinterDay+=1; + } const inflbod = nullToZero(item.inflAssctBfrWqltBod); const infltn = nullToZero(item.inflAssctBfrWqltTn); const infltp = nullToZero(item.inflAssctBfrWqltTp); const effbod = nullToZero(item.efflWqltBod); const efftn = nullToZero(item.efflWqltTn); const efftp = nullToZero(item.efflWqltTp); + const tpInfl = nullToZero(item.tpInflWqltTp); totalInflBodAvgWinter += inflbod; totalInflTnAvgWinter += infltn; @@ -785,15 +794,19 @@ const calcWaterQltyData = async (data: any[], searchYear : string|undefined, fcl totalEfflBodAvgWinter += effbod; totalEfflTnAvgWinter += efftn; totalEfflTpAvgWinter += efftp; - winterDay += 1; + totalTpInflAvgWinter += tpInfl; }else if(month === '06' || month === '07' || month === '08'){ summerDay += 1; + if(item.tpInflWqltTp != null && item.tpInflWqltTp != 0){ + noNullSummerDay+=1; + } const inflbod = nullToZero(item.inflAssctBfrWqltBod); const infltn = nullToZero(item.inflAssctBfrWqltTn); const infltp = nullToZero(item.inflAssctBfrWqltTp); const effbod = nullToZero(item.efflWqltBod); const efftn = nullToZero(item.efflWqltTn); const efftp = nullToZero(item.efflWqltTp); + const tpInfl = nullToZero(item.tpInflWqltTp); totalInflBodAvgSummer += inflbod; totalInflTnAvgSummer += infltn; @@ -801,6 +814,7 @@ const calcWaterQltyData = async (data: any[], searchYear : string|undefined, fcl totalEfflBodAvgSummer += effbod; totalEfflTnAvgSummer += efftn; totalEfflTpAvgSummer += efftp; + totalTpInflAvgSummer += tpInfl; } }); @@ -811,6 +825,10 @@ const calcWaterQltyData = async (data: any[], searchYear : string|undefined, fcl orgData[9].winterAll = qltyDataSetting(totalInflTpAvgWinter, winterDay, 3); orgData[10].winterAll = qltyDataSetting(totalEfflTpAvgWinter, winterDay, 3); + //총인설비 + orgData[11].winterAll = qltyDataSetting(totalTpInflAvgWinter, noNullWinterDay, 3); + orgData[12].winterAll = qltyDataSetting(totalEfflTpAvgWinter, winterDay, 3); + orgData[5].summerAll = qltyDataSetting(totalInflBodAvgSummer, summerDay, 1); orgData[6].summerAll = qltyDataSetting(totalEfflBodAvgSummer, summerDay, 1); orgData[7].summerAll = qltyDataSetting(totalInflTnAvgSummer, summerDay, 3); @@ -818,10 +836,16 @@ const calcWaterQltyData = async (data: any[], searchYear : string|undefined, fcl orgData[9].summerAll = qltyDataSetting(totalInflTpAvgSummer, summerDay, 3); orgData[10].summerAll = qltyDataSetting(totalEfflTpAvgSummer, summerDay, 3); + //총인설비 + orgData[11].summerAll = qltyDataSetting(totalTpInflAvgSummer, noNullSummerDay, 3); + orgData[12].summerAll = qltyDataSetting(totalEfflTpAvgSummer, summerDay, 3); + // (1) 청천시 변수 // (1-1) 날짜 count let chungchunSummerDay = 0; let chungchunWinterDay = 0; + let noNullChungchunSummerDay = 0; + let noNullChungchunWinterDay = 0; // (1-2) 하절기 let chungchunInflBodAvgSummer = 0; @@ -830,17 +854,21 @@ const calcWaterQltyData = async (data: any[], searchYear : string|undefined, fcl let chungchunEfflBodAvgSummer = 0; let chungchunEfflTnAvgSummer = 0; let chungchunEfflTpAvgSummer = 0; + let chungchunTpInflAvgSummer = 0; // (1-3) 동절기 (최대, 최소, 평균 다 필요) let chungchunInflBodAvg = 0; let chungchunInflTnAvg = 0; let chungchunInflTpAvg = 0; + let chungchunTpInflAvg = 0; let chungchunInflBodMax = 0; let chungchunInflTnMax= 0; let chungchunInflTpMax = 0; + let chungchunTpInflMax = 0; let chungchunInflBodMin = 99999999; let chungchunInflTnMin = 99999999; let chungchunInflTpMin = 99999999; + let chungchunTpInflMin = 99999999; let chungchunEfflBodAvg = 0; let chungchunEfflTnAvg = 0; @@ -857,6 +885,9 @@ const calcWaterQltyData = async (data: any[], searchYear : string|undefined, fcl const month = item.msrDt.substring(4, 6); // 월 추출 if(month === '01' || month === '02'){ chungchunWinterDay += 1; + if(item.tpInflWqltTp != null && item.tpInflWqltTp != 0){ + noNullChungchunWinterDay+=1; + } const inflbod = nullToZero(item.inflAssctBfrWqltBod); const infltn = nullToZero(item.inflAssctBfrWqltTn); @@ -864,10 +895,12 @@ const calcWaterQltyData = async (data: any[], searchYear : string|undefined, fcl const effbod = nullToZero(item.efflWqltBod); const efftn = nullToZero(item.efflWqltTn); const efftp = nullToZero(item.efflWqltTp); + const tpInfl = nullToZero(item.tpInflWqltTp); chungchunInflBodAvg += inflbod; chungchunInflTnAvg += infltn; chungchunInflTpAvg += infltp; + chungchunTpInflAvg += tpInfl; chungchunEfflBodAvg += effbod; chungchunEfflTnAvg += efftn; chungchunEfflTpAvg += efftp; @@ -875,6 +908,7 @@ const calcWaterQltyData = async (data: any[], searchYear : string|undefined, fcl if(chungchunInflBodMax < inflbod) chungchunInflBodMax = inflbod; if(chungchunInflTnMax < infltn) chungchunInflTnMax = infltn; if(chungchunInflTpMax < infltp) chungchunInflTpMax = infltp; + if(chungchunTpInflMax < tpInfl) chungchunTpInflMax = tpInfl; if(chungchunEfflBodMax < effbod) chungchunEfflBodMax = effbod; if(chungchunEfflTnMax < efftn) chungchunEfflTnMax = efftn; if(chungchunEfflTpMax < efftp) chungchunEfflTpMax = efftp; @@ -882,11 +916,15 @@ const calcWaterQltyData = async (data: any[], searchYear : string|undefined, fcl if(chungchunInflBodMin > inflbod) chungchunInflBodMin = inflbod; if(chungchunInflTnMin > infltn) chungchunInflTnMin = infltn; if(chungchunInflTpMin > infltp) chungchunInflTpMin = infltp; + if(chungchunTpInflMin > tpInfl) chungchunTpInflMin = tpInfl; if(chungchunEfflBodMin > effbod) chungchunEfflBodMin = effbod; if(chungchunEfflTnMin > efftn) chungchunEfflTnMin = efftn; if(chungchunEfflTpMin > efftp) chungchunEfflTpMin = efftp; }else if(month === '06' || month === '07' || month === '08'){ chungchunSummerDay += 1; + if(item.tpInflWqltTp != null && item.tpInflWqltTp != 0){ + noNullChungchunSummerDay+=1; + } const inflbod = nullToZero(item.inflAssctBfrWqltBod); const infltn = nullToZero(item.inflAssctBfrWqltTn); @@ -894,6 +932,7 @@ const calcWaterQltyData = async (data: any[], searchYear : string|undefined, fcl const effbod = nullToZero(item.efflWqltBod); const efftn = nullToZero(item.efflWqltTn); const efftp = nullToZero(item.efflWqltTp); + const tpInfl = nullToZero(item.tpInflWqltTp); chungchunInflBodAvgSummer += inflbod; chungchunInflTnAvgSummer += infltn; @@ -901,6 +940,7 @@ const calcWaterQltyData = async (data: any[], searchYear : string|undefined, fcl chungchunEfflBodAvgSummer += effbod; chungchunEfflTnAvgSummer += efftn; chungchunEfflTpAvgSummer += efftp; + chungchunTpInflAvgSummer += tpInfl; } }); @@ -913,6 +953,10 @@ const calcWaterQltyData = async (data: any[], searchYear : string|undefined, fcl orgData[9].summerRain = qltyDataSetting(chungchunInflTpAvgSummer, chungchunSummerDay, 3); orgData[10].summerRain = qltyDataSetting(chungchunEfflTpAvgSummer, chungchunSummerDay, 3); + // 총인설비 + orgData[11].summerRain = qltyDataSetting(chungchunTpInflAvgSummer, noNullChungchunSummerDay, 3); + orgData[12].summerRain = qltyDataSetting(chungchunEfflTpAvgSummer, chungchunSummerDay, 3); + // 동절기 orgData[5].winterSunnyAvg = qltyDataSetting(chungchunInflBodAvg, chungchunWinterDay, 1); orgData[6].winterSunnyAvg = qltyDataSetting(chungchunEfflBodAvg, chungchunWinterDay, 1); @@ -921,12 +965,18 @@ const calcWaterQltyData = async (data: any[], searchYear : string|undefined, fcl orgData[9].winterSunnyAvg = qltyDataSetting(chungchunInflTpAvg, chungchunWinterDay, 3); orgData[10].winterSunnyAvg = qltyDataSetting(chungchunEfflTpAvg, chungchunWinterDay, 3); + // 총인설비 + orgData[11].winterSunnyAvg = qltyDataSetting(chungchunTpInflAvg, noNullChungchunWinterDay, 3); + orgData[12].winterSunnyAvg = qltyDataSetting(chungchunInflTpAvg, chungchunWinterDay, 3); + orgData[5].winterSunnyMax = roundUp(chungchunInflBodMax, 1).toFixed(1); orgData[6].winterSunnyMax = roundUp(chungchunEfflBodMax, 1).toFixed(1); orgData[7].winterSunnyMax = roundUp(chungchunInflTnMax, 3).toFixed(3); orgData[8].winterSunnyMax = roundUp(chungchunEfflTnMax, 3).toFixed(3); orgData[9].winterSunnyMax = roundUp(chungchunInflTpMax, 3).toFixed(3); orgData[10].winterSunnyMax = roundUp(chungchunEfflTpMax, 3).toFixed(3); + orgData[11].winterSunnyMax = roundUp(chungchunTpInflMax, 3).toFixed(3); + orgData[12].winterSunnyMax = roundUp(chungchunInflTpMax, 3).toFixed(3); orgData[5].winterSunnyMin = chungchunInflBodMin === 99999999 ? '0.0' : roundUp(chungchunInflBodMin, 1).toFixed(1); orgData[6].winterSunnyMin = chungchunEfflBodMin === 99999999 ? '0.0' : roundUp(chungchunEfflBodMin, 1).toFixed(1); @@ -934,9 +984,12 @@ const calcWaterQltyData = async (data: any[], searchYear : string|undefined, fcl orgData[8].winterSunnyMin = chungchunEfflTnMin === 99999999 ? '0.000' : roundUp(chungchunEfflTnMin, 3).toFixed(3); orgData[9].winterSunnyMin = chungchunInflTpMin === 99999999 ? '0.000' : roundUp(chungchunInflTpMin, 3).toFixed(3); orgData[10].winterSunnyMin = chungchunEfflTpMin === 99999999 ? '0.000' : roundUp(chungchunEfflTpMin, 3).toFixed(3); + orgData[11].winterSunnyMin = chungchunTpInflMin === 99999999 ? '0.000' : roundUp(chungchunTpInflMin, 3).toFixed(3); + orgData[12].winterSunnyMin = chungchunInflTpMin === 99999999 ? '0.000' : roundUp(chungchunInflTpMin, 3).toFixed(3); // 강우시 변수 let rainSummerDay = 0; + let noNullRainSummerDay = 0; let rainInflBodAvg = 0; let rainInflTnAvg = 0; @@ -944,12 +997,16 @@ const calcWaterQltyData = async (data: any[], searchYear : string|undefined, fcl let rainEfflBodAvg = 0; let rainEfflTnAvg = 0; let rainEfflTpAvg = 0; + let rainTpInflAvg = 0; // 강우시 qltyRainData.forEach((item: any) => { const month = item.msrDt.substring(4, 6); // 월 추출 if(month === '06' || month === '07' || month === '08'){ rainSummerDay += 1; + if(item.tpInflWqltTp != null && item.tpInflWqltTp != 0){ + noNullRainSummerDay+=1; + } const inflbod = nullToZero(item.inflAssctBfrWqltBod); const infltn = nullToZero(item.inflAssctBfrWqltTn); @@ -957,6 +1014,7 @@ const calcWaterQltyData = async (data: any[], searchYear : string|undefined, fcl const effbod = nullToZero(item.efflWqltBod); const efftn = nullToZero(item.efflWqltTn); const efftp = nullToZero(item.efflWqltTp); + const tpInfl = nullToZero(item.tpInflWqltTp); rainInflBodAvg += inflbod; rainInflTnAvg += infltn; @@ -964,6 +1022,7 @@ const calcWaterQltyData = async (data: any[], searchYear : string|undefined, fcl rainEfflBodAvg += effbod; rainEfflTnAvg += efftn; rainEfflTpAvg += efftp; + rainTpInflAvg += tpInfl; } }); @@ -974,6 +1033,11 @@ const calcWaterQltyData = async (data: any[], searchYear : string|undefined, fcl orgData[8].summerThree = qltyDataSetting(rainEfflTnAvg, rainSummerDay, 3); orgData[9].summerThree = qltyDataSetting(rainInflTpAvg, rainSummerDay, 3); orgData[10].summerThree = qltyDataSetting(rainEfflTpAvg, rainSummerDay, 3); + + // 총인설비 + orgData[11].summerThree = qltyDataSetting(rainTpInflAvg, noNullRainSummerDay, 3); + orgData[12].summerThree = qltyDataSetting(rainInflTpAvg, rainSummerDay, 3); + return orgData; } else { return orgData;