-시설구분 삭제

-500이하 > 500미만
-대시보드에서 총인설비 유입이 없을 경우 해당 행 삭제
-지하수유입량 모달 시설명오류 수정
This commit is contained in:
2025-08-18 14:35:24 +09:00
parent 09aecc38ad
commit be131e37c2
5 changed files with 64 additions and 74 deletions
@@ -249,7 +249,6 @@ export default function ProcessFacilitySearch() {
<SelectBox className="col-span-3" label={processFacilityLabelArray[3] as string} selectArray={selectUpdownData} onSelectValue={val => setFcltCpct(val.toString())} value={fcltCpct} selectClass={undefined} />
<SearchInput className="col-span-3" label={processFacilityLabelArray[4] as string} textValue={fcltyName} setText={setFcltyName} />
<SelectBox className="col-span-3" label={processFacilityLabelArray[5] as string} selectArray={selectOperationData} onSelectValue={val => setOperationValue(val.toString())} value={operationValue} selectClass={undefined} />
<SelectBox className="col-span-3" label={processFacilityLabelArray[6] as string} selectArray={selectFacilityPartData} onSelectValue={val => setFacilityPartValue(val.toString())} value={facilityPartValue} selectClass={undefined} />
</>}
rightChildren={undefined}
selectSidoData={selectSidoData}
@@ -7,8 +7,9 @@ import { Table, TableCell, TableHead, TableRow, TabsContent } from "@common/comp
import { useEffect, useState } from "react";
type ModalProps ={
fcltyName: string;
searchYear : string;
fcltyCd?: string;
fcltyName?: string;
searchYear? : string;
}
const tabList1 = [
@@ -17,7 +18,7 @@ const tabList1 = [
{ value: 'tab_term_winter', label: '동절기' },
];
export default function UnderWaterInputModal({fcltyName='', searchYear=new Date().getFullYear().toString()} : ModalProps) {
export default function UnderWaterInputModal({fcltyCd='', fcltyName='',searchYear=new Date().getFullYear().toString()} : ModalProps) {
// 그리드 관련
const {UnderWaterDetail, unserWaterModal} = useFoStore((state) => state);
@@ -64,8 +65,8 @@ export default function UnderWaterInputModal({fcltyName='', searchYear=new Date(
}, [searchYear, tabTerm]);
useEffect(()=>{
unserWaterModal(fcltyName, searchYear, searchYear+'01', searchYear+'12');
}, [fcltyName, searchYear, unserWaterModal]);
unserWaterModal(fcltyCd, searchYear, searchYear+'01', searchYear+'12');
}, [fcltyCd, searchYear, unserWaterModal]);
useEffect(() => {
if(endYmDate < startYmDate) {
@@ -83,8 +84,8 @@ export default function UnderWaterInputModal({fcltyName='', searchYear=new Date(
}, [startYmDate, endYmDate, gridListUnderWaterDetail, prevStartYmDate, prevEndYmDate]);
useEffect(() => {
unserWaterModal(fcltyName, searchYear, prevStartYmDate, prevEndYmDate);
} , [fcltyName, searchYear, unserWaterModal, prevStartYmDate, prevEndYmDate]);
unserWaterModal(fcltyCd, searchYear, prevStartYmDate, prevEndYmDate);
} , [fcltyCd, searchYear, unserWaterModal, prevStartYmDate, prevEndYmDate]);
return (
<>
@@ -66,11 +66,11 @@ export default function UnderWaterInput() {
// 모달 상태 추가
const [selectedRow, setSelectedRow] = useState<number | null>(null);
const [fcltyCd, setFcltyCd] = useState<string>("");
const [fcltyNm, setFcltyNm] = useState<string>("");
// 그리드 관련
const searchInputRef = useRef<HTMLDivElement & HTMLInputElement>(null);
// 초기화 변수
const [resetPage, setResetPage] = useState<boolean>(false);
// 표 너비
@@ -116,7 +116,8 @@ export default function UnderWaterInput() {
// 셀 클릭 시 모달 표시
const cellClick = (index: number) => {
if (underWater[index]) {
setFcltyNm(underWater[index].bscFctCd);
setFcltyCd(underWater[index].bscFctCd || "");
setFcltyNm(underWater[index].bscFctNm || "");
setSelectedRow(index); // 클릭한 행의 index 저장
}
};
@@ -129,7 +130,7 @@ export default function UnderWaterInput() {
initializeCommonData();
searchUnderWaterList(1, 10, selectSearchYear[0]?.val || "0");
}
}, [isInit, initializeCommonData, searchUnderWaterList]);
}, [isInit, initializeCommonData, searchUnderWaterList, selectSearchYear]);
useEffect(() => {
if (excelList && excelList.length > 0) {
@@ -227,7 +228,7 @@ export default function UnderWaterInput() {
</ContentsDiv>
{selectedRow !== null && (
<UiModal
body={<UnderWaterInputModal fcltyName={fcltyNm} searchYear={searchYear}></UnderWaterInputModal>}
body={<UnderWaterInputModal fcltyCd={fcltyCd} fcltyName={fcltyNm} searchYear={searchYear}></UnderWaterInputModal>}
bodyClass="sm:max-w-[90vw] w-[1000px] h-[770px]"
open={selectedRow !== null}
onOpenChange={(open) => !open && closeModal()}
+1 -1
View File
@@ -131,7 +131,7 @@ const selectEnvPartSigunData: SelectDataType[] = [
// 상향 하향 데이터
const selectUpdownData:SelectDataType[] = [
{ text: "전체", val: '0' },
{ text: "500이하", val: '400' },
{ text: "500미만", val: '400' },
{ text: "500이상", val: '500' },
];
+50 -61
View File
@@ -355,29 +355,29 @@ const upHeadListOperationStatus : TableUpperProps[] = [
const upHeadListRainManage : TableUpperProps[] = [
{ id: "rainItem", title: "강우량", row:0, rowSpan:2 },
{ id: "rainRate", title: "강우조건\n비율(%)", row:0, rowSpan:2 },
{ id: "rainDay", title: "일수", row:0, rowSpan:2 },
{ id: "rainRate", title: "강우조건\n비율(%)", row:0, rowSpan:2, align: "right" },
{ id: "rainDay", title: "일수", row:0, rowSpan:2, align: "right" },
{ id: "A", title: "유입(㎥/일)", row:0, colSpan:2 },
{ id: "inflAmnt", title: "유입유량", row:1 },
{ id: "fctCpc", title: "시설용량대비", row:1 },
{ id: "inflAmnt", title: "유입유량", row:1, align: "right" },
{ id: "fctCpc", title: "시설용량대비", row:1, align: "right" },
{ id: "B", title: "설계유입수질(㎎/L)", row:0, colSpan:5 },
{ id: "dsInflWqltBod", title: "BOD", row:1 },
{ id: "dsInflWqltCod", title: "TOC\n(COD)", row:1 },
{ id: "dsInflWqltSs", title: "SS", row:1 },
{ id: "dsInflWqltTn", title: "T-N", row:1 },
{ id: "dsInflWqltTp", title: "T-P", row:1 },
{ id: "dsInflWqltBod", title: "BOD", row:1, align: "right" },
{ id: "dsInflWqltCod", title: "TOC\n(COD)", row:1, align: "right" },
{ id: "dsInflWqltSs", title: "SS", row:1, align: "right" },
{ id: "dsInflWqltTn", title: "T-N", row:1, align: "right" },
{ id: "dsInflWqltTp", title: "T-P", row:1, align: "right" },
{ id: "C", title: "유입수질(㎎/L)", row:0, colSpan:5 },
{ id: "inflAssctBfrWqltBod", title: "BOD", row:1 },
{ id: "inflAssctBfrWqltToc", title: "TOC\n(COD)", row:1 },
{ id: "inflAssctBfrWqltSs", title: "SS", row:1 },
{ id: "inflAssctBfrWqltTn", title: "T-N", row:1 },
{ id: "inflAssctBfrWqltTp", title: "T-P", row:1 },
{ id: "inflAssctBfrWqltBod", title: "BOD", row:1, align: "right" },
{ id: "inflAssctBfrWqltToc", title: "TOC\n(COD)", row:1, align: "right" },
{ id: "inflAssctBfrWqltSs", title: "SS", row:1, align: "right" },
{ id: "inflAssctBfrWqltTn", title: "T-N", row:1, align: "right" },
{ id: "inflAssctBfrWqltTp", title: "T-P", row:1, align: "right" },
{ id: "D", title: "방류수질(㎎/L)", row:0, colSpan:5 },
{ id: "efflWqltBod", title: "BOD", row:1 },
{ id: "efflWqltToc", title: "TOC\n(COD)", row:1 },
{ id: "efflWqltSs", title: "SS", row:1 },
{ id: "efflWqltTn", title: "T-N", row:1 },
{ id: "efflWqltTp", title: "T-P", row:1 },
{ id: "efflWqltBod", title: "BOD", row:1, align: "right" },
{ id: "efflWqltToc", title: "TOC\n(COD)", row:1, align: "right" },
{ id: "efflWqltSs", title: "SS", row:1, align: "right" },
{ id: "efflWqltTn", title: "T-N", row:1, align: "right" },
{ id: "efflWqltTp", title: "T-P", row:1, align: "right" },
]
const upHeadListDrainageEquipment : TableUpperProps[] = [
@@ -401,7 +401,7 @@ const upHeadListDrainageEquipment : TableUpperProps[] = [
{ id: "etc", title: "비고", row:0, upName:"upChangeRe7", upSequnce:1 },
]
const operationalStatusList : OperationalStatusListProps[] = [
let operationalStatusList : OperationalStatusListProps[] = [
{
flowRate : '유량\n(㎥/일)',
waterQlty : '유입',
@@ -1173,6 +1173,7 @@ export const dashBoardReducer:(set:(fn: (state: DashBoardType) => DashBoardType)
const yearAvg = data.yearData===null?'':(data.yearData.AVG_INFL_AMNT?data.yearData.AVG_INFL_AMNT:0)+(data.yearData.AVG_SUM_FLOW?data.yearData.AVG_SUM_FLOW:0)+(data.yearData.AVG_RETURN_AMNT?data.yearData.AVG_RETURN_AMNT:0);
const yearMax = data.yearData===null?'':(data.yearData.MAX_INFL_AMNT?data.yearData.MAX_INFL_AMNT:0)+(data.yearData.MAX_SUM_FLOW?data.yearData.MAX_SUM_FLOW:0)+(data.yearData.MAX_RETURN_AMNT?data.yearData.MAX_RETURN_AMNT:0);
const yearMin = data.yearData===null?'':(data.yearData.MIN_INFL_AMNT?data.yearData.MIN_INFL_AMNT:0)+(data.yearData.MIN_SUM_FLOW?data.yearData.MIN_SUM_FLOW:0)+(data.yearData.MIN_RETURN_AMNT?data.yearData.MIN_RETURN_AMNT:0);
operationalStatusList[0].yearAvg = yearAvg;
operationalStatusList[0].yearMax = yearMax;
operationalStatusList[0].yearMin = yearMin;
@@ -1193,11 +1194,26 @@ export const dashBoardReducer:(set:(fn: (state: DashBoardType) => DashBoardType)
(data.summerSunny.AVG_TP_INFL_WQLT_TP ? data.summerSunny.AVG_TP_INFL_WQLT_TP : 0)
);
// 겨울
operationalStatusList[0].winterAll = data.winter === null ? '' : (data.winter.AVG_INFL_AMNT ? data.winter.AVG_INFL_AMNT : 0) + (data.winter.AVG_SUM_FLOW ? data.winter.AVG_SUM_FLOW : 0) + (data.winter.AVG_TP_INFL_WQLT_TP ? data.winter.AVG_TP_INFL_WQLT_TP : 0);
operationalStatusList[0].winterSunnyMin = data.winterSunny === null ? '' : (data.winterSunny.MIN_INFL_AMNT ? data.winterSunny.MIN_INFL_AMNT : 0) + (data.winterSunny.MIN_SUM_FLOW ? data.winterSunny.MIN_SUM_FLOW : 0) + (data.winterSunny.MIN_TP_INFL_WQLT_TP ? data.winterSunny.MIN_TP_INFL_WQLT_TP : 0);
operationalStatusList[0].winterSunnyAvg = data.winterSunny === null ? '' : (data.winterSunny.AVG_INFL_AMNT ? data.winterSunny.AVG_INFL_AMNT : 0) + (data.winterSunny.AVG_SUM_FLOW ? data.winterSunny.AVG_SUM_FLOW : 0) + (data.winterSunny.AVG_TP_INFL_WQLT_TP ? data.winterSunny.AVG_TP_INFL_WQLT_TP : 0);
operationalStatusList[0].winterSunnyMax = data.winterSunny === null ? '' : (data.winterSunny.MAX_INFL_AMNT ? data.winterSunny.MAX_INFL_AMNT : 0) + (data.winterSunny.MAX_SUM_FLOW ? data.winterSunny.MAX_SUM_FLOW : 0) + (data.winterSunny.MAX_TP_INFL_WQLT_TP ? data.winterSunny.MAX_TP_INFL_WQLT_TP : 0);
operationalStatusList[0].winterAll = data.winter === null ? '' : (
(data.winter.AVG_INFL_AMNT ? data.winter.AVG_INFL_AMNT : 0) +
(data.winter.AVG_SUM_FLOW ? data.winter.AVG_SUM_FLOW : 0) +
(data.winter.AVG_TP_INFL_WQLT_TP ? data.winter.AVG_TP_INFL_WQLT_TP : 0)
);
operationalStatusList[0].winterSunnyMin = data.winterSunny === null ? '' : (
(data.winterSunny.MIN_INFL_AMNT ? data.winterSunny.MIN_INFL_AMNT : 0) +
(data.winterSunny.MIN_SUM_FLOW ? data.winterSunny.MIN_SUM_FLOW : 0) +
(data.winterSunny.MIN_TP_INFL_WQLT_TP ? data.winterSunny.MIN_TP_INFL_WQLT_TP : 0)
);
operationalStatusList[0].winterSunnyAvg = data.winterSunny === null ? '' : (
(data.winterSunny.AVG_INFL_AMNT ? data.winterSunny.AVG_INFL_AMNT : 0) +
(data.winterSunny.AVG_SUM_FLOW ? data.winterSunny.AVG_SUM_FLOW : 0) +
(data.winterSunny.AVG_TP_INFL_WQLT_TP ? data.winterSunny.AVG_TP_INFL_WQLT_TP : 0)
);
operationalStatusList[0].winterSunnyMax = data.winterSunny === null ? '' : (
(data.winterSunny.MAX_INFL_AMNT ? data.winterSunny.MAX_INFL_AMNT : 0) +
(data.winterSunny.MAX_SUM_FLOW ? data.winterSunny.MAX_SUM_FLOW : 0) +
(data.winterSunny.MAX_TP_INFL_WQLT_TP ? data.winterSunny.MAX_TP_INFL_WQLT_TP : 0)
);
// 연계처리수
let yearDay = 0;
let summerDay = 0;
@@ -1364,37 +1380,10 @@ export const dashBoardReducer:(set:(fn: (state: DashBoardType) => DashBoardType)
}
}
//const excelDownList: RainManageExcelType[] = [];
/* if(isExcel){
res.data.forEach(item => {
dataFormSetting(item)
item.fctCpc = parseFloat(item.fctCpc.toString().replace(/,/g, ''));
item.sidoNm = item.lclgvrnmntNm.split(' ')[0]?.toString() || '';
item.sggNm = item.lclgvrnmntNm.split(' ')[1]?.toString() || '';
excelDownList.push({
시설코드: item.bscFctCd,
시설이름: item.bscFctNm,
측정일자: item.msrDt,
시도: item.sidoNm,
시군구: item.sggNm,
주소: item.addr,
용량: item.fctCpc,
유입BOD: item.inflAssctBfrWqltBod,
유입TN: item.inflAssctBfrWqltTn,
유입TP: item.inflAssctBfrWqltTp,
유출BOD: item.efflWqltBod,
유출TN: item.efflWqltTn,
유출TP: item.efflWqltTp,
환경청: item.rgnNm,
유역: item.rvbsn,
대유역: item.lgbsn,
중유역: item.mdmbsn,
});
});
}else{ */
/* data.forEach((item: OperationalStatusListProps) => {
}); */
/* } */
//
if(data.yearData.TP_INFL_WQLT_TP === null || data.yearData.TP_INFL_WQLT_TP === undefined || data.yearData.TP_INFL_WQLT_TP === 'null') {
operationalStatusList = operationalStatusList.slice(0, 10);
}
set((state: DashBoardType) => ({
...state,
OperationStatus: {
@@ -1405,7 +1394,7 @@ export const dashBoardReducer:(set:(fn: (state: DashBoardType) => DashBoardType)
},
}))
},
searchMainGraph: async (searchYear: string, fcltyCd: string) => {
set((state: DashBoardType) => ({
...state,
@@ -1864,8 +1853,8 @@ export const dashBoardReducer:(set:(fn: (state: DashBoardType) => DashBoardType)
const filteredData = itemList.map((item, index) => ({
rainItem: item,
rainRate: rainRate[index] || '0',
rainDay: rainDate[index] ? Number(rainDate[index].toFixed(1)) : '',
inflAmnt: inflAmnt[index] ? Number((Math.round(inflAmnt[index] * 10) / 10).toFixed(1)) : '',
rainDay: rainDate[index] ? Number(rainDate[index].toFixed(1)) : '0',
inflAmnt: inflAmnt[index] ? Number((Math.round(inflAmnt[index] * 1) / 1)) : '',
fctCpc: inflAmnt[index] ? (Math.round((inflAmnt[index] / fcltyCpcValue) * 10) / 10).toFixed(1) : '',
dsInflWqltBod: dsInflWqltBod[index] ? (Math.round(dsInflWqltBod[index] * 10) / 10).toFixed(1) : '',
dsInflWqltCod: dsInflWqltCod[index] ? (Math.round(dsInflWqltCod[index] * 10) / 10).toFixed(1) : '',
@@ -1890,8 +1879,8 @@ export const dashBoardReducer:(set:(fn: (state: DashBoardType) => DashBoardType)
excelList.push({
강우량: item.rainItem,
강우조건비율: item.rainRate ? Number(Number(item.rainRate).toFixed(1)) : '',
일수: item.rainDay ? Number(Number(item.rainDay).toFixed(1)) : '',
유입유량: item.inflAmnt ? Number((Math.round(Number(item.inflAmnt) * 10) / 10).toFixed(1)) : '',
일수: item.rainDay ? Number(Number(item.rainDay).toFixed(1)) : 0,
유입유량: item.inflAmnt ? Number((Math.round(Number(item.inflAmnt) * 1) / 1)) : '',
시설용량대비: item.fctCpc ? (Math.round(Number(item.fctCpc) * 10) / 10).toFixed(1) : '',
설계유입수질BOD: item.dsInflWqltBod ? (Math.round(Number(item.dsInflWqltBod) * 10) / 10).toFixed(1) : '',
설계유입수질TOC: item.dsInflWqltCod ? (Math.round(Number(item.dsInflWqltCod) * 10) / 10).toFixed(1) : '',