Merge remote-tracking branch 'origin/iipbs/fo/dev'

This commit is contained in:
yschoi
2025-08-18 10:52:52 +09:00
12 changed files with 53 additions and 39 deletions
+9 -1
View File
@@ -16,7 +16,15 @@ export default function DataForm({ type, column, item }: DataFormProps) {
if(value && value != '') {
item[column] = value.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
}
break;
break;
case 'float0':
if(value) {
item[column] = String(value).includes('.')?String(Math.round(parseFloat(value.toString().replace(/,/g, '')) * 1) / 1).split('.').map((part, index) =>
index === 0 ? part.replace(/\B(?=(\d{3})+(?!\d))/g, ",") : part
).join('.')
: String(value).replace(/\B(?=(\d{3})+(?!\d))/g, ",");
}
break;
case 'float1':
if(value) {
item[column] = String(value).includes('.')?String(Math.round(parseFloat(value.toString().replace(/,/g, '')) * 10) / 10).split('.').map((part, index) =>
+10 -1
View File
@@ -201,6 +201,16 @@ const selectMiddleRegionData: SelectDataType[] = [
{ text: "전체", val: '0' }
];
/**
* 반올림 함수
* @param value : 대상 숫자
* @param precision : 반올림할 자릿수
* @returns
*/
export const roundUp = (value: number, precision: number = 1): number => {
return Math.round(value * (10 ** precision)) / (10 ** precision);
}
/**
* STORE - API
*/
@@ -226,7 +236,6 @@ export const fetchPlanInfo = async (targetYear : string | undefined, ctpvNm : st
}
}
// 시도 API 호출 함수 추가
const fetchSidoData = async (): Promise<SelectDataType[]> => {
try {
+34 -12
View File
@@ -4,7 +4,7 @@
import { getFetch } from "@/app/components/api";
import DataForm from "@/app/components/common/DataForm";
import { fetchPlanInfo } from "../common";
import { fetchPlanInfo, roundUp } from "../common";
import type { FacilityWaterQltyProps } from "../facilityWaterQlty";
import { calRainEffectDay, type ApiResponse, type FlowDataItem } from "../underWaterInput";
@@ -882,6 +882,23 @@ export const dataFormSettingPlan=(item : planFcltyListProps) => {
}
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>});
};
export const dataFormSettingWqlty=(item : OperationalStatusListProps)=> {
DataForm({ type: 'float2', column: 'yearAvg', item: item as unknown as Record<string, unknown> });
DataForm({ type: 'float2', column: 'yearMax', item: item as unknown as Record<string, unknown>});
DataForm({ type: 'float2', column: 'yearMin', item: item as unknown as Record<string, unknown>});
@@ -1258,16 +1275,16 @@ export const dashBoardReducer:(set:(fn: (state: DashBoardType) => DashBoardType)
}
});
operationalStatusList[0].yearAvg = Number(operationalStatusList[0].yearAvg) + (yearSumFlow&&Number(yearSumFlow) != 0?Number(yearSumFlow / yearDay):0);
operationalStatusList[0].yearMax = Number(operationalStatusList[0].yearMax) + Number(maxYearSumFlow);
operationalStatusList[0].yearMin = Number(operationalStatusList[0].yearMin) + Number(minYearSumFlow);
operationalStatusList[0].summerAll = Number(operationalStatusList[0].summerAll) + (summerSumFlow&&Number(summerSumFlow)!=0?Number(summerSumFlow / summerDay):0);
operationalStatusList[0].summerThree = Number(operationalStatusList[0].summerThree) + (summerRainDaySumFlow&&Number(summerRainDaySumFlow)!=0?Number(summerRainDaySumFlow / summerRainDay):0);
operationalStatusList[0].summerRain = Number(operationalStatusList[0].summerRain) + (summerChungchunSumFlow&&Number(summerChungchunSumFlow)!=0?Number(summerChungchunSumFlow / summerChungchunDay):0);
operationalStatusList[0].winterAll = Number(operationalStatusList[0].winterAll) + (winterSumFlow&&Number(winterSumFlow)!=0?Number(winterSumFlow / winterDay):0);
operationalStatusList[0].winterSunnyMin = Number(operationalStatusList[0].winterSunnyMin) + Number(minWinterChungchunSumFlow);
operationalStatusList[0].winterSunnyMax = Number(operationalStatusList[0].winterSunnyMax) + (winterChungchunSumFlow&&Number(winterChungchunSumFlow)!=0?Number(winterChungchunSumFlow / winterChungchuDay):0);
operationalStatusList[0].winterSunnyAvg = Number(operationalStatusList[0].winterSunnyAvg) + Number(maxWinterChungchunSumFlow);
operationalStatusList[0].yearAvg = roundUp(Number(operationalStatusList[0].yearAvg) + (yearSumFlow&&Number(yearSumFlow) != 0?Number(yearSumFlow / yearDay):0), 0);
operationalStatusList[0].yearMax = roundUp(Number(operationalStatusList[0].yearMax) + Number(maxYearSumFlow), 0);
operationalStatusList[0].yearMin = roundUp(Number(operationalStatusList[0].yearMin) + Number(minYearSumFlow), 0);
operationalStatusList[0].summerAll = roundUp(Number(operationalStatusList[0].summerAll) + (summerSumFlow&&Number(summerSumFlow)!=0?Number(summerSumFlow / summerDay):0), 0);
operationalStatusList[0].summerThree = roundUp(Number(operationalStatusList[0].summerThree) + (summerRainDaySumFlow&&Number(summerRainDaySumFlow)!=0?Number(summerRainDaySumFlow / summerRainDay):0), 0);
operationalStatusList[0].summerRain = roundUp(Number(operationalStatusList[0].summerRain) + (summerChungchunSumFlow&&Number(summerChungchunSumFlow)!=0?Number(summerChungchunSumFlow / summerChungchunDay):0), 0);
operationalStatusList[0].winterAll = roundUp(Number(operationalStatusList[0].winterAll) + (winterSumFlow&&Number(winterSumFlow)!=0?Number(winterSumFlow / winterDay):0), 0);
operationalStatusList[0].winterSunnyMin = roundUp(Number(operationalStatusList[0].winterSunnyMin) + Number(minWinterChungchunSumFlow), 0);
operationalStatusList[0].winterSunnyMax = roundUp(Number(operationalStatusList[0].winterSunnyMax) + (winterChungchunSumFlow&&Number(winterChungchunSumFlow)!=0?Number(winterChungchunSumFlow / winterChungchuDay):0), 0);
operationalStatusList[0].winterSunnyAvg = roundUp(Number(operationalStatusList[0].winterSunnyAvg) + Number(maxWinterChungchunSumFlow), 0);
// 연계처리수
yearAvgSumFlow = Number((yearSumFlow&&Number(yearSumFlow)!=0)?(yearSumFlow / yearDay):'');
@@ -1320,7 +1337,12 @@ export const dashBoardReducer:(set:(fn: (state: DashBoardType) => DashBoardType)
if(operationalStatusList[i]){
if(i < 7){
changeValue(operationalStatusList[i], data, txtArray[i]);
dataFormSetting(operationalStatusList[i]!);
if(i < 5){
dataFormSetting(operationalStatusList[i]!);
}else{
dataFormSettingWqlty(operationalStatusList[i]!);
}
}else{
calcValue(operationalStatusList[i], data, txtArray[i]);
}
@@ -68,7 +68,6 @@ const LabelArray:string[] = ['구분', '시도', '시군구','용량별', '시
// 리스트 헤더
const upHeadList1:TableUpperProps[] = [
{ id: "bscFctCd", title: "시설코드", row: 0, rowSpan: 2},
{ id: "A", title: "행정구역", row: 0, colSpan: 2 },
{ id: "sido", title: "시도", upName:"upChangeRe", upSequnce:1, row: 1 },
{ id: "gugun", title: "시군구", upName:"upChangeRe",upSequnce:2, row: 1 },
@@ -82,7 +81,6 @@ const upHeadList1:TableUpperProps[] = [
];
const upHeadList2:TableUpperProps[] = [
{ id: "bscFctCd", title: "시설코드", row: 0, rowSpan: 2},
{ id: "A", title: "유역", row: 0, colSpan: 3} ,
{ id: "rvbsn", title: "권역", upName:"upChangeRe", upSequnce:1, row: 1} ,
{ id: "lgbsn", title: "단위유역", upName:"upChangeRe", upSequnce:2, row: 1},
@@ -97,7 +95,6 @@ const upHeadList2:TableUpperProps[] = [
];
const upHeadList3:TableUpperProps[] = [
{ id: "bscFctCd", title: "시설코드", row: 0, rowSpan: 2},
{ id: "A", title: "유역", row: 0, colSpan: 3} ,
{ id: "rvbsn", title: "권역", upName:"upChangeRe1", upSequnce:1, row: 1},
{ id: "lgbsn", title: "단위유역", upName:"upChangeRe1", upSequnce:2, row: 1},
@@ -122,7 +122,6 @@ const mainLabelArray: string[] = ['구분', '시도', '시군구', '용량별',
// 시설수질리스트 헤더(행정별)
const upHeadList1: TableUpperProps[] = [
{ id: "bscFctCd", title: "시설코드", rowSpan: 2, row:0 },
{ id: "C", title: "행정명", colSpan: 2, row: 0 },
{ id: "sidoNm", title: "시도", row: 1 },
{ id: "sggNm", title: "시군구", row: 1 },
@@ -145,7 +144,6 @@ const upHeadList1: TableUpperProps[] = [
// 시설수질리스트 헤더(권역별)
const upHeadList2: TableUpperProps[] = [
{ id: "bscFctCd", title: "시설코드", row:0, rowSpan:2 },
{ id: "C", title: "유역", colSpan: 3, row: 0 },
{ id: "rvbsn", title: "권역", upName: "upChangeRe1", upSequnce: 1, row:1 },
{ id: "lgbsn", title: "단위유역", upName: "upChangeRe1", upSequnce: 2, row:1 },
@@ -169,7 +167,6 @@ const upHeadList2: TableUpperProps[] = [
// 시설수질리스트 헤더(환경청별)
const upHeadList3: TableUpperProps[] = [
{ id: "bscFctCd", title: "시설코드", row:0, rowSpan:2 },
{ id: "C", title: "유역", colSpan: 3, row: 0 },
{ id: "rvbsn", title: "권역", row:1 },
{ id: "lgbsn", title: "단위유역", row:1 },
-3
View File
@@ -91,7 +91,6 @@ export type FlowRateModalProps = {
*/
// 리스트 (행정별)
const upHeadList1:TableUpperProps[] = [
{ id: "bscFctCd", title: "시설코드", row:0, rowSpan:2},
{ id: "A", title: "행정명", row: 0 ,colSpan: 2 },
{ id: "sido", title: "시도", upName:"upChangeRe", row:1 },
{ id: "gugun", title: "시군구", upName:"upChangeRe", row:1 },
@@ -107,7 +106,6 @@ const upHeadList1:TableUpperProps[] = [
// 리스트 (권역별)
const upHeadList2:TableUpperProps[] = [
{ id: "bscFctCd", title: "시설코드", row:0, rowSpan:2},
{ id: "A", title: "유역", row: 0, colSpan: 3},
{ id: "rvbsn", title: "권역", upName:"upChangeRe", row:1 },
{ id: "lgbsn", title: "단위유역", upName:"upChangeRe", row:1 },
@@ -124,7 +122,6 @@ const upHeadList2:TableUpperProps[] = [
// 리스트 (환경청별별)
const upHeadList3:TableUpperProps[] = [
{ id: "bscFctCd", title: "시설코드", row:0, rowSpan:2 },
{ id: "A", title: "유역", row: 0, colSpan: 3 },
{ id: "rvbsn", title: "권역", upName:"upChangeRe1", row:1 },
{ id: "lgbsn", title: "단위유역", upName:"upChangeRe1", row:1 },
-3
View File
@@ -44,7 +44,6 @@ const LabelArray:string[] = ['구분', '시도', '시군구','용량별', '시
// 리스트 헤더
const upHeadList1:TableUpperProps[] = [
{ id: "bscFctCd", title: "시설코드", row:0, rowSpan:2 },
{ id: "A", title: "행정구역", upSequnce:1, row:0, colSpan:2 },
{ id: "sido", title: "시도", upName:"upChangeRe", upSequnce:1, row:1 },
{ id: "gugun", title: "시군구", upName:"upChangeRe",upSequnce:2, row:1 },
@@ -57,7 +56,6 @@ const upHeadList1:TableUpperProps[] = [
];
const upHeadList2:TableUpperProps[] = [
{ id: "bscFctCd", title: "시설코드", row:0, rowSpan:2 },
{ id: "A", title: "유역", upName:"upChangeRe", upSequnce:1, row:0, colSpan:3 },
{ id: "rvbsn", title: "권역", upName:"upChangeRe", upSequnce:1, row:1},
{ id: "lgbsn", title: "단위유역", upName:"upChangeRe", upSequnce:2, row:1},
@@ -71,7 +69,6 @@ const upHeadList2:TableUpperProps[] = [
];
const upHeadList3:TableUpperProps[] = [
{ id: "bscFctCd", title: "시설코드", row:0, rowSpan:2 },
{ id: "A", title: "유역", upName:"upChangeRe", upSequnce:1, row:0, colSpan:3 },
{ id: "rvbsn", title: "권역", upName:"upChangeRe1", upSequnce:1, row:1},
{ id: "lgbsn", title: "단위유역", upName:"upChangeRe1", upSequnce:2, row:1},
-1
View File
@@ -128,7 +128,6 @@ const ProcessFacilityLabelArray:string[] = ['구분', '시도', '시군구','용
// 리스트 헤더(행정별)
const upHeadList1:TableUpperProps[] = [
{ id: "swtrmtFcltCd", title: "시설코드", rowSpan:3, row:0},
{ id: "A", title: "행정구역", colSpan:2, rowSpan:2, row:0},
{ id: "sido", title: "시도", upName:"upChangeRe", row:2 },
{ id: "sigungo", title: "시군구", upName:"upChangeRe", row:2 },
@@ -161,7 +161,6 @@ const ProcessFacilityLabelArray:string[] = ['구분', '시도', '시군구','용
// 리스트 헤더
const upHeadList1:TableUpperProps[] = [
{ id: "bscFctCd", title: "시설코드"},
{ id: "sido", title: "시도", upName:"upChangeRe", upSequnce:1 },
{ id: "gugun", title: "시군구", upName:"upChangeRe",upSequnce:2 },
{ id: "bscFctNm", title: "시설명"},
@@ -177,7 +176,6 @@ const upHeadList1:TableUpperProps[] = [
// 처리시설 리스트 (유역)
const upHeadList2:TableUpperProps[] = [
{ id: "bscFctCd", title: "시설코드"},
{ id: "rvbsn", title: "권역", upName:"upChangeRe", upSequnce:1},
{ id: "lgbsn", title: "단위유역", upName:"upChangeRe", upSequnce:2},
{ id: "mdmbsn", title: "중권역", upName:"upChangeRe", upSequnce:3},
@@ -194,7 +192,6 @@ const upHeadList2:TableUpperProps[] = [
// 처리시설 리스트 (환경청청)
const upHeadList3:TableUpperProps[] = [
{ id: "bscFctCd", title: "시설코드"},
{ id: "rvbsn", title: "권역", upName:"upChangeRe1", upSequnce:1},
{ id: "lgbsn", title: "단위유역", upName:"upChangeRe1", upSequnce:2},
{ id: "mdmbsn", title: "중권역", upName:"upChangeRe1", upSequnce:3},
-3
View File
@@ -89,7 +89,6 @@ export interface ExcelType {
// 리스트 헤더
const upHeadList1:TableUpperProps[] = [
{ id: "bscFctCd", title: "시설코드", row:0, rowSpan:2 },
{ id: "A", title: "행정구역", row:0, colSpan:2 },
{ id: "sido", title: "시도", upName:"upChangeRe", upSequnce:1, row:1 },
{ id: "sigungo", title: "시군구", upName:"upChangeRe",upSequnce:2, row:1 },
@@ -106,7 +105,6 @@ const upHeadList1:TableUpperProps[] = [
];
const upHeadList2:TableUpperProps[] = [
{ id: "bscFctCd", title: "시설코드", row:0, rowSpan:2 },
{ id: "A", title: "유역", row:0, colSpan:3 },
{ id: "rvbsn", title: "권역", upName:"upChangeRe", upSequnce:1, row:1 },
{ id: "lgbsn", title: "단위유역", upName:"upChangeRe", upSequnce:2, row:1 },
@@ -124,7 +122,6 @@ const upHeadList2:TableUpperProps[] = [
];
const upHeadList3:TableUpperProps[] = [
{ id: "bscFctCd", title: "시설코드", row:0, rowSpan:2 },
{ id: "A", title: "유역", row:0, colSpan:3 },
{ id: "rvbsn", title: "권역", upName:"upChangeRe1", upSequnce:1, row:1 },
{ id: "lgbsn", title: "단위유역", upName:"upChangeRe1", upSequnce:2, row:1 },
-3
View File
@@ -59,7 +59,6 @@ export interface ExcelType {
// 리스트 헤더
const upHeadList1:TableUpperProps[] = [
{ id: "bscFctCd", title: "시설코드", row:0, rowSpan:2 },
{ id: "A", title: "행정구역", row:0, colSpan:2 },
{ id: "sidoNm", title: "시도", upName:"upChangeRe", upSequnce:1, row:1 },
{ id: "sggNm", title: "시군구", upName:"upChangeRe",upSequnce:2, row:1 },
@@ -74,7 +73,6 @@ const upHeadList1:TableUpperProps[] = [
];
const upHeadList2:TableUpperProps[] = [
{ id: "bscFctCd", title: "시설코드", row:0, rowSpan:2 },
{ id: "A", title: "유역", row:0, colSpan:3 },
{ id: "rvbsn", title: "권역", upName:"upChangeRe", upSequnce:1, row:1 },
{ id: "lgbsn", title: "단위유역", upName:"upChangeRe", upSequnce:2, row:1 },
@@ -90,7 +88,6 @@ const upHeadList2:TableUpperProps[] = [
];
const upHeadList3:TableUpperProps[] = [
{ id: "bscFctCd", title: "시설코드", row:0, rowSpan:2 },
{ id: "A", title: "유역", row:0, colSpan:3 },
{ id: "rvbsn", title: "권역", upName:"upChangeRe1", upSequnce:1, row:1 },
{ id: "lgbsn", title: "단위유역", upName:"upChangeRe1", upSequnce:2, row:1 },
@@ -32,7 +32,6 @@ const LabelArray:string[] = ['구분', '시도', '시군구','용량별', '시
// 리스트 헤더
const upHeadList1:TableUpperProps[] = [
{ id: "bscFctCd", title: "시설코드", row:0, rowSpan:2 },
{ id: "A", title: "행정구역", row:0, colSpan:2 },
{ id: "sidoNm", title: "시도", upName:"upChangeRe", upSequnce:1, row:1 },
{ id: "sggNm", title: "시군구", upName:"upChangeRe",upSequnce:2, row:1 },
@@ -46,7 +45,6 @@ const upHeadList1:TableUpperProps[] = [
];
const upHeadList2:TableUpperProps[] = [
{ id: "bscFctCd", title: "시설코드", row:0, rowSpan:2 },
{ id: "A", title: "유역", row:0, colSpan:3 },
{ id: "rvbsn", title: "권역", upName:"upChangeRe", upSequnce:1, row:1 },
{ id: "lgbsn", title: "단위유역", upName:"upChangeRe", upSequnce:2, row:1 },
@@ -61,7 +59,6 @@ const upHeadList2:TableUpperProps[] = [
];
const upHeadList3:TableUpperProps[] = [
{ id: "bscFctCd", title: "시설코드", row:0, rowSpan:2 },
{ id: "A", title: "유역", row:0, colSpan:3 },
{ id: "rvbsn", title: "권역", upName:"upChangeRe1", upSequnce:1, row:1 },
{ id: "lgbsn", title: "단위유역", upName:"upChangeRe1", upSequnce:2, row:1 },