From 2ec793fd597c9bc06544ac11160ea2da55db0e3f Mon Sep 17 00:00:00 2001 From: dongsilove Date: Mon, 29 Dec 2025 11:00:38 +0900 Subject: [PATCH 01/16] =?UTF-8?q?fo:=20UiTable=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pages/(with-layout)/planSewage/page.tsx | 66 +++++++++---------- .../src/ui/table/index.tsx | 20 +++--- 2 files changed, 45 insertions(+), 41 deletions(-) diff --git a/apps/fo/app/pages/(with-layout)/planSewage/page.tsx b/apps/fo/app/pages/(with-layout)/planSewage/page.tsx index 1f8bd1e94..62ae9483a 100644 --- a/apps/fo/app/pages/(with-layout)/planSewage/page.tsx +++ b/apps/fo/app/pages/(with-layout)/planSewage/page.tsx @@ -20,13 +20,13 @@ const commentArray = [ ] export default function PlanSewage() { - const {Common - ,PlanSewage - ,PlanSewageSearch - ,initializeCommonData - ,searchPlanSewageList - } = useFoStore((state) => state) || { processAreaList: { processAreaList: [] }}; - + const { Common + , PlanSewage + , PlanSewageSearch + , initializeCommonData + , searchPlanSewageList + } = useFoStore((state) => state) || { processAreaList: { processAreaList: [] } }; + const { isInit, selectUpdownData, @@ -42,7 +42,7 @@ export default function PlanSewage() { } = Common; const { - labelArray, + labelArray, } = PlanSewageSearch; const { @@ -69,9 +69,9 @@ export default function PlanSewage() { // 그리드 관련 const searchInputRef = useRef(null); - + // 모달 상태 추가 - + // 초기화 변수 const [resetPage, setResetPage] = useState(false); // 표 너비 @@ -109,17 +109,17 @@ export default function PlanSewage() { input.value = ""; } } - ref.current.sidoValue='11'; + ref.current.sidoValue = '11'; searchPlanSewage(ref.current, 1, 10); } useEffect(() => { - if(!excelTrigger) return; + if (!excelTrigger) return; if (excelList && excelList.length > 0) { - downloadExcel({ - data: excelList as unknown as JSON[], - fileName: '계획하수량 산정지표 현황', + downloadExcel({ + data: excelList as unknown as JSON[], + fileName: '계획하수량 산정지표 현황', sheetNameArray: ['계획하수량 산정지표 현황'], headerRange: 'A1:M1' }); @@ -130,31 +130,31 @@ export default function PlanSewage() { * 콜백함수 */ // 조회 - const searchPlanSewage = useCallback(({ partValue, regionValue, unitWaterShedValue, middleRegionValue, envPartValue, sidoValue, sigunValue }: ReturnType, pageNo: number, pageCnt:number=20) => { + const searchPlanSewage = useCallback(({ partValue, regionValue, unitWaterShedValue, middleRegionValue, envPartValue, sidoValue, sigunValue }: ReturnType, pageNo: number, pageCnt: number = 20) => { let nameCd, partStr switch (partValue) { case 'R': if (regionValue !== '0') { - if(unitWaterShedValue==='0') nameCd = regionValue; - else if (middleRegionValue==='0') nameCd = unitWaterShedValue; + if (unitWaterShedValue === '0') nameCd = regionValue; + else if (middleRegionValue === '0') nameCd = unitWaterShedValue; else nameCd = middleRegionValue; } partStr = partValue break; default: - if(sidoValue !== '0') nameCd = ref.current.sidoValue!="0"?ref.current.sidoValue:sidoValue; - if(sigunValue !== '0') nameCd = sigunValue; - partStr = envPartValue !== '0' ? envPartValue:partValue; + if (sidoValue !== '0') nameCd = ref.current.sidoValue != "0" ? ref.current.sidoValue : sidoValue; + if (sigunValue !== '0') nameCd = sigunValue; + partStr = envPartValue !== '0' ? envPartValue : partValue; break; } - if(partStr === 'G'){ - partValue = partValue==='G'?'A':partValue; + if (partStr === 'G') { + partValue = partValue === 'G' ? 'A' : partValue; searchPlanSewageList(pageNo, pageCnt, searchYear, partValue); } - else{ + else { searchPlanSewageList(pageNo, pageCnt, searchYear, partStr, nameCd || '0', fcltCpct, operationValue, fcltyName.trim() !== "" || fcltyName.trim() !== null ? fcltyName : undefined); - } + } }, [operationValue, fcltyName, searchPlanSewageList, searchYear, fcltCpct]); /** @@ -162,7 +162,7 @@ export default function PlanSewage() { */ useEffect(() => { if (!isInit) { - if(!initTrigger){ + if (!initTrigger) { initializeCommonData(); searchPlanSewage(ref.current, 1, 10); setInitTrigger(true); @@ -170,9 +170,9 @@ export default function PlanSewage() { } }, [isInit, initializeCommonData, searchPlanSewageList, selectSearchYear, initTrigger, searchPlanSewage]); - const chkVal = useCallback((returntype:ReturnType) => { + const chkVal = useCallback((returntype: ReturnType) => { // setWidthSize(returntype.partValue=='A' ?"w-[120%]":"w-[130%]") - setUpheadList(returntype.partValue == 'R' ? upHeadList2 : returntype.partValue == 'G'?upHeadList3:upHeadList1); + setUpheadList(returntype.partValue == 'R' ? upHeadList2 : returntype.partValue == 'G' ? upHeadList3 : upHeadList1); setResetPage(true); }, [upHeadList1, upHeadList2, upHeadList3]); @@ -190,11 +190,11 @@ export default function PlanSewage() { const mainList = planSewageList || []; const total = planSewageCount || 0; - + return ( - <SearchBaseForm + <SearchBaseForm leftChildren={<> <SelectBox className="col-span-3" label={labelArray[3] as string} selectArray={selectUpdownData} onSelectValue={(val) => setFcltCpct(val.toString())} value={fcltCpct} selectClass={undefined} /> <SearchInput className={"col-span-3"} label={labelArray[4] as string} textValue={fcltyName} setText={setFcltyName} /> @@ -212,12 +212,12 @@ export default function PlanSewage() { queryClick={chkVal} excelClick={excelDownload} initClick={resetVal} - ref={ref} isAdmin={false} initSidoValue={"11"}/> + ref={ref} isAdmin={false} initSidoValue={"11"} /> <ListDiv> <LoadingOverlay isLoading={isLoading} /> <div className="h-full w-full overflow-x-scroll min-[1200px]:overflow-x-hidden"> - <div className="w-[120%] min-[1200px]:w-[100%]"> - <UiTable cellClick={ undefined } headName={"계획하수량 산정지표 현황"} tableData={mainList} headlist={upheadList} pageSize={10} total={total} resetPageNo={resetPage} onPageChange={handlePageChange} widthFixed={true} /> + <div className="w-[120%] min-[1200px]:w-[100%]"> + <UiTable cellClick={undefined} headName={"계획하수량 산정지표 현황"} tableData={mainList} headlist={upheadList} pageSize={10} total={total} resetPageNo={resetPage} onPageChange={handlePageChange} widthFixed={true} /> </div> <UnderComment divHeight={"5"} commentArray={commentArray} /> </div> diff --git a/packages/common/business_components/src/ui/table/index.tsx b/packages/common/business_components/src/ui/table/index.tsx index dc763d00b..f62831959 100644 --- a/packages/common/business_components/src/ui/table/index.tsx +++ b/packages/common/business_components/src/ui/table/index.tsx @@ -43,6 +43,7 @@ type UiHeadProps = { row?: number; widthPercent?: number; rowSpan?: number; + colSpan?: number; }; export function UiTable({ @@ -136,13 +137,13 @@ export function UiTable({ <></> )} <div className={`card !p-0r !m-[1.2rem] ${className}`}> - <Table variant="secondary" className={widthFixed?"table-fixed":""}> - {widthFixed? - <colgroup> - {leafCols.map(col => ( - <col key={col.id} style={{ width: col.widthPercent ? `${col.widthPercent}%` : undefined }} /> - ))} - </colgroup>:""} + <Table variant="secondary" className={widthFixed ? "table-fixed" : ""}> + {widthFixed ? + <colgroup> + {leafCols.map(col => ( + <col key={col.id} style={{ width: col.widthPercent ? `${col.widthPercent}%` : undefined }} /> + ))} + </colgroup> : ""} <TableHeader ref={headerRef} className="font-bold"> {children ? children : <HeadMakeColSpan upHeadList={headlist} />} </TableHeader> @@ -261,7 +262,10 @@ export function UiTable({ <TableRow> <TableCell colSpan={ - headlist.filter((item) => item.visible != false).length + headlist.filter((item) => item.visible != false).length - + headlist.filter( + (item) => item.visible != false && item.colSpan, + ).length } className="h-24 text-center text-gray-500" > From 39d0f586af0ebe1bf319e42a869aeca19e10bec3 Mon Sep 17 00:00:00 2001 From: dongsilove <ljparkmindone@gmail.com> Date: Mon, 29 Dec 2025 17:22:06 +0900 Subject: [PATCH 02/16] =?UTF-8?q?fo:=20dashboard=20=EC=88=98=EC=A7=88=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/fo/app/store/dashboard/index.tsx | 2073 +++++++++++++------------ 1 file changed, 1037 insertions(+), 1036 deletions(-) diff --git a/apps/fo/app/store/dashboard/index.tsx b/apps/fo/app/store/dashboard/index.tsx index b5f678a22..d1fbdcfe1 100644 --- a/apps/fo/app/store/dashboard/index.tsx +++ b/apps/fo/app/store/dashboard/index.tsx @@ -22,93 +22,93 @@ export type TableUpperProps = { title: string; upName?: string; upSequnce?: number; - align? : string; - row? : number; + align?: string; + row?: number; rowSpan?: number; colSpan?: number; - widthPercent? : number; + widthPercent?: number; } // ===TAB1 // main fclty export type mainFcltyProps = { - fcltyNm : string, - facilityCapacity : string, - publicMethod : string, - location : string + fcltyNm: string, + facilityCapacity: string, + publicMethod: string, + location: string } // 시설계획 export type planFcltyListProps = { - item : string, - provisionalApproval : string | number | '', - now : string | number | '', - stepOne : string | number | '', - stepTwo : string | number | '', - stepThree : string | number | '', - stepFour : string | number | '', + item: string, + provisionalApproval: string | number | '', + now: string | number | '', + stepOne: string | number | '', + stepTwo: string | number | '', + stepThree: string | number | '', + stepFour: string | number | '', } // 운영실태 export type OperationalStatusListProps = { - flowRate : string, - waterQlty : string, - yearAvg : number | '', - yearMax : number | '', - yearMin : number | '', - summerAll : number | string | '', - summerThree : number | string | '', - summerRain : number | string | '', - winterAll : number | string | '', - winterSunnyAvg : number | string | '', - winterSunnyMax : number | string | '', - winterSunnyMin : number | string | '', - groundWaterAvg : number | string | '', - groundWaterSummer : number | string | '', - groundWaterWinter : number | string | '', - rdi : number | string | '', - rdiRain : number | string | '', + flowRate: string, + waterQlty: string, + yearAvg: number | '', + yearMax: number | '', + yearMin: number | '', + summerAll: number | string | '', + summerThree: number | string | '', + summerRain: number | string | '', + winterAll: number | string | '', + winterSunnyAvg: number | string | '', + winterSunnyMax: number | string | '', + winterSunnyMin: number | string | '', + groundWaterAvg: number | string | '', + groundWaterSummer: number | string | '', + groundWaterWinter: number | string | '', + rdi: number | string | '', + rdiRain: number | string | '', } export interface operationalStatusListProps { - flowRate : string, - waterQlty : string, - yearAvg : number | '', - yearMax : number | '', - yearMin : number | '', - summerAll : number | '', - summerThree : number | '', - summerRain : number | '', - winterAll : number | '', - winterSunnyAvg : number | '', - winterSunnyMax : number | '', - winterSunnyMin : number | '', - groundWaterAvg : number | string | '', - groundWaterSummer : number | string | '', - groundWaterWinter : number | string | '', - rdi : number | '', + flowRate: string, + waterQlty: string, + yearAvg: number | '', + yearMax: number | '', + yearMin: number | '', + summerAll: number | '', + summerThree: number | '', + summerRain: number | '', + winterAll: number | '', + winterSunnyAvg: number | '', + winterSunnyMax: number | '', + winterSunnyMin: number | '', + groundWaterAvg: number | string | '', + groundWaterSummer: number | string | '', + groundWaterWinter: number | string | '', + rdi: number | '', } // 차트 export type lineBarChartDataProps = { - label : string, - lineVal : number - barVal : number - barVal0 : number - barVal1 : number - lineVal0 : number - lineVal1 : number + label: string, + lineVal: number + barVal: number + barVal0: number + barVal1: number + lineVal0: number + lineVal1: number } export type lineChartDataProps = { - label : string, - val : number, + label: string, + val: number, } export interface RainManageListProps { - rainItem : string, - rainRate : string, - rainDay : number, + rainItem: string, + rainRate: string, + rainDay: number, bscFctCd?: string, bscFctNm?: string, msrDt?: string @@ -126,10 +126,10 @@ export interface RainManageListProps { efflWqltSs: number | '', efflWqltTn: number | '', efflWqltTp: number | '', - rgnNm?:string|'', - rvbsn?:string|'', - lgbsn?:string|'', - mdmbsn?:string|'', + rgnNm?: string | '', + rvbsn?: string | '', + lgbsn?: string | '', + mdmbsn?: string | '', inflAmnt: number | '', lclgvrnmntNm?: string, infoRnDay?: number | '', @@ -149,7 +149,7 @@ export interface RainManageListProps { dsInflWqltTp: number | '', extnsSeqno?: number | '', rainEffectDay?: number | '', - toBeInfoRnDay? : number | '', + toBeInfoRnDay?: number | '', } export interface RainManageExcelType { @@ -157,7 +157,7 @@ export interface RainManageExcelType { 강우조건비율: number | '', 일수: number | '', 유입유량: string | number | '', - 시설용량대비: string |number | '', + 시설용량대비: string | number | '', 설계유입수질BOD: string | number | '', 설계유입수질TOC: string | number | '', 설계유입수질SS: string | number | '', @@ -169,533 +169,533 @@ export interface RainManageExcelType { 유입수질TN: string | number | '', 유입수질TP: string | number | '', 방류수질BOD: string | number | '', - 방류수질TOC: string |number | '', + 방류수질TOC: string | number | '', 방류수질SS: string | number | '', 방류수질TN: string | number | '', 방류수질TP: string | number | '', } export interface DrainageEquipmentListProps { - part1 : string | '', - part2 : string | '', - nowSum : number | '', - nowJoin : number | '', - nowSep : number | '', - stepOneSum : number | '', - stepOneJoin : number | '', - stepOneSep : number | '', - stepTwoSum : number | '', - stepTwoJoin : number | '', - stepTwoSep : number | '', - stepThreeSum : number | '', - stepThreeJoin : number | '', - stepThreeSep : number | '', - stepFourSum : number | '', - stepFourJoin : number | '', - stepFourSep : number | '', - etc : string | '', + part1: string | '', + part2: string | '', + nowSum: number | '', + nowJoin: number | '', + nowSep: number | '', + stepOneSum: number | '', + stepOneJoin: number | '', + stepOneSep: number | '', + stepTwoSum: number | '', + stepTwoJoin: number | '', + stepTwoSep: number | '', + stepThreeSum: number | '', + stepThreeJoin: number | '', + stepThreeSep: number | '', + stepFourSum: number | '', + stepFourJoin: number | '', + stepFourSep: number | '', + etc: string | '', } export interface DrainageEquipmentExcelType { - partOne : string | '', - partTwo : string | '', - nowSum : number | '', - nowJoin : number | '', - nowSep : number | '', - stepOneSum : number | '', - stepOneJoin : number | '', - stepOneSep : number | '', - stepTwoSum : number | '', - stepTwoJoin : number | '', - stepTwoSep : number | '', - stepThreeSum : number | '', - stepThreeJoin : number | '', - stepThreeSep : number | '', - stepFourSum : number | '', - stepFourJoin : number | '', - stepFourSep : number | '', + partOne: string | '', + partTwo: string | '', + nowSum: number | '', + nowJoin: number | '', + nowSep: number | '', + stepOneSum: number | '', + stepOneJoin: number | '', + stepOneSep: number | '', + stepTwoSum: number | '', + stepTwoJoin: number | '', + stepTwoSep: number | '', + stepThreeSum: number | '', + stepThreeJoin: number | '', + stepThreeSep: number | '', + stepFourSum: number | '', + stepFourJoin: number | '', + stepFourSep: number | '', } /** * Store - data */ // Main -const DashBoardTopLabelArray:string[] = ['구분', '시도', '시군구', '년도', '시설명']; +const DashBoardTopLabelArray: string[] = ['구분', '시도', '시군구', '년도', '시설명']; // === Tab1 // grid header -const upHeadListFclty:TableUpperProps[] = [ - { id : "fcltyNm", title : "시설명"}, - { id : "facilityCapacity", title : "시설용량(m³/일)"}, - { id : "publicMethod", title : "공법"}, - { id : "location", title : "지역구"}, +const upHeadListFclty: TableUpperProps[] = [ + { id: "fcltyNm", title: "시설명" }, + { id: "facilityCapacity", title: "시설용량(m³/일)" }, + { id: "publicMethod", title: "공법" }, + { id: "location", title: "지역구" }, ] -const fcltyList : mainFcltyProps[] = [ +const fcltyList: mainFcltyProps[] = [ ] function getPlanYearList(): string[] { - const currentYear = new Date().getFullYear(); // 올해 - const startYear = currentYear - 4; // 5년 전 - const endYear = currentYear + 1; // 내년 + const currentYear = new Date().getFullYear(); // 올해 + const startYear = currentYear - 4; // 5년 전 + const endYear = currentYear + 1; // 내년 - const years: string[] = []; + const years: string[] = []; - for (let y = startYear; y <= endYear; y++) { - years.push(String(y)); // 혹은 y.toString() - } + for (let y = startYear; y <= endYear; y++) { + years.push(String(y)); // 혹은 y.toString() + } - return years; + return years; } -let planYearList : string[] = getPlanYearList(); +let planYearList: string[] = getPlanYearList(); -const upHeadListPlanFclty : TableUpperProps[] = [ - { id: "item", title: "", upName:"upChangeRe", upSequnce:1 }, - { id: "provisionalApproval", title: "기승인\n4단계", upName:"upChangeRe", upSequnce:2 }, - { id: "now", title: "현재", upName:"upChangeRe", upSequnce:3 }, - { id: "stepOne", title: "1단계", upName:"upChangeRe", upSequnce:4 }, - { id: "stepTwo", title: "2단계", upName:"upChangeRe", upSequnce:5 }, - { id: "stepThree", title: "3단계", upName:"upChangeRe", upSequnce:6 }, - { id: "stepFour", title: "4단계", upName:"upChangeRe", upSequnce:7 }, +const upHeadListPlanFclty: TableUpperProps[] = [ + { id: "item", title: "", upName: "upChangeRe", upSequnce: 1 }, + { id: "provisionalApproval", title: "기승인\n4단계", upName: "upChangeRe", upSequnce: 2 }, + { id: "now", title: "현재", upName: "upChangeRe", upSequnce: 3 }, + { id: "stepOne", title: "1단계", upName: "upChangeRe", upSequnce: 4 }, + { id: "stepTwo", title: "2단계", upName: "upChangeRe", upSequnce: 5 }, + { id: "stepThree", title: "3단계", upName: "upChangeRe", upSequnce: 6 }, + { id: "stepFour", title: "4단계", upName: "upChangeRe", upSequnce: 7 }, ] // 시설계획 좌측 상단 -const planFcltyList:planFcltyListProps[] = [ +const planFcltyList: planFcltyListProps[] = [ { - item : "1.증설계획\n(㎥/일)", + item: "1.증설계획\n(㎥/일)", provisionalApproval: "", now: "", stepOne: "", stepTwo: "", stepThree: "", - stepFour : "", + stepFour: "", }, { - item : "2.처리인구(인)", + item: "2.처리인구(인)", provisionalApproval: "", now: "", stepOne: "", stepTwo: "", stepThree: "", - stepFour : "", + stepFour: "", }, { - item : "3.처리구역\n(km²)", + item: "3.처리구역\n(km²)", provisionalApproval: "", now: "", stepOne: "", stepTwo: "", stepThree: "", - stepFour : "", + stepFour: "", }, { - item : "4.분류식화율\n(%)", + item: "4.분류식화율\n(%)", provisionalApproval: "", now: "", stepOne: "", stepTwo: "", stepThree: "", - stepFour : "", + stepFour: "", }, { - item : "5.물사용량", + item: "5.물사용량", provisionalApproval: "", now: "", stepOne: "", stepTwo: "", stepThree: "", - stepFour : "", + stepFour: "", }, { - item : "년도\n(최근 3개년)", + item: "년도\n(최근 3개년)", provisionalApproval: "물사용량\n(㎥/일)", now: "", stepOne: "", stepTwo: "비고", stepThree: "", - stepFour : "", + stepFour: "", }, { - item : "2021", + item: "2021", provisionalApproval: "", now: "", stepOne: "", stepTwo: "", stepThree: "", - stepFour : "", + stepFour: "", }, { - item : "2022", + item: "2022", provisionalApproval: "", now: "", stepOne: "", stepTwo: "", stepThree: "", - stepFour : "", + stepFour: "", }, { - item : "2023", + item: "2023", provisionalApproval: "", now: "", stepOne: "", stepTwo: "", stepThree: "", - stepFour : "", + stepFour: "", }, ] -const upHeadListOperationStatus : TableUpperProps[] = [ - { id: "flowRate", title: "유량 및 수질", upName:"upChangeRe1", upSequnce:1 }, - { id: "waterQlty", title: "유량 및 수질", upName:"upChangeRe1", upSequnce:2 }, - { id: "yearAvg", title: "평균", upName:"upChangeRe2", upSequnce:1 }, - { id: "yearMax", title: "최대", upName:"upChangeRe2", upSequnce:2 }, - { id: "yearMin", title: "최소", upName:"upChangeRe2", upSequnce:3 }, - { id: "summerAll", title: "전기간", upName:"upChangeRe3", upSequnce:1 }, - { id: "summerThree", title: "강우시\n(3mm이상)", upName:"upChangeRe3", upSequnce:2 }, - { id: "summerRain", title: "청천시", upName:"upChangeRe3", upSequnce:3 }, - { id: "winterAll", title: "전기간", upName:"upChangeRe4", upSequnce:1 }, - { id: "winterSunnyAvg", title: "청천시\n평균", upName:"upChangeRe4", upSequnce:2 }, - { id: "winterSunnyMax", title: "청천시\n최대", upName:"upChangeRe4", upSequnce:3 }, - { id: "winterSunnyMin", title: "청천시\n최소", upName:"upChangeRe4", upSequnce:4 }, - { id: "groundWaterAvg", title: "연평균", upName:"upChangeRe5", upSequnce:1 }, - { id: "groundWaterSummer", title: "하절기\n평균", upName:"upChangeRe5", upSequnce:2 }, - { id: "groundWaterWinter", title: "동절기\n평균", upName:"upChangeRe5", upSequnce:3 }, +const upHeadListOperationStatus: TableUpperProps[] = [ + { id: "flowRate", title: "유량 및 수질", upName: "upChangeRe1", upSequnce: 1 }, + { id: "waterQlty", title: "유량 및 수질", upName: "upChangeRe1", upSequnce: 2 }, + { id: "yearAvg", title: "평균", upName: "upChangeRe2", upSequnce: 1 }, + { id: "yearMax", title: "최대", upName: "upChangeRe2", upSequnce: 2 }, + { id: "yearMin", title: "최소", upName: "upChangeRe2", upSequnce: 3 }, + { id: "summerAll", title: "전기간", upName: "upChangeRe3", upSequnce: 1 }, + { id: "summerThree", title: "강우시\n(3mm이상)", upName: "upChangeRe3", upSequnce: 2 }, + { id: "summerRain", title: "청천시", upName: "upChangeRe3", upSequnce: 3 }, + { id: "winterAll", title: "전기간", upName: "upChangeRe4", upSequnce: 1 }, + { id: "winterSunnyAvg", title: "청천시\n평균", upName: "upChangeRe4", upSequnce: 2 }, + { id: "winterSunnyMax", title: "청천시\n최대", upName: "upChangeRe4", upSequnce: 3 }, + { id: "winterSunnyMin", title: "청천시\n최소", upName: "upChangeRe4", upSequnce: 4 }, + { id: "groundWaterAvg", title: "연평균", upName: "upChangeRe5", upSequnce: 1 }, + { 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[] = [ - { id: "rainItem", title: "강우량", row:0, rowSpan:2, widthPercent: 8 }, - { id: "rainRate", title: "강우조건\n비율(%)", row:0, rowSpan:2, align: "right", widthPercent: 5 }, - { id: "rainDay", title: "일수", row:0, rowSpan:2, align: "right", widthPercent: 5 }, - { id: "A", title: "유입(㎥/일)", row:0, colSpan:2 }, - { id: "inflAmnt", title: "유입유량", row:1, align: "right", widthPercent: 6 }, - { id: "fctCpc", title: "시설용량대비", row:1, align: "right", widthPercent: 6 }, - { id: "B", title: "설계유입수질(㎎/L)", row:0, colSpan:5 }, - { 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, 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, 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 upHeadListRainManage: TableUpperProps[] = [ + { id: "rainItem", title: "강우량", row: 0, rowSpan: 2, widthPercent: 8 }, + { id: "rainRate", title: "강우조건\n비율(%)", row: 0, rowSpan: 2, align: "right", widthPercent: 5 }, + { id: "rainDay", title: "일수", row: 0, rowSpan: 2, align: "right", widthPercent: 5 }, + { id: "A", title: "유입(㎥/일)", row: 0, colSpan: 2 }, + { id: "inflAmnt", title: "유입유량", row: 1, align: "right", widthPercent: 6 }, + { id: "fctCpc", title: "시설용량대비", row: 1, align: "right", widthPercent: 6 }, + { id: "B", title: "설계유입수질(㎎/L)", row: 0, colSpan: 5 }, + { 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, 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, 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[] = [ - { id: "part1", title: "구분", row:0, upName:"upChangeRe1", upSequnce:1 }, - { id: "part2", title: "구분", row:0, upName:"upChangeRe1", upSequnce:2 }, - { id: "nowSum", title: "계", row:2, upName:"upChangeRe2", upSequnce:1 }, - { id: "nowJoin", title: "합류식\n가구수", row:2, upName:"upChangeRe2", upSequnce:2 }, - { id: "nowSep", title: "분리식\n가구수", row:2, upName:"upChangeRe2", upSequnce:3 }, - { id: "stepOneSum", title: "계", row:2, upName:"upChangeRe3", upSequnce:1 }, - { id: "stepOneJoin", title: "합류식\n가구수", row:2, upName:"upChangeRe3", upSequnce:2 }, - { id: "stepOneSep", title: "분리식\n가구수", row:2, upName:"upChangeRe3", upSequnce:3 }, - { id: "stepTwoSum", title: "계", row:2, upName:"upChangeRe4", upSequnce:1 }, - { id: "stepTwoJoin", title: "합류식\n가구수", row:2, upName:"upChangeRe4", upSequnce:2 }, - { id: "stepTwoSep", title: "분리식\n가구수", row:2, upName:"upChangeRe4", upSequnce:3 }, - { id: "stepThreeSum", title: "계", row:2, upName:"upChangeRe5", upSequnce:1 }, - { id: "stepThreeJoin", title: "합류식\n가구수", row:2, upName:"upChangeRe5", upSequnce:2 }, - { id: "stepThreeSep", title: "분리식\n가구수", row:2, upName:"upChangeRe5", upSequnce:3 }, - { id: "stepFourSum", title: "계", row:2, upName:"upChangeRe6", upSequnce:1 }, - { id: "stepFourJoin", title: "합류식\n가구수", row:2, upName:"upChangeRe6", upSequnce:2 }, - { id: "stepFourSep", title: "분리식\n가구수", row:2, upName:"upChangeRe6", upSequnce:3 }, - { id: "etc", title: "비고", row:0, upName:"upChangeRe7", upSequnce:1 }, +const upHeadListDrainageEquipment: TableUpperProps[] = [ + { id: "part1", title: "구분", row: 0, upName: "upChangeRe1", upSequnce: 1 }, + { id: "part2", title: "구분", row: 0, upName: "upChangeRe1", upSequnce: 2 }, + { id: "nowSum", title: "계", row: 2, upName: "upChangeRe2", upSequnce: 1 }, + { id: "nowJoin", title: "합류식\n가구수", row: 2, upName: "upChangeRe2", upSequnce: 2 }, + { id: "nowSep", title: "분리식\n가구수", row: 2, upName: "upChangeRe2", upSequnce: 3 }, + { id: "stepOneSum", title: "계", row: 2, upName: "upChangeRe3", upSequnce: 1 }, + { id: "stepOneJoin", title: "합류식\n가구수", row: 2, upName: "upChangeRe3", upSequnce: 2 }, + { id: "stepOneSep", title: "분리식\n가구수", row: 2, upName: "upChangeRe3", upSequnce: 3 }, + { id: "stepTwoSum", title: "계", row: 2, upName: "upChangeRe4", upSequnce: 1 }, + { id: "stepTwoJoin", title: "합류식\n가구수", row: 2, upName: "upChangeRe4", upSequnce: 2 }, + { id: "stepTwoSep", title: "분리식\n가구수", row: 2, upName: "upChangeRe4", upSequnce: 3 }, + { id: "stepThreeSum", title: "계", row: 2, upName: "upChangeRe5", upSequnce: 1 }, + { id: "stepThreeJoin", title: "합류식\n가구수", row: 2, upName: "upChangeRe5", upSequnce: 2 }, + { id: "stepThreeSep", title: "분리식\n가구수", row: 2, upName: "upChangeRe5", upSequnce: 3 }, + { id: "stepFourSum", title: "계", row: 2, upName: "upChangeRe6", upSequnce: 1 }, + { id: "stepFourJoin", title: "합류식\n가구수", row: 2, upName: "upChangeRe6", upSequnce: 2 }, + { id: "stepFourSep", title: "분리식\n가구수", row: 2, upName: "upChangeRe6", upSequnce: 3 }, + { id: "etc", title: "비고", row: 0, upName: "upChangeRe7", upSequnce: 1 }, ] -const operationalStatusListOrg : OperationalStatusListProps[] = [ +const operationalStatusListOrg: OperationalStatusListProps[] = [ { - flowRate : '유량\n(㎥/일)', - waterQlty : '유입', - yearAvg : '', - yearMax : '', - yearMin : '', - summerAll : '', - summerThree : '', - summerRain : '', - winterAll : '', - winterSunnyAvg : '', - winterSunnyMax : '', - winterSunnyMin : '', - groundWaterAvg : '', - groundWaterSummer : '', - groundWaterWinter : '', - rdi : '', - rdiRain : '', + flowRate: '유량\n(㎥/일)', + waterQlty: '유입', + yearAvg: '', + yearMax: '', + yearMin: '', + summerAll: '', + summerThree: '', + summerRain: '', + winterAll: '', + winterSunnyAvg: '', + winterSunnyMax: '', + winterSunnyMin: '', + groundWaterAvg: '', + groundWaterSummer: '', + groundWaterWinter: '', + rdi: '', + rdiRain: '', }, { - flowRate : '유량\n(㎥/일)', - waterQlty : '순수하수', - yearAvg : '', - yearMax : '', - yearMin : '', - summerAll : '', - summerThree : '', - summerRain : '', - winterAll : '', - winterSunnyAvg : '', - winterSunnyMax : '', - winterSunnyMin : '', - groundWaterAvg : '', - groundWaterSummer : '', - groundWaterWinter : '', - rdi : '', - rdiRain : '', + flowRate: '유량\n(㎥/일)', + waterQlty: '순수하수', + yearAvg: '', + yearMax: '', + yearMin: '', + summerAll: '', + summerThree: '', + summerRain: '', + winterAll: '', + winterSunnyAvg: '', + winterSunnyMax: '', + winterSunnyMin: '', + groundWaterAvg: '', + groundWaterSummer: '', + groundWaterWinter: '', + rdi: '', + rdiRain: '', }, { - flowRate : '유량\n(㎥/일)', - waterQlty : '연계처리수', - yearAvg : '', - yearMax : '', - yearMin : '', - summerAll : '', - summerThree : '', - summerRain : '', - winterAll : '', - winterSunnyAvg : '', - winterSunnyMax : '', - winterSunnyMin : '', - groundWaterAvg : '', - groundWaterSummer : '', - groundWaterWinter : '', - rdi : '', - rdiRain : '', + flowRate: '유량\n(㎥/일)', + waterQlty: '연계처리수', + yearAvg: '', + yearMax: '', + yearMin: '', + summerAll: '', + summerThree: '', + summerRain: '', + winterAll: '', + winterSunnyAvg: '', + winterSunnyMax: '', + winterSunnyMin: '', + groundWaterAvg: '', + groundWaterSummer: '', + groundWaterWinter: '', + rdi: '', + rdiRain: '', }, { - flowRate : '유량\n(㎥/일)', - waterQlty : '총인설비\n반류수', - yearAvg : '', - yearMax : '', - yearMin : '', - summerAll : '', - summerThree : '', - summerRain : '', - winterAll : '', - winterSunnyAvg : '', - winterSunnyMax : '', - winterSunnyMin : '', - groundWaterAvg : '', - groundWaterSummer : '', - groundWaterWinter : '', - rdi : '', - rdiRain : '', + flowRate: '유량\n(㎥/일)', + waterQlty: '총인설비\n반류수', + yearAvg: '', + yearMax: '', + yearMin: '', + summerAll: '', + summerThree: '', + summerRain: '', + winterAll: '', + winterSunnyAvg: '', + winterSunnyMax: '', + winterSunnyMin: '', + groundWaterAvg: '', + groundWaterSummer: '', + groundWaterWinter: '', + rdi: '', + rdiRain: '', }, { - flowRate : '유량\n(㎥/일)', - waterQlty : '방류', - yearAvg : '', - yearMax : '', - yearMin : '', - summerAll : '', - summerThree : '', - summerRain : '', - winterAll : '', - winterSunnyAvg : '', - winterSunnyMax : '', - winterSunnyMin : '', - groundWaterAvg : '', - groundWaterSummer : '', - groundWaterWinter : '', - rdi : '', - rdiRain : '', + flowRate: '유량\n(㎥/일)', + waterQlty: '방류', + yearAvg: '', + yearMax: '', + yearMin: '', + summerAll: '', + summerThree: '', + summerRain: '', + winterAll: '', + winterSunnyAvg: '', + winterSunnyMax: '', + winterSunnyMin: '', + groundWaterAvg: '', + groundWaterSummer: '', + groundWaterWinter: '', + rdi: '', + rdiRain: '', }, { - flowRate : '수질\n(mg/L)', - waterQlty : '유입\n(BOD)', - yearAvg : '', - yearMax : '', - yearMin : '', - summerAll : '', - summerThree : '', - summerRain : '', - winterAll : '', - winterSunnyAvg : '', - winterSunnyMax : '', - winterSunnyMin : '', - groundWaterAvg : '', - groundWaterSummer : '', - groundWaterWinter : '', - rdi : '', - rdiRain : '', + flowRate: '수질\n(mg/L)', + waterQlty: '유입\n(BOD)', + yearAvg: '', + yearMax: '', + yearMin: '', + summerAll: '', + summerThree: '', + summerRain: '', + winterAll: '', + winterSunnyAvg: '', + winterSunnyMax: '', + winterSunnyMin: '', + groundWaterAvg: '', + groundWaterSummer: '', + groundWaterWinter: '', + rdi: '', + rdiRain: '', }, { - flowRate : '수질\n(mg/L)', - waterQlty : '방류\n(BOD)', - yearAvg : '', - yearMax : '', - yearMin : '', - summerAll : '', - summerThree : '', - summerRain : '', - winterAll : '', - winterSunnyAvg : '', - winterSunnyMax : '', - winterSunnyMin : '', - groundWaterAvg : '', - groundWaterSummer : '', - groundWaterWinter : '', - rdi : '', - rdiRain : '', + flowRate: '수질\n(mg/L)', + waterQlty: '방류\n(BOD)', + yearAvg: '', + yearMax: '', + yearMin: '', + summerAll: '', + summerThree: '', + summerRain: '', + winterAll: '', + winterSunnyAvg: '', + winterSunnyMax: '', + winterSunnyMin: '', + groundWaterAvg: '', + groundWaterSummer: '', + groundWaterWinter: '', + rdi: '', + rdiRain: '', }, { - flowRate : '수질\n(mg/L)', - waterQlty : '유입\n(T-N)', - yearAvg : '', - yearMax : '', - yearMin : '', - summerAll : '', - summerThree : '', - summerRain : '', - winterAll : '', - winterSunnyAvg : '', - winterSunnyMax : '', - winterSunnyMin : '', - groundWaterAvg : '', - groundWaterSummer : '', - groundWaterWinter : '', - rdi : '', - rdiRain : '', + flowRate: '수질\n(mg/L)', + waterQlty: '유입\n(T-N)', + yearAvg: '', + yearMax: '', + yearMin: '', + summerAll: '', + summerThree: '', + summerRain: '', + winterAll: '', + winterSunnyAvg: '', + winterSunnyMax: '', + winterSunnyMin: '', + groundWaterAvg: '', + groundWaterSummer: '', + groundWaterWinter: '', + rdi: '', + rdiRain: '', }, { - flowRate : '수질\n(mg/L)', - waterQlty : '방류\n(T-N)', - yearAvg : '', - yearMax : '', - yearMin : '', - summerAll : '', - summerThree : '', - summerRain : '', - winterAll : '', - winterSunnyAvg : '', - winterSunnyMax : '', - winterSunnyMin : '', - groundWaterAvg : '', - groundWaterSummer : '', - groundWaterWinter : '', - rdi : '', - rdiRain : '', + flowRate: '수질\n(mg/L)', + waterQlty: '방류\n(T-N)', + yearAvg: '', + yearMax: '', + yearMin: '', + summerAll: '', + summerThree: '', + summerRain: '', + winterAll: '', + winterSunnyAvg: '', + winterSunnyMax: '', + winterSunnyMin: '', + groundWaterAvg: '', + groundWaterSummer: '', + groundWaterWinter: '', + rdi: '', + rdiRain: '', }, { - flowRate : '수질\n(mg/L)', - waterQlty : '유입\n(T-P)', - yearAvg : '', - yearMax : '', - yearMin : '', - summerAll : '', - summerThree : '', - summerRain : '', - winterAll : '', - winterSunnyAvg : '', - winterSunnyMax : '', - winterSunnyMin : '', - groundWaterAvg : '', - groundWaterSummer : '', - groundWaterWinter : '', - rdi : '', - rdiRain : '', + flowRate: '수질\n(mg/L)', + waterQlty: '유입\n(T-P)', + yearAvg: '', + yearMax: '', + yearMin: '', + summerAll: '', + summerThree: '', + summerRain: '', + winterAll: '', + winterSunnyAvg: '', + winterSunnyMax: '', + winterSunnyMin: '', + groundWaterAvg: '', + groundWaterSummer: '', + groundWaterWinter: '', + rdi: '', + rdiRain: '', }, { - flowRate : '수질\n(mg/L)', - waterQlty : '방류\n(T-P)', - yearAvg : '', - yearMax : '', - yearMin : '', - summerAll : '', - summerThree : '', - summerRain : '', - winterAll : '', - winterSunnyAvg : '', - winterSunnyMax : '', - winterSunnyMin : '', - groundWaterAvg : '', - groundWaterSummer : '', - groundWaterWinter : '', - rdi : '', - rdiRain : '', + flowRate: '수질\n(mg/L)', + waterQlty: '방류\n(T-P)', + yearAvg: '', + yearMax: '', + yearMin: '', + summerAll: '', + summerThree: '', + summerRain: '', + winterAll: '', + winterSunnyAvg: '', + winterSunnyMax: '', + winterSunnyMin: '', + groundWaterAvg: '', + groundWaterSummer: '', + groundWaterWinter: '', + rdi: '', + rdiRain: '', }, { - flowRate : '총인\n시설\n수질\n(mg/L)', - waterQlty : '총인설비\n유입(T-P)', - yearAvg : '', - yearMax : '', - yearMin : '', - summerAll : '', - summerThree : '', - summerRain : '', - winterAll : '', - winterSunnyAvg : '', - winterSunnyMax : '', - winterSunnyMin : '', - groundWaterAvg : '', - groundWaterSummer : '', - groundWaterWinter : '', - rdi : '', - rdiRain : '', + flowRate: '총인\n시설\n수질\n(mg/L)', + waterQlty: '총인설비\n유입(T-P)', + yearAvg: '', + yearMax: '', + yearMin: '', + summerAll: '', + summerThree: '', + summerRain: '', + winterAll: '', + winterSunnyAvg: '', + winterSunnyMax: '', + winterSunnyMin: '', + groundWaterAvg: '', + groundWaterSummer: '', + groundWaterWinter: '', + rdi: '', + rdiRain: '', }, { - flowRate : '총인\n시설\n수질\n(mg/L)', - waterQlty : '총인설비\n방류(T-P)', - yearAvg : '', - yearMax : '', - yearMin : '', - summerAll : '', - summerThree : '', - summerRain : '', - winterAll : '', - winterSunnyAvg : '', - winterSunnyMax : '', - winterSunnyMin : '', - groundWaterAvg : '', - groundWaterSummer : '', - groundWaterWinter : '', - rdi : '', - rdiRain : '', + flowRate: '총인\n시설\n수질\n(mg/L)', + waterQlty: '총인설비\n방류(T-P)', + yearAvg: '', + yearMax: '', + yearMin: '', + summerAll: '', + summerThree: '', + summerRain: '', + winterAll: '', + winterSunnyAvg: '', + winterSunnyMax: '', + winterSunnyMin: '', + groundWaterAvg: '', + groundWaterSummer: '', + groundWaterWinter: '', + rdi: '', + rdiRain: '', }, ] -const chart_inflowRain : lineBarChartDataProps[] = []; -const chart_bodRain : lineBarChartDataProps[] = []; -const chart_inflTp : lineChartDataProps[] = []; -const chart_chongInTp : lineChartDataProps[] = []; -const chart_efflTp : lineChartDataProps[] = []; -const chart_inflTn : lineChartDataProps[] = []; -const chart_efflTn : lineChartDataProps[] = []; -const chart_inflBod : lineChartDataProps[] = []; -const chart_efflBod : lineChartDataProps[] = []; -const waterQltyStandartd : any = []; +const chart_inflowRain: lineBarChartDataProps[] = []; +const chart_bodRain: lineBarChartDataProps[] = []; +const chart_inflTp: lineChartDataProps[] = []; +const chart_chongInTp: lineChartDataProps[] = []; +const chart_efflTp: lineChartDataProps[] = []; +const chart_inflTn: lineChartDataProps[] = []; +const chart_efflTn: lineChartDataProps[] = []; +const chart_inflBod: lineChartDataProps[] = []; +const chart_efflBod: lineChartDataProps[] = []; +const waterQltyStandartd: any = []; -const rainManageList : RainManageListProps[] = []; +const rainManageList: RainManageListProps[] = []; -const drainageEquipmentList : DrainageEquipmentListProps[] = [ +const drainageEquipmentList: DrainageEquipmentListProps[] = [ { - part1 : '청천시청', - part2 : '청천시청', - nowSum : 101, - nowJoin : 102, - nowSep : 103, - stepOneSum : 104, - stepOneJoin : 105, - stepOneSep : 106, - stepTwoSum : 107, - stepTwoJoin : 108, - stepTwoSep : 109, - stepThreeSum : 110, - stepThreeJoin : 111, - stepThreeSep : 112, - stepFourSum : 113, - stepFourJoin : 114, - stepFourSep : 115, - etc : '1050', + part1: '청천시청', + part2: '청천시청', + nowSum: 101, + nowJoin: 102, + nowSep: 103, + stepOneSum: 104, + stepOneJoin: 105, + stepOneSep: 106, + stepTwoSum: 107, + stepTwoJoin: 108, + stepTwoSep: 109, + stepThreeSum: 110, + stepThreeJoin: 111, + stepThreeSep: 112, + stepFourSum: 113, + stepFourJoin: 114, + stepFourSep: 115, + etc: '1050', } ]; @@ -703,50 +703,50 @@ const drainageEquipmentList : DrainageEquipmentListProps[] = [ * Store - api (데이터 호출) ====================================*/ /* 시설정보 및 운영현황 - 계획 */ -const fetchFacilityPlan = async (targetYear : string | undefined, fcltyCd : string | undefined, set : (fn: (state: DashBoardType) => DashBoardType) => void) => { - try { - const res = await fetchPlanInfo(undefined, undefined, undefined, fcltyCd); - return res; - } catch (error) { - console.error('시설계획정보를 가져오는데 실패했습니다:', error); - set((state) => ({ - ...state, - PlanFclty : { - ...state.PlanFclty, - isLoadingPlanFclty : false, - isLoadingOperationStatus : false - } - })); - return {data: [], count: 0}; - } +const fetchFacilityPlan = async (targetYear: string | undefined, fcltyCd: string | undefined, set: (fn: (state: DashBoardType) => DashBoardType) => void) => { + try { + const res = await fetchPlanInfo(undefined, undefined, undefined, fcltyCd); + return res; + } catch (error) { + console.error('시설계획정보를 가져오는데 실패했습니다:', error); + set((state) => ({ + ...state, + PlanFclty: { + ...state.PlanFclty, + isLoadingPlanFclty: false, + isLoadingOperationStatus: false + } + })); + return { data: [], count: 0 }; + } }; /* 시설정보 및 운영현황 - 운영실태 */ -const fetchOperationStatus = async (searchYear: string|undefined, fcltyCd: string|undefined) => { - try{ - const url = '/dashBoard/mngInfo/' + (searchYear?searchYear:'2023') + '/' + (fcltyCd?fcltyCd:''); +const fetchOperationStatus = async (searchYear: string | undefined, fcltyCd: string | undefined) => { + try { + const url = '/dashBoard/mngInfo/' + (searchYear ? searchYear : '2023') + '/' + (fcltyCd ? fcltyCd : ''); const res = await getFetch('fo', url); return { data: res.data, count: res.count } - } catch (error) { + } catch (error) { console.error('운영실태 데이터를 가져오는데 실패했습니다:', error); return { data: [], count: 0 }; } } // 주요그래프 데이터 -const fetchMainGraph = async (searchYear: string|undefined, fcltyCd: string|undefined) => { - try { - const url = '/fclt/qlty/hist/' + (searchYear?searchYear:'2023') + '/' + (fcltyCd?fcltyCd:'11680PB001R'); +const fetchMainGraph = async (searchYear: string | undefined, fcltyCd: string | undefined) => { + try { + 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) { + } catch (error) { console.error('주요그래프 데이터를 가져오는데 실패했습니다:', error); return { data: [], count: 0 }; } } // 수질 데이터 청천시, 강우시 재계산 -const calcWaterQltyData = async (data: any[], searchYear : string|undefined, fcltyCd : string|undefined) => { +const calcWaterQltyData = async (data: any[], searchYear: string | undefined, fcltyCd: string | undefined) => { const nullToZero = (value: any) => { return value === null || value === undefined || value === '' ? 0 : Number(value); @@ -754,180 +754,210 @@ const calcWaterQltyData = async (data: any[], searchYear : string|undefined, fcl const orgData = data; const res = await fetchMainGraph(searchYear, fcltyCd); - if(res.data.wqltObjs.length> 0) { + if (res.data.wqltObjs.length > 0) { const clone = (arr: any[]) => arr?.map(v => ({ ...v })) ?? []; const qltyData = res.data.wqltObjs; - const qltyChungchunData = CalcRainEffect(clone(qltyData), 'SUNNY'); + // const qltyChungchunData = CalcRainEffect(clone(qltyData), 'SUNNY'); + + // 강우시 변수 + let rainSummerDay9 = 0, noNullRainSummerDay9 = 0; + let rainInflBodAvg9 = 0, rainInflTnAvg9 = 0, rainInflTpAvg9 = 0; + let rainEfflBodAvg9 = 0, rainEfflTnAvg9 = 0, rainEfflTpAvg9 = 0, rainTpInflAvg9 = 0; const qltyRainData = CalcRainEffect(clone(qltyData), 'RAIN'); + const rainEffectDayArray: string[] = []; + // 강우시 + qltyRainData.forEach((item: any) => { + const month = item.msrDt.substring(4, 6); // 월 추출 + if (month === '06' || month === '07' || month === '08') { + rainSummerDay9 += 1; + if (item.tpInflWqltTp != null && item.tpInflWqltTp != 0) { + noNullRainSummerDay9 += 1; + } + + rainInflBodAvg9 += nullToZero(item.inflAssctBfrWqltBod); + rainInflTnAvg9 += nullToZero(item.inflAssctBfrWqltTn); + rainInflTpAvg9 += nullToZero(item.inflAssctBfrWqltTp); + rainEfflBodAvg9 += nullToZero(item.efflWqltBod); + rainEfflTnAvg9 += nullToZero(item.efflWqltTn); + rainEfflTpAvg9 += nullToZero(item.efflWqltTp); + rainTpInflAvg9 += nullToZero(item.tpInflWqltTp); + } + }); + console.log("99999999999999999"); + console.log(rainSummerDay9, noNullRainSummerDay9, rainInflBodAvg9, rainInflTnAvg9, rainInflTpAvg9, rainEfflBodAvg9, rainEfflTnAvg9, rainEfflTpAvg9, rainTpInflAvg9); // (0) 전체변수 - let summerDay = 0; - let noNullSummerDay = 0; - let totalInflBodAvgSummer = 0; - let totalInflTnAvgSummer = 0; - let totalInflTpAvgSummer = 0; - let totalEfflBodAvgSummer = 0; - let totalEfflTnAvgSummer = 0; - let totalEfflTpAvgSummer = 0; - let totalTpInflAvgSummer = 0; + let summerDay = 0, noNullSummerDay = 0; + let totalInflBodAvgSummer = 0, totalInflTnAvgSummer = 0, totalInflTpAvgSummer = 0; + let totalEfflBodAvgSummer = 0, totalEfflTnAvgSummer = 0, totalEfflTpAvgSummer = 0, totalTpInflAvgSummer = 0; - let winterDay = 0; - let noNullWinterDay = 0; - let totalInflBodAvgWinter = 0; - let totalInflTnAvgWinter = 0; - let totalInflTpAvgWinter = 0; - let totalEfflBodAvgWinter = 0; - let totalEfflTnAvgWinter = 0; - let totalEfflTpAvgWinter = 0; - let totalTpInflAvgWinter = 0; + let winterDay = 0, noNullWinterDay = 0; + let totalInflBodAvgWinter = 0, totalInflTnAvgWinter = 0, totalInflTpAvgWinter = 0; + let totalEfflBodAvgWinter = 0, totalEfflTnAvgWinter = 0, totalEfflTpAvgWinter = 0, totalTpInflAvgWinter = 0; + // (1) 청천시 변수 + // (1-1) 날짜 count + let chungchunSummerDay = 0, noNullChungchunSummerDay = 0; + let chungchunWinterDay = 0, noNullChungchunWinterDay = 0; + + // (1-2) 하절기 + let chungchunInflBodAvgSummer = 0, chungchunInflTnAvgSummer = 0, chungchunInflTpAvgSummer = 0; + let chungchunEfflBodAvgSummer = 0, chungchunEfflTnAvgSummer = 0, chungchunEfflTpAvgSummer = 0; + let chungchunTpInflAvgSummer = 0; // 하절기 청천시 총인설비 유입TP + + // (1-3) 동절기 (최대, 최소, 평균 다 필요) + let chungchunInflBodAvg = 0, chungchunInflTnAvg = 0, chungchunInflTpAvg = 0, chungchunTpInflAvg = 0; + let chungchunInflBodMax = 0, chungchunInflTnMax = 0, chungchunInflTpMax = 0, chungchunTpInflMax = 0; + let chungchunInflBodMin = 99999999; + let chungchunInflTnMin = 99999999; + let chungchunInflTpMin = 99999999; + let chungchunTpInflMin = 99999999; + + let chungchunEfflBodAvg = 0, chungchunEfflTnAvg = 0, chungchunEfflTpAvg = 0; + let chungchunEfflBodMax = 0, chungchunEfflTnMax = 0, chungchunEfflTpMax = 0; + let chungchunEfflBodMin = 99999999; + let chungchunEfflTnMin = 99999999; + let chungchunEfflTpMin = 99999999; + + // 강우시 변수 + let rainSummerDay = 0, noNullRainSummerDay = 0; + let rainInflBodAvg = 0, rainInflTnAvg = 0, rainInflTpAvg = 0; + let rainEfflBodAvg = 0, rainEfflTnAvg = 0, rainEfflTpAvg = 0, rainTpInflAvg = 0; + + let rainEffectDay = 0; // 전체 대상 qltyData.forEach((item: any) => { + if (item.infoRnDay == null) item.infoRnDay = 0; const month = item.msrDt.substring(4, 6); // 월 추출 - if(month === '01' || month === '02'){ + + if (item.infoRnDay >= 3) { + rainEffectDay = 2; + } else { + rainEffectDay--; + } + + if (rainEffectDay >= 0) { + rainEffectDayArray.push(item.msrDt); + // 강우영향일 + if (month === '06' || month === '07' || month === '08') { + rainSummerDay += 1; + if (item.tpInflWqltTp != null && item.tpInflWqltTp != 0) { + noNullRainSummerDay += 1; + } + + rainInflBodAvg += nullToZero(item.inflAssctBfrWqltBod); + rainInflTnAvg += nullToZero(item.inflAssctBfrWqltTn); + rainInflTpAvg += nullToZero(item.inflAssctBfrWqltTp); + rainEfflBodAvg += nullToZero(item.efflWqltBod); + rainEfflTnAvg += nullToZero(item.efflWqltTn); + rainEfflTpAvg += nullToZero(item.efflWqltTp); + rainTpInflAvg += nullToZero(item.tpInflWqltTp); + } + } else if (rainEffectDay < 0) { //청천시 + + if (month === '01' || month === '02') { + chungchunWinterDay += 1; + if (item.tpInflWqltTp != null && item.tpInflWqltTp != 0) { + noNullChungchunWinterDay += 1; + } + + const inflbod = nullToZero(item.inflAssctBfrWqltBod); + const infltn = nullToZero(item.inflAssctBfrWqltTn); + const infltp = nullToZero(item.inflAssctBfrWqltTp); + const effbod = nullToZero(item.efflWqltBod); + const efftn = nullToZero(item.efflWqltTn); + const efftp = nullToZero(item.efflWqltTp); + const tpInfl = nullToZero(item.tpInflWqltTp); + + chungchunInflBodAvg += inflbod; + chungchunInflTnAvg += infltn; + chungchunInflTpAvg += infltp; + chungchunEfflBodAvg += effbod; + chungchunEfflTnAvg += efftn; + chungchunEfflTpAvg += efftp; + chungchunTpInflAvg += tpInfl; + + if (chungchunInflBodMax < inflbod) chungchunInflBodMax = inflbod; + if (chungchunInflTnMax < infltn) chungchunInflTnMax = infltn; + if (chungchunInflTpMax < infltp) chungchunInflTpMax = infltp; + if (chungchunEfflBodMax < effbod) chungchunEfflBodMax = effbod; + if (chungchunEfflTnMax < efftn) chungchunEfflTnMax = efftn; + if (chungchunEfflTpMax < efftp) chungchunEfflTpMax = efftp; + if (chungchunTpInflMax < tpInfl) chungchunTpInflMax = tpInfl; + + if (chungchunInflBodMin > inflbod) chungchunInflBodMin = inflbod; + if (chungchunInflTnMin > infltn) chungchunInflTnMin = infltn; + if (chungchunInflTpMin > infltp) chungchunInflTpMin = infltp; + if (chungchunEfflBodMin > effbod) chungchunEfflBodMin = effbod; + if (chungchunEfflTnMin > efftn) chungchunEfflTnMin = efftn; + if (chungchunEfflTpMin > efftp) chungchunEfflTpMin = efftp; + if (chungchunTpInflMin > tpInfl) chungchunTpInflMin = tpInfl; + } else if (month === '06' || month === '07' || month === '08') { + chungchunSummerDay += 1; + if (item.tpInflWqltTp != null && item.tpInflWqltTp != 0) { + noNullChungchunSummerDay += 1; + } + + chungchunInflBodAvgSummer += nullToZero(item.inflAssctBfrWqltBod); + chungchunInflTnAvgSummer += nullToZero(item.inflAssctBfrWqltTn); + chungchunInflTpAvgSummer += nullToZero(item.inflAssctBfrWqltTp); + chungchunEfflBodAvgSummer += nullToZero(item.efflWqltBod); + chungchunEfflTnAvgSummer += nullToZero(item.efflWqltTn); + chungchunEfflTpAvgSummer += nullToZero(item.efflWqltTp); + chungchunTpInflAvgSummer += nullToZero(item.tpInflWqltTp); + } + } + + + if (month === '01' || month === '02') { winterDay += 1; - if(item.tpInflWqltTp != null && item.tpInflWqltTp != 0){ - noNullWinterDay+=1; + if (item.tpInflWqltTp != null && item.tpInflWqltTp != 0) { + noNullWinterDay += 1; } totalInflBodAvgWinter += nullToZero(item.inflAssctBfrWqltBod); - totalInflTnAvgWinter += nullToZero(item.inflAssctBfrWqltTn); - totalInflTpAvgWinter += nullToZero(item.inflAssctBfrWqltTp); + totalInflTnAvgWinter += nullToZero(item.inflAssctBfrWqltTn); + totalInflTpAvgWinter += nullToZero(item.inflAssctBfrWqltTp); totalEfflBodAvgWinter += nullToZero(item.efflWqltBod); - totalEfflTnAvgWinter += nullToZero(item.efflWqltTn); - totalEfflTpAvgWinter += nullToZero(item.efflWqltTp); - totalTpInflAvgWinter += nullToZero(item.tpInflWqltTp); - }else if(month === '06' || month === '07' || month === '08'){ + totalEfflTnAvgWinter += nullToZero(item.efflWqltTn); + totalEfflTpAvgWinter += nullToZero(item.efflWqltTp); + totalTpInflAvgWinter += nullToZero(item.tpInflWqltTp); + } else if (month === '06' || month === '07' || month === '08') { summerDay += 1; - if(item.tpInflWqltTp != null && item.tpInflWqltTp != 0){ - noNullSummerDay+=1; + if (item.tpInflWqltTp != null && item.tpInflWqltTp != 0) { + noNullSummerDay += 1; } totalInflBodAvgSummer += nullToZero(item.inflAssctBfrWqltBod); - totalInflTnAvgSummer += nullToZero(item.inflAssctBfrWqltTn); - totalInflTpAvgSummer += nullToZero(item.inflAssctBfrWqltTp); + totalInflTnAvgSummer += nullToZero(item.inflAssctBfrWqltTn); + totalInflTpAvgSummer += nullToZero(item.inflAssctBfrWqltTp); totalEfflBodAvgSummer += nullToZero(item.efflWqltBod); - totalEfflTnAvgSummer += nullToZero(item.efflWqltTn); - totalEfflTpAvgSummer += nullToZero(item.efflWqltTp); - totalTpInflAvgSummer += nullToZero(item.tpInflWqltTp); + totalEfflTnAvgSummer += nullToZero(item.efflWqltTn); + totalEfflTpAvgSummer += nullToZero(item.efflWqltTp); + totalTpInflAvgSummer += nullToZero(item.tpInflWqltTp); } }); - orgData[5].winterAll = qltyDataSetting(totalInflBodAvgWinter, winterDay, 1); // 동절기 유입BOD - orgData[6].winterAll = qltyDataSetting(totalEfflBodAvgWinter, winterDay, 1); // 동절기 방류BOD - orgData[7].winterAll = qltyDataSetting(totalInflTnAvgWinter, winterDay, 3); // 동절기 유입TN - orgData[8].winterAll = qltyDataSetting(totalEfflTnAvgWinter, winterDay, 3); // 동절기 방류TN - orgData[9].winterAll = qltyDataSetting(totalInflTpAvgWinter, winterDay, 3); // 동절기 유입TP + orgData[5].winterAll = qltyDataSetting(totalInflBodAvgWinter, winterDay, 1); // 동절기 유입BOD + orgData[6].winterAll = qltyDataSetting(totalEfflBodAvgWinter, winterDay, 1); // 동절기 방류BOD + orgData[7].winterAll = qltyDataSetting(totalInflTnAvgWinter, winterDay, 3); // 동절기 유입TN + orgData[8].winterAll = qltyDataSetting(totalEfflTnAvgWinter, winterDay, 3); // 동절기 방류TN + orgData[9].winterAll = qltyDataSetting(totalInflTpAvgWinter, winterDay, 3); // 동절기 유입TP orgData[10].winterAll = qltyDataSetting(totalEfflTpAvgWinter, winterDay, 3); // 동절기 방류TP //총인설비 orgData[11].winterAll = qltyDataSetting(totalTpInflAvgWinter, noNullWinterDay, 3); orgData[12].winterAll = qltyDataSetting(totalEfflTpAvgWinter, winterDay, 3); - orgData[5].summerAll = qltyDataSetting(totalInflBodAvgSummer, summerDay, 1); // 하절기 유입BOD - orgData[6].summerAll = qltyDataSetting(totalEfflBodAvgSummer, summerDay, 1); // 하절기 방류BOD - orgData[7].summerAll = qltyDataSetting(totalInflTnAvgSummer, summerDay, 3); // 하절기 유입TN - orgData[8].summerAll = qltyDataSetting(totalEfflTnAvgSummer, summerDay, 3); // 하절기 방류TN - orgData[9].summerAll = qltyDataSetting(totalInflTpAvgSummer, summerDay, 3); // 하절기 유입TP + orgData[5].summerAll = qltyDataSetting(totalInflBodAvgSummer, summerDay, 1); // 하절기 유입BOD + orgData[6].summerAll = qltyDataSetting(totalEfflBodAvgSummer, summerDay, 1); // 하절기 방류BOD + orgData[7].summerAll = qltyDataSetting(totalInflTnAvgSummer, summerDay, 3); // 하절기 유입TN + orgData[8].summerAll = qltyDataSetting(totalEfflTnAvgSummer, summerDay, 3); // 하절기 방류TN + orgData[9].summerAll = qltyDataSetting(totalInflTpAvgSummer, summerDay, 3); // 하절기 유입TP orgData[10].summerAll = qltyDataSetting(totalEfflTpAvgSummer, summerDay, 3); // 하절기 방류TP //총인설비 orgData[11].summerAll = qltyDataSetting(totalTpInflAvgSummer, noNullSummerDay, 3); orgData[12].summerAll = qltyDataSetting(totalEfflTpAvgSummer, summerDay, 3); - // (1) 청천시 변수 - // (1-1) 날짜 count - let chungchunSummerDay = 0; - let chungchunWinterDay = 0; - let noNullChungchunSummerDay = 0; - let noNullChungchunWinterDay = 0; - - // (1-2) 하절기 - let chungchunInflBodAvgSummer = 0; // 하절기 청천시 유입BOD - let chungchunInflTnAvgSummer = 0; // 하절기 청천시 유입TN - let chungchunInflTpAvgSummer = 0; // 하절기 청천시 유입TP - let chungchunEfflBodAvgSummer = 0; // 하절기 청천시 방류BOD - let chungchunEfflTnAvgSummer = 0; // 하절기 청천시 방류TN - let chungchunEfflTpAvgSummer = 0; // 하절기 청천시 방류TP - let chungchunTpInflAvgSummer = 0; // 하절기 청천시 총인설비 유입TP - - // (1-3) 동절기 (최대, 최소, 평균 다 필요) - let chungchunInflBodAvg = 0; - let chungchunInflTnAvg = 0; - let chungchunInflTpAvg = 0; - let chungchunTpInflAvg = 0; - let chungchunInflBodMax = 0; - let chungchunInflTnMax = 0; - let chungchunInflTpMax = 0; - let chungchunTpInflMax = 0; - let chungchunInflBodMin = 99999999; - let chungchunInflTnMin = 99999999; - let chungchunInflTpMin = 99999999; - let chungchunTpInflMin = 99999999; - - let chungchunEfflBodAvg = 0; - let chungchunEfflTnAvg = 0; - let chungchunEfflTpAvg = 0; - let chungchunEfflBodMax = 0; - let chungchunEfflTnMax = 0; - let chungchunEfflTpMax = 0; - let chungchunEfflBodMin = 99999999; - let chungchunEfflTnMin = 99999999; - let chungchunEfflTpMin = 99999999; - - // 청천시 - qltyChungchunData.forEach((item: any) => { - const month = item.msrDt.substring(4, 6); // 월 추출 - if(month === '01' || month === '02'){ - chungchunWinterDay += 1; - if(item.tpInflWqltTp != null && item.tpInflWqltTp != 0){ - noNullChungchunWinterDay+=1; - } - - const inflbod = nullToZero(item.inflAssctBfrWqltBod); - const infltn = nullToZero(item.inflAssctBfrWqltTn); - const infltp = nullToZero(item.inflAssctBfrWqltTp); - const effbod = nullToZero(item.efflWqltBod); - const efftn = nullToZero(item.efflWqltTn); - const efftp = nullToZero(item.efflWqltTp); - const tpInfl = nullToZero(item.tpInflWqltTp); - - chungchunInflBodAvg += inflbod; - chungchunInflTnAvg += infltn; - chungchunInflTpAvg += infltp; - chungchunEfflBodAvg += effbod; - chungchunEfflTnAvg += efftn; - chungchunEfflTpAvg += efftp; - chungchunTpInflAvg += tpInfl; - - if(chungchunInflBodMax < inflbod) chungchunInflBodMax = inflbod; - if(chungchunInflTnMax < infltn) chungchunInflTnMax = infltn; - if(chungchunInflTpMax < infltp) chungchunInflTpMax = infltp; - if(chungchunEfflBodMax < effbod) chungchunEfflBodMax = effbod; - if(chungchunEfflTnMax < efftn) chungchunEfflTnMax = efftn; - if(chungchunEfflTpMax < efftp) chungchunEfflTpMax = efftp; - if(chungchunTpInflMax < tpInfl) chungchunTpInflMax = tpInfl; - - if(chungchunInflBodMin > inflbod) chungchunInflBodMin = inflbod; - if(chungchunInflTnMin > infltn) chungchunInflTnMin = infltn; - if(chungchunInflTpMin > infltp) chungchunInflTpMin = infltp; - if(chungchunEfflBodMin > effbod) chungchunEfflBodMin = effbod; - if(chungchunEfflTnMin > efftn) chungchunEfflTnMin = efftn; - if(chungchunEfflTpMin > efftp) chungchunEfflTpMin = efftp; - if(chungchunTpInflMin > tpInfl) chungchunTpInflMin = tpInfl; - }else if(month === '06' || month === '07' || month === '08'){ - chungchunSummerDay += 1; - if(item.tpInflWqltTp != null && item.tpInflWqltTp != 0){ - noNullChungchunSummerDay+=1; - } - - chungchunInflBodAvgSummer += nullToZero(item.inflAssctBfrWqltBod); - chungchunInflTnAvgSummer += nullToZero(item.inflAssctBfrWqltTn); - chungchunInflTpAvgSummer += nullToZero(item.inflAssctBfrWqltTp); - chungchunEfflBodAvgSummer += nullToZero(item.efflWqltBod); - chungchunEfflTnAvgSummer += nullToZero(item.efflWqltTn); - chungchunEfflTpAvgSummer += nullToZero(item.efflWqltTp); - chungchunTpInflAvgSummer += nullToZero(item.tpInflWqltTp); - } - }); // 청천시 수질 데이터 수정 // 하절기 @@ -972,37 +1002,6 @@ const calcWaterQltyData = async (data: any[], searchYear : string|undefined, fcl orgData[11].winterSunnyMin = chungchunTpInflMin === 99999999 ? '0.000' : roundUp(chungchunTpInflMin, 3).toFixed(3); orgData[12].winterSunnyMin = chungchunInflTpMin === 99999999 ? '0.000' : roundUp(chungchunInflTpMin, 3).toFixed(3); - // 강우시 변수 - let rainSummerDay = 0; - let noNullRainSummerDay = 0; - - let rainInflBodAvg = 0; - let rainInflTnAvg = 0; - let rainInflTpAvg = 0; - let rainEfflBodAvg = 0; - let rainEfflTnAvg = 0; - let rainEfflTpAvg = 0; - let rainTpInflAvg = 0; - - // 강우시 - qltyRainData.forEach((item: any) => { - const month = item.msrDt.substring(4, 6); // 월 추출 - if(month === '06' || month === '07' || month === '08'){ - rainSummerDay += 1; - if(item.tpInflWqltTp != null && item.tpInflWqltTp != 0){ - noNullRainSummerDay+=1; - } - - rainInflBodAvg += nullToZero(item.inflAssctBfrWqltBod); - rainInflTnAvg += nullToZero(item.inflAssctBfrWqltTn); - rainInflTpAvg += nullToZero(item.inflAssctBfrWqltTp); - rainEfflBodAvg += nullToZero(item.efflWqltBod); - rainEfflTnAvg += nullToZero(item.efflWqltTn); - rainEfflTpAvg += nullToZero(item.efflWqltTp); - rainTpInflAvg += nullToZero(item.tpInflWqltTp); - } - }); - // 강우시 수질 데이터 수정 orgData[5].summerThree = qltyDataSetting(rainInflBodAvg, rainSummerDay, 1); orgData[6].summerThree = qltyDataSetting(rainEfflBodAvg, rainSummerDay, 1); @@ -1014,6 +1013,8 @@ const calcWaterQltyData = async (data: any[], searchYear : string|undefined, fcl // 총인설비 orgData[11].summerThree = qltyDataSetting(rainTpInflAvg, noNullRainSummerDay, 3); orgData[12].summerThree = qltyDataSetting(rainInflTpAvg, rainSummerDay, 3); + console.log(rainEffectDayArray); + console.log("000000000", rainSummerDay, noNullRainSummerDay, rainInflBodAvg, rainInflTnAvg, rainInflTpAvg, rainEfflBodAvg, rainEfflTnAvg, rainEfflTpAvg, rainTpInflAvg); return orgData; } else { @@ -1039,190 +1040,190 @@ export type DashBoardActions = { export type DashBoardType = { DashboardMain: { isInit: boolean; - topLabelArray:string[]; + topLabelArray: string[]; }, - FcltyMain : { - isInit : boolean; - upHeadListFclty : TableUpperProps[]; - fcltyList : mainFcltyProps[]; + FcltyMain: { + isInit: boolean; + upHeadListFclty: TableUpperProps[]; + fcltyList: mainFcltyProps[]; }, - PlanFclty : { - isInit : boolean; - planYearList : string[]; - upHeadListPlanFclty : TableUpperProps[]; - planFcltyList : planFcltyListProps[]; - waterUsage1 : number | '', - waterUsage2 : number | '', - waterUsage3 : number | '', - isLoadingPlanFclty : boolean; + PlanFclty: { + isInit: boolean; + planYearList: string[]; + upHeadListPlanFclty: TableUpperProps[]; + planFcltyList: planFcltyListProps[]; + waterUsage1: number | '', + waterUsage2: number | '', + waterUsage3: number | '', + isLoadingPlanFclty: boolean; }, - OperationStatus : { - isInit : boolean; - upHeadListOperationStatus : TableUpperProps[]; - operationalStatusList : any; - isLoadingOperationStatus : boolean; + OperationStatus: { + isInit: boolean; + upHeadListOperationStatus: TableUpperProps[]; + operationalStatusList: any; + isLoadingOperationStatus: boolean; } - MainGraph : { - isInit : boolean; - chart_inflowRain : lineBarChartDataProps[]; - chart_bodRain : lineBarChartDataProps[]; - chart_inflTp : lineChartDataProps[]; - chart_chongInTp : lineChartDataProps[]; - chart_efflTp : lineChartDataProps[]; - chart_inflTn : lineChartDataProps[]; - chart_efflTn : lineChartDataProps[]; - chart_inflBod : lineChartDataProps[]; - chart_efflBod : lineChartDataProps[]; - waterQltyStandartd : any; - isLoadingMainGraph : boolean; + MainGraph: { + isInit: boolean; + chart_inflowRain: lineBarChartDataProps[]; + chart_bodRain: lineBarChartDataProps[]; + chart_inflTp: lineChartDataProps[]; + chart_chongInTp: lineChartDataProps[]; + chart_efflTp: lineChartDataProps[]; + chart_inflTn: lineChartDataProps[]; + chart_efflTn: lineChartDataProps[]; + chart_inflBod: lineChartDataProps[]; + chart_efflBod: lineChartDataProps[]; + waterQltyStandartd: any; + isLoadingMainGraph: boolean; }, - RainManage : { - isInit : boolean; - upHeadListRainManage : TableUpperProps[]; - rainManageList : RainManageListProps[]; - excelList : RainManageExcelType[]; - isLoadingRainManage : boolean; + RainManage: { + isInit: boolean; + upHeadListRainManage: TableUpperProps[]; + rainManageList: RainManageListProps[]; + excelList: RainManageExcelType[]; + isLoadingRainManage: boolean; }, - - DrainageEquipment : { - isInit : boolean; - upHeadListDrainageEquipment : TableUpperProps[]; - drainageEquipmentList : DrainageEquipmentListProps[]; - drainageEquipmentExcelList : DrainageEquipmentExcelType[]; + + DrainageEquipment: { + isInit: boolean; + upHeadListDrainageEquipment: TableUpperProps[]; + drainageEquipmentList: DrainageEquipmentListProps[]; + drainageEquipmentExcelList: DrainageEquipmentExcelType[]; } } export type DashBoardStore = DashBoardType & DashBoardActions; -export const dashBoardInitState:DashBoardType = { +export const dashBoardInitState: DashBoardType = { DashboardMain: { isInit: false, topLabelArray: DashBoardTopLabelArray, }, - - FcltyMain : { - isInit : false, - upHeadListFclty : upHeadListFclty, - fcltyList : fcltyList, + + FcltyMain: { + isInit: false, + upHeadListFclty: upHeadListFclty, + fcltyList: fcltyList, }, - PlanFclty : { - isInit : true, - planYearList : planYearList, - upHeadListPlanFclty : upHeadListPlanFclty, - planFcltyList : planFcltyList, - waterUsage1 : 0, - waterUsage2 : 0, - waterUsage3 : 0, - isLoadingPlanFclty : false, + PlanFclty: { + isInit: true, + planYearList: planYearList, + upHeadListPlanFclty: upHeadListPlanFclty, + planFcltyList: planFcltyList, + waterUsage1: 0, + waterUsage2: 0, + waterUsage3: 0, + isLoadingPlanFclty: false, }, - OperationStatus : { - isInit : false, - upHeadListOperationStatus : upHeadListOperationStatus, - operationalStatusList : operationalStatusListOrg, - isLoadingOperationStatus : false, + OperationStatus: { + isInit: false, + upHeadListOperationStatus: upHeadListOperationStatus, + operationalStatusList: operationalStatusListOrg, + isLoadingOperationStatus: false, }, - MainGraph : { - isInit : false, - chart_inflowRain : chart_inflowRain, - chart_bodRain : chart_bodRain, - chart_inflTp : chart_inflTp, - chart_chongInTp : chart_chongInTp, - chart_efflTp : chart_efflTp, - chart_inflTn : chart_inflTn, - chart_efflTn : chart_efflTn, - chart_inflBod : chart_inflBod, - chart_efflBod : chart_efflBod, - waterQltyStandartd : waterQltyStandartd, - isLoadingMainGraph : false, + MainGraph: { + isInit: false, + chart_inflowRain: chart_inflowRain, + chart_bodRain: chart_bodRain, + chart_inflTp: chart_inflTp, + chart_chongInTp: chart_chongInTp, + chart_efflTp: chart_efflTp, + chart_inflTn: chart_inflTn, + chart_efflTn: chart_efflTn, + chart_inflBod: chart_inflBod, + chart_efflBod: chart_efflBod, + waterQltyStandartd: waterQltyStandartd, + isLoadingMainGraph: false, }, - RainManage : { - isInit : false, - upHeadListRainManage : upHeadListRainManage, - rainManageList : rainManageList, - excelList : [], - isLoadingRainManage : false, + RainManage: { + isInit: false, + upHeadListRainManage: upHeadListRainManage, + rainManageList: rainManageList, + excelList: [], + isLoadingRainManage: false, }, - DrainageEquipment : { - isInit : false, - upHeadListDrainageEquipment : upHeadListDrainageEquipment, - drainageEquipmentList : drainageEquipmentList, - drainageEquipmentExcelList : [] + DrainageEquipment: { + isInit: false, + upHeadListDrainageEquipment: upHeadListDrainageEquipment, + drainageEquipmentList: drainageEquipmentList, + drainageEquipmentExcelList: [] } } /** * 데이터 폼 포맷설정 */ -export const dataFormSettingPlan=(item : planFcltyListProps, decmials : number) => { - DataForm({ type: 'float'+decmials, column: 'provisionalApproval', item: item as unknown as Record<string, unknown> }); - DataForm({ type: 'float'+decmials, column: 'now', item: item as unknown as Record<string, unknown>}); - DataForm({ type: 'float'+decmials, column: 'stepOne', item: item as unknown as Record<string, unknown>}); - DataForm({ type: 'float'+decmials, column: 'stepTwo', item: item as unknown as Record<string, unknown>}); - DataForm({ type: 'float'+decmials, column: 'stepThree', item: item as unknown as Record<string, unknown>}); - DataForm({ type: 'float'+decmials, column: 'stepFour', item: item as unknown as Record<string, unknown>}); +export const dataFormSettingPlan = (item: planFcltyListProps, decmials: number) => { + DataForm({ type: 'float' + decmials, column: 'provisionalApproval', item: item as unknown as Record<string, unknown> }); + DataForm({ type: 'float' + decmials, column: 'now', item: item as unknown as Record<string, unknown> }); + DataForm({ type: 'float' + decmials, column: 'stepOne', item: item as unknown as Record<string, unknown> }); + DataForm({ type: 'float' + decmials, column: 'stepTwo', item: item as unknown as Record<string, unknown> }); + DataForm({ type: 'float' + decmials, column: 'stepThree', item: item as unknown as Record<string, unknown> }); + DataForm({ type: 'float' + decmials, column: 'stepFour', item: item as unknown as Record<string, unknown> }); } -export const dataFormSetting=(item : OperationalStatusListProps)=> { +export const dataFormSetting = (item: OperationalStatusListProps) => { DataForm({ type: 'float0', column: 'yearAvg', item: item as unknown as Record<string, unknown> }); - DataForm({ type: 'float0', column: 'yearMax', item: item as unknown as Record<string, unknown>}); - DataForm({ type: 'float0', column: 'yearMin', item: item as unknown as Record<string, unknown>}); - DataForm({ type: 'float0', column: 'summerAll', item: item as unknown as Record<string, unknown>}); - DataForm({ type: 'float0', column: 'summerThree', item: item as unknown as Record<string, unknown>}); - DataForm({ type: 'float0', column: 'summerRain', item: item as unknown as Record<string, unknown>}); - DataForm({ type: 'float0', column: 'winterAll', item: item as unknown as Record<string, unknown>}); - DataForm({ type: 'float0', column: 'winterSunnyAvg', item: item as unknown as Record<string, unknown>}); - DataForm({ type: 'float0', column: 'winterSunnyMax', item: item as unknown as Record<string, unknown>}); - DataForm({ type: 'float0', column: 'winterSunnyMin', item: item as unknown as Record<string, unknown>}); - DataForm({ type: 'float0', column: 'groundWaterAvg', item: item as unknown as Record<string, unknown>}); - DataForm({ type: 'float0', column: 'groundWaterSummer', item: item as unknown as Record<string, unknown>}); - DataForm({ type: 'float0', column: 'groundWaterWinter', item: item as unknown as Record<string, unknown>}); - DataForm({ type: 'float0', column: 'rainRate', item: item as unknown as Record<string, unknown>}); - DataForm({ type: 'float0', column: 'rdi', item: item as unknown as Record<string, unknown>}); + DataForm({ type: 'float0', column: 'yearMax', item: item as unknown as Record<string, unknown> }); + DataForm({ type: 'float0', column: 'yearMin', item: item as unknown as Record<string, unknown> }); + DataForm({ type: 'float0', column: 'summerAll', item: item as unknown as Record<string, unknown> }); + DataForm({ type: 'float0', column: 'summerThree', item: item as unknown as Record<string, unknown> }); + DataForm({ type: 'float0', column: 'summerRain', item: item as unknown as Record<string, unknown> }); + DataForm({ type: 'float0', column: 'winterAll', item: item as unknown as Record<string, unknown> }); + DataForm({ type: 'float0', column: 'winterSunnyAvg', item: item as unknown as Record<string, unknown> }); + DataForm({ type: 'float0', column: 'winterSunnyMax', item: item as unknown as Record<string, unknown> }); + DataForm({ type: 'float0', column: 'winterSunnyMin', item: item as unknown as Record<string, unknown> }); + DataForm({ type: 'float0', column: 'groundWaterAvg', item: item as unknown as Record<string, unknown> }); + DataForm({ type: 'float0', column: 'groundWaterSummer', item: item as unknown as Record<string, unknown> }); + DataForm({ type: 'float0', column: 'groundWaterWinter', item: item as unknown as Record<string, unknown> }); + DataForm({ type: 'float0', column: 'rainRate', item: item as unknown as Record<string, unknown> }); + DataForm({ type: 'float0', column: 'rdi', item: item as unknown as Record<string, unknown> }); }; -export const dataFormSettingWqlty=(item : OperationalStatusListProps)=> { +export const dataFormSettingWqlty = (item: OperationalStatusListProps) => { DataForm({ type: 'float1', column: 'yearAvg', item: item as unknown as Record<string, unknown> }); - DataForm({ type: 'float1', column: 'yearMax', item: item as unknown as Record<string, unknown>}); - DataForm({ type: 'float1', column: 'yearMin', item: item as unknown as Record<string, unknown>}); - DataForm({ type: 'float1', column: 'summerAll', item: item as unknown as Record<string, unknown>}); - DataForm({ type: 'float1', column: 'summerThree', item: item as unknown as Record<string, unknown>}); - DataForm({ type: 'float1', column: 'summerRain', item: item as unknown as Record<string, unknown>}); - DataForm({ type: 'float1', column: 'winterAll', item: item as unknown as Record<string, unknown>}); - DataForm({ type: 'float1', column: 'winterSunnyAvg', item: item as unknown as Record<string, unknown>}); - DataForm({ type: 'float1', column: 'winterSunnyMax', item: item as unknown as Record<string, unknown>}); - DataForm({ type: 'float1', column: 'winterSunnyMin', item: item as unknown as Record<string, unknown>}); - DataForm({ type: 'float1', column: 'groundWaterAvg', item: item as unknown as Record<string, unknown>}); - DataForm({ type: 'float1', column: 'groundWaterSummer', item: item as unknown as Record<string, unknown>}); - DataForm({ type: 'float1', column: 'groundWaterWinter', item: item as unknown as Record<string, unknown>}); - DataForm({ type: 'float1', column: 'rainRate', item: item as unknown as Record<string, unknown>}); - DataForm({ type: 'float1', column: 'rdi', item: item as unknown as Record<string, unknown>}); + DataForm({ type: 'float1', column: 'yearMax', item: item as unknown as Record<string, unknown> }); + DataForm({ type: 'float1', column: 'yearMin', item: item as unknown as Record<string, unknown> }); + DataForm({ type: 'float1', column: 'summerAll', item: item as unknown as Record<string, unknown> }); + DataForm({ type: 'float1', column: 'summerThree', item: item as unknown as Record<string, unknown> }); + DataForm({ type: 'float1', column: 'summerRain', item: item as unknown as Record<string, unknown> }); + DataForm({ type: 'float1', column: 'winterAll', item: item as unknown as Record<string, unknown> }); + DataForm({ type: 'float1', column: 'winterSunnyAvg', item: item as unknown as Record<string, unknown> }); + DataForm({ type: 'float1', column: 'winterSunnyMax', item: item as unknown as Record<string, unknown> }); + DataForm({ type: 'float1', column: 'winterSunnyMin', item: item as unknown as Record<string, unknown> }); + DataForm({ type: 'float1', column: 'groundWaterAvg', item: item as unknown as Record<string, unknown> }); + DataForm({ type: 'float1', column: 'groundWaterSummer', item: item as unknown as Record<string, unknown> }); + DataForm({ type: 'float1', column: 'groundWaterWinter', item: item as unknown as Record<string, unknown> }); + DataForm({ type: 'float1', column: 'rainRate', item: item as unknown as Record<string, unknown> }); + DataForm({ type: 'float1', column: 'rdi', item: item as unknown as Record<string, unknown> }); }; -const changeValue=(operationalStatus, data, keyTxt = 'INFL_AMNT')=>{ - operationalStatus.yearAvg = data.yearData ? (keyTxt.includes('_TP') || keyTxt.includes("_TN"))? data.yearData?Number(Math.round(data.yearData['AVG_'+keyTxt] * 1000) / 1000).toFixed(3).toString():'': data.yearData['AVG_'+keyTxt] : ''; - operationalStatus.yearMax = data.yearData ? (keyTxt.includes('_TP') || keyTxt.includes("_TN"))? data.yearData?Number(Math.round(data.yearData['MAX_'+keyTxt] * 1000) / 1000).toFixed(3).toString():'': data.yearData['MAX_'+keyTxt] : ''; - operationalStatus.yearMin = data.yearData ? (keyTxt.includes('_TP') || keyTxt.includes("_TN"))? data.yearData?Number(Math.round(data.yearData['MIN_'+keyTxt] * 1000) / 1000).toFixed(3).toString():'': data.yearData['MIN_'+keyTxt] : ''; +const changeValue = (operationalStatus, data, keyTxt = 'INFL_AMNT') => { + operationalStatus.yearAvg = data.yearData ? (keyTxt.includes('_TP') || keyTxt.includes("_TN")) ? data.yearData ? Number(Math.round(data.yearData['AVG_' + keyTxt] * 1000) / 1000).toFixed(3).toString() : '' : data.yearData['AVG_' + keyTxt] : ''; + operationalStatus.yearMax = data.yearData ? (keyTxt.includes('_TP') || keyTxt.includes("_TN")) ? data.yearData ? Number(Math.round(data.yearData['MAX_' + keyTxt] * 1000) / 1000).toFixed(3).toString() : '' : data.yearData['MAX_' + keyTxt] : ''; + operationalStatus.yearMin = data.yearData ? (keyTxt.includes('_TP') || keyTxt.includes("_TN")) ? data.yearData ? Number(Math.round(data.yearData['MIN_' + keyTxt] * 1000) / 1000).toFixed(3).toString() : '' : data.yearData['MIN_' + keyTxt] : ''; // 여름 - operationalStatus.summerAll = data.summer ? (keyTxt.includes('_TP') || keyTxt.includes("_TN"))? data.summer?Number(Math.round(data.summer['AVG_'+keyTxt] * 1000) / 1000).toFixed(3).toString():'': data.summer['AVG_'+keyTxt] : ''; - operationalStatus.summerThree = data.summerRainy ? (keyTxt.includes('_TP') || keyTxt.includes("_TN"))? data.summerRainy?Number(Math.round(data.summerRainy["AVG_" + keyTxt] * 1000) / 1000).toFixed(3).toString():'': data.summerRainy["AVG_" + keyTxt] : ''; - operationalStatus.summerRain = data.summerSunny ? (keyTxt.includes('_TP') || keyTxt.includes("_TN"))? data.summerSunny?Number(Math.round(data.summerSunny["AVG_" + keyTxt] * 1000) / 1000).toFixed(3).toString():'': data.summerSunny["AVG_" + keyTxt] : ''; + operationalStatus.summerAll = data.summer ? (keyTxt.includes('_TP') || keyTxt.includes("_TN")) ? data.summer ? Number(Math.round(data.summer['AVG_' + keyTxt] * 1000) / 1000).toFixed(3).toString() : '' : data.summer['AVG_' + keyTxt] : ''; + operationalStatus.summerThree = data.summerRainy ? (keyTxt.includes('_TP') || keyTxt.includes("_TN")) ? data.summerRainy ? Number(Math.round(data.summerRainy["AVG_" + keyTxt] * 1000) / 1000).toFixed(3).toString() : '' : data.summerRainy["AVG_" + keyTxt] : ''; + operationalStatus.summerRain = data.summerSunny ? (keyTxt.includes('_TP') || keyTxt.includes("_TN")) ? data.summerSunny ? Number(Math.round(data.summerSunny["AVG_" + keyTxt] * 1000) / 1000).toFixed(3).toString() : '' : data.summerSunny["AVG_" + keyTxt] : ''; // 겨울 - operationalStatus.winterAll = data.winter ? (keyTxt.includes('_TP') || keyTxt.includes("_TN"))? data.winter?Number(Math.round(data.winter["AVG_" + keyTxt] * 1000) / 1000).toFixed(3).toString():'': data.winter["AVG_" + keyTxt] : ''; - operationalStatus.winterSunnyMin = data.winterSunny ? (keyTxt.includes('_TP') || keyTxt.includes("_TN"))? data.winterSunny?Number(Math.round(data.winterSunny["MIN_" + keyTxt] * 1000) / 1000).toFixed(3).toString():'': data.winterSunny["MIN_" + keyTxt] : ''; - operationalStatus.winterSunnyAvg = data.winterSunny ? (keyTxt.includes('_TP') || keyTxt.includes("_TN"))? data.winterSunny?Number(Math.round(data.winterSunny["AVG_" + keyTxt] * 1000) / 1000).toFixed(3).toString():'': data.winterSunny["AVG_" + keyTxt] : ''; - operationalStatus.winterSunnyMax = data.winterSunny ? (keyTxt.includes('_TP') || keyTxt.includes("_TN"))? data.winterSunny?Number(Math.round(data.winterSunny["MAX_" + keyTxt] * 1000) / 1000).toFixed(3).toString():'': data.winterSunny["MAX_" + keyTxt] : ''; + operationalStatus.winterAll = data.winter ? (keyTxt.includes('_TP') || keyTxt.includes("_TN")) ? data.winter ? Number(Math.round(data.winter["AVG_" + keyTxt] * 1000) / 1000).toFixed(3).toString() : '' : data.winter["AVG_" + keyTxt] : ''; + operationalStatus.winterSunnyMin = data.winterSunny ? (keyTxt.includes('_TP') || keyTxt.includes("_TN")) ? data.winterSunny ? Number(Math.round(data.winterSunny["MIN_" + keyTxt] * 1000) / 1000).toFixed(3).toString() : '' : data.winterSunny["MIN_" + keyTxt] : ''; + operationalStatus.winterSunnyAvg = data.winterSunny ? (keyTxt.includes('_TP') || keyTxt.includes("_TN")) ? data.winterSunny ? Number(Math.round(data.winterSunny["AVG_" + keyTxt] * 1000) / 1000).toFixed(3).toString() : '' : data.winterSunny["AVG_" + keyTxt] : ''; + operationalStatus.winterSunnyMax = data.winterSunny ? (keyTxt.includes('_TP') || keyTxt.includes("_TN")) ? data.winterSunny ? Number(Math.round(data.winterSunny["MAX_" + keyTxt] * 1000) / 1000).toFixed(3).toString() : '' : data.winterSunny["MAX_" + keyTxt] : ''; // 지하수 - + // 오염물질 // 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; @@ -1233,20 +1234,20 @@ const changeValue=(operationalStatus, data, keyTxt = 'INFL_AMNT')=>{ operationalStatus.rdiRain = summerLowRain; } -const calcValue = (operationalStatus, data, keyTxt='INFL_ASSCT_BFR_WQLT_TP') => { +const calcValue = (operationalStatus, data, keyTxt = 'INFL_ASSCT_BFR_WQLT_TP') => { // 연간 - operationalStatus.yearAvg = data.yearData && data.yearData['AVG_'+keyTxt] ? Number(Math.round(data.yearData['AVG_'+keyTxt] * 1000) / 1000).toFixed(3).toString() : ''; - operationalStatus.yearMax = data.yearData && data.yearData['MAX_'+keyTxt] ? Number(Math.round(data.yearData['MAX_'+keyTxt] * 1000) / 1000).toFixed(3).toString() : ''; - operationalStatus.yearMin = data.yearData && data.yearData['MIN_'+keyTxt] ? Number(Math.round(data.yearData['MIN_'+keyTxt] * 1000) / 1000).toFixed(3).toString() : ''; + operationalStatus.yearAvg = data.yearData && data.yearData['AVG_' + keyTxt] ? Number(Math.round(data.yearData['AVG_' + keyTxt] * 1000) / 1000).toFixed(3).toString() : ''; + operationalStatus.yearMax = data.yearData && data.yearData['MAX_' + keyTxt] ? Number(Math.round(data.yearData['MAX_' + keyTxt] * 1000) / 1000).toFixed(3).toString() : ''; + operationalStatus.yearMin = data.yearData && data.yearData['MIN_' + keyTxt] ? Number(Math.round(data.yearData['MIN_' + keyTxt] * 1000) / 1000).toFixed(3).toString() : ''; // 여름 - operationalStatus.summerAll = data.summer && data.summer['AVG_'+keyTxt] ? Number(Math.round(data.summer['AVG_'+keyTxt] * 0.8 * 1000) / 1000).toFixed(3).toString() : ''; - operationalStatus.summerThree = data.summerRainy && data.summerRainy['AVG_'+keyTxt] ? Number(Math.round(data.summerRainy['AVG_'+keyTxt] * 0.82 * 1000) / 1000).toFixed(3).toString() : ''; - operationalStatus.summerRain = data.summerSunny && data.summerSunny['AVG_'+keyTxt] ? Number(Math.round(data.summerSunny['AVG_'+keyTxt] * 0.74 * 1000) / 1000).toFixed(3).toString() : ''; + operationalStatus.summerAll = data.summer && data.summer['AVG_' + keyTxt] ? Number(Math.round(data.summer['AVG_' + keyTxt] * 0.8 * 1000) / 1000).toFixed(3).toString() : ''; + operationalStatus.summerThree = data.summerRainy && data.summerRainy['AVG_' + keyTxt] ? Number(Math.round(data.summerRainy['AVG_' + keyTxt] * 0.82 * 1000) / 1000).toFixed(3).toString() : ''; + operationalStatus.summerRain = data.summerSunny && data.summerSunny['AVG_' + keyTxt] ? Number(Math.round(data.summerSunny['AVG_' + keyTxt] * 0.74 * 1000) / 1000).toFixed(3).toString() : ''; // 겨울 - operationalStatus.winterAll = data.winter && data.winter['AVG_'+keyTxt] ? Number(Math.round(data.winter['AVG_'+keyTxt] * 1.16*1000) / 1000).toFixed(3).toString() : ''; - operationalStatus.winterSunnyMin = data.winterSunny && data.winterSunny['MIN_'+keyTxt] ? Number(Math.round(data.winterSunny['MIN_'+keyTxt] * 1.2 * 1000) / 1000).toFixed(3).toString() : ''; - operationalStatus.winterSunnyAvg = data.winterSunny && data.winterSunny['AVG_'+keyTxt] ? Number(Math.round(data.winterSunny['AVG_'+keyTxt] * 1.25 *1000) / 1000).toFixed(3).toString() : ''; - operationalStatus.winterSunnyMax = data.winterSunny && data.winterSunny['MAX_'+keyTxt] ? Number(Math.round(data.winterSunny['MAX_'+keyTxt] * 1.3 *1000) / 1000).toFixed(3).toString() : ''; + operationalStatus.winterAll = data.winter && data.winter['AVG_' + keyTxt] ? Number(Math.round(data.winter['AVG_' + keyTxt] * 1.16 * 1000) / 1000).toFixed(3).toString() : ''; + operationalStatus.winterSunnyMin = data.winterSunny && data.winterSunny['MIN_' + keyTxt] ? Number(Math.round(data.winterSunny['MIN_' + keyTxt] * 1.2 * 1000) / 1000).toFixed(3).toString() : ''; + operationalStatus.winterSunnyAvg = data.winterSunny && data.winterSunny['AVG_' + keyTxt] ? Number(Math.round(data.winterSunny['AVG_' + keyTxt] * 1.25 * 1000) / 1000).toFixed(3).toString() : ''; + operationalStatus.winterSunnyMax = data.winterSunny && data.winterSunny['MAX_' + keyTxt] ? Number(Math.round(data.winterSunny['MAX_' + keyTxt] * 1.3 * 1000) / 1000).toFixed(3).toString() : ''; } type RtnFlowType = { @@ -1263,32 +1264,32 @@ type RtnFlowResponse = { const searchWaterUsage = async (searchYear: string, fcltyCd: string) => { const waterUsage = [0, 0, 0]; - + for (let i = 0; i < 3; i++) { try { - const res = await getFetch('fo', '/fclt/flow/' + fcltyCd + '/' + (Number(searchYear)-i)) as RtnFlowResponse; + const res = await getFetch('fo', '/fclt/flow/' + fcltyCd + '/' + (Number(searchYear) - i)) as RtnFlowResponse; let totWaterUsage = 0; - + if (res && res.data && Array.isArray(res.data)) { res.data.forEach((item: RtnFlowType) => { totWaterUsage += Number(item.inflAmnt); }); - + if (res.count > 0) { const avg = totWaterUsage / res.count; waterUsage[i] = parseFloat((avg * 0.65).toFixed(2)); } } } catch (error) { - console.error(`Error fetching water usage for year ${Number(searchYear)-i}:`, error); + console.error(`Error fetching water usage for year ${Number(searchYear) - i}:`, error); waterUsage[i] = 0; } } - + return waterUsage; } -export const dashBoardReducer:(set:(fn: (state: DashBoardType) => DashBoardType) => void)=>DashBoardActions=(set: (fn: (state: DashBoardType) => DashBoardType) => void) => { +export const dashBoardReducer: (set: (fn: (state: DashBoardType) => DashBoardType) => void) => DashBoardActions = (set: (fn: (state: DashBoardType) => DashBoardType) => void) => { return { initializeDashBoardData: async () => { set((state: DashBoardType) => ({ @@ -1301,7 +1302,7 @@ export const dashBoardReducer:(set:(fn: (state: DashBoardType) => DashBoardType) }, /** 시설정보 및 운영현황 - 계획정보 */ - searchPlanInfo : async (targetYear: string, fcltyCd: string) => { + searchPlanInfo: async (targetYear: string, fcltyCd: string) => { set((state: DashBoardType) => ({ ...state, PlanFclty: { @@ -1311,70 +1312,70 @@ export const dashBoardReducer:(set:(fn: (state: DashBoardType) => DashBoardType) })); let waterUsage = [0, 0, 0]; waterUsage = await searchWaterUsage(targetYear, fcltyCd); - + set((state: DashBoardType) => ({ ...state, - PlanFclty : { + PlanFclty: { ...state.PlanFclty, - waterUsage1 : waterUsage[0] || 0, - waterUsage2 : waterUsage[1] || 0, - waterUsage3 : waterUsage[2] || 0, + waterUsage1: waterUsage[0] || 0, + waterUsage2: waterUsage[1] || 0, + waterUsage3: waterUsage[2] || 0, }, })); const res = await fetchFacilityPlan(targetYear, fcltyCd, set); - - let minDiff=9999999; + + let minDiff = 9999999; let minIndex; - res.forEach((el:any, idx) => { - if(minDiff>Math.abs(Number(targetYear) - Number(el.planYr))){ - minDiff=Math.abs(Number(targetYear) - Number(el.planYr)); - minIndex=idx; + res.forEach((el: any, idx) => { + if (minDiff > Math.abs(Number(targetYear) - Number(el.planYr))) { + minDiff = Math.abs(Number(targetYear) - Number(el.planYr)); + minIndex = idx; } }); const rtnPlanData = res[minIndex]; planFcltyList.map((el, index) => { - planYearList = []; - planYearList.push(rtnPlanData?rtnPlanData.planYrDt4.toString():""); - planYearList.push(rtnPlanData?rtnPlanData.planYr.toString():""); - planYearList.push(rtnPlanData?rtnPlanData.planYrDc1.toString():""); - planYearList.push(rtnPlanData?rtnPlanData.planYrDc2.toString():""); - planYearList.push(rtnPlanData?rtnPlanData.planYrDc3.toString():""); - planYearList.push(rtnPlanData?rtnPlanData.planYrDc4.toString():""); + planYearList = []; + planYearList.push(rtnPlanData ? rtnPlanData.planYrDt4.toString() : ""); + planYearList.push(rtnPlanData ? rtnPlanData.planYr.toString() : ""); + planYearList.push(rtnPlanData ? rtnPlanData.planYrDc1.toString() : ""); + planYearList.push(rtnPlanData ? rtnPlanData.planYrDc2.toString() : ""); + planYearList.push(rtnPlanData ? rtnPlanData.planYrDc3.toString() : ""); + planYearList.push(rtnPlanData ? rtnPlanData.planYrDc4.toString() : ""); - if(index === 0){ // 증설계획(㎥/일) - el.provisionalApproval = rtnPlanData?rtnPlanData.planSwageQntSumDt4:''; // 기승인4단계 - el.now = rtnPlanData?rtnPlanData.planSwageQntSum:''; // 현재 - el.stepOne = rtnPlanData?rtnPlanData.planSwageQntSumDc1:''; // 1단계 - el.stepTwo = rtnPlanData?rtnPlanData.planSwageQntSumDc2:''; // 2단계 - el.stepThree = rtnPlanData?rtnPlanData.planSwageQntSumDc3:''; // 3단계 - el.stepFour = rtnPlanData?rtnPlanData.planSwageQntSumDc4:''; // 4단계 + if (index === 0) { // 증설계획(㎥/일) + el.provisionalApproval = rtnPlanData ? rtnPlanData.planSwageQntSumDt4 : ''; // 기승인4단계 + el.now = rtnPlanData ? rtnPlanData.planSwageQntSum : ''; // 현재 + el.stepOne = rtnPlanData ? rtnPlanData.planSwageQntSumDc1 : ''; // 1단계 + el.stepTwo = rtnPlanData ? rtnPlanData.planSwageQntSumDc2 : ''; // 2단계 + el.stepThree = rtnPlanData ? rtnPlanData.planSwageQntSumDc3 : ''; // 3단계 + el.stepFour = rtnPlanData ? rtnPlanData.planSwageQntSumDc4 : ''; // 4단계 } - if(index === 1){ // 처리인구(인) - 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 === 1) { // 처리인구(인) + 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){ // 처리구역(km²) - 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 === 2) { // 처리구역(km²) + 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 = rtnPlanData?rtnPlanData.ugwtUseSum:''; + if (index === 4) { // 물사용량 + el.provisionalApproval = rtnPlanData ? rtnPlanData.ugwtUseSum : ''; } - - if(index === 2){ // 처리구역(km²) - dataFormSettingPlan(el, 1); - }else if(index == 4){ // 물사용량 - }else{ + + if (index === 2) { // 처리구역(km²) + dataFormSettingPlan(el, 1); + } else if (index == 4) { // 물사용량 + } else { dataFormSettingPlan(el, 0); } @@ -1412,7 +1413,7 @@ export const dashBoardReducer:(set:(fn: (state: DashBoardType) => DashBoardType) let winterSunnyMin = 1; // 동절기 청천 최소 let winterSunnyAvg = 1; // 동절기 청천 평균 let winterSunnyMax = 1; // 동절기 청천 최대 - + // 최대, 최소 총 유입량 (1년 하루 합계의 최대, 최소) // 하절기 청천시, 강우시 재계산 리턴값 @@ -1433,29 +1434,29 @@ export const dashBoardReducer:(set:(fn: (state: DashBoardType) => DashBoardType) let winterChungchunEfflAvg = 1; // 동절기 청천 방류량 평균 let winterChungchunEfflMax = 1; // 동절기 청천 방류량 최대 let winterChungchunEfflMin = 1; // 동절기 청천 방류량 최소 - + const clone = (arr: any[]) => arr?.map(v => ({ ...v })) ?? []; - let rdiPercent = 0; + let rdiPercent = 0; let operationalStatusList = clone(operationalStatusListOrg); - if(data && operationalStatusList){ + if (data && operationalStatusList) { // 유량 - 유입 if (operationalStatusList?.[0]) { // 연간 - const yearAvg = data.yearData===null ? '' : ( - (data.yearData.AVG_INFL_AMNT?data.yearData.AVG_INFL_AMNT:0) + // 실제유입량(반류수제거)(m³/일) 평균 - (data.yearData.AVG_SUM_FLOW?data.yearData.AVG_SUM_FLOW:0) + // api 주석처리되어 있음. - (data.yearData.AVG_RETURN_AMNT?data.yearData.AVG_RETURN_AMNT:0) // 반류수유량(m³/일) 평균 + const yearAvg = data.yearData === null ? '' : ( + (data.yearData.AVG_INFL_AMNT ? data.yearData.AVG_INFL_AMNT : 0) + // 실제유입량(반류수제거)(m³/일) 평균 + (data.yearData.AVG_SUM_FLOW ? data.yearData.AVG_SUM_FLOW : 0) + // api 주석처리되어 있음. + (data.yearData.AVG_RETURN_AMNT ? data.yearData.AVG_RETURN_AMNT : 0) // 반류수유량(m³/일) 평균 ); - const yearMax = data.yearData===null ? '' : ( - (data.yearData.MAX_INFL_AMNT?data.yearData.MAX_INFL_AMNT:0) + // 실제유입량(반류수제거)(m³/일) 최대 - (data.yearData.MAX_SUM_FLOW?data.yearData.MAX_SUM_FLOW:0) + // api 주석처리되어 있음. - (data.yearData.MAX_RETURN_AMNT?data.yearData.MAX_RETURN_AMNT:0) // 반류수유량(m³/일) 최대 + const yearMax = data.yearData === null ? '' : ( + (data.yearData.MAX_INFL_AMNT ? data.yearData.MAX_INFL_AMNT : 0) + // 실제유입량(반류수제거)(m³/일) 최대 + (data.yearData.MAX_SUM_FLOW ? data.yearData.MAX_SUM_FLOW : 0) + // api 주석처리되어 있음. + (data.yearData.MAX_RETURN_AMNT ? data.yearData.MAX_RETURN_AMNT : 0) // 반류수유량(m³/일) 최대 ); - const yearMin = data.yearData===null ? '' : ( - (data.yearData.MIN_INFL_AMNT?data.yearData.MIN_INFL_AMNT:0) + // 실제유입량(반류수제거)(m³/일) 최소 - (data.yearData.MIN_SUM_FLOW?data.yearData.MIN_SUM_FLOW:0) + // api 주석처리되어 있음. - (data.yearData.MIN_RETURN_AMNT?data.yearData.MIN_RETURN_AMNT:0) // 반류수유량(m³/일) 최소 + const yearMin = data.yearData === null ? '' : ( + (data.yearData.MIN_INFL_AMNT ? data.yearData.MIN_INFL_AMNT : 0) + // 실제유입량(반류수제거)(m³/일) 최소 + (data.yearData.MIN_SUM_FLOW ? data.yearData.MIN_SUM_FLOW : 0) + // api 주석처리되어 있음. + (data.yearData.MIN_RETURN_AMNT ? data.yearData.MIN_RETURN_AMNT : 0) // 반류수유량(m³/일) 최소 ); operationalStatusList[0].yearAvg = yearAvg; @@ -1468,7 +1469,7 @@ export const dashBoardReducer:(set:(fn: (state: DashBoardType) => DashBoardType) ); operationalStatusList[0].summerThree = data.summerRainy === null ? '' : ( // 하절기 강우시 (data.summerRainy.AVG_INFL_AMNT ? data.summerRainy.AVG_INFL_AMNT : 0) + - (data.summerRainy.AVG_SUM_FLOW ? data.summerRainy.AVG_SUM_FLOW : 0) + (data.summerRainy.AVG_SUM_FLOW ? data.summerRainy.AVG_SUM_FLOW : 0) ); operationalStatusList[0].summerRain = data.summerSunny === null ? '' : ( // 하절기 청천시 (data.summerSunny.AVG_INFL_AMNT ? data.summerSunny.AVG_INFL_AMNT : 0) + @@ -1476,23 +1477,23 @@ export const dashBoardReducer:(set:(fn: (state: DashBoardType) => DashBoardType) ); // 겨울 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_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_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_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_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) ); // 연계처리수 @@ -1515,39 +1516,39 @@ export const dashBoardReducer:(set:(fn: (state: DashBoardType) => DashBoardType) let summerRainDayFlow = 0; let summerRainDayReturnFlow = 0; let summerRainDayEfflFlow = 0; - + let winterSumFlow = 0; let winterChungchunSumFlow = 0; let minWinterChungchunSumFlow = 9999999; let maxWinterChungchunSumFlow = 0; - + // 연계처리수,지하수유입량 const bscFctCd = fcltyCd; const res2 = await fetchFlowRateModalList(bscFctCd, searchYear); // /fclt/flow/ - yearDay = res2.data?res2.data.length:1; + yearDay = res2.data ? res2.data.length : 1; res2.data.forEach((item: any) => { yearSumFlow += item.sumFlow && item.sumFlow !== 'x' ? Number(item.sumFlow.toString().trim()) : 0; - if(maxYearSumFlow < (item.sumFlow && item.sumFlow !== 'x' ? Number(item.sumFlow.toString().trim()) : 0)) { + if (maxYearSumFlow < (item.sumFlow && item.sumFlow !== 'x' ? Number(item.sumFlow.toString().trim()) : 0)) { maxYearSumFlow = item.sumFlow && item.sumFlow !== 'x' ? Number(item.sumFlow.toString().trim()) : 0; } - if(minYearSumFlow > (item.sumFlow && item.sumFlow !== 'x' ? Number(item.sumFlow.toString().trim()) : 0)) { + if (minYearSumFlow > (item.sumFlow && item.sumFlow !== 'x' ? Number(item.sumFlow.toString().trim()) : 0)) { minYearSumFlow = item.sumFlow && item.sumFlow !== 'x' ? Number(item.sumFlow.toString().trim()) : 0; } // 1년 최대 총 하수유입량 let totYearFlow = 0; totYearFlow = (item.inflAmnt && item.inflAmnt !== 'x' ? Number(item.inflAmnt.toString().trim()) : 0) + (item.sumFlow && item.sumFlow !== 'x' ? Number(item.sumFlow.toString().trim()) : 0) + (item.returnAmnt && item.returnAmnt !== 'x' ? Number(item.returnAmnt.toString().trim()) : 0); - if(totFlowMax < totYearFlow) { + if (totFlowMax < totYearFlow) { totFlowMax = totYearFlow; } - if(totFlowMin > totYearFlow || totFlowMin === 0) { + if (totFlowMin > totYearFlow || totFlowMin === 0) { totFlowMin = totYearFlow; } - if(item.msrDt.substring(4,6) === '06' || item.msrDt.substring(4,6) === '07' || item.msrDt.substring(4,6) === '08') { + if (item.msrDt.substring(4, 6) === '06' || item.msrDt.substring(4, 6) === '07' || item.msrDt.substring(4, 6) === '08') { summerDay += 1; summerSumFlow += item.sumFlow && item.sumFlow !== 'x' ? Number(item.sumFlow.toString().trim()) : 0; - } else if(item.msrDt.substring(4,6) === '01' || item.msrDt.substring(4,6) === '02') { + } else if (item.msrDt.substring(4, 6) === '01' || item.msrDt.substring(4, 6) === '02') { winterDay += 1; winterSumFlow += item.sumFlow && item.sumFlow !== 'x' ? Number(item.sumFlow.toString().trim()) : 0; } @@ -1555,44 +1556,44 @@ export const dashBoardReducer:(set:(fn: (state: DashBoardType) => DashBoardType) const calData = CalcRainEffect(clone(res2.data), 'SUNNY'); const calRainData = CalcRainEffect(clone(res2.data), 'RAIN'); - + // 지하수유입량 - 청천시 기준 let chungcunSumFlow = 0; let sumSummerChungcunFlow = 0; let sumWinterChungcunFlow = 0; - + // 하절기 청천시 총인설비 반류수 let summerChungchunDayReturnAmnt = 0; // 하절기 청천시 방류수 let summerChungchunDayEfflAmnt = 0; // 동절기 총 유입량 최대, 최소 - let winterChungchunTotalInflAmntMax = 0 ; - let winterChungchunTotalInflAmntMin = 9999999 ; + let winterChungchunTotalInflAmntMax = 0; + let winterChungchunTotalInflAmntMin = 9999999; // 동절기 청천시 하수유입량 최대, 최소 - let winterChungchunDayFlowMax = 0 ; - let winterChungchunDayFlowMin = 9999999 ; + let winterChungchunDayFlowMax = 0; + let winterChungchunDayFlowMin = 9999999; // 동절기 청천시 총인반류수 최대, 최소, 평균 - let winterChungchunDayReturnMax = 0 ; - let winterChungchunDayReturnMin = 9999999 ; - let winterChungchunDayReturnAvg = 0 ; + let winterChungchunDayReturnMax = 0; + let winterChungchunDayReturnMin = 9999999; + let winterChungchunDayReturnAvg = 0; // 동절기 청천시 방류량 최대, 최소, 평균 - let winterChungchunDayEfflMax = 0 ; - let winterChungchunDayEfflMin = 9999999 ; + let winterChungchunDayEfflMax = 0; + let winterChungchunDayEfflMin = 9999999; let winterChungchunDayEfflAvg = 0; // 하절기, 동절기 청천시 계산 calData.forEach((flowItem: any) => { chungcunSumFlow += flowItem.inflAmnt && flowItem.inflAmnt !== 'x' ? Number(flowItem.inflAmnt.toString().trim()) : 0; - if(flowItem.msrDt.substring(4,6) ==='06' || flowItem.msrDt.substring(4,6) ==='07' || flowItem.msrDt.substring(4,6) ==='08'){ + if (flowItem.msrDt.substring(4, 6) === '06' || flowItem.msrDt.substring(4, 6) === '07' || flowItem.msrDt.substring(4, 6) === '08') { summerChungchunDay += 1; summerChungchunSumFlow += flowItem.sumFlow && flowItem.sumFlow !== 'x' ? Number(flowItem.sumFlow.toString().trim()) : 0; sumSummerChungcunFlow += flowItem.inflAmnt && flowItem.inflAmnt !== 'x' ? Number(flowItem.inflAmnt.toString().trim()) : 0; summerChungchunDayReturnAmnt += flowItem.returnAmnt && flowItem.returnAmnt !== 'x' ? Number(flowItem.returnAmnt.toString().trim()) : 0; summerChungchunDayEfflAmnt += flowItem.efflAmnt && flowItem.efflAmnt !== 'x' ? Number(flowItem.efflAmnt.toString().trim()) : 0; - }else if(flowItem.msrDt.substring(4,6) ==='01' || flowItem.msrDt.substring(4,6) ==='02'){ + } else if (flowItem.msrDt.substring(4, 6) === '01' || flowItem.msrDt.substring(4, 6) === '02') { winterChungchuDay += 1; winterChungchunSumFlow += flowItem.sumFlow && flowItem.sumFlow !== 'x' ? Number(flowItem.sumFlow.toString().trim()) : 0; sumWinterChungcunFlow += flowItem.inflAmnt && flowItem.inflAmnt !== 'x' ? Number(flowItem.inflAmnt.toString().trim()) : 0; @@ -1601,38 +1602,38 @@ export const dashBoardReducer:(set:(fn: (state: DashBoardType) => DashBoardType) let totWinterTotalInflAmnt = 0; totWinterTotalInflAmnt = (flowItem.inflAmnt && flowItem.inflAmnt !== 'x' ? Number(flowItem.inflAmnt.toString().trim()) : 0) + (flowItem.sumFlow && flowItem.sumFlow !== 'x' ? Number(flowItem.sumFlow.toString().trim()) : 0) + (flowItem.returnAmnt && flowItem.returnAmnt !== 'x' ? Number(flowItem.returnAmnt.toString().trim()) : 0); - if(winterChungchunTotalInflAmntMax < totWinterTotalInflAmnt) { + if (winterChungchunTotalInflAmntMax < totWinterTotalInflAmnt) { winterChungchunTotalInflAmntMax = totWinterTotalInflAmnt; } - if(winterChungchunTotalInflAmntMin > totWinterTotalInflAmnt || winterChungchunTotalInflAmntMin === 0) { + if (winterChungchunTotalInflAmntMin > totWinterTotalInflAmnt || winterChungchunTotalInflAmntMin === 0) { winterChungchunTotalInflAmntMin = totWinterTotalInflAmnt; } - if(winterChungchunDayFlowMin > (flowItem.inflAmnt && flowItem.inflAmnt !== 'x' ? Number(flowItem.inflAmnt.toString().trim()) : 0)) { + if (winterChungchunDayFlowMin > (flowItem.inflAmnt && flowItem.inflAmnt !== 'x' ? Number(flowItem.inflAmnt.toString().trim()) : 0)) { winterChungchunDayFlowMin = flowItem.inflAmnt && flowItem.inflAmnt !== 'x' ? Number(flowItem.inflAmnt.toString().trim()) : 0; } - if(winterChungchunDayFlowMax < (flowItem.inflAmnt && flowItem.inflAmnt !== 'x' ? Number(flowItem.inflAmnt.toString().trim()) : 0)) { + if (winterChungchunDayFlowMax < (flowItem.inflAmnt && flowItem.inflAmnt !== 'x' ? Number(flowItem.inflAmnt.toString().trim()) : 0)) { winterChungchunDayFlowMax = flowItem.inflAmnt && flowItem.inflAmnt !== 'x' ? Number(flowItem.inflAmnt.toString().trim()) : 0; } - if(minWinterChungchunSumFlow > (flowItem.sumFlow && flowItem.sumFlow !== 'x' ? Number(flowItem.sumFlow.toString().trim()) : 0) ) { + if (minWinterChungchunSumFlow > (flowItem.sumFlow && flowItem.sumFlow !== 'x' ? Number(flowItem.sumFlow.toString().trim()) : 0)) { minWinterChungchunSumFlow = flowItem.sumFlow && flowItem.sumFlow !== 'x' ? Number(flowItem.sumFlow.toString().trim()) : 0; } - if(maxWinterChungchunSumFlow < (flowItem.sumFlow && flowItem.sumFlow !== 'x' ? Number(flowItem.sumFlow.toString().trim()) : 0)) { + if (maxWinterChungchunSumFlow < (flowItem.sumFlow && flowItem.sumFlow !== 'x' ? Number(flowItem.sumFlow.toString().trim()) : 0)) { maxWinterChungchunSumFlow = flowItem.sumFlow && flowItem.sumFlow !== 'x' ? Number(flowItem.sumFlow.toString().trim()) : 0; } - if(winterChungchunDayReturnMin > (flowItem.returnAmnt && flowItem.returnAmnt !== 'x' ? Number(flowItem.returnAmnt.toString().trim()) : 0)) { + if (winterChungchunDayReturnMin > (flowItem.returnAmnt && flowItem.returnAmnt !== 'x' ? Number(flowItem.returnAmnt.toString().trim()) : 0)) { winterChungchunDayReturnMin = flowItem.returnAmnt && flowItem.returnAmnt !== 'x' ? Number(flowItem.returnAmnt.toString().trim()) : 0; } - if(winterChungchunDayReturnMax < (flowItem.returnAmnt && flowItem.returnAmnt !== 'x' ? Number(flowItem.returnAmnt.toString().trim()) : 0)) { + if (winterChungchunDayReturnMax < (flowItem.returnAmnt && flowItem.returnAmnt !== 'x' ? Number(flowItem.returnAmnt.toString().trim()) : 0)) { winterChungchunDayReturnMax = flowItem.returnAmnt && flowItem.returnAmnt !== 'x' ? Number(flowItem.returnAmnt.toString().trim()) : 0; } - if(winterChungchunDayEfflMin > (flowItem.efflAmnt && flowItem.efflAmnt !== 'x' ? Number(flowItem.efflAmnt.toString().trim()) : 0)) { + if (winterChungchunDayEfflMin > (flowItem.efflAmnt && flowItem.efflAmnt !== 'x' ? Number(flowItem.efflAmnt.toString().trim()) : 0)) { winterChungchunDayEfflMin = flowItem.efflAmnt && flowItem.efflAmnt !== 'x' ? Number(flowItem.efflAmnt.toString().trim()) : 0; } - if(winterChungchunDayEfflMax < (flowItem.efflAmnt && flowItem.efflAmnt !== 'x' ? Number(flowItem.efflAmnt.toString().trim()) : 0)) { + if (winterChungchunDayEfflMax < (flowItem.efflAmnt && flowItem.efflAmnt !== 'x' ? Number(flowItem.efflAmnt.toString().trim()) : 0)) { winterChungchunDayEfflMax = flowItem.efflAmnt && flowItem.efflAmnt !== 'x' ? Number(flowItem.efflAmnt.toString().trim()) : 0; } } @@ -1640,7 +1641,7 @@ export const dashBoardReducer:(set:(fn: (state: DashBoardType) => DashBoardType) // 하절기 강우시 계산 calRainData.forEach((flowItem: any) => { - if(flowItem.msrDt.substring(4,6) === '06' || flowItem.msrDt.substring(4,6) === '07' || flowItem.msrDt.substring(4,6) === '08') { + if (flowItem.msrDt.substring(4, 6) === '06' || flowItem.msrDt.substring(4, 6) === '07' || flowItem.msrDt.substring(4, 6) === '08') { summerRainDay += 1; summerRainDaySumFlow += flowItem.sumFlow && flowItem.sumFlow !== 'x' ? Number(flowItem.sumFlow.toString().trim()) : 0; summerRainDayFlow += flowItem.inflAmnt && flowItem.inflAmnt !== 'x' ? Number(flowItem.inflAmnt.toString().trim()) : 0; @@ -1650,36 +1651,36 @@ export const dashBoardReducer:(set:(fn: (state: DashBoardType) => DashBoardType) }); // 연계처리수 - yearAvgSumFlow = Number((yearSumFlow&&Number(yearSumFlow)!=0)?(yearSumFlow / yearDay):''); + yearAvgSumFlow = Number((yearSumFlow && Number(yearSumFlow) != 0) ? (yearSumFlow / yearDay) : ''); yearMaxSumFlow = maxYearSumFlow; yearMinSumFlow = minYearSumFlow; - summerAll = summerSumFlow&&Number(summerSumFlow)!=0?Number(summerSumFlow / summerDay):0 - summerThree= summerRainDaySumFlow&&Number(summerRainDaySumFlow)!=0?Number(summerRainDaySumFlow / summerRainDay):0; - summerRain = summerChungchunSumFlow&&Number(summerChungchunSumFlow)!=0?Number(summerChungchunSumFlow / summerChungchunDay):0; - winterAll = winterSumFlow&&Number(winterSumFlow)!=0?Number(winterSumFlow / winterDay):0; + summerAll = summerSumFlow && Number(summerSumFlow) != 0 ? Number(summerSumFlow / summerDay) : 0 + summerThree = summerRainDaySumFlow && Number(summerRainDaySumFlow) != 0 ? Number(summerRainDaySumFlow / summerRainDay) : 0; + summerRain = summerChungchunSumFlow && Number(summerChungchunSumFlow) != 0 ? Number(summerChungchunSumFlow / summerChungchunDay) : 0; + winterAll = winterSumFlow && Number(winterSumFlow) != 0 ? Number(winterSumFlow / winterDay) : 0; winterSunnyMin = minWinterChungchunSumFlow; - winterSunnyAvg = winterChungchunSumFlow&&Number(winterChungchunSumFlow)!=0?(winterChungchunSumFlow / winterChungchuDay):0; + winterSunnyAvg = winterChungchunSumFlow && Number(winterChungchunSumFlow) != 0 ? (winterChungchunSumFlow / winterChungchuDay) : 0; winterSunnyMax = maxWinterChungchunSumFlow; // 하절기 강우시 계산 // 하수유입량 (강우시) - summerRainInflAmnt = summerRainDayFlow&&Number(summerRainDayFlow)!=0?Number(summerRainDayFlow / summerRainDay):0; + summerRainInflAmnt = summerRainDayFlow && Number(summerRainDayFlow) != 0 ? Number(summerRainDayFlow / summerRainDay) : 0; // 총인설비방류수 (강우시) - summerRainReturnAmnt = summerRainDayReturnFlow&&Number(summerRainDayReturnFlow)!=0?Number(summerRainDayReturnFlow / summerRainDay):0; + summerRainReturnAmnt = summerRainDayReturnFlow && Number(summerRainDayReturnFlow) != 0 ? Number(summerRainDayReturnFlow / summerRainDay) : 0; // 방루량 (강우시) - summerRainEfflAmnt = summerRainDayEfflFlow&&summerRainDayEfflFlow!=0?summerRainDayEfflFlow / summerRainDay:0; + summerRainEfflAmnt = summerRainDayEfflFlow && summerRainDayEfflFlow != 0 ? summerRainDayEfflFlow / summerRainDay : 0; // 동절기 청천시 계산 // 하수유입량 (청천시) 평균 - winterChungchunFlowAvg = sumWinterChungcunFlow&&Number(sumWinterChungcunFlow)!=0?(sumWinterChungcunFlow / winterChungchuDay):0; + winterChungchunFlowAvg = sumWinterChungcunFlow && Number(sumWinterChungcunFlow) != 0 ? (sumWinterChungcunFlow / winterChungchuDay) : 0; // 총인반류수 (청천시) 평균 - winterChungchunReturnAvg = winterChungchunDayReturnAvg&&Number(winterChungchunDayReturnAvg)!=0?(winterChungchunDayReturnAvg / winterChungchuDay):0; + winterChungchunReturnAvg = winterChungchunDayReturnAvg && Number(winterChungchunDayReturnAvg) != 0 ? (winterChungchunDayReturnAvg / winterChungchuDay) : 0; // 방류량 (청천시) 평균 - winterChungchunEfflAvg = winterChungchunDayEfflAvg&&Number(winterChungchunDayEfflAvg)!=0?(winterChungchunDayEfflAvg / winterChungchuDay):0; + winterChungchunEfflAvg = winterChungchunDayEfflAvg && Number(winterChungchunDayEfflAvg) != 0 ? (winterChungchunDayEfflAvg / winterChungchuDay) : 0; // 하수유입량 (청천시) 최대 winterChungchunFlowMax = winterChungchunDayFlowMax; // 총인반류수 (청천시) 최대 - winterChungchunReturnMax = winterChungchunDayReturnMax; + winterChungchunReturnMax = winterChungchunDayReturnMax; // 방류량 (청천시) 최대 winterChungchunEfflMax = winterChungchunDayEfflMax; // 하수유입량 (청천시) 최소 @@ -1704,15 +1705,15 @@ export const dashBoardReducer:(set:(fn: (state: DashBoardType) => DashBoardType) const usage = chungcunSumFlow / calData.length; const summerUsage = sumSummerChungcunFlow / summerChungchunDay; const winterUsage = sumWinterChungcunFlow / winterChungchuDay; - + // 임시 계산변수값들 메인에 대입 summerChungchunFlow = summerUsage; summerChungchunReturnAmnt = summerChungchunDayReturnAmnt / summerChungchunDay; summerChungchunEfflAmnt = summerChungchunDayEfflAmnt / summerChungchunDay; - operationalStatusList[0].groundWaterAvg = Math.round((usage-(usage*0.65*OSU_PERCENT)) * 100) / 100; - operationalStatusList[0].groundWaterSummer = Math.round((summerUsage-(summerUsage*0.65*OSU_PERCENT)) * 100) / 100; - operationalStatusList[0].groundWaterWinter = Math.round((winterUsage-(winterUsage*0.65*OSU_PERCENT)) * 100) / 100; + operationalStatusList[0].groundWaterAvg = Math.round((usage - (usage * 0.65 * OSU_PERCENT)) * 100) / 100; + operationalStatusList[0].groundWaterSummer = Math.round((summerUsage - (summerUsage * 0.65 * OSU_PERCENT)) * 100) / 100; + operationalStatusList[0].groundWaterWinter = Math.round((winterUsage - (winterUsage * 0.65 * OSU_PERCENT)) * 100) / 100; //operationalStatusList[0].groundWaterAvg = calData.length === 0 ? '' : Number(calData[0].inflAmnt) - (Number(calData[0].inflAmnt)*0.65*0.8); //operationalStatusList[0].groundWaterSummer = calData.length === 0 ? '' : Number(calData[0].inflAmnt) - (Number(calData[0].inflAmnt)*0.65*0.8); @@ -1734,12 +1735,12 @@ export const dashBoardReducer:(set:(fn: (state: DashBoardType) => DashBoardType) const summerMonth = ['06', '07', '08']; const winterMonth = ['01', '02']; - wqltDataTot.filter(item=>summerMonth.includes(item.msrDt.toString().replaceAll('-','').substring(4,6))).forEach(item2 => { - if(Number(item2.infoRnDay)>=3){ + wqltDataTot.filter(item => summerMonth.includes(item.msrDt.toString().replaceAll('-', '').substring(4, 6))).forEach(item2 => { + if (Number(item2.infoRnDay) >= 3) { const inflBod = Number(item2.inflAssctBfrWqltBod); const infl = Number(item2.inflAmnt); const rain = Number(item2.infoRnDay); - if(inflBod < minSummerBod){ + if (inflBod < minSummerBod) { minSummerBodInfl = infl; minSummerBod = inflBod; rdiRain = rain; @@ -1747,24 +1748,24 @@ export const dashBoardReducer:(set:(fn: (state: DashBoardType) => DashBoardType) } }); - wqltDataSunny.filter(item=>winterMonth.includes(item.msrDt.toString().replaceAll('-','').substring(4,6))).forEach(item2 => { + wqltDataSunny.filter(item => winterMonth.includes(item.msrDt.toString().replaceAll('-', '').substring(4, 6))).forEach(item2 => { winterBodSunny += Number(item2.inflAssctBfrWqltBod); winterCnt += 1; }); - const roundMinSummerBodInfl = Number(roundNumber(minSummerBodInfl, 0).toString().replaceAll(',','')); - const roundMinSummerBod = Number(roundNumber(minSummerBod, 1).toString().replaceAll(',','')); - const roundWinterBodSunny = Number(roundNumber(winterBodSunny, 1).toString().replaceAll(',','')); + const roundMinSummerBodInfl = Number(roundNumber(minSummerBodInfl, 0).toString().replaceAll(',', '')); + const roundMinSummerBod = Number(roundNumber(minSummerBod, 1).toString().replaceAll(',', '')); + const roundWinterBodSunny = Number(roundNumber(winterBodSunny, 1).toString().replaceAll(',', '')); - const winterBodAvg = Number(roundNumber((roundWinterBodSunny / winterCnt), 1).toString().replaceAll(',','')); + const winterBodAvg = Number(roundNumber((roundWinterBodSunny / winterCnt), 1).toString().replaceAll(',', '')); // 하절기(6~8월) 중 최저 유입 BOD일때 유입유량 x ((동절기 청천시 유입BOD - 하절기(6~8월) 중 최저 유입BOD) / (동절기 청천시 유입BOD)) const winMinusSum = winterBodAvg - roundMinSummerBod; - const rdiValue = winMinusSum===0 ? 0 : roundMinSummerBodInfl * (winMinusSum / winterBodAvg ); - + const rdiValue = winMinusSum === 0 ? 0 : roundMinSummerBodInfl * (winMinusSum / winterBodAvg); + rdiPercent = (rdiValue / minSummerBodInfl) * 100; - operationalStatusList[0].rdi = rdiValue; + operationalStatusList[0].rdi = rdiValue; operationalStatusList[0].rdiRain = rdiRain; /* const summerLowFlow = data.summerBod&&data.summerBod.INFL_AMNT&&data.summerBod.INFL_AMNT!='null'?Number(data.summerBod.INFL_AMNT):0; const winterAvgBod = data.winterSunny&&data.winterSunny.AVG_INFL_ASSCT_BFR_WQLT_BOD&&data.winterSunny.AVG_INFL_ASSCT_BFR_WQLT_BOD!='null'?Number(data.winterSunny.AVG_INFL_ASSCT_BFR_WQLT_BOD):0; @@ -1774,35 +1775,35 @@ export const dashBoardReducer:(set:(fn: (state: DashBoardType) => DashBoardType) operationalStatusList[0].rdiRain = summerLowRain; */ } - if(operationalStatusList[0] && operationalStatusList[7]){ - operationalStatusList[7].groundWaterAvg = operationalStatusList[0].groundWaterAvg === null ? '' : data.yearData && data.yearData.AVG_INFL_AMNT === 0 ? '' : Math.round((Number(operationalStatusList[0].groundWaterAvg.toString().replaceAll(',', '')) / (data.yearData && data.yearData.AVG_INFL_AMNT ? Number(data.yearData.AVG_INFL_AMNT.toString().replaceAll(',','')) : 0) * 100) * 10) / 10+'%'; - operationalStatusList[7].groundWaterSummer = operationalStatusList[0].groundWaterSummer === null ? '' : data.summer && data.summer.AVG_INFL_AMNT === 0 ? '' : Math.round((Number(operationalStatusList[0].groundWaterSummer.toString().replaceAll(',','')) / (data.summer && data.summer.AVG_INFL_AMNT ? Number(data.summer.AVG_INFL_AMNT.toString().replaceAll(',','')) : 0) * 100) * 10) / 10+'%'; - operationalStatusList[7].groundWaterWinter = operationalStatusList[0].groundWaterWinter === null ? '' : data.winter && data.winter.AVG_INFL_AMNT === 0 ? '' : Math.round((Number(operationalStatusList[0].groundWaterWinter.toString().replaceAll(',','')) / (data.winter && data.winter.AVG_INFL_AMNT ? Number(data.winter.AVG_INFL_AMNT.toString().replaceAll(',','')) : 0) * 100) * 10) / 10+'%'; - operationalStatusList[7].rdi = roundNumber(rdiPercent, 1)+'%'; + if (operationalStatusList[0] && operationalStatusList[7]) { + operationalStatusList[7].groundWaterAvg = operationalStatusList[0].groundWaterAvg === null ? '' : data.yearData && data.yearData.AVG_INFL_AMNT === 0 ? '' : Math.round((Number(operationalStatusList[0].groundWaterAvg.toString().replaceAll(',', '')) / (data.yearData && data.yearData.AVG_INFL_AMNT ? Number(data.yearData.AVG_INFL_AMNT.toString().replaceAll(',', '')) : 0) * 100) * 10) / 10 + '%'; + operationalStatusList[7].groundWaterSummer = operationalStatusList[0].groundWaterSummer === null ? '' : data.summer && data.summer.AVG_INFL_AMNT === 0 ? '' : Math.round((Number(operationalStatusList[0].groundWaterSummer.toString().replaceAll(',', '')) / (data.summer && data.summer.AVG_INFL_AMNT ? Number(data.summer.AVG_INFL_AMNT.toString().replaceAll(',', '')) : 0) * 100) * 10) / 10 + '%'; + operationalStatusList[7].groundWaterWinter = operationalStatusList[0].groundWaterWinter === null ? '' : data.winter && data.winter.AVG_INFL_AMNT === 0 ? '' : Math.round((Number(operationalStatusList[0].groundWaterWinter.toString().replaceAll(',', '')) / (data.winter && data.winter.AVG_INFL_AMNT ? Number(data.winter.AVG_INFL_AMNT.toString().replaceAll(',', '')) : 0) * 100) * 10) / 10 + '%'; + operationalStatusList[7].rdi = roundNumber(rdiPercent, 1) + '%'; /* 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;*/ } - for(let i=1; i<operationalStatusList.length; i++){ + for (let i = 1; i < operationalStatusList.length; i++) { const txtArray = ['1', 'INFL_AMNT', 'SUM_FLOW', 'RETURN_AMNT', 'EFFL_AMNT', 'INFL_ASSCT_BFR_WQLT_BOD', 'EFFL_WQLT_BOD', 'INFL_ASSCT_BFR_WQLT_TN', 'EFFL_WQLT_TN', 'INFL_ASSCT_BFR_WQLT_TP', 'EFFL_WQLT_TP', 'TP_INFL_WQLT_TP', 'EFFL_WQLT_TP']; - if(operationalStatusList[i]){ - if(i < 7){ + if (operationalStatusList[i]) { + if (i < 7) { changeValue(operationalStatusList[i], data, txtArray[i]); - if(i < 5){ + if (i < 5) { dataFormSetting(operationalStatusList[i]!); - }else{ + } else { dataFormSettingWqlty(operationalStatusList[i]!); } - }else{ + } else { calcValue(operationalStatusList[i], data, txtArray[i]); } } } // 순수하수량 - if(operationalStatusList[1]){ + if (operationalStatusList[1]) { operationalStatusList[1].summerThree = summerRainInflAmnt; operationalStatusList[1].summerRain = summerChungchunFlow; operationalStatusList[1].winterSunnyAvg = winterChungchunFlowAvg; @@ -1812,7 +1813,7 @@ export const dashBoardReducer:(set:(fn: (state: DashBoardType) => DashBoardType) } // 연계처리수 - if(operationalStatusList[2]){ + if (operationalStatusList[2]) { operationalStatusList[2].yearAvg = yearAvgSumFlow; operationalStatusList[2].yearMax = yearMaxSumFlow; operationalStatusList[2].yearMin = yearMinSumFlow; @@ -1827,7 +1828,7 @@ export const dashBoardReducer:(set:(fn: (state: DashBoardType) => DashBoardType) } // 총인설비방류수 - if(operationalStatusList[3]){ + if (operationalStatusList[3]) { operationalStatusList[3].summerThree = summerRainReturnAmnt; operationalStatusList[3].summerRain = summerChungchunReturnAmnt; operationalStatusList[3].winterSunnyAvg = winterChungchunReturnAvg; @@ -1837,7 +1838,7 @@ export const dashBoardReducer:(set:(fn: (state: DashBoardType) => DashBoardType) } // 방류수 - if(operationalStatusList[4]){ + if (operationalStatusList[4]) { operationalStatusList[4].summerThree = summerRainEfflAmnt; operationalStatusList[4].summerRain = summerChungchunEfflAmnt; operationalStatusList[4].winterSunnyAvg = winterChungchunEfflAvg; @@ -1882,15 +1883,15 @@ export const dashBoardReducer:(set:(fn: (state: DashBoardType) => DashBoardType) } } - const rtnData = await calcWaterQltyData(operationalStatusList, searchYear, fcltyCd); + const rtnData = await calcWaterQltyData(operationalStatusList, searchYear, fcltyCd); // 수질 데이터 청천시, 강우시 재계산 // 총인설비가 없을 경우 제외 - console.log('총인시설 여부 : ', data.yearData?.TP_FCT_YN); + console.log('총인시설 여부 : ', data.yearData?.TP_FCT_YN); console.log('rtnData : ', rtnData); - if(data.yearData?.TP_FCT_YN !== 'Y') { + if (data.yearData?.TP_FCT_YN !== 'Y') { operationalStatusList = rtnData.slice(0, 11); - }else{ + } else { operationalStatusList = rtnData; } set((state: DashBoardType) => ({ @@ -1899,11 +1900,11 @@ export const dashBoardReducer:(set:(fn: (state: DashBoardType) => DashBoardType) ...state.OperationStatus, operationalStatusList: operationalStatusList, operationalStatusCount: res.count, - isLoadingOperationStatus : false, + isLoadingOperationStatus: false, }, })) }, - + searchMainGraph: async (searchYear: string, fcltyCd: string) => { set((state: DashBoardType) => ({ ...state, @@ -1920,14 +1921,14 @@ export const dashBoardReducer:(set:(fn: (state: DashBoardType) => DashBoardType) calData.forEach((flowItem: any) => { chungcunSumFlow += flowItem.inflAmnt && flowItem.inflAmnt !== 'x' ? Number(flowItem.inflAmnt.toString().trim()) : 0; }); - const usage = chungcunSumFlow&&chungcunSumFlow>0?chungcunSumFlow / calData.length:0; - + const usage = chungcunSumFlow && chungcunSumFlow > 0 ? chungcunSumFlow / calData.length : 0; + //bscFctCd === '11200PB001R') 중랑 - 테스트할 때 코드넣고 해야 보기편해요~ /* if(bscFctCd === '11200PB001R') { console.log('calData.length : ', calData.length); console.log('usage : ', usage, 'summerUsage : ', summerUsage, 'winterUsage : ', winterUsage); } */ - const underWaterInputYear = Math.round((usage-(usage*0.65*OSU_PERCENT)) * 1) / 1; + const underWaterInputYear = Math.round((usage - (usage * 0.65 * OSU_PERCENT)) * 1) / 1; // 법적방류수질 데이터 const sortedWaterQltyInfo = [...res2].sort((a, b) => { @@ -1935,17 +1936,17 @@ export const dashBoardReducer:(set:(fn: (state: DashBoardType) => DashBoardType) const numA = Number(a.extnsSeqno); const numB = Number(b.extnsSeqno); if (!isNaN(numA) && !isNaN(numB)) { - return numA - numB; + return numA - numB; } // 숫자 변환이 실패하면 문자열로 비교 return String(a.extnsSeqno).localeCompare(String(b.extnsSeqno)); }); - const waterQltyStandartd : any = sortedWaterQltyInfo && sortedWaterQltyInfo.length > 0 + const waterQltyStandartd: any = sortedWaterQltyInfo && sortedWaterQltyInfo.length > 0 ? sortedWaterQltyInfo[sortedWaterQltyInfo.length - 1] : []; - if(res == null || res.data == null || res.data.length === 0) { + if (res == null || res.data == null || res.data.length === 0) { set((state: DashBoardType) => ({ ...state, MainGraph: { @@ -1959,61 +1960,61 @@ export const dashBoardReducer:(set:(fn: (state: DashBoardType) => DashBoardType) chart_efflTn: [], chart_inflBod: [], chart_efflBod: [], - waterQltyStandartd : [], - isLoadingMainGraph : false, + waterQltyStandartd: [], + isLoadingMainGraph: false, } })); return; } - + const chart_inflowRain = res.data.wqltObjs.map((item: FacilityWaterQltyProps) => ({ - label: item.msrDt.substring(0, 4)+"-"+item.msrDt.substring(4, 6)+"-"+item.msrDt.substring(6, 8), + label: item.msrDt.substring(0, 4) + "-" + item.msrDt.substring(4, 6) + "-" + item.msrDt.substring(6, 8), barVal0: item.infoRnDay ?? 0, lineVal0: underWaterInputYear, lineVal1: item.inflAmnt ?? 0, })); - + const chart_bodRain = res.data.wqltObjs.map((item: FacilityWaterQltyProps) => ({ - label: item.msrDt.substring(0, 4)+"-"+item.msrDt.substring(4, 6)+"-"+item.msrDt.substring(6, 8), + label: item.msrDt.substring(0, 4) + "-" + item.msrDt.substring(4, 6) + "-" + item.msrDt.substring(6, 8), barVal0: item.infoRnDay ?? 0, lineVal0: item.inflAssctBfrWqltBod ?? 0, })); const chart_inflTp = res.data.wqltObjs.map((item: FacilityWaterQltyProps) => ({ - label: item.msrDt.substring(0, 4)+"-"+item.msrDt.substring(4, 6)+"-"+item.msrDt.substring(6, 8), - val : item.inflAssctBfrWqltTp ?? 0 + label: item.msrDt.substring(0, 4) + "-" + item.msrDt.substring(4, 6) + "-" + item.msrDt.substring(6, 8), + val: item.inflAssctBfrWqltTp ?? 0 })); - + const chart_chongInTp = res.data.wqltObjs.map((item: FacilityWaterQltyProps) => ({ - label: item.msrDt.substring(0, 4)+"-"+item.msrDt.substring(4, 6)+"-"+item.msrDt.substring(6, 8), - val : Number(item.tpInflWqltTp) == 0 ? null : item.tpInflWqltTp + label: item.msrDt.substring(0, 4) + "-" + item.msrDt.substring(4, 6) + "-" + item.msrDt.substring(6, 8), + val: Number(item.tpInflWqltTp) == 0 ? null : item.tpInflWqltTp })); - + const chart_efflTp = res.data.wqltObjs.map((item: FacilityWaterQltyProps) => ({ - label: item.msrDt.substring(0, 4)+"-"+item.msrDt.substring(4, 6)+"-"+item.msrDt.substring(6, 8), - val : item.efflWqltTp ?? 0 + label: item.msrDt.substring(0, 4) + "-" + item.msrDt.substring(4, 6) + "-" + item.msrDt.substring(6, 8), + val: item.efflWqltTp ?? 0 })); const chart_inflTn = res.data.wqltObjs.map((item: FacilityWaterQltyProps) => ({ - label: item.msrDt.substring(0, 4)+"-"+item.msrDt.substring(4, 6)+"-"+item.msrDt.substring(6, 8), - val : item.inflAssctBfrWqltTn ?? 0 + label: item.msrDt.substring(0, 4) + "-" + item.msrDt.substring(4, 6) + "-" + item.msrDt.substring(6, 8), + val: item.inflAssctBfrWqltTn ?? 0 })); const chart_efflTn = res.data.wqltObjs.map((item: FacilityWaterQltyProps) => ({ - label: item.msrDt.substring(0, 4)+"-"+item.msrDt.substring(4, 6)+"-"+item.msrDt.substring(6, 8), - val : item.efflWqltTn ?? 0 + label: item.msrDt.substring(0, 4) + "-" + item.msrDt.substring(4, 6) + "-" + item.msrDt.substring(6, 8), + val: item.efflWqltTn ?? 0 })); const chart_inflBod = res.data.wqltObjs.map((item: FacilityWaterQltyProps) => ({ - label: item.msrDt.substring(0, 4)+"-"+item.msrDt.substring(4, 6)+"-"+item.msrDt.substring(6, 8), - val : item.inflAssctBfrWqltBod ?? 0 + label: item.msrDt.substring(0, 4) + "-" + item.msrDt.substring(4, 6) + "-" + item.msrDt.substring(6, 8), + val: item.inflAssctBfrWqltBod ?? 0 })); - + const chart_efflBod = res.data.wqltObjs.map((item: FacilityWaterQltyProps) => ({ - label: item.msrDt.substring(0, 4)+"-"+item.msrDt.substring(4, 6)+"-"+item.msrDt.substring(6, 8), - val : item.efflWqltBod ?? 0 + label: item.msrDt.substring(0, 4) + "-" + item.msrDt.substring(4, 6) + "-" + item.msrDt.substring(6, 8), + val: item.efflWqltBod ?? 0 })); - + set((state: DashBoardType) => ({ ...state, MainGraph: { @@ -2021,19 +2022,19 @@ export const dashBoardReducer:(set:(fn: (state: DashBoardType) => DashBoardType) chart_inflowRain: chart_inflowRain, chart_bodRain: chart_bodRain, chart_inflTp: chart_inflTp, - chart_chongInTp : chart_chongInTp, + chart_chongInTp: chart_chongInTp, chart_efflTp: chart_efflTp, chart_inflTn: chart_inflTn, chart_efflTn: chart_efflTn, chart_inflBod: chart_inflBod, chart_efflBod: chart_efflBod, - waterQltyStandartd : waterQltyStandartd, - isLoadingMainGraph : false, + waterQltyStandartd: waterQltyStandartd, + isLoadingMainGraph: false, }, })) }, - searchRainManage: async (searchYear: string, fcltyCd: string, isExcel : boolean) => { + searchRainManage: async (searchYear: string, fcltyCd: string, isExcel: boolean) => { set((state: DashBoardType) => ({ ...state, RainManage: { @@ -2042,13 +2043,13 @@ export const dashBoardReducer:(set:(fn: (state: DashBoardType) => DashBoardType) }, })); const res = await fetchMainGraph(searchYear, fcltyCd); - if(res == null || res.data.wqltObjs == null || res.data.wqltObjs.length === 0) { + if (res == null || res.data.wqltObjs == null || res.data.wqltObjs.length === 0) { set((state: DashBoardType) => ({ ...state, RainManage: { ...state.RainManage, rainManageList: [], - isLoadingRainManage : false, + isLoadingRainManage: false, } })); return; @@ -2092,7 +2093,7 @@ export const dashBoardReducer:(set:(fn: (state: DashBoardType) => DashBoardType) const rainEffectList = CalcRainEffect(res.data.wqltObjs, 'RAIN_DAY'); // Process the data and create rain management list - const totItemCnt = rainEffectList?rainEffectList.length : 1; + const totItemCnt = rainEffectList ? rainEffectList.length : 1; let totInflAssctBfrWqltBod = 0; let totInflAssctBfrWqltToc = 0; let totInflAssctBfrWqltSs = 0; @@ -2116,9 +2117,9 @@ export const dashBoardReducer:(set:(fn: (state: DashBoardType) => DashBoardType) totEfflWqltTn += item.efflWqltTn ? Number(item.efflWqltTn.toString().trim()) : 0; totEfflWqltTp += item.efflWqltTp ? Number(item.efflWqltTp.toString().trim()) : 0; - const toBeRain = item.toBeInfoRnDay ? Number(item.toBeInfoRnDay) : 0; + const toBeRain = item.toBeInfoRnDay ? Number(item.toBeInfoRnDay) : 0; - if(toBeRain >= 3 && toBeRain < 10){ + if (toBeRain >= 3 && toBeRain < 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); @@ -2134,7 +2135,7 @@ export const dashBoardReducer:(set:(fn: (state: DashBoardType) => DashBoardType) inflAssctBfrWqltTpCnt[1] = Number(inflAssctBfrWqltTpCnt[1] || 0) + 1; inflAssctBfrWqltTp[1] = Number(inflAssctBfrWqltTp[1] || 0) + Number(item.inflAssctBfrWqltTp || 0); efflWqltBodCnt[1] = Number(efflWqltBodCnt[1] || 0) + 1; - efflWqltBod[1] = Number(efflWqltBod[1] || 0) + Number(item.efflWqltBod || 0); + efflWqltBod[1] = Number(efflWqltBod[1] || 0) + Number(item.efflWqltBod || 0); efflWqltTocCnt[1] = Number(efflWqltTocCnt[1] || 0) + 1; efflWqltToc[1] = Number(efflWqltToc[1] || 0) + Number(item.efflWqltToc || 0); efflWqltSsCnt[1] = Number(efflWqltSsCnt[1] || 0) + 1; @@ -2143,7 +2144,7 @@ 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(toBeRain >= 10 && toBeRain < 20){ + } else if (toBeRain >= 10 && toBeRain < 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); @@ -2168,7 +2169,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(toBeRain >= 20 && toBeRain < 30){ + } else if (toBeRain >= 20 && toBeRain < 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); @@ -2193,11 +2194,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(toBeRain >= 30 && toBeRain < 40){ + } else if (toBeRain >= 30 && toBeRain < 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] = item.inflAmnt&&Number(item.inflAmnt) !== 0 ? Number(Math.round(Number(item.inflAmnt) / Number(item.fctCpc) * 10) / 10) : 0; + fcltyCpct[4] = item.inflAmnt && Number(item.inflAmnt) !== 0 ? Number(Math.round(Number(item.inflAmnt) / Number(item.fctCpc) * 10) / 10) : 0; inflAssctBfrWqltBodCnt[4] = Number(inflAssctBfrWqltBodCnt[4] || 0) + 1; inflAssctBfrWqltBod[4] = Number(inflAssctBfrWqltBod[4] || 0) + Number(item.inflAssctBfrWqltBod || 0); inflAssctBfrWqltTocCnt[4] = Number(inflAssctBfrWqltTocCnt[4] || 0) + 1; @@ -2218,7 +2219,7 @@ export const dashBoardReducer:(set:(fn: (state: DashBoardType) => DashBoardType) efflWqltTn[4] = Number(efflWqltTn[4] || 0) + Number(item.efflWqltTn || 0); efflWqltTpCnt[4] = Number(efflWqltTpCnt[4] || 0) + 1; efflWqltTp[4] = Number(efflWqltTp[4] || 0) + Number(item.efflWqltTp || 0); - }else if(toBeRain >= 40 && toBeRain < 50){ + } else if (toBeRain >= 40 && toBeRain < 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); @@ -2243,7 +2244,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(toBeRain >= 50 && toBeRain < 60){ + } else if (toBeRain >= 50 && toBeRain < 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); @@ -2268,7 +2269,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(toBeRain >= 60){ + } else if (toBeRain >= 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); @@ -2295,18 +2296,18 @@ export const dashBoardReducer:(set:(fn: (state: DashBoardType) => DashBoardType) efflWqltTp[7] = Number(efflWqltTp[7] || 0) + Number(item.efflWqltTp || 0); } }); - + // Process the data and create rain management list - if(res.data&&res.data.dsWqltObjs&&res.data.dsWqltObjs.length > 0){ + if (res.data && res.data.dsWqltObjs && res.data.dsWqltObjs.length > 0) { // 설계 유입수질 데이터 가져오기 - 0값이 있으면 이전 차수에서 가져오기 const getDesignWaterQualityData = (stepIndex: number, maxPreviousSteps: number = 3) => { for (let i = 0; i <= maxPreviousSteps && stepIndex - i >= 0; i++) { const currentStep = res.data.dsWqltObjs[stepIndex - i]; - if (currentStep && - currentStep.dsInflWqltBod > 0 && - currentStep.dsInflWqltCod > 0 && - currentStep.dsInflWqltSs > 0 && - currentStep.dsInflWqltTn > 0 && + if (currentStep && + currentStep.dsInflWqltBod > 0 && + currentStep.dsInflWqltCod > 0 && + currentStep.dsInflWqltSs > 0 && + currentStep.dsInflWqltTn > 0 && currentStep.dsInflWqltTp > 0) { return { dsInflWqltBod: currentStep.dsInflWqltBod, @@ -2329,23 +2330,23 @@ export const dashBoardReducer:(set:(fn: (state: DashBoardType) => DashBoardType) const lastStepIndex = res.data.dsWqltObjs.length - 1; const designData = getDesignWaterQualityData(lastStepIndex); - + dsInflWqltBod[0] = designData.dsInflWqltBod; dsInflWqltCod[0] = designData.dsInflWqltCod; dsInflWqltSs[0] = designData.dsInflWqltSs; dsInflWqltTn[0] = designData.dsInflWqltTn; dsInflWqltTp[0] = designData.dsInflWqltTp; } - - 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) + + + 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); - + // 강수비율 - for(let idx=0; idx<rainDate.length; idx++){ - if(Number(rainDate[idx]) > 0){ + for (let idx = 0; idx < rainDate.length; idx++) { + if (Number(rainDate[idx]) > 0) { rainRate[0] = '100'; - rainRate[idx] = (Math.round(Number(rainDate[idx])/Number(rainDate[0])*100*100)/100).toString(); + rainRate[idx] = (Math.round(Number(rainDate[idx]) / Number(rainDate[0]) * 100 * 100) / 100).toString(); } } @@ -2356,13 +2357,13 @@ export const dashBoardReducer:(set:(fn: (state: DashBoardType) => DashBoardType) // 데이터 있는 항목만 계산 let dataIsCount = 0; - for(let idx=0; idx<inflAmnt.length; idx++){ - if(Number(inflAmnt[idx]) > 0){ + for (let idx = 0; idx < inflAmnt.length; idx++) { + if (Number(inflAmnt[idx]) > 0) { dataIsCount++; } } - for(let idx=0; idx<inflAmnt.length; idx++){ + for (let idx = 0; idx < inflAmnt.length; idx++) { inflAmnt[idx] = calculateAverage(Number(inflAmnt[idx]), Number(inflAmtCnt[idx])); inflAssctBfrWqltBod[idx] = calculateAverage(Number(inflAssctBfrWqltBod[idx]), Number(inflAssctBfrWqltBodCnt[idx])); inflAssctBfrWqltToc[idx] = calculateAverage(Number(inflAssctBfrWqltToc[idx]), Number(inflAssctBfrWqltTocCnt[idx])); @@ -2393,7 +2394,7 @@ export const dashBoardReducer:(set:(fn: (state: DashBoardType) => DashBoardType) efflWqltSs[0] = Number((Math.round((totEfflWqltSs / totItemCnt) * 10) / 10).toFixed(1)); efflWqltTn[0] = Number((Math.round((totEfflWqltTn / totItemCnt) * 1000) / 1000).toFixed(3)); efflWqltTp[0] = Number((Math.round((totEfflWqltTp / totItemCnt) * 1000) / 1000).toFixed(3)); - + // 최종 리스트 const filteredData = itemList.map((item, index) => ({ rainItem: item, @@ -2411,15 +2412,15 @@ export const dashBoardReducer:(set:(fn: (state: DashBoardType) => DashBoardType) inflAssctBfrWqltSs: inflAssctBfrWqltSs[index] ? (Math.round(inflAssctBfrWqltSs[index] * 10) / 10).toFixed(1) : '', inflAssctBfrWqltTn: inflAssctBfrWqltTn[index] ? (Math.round(inflAssctBfrWqltTn[index] * 1000) / 1000).toFixed(3) : '', inflAssctBfrWqltTp: inflAssctBfrWqltTp[index] ? (Math.round(inflAssctBfrWqltTp[index] * 1000) / 1000).toFixed(3) : '', - efflWqltBod: efflWqltBod[index] ? (Math.round(efflWqltBod[index] * 10) / 10).toFixed(1): '', + efflWqltBod: efflWqltBod[index] ? (Math.round(efflWqltBod[index] * 10) / 10).toFixed(1) : '', efflWqltToc: efflWqltToc[index] ? (Math.round(efflWqltToc[index] * 10) / 10).toFixed(1) : '', efflWqltSs: efflWqltSs[index] ? (Math.round(efflWqltSs[index] * 10) / 10).toFixed(1) : '', efflWqltTn: efflWqltTn[index] ? (Math.round(efflWqltTn[index] * 1000) / 1000).toFixed(3) : '', efflWqltTp: efflWqltTp[index] ? (Math.round(efflWqltTp[index] * 1000) / 1000).toFixed(3) : '' })); - - const excelList : RainManageExcelType[] = []; - if(isExcel){ + + const excelList: RainManageExcelType[] = []; + if (isExcel) { filteredData.forEach((item) => { excelList.push({ 강우량: item.rainItem, @@ -2430,7 +2431,7 @@ export const dashBoardReducer:(set:(fn: (state: DashBoardType) => DashBoardType) 설계유입수질BOD: item.dsInflWqltBod ? (Math.round(Number(item.dsInflWqltBod) * 10) / 10).toFixed(1) : '', 설계유입수질TOC: item.dsInflWqltCod ? (Math.round(Number(item.dsInflWqltCod) * 10) / 10).toFixed(1) : '', 설계유입수질SS: item.dsInflWqltSs ? (Math.round(Number(item.dsInflWqltSs) * 10) / 10).toFixed(1) : '', - 설계유입수질TN: item.dsInflWqltTn ?(Math.round(Number(item.dsInflWqltTn) * 1000) / 1000).toFixed(3) : '', + 설계유입수질TN: item.dsInflWqltTn ? (Math.round(Number(item.dsInflWqltTn) * 1000) / 1000).toFixed(3) : '', 설계유입수질TP: item.dsInflWqltTp ? (Math.round(Number(item.dsInflWqltTp) * 1000) / 1000).toFixed(3) : '', 유입수질BOD: item.inflAssctBfrWqltBod ? (Math.round(Number(item.inflAssctBfrWqltBod) * 10) / 10).toFixed(1) : '', 유입수질TOC: item.inflAssctBfrWqltToc ? (Math.round(Number(item.inflAssctBfrWqltToc) * 10) / 10).toFixed(1) : '', @@ -2445,18 +2446,18 @@ export const dashBoardReducer:(set:(fn: (state: DashBoardType) => DashBoardType) }); }); } - + set((state: DashBoardType) => ({ ...state, RainManage: isExcel ? { ...state.RainManage, rainManageList: filteredData as any[], excelList: excelList, - isLoadingRainManage : false, + isLoadingRainManage: false, } : { ...state.RainManage, rainManageList: filteredData as any[], - isLoadingRainManage : false, + isLoadingRainManage: false, } })); }, From dafb3b0f9fff27b4d45ca628a6957aab9479616b Mon Sep 17 00:00:00 2001 From: dongsilove <ljparkmindone@gmail.com> Date: Tue, 30 Dec 2025 07:23:59 +0900 Subject: [PATCH 03/16] =?UTF-8?q?fo:=20=EC=88=98=EC=A0=95=EC=A4=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/fo/app/store/dashboard/index.tsx | 257 +++++++++++--------------- 1 file changed, 103 insertions(+), 154 deletions(-) diff --git a/apps/fo/app/store/dashboard/index.tsx b/apps/fo/app/store/dashboard/index.tsx index d1fbdcfe1..ac041391e 100644 --- a/apps/fo/app/store/dashboard/index.tsx +++ b/apps/fo/app/store/dashboard/index.tsx @@ -1403,37 +1403,21 @@ export const dashBoardReducer: (set: (fn: (state: DashBoardType) => DashBoardTyp const res = await fetchOperationStatus(searchYear, fcltyCd); // /dashBoard/mngInfo/ const data = res.data; - let yearMaxSumFlow = 1; // 연간운영실태 최대 - let yearMinSumFlow = 1; // 연간운영실태 최소 - let yearAvgSumFlow = 1; // 연간운영실태 평균 + let yearMaxSumFlow = 1, yearMinSumFlow = 1, yearAvgSumFlow = 1; // 연간 최대, 최소, 평균 let summerAll = 1; // 하절기 전기간 let summerThree = 1; // 하절기 let summerRain = 1; // 하절기 let winterAll = 1; // 동절기 전기간 - let winterSunnyMin = 1; // 동절기 청천 최소 - let winterSunnyAvg = 1; // 동절기 청천 평균 - let winterSunnyMax = 1; // 동절기 청천 최대 + let winterSunnyMin = 1, winterSunnyAvg = 1, winterSunnyMax = 1; // 동절기 청천 최소, 평균, 최대 // 최대, 최소 총 유입량 (1년 하루 합계의 최대, 최소) - // 하절기 청천시, 강우시 재계산 리턴값 - let summerChungchunFlow = 1; // 하절기 청천 - let summerChungchunReturnAmnt = 1; // 하절기 청천 - let summerChungchunEfflAmnt = 1; // 하절기 청천 - let summerRainInflAmnt = 1; // 하절기 강우시 - let summerRainReturnAmnt = 1; // 하절기 강우시 - let summerRainEfflAmnt = 1; // 하절기 강우시 - + let summerChungchunFlow = 1, summerChungchunReturnAmnt = 1, summerChungchunEfflAmnt = 1; // 하절기 청천 + let summerRainInflAmnt = 1, summerRainReturnAmnt = 1, summerRainEfflAmnt = 1; // 하절기 강우시 // 동절기 청천시 최대, 최소, 평균 리턴값 - let winterChungchunFlowAvg = 1; // 동절기 청천 하수유입량 평균 - let winterChungchunFlowMax = 1; // 동절기 청천 하수유입량 최대 - let winterChungchunFlowMin = 1; // 동절기 청천 하수유입량 최소 - let winterChungchunReturnAvg = 1; // 동절기 청천 총인반류수 평균 - let winterChungchunReturnMax = 1; // 동절기 청천 총인반류수 최대 - let winterChungchunReturnMin = 1; // 동절기 청천 총인반류수 최소 - let winterChungchunEfflAvg = 1; // 동절기 청천 방류량 평균 - let winterChungchunEfflMax = 1; // 동절기 청천 방류량 최대 - let winterChungchunEfflMin = 1; // 동절기 청천 방류량 최소 + let winterChungchunFlowAvg = 1, winterChungchunFlowMax = 1, winterChungchunFlowMin = 1; // 동절기 청천 하수유입량 평균, 최대, 최소 + let winterChungchunReturnAvg = 1, winterChungchunReturnMax = 1, winterChungchunReturnMin = 1; // 동절기 청천 총인반류수 평균, 최대, 최소 + let winterChungchunEfflAvg = 1, winterChungchunEfflMax = 1, winterChungchunEfflMin = 1; // 동절기 청천 방류량 평균, 최대, 최소 const clone = (arr: any[]) => arr?.map(v => ({ ...v })) ?? []; @@ -1458,12 +1442,11 @@ export const dashBoardReducer: (set: (fn: (state: DashBoardType) => DashBoardTyp (data.yearData.MIN_SUM_FLOW ? data.yearData.MIN_SUM_FLOW : 0) + // api 주석처리되어 있음. (data.yearData.MIN_RETURN_AMNT ? data.yearData.MIN_RETURN_AMNT : 0) // 반류수유량(m³/일) 최소 ); - - operationalStatusList[0].yearAvg = yearAvg; - operationalStatusList[0].yearMax = yearMax; - operationalStatusList[0].yearMin = yearMin; - // 여름 - operationalStatusList[0].summerAll = data.summer === null ? '' : ( + operationalStatusList[0].yearAvg = yearAvg; // 연간유입평균 + operationalStatusList[0].yearMax = yearMax; // 연간유입최대 + operationalStatusList[0].yearMin = yearMin; // 연간유입최소 + // 하절기 + operationalStatusList[0].summerAll = data.summer === null ? '' : ( // 하절기전기간 (data.summer.AVG_INFL_AMNT ? data.summer.AVG_INFL_AMNT : 0) + (data.summer.AVG_SUM_FLOW ? data.summer.AVG_SUM_FLOW : 0) ); @@ -1475,7 +1458,7 @@ export const dashBoardReducer: (set: (fn: (state: DashBoardType) => DashBoardTyp (data.summerSunny.AVG_INFL_AMNT ? data.summerSunny.AVG_INFL_AMNT : 0) + (data.summerSunny.AVG_SUM_FLOW ? data.summerSunny.AVG_SUM_FLOW : 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) + @@ -1496,63 +1479,21 @@ export const dashBoardReducer: (set: (fn: (state: DashBoardType) => DashBoardTyp (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; - let winterDay = 0; - let summerRainDay = 0; - let summerChungchunDay = 0; - let winterChungchuDay = 0; - - let totFlowMax = 0; - let totFlowMin = 9999999; - - let yearSumFlow = 0; - let maxYearSumFlow = 0; - let minYearSumFlow = 9999999; - let summerSumFlow = 0; - let summerChungchunSumFlow = 0; - let summerRainDaySumFlow = 0; - let summerRainDayFlow = 0; - let summerRainDayReturnFlow = 0; - let summerRainDayEfflFlow = 0; - - let winterSumFlow = 0; - let winterChungchunSumFlow = 0; - let minWinterChungchunSumFlow = 9999999; - let maxWinterChungchunSumFlow = 0; + let yearDay = 0, summerDay = 0, winterDay = 0; // 연간 일수, 하절기 일수, 동절기 일수 + let summerRainDay = 0, summerChungchunDay = 0, winterChungchuDay = 0; // 하절기 강우 일수, 하절기 청천 일수, 동절기 청천 일수 + let totFlowMax = 0, totFlowMin = 9999999; + let yearSumFlow = 0, maxYearSumFlow = 0, minYearSumFlow = 9999999; + let summerSumFlow = 0, summerChungchunSumFlow = 0, summerRainDaySumFlow = 0; // 하절기 유입량 합, 하절기 청천 유입량 합, 하절기 강우 유입량 합 + let summerRainDayFlow = 0, summerRainDayReturnFlow = 0, summerRainDayEfflFlow = 0; // 하절기 강우 유입량, 하절기 강우 반류량, 하절기 강우 방류량 + let winterSumFlow = 0; // 동절기 유입량 합 + let winterChungchunSumFlow = 0; // 동절기 청천 유입량 합 + let maxWinterChungchunSumFlow = 0, minWinterChungchunSumFlow = 9999999; // 연계처리수,지하수유입량 const bscFctCd = fcltyCd; const res2 = await fetchFlowRateModalList(bscFctCd, searchYear); // /fclt/flow/ - yearDay = res2.data ? res2.data.length : 1; - res2.data.forEach((item: any) => { - yearSumFlow += item.sumFlow && item.sumFlow !== 'x' ? Number(item.sumFlow.toString().trim()) : 0; - if (maxYearSumFlow < (item.sumFlow && item.sumFlow !== 'x' ? Number(item.sumFlow.toString().trim()) : 0)) { - maxYearSumFlow = item.sumFlow && item.sumFlow !== 'x' ? Number(item.sumFlow.toString().trim()) : 0; - } - if (minYearSumFlow > (item.sumFlow && item.sumFlow !== 'x' ? Number(item.sumFlow.toString().trim()) : 0)) { - minYearSumFlow = item.sumFlow && item.sumFlow !== 'x' ? Number(item.sumFlow.toString().trim()) : 0; - } - - // 1년 최대 총 하수유입량 - let totYearFlow = 0; - totYearFlow = (item.inflAmnt && item.inflAmnt !== 'x' ? Number(item.inflAmnt.toString().trim()) : 0) + (item.sumFlow && item.sumFlow !== 'x' ? Number(item.sumFlow.toString().trim()) : 0) + (item.returnAmnt && item.returnAmnt !== 'x' ? Number(item.returnAmnt.toString().trim()) : 0); - if (totFlowMax < totYearFlow) { - totFlowMax = totYearFlow; - } - if (totFlowMin > totYearFlow || totFlowMin === 0) { - totFlowMin = totYearFlow; - } - - if (item.msrDt.substring(4, 6) === '06' || item.msrDt.substring(4, 6) === '07' || item.msrDt.substring(4, 6) === '08') { - summerDay += 1; - summerSumFlow += item.sumFlow && item.sumFlow !== 'x' ? Number(item.sumFlow.toString().trim()) : 0; - } else if (item.msrDt.substring(4, 6) === '01' || item.msrDt.substring(4, 6) === '02') { - winterDay += 1; - winterSumFlow += item.sumFlow && item.sumFlow !== 'x' ? Number(item.sumFlow.toString().trim()) : 0; - } - }); const calData = CalcRainEffect(clone(res2.data), 'SUNNY'); const calRainData = CalcRainEffect(clone(res2.data), 'RAIN'); @@ -1561,94 +1502,102 @@ export const dashBoardReducer: (set: (fn: (state: DashBoardType) => DashBoardTyp let chungcunSumFlow = 0; let sumSummerChungcunFlow = 0; let sumWinterChungcunFlow = 0; + let summerChungchunDayReturnAmnt = 0; // 하절기 청천시 총인설비 반류수 + let summerChungchunDayEfflAmnt = 0; // 하절기 청천시 총인설비 방류수 - // 하절기 청천시 총인설비 반류수 - let summerChungchunDayReturnAmnt = 0; - // 하절기 청천시 방류수 - let summerChungchunDayEfflAmnt = 0; - - // 동절기 총 유입량 최대, 최소 - let winterChungchunTotalInflAmntMax = 0; - let winterChungchunTotalInflAmntMin = 9999999; - // 동절기 청천시 하수유입량 최대, 최소 - let winterChungchunDayFlowMax = 0; - let winterChungchunDayFlowMin = 9999999; - // 동절기 청천시 총인반류수 최대, 최소, 평균 - let winterChungchunDayReturnMax = 0; - let winterChungchunDayReturnMin = 9999999; + let winterChungchunTotalInflAmntMax = 0, winterChungchunTotalInflAmntMin = 9999999; // 동절기 총 유입량 최대, 최소 + let winterChungchunDayFlowMax = 0, winterChungchunDayFlowMin = 9999999; // 동절기 청천시 하수유입량 최대, 최소 + let winterChungchunDayReturnMax = 0, winterChungchunDayReturnMin = 9999999; // 동절기 청천시 총인반류수 최대, 최소, 평균 let winterChungchunDayReturnAvg = 0; // 동절기 청천시 방류량 최대, 최소, 평균 - let winterChungchunDayEfflMax = 0; - let winterChungchunDayEfflMin = 9999999; - let winterChungchunDayEfflAvg = 0; + let winterChungchunDayEfflMax = 0, winterChungchunDayEfflMin = 9999999, winterChungchunDayEfflAvg = 0; - // 하절기, 동절기 청천시 계산 - calData.forEach((flowItem: any) => { - chungcunSumFlow += flowItem.inflAmnt && flowItem.inflAmnt !== 'x' ? Number(flowItem.inflAmnt.toString().trim()) : 0; + let rainEffectDay = 0; + yearDay = res2.data ? res2.data.length : 1; + res2.data.forEach((item: any) => { - if (flowItem.msrDt.substring(4, 6) === '06' || flowItem.msrDt.substring(4, 6) === '07' || flowItem.msrDt.substring(4, 6) === '08') { - summerChungchunDay += 1; - summerChungchunSumFlow += flowItem.sumFlow && flowItem.sumFlow !== 'x' ? Number(flowItem.sumFlow.toString().trim()) : 0; - sumSummerChungcunFlow += flowItem.inflAmnt && flowItem.inflAmnt !== 'x' ? Number(flowItem.inflAmnt.toString().trim()) : 0; - summerChungchunDayReturnAmnt += flowItem.returnAmnt && flowItem.returnAmnt !== 'x' ? Number(flowItem.returnAmnt.toString().trim()) : 0; - summerChungchunDayEfflAmnt += flowItem.efflAmnt && flowItem.efflAmnt !== 'x' ? Number(flowItem.efflAmnt.toString().trim()) : 0; + const month = item.msrDt.substring(4, 6); // 월 추출 + const sumFlow = item.sumFlow && item.sumFlow !== 'x' ? Number(item.sumFlow.toString().trim()) : 0; + const inflAmnt = item.inflAmnt && item.inflAmnt !== 'x' ? Number(item.inflAmnt.toString().trim()) : 0; + const returnAmnt = item.returnAmnt && item.returnAmnt !== 'x' ? Number(item.returnAmnt.toString().trim()) : 0; + const efflAmnt = item.efflAmnt && item.efflAmnt !== 'x' ? Number(item.efflAmnt.toString().trim()) : 0; - } else if (flowItem.msrDt.substring(4, 6) === '01' || flowItem.msrDt.substring(4, 6) === '02') { - winterChungchuDay += 1; - winterChungchunSumFlow += flowItem.sumFlow && flowItem.sumFlow !== 'x' ? Number(flowItem.sumFlow.toString().trim()) : 0; - sumWinterChungcunFlow += flowItem.inflAmnt && flowItem.inflAmnt !== 'x' ? Number(flowItem.inflAmnt.toString().trim()) : 0; - winterChungchunDayReturnAvg += flowItem.returnAmnt && flowItem.returnAmnt !== 'x' ? Number(flowItem.returnAmnt.toString().trim()) : 0; - winterChungchunDayEfflAvg += flowItem.efflAmnt && flowItem.efflAmnt !== 'x' ? Number(flowItem.efflAmnt.toString().trim()) : 0; + if (item.infoRnDay == null) item.infoRnDay = 0; + if (item.infoRnDay >= 3) { + rainEffectDay = 2; + // 강우시 + } else { + rainEffectDay--; + } - let totWinterTotalInflAmnt = 0; - totWinterTotalInflAmnt = (flowItem.inflAmnt && flowItem.inflAmnt !== 'x' ? Number(flowItem.inflAmnt.toString().trim()) : 0) + (flowItem.sumFlow && flowItem.sumFlow !== 'x' ? Number(flowItem.sumFlow.toString().trim()) : 0) + (flowItem.returnAmnt && flowItem.returnAmnt !== 'x' ? Number(flowItem.returnAmnt.toString().trim()) : 0); - if (winterChungchunTotalInflAmntMax < totWinterTotalInflAmnt) { - winterChungchunTotalInflAmntMax = totWinterTotalInflAmnt; - } - if (winterChungchunTotalInflAmntMin > totWinterTotalInflAmnt || winterChungchunTotalInflAmntMin === 0) { - winterChungchunTotalInflAmntMin = totWinterTotalInflAmnt; + if (rainEffectDay >= 0) { + // 강우영향일 + if (month === '06' || month === '07' || month === '08') { // 하절기 + summerRainDay += 1; + summerRainDaySumFlow += sumFlow; + summerRainDayFlow += inflAmnt; + summerRainDayReturnFlow += returnAmnt; + summerRainDayEfflFlow += efflAmnt; } + } else if (rainEffectDay < 0) { + // 청천시 + chungcunSumFlow += inflAmnt; - if (winterChungchunDayFlowMin > (flowItem.inflAmnt && flowItem.inflAmnt !== 'x' ? Number(flowItem.inflAmnt.toString().trim()) : 0)) { - winterChungchunDayFlowMin = flowItem.inflAmnt && flowItem.inflAmnt !== 'x' ? Number(flowItem.inflAmnt.toString().trim()) : 0; - } - if (winterChungchunDayFlowMax < (flowItem.inflAmnt && flowItem.inflAmnt !== 'x' ? Number(flowItem.inflAmnt.toString().trim()) : 0)) { - winterChungchunDayFlowMax = flowItem.inflAmnt && flowItem.inflAmnt !== 'x' ? Number(flowItem.inflAmnt.toString().trim()) : 0; - } + if (month === '06' || month === '07' || month === '08') { // 하절기 + summerChungchunDay += 1; + summerChungchunSumFlow += sumFlow; + sumSummerChungcunFlow += inflAmnt; + summerChungchunDayReturnAmnt += returnAmnt; + summerChungchunDayEfflAmnt += efflAmnt; - if (minWinterChungchunSumFlow > (flowItem.sumFlow && flowItem.sumFlow !== 'x' ? Number(flowItem.sumFlow.toString().trim()) : 0)) { - minWinterChungchunSumFlow = flowItem.sumFlow && flowItem.sumFlow !== 'x' ? Number(flowItem.sumFlow.toString().trim()) : 0; - } - if (maxWinterChungchunSumFlow < (flowItem.sumFlow && flowItem.sumFlow !== 'x' ? Number(flowItem.sumFlow.toString().trim()) : 0)) { - maxWinterChungchunSumFlow = flowItem.sumFlow && flowItem.sumFlow !== 'x' ? Number(flowItem.sumFlow.toString().trim()) : 0; - } + } else if (month === '01' || month === '02') { // 동절기 + winterChungchuDay += 1; + winterChungchunSumFlow += sumFlow; + sumWinterChungcunFlow += inflAmnt; + winterChungchunDayReturnAvg += returnAmnt; + winterChungchunDayEfflAvg += efflAmnt; - if (winterChungchunDayReturnMin > (flowItem.returnAmnt && flowItem.returnAmnt !== 'x' ? Number(flowItem.returnAmnt.toString().trim()) : 0)) { - winterChungchunDayReturnMin = flowItem.returnAmnt && flowItem.returnAmnt !== 'x' ? Number(flowItem.returnAmnt.toString().trim()) : 0; - } - if (winterChungchunDayReturnMax < (flowItem.returnAmnt && flowItem.returnAmnt !== 'x' ? Number(flowItem.returnAmnt.toString().trim()) : 0)) { - winterChungchunDayReturnMax = flowItem.returnAmnt && flowItem.returnAmnt !== 'x' ? Number(flowItem.returnAmnt.toString().trim()) : 0; - } + let totWinterTotalInflAmnt = 0; + totWinterTotalInflAmnt = inflAmnt + sumFlow + returnAmnt; + if (winterChungchunTotalInflAmntMax < totWinterTotalInflAmnt) winterChungchunTotalInflAmntMax = totWinterTotalInflAmnt; + if (winterChungchunTotalInflAmntMin > totWinterTotalInflAmnt || winterChungchunTotalInflAmntMin === 0) winterChungchunTotalInflAmntMin = totWinterTotalInflAmnt; - if (winterChungchunDayEfflMin > (flowItem.efflAmnt && flowItem.efflAmnt !== 'x' ? Number(flowItem.efflAmnt.toString().trim()) : 0)) { - winterChungchunDayEfflMin = flowItem.efflAmnt && flowItem.efflAmnt !== 'x' ? Number(flowItem.efflAmnt.toString().trim()) : 0; - } - if (winterChungchunDayEfflMax < (flowItem.efflAmnt && flowItem.efflAmnt !== 'x' ? Number(flowItem.efflAmnt.toString().trim()) : 0)) { - winterChungchunDayEfflMax = flowItem.efflAmnt && flowItem.efflAmnt !== 'x' ? Number(flowItem.efflAmnt.toString().trim()) : 0; + if (winterChungchunDayFlowMin > inflAmnt) winterChungchunDayFlowMin = inflAmnt; + if (winterChungchunDayFlowMax < inflAmnt) winterChungchunDayFlowMax = inflAmnt; + + if (minWinterChungchunSumFlow > sumFlow) minWinterChungchunSumFlow = sumFlow; + if (maxWinterChungchunSumFlow < sumFlow) maxWinterChungchunSumFlow = sumFlow; + + if (winterChungchunDayReturnMin > returnAmnt) winterChungchunDayReturnMin = returnAmnt; + if (winterChungchunDayReturnMax < returnAmnt) winterChungchunDayReturnMax = returnAmnt; + + if (winterChungchunDayEfflMin > efflAmnt) winterChungchunDayEfflMin = efflAmnt; + if (winterChungchunDayEfflMax < efflAmnt) winterChungchunDayEfflMax = efflAmnt; } } + + + yearSumFlow += sumFlow; + if (maxYearSumFlow < sumFlow) maxYearSumFlow = sumFlow; + if (minYearSumFlow > sumFlow) minYearSumFlow = sumFlow; + + // 1년 최대 총 하수유입량 + let totYearFlow = 0; + totYearFlow = inflAmnt + sumFlow + returnAmnt; + if (totFlowMax < totYearFlow) totFlowMax = totYearFlow; + if (totFlowMin > totYearFlow || totFlowMin === 0) { + totFlowMin = totYearFlow; + } + + if (month === '06' || month === '07' || month === '08') { + summerDay += 1; + summerSumFlow += sumFlow; + } else if (month === '01' || month === '02') { + winterDay += 1; + winterSumFlow += sumFlow; + } }); - // 하절기 강우시 계산 - calRainData.forEach((flowItem: any) => { - if (flowItem.msrDt.substring(4, 6) === '06' || flowItem.msrDt.substring(4, 6) === '07' || flowItem.msrDt.substring(4, 6) === '08') { - summerRainDay += 1; - summerRainDaySumFlow += flowItem.sumFlow && flowItem.sumFlow !== 'x' ? Number(flowItem.sumFlow.toString().trim()) : 0; - summerRainDayFlow += flowItem.inflAmnt && flowItem.inflAmnt !== 'x' ? Number(flowItem.inflAmnt.toString().trim()) : 0; - summerRainDayReturnFlow += flowItem.returnAmnt && flowItem.returnAmnt !== 'x' ? Number(flowItem.returnAmnt.toString().trim()) : 0; - summerRainDayEfflFlow += flowItem.efflAmnt && flowItem.efflAmnt !== 'x' ? Number(flowItem.efflAmnt.toString().trim()) : 0; - } - }); // 연계처리수 yearAvgSumFlow = Number((yearSumFlow && Number(yearSumFlow) != 0) ? (yearSumFlow / yearDay) : ''); From 4cb1c47d61087be83cf00a9d59f591f00bd97e16 Mon Sep 17 00:00:00 2001 From: ljpark <mind-one005@mind-one.co.kr> Date: Tue, 30 Dec 2025 09:51:32 +0900 Subject: [PATCH 04/16] =?UTF-8?q?fo:=20dashboard=20=EC=86=8D=EB=8F=84?= =?UTF-8?q?=EA=B0=9C=EC=84=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/fo/src/entities/auth/lib/auth-wrapper.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/fo/src/entities/auth/lib/auth-wrapper.tsx b/apps/fo/src/entities/auth/lib/auth-wrapper.tsx index 0c2d04830..c1b2ecd99 100644 --- a/apps/fo/src/entities/auth/lib/auth-wrapper.tsx +++ b/apps/fo/src/entities/auth/lib/auth-wrapper.tsx @@ -1,7 +1,7 @@ "use client"; import { useEffect } from "react"; -import { useRouter, usePathname } from "next/navigation"; +import { useRouter} from "next/navigation"; import { client } from "@/src/shared/api"; import type { IUserInfo } from "@/src/shared/store"; import { useUserStore, getCookie } from "@/src/shared/lib"; @@ -12,7 +12,7 @@ const LOGIN_PAGE_URL = process.env.NEXT_PUBLIC_CM_LOGIN_PAGE_URL || "http://loca const AuthWrapper = ({ children }: { children: React.ReactNode }) => { const router = useRouter(); - const pathname = usePathname(); + // const pathname = usePathname(); const { userInfo, setUserInfo } = useUserStore((state) => state); async function authCheck() { @@ -53,7 +53,7 @@ const AuthWrapper = ({ children }: { children: React.ReactNode }) => { } } })(); - }, [pathname]); + }, []); return <>{children}</>; }; From ae96324783088d4d445a01ccf78d918e900382b8 Mon Sep 17 00:00:00 2001 From: ljpark <mind-one005@mind-one.co.kr> Date: Tue, 30 Dec 2025 10:08:36 +0900 Subject: [PATCH 05/16] =?UTF-8?q?fo:=20undefined=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/fo/app/store/dashboard/index.tsx | 12 +++++------- apps/fo/src/entities/auth/lib/auth-wrapper.tsx | 6 +++--- 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/apps/fo/app/store/dashboard/index.tsx b/apps/fo/app/store/dashboard/index.tsx index ac041391e..60267e388 100644 --- a/apps/fo/app/store/dashboard/index.tsx +++ b/apps/fo/app/store/dashboard/index.tsx @@ -1495,9 +1495,10 @@ export const dashBoardReducer: (set: (fn: (state: DashBoardType) => DashBoardTyp const bscFctCd = fcltyCd; const res2 = await fetchFlowRateModalList(bscFctCd, searchYear); // /fclt/flow/ - const calData = CalcRainEffect(clone(res2.data), 'SUNNY'); - const calRainData = CalcRainEffect(clone(res2.data), 'RAIN'); + //const calData = CalcRainEffect(clone(res2.data), 'SUNNY'); + //const calRainData = CalcRainEffect(clone(res2.data), 'RAIN'); + let cntSunnyDay = 0; // 청천일 수 // 지하수유입량 - 청천시 기준 let chungcunSumFlow = 0; let sumSummerChungcunFlow = 0; @@ -1540,6 +1541,7 @@ export const dashBoardReducer: (set: (fn: (state: DashBoardType) => DashBoardTyp summerRainDayEfflFlow += efflAmnt; } } else if (rainEffectDay < 0) { + cntSunnyDay += 1; // 청천일수 // 청천시 chungcunSumFlow += inflAmnt; @@ -1651,7 +1653,7 @@ export const dashBoardReducer: (set: (fn: (state: DashBoardType) => DashBoardTyp operationalStatusList[0].winterSunnyAvg = roundUp(Number(operationalStatusList[0].winterSunnyAvg), 0) + roundUp(winterSunnyAvg, 0); // 지하수유입량 - const usage = chungcunSumFlow / calData.length; + const usage = chungcunSumFlow / cntSunnyDay; //calData.length; const summerUsage = sumSummerChungcunFlow / summerChungchunDay; const winterUsage = sumWinterChungcunFlow / winterChungchuDay; @@ -1664,10 +1666,6 @@ export const dashBoardReducer: (set: (fn: (state: DashBoardType) => DashBoardTyp operationalStatusList[0].groundWaterSummer = Math.round((summerUsage - (summerUsage * 0.65 * OSU_PERCENT)) * 100) / 100; operationalStatusList[0].groundWaterWinter = Math.round((winterUsage - (winterUsage * 0.65 * OSU_PERCENT)) * 100) / 100; - //operationalStatusList[0].groundWaterAvg = calData.length === 0 ? '' : Number(calData[0].inflAmnt) - (Number(calData[0].inflAmnt)*0.65*0.8); - //operationalStatusList[0].groundWaterSummer = calData.length === 0 ? '' : Number(calData[0].inflAmnt) - (Number(calData[0].inflAmnt)*0.65*0.8); - //operationalStatusList[0].groundWaterWinter = calData.length === 0 ? '' : Number(calData[0].inflAmnt) - (Number(calData[0].inflAmnt)*0.65*0.8); - // 오염물질 // RDII 추정 = 하절기(6~8월) 중 최저 유입 BOD일때 유입유량 x ((동절기 청천시 유입BOD - 하절기(6~8월) 중 최저 유입BOD) / (동절기 청천시 유입BOD)) const resp = await fetchMainGraph(searchYear, fcltyCd); diff --git a/apps/fo/src/entities/auth/lib/auth-wrapper.tsx b/apps/fo/src/entities/auth/lib/auth-wrapper.tsx index c1b2ecd99..0c2d04830 100644 --- a/apps/fo/src/entities/auth/lib/auth-wrapper.tsx +++ b/apps/fo/src/entities/auth/lib/auth-wrapper.tsx @@ -1,7 +1,7 @@ "use client"; import { useEffect } from "react"; -import { useRouter} from "next/navigation"; +import { useRouter, usePathname } from "next/navigation"; import { client } from "@/src/shared/api"; import type { IUserInfo } from "@/src/shared/store"; import { useUserStore, getCookie } from "@/src/shared/lib"; @@ -12,7 +12,7 @@ const LOGIN_PAGE_URL = process.env.NEXT_PUBLIC_CM_LOGIN_PAGE_URL || "http://loca const AuthWrapper = ({ children }: { children: React.ReactNode }) => { const router = useRouter(); - // const pathname = usePathname(); + const pathname = usePathname(); const { userInfo, setUserInfo } = useUserStore((state) => state); async function authCheck() { @@ -53,7 +53,7 @@ const AuthWrapper = ({ children }: { children: React.ReactNode }) => { } } })(); - }, []); + }, [pathname]); return <>{children}</>; }; From 2364de061648eea22f74bcbfb987a0ba7bcb31a4 Mon Sep 17 00:00:00 2001 From: dongsilove <ljparkmindone@gmail.com> Date: Wed, 31 Dec 2025 18:06:16 +0900 Subject: [PATCH 06/16] =?UTF-8?q?NEXT=5FPUBLIC=5FNGII=5FURL=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/dm/.env.production | 2 +- apps/fo/.env.production | 2 +- apps/sn/.env.production | 2 +- apps/wr/.env.production | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/apps/dm/.env.production b/apps/dm/.env.production index 5aeaa9c45..2a08a80e0 100644 --- a/apps/dm/.env.production +++ b/apps/dm/.env.production @@ -15,7 +15,7 @@ NEXT_PUBLIC_GEOSERVER_URL = http://172.29.143.87:8080/geoserver NEXT_PUBLIC_LX_GEOSERVER_URL = http://172.29.143.87:8080/geoserver_swl NEXT_PUBLIC_WR_SERVER_API_URL = http://apigateway.iipbs-was.svc.cluster.local:8000/reuse-service/api/v1 NEXT_PUBLIC_SEWERAGE_API_URL = http://apigateway.iipbs-was.svc.cluster.local:8000/sewerage-service -NEXT_PUBLIC_NGII_URL = http://172.29.143.87 +NEXT_PUBLIC_NGII_URL = http://172.29.143.87/poiact NEXT_PUBLIC_NGII_PARAM = BDE2BEF39DAFEC293AB6730150F222AC&service=WMTS&request=GetTile&version=1.0.0&format=image/png&layer=korean_map&style=korean&tilematrixset=korean&tilematrix={z}&tilecol={y}&tilerow={x} diff --git a/apps/fo/.env.production b/apps/fo/.env.production index 45e179066..64f0398e0 100644 --- a/apps/fo/.env.production +++ b/apps/fo/.env.production @@ -16,5 +16,5 @@ NEXT_PUBLIC_LX_GEOSERVER_URL = http://172.29.143.87:8080/geoserver_swl NEXT_PUBLIC_WR_SERVER_API_URL = http://apigateway.iipbs-was.svc.cluster.local:8000/reuse-service/api/v1 NEXT_PUBLIC_SEWERAGE_API_URL = http://apigateway.iipbs-was.svc.cluster.local:8000/sewerage-service NEXT_PUBLIC_DC_URL = http://apigateway.iipbs-was.svc.cluster.local:8000/dc-service -NEXT_PUBLIC_NGII_URL = http://172.29.143.87 +NEXT_PUBLIC_NGII_URL = http://172.29.143.87/poiact NEXT_PUBLIC_NGII_PARAM = BDE2BEF39DAFEC293AB6730150F222AC&service=WMTS&request=GetTile&version=1.0.0&format=image/png&layer=korean_map&style=korean&tilematrixset=korean&tilematrix={z}&tilecol={y}&tilerow={x} diff --git a/apps/sn/.env.production b/apps/sn/.env.production index b166d7390..c68db7859 100644 --- a/apps/sn/.env.production +++ b/apps/sn/.env.production @@ -11,7 +11,7 @@ NEXT_PUBLIC_REFRESH_TOKEN = refresh-token NEXT_PUBLIC_SERVER_API_URL = http://apigateway.iipbs-was.svc.cluster.local:8000 NEXT_PUBLIC_GEOSERVER_URL = http://172.29.143.87:8080/geoserver NEXT_PUBLIC_LX_GEOSERVER_URL = http://172.29.143.87:8080/geoserver_swl -NEXT_PUBLIC_NGII_URL = http://172.29.143.87 +NEXT_PUBLIC_NGII_URL = http://172.29.143.87/poiact NEXT_PUBLIC_NGII_PARAM = BDE2BEF39DAFEC293AB6730150F222AC&service=WMTS&request=GetTile&version=1.0.0&format=image/png&layer=korean_map&style=korean&tilematrixset=korean&tilematrix={z}&tilecol={y}&tilerow={x} NEXT_PUBLIC_SEWERAGE_API_URL = http://apigateway.iipbs-was.svc.cluster.local:8000 NEXT_PUBLIC_DC_URL = http://apigateway.iipbs-was.svc.cluster.local:8000 diff --git a/apps/wr/.env.production b/apps/wr/.env.production index 27c562dee..934f1e6a5 100644 --- a/apps/wr/.env.production +++ b/apps/wr/.env.production @@ -15,7 +15,7 @@ NEXT_PUBLIC_GEOSERVER_URL = http://172.29.143.87:8080/geoserver NEXT_PUBLIC_LX_GEOSERVER_URL = http://172.29.143.87:8080/geoserver_swl NEXT_PUBLIC_WR_SERVER_API_URL = http://apigateway.iipbs-was.svc.cluster.local:8000/reuse-service/api/v1 NEXT_PUBLIC_SEWERAGE_API_URL = http://apigateway.iipbs-was.svc.cluster.local:8000/sewerage-service -NEXT_PUBLIC_NGII_URL = http://172.29.143.87 +NEXT_PUBLIC_NGII_URL = http://172.29.143.87/poiact NEXT_PUBLIC_NGII_PARAM = BDE2BEF39DAFEC293AB6730150F222AC&service=WMTS&request=GetTile&version=1.0.0&format=image/png&layer=korean_map&style=korean&tilematrixset=korean&tilematrix={z}&tilecol={y}&tilerow={x} NEXT_PUBLIC_HASUDOINFO = https://www.hasudoinfo.or.kr NEXT_PUBLIC_HASUDOINFO_IN = http://10.101.163.102:8889 From 7af6f3a324695a9ef26894d38fd2173243817b4a Mon Sep 17 00:00:00 2001 From: dongsilove <ljparkmindone@gmail.com> Date: Thu, 1 Jan 2026 22:13:04 +0900 Subject: [PATCH 07/16] =?UTF-8?q?UiTable=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pages/(with-layout)/dashboard/page.tsx | 96 +++------------ apps/fo/app/store/common/index.tsx | 110 ++++++++++-------- apps/fo/app/store/dashboard/index.tsx | 9 +- .../src/ui/table/index.tsx | 4 +- 4 files changed, 82 insertions(+), 137 deletions(-) diff --git a/apps/fo/app/pages/(with-layout)/dashboard/page.tsx b/apps/fo/app/pages/(with-layout)/dashboard/page.tsx index 8d431cf75..b94fc21c1 100644 --- a/apps/fo/app/pages/(with-layout)/dashboard/page.tsx +++ b/apps/fo/app/pages/(with-layout)/dashboard/page.tsx @@ -40,6 +40,14 @@ export const generateYearDates = (searchYear: string) => { return dates; } +type FacilityType = { + bscFctCd: string; + bscFctNm: string; + fcltyCpc: number | ''; + trtFrfNm: string | ''; + efflWqltStndrdNm: string | ''; +} + export default function DashBoard() { // 입력값 상태 관리 const { Common, initializeCommonData, searchMainGraph, searchRainManage, searchOperationStatus, OperationStatus, RainManage, MainGraph, PlanFclty } = useFoStore((state) => state); @@ -48,26 +56,10 @@ export default function DashBoard() { const [filteredSigunData, setFilteredSigunData] = useState<SelectDataType[]>([{ text: "전체", val: '0' }]); const [sidoValue, setSidoValue] = useState<string>('0'); const [sigunValue, setSigunValue] = useState<string>('0'); - const { - isInit, - selectSearchYear, - btnClass, - selectSidoData, - selectSigunData, - } = Common; - - const { - planFcltyList - } = PlanFclty; - - const { - operationalStatusList - } = OperationStatus; - - const { - excelList - } = RainManage; - + const { isInit, selectSearchYear, btnClass, selectSidoData, selectSigunData, } = Common; + const { planFcltyList } = PlanFclty; + const { operationalStatusList } = OperationStatus; + const { excelList } = RainManage; const { chart_inflowRain, chart_bodRain, @@ -79,10 +71,10 @@ export default function DashBoard() { } = MainGraph; /******************선택된 데이터******************/ - // 연도 - const [searchYear, setSearchYear] = useState<string>(selectSearchYear[0]?.val || '0'); + + const [searchYear, setSearchYear] = useState<string>(selectSearchYear[0]?.val || '0'); // 연도 // 시설명 - const [fcltyList, setFcltyList] = useState<{ bscFctCd: string, bscFctNm: string, fcltyCpc: number | '', trtFrfNm: string | '', efflWqltStndrdNm: string | '' }>({ + const [fcltyList, setFcltyList] = useState<FacilityType>({ bscFctCd: '11000SW001R', bscFctNm: '난지', fcltyCpc: 860000, @@ -90,7 +82,7 @@ export default function DashBoard() { efflWqltStndrdNm: '500톤 이상(Ⅲ지역)' }); - const [searchFcltyList, setSearchFcltyList] = useState<{ bscFctCd: string, bscFctNm: string, fcltyCpc: number | '', trtFrfNm: string | '', efflWqltStndrdNm: string | '' }>({ + const [searchFcltyList, setSearchFcltyList] = useState<FacilityType>({ bscFctCd: '', bscFctNm: '', fcltyCpc: '', @@ -111,7 +103,7 @@ export default function DashBoard() { } }, [isInit, initializeCommonData]); - const handleFacilityChange = (facility: { bscFctCd: string, bscFctNm: string, fcltyCpc: number | '', trtFrfNm: string | '', efflWqltStndrdNm: string | '' }) => { + const handleFacilityChange = (facility: FacilityType) => { setFcltyList(facility); }; @@ -255,60 +247,6 @@ export default function DashBoard() { headerRange: 'A1:J1', sheetName: '주요그래프' } - /* { - data: [['날짜', '강수량'],...chart_inflowRain.map((item) => [item.label, roundNumber(item.barVal0, 1)])], - headerNum: 1, - headerRange: 'A1:B1', - sheetName: '강수량' - }, - { - data: [['날짜', '유입하수량'],...chart_inflowRain.map((item) => [item.label, roundNumber(item.lineVal1, 0)])], - headerNum: 1, - headerRange: 'A1:B1', - sheetName: '유입하수량' - }, - { - data: [['날짜', '시설용량'],...chart_inflowRain.map((item) => [item.label, roundNumber(item.lineVal0, 0)])], - headerNum: 1, - headerRange: 'A1:B1', - sheetName: '시설용량' - }, - { - data: [['날짜', '유입BOD'],...chart_bodRain.map((item) => [item.label, roundNumber(item.lineVal0, 1)])], - headerNum: 1, - headerRange: 'A1:B1', - sheetName: '유입BOD' - }, - { - data: [['날짜', '유입T-P'],...chart_inflTp.map((item) => [item.label, roundNumber(item.val, 3)])], - headerNum: 1, - headerRange: 'A1:B1', - sheetName: '유입T-P' - }, - { - data: [['날짜', '총인유입T-P'],...chart_chongInTp.map((item) => [item.label, roundNumber(item.val, 3)])], - headerNum: 1, - headerRange: 'A1:B1', - sheetName: '총인유입T-P' - }, - { - data: [['날짜', '방류T-P'],...chart_efflTp.map((item) => [item.label, roundNumber(item.val, 3)])], - headerNum: 1, - headerRange: 'A1:B1', - sheetName: '방류T-P' - }, - { - data: [['날짜', '유입T-N'],...chart_inflTn.map((item) => [item.label, roundNumber(item.val, 3)])], - headerNum: 1, - headerRange: 'A1:B1', - sheetName: '유입T-N' - }, - { - data: [['날짜', '방류T-N'],...chart_efflTn.map((item) => [item.label, roundNumber(item.val, 3)])], - headerNum: 1, - headerRange: 'A1:B1', - sheetName: '방류T-N' - } */ ]; downloadMultipleExcel('주요그래프', sheetParameter); diff --git a/apps/fo/app/store/common/index.tsx b/apps/fo/app/store/common/index.tsx index e4aebc982..a381eb50d 100644 --- a/apps/fo/app/store/common/index.tsx +++ b/apps/fo/app/store/common/index.tsx @@ -129,14 +129,14 @@ const selectEnvPartSigunData: SelectDataType[] = [ // ]; // 상향 하향 데이터 -const selectUpdownData:SelectDataType[] = [ +const selectUpdownData: SelectDataType[] = [ { text: "전체", val: '0' }, { text: "500미만", val: '400' }, { text: "500이상", val: '500' }, ]; // 운영 상태 데이터 -const selectOperationData:SelectDataType[] = [ +const selectOperationData: SelectDataType[] = [ { text: "전체", val: '0' }, { text: "가동중", val: '1' }, { text: "재가동", val: '2' }, @@ -145,7 +145,7 @@ const selectOperationData:SelectDataType[] = [ ]; // 시설 구분 데이터 -const selectFacilityPartData:SelectDataType[] = [ +const selectFacilityPartData: SelectDataType[] = [ { text: "전체", val: '0' }, { text: "공공하수처리시설", val: 'SW' }, { text: "오수처리장", val: 'SS' }, @@ -158,12 +158,18 @@ const selectFacilityPartData:SelectDataType[] = [ // 년도 데이터 const getYearData = () => { - const year = new Date().getFullYear(); - const year1 = year - 1; - const year2 = year - 2; - const year3 = year - 3; - const year4 = year - 4; - const year5 = year - 5; + const today = new Date(); + const year = today.getFullYear(); + const month = today.getMonth() + 1; + + // 상반기(6월까지)는 2년 전, 하반기는 1년 전부터 시작 + const startYear = month <= 6 ? (year - 2) : (year - 1); + + const year1 = startYear; + const year2 = startYear - 1; + const year3 = startYear - 2; + const year4 = startYear - 3; + const year5 = startYear - 4; return [ { text: year1 + "년", val: year1.toString() }, { text: year2 + "년", val: year2.toString() }, @@ -173,10 +179,10 @@ const getYearData = () => { ] } -const selectSearchYear:SelectDataType[] = getYearData(); +const selectSearchYear: SelectDataType[] = getYearData(); // 유량 기간 구분 -const selectFlowTerm : SelectDataType[] = [ +const selectFlowTerm: SelectDataType[] = [ { text: "연간", val: '0' }, { text: "하절기", val: '01' }, { text: "동절기", val: '02' }, @@ -185,15 +191,15 @@ const selectFlowTerm : SelectDataType[] = [ ]; // 유량 기간 구분 -const selectFlowPanel : SelectDataType[] = [ - { text: "전체", val: '0'}, - { text: "3~10mm미만", val: '2'}, - { text: "10~20mm미만", val: '3'}, - { text: "20~30mm미만", val: '4'}, - { text: "30~40mm미만", val: '5'}, - { text: "40~50mm미만", val: '6'}, - { text: "50~60mm미만", val: '7'}, - { text: "60mm이상", val: '8'}, +const selectFlowPanel: SelectDataType[] = [ + { text: "전체", val: '0' }, + { text: "3~10mm미만", val: '2' }, + { text: "10~20mm미만", val: '3' }, + { text: "20~30mm미만", val: '4' }, + { text: "30~40mm미만", val: '5' }, + { text: "40~50mm미만", val: '6' }, + { text: "50~60mm미만", val: '7' }, + { text: "60mm이상", val: '8' }, ]; // 중권역 데이터 @@ -220,9 +226,9 @@ export const roundUp = (value: number, precision: number = 1): number => { * @param day : 일수 * @param digit : 소수점 자리수 */ -export const qltyDataSetting = (value: number, day : number, digit: number) => { - const toZero = digit === 1 ? '0.0' : digit === 2 ? '0.00' : '0.000'; - return value > 0 ? roundUp((value/day), digit).toFixed(digit) : toZero; +export const qltyDataSetting = (value: number, day: number, digit: number) => { + const toZero = digit === 1 ? '0.0' : digit === 2 ? '0.00' : '0.000'; + return value > 0 ? roundUp((value / day), digit).toFixed(digit) : toZero; }; export const COD_YEAR = 2021; @@ -234,13 +240,13 @@ export const COD_YEAR = 2021; // 처리시설 계획정보 호출 (알에스원) export const planInfoUrl = '/dc-service/api/v1/nowDmgMtncGnsvy'; -export const fetchPlanInfo = async (targetYear : string | undefined, ctpvNm : string | undefined, sggNm : string | undefined, fcltyCd : string | undefined) => { +export const fetchPlanInfo = async (targetYear: string | undefined, ctpvNm: string | undefined, sggNm: string | undefined, fcltyCd: string | undefined) => { try { const baseUrl = planInfoUrl; const queryParams = new URLSearchParams(); if (ctpvNm && ctpvNm !== '전체') queryParams.append('ctpvNm', ctpvNm); if (sggNm && sggNm !== '전체') queryParams.append('sggNm', sggNm); - if (targetYear) queryParams.append('targetYear',targetYear); + if (targetYear) queryParams.append('targetYear', targetYear); if (fcltyCd) queryParams.append('swtrmtFcltCd', fcltyCd); const queryString = queryParams.toString(); const url = queryString ? `${baseUrl}?${queryString}` : baseUrl; @@ -258,16 +264,16 @@ const fetchSidoData = async (): Promise<SelectDataType[]> => { const res = await getFetch('fo', '/addr/city'); const data = res.data; selectSidoData = [ - { text: "전체", val: '0'}, + { text: "전체", val: '0' }, ...data.map((item: sidoDataType) => ({ - text: item.sido || '', - val: String(item.adstDstrCd) || '' + text: item.sido || '', + val: String(item.adstDstrCd) || '' })) ]; return selectSidoData; } catch (error) { - console.error('시도 데이터를 가져오는데 실패했습니다:', error); - return selectSidoData; + console.error('시도 데이터를 가져오는데 실패했습니다:', error); + return selectSidoData; } }; @@ -279,10 +285,10 @@ const fetchSigunData = async (): Promise<SelectDataType[]> => { selectSigunData = [ { text: "전체", val: '0' }, ...data - .map((item: sigunDataType) => ({ + .map((item: sigunDataType) => ({ text: item.gugun || '', val: String(item.adstDstrCd) || '' - })) + })) ]; return selectSigunData; } catch (error) { @@ -297,7 +303,7 @@ const fetchRegionData = async (): Promise<SelectDataType[]> => { const res = await getFetch('fo', '/addr/sarea'); const data = res.data; return [ - { text: "전체", val: '0'}, + { text: "전체", val: '0' }, ...data.map((item: regionDataType) => ({ text: item.rvbsn || '', val: String(item.rvbsnCd) || '' @@ -317,10 +323,10 @@ const fetchMiddleRegionData = async (): Promise<SelectDataType[]> => { return [ { text: "전체", val: '0' }, ...data - .map((item: middleRegionDataType) => ({ - text: item.mdmbsn || '', - val: String(item.rvbsnCd) || '' - })) + .map((item: middleRegionDataType) => ({ + text: item.mdmbsn || '', + val: String(item.rvbsnCd) || '' + })) ]; } catch (error) { console.error('중권역 데이터를 가져오는데 실패했습니다:', error); @@ -336,10 +342,10 @@ const fetchUnitWaterShedData = async (): Promise<SelectDataType[]> => { return [ { text: "전체", val: '0' }, ...data - .map((item: unitWaterShedDataType) => ({ - text: item.lgbsn || '', - val: String(item.rvbsnCd) || '' - })) + .map((item: unitWaterShedDataType) => ({ + text: item.lgbsn || '', + val: String(item.rvbsnCd) || '' + })) ]; } catch (error) { console.error('단위유역 데이터를 가져오는데 실패했습니다:', error); @@ -355,11 +361,11 @@ const fetchEnvPartData = async (): Promise<envPartSelectDataType[]> => { selectEnvPartData = [ { text: "전체", val: '0', adstDliStrCd: '' }, ...data - .map((item: envPartDataType) => ({ - text: item.lclgvrnmntNm || '', - val: String(item.lclgvrnmntCd) || '', - adstDliStrCd: item.adstDliStrCd || '' - })) + .map((item: envPartDataType) => ({ + text: item.lclgvrnmntNm || '', + val: String(item.lclgvrnmntCd) || '', + adstDliStrCd: item.adstDliStrCd || '' + })) ]; return selectEnvPartData; } catch (error) { @@ -372,7 +378,7 @@ const fetchEnvPartData = async (): Promise<envPartSelectDataType[]> => { * Store - expaort ====================================*/ export type CommonAction = { - getMenuAuth : (menuCd : number) => Promise<void>; + getMenuAuth: (menuCd: number) => Promise<void>; initializeCommonData: () => Promise<void>; } @@ -394,7 +400,7 @@ export type CommonType = { selectFlowPanel: SelectDataType[]; selectEnvPartData: envPartSelectDataType[]; btnClass: string; - COD_YEAR : number; + COD_YEAR: number; }; auth: { @@ -424,7 +430,7 @@ export const commonState: CommonType = { selectFlowPanel: selectFlowPanel, selectEnvPartData: selectEnvPartData, btnClass: "p-4 m-2 !mr-10 text-white rounded-sm text-lg font-medium", - COD_YEAR : COD_YEAR, + COD_YEAR: COD_YEAR, }, auth: { @@ -436,10 +442,12 @@ export const commonState: CommonType = { }, }; -export const CommonReducer:(set:(fn: (state: CommonType) => CommonType) => void)=>CommonAction=(set: (fn: (state: CommonType) => CommonType) => void) => { +export const CommonReducer = ( + set: (fn: (state: CommonType) => CommonType) => void +): CommonAction => { return { // 메뉴 권한 확인 - getMenuAuth : async (menuCd : number) =>{ + getMenuAuth: async (menuCd: number) => { const response = await getFetch( "local", `/cms-service/api/v1/menu-authrts/pageinfo/${menuCd}` diff --git a/apps/fo/app/store/dashboard/index.tsx b/apps/fo/app/store/dashboard/index.tsx index 60267e388..d3f3e3e05 100644 --- a/apps/fo/app/store/dashboard/index.tsx +++ b/apps/fo/app/store/dashboard/index.tsx @@ -1289,7 +1289,9 @@ const searchWaterUsage = async (searchYear: string, fcltyCd: string) => { return waterUsage; } -export const dashBoardReducer: (set: (fn: (state: DashBoardType) => DashBoardType) => void) => DashBoardActions = (set: (fn: (state: DashBoardType) => DashBoardType) => void) => { +export const dashBoardReducer = ( + set: (fn: (state: DashBoardType) => DashBoardType) => void +): DashBoardActions => { return { initializeDashBoardData: async () => { set((state: DashBoardType) => ({ @@ -1311,7 +1313,7 @@ export const dashBoardReducer: (set: (fn: (state: DashBoardType) => DashBoardTyp }, })); let waterUsage = [0, 0, 0]; - waterUsage = await searchWaterUsage(targetYear, fcltyCd); + waterUsage = await searchWaterUsage(targetYear, fcltyCd); // /fclt/flow/{fcltyCd}/{year} set((state: DashBoardType) => ({ ...state, @@ -1323,8 +1325,7 @@ export const dashBoardReducer: (set: (fn: (state: DashBoardType) => DashBoardTyp }, })); - const res = await fetchFacilityPlan(targetYear, fcltyCd, set); - + const res = await fetchFacilityPlan(targetYear, fcltyCd, set); // /dc-service/api/v1/nowDmgMtncGnsvy let minDiff = 9999999; let minIndex; res.forEach((el: any, idx) => { diff --git a/packages/common/business_components/src/ui/table/index.tsx b/packages/common/business_components/src/ui/table/index.tsx index f62831959..a0b421db8 100644 --- a/packages/common/business_components/src/ui/table/index.tsx +++ b/packages/common/business_components/src/ui/table/index.tsx @@ -263,9 +263,7 @@ export function UiTable({ <TableCell colSpan={ headlist.filter((item) => item.visible != false).length - - headlist.filter( - (item) => item.visible != false && item.colSpan, - ).length + headlist.filter((item) => item.visible != false && item.colSpan).length } className="h-24 text-center text-gray-500" > From 745a7d06ea2410cce314d073736ec6a4fbdfdf85 Mon Sep 17 00:00:00 2001 From: swcho <swcho@mind-one.co.kr> Date: Fri, 2 Jan 2026 13:55:02 +0900 Subject: [PATCH 08/16] =?UTF-8?q?fix:=20=EA=B0=9C=EB=B0=9C=20=EC=84=9C?= =?UTF-8?q?=EB=B2=84=20=EC=97=90=EB=9F=AC=20=EC=88=98=EC=A0=95=20=ED=85=8C?= =?UTF-8?q?=EC=8A=A4=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/sn/app/page.tsx | 30 +++++++++---------- .../sn/src/entities/auth/lib/auth-wrapper.tsx | 13 +++++++- 2 files changed, 27 insertions(+), 16 deletions(-) diff --git a/apps/sn/app/page.tsx b/apps/sn/app/page.tsx index 1babfe451..83b40887e 100644 --- a/apps/sn/app/page.tsx +++ b/apps/sn/app/page.tsx @@ -26,20 +26,20 @@ export default function Home() { const checkToken = getCookie(AUTH_USER_ID); useEffect(() => { - const hostname = window.location.hostname; - - if (hostname === "localhost" || hostname === "127.0.0.1" || hostname === "con.mind-one.co.kr") { - if (!checkToken) { - async function doLogin() { - try { - await LoginApi.login({ userId: "CLEANWATER", password: "gktneh12!@" }); - window.location.href = "/map"; - } catch (err) { - console.error("로그인 실패", err); - } - } - doLogin(); - } else router.push("/map"); - } else router.push("/map"); + // const hostname = window.location.hostname; + + // if (hostname === "localhost" || hostname === "127.0.0.1" || hostname === "con.mind-one.co.kr") { + // if (!checkToken) { + // async function doLogin() { + // try { + // await LoginApi.login({ userId: "CLEANWATER", password: "gktneh12!@" }); + // window.location.href = "/map"; + // } catch (err) { + // console.error("로그인 실패", err); + // } + // } + // doLogin(); + // } else router.push("/map"); + // } else router.push("/map"); }, []); } diff --git a/apps/sn/src/entities/auth/lib/auth-wrapper.tsx b/apps/sn/src/entities/auth/lib/auth-wrapper.tsx index 289a97087..5127b1e18 100644 --- a/apps/sn/src/entities/auth/lib/auth-wrapper.tsx +++ b/apps/sn/src/entities/auth/lib/auth-wrapper.tsx @@ -44,10 +44,21 @@ const AuthWrapper = ({ children }: { children: React.ReactNode }) => { setUserInfo(null); const hostname = window.location.hostname; + const checkToken = getCookie(AUTH_USER_ID); // 개발 환경에서는 localhost 도메인 사용 if (hostname === "localhost" || hostname === "127.0.0.1" || hostname === "con.mind-one.co.kr") - router.push("/"); // 개발시 홈으로 돌아가기 + if (!checkToken) { + async function doLogin() { + try { + await LoginApi.login({ userId: "CLEANWATER", password: "gktneh12!@" }); + window.location.href = "/map"; + } catch (err) { + console.error("로그인 실패", err); + } + } + doLogin(); + } else router.push("/map"); // 운영 환경에서는 서브도메인을 포함한 최상위 도메인 사용 // router.push는 같은 Next.js 앱 내에서만 작동하므로 다른 앱으로 이동할 때는 window.location.href 사용 From e0e1bb5b1ac7ed60ff36c30b24c18aae9845fb0d Mon Sep 17 00:00:00 2001 From: swcho <swcho@mind-one.co.kr> Date: Fri, 2 Jan 2026 15:18:06 +0900 Subject: [PATCH 09/16] =?UTF-8?q?fix:=20=EA=B0=9C=EB=B0=9C=20=EC=84=9C?= =?UTF-8?q?=EB=B2=84=20=EC=97=90=EB=9F=AC=20=EC=88=98=EC=A0=95=20=ED=85=8C?= =?UTF-8?q?=EC=8A=A4=ED=8A=B82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/sn/app/page.tsx | 29 ++++++++++--------- .../sn/src/entities/auth/lib/auth-wrapper.tsx | 13 +-------- 2 files changed, 16 insertions(+), 26 deletions(-) diff --git a/apps/sn/app/page.tsx b/apps/sn/app/page.tsx index 83b40887e..fa9a15b7f 100644 --- a/apps/sn/app/page.tsx +++ b/apps/sn/app/page.tsx @@ -26,20 +26,21 @@ export default function Home() { const checkToken = getCookie(AUTH_USER_ID); useEffect(() => { - // const hostname = window.location.hostname; + const hostname = window.location.hostname; + console.log("개발 메인 hostname", hostname); - // if (hostname === "localhost" || hostname === "127.0.0.1" || hostname === "con.mind-one.co.kr") { - // if (!checkToken) { - // async function doLogin() { - // try { - // await LoginApi.login({ userId: "CLEANWATER", password: "gktneh12!@" }); - // window.location.href = "/map"; - // } catch (err) { - // console.error("로그인 실패", err); - // } - // } - // doLogin(); - // } else router.push("/map"); - // } else router.push("/map"); + if (hostname === "localhost" || hostname === "127.0.0.1" || hostname === "con.mind-one.co.kr") { + if (!checkToken) { + async function doLogin() { + try { + await LoginApi.login({ userId: "CLEANWATER", password: "gktneh12!@" }); + window.location.href = "/map"; + } catch (err) { + console.error("로그인 실패", err); + } + } + doLogin(); + } else router.push("/map"); + } else router.push("/map"); }, []); } diff --git a/apps/sn/src/entities/auth/lib/auth-wrapper.tsx b/apps/sn/src/entities/auth/lib/auth-wrapper.tsx index 5127b1e18..1c27e6fe3 100644 --- a/apps/sn/src/entities/auth/lib/auth-wrapper.tsx +++ b/apps/sn/src/entities/auth/lib/auth-wrapper.tsx @@ -44,21 +44,10 @@ const AuthWrapper = ({ children }: { children: React.ReactNode }) => { setUserInfo(null); const hostname = window.location.hostname; - const checkToken = getCookie(AUTH_USER_ID); // 개발 환경에서는 localhost 도메인 사용 if (hostname === "localhost" || hostname === "127.0.0.1" || hostname === "con.mind-one.co.kr") - if (!checkToken) { - async function doLogin() { - try { - await LoginApi.login({ userId: "CLEANWATER", password: "gktneh12!@" }); - window.location.href = "/map"; - } catch (err) { - console.error("로그인 실패", err); - } - } - doLogin(); - } else router.push("/map"); + window.location.href = "/"; // 운영 환경에서는 서브도메인을 포함한 최상위 도메인 사용 // router.push는 같은 Next.js 앱 내에서만 작동하므로 다른 앱으로 이동할 때는 window.location.href 사용 From d4b32ffad0f0b5aed4aba138ff43026441b9a1eb Mon Sep 17 00:00:00 2001 From: swcho <swcho@mind-one.co.kr> Date: Fri, 2 Jan 2026 15:39:28 +0900 Subject: [PATCH 10/16] =?UTF-8?q?fix:=20=EC=84=9C=EB=B8=8C=EB=8F=84?= =?UTF-8?q?=EB=A9=94=EC=9D=B8=20=ED=8F=AC=ED=8A=B8=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/sn/.env.mindone | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/sn/.env.mindone b/apps/sn/.env.mindone index d03f5cae5..cea5518db 100644 --- a/apps/sn/.env.mindone +++ b/apps/sn/.env.mindone @@ -5,7 +5,7 @@ NEXT_PUBLIC_AUTH_USER_ID = token-id NEXT_PUBLIC_ACCESS_TOKEN = access-token NEXT_PUBLIC_REFRESH_TOKEN = refresh-token NEXT_PUBLIC_PROXY_HOST = http://con.mind-one.co.kr:11302 -NEXT_PUBLIC_SUB_DOMAIN = http://con.mind-one.co.kr:11300 +NEXT_PUBLIC_SUB_DOMAIN = http://con.mind-one.co.kr:13000 NEXT_PUBLIC_SERVER_API_URL = http://dev.onasys.co.kr:8000 NEXT_PUBLIC_GEOSERVER_URL = https://hasudo.geo.rsonesoft.com/geoserver NEXT_PUBLIC_LX_GEOSERVER_URL = http://con.mind-one.co.kr:11306/geoserver From 8cc5a0a737dd2e2c4d0bef7dbedc724021fd5b39 Mon Sep 17 00:00:00 2001 From: swcho <swcho@mind-one.co.kr> Date: Fri, 2 Jan 2026 15:58:35 +0900 Subject: [PATCH 11/16] =?UTF-8?q?fix:=20base=5Furl=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/sn/src/shared/config/api.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/sn/src/shared/config/api.ts b/apps/sn/src/shared/config/api.ts index fe2e39682..16d1b5452 100644 --- a/apps/sn/src/shared/config/api.ts +++ b/apps/sn/src/shared/config/api.ts @@ -3,7 +3,7 @@ import { PROXY_HOST } from "./env"; // 브라우저에서는 동일 오리진으로 상대경로 호출 → CORS/localhost 고정 문제 방지 // (Next middleware가 /server/* 요청을 백엔드로 rewrite) // 서버 환경(SSR 등)에서는 절대 URL이 필요할 수 있어 기존 PROXY_HOST 기반 유지 -export const BASE_URL = typeof window === "undefined" ? `${PROXY_HOST}/server` : "/server"; +export const BASE_URL = `${PROXY_HOST}/server`; export const ENDPOINT = { ATTACH_SERVICE: { From ea738d687ba62a99d3de3e271df17921320b1011 Mon Sep 17 00:00:00 2001 From: swcho <swcho@mind-one.co.kr> Date: Fri, 2 Jan 2026 16:11:00 +0900 Subject: [PATCH 12/16] =?UTF-8?q?fix:=20router.push=20->=20window.location?= =?UTF-8?q?.href=EB=A1=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/sn/app/page.tsx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/apps/sn/app/page.tsx b/apps/sn/app/page.tsx index fa9a15b7f..03c16e80b 100644 --- a/apps/sn/app/page.tsx +++ b/apps/sn/app/page.tsx @@ -19,10 +19,10 @@ import { LoginApi } from "@/entities/auth"; import { useEffect } from "react"; import { getCookie } from "@/shared/lib"; import { AUTH_USER_ID } from "@/shared/config"; -import { useRouter } from "next/navigation"; +// import { useRouter } from "next/navigation"; export default function Home() { - const router = useRouter(); + // const router = useRouter(); const checkToken = getCookie(AUTH_USER_ID); useEffect(() => { @@ -40,7 +40,7 @@ export default function Home() { } } doLogin(); - } else router.push("/map"); - } else router.push("/map"); + } else window.location.href = "/map"; + } else window.location.href = "/map"; }, []); } From 8f531a245f6e99acab2fd8cd4dbc93f47e4123f8 Mon Sep 17 00:00:00 2001 From: swcho <swcho@mind-one.co.kr> Date: Fri, 2 Jan 2026 17:41:52 +0900 Subject: [PATCH 13/16] =?UTF-8?q?fix:=20=EA=B0=9C=EB=B0=9C=EC=84=9C?= =?UTF-8?q?=EB=B2=84=20env=20=ED=8C=8C=EC=9D=BC=20=ED=99=95=EC=9D=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/sn/app/page.tsx | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/apps/sn/app/page.tsx b/apps/sn/app/page.tsx index 03c16e80b..087cb3ce0 100644 --- a/apps/sn/app/page.tsx +++ b/apps/sn/app/page.tsx @@ -26,6 +26,11 @@ export default function Home() { const checkToken = getCookie(AUTH_USER_ID); useEffect(() => { + console.log("ENV CHECK:", { + PROXY_HOST: process.env.NEXT_PUBLIC_PROXY_HOST, + PORT: process.env.NEXT_PUBLIC_PORT, + }); + const hostname = window.location.hostname; console.log("개발 메인 hostname", hostname); From f96ae66385b9e87feabfe1c3a1e1f5d5c22445d5 Mon Sep 17 00:00:00 2001 From: swcho <swcho@mind-one.co.kr> Date: Fri, 2 Jan 2026 17:49:36 +0900 Subject: [PATCH 14/16] =?UTF-8?q?fix:=20=EA=B0=9C=EB=B0=9C=20=EC=84=9C?= =?UTF-8?q?=EB=B2=84=20=EC=97=90=EB=9F=AC=20=EC=88=98=EC=A0=95=20=ED=85=8C?= =?UTF-8?q?=EC=8A=A4=ED=8A=B8=20=EB=A1=A4=EB=B0=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/sn/app/page.tsx | 7 ------- 1 file changed, 7 deletions(-) diff --git a/apps/sn/app/page.tsx b/apps/sn/app/page.tsx index 087cb3ce0..2a1db71d8 100644 --- a/apps/sn/app/page.tsx +++ b/apps/sn/app/page.tsx @@ -19,20 +19,13 @@ import { LoginApi } from "@/entities/auth"; import { useEffect } from "react"; import { getCookie } from "@/shared/lib"; import { AUTH_USER_ID } from "@/shared/config"; -// import { useRouter } from "next/navigation"; export default function Home() { - // const router = useRouter(); const checkToken = getCookie(AUTH_USER_ID); useEffect(() => { - console.log("ENV CHECK:", { - PROXY_HOST: process.env.NEXT_PUBLIC_PROXY_HOST, - PORT: process.env.NEXT_PUBLIC_PORT, - }); const hostname = window.location.hostname; - console.log("개발 메인 hostname", hostname); if (hostname === "localhost" || hostname === "127.0.0.1" || hostname === "con.mind-one.co.kr") { if (!checkToken) { From 63543a016e3b99019ebcbda56a0f3750d05a1e6e Mon Sep 17 00:00:00 2001 From: ljpark <mind-one005@mind-one.co.kr> Date: Fri, 2 Jan 2026 18:04:19 +0900 Subject: [PATCH 15/16] =?UTF-8?q?fo:=20dashboard=20=EB=AC=BC=EC=82=AC?= =?UTF-8?q?=EC=9A=A9=EB=9F=89=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/fo/app/store/dashboard/index.tsx | 77 +++++++-------------------- 1 file changed, 19 insertions(+), 58 deletions(-) diff --git a/apps/fo/app/store/dashboard/index.tsx b/apps/fo/app/store/dashboard/index.tsx index d3f3e3e05..426954d53 100644 --- a/apps/fo/app/store/dashboard/index.tsx +++ b/apps/fo/app/store/dashboard/index.tsx @@ -760,32 +760,8 @@ const calcWaterQltyData = async (data: any[], searchYear: string | undefined, fc // const qltyChungchunData = CalcRainEffect(clone(qltyData), 'SUNNY'); // 강우시 변수 - let rainSummerDay9 = 0, noNullRainSummerDay9 = 0; - let rainInflBodAvg9 = 0, rainInflTnAvg9 = 0, rainInflTpAvg9 = 0; - let rainEfflBodAvg9 = 0, rainEfflTnAvg9 = 0, rainEfflTpAvg9 = 0, rainTpInflAvg9 = 0; - const qltyRainData = CalcRainEffect(clone(qltyData), 'RAIN'); const rainEffectDayArray: string[] = []; - // 강우시 - qltyRainData.forEach((item: any) => { - const month = item.msrDt.substring(4, 6); // 월 추출 - if (month === '06' || month === '07' || month === '08') { - rainSummerDay9 += 1; - if (item.tpInflWqltTp != null && item.tpInflWqltTp != 0) { - noNullRainSummerDay9 += 1; - } - - rainInflBodAvg9 += nullToZero(item.inflAssctBfrWqltBod); - rainInflTnAvg9 += nullToZero(item.inflAssctBfrWqltTn); - rainInflTpAvg9 += nullToZero(item.inflAssctBfrWqltTp); - rainEfflBodAvg9 += nullToZero(item.efflWqltBod); - rainEfflTnAvg9 += nullToZero(item.efflWqltTn); - rainEfflTpAvg9 += nullToZero(item.efflWqltTp); - rainTpInflAvg9 += nullToZero(item.tpInflWqltTp); - } - }); - console.log("99999999999999999"); - console.log(rainSummerDay9, noNullRainSummerDay9, rainInflBodAvg9, rainInflTnAvg9, rainInflTpAvg9, rainEfflBodAvg9, rainEfflTnAvg9, rainEfflTpAvg9, rainTpInflAvg9); - + // (0) 전체변수 let summerDay = 0, noNullSummerDay = 0; let totalInflBodAvgSummer = 0, totalInflTnAvgSummer = 0, totalInflTpAvgSummer = 0; @@ -1013,8 +989,8 @@ const calcWaterQltyData = async (data: any[], searchYear: string | undefined, fc // 총인설비 orgData[11].summerThree = qltyDataSetting(rainTpInflAvg, noNullRainSummerDay, 3); orgData[12].summerThree = qltyDataSetting(rainInflTpAvg, rainSummerDay, 3); - console.log(rainEffectDayArray); - console.log("000000000", rainSummerDay, noNullRainSummerDay, rainInflBodAvg, rainInflTnAvg, rainInflTpAvg, rainEfflBodAvg, rainEfflTnAvg, rainEfflTpAvg, rainTpInflAvg); + // console.log(rainEffectDayArray); + // console.log("000000000", rainSummerDay, noNullRainSummerDay, rainInflBodAvg, rainInflTnAvg, rainInflTpAvg, rainEfflBodAvg, rainEfflTnAvg, rainEfflTpAvg, rainTpInflAvg); return orgData; } else { @@ -1250,40 +1226,25 @@ const calcValue = (operationalStatus, data, keyTxt = 'INFL_ASSCT_BFR_WQLT_TP') = operationalStatus.winterSunnyMax = data.winterSunny && data.winterSunny['MAX_' + keyTxt] ? Number(Math.round(data.winterSunny['MAX_' + keyTxt] * 1.3 * 1000) / 1000).toFixed(3).toString() : ''; } -type RtnFlowType = { - inflAmnt: string | number; - infoRnDay: string | number; - bscFctCd: string; - msrDt: string; +type wtrUsgYearsType = { + YEAR: string; + WTR_USG: number; } - -type RtnFlowResponse = { - data: RtnFlowType[]; +type wtrUsgYearsResponse = { + data: wtrUsgYearsType[]; count: number; } const searchWaterUsage = async (searchYear: string, fcltyCd: string) => { - const waterUsage = [0, 0, 0]; + const waterUsage = [0, 0, 0]; // searchYear, searchYear-1, searchYear-2 - for (let i = 0; i < 3; i++) { - try { - const res = await getFetch('fo', '/fclt/flow/' + fcltyCd + '/' + (Number(searchYear) - i)) as RtnFlowResponse; - let totWaterUsage = 0; - - if (res && res.data && Array.isArray(res.data)) { - res.data.forEach((item: RtnFlowType) => { - totWaterUsage += Number(item.inflAmnt); - }); - - if (res.count > 0) { - const avg = totWaterUsage / res.count; - waterUsage[i] = parseFloat((avg * 0.65).toFixed(2)); - } - } - } catch (error) { - console.error(`Error fetching water usage for year ${Number(searchYear) - i}:`, error); - waterUsage[i] = 0; - } + const res = await getFetch('fo', '/dashBoard/wtrUsgYears/' + searchYear + '/' + fcltyCd) as wtrUsgYearsResponse; + let i = 0; + if (res && res.data && Array.isArray(res.data)) { + res.data.forEach((item: wtrUsgYearsType) => { + waterUsage[i] = item.WTR_USG; + i++; + }); } return waterUsage; @@ -1314,7 +1275,7 @@ export const dashBoardReducer = ( })); let waterUsage = [0, 0, 0]; waterUsage = await searchWaterUsage(targetYear, fcltyCd); // /fclt/flow/{fcltyCd}/{year} - +console.log(waterUsage); set((state: DashBoardType) => ({ ...state, PlanFclty: { @@ -1834,9 +1795,9 @@ export const dashBoardReducer = ( const rtnData = await calcWaterQltyData(operationalStatusList, searchYear, fcltyCd); // 수질 데이터 청천시, 강우시 재계산 // 총인설비가 없을 경우 제외 - console.log('총인시설 여부 : ', data.yearData?.TP_FCT_YN); + // console.log('총인시설 여부 : ', data.yearData?.TP_FCT_YN); - console.log('rtnData : ', rtnData); + // console.log('rtnData : ', rtnData); if (data.yearData?.TP_FCT_YN !== 'Y') { operationalStatusList = rtnData.slice(0, 11); } else { From 43af9042c80bb4a232a522478989c1d424aa6a87 Mon Sep 17 00:00:00 2001 From: ljpark <mind-one005@mind-one.co.kr> Date: Fri, 2 Jan 2026 18:21:12 +0900 Subject: [PATCH 16/16] fix fo --- apps/fo/app/store/dashboard/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/fo/app/store/dashboard/index.tsx b/apps/fo/app/store/dashboard/index.tsx index 426954d53..b2778e3d8 100644 --- a/apps/fo/app/store/dashboard/index.tsx +++ b/apps/fo/app/store/dashboard/index.tsx @@ -755,7 +755,7 @@ const calcWaterQltyData = async (data: any[], searchYear: string | undefined, fc const orgData = data; const res = await fetchMainGraph(searchYear, fcltyCd); if (res.data.wqltObjs.length > 0) { - const clone = (arr: any[]) => arr?.map(v => ({ ...v })) ?? []; + // const clone = (arr: any[]) => arr?.map(v => ({ ...v })) ?? []; const qltyData = res.data.wqltObjs; // const qltyChungchunData = CalcRainEffect(clone(qltyData), 'SUNNY');