-
+
감축된 행정구역(범위:동읍면) 자료
-
+
{
- 행정인구현황 구현 예정
+ {/* 그리드 라벨 */}
+
+
+ 행정 인구 현황
+
+
+
+
+
+ {/* ── 행정인구현황 시각화 탭 ── */}
- 행정인구현황 시각화 구현 예정
+
+ 행정인구현황 시각화 (기준연도 ~ 과거 자료(최대 5년) / *단위: 명)
+
+
+
diff --git a/apps/st/src/components/util/column/management/PopulationStatusColumn.ts b/apps/st/src/components/util/column/management/PopulationStatusColumn.ts
new file mode 100644
index 000000000..3ea57358e
--- /dev/null
+++ b/apps/st/src/components/util/column/management/PopulationStatusColumn.ts
@@ -0,0 +1,121 @@
+import { ValueType } from "realgrid";
+import type { ColumnInfoList } from "@/components/type/DataGrid.type";
+
+/* ══════════════════════════════════════════════════
+ 16. 통계인구관리 > 행정인구현황 탭 컬럼 설정
+══════════════════════════════════════════════════ */
+
+export const PopulationStatusColumnConfig: ColumnInfoList = {
+ tabKey: "POPULATION_STATUS",
+ tabLabel: "행정 인구 현황",
+ rowStartNum: 1,
+ fixedColumns: 3,
+ columns: [
+ {
+ name: "statsYr",
+ fieldName: "statsYr",
+ header: { text: "년도" },
+ width: 90,
+ editable: false,
+ styleName: "rg-cell-readonly",
+ },
+ {
+ name: "admdstCd",
+ fieldName: "admdstCd",
+ header: { text: "행정구역코드" },
+ width: 140,
+ editable: false,
+ styleName: "rg-cell-readonly",
+ },
+ {
+ name: "admdstNm",
+ fieldName: "admdstNm",
+ header: { text: "행정구역명" },
+ width: 200,
+ editable: false,
+ styleName: "rg-cell-readonly",
+ },
+ {
+ name: "wholPpltnCnt",
+ fieldName: "wholPpltnCnt",
+ header: { text: "총인구" },
+ width: 110,
+ valueType: ValueType.NUMBER,
+ dataFormat: "#,##0",
+ editable: false,
+ styleName: "rg-cell-readonly",
+ },
+ {
+ name: "domplWholPpltnCnt",
+ fieldName: "domplWholPpltnCnt",
+ header: { text: "내국인 소계" },
+ width: 110,
+ valueType: ValueType.NUMBER,
+ dataFormat: "#,##0",
+ editable: false,
+ styleName: "rg-cell-readonly",
+ },
+ {
+ name: "domplMlPpltnCnt",
+ fieldName: "domplMlPpltnCnt",
+ header: { text: "내국인 남성" },
+ width: 110,
+ valueType: ValueType.NUMBER,
+ dataFormat: "#,##0",
+ editable: false,
+ styleName: "rg-cell-readonly",
+ },
+ {
+ name: "domplFmlPpltnCnt",
+ fieldName: "domplFmlPpltnCnt",
+ header: { text: "내국인 여성" },
+ width: 110,
+ valueType: ValueType.NUMBER,
+ dataFormat: "#,##0",
+ editable: false,
+ styleName: "rg-cell-readonly",
+ },
+ {
+ name: "frgnrWholPpltnCnt",
+ fieldName: "frgnrWholPpltnCnt",
+ header: { text: "외국인 소계" },
+ width: 110,
+ valueType: ValueType.NUMBER,
+ dataFormat: "#,##0",
+ editable: false,
+ styleName: "rg-cell-readonly",
+ },
+ {
+ name: "frgnrMlPpltnCnt",
+ fieldName: "frgnrMlPpltnCnt",
+ header: { text: "외국인 남성" },
+ width: 110,
+ valueType: ValueType.NUMBER,
+ dataFormat: "#,##0",
+ editable: false,
+ styleName: "rg-cell-readonly",
+ },
+ {
+ name: "frgnrFmlPpltnCnt",
+ fieldName: "frgnrFmlPpltnCnt",
+ header: { text: "외국인 여성" },
+ width: 110,
+ valueType: ValueType.NUMBER,
+ dataFormat: "#,##0",
+ editable: false,
+ styleName: "rg-cell-readonly",
+ },
+ ],
+ columnLayout: [
+ "statsYr",
+ "admdstCd",
+ "admdstNm",
+ "wholPpltnCnt",
+ "domplWholPpltnCnt",
+ "domplMlPpltnCnt",
+ "domplFmlPpltnCnt",
+ "frgnrWholPpltnCnt",
+ "frgnrMlPpltnCnt",
+ "frgnrFmlPpltnCnt",
+ ],
+};
\ No newline at end of file
diff --git a/apps/st/src/entities/statistics/api/statistics-ppltn-service.ts b/apps/st/src/entities/statistics/api/statistics-ppltn-service.ts
index b4eb5a0aa..c4fbec777 100644
--- a/apps/st/src/entities/statistics/api/statistics-ppltn-service.ts
+++ b/apps/st/src/entities/statistics/api/statistics-ppltn-service.ts
@@ -8,6 +8,20 @@ import type {
DomesticPopulationMappingItem,
} from "../model/ppltn/statistics-domestic-population-interface";
+// 1. 응답 데이터의 타입을 정의합니다 (이미 정의된 것이 있다면 그것을 사용하세요)
+interface ChartDataResponse {
+ status: string;
+ data: {
+ X_AXIS: string[];
+ TOT: number[];
+ ORIGIN_MALE: (number | null)[];
+ ORIGIN_FEMALE: (number | null)[];
+ FOREIGN_MALE: (number | null)[];
+ FOREIGN_FEMALE: (number | null)[];
+ };
+ message?: string;
+}
+
export class StatisticsPpltnApiService {
/** 내국인 엑셀 임시 업로드 */
@@ -154,6 +168,52 @@ export class StatisticsPpltnApiService {
);
return response.data;
}
+
+ /* ════════════════════════════════════
+ 행정인구현황
+ ════════════════════════════════════ */
+
+ /** 행정인구현황 — 체크박스 조건에 따른 인구 현황 조회 */
+ public async searchPopByEachCondition(
+ statsYr: string,
+ oMale: boolean,
+ oFemale: boolean,
+ fMale: boolean,
+ fFemale: boolean,
+ ): Promise<{ status: string; data: object[]; message?: string }> {
+ const response = await stClient.post<{ status: string; data: object[]; message?: string }>(
+ `${ENDPOINT.ST_SERVICE.PPLTN}/admdst-renewal/pop-by-condition`,
+ {
+ statsYr,
+ oMale: oMale ? "TRUE" : "FALSE",
+ oFemale: oFemale ? "TRUE" : "FALSE",
+ fMale: fMale ? "TRUE" : "FALSE",
+ fFemale: fFemale ? "TRUE" : "FALSE",
+ },
+ );
+ return response.data;
+ }
+
+/** 행정인구현황 시각화 — 기준연도 기준 최대 5년치 차트 데이터 조회 */
+ public async getChartDatas1(
+ statsYr: string,
+ oMale: boolean,
+ oFemale: boolean,
+ fMale: boolean,
+ fFemale: boolean,
+ ): Promise
{
+ const response = await stClient.post(
+ `${ENDPOINT.ST_SERVICE.PPLTN}/admdst-renewal/chart-datas`,
+ {
+ statsYr,
+ oMale: oMale ? "TRUE" : "FALSE",
+ oFemale: oFemale ? "TRUE" : "FALSE",
+ fMale: fMale ? "TRUE" : "FALSE",
+ fFemale: fFemale ? "TRUE" : "FALSE",
+ },
+ );
+ return response.data;
+ }
}