diff options
| -rw-r--r-- | app/[lng]/evcp/(evcp)/vendors/[id]/info/credit/page.tsx | 10 | ||||
| -rw-r--r-- | lib/oracle-db/nonsap/services/creditService.ts | 17 | ||||
| -rw-r--r-- | lib/vendors/repository.ts | 6 |
3 files changed, 21 insertions, 12 deletions
diff --git a/app/[lng]/evcp/(evcp)/vendors/[id]/info/credit/page.tsx b/app/[lng]/evcp/(evcp)/vendors/[id]/info/credit/page.tsx index e90969b5..c6d6e2aa 100644 --- a/app/[lng]/evcp/(evcp)/vendors/[id]/info/credit/page.tsx +++ b/app/[lng]/evcp/(evcp)/vendors/[id]/info/credit/page.tsx @@ -129,12 +129,12 @@ export default function CreditInfoPage() { const [error, setError] = useState<string | null>(null); // 데이터 로딩 함수 - const loadCreditData = async (reno: string, creditGb: string) => { + const loadCreditData = async (vendorId: string, creditGb: string) => { setLoading(true); setError(null); try { - const result = await getCreditInfo(reno, creditGb); + const result = await getCreditInfo(vendorId, creditGb); if (result && result.length > 0) { setCreditData(result[0]); } else { @@ -200,6 +200,12 @@ export default function CreditInfoPage() { </div> )} + {!loading && !error && !creditData && ( + <div className="bg-muted/50 border border-muted rounded-md p-8 text-center"> + <p className="text-muted-foreground font-medium">신용평가 정보가 없습니다</p> + </div> + )} + {creditData && ( <div className="space-y-6"> {/* 매출순위, 매입순위, 지분관계 */} diff --git a/lib/oracle-db/nonsap/services/creditService.ts b/lib/oracle-db/nonsap/services/creditService.ts index 60e4f287..0b83e192 100644 --- a/lib/oracle-db/nonsap/services/creditService.ts +++ b/lib/oracle-db/nonsap/services/creditService.ts @@ -4,6 +4,7 @@ import { oracleKnex, getOracleConnection } from "@/lib/oracle-db/db"; import { readFileSync } from "fs"; import { join } from "path"; import creditServiceMapping from "./creditServiceMapping.json"; +import { getTaxIdByVendorId } from "@/lib/vendors/repository"; // SQL 파일 읽기 const getCreditQuerySQL = () => { @@ -31,23 +32,19 @@ const convertCreditGbToCode = (creditGb: string): string => { // 방법 1: knex.raw() 사용 (네임드 바인드 변수) // reno: 사업자번호, credit_gb: 신용평가사 코드 -export const getCreditInfo = async (reno: string, credit_gb: string) => { +export const getCreditInfo = async (id: string, credit_gb: string) => { const query = getCreditQuerySQL(); - const creditGbCode = convertCreditGbToCode(credit_gb); + const bindParameters = { + reno: await getTaxIdByVendorId(id), + credit_gb: convertCreditGbToCode(credit_gb) + } - const result = await oracleKnex.raw(query, { - reno: reno, - credit_gb: creditGbCode - }); + const result = await oracleKnex.raw(query, bindParameters); // Oracle knex raw 결과에서 실제 rows 추출 const rows = Array.isArray(result) ? result : result.rows || []; return rows; - - // UI 테스트용 목업 데이터 (필요시 주석 해제) - // const mockData = getMockCreditData(reno, credit_gb); - // return [mockData]; }; // 방법 2: oracledb 직접 사용 (네임드 바인드 변수) diff --git a/lib/vendors/repository.ts b/lib/vendors/repository.ts index 41ac468b..c5362ccf 100644 --- a/lib/vendors/repository.ts +++ b/lib/vendors/repository.ts @@ -355,3 +355,9 @@ export async function countRfqHistory( return count; } +export const getTaxIdByVendorId = async (id: string): Promise<string | null> => { + const numericId = Number(id); + const vendor = await getVendorById(numericId); + if (!vendor) return null; + return vendor.taxId; +}
\ No newline at end of file |
