강수현황 exceldown 수정

This commit is contained in:
ljpark
2025-11-12 15:10:51 +09:00
parent 81b027cfe1
commit 8259b3829a
3 changed files with 46 additions and 14 deletions
@@ -1,5 +1,5 @@
import { getFetch, postFetch } from "@/app/components/api";
import CalcRainEffect from "@/app/components/common/CalcRainEffect";
//import CalcRainEffect from "@/app/components/common/CalcRainEffect";
import { roundNumber } from "@/app/components/common/DataForm";
import type { TableUpperProps } from "../dashboard";
export type { TableUpperProps };
@@ -132,7 +132,7 @@ const gridListPrecipitationDetail:PrecipitationPropsDetailProps[] = [
export interface FacilityRainDetailProps {
bscFctCd: string, // 시설코드
msrDt: string, // 측정일
rainDt: string, // 측정일
stnKo: string, // 관측소명
infoRnDay: number | string | '', // 강수량 (mm/일)
rainDay: number, // 강우일 (일)
@@ -155,8 +155,7 @@ export const fetchFacilityRainDetailList = async (searchYear: string|undefined,
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 url = '/fclt/rain' + tailStr;
const res = await getFetch('fo', url);
@@ -165,11 +164,31 @@ const fetchFacilityPrecipitationList = async (pageNo: number, pageSize: number,
fcltCdList.push(item.bscFctCd);
});
const rainDetailListRes : any = await fetchFacilityRainDetailList(searchYear, fcltCdList);
const rainDetailListRes: Record<string, any[]> = {};
const promises: Promise<any>[] = [];
for (let idx = 0; idx < fcltCdList.length; idx += 100) {
const slicedItems = fcltCdList.slice(idx, idx + 100);
// 각 fetch 호출을 Promise 배열에 담기
promises.push(fetchFacilityRainDetailList(searchYear, slicedItems));
}
// 모든 요청을 병렬로 실행
const results = await Promise.all(promises);
//console.log(results);
// 결과를 합치기
for (const res of results) {
if (res.status === 200 && res.data) {
for (const [key, value] of Object.entries(res.data)) {
const keyStr = String(key);
rainDetailListRes[keyStr] = [...(rainDetailListRes[keyStr] || []), ...(value as any[])];
}
}
}
//console.log(rainDetailListRes);
const tmpData:PrecipitationPropsDetailProps[] = [];
for (const item of res?.data) {
const rainDetailList = rainDetailListRes?.data[item.bscFctCd];
const rainDetailList = rainDetailListRes[item.bscFctCd];
let rainDayCnt = 0; // 강우일수
let rainEffectDayCnt = 0; // 강우영향일수
@@ -197,10 +216,10 @@ const fetchFacilityPrecipitationList = async (pageNo: number, pageSize: number,
rainEffectDayCnt++; // 강우영향일수 증가
}
totalRain += Number(item2.infoRnDay);
item2.rainDt = item2.msrDt;
item2.rainDt = item2.rainDt;
tmpData.push({
bscFctCd: item.bscFctCd,
rainDt: item2.msrDt,
rainDt: item2.rainDt.substring(0,10),
infoRnDay: item2.infoRnDay,
rainEffectDay: item2.rainEffectDay,
rainDay: item2.rainDay
@@ -211,7 +230,7 @@ const fetchFacilityPrecipitationList = async (pageNo: number, pageSize: number,
item.totalYearRain = totalRain;
item.rainDetailList = rainDetailList;
}
}
}
return { data: res.data, count: res.count, detailData: tmpData};
}
+9 -5
View File
@@ -184,8 +184,10 @@ const fetchRdiList = async (pageNo: number, pageSize: number, searchYear: string
item.rdiiValue = '';
item.infoRnDay = '';
item.properYn = '';
item.sido = item.lclgvrnmntNm.split(' ')[0]?.toString() || '';
item.sigungo = item.lclgvrnmntNm.split(' ')[1]?.toString() || '';
// item.sido = item.lclgvrnmntNm.split(' ')[0]?.toString() || '';
// item.sigungo = item.lclgvrnmntNm.split(' ')[1]?.toString() || '';
item.sido = item.sido;
item.sigungo = item.gugun;
});
return { data: res.data, count: res.count }
}catch(error){
@@ -307,8 +309,10 @@ export const rdiReducer:(set:SetStateFunction)=>RdiActions=(set: SetStateFunctio
const rtnData = res.data.map((item: RdiProps) => {
return {
...item,
sido: item.lclgvrnmntNm.split(' ')[0]?.toString() || '',
sigungo: item.lclgvrnmntNm.split(' ')[1]?.toString() || '',
//sido: item.lclgvrnmntNm.split(' ')[0]?.toString() || '',
//sigungo: item.lclgvrnmntNm.split(' ')[1]?.toString() || '',
sido: item.sido,
sigungo : item.gugun,
inflAmnt: item.inflAmnt?Number(item.inflAmnt).toFixed(1): '' // 유입유량 (강우량)
}
})
@@ -427,7 +431,7 @@ export const rdiReducer:(set:SetStateFunction)=>RdiActions=(set: SetStateFunctio
환경청: item.rgnNm,
시설명: item.bscFctNm,
시도: item.sido,
시군구: item.sigungo,
시군구: item.gugun,
주소: item.daddr,
"시설용량(m³/일)": item.fctCpc,
"청천시유입하수량(m³/일)": item.chungchunFlow,
@@ -68,6 +68,15 @@ export default function DrgtSttn() {
sggNm: code.sggCd.find(sgg => sgg.text == item.sggNm)?.text
}
})
.sort((a, b) => {
// ctpvCd 기준 1차 정렬
const ctpvCompare = (a.ctpvCd || '').localeCompare(b.ctpvCd || '');
if (ctpvCompare !== 0) return ctpvCompare;
// sggNm 기준 2차 정렬
return (a.sggNm || '').localeCompare(b.sggNm || '');
});
const data = Array.isArray(resData)
? resData.map((item: customDrgt) => {
return {