fo: 수정중

This commit is contained in:
dongsilove
2025-12-30 07:23:59 +09:00
parent 39d0f586af
commit dafb3b0f9f
+103 -154
View File
@@ -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) : '');