From 9b8d48d39543c05ddd04cc2ad405327df458d03e Mon Sep 17 00:00:00 2001 From: rsone001 Date: Fri, 8 May 2026 17:53:23 +0900 Subject: [PATCH] =?UTF-8?q?[st]=20-=20=EA=B2=80=ED=86=A0=20=ED=95=98?= =?UTF-8?q?=EC=88=98=EA=B4=80=EB=A1=9C,=20=ED=95=98=EC=88=98=EA=B4=80?= =?UTF-8?q?=EB=A1=9C=20=EC=9C=A0=EC=A7=80=EB=B3=B4=EC=88=98=20response=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 --- .../src/components/module/SplitDataGrid.tsx | 4 + .../input/PublicSewageFacilityInp.tsx | 171 ++++++++++++++---- .../review/SewagePipeMaintainRvw.tsx | 8 +- .../statistics/review/SewagePipeRvw.tsx | 30 ++- apps/st/src/components/type/DataGrid.type.ts | 4 + .../MainFacilityInpColumn.ts | 4 +- ...tatistics-input-sew-supply-rate-service.ts | 4 +- ...cs-public-sewage-facility-input-service.ts | 16 +- .../statistics-sewage-pipe-input-service.ts | 22 +-- ...-public-sewage-facility-input-interface.ts | 32 ++++ ...istics-sewage-pipe-mtc-review-interface.ts | 15 +- ...statistics-sewage-pipe-review-interface.ts | 33 +++- 12 files changed, 277 insertions(+), 66 deletions(-) diff --git a/apps/st/src/components/module/SplitDataGrid.tsx b/apps/st/src/components/module/SplitDataGrid.tsx index 5dd359ded..d7e33ea9b 100644 --- a/apps/st/src/components/module/SplitDataGrid.tsx +++ b/apps/st/src/components/module/SplitDataGrid.tsx @@ -14,6 +14,8 @@ const SplitDataGrid = ({ setRightRowData, leftOnRowClick, leftCellStyleCallback, + rightOnItemChecked, + rightOnItemAllChecked, enableSort = false, }: SplitDataGridProps) => { return ( @@ -35,6 +37,8 @@ const SplitDataGrid = ({ enableSort={enableSort} rowData={rightRowData} setRowData={setRightRowData} + onItemChecked={rightOnItemChecked} + onItemAllChecked={rightOnItemAllChecked} /> ); diff --git a/apps/st/src/components/statistics/input/PublicSewageFacilityInp.tsx b/apps/st/src/components/statistics/input/PublicSewageFacilityInp.tsx index a48fa76f2..9e8cb8871 100644 --- a/apps/st/src/components/statistics/input/PublicSewageFacilityInp.tsx +++ b/apps/st/src/components/statistics/input/PublicSewageFacilityInp.tsx @@ -10,6 +10,8 @@ import type { PublicSewageFacilityRequestParams, PublicSewageFacilitySaveItem, PublicSewageFacilitySaveRequest, + PublicSewageMainFacilityMappingSaveItem, + PublicSewageMainFacilityMappingSaveRequest, PublicSewageMappingTargetsRequestParams, } from '@/entities/statistics/model/input/statistics-public-sewage-facility-input-interface'; import { @@ -199,6 +201,11 @@ const PublicSewageFacilityInp = () => { return noApplicableVisible ? Boolean(isNotApplicable) : false; }; + const isCheckedRow = (row: Record): boolean => { + const v = row.__checked; + return v === 1 || v === '1' || v === 'Y' || v === 'y' || v === 'true'; + }; + const executeSubmit = async (submitInfo: StatisticsInputSubmitInfoFormData) => { const verificationBlocked = getVerificationPeriodActionBlockedMessage(periodCheckList); if (verificationBlocked) { @@ -284,51 +291,113 @@ const PublicSewageFacilityInp = () => { const saveFunc = () => { void (async () => { - if (activeTab !== 'ST00060001') { - alert('ST00060002 저장 API 연동 전입니다.'); - return; - } - if (!lastSearchedValues || !searchParamRef.current) { alert('먼저 조회를 진행해주세요.'); return; } - const currentData = rowDataMap.get('ST00060001') ?? []; - if (!currentData || currentData.length === 0) { - alert('저장할 데이터가 없습니다.'); - return; - } - if (!(await confirm("저장 하시겠습니까?"))) return; - const userInfo = await getUserInfo(); - const saveList = buildFacilitySaveList(currentData); - - const param: PublicSewageFacilitySaveRequest = { - statsYr: lastSearchedValues.year ?? '', - ctpvNm: lastSearchedValues.sido ?? '', - sggNm: lastSearchedValues.gugun === 'ALL' ? '' : lastSearchedValues.gugun ?? '', - sewerBzmnCd: lastSearchedValues.bsnmCd ?? '', - userId: userInfo.userUnqId, - superAdmin: isAdminInfo ? 'superAdmin' : '', - noApplicable: getNoApplicableForRequest(), - saveList, - }; - try { setIsLoading(true); - const response = await statisticsInputPublicSewageFacilityApiService.savePublicSewageFacility(param); - if (response.status === 'success') { - alert('저장되었습니다.'); - await loadPublicSewageFacilityActiveTabData( - 'ST00060001', - searchParamRef.current, - lastSearchedValues, - ); - } else { - alert(response.message || '데이터 저장 중 오류가 발생했습니다.'); + const userInfo = await getUserInfo(); + + if (activeTab === 'ST00060001') { + const currentData = rowDataMap.get('ST00060001') ?? []; + if (!currentData || currentData.length === 0) { + alert('저장할 데이터가 없습니다.'); + return; + } + + const saveList = buildFacilitySaveList(currentData); + const param: PublicSewageFacilitySaveRequest = { + statsYr: lastSearchedValues.year ?? '', + ctpvNm: lastSearchedValues.sido ?? '', + sggNm: lastSearchedValues.gugun === 'ALL' ? '' : lastSearchedValues.gugun ?? '', + sewerBzmnCd: lastSearchedValues.bsnmCd ?? '', + userId: userInfo.userUnqId, + superAdmin: isAdminInfo ? 'superAdmin' : '', + noApplicable: getNoApplicableForRequest(), + saveList, + }; + + const response = await statisticsInputPublicSewageFacilityApiService.savePublicSewageFacility(param); + if (response.status === 'success') { + alert('저장되었습니다.'); + await loadPublicSewageFacilityActiveTabData( + 'ST00060001', + searchParamRef.current, + lastSearchedValues, + ); + } else { + alert(response.message || '데이터 저장 중 오류가 발생했습니다.'); + } + return; } + + if (activeTab === 'ST00060002') { + const leftRows = rowDataMap.get('MainFacility') ?? []; + const rightRows = rowDataMap.get('MainFacilityTarget') ?? []; + if (!leftRows.length || !rightRows.length) { + alert('저장할 데이터가 없습니다.'); + return; + } + if (!selectedMainFacilitySn) { + alert('좌측에서 중심 처리 시설을 먼저 선택해주세요.'); + return; + } + + const selectedMain = leftRows.find((r) => String(r.fcltSn ?? '') === selectedMainFacilitySn); + if (!selectedMain) { + alert('선택된 중심 처리 시설 정보를 찾을 수 없습니다.'); + return; + } + + const saveList: PublicSewageMainFacilityMappingSaveItem[] = rightRows + .filter((r) => isCheckedRow(r)) + .map((r) => ({ + fcltSn: String(r.fcltSn ?? ''), + admdstCd: String(r.admdstCd ?? ''), + admdstNm: String(r.admdstNm ?? ''), + swtrmtFcltCd: String(r.swtrmtFcltCd ?? ''), + swtrmtFcltNm: String(r.swtrmtFcltNm ?? ''), + isMainYn: String(r.isMainYn ?? ''), + })); + + const deleteList = rightRows + .filter((r) => String(r.mappedYn ?? '') === 'Y' && !isCheckedRow(r)) + .map((r) => String(r.fcltSn ?? '')) + .filter((sn) => sn !== ''); + + const param: PublicSewageMainFacilityMappingSaveRequest = { + statsYr: lastSearchedValues.year ?? '', + sewerBzmnCd: lastSearchedValues.bsnmCd ?? '', + mainFcltSn: String(selectedMain.fcltSn ?? ''), + mainFcltNm: String(selectedMain.swtrmtFcltNm ?? ''), + prxyBzentyNmCn: String(selectedMain.prxyBzentyNmCn ?? ''), + cnsgnCstVl: Number(selectedMain.cnsgnCstVl ?? 0), + wholNope: Number(selectedMain.wholNope ?? 0), + prxyCtrtCn: String(selectedMain.prxyCtrtCn ?? ''), + userId: userInfo.userUnqId, + saveList, + deleteList, + }; + + const response = await statisticsInputPublicSewageFacilityApiService.saveMainFacilityMapping(param); + if (response.status === 'success') { + alert('저장되었습니다.'); + await loadPublicSewageFacilityActiveTabData( + 'ST00060002', + searchParamRef.current, + lastSearchedValues, + ); + } else { + alert(response.message || '데이터 저장 중 오류가 발생했습니다.'); + } + return; + } + + alert('현재 탭 저장 API 연동 전입니다.'); } finally { setIsLoading(false); } @@ -753,6 +822,38 @@ const PublicSewageFacilityInp = () => { ? leftMainFacilityCellStyleCallback : undefined } + rightOnItemChecked={ + tab.tabKey === 'ST00060002' + ? (itemIndex, checked) => { + setRowDataMap((prev) => { + const next = new Map(prev); + const rows = [...(next.get('MainFacilityTarget') ?? [])]; + if (!rows[itemIndex]) return prev; + rows[itemIndex] = { + ...rows[itemIndex], + __checked: checked ? 'Y' : '', + }; + next.set('MainFacilityTarget', rows); + return next; + }); + } + : undefined + } + rightOnItemAllChecked={ + tab.tabKey === 'ST00060002' + ? (checked) => { + setRowDataMap((prev) => { + const next = new Map(prev); + const rows = [...(next.get('MainFacilityTarget') ?? [])].map((r) => ({ + ...r, + __checked: checked ? 'Y' : '', + })); + next.set('MainFacilityTarget', rows); + return next; + }); + } + : undefined + } setLeftRowData={(updater) => { setRowDataMap((prev) => { const next = new Map(prev); diff --git a/apps/st/src/components/statistics/review/SewagePipeMaintainRvw.tsx b/apps/st/src/components/statistics/review/SewagePipeMaintainRvw.tsx index 50ec7c929..295802cdc 100644 --- a/apps/st/src/components/statistics/review/SewagePipeMaintainRvw.tsx +++ b/apps/st/src/components/statistics/review/SewagePipeMaintainRvw.tsx @@ -9,8 +9,8 @@ import ApproveButton from "@/components/button/ApproveButton"; import ReturnButton from "@/components/button/ReturnButton"; import ReviewOpinionButton from "@/components/button/ReviewOpinionButton"; import SaveButton from "@/components/button/SaveButton"; -import SearchForm from "@/components/module/SearchForm"; import DataGrid from "@/components/module/DataGrid"; +import SearchForm from "@/components/module/SearchForm"; import type { ColumnConfig, ColumnInfo, ColumnInfoList } from "@/components/type/DataGrid.type"; import type { SearchFormValues } from "@/components/type/SearchForm.type"; import { SewagePipeMaintainColumnInfoList } from "@/components/util/column/review/SewagePipeMaintainRvwColumn"; @@ -40,10 +40,12 @@ function getListDataByTab(tabKey: string, responseData: unknown): object[] { return []; } if (tabKey === "ST00030001") { - return (((responseData as { mtcStatusList?: unknown[] }).mtcStatusList) ?? []) as object[]; + const list = (responseData as { sewerPipeMtcList?: unknown }).sewerPipeMtcList; + return Array.isArray(list) ? (list as object[]) : []; } if (tabKey === "ST00030002") { - return (((responseData as { drdgStatusList?: unknown[] }).drdgStatusList) ?? []) as object[]; + const list = (responseData as { sewerPipeDrdgList?: unknown }).sewerPipeDrdgList; + return Array.isArray(list) ? (list as object[]) : []; } return []; } diff --git a/apps/st/src/components/statistics/review/SewagePipeRvw.tsx b/apps/st/src/components/statistics/review/SewagePipeRvw.tsx index 0f6a96e2f..96bfc9128 100644 --- a/apps/st/src/components/statistics/review/SewagePipeRvw.tsx +++ b/apps/st/src/components/statistics/review/SewagePipeRvw.tsx @@ -9,8 +9,8 @@ import ApproveButton from "@/components/button/ApproveButton"; import ReturnButton from "@/components/button/ReturnButton"; import ReviewOpinionButton from "@/components/button/ReviewOpinionButton"; import SaveButton from "@/components/button/SaveButton"; -import SearchForm from "@/components/module/SearchForm"; import DataGrid from "@/components/module/DataGrid"; +import SearchForm from "@/components/module/SearchForm"; import type { ColumnInfo } from "@/components/type/DataGrid.type"; import type { SearchFormValues } from "@/components/type/SearchForm.type"; import { SewagePipeColumnInfoListRvw } from "@/components/util/column/review/SewagePipeRvwColumn"; @@ -37,6 +37,28 @@ async function fetchSewagePipeReviewTab( return null; } +function extractReviewRowsFromResponseData( + tabKey: string, + data: unknown, +): object[] { + if (Array.isArray(data)) return data as object[]; + if (!data || typeof data !== "object") return []; + + const d = data as Record; + switch (tabKey) { + case "ST00020001": + return Array.isArray(d.regionalStatusList) ? (d.regionalStatusList as object[]) : []; + case "ST00020002": + return Array.isArray(d.facilityStatusList) ? (d.facilityStatusList as object[]) : []; + case "ST00020003": + return Array.isArray(d.pipeTypeList) ? (d.pipeTypeList as object[]) : []; + case "ST00020004": + return Array.isArray(d.pipeDiamList) ? (d.pipeDiamList as object[]) : []; + default: + return []; + } +} + // 하수도 통계 검토 02.하수관로 const SewagePipeRvw = () => { const { setMessage: alert } = useAlertStore((state) => state); @@ -79,9 +101,10 @@ const SewagePipeRvw = () => { const response = await fetchSewagePipeReviewTab(activeTab, searchParam); if (response?.status === "success" && response.data) { + const rows = extractReviewRowsFromResponseData(activeTab, response.data); setRowDataMap((prev) => { const next = new Map(prev); - next.set(activeTab, toGridRows(response.data as object[])); + next.set(activeTab, toGridRows(rows)); return next; }); } else { @@ -118,9 +141,10 @@ const SewagePipeRvw = () => { lazyTabLoggedRef.current.add(tabKey); if (response?.status === "success" && response.data) { + const rows = extractReviewRowsFromResponseData(tabKey, response.data); setRowDataMap((prev) => { const next = new Map(prev); - next.set(tabKey, toGridRows(response.data as object[])); + next.set(tabKey, toGridRows(rows)); return next; }); } else { diff --git a/apps/st/src/components/type/DataGrid.type.ts b/apps/st/src/components/type/DataGrid.type.ts index 1fef46df3..3519ce772 100644 --- a/apps/st/src/components/type/DataGrid.type.ts +++ b/apps/st/src/components/type/DataGrid.type.ts @@ -369,6 +369,10 @@ export type SplitDataGridProps = { leftOnRowClick?: (rowData: Record) => void; /** 좌측 분할 그리드 셀 스타일 콜백 */ leftCellStyleCallback?: CellStyleCallback; + /** 우측 분할 그리드 행 체크 변경 */ + rightOnItemChecked?: (itemIndex: number, checked: boolean) => void; + /** 우측 분할 그리드 헤더 전체 체크 변경 */ + rightOnItemAllChecked?: (checked: boolean) => void; /** 전체 정렬 기능 on/off (기본값: false) */ enableSort?: boolean; }; diff --git a/apps/st/src/components/util/column/input/PublicSewageFactInpColumn/MainFacilityInpColumn.ts b/apps/st/src/components/util/column/input/PublicSewageFactInpColumn/MainFacilityInpColumn.ts index cd85731e6..c8a5e969e 100644 --- a/apps/st/src/components/util/column/input/PublicSewageFactInpColumn/MainFacilityInpColumn.ts +++ b/apps/st/src/components/util/column/input/PublicSewageFactInpColumn/MainFacilityInpColumn.ts @@ -4,10 +4,10 @@ export const MainFacilityColumn = { columns: [ { name: 'swtrmtFcltNm', fieldName: 'swtrmtFcltNm', header: { text: '시설명' }, editable: false }, { name: 'fcltPstnCn', fieldName: 'fcltPstnCn', header: { text: '소재지' }, editable: false }, - { name: 'prxyBzentyNmCn', fieldName: 'prxyBzentyNmCn', header: { text: '위탁업체명' }, editable: false }, + { name: 'prxyBzentyNmCn', fieldName: 'prxyBzentyNmCn', header: { text: '위탁업체명' } }, { name: 'cnsgnCstVl', fieldName: 'cnsgnCstVl', header: { text: '위탁비용(백만원/년)' }, editable: false }, { name: 'prxyCtrtCn', fieldName: 'prxyCtrtCn', header: { text: '위탁계약기간' }, editable: false }, - { name: 'wholNope', fieldName: 'wholNope', header: { text: '직원수(명)' }, editable: false }, + { name: 'wholNope', fieldName: 'wholNope', header: { text: '직원수(명)' } }, { name: 'isMainYn', fieldName: 'isMainYn', header: { text: '중심처리시설여부' }, editable: false }, { name: 'admdstCd', fieldName: 'admdstCd', header: { text: '행정구역코드' }, visible: false, editable: false, styleName: 'rg-cell-readonly' }, diff --git a/apps/st/src/entities/statistics/api/input/statistics-input-sew-supply-rate-service.ts b/apps/st/src/entities/statistics/api/input/statistics-input-sew-supply-rate-service.ts index 6adccc917..78dd39e9c 100644 --- a/apps/st/src/entities/statistics/api/input/statistics-input-sew-supply-rate-service.ts +++ b/apps/st/src/entities/statistics/api/input/statistics-input-sew-supply-rate-service.ts @@ -28,7 +28,7 @@ export class StatisticsInputSewSupplyRateApiService implements StatisticsInputSe } public async saveSewerageSupplyRate(params: SewerageSupplyRateSaveRequest): Promise { - const response = await stClient.post( + const response = await stClient.put( `${ENDPOINT.ST_SERVICE.INPUT}/sewerage-supply-rate/save`, params, ); @@ -36,7 +36,7 @@ export class StatisticsInputSewSupplyRateApiService implements StatisticsInputSe } public async submitSewerageSupplyRate(params: SewerageSupplyRateSaveRequest): Promise { - const response = await stClient.post( + const response = await stClient.put( `${ENDPOINT.ST_SERVICE.INPUT}/sewerage-supply-rate/submit`, params, ); diff --git a/apps/st/src/entities/statistics/api/input/statistics-public-sewage-facility-input-service.ts b/apps/st/src/entities/statistics/api/input/statistics-public-sewage-facility-input-service.ts index d77b875c3..29b766b06 100644 --- a/apps/st/src/entities/statistics/api/input/statistics-public-sewage-facility-input-service.ts +++ b/apps/st/src/entities/statistics/api/input/statistics-public-sewage-facility-input-service.ts @@ -8,6 +8,8 @@ import type { PublicSewageFacilitySaveResponse, PublicSewageFacilitySubmitRequest, PublicSewageFacilitySubmitResponse, + PublicSewageMainFacilityMappingSaveRequest, + PublicSewageMainFacilityMappingSaveResponse, PublicSewageMainFacilityResponse, PublicSewageMappingTargetsRequestParams, PublicSewageMappingTargetsResponse, @@ -41,10 +43,20 @@ export class StatisticsInputPublicSewageFacilityApiService implements Statistics return response.data; } + public async saveMainFacilityMapping( + param: PublicSewageMainFacilityMappingSaveRequest, + ): Promise { + const response = await stClient.put( + `${ENDPOINT.ST_SERVICE.INPUT}/public-sewage-facility/main-facility/save`, + param, + ); + return response.data; + } + public async savePublicSewageFacility( param: PublicSewageFacilitySaveRequest, ): Promise { - const response = await stClient.post( + const response = await stClient.put( `${ENDPOINT.ST_SERVICE.INPUT}/public-sewage-facility/facility/save`, param, ); @@ -54,7 +66,7 @@ export class StatisticsInputPublicSewageFacilityApiService implements Statistics public async submitPublicSewageFacility( param: PublicSewageFacilitySubmitRequest, ): Promise { - const response = await stClient.post( + const response = await stClient.put( `${ENDPOINT.ST_SERVICE.INPUT}/public-sewage-facility/facility/submit`, param, ); diff --git a/apps/st/src/entities/statistics/api/input/statistics-sewage-pipe-input-service.ts b/apps/st/src/entities/statistics/api/input/statistics-sewage-pipe-input-service.ts index 956abbd6b..24b271824 100644 --- a/apps/st/src/entities/statistics/api/input/statistics-sewage-pipe-input-service.ts +++ b/apps/st/src/entities/statistics/api/input/statistics-sewage-pipe-input-service.ts @@ -101,7 +101,7 @@ export class StatisticsInputSewPipeApiService implements StatisticsInputSewPipeS } public async saveFactConnection(param: SeweragePipeFactConnectionSaveRequest): Promise { - const response = await stClient.post( + const response = await stClient.put( `${ENDPOINT.ST_SERVICE.INPUT}/sewage-pipe/facility-connection-status/popup/save`, param, ); @@ -109,7 +109,7 @@ export class StatisticsInputSewPipeApiService implements StatisticsInputSewPipeS } public async saveRegionalFactStatus(param: SeweragePipeInputRegionalFactStatusSaveRequest): Promise { - const response = await stClient.post( + const response = await stClient.put( `${ENDPOINT.ST_SERVICE.INPUT}/sewage-pipe/regional-facility-status/save`, param, ); @@ -117,7 +117,7 @@ export class StatisticsInputSewPipeApiService implements StatisticsInputSewPipeS } public async submitRegionalFactStatus(param: SeweragePipeInputRegionalFactStatusSubmitRequest): Promise { - const response = await stClient.post( + const response = await stClient.put( `${ENDPOINT.ST_SERVICE.INPUT}/sewage-pipe/regional-facility-status/submit`, param, ); @@ -125,7 +125,7 @@ export class StatisticsInputSewPipeApiService implements StatisticsInputSewPipeS } public async saveFactInstallStatus(param: SeweragePipeInputFactInstallStatusSaveRequest): Promise { - const response = await stClient.post( + const response = await stClient.put( `${ENDPOINT.ST_SERVICE.INPUT}/sewage-pipe/facility-install-status/save`, param, ); @@ -133,7 +133,7 @@ export class StatisticsInputSewPipeApiService implements StatisticsInputSewPipeS } public async submitFactInstallStatus(param: SeweragePipeInputFactInstallStatusSubmitRequest): Promise { - const response = await stClient.post( + const response = await stClient.put( `${ENDPOINT.ST_SERVICE.INPUT}/sewage-pipe/facility-install-status/submit`, param, ); @@ -141,7 +141,7 @@ export class StatisticsInputSewPipeApiService implements StatisticsInputSewPipeS } public async savePipeTypeStatus(param: SeweragePipeInputPipeTypeStatusSaveRequest): Promise { - const response = await stClient.post( + const response = await stClient.put( `${ENDPOINT.ST_SERVICE.INPUT}/sewage-pipe/pipe-type-status/save`, param, ); @@ -149,7 +149,7 @@ export class StatisticsInputSewPipeApiService implements StatisticsInputSewPipeS } public async submitPipeTypeStatus(param: SeweragePipeInputPipeTypeStatusSubmitRequest): Promise { - const response = await stClient.post( + const response = await stClient.put( `${ENDPOINT.ST_SERVICE.INPUT}/sewage-pipe/pipe-type-status/submit`, param, ); @@ -157,7 +157,7 @@ export class StatisticsInputSewPipeApiService implements StatisticsInputSewPipeS } public async savePipeDiameterStatus(param: SeweragePipeInputPipeDiameterStatusSaveRequest): Promise { - const response = await stClient.post( + const response = await stClient.put( `${ENDPOINT.ST_SERVICE.INPUT}/sewage-pipe/pipe-diameter-status/save`, param, ); @@ -165,7 +165,7 @@ export class StatisticsInputSewPipeApiService implements StatisticsInputSewPipeS } public async submitPipeDiameterStatus(param: SeweragePipeInputPipeDiameterStatusSubmitRequest): Promise { - const response = await stClient.post( + const response = await stClient.put( `${ENDPOINT.ST_SERVICE.INPUT}/sewage-pipe/pipe-diameter-status/submit`, param, ); @@ -173,7 +173,7 @@ export class StatisticsInputSewPipeApiService implements StatisticsInputSewPipeS } public async saveManholeStatus(param: SeweragePipeInputManholeStatusSaveRequest): Promise { - const response = await stClient.post( + const response = await stClient.put( `${ENDPOINT.ST_SERVICE.INPUT}/sewage-pipe/manhole-status/save`, param, ); @@ -181,7 +181,7 @@ export class StatisticsInputSewPipeApiService implements StatisticsInputSewPipeS } public async submitManholeStatus(param: SeweragePipeInputManholeStatusSubmitRequest): Promise { - const response = await stClient.post( + const response = await stClient.put( `${ENDPOINT.ST_SERVICE.INPUT}/sewage-pipe/manhole-status/submit`, param, ); diff --git a/apps/st/src/entities/statistics/model/input/statistics-public-sewage-facility-input-interface.ts b/apps/st/src/entities/statistics/model/input/statistics-public-sewage-facility-input-interface.ts index 19c86e20c..edf3e74e3 100644 --- a/apps/st/src/entities/statistics/model/input/statistics-public-sewage-facility-input-interface.ts +++ b/apps/st/src/entities/statistics/model/input/statistics-public-sewage-facility-input-interface.ts @@ -167,6 +167,37 @@ export interface PublicSewageMappingTargetsResponse { data: PublicSewageMappingTargetItem[]; } +/** ST00060002 중심처리시설 매핑 저장 — saveList 항목 */ +export interface PublicSewageMainFacilityMappingSaveItem { + fcltSn: string; + admdstCd: string; + admdstNm: string; + swtrmtFcltCd: string; + swtrmtFcltNm: string; + isMainYn: string; +} + +/** ST00060002 중심처리시설 매핑 저장 API 요청 */ +export interface PublicSewageMainFacilityMappingSaveRequest { + statsYr: string; + sewerBzmnCd: string; + mainFcltSn: string; + mainFcltNm: string; + prxyBzentyNmCn: string; + cnsgnCstVl: number; + wholNope: number; + prxyCtrtCn: string; + userId: string; + saveList: PublicSewageMainFacilityMappingSaveItem[]; + deleteList: string[]; +} + +export interface PublicSewageMainFacilityMappingSaveResponse { + status: string; + message?: string; + data?: string; +} + /** ST00060001 공공하수처리시설 저장 — saveList 항목 */ export interface PublicSewageFacilitySaveItem { admdstCd: string; @@ -249,6 +280,7 @@ export interface StatisticsInputPublicSewageFacilityService { getPublicSewageFacility(param: PublicSewageFacilityRequestParams): Promise; getPublicSewageMainFacility(param: PublicSewageFacilityRequestParams): Promise; getMappingTargets(param: PublicSewageMappingTargetsRequestParams): Promise; + saveMainFacilityMapping(param: PublicSewageMainFacilityMappingSaveRequest): Promise; savePublicSewageFacility(param: PublicSewageFacilitySaveRequest): Promise; submitPublicSewageFacility(param: PublicSewageFacilitySubmitRequest): Promise; } diff --git a/apps/st/src/entities/statistics/model/statistics-sewage-pipe-mtc-review-interface.ts b/apps/st/src/entities/statistics/model/statistics-sewage-pipe-mtc-review-interface.ts index 330403c73..29202d9c8 100644 --- a/apps/st/src/entities/statistics/model/statistics-sewage-pipe-mtc-review-interface.ts +++ b/apps/st/src/entities/statistics/model/statistics-sewage-pipe-mtc-review-interface.ts @@ -32,7 +32,8 @@ export interface SewerPipeMtcItem { } export interface SewerPipeMtcResponseData { - mtcStatusList: SewerPipeMtcItem[]; + sewerPipeMtcList: SewerPipeMtcItem[]; + statsStatusInfo: StatsStatusInfo; } export interface SewerPipeMtcRequestParams { @@ -96,7 +97,8 @@ export interface SewerPipeDrdgItem { export interface SewerPipeDrdgResponseData { - drdgStatusList: SewerPipeDrdgItem[]; + sewerPipeDrdgList: SewerPipeDrdgItem[]; + statsStatusInfo: StatsStatusInfo; } @@ -104,4 +106,13 @@ export type SewerPipeDrdgApiResponse = ApiResponse; export interface SewagePipeMtcService { getSewerPipeMtcDrdgItem(params: SewerPipeMtcRequestParams): Promise; +} + +export interface StatsStatusInfo { + statsCd?: string; + submitStatusCd?: string; + prvnStatusCd?: string; + rjctOpnnCn?: string; + splmntOpnnCn?: string; + wrterOpnnCn?: string; } \ No newline at end of file diff --git a/apps/st/src/entities/statistics/model/statistics-sewage-pipe-review-interface.ts b/apps/st/src/entities/statistics/model/statistics-sewage-pipe-review-interface.ts index b059aa90c..6e81a41bc 100644 --- a/apps/st/src/entities/statistics/model/statistics-sewage-pipe-review-interface.ts +++ b/apps/st/src/entities/statistics/model/statistics-sewage-pipe-review-interface.ts @@ -63,7 +63,8 @@ export interface SewagePipeReviewrRegionalItem { } export interface SewagePipeReviewResponseData { - sewagePipeList: SewagePipeReviewrRegionalItem[]; + regionalStatusList: SewagePipeReviewrRegionalItem[]; + statsStatusInfo: StatsStatusInfo; } export interface SewagePipeReviewRequestParams { @@ -73,7 +74,7 @@ export interface SewagePipeReviewRequestParams { sewerBzmnCd?: string; } -export type SewagePipeReviewRegionalApiResponse = ApiResponse & { +export type SewagePipeReviewRegionalApiResponse = ApiResponse & { message: string; }; @@ -131,7 +132,12 @@ export interface SewagePipeReviewFacilityItem { } -export type SewagePipeFacilityApiResponse = ApiResponse & { +export interface SewagePipeFacilityResponseData { + facilityStatusList: SewagePipeReviewFacilityItem[]; + statsStatusInfo: StatsStatusInfo; +} + +export type SewagePipeFacilityApiResponse = ApiResponse & { message: string; }; @@ -165,10 +171,11 @@ export interface SewerPipeTypeItem { export interface SewerPipeTypeResponseData { - pipeTypeStatusList: SewerPipeTypeItem[]; + pipeTypeList: SewerPipeTypeItem[]; + statsStatusInfo: StatsStatusInfo; } -export type SewerPipeTypeApiResponse = ApiResponse; +export type SewerPipeTypeApiResponse = ApiResponse; export interface SewagePipeTypeService { @@ -225,9 +232,23 @@ export interface SewerPipeDiamItem { } -export type SewerPipeDiamApiResponse = ApiResponse; +export interface SewerPipeDiamResponseData { + pipeDiamList: SewerPipeDiamItem[]; + statsStatusInfo: StatsStatusInfo; +} + +export type SewerPipeDiamApiResponse = ApiResponse; export interface SewagePipeDiamService { getSewagePipeDiamList(params: SewagePipeReviewRequestParams): Promise; +} + +export interface StatsStatusInfo { + statsCd?: string; + submitStatusCd?: string; + prvnStatusCd?: string; + rjctOpnnCn?: string; + splmntOpnnCn?: string; + wrterOpnnCn?: string; } \ No newline at end of file