feat:[집계표]04.하수저류시설 및 빗물 펌프장
This commit is contained in:
@@ -1,10 +1,190 @@
|
|||||||
|
import { useRef, useState } from "react";
|
||||||
|
|
||||||
|
import { useAlertStore } from "@/shared/lib";
|
||||||
|
import { LoadingWithAnimation, Tabs, TabsContent, TabsList, TabsTrigger } from "@common/components";
|
||||||
|
|
||||||
import SearchForm from "@/components/module/SearchForm";
|
import SearchForm from "@/components/module/SearchForm";
|
||||||
|
import DataGrid from "@/components/module/DataGrid";
|
||||||
|
import type { ColumnInfo } from "@/components/type/DataGrid.type";
|
||||||
|
import type { SearchFormValues } from "@/components/type/SearchForm.type";
|
||||||
|
import { toGridRows } from "@/components/util/grid/gridFunction";
|
||||||
|
|
||||||
|
// 분리된 개별 컬럼 구성 임포트 경로 유지
|
||||||
|
import { ReservoirStatusColumnConfig } from "@/components/util/column/total/sewerReservoir/SewerReservoirStatusColumn";
|
||||||
|
import { PumpStationStatusColumnConfig } from "@/components/util/column/total/sewerReservoir/SewerPumpStationStatusColumn";
|
||||||
|
|
||||||
|
// 수정 적용한 API 및 인터페이스 명세 호출 유지
|
||||||
|
import { statisticsTotalStatusApi } from "@/entities/statistics/api/statistics-total-service";
|
||||||
|
import type {
|
||||||
|
SewerReservoirMaintainTotalRequest
|
||||||
|
} from "@/entities/statistics/model/statistics-total/statistics-sewage-reservoir-total-interface";
|
||||||
|
import CellColorInfo from "./CellColorInfo";
|
||||||
|
|
||||||
|
const SewerReservoirColumnListTot = [
|
||||||
|
ReservoirStatusColumnConfig,
|
||||||
|
PumpStationStatusColumnConfig
|
||||||
|
];
|
||||||
|
|
||||||
|
const firstTabKey = SewerReservoirColumnListTot[0]?.tabKey ?? "ST00040001";
|
||||||
|
|
||||||
const SewageReservoirPumpTot = () => {
|
const SewageReservoirPumpTot = () => {
|
||||||
|
const { setMessage: alert } = useAlertStore((state) => state);
|
||||||
|
|
||||||
|
// 상태 정의에서 null을 제외하여 DataGrid와 타입을 일치시킵니다.
|
||||||
|
const [rowDataMap, setRowDataMap] = useState<Map<string, Record<string, string | number>[]>>(new Map());
|
||||||
|
|
||||||
|
const [isLoading, setIsLoading] = useState(false);
|
||||||
|
const [activeTab, setActiveTab] = useState(firstTabKey);
|
||||||
|
const lastSearchedValuesRef = useRef<SearchFormValues | null>(null);
|
||||||
|
|
||||||
|
const columnInfo = SewerReservoirColumnListTot;
|
||||||
|
|
||||||
|
const handleReset = () => {
|
||||||
|
setRowDataMap(new Map());
|
||||||
|
setActiveTab(firstTabKey);
|
||||||
|
lastSearchedValuesRef.current = null;
|
||||||
|
};
|
||||||
|
|
||||||
|
const loadGridData = async (tabKey: string, values: SearchFormValues): Promise<boolean> => {
|
||||||
|
const param: SewerReservoirMaintainTotalRequest = {
|
||||||
|
ctpvNm: values.sido === "ALL" ? "" : values.sido,
|
||||||
|
sggNm: values.gugun === "ALL" ? "" : values.gugun,
|
||||||
|
sewerBzmnCd: values.bsnmCd,
|
||||||
|
statsYr: values.year,
|
||||||
|
rowDataYn: values.isDetail,
|
||||||
|
summaryYn: values.isSummary !== 'ALL',
|
||||||
|
summaryYearCnt: values.isSummary !== 'ALL' ? Number(values.isSummary) : undefined
|
||||||
|
};
|
||||||
|
|
||||||
|
try {
|
||||||
|
if (tabKey === "ST00040001") {
|
||||||
|
const response = await statisticsTotalStatusApi.getSewerReservoirStatusTotalList(param);
|
||||||
|
if (response && response.status === "success" && response.data) {
|
||||||
|
setRowDataMap((prev) => new Map(prev).set(tabKey, toGridRows(response.data as object[])));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
alert(response?.message || "데이터 조회 중 오류가 발생했습니다.");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (tabKey === "ST00040002") {
|
||||||
|
const response = await statisticsTotalStatusApi.getSewerPumpStationStatusTotalList(param);
|
||||||
|
if (response && response.status === "success" && response.data) {
|
||||||
|
setRowDataMap((prev) => new Map(prev).set(tabKey, toGridRows(response.data as object[])));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
alert(response?.message || "데이터 조회 중 오류가 발생했습니다.");
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
} catch {
|
||||||
|
alert("서버 연결 중 오류가 발생했습니다.");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const handleSearch = async (values: SearchFormValues) => {
|
||||||
|
try {
|
||||||
|
setIsLoading(true);
|
||||||
|
const ok = await loadGridData(activeTab, values);
|
||||||
|
if (ok) {
|
||||||
|
lastSearchedValuesRef.current = values;
|
||||||
|
} else {
|
||||||
|
lastSearchedValuesRef.current = null;
|
||||||
|
}
|
||||||
|
} catch {
|
||||||
|
alert("데이터 조회 중 오류가 발생했습니다.");
|
||||||
|
lastSearchedValuesRef.current = null;
|
||||||
|
} finally {
|
||||||
|
setIsLoading(false);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const handleActiveTabChange = async (tabKey: string) => {
|
||||||
|
setActiveTab(tabKey);
|
||||||
|
const values = lastSearchedValuesRef.current;
|
||||||
|
if (!values) return;
|
||||||
|
|
||||||
|
const existing = rowDataMap.get(tabKey);
|
||||||
|
if (existing && existing.length > 0) return;
|
||||||
|
|
||||||
|
try {
|
||||||
|
setIsLoading(true);
|
||||||
|
await loadGridData(tabKey, values);
|
||||||
|
} catch {
|
||||||
|
alert("데이터 조회 중 오류가 발생했습니다.");
|
||||||
|
} finally {
|
||||||
|
setIsLoading(false);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<div className="relative">
|
||||||
<SearchForm />
|
<SearchForm isDetail={true} isSummary={true} onSubmit={handleSearch} onReset={handleReset} sidoSelectText="전체" />
|
||||||
</>
|
|
||||||
|
{isLoading && (
|
||||||
|
<div className="absolute inset-0 z-50 [data-theme='black']:bg-transparent rounded-lg p-10 flex justify-center items-center">
|
||||||
|
<div className="relative size-[5rem]">
|
||||||
|
<LoadingWithAnimation color="primary" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
|
||||||
|
<CellColorInfo />
|
||||||
|
|
||||||
|
<div className="flex flex-col gap-[0.6rem] mx-[0.6rem]">
|
||||||
|
<Tabs value={activeTab} onValueChange={(v) => void handleActiveTabChange(v)} className="w-full" variant="default">
|
||||||
|
<TabsList>
|
||||||
|
{columnInfo.map((info) => (
|
||||||
|
<TabsTrigger key={info.tabKey} value={info.tabKey}>
|
||||||
|
{info.tabLabel}
|
||||||
|
</TabsTrigger>
|
||||||
|
))}
|
||||||
|
</TabsList>
|
||||||
|
|
||||||
|
{columnInfo.map((info) => {
|
||||||
|
const tabKey = info.tabKey;
|
||||||
|
const rowData = rowDataMap.get(tabKey) ?? [];
|
||||||
|
|
||||||
|
const gridColumnInfo: ColumnInfo = {
|
||||||
|
columns: info.columns,
|
||||||
|
columnLayout: info.columnLayout,
|
||||||
|
};
|
||||||
|
|
||||||
|
return (
|
||||||
|
<TabsContent key={tabKey} value={tabKey}>
|
||||||
|
<DataGrid
|
||||||
|
columnInfo={gridColumnInfo}
|
||||||
|
rowStartNum={info.rowStartNum}
|
||||||
|
excelExportFileSuffix={info.tabLabel}
|
||||||
|
rowData={rowData}
|
||||||
|
setRowData={(updater) => {
|
||||||
|
setRowDataMap((prev) => {
|
||||||
|
const next = new Map(prev);
|
||||||
|
const cur = next.get(tabKey) ?? [];
|
||||||
|
const n =
|
||||||
|
typeof updater === "function" ? updater(cur) : updater;
|
||||||
|
next.set(tabKey, n);
|
||||||
|
return next;
|
||||||
|
});
|
||||||
|
}}
|
||||||
|
isExcelImport={false}
|
||||||
|
isExcelExport={true}
|
||||||
|
showHeaderCheckbox={false}
|
||||||
|
fixedColumns={info.fixedColumns}
|
||||||
|
enableSort={false}
|
||||||
|
cellStyleCallback={({ row }) => {
|
||||||
|
const rowType = String(row.rowType ?? '');
|
||||||
|
if (rowType === 'DETAIL') return undefined;
|
||||||
|
if (rowType === 'BIZ_SUM') return 'rg-cell-rowtype-biz-sum';
|
||||||
|
if (rowType === 'SUMMARY') return 'rg-cell-rowtype-summary';
|
||||||
|
return 'rg-cell-rowtype-other';
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
</TabsContent>
|
||||||
|
);
|
||||||
|
})}
|
||||||
|
</Tabs>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
+96
@@ -0,0 +1,96 @@
|
|||||||
|
import { ValueType } from "realgrid";
|
||||||
|
|
||||||
|
export const PumpStationStatusColumnConfig = {
|
||||||
|
tabKey: "ST00040002",
|
||||||
|
tabLabel: "빗물펌프장",
|
||||||
|
rowStartNum: 2,
|
||||||
|
fixedColumns: 2,
|
||||||
|
columns: [
|
||||||
|
// 행정구역 그룹 소속
|
||||||
|
{ name: "ctpvNm", fieldName: "ctpvNm", header: { text: "시도" }, editable: false },
|
||||||
|
{ name: "sggNm", fieldName: "sggNm", header: { text: "시군구" }, editable: false },
|
||||||
|
{ name: "admdstNm", fieldName: "admdstNm", header: { text: "행정구역명" }, editable: false },
|
||||||
|
|
||||||
|
// 단일 컬럼들
|
||||||
|
{ name: "fcltNm", fieldName: "fcltNm", header: { text: "시설명" }, editable: false },
|
||||||
|
{ name: "fcltPstnCn", fieldName: "fcltPstnCn", header: { text: "위치" }, editable: false },
|
||||||
|
{ name: "fcltyKndCn", fieldName: "fcltyKndCn", header: { text: "시설물종류" }, editable: false },
|
||||||
|
{ name: "oprtngStrtYmd", fieldName: "oprtngStrtYmd", header: { text: "가동개시\n년월일\nyyyy-mm-dd" }, editable: false },
|
||||||
|
{ name: "planDesignFreqCnt", fieldName: "planDesignFreqCnt", header: { text: "계획설계빈도" }, valueType: ValueType.NUMBER, dataFormat: "#,##0", editable: false },
|
||||||
|
{ name: "wtrStrgZoneArea", fieldName: "wtrStrgZoneArea", header: { text: "집수구역면적(㎢)" }, valueType: ValueType.NUMBER, dataFormat: "#,##0.00", editable: false },
|
||||||
|
|
||||||
|
// 유수지 그룹 소속
|
||||||
|
{ name: "rsvrYn", fieldName: "rsvrYn", header: { text: "유수지유무\n(유,무)" }, editable: false },
|
||||||
|
{ name: "rsvrImpndQnt", fieldName: "rsvrImpndQnt", header: { text: "저류량(㎥)" }, valueType: ValueType.NUMBER, dataFormat: "#,##0.0", editable: false },
|
||||||
|
|
||||||
|
// 흡수정 그룹 소속
|
||||||
|
{ name: "abstnRgnImdQnt", fieldName: "abstnRgnImdQnt", header: { text: "저류량(㎥)" }, valueType: ValueType.NUMBER, dataFormat: "#,##0.0", editable: false },
|
||||||
|
|
||||||
|
// 단일 컬럼
|
||||||
|
{ name: "grssPpqty", fieldName: "grssPpqty", header: { text: "총양수량\n(㎥/min)" }, valueType: ValueType.NUMBER, dataFormat: "#,##0.0", editable: false },
|
||||||
|
|
||||||
|
// 펌프시설 > 펌프시설1 그룹 소속
|
||||||
|
{ name: "pumpFcltN1DmtrExpln", fieldName: "pumpFcltN1DmtrExpln", header: { text: "구경(mm)" }, editable: false },
|
||||||
|
{ name: "pumpFcltN1PerPpqty", fieldName: "pumpFcltN1PerPpqty", header: { text: "대당 양수량\n(㎥/min·대)" }, valueType: ValueType.NUMBER, dataFormat: "#,##0.0", editable: false },
|
||||||
|
{ name: "pumpFcltN1PumpCnt", fieldName: "pumpFcltN1PumpCnt", header: { text: "펌프대수" }, valueType: ValueType.NUMBER, dataFormat: "#,##0", editable: false },
|
||||||
|
{ name: "pumpFcltN1RsrvPumpCnt", fieldName: "pumpFcltN1RsrvPumpCnt", header: { text: "예비펌프대수" }, valueType: ValueType.NUMBER, dataFormat: "#,##0", editable: false },
|
||||||
|
|
||||||
|
// 펌프시설 > 펌프시설2 그룹 소속
|
||||||
|
{ name: "pumpFcltN2DmtrExpln", fieldName: "pumpFcltN2DmtrExpln", header: { text: "구경(mm)" }, editable: false },
|
||||||
|
{ name: "pumpFcltN2PerPpqty", fieldName: "pumpFcltN2PerPpqty", header: { text: "대당 양수량\n(㎥/min·대)" }, valueType: ValueType.NUMBER, dataFormat: "#,##0.0", editable: false },
|
||||||
|
{ name: "pumpFcltN2PumpCnt", fieldName: "pumpFcltN2PumpCnt", header: { text: "펌프대수" }, valueType: ValueType.NUMBER, dataFormat: "#,##0", editable: false },
|
||||||
|
{ name: "pumpFcltN2RsrvPumpCnt", fieldName: "pumpFcltN2RsrvPumpCnt", header: { text: "예비펌프대수" }, valueType: ValueType.NUMBER, dataFormat: "#,##0", editable: false },
|
||||||
|
|
||||||
|
// 펌프시설 > 펌프시설3 그룹 소속
|
||||||
|
{ name: "pumpFcltN3DmtrExpln", fieldName: "pumpFcltN3DmtrExpln", header: { text: "구경(mm)" }, editable: false },
|
||||||
|
{ name: "pumpFcltN3PerPpqty", fieldName: "pumpFcltN3PerPpqty", header: { text: "대당 양수량\n(㎥/min·대)" }, valueType: ValueType.NUMBER, dataFormat: "#,##0.0", editable: false },
|
||||||
|
{ name: "pumpFcltN3PumpCnt", fieldName: "pumpFcltN3PumpCnt", header: { text: "펌프대수" }, valueType: ValueType.NUMBER, dataFormat: "#,##0", editable: false },
|
||||||
|
{ name: "pumpFcltN3RsrvPumpCnt", fieldName: "pumpFcltN3RsrvPumpCnt", header: { text: "예비펌프대수" }, valueType: ValueType.NUMBER, dataFormat: "#,##0", editable: false },
|
||||||
|
|
||||||
|
// 부대시설 그룹 소속
|
||||||
|
{ name: "prcsgFcltYn", fieldName: "prcsgFcltYn", header: { text: "전처리\n시설\n유무\n(유/무)" }, editable: false },
|
||||||
|
{ name: "ddrztnEqpmYn", fieldName: "ddrztnEqpmYn", header: { text: "탈취설비\n유무\n(유/무)" }, editable: false },
|
||||||
|
{ name: "oslfEtgtYn", fieldName: "oslfEtgtYn", header: { text: "자가발전\n유무\n(유/무)" }, editable: false },
|
||||||
|
|
||||||
|
// 단일 컬럼
|
||||||
|
{ name: "dschgWtrsExpln", fieldName: "dschgWtrsExpln", header: { text: "방류수역" }, editable: false },
|
||||||
|
|
||||||
|
// 최종처분량(ton/년) 그룹 소속
|
||||||
|
{ name: "prcptnLastDspsQnt", fieldName: "prcptnLastDspsQnt", header: { text: "침사" }, valueType: ValueType.NUMBER, dataFormat: "#,##0.0", editable: false },
|
||||||
|
{ name: "ctmnLastDspsQnt", fieldName: "ctmnLastDspsQnt", header: { text: "협잡물" }, valueType: ValueType.NUMBER, dataFormat: "#,##0.0", editable: false },
|
||||||
|
|
||||||
|
// 최종처분방법 그룹 소속
|
||||||
|
{ name: "prcptnLastDspsMthdExpln", fieldName: "prcptnLastDspsMthdExpln", header: { text: "침사" }, editable: false },
|
||||||
|
{ name: "ctmnLastDspsMthdExpln", fieldName: "ctmnLastDspsMthdExpln", header: { text: "협잡물" }, editable: false },
|
||||||
|
|
||||||
|
// 운영실적 그룹 소속
|
||||||
|
{ name: "oprtngDayCnt", fieldName: "oprtngDayCnt", header: { text: "가동일수\n(일/년)" }, valueType: ValueType.NUMBER, dataFormat: "#,##0", editable: false },
|
||||||
|
{ name: "grssMltvQnt", fieldName: "grssMltvQnt", header: { text: "총배수량(㎡/년)" }, valueType: ValueType.NUMBER, dataFormat: "#,##0.0", editable: false }
|
||||||
|
],
|
||||||
|
columnLayout: [
|
||||||
|
{ name: "areaGroup", header: { text: "행정구역" }, items: ["ctpvNm", "sggNm", "admdstNm"] },
|
||||||
|
"fcltNm",
|
||||||
|
"fcltPstnCn",
|
||||||
|
"fcltyKndCn",
|
||||||
|
"oprtngStrtYmd",
|
||||||
|
"planDesignFreqCnt",
|
||||||
|
"wtrStrgZoneArea",
|
||||||
|
{ name: "rsvrGroup", header: { text: "유수지" }, items: ["rsvrYn", "rsvrImpndQnt"] },
|
||||||
|
{ name: "abstnRgnGroup", header: { text: "흡수정" }, items: ["abstnRgnImdQnt"] },
|
||||||
|
{
|
||||||
|
name: "pumpFcltyGroup",
|
||||||
|
header: { text: "펌프시설" },
|
||||||
|
items: [
|
||||||
|
"grssPpqty",
|
||||||
|
{ name: "pump1SubGroup", header: { text: "펌프시설1" }, items: ["pumpFcltN1DmtrExpln", "pumpFcltN1PerPpqty", "pumpFcltN1PumpCnt", "pumpFcltN1RsrvPumpCnt"] },
|
||||||
|
{ name: "pump2SubGroup", header: { text: "펌프시설2" }, items: ["pumpFcltN2DmtrExpln", "pumpFcltN2PerPpqty", "pumpFcltN2PumpCnt", "pumpFcltN2RsrvPumpCnt"] },
|
||||||
|
{ name: "pump3SubGroup", header: { text: "펌프시설3" }, items: ["pumpFcltN3DmtrExpln", "pumpFcltN3PerPpqty", "pumpFcltN3PumpCnt", "pumpFcltN3RsrvPumpCnt"] }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{ name: "subFcltGroup", header: { text: "부대시설" }, items: ["prcsgFcltYn", "ddrztnEqpmYn", "oslfEtgtYn"] },
|
||||||
|
"dschgWtrsExpln",
|
||||||
|
{ name: "lastDspsGroup", header: { text: "최종처분량(ton/년)" }, items: ["prcptnLastDspsQnt", "ctmnLastDspsQnt"] },
|
||||||
|
{ name: "lastMthdGroup", header: { text: "최종처분방법" }, items: ["prcptnLastDspsMthdExpln", "ctmnLastDspsMthdExpln"] },
|
||||||
|
{ name: "oprtngGroup", header: { text: "운영실적" }, items: ["oprtngDayCnt", "grssMltvQnt"] }
|
||||||
|
]
|
||||||
|
};
|
||||||
+101
@@ -0,0 +1,101 @@
|
|||||||
|
import { ValueType } from "realgrid";
|
||||||
|
|
||||||
|
export const ReservoirStatusColumnConfig = {
|
||||||
|
tabKey: "ST00040001",
|
||||||
|
tabLabel: "하수저류시설",
|
||||||
|
rowStartNum: 2,
|
||||||
|
fixedColumns: 2,
|
||||||
|
columns: [
|
||||||
|
// 행정구역 그룹 소속
|
||||||
|
{ name: "ctpvNm", fieldName: "ctpvNm", header: { text: "시도" }, editable: false },
|
||||||
|
{ name: "sggNm", fieldName: "sggNm", header: { text: "시군구" }, editable: false },
|
||||||
|
{ name: "admdstNm", fieldName: "admdstNm", header: { text: "행정구역명" }, editable: false },
|
||||||
|
|
||||||
|
// 단일 컬럼들
|
||||||
|
{ name: "fcltNm", fieldName: "fcltNm", header: { text: "시설명" }, editable: false },
|
||||||
|
{ name: "fcltPstnCn", fieldName: "fcltPstnCn", header: { text: "위치" }, editable: false },
|
||||||
|
{ name: "oprtngStrtYmd", fieldName: "oprtngStrtYmd", header: { text: "가동개시\n년월일\nyyyy-mm-dd" }, editable: false },
|
||||||
|
{ name: "planDesignFreqCnt", fieldName: "planDesignFreqCnt", header: { text: "계획설계빈도" }, valueType: ValueType.NUMBER, dataFormat: "#,##0", editable: false },
|
||||||
|
|
||||||
|
// 설치목적 그룹 소속 (O,X로 표기, 중복체크가능)
|
||||||
|
{ name: "fldngPrvtnYn", fieldName: "fldngPrvtnYn", header: { text: "침수예방" }, editable: false },
|
||||||
|
{ name: "wqPlltnMtgtYn", fieldName: "wqPlltnMtgtYn", header: { text: "수질오염저감" }, editable: false },
|
||||||
|
{ name: "rtlztnUsgYn", fieldName: "rtlztnUsgYn", header: { text: "하수\n재이용\n용도" }, editable: false },
|
||||||
|
|
||||||
|
// 단일 컬럼들
|
||||||
|
{ name: "fcltStrctCn", fieldName: "fcltStrctCn", header: { text: "시설구조\n(일반지하식,\n지하터널식,\n기타)" }, editable: false },
|
||||||
|
{ name: "wtrStrgZoneArea", fieldName: "wtrStrgZoneArea", header: { text: "접수구역면적(㎢)" }, valueType: ValueType.NUMBER, dataFormat: "#,##0.00", editable: false },
|
||||||
|
{ name: "impdFcltCpct", fieldName: "impdFcltCpct", header: { text: "시설용량(㎥)" }, valueType: ValueType.NUMBER, dataFormat: "#,##0.0", editable: false },
|
||||||
|
{ name: "grssPpqty", fieldName: "grssPpqty", header: { text: "총양수량\n(㎥/min)" }, valueType: ValueType.NUMBER, dataFormat: "#,##0.0", editable: false },
|
||||||
|
|
||||||
|
// 펌프시설 > 펌프시설1 그룹 소속
|
||||||
|
{ name: "pumpFcltN1DmtrExpln", fieldName: "pumpFcltN1DmtrExpln", header: { text: "구경(mm)" }, editable: false },
|
||||||
|
{ name: "pumpFcltN1PerPpqty", fieldName: "pumpFcltN1PerPpqty", header: { text: "대당 양수량\n(㎥/min·대)" }, valueType: ValueType.NUMBER, dataFormat: "#,##0.0", editable: false },
|
||||||
|
{ name: "pumpFcltN1PumpCnt", fieldName: "pumpFcltN1PumpCnt", header: { text: "펌프대수" }, valueType: ValueType.NUMBER, dataFormat: "#,##0", editable: false },
|
||||||
|
{ name: "pumpFcltN1RsrvPumpCnt", fieldName: "pumpFcltN1RsrvPumpCnt", header: { text: "예비펌프대수" }, valueType: ValueType.NUMBER, dataFormat: "#,##0", editable: false },
|
||||||
|
|
||||||
|
// 펌프시설 > 펌프시설2 그룹 소속
|
||||||
|
{ name: "pumpFcltN2DmtrExpln", fieldName: "pumpFcltN2DmtrExpln", header: { text: "구경(mm)" }, editable: false },
|
||||||
|
{ name: "pumpFcltN2PerPpqty", fieldName: "pumpFcltN2PerPpqty", header: { text: "대당 양수량\n(㎥/min·대)" }, valueType: ValueType.NUMBER, dataFormat: "#,##0.0", editable: false },
|
||||||
|
{ name: "pumpFcltN2PumpCnt", fieldName: "pumpFcltN2PumpCnt", header: { text: "펌프대수" }, valueType: ValueType.NUMBER, dataFormat: "#,##0", editable: false },
|
||||||
|
{ name: "pumpFcltN2RsrvPumpCnt", fieldName: "pumpFcltN2RsrvPumpCnt", header: { text: "예비펌프대수" }, valueType: ValueType.NUMBER, dataFormat: "#,##0", editable: false },
|
||||||
|
|
||||||
|
// 펌프시설 > 펌프시설3 그룹 소속
|
||||||
|
{ name: "pumpFcltN3DmtrExpln", fieldName: "pumpFcltN3DmtrExpln", header: { text: "구경(mm)" }, editable: false },
|
||||||
|
{ name: "pumpFcltN3PerPpqty", fieldName: "pumpFcltN3PerPpqty", header: { text: "대당 양수량\n(㎥/min·대)" }, valueType: ValueType.NUMBER, dataFormat: "#,##0.0", editable: false },
|
||||||
|
{ name: "pumpFcltN3PumpCnt", fieldName: "pumpFcltN3PumpCnt", header: { text: "펌프대수" }, valueType: ValueType.NUMBER, dataFormat: "#,##0", editable: false },
|
||||||
|
{ name: "pumpFcltN3RsrvPumpCnt", fieldName: "pumpFcltN3RsrvPumpCnt", header: { text: "예비펌프대수" }, valueType: ValueType.NUMBER, dataFormat: "#,##0", editable: false },
|
||||||
|
|
||||||
|
// 부대시설 그룹 소속
|
||||||
|
{ name: "prcsgFcltYn", fieldName: "prcsgFcltYn", header: { text: "전처리\n시설\n유무\n(유/무)" }, editable: false },
|
||||||
|
{ name: "ddrztnEqpmYn", fieldName: "ddrztnEqpmYn", header: { text: "탈취설비\n유무\n(유/무)" }, editable: false },
|
||||||
|
{ name: "oslfEtgtYn", fieldName: "oslfEtgtYn", header: { text: "자가발전\n유무\n(유/무)" }, editable: false },
|
||||||
|
|
||||||
|
// 단일 컬럼들
|
||||||
|
{ name: "mltvMthCn", fieldName: "mltvMthCn", header: { text: "배수방식\n(자연배수,\n강제배수)" }, editable: false },
|
||||||
|
{ name: "impdMthCn", fieldName: "impdMthCn", header: { text: "저류방식\n(직렬,병렬)" }, editable: false },
|
||||||
|
{ name: "impdPrcsMthdCn", fieldName: "impdPrcsMthdCn", header: { text: "저류수\n처리방법\n(자체처리,\n연계처리)" }, editable: false },
|
||||||
|
{ name: "dschgWtrsExpln", fieldName: "dschgWtrsExpln", header: { text: "방류수역\n(또는\n연계처리장명)" }, editable: false },
|
||||||
|
|
||||||
|
// 최종처분량(ton/년) 그룹 소속
|
||||||
|
{ name: "prcptnLastDspsQnt", fieldName: "prcptnLastDspsQnt", header: { text: "침사" }, valueType: ValueType.NUMBER, dataFormat: "#,##0.0", editable: false },
|
||||||
|
{ name: "ctmnLastDspsQnt", fieldName: "ctmnLastDspsQnt", header: { text: "협잡물" }, valueType: ValueType.NUMBER, dataFormat: "#,##0.0", editable: false },
|
||||||
|
|
||||||
|
// 최종처분방법 그룹 소속
|
||||||
|
{ name: "prcptnLastDspsMthdExpln", fieldName: "prcptnLastDspsMthdExpln", header: { text: "침사" }, editable: false },
|
||||||
|
{ name: "ctmnLastDspsMthdExpln", fieldName: "ctmnLastDspsMthdExpln", header: { text: "협잡물" }, editable: false },
|
||||||
|
|
||||||
|
// 운영실적 그룹 소속
|
||||||
|
{ name: "oprtngDayCnt", fieldName: "oprtngDayCnt", header: { text: "가동일수\n(일/년)" }, valueType: ValueType.NUMBER, dataFormat: "#,##0", editable: false },
|
||||||
|
{ name: "grssMltvQnt", fieldName: "grssMltvQnt", header: { text: "총배수량(㎡/년)" }, valueType: ValueType.NUMBER, dataFormat: "#,##0.0", editable: false }
|
||||||
|
],
|
||||||
|
columnLayout: [
|
||||||
|
{ name: "areaGroup", header: { text: "행정구역" }, items: ["ctpvNm", "sggNm", "admdstNm"] },
|
||||||
|
"fcltNm",
|
||||||
|
"fcltPstnCn",
|
||||||
|
"oprtngStrtYmd",
|
||||||
|
"planDesignFreqCnt",
|
||||||
|
{ name: "purposeGroup", header: { text: "설치목적(O,X로 표기, 중복체크가능)" }, items: ["fldngPrvtnYn", "wqPlltnMtgtYn", "rtlztnUsgYn"] },
|
||||||
|
"fcltStrctCn",
|
||||||
|
"wtrStrgZoneArea",
|
||||||
|
"impdFcltCpct",
|
||||||
|
{
|
||||||
|
name: "pumpFcltyGroup",
|
||||||
|
header: { text: "펌프시설" },
|
||||||
|
items: [
|
||||||
|
"grssPpqty",
|
||||||
|
{ name: "pump1SubGroup", header: { text: "펌프시설1" }, items: ["pumpFcltN1DmtrExpln", "pumpFcltN1PerPpqty", "pumpFcltN1PumpCnt", "pumpFcltN1RsrvPumpCnt"] },
|
||||||
|
{ name: "pump2SubGroup", header: { text: "펌프시설2" }, items: ["pumpFcltN2DmtrExpln", "pumpFcltN2PerPpqty", "pumpFcltN2PumpCnt", "pumpFcltN2RsrvPumpCnt"] },
|
||||||
|
{ name: "pump3SubGroup", header: { text: "펌프시설3" }, items: ["pumpFcltN3DmtrExpln", "pumpFcltN3PerPpqty", "pumpFcltN3PumpCnt", "pumpFcltN3RsrvPumpCnt"] }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{ name: "subFcltGroup", header: { text: "부대시설" }, items: ["prcsgFcltYn", "ddrztnEqpmYn", "oslfEtgtYn"] },
|
||||||
|
"mltvMthCn",
|
||||||
|
"impdMthCn",
|
||||||
|
"impdPrcsMthdCn",
|
||||||
|
"dschgWtrsExpln",
|
||||||
|
{ name: "lastDspsGroup", header: { text: "최종처분량(ton/년)" }, items: ["prcptnLastDspsQnt", "ctmnLastDspsQnt"] },
|
||||||
|
{ name: "lastMthdGroup", header: { text: "최종처분방법" }, items: ["prcptnLastDspsMthdExpln", "ctmnLastDspsMthdExpln"] },
|
||||||
|
{ name: "oprtngGroup", header: { text: "운영실적" }, items: ["oprtngDayCnt", "grssMltvQnt"] }
|
||||||
|
]
|
||||||
|
};
|
||||||
+114
@@ -0,0 +1,114 @@
|
|||||||
|
export interface SewerReservoirMaintainTotalRequest {
|
||||||
|
ctpvNm?: string;
|
||||||
|
sggNm?: string;
|
||||||
|
statsYr?: string;
|
||||||
|
sewerBzmnCd?: string;
|
||||||
|
rowDataYn?: boolean;
|
||||||
|
summaryYn?: boolean;
|
||||||
|
summaryYearCnt?: number;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** [Tab1] `GET .../reservoir-status` 목록 항목 */
|
||||||
|
export interface SewerReservoirStatusTotalItem {
|
||||||
|
statsYr: string;
|
||||||
|
ctpvNm: string;
|
||||||
|
sggNm: string | null;
|
||||||
|
admdstNm: string;
|
||||||
|
admdstCd: string;
|
||||||
|
sewerBzmnCd: string | null;
|
||||||
|
fcltNm: string;
|
||||||
|
fcltPstnCn: string;
|
||||||
|
rowType: string;
|
||||||
|
oprtngStrtYmd: string;
|
||||||
|
planDesignFreqCnt: number;
|
||||||
|
fldngPrvtnYn: string;
|
||||||
|
wqPlltnMtgtYn: string;
|
||||||
|
rtlztnUsgYn: string;
|
||||||
|
fcltStrctCn: string;
|
||||||
|
wtrStrgZoneArea: number;
|
||||||
|
impdFcltCpct: number;
|
||||||
|
grssPpqty: number;
|
||||||
|
pumpFcltN1DmtrExpln: string;
|
||||||
|
pumpFcltN1PerPpqty: number;
|
||||||
|
pumpFcltN1PumpCnt: number;
|
||||||
|
pumpFcltN1RsrvPumpCnt: number;
|
||||||
|
pumpFcltN2DmtrExpln: string;
|
||||||
|
pumpFcltN2PerPpqty: number;
|
||||||
|
pumpFcltN2PumpCnt: number;
|
||||||
|
pumpFcltN2RsrvPumpCnt: number;
|
||||||
|
pumpFcltN3DmtrExpln: string;
|
||||||
|
pumpFcltN3PerPpqty: number;
|
||||||
|
pumpFcltN3PumpCnt: number;
|
||||||
|
pumpFcltN3RsrvPumpCnt: number;
|
||||||
|
prcsgFcltYn: string;
|
||||||
|
ddrztnEqpmYn: string;
|
||||||
|
oslfEtgtYn: string;
|
||||||
|
mltvMthCn: string;
|
||||||
|
impdMthCn: string;
|
||||||
|
impdPrcsMthdCn: string;
|
||||||
|
dschgWtrsExpln: string;
|
||||||
|
prcptnLastDspsQnt: number;
|
||||||
|
ctmnLastDspsQnt: number;
|
||||||
|
prcptnLastDspsMthdExpln: string;
|
||||||
|
ctmnLastDspsMthdExpln: string;
|
||||||
|
oprtngDayCnt: number;
|
||||||
|
grssMltvQnt: number;
|
||||||
|
rmrk: string | null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** [Tab1] `GET .../reservoir-status` 응답 */
|
||||||
|
export interface SewerReservoirStatusTotalResponse {
|
||||||
|
status: string;
|
||||||
|
message?: string;
|
||||||
|
data: SewerReservoirStatusTotalItem[];
|
||||||
|
}
|
||||||
|
|
||||||
|
/** [Tab2] `GET .../pump-station-status` 목록 항목 */
|
||||||
|
export interface SewerPumpStationStatusTotalItem {
|
||||||
|
statsYr: string;
|
||||||
|
ctpvNm: string;
|
||||||
|
sggNm: string | null;
|
||||||
|
admdstNm: string;
|
||||||
|
admdstCd: string;
|
||||||
|
sewerBzmnCd: string | null;
|
||||||
|
rowType: string;
|
||||||
|
fcltNm: string;
|
||||||
|
fcltPstnCn: string;
|
||||||
|
fcltyKndCn: string;
|
||||||
|
oprtngStrtYmd: string;
|
||||||
|
planDesignFreqCnt: number;
|
||||||
|
wtrStrgZoneArea: number;
|
||||||
|
rsvrYn: string;
|
||||||
|
rsvrImpndQnt: number;
|
||||||
|
abstnRgnImdQnt: number;
|
||||||
|
grssPpqty: number;
|
||||||
|
pumpFcltN1DmtrExpln: string;
|
||||||
|
pumpFcltN1PerPpqty: number;
|
||||||
|
pumpFcltN1PumpCnt: number;
|
||||||
|
pumpFcltN1RsrvPumpCnt: number;
|
||||||
|
pumpFcltN2DmtrExpln: string;
|
||||||
|
pumpFcltN2PerPpqty: number;
|
||||||
|
pumpFcltN2PumpCnt: number;
|
||||||
|
pumpFcltN2RsrvPumpCnt: number;
|
||||||
|
pumpFcltN3DmtrExpln: string;
|
||||||
|
pumpFcltN3PerPpqty: number;
|
||||||
|
pumpFcltN3PumpCnt: number;
|
||||||
|
pumpFcltN3RsrvPumpCnt: number;
|
||||||
|
prcsgFcltYn: string;
|
||||||
|
ddrztnEqpmYn: string;
|
||||||
|
oslfEtgtYn: string;
|
||||||
|
dschgWtrsExpln: string;
|
||||||
|
prcptnLastDspsQnt: number;
|
||||||
|
ctmnLastDspsQnt: number;
|
||||||
|
prcptnLastDspsMthdExpln: string;
|
||||||
|
ctmnLastDspsMthdExpln: string;
|
||||||
|
oprtngDayCnt: number;
|
||||||
|
grssMltvQnt: number;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** [Tab2] `GET .../pump-station-status` 응답 */
|
||||||
|
export interface SewerPumpStationStatusTotalResponse {
|
||||||
|
status: string;
|
||||||
|
message?: string;
|
||||||
|
data: SewerPumpStationStatusTotalItem[];
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user