dc-service 접속

This commit is contained in:
ljpark
2025-07-04 17:30:50 +09:00
parent 59f035f98d
commit d02b17ba12
6 changed files with 48 additions and 10 deletions
+3 -2
View File
@@ -2,9 +2,10 @@ NEXT_PUBLIC_SITE_ID = SN
NEXT_PUBLIC_PORT = 3002
NEXT_PUBLIC_PROXY_HOST = http://localhost:3002
#NEXT_PUBLIC_PROXY_HOST = http://sn.hasu.or.kr:3002
NEXT_PUBLIC_SERVER_API_URL = http://dev.onasys.co.kr:8000
NEXT_PUBLIC_GEOSERVER_URL = http://rsone.iptime.org:10010/geoserver
NEXT_PUBLIC_SERVER_API_URL = http://dev.onasys.co.kr:8000
NEXT_PUBLIC_GEOSERVER_URL = http://rsone.iptime.org:10010/geoserver
NEXT_PUBLIC_LX_GEOSERVER_URL = http://con.mind-one.co.kr:11306/geoserver #TODO 운영에서 바꿔야 함
NEXT_PUBLIC_RSONE_DC_URL = https://apigateway.rsonesoft.com/dc-service #자료관 데이터
NEXT_PUBLIC_CLAIM_NAME = Authorization
NEXT_PUBLIC_AUTH_USER_ID = token-id
NEXT_PUBLIC_ACCESS_TOKEN = access-token
@@ -1,5 +1,5 @@
import {useState, useEffect} from 'react';
import { getData } from '@/components/lib/api';
import { getData, getDcData } from '@/components/lib/api';
import moment from "moment";
export type TInftwtAnls = {
@@ -64,6 +64,13 @@ export type TOilqData = {
mtrngDt: string; // 계측일시
oilq: number; // 유량
}
export const getDcTree = async () => {
const queryString = '';
const result = await getDcData(`/api/v1/dc/tree${queryString ? `?${queryString}` : ''}`);
return result;
};
const getOptionsAplcnYm = (yyyymms: string[]): { text: string; val: string }[] => {
let yyyymms1 = yyyymms.map(dateStr => {
const year = dateStr.slice(0, 4);
@@ -88,6 +95,7 @@ const selectAplcnYms = async(gubun:string) => { // 상수사용월
console.error(error);
}
};
export const useAplcnYms = (gubun:string) => {
const [data, setData] = useState<{ text: string; val: string }[]>([]);
@@ -124,7 +132,7 @@ export const selectInftwtAnls = async(aplcnYm:String) => { // 침입수분석
};
export const getChartDataInftwtAnlsRslt = (arr: TInftwtAnlsRslt[]): { label: string; val: number }[] => {
const options = arr.map(anlsRslt => ({
label: moment(anlsRslt.anlsTm, "YYYYMMDDHHmmss").format("DD HH:mm"),
label: moment(anlsRslt.anlsTm, "YYYYMMDDHHmmss").format("HH시"),
val: anlsRslt.predcOilq,
}));
return options;
@@ -223,14 +231,14 @@ export const selectRdiiAnls = async(aplcnYm:String) => { // 침입수분석
};
export const getChartDataRdiiAnlsRslt = (arr: TRdiiAnlsRslt[]): { label: string; val: number }[] => {
const options = arr.map(anlsRslt => ({
label: moment(anlsRslt.anlsTm, "YYYYMMDDHHmmss").format("DD HH:mm"),
label: moment(anlsRslt.anlsTm, "YYYYMMDDHHmmss").format("MM-DD HH시"),
val: anlsRslt.predcOilq,
}));
return options;
};
export const getChartDataRdiiAnlsRsltMinq = (arr: TRdiiAnlsRslt[]): { label: string; val: number }[] => {
const options = arr.map(anlsRslt => ({
label: moment(anlsRslt.anlsTm, "YYYYMMDDHHmmss").format("DD HH:mm"),
label: moment(anlsRslt.anlsTm, "YYYYMMDDHHmmss").format("MM-DD HH시"),
val: anlsRslt.minq,
}));
return options;
@@ -30,8 +30,8 @@ const InfilChart = ({ btnTxt, isModalOpen, setIsModalOpen, closeModal, pplMngNo
});
const [inftwtQty, setInftwtQty] = useState<number>(0); // 침입수량
const aplcnYms = fn.useAplcnYms('inftwtAnlsRslt'); // 상수사용월 데이터 가져오기
pplMngNo = "L"+pplMngNo; // "L13101003";
console.log("pplMngNo", pplMngNo);
const dcData = fn.getDcTree(); // 자료관 데이터 가져오기
pplMngNo = "L"+pplMngNo; // inp파일에 하수관로와 맨홀의 번호가 같으면 분석 오류가 발행하여
const openPopup = () => {
if (buttonRef.current) {
const rect = buttonRef.current.getBoundingClientRect(); // 버튼 위치 계산
@@ -51,7 +51,7 @@ const InfilChart = ({ btnTxt, isModalOpen, setIsModalOpen, closeModal, pplMngNo
useEffect(() => {
if (isModalOpen === false) {
setPopupOpen(false); // 모달이 닫힐 때 조회조건팝업은 열어두기
setPopupOpen(true); // 모달이 닫힐 때 조회조건팝업은 열어두기
setAplcnYm(""); // 상수사용월 초기화
setInftwtAnlss([]); // 침입수분석 초기화
setInftwtAnlsInfos([{ val: 0, text: '선택' }]); // 침입수분석정보 초기화
@@ -52,7 +52,7 @@ const RdiiChart = ({ btnTxt, isModalOpen, setIsModalOpen, closeModal, pplMngNo }
useEffect(() => {
if (isModalOpen === false) {
setPopupOpen(false); // 모달이 닫힐 때 팝업은
setPopupOpen(true); // 모달이 닫힐 때 팝업은
setAplcnYm(""); // 상수사용월 초기화
setRdiiAnlss([]); // 강우유입수분석 초기화
setRdiiAnlsInfos([{ val: 0, text: '선택' }]); // 강우유입수분석정보 초기화
+14
View File
@@ -1,4 +1,5 @@
const BASE_URL = process.env.NEXT_PUBLIC_SEWERAGE_API_URL || '';
const DC_URL = process.env.NEXT_PUBLIC_RSONE_DC_URL || '';
export const postData = async (url: string, data: object): Promise<any> => {
const options: RequestInit = {
@@ -54,6 +55,19 @@ export const getData = async (url: string, data?: object): Promise<any> => {
throw new Error('Failed to fetch data');
};
export const getDcData = async (url: string, data?: object): Promise<any> => {
console.log(url);
console.log(`${DC_URL}${url}`);
const res = await fetch(`${DC_URL}${url}`, {
method: "GET",
});
if (res.ok) {
const data = await res.json();
return data;
}
throw new Error('Failed to fetch data');
};
export const deleteData = async (url: string, data?: object): Promise<any> => {
const options: RequestInit = {
method: "DELETE",
+15
View File
@@ -1,4 +1,5 @@
import { NextRequest, NextResponse } from "next/server";
import path from "path";
const AUTH_USER_ID = process.env.NEXT_PUBLIC_AUTH_USER_ID || "token-id";
const CLAIM_NAME = process.env.NEXT_PUBLIC_CLAIM_NAME || "Authorization";
@@ -6,6 +7,7 @@ const SERVER_API_URL = process.env.NEXT_PUBLIC_SERVER_API_URL || "";
const SEWERAGE_API_URL = process.env.NEXT_PUBLIC_SEWERAGE_API_URL || "";
const GEOSERVER_URL = process.env.NEXT_PUBLIC_GEOSERVER_URL || "";
const LX_GEOSERVER_URL = process.env.NEXT_PUBLIC_LX_GEOSERVER_URL || "";
const RSONE_DC_URL = process.env.NEXT_PUBLIC_RSONE_DC_URL || "";
export function middleware(req: NextRequest) {
console.log("Middleware 진입:", req.nextUrl.pathname);
@@ -80,6 +82,17 @@ export function middleware(req: NextRequest) {
});
}
if (pathname.startsWith("/dc-service")) {
const requestHeaders = new Headers(req.headers);
const newUrl = `${RSONE_DC_URL}${pathname}`;
console.log(
`[Middleware] Rewriting from '/dc-service' path to: ${newUrl}`,
);
return NextResponse.rewrite(new URL(newUrl), {
headers: requestHeaders,
});
}
return NextResponse.next();
}
@@ -91,5 +104,7 @@ export const config = {
"/user-service/:path*",
"/cms-service/:path*",
"/sewerage-service/api/v1/map/geometry/:path*",
"/dc-service/:path*",
],
};