summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjoonhoekim <26rote@gmail.com>2025-07-08 11:27:11 +0000
committerjoonhoekim <26rote@gmail.com>2025-07-08 11:27:11 +0000
commitd23e59b405b0be567592ce967793356d1b11d559 (patch)
treef55c3a799ecf9f7adfb0ff23d75a2d69ff9281fd
parent92f8184de161de55d52f68e58d6dbc24fd3819a9 (diff)
(김준회) 벤더 신용평가 조회 화면 fix
-rw-r--r--app/[lng]/evcp/(evcp)/vendors/[id]/info/credit/page.tsx10
-rw-r--r--lib/oracle-db/nonsap/services/creditService.ts17
-rw-r--r--lib/vendors/repository.ts6
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