('표준활성슬러지법, MLE, A2O');
@@ -48,8 +48,6 @@ export default function DashBoardFclty({ onFacilityChange, sidoSigun, facilityNm
}
}
- console.log('bscFctNm : ', bscFctNm);
-
return (
diff --git a/apps/fo/app/pages/facilityPrecipitation/page.tsx b/apps/fo/app/pages/facilityPrecipitation/page.tsx
index c9403fd14..96456a71b 100644
--- a/apps/fo/app/pages/facilityPrecipitation/page.tsx
+++ b/apps/fo/app/pages/facilityPrecipitation/page.tsx
@@ -81,7 +81,8 @@ export default function FacilityPrecipitation() {
// 시설상태
const [operationValue, setOperationValue] = useState("0");
// 조회기간
- const [searchYear, setSearchYear] = useState(selectSearchYear[0]?.val || "0");
+ //const [searchYear, setSearchYear] = useState(selectSearchYear[0]?.val || "0");
+ const [searchYear, setSearchYear] = useState("2023");
/**
* 페이지 함수
@@ -125,9 +126,9 @@ export default function FacilityPrecipitation() {
useEffect(() => {
if (!isInit) {
initializeCommonData();
- searchFacilityPrecipitationList(1, 10, selectSearchYear[0]?.val || "0");
+ searchFacilityPrecipitationList(1, 10, searchYear || "0");
}
- }, [isInit, initializeCommonData, searchFacilityPrecipitationList, selectSearchYear]);
+ }, [isInit, initializeCommonData, searchFacilityPrecipitationList, searchYear]);
useEffect(() => {
if (excelList && excelList.length > 0) {
diff --git a/apps/fo/app/pages/facilityWaterQlty/modal/page.tsx b/apps/fo/app/pages/facilityWaterQlty/modal/page.tsx
index 19129762e..eadfa9ba8 100644
--- a/apps/fo/app/pages/facilityWaterQlty/modal/page.tsx
+++ b/apps/fo/app/pages/facilityWaterQlty/modal/page.tsx
@@ -63,7 +63,7 @@ export default function WaterQualityModal({fcltyName='', facilityCd='', searchYe
let maxEfflWqltBod = 0;
let maxEfflWqltTn = 0;
let maxEfflWqltTp = 0;
- let maxefflWqltCod = 0;
+ let maxefflWqltToc = 0;
let maxEfflWqltSs = 0;
let maxInflAssctAftWqltBod = 0;
@@ -80,7 +80,7 @@ export default function WaterQualityModal({fcltyName='', facilityCd='', searchYe
let minEfflWqltBod = filteredData.length > 0 ? parseNumber(filteredData[0]?.efflWqltBod) : 0;
let minEfflWqltTn = filteredData.length > 0 ? parseNumber(filteredData[0]?.efflWqltTn) : 0;
let minEfflWqltTp = filteredData.length > 0 ? parseNumber(filteredData[0]?.efflWqltTp) : 0;
- let minefflWqltCod = filteredData.length > 0 ? parseNumber(filteredData[0]?.efflWqltCod) : 0;
+ let minefflWqltToc = filteredData.length > 0 ? parseNumber(filteredData[0]?.efflWqltToc) : 0;
let minEfflWqltSs = filteredData.length > 0 ? parseNumber(filteredData[0]?.efflWqltSs) : 0;
let minInflAssctAftWqltBod = filteredData.length > 0 ? parseNumber(filteredData[0]?.inflAssctAftWqltBod) : 0;
@@ -97,7 +97,7 @@ export default function WaterQualityModal({fcltyName='', facilityCd='', searchYe
let avgEfflWqltBod = 0;
let avgEfflWqltTn = 0;
let avgEfflWqltTp = 0;
- let avgefflWqltCod = 0;
+ let avgefflWqltToc = 0;
let avgEfflWqltSs = 0;
let avgInflAssctAftWqltBod = 0;
@@ -115,7 +115,7 @@ export default function WaterQualityModal({fcltyName='', facilityCd='', searchYe
const efflWqltBod = parseNumber(item.efflWqltBod);
const efflWqltTn = parseNumber(item.efflWqltTn);
const efflWqltTp = parseNumber(item.efflWqltTp);
- const efflWqltCod = parseNumber(item.efflWqltCod);
+ const efflWqltToc = parseNumber(item.efflWqltToc);
const efflWqltSs = parseNumber(item.efflWqltSs);
const inflAssctAftWqltBod = parseNumber(item.inflAssctAftWqltBod);
@@ -133,7 +133,7 @@ export default function WaterQualityModal({fcltyName='', facilityCd='', searchYe
maxEfflWqltBod = Math.max(maxEfflWqltBod, efflWqltBod);
maxEfflWqltTn = Math.max(maxEfflWqltTn, efflWqltTn);
maxEfflWqltTp = Math.max(maxEfflWqltTp, efflWqltTp);
- maxefflWqltCod = Math.max(maxefflWqltCod, efflWqltCod);
+ maxefflWqltToc = Math.max(maxefflWqltToc, efflWqltToc);
maxEfflWqltSs = Math.max(maxEfflWqltSs, efflWqltSs);
maxInflAssctAftWqltBod = Math.max(maxInflAssctAftWqltBod, inflAssctAftWqltBod);
@@ -150,7 +150,7 @@ export default function WaterQualityModal({fcltyName='', facilityCd='', searchYe
minEfflWqltBod = Math.min(minEfflWqltBod, efflWqltBod);
minEfflWqltTn = Math.min(minEfflWqltTn, efflWqltTn);
minEfflWqltTp = Math.min(minEfflWqltTp, efflWqltTp);
- minefflWqltCod = Math.min(minefflWqltCod, efflWqltCod);
+ minefflWqltToc = Math.min(minefflWqltToc, efflWqltToc);
minEfflWqltSs = Math.min(minEfflWqltSs, efflWqltSs);
minInflAssctAftWqltBod = Math.min(minInflAssctAftWqltBod, inflAssctAftWqltBod);
@@ -167,7 +167,7 @@ export default function WaterQualityModal({fcltyName='', facilityCd='', searchYe
avgEfflWqltBod += efflWqltBod;
avgEfflWqltTn += efflWqltTn;
avgEfflWqltTp += efflWqltTp;
- avgefflWqltCod += efflWqltCod;
+ avgefflWqltToc += efflWqltToc;
avgEfflWqltSs += efflWqltSs;
avgInflAssctAftWqltBod += inflAssctAftWqltBod;
@@ -186,7 +186,7 @@ export default function WaterQualityModal({fcltyName='', facilityCd='', searchYe
{
msrDt: '평균',
efflWqltBod: filteredData.length==0?'0.0':(Math.round(avgEfflWqltBod / filteredData.length * 10) / 10).toFixed(1),
- efflWqltCod: filteredData.length==0?'0.0':(Math.round(avgefflWqltCod / filteredData.length * 10) / 10).toFixed(1),
+ efflWqltToc: filteredData.length==0?'0.0':(Math.round(avgefflWqltToc / filteredData.length * 10) / 10).toFixed(1),
efflWqltSs: filteredData.length==0?'0.0':(Math.round(avgEfflWqltSs / filteredData.length * 10) / 10).toFixed(1),
efflWqltTn: filteredData.length==0?'0.000':(Math.round(avgEfflWqltTn / filteredData.length * 1000) / 1000).toFixed(3),
efflWqltTp: filteredData.length==0?'0.000':(Math.round(avgEfflWqltTp / filteredData.length * 1000) / 1000).toFixed(3),
@@ -209,7 +209,7 @@ export default function WaterQualityModal({fcltyName='', facilityCd='', searchYe
{
msrDt : '최대',
efflWqltBod : Math.round(maxEfflWqltBod * 10) / 10?(Math.round(maxEfflWqltBod * 10) / 10).toFixed(1):'0.0',
- efflWqltCod : Math.round(maxefflWqltCod * 10) / 10?(Math.round(maxefflWqltCod * 10) / 10).toFixed(1):'0.0',
+ efflWqltToc : Math.round(maxefflWqltToc * 10) / 10?(Math.round(maxefflWqltToc * 10) / 10).toFixed(1):'0.0',
efflWqltSs : Math.round(maxEfflWqltSs * 10) / 10?(Math.round(maxEfflWqltSs * 10) / 10).toFixed(1):'0.0',
efflWqltTn : Math.round(maxEfflWqltTn * 1000) / 1000?(Math.round(maxEfflWqltTn * 1000) / 1000).toFixed(3):'0.000',
efflWqltTp : Math.round(maxEfflWqltTp * 1000) / 1000?(Math.round(maxEfflWqltTp * 1000) / 1000).toFixed(3):'0.000',
@@ -232,7 +232,7 @@ export default function WaterQualityModal({fcltyName='', facilityCd='', searchYe
{
msrDt : '최소',
efflWqltBod : Math.round(minEfflWqltBod * 10) / 10?(Math.round(minEfflWqltBod?minEfflWqltBod:0 * 10) / 10).toFixed(1) : '0.0',
- efflWqltCod : Math.round(minefflWqltCod * 10) / 10?(Math.round(minefflWqltCod?minefflWqltCod:0 * 10) / 10).toFixed(1) : '0.0',
+ efflWqltToc : Math.round(minefflWqltToc * 10) / 10?(Math.round(minefflWqltToc?minefflWqltToc:0 * 10) / 10).toFixed(1) : '0.0',
efflWqltSs : Math.round(minEfflWqltSs * 10) / 10?(Math.round(minEfflWqltSs * 10) / 10).toFixed(1) : '0.0',
efflWqltTn : Math.round(minEfflWqltTn * 1000) / 1000?(Math.round(minEfflWqltTn * 1000) / 1000).toFixed(3) : '0.000',
efflWqltTp : Math.round(minEfflWqltTp * 1000) / 1000?(Math.round(minEfflWqltTp * 1000) / 1000).toFixed(3) : '0.000',
@@ -299,16 +299,16 @@ export default function WaterQualityModal({fcltyName='', facilityCd='', searchYe
"유입TN(mg/L)": item.inflAssctAftWqltTn,
"유입TP(mg/L)": item.inflAssctBfrWqltTp,
"유출BOD(mg/L)": item.efflWqltBod,
- "유출TOC(COD)(mg/L)": item.efflWqltCod,
+ "유출TOC(COD)(mg/L)": item.efflWqltToc,
"유출SS(mg/L)": item.efflWqltSs,
"유출TN(mg/L)": item.efflWqltTn,
"유출TP(mg/L)": item.efflWqltTp,
- "강우량(일)": item.infoRnDay?item.infoRnDay.toString():"0.0",
+/* "강우량(mm/일)": item.infoRnDay?item.infoRnDay.toString():"0.0", */
});
});
}
if (excelDownList && excelDownList.length > 0) {
- downloadExcel({ data: JSON.parse(JSON.stringify(excelDownList)), fileName: searchYear+'년 '+fcltyName + ' 수질현황', sheetNameArray: [fcltyName + ' 수질현황'], headerRange: 'A1:L1' });
+ downloadExcel({ data: JSON.parse(JSON.stringify(excelDownList)), fileName: searchYear+'년 '+fcltyName + ' 수질현황', sheetNameArray: [fcltyName + ' 수질현황'], headerRange: 'A1:K1' });
} else if (prevExcelListRef.current && prevExcelListRef.current.length > 0) {
alert('다운받을 데이터가 없습니다.');
}
@@ -351,7 +351,7 @@ export default function WaterQualityModal({fcltyName='', facilityCd='', searchYe
수질 TMS
- ({msrmtDate?msrmtDate.substring(0,4)+'-'+msrmtDate.substring(4,6)+'-'+msrmtDate.substring(6,8):yesterDayStr})
+ {/*({msrmtDate?msrmtDate.substring(0,4)+'-'+msrmtDate.substring(4,6)+'-'+msrmtDate.substring(6,8):yesterDayStr})
*/}
+
+ ☞ 청천시 : 강우량이 3mm미만의 날
+
@@ -476,6 +479,9 @@ export default function WaterQualityModal({fcltyName='', facilityCd='', searchYe
+
+ ☞ 강우량 3mm 이상만 날과 강우영향일(강우일+2일)의 날
+
diff --git a/apps/fo/app/pages/facilityWaterQlty/page.tsx b/apps/fo/app/pages/facilityWaterQlty/page.tsx
index 2c728f679..7d571a69f 100644
--- a/apps/fo/app/pages/facilityWaterQlty/page.tsx
+++ b/apps/fo/app/pages/facilityWaterQlty/page.tsx
@@ -48,7 +48,8 @@ export default function ProcessFacilitySearch() {
const [upheadList, setUpheadList] = useState(upHeadList1);
const [fcltyName, setFcltyName] = useState("");
const [operationValue, setOperationValue] = useState("0");
- const [searchYearValue, setSearchYearValue] = useState(selectSearchYear[0]?.val || "0");
+ //const [searchYearValue, setSearchYearValue] = useState(selectSearchYear[0]?.val || "0");
+ const [searchYearValue, setSearchYearValue] = useState("2023");
const [fcltCpct, setFcltCpct] = useState("0");
// 모달 상태 추가
@@ -196,7 +197,7 @@ export default function ProcessFacilitySearch() {
{selectedRow !== null && (
}
- bodyClass="sm:max-w-[90vw] w-[1200px] h-[920px]"
+ bodyClass="sm:max-w-[90vw] w-[1300px] h-[920px]"
open={selectedRow !== null}
onOpenChange={(open) => !open && closeModal()}
noHeaderYn="Y"
diff --git a/apps/fo/app/pages/flowRate/modal/page.tsx b/apps/fo/app/pages/flowRate/modal/page.tsx
index c3815911a..409dab7eb 100644
--- a/apps/fo/app/pages/flowRate/modal/page.tsx
+++ b/apps/fo/app/pages/flowRate/modal/page.tsx
@@ -52,6 +52,7 @@ export default function FlowRateModal(props: { fcltyName: string; facilityCd: st
return Number(value.replace(/,/g, ''));
};
+ console.log('filteredData : ', filteredData);
let maxtotInflAmnt = 0;
let maxinflAmnt = 0;
let maxsumFlow = 0;
@@ -65,7 +66,7 @@ export default function FlowRateModal(props: { fcltyName: string; facilityCd: st
let minsumFlow = parseNumber(filteredData[0]?.sumFlow);
let minreturnAmnt = parseNumber(filteredData[0]?.returnAmnt);
let minefflAmnt = parseNumber(filteredData[0]?.efflAmnt);
- let mininfoRnDay = parseNumber(filteredData[0]?.infoRnDay);
+ let mininfoRnDay = parseNumber(filteredData[0]?.infoRnDay && filteredData[0]?.infoRnDay.toString().trim() !== 'x' ? filteredData[0]?.infoRnDay.toString().trim() : 0);
let avgtotInflAmnt = 0;
let avginflAmnt = 0;
@@ -80,7 +81,7 @@ export default function FlowRateModal(props: { fcltyName: string; facilityCd: st
const sumFlow = parseNumber(item.sumFlow);
const returnAmnt = parseNumber(item.returnAmnt);
const efflAmnt = parseNumber(item.efflAmnt);
- const infoRnDay = parseNumber(item.infoRnDay);
+ const infoRnDay = parseNumber(item.infoRnDay && item.infoRnDay.toString().trim() !== 'x' ? item.infoRnDay.toString().trim() : 0);
maxtotInflAmnt = Math.max(maxtotInflAmnt, totInflAmnt);
maxinflAmnt = Math.max(maxinflAmnt, inflAmnt);
maxsumFlow = Math.max(maxsumFlow, sumFlow);
@@ -166,7 +167,7 @@ export default function FlowRateModal(props: { fcltyName: string; facilityCd: st
"연계처리량(m³/일)": item.sumFlow,
"총인반류수량(m³/일)": item.returnAmnt,
"방류량(m³/일)": item.efflAmnt,
- "강우량": item.infoRnDay,
+ /* "강우량(mm/일)": item.infoRnDay, */
});
});
}
@@ -194,20 +195,18 @@ export default function FlowRateModal(props: { fcltyName: string; facilityCd: st
ref={ref}
queryClick={filterData}
/>
-
-
- {}}
- className="h-[370px]"
- boldArray={[0,1,2]}
- />
-
+
+ {}}
+ className="h-[370px]"
+ boldArray={[0,1,2]}
+ />
@@ -220,20 +219,18 @@ export default function FlowRateModal(props: { fcltyName: string; facilityCd: st
ref={ref}
queryClick={filterData}
/>
-
-
- {}}
- className="h-[370px]"
- boldArray={[0,1,2]}
- />
-
+
+ {}}
+ className="h-[370px]"
+ boldArray={[0,1,2]}
+ />
@@ -246,20 +243,18 @@ export default function FlowRateModal(props: { fcltyName: string; facilityCd: st
ref={ref}
queryClick={filterData}
/>
-
-
- {}}
- className="h-[370px]"
- boldArray={[0,1,2]}
- />
-
+
+ {}}
+ className="h-[370px]"
+ boldArray={[0,1,2]}
+ />
@@ -272,20 +267,21 @@ export default function FlowRateModal(props: { fcltyName: string; facilityCd: st
ref={ref}
queryClick={filterData}
/>
-
-
- {}}
- className="h-[370px]"
- boldArray={[0,1,2]}
- />
-
+
+ {}}
+ className="h-[370px]"
+ boldArray={[0,1,2]}
+ />
+
+
+ ☞ 청천시 : 강우량이 3mm미만의 날
@@ -298,10 +294,11 @@ export default function FlowRateModal(props: { fcltyName: string; facilityCd: st
ref={ref}
queryClick={filterData}
/>
-
-
+
{}} className="h-[370px]" boldArray={[0,1,2]}/>
-
+
+
+ ☞ 강우량 3mm 이상만 날과 강우영향일(강우일+2일)의 날
diff --git a/apps/fo/app/pages/flowRate/page.tsx b/apps/fo/app/pages/flowRate/page.tsx
index 3910944cf..0c4f503e9 100644
--- a/apps/fo/app/pages/flowRate/page.tsx
+++ b/apps/fo/app/pages/flowRate/page.tsx
@@ -49,7 +49,8 @@ export default function ProcessFacilitySearch() {
const [fcltCpct, setFcltCpct] = useState
("0");
const [fcltyName, setFcltyName] = useState("");
const [operationValue, setOperationValue] = useState("0");
- const [searchYearValue, setSearchYearValue] = useState(selectSearchYear[0]?.val || "0");
+ //const [searchYearValue, setSearchYearValue] = useState(selectSearchYear[0]?.val || "0");
+ const [searchYearValue, setSearchYearValue] = useState("2023");
const [widthSize, setWidthSize] = useState("w-[120%]");
const [upheadList, setUpheadList] = useState(upHeadList1);
const [resetPage, setResetPage] = useState(false);
@@ -125,10 +126,11 @@ export default function ProcessFacilitySearch() {
// 시도 데이터 초기화
useEffect(() => {
if(!isInit) {
+ console.log('searchYearValue', searchYearValue, isInit);
initializeCommonData();
- searchFlowRateList(1, 10, selectSearchYear[0]?.val || "0");
+ searchFlowRateList(1, 10, searchYearValue || "0");
}
- }, [isInit, initializeCommonData, searchFlowRateList, selectSearchYear]);
+ }, [isInit, initializeCommonData, searchFlowRateList, searchYearValue]);
useEffect(() => {
if (excelList && excelList.length > 0) {
@@ -197,7 +199,7 @@ export default function ProcessFacilitySearch() {
{selectedRow !== null && (
}
- bodyClass="sm:max-w-[90vw] w-[1050px] h-[700px]"
+ bodyClass="sm:max-w-[90vw] w-[1250px] h-[780px]"
open={selectedRow !== null}
onOpenChange={(open: boolean) => !open && closeModal()}
/>
diff --git a/apps/fo/app/pages/planSewage/page.tsx b/apps/fo/app/pages/planSewage/page.tsx
index 8d7de5d80..c9324c246 100644
--- a/apps/fo/app/pages/planSewage/page.tsx
+++ b/apps/fo/app/pages/planSewage/page.tsx
@@ -70,7 +70,8 @@ export default function PlanSewage() {
// 시설상태
const [operationValue, setOperationValue] = useState("0");
// 조회기간
- const [searchYear, setSearchYear] = useState(selectSearchYear[0]?.val || "0");
+ //const [searchYear, setSearchYear] = useState(selectSearchYear[0]?.val || "0");
+ const [searchYear, setSearchYear] = useState("2023");
/**
* 페이지 함수
@@ -190,6 +191,11 @@ export default function PlanSewage() {
+
+ ☞ 여유용량 = 하수처리시설 시설용량 – 건기시 유입유량(평균)
+ ☞ 변동부하율 = 건기시 일최대 유량/일평균유량(기준 최근 3개년)
+ ☞ 분류식화율 = 분류식지역 면적(㎢) / 처리구역 면적합계(㎢) ×100
+
diff --git a/apps/fo/app/pages/sewageOccur/modal/page.tsx b/apps/fo/app/pages/sewageOccur/modal/page.tsx
index e8a90651e..23c890160 100644
--- a/apps/fo/app/pages/sewageOccur/modal/page.tsx
+++ b/apps/fo/app/pages/sewageOccur/modal/page.tsx
@@ -1,103 +1,34 @@
"use client"
import { useFoStore } from "@/app/store";
-import type { SewageOccurDetailProps } from "@/app/store/sewageOccur";
+import type { modalTableType } from "@/app/store/sewageOccur";
import { DateMonthPicker, UiTable } from "@common/business_components/ui";
import ListDiv from "@common/business_components/ui/list_div";
import { Table, TableCell, TableHead, TableRow } from "@common/components/ui";
import { useEffect, useState } from "react";
+
export default function SewageOccurModal(props: { fcltyName: string; facilityCd : string; searchYear : string}) {
// 그리드 관련
- const {SewageOccurDetail} = useFoStore((state) => state);
+ const {SewageOccurDetail, searchSewageOccurDetailList} = useFoStore((state) => state);
// searchYear 유효성 검사 및 기본값 설정
const validSearchYear = props.searchYear && /^\d{4}$/.test(props.searchYear) ? props.searchYear : new Date().getFullYear().toString();
const [startYearMonth, setStartYearMonth] = useState(validSearchYear+'01');
const [endYearMonth, setEndYearMonth] = useState(validSearchYear+'12');
- const [detailList, setDetailList] = useState([]);
+ const [detailList, setDetailList] = useState([]);
const {
upHeadListSewageOccurDetail,
gridListSewageOccurDetail
} = SewageOccurDetail;
useEffect(() => {
- setDetailList(gridListSewageOccurDetail);
- }, [gridListSewageOccurDetail]);
+ searchSewageOccurDetailList(props.facilityCd, validSearchYear);
+ }, [searchSewageOccurDetailList, props.facilityCd, validSearchYear]);
useEffect(() => {
- const filteredList = gridListSewageOccurDetail.filter(item => item.msrDt.replace(/-/g, '') >= startYearMonth && item.msrDt.replace(/-/g, '') <= endYearMonth);
- let maxWaterUsage = 0;
- let maxSwageChangePercent = 0;
- let maxEstimationSewage = 0;
-
- let minWaterUsage = filteredList[0]?.waterUsage || 0;
- let minSwageChangePercent = filteredList[0]?.swageChangePercent || 0;
- let minEstimationSewage = filteredList[0]?.estimationSewage || 0;
-
- let totalWaterUsage = 0;
- let totalSwageChangePercent = 0;
- let totalEstimationSewage = 0;
-
- let avgWaterUsage = 0;
- let avgSwageChangePercent = 0;
- let avgEstimationSewage = 0;
-
- filteredList.forEach(item => {
- if (item.waterUsage > maxWaterUsage) {
- maxWaterUsage = item.waterUsage;
- }
- if (item.swageChangePercent > maxSwageChangePercent) {
- maxSwageChangePercent = item.swageChangePercent;
- }
- if (item.estimationSewage > maxEstimationSewage) {
- maxEstimationSewage = item.estimationSewage;
- }
-
- if (item.waterUsage < minWaterUsage) {
- minWaterUsage = item.waterUsage;
- }
- if (item.swageChangePercent < minSwageChangePercent) {
- minSwageChangePercent = item.swageChangePercent;
- }
- if (item.estimationSewage < minEstimationSewage) {
- minEstimationSewage = item.estimationSewage;
- }
-
- totalWaterUsage += item.waterUsage;
- totalSwageChangePercent += item.swageChangePercent;
- totalEstimationSewage += item.estimationSewage;
- });
-
- avgWaterUsage = totalWaterUsage?totalWaterUsage / filteredList.length:0;
- avgSwageChangePercent = totalSwageChangePercent?totalSwageChangePercent / filteredList.length:0;
- avgEstimationSewage = totalEstimationSewage?totalEstimationSewage / filteredList.length:0;
-
- const newData = [
- {
- msrDt: '평균',
- waterUsage: Math.round(avgWaterUsage * 100) / 100,
- swageChangePercent: Math.round(avgSwageChangePercent * 100) / 100,
- estimationSewage: Math.round(avgEstimationSewage * 100) / 100
- },
- {
- msrDt: '최대',
- waterUsage: maxWaterUsage,
- swageChangePercent: maxSwageChangePercent,
- estimationSewage: maxEstimationSewage
- },
- {
- msrDt: '최소',
- waterUsage: minWaterUsage,
- swageChangePercent: minSwageChangePercent,
- estimationSewage: minEstimationSewage
- },
- ...filteredList
- ]
- setDetailList(newData);
-
-
- }, [startYearMonth, endYearMonth, gridListSewageOccurDetail]);
+ setDetailList(gridListSewageOccurDetail);
+ }, [gridListSewageOccurDetail]);
return (
<>
diff --git a/apps/fo/app/pages/sewageOccur/page.tsx b/apps/fo/app/pages/sewageOccur/page.tsx
index a137d9ebe..8b004e681 100644
--- a/apps/fo/app/pages/sewageOccur/page.tsx
+++ b/apps/fo/app/pages/sewageOccur/page.tsx
@@ -18,7 +18,8 @@ export default function PlanSewage() {
SewageOccur: { sewageOccurList: [], sewageOccurCount: 0, excelList: [], upHeadList1: [], upHeadList2: [], upHeadList3: [] },
SewageOccurSearch: { labelArray: [] },
initializeCommonData: () => {},
- searchSewageOccurList: () => {}
+ searchSewageOccurList: () => {},
+ calculateModalDataForAllFacilities: async () => []
};
const {
@@ -83,7 +84,8 @@ export default function PlanSewage() {
// 시설상태
const [operationValue, setOperationValue] = useState("0");
// 조회기간
- const [searchYear, setSearchYear] = useState(selectSearchYear[0]?.val || "0");
+ // const [searchYear, setSearchYear] = useState(selectSearchYear[0]?.val || "0");
+ const [searchYear, setSearchYear] = useState("2023");
/**
* 페이지 함수
@@ -126,9 +128,9 @@ export default function PlanSewage() {
useEffect(() => {
if (!isInit) {
initializeCommonData();
- searchSewageOccurList(1, 10, selectSearchYear[0]?.val || "0");
+ searchSewageOccurList(1, 10, searchYear || "0");
}
- }, [isInit, initializeCommonData, searchSewageOccurList, selectSearchYear]);
+ }, [isInit, initializeCommonData, searchSewageOccurList, searchYear]);
useEffect(() => {
if (excelList && excelList.length > 0) {
@@ -224,7 +226,11 @@ export default function PlanSewage() {
{selectedRow !== null && (
}
+ body={}
bodyClass="sm:max-w-[90vw] w-[1000px] h-[770px]"
open={selectedRow !== null}
onOpenChange={(open) => !open && closeModal()}
diff --git a/apps/fo/app/pages/underWaterInput/modal/page.tsx b/apps/fo/app/pages/underWaterInput/modal/page.tsx
index 9e49fb1bc..145612431 100644
--- a/apps/fo/app/pages/underWaterInput/modal/page.tsx
+++ b/apps/fo/app/pages/underWaterInput/modal/page.tsx
@@ -1,6 +1,6 @@
"use client"
import { useFoStore } from "@/app/store";
-import type { UnderWaterInputModalProps } from "@/app/store/underWaterInput";
+import type { UnderWaterInputModalProps } from "@/app/store/underWaterInput/types";
import { DateMonthPicker, UITab, UiTable } from "@common/business_components/ui";
import ListDiv from "@common/business_components/ui/list_div";
import { Table, TableCell, TableHead, TableRow, TabsContent } from "@common/components/ui";
@@ -19,7 +19,7 @@ const tabList1 = [
export default function UnderWaterInputModal({fcltyName='', searchYear=new Date().getFullYear().toString()} : ModalProps) {
// 그리드 관련
- const {UnderWaterDetail} = useFoStore((state) => state);
+ const {UnderWaterDetail, unserWaterModal} = useFoStore((state) => state);
const [startYmDate, setStartYmDate] = useState(searchYear+'01');
const [endYmDate, setEndYmDate] = useState(searchYear+'12');
@@ -115,7 +115,10 @@ export default function UnderWaterInputModal({fcltyName='', searchYear=new Date(
setPrevEndYmDate(searchYear+'12');
}
}, [searchYear, tabTerm]);
-
+ useEffect(()=>{
+ console.log(fcltyName, searchYear);
+ unserWaterModal(fcltyName, searchYear);
+ }, [])
useEffect(() => {
if(endYmDate < startYmDate) {
alert('종료일이 시작일보다 작습니다.')
diff --git a/apps/fo/app/pages/underWaterInput/page.tsx b/apps/fo/app/pages/underWaterInput/page.tsx
index 1e821734b..d57c894dd 100644
--- a/apps/fo/app/pages/underWaterInput/page.tsx
+++ b/apps/fo/app/pages/underWaterInput/page.tsx
@@ -5,7 +5,7 @@ import { ContentsDiv, downloadExcel, MainDiv, SearchBaseForm, SearchInput, Selec
import ListDiv from "@common/business_components/ui/list_div";
import { useCallback, useEffect, useRef, useState } from "react";
import UnderWaterInputModal from "./modal/page";
-import type { UnderWaterProps } from "@/app/store/underWaterInput";
+import type { UnderWaterProps } from "@/app/store/underWaterInput/types";
export default function UnderWaterInput() {
const {Common
@@ -82,7 +82,8 @@ export default function UnderWaterInput() {
// 시설상태
const [operationValue, setOperationValue] = useState("0");
// 조회기간
- const [searchYear, setSearchYear] = useState(selectSearchYear[0]?.val || "0");
+ //const [searchYear, setSearchYear] = useState(selectSearchYear[0]?.val || "0");
+ const [searchYear, setSearchYear] = useState("2023");
/**
* 페이지 함수
@@ -114,7 +115,7 @@ export default function UnderWaterInput() {
// 셀 클릭 시 모달 표시
const cellClick = (index: number) => {
if (underWater[index]) {
- setFcltyNm(underWater[index].bscFctNm);
+ setFcltyNm(underWater[index].bscFctCd);
setSelectedRow(index); // 클릭한 행의 index 저장
}
};
diff --git a/apps/fo/app/store/common/index.tsx b/apps/fo/app/store/common/index.tsx
index 5c07bcd6e..3e15e2162 100644
--- a/apps/fo/app/store/common/index.tsx
+++ b/apps/fo/app/store/common/index.tsx
@@ -3,8 +3,6 @@
====================================**/
import { getFetch } from "@/app/components/api";
-import { LoginApi } from "@/src/entities/auth";
-import type { ILogin } from "@/src/entities/auth/model/login-interface";
/**
* STORE - TYPE
@@ -413,15 +411,6 @@ export const CommonReducer:(set:(fn: (state: CommonType) => CommonType) => void)
// 시도 변경 이벤트
initializeCommonData: async () => {
- const payLoad : ILogin = {
- userId: "tuser10003",
- password: "test1234!"
- };
-
- console.log(payLoad.userId)
- console.log(payLoad.password)
-
- LoginApi.login(payLoad);
const promiseSet = await Promise.all([fetchSidoData(), fetchSigunData(), fetchRegionData(), fetchUnitWaterShedData(), fetchMiddleRegionData(), fetchEnvPartData()]);
const [sidoData, sggData, regionData, unitData, midData, envData] = promiseSet;
set((state: CommonType) => ({
diff --git a/apps/fo/app/store/dashboard/index.tsx b/apps/fo/app/store/dashboard/index.tsx
index 09c7acec9..c0720b9fa 100644
--- a/apps/fo/app/store/dashboard/index.tsx
+++ b/apps/fo/app/store/dashboard/index.tsx
@@ -347,6 +347,7 @@ const upHeadListOperationStatus : TableUpperProps[] = [
{ id: "groundWaterSummer", title: "하절기\n평균", upName:"upChangeRe5", upSequnce:2 },
{ id: "groundWaterWinter", title: "동절기\n평균", upName:"upChangeRe5", upSequnce:3 },
{ id: "rdi", title: "RDII 추정" },
+ { id: "rdiRain", title: "RDII 추정시\n일강수량(mm)" },
]
const upHeadListRainManage : TableUpperProps[] = [
@@ -688,12 +689,12 @@ const drainageEquipmentList : DrainageEquipmentListProps[] = [
/* 시설정보 및 운영현황 - 계획 */
const fetchFacilityPlan = async (targetYear : string | undefined, fcltyCd : string | undefined) => {
try {
- targetYear = targetYear ? targetYear : "2024";
+ targetYear = targetYear ? targetYear : "2023";
const baseUrl = 'https://apigateway.rsonesoft.com/dc-service/api/v1/nowDmgMtncGnsvy';
const queryParams = new URLSearchParams();
if (fcltyCd) queryParams.append('swtrmtFcltCd', fcltyCd);
- if (targetYear) queryParams.append('targetYear',targetYear);
+ //if (targetYear) queryParams.append('targetYear',targetYear);
const queryString = queryParams.toString();
const url = queryString ? `${baseUrl}?${queryString}` : baseUrl;
const res = await getFetchAreaList(url);
@@ -707,7 +708,7 @@ const fetchFacilityPlan = async (targetYear : string | undefined, fcltyCd : stri
/* 시설정보 및 운영현황 - 운영실태 */
const fetchOperationStatus = async (searchYear: string|undefined, fcltyCd: string|undefined) => {
try{
- const url = '/dashBoard/mngInfo/' + (searchYear?searchYear:'2024') + '/' + (fcltyCd?fcltyCd:'');
+ const url = '/dashBoard/mngInfo/' + (searchYear?searchYear:'2023') + '/' + (fcltyCd?fcltyCd:'');
const res = await getFetch('fo', url);
return { data: res.data, count: res.count }
} catch (error) {
@@ -719,7 +720,7 @@ const fetchOperationStatus = async (searchYear: string|undefined, fcltyCd: strin
// 주요그래프 데이터
const fetchMainGraph = async (searchYear: string|undefined, fcltyCd: string|undefined) => {
try {
- const url = '/fclt/qlty/hist/' + (searchYear?searchYear:'2024') + '/' + (fcltyCd?fcltyCd:'11680PB001R');
+ const url = '/fclt/qlty/hist/' + (searchYear?searchYear:'2023') + '/' + (fcltyCd?fcltyCd:'11680PB001R');
const res = await getFetch('fo', url);
return { data: res.data, count: res.count }
} catch (error) {
@@ -954,41 +955,51 @@ export const dashBoardReducer:(set:(fn: (state: DashBoardType) => DashBoardType)
/** 시설정보 및 운영현황 - 계획정보 */
searchPlanInfo : async (targetYear: string, fcltyCd: string) => {
const res = await fetchFacilityPlan(targetYear, fcltyCd);
+ let minDiff=9999999;
+ let minIndex;
+ res.forEach((el:any, idx) => {
+ if(minDiff>Math.abs(Number(targetYear) - Number(el.yr))){
+ minDiff=Math.abs(Number(targetYear) - Number(el.yr));
+ minIndex=idx;
+ }
+ });
+
+ const rtnPlanData = res[minIndex];
planFcltyList.map((el, index) => {
planYearList = [];
- planYearList.push(res[0]?res[0].yrDt4.toString():"");
- planYearList.push(res[0]?res[0].yrDc1.toString():"");
- planYearList.push(res[0]?res[0].yrDc2.toString():"");
- planYearList.push(res[0]?res[0].yrDc3.toString():"");
- planYearList.push(res[0]?res[0].yrDc4.toString():"");
+ planYearList.push(rtnPlanData?rtnPlanData.yrDt4.toString():"");
+ planYearList.push(rtnPlanData?rtnPlanData.yrDc1.toString():"");
+ planYearList.push(rtnPlanData?rtnPlanData.yrDc2.toString():"");
+ planYearList.push(rtnPlanData?rtnPlanData.yrDc3.toString():"");
+ planYearList.push(rtnPlanData?rtnPlanData.yrDc4.toString():"");
if(index === 0){
- el.provisionalApproval = res&&res.length>0?res[0].planSwageQntSumDt4:'';
- el.now = res&&res.length>0?res[0].planSwageQntSum:'';
- el.stepOne = res&&res.length>0?res[0].planSwageQntSumDc1:'';
- el.stepTwo = res&&res.length>0?res[0].planSwageQntSumDc2:'';
- el.stepThree = res&&res.length>0?res[0].planSwageQntSumDc3:'';
- el.stepFour = res&&res.length>0?res[0].planSwageQntSumDc4:'';
+ el.provisionalApproval = rtnPlanData?rtnPlanData.planSwageQntSumDt4:'';
+ el.now = rtnPlanData?rtnPlanData.planSwageQntSum:'';
+ el.stepOne = rtnPlanData?rtnPlanData.planSwageQntSumDc1:'';
+ el.stepTwo = rtnPlanData?rtnPlanData.planSwageQntSumDc2:'';
+ el.stepThree = rtnPlanData?rtnPlanData.planSwageQntSumDc3:'';
+ el.stepFour = rtnPlanData?rtnPlanData.planSwageQntSumDc4:'';
}
if(index === 1){
- el.provisionalApproval = res&&res.length>0?res[0].swtrmtPpltnCntDt4:'';
- el.now = res&&res.length>0?res[0].swtrmtPpltnCnt:'';
- el.stepOne = res&&res.length>0?res[0].swtrmtPpltnCntDc1:'';
- el.stepTwo = res&&res.length>0?res[0].swtrmtPpltnCntDc2:'';
- el.stepThree = res&&res.length>0?res[0].swtrmtPpltnCntDc3:'';
- el.stepFour = res&&res.length>0?res[0].swtrmtPpltnCntDc4:'';
+ el.provisionalApproval = rtnPlanData?rtnPlanData.swtrmtPpltnCntDt4:'';
+ el.now = rtnPlanData?rtnPlanData.swtrmtPpltnCnt:'';
+ el.stepOne = rtnPlanData?rtnPlanData.swtrmtPpltnCntDc1:'';
+ el.stepTwo = rtnPlanData?rtnPlanData.swtrmtPpltnCntDc2:'';
+ el.stepThree = rtnPlanData?rtnPlanData.swtrmtPpltnCntDc3:'';
+ el.stepFour = rtnPlanData?rtnPlanData.swtrmtPpltnCntDc4:'';
}
if(index === 2){
- el.provisionalApproval = res&&res.length>0?res[0].swtrmtZoneAreaDt4:'';
- el.now = res&&res.length>0?res[0].swtrmtZoneArea:'';
- el.stepOne = res&&res.length>0?res[0].swtrmtZoneAreaDc1:'';
- el.stepTwo = res&&res.length>0?res[0].swtrmtZoneAreaDc2:'';
- el.stepThree = res&&res.length>0?res[0].swtrmtZoneAreaDc3:'';
- el.stepFour = res&&res.length>0?res[0].swtrmtZoneAreaDc4:'';
+ el.provisionalApproval = rtnPlanData?rtnPlanData.swtrmtZoneAreaDt4:'';
+ el.now = rtnPlanData?rtnPlanData.swtrmtZoneArea:'';
+ el.stepOne = rtnPlanData?rtnPlanData.swtrmtZoneAreaDc1:'';
+ el.stepTwo = rtnPlanData?rtnPlanData.swtrmtZoneAreaDc2:'';
+ el.stepThree = rtnPlanData?rtnPlanData.swtrmtZoneAreaDc3:'';
+ el.stepFour = rtnPlanData?rtnPlanData.swtrmtZoneAreaDc4:'';
}
if(index === 4){
- el.provisionalApproval = res&&res.length>0?res[0].ugwtUseSum:'';
+ el.provisionalApproval = rtnPlanData?rtnPlanData.ugwtUseSum:'';
}
// 임시시
@@ -1040,9 +1051,10 @@ export const dashBoardReducer:(set:(fn: (state: DashBoardType) => DashBoardType)
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);
// 지하수
- operationalStatusList[0].groundWaterAvg = 10;
- operationalStatusList[0].groundWaterSummer = 11;
- operationalStatusList[0].groundWaterWinter = 12;
+ operationalStatusList[0].groundWaterAvg = data.yearData.AVG_INFL_AMNT === null ? '' : Number(data.yearData.AVG_INFL_AMNT) - (Number(data.yearData.AVG_INFL_AMNT)*0.65*0.8);
+ operationalStatusList[0].groundWaterSummer = data.summer.AVG_INFL_AMNT === null ? '' : Number(data.summer.AVG_INFL_AMNT) - (Number(data.summer.AVG_INFL_AMNT)*0.65*0.8);
+ operationalStatusList[0].groundWaterWinter = data.winter.AVG_INFL_AMNT === null ? '' : Number(data.winter.AVG_INFL_AMNT) - (Number(data.winter.AVG_INFL_AMNT)*0.65*0.8);
+
// 오염물질
// 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;
@@ -1053,7 +1065,20 @@ export const dashBoardReducer:(set:(fn: (state: DashBoardType) => DashBoardType)
operationalStatusList[0].rdiRain = summerLowRain;
dataFormSetting(operationalStatusList[0]);
}
-
+
+ if(operationalStatusList[0] && operationalStatusList[7]){
+ console.log(Number(operationalStatusList[0].groundWaterAvg)+' '+Number(data.yearData.AVG_INFL_AMNT));
+ console.log(Number(operationalStatusList[0].groundWaterSummer)+' '+Number(data.summer.AVG_INFL_AMNT));
+ console.log(Number(operationalStatusList[0].groundWaterWinter)+' '+Number(data.winter.AVG_INFL_AMNT));
+ operationalStatusList[7].groundWaterAvg = Number(operationalStatusList[0].groundWaterAvg) / Number(data.yearData.AVG_INFL_AMNT) * 100;
+ operationalStatusList[7].groundWaterSummer = Number(operationalStatusList[0].groundWaterSummer) / Number(data.summer.AVG_INFL_AMNT) * 100;
+ operationalStatusList[7].groundWaterWinter = Number(operationalStatusList[0].groundWaterWinter) / Number(data.winter.AVG_INFL_AMNT) * 100;
+ /* 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;*/
+ dataFormSetting(operationalStatusList[0]);
+ }
+
for(let i=1; i DashBoardType)
}
const fcltyCpcValue = res.data.wqltObjs[0].fctCpc;
- const itemList = ['계', '3mm 미만', '3~10mm 미만', '10~20mm 미만', '20~30mm 미만', '30~40mm 미만', '40~50mm 미만', '50mm~60mm 미만', '60mm 이상'];
- const rainRate = ['0', '0', '0', '0', '0', '0', '0', '0', '0'];
- const rainDate = [0, 0, 0, 0, 0, 0, 0, 0, 0];
- const inflAmtCnt = [0, 0, 0, 0, 0, 0, 0, 0, 0];
- const inflAmnt = [0, 0, 0, 0, 0, 0, 0, 0, 0];
- const fcltyCpct = [0, 0, 0, 0, 0, 0, 0, 0, 0];
- const dsInflWqltBod: number[] = [0, 0, 0, 0, 0, 0, 0, 0, 0];
- const dsInflWqltCod: number[] = [0, 0, 0, 0, 0, 0, 0, 0, 0];
- const dsInflWqltSs: number[] = [0, 0, 0, 0, 0, 0, 0, 0, 0];
- const dsInflWqltTn: number[] = [0, 0, 0, 0, 0, 0, 0, 0, 0];
- const dsInflWqltTp: number[] = [0, 0, 0, 0, 0, 0, 0, 0, 0];
- const inflAssctAftWqltBodCnt = [0, 0, 0, 0, 0, 0, 0, 0, 0];
- const inflAssctAftWqltBod = [0, 0, 0, 0, 0, 0, 0, 0, 0];
- const inflAssctAftWqltTocCnt = [0, 0, 0, 0, 0, 0, 0, 0, 0];
- const inflAssctAftWqltToc = [0, 0, 0, 0, 0, 0, 0, 0, 0];
- const inflAssctAftWqltSsCnt = [0, 0, 0, 0, 0, 0, 0, 0, 0];
- const inflAssctAftWqltSs = [0, 0, 0, 0, 0, 0, 0, 0, 0];
- const inflAssctAftWqltTnCnt = [0, 0, 0, 0, 0, 0, 0, 0, 0];
- const inflAssctAftWqltTn = [0, 0, 0, 0, 0, 0, 0, 0, 0];
- const inflAssctAftWqltTpCnt = [0, 0, 0, 0, 0, 0, 0, 0, 0];
- const inflAssctAftWqltTp = [0, 0, 0, 0, 0, 0, 0, 0, 0];
- const efflWqltBodCnt = [0, 0, 0, 0, 0, 0, 0, 0, 0];
- const efflWqltBod = [0, 0, 0, 0, 0, 0, 0, 0, 0];
- const efflWqltCodCnt = [0, 0, 0, 0, 0, 0, 0, 0, 0];
- const efflWqltCod = [0, 0, 0, 0, 0, 0, 0, 0, 0];
- const efflWqltSsCnt = [0, 0, 0, 0, 0, 0, 0, 0, 0];
- const efflWqltSs = [0, 0, 0, 0, 0, 0, 0, 0, 0];
- const efflWqltTnCnt = [0, 0, 0, 0, 0, 0, 0, 0, 0];
- const efflWqltTn = [0, 0, 0, 0, 0, 0, 0, 0, 0];
- const efflWqltTpCnt = [0, 0, 0, 0, 0, 0, 0, 0, 0];
- const efflWqltTp = [0, 0, 0, 0, 0, 0, 0, 0, 0];
+ const itemList = ['계', '3~10mm 미만', '10~20mm 미만', '20~30mm 미만', '30~40mm 미만', '40~50mm 미만', '50mm~60mm 미만', '60mm 이상'];
+ const rainRate = ['0', '0', '0', '0', '0', '0', '0', '0'];
+ const rainDate = [0, 0, 0, 0, 0, 0, 0, 0];
+ const inflAmtCnt = [0, 0, 0, 0, 0, 0, 0, 0];
+ const inflAmnt = [0, 0, 0, 0, 0, 0, 0, 0];
+ const fcltyCpct = [0, 0, 0, 0, 0, 0, 0, 0];
+ const dsInflWqltBod: number[] = [0, 0, 0, 0, 0, 0, 0, 0];
+ const dsInflWqltCod: number[] = [0, 0, 0, 0, 0, 0, 0, 0];
+ const dsInflWqltSs: number[] = [0, 0, 0, 0, 0, 0, 0, 0];
+ const dsInflWqltTn: number[] = [0, 0, 0, 0, 0, 0, 0, 0];
+ const dsInflWqltTp: number[] = [0, 0, 0, 0, 0, 0, 0, 0];
+ const inflAssctAftWqltBodCnt = [0, 0, 0, 0, 0, 0, 0, 0];
+ const inflAssctAftWqltBod = [0, 0, 0, 0, 0, 0, 0, 0];
+ const inflAssctAftWqltTocCnt = [0, 0, 0, 0, 0, 0, 0, 0];
+ const inflAssctAftWqltToc = [0, 0, 0, 0, 0, 0, 0, 0];
+ const inflAssctAftWqltSsCnt = [0, 0, 0, 0, 0, 0, 0, 0];
+ const inflAssctAftWqltSs = [0, 0, 0, 0, 0, 0, 0, 0];
+ const inflAssctAftWqltTnCnt = [0, 0, 0, 0, 0, 0, 0, 0];
+ const inflAssctAftWqltTn = [0, 0, 0, 0, 0, 0, 0, 0];
+ const inflAssctAftWqltTpCnt = [0, 0, 0, 0, 0, 0, 0, 0];
+ const inflAssctAftWqltTp = [0, 0, 0, 0, 0, 0, 0, 0];
+ const efflWqltBodCnt = [0, 0, 0, 0, 0, 0, 0, 0];
+ const efflWqltBod = [0, 0, 0, 0, 0, 0, 0, 0];
+ const efflWqltCodCnt = [0, 0, 0, 0, 0, 0, 0, 0];
+ const efflWqltCod = [0, 0, 0, 0, 0, 0, 0, 0];
+ const efflWqltSsCnt = [0, 0, 0, 0, 0, 0, 0, 0];
+ const efflWqltSs = [0, 0, 0, 0, 0, 0, 0, 0];
+ const efflWqltTnCnt = [0, 0, 0, 0, 0, 0, 0, 0];
+ const efflWqltTn = [0, 0, 0, 0, 0, 0, 0, 0];
+ const efflWqltTpCnt = [0, 0, 0, 0, 0, 0, 0, 0];
+ const efflWqltTp = [0, 0, 0, 0, 0, 0, 0, 0];
// Process the data and create rain management list
res.data.wqltObjs.forEach((item: RainManageListProps) => {
// 강우일
- if(Number(item.infoRnDay) < 3){
+ /*if(Number(item.infoRnDay) < 3){
rainDate[1] = Number(rainDate[1] || 0) + 1;
inflAmtCnt[1] = Number(inflAmtCnt[1] || 0) + 1;
inflAmnt[1] = Number(inflAmnt[1] || 0) + Number(item.inflAmnt || 0);
@@ -1267,7 +1292,33 @@ export const dashBoardReducer:(set:(fn: (state: DashBoardType) => DashBoardType)
efflWqltTn[1] = Number(efflWqltTn[1] || 0) + Number(item.efflWqltTn || 0);
efflWqltTpCnt[1] = Number(efflWqltTpCnt[1] || 0) + 1;
efflWqltTp[1] = Number(efflWqltTp[1] || 0) + Number(item.efflWqltTp || 0);
- }else if(Number(item.infoRnDay) >= 3 && Number(item.infoRnDay) < 10){
+ }*/
+ if(Number(item.infoRnDay) >= 3 && Number(item.infoRnDay) < 10){
+ rainDate[1] = Number(rainDate[1] || 0) + 1;
+ inflAmtCnt[1] = Number(inflAmtCnt[1] || 0) + 1;
+ inflAmnt[1] = Number(inflAmnt[1] || 0) + Number(item.inflAmnt || 0);
+ fcltyCpct[1] = 0;
+ inflAssctAftWqltBodCnt[1] = Number(inflAssctAftWqltBodCnt[1] || 0) + 1;
+ inflAssctAftWqltBod[1] = Number(inflAssctAftWqltBod[1] || 0) + Number(item.inflAssctAftWqltBod || 0);
+ inflAssctAftWqltTocCnt[1] = Number(inflAssctAftWqltTocCnt[1] || 0) + 1;
+ inflAssctAftWqltToc[1] = Number(inflAssctAftWqltToc[1] || 0) + Number(item.inflAssctAftWqltToc || 0);
+ inflAssctAftWqltSsCnt[1] = Number(inflAssctAftWqltSsCnt[1] || 0) + 1;
+ inflAssctAftWqltSs[1] = Number(inflAssctAftWqltSs[1] || 0) + Number(item.inflAssctAftWqltSs || 0);
+ inflAssctAftWqltTnCnt[1] = Number(inflAssctAftWqltTnCnt[1] || 0) + 1;
+ inflAssctAftWqltTn[1] = Number(inflAssctAftWqltTn[1] || 0) + Number(item.inflAssctAftWqltTn || 0);
+ inflAssctAftWqltTpCnt[1] = Number(inflAssctAftWqltTpCnt[1] || 0) + 1;
+ inflAssctAftWqltTp[1] = Number(inflAssctAftWqltTp[1] || 0) + Number(item.inflAssctAftWqltTp || 0);
+ efflWqltBodCnt[1] = Number(efflWqltBodCnt[1] || 0) + 1;
+ efflWqltBod[1] = Number(efflWqltBod[1] || 0) + Number(item.efflWqltBod || 0);
+ efflWqltCodCnt[1] = Number(efflWqltCodCnt[1] || 0) + 1;
+ efflWqltCod[1] = Number(efflWqltCod[1] || 0) + Number(item.efflWqltCod || 0);
+ efflWqltSsCnt[1] = Number(efflWqltSsCnt[1] || 0) + 1;
+ efflWqltSs[1] = Number(efflWqltSs[1] || 0) + Number(item.efflWqltSs || 0);
+ efflWqltTnCnt[1] = Number(efflWqltTnCnt[1] || 0) + 1;
+ efflWqltTn[1] = Number(efflWqltTn[1] || 0) + Number(item.efflWqltTn || 0);
+ efflWqltTpCnt[1] = Number(efflWqltTpCnt[1] || 0) + 1;
+ efflWqltTp[1] = Number(efflWqltTp[1] || 0) + Number(item.efflWqltTp || 0);
+ }else if(Number(item.infoRnDay) >= 10 && Number(item.infoRnDay) < 20){
rainDate[2] = Number(rainDate[2] || 0) + 1;
inflAmtCnt[2] = Number(inflAmtCnt[2] || 0) + 1;
inflAmnt[2] = Number(inflAmnt[2] || 0) + Number(item.inflAmnt || 0);
@@ -1283,7 +1334,7 @@ export const dashBoardReducer:(set:(fn: (state: DashBoardType) => DashBoardType)
inflAssctAftWqltTpCnt[2] = Number(inflAssctAftWqltTpCnt[2] || 0) + 1;
inflAssctAftWqltTp[2] = Number(inflAssctAftWqltTp[2] || 0) + Number(item.inflAssctAftWqltTp || 0);
efflWqltBodCnt[2] = Number(efflWqltBodCnt[2] || 0) + 1;
- efflWqltBod[2] = Number(efflWqltBod[2] || 0) + Number(item.efflWqltBod || 0);
+ efflWqltBod[2] = Number(efflWqltBod[2] || 0) + Number(item.efflWqltBod || 0);
efflWqltCodCnt[2] = Number(efflWqltCodCnt[2] || 0) + 1;
efflWqltCod[2] = Number(efflWqltCod[2] || 0) + Number(item.efflWqltCod || 0);
efflWqltSsCnt[2] = Number(efflWqltSsCnt[2] || 0) + 1;
@@ -1292,7 +1343,7 @@ export const dashBoardReducer:(set:(fn: (state: DashBoardType) => DashBoardType)
efflWqltTn[2] = Number(efflWqltTn[2] || 0) + Number(item.efflWqltTn || 0);
efflWqltTpCnt[2] = Number(efflWqltTpCnt[2] || 0) + 1;
efflWqltTp[2] = Number(efflWqltTp[2] || 0) + Number(item.efflWqltTp || 0);
- }else if(Number(item.infoRnDay) >= 10 && Number(item.infoRnDay) < 20){
+ }else if(Number(item.infoRnDay) >= 20 && Number(item.infoRnDay) < 30){
rainDate[3] = Number(rainDate[3] || 0) + 1;
inflAmtCnt[3] = Number(inflAmtCnt[3] || 0) + 1;
inflAmnt[3] = Number(inflAmnt[3] || 0) + Number(item.inflAmnt || 0);
@@ -1317,11 +1368,11 @@ export const dashBoardReducer:(set:(fn: (state: DashBoardType) => DashBoardType)
efflWqltTn[3] = Number(efflWqltTn[3] || 0) + Number(item.efflWqltTn || 0);
efflWqltTpCnt[3] = Number(efflWqltTpCnt[3] || 0) + 1;
efflWqltTp[3] = Number(efflWqltTp[3] || 0) + Number(item.efflWqltTp || 0);
- }else if(Number(item.infoRnDay) >= 20 && Number(item.infoRnDay) < 30){
+ }else if(Number(item.infoRnDay) >= 30 && Number(item.infoRnDay) < 40){
rainDate[4] = Number(rainDate[4] || 0) + 1;
inflAmtCnt[4] = Number(inflAmtCnt[4] || 0) + 1;
inflAmnt[4] = Number(inflAmnt[4] || 0) + Number(item.inflAmnt || 0);
- fcltyCpct[4] = 0;
+ fcltyCpct[4] = item.inflAmnt&&Number(item.inflAmnt) !== 0 ? Number(Math.round(Number(item.inflAmnt) / Number(item.fctCpc) * 10) / 10) : 0;
inflAssctAftWqltBodCnt[4] = Number(inflAssctAftWqltBodCnt[4] || 0) + 1;
inflAssctAftWqltBod[4] = Number(inflAssctAftWqltBod[4] || 0) + Number(item.inflAssctAftWqltBod || 0);
inflAssctAftWqltTocCnt[4] = Number(inflAssctAftWqltTocCnt[4] || 0) + 1;
@@ -1329,7 +1380,7 @@ export const dashBoardReducer:(set:(fn: (state: DashBoardType) => DashBoardType)
inflAssctAftWqltSsCnt[4] = Number(inflAssctAftWqltSsCnt[4] || 0) + 1;
inflAssctAftWqltSs[4] = Number(inflAssctAftWqltSs[4] || 0) + Number(item.inflAssctAftWqltSs || 0);
inflAssctAftWqltTnCnt[4] = Number(inflAssctAftWqltTnCnt[4] || 0) + 1;
- inflAssctAftWqltTn[4] = Number(inflAssctAftWqltTn[4] || 0) + Number(item.inflAssctAftWqltTn || 0);
+ inflAssctAftWqltTn[4] = Number(inflAssctAftWqltTn[5] || 0) + Number(item.inflAssctAftWqltTn || 0);
inflAssctAftWqltTpCnt[4] = Number(inflAssctAftWqltTpCnt[4] || 0) + 1;
inflAssctAftWqltTp[4] = Number(inflAssctAftWqltTp[4] || 0) + Number(item.inflAssctAftWqltTp || 0);
efflWqltBodCnt[4] = Number(efflWqltBodCnt[4] || 0) + 1;
@@ -1338,15 +1389,15 @@ export const dashBoardReducer:(set:(fn: (state: DashBoardType) => DashBoardType)
efflWqltCod[4] = Number(efflWqltCod[4] || 0) + Number(item.efflWqltCod || 0);
efflWqltSsCnt[4] = Number(efflWqltSsCnt[4] || 0) + 1;
efflWqltSs[4] = Number(efflWqltSs[4] || 0) + Number(item.efflWqltSs || 0);
- efflWqltTnCnt[4] = Number(efflWqltTnCnt[4] || 0) + 1;
+ efflWqltTnCnt[4] = Number(efflWqltTnCnt[5] || 0) + 1;
efflWqltTn[4] = Number(efflWqltTn[4] || 0) + Number(item.efflWqltTn || 0);
- efflWqltTpCnt[4] = Number(efflWqltTpCnt[4] || 0) + 1;
+ efflWqltTpCnt[4] = Number(efflWqltTpCnt[5] || 0) + 1;
efflWqltTp[4] = Number(efflWqltTp[4] || 0) + Number(item.efflWqltTp || 0);
- }else if(Number(item.infoRnDay) >= 30 && Number(item.infoRnDay) < 40){
+ }else if(Number(item.infoRnDay) >= 40 && Number(item.infoRnDay) < 50){
rainDate[5] = Number(rainDate[5] || 0) + 1;
inflAmtCnt[5] = Number(inflAmtCnt[5] || 0) + 1;
inflAmnt[5] = Number(inflAmnt[5] || 0) + Number(item.inflAmnt || 0);
- fcltyCpct[5] = item.inflAmnt&&Number(item.inflAmnt) !== 0 ? Number(Math.round(Number(item.inflAmnt) / Number(item.fctCpc) * 10) / 10) : 0;
+ fcltyCpct[5] = 0;
inflAssctAftWqltBodCnt[5] = Number(inflAssctAftWqltBodCnt[5] || 0) + 1;
inflAssctAftWqltBod[5] = Number(inflAssctAftWqltBod[5] || 0) + Number(item.inflAssctAftWqltBod || 0);
inflAssctAftWqltTocCnt[5] = Number(inflAssctAftWqltTocCnt[5] || 0) + 1;
@@ -1367,7 +1418,7 @@ export const dashBoardReducer:(set:(fn: (state: DashBoardType) => DashBoardType)
efflWqltTn[5] = Number(efflWqltTn[5] || 0) + Number(item.efflWqltTn || 0);
efflWqltTpCnt[5] = Number(efflWqltTpCnt[5] || 0) + 1;
efflWqltTp[5] = Number(efflWqltTp[5] || 0) + Number(item.efflWqltTp || 0);
- }else if(Number(item.infoRnDay) >= 40 && Number(item.infoRnDay) < 50){
+ }else if(Number(item.infoRnDay) >= 50 && Number(item.infoRnDay) < 60){
rainDate[6] = Number(rainDate[6] || 0) + 1;
inflAmtCnt[6] = Number(inflAmtCnt[6] || 0) + 1;
inflAmnt[6] = Number(inflAmnt[6] || 0) + Number(item.inflAmnt || 0);
@@ -1392,7 +1443,7 @@ export const dashBoardReducer:(set:(fn: (state: DashBoardType) => DashBoardType)
efflWqltTn[6] = Number(efflWqltTn[6] || 0) + Number(item.efflWqltTn || 0);
efflWqltTpCnt[6] = Number(efflWqltTpCnt[6] || 0) + 1;
efflWqltTp[6] = Number(efflWqltTp[6] || 0) + Number(item.efflWqltTp || 0);
- }else if(Number(item.infoRnDay) >= 50 && Number(item.infoRnDay) < 60){
+ }else if(Number(item.infoRnDay) >= 60){
rainDate[7] = Number(rainDate[7] || 0) + 1;
inflAmtCnt[7] = Number(inflAmtCnt[7] || 0) + 1;
inflAmnt[7] = Number(inflAmnt[7] || 0) + Number(item.inflAmnt || 0);
@@ -1417,31 +1468,6 @@ export const dashBoardReducer:(set:(fn: (state: DashBoardType) => DashBoardType)
efflWqltTn[7] = Number(efflWqltTn[7] || 0) + Number(item.efflWqltTn || 0);
efflWqltTpCnt[7] = Number(efflWqltTpCnt[7] || 0) + 1;
efflWqltTp[7] = Number(efflWqltTp[7] || 0) + Number(item.efflWqltTp || 0);
- }else if(Number(item.infoRnDay) >= 60){
- rainDate[8] = Number(rainDate[8] || 0) + 1;
- inflAmtCnt[8] = Number(inflAmtCnt[8] || 0) + 1;
- inflAmnt[8] = Number(inflAmnt[8] || 0) + Number(item.inflAmnt || 0);
- fcltyCpct[8] = 0;
- inflAssctAftWqltBodCnt[8] = Number(inflAssctAftWqltBodCnt[8] || 0) + 1;
- inflAssctAftWqltBod[8] = Number(inflAssctAftWqltBod[8] || 0) + Number(item.inflAssctAftWqltBod || 0);
- inflAssctAftWqltTocCnt[8] = Number(inflAssctAftWqltTocCnt[8] || 0) + 1;
- inflAssctAftWqltToc[8] = Number(inflAssctAftWqltToc[8] || 0) + Number(item.inflAssctAftWqltToc || 0);
- inflAssctAftWqltSsCnt[8] = Number(inflAssctAftWqltSsCnt[8] || 0) + 1;
- inflAssctAftWqltSs[8] = Number(inflAssctAftWqltSs[8] || 0) + Number(item.inflAssctAftWqltSs || 0);
- inflAssctAftWqltTnCnt[8] = Number(inflAssctAftWqltTnCnt[8] || 0) + 1;
- inflAssctAftWqltTn[8] = Number(inflAssctAftWqltTn[8] || 0) + Number(item.inflAssctAftWqltTn || 0);
- inflAssctAftWqltTpCnt[8] = Number(inflAssctAftWqltTpCnt[8] || 0) + 1;
- inflAssctAftWqltTp[8] = Number(inflAssctAftWqltTp[8] || 0) + Number(item.inflAssctAftWqltTp || 0);
- efflWqltBodCnt[8] = Number(efflWqltBodCnt[8] || 0) + 1;
- efflWqltBod[8] = Number(efflWqltBod[8] || 0) + Number(item.efflWqltBod || 0);
- efflWqltCodCnt[8] = Number(efflWqltCodCnt[8] || 0) + 1;
- efflWqltCod[8] = Number(efflWqltCod[8] || 0) + Number(item.efflWqltCod || 0);
- efflWqltSsCnt[8] = Number(efflWqltSsCnt[8] || 0) + 1;
- efflWqltSs[8] = Number(efflWqltSs[8] || 0) + Number(item.efflWqltSs || 0);
- efflWqltTnCnt[8] = Number(efflWqltTnCnt[8] || 0) + 1;
- efflWqltTn[8] = Number(efflWqltTn[8] || 0) + Number(item.efflWqltTn || 0);
- efflWqltTpCnt[8] = Number(efflWqltTpCnt[8] || 0) + 1;
- efflWqltTp[8] = Number(efflWqltTp[8] || 0) + Number(item.efflWqltTp || 0);
}
});
@@ -1488,7 +1514,7 @@ export const dashBoardReducer:(set:(fn: (state: DashBoardType) => DashBoardType)
rainDate[0] = (Number(rainDate[1]) || 0) + (Number(rainDate[2]) || 0) + (Number(rainDate[3]) || 0) +
(Number(rainDate[4]) || 0) + (Number(rainDate[5]) || 0) + (Number(rainDate[6]) || 0) +
- (Number(rainDate[7]) || 0) + (Number(rainDate[8]) || 0);
+ (Number(rainDate[7]) || 0);
// 강수비율
for(let idx=0; idx DashBoardType)
inflAmnt[0] = calculateAverage(calculateTotal(inflAmnt), dataIsCount);
fcltyCpct[0] = calculateTotal(fcltyCpct);
- inflAssctAftWqltBod[0] = Number((calculateTotal(inflAssctAftWqltBod)/8).toFixed(1));
- inflAssctAftWqltToc[0] = Number((calculateTotal(inflAssctAftWqltToc)/8).toFixed(1));
- inflAssctAftWqltSs[0] = Number((calculateTotal(inflAssctAftWqltSs)/8).toFixed(1));
- inflAssctAftWqltTn[0] = Number((calculateTotal(inflAssctAftWqltTn)/8).toFixed(3));
- inflAssctAftWqltTp[0] = Number((calculateTotal(inflAssctAftWqltTp)/8).toFixed(3));
- efflWqltBod[0] = Number((calculateTotal(efflWqltBod)/8).toFixed(1));
- efflWqltCod[0] = Number((calculateTotal(efflWqltCod)/8).toFixed(1));
- efflWqltSs[0] = Number((calculateTotal(efflWqltSs as number[])/8).toFixed(1));
- efflWqltTn[0] = Number((calculateTotal(efflWqltTn as number[])/8).toFixed(3));
- efflWqltTp[0] = Number((calculateTotal(efflWqltTp as number[])/8).toFixed(3));
+ inflAssctAftWqltBod[0] = Number((calculateTotal(inflAssctAftWqltBod)/7).toFixed(1));
+ inflAssctAftWqltToc[0] = Number((calculateTotal(inflAssctAftWqltToc)/7).toFixed(1));
+ inflAssctAftWqltSs[0] = Number((calculateTotal(inflAssctAftWqltSs)/7).toFixed(1));
+ inflAssctAftWqltTn[0] = Number((calculateTotal(inflAssctAftWqltTn)/7).toFixed(3));
+ inflAssctAftWqltTp[0] = Number((calculateTotal(inflAssctAftWqltTp)/7).toFixed(3));
+ efflWqltBod[0] = Number((calculateTotal(efflWqltBod)/7).toFixed(1));
+ efflWqltCod[0] = Number((calculateTotal(efflWqltCod)/7).toFixed(1));
+ efflWqltSs[0] = Number((calculateTotal(efflWqltSs as number[])/7).toFixed(1));
+ efflWqltTn[0] = Number((calculateTotal(efflWqltTn as number[])/7).toFixed(3));
+ efflWqltTp[0] = Number((calculateTotal(efflWqltTp as number[])/7).toFixed(3));
// 최종 리스트
const filteredData = itemList.map((item, index) => ({
diff --git a/apps/fo/app/store/facilityWaterQlty/index.tsx b/apps/fo/app/store/facilityWaterQlty/index.tsx
index 6430522f4..565c251d2 100644
--- a/apps/fo/app/store/facilityWaterQlty/index.tsx
+++ b/apps/fo/app/store/facilityWaterQlty/index.tsx
@@ -28,7 +28,7 @@ export interface FacilityWaterQltyProps {
inflAssctAftWqltTp: string | '',
inflAssctBfrWqltTp: string | '',
efflWqltBod: string | '',
- efflWqltCod: string | '',
+ efflWqltToc: string | '',
efflWqltSs: string | '',
efflWqltTn: string | '',
efflWqltTp: string | '',
@@ -104,7 +104,7 @@ export type modalExcelType = {
"유출SS(mg/L)": string;
"유출TN(mg/L)": string;
"유출TP(mg/L)": string;
- "강우량(일)": string;
+ /* "강우량(mm/일)": string; */
}
/**====================================
@@ -133,7 +133,7 @@ const upHeadList1: TableUpperProps[] = [
{ id: "inflAssctAftWqltTn", title: "T-N\n(mg/L)", upName: "upChangeRe3", upSequnce: 4, align: "right", row: 1 },
{ id: "inflAssctAftWqltTp", title: "T-P\n(mg/L)", upName: "upChangeRe3", upSequnce: 3, align: "right", row: 1 },
{ id: "efflWqltBod", title: "BOD\n(mg/L)", upName: "upChangeRe4", upSequnce: 1, align: "right", row: 1 },
- { id: "efflWqltCod", title: "TOC\n(COD)\n(mg/L)", upName: "upChangeRe4", upSequnce: 2, align: "right", row: 1 },
+ { id: "efflWqltToc", title: "TOC\n(COD)\n(mg/L)", upName: "upChangeRe4", upSequnce: 2, align: "right", row: 1 },
{ id: "efflWqltSs", title: "SS\n(mg/L)", upName: "upChangeRe4", upSequnce: 3, align: "right", row: 1 },
{ id: "efflWqltTn", title: "T-N\n(mg/L)", upName: "upChangeRe4", upSequnce: 4, align: "right", row: 1 },
{ id: "efflWqltTp", title: "T-P\n(mg/L)", upName: "upChangeRe4", upSequnce: 3, align: "right", row: 1 },
@@ -157,7 +157,7 @@ const upHeadList2: TableUpperProps[] = [
{ id: "inflAssctAftWqltTn", title: "T-N\n(mg/L)", upName: "upChangeRe3", upSequnce: 2, align: "right", row:1 },
{ id: "inflAssctAftWqltTp", title: "T-P\n(mg/L)", upName: "upChangeRe3", upSequnce: 3, align: "right", row:1 },
{ id: "efflWqltBod", title: "BOD\n(mg/L)", upName: "upChangeRe4", upSequnce: 1, align: "right", row:1 },
- { id: "efflWqltCod", title: "TOC\n(COD)\n(mg/L)", upName: "upChangeRe4", upSequnce: 2, align: "right", row:1 },
+ { id: "efflWqltToc", title: "TOC\n(COD)\n(mg/L)", upName: "upChangeRe4", upSequnce: 2, align: "right", row:1 },
{ id: "efflWqltSs", title: "SS\n(mg/L)", upName: "upChangeRe4", upSequnce: 3, align: "right", row:1 },
{ id: "efflWqltTn", title: "T-N\n(mg/L)", upName: "upChangeRe4", upSequnce: 2, align: "right", row:1 },
{ id: "efflWqltTp", title: "T-P\n(mg/L)", upName: "upChangeRe4", upSequnce: 3, align: "right", row:1 },
@@ -185,7 +185,7 @@ const upHeadList3: TableUpperProps[] = [
{ id: "inflAssctAftWqltTn", title: "T-N\n(mg/L)", upName: "upChangeRe3", upSequnce: 2, align: "right", row:1 },
{ id: "inflAssctAftWqltTp", title: "T-P\n(mg/L)", upName: "upChangeRe3", upSequnce: 3, align: "right", row:1 },
{ id: "efflWqltBod", title: "BOD\n(mg/L)", upName: "upChangeRe4", upSequnce: 1, align: "right", row:1 },
- { id: "efflWqltCod", title: "TOC\n(COD)\n(mg/L)", upName: "upChangeRe4", upSequnce: 2, align: "right", row:1 },
+ { id: "efflWqltToc", title: "TOC\n(COD)\n(mg/L)", upName: "upChangeRe4", upSequnce: 2, align: "right", row:1 },
{ id: "efflWqltSs", title: "SS\n(mg/L)", upName: "upChangeRe4", upSequnce: 3, align: "right", row:1 },
{ id: "efflWqltTn", title: "T-N\n(mg/L)", upName: "upChangeRe4", upSequnce: 2, align: "right", row:1 },
{ id: "efflWqltTp", title: "T-P\n(mg/L)", upName: "upChangeRe4", upSequnce: 3, align: "right", row:1 },
@@ -203,11 +203,11 @@ const upHeadListModalYear: TableUpperProps[] = [
{ id: "inflAssctAftWqltTn", title: "T-N\n(mg/L)", upName: "upChangeRe1", upSequnce: 2, align: "right" },
{ id: "inflAssctBfrWqltTp", title: "T-P\n(mg/L)", upName: "upChangeRe1", upSequnce: 3, align: "right" },
{ id: "efflWqltBod", title: "BOD\n(mg/L)", upName: "upChangeRe2", upSequnce: 1, align: "right" },
- { id: "efflWqltCod", title: "TOC(COD)\n(mg/L)", upName: "upChangeRe2", upSequnce: 2, align: "right" },
+ { id: "efflWqltToc", title: "TOC(COD)\n(mg/L)", upName: "upChangeRe2", upSequnce: 2, align: "right" },
{ 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: "강우량", align: "right" },
+ /* { id: "infoRnDay", title: "강우량(mm/일)", align: "right" }, */
];
// 처리시설 수질현황 헤더(모달-수질TMS)
@@ -409,8 +409,8 @@ export const facilityWaterQltyReducer = (set: (fn: (state: FacilityWaterQltyType
if(item.inflAssctAftWqltToc){
item.inflAssctAftWqltToc = Number(Math.round(Number(item.inflAssctAftWqltToc) * 10)/10).toFixed(1);
}
- if(item.efflWqltCod){
- item.efflWqltCod = Number(Math.round(Number(item.efflWqltCod) * 10)/10).toFixed(1);
+ if(item.efflWqltToc){
+ item.efflWqltToc = Number(Math.round(Number(item.efflWqltToc) * 10)/10).toFixed(1);
}
if(item.inflAssctAftWqltBod){
item.inflAssctAftWqltBod = Number(Math.round(Number(item.inflAssctAftWqltBod) * 10)/10).toFixed(1);
@@ -427,8 +427,8 @@ export const facilityWaterQltyReducer = (set: (fn: (state: FacilityWaterQltyType
if(item.inflAssctAftWqltToc){
item.inflAssctAftWqltToc = Number(Math.round(Number(item.inflAssctAftWqltToc) * 10)/10).toFixed(1);
}
- if(item.efflWqltCod){
- item.efflWqltCod = Number(Math.round(Number(item.efflWqltCod) * 10)/10).toFixed(1);
+ if(item.efflWqltToc){
+ item.efflWqltToc = Number(Math.round(Number(item.efflWqltToc) * 10)/10).toFixed(1);
}
return item;
});
@@ -456,7 +456,7 @@ export const facilityWaterQltyReducer = (set: (fn: (state: FacilityWaterQltyType
유입TN: item.inflAssctAftWqltTn,
유입TP: item.inflAssctAftWqltTp,
유출BOD: item.efflWqltBod,
- 유출TOC: item.efflWqltCod,
+ 유출TOC: item.efflWqltToc,
유출SS: item.efflWqltSs,
유출TN: item.efflWqltTn,
유출TP: item.efflWqltTp,
@@ -610,8 +610,8 @@ export const facilityWaterQltyReducer = (set: (fn: (state: FacilityWaterQltyType
if(item.inflAssctAftWqltToc){
item.inflAssctAftWqltToc = Number(Math.round(Number(item.inflAssctAftWqltToc) * 10)/10).toFixed(1);
}
- if(item.efflWqltCod){
- item.efflWqltCod = Number(Math.round(Number(item.efflWqltCod) * 10)/10).toFixed(1);
+ if(item.efflWqltToc){
+ item.efflWqltToc = Number(Math.round(Number(item.efflWqltToc) * 10)/10).toFixed(1);
}
if(item.inflAssctAftWqltBod){
item.inflAssctAftWqltBod = Number(Math.round(Number(item.inflAssctAftWqltBod) * 10)/10).toFixed(1);
@@ -628,8 +628,8 @@ export const facilityWaterQltyReducer = (set: (fn: (state: FacilityWaterQltyType
if(item.inflAssctAftWqltToc){
item.inflAssctAftWqltToc = Number(Math.round(Number(item.inflAssctAftWqltToc) * 10)/10).toFixed(1);
}
- if(item.efflWqltCod){
- item.efflWqltCod = Number(Math.round(Number(item.efflWqltCod) * 10)/10).toFixed(1);
+ if(item.efflWqltToc){
+ item.efflWqltToc = Number(Math.round(Number(item.efflWqltToc) * 10)/10).toFixed(1);
}
if(item.tpInflWqltBod){
diff --git a/apps/fo/app/store/flowRate/index.tsx b/apps/fo/app/store/flowRate/index.tsx
index a619ddf85..38cb4e2e6 100644
--- a/apps/fo/app/store/flowRate/index.tsx
+++ b/apps/fo/app/store/flowRate/index.tsx
@@ -13,8 +13,8 @@ const FlowRateSearchLabelArray:string[] = ['구분', '시도', '시군구', '용
export type flowRateListProps = {
bscFctCd : string,
- sidoNm : string,
- sggNm : string,
+ sido : string,
+ gugun : string,
bscFctNm : string,
daddr : string,
fctCpc : number,
@@ -50,13 +50,13 @@ export interface ExcelType {
}
export type modalExcelType = {
- 날짜: string,
+ "날짜": string,
"총유입량(m³/일)": number | '',
"하수유입량(m³/일)": number | '',
"연계처리량(m³/일)": number | '',
"총인반류수량(m³/일)": number | '',
"방류량(m³/일)": number | '',
- "강우량": number | string | '',
+ /* "강우량(mm/일)": number | string | '', */
}
/**
* (2) 모달
@@ -93,8 +93,8 @@ export type FlowRateModalProps = {
const upHeadList1:TableUpperProps[] = [
{ id: "bscFctCd", title: "시설코드", row:0, rowSpan:2},
{ id: "A", title: "행정명", row: 0 ,colSpan: 2 },
- { id: "sidoNm", title: "시도", upName:"upChangeRe", row:1 },
- { id: "sggNm", title: "시군구", upName:"upChangeRe", row:1 },
+ { id: "sido", title: "시도", upName:"upChangeRe", row:1 },
+ { id: "gugun", title: "시군구", upName:"upChangeRe", row:1 },
{ id: "bscFctNm", title: "시설명", row: 0, rowSpan: 2},
{ id: "daddr", title: "주소", row: 0, rowSpan: 2},
{ id: "fctCpc", title: "시설용량\n(m³/일)", align:"right", row: 0, rowSpan: 2},
@@ -131,8 +131,8 @@ const upHeadList3:TableUpperProps[] = [
{ id: "mdmbsn", title: "중권역", upName:"upChangeRe1", row:1 },
{ id: "rgnNm", title: "환경청", row:0, rowSpan:2 },
{ id: "B", title: "행정명", row: 0 ,colSpan: 2 },
- { id: "ctpvNm", title: "시도", upName:"upChangeRe2", row:1 },
- { id: "sggNm", title: "시군구", upName:"upChangeRe2", row:1 },
+ { id: "sido", title: "시도", upName:"upChangeRe2", row:1 },
+ { id: "gugun", title: "시군구", upName:"upChangeRe2", row:1 },
{ id: "bscFctNm", title: "시설명", row: 0, rowSpan: 2 },
{ id: "daddr", title: "주소", row: 0, rowSpan: 2 },
{ id: "fctCpc", title: "시설용량\n(m³/일)", align:"right", row: 0, rowSpan: 2 },
@@ -157,7 +157,7 @@ const upHeadListFlowRateModal:TableUpperProps[] = [
{ id: "sumFlow", title: "연계처리량(m³/일)", align:"right"},
{ id: "returnAmnt", title: "총인 반류수량(m³/일)", align:"right"},
{ id: "efflAmnt", title: "방류량(m³/일)", align:"right"},
- { id: "infoRnDay", title: "강우량", align:"right"}
+ /* { id: "infoRnDay", title: "강우량(mm/일)", align:"right"} */
]
const modalFlowRateListYear:FlowRateModalProps[] = [
@@ -268,11 +268,8 @@ export const flowRateSearchReducer:(set:(fn: (state: FlowRateSearchType) => Flow
const res = await fetchFlowRateList(pageNo, pageSize, searchYear, partCd, nameCd, fcltCpct, operationValue, fcltyNm);
const data = res.data;
const excelDownList: ExcelType[] = [];
-
const rtnData = data.map((item: flowRateListProps) => {
item.fctCpc = parseFloat(item.fctCpc.toString().replace(/,/g, ''));
- item.sidoNm = item.lclgvrnmntNm.split(' ')[0]?.toString() || '';
- item.sggNm = item.lclgvrnmntNm.split(' ')[1]?.toString() || '';
item.totInflAmnt = Number(item.inflAmnt || 0) + Number(item.sumFlow || 0) + Number(item.returnAmnt || 0)
dataFormSetting(item);
return item;
@@ -286,8 +283,8 @@ export const flowRateSearchReducer:(set:(fn: (state: FlowRateSearchType) => Flow
단위유역: item.lgbsn,
중권역: item.mdmbsn,
환경청: item.rgnNm,
- 시도: item.sidoNm,
- 시군구: item.sggNm,
+ 시도: item.sido,
+ 시군구: item.gugun,
시설이름: item.bscFctNm,
주소: item.daddr,
용량: item.fctCpc,
@@ -300,7 +297,6 @@ export const flowRateSearchReducer:(set:(fn: (state: FlowRateSearchType) => Flow
});
}
- console.log('excelDownList' , excelDownList);
set((state: FlowRateSearchType) => ({
...state,
FlowRateList: pageSize<5000?{
@@ -316,8 +312,14 @@ export const flowRateSearchReducer:(set:(fn: (state: FlowRateSearchType) => Flow
searchFlowRateModalList: async (bscFctCd: string, searchYear: string) => {
const res = await fetchFlowRateModalList(bscFctCd, searchYear);
const data = res.data;
-
const tmpData:FlowRateModalProps[] = [];
+
+ data.forEach((item: FlowRateModalProps) => {
+ if(item.infoRnDay && item.infoRnDay.toString().trim() === 'x') {
+ item.infoRnDay = '';
+ }
+ });
+
// facilityPrecipitation의 rainEffectDay 계산 로직을 적용
for(let idx = 0; idx < data.length; idx++) {
const item = data[idx];
diff --git a/apps/fo/app/store/sewageOccur/index.tsx b/apps/fo/app/store/sewageOccur/index.tsx
index 93de7ca94..f5d300aa1 100644
--- a/apps/fo/app/store/sewageOccur/index.tsx
+++ b/apps/fo/app/store/sewageOccur/index.tsx
@@ -1,4 +1,3 @@
-import DataForm from "@/app/components/common/DataForm";
import type { TableUpperProps } from "../dashboard";
import { getFetch } from "@/app/components/api";
export type { TableUpperProps };
@@ -29,21 +28,14 @@ export type SewageOccurProps = {
mdmbsn : string,
msrDt : string,
}
-
+export type modalTableType = { msrDt: string,waterUsage: number,swageChangePercent: number,estimationSewage: number};
export type SewageOccurDetailProps = {
- msrDt : string,
- waterUsage : number,
- swageChangePercent : number,
- estimationSewage : number,
+ cnt : number,
+ sum : number,
+ yr:string,
+ usege:number
}
-/**====================================
- * Store - data
- ====================================*/
-
-/**
- * (1) 메인페이지
- */
// 검색단
const LabelArray:string[] = ['구분', '시도', '시군구','용량별', '시설명', '조회기간', '시설상태', '권역', '단위유역', '중권역', '환경청별'];
@@ -120,159 +112,13 @@ const upHeadList3:TableUpperProps[] = [
const upHeadListSewageOccurDetail:TableUpperProps[] = [
{ id: "msrDt", title: "년월" },
{ id: "waterUsage", title: "물사용량(m³/일)" },
- { id: "swageChangePercent", title: "오수전환율" },
+ { id: "swageChangePercent", title: "오수전환율(%)" },
{ id: "estimationSewage", title: "오수발생량 추정(m³/일)", row:0, rowSpan:2 },
];
-const sewageOccurList:SewageOccurProps[] = [
-]
+const sewageOccurList:SewageOccurProps[] = []
-const tempSewageOccurList:SewageOccurDetailProps[] = [
- {
- msrDt: '2024-01',
- waterUsage: 100,
- swageChangePercent: 80,
- estimationSewage: 60,
- },
- {
- msrDt: '2024-02',
- waterUsage: 106,
- swageChangePercent: 80,
- estimationSewage: 80,
- },
- {
- msrDt: '2024-03',
- waterUsage: 100,
- swageChangePercent: 80,
- estimationSewage: 80,
- },
- {
- msrDt: '2024-04',
- waterUsage: 100,
- swageChangePercent: 80,
- estimationSewage: 80,
- },
- {
- msrDt: '2024-05',
- waterUsage: 100,
- swageChangePercent: 10,
- estimationSewage: 80,
- },
- {
- msrDt: '2024-06',
- waterUsage: 100,
- swageChangePercent: 80,
- estimationSewage: 80,
- },
- {
- msrDt: '2024-07',
- waterUsage: 100,
- swageChangePercent: 580,
- estimationSewage: 80,
- },
- {
- msrDt: '2024-08',
- waterUsage: 100,
- swageChangePercent: 80,
- estimationSewage: 80,
- },
- {
- msrDt: '2024-09',
- waterUsage: 100,
- swageChangePercent: 80,
- estimationSewage: 80,
- },
- {
- msrDt: '2024-10',
- waterUsage: 100,
- swageChangePercent: 80,
- estimationSewage: 80,
- },
- {
- msrDt: '2024-11',
- waterUsage: 100,
- swageChangePercent: 80,
- estimationSewage: 80,
- },
- {
- msrDt: '2024-12',
- waterUsage: 100,
- swageChangePercent: 80,
- estimationSewage: 80,
- },
- {
- msrDt: '2025-01',
- waterUsage: 100,
- swageChangePercent: 80,
- estimationSewage: 80,
- },
- {
- msrDt: '2025-02',
- waterUsage: 100,
- swageChangePercent: 80,
- estimationSewage: 80,
- },
- {
- msrDt: '2025-03',
- waterUsage: 100,
- swageChangePercent: 80,
- estimationSewage: 80,
- },
- {
- msrDt: '2025-04',
- waterUsage: 100,
- swageChangePercent: 80,
- estimationSewage: 80,
- },
- {
- msrDt: '2025-05',
- waterUsage: 100,
- swageChangePercent: 80,
- estimationSewage: 80,
- },
- {
- msrDt: '2025-06',
- waterUsage: 100,
- swageChangePercent: 80,
- estimationSewage: 80,
- },
- {
- msrDt: '2025-07',
- waterUsage: 100,
- swageChangePercent: 80,
- estimationSewage: 80,
- },
- {
- msrDt: '2025-08',
- waterUsage: 100,
- swageChangePercent: 0.8,
- estimationSewage: 80,
- },
- {
- msrDt: '2025-09',
- waterUsage: 100,
- swageChangePercent: 80,
- estimationSewage: 80,
- },
- {
- msrDt: '2025-10',
- waterUsage: 100,
- swageChangePercent: 80,
- estimationSewage: 80,
- },
- {
- msrDt: '2025-11',
- waterUsage: 100,
- swageChangePercent: 80,
- estimationSewage: 80,
- },
- {
- msrDt: '2025-12',
- waterUsage: 100,
- swageChangePercent: 80,
- estimationSewage: 80,
- },
-]
+const tempSewageOccurList:modalTableType[] = []
/**====================================
* Store - API
@@ -280,11 +126,6 @@ const tempSewageOccurList:SewageOccurDetailProps[] = [
const fetchSewageOccurList = async (pageNo: number, pageSize: number, searchYear: string, partCd?: string, nameCd?: string, fcltCpct?: string, operationValue?: string, fcltyNm?: string) => {
// 20250701임시시
- console.log("partCd", partCd);
- console.log("nameCd", nameCd);
- console.log("fcltCpct", fcltCpct);
- console.log("operationValue", operationValue);
- console.log("fcltyNm", fcltyNm);
console.log("searchYear", searchYear);
const tailStr = partCd ? '/'+ partCd + '/' + nameCd + '/' + fcltCpct + '/' + operationValue + (fcltyNm && fcltyNm !== '' ? '/' + fcltyNm : '') : '';
const url = '/fclt/flow/' + pageNo + '/' + pageSize + '/' + searchYear + tailStr;
@@ -304,6 +145,7 @@ const fetchSewageOccurList = async (pageNo: number, pageSize: number, searchYear
====================================*/
export type SewageOccurActions = {
searchSewageOccurList: (pageNo: number, pageSize: number, searchYear: string, part?: string, nameCd?: string, fcltCpct?: string, operationValue?: string, fcltyNm?: string) => void;
+ searchSewageOccurDetailList: (bscFctCd: string, searchYear: string) => void;
}
export type SewageOccurType = {
@@ -325,7 +167,7 @@ export type SewageOccurType = {
SewageOccurDetail : {
isInit: boolean;
upHeadListSewageOccurDetail: TableUpperProps[];
- gridListSewageOccurDetail: SewageOccurDetailProps[];
+ gridListSewageOccurDetail: modalTableType[];
}
}
@@ -352,14 +194,6 @@ export const sewageOccurInitState: SewageOccurType = {
}
}
-const dataFormSetting=(item : SewageOccurProps)=> {
- DataForm({ type: 'float1', column: 'fctCpc', item: item as unknown as Record });
- DataForm({ type: 'float1', column: 'waterUsage', item: item as unknown as Record});
- DataForm({ type: 'float2', column: 'estimationSewage', item: item as unknown as Record});
- DataForm({ type: 'float2', column: 'sewageInputYear', item: item as unknown as Record});
- DataForm({ type: 'float2', column: 'sewageInputChungchun', item: item as unknown as Record});
-}
-
export type SewageOccurStore = SewageOccurType & SewageOccurActions;
// Add type definitions for API responses
@@ -375,9 +209,7 @@ type FlowResponse = {
count: number;
}
-type SetStateFunction = (state: SewageOccurType | ((state: SewageOccurType) => SewageOccurType)) => void;
-
-export const sewageOccurReducer:(set:SetStateFunction)=>SewageOccurActions=(set: SetStateFunction) => {
+export const sewageOccurReducer:(set:any)=>SewageOccurActions=(set: any) => {
return {
searchSewageOccurList: async (pageNo: number, pageSize: number, searchYear: string, part?: string, nameCd?: string, fcltCpct?: string, operationValue?: string, fcltyNm?: string) => {
const res = await fetchSewageOccurList(pageNo, pageSize, searchYear, part, nameCd, fcltCpct, operationValue, fcltyNm);
@@ -388,67 +220,31 @@ export const sewageOccurReducer:(set:SetStateFunction)=>SewageOccurActions=(set:
item.sidoNm = item.lclgvrnmntNm.split(' ')[0]?.toString() || '';
item.sggNm = item.lclgvrnmntNm.split(' ')[1]?.toString() || '';
item.fctCpc = parseFloat(item.fctCpc.toString().replace(/,/g, ''));
- item.waterUsage = item.fctCpc * 0.6;
item.swageChangePercent = 80;
- item.estimationSewage = item.waterUsage * (item.swageChangePercent/100);
+
const bscFctCd = item.bscFctCd;
- const url2 = '/fclt/flow/' + bscFctCd + '/' + searchYear;
- const res2 = await getFetch('fo', url2) as FlowResponse;
- const sumFlow = res2.data.reduce((acc: number, curr: FlowDataItem) => Number(acc) + Number(curr.inflAmnt), 0);
+ const res2 = await getFetch('fo', '/fclt/flow/' + bscFctCd + '/' + searchYear) as FlowResponse;
let sumChungcunDay = 0;
let chungcunSumFlow = 0;
-
+ let totWaterUsage = 0;
res2.data.forEach((item: FlowDataItem) => {
if(Number(item.infoRnDay) ===0){
chungcunSumFlow += Number(item.inflAmnt);
sumChungcunDay += 1;
- }else{
- console.log(item.bscFctCd +' day : ' +' '+item.msrDt);
}
+ totWaterUsage += Number(item.inflAmnt);
});
-
- item.sewageInputYear = sumFlow/res2.count;
- item.sewageInputChungchun = chungcunSumFlow===0?0:(chungcunSumFlow / sumChungcunDay);
+ const avg = totWaterUsage /res2.count;
+ item.waterUsage = parseFloat((avg * 0.65).toFixed(2));
+ item.sewageInputYear = parseFloat(avg.toFixed(2));
+ item.sewageInputChungchun = parseFloat((chungcunSumFlow===0?0:(chungcunSumFlow / sumChungcunDay)).toFixed(2));
+ item.estimationSewage = parseFloat((item.waterUsage * (item.swageChangePercent/100)).toFixed(2));
return item;
}));
-
- console.log('calData : ', calData);
-
- const excelDownList: ExcelType[] = [];
- if(pageSize>5000){
- calData.forEach(item => {
- dataFormSetting(item)
- item.fctCpc = parseFloat(item.fctCpc.toString().replace(/,/g, ''));
- /* item.ctpvNm = item.lclgvrnmntNm.split(' ')[0]?.toString() || '';
- item.sggNm = item.lclgvrnmntNm.split(' ')[1]?.toString() || ''; */
- excelDownList.push({
- 시설코드: item.bscFctCd,
- 권역: item.rvbsn,
- 단위유역: item.lgbsn,
- 중권역: item.mdmbsn,
- 환경청: item.rgnNm,
- 시도: item.sidoNm,
- 시군구: item.sggNm,
- 시설명: item.bscFctNm,
- 주소: item.daddr,
- 시설용량: item.fctCpc,
- 물사용량: item.waterUsage,
- 오수전환율: item.swageChangePercent,
- 오수발생량추정: item.estimationSewage,
- 연간하수유입량: item.sewageInputYear,
- 청천시하수유입량: item.sewageInputChungchun,
- });
- });
- }else{
- calData.forEach((item: SewageOccurProps) => {
- dataFormSetting(item)
- /* item.sidoNmNm = item.lclgvrnmntNm.split(' ')[0]?.toString() || '';
- item.sggNm = item.lclgvrnmntNm.split(' ')[1]?.toString() || ''; */
- });
- }
- set((state: SewageOccurType) => ({
+ // 조회 데이터 설정
+ set((state: any) => ({
...state,
SewageOccur: pageSize<5000?{
...state.SewageOccur,
@@ -456,7 +252,81 @@ export const sewageOccurReducer:(set:SetStateFunction)=>SewageOccurActions=(set:
sewageOccurCount: res.count,
}:{
...state.SewageOccur,
- excelList: excelDownList,
+ excelList: [],
+ }
+ }))
+ },
+
+ searchSewageOccurDetailList: async (bscFctCd: string, searchYear: string) => {
+ const res = await getFetch('fo', '/fclt/flow/' + bscFctCd + '/' + searchYear);
+ const monthData: SewageOccurDetailProps[] = [];
+ let tot = 0, cnt= 0
+ res.data.forEach((item: FlowDataItem) => {
+ const month = item.msrDt?.substring(4, 6);
+ const monthIdx = month ? Number(month) - 1 : -1;
+ if (monthIdx >= 0) {
+ if (typeof monthData[monthIdx] === 'object') {
+ monthData[monthIdx].sum += Number(item.inflAmnt);
+ monthData[monthIdx].cnt++;
+ } else {
+ monthData[monthIdx] = {cnt:1, sum:Number(item.inflAmnt), yr:item.msrDt.substring(0,4), usege:0};
+ }
+ }
+ tot += Number(item.inflAmnt)
+ cnt++
+ })
+ console.log('tot', tot, cnt, tot/cnt, tot/cnt*0.65);
+ const tableData:modalTableType[] = []
+
+ let maxWaterUsage = 0;
+ let minWaterUsage = 9999999999;
+ let avgWaterUsage = 0;
+ monthData.forEach((item, index) => {
+ item.usege = item.sum/item.cnt *0.65
+ tableData.push({
+ msrDt: item.yr+'-'+(index+1>10?String(index+1):'0'+(index+1)),
+ waterUsage: Math.round(item.usege*100) /100,
+ swageChangePercent: (Math.round((item.usege/item.usege*0.8) * 100) / 100) * 100,
+ estimationSewage: Math.round(item.usege*0.8 * 100) / 100
+ })
+ if (item.usege > maxWaterUsage) {
+ maxWaterUsage = item.usege;
+ }
+
+ if (item.usege < minWaterUsage) {
+ minWaterUsage = item.usege;
+ }
+
+ });
+ avgWaterUsage = tot/cnt*0.65
+
+ const newData= [
+ {
+ msrDt: '평균',
+ waterUsage: Math.round(avgWaterUsage*100) /100,
+ swageChangePercent: 80,
+ estimationSewage: Math.round(avgWaterUsage*0.8*100) /100,
+ },
+ {
+ msrDt: '최대',
+ waterUsage: Math.round(maxWaterUsage*100) /100,
+ swageChangePercent: 80,
+ estimationSewage: Math.round(maxWaterUsage*0.8*100) /100,
+ },
+ {
+ msrDt: '최소',
+ waterUsage: Math.round(minWaterUsage*100) /100,
+ swageChangePercent: 80,
+ estimationSewage: Math.round(minWaterUsage*0.8*100) /100,
+ },
+ ...tableData
+ ]
+
+ set((state: SewageOccurType) => ({
+ ...state,
+ SewageOccurDetail: {
+ ...state.SewageOccurDetail,
+ gridListSewageOccurDetail: newData,
}
}))
},
diff --git a/apps/fo/app/store/store.tsx b/apps/fo/app/store/store.tsx
index f17801d1f..512458c90 100644
--- a/apps/fo/app/store/store.tsx
+++ b/apps/fo/app/store/store.tsx
@@ -1,13 +1,19 @@
+import { LoginApi } from '@/src/entities/auth/api/login-service';
import { createStore } from 'zustand/vanilla';
import { CommonReducer, commonState, type CommonStore, type CommonType } from './common';
-import { dashBoardReducer, dashBoardInitState, type DashBoardStore, type DashBoardType } from './dashboard';
+import { dashBoardInitState, dashBoardReducer, type DashBoardStore, type DashBoardType } from './dashboard';
import {
facilityPrecipitationInitState,
facilityPrecipitationReducer,
type FacilityPrecipitationStore, type FacilityPrecipitationType
} from './facilityPrecipitation';
-import { planSewageInitState, planSewageReducer, type PlanSewageStore, type PlanSewageType } from './planSewage';
+import {
+ facilityWaterQltyInitState,
+ facilityWaterQltyReducer,
+ type FacilityWaterQltyStore, type FacilityWaterQltyType
+} from './facilityWaterQlty';
import { flowRateSearchInitState, flowRateSearchReducer, type FlowRateSearchStore, type FlowRateSearchType } from './flowRate';
+import { planSewageInitState, planSewageReducer, type PlanSewageStore, type PlanSewageType } from './planSewage';
import {
processAreaInitState,
processAreaReducer,
@@ -18,11 +24,12 @@ import {
processFacilityReducer,
type ProcessFacilityStore, type ProcessFacilityType
} from './processFacility';
+import { tableActionsExport, tableStateExport, type tableState, type tableType } from './publicReuseFaciltyInsert/index';
import {
- facilityWaterQltyInitState,
- facilityWaterQltyReducer,
- type FacilityWaterQltyStore, type FacilityWaterQltyType
-} from './facilityWaterQlty';
+ rdiInitState,
+ rdiReducer,
+ type RdiStore, type RdiType
+} from './rdi';
import {
sewageOccurInitState,
sewageOccurReducer,
@@ -33,12 +40,6 @@ import {
underWaterReducer,
type UnderWaterStore, type UnderWaterType
} from './underWaterInput';
-import {
- rdiInitState,
- rdiReducer,
- type RdiStore, type RdiType
-} from './rdi';
-import { tableActionsExport, tableStateExport, type tableState, type tableType } from './publicReuseFaciltyInsert/index';
export type FoStore = CommonStore & tableType & DashBoardStore & ProcessFacilityStore & ProcessAreaStore & FlowRateSearchStore & FacilityPrecipitationStore & FacilityWaterQltyStore & PlanSewageStore & SewageOccurStore & UnderWaterStore & RdiStore;
export type FoState = CommonType & tableState & ProcessFacilityType & ProcessAreaType & FacilityPrecipitationType & FlowRateSearchType & DashBoardType & FacilityWaterQltyType & PlanSewageType & SewageOccurType & UnderWaterType & RdiType;
@@ -58,6 +59,7 @@ export const StoreZus =
}
) => {
return createStore()((set) => {
+ LoginApi.login({userId: "admin1gmail", password: "test1234!"})
return {
...initState,
...CommonReducer(set),
diff --git a/apps/fo/app/store/underWaterInput/index.tsx b/apps/fo/app/store/underWaterInput/index.tsx
index ea6f4575b..912d8673e 100644
--- a/apps/fo/app/store/underWaterInput/index.tsx
+++ b/apps/fo/app/store/underWaterInput/index.tsx
@@ -1,6 +1,8 @@
import DataForm from "@/app/components/common/DataForm";
import type { TableUpperProps } from "../dashboard";
import { getFetch } from "@/app/components/api";
+import type { ExcelType, UnderWaterInputModalProps, UnderWaterProps } from "./types";
+import type { SewageOccurDetailProps } from "../sewageOccur";
export type { TableUpperProps };
/**====================================
* Store - 타입
@@ -10,47 +12,6 @@ export type { TableUpperProps };
* (1) 메인페이지
*/
// 시설별 강수현황
-export type UnderWaterProps = {
- bscFctCd : string,
- lclgvrnmntNm : string,
- sidoNm : string,
- sggNm : string,
- bscFctNm : string,
- daddr : string,
- fctCpc : number,
- underWaterInputYear : number,
- underWaterInputSummer : number,
- underWaterInputWinter : number,
- infoRnDay : number,
- rgnNm : string,
- rvbsn : string,
- lgbsn : string,
- mdmbsn : string,
-}
-export interface UnderWaterInterface {
- bscFctCd : string,
- sidoNm : string,
- sggNm : string,
- bscFctNm : string,
- daddr : string,
- fctCpc : number,
- underWaterInputYear : number,
- underWaterInputSummer : number,
- underWaterInputWinter : number,
- infoRnDay : number,
- rgnNm : string,
- rvbsn : string,
- lgbsn : string,
- mdmbsn : string,
-}
-
-// 모달
-export interface UnderWaterInputModalProps {
- msrDt : string,
- realSewageInput : number | '',
- sewageOccur : number | '',
- underWaterInput : number | '',
-}
/**====================================
* Store - data
@@ -62,22 +23,6 @@ export interface UnderWaterInputModalProps {
// 검색단
const LabelArray:string[] = ['구분', '시도', '시군구','용량별', '시설명', '조회기간', '시설상태', '권역', '단위유역', '중권역', '환경청별'];
-export interface ExcelType {
- 시설코드: string,
- 권역:string|'',
- 단위유역:string|'',
- 중권역:string|'',
- 환경청:string|'',
- 시도: string,
- 시군구: string,
- 시설명: string,
- 주소: string,
- 시설용량: number,
- 연간지하수유입량: number | '',
- 하절기지하수유입량: number | '',
- 동절기지하수유입량: number | '',
-}
-
// 리스트 헤더
const upHeadList1:TableUpperProps[] = [
{ id: "bscFctCd", title: "시설코드", row:0, rowSpan:2 },
@@ -247,6 +192,7 @@ const fetchUnderWaterList = async (pageNo: number, pageSize: number, searchYear:
====================================*/
export type UnderWaterActions = {
searchUnderWaterList: (pageNo: number, pageSize: number, searchYear: string, part?: string, nameCd?: string, fcltCpct?: string, operationValue?: string, fcltyNm?: string) => void;
+ unserWaterModal:(bscFctCd:string, searchYear:string)=>void
}
export type UnderWaterType = {
@@ -315,8 +261,7 @@ export const underWaterReducer:(set:(fn: (state: UnderWaterType) => UnderWaterTy
item.fctCpc = parseFloat(item.fctCpc.toString().replace(/,/g, ''));
const bscFctCd = item.bscFctCd;
- const url2 = '/fclt/flow/' + bscFctCd + '/' + searchYear;
- const res2 = await getFetch('fo', url2) as ApiResponse;
+ const res2 = await getFetch('fo', '/fclt/flow/' + bscFctCd + '/' + searchYear) as ApiResponse;
let sumChungcunDay = 0;
let chungcunSumFlow = 0;
@@ -393,5 +338,77 @@ export const underWaterReducer:(set:(fn: (state: UnderWaterType) => UnderWaterTy
}
}))
},
+ unserWaterModal:async (bscFctCd, searchYear)=>{
+ const res = await getFetch('fo', '/fclt/flow/' + bscFctCd + '/' + searchYear);
+ const monthData: SewageOccurDetailProps[] = [];
+ let tot = 0, cnt= 0
+ res.data.forEach((item: FlowDataItem) => {
+ const month = item.msrDt?.substring(4, 6);
+ const monthIdx = month ? Number(month) - 1 : -1;
+ if (monthIdx >= 0) {
+ if (typeof monthData[monthIdx] === 'object') {
+ monthData[monthIdx].sum += Number(item.inflAmnt);
+ monthData[monthIdx].cnt++;
+ } else {
+ monthData[monthIdx] = {cnt:1, sum:Number(item.inflAmnt), yr:item.msrDt.substring(0,4), usege:0};
+ }
+ }
+ tot += Number(item.inflAmnt)
+ cnt++
+ })
+ const tableData:UnderWaterInputModalProps[] = []
+
+ let maxWaterUsage = 0;
+ let minWaterUsage = 9999999999;
+ let avgWaterUsage = 0;
+ monthData.forEach((item, index) => {
+ item.usege = item.sum/item.cnt
+ tableData.push({
+ msrDt: item.yr+'-'+(index+1>10?String(index+1):'0'+(index+1)),
+ realSewageInput:Math.round(item.usege*100) /100,
+ sewageOccur:Math.round(item.usege*0.65*0.8 * 100) / 100,
+ underWaterInput:Math.round((item.usege-(item.usege*0.65*0.8)) * 100) / 100,
+ })
+ if (item.usege > maxWaterUsage) {
+ maxWaterUsage = item.usege;
+ }
+
+ if (item.usege < minWaterUsage) {
+ minWaterUsage = item.usege;
+ }
+
+ });
+ avgWaterUsage = tot/cnt
+
+ const newData= [
+ {
+ msrDt: '평균',
+ realSewageInput:Math.round(avgWaterUsage*100) /100,
+ sewageOccur:Math.round(avgWaterUsage*0.65*0.8 * 100) / 100,
+ underWaterInput:Math.round((avgWaterUsage-(avgWaterUsage*0.65*0.8)) * 100) / 100,
+ },
+ {
+ msrDt: '최대',
+ realSewageInput: Math.round(maxWaterUsage*100) /100,
+ sewageOccur: Math.round(maxWaterUsage*0.65*0.8 * 100) / 100,
+ underWaterInput: Math.round((maxWaterUsage-(maxWaterUsage*0.65*0.8)) * 100) / 100,
+ },
+ {
+ msrDt: '최소',
+ realSewageInput: Math.round(minWaterUsage*100) /100,
+ sewageOccur: Math.round(minWaterUsage*0.65*0.8 * 100) / 100,
+ underWaterInput: Math.round((minWaterUsage-(minWaterUsage*0.65*0.8)) * 100) / 100,
+ },
+ ...tableData
+ ]
+
+ set((state: UnderWaterType) => ({
+ ...state,
+ UnderWaterDetail: {
+ ...state.UnderWaterDetail,
+ gridListUnderWaterDetail:newData
+ }
+ }))
+ }
}
}
\ No newline at end of file
diff --git a/apps/fo/app/store/underWaterInput/types.tsx b/apps/fo/app/store/underWaterInput/types.tsx
new file mode 100644
index 000000000..c90c654ad
--- /dev/null
+++ b/apps/fo/app/store/underWaterInput/types.tsx
@@ -0,0 +1,58 @@
+export type UnderWaterProps = {
+ bscFctCd : string,
+ lclgvrnmntNm : string,
+ sidoNm : string,
+ sggNm : string,
+ bscFctNm : string,
+ daddr : string,
+ fctCpc : number,
+ underWaterInputYear : number,
+ underWaterInputSummer : number,
+ underWaterInputWinter : number,
+ infoRnDay : number,
+ rgnNm : string,
+ rvbsn : string,
+ lgbsn : string,
+ mdmbsn : string,
+}
+export interface UnderWaterInterface {
+ bscFctCd : string,
+ sidoNm : string,
+ sggNm : string,
+ bscFctNm : string,
+ daddr : string,
+ fctCpc : number,
+ underWaterInputYear : number,
+ underWaterInputSummer : number,
+ underWaterInputWinter : number,
+ infoRnDay : number,
+ rgnNm : string,
+ rvbsn : string,
+ lgbsn : string,
+ mdmbsn : string,
+}
+
+// 모달
+export interface UnderWaterInputModalProps {
+ msrDt : string,
+ realSewageInput : number | '',
+ sewageOccur : number | '',
+ underWaterInput : number | '',
+}
+
+
+export interface ExcelType {
+ 시설코드: string,
+ 권역:string|'',
+ 단위유역:string|'',
+ 중권역:string|'',
+ 환경청:string|'',
+ 시도: string,
+ 시군구: string,
+ 시설명: string,
+ 주소: string,
+ 시설용량: number,
+ 연간지하수유입량: number | '',
+ 하절기지하수유입량: number | '',
+ 동절기지하수유입량: number | '',
+}
\ No newline at end of file
diff --git a/apps/fo/eslint.config.mjs b/apps/fo/eslint.config.mjs
index c85fb67c4..29e63f653 100644
--- a/apps/fo/eslint.config.mjs
+++ b/apps/fo/eslint.config.mjs
@@ -11,6 +11,10 @@ const compat = new FlatCompat({
const eslintConfig = [
...compat.extends("next/core-web-vitals", "next/typescript"),
+ {rules:{
+ // other rules..
+ "@typescript-eslint/no-explicit-any": "off",
+ }},
];
export default eslintConfig;
diff --git a/apps/fo/src/entities/auth/lib/token-manager.ts b/apps/fo/src/entities/auth/lib/token-manager.ts
index 40d32f33e..e86dba5f2 100644
--- a/apps/fo/src/entities/auth/lib/token-manager.ts
+++ b/apps/fo/src/entities/auth/lib/token-manager.ts
@@ -20,7 +20,7 @@ export class TokenManager {
public setToken(key: string, value: string): void {
setCookie(key, value, {
- secure: window.location.protocol === "https:",
+ secure: location.protocol === "https:",
sameSite: "lax",
});
}