fo 수정중2
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
import { getFetch } from "@/app/components/api";
|
||||
import { getFetch, postFetch } from "@/app/components/api";
|
||||
import CalcRainEffect from "@/app/components/common/CalcRainEffect";
|
||||
import { roundNumber } from "@/app/components/common/DataForm";
|
||||
import type { TableUpperProps } from "../dashboard";
|
||||
@@ -130,48 +130,88 @@ const upHeadListPrecipitationDetail:TableUpperProps[] = [
|
||||
const gridListPrecipitationDetail:PrecipitationPropsDetailProps[] = [
|
||||
]
|
||||
|
||||
export interface FacilityRainDetailProps {
|
||||
bscFctCd: string, // 시설코드
|
||||
msrDt: string, // 측정일
|
||||
stnKo: string, // 관측소명
|
||||
infoRnDay: number | string | '', // 강수량 (mm/일)
|
||||
rainDay: number, // 강우일 (일)
|
||||
rainEffectDay: number, // 강우영향일 (일)
|
||||
}
|
||||
|
||||
/**====================================
|
||||
* Store - api
|
||||
====================================*/
|
||||
// 시설정보 목록 []
|
||||
export const fetchFacilityRainDetailList = async (searchYear: string|undefined, fcltCdList: string[]): Promise<FacilityRainDetailProps | null> => {
|
||||
try {
|
||||
const res = await postFetch('fo', '/fclt/rain/detail/'+searchYear, fcltCdList);
|
||||
return res;
|
||||
} catch (error) {
|
||||
console.error('시설정보 목록 데이터를 가져오는데 실패했습니다:', error);
|
||||
return null;
|
||||
}
|
||||
};
|
||||
|
||||
const fetchFacilityPrecipitationList = async (pageNo: number, pageSize: number, searchYear: string, part?: string, nameCd?: string, fcltCpct?: string, operationValue?: string, fcltyNm?: string) => {
|
||||
const tailStr = '/'+pageNo + '/' + pageSize + '/' + searchYear + (part?'/' + part:'' ) + (nameCd?'/' + nameCd:'' ) + (fcltCpct?'/' + fcltCpct:'' ) + (operationValue?'/' + operationValue:'' ) + (fcltyNm && fcltyNm !== '' ? '/' + fcltyNm : '') ;
|
||||
// const url = '/fclt/rain' + tailStr;
|
||||
const url = '/rdii/list' + tailStr;
|
||||
const res = await getFetch('fo', url);
|
||||
// const tmpData:PrecipitationPropsDetailProps[] = [];
|
||||
// if(res!= null && res.data.length > 0){
|
||||
// for(let idx=0; idx<res.data.length; idx++){
|
||||
// for(let idx2=0; idx2<res.data[idx].rainyDayObjList.length; idx2++){
|
||||
// const bscFctCd = res.data[idx].rainyDayObjList[idx2].bscFctCd;
|
||||
// const rainDt = res.data[idx].rainyDayObjList[idx2].rainDt;
|
||||
// const infoRnDay = res.data[idx].rainyDayObjList[idx2].infoRnDay;
|
||||
// const rainDay = res.data[idx].rainyDayObjList[idx2].infoRnDay>=3?1:0;
|
||||
|
||||
// tmpData.push({
|
||||
// bscFctCd : bscFctCd,
|
||||
// rainDt : rainDt,
|
||||
// infoRnDay : infoRnDay,
|
||||
// rainDay : rainDay,
|
||||
// rainEffectDay : rainDay
|
||||
// })
|
||||
// }
|
||||
// }
|
||||
|
||||
// res.data.map((item: FacilityPrecipitationProps) => {
|
||||
// const filteredList = tmpData.filter((gridItem) => {
|
||||
// return gridItem.bscFctCd === item.bscFctCd;
|
||||
// });
|
||||
|
||||
// const rtnData = CalcRainEffect(filteredList);
|
||||
// item.rainEffectDay = rtnData.reduce((acc, curr) => acc + curr.rainEffectDay, 0); // 강우영향일
|
||||
// item.totalYearRain = rtnData.reduce((acc, curr) => acc + Number(curr.infoRnDay), 0); // 연간 총 강수량
|
||||
// item.infoRnDay = filteredList.reduce((acc, curr) => acc + curr.rainDay, 0); // 강우일
|
||||
// });
|
||||
|
||||
// }
|
||||
|
||||
|
||||
const fcltCdList : string[]= [];
|
||||
res?.data.forEach(item => {
|
||||
fcltCdList.push(item.bscFctCd);
|
||||
});
|
||||
|
||||
const rainDetailListRes : any = await fetchFacilityRainDetailList(searchYear, fcltCdList);
|
||||
const tmpData:PrecipitationPropsDetailProps[] = [];
|
||||
|
||||
for (const item of res?.data) {
|
||||
const rainDetailList = rainDetailListRes?.data[item.bscFctCd];
|
||||
|
||||
let rainDayCnt = 0; // 강우일수
|
||||
let rainEffectDayCnt = 0; // 강우영향일수
|
||||
let totalRain = 0; // 총강수량
|
||||
if (rainDetailList) {
|
||||
item.stnKo = rainDetailList[0]?.stnKo || ''; // 관측소명
|
||||
|
||||
let rainEffectDayEval = 0; // 강우영향일 평가 변수
|
||||
rainDetailList.forEach(item2 => {
|
||||
|
||||
if (item2.infoRnDay == null) item2.infoRnDay = 0;
|
||||
if (item2.infoRnDay >= 3) { // 강우량이 3mm 이상인 경우 강우일
|
||||
rainEffectDayEval = 2;
|
||||
item2.rainDay = 1;
|
||||
rainDayCnt++; // 강우일수 증가
|
||||
} else {
|
||||
rainEffectDayEval--;
|
||||
item2.rainDay = 0;
|
||||
}
|
||||
|
||||
if (rainEffectDayEval < 0) { // 청천일
|
||||
item2.rainEffectDay = 0;
|
||||
} else { // 강우영향일
|
||||
item2.rainEffectDay = 1;
|
||||
rainEffectDayCnt++; // 강우영향일수 증가
|
||||
}
|
||||
totalRain += Number(item2.infoRnDay);
|
||||
item2.rainDt = item2.msrDt;
|
||||
tmpData.push({
|
||||
bscFctCd: item.bscFctCd,
|
||||
rainDt: item2.msrDt,
|
||||
infoRnDay: item2.infoRnDay,
|
||||
rainEffectDay: item2.rainEffectDay,
|
||||
rainDay: item2.rainDay
|
||||
});
|
||||
});
|
||||
item.infoRnDay = rainDayCnt;
|
||||
item.rainEffectDay = rainEffectDayCnt;
|
||||
item.totalYearRain = totalRain;
|
||||
item.rainDetailList = rainDetailList;
|
||||
}
|
||||
}
|
||||
|
||||
return { data: res.data, count: res.count, detailData: tmpData};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user