fo: api /dashboard/mngInfo

This commit is contained in:
2026-01-06 16:08:36 +09:00
parent 69c068e823
commit a0ad12af49
+360 -427
View File
@@ -723,16 +723,16 @@ const fetchFacilityPlan = async (targetYear: string | undefined, fcltyCd: string
};
/* 시설정보 및 운영현황 - 운영실태 */
const fetchOperationStatus = async (searchYear: string | undefined, fcltyCd: string | undefined): Promise<ApiRes> => {
try {
const url = '/dashBoard/mngInfo/' + (searchYear ? searchYear : '2023') + '/' + (fcltyCd ? fcltyCd : '');
const res = await getFetch('fo', url);
return { data: res.data, count: res.count }
} catch (error) {
console.error('운영실태 데이터를 가져오는데 실패했습니다:', error);
return { data: [], count: 0 };
}
}
// const fetchOperationStatus = async (searchYear: string | undefined, fcltyCd: string | undefined): Promise<ApiRes> => {
// try {
// const url = '/dashBoard/mngInfo/' + (searchYear ? searchYear : '2023') + '/' + (fcltyCd ? fcltyCd : '');
// const res = await getFetch('fo', url);
// return { data: res.data, count: res.count }
// } catch (error) {
// console.error('운영실태 데이터를 가져오는데 실패했습니다:', error);
// return { data: [], count: 0 };
// }
// }
// 주요그래프 데이터
const fetchMainGraph = async (searchYear: string | undefined, fcltyCd: string | undefined) => {
@@ -749,6 +749,15 @@ const fetchMainGraph = async (searchYear: string | undefined, fcltyCd: string |
// 수질 데이터 청천시, 강우시 재계산
const calcWaterQltyData = async (data: any[], searchYear: string | undefined, fcltyCd: string | undefined, mainGraphData: any) => {
const operList = {
inflBod: {yearTot: 0, yearAvg: 0, yearMax: 0, yearMin: 9999999}, // 유입BOD
inflTN: {yearTot: 0, yearAvg: 0, yearMax: 0, yearMin: 9999999}, // 유입TN
inflTP: {yearTot: 0, yearAvg: 0, yearMax: 0, yearMin: 9999999}, // 유입TP
efflBod: {yearTot: 0, yearAvg: 0, yearMax: 0, yearMin: 9999999}, // 방류BOD
efflTN: {yearTot: 0, yearAvg: 0, yearMax: 0, yearMin: 9999999}, // 방류TN
efflTP: {yearTot: 0, yearAvg: 0, yearMax: 0, yearMin: 9999999}, // 방류TP
tpInflTp: {yearTot: 0, yearAvg: 0, yearMax: 0, yearMin: 9999999}, //총인 유입수질 TP(mg/L)
};
const nullToZero = (value: any) => {
return value === null || value === undefined || value === '' ? 0 : Number(value);
};
@@ -775,6 +784,7 @@ const calcWaterQltyData = async (data: any[], searchYear: string | undefined, fc
// (1) 청천시 변수
// (1-1) 날짜 count
let chungchunSummerDay = 0, noNullChungchunSummerDay = 0;
let chungchunWinterDay = 0, noNullChungchunWinterDay = 0;
@@ -804,6 +814,8 @@ const calcWaterQltyData = async (data: any[], searchYear: string | undefined, fc
let rainEffectDay = 0;
// 전체 대상
const totalDay = qltyData.length;
let noNullYearDay = 0;
qltyData.forEach((item: any) => {
if (item.infoRnDay == null) item.infoRnDay = 0;
const month = item.msrDt.substring(4, 6); // 월 추출
@@ -898,7 +910,7 @@ const calcWaterQltyData = async (data: any[], searchYear: string | undefined, fc
totalEfflBodAvgWinter += nullToZero(item.efflWqltBod);
totalEfflTnAvgWinter += nullToZero(item.efflWqltTn);
totalEfflTpAvgWinter += nullToZero(item.efflWqltTp);
totalTpInflAvgWinter += nullToZero(item.tpInflWqltTp);
totalTpInflAvgWinter += nullToZero(item.tpInflWqltTp); //총인 유입수질 TP(mg/L)
} else if (month === '06' || month === '07' || month === '08') {
summerDay += 1;
if (item.tpInflWqltTp != null && item.tpInflWqltTp != 0) {
@@ -912,74 +924,81 @@ const calcWaterQltyData = async (data: any[], searchYear: string | undefined, fc
totalEfflTpAvgSummer += nullToZero(item.efflWqltTp);
totalTpInflAvgSummer += nullToZero(item.tpInflWqltTp);
}
if (item.tpInflWqltTp != null && item.tpInflWqltTp != 0) {
noNullYearDay += 1;
}
operList.inflBod.yearTot += nullToZero(item.inflAssctBfrWqltBod);
operList.inflTN.yearTot += nullToZero(item.inflAssctBfrWqltTn);
operList.inflTP.yearTot += nullToZero(item.inflAssctBfrWqltTp);
operList.efflBod.yearTot += nullToZero(item.efflWqltBod);
operList.efflTN.yearTot += nullToZero(item.efflWqltTn);
operList.efflTP.yearTot += nullToZero(item.efflWqltTp);
operList.tpInflTp.yearTot += nullToZero(item.tpInflWqltTp);
// 최대 최소
operList.inflBod.yearMax = Math.max(operList.inflBod.yearMax, nullToZero(item.inflAssctBfrWqltBod));
operList.inflBod.yearMin = Math.min(operList.inflBod.yearMin, nullToZero(item.inflAssctBfrWqltBod));
operList.inflTN.yearMax = Math.max(operList.inflTN.yearMax, nullToZero(item.inflAssctBfrWqltTn));
operList.inflTN.yearMin = Math.min(operList.inflTN.yearMin, nullToZero(item.inflAssctBfrWqltTn));
operList.inflTP.yearMax = Math.max(operList.inflTP.yearMax, nullToZero(item.inflAssctBfrWqltTp));
operList.inflTP.yearMin = Math.min(operList.inflTP.yearMin, nullToZero(item.inflAssctBfrWqltTp));
operList.efflBod.yearMax = Math.max(operList.efflBod.yearMax, nullToZero(item.efflWqltBod));
operList.efflBod.yearMin = Math.min(operList.efflBod.yearMin, nullToZero(item.efflWqltBod));
operList.efflTN.yearMax = Math.max(operList.efflTN.yearMax, nullToZero(item.efflWqltTn));
operList.efflTN.yearMin = Math.min(operList.efflTN.yearMin, nullToZero(item.efflWqltTn));
operList.efflTP.yearMax = Math.max(operList.efflTP.yearMax, nullToZero(item.efflWqltTp));
operList.efflTP.yearMin = Math.min(operList.efflTP.yearMin, nullToZero(item.efflWqltTp));
operList.tpInflTp.yearMax = Math.max(operList.tpInflTp.yearMax, nullToZero(item.tpInflWqltTp));
operList.tpInflTp.yearMin = Math.min(operList.tpInflTp.yearMin, nullToZero(item.tpInflWqltTp));
});
orgData[5].winterAll = qltyDataSetting(totalInflBodAvgWinter, winterDay, 1); // 동절기 유입BOD
orgData[6].winterAll = qltyDataSetting(totalEfflBodAvgWinter, winterDay, 1); // 동절기 방류BOD
orgData[7].winterAll = qltyDataSetting(totalInflTnAvgWinter, winterDay, 3); // 동절기 유입TN
orgData[8].winterAll = qltyDataSetting(totalEfflTnAvgWinter, winterDay, 3); // 동절기 방류TN
orgData[9].winterAll = qltyDataSetting(totalInflTpAvgWinter, winterDay, 3); // 동절기 유입TP
orgData[10].winterAll = qltyDataSetting(totalEfflTpAvgWinter, winterDay, 3); // 동절기 방류TP
operList.inflBod.yearAvg = operList.inflBod.yearTot / totalDay;
operList.inflTN.yearAvg = operList.inflTN.yearTot / totalDay;
operList.inflTP.yearAvg = operList.inflTP.yearTot / totalDay;
operList.efflBod.yearAvg = operList.efflBod.yearTot / totalDay;
operList.efflTN.yearAvg = operList.efflTN.yearTot / totalDay;
operList.efflTP.yearAvg = operList.efflTP.yearTot / totalDay;
operList.tpInflTp.yearAvg = operList.tpInflTp.yearTot / totalDay;
orgData[5].yearAvg = qltyDataSetting(operList.inflBod.yearTot, totalDay, 1); // 연간 유입BOD
orgData[6].yearAvg = qltyDataSetting(operList.efflBod.yearTot,totalDay, 1); // 연간 방류BOD
orgData[7].yearAvg = qltyDataSetting(operList.inflTN.yearTot,totalDay, 3); // 연간 유입TN
orgData[8].yearAvg = qltyDataSetting(operList.efflTN.yearTot,totalDay, 3); // 연간 방류TN
orgData[9].yearAvg = qltyDataSetting(operList.inflTP.yearTot,totalDay, 3); // 연간 유입TP
orgData[10].yearAvg = qltyDataSetting(operList.efflTP.yearTot,totalDay, 3); // 연간 방류TP
//총인설비
orgData[11].winterAll = qltyDataSetting(totalTpInflAvgWinter, noNullWinterDay, 3);
orgData[12].winterAll = qltyDataSetting(totalEfflTpAvgWinter, winterDay, 3);
orgData[11].yearAvg = qltyDataSetting(operList.tpInflTp.yearTot, noNullYearDay, 3); // 연간 총인 유입수질 TP
orgData[12].yearAvg = qltyDataSetting(operList.efflTP.yearTot, totalDay, 3); // 연간 총인 유입수질 TP
orgData[5].summerAll = qltyDataSetting(totalInflBodAvgSummer, summerDay, 1); // 하절기 유입BOD
orgData[6].summerAll = qltyDataSetting(totalEfflBodAvgSummer, summerDay, 1); // 하절기 방류BOD
orgData[7].summerAll = qltyDataSetting(totalInflTnAvgSummer, summerDay, 3); // 하절기 유입TN
orgData[8].summerAll = qltyDataSetting(totalEfflTnAvgSummer, summerDay, 3); // 하절기 방류TN
orgData[9].summerAll = qltyDataSetting(totalInflTpAvgSummer, summerDay, 3); // 하절기 유입TP
orgData[10].summerAll = qltyDataSetting(totalEfflTpAvgSummer, summerDay, 3); // 하절기 방류TP
orgData[5].yearMax = roundUp(operList.inflBod.yearMax, 1); // 연간 유입BOD
orgData[6].yearMax = roundUp(operList.efflBod.yearMax, 1); // 연간 방류BOD
orgData[7].yearMax = roundUp(operList.inflTN.yearMax, 3).toFixed(3); // 연간 유입TN
orgData[8].yearMax = roundUp(operList.efflTN.yearMax, 3).toFixed(3); // 연간 방류TN
orgData[9].yearMax = roundUp(operList.inflTP.yearMax, 3).toFixed(3); // 연간 유입TP
orgData[10].yearMax = roundUp(operList.efflTP.yearMax, 3).toFixed(3); // 연간 방류TP
orgData[11].yearMax = roundUp(operList.tpInflTp.yearMax, 3).toFixed(3); // 연간 총인 유입수질 TP
orgData[12].yearMax = roundUp(operList.efflTP.yearMax, 3).toFixed(3); // 연간 총인 유입수질 TP
orgData[5].yearMin = roundUp(operList.inflBod.yearMin, 1); // 연간 유입BOD
orgData[6].yearMin = roundUp(operList.efflBod.yearMin, 1); // 연간 방류BOD
orgData[7].yearMin = roundUp(operList.inflTN.yearMin, 3).toFixed(3); // 연간 유입TN
orgData[8].yearMin = roundUp(operList.efflTN.yearMin, 3).toFixed(3); // 연간 방류TN
orgData[9].yearMin = roundUp(operList.inflTP.yearMin, 3).toFixed(3); // 연간 유입TP
orgData[10].yearMin = roundUp(operList.efflTP.yearMin, 3).toFixed(3); // 연간 방류TP
orgData[11].yearMin = roundUp(operList.tpInflTp.yearMin, 3).toFixed(3); // 연간 총인 유입수질 TP
orgData[12].yearMin = roundUp(operList.efflTP.yearMin, 3).toFixed(3); // 연간 총인 유입수질 TP
orgData[5].summerAll = qltyDataSetting(totalInflBodAvgSummer, summerDay, 1); // 하절기 전기간 유입BOD
orgData[6].summerAll = qltyDataSetting(totalEfflBodAvgSummer, summerDay, 1); // 하절기 전기간 방류BOD
orgData[7].summerAll = qltyDataSetting(totalInflTnAvgSummer, summerDay, 3); // 하절기 전기간 유입TN
orgData[8].summerAll = qltyDataSetting(totalEfflTnAvgSummer, summerDay, 3); // 하절기 전기간 방류TN
orgData[9].summerAll = qltyDataSetting(totalInflTpAvgSummer, summerDay, 3); // 하절기 전기간 유입TP
orgData[10].summerAll = qltyDataSetting(totalEfflTpAvgSummer, summerDay, 3); // 하절기 전기간 방류TP
//총인설비
orgData[11].summerAll = qltyDataSetting(totalTpInflAvgSummer, noNullSummerDay, 3);
orgData[12].summerAll = qltyDataSetting(totalEfflTpAvgSummer, summerDay, 3);
// 청천시 수질 데이터 수정
// 하절기
orgData[5].summerRain = qltyDataSetting(chungchunInflBodAvgSummer, chungchunSummerDay, 1);
orgData[6].summerRain = qltyDataSetting(chungchunEfflBodAvgSummer, chungchunSummerDay, 1);
orgData[7].summerRain = qltyDataSetting(chungchunInflTnAvgSummer, chungchunSummerDay, 3);
orgData[8].summerRain = qltyDataSetting(chungchunEfflTnAvgSummer, chungchunSummerDay, 3);
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);
orgData[7].winterSunnyAvg = qltyDataSetting(chungchunInflTnAvg, chungchunWinterDay, 3);
orgData[8].winterSunnyAvg = qltyDataSetting(chungchunEfflTnAvg, chungchunWinterDay, 3);
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);
orgData[7].winterSunnyMin = chungchunInflTnMin === 99999999 ? '0.000' : roundUp(chungchunInflTnMin, 3).toFixed(3);
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);
// 강우시 수질 데이터 수정
orgData[5].summerThree = qltyDataSetting(rainInflBodAvg, rainSummerDay, 1);
orgData[6].summerThree = qltyDataSetting(rainEfflBodAvg, rainSummerDay, 1);
@@ -987,12 +1006,61 @@ const calcWaterQltyData = async (data: any[], searchYear: string | undefined, fc
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);
// console.log(rainEffectDayArray);
// console.log("000000000", rainSummerDay, noNullRainSummerDay, rainInflBodAvg, rainInflTnAvg, rainInflTpAvg, rainEfflBodAvg, rainEfflTnAvg, rainEfflTpAvg, rainTpInflAvg);
orgData[12].summerThree = qltyDataSetting(rainEfflTpAvg, rainSummerDay, 3);
// 하절기 청천시 수질 데이터
orgData[5].summerRain = qltyDataSetting(chungchunInflBodAvgSummer, chungchunSummerDay, 1);
orgData[6].summerRain = qltyDataSetting(chungchunEfflBodAvgSummer, chungchunSummerDay, 1);
orgData[7].summerRain = qltyDataSetting(chungchunInflTnAvgSummer, chungchunSummerDay, 3);
orgData[8].summerRain = qltyDataSetting(chungchunEfflTnAvgSummer, chungchunSummerDay, 3);
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].winterAll = qltyDataSetting(totalInflBodAvgWinter, winterDay, 1); // 동절기 전기간 유입BOD
orgData[6].winterAll = qltyDataSetting(totalEfflBodAvgWinter, winterDay, 1); // 동절기 전기간 방류BOD
orgData[7].winterAll = qltyDataSetting(totalInflTnAvgWinter, winterDay, 3); // 동절기 전기간 유입TN
orgData[8].winterAll = qltyDataSetting(totalEfflTnAvgWinter, winterDay, 3); // 동절기 전기간 방류TN
orgData[9].winterAll = qltyDataSetting(totalInflTpAvgWinter, winterDay, 3); // 동절기 전기간 유입TP
orgData[10].winterAll = qltyDataSetting(totalEfflTpAvgWinter, winterDay, 3); // 동절기 전기간 방류TP
//총인설비
orgData[11].winterAll = qltyDataSetting(totalTpInflAvgWinter, noNullWinterDay, 3);
orgData[12].winterAll = qltyDataSetting(totalEfflTpAvgWinter, winterDay, 3);
// 동절기 청천시 수질 데이터
orgData[5].winterSunnyAvg = qltyDataSetting(chungchunInflBodAvg, chungchunWinterDay, 1);
orgData[6].winterSunnyAvg = qltyDataSetting(chungchunEfflBodAvg, chungchunWinterDay, 1);
orgData[7].winterSunnyAvg = qltyDataSetting(chungchunInflTnAvg, chungchunWinterDay, 3);
orgData[8].winterSunnyAvg = qltyDataSetting(chungchunEfflTnAvg, chungchunWinterDay, 3);
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(chungchunEfflTpAvg, 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(chungchunEfflTpMax, 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);
orgData[7].winterSunnyMin = chungchunInflTnMin === 99999999 ? '0.000' : roundUp(chungchunInflTnMin, 3).toFixed(3);
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 = chungchunEfflTpMin === 99999999 ? '0.000' : roundUp(chungchunEfflTpMin, 3).toFixed(3);
return orgData;
} else {
@@ -1193,46 +1261,47 @@ export const dataFormSettingWqlty = (item: OperationalStatusListProps) => {
DataForm({ type: 'float1', column: 'rdi', item: item as unknown as Record<string, unknown> });
};
const changeValue = (operationalStatus, data, keyTxt = 'INFL_AMNT') => {
operationalStatus.yearAvg = data.yearData ? (keyTxt.includes('_TP') || keyTxt.includes("_TN")) ? data.yearData ? Number(Math.round(data.yearData['AVG_' + keyTxt] * 1000) / 1000).toFixed(3).toString() : '' : data.yearData['AVG_' + keyTxt] : '';
operationalStatus.yearMax = data.yearData ? (keyTxt.includes('_TP') || keyTxt.includes("_TN")) ? data.yearData ? Number(Math.round(data.yearData['MAX_' + keyTxt] * 1000) / 1000).toFixed(3).toString() : '' : data.yearData['MAX_' + keyTxt] : '';
operationalStatus.yearMin = data.yearData ? (keyTxt.includes('_TP') || keyTxt.includes("_TN")) ? data.yearData ? Number(Math.round(data.yearData['MIN_' + keyTxt] * 1000) / 1000).toFixed(3).toString() : '' : data.yearData['MIN_' + keyTxt] : '';
// 여름
operationalStatus.summerAll = data.summer ? (keyTxt.includes('_TP') || keyTxt.includes("_TN")) ? data.summer ? Number(Math.round(data.summer['AVG_' + keyTxt] * 1000) / 1000).toFixed(3).toString() : '' : data.summer['AVG_' + keyTxt] : '';
operationalStatus.summerThree = data.summerRainy ? (keyTxt.includes('_TP') || keyTxt.includes("_TN")) ? data.summerRainy ? Number(Math.round(data.summerRainy["AVG_" + keyTxt] * 1000) / 1000).toFixed(3).toString() : '' : data.summerRainy["AVG_" + keyTxt] : '';
operationalStatus.summerRain = data.summerSunny ? (keyTxt.includes('_TP') || keyTxt.includes("_TN")) ? data.summerSunny ? Number(Math.round(data.summerSunny["AVG_" + keyTxt] * 1000) / 1000).toFixed(3).toString() : '' : data.summerSunny["AVG_" + keyTxt] : '';
// 겨울
operationalStatus.winterAll = data.winter ? (keyTxt.includes('_TP') || keyTxt.includes("_TN")) ? data.winter ? Number(Math.round(data.winter["AVG_" + keyTxt] * 1000) / 1000).toFixed(3).toString() : '' : data.winter["AVG_" + keyTxt] : '';
operationalStatus.winterSunnyMin = data.winterSunny ? (keyTxt.includes('_TP') || keyTxt.includes("_TN")) ? data.winterSunny ? Number(Math.round(data.winterSunny["MIN_" + keyTxt] * 1000) / 1000).toFixed(3).toString() : '' : data.winterSunny["MIN_" + keyTxt] : '';
operationalStatus.winterSunnyAvg = data.winterSunny ? (keyTxt.includes('_TP') || keyTxt.includes("_TN")) ? data.winterSunny ? Number(Math.round(data.winterSunny["AVG_" + keyTxt] * 1000) / 1000).toFixed(3).toString() : '' : data.winterSunny["AVG_" + keyTxt] : '';
operationalStatus.winterSunnyMax = data.winterSunny ? (keyTxt.includes('_TP') || keyTxt.includes("_TN")) ? data.winterSunny ? Number(Math.round(data.winterSunny["MAX_" + keyTxt] * 1000) / 1000).toFixed(3).toString() : '' : data.winterSunny["MAX_" + keyTxt] : '';
// 지하수
// const changeValue = (operationalStatus, data, keyTxt = 'INFL_AMNT') => {
// //console.log('data.yearData', data.yearData);
// operationalStatus.yearAvg = data.yearData ? (keyTxt.includes('_TP') || keyTxt.includes("_TN")) ? data.yearData ? Number(Math.round(data.yearData['AVG_' + keyTxt] * 1000) / 1000).toFixed(3).toString() : '' : data.yearData['AVG_' + keyTxt] : '';
// operationalStatus.yearMax = data.yearData ? (keyTxt.includes('_TP') || keyTxt.includes("_TN")) ? data.yearData ? Number(Math.round(data.yearData['MAX_' + keyTxt] * 1000) / 1000).toFixed(3).toString() : '' : data.yearData['MAX_' + keyTxt] : '';
// operationalStatus.yearMin = data.yearData ? (keyTxt.includes('_TP') || keyTxt.includes("_TN")) ? data.yearData ? Number(Math.round(data.yearData['MIN_' + keyTxt] * 1000) / 1000).toFixed(3).toString() : '' : data.yearData['MIN_' + keyTxt] : '';
// // 여름
// operationalStatus.summerAll = data.summer ? (keyTxt.includes('_TP') || keyTxt.includes("_TN")) ? data.summer ? Number(Math.round(data.summer['AVG_' + keyTxt] * 1000) / 1000).toFixed(3).toString() : '' : data.summer['AVG_' + keyTxt] : '';
// operationalStatus.summerThree = data.summerRainy ? (keyTxt.includes('_TP') || keyTxt.includes("_TN")) ? data.summerRainy ? Number(Math.round(data.summerRainy["AVG_" + keyTxt] * 1000) / 1000).toFixed(3).toString() : '' : data.summerRainy["AVG_" + keyTxt] : '';
// operationalStatus.summerRain = data.summerSunny ? (keyTxt.includes('_TP') || keyTxt.includes("_TN")) ? data.summerSunny ? Number(Math.round(data.summerSunny["AVG_" + keyTxt] * 1000) / 1000).toFixed(3).toString() : '' : data.summerSunny["AVG_" + keyTxt] : '';
// // 겨울
// operationalStatus.winterAll = data.winter ? (keyTxt.includes('_TP') || keyTxt.includes("_TN")) ? data.winter ? Number(Math.round(data.winter["AVG_" + keyTxt] * 1000) / 1000).toFixed(3).toString() : '' : data.winter["AVG_" + keyTxt] : '';
// operationalStatus.winterSunnyMin = data.winterSunny ? (keyTxt.includes('_TP') || keyTxt.includes("_TN")) ? data.winterSunny ? Number(Math.round(data.winterSunny["MIN_" + keyTxt] * 1000) / 1000).toFixed(3).toString() : '' : data.winterSunny["MIN_" + keyTxt] : '';
// operationalStatus.winterSunnyAvg = data.winterSunny ? (keyTxt.includes('_TP') || keyTxt.includes("_TN")) ? data.winterSunny ? Number(Math.round(data.winterSunny["AVG_" + keyTxt] * 1000) / 1000).toFixed(3).toString() : '' : data.winterSunny["AVG_" + keyTxt] : '';
// operationalStatus.winterSunnyMax = data.winterSunny ? (keyTxt.includes('_TP') || keyTxt.includes("_TN")) ? data.winterSunny ? Number(Math.round(data.winterSunny["MAX_" + keyTxt] * 1000) / 1000).toFixed(3).toString() : '' : data.winterSunny["MAX_" + keyTxt] : '';
// // 지하수
// 오염물질
// RDII 추정 = 하절기(6~8월) 중 최저 유입 BOD일때 유입유량 x ((동절기 청천시 유입BOD - 하절기(6~8월) 중 최저 유입BOD) / (동절기 청천시 유입BOD))
const summerLowFlow = data.summerBod && data.summerBod.INFL_AMNT && data.summerBod.INFL_AMNT != 'null' ? Number(data.summerBod.INFL_AMNT) : 0;
const winterAvgBod = data.winterSunny && data.winterSunny.AVG_INFL_ASSCT_BFR_WQLT_BOD && data.winterSunny.AVG_INFL_ASSCT_BFR_WQLT_BOD != 'null' ? Number(data.winterSunny.AVG_INFL_ASSCT_BFR_WQLT_BOD) : 0;
const summerLowBod = data.summerBod && data.summerBod.MIN_INFL_ASSCT_BFR_WQLT_BOD && data.summerBod.MIN_INFL_ASSCT_BFR_WQLT_BOD != 'null' ? Number(data.summerBod.MIN_INFL_ASSCT_BFR_WQLT_BOD) : 0;
const summerLowRain = data.summerBod && data.summerBod.INFO_RN_DAY && data.summerBod.INFO_RN_DAY != 'null' ? Number(data.summerBod.INFO_RN_DAY) : 0;
operationalStatus.rdi = winterAvgBod === 0 ? 0 : roundUp(summerLowFlow * ((winterAvgBod - summerLowBod) / winterAvgBod), 1);
operationalStatus.rdiRain = summerLowRain;
}
// // 오염물질
// // RDII 추정 = 하절기(6~8월) 중 최저 유입 BOD일때 유입유량 x ((동절기 청천시 유입BOD - 하절기(6~8월) 중 최저 유입BOD) / (동절기 청천시 유입BOD))
// const summerLowFlow = data.summerBod && data.summerBod.INFL_AMNT && data.summerBod.INFL_AMNT != 'null' ? Number(data.summerBod.INFL_AMNT) : 0;
// const winterAvgBod = data.winterSunny && data.winterSunny.AVG_INFL_ASSCT_BFR_WQLT_BOD && data.winterSunny.AVG_INFL_ASSCT_BFR_WQLT_BOD != 'null' ? Number(data.winterSunny.AVG_INFL_ASSCT_BFR_WQLT_BOD) : 0;
// const summerLowBod = data.summerBod && data.summerBod.MIN_INFL_ASSCT_BFR_WQLT_BOD && data.summerBod.MIN_INFL_ASSCT_BFR_WQLT_BOD != 'null' ? Number(data.summerBod.MIN_INFL_ASSCT_BFR_WQLT_BOD) : 0;
// const summerLowRain = data.summerBod && data.summerBod.INFO_RN_DAY && data.summerBod.INFO_RN_DAY != 'null' ? Number(data.summerBod.INFO_RN_DAY) : 0;
// operationalStatus.rdi = winterAvgBod === 0 ? 0 : roundUp(summerLowFlow * ((winterAvgBod - summerLowBod) / winterAvgBod), 1);
// operationalStatus.rdiRain = summerLowRain;
// }
const calcValue = (operationalStatus, data, keyTxt = 'INFL_ASSCT_BFR_WQLT_TP') => {
// 연간
operationalStatus.yearAvg = data.yearData && data.yearData['AVG_' + keyTxt] ? Number(Math.round(data.yearData['AVG_' + keyTxt] * 1000) / 1000).toFixed(3).toString() : '';
operationalStatus.yearMax = data.yearData && data.yearData['MAX_' + keyTxt] ? Number(Math.round(data.yearData['MAX_' + keyTxt] * 1000) / 1000).toFixed(3).toString() : '';
operationalStatus.yearMin = data.yearData && data.yearData['MIN_' + keyTxt] ? Number(Math.round(data.yearData['MIN_' + keyTxt] * 1000) / 1000).toFixed(3).toString() : '';
// 여름
operationalStatus.summerAll = data.summer && data.summer['AVG_' + keyTxt] ? Number(Math.round(data.summer['AVG_' + keyTxt] * 0.8 * 1000) / 1000).toFixed(3).toString() : '';
operationalStatus.summerThree = data.summerRainy && data.summerRainy['AVG_' + keyTxt] ? Number(Math.round(data.summerRainy['AVG_' + keyTxt] * 0.82 * 1000) / 1000).toFixed(3).toString() : '';
operationalStatus.summerRain = data.summerSunny && data.summerSunny['AVG_' + keyTxt] ? Number(Math.round(data.summerSunny['AVG_' + keyTxt] * 0.74 * 1000) / 1000).toFixed(3).toString() : '';
// 겨울
operationalStatus.winterAll = data.winter && data.winter['AVG_' + keyTxt] ? Number(Math.round(data.winter['AVG_' + keyTxt] * 1.16 * 1000) / 1000).toFixed(3).toString() : '';
operationalStatus.winterSunnyMin = data.winterSunny && data.winterSunny['MIN_' + keyTxt] ? Number(Math.round(data.winterSunny['MIN_' + keyTxt] * 1.2 * 1000) / 1000).toFixed(3).toString() : '';
operationalStatus.winterSunnyAvg = data.winterSunny && data.winterSunny['AVG_' + keyTxt] ? Number(Math.round(data.winterSunny['AVG_' + keyTxt] * 1.25 * 1000) / 1000).toFixed(3).toString() : '';
operationalStatus.winterSunnyMax = data.winterSunny && data.winterSunny['MAX_' + keyTxt] ? Number(Math.round(data.winterSunny['MAX_' + keyTxt] * 1.3 * 1000) / 1000).toFixed(3).toString() : '';
}
// const calcValue = (operationalStatus, data, keyTxt = 'INFL_ASSCT_BFR_WQLT_TP') => {
// // 연간
// operationalStatus.yearAvg = data.yearData && data.yearData['AVG_' + keyTxt] ? Number(Math.round(data.yearData['AVG_' + keyTxt] * 1000) / 1000).toFixed(3).toString() : '';
// operationalStatus.yearMax = data.yearData && data.yearData['MAX_' + keyTxt] ? Number(Math.round(data.yearData['MAX_' + keyTxt] * 1000) / 1000).toFixed(3).toString() : '';
// operationalStatus.yearMin = data.yearData && data.yearData['MIN_' + keyTxt] ? Number(Math.round(data.yearData['MIN_' + keyTxt] * 1000) / 1000).toFixed(3).toString() : '';
// // 여름
// operationalStatus.summerAll = data.summer && data.summer['AVG_' + keyTxt] ? Number(Math.round(data.summer['AVG_' + keyTxt] * 0.8 * 1000) / 1000).toFixed(3).toString() : '';
// operationalStatus.summerThree = data.summerRainy && data.summerRainy['AVG_' + keyTxt] ? Number(Math.round(data.summerRainy['AVG_' + keyTxt] * 0.82 * 1000) / 1000).toFixed(3).toString() : '';
// operationalStatus.summerRain = data.summerSunny && data.summerSunny['AVG_' + keyTxt] ? Number(Math.round(data.summerSunny['AVG_' + keyTxt] * 0.74 * 1000) / 1000).toFixed(3).toString() : '';
// // 겨울
// operationalStatus.winterAll = data.winter && data.winter['AVG_' + keyTxt] ? Number(Math.round(data.winter['AVG_' + keyTxt] * 1.16 * 1000) / 1000).toFixed(3).toString() : '';
// operationalStatus.winterSunnyMin = data.winterSunny && data.winterSunny['MIN_' + keyTxt] ? Number(Math.round(data.winterSunny['MIN_' + keyTxt] * 1.2 * 1000) / 1000).toFixed(3).toString() : '';
// operationalStatus.winterSunnyAvg = data.winterSunny && data.winterSunny['AVG_' + keyTxt] ? Number(Math.round(data.winterSunny['AVG_' + keyTxt] * 1.25 * 1000) / 1000).toFixed(3).toString() : '';
// operationalStatus.winterSunnyMax = data.winterSunny && data.winterSunny['MAX_' + keyTxt] ? Number(Math.round(data.winterSunny['MAX_' + keyTxt] * 1.3 * 1000) / 1000).toFixed(3).toString() : '';
// }
type wtrUsgYearsType = {
YEAR: string;
@@ -1391,97 +1460,43 @@ export const dashBoardReducer = (
isLoadingOperationStatus: true,
},
}));
const res = await fetchOperationStatus(searchYear, fcltyCd); // /dashBoard/mngInfo/
const data = res.data;
let yearMaxSumFlow = 1, yearMinSumFlow = 1, yearAvgSumFlow = 1; // 연간 최대, 최소, 평균
let summerAll = 1; // 하절기 전기간
let summerThree = 1; // 하절기
let summerRain = 1; // 하절기
let winterAll = 1; // 동절기 전기간
let winterSunnyMin = 1, winterSunnyAvg = 1, winterSunnyMax = 1; // 동절기 청천 최소, 평균, 최대
// 최대, 최소 총 유입량 (1년 하루 합계의 최대, 최소)
// 하절기 청천시, 강우시 재계산 리턴값
let summerChungchunFlow = 1, summerChungchunReturnAmnt = 1, summerChungchunEfflAmnt = 1; // 하절기 청천
let summerRainInflAmnt = 1, summerRainReturnAmnt = 1, summerRainEfflAmnt = 1; // 하절기 강우시
// 동절기 청천시 최대, 최소, 평균 리턴값
let winterChungchunFlowAvg = 1, winterChungchunFlowMax = 1, winterChungchunFlowMin = 1; // 동절기 청천 하수유입량 평균, 최대, 최소
let winterChungchunReturnAvg = 1, winterChungchunReturnMax = 1, winterChungchunReturnMin = 1; // 동절기 청천 총인반류수 평균, 최대, 최소
let winterChungchunEfflAvg = 1, winterChungchunEfflMax = 1, winterChungchunEfflMin = 1; // 동절기 청천 방류량 평균, 최대, 최소
// const res = await fetchOperationStatus(searchYear, fcltyCd); // /dashBoard/mngInfo/
// const data = res.data;
const operList = {
inFlow : {yearTot: 0, yearAvg: 0, yearMax: 0, yearMin: 9999999
, summerTot: 0, summerAvg: 0, summerRainy: 0, summerSunny: 0
, winterTot: 0, winterAvg: 0, winterSunny: 0, winterSunnyMax: 0, winterSunnyMin: 9999999
, groundTot: 0, groundSummer: 0, groundWinter: 0, rdii: 0, rdiiRainAmt: 0},
inflAmt: {yearTot: 0, yearAvg: 0, yearMax: 0, yearMin: 9999999, yearSunny: 0
, summerTot: 0, summerAvg: 0, summerRainy: 0, summerSunny: 0
, winterTot: 0, winterAvg: 0, winterSunny: 0, winterSunnyMax: 0, winterSunnyMin: 9999999
, groundTot: 0, groundSummer: 0, groundWinter: 0, rdii: 0, rdiiRainAmt: 0},
sumFlow: {yearTot: 0, yearAvg: 0, yearMax: 0, yearMin: 9999999
, summerTot: 0, summerAvg: 0, summerRainy: 0, summerSunny: 0
, winterTot: 0, winterAvg: 0, winterSunny: 0, winterSunnyMax: 0, winterSunnyMin: 9999999
, groundTot: 0, groundSummer: 0, groundWinter: 0, rdii: 0, rdiiRainAmt: 0},
returnFlow: {yearTot: 0, yearAvg: 0, yearMax: 0, yearMin: 9999999
, summerTot: 0, summerAvg: 0, summerRainy: 0, summerSunny: 0
, winterTot: 0, winterAvg: 0, winterSunny: 0, winterSunnyMax: 0, winterSunnyMin: 9999999
, groundTot: 0, groundSummer: 0, groundWinter: 0, rdii: 0, rdiiRainAmt: 0},
efflFlow: {yearTot: 0, yearAvg: 0, yearMax: 0, yearMin: 9999999
, summerTot: 0, summerAvg: 0, summerRainy: 0, summerSunny: 0
, winterTot: 0, winterAvg: 0, winterSunny: 0, winterSunnyMax: 0, winterSunnyMin: 9999999
, groundTot: 0, groundSummer: 0, groundWinter: 0, rdii: 0, rdiiRainAmt: 0},
};
const clone = (arr: any[]) => arr?.map(v => ({ ...v })) ?? [];
let rdiPercent = 0;
let operationalStatusList = clone(operationalStatusListOrg);
if (data && operationalStatusList) {
if (operationalStatusList) {
// 유량 - 유입
if (operationalStatusList?.[0]) {
// 연간
const yearAvg = data.yearData === null ? '' : (
(data.yearData.AVG_INFL_AMNT ? data.yearData.AVG_INFL_AMNT : 0) + // 실제유입량(반류수제거)(m³/일) 평균
(data.yearData.AVG_SUM_FLOW ? data.yearData.AVG_SUM_FLOW : 0) + // 연계처리량 api 주석처리되어 있음.
(data.yearData.AVG_RETURN_AMNT ? data.yearData.AVG_RETURN_AMNT : 0) // 반류수유량(m³/일) 평균
);
const yearMax = data.yearData === null ? '' : (
(data.yearData.MAX_INFL_AMNT ? data.yearData.MAX_INFL_AMNT : 0) + // 실제유입량(반류수제거)(m³/일) 최대
(data.yearData.MAX_SUM_FLOW ? data.yearData.MAX_SUM_FLOW : 0) + // 연계처리량 api 주석처리되어 있음.
(data.yearData.MAX_RETURN_AMNT ? data.yearData.MAX_RETURN_AMNT : 0) // 반류수유량(m³/일) 최대
);
const yearMin = data.yearData === null ? '' : (
(data.yearData.MIN_INFL_AMNT ? data.yearData.MIN_INFL_AMNT : 0) + // 실제유입량(반류수제거)(m³/일) 최소
(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 ? '' : ( // 하절기전기간
(data.summer.AVG_INFL_AMNT ? data.summer.AVG_INFL_AMNT : 0) +
(data.summer.AVG_SUM_FLOW ? data.summer.AVG_SUM_FLOW : 0)
);
operationalStatusList[0].summerThree = data.summerRainy === null ? '' : ( // 하절기 강우시
(data.summerRainy.AVG_INFL_AMNT ? data.summerRainy.AVG_INFL_AMNT : 0) +
(data.summerRainy.AVG_SUM_FLOW ? data.summerRainy.AVG_SUM_FLOW : 0)
);
operationalStatusList[0].summerRain = data.summerSunny === null ? '' : ( // 하절기 청천시
(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) +
(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, 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/ - 일별 유량 조회
@@ -1490,30 +1505,18 @@ export const dashBoardReducer = (
//const calRainData = CalcRainEffect(clone(res2.data), 'RAIN');
let cntSunnyDay = 0; // 청천일 수
// 지하수유입량 - 청천시 기준
let chungcunSumFlow = 0;
let sumSummerChungcunFlow = 0;
let sumWinterChungcunFlow = 0;
let summerChungchunDayReturnAmnt = 0; // 하절기 청천시 총인설비 반류수
let summerChungchunDayEfflAmnt = 0; // 하절기 청천시 총인설비 방류수
let winterChungchunTotalInflAmntMax = 0, winterChungchunTotalInflAmntMin = 9999999; // 동절기 총 유입량 최대, 최소
let winterChungchunDayFlowMax = 0, winterChungchunDayFlowMin = 9999999; // 동절기 청천시 하수유입량 최대, 최소
let winterChungchunDayReturnMax = 0, winterChungchunDayReturnMin = 9999999; // 동절기 청천시 총인반류수 최대, 최소, 평균
let winterChungchunDayReturnAvg = 0;
// 동절기 청천시 방류량 최대, 최소, 평균
let winterChungchunDayEfflMax = 0, winterChungchunDayEfflMin = 9999999, winterChungchunDayEfflAvg = 0;
// let chungcunSumFlow = 0; // 연간 청천 순수하수
let rainEffectDay = 0;
yearDay = res2.data ? res2.data.length : 1;
res2.data.forEach((item: any) => { //fetchFlowRateModalList
res2.data.forEach((item: any) => { // --일별 유량 start
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;
if (item.infoRnDay == null) item.infoRnDay = 0;
if (item.infoRnDay >= 3) {
rainEffectDay = 2;
@@ -1524,135 +1527,141 @@ export const dashBoardReducer = (
if (rainEffectDay >= 0) {
// 강우영향일
if (month === '06' || month === '07' || month === '08') { // 하절기
if (month === '06' || month === '07' || month === '08') { // 하절기 강우영향일
summerRainDay += 1;
summerRainDaySumFlow += sumFlow;
summerRainDayFlow += inflAmnt;
summerRainDayReturnFlow += returnAmnt;
summerRainDayEfflFlow += efflAmnt;
operList.inFlow.summerRainy += inflAmnt + sumFlow + returnAmnt;
operList.inflAmt.summerRainy += inflAmnt;
operList.sumFlow.summerRainy += sumFlow;
operList.returnFlow.summerRainy += returnAmnt;
operList.efflFlow.summerRainy += efflAmnt;
}
} else if (rainEffectDay < 0) {
cntSunnyDay += 1; // 청천일수
// 청천시
chungcunSumFlow += inflAmnt;
// chungcunSumFlow += inflAmnt; // 연간 청천 순수하수
operList.inflAmt.yearSunny += inflAmnt; // 연간 청천 순수하수
if (month === '06' || month === '07' || month === '08') { // 하절기
if (month === '06' || month === '07' || month === '08') { // 하절기 청천
summerChungchunDay += 1;
summerChungchunSumFlow += sumFlow;
sumSummerChungcunFlow += inflAmnt;
summerChungchunDayReturnAmnt += returnAmnt;
summerChungchunDayEfflAmnt += efflAmnt;
} else if (month === '01' || month === '02') { // 동절기
operList.inFlow.summerSunny += inflAmnt + sumFlow + returnAmnt;
operList.inflAmt.summerSunny += inflAmnt;
operList.sumFlow.summerSunny += sumFlow;
operList.returnFlow.summerSunny += returnAmnt;
operList.efflFlow.summerSunny += efflAmnt;
} else if (month === '01' || month === '02') { // 동절기 청천
winterChungchuDay += 1;
winterChungchunSumFlow += sumFlow; // 연계처리수
sumWinterChungcunFlow += inflAmnt;
winterChungchunDayReturnAvg += returnAmnt;
winterChungchunDayEfflAvg += efflAmnt;
const inflowOne = inflAmnt + sumFlow + returnAmnt;
operList.inFlow.winterSunny += inflAmnt + sumFlow + returnAmnt;
operList.inflAmt.winterSunny += inflAmnt;
operList.sumFlow.winterSunny += sumFlow;
operList.returnFlow.winterSunny += returnAmnt;
operList.efflFlow.winterSunny += efflAmnt;
let totWinterTotalInflAmnt = 0;
totWinterTotalInflAmnt = inflAmnt + sumFlow + returnAmnt;
if (winterChungchunTotalInflAmntMax < totWinterTotalInflAmnt) winterChungchunTotalInflAmntMax = totWinterTotalInflAmnt;
if (winterChungchunTotalInflAmntMin > totWinterTotalInflAmnt || winterChungchunTotalInflAmntMin === 0) winterChungchunTotalInflAmntMin = totWinterTotalInflAmnt;
if (operList.inFlow.winterSunnyMax < inflowOne) operList.inFlow.winterSunnyMax = inflowOne;
if (operList.inflAmt.winterSunnyMax < inflAmnt) operList.inflAmt.winterSunnyMax = inflAmnt;
if (operList.sumFlow.winterSunnyMax < sumFlow) operList.sumFlow.winterSunnyMax = sumFlow;
if (operList.returnFlow.winterSunnyMax < returnAmnt) operList.returnFlow.winterSunnyMax = returnAmnt;
if (operList.efflFlow.winterSunnyMax < efflAmnt) operList.efflFlow.winterSunnyMax = efflAmnt;
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;
if (operList.inFlow.winterSunnyMin > inflowOne) operList.inFlow.winterSunnyMin = inflowOne;
if (operList.inflAmt.winterSunnyMin > inflAmnt) operList.inflAmt.winterSunnyMin = inflAmnt;
if (operList.sumFlow.winterSunnyMin > sumFlow) operList.sumFlow.winterSunnyMin = sumFlow;
if (operList.returnFlow.winterSunnyMin > returnAmnt) operList.returnFlow.winterSunnyMin = returnAmnt;
if (operList.efflFlow.winterSunnyMin > efflAmnt) operList.efflFlow.winterSunnyMin = efflAmnt;
}
}
const inflowOne = inflAmnt + sumFlow + returnAmnt;
operList.inFlow.yearTot += inflAmnt + sumFlow + returnAmnt;
operList.inflAmt.yearTot += inflAmnt;
operList.sumFlow.yearTot += sumFlow;
operList.returnFlow.yearTot += returnAmnt;
operList.efflFlow.yearTot += efflAmnt;
yearSumFlow += sumFlow;
if (maxYearSumFlow < sumFlow) maxYearSumFlow = sumFlow;
if (minYearSumFlow > sumFlow) minYearSumFlow = sumFlow;
if (operList.inFlow.yearMax < inflowOne) operList.inFlow.yearMax = inflowOne;
if (operList.inflAmt.yearMax < inflAmnt) operList.inflAmt.yearMax = inflAmnt;
if (operList.sumFlow.yearMax < sumFlow) operList.sumFlow.yearMax = sumFlow;
if (operList.returnFlow.yearMax < returnAmnt) operList.returnFlow.yearMax = returnAmnt;
if (operList.efflFlow.yearMax < efflAmnt) operList.efflFlow.yearMax = efflAmnt;
// 1년 최대 총 하수유입량
let totYearFlow = 0;
totYearFlow = inflAmnt + sumFlow + returnAmnt;
if (totFlowMax < totYearFlow) totFlowMax = totYearFlow;
if (totFlowMin > totYearFlow || totFlowMin === 0) {
totFlowMin = totYearFlow;
}
if (operList.inFlow.yearMin > inflowOne) operList.inFlow.yearMin = inflowOne;
if (operList.inflAmt.yearMin > inflAmnt) operList.inflAmt.yearMin = inflAmnt;
if (operList.sumFlow.yearMin > sumFlow) operList.sumFlow.yearMin = sumFlow;
if (operList.returnFlow.yearMin > returnAmnt) operList.returnFlow.yearMin = returnAmnt;
if (operList.efflFlow.yearMin > efflAmnt) operList.efflFlow.yearMin = efflAmnt;
if (month === '06' || month === '07' || month === '08') {
summerDay += 1;
summerSumFlow += sumFlow;
operList.inFlow.summerTot += inflAmnt + sumFlow + returnAmnt;
operList.inflAmt.summerTot += inflAmnt;
operList.sumFlow.summerTot += sumFlow;
operList.returnFlow.summerTot += returnAmnt;
operList.efflFlow.summerTot += efflAmnt;
} else if (month === '01' || month === '02') {
winterDay += 1;
winterSumFlow += sumFlow;
operList.inFlow.winterTot += inflAmnt + sumFlow + returnAmnt;
operList.inflAmt.winterTot += inflAmnt;
operList.sumFlow.winterTot += sumFlow;
operList.returnFlow.winterTot += returnAmnt;
operList.efflFlow.winterTot += efflAmnt;
}
});
}); // --일별 유량 end
// 연간 평균
operList.inFlow.yearAvg = (yearDay > 0)? operList.inFlow.yearTot / yearDay : 0;
operList.inflAmt.yearAvg = (yearDay > 0)? operList.inflAmt.yearTot / yearDay : 0;
operList.sumFlow.yearAvg = (yearDay > 0)? operList.sumFlow.yearTot / yearDay : 0;
operList.returnFlow.yearAvg = (yearDay > 0)? operList.returnFlow.yearTot / yearDay : 0;
operList.efflFlow.yearAvg = (yearDay > 0)? operList.efflFlow.yearTot / yearDay : 0;
// 하절기 전기간 평균
operList.inFlow.summerAvg = (summerDay > 0)? operList.inFlow.summerTot / summerDay : 0;
operList.inflAmt.summerAvg = (summerDay > 0)? operList.inflAmt.summerTot / summerDay : 0;
operList.sumFlow.summerAvg = (summerDay > 0)? operList.sumFlow.summerTot / summerDay : 0;
operList.returnFlow.summerAvg = (summerDay > 0)? operList.returnFlow.summerTot / summerDay : 0;
operList.efflFlow.summerAvg = (summerDay > 0)? operList.efflFlow.summerTot / summerDay : 0;
// 하절기 강우시 평균
operList.inFlow.summerRainy = (summerRainDay > 0)? operList.inFlow.summerRainy / summerRainDay : 0;
operList.inflAmt.summerRainy = (summerRainDay > 0)? operList.inflAmt.summerRainy / summerRainDay : 0;
operList.sumFlow.summerRainy = (summerRainDay > 0)? operList.sumFlow.summerRainy / summerRainDay : 0;
operList.returnFlow.summerRainy = (summerRainDay > 0)? operList.returnFlow.summerRainy / summerRainDay : 0;
operList.efflFlow.summerRainy = (summerRainDay > 0)? operList.efflFlow.summerRainy / summerRainDay : 0;
// 하절기 청천시 평균
operList.inFlow.summerSunny = (summerChungchunDay > 0)? operList.inFlow.summerSunny / summerChungchunDay : 0;
operList.inflAmt.summerSunny = (summerChungchunDay > 0)? operList.inflAmt.summerSunny / summerChungchunDay : 0;
operList.sumFlow.summerSunny = (summerChungchunDay > 0)? operList.sumFlow.summerSunny / summerChungchunDay : 0;
operList.returnFlow.summerSunny = (summerChungchunDay > 0)? operList.returnFlow.summerSunny / summerChungchunDay : 0;
operList.efflFlow.summerSunny = (summerChungchunDay > 0)? operList.efflFlow.summerSunny / summerChungchunDay : 0;
// 동절기 전기간 평균
operList.inFlow.winterAvg = (winterDay > 0)? operList.inFlow.winterTot / winterDay : 0;
operList.inflAmt.winterAvg = (winterDay > 0)? operList.inflAmt.winterTot / winterDay : 0;
operList.sumFlow.winterAvg = (winterDay > 0)? operList.sumFlow.winterTot / winterDay : 0;
operList.returnFlow.winterAvg = (winterDay > 0)? operList.returnFlow.winterTot / winterDay : 0;
operList.efflFlow.winterAvg = (winterDay > 0)? operList.efflFlow.winterTot / winterDay : 0;
// 동절기 청천시 평균
operList.inFlow.winterSunny = (winterChungchuDay > 0)? operList.inFlow.winterSunny / winterChungchuDay : 0;
operList.inflAmt.winterSunny = (winterChungchuDay > 0)? operList.inflAmt.winterSunny / winterChungchuDay : 0;
operList.sumFlow.winterSunny = (winterChungchuDay > 0)? operList.sumFlow.winterSunny / winterChungchuDay : 0;
operList.returnFlow.winterSunny = (winterChungchuDay > 0)? operList.returnFlow.winterSunny / winterChungchuDay : 0;
operList.efflFlow.winterSunny = (winterChungchuDay > 0)? operList.efflFlow.winterSunny / winterChungchuDay : 0;
// 연계처리수
yearAvgSumFlow = Number((yearSumFlow && Number(yearSumFlow) != 0) ? (yearSumFlow / yearDay) : '');
yearMaxSumFlow = maxYearSumFlow;
yearMinSumFlow = minYearSumFlow;
summerAll = summerSumFlow && Number(summerSumFlow) != 0 ? Number(summerSumFlow / summerDay) : 0
summerThree = summerRainDaySumFlow && Number(summerRainDaySumFlow) != 0 ? Number(summerRainDaySumFlow / summerRainDay) : 0;
summerRain = summerChungchunSumFlow && Number(summerChungchunSumFlow) != 0 ? Number(summerChungchunSumFlow / summerChungchunDay) : 0;
winterAll = winterSumFlow && Number(winterSumFlow) != 0 ? Number(winterSumFlow / winterDay) : 0;
winterSunnyMin = minWinterChungchunSumFlow;
winterSunnyAvg = winterChungchunSumFlow && Number(winterChungchunSumFlow) != 0 ? (winterChungchunSumFlow / winterChungchuDay) : 0;
winterSunnyMax = maxWinterChungchunSumFlow;
// 하절기 강우시 계산
// 하수유입량 (강우시)
summerRainInflAmnt = summerRainDayFlow && Number(summerRainDayFlow) != 0 ? Number(summerRainDayFlow / summerRainDay) : 0;
// 총인설비방류수 (강우시)
summerRainReturnAmnt = summerRainDayReturnFlow && Number(summerRainDayReturnFlow) != 0 ? Number(summerRainDayReturnFlow / summerRainDay) : 0;
// 방루량 (강우시)
summerRainEfflAmnt = summerRainDayEfflFlow && summerRainDayEfflFlow != 0 ? summerRainDayEfflFlow / summerRainDay : 0;
// 동절기 청천시 계산
// 하수유입량 (청천시) 평균
winterChungchunFlowAvg = sumWinterChungcunFlow && Number(sumWinterChungcunFlow) != 0 ? (sumWinterChungcunFlow / winterChungchuDay) : 0;
// 총인반류수 (청천시) 평균
winterChungchunReturnAvg = winterChungchunDayReturnAvg && Number(winterChungchunDayReturnAvg) != 0 ? (winterChungchunDayReturnAvg / winterChungchuDay) : 0;
// 방류량 (청천시) 평균
winterChungchunEfflAvg = winterChungchunDayEfflAvg && Number(winterChungchunDayEfflAvg) != 0 ? (winterChungchunDayEfflAvg / winterChungchuDay) : 0;
// 하수유입량 (청천시) 최대
winterChungchunFlowMax = winterChungchunDayFlowMax;
// 총인반류수 (청천시) 최대
winterChungchunReturnMax = winterChungchunDayReturnMax;
// 방류량 (청천시) 최대
winterChungchunEfflMax = winterChungchunDayEfflMax;
// 하수유입량 (청천시) 최소
winterChungchunFlowMin = winterChungchunDayFlowMin;
// 총인반류수 (청천시) 최소
winterChungchunReturnMin = winterChungchunDayReturnMin;
// 방류량 (청천시) 최소
winterChungchunEfflMin = winterChungchunDayEfflMin
operationalStatusList[0].yearAvg = roundUp(Number(operationalStatusList[0].yearAvg), 0) + roundUp(yearAvgSumFlow, 0); // 연간 유입 평균 = 하수유입량(순수하수유입량) + 연계처리량 + 반류수유량(m³/일)
operationalStatusList[0].yearMax = roundUp(totFlowMax, 0); // 연간 유입 최대
operationalStatusList[0].yearMin = roundUp(totFlowMin, 0); // 연간 유입 최소
operationalStatusList[0].summerAll = roundUp(Number(operationalStatusList[0].summerAll), 0) + roundUp(summerAll, 0); // 하절기 유입 전기간
operationalStatusList[0].summerThree = roundUp(Number(operationalStatusList[0].summerThree), 0) + roundUp(summerThree, 0); // 하절기 유입 강우시(강우영향일)
operationalStatusList[0].summerRain = roundUp(Number(operationalStatusList[0].summerRain), 0) + roundUp(summerRain, 0); // 하절기 유입 청천시
operationalStatusList[0].winterAll = roundUp(Number(operationalStatusList[0].winterAll), 0) + roundUp(winterAll, 0); // 동절기 유입 전기간
operationalStatusList[0].winterSunnyMin = roundUp(winterChungchunTotalInflAmntMin, 0); // 동절기 유입 최소
operationalStatusList[0].winterSunnyMax = roundUp(winterChungchunTotalInflAmntMax, 0); // 동절기 유입 최대
operationalStatusList[0].winterSunnyAvg = roundUp(Number(operationalStatusList[0].winterSunnyAvg), 0) + roundUp(winterSunnyAvg, 0); // 동절기 유입 평균
// 연간 유입 평균 = 하수유입량(순수하수유입량) + 연계처리량 + 반류수유량(m³/일)
operationalStatusList[0].yearAvg = roundUp(operList.inFlow.yearAvg, 0); // 연간 유입 평균 = 하수유입량(순수하수유입량) + 연계처리량 + 반류수유량(m³/일)
operationalStatusList[0].yearMax = roundUp(operList.inFlow.yearMax, 0); // 연간 유입 최대
operationalStatusList[0].yearMin = roundUp(operList.inFlow.yearMin, 0); // 연간 유입 최소
operationalStatusList[0].summerAll = roundUp(operList.inFlow.summerAvg, 0); // 하절기 유입 전기간
operationalStatusList[0].summerThree = roundUp(operList.inFlow.summerRainy, 0); // 하절기 유입 강우시(강우영향일)
operationalStatusList[0].summerRain = roundUp(operList.inFlow.summerSunny, 0); // 하절기 유입 청천시
operationalStatusList[0].winterAll = roundUp(operList.inFlow.winterAvg, 0); // 동절기 유입 전기간
operationalStatusList[0].winterSunnyMin = roundUp(operList.inFlow.winterSunnyMin, 0); // 동절기 유입 최소
operationalStatusList[0].winterSunnyMax = roundUp(operList.inFlow.winterSunnyMax, 0); // 동절기 유입 최대
operationalStatusList[0].winterSunnyAvg = roundUp(operList.inFlow.winterAvg, 0); // 동절기 유입 평균
// 지하수유입량
const usage = chungcunSumFlow / cntSunnyDay; //calData.length;
const summerUsage = sumSummerChungcunFlow / summerChungchunDay;
const winterUsage = sumWinterChungcunFlow / winterChungchuDay;
const usage = operList.inflAmt.yearSunny / cntSunnyDay; // 연간 청천 순수하수 평균
const summerUsage = operList.inflAmt.summerSunny; // 하절기 청천 순수하수 평균
const winterUsage = operList.inflAmt.winterSunny; // 동절기 청천 순수하수 평균
// 임시 계산변수값들 메인에 대입
summerChungchunFlow = summerUsage;
summerChungchunReturnAmnt = summerChungchunDayReturnAmnt / summerChungchunDay;
summerChungchunEfflAmnt = summerChungchunDayEfflAmnt / summerChungchunDay;
operationalStatusList[0].groundWaterAvg = Math.round((usage - (usage * 0.65 * OSU_PERCENT)) * 100) / 100;
operationalStatusList[0].groundWaterSummer = Math.round((summerUsage - (summerUsage * 0.65 * OSU_PERCENT)) * 100) / 100;
operationalStatusList[0].groundWaterWinter = Math.round((winterUsage - (winterUsage * 0.65 * OSU_PERCENT)) * 100) / 100;
@@ -1676,20 +1685,20 @@ export const dashBoardReducer = (
const winterMonth = ['01', '02'];
wqltDataTot.filter(item => summerMonth.includes(item.msrDt.toString().replaceAll('-', '').substring(4, 6))).forEach(item2 => {
if (Number(item2.infoRnDay) >= 3) {
const inflBod = Number(item2.inflAssctBfrWqltBod);
const infl = Number(item2.inflAmnt);
const rain = Number(item2.infoRnDay);
if (Number(item2.infoRnDay) >= 3) { // 3mm 이상 강우일
const inflBod = Number(item2.inflAssctBfrWqltBod); //유입연계전수질_BOD(mg/L)
const infl = Number(item2.inflAmnt); //실제유입량(반류수제거)(m³/일)
const rain = Number(item2.infoRnDay); //강우량
if (inflBod < minSummerBod) {
minSummerBodInfl = infl;
minSummerBod = inflBod;
rdiRain = rain;
rdiRain = rain; // 하절기 최소 bod일때의 일강수량
}
}
});
wqltDataSunny.filter(item => winterMonth.includes(item.msrDt.toString().replaceAll('-', '').substring(4, 6))).forEach(item2 => {
winterBodSunny += Number(item2.inflAssctBfrWqltBod);
winterBodSunny += Number(item2.inflAssctBfrWqltBod); // 동절기 청천시 유입BOD(mg/L)
winterCnt += 1;
});
@@ -1705,132 +1714,56 @@ export const dashBoardReducer = (
rdiPercent = (rdiValue / minSummerBodInfl) * 100;
operationalStatusList[0].rdi = rdiValue;
operationalStatusList[0].rdiRain = rdiRain;
operationalStatusList[0].rdi = rdiValue; // RDII 추정
operationalStatusList[0].rdiRain = rdiRain; // RDII 추정시 일강수량(mm)
}
/* const summerLowFlow = data.summerBod&&data.summerBod.INFL_AMNT&&data.summerBod.INFL_AMNT!='null'?Number(data.summerBod.INFL_AMNT):0;
const winterAvgBod = data.winterSunny&&data.winterSunny.AVG_INFL_ASSCT_BFR_WQLT_BOD&&data.winterSunny.AVG_INFL_ASSCT_BFR_WQLT_BOD!='null'?Number(data.winterSunny.AVG_INFL_ASSCT_BFR_WQLT_BOD):0;
const summerLowBod = data.summerBod&&data.summerBod.MIN_INFL_ASSCT_BFR_WQLT_BOD&&data.summerBod.MIN_INFL_ASSCT_BFR_WQLT_BOD!='null'?Number(data.summerBod.MIN_INFL_ASSCT_BFR_WQLT_BOD):0;
const summerLowRain = data.summerBod&&data.summerBod.INFO_RN_DAY&&data.summerBod.INFO_RN_DAY!='null'?Number(data.summerBod.INFO_RN_DAY):0;
operationalStatusList[0].rdi = winterAvgBod===0?0:roundUp(summerLowFlow * ((winterAvgBod - summerLowBod) / winterAvgBod), 2);
operationalStatusList[0].rdiRain = summerLowRain; */
}
if (operationalStatusList[0] && operationalStatusList[7]) {
operationalStatusList[7].groundWaterAvg = operationalStatusList[0].groundWaterAvg === null ? '' : data.yearData && data.yearData.AVG_INFL_AMNT === 0 ? '' : Math.round((Number(operationalStatusList[0].groundWaterAvg.toString().replaceAll(',', '')) / (data.yearData && data.yearData.AVG_INFL_AMNT ? Number(data.yearData.AVG_INFL_AMNT.toString().replaceAll(',', '')) : 0) * 100) * 10) / 10 + '%';
operationalStatusList[7].groundWaterSummer = operationalStatusList[0].groundWaterSummer === null ? '' : data.summer && data.summer.AVG_INFL_AMNT === 0 ? '' : Math.round((Number(operationalStatusList[0].groundWaterSummer.toString().replaceAll(',', '')) / (data.summer && data.summer.AVG_INFL_AMNT ? Number(data.summer.AVG_INFL_AMNT.toString().replaceAll(',', '')) : 0) * 100) * 10) / 10 + '%';
operationalStatusList[7].groundWaterWinter = operationalStatusList[0].groundWaterWinter === null ? '' : data.winter && data.winter.AVG_INFL_AMNT === 0 ? '' : Math.round((Number(operationalStatusList[0].groundWaterWinter.toString().replaceAll(',', '')) / (data.winter && data.winter.AVG_INFL_AMNT ? Number(data.winter.AVG_INFL_AMNT.toString().replaceAll(',', '')) : 0) * 100) * 10) / 10 + '%';
// operationalStatusList[7].groundWaterAvg = operationalStatusList[0].groundWaterAvg === null ? '' : operList.inFlow.yearTot && data.yearData.AVG_INFL_AMNT === 0 ? '' : Math.round((Number(operationalStatusList[0].groundWaterAvg.toString().replaceAll(',', '')) / (data.yearData && data.yearData.AVG_INFL_AMNT ? Number(data.yearData.AVG_INFL_AMNT.toString().replaceAll(',', '')) : 0) * 100) * 10) / 10 + '%';
// operationalStatusList[7].groundWaterSummer = operationalStatusList[0].groundWaterSummer === null ? '' : data.summer && data.summer.AVG_INFL_AMNT === 0 ? '' : Math.round((Number(operationalStatusList[0].groundWaterSummer.toString().replaceAll(',', '')) / (data.summer && data.summer.AVG_INFL_AMNT ? Number(data.summer.AVG_INFL_AMNT.toString().replaceAll(',', '')) : 0) * 100) * 10) / 10 + '%';
// operationalStatusList[7].groundWaterWinter = operationalStatusList[0].groundWaterWinter === null ? '' : data.winter && data.winter.AVG_INFL_AMNT === 0 ? '' : Math.round((Number(operationalStatusList[0].groundWaterWinter.toString().replaceAll(',', '')) / (data.winter && data.winter.AVG_INFL_AMNT ? Number(data.winter.AVG_INFL_AMNT.toString().replaceAll(',', '')) : 0) * 100) * 10) / 10 + '%';
operationalStatusList[7].groundWaterAvg = operList.inflAmt.yearAvg === 0 ? '' : Math.round((Number(operationalStatusList[0].groundWaterAvg.toString().replaceAll(',', '')) / operList.inflAmt.yearAvg * 100) * 10) / 10 + '%';
operationalStatusList[7].groundWaterSummer = operList.inflAmt.summerAvg === 0 ? '' : Math.round((Number(operationalStatusList[0].groundWaterSummer.toString().replaceAll(',', '')) / operList.inflAmt.summerAvg * 100) * 10) / 10 + '%';
operationalStatusList[7].groundWaterWinter = operList.inflAmt.winterAvg === 0 ? '' : Math.round((Number(operationalStatusList[0].groundWaterWinter.toString().replaceAll(',', '')) / operList.inflAmt.winterAvg * 100) * 10) / 10 + '%';
operationalStatusList[7].rdi = roundNumber(rdiPercent, 1) + '%';
/* operationalStatusList[7].groundWaterAvg = operationalStatusList[0].groundWaterAvg === null ? '' : Number(Number(operationalStatusList[0].groundWaterAvg) / Number(data.yearData.AVG_INFL_AMNT)) * 100;
operationalStatusList[7].groundWaterSummer = operationalStatusList[0].groundWaterSummer === null ? '' : Number(Number(operationalStatusList[0].groundWaterSummer) / Number(data.summer.AVG_INFL_AMNT)) * 100;
operationalStatusList[7].groundWaterWinter = operationalStatusList[0].groundWaterWinter === null ? '' : Number(Number(operationalStatusList[0].groundWaterWinter) / Number(data.winter.AVG_INFL_AMNT)) * 100;*/
}
for (let i = 1; i < operationalStatusList.length; i++) {
const txtArray = ['1', 'INFL_AMNT', 'SUM_FLOW', 'RETURN_AMNT', 'EFFL_AMNT', 'INFL_ASSCT_BFR_WQLT_BOD', 'EFFL_WQLT_BOD', 'INFL_ASSCT_BFR_WQLT_TN', 'EFFL_WQLT_TN', 'INFL_ASSCT_BFR_WQLT_TP', 'EFFL_WQLT_TP', 'TP_INFL_WQLT_TP', 'EFFL_WQLT_TP'];
if (operationalStatusList[i]) {
if (i < 7) {
changeValue(operationalStatusList[i], data, txtArray[i]);
if (i < 5) {
dataFormSetting(operationalStatusList[i]!);
} else {
dataFormSettingWqlty(operationalStatusList[i]!);
}
} else {
calcValue(operationalStatusList[i], data, txtArray[i]);
}
// 순수하수량(1), 연계처리수(2), 총인설비방류수(3), 방류수(4) 데이터 매핑
const flowMappings = [
{ index: 0, source: operList.inFlow },
{ index: 1, source: operList.inflAmt },
{ index: 2, source: operList.sumFlow },
{ index: 3, source: operList.returnFlow },
{ index: 4, source: operList.efflFlow },
];
flowMappings.forEach(({ index, source }) => {
const item = operationalStatusList[index];
if (item) {
item.yearAvg = source.yearAvg;
item.yearMax = source.yearMax;
item.yearMin = source.yearMin;
item.summerAll = source.summerAvg;
item.summerThree = source.summerRainy;
item.summerRain = source.summerSunny;
item.winterSunnyAvg = source.winterSunny;
item.winterSunnyMax = source.winterSunnyMax;
item.winterSunnyMin = source.winterSunnyMin;
item.winterAll = source.winterAvg;
dataFormSetting(item);
}
}
});
// 순수하수량
if (operationalStatusList[1]) {
operationalStatusList[1].summerThree = summerRainInflAmnt;
operationalStatusList[1].summerRain = summerChungchunFlow;
operationalStatusList[1].winterSunnyAvg = winterChungchunFlowAvg;
operationalStatusList[1].winterSunnyMax = winterChungchunFlowMax;
operationalStatusList[1].winterSunnyMin = winterChungchunFlowMin;
dataFormSetting(operationalStatusList[1]);
}
// 연계처리수
if (operationalStatusList[2]) {
operationalStatusList[2].yearAvg = yearAvgSumFlow;
operationalStatusList[2].yearMax = yearMaxSumFlow;
operationalStatusList[2].yearMin = yearMinSumFlow;
operationalStatusList[2].summerAll = summerAll;
operationalStatusList[2].summerThree = summerThree;
operationalStatusList[2].summerRain = summerRain;
operationalStatusList[2].winterAll = winterAll;
operationalStatusList[2].winterSunnyMin = winterSunnyMin;
operationalStatusList[2].winterSunnyAvg = winterSunnyAvg;
operationalStatusList[2].winterSunnyMax = winterSunnyMax;
dataFormSetting(operationalStatusList[2]);
}
// 총인설비방류수
if (operationalStatusList[3]) {
operationalStatusList[3].summerThree = summerRainReturnAmnt;
operationalStatusList[3].summerRain = summerChungchunReturnAmnt;
operationalStatusList[3].winterSunnyAvg = winterChungchunReturnAvg;
operationalStatusList[3].winterSunnyMax = winterChungchunReturnMax;
operationalStatusList[3].winterSunnyMin = winterChungchunReturnMin;
dataFormSetting(operationalStatusList[3]);
}
// 방류수
if (operationalStatusList[4]) {
operationalStatusList[4].summerThree = summerRainEfflAmnt;
operationalStatusList[4].summerRain = summerChungchunEfflAmnt;
operationalStatusList[4].winterSunnyAvg = winterChungchunEfflAvg;
operationalStatusList[4].winterSunnyMax = winterChungchunEfflMax;
operationalStatusList[4].winterSunnyMin = winterChungchunEfflMin;
dataFormSetting(operationalStatusList[4]);
}
if (operationalStatusList[0]) {
// 안전하게 숫자 변환하는 함수
const toNum = (val) => {
if (val === null || val === undefined || val === '' || val === '0') return 0;
return Number(val.toString().replaceAll(',', '')) || 0;
};
operationalStatusList[0].summerAll =
toNum(operationalStatusList[1]?.summerAll) +
toNum(operationalStatusList[2]?.summerAll) +
toNum(operationalStatusList[3]?.summerAll);
operationalStatusList[0].summerThree =
toNum(operationalStatusList[1]?.summerThree) +
toNum(operationalStatusList[2]?.summerThree) +
toNum(operationalStatusList[3]?.summerThree);
operationalStatusList[0].summerRain =
toNum(operationalStatusList[1]?.summerRain) +
toNum(operationalStatusList[2]?.summerRain) +
toNum(operationalStatusList[3]?.summerRain);
operationalStatusList[0].winterAll =
toNum(operationalStatusList[1]?.winterAll) +
toNum(operationalStatusList[2]?.winterAll) +
toNum(operationalStatusList[3]?.winterAll);
operationalStatusList[0].winterSunnyAvg =
toNum(operationalStatusList[1]?.winterSunnyAvg) +
toNum(operationalStatusList[2]?.winterSunnyAvg) +
toNum(operationalStatusList[3]?.winterSunnyAvg);
dataFormSetting(operationalStatusList[0]);
}
}
const rtnData = await calcWaterQltyData(operationalStatusList, searchYear, fcltyCd, mainGraphData); // 수질 데이터 청천시, 강우시 재계산
// 총인설비가 없을 경우 제외
// console.log('총인시설 여부 : ', data.yearData?.TP_FCT_YN);
console.log('총인시설 여부 : ', mainGraphData.data.wqltObjs?.tpFctYn);
const tpFctYn = mainGraphData.data.wqltObjs?.tpFctYn;
// console.log('rtnData : ', rtnData);
if (data.yearData?.TP_FCT_YN !== 'Y') {
if (tpFctYn !== 'Y') {
operationalStatusList = rtnData.slice(0, 11);
} else {
operationalStatusList = rtnData;
@@ -1840,7 +1773,7 @@ export const dashBoardReducer = (
OperationStatus: {
...state.OperationStatus,
operationalStatusList: operationalStatusList,
operationalStatusCount: res.count,
operationalStatusCount: 0,
isLoadingOperationStatus: false,
},
}))