From dafb3b0f9fff27b4d45ca628a6957aab9479616b Mon Sep 17 00:00:00 2001 From: dongsilove Date: Tue, 30 Dec 2025 07:23:59 +0900 Subject: [PATCH] =?UTF-8?q?fo:=20=EC=88=98=EC=A0=95=EC=A4=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/fo/app/store/dashboard/index.tsx | 257 +++++++++++--------------- 1 file changed, 103 insertions(+), 154 deletions(-) diff --git a/apps/fo/app/store/dashboard/index.tsx b/apps/fo/app/store/dashboard/index.tsx index d1fbdcfe1..ac041391e 100644 --- a/apps/fo/app/store/dashboard/index.tsx +++ b/apps/fo/app/store/dashboard/index.tsx @@ -1403,37 +1403,21 @@ export const dashBoardReducer: (set: (fn: (state: DashBoardType) => DashBoardTyp const res = await fetchOperationStatus(searchYear, fcltyCd); // /dashBoard/mngInfo/ const data = res.data; - let yearMaxSumFlow = 1; // 연간운영실태 최대 - let yearMinSumFlow = 1; // 연간운영실태 최소 - let yearAvgSumFlow = 1; // 연간운영실태 평균 + let yearMaxSumFlow = 1, yearMinSumFlow = 1, yearAvgSumFlow = 1; // 연간 최대, 최소, 평균 let summerAll = 1; // 하절기 전기간 let summerThree = 1; // 하절기 let summerRain = 1; // 하절기 let winterAll = 1; // 동절기 전기간 - let winterSunnyMin = 1; // 동절기 청천 최소 - let winterSunnyAvg = 1; // 동절기 청천 평균 - let winterSunnyMax = 1; // 동절기 청천 최대 + let winterSunnyMin = 1, winterSunnyAvg = 1, winterSunnyMax = 1; // 동절기 청천 최소, 평균, 최대 // 최대, 최소 총 유입량 (1년 하루 합계의 최대, 최소) - // 하절기 청천시, 강우시 재계산 리턴값 - let summerChungchunFlow = 1; // 하절기 청천 - let summerChungchunReturnAmnt = 1; // 하절기 청천 - let summerChungchunEfflAmnt = 1; // 하절기 청천 - let summerRainInflAmnt = 1; // 하절기 강우시 - let summerRainReturnAmnt = 1; // 하절기 강우시 - let summerRainEfflAmnt = 1; // 하절기 강우시 - + let summerChungchunFlow = 1, summerChungchunReturnAmnt = 1, summerChungchunEfflAmnt = 1; // 하절기 청천 + let summerRainInflAmnt = 1, summerRainReturnAmnt = 1, summerRainEfflAmnt = 1; // 하절기 강우시 // 동절기 청천시 최대, 최소, 평균 리턴값 - let winterChungchunFlowAvg = 1; // 동절기 청천 하수유입량 평균 - let winterChungchunFlowMax = 1; // 동절기 청천 하수유입량 최대 - let winterChungchunFlowMin = 1; // 동절기 청천 하수유입량 최소 - let winterChungchunReturnAvg = 1; // 동절기 청천 총인반류수 평균 - let winterChungchunReturnMax = 1; // 동절기 청천 총인반류수 최대 - let winterChungchunReturnMin = 1; // 동절기 청천 총인반류수 최소 - let winterChungchunEfflAvg = 1; // 동절기 청천 방류량 평균 - let winterChungchunEfflMax = 1; // 동절기 청천 방류량 최대 - let winterChungchunEfflMin = 1; // 동절기 청천 방류량 최소 + let winterChungchunFlowAvg = 1, winterChungchunFlowMax = 1, winterChungchunFlowMin = 1; // 동절기 청천 하수유입량 평균, 최대, 최소 + let winterChungchunReturnAvg = 1, winterChungchunReturnMax = 1, winterChungchunReturnMin = 1; // 동절기 청천 총인반류수 평균, 최대, 최소 + let winterChungchunEfflAvg = 1, winterChungchunEfflMax = 1, winterChungchunEfflMin = 1; // 동절기 청천 방류량 평균, 최대, 최소 const clone = (arr: any[]) => arr?.map(v => ({ ...v })) ?? []; @@ -1458,12 +1442,11 @@ export const dashBoardReducer: (set: (fn: (state: DashBoardType) => DashBoardTyp (data.yearData.MIN_SUM_FLOW ? data.yearData.MIN_SUM_FLOW : 0) + // api 주석처리되어 있음. (data.yearData.MIN_RETURN_AMNT ? data.yearData.MIN_RETURN_AMNT : 0) // 반류수유량(m³/일) 최소 ); - - operationalStatusList[0].yearAvg = yearAvg; - operationalStatusList[0].yearMax = yearMax; - operationalStatusList[0].yearMin = yearMin; - // 여름 - operationalStatusList[0].summerAll = data.summer === null ? '' : ( + operationalStatusList[0].yearAvg = yearAvg; // 연간유입평균 + operationalStatusList[0].yearMax = yearMax; // 연간유입최대 + operationalStatusList[0].yearMin = yearMin; // 연간유입최소 + // 하절기 + operationalStatusList[0].summerAll = data.summer === null ? '' : ( // 하절기전기간 (data.summer.AVG_INFL_AMNT ? data.summer.AVG_INFL_AMNT : 0) + (data.summer.AVG_SUM_FLOW ? data.summer.AVG_SUM_FLOW : 0) ); @@ -1475,7 +1458,7 @@ export const dashBoardReducer: (set: (fn: (state: DashBoardType) => DashBoardTyp (data.summerSunny.AVG_INFL_AMNT ? data.summerSunny.AVG_INFL_AMNT : 0) + (data.summerSunny.AVG_SUM_FLOW ? data.summerSunny.AVG_SUM_FLOW : 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) + @@ -1496,63 +1479,21 @@ export const dashBoardReducer: (set: (fn: (state: DashBoardType) => DashBoardTyp (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; - let winterDay = 0; - let summerRainDay = 0; - let summerChungchunDay = 0; - let winterChungchuDay = 0; - - let totFlowMax = 0; - let totFlowMin = 9999999; - - let yearSumFlow = 0; - let maxYearSumFlow = 0; - let minYearSumFlow = 9999999; - let summerSumFlow = 0; - let summerChungchunSumFlow = 0; - let summerRainDaySumFlow = 0; - let summerRainDayFlow = 0; - let summerRainDayReturnFlow = 0; - let summerRainDayEfflFlow = 0; - - let winterSumFlow = 0; - let winterChungchunSumFlow = 0; - let minWinterChungchunSumFlow = 9999999; - let maxWinterChungchunSumFlow = 0; + let yearDay = 0, summerDay = 0, winterDay = 0; // 연간 일수, 하절기 일수, 동절기 일수 + let summerRainDay = 0, summerChungchunDay = 0, winterChungchuDay = 0; // 하절기 강우 일수, 하절기 청천 일수, 동절기 청천 일수 + let totFlowMax = 0, totFlowMin = 9999999; + let yearSumFlow = 0, maxYearSumFlow = 0, minYearSumFlow = 9999999; + let summerSumFlow = 0, summerChungchunSumFlow = 0, summerRainDaySumFlow = 0; // 하절기 유입량 합, 하절기 청천 유입량 합, 하절기 강우 유입량 합 + let summerRainDayFlow = 0, summerRainDayReturnFlow = 0, summerRainDayEfflFlow = 0; // 하절기 강우 유입량, 하절기 강우 반류량, 하절기 강우 방류량 + let winterSumFlow = 0; // 동절기 유입량 합 + let winterChungchunSumFlow = 0; // 동절기 청천 유입량 합 + let maxWinterChungchunSumFlow = 0, minWinterChungchunSumFlow = 9999999; // 연계처리수,지하수유입량 const bscFctCd = fcltyCd; const res2 = await fetchFlowRateModalList(bscFctCd, searchYear); // /fclt/flow/ - yearDay = res2.data ? res2.data.length : 1; - res2.data.forEach((item: any) => { - yearSumFlow += item.sumFlow && item.sumFlow !== 'x' ? Number(item.sumFlow.toString().trim()) : 0; - if (maxYearSumFlow < (item.sumFlow && item.sumFlow !== 'x' ? Number(item.sumFlow.toString().trim()) : 0)) { - maxYearSumFlow = item.sumFlow && item.sumFlow !== 'x' ? Number(item.sumFlow.toString().trim()) : 0; - } - if (minYearSumFlow > (item.sumFlow && item.sumFlow !== 'x' ? Number(item.sumFlow.toString().trim()) : 0)) { - minYearSumFlow = item.sumFlow && item.sumFlow !== 'x' ? Number(item.sumFlow.toString().trim()) : 0; - } - - // 1년 최대 총 하수유입량 - let totYearFlow = 0; - totYearFlow = (item.inflAmnt && item.inflAmnt !== 'x' ? Number(item.inflAmnt.toString().trim()) : 0) + (item.sumFlow && item.sumFlow !== 'x' ? Number(item.sumFlow.toString().trim()) : 0) + (item.returnAmnt && item.returnAmnt !== 'x' ? Number(item.returnAmnt.toString().trim()) : 0); - if (totFlowMax < totYearFlow) { - totFlowMax = totYearFlow; - } - if (totFlowMin > totYearFlow || totFlowMin === 0) { - totFlowMin = totYearFlow; - } - - if (item.msrDt.substring(4, 6) === '06' || item.msrDt.substring(4, 6) === '07' || item.msrDt.substring(4, 6) === '08') { - summerDay += 1; - summerSumFlow += item.sumFlow && item.sumFlow !== 'x' ? Number(item.sumFlow.toString().trim()) : 0; - } else if (item.msrDt.substring(4, 6) === '01' || item.msrDt.substring(4, 6) === '02') { - winterDay += 1; - winterSumFlow += item.sumFlow && item.sumFlow !== 'x' ? Number(item.sumFlow.toString().trim()) : 0; - } - }); const calData = CalcRainEffect(clone(res2.data), 'SUNNY'); const calRainData = CalcRainEffect(clone(res2.data), 'RAIN'); @@ -1561,94 +1502,102 @@ export const dashBoardReducer: (set: (fn: (state: DashBoardType) => DashBoardTyp let chungcunSumFlow = 0; let sumSummerChungcunFlow = 0; let sumWinterChungcunFlow = 0; + let summerChungchunDayReturnAmnt = 0; // 하절기 청천시 총인설비 반류수 + let summerChungchunDayEfflAmnt = 0; // 하절기 청천시 총인설비 방류수 - // 하절기 청천시 총인설비 반류수 - let summerChungchunDayReturnAmnt = 0; - // 하절기 청천시 방류수 - let summerChungchunDayEfflAmnt = 0; - - // 동절기 총 유입량 최대, 최소 - let winterChungchunTotalInflAmntMax = 0; - let winterChungchunTotalInflAmntMin = 9999999; - // 동절기 청천시 하수유입량 최대, 최소 - let winterChungchunDayFlowMax = 0; - let winterChungchunDayFlowMin = 9999999; - // 동절기 청천시 총인반류수 최대, 최소, 평균 - let winterChungchunDayReturnMax = 0; - let winterChungchunDayReturnMin = 9999999; + let winterChungchunTotalInflAmntMax = 0, winterChungchunTotalInflAmntMin = 9999999; // 동절기 총 유입량 최대, 최소 + let winterChungchunDayFlowMax = 0, winterChungchunDayFlowMin = 9999999; // 동절기 청천시 하수유입량 최대, 최소 + let winterChungchunDayReturnMax = 0, winterChungchunDayReturnMin = 9999999; // 동절기 청천시 총인반류수 최대, 최소, 평균 let winterChungchunDayReturnAvg = 0; // 동절기 청천시 방류량 최대, 최소, 평균 - let winterChungchunDayEfflMax = 0; - let winterChungchunDayEfflMin = 9999999; - let winterChungchunDayEfflAvg = 0; + let winterChungchunDayEfflMax = 0, winterChungchunDayEfflMin = 9999999, winterChungchunDayEfflAvg = 0; - // 하절기, 동절기 청천시 계산 - calData.forEach((flowItem: any) => { - chungcunSumFlow += flowItem.inflAmnt && flowItem.inflAmnt !== 'x' ? Number(flowItem.inflAmnt.toString().trim()) : 0; + let rainEffectDay = 0; + yearDay = res2.data ? res2.data.length : 1; + res2.data.forEach((item: any) => { - if (flowItem.msrDt.substring(4, 6) === '06' || flowItem.msrDt.substring(4, 6) === '07' || flowItem.msrDt.substring(4, 6) === '08') { - summerChungchunDay += 1; - summerChungchunSumFlow += flowItem.sumFlow && flowItem.sumFlow !== 'x' ? Number(flowItem.sumFlow.toString().trim()) : 0; - sumSummerChungcunFlow += flowItem.inflAmnt && flowItem.inflAmnt !== 'x' ? Number(flowItem.inflAmnt.toString().trim()) : 0; - summerChungchunDayReturnAmnt += flowItem.returnAmnt && flowItem.returnAmnt !== 'x' ? Number(flowItem.returnAmnt.toString().trim()) : 0; - summerChungchunDayEfflAmnt += flowItem.efflAmnt && flowItem.efflAmnt !== 'x' ? Number(flowItem.efflAmnt.toString().trim()) : 0; + const month = item.msrDt.substring(4, 6); // 월 추출 + const sumFlow = item.sumFlow && item.sumFlow !== 'x' ? Number(item.sumFlow.toString().trim()) : 0; + const inflAmnt = item.inflAmnt && item.inflAmnt !== 'x' ? Number(item.inflAmnt.toString().trim()) : 0; + const returnAmnt = item.returnAmnt && item.returnAmnt !== 'x' ? Number(item.returnAmnt.toString().trim()) : 0; + const efflAmnt = item.efflAmnt && item.efflAmnt !== 'x' ? Number(item.efflAmnt.toString().trim()) : 0; - } else if (flowItem.msrDt.substring(4, 6) === '01' || flowItem.msrDt.substring(4, 6) === '02') { - winterChungchuDay += 1; - winterChungchunSumFlow += flowItem.sumFlow && flowItem.sumFlow !== 'x' ? Number(flowItem.sumFlow.toString().trim()) : 0; - sumWinterChungcunFlow += flowItem.inflAmnt && flowItem.inflAmnt !== 'x' ? Number(flowItem.inflAmnt.toString().trim()) : 0; - winterChungchunDayReturnAvg += flowItem.returnAmnt && flowItem.returnAmnt !== 'x' ? Number(flowItem.returnAmnt.toString().trim()) : 0; - winterChungchunDayEfflAvg += flowItem.efflAmnt && flowItem.efflAmnt !== 'x' ? Number(flowItem.efflAmnt.toString().trim()) : 0; + if (item.infoRnDay == null) item.infoRnDay = 0; + if (item.infoRnDay >= 3) { + rainEffectDay = 2; + // 강우시 + } else { + rainEffectDay--; + } - let totWinterTotalInflAmnt = 0; - totWinterTotalInflAmnt = (flowItem.inflAmnt && flowItem.inflAmnt !== 'x' ? Number(flowItem.inflAmnt.toString().trim()) : 0) + (flowItem.sumFlow && flowItem.sumFlow !== 'x' ? Number(flowItem.sumFlow.toString().trim()) : 0) + (flowItem.returnAmnt && flowItem.returnAmnt !== 'x' ? Number(flowItem.returnAmnt.toString().trim()) : 0); - if (winterChungchunTotalInflAmntMax < totWinterTotalInflAmnt) { - winterChungchunTotalInflAmntMax = totWinterTotalInflAmnt; - } - if (winterChungchunTotalInflAmntMin > totWinterTotalInflAmnt || winterChungchunTotalInflAmntMin === 0) { - winterChungchunTotalInflAmntMin = totWinterTotalInflAmnt; + if (rainEffectDay >= 0) { + // 강우영향일 + if (month === '06' || month === '07' || month === '08') { // 하절기 + summerRainDay += 1; + summerRainDaySumFlow += sumFlow; + summerRainDayFlow += inflAmnt; + summerRainDayReturnFlow += returnAmnt; + summerRainDayEfflFlow += efflAmnt; } + } else if (rainEffectDay < 0) { + // 청천시 + chungcunSumFlow += inflAmnt; - if (winterChungchunDayFlowMin > (flowItem.inflAmnt && flowItem.inflAmnt !== 'x' ? Number(flowItem.inflAmnt.toString().trim()) : 0)) { - winterChungchunDayFlowMin = flowItem.inflAmnt && flowItem.inflAmnt !== 'x' ? Number(flowItem.inflAmnt.toString().trim()) : 0; - } - if (winterChungchunDayFlowMax < (flowItem.inflAmnt && flowItem.inflAmnt !== 'x' ? Number(flowItem.inflAmnt.toString().trim()) : 0)) { - winterChungchunDayFlowMax = flowItem.inflAmnt && flowItem.inflAmnt !== 'x' ? Number(flowItem.inflAmnt.toString().trim()) : 0; - } + if (month === '06' || month === '07' || month === '08') { // 하절기 + summerChungchunDay += 1; + summerChungchunSumFlow += sumFlow; + sumSummerChungcunFlow += inflAmnt; + summerChungchunDayReturnAmnt += returnAmnt; + summerChungchunDayEfflAmnt += efflAmnt; - if (minWinterChungchunSumFlow > (flowItem.sumFlow && flowItem.sumFlow !== 'x' ? Number(flowItem.sumFlow.toString().trim()) : 0)) { - minWinterChungchunSumFlow = flowItem.sumFlow && flowItem.sumFlow !== 'x' ? Number(flowItem.sumFlow.toString().trim()) : 0; - } - if (maxWinterChungchunSumFlow < (flowItem.sumFlow && flowItem.sumFlow !== 'x' ? Number(flowItem.sumFlow.toString().trim()) : 0)) { - maxWinterChungchunSumFlow = flowItem.sumFlow && flowItem.sumFlow !== 'x' ? Number(flowItem.sumFlow.toString().trim()) : 0; - } + } else if (month === '01' || month === '02') { // 동절기 + winterChungchuDay += 1; + winterChungchunSumFlow += sumFlow; + sumWinterChungcunFlow += inflAmnt; + winterChungchunDayReturnAvg += returnAmnt; + winterChungchunDayEfflAvg += efflAmnt; - if (winterChungchunDayReturnMin > (flowItem.returnAmnt && flowItem.returnAmnt !== 'x' ? Number(flowItem.returnAmnt.toString().trim()) : 0)) { - winterChungchunDayReturnMin = flowItem.returnAmnt && flowItem.returnAmnt !== 'x' ? Number(flowItem.returnAmnt.toString().trim()) : 0; - } - if (winterChungchunDayReturnMax < (flowItem.returnAmnt && flowItem.returnAmnt !== 'x' ? Number(flowItem.returnAmnt.toString().trim()) : 0)) { - winterChungchunDayReturnMax = flowItem.returnAmnt && flowItem.returnAmnt !== 'x' ? Number(flowItem.returnAmnt.toString().trim()) : 0; - } + let totWinterTotalInflAmnt = 0; + totWinterTotalInflAmnt = inflAmnt + sumFlow + returnAmnt; + if (winterChungchunTotalInflAmntMax < totWinterTotalInflAmnt) winterChungchunTotalInflAmntMax = totWinterTotalInflAmnt; + if (winterChungchunTotalInflAmntMin > totWinterTotalInflAmnt || winterChungchunTotalInflAmntMin === 0) winterChungchunTotalInflAmntMin = totWinterTotalInflAmnt; - if (winterChungchunDayEfflMin > (flowItem.efflAmnt && flowItem.efflAmnt !== 'x' ? Number(flowItem.efflAmnt.toString().trim()) : 0)) { - winterChungchunDayEfflMin = flowItem.efflAmnt && flowItem.efflAmnt !== 'x' ? Number(flowItem.efflAmnt.toString().trim()) : 0; - } - if (winterChungchunDayEfflMax < (flowItem.efflAmnt && flowItem.efflAmnt !== 'x' ? Number(flowItem.efflAmnt.toString().trim()) : 0)) { - winterChungchunDayEfflMax = flowItem.efflAmnt && flowItem.efflAmnt !== 'x' ? Number(flowItem.efflAmnt.toString().trim()) : 0; + if (winterChungchunDayFlowMin > inflAmnt) winterChungchunDayFlowMin = inflAmnt; + if (winterChungchunDayFlowMax < inflAmnt) winterChungchunDayFlowMax = inflAmnt; + + if (minWinterChungchunSumFlow > sumFlow) minWinterChungchunSumFlow = sumFlow; + if (maxWinterChungchunSumFlow < sumFlow) maxWinterChungchunSumFlow = sumFlow; + + if (winterChungchunDayReturnMin > returnAmnt) winterChungchunDayReturnMin = returnAmnt; + if (winterChungchunDayReturnMax < returnAmnt) winterChungchunDayReturnMax = returnAmnt; + + if (winterChungchunDayEfflMin > efflAmnt) winterChungchunDayEfflMin = efflAmnt; + if (winterChungchunDayEfflMax < efflAmnt) winterChungchunDayEfflMax = efflAmnt; } } + + + yearSumFlow += sumFlow; + if (maxYearSumFlow < sumFlow) maxYearSumFlow = sumFlow; + if (minYearSumFlow > sumFlow) minYearSumFlow = sumFlow; + + // 1년 최대 총 하수유입량 + let totYearFlow = 0; + totYearFlow = inflAmnt + sumFlow + returnAmnt; + if (totFlowMax < totYearFlow) totFlowMax = totYearFlow; + if (totFlowMin > totYearFlow || totFlowMin === 0) { + totFlowMin = totYearFlow; + } + + if (month === '06' || month === '07' || month === '08') { + summerDay += 1; + summerSumFlow += sumFlow; + } else if (month === '01' || month === '02') { + winterDay += 1; + winterSumFlow += sumFlow; + } }); - // 하절기 강우시 계산 - calRainData.forEach((flowItem: any) => { - if (flowItem.msrDt.substring(4, 6) === '06' || flowItem.msrDt.substring(4, 6) === '07' || flowItem.msrDt.substring(4, 6) === '08') { - summerRainDay += 1; - summerRainDaySumFlow += flowItem.sumFlow && flowItem.sumFlow !== 'x' ? Number(flowItem.sumFlow.toString().trim()) : 0; - summerRainDayFlow += flowItem.inflAmnt && flowItem.inflAmnt !== 'x' ? Number(flowItem.inflAmnt.toString().trim()) : 0; - summerRainDayReturnFlow += flowItem.returnAmnt && flowItem.returnAmnt !== 'x' ? Number(flowItem.returnAmnt.toString().trim()) : 0; - summerRainDayEfflFlow += flowItem.efflAmnt && flowItem.efflAmnt !== 'x' ? Number(flowItem.efflAmnt.toString().trim()) : 0; - } - }); // 연계처리수 yearAvgSumFlow = Number((yearSumFlow && Number(yearSumFlow) != 0) ? (yearSumFlow / yearDay) : '');