diff --git a/apps/fo/app/pages/(with-layout)/facilityPrecipitation/page.tsx b/apps/fo/app/pages/(with-layout)/facilityPrecipitation/page.tsx index c36386507..0d66de569 100644 --- a/apps/fo/app/pages/(with-layout)/facilityPrecipitation/page.tsx +++ b/apps/fo/app/pages/(with-layout)/facilityPrecipitation/page.tsx @@ -129,7 +129,7 @@ export default function FacilityPrecipitation() { initializeCommonData(); searchFacilityPrecipitationList(1, 10, selectSearchYear[0]?.val || "0"); } - }, [isInit, initializeCommonData, searchFacilityPrecipitationList]); + }, [isInit, initializeCommonData, searchFacilityPrecipitationList, selectSearchYear]); useEffect(() => { if (excelList && excelList.length > 0) { diff --git a/apps/fo/app/pages/(with-layout)/flowRate/modal/page.tsx b/apps/fo/app/pages/(with-layout)/flowRate/modal/page.tsx index 0685f93d6..87b398350 100644 --- a/apps/fo/app/pages/(with-layout)/flowRate/modal/page.tsx +++ b/apps/fo/app/pages/(with-layout)/flowRate/modal/page.tsx @@ -74,8 +74,7 @@ export default function FlowRateModal(props: { fcltyName: string; facilityCd: st let avgreturnAmnt = 0; let avgefflAmnt = 0; let avginfoRnDay = 0; - - console.log('filteredData', filteredData); + filteredData.forEach((item: FlowRateModalInterface) => { const totInflAmnt = parseNumber(item.totInflAmnt); const inflAmnt = parseNumber(item.inflAmnt); diff --git a/apps/fo/app/store/dashboard/index.tsx b/apps/fo/app/store/dashboard/index.tsx index 94d848ae9..38cd9db4e 100644 --- a/apps/fo/app/store/dashboard/index.tsx +++ b/apps/fo/app/store/dashboard/index.tsx @@ -7,6 +7,7 @@ import DataForm from "@/app/components/common/DataForm"; import { fetchPlanInfo, roundUp } from "../common"; import type { FacilityWaterQltyProps } from "../facilityWaterQlty"; import { calRainEffectDay, type ApiResponse, type FlowDataItem } from "../underWaterInput"; +import CalcRainEffect from "@/app/components/common/CalcRainEffect"; // selectBox export type SelectDataType = { @@ -999,55 +1000,6 @@ const searchWaterUsage = async (searchYear: string, fcltyCd: string) => { return waterUsage; } -// 강우영향일 계산 및 강우량 덮어씌우기 -export const calRainEffectDayRainManage = (data: RainManageListProps[]) => { - - // 강우영향일 계산 (강우량이 3 초과이면 무조건 강우영향일) - for(let idx = 0; idx < data.length; idx++) { - const item = data[idx]; - if(item){ - if(item.infoRnDay && Number(item.infoRnDay) >= 3) { - item.rainEffectDay = 1; - } else { - item.rainEffectDay = 0; - } - } - } - - // 이틀 전, 하루 전이 강우영향일(3 이상)인 경우 해당 날도 강우영향일로 설정 - for(let idx = 0; idx < data.length; idx++) { - if(data[idx]) { - // 하루 전이 강우영향일(3 이상)인 경우 - if(idx > 0 && data[idx-1]?.infoRnDay && Number(data[idx-1]?.infoRnDay) >= 3) { - data[idx]!.rainEffectDay = 1; - } - // 이틀 전이 강우영향일(3 이상)인 경우 - if(idx > 1 && data[idx-2]?.infoRnDay && Number(data[idx-2]?.infoRnDay) >= 3) { - data[idx]!.rainEffectDay = 1; - } - } - } - - for(let idx = 0; idx < data.length; idx++) { - if(data[idx] && data[idx]?.rainEffectDay === 1) { - if(idx > 1){ - if(data[idx-1]?.infoRnDay && Number(data[idx]?.infoRnDay) < 3 && Number(data[idx-1]?.infoRnDay) >= 3) { - data[idx]!.infoRnDay = data[idx-1]!.infoRnDay; - } - } - if(idx > 2){ - if(data[idx-2]?.infoRnDay && Number(data[idx]?.infoRnDay) < 3 && Number(data[idx-2]?.infoRnDay) >= 3) { - data[idx]!.infoRnDay = data[idx-2]!.infoRnDay; - } - } - } - } - - let rtnData : RainManageListProps[] = []; - rtnData = data.filter((item: RainManageListProps) => item.rainEffectDay === 1); - return rtnData; -} - export const dashBoardReducer:(set:(fn: (state: DashBoardType) => DashBoardType) => void)=>DashBoardActions=(set: (fn: (state: DashBoardType) => DashBoardType) => void) => { return { initializeDashBoardData: async () => { @@ -1554,7 +1506,7 @@ export const dashBoardReducer:(set:(fn: (state: DashBoardType) => DashBoardType) // 청천시 중 강우영향일인 날짜는 이전의 강우량을 대입해 리스트 수정 - const rainEffectList = calRainEffectDayRainManage(res.data.wqltObjs); + const rainEffectList = CalcRainEffect(res.data.wqltObjs); // Process the data and create rain management list const totItemCnt = rainEffectList?rainEffectList.length : 1; diff --git a/apps/fo/app/store/facilityWaterQlty/index.tsx b/apps/fo/app/store/facilityWaterQlty/index.tsx index 5b7bcf816..0eedb00a3 100644 --- a/apps/fo/app/store/facilityWaterQlty/index.tsx +++ b/apps/fo/app/store/facilityWaterQlty/index.tsx @@ -1,6 +1,7 @@ import { getFetch } from "@/app/components/api"; import DataForm from "@/app/components/common/DataForm"; import type { TableUpperProps } from "../dashboard"; +import CalcRainEffect from "@/app/components/common/CalcRainEffect"; export type { TableUpperProps }; /**==================================== @@ -208,7 +209,7 @@ const upHeadListModalYear: TableUpperProps[] = [ { id: "efflWqltSs", title: "SS\n(mg/L)", upName: "upChangeRe2", upSequnce: 3, align: "right" }, { id: "efflWqltTn", title: "T-N\n(mg/L)", upName: "upChangeRe2", upSequnce: 2, align: "right" }, { id: "efflWqltTp", title: "T-P\n(mg/L)", upName: "upChangeRe2", upSequnce: 3, align: "right" }, - /* { id: "infoRnDay", title: "강우량(mm/일)", align: "right" }, */ + { id: "infoRnDay", title: "강우량\n(mm/일)", align: "right" } ]; // 처리시설 수질현황 헤더(모달-수질TMS) @@ -573,49 +574,8 @@ export const facilityWaterQltyReducer = (set: (fn: (state: FacilityWaterQltyType } // facilityPrecipitation의 rainEffectDay 계산 로직을 적용 - - const data = res.data.wqltObjs; - // 강우영향일 계산 (강우량이 3 초과이면 무조건 강우영향일) - for(let idx = 0; idx < data.length; idx++) { - const item = data[idx]; - if(item){ - if(item.infoRnDay && Number(item.infoRnDay) > 3) { - item.rainEffectDay = 1; - } else { - item.rainEffectDay = 0; - } - } - } + const data = CalcRainEffect(res.data.wqltObjs); - // 이틀 전, 하루 전이 강우영향일(3 이상)인 경우 해당 날도 강우영향일로 설정 - for(let idx = 0; idx < data.length; idx++) { - if(data[idx]) { - // 하루 전이 강우영향일(3 이상)인 경우 - if(idx > 0 && data[idx-1]?.infoRnDay && Number(data[idx-1]?.infoRnDay) >= 3) { - data[idx]!.rainEffectDay = 1; - } - // 이틀 전이 강우영향일(3 이상)인 경우 - if(idx > 1 && data[idx-2]?.infoRnDay && Number(data[idx-2]?.infoRnDay) >= 3) { - data[idx]!.rainEffectDay = 1; - } - } - } - - for(let idx = 0; idx < data.length; idx++) { - if(data[idx] && data[idx]?.rainEffectDay === 1) { - if(idx > 1){ - if(data[idx-1]?.infoRnDay && Number(data[idx]?.infoRnDay) < 3 && Number(data[idx-1]?.infoRnDay) >= 3) { - data[idx]!.infoRnDay = data[idx-1]!.infoRnDay; - } - } - if(idx > 2){ - if(data[idx-2]?.infoRnDay && Number(data[idx]?.infoRnDay) < 3 && Number(data[idx-2]?.infoRnDay) >= 3) { - data[idx]!.infoRnDay = data[idx-2]!.infoRnDay; - } - } - } - } - const rtnData = data.map((item: FacilityWaterQltyProps) => { dataFormSetting(item) if(item.inflAssctBfrWqltTn) { diff --git a/apps/fo/app/store/flowRate/index.tsx b/apps/fo/app/store/flowRate/index.tsx index ec64465d0..011c08163 100644 --- a/apps/fo/app/store/flowRate/index.tsx +++ b/apps/fo/app/store/flowRate/index.tsx @@ -1,6 +1,7 @@ import { getFetch } from "@/app/components/api"; import type { TableUpperProps } from "../dashboard"; import DataForm from "@/app/components/common/DataForm"; +import CalcRainEffect from "@/app/components/common/CalcRainEffect"; /**==================================== * Store - 타입 @@ -318,47 +319,7 @@ export const flowRateSearchReducer:(set:(fn: (state: FlowRateSearchType) => Flow }, searchFlowRateModalList: async (bscFctCd: string, searchYear: string) => { const res = await fetchFlowRateModalList(bscFctCd, searchYear); - const data = res.data; - // 강우영향일 계산 (강우량이 3 초과이면 무조건 강우영향일) - for(let idx = 0; idx < data.length; idx++) { - const item = data[idx]; - if(item){ - if(item.infoRnDay && Number(item.infoRnDay.toString().trim()) >= 3) { - item.rainEffectDay = 1; - } else { - item.rainEffectDay = 0; - } - } - } - - // 이틀 전, 하루 전이 강우영향일(3 이상)인 경우 해당 날도 강우영향일로 설정 - for(let idx = 0; idx < data.length; idx++) { - if(data[idx]) { - // 하루 전이 강우영향일(3 이상)인 경우 - if(idx > 0 && data[idx-1]?.infoRnDay && Number(data[idx-1]?.infoRnDay.toString().trim()) >= 3) { - data[idx]!.rainEffectDay = 1; - } - // 이틀 전이 강우영향일(3 이상)인 경우 - if(idx > 1 && data[idx-2]?.infoRnDay && Number(data[idx-2]?.infoRnDay.toString().trim()) >= 3) { - data[idx]!.rainEffectDay = 1; - } - } - } - - for(let idx = 0; idx < data.length; idx++) { - if(data[idx] && data[idx]?.rainEffectDay === 1) { - if(idx > 1){ - if(data[idx-1]?.infoRnDay && Number(data[idx]?.infoRnDay) < 3 && Number(data[idx-1]?.infoRnDay.toString().trim()) >= 3) { - data[idx]!.infoRnDay = data[idx-1]!.infoRnDay; - } - } - if(idx > 2){ - if(data[idx-2]?.infoRnDay && Number(data[idx]?.infoRnDay) < 3 && Number(data[idx-2]?.infoRnDay.toString().trim()) >= 3) { - data[idx]!.infoRnDay = data[idx-2]!.infoRnDay; - } - } - } - } + const data = CalcRainEffect(res.data); const rtnData = data.map((item: FlowRateModalProps) => { item.totInflAmnt = Number(item.inflAmnt || 0) + Number(item.sumFlow || 0) + Number(item.returnAmnt || 0) diff --git a/apps/fo/app/store/sewageOccur/index.tsx b/apps/fo/app/store/sewageOccur/index.tsx index 4a6d055f0..5645c89bc 100644 --- a/apps/fo/app/store/sewageOccur/index.tsx +++ b/apps/fo/app/store/sewageOccur/index.tsx @@ -1,6 +1,7 @@ import DataForm from "@/app/components/common/DataForm"; import type { TableUpperProps } from "../dashboard"; import { getFetch } from "@/app/components/api"; +import CalcRainEffect from "@/app/components/common/CalcRainEffect"; export type { TableUpperProps }; /**==================================== * Store - 타입 @@ -236,47 +237,9 @@ export const sewageOccurReducer:(set:any)=>SewageOccurActions=(set: any) => { let totWaterUsage = 0; // 강우영향일 계산 (강우량이 3 초과이면 무조건 강우영향일) - for(let idx = 0; idx < res2.data.length; idx++) { - const item = res2.data[idx]; - if(item){ - if(item.infoRnDay && Number(item.infoRnDay.toString().trim()) >= 3) { - item.rainEffectDay = 1; - } else { - item.rainEffectDay = 0; - } - } - } - - // 이틀 전, 하루 전이 강우영향일(3 이상)인 경우 해당 날도 강우영향일로 설정 - for(let idx = 0; idx < res2.data.length; idx++) { - if(res2.data[idx]) { - // 하루 전이 강우영향일(3 이상)인 경우 - if(idx > 0 && res2.data[idx-1]?.infoRnDay && Number(res2.data[idx-1]?.infoRnDay.toString().trim()) >= 3) { - res2.data[idx]!.rainEffectDay = 1; - } - // 이틀 전이 강우영향일(3 이상)인 경우 - if(idx > 1 && res2.data[idx-2]?.infoRnDay && Number(res2.data[idx-2]?.infoRnDay.toString().trim()) >= 3) { - res2.data[idx]!.rainEffectDay = 1; - } - } - } - - for(let idx = 0; idx < res2.data.length; idx++) { - if(res2.data[idx] && res2.data[idx]?.rainEffectDay === 1) { - if(idx > 1){ - if(res2.data[idx-1]?.infoRnDay && Number(res2.data[idx]?.infoRnDay) < 3 && Number(res2.data[idx-1]?.infoRnDay.toString().trim()) >= 3) { - res2.data[idx]!.infoRnDay = res2.data[idx-1]!.infoRnDay; - } - } - if(idx > 2){ - if(res2.data[idx-2]?.infoRnDay && Number(res2.data[idx]?.infoRnDay) < 3 && Number(res2.data[idx-2]?.infoRnDay.toString().trim()) >= 3) { - res2.data[idx]!.infoRnDay = res2.data[idx-2]!.infoRnDay; - } - } - } - } + const rainEffectData = CalcRainEffect(res2.data); - res2.data.forEach((item: FlowDataItem) => { + rainEffectData.forEach((item: FlowDataItem) => { if(Number(item.rainEffectDay) === 0){ chungcunSumFlow += Number(item.inflAmnt);