160 lines
5.5 KiB
TypeScript
160 lines
5.5 KiB
TypeScript
import { useInfiniteQuery, useQuery } from "@tanstack/react-query";
|
|
|
|
import { ENDPOINT } from "@/shared/config";
|
|
import { generalverificationApiService } from "@/entities/statistics/api/general-verification-service";
|
|
import { StatisticsInputStatusApi } from "@/entities/statistics/api/input/statistics-input-status-service";
|
|
import type { VerifyResultPageData } from "@/entities/statistics/model/general-verification-interface";
|
|
import type {
|
|
StatisticsVerificationFilterState,
|
|
StatisticsVerificationSubFilterState,
|
|
} from "@/entities/statistics/model/statistics-verification-report/statistics-verification-report-types";
|
|
|
|
import { stAnlsMstApi } from "./statistics-analysis-master-api";
|
|
import { stAnlsRsltApi } from "./statistics-analysis-result-api";
|
|
|
|
const DETAIL_PAGE_SIZE = 100;
|
|
|
|
interface StatisticsVerificationDetailSubmittedParams {
|
|
main: StatisticsVerificationFilterState;
|
|
sub: StatisticsVerificationSubFilterState;
|
|
}
|
|
|
|
export const useStAnlsSidoCombo = () => {
|
|
return useQuery({
|
|
queryKey: [ENDPOINT.STATVERIFY_SERVICE.ST_ANLS_MST, "sido"],
|
|
queryFn: () => stAnlsMstApi.getSidoCombo(),
|
|
});
|
|
};
|
|
|
|
export const useStAnlsSigunguCombo = (sidoCd: string) => {
|
|
return useQuery({
|
|
queryKey: [ENDPOINT.STATVERIFY_SERVICE.ST_ANLS_MST, "sigungu", sidoCd],
|
|
queryFn: () => stAnlsMstApi.getSigunguCombo(sidoCd),
|
|
enabled: Boolean(sidoCd),
|
|
});
|
|
};
|
|
|
|
export const useStAnlsRsltList = (
|
|
anlsSn: number,
|
|
vrfcTrgtSn: string | null,
|
|
) => {
|
|
return useQuery({
|
|
queryKey: [
|
|
ENDPOINT.STATVERIFY_SERVICE.ST_ANLS_RSLT,
|
|
"list",
|
|
anlsSn,
|
|
vrfcTrgtSn,
|
|
],
|
|
queryFn: () =>
|
|
stAnlsRsltApi.getResultList({
|
|
anlsSn,
|
|
vrfcTrgtSn: Number(vrfcTrgtSn),
|
|
page: 0,
|
|
size: 15000,
|
|
sort: "admdstCd,asc",
|
|
}),
|
|
enabled: !!anlsSn && !!vrfcTrgtSn,
|
|
});
|
|
};
|
|
|
|
export const useStAnlsChartData = (
|
|
anlsSn: number,
|
|
vrfcTrgtSn: string | null,
|
|
) => {
|
|
return useQuery({
|
|
queryKey: [
|
|
ENDPOINT.STATVERIFY_SERVICE.ST_ANLS_RSLT,
|
|
"chart",
|
|
anlsSn,
|
|
vrfcTrgtSn,
|
|
],
|
|
queryFn: () => stAnlsRsltApi.getChartData(anlsSn, Number(vrfcTrgtSn)),
|
|
enabled: !!anlsSn && !!vrfcTrgtSn,
|
|
});
|
|
};
|
|
|
|
export const useStatsVrfcRptData = (
|
|
submittedMainFilters: StatisticsVerificationFilterState | null,
|
|
) => {
|
|
return useQuery({
|
|
queryKey: [
|
|
ENDPOINT.ST_SERVICE.INPUT,
|
|
"statistics-input-status",
|
|
submittedMainFilters?.statsYr ?? "",
|
|
submittedMainFilters?.ctpvNm ?? "",
|
|
submittedMainFilters?.sggNm ?? "",
|
|
submittedMainFilters?.sewerBzmnCd ?? "",
|
|
submittedMainFilters?.statsCd ?? "",
|
|
],
|
|
queryFn: async () => {
|
|
if (!submittedMainFilters) return [];
|
|
const response =
|
|
await StatisticsInputStatusApi.getStatisticsInputStatusList(
|
|
submittedMainFilters,
|
|
);
|
|
if (response.status !== "success")
|
|
throw new Error(response.message);
|
|
return response.data ?? [];
|
|
},
|
|
enabled: Boolean(submittedMainFilters),
|
|
refetchOnWindowFocus: false,
|
|
});
|
|
};
|
|
|
|
export const useStatsVrfcRsltData = (
|
|
submittedDetailParams: StatisticsVerificationDetailSubmittedParams | null,
|
|
) => {
|
|
return useInfiniteQuery({
|
|
queryKey: [
|
|
ENDPOINT.ST_SERVICE.INPUTVERIFY,
|
|
"verify-results",
|
|
submittedDetailParams?.main.statsYr ?? "",
|
|
submittedDetailParams?.main.ctpvNm ?? "",
|
|
submittedDetailParams?.main.sggNm ?? "",
|
|
submittedDetailParams?.main.sewerBzmnCd ?? "",
|
|
submittedDetailParams?.main.statsCd ?? "",
|
|
submittedDetailParams?.sub.prcsYnList ?? "",
|
|
submittedDetailParams?.sub.pbcpAprvYn ?? "",
|
|
],
|
|
initialPageParam: 1,
|
|
queryFn: async ({ pageParam }) => {
|
|
if (!submittedDetailParams)
|
|
return {
|
|
verifyResultList: [],
|
|
pageInfo: {
|
|
currentPage: 0,
|
|
size: DETAIL_PAGE_SIZE,
|
|
totalElements: 0,
|
|
totalPages: 0,
|
|
},
|
|
} satisfies VerifyResultPageData;
|
|
|
|
const response =
|
|
await generalverificationApiService.getVerifyResultList({
|
|
page: pageParam,
|
|
size: DETAIL_PAGE_SIZE,
|
|
searchDto: {
|
|
statsYr: submittedDetailParams.main.statsYr,
|
|
ctpvNm: submittedDetailParams.main.ctpvNm,
|
|
sggNm: submittedDetailParams.main.sggNm,
|
|
sewerBzmnCd: submittedDetailParams.main.sewerBzmnCd,
|
|
statsCd: submittedDetailParams.main.statsCd,
|
|
prcsYnList: submittedDetailParams.sub.prcsYnList,
|
|
pbcpAprvYn: submittedDetailParams.sub.pbcpAprvYn,
|
|
},
|
|
});
|
|
|
|
if (response.status !== "success")
|
|
throw new Error(response.message);
|
|
return response.data;
|
|
},
|
|
getNextPageParam: (lastPage) => {
|
|
const { currentPage, totalPages } = lastPage.pageInfo;
|
|
if (currentPage + 1 <= totalPages) return currentPage + 1;
|
|
return undefined;
|
|
},
|
|
enabled: Boolean(submittedDetailParams),
|
|
refetchOnWindowFocus: false,
|
|
});
|
|
};
|