[st] feat: 시도/시군구 조회 쿼리 변경
This commit is contained in:
@@ -23,9 +23,9 @@ import {
|
||||
import dayjs from "dayjs";
|
||||
|
||||
import { ENDPOINT } from "@/shared/config";
|
||||
import { useUserStore } from "@/shared/lib";
|
||||
import { CodeSelect } from "@/entities/code";
|
||||
import {
|
||||
type AdstZoneResponseDto,
|
||||
IMR_DETAIL_VISIBLE_COLUMNS_BY_STATS_CD,
|
||||
IMR_DETAIL_VISIBLE_COLUMNS_DEFAULT,
|
||||
imrApi,
|
||||
@@ -36,8 +36,8 @@ import {
|
||||
stAnlsRsltApi,
|
||||
type StAnlsRsltResponse,
|
||||
statisticsAnalysisMasterService,
|
||||
useStAnlsSidoCombo,
|
||||
useStAnlsSigunguCombo,
|
||||
useSggList,
|
||||
useSidoList,
|
||||
} from "@/entities/statistics";
|
||||
import {
|
||||
Button,
|
||||
@@ -54,6 +54,7 @@ import {
|
||||
|
||||
import DataGrid from "@/components/module/DataGrid";
|
||||
import type { ColumnInfo } from "@/components/type/DataGrid.type";
|
||||
import { doList } from "@/components/util/column/input/DoList";
|
||||
|
||||
ChartJS.register(
|
||||
CategoryScale,
|
||||
@@ -71,7 +72,6 @@ type DateRangeValue = {
|
||||
};
|
||||
|
||||
const EMPTY_DATA: never[] = [];
|
||||
const EMPTY_ADST_LIST: AdstZoneResponseDto[] = [];
|
||||
|
||||
function getImrDetailGridColumnInfo(statsCd: string): ColumnInfo {
|
||||
const visible =
|
||||
@@ -139,10 +139,17 @@ const ImrVerificationHistory = () => {
|
||||
pageSize: 5,
|
||||
});
|
||||
|
||||
const { data: sidoData } = useStAnlsSidoCombo();
|
||||
const { data: sigunguData } = useStAnlsSigunguCombo(searchSido);
|
||||
const sidoOptions = sidoData ?? EMPTY_ADST_LIST;
|
||||
const sigunguOptions = sigunguData ?? EMPTY_ADST_LIST;
|
||||
const userInfo = useUserStore((state) => state.userInfo);
|
||||
const userInstSeCd = userInfo?.instSeCd;
|
||||
const { data: sidoData } = useSidoList({ instSeCd: userInstSeCd });
|
||||
const sidoOptions = sidoData?.sidoList ?? [];
|
||||
const selectedSidoBsnmCd =
|
||||
sidoOptions.find((item) => item.sido === searchSido)?.bsnmCd ?? "";
|
||||
const { data: sigunguData } = useSggList(searchSido, {
|
||||
instSeCd: userInstSeCd,
|
||||
gugunSkipYn: doList.includes(selectedSidoBsnmCd) ? "N" : "Y",
|
||||
});
|
||||
const sigunguOptions = sigunguData ?? [];
|
||||
|
||||
const imrDetailColumnInfo = useMemo(
|
||||
() => getImrDetailGridColumnInfo(selectedHistory?.statsCd ?? ""),
|
||||
@@ -241,9 +248,15 @@ const ImrVerificationHistory = () => {
|
||||
vrfcMthdCd: "IMR",
|
||||
sort: "anlsSn,desc",
|
||||
};
|
||||
if (searchSido !== "")
|
||||
if (searchSido !== "") {
|
||||
const selectedSggBsnmCd = sigunguOptions.find(
|
||||
(item) => item.gugun === searchSigungu,
|
||||
)?.bsnmCd;
|
||||
params.sewerBzmnCd =
|
||||
searchSigungu !== "" ? searchSigungu : searchSido;
|
||||
searchSigungu !== ""
|
||||
? (selectedSggBsnmCd ?? "")
|
||||
: selectedSidoBsnmCd;
|
||||
}
|
||||
if (searchStatsYr) params.statsYr = searchStatsYr;
|
||||
if (searchStatsCd) params.statsCd = searchStatsCd;
|
||||
if (dateRange?.from)
|
||||
@@ -406,10 +419,10 @@ const ImrVerificationHistory = () => {
|
||||
<SelectContent>
|
||||
{sidoOptions.map((opt) => (
|
||||
<SelectItem
|
||||
key={opt.adstCd}
|
||||
value={opt.adstCd}
|
||||
key={opt.adstDstrCd}
|
||||
value={opt.sido}
|
||||
>
|
||||
{opt.adstNm}
|
||||
{opt.sido}
|
||||
</SelectItem>
|
||||
))}
|
||||
</SelectContent>
|
||||
@@ -431,10 +444,10 @@ const ImrVerificationHistory = () => {
|
||||
<SelectContent>
|
||||
{sigunguOptions.map((opt) => (
|
||||
<SelectItem
|
||||
key={opt.adstCd}
|
||||
value={opt.adstCd}
|
||||
key={opt.adstDstrCd}
|
||||
value={opt.gugun}
|
||||
>
|
||||
{opt.adstNm}
|
||||
{opt.gugun}
|
||||
</SelectItem>
|
||||
))}
|
||||
</SelectContent>
|
||||
|
||||
@@ -20,8 +20,8 @@ import {
|
||||
statisticsVerificationResultColumnInfo,
|
||||
type StatisticsVerificationSubFilterState,
|
||||
type StatsInputStatusList,
|
||||
useStAnlsSidoCombo,
|
||||
useStAnlsSigunguCombo,
|
||||
useSggList,
|
||||
useSidoList,
|
||||
useStatsVrfcRptData,
|
||||
useStatsVrfcRsltData,
|
||||
type VerifyResultItem,
|
||||
@@ -53,6 +53,7 @@ import {
|
||||
ApprovalInputDialog,
|
||||
} from "@/components/statistics/verification/ApprovalInputDialog";
|
||||
import type { CellEditedCallbackParams } from "@/components/type/DataGrid.type";
|
||||
import { doList } from "@/components/util/column/input/DoList";
|
||||
import { toGridRows } from "@/components/util/grid/gridFunction";
|
||||
|
||||
const getYearOptions = () => {
|
||||
@@ -175,10 +176,15 @@ function StatisticsVerificationReport() {
|
||||
const prevLengthRef = useRef(0);
|
||||
const rejectedVrfcSnRef = useRef<Set<number>>(new Set());
|
||||
|
||||
const { data: sidoData } = useStAnlsSidoCombo();
|
||||
const { data: sigunguData } = useStAnlsSigunguCombo(
|
||||
filters.sewerBzmnCd ?? "",
|
||||
);
|
||||
const userInstSeCd = userInfo?.instSeCd;
|
||||
const { data: sidoData } = useSidoList({ instSeCd: userInstSeCd });
|
||||
const sidoList = sidoData?.sidoList ?? [];
|
||||
const selectedSidoBsnmCd = filters.ctpvSewerBzmnCd ?? "";
|
||||
const { data: sigunguData } = useSggList(filters.ctpvNm ?? "", {
|
||||
instSeCd: userInstSeCd,
|
||||
gugunSkipYn: doList.includes(selectedSidoBsnmCd) ? "N" : "Y",
|
||||
});
|
||||
|
||||
const detailParams = useMemo(
|
||||
() => ({
|
||||
statsYr: filters.statsYr,
|
||||
@@ -577,12 +583,10 @@ function StatisticsVerificationReport() {
|
||||
label="시도"
|
||||
value={filters.ctpvSewerBzmnCd ?? ""}
|
||||
onChange={handleFilterChange("ctpvNm")}
|
||||
options={
|
||||
sidoData?.map((item) => ({
|
||||
label: item.adstNm,
|
||||
value: item.adstCd,
|
||||
})) ?? []
|
||||
}
|
||||
options={sidoList.map((item) => ({
|
||||
label: item.sido,
|
||||
value: item.bsnmCd,
|
||||
}))}
|
||||
/>
|
||||
<FilterSelect
|
||||
label="시군구"
|
||||
@@ -590,8 +594,8 @@ function StatisticsVerificationReport() {
|
||||
onChange={handleFilterChange("sggNm")}
|
||||
options={
|
||||
sigunguData?.map((item) => ({
|
||||
label: item.adstNm,
|
||||
value: item.adstCd,
|
||||
label: item.gugun,
|
||||
value: item.bsnmCd,
|
||||
})) ?? []
|
||||
}
|
||||
/>
|
||||
|
||||
@@ -4,6 +4,7 @@ import { ENDPOINT } from "@/shared/config";
|
||||
|
||||
import type { VerifyResultPageData } from "../model/general-verification-interface";
|
||||
import type { SewerStUserSearchParams } from "../model/sewer-st-user-interface";
|
||||
import type { SearchCondition } from "../model/statistics-interface";
|
||||
import type {
|
||||
StatisticsVerificationFilterState,
|
||||
StatisticsVerificationSubFilterState,
|
||||
@@ -14,9 +15,53 @@ import { generalverificationApiService } from "./general-verification-service";
|
||||
import { sewerStUserApi } from "./sewer-st-user-service";
|
||||
import { statisticsAnalysisMasterService } from "./statistics-analysis-master-service";
|
||||
import { stAnlsRsltApi } from "./statistics-analysis-result-api";
|
||||
import { statisticsApi } from "./statistics-service";
|
||||
|
||||
const DETAIL_PAGE_SIZE = 100;
|
||||
|
||||
const EMPTY_SEARCH_CONDITION: SearchCondition = {
|
||||
yearList: [],
|
||||
sidoList: [],
|
||||
};
|
||||
|
||||
export function useSidoList(params?: { instSeCd?: string }) {
|
||||
return useQuery({
|
||||
queryKey: [
|
||||
ENDPOINT.ST_SERVICE.COMMON,
|
||||
"search-condition",
|
||||
params?.instSeCd ?? "",
|
||||
],
|
||||
queryFn: async () => {
|
||||
const response = await statisticsApi.getSidoList(params);
|
||||
if (response.status !== "success")
|
||||
throw new Error(response.message);
|
||||
return response.data ?? EMPTY_SEARCH_CONDITION;
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
export function useSggList(
|
||||
sidoName: string,
|
||||
params?: { instSeCd?: string; gugunSkipYn?: "Y" | "N" },
|
||||
) {
|
||||
return useQuery({
|
||||
queryKey: [
|
||||
ENDPOINT.ST_SERVICE.COMMON,
|
||||
"sgg",
|
||||
sidoName,
|
||||
params?.instSeCd ?? "",
|
||||
params?.gugunSkipYn ?? "",
|
||||
],
|
||||
queryFn: async () => {
|
||||
const response = await statisticsApi.getSggList(sidoName, params);
|
||||
if (response.status !== "success")
|
||||
throw new Error(response.message);
|
||||
return response.data ?? [];
|
||||
},
|
||||
enabled: Boolean(sidoName) && sidoName !== "ALL",
|
||||
});
|
||||
}
|
||||
|
||||
export const useStAnlsSidoCombo = () => {
|
||||
return useQuery({
|
||||
queryKey: [ENDPOINT.STATVERIFY_SERVICE.ST_ANLS_MST, "sido"],
|
||||
|
||||
@@ -17,6 +17,8 @@ export {
|
||||
} from "./api/notice-talk/queries";
|
||||
export {
|
||||
useSewerStUserList,
|
||||
useSggList,
|
||||
useSidoList,
|
||||
useStAnlsSidoCombo,
|
||||
useStAnlsSigunguCombo,
|
||||
useStatsVrfcRptData,
|
||||
@@ -74,12 +76,6 @@ export {
|
||||
type ImrLogResponse,
|
||||
} from "./model/imr/imr-interface";
|
||||
export { imrVerificationHistoryColumns } from "./model/imr/imr-verification-history-columns";
|
||||
export {
|
||||
type StatsInputStatusApproveBatchRequest,
|
||||
type StatsInputStatusApproveItem,
|
||||
type StatsInputStatusApproveKind,
|
||||
type StatsInputStatusApproveResponse,
|
||||
} from "./model/statistics-interface";
|
||||
export { type StatsInputStatusList } from "./model/input/statistics-input-status-interface";
|
||||
export { userListColumns } from "./model/notice-talk/notice-talk-sending-columns";
|
||||
export {
|
||||
@@ -130,6 +126,12 @@ export {
|
||||
type ApproveRequest,
|
||||
type RejectRequest,
|
||||
} from "./model/statistics-approval-interface";
|
||||
export {
|
||||
type StatsInputStatusApproveBatchRequest,
|
||||
type StatsInputStatusApproveItem,
|
||||
type StatsInputStatusApproveKind,
|
||||
type StatsInputStatusApproveResponse,
|
||||
} from "./model/statistics-interface";
|
||||
export {
|
||||
statisticsVerificationReportColumnInfo,
|
||||
statisticsVerificationResultColumnInfo,
|
||||
|
||||
Reference in New Issue
Block a user