ERP-node/frontend/lib/api/numberingRule.ts

172 lines
5.1 KiB
TypeScript
Raw Normal View History

2025-11-04 13:58:21 +09:00
/**
* API
*/
import { apiClient } from "./client";
import { NumberingRuleConfig } from "@/types/numbering-rule";
export interface ApiResponse<T> {
success: boolean;
data?: T;
error?: string;
message?: string;
}
export async function getNumberingRules(): Promise<ApiResponse<NumberingRuleConfig[]>> {
try {
const response = await apiClient.get("/numbering-rules");
return response.data;
} catch (error: any) {
return { success: false, error: error.message || "규칙 목록 조회 실패" };
}
}
2025-11-04 17:35:02 +09:00
/**
* ( , )
2025-11-04 17:35:02 +09:00
* @param menuObjid objid ()
* @returns
*/
export async function getAvailableNumberingRules(
menuObjid?: number
): Promise<ApiResponse<NumberingRuleConfig[]>> {
try {
const url = menuObjid
? `/numbering-rules/available/${menuObjid}`
: "/numbering-rules/available";
const response = await apiClient.get(url);
return response.data;
} catch (error: any) {
return { success: false, error: error.message || "사용 가능한 규칙 조회 실패" };
}
}
/**
* ( - )
* @param tableName ()
* @returns
*/
export async function getAvailableNumberingRulesForScreen(
tableName: string
): Promise<ApiResponse<NumberingRuleConfig[]>> {
try {
const response = await apiClient.get("/numbering-rules/available-for-screen", {
params: { tableName },
});
return response.data;
} catch (error: any) {
return {
success: false,
error: error.message || "화면용 규칙 조회 실패",
};
}
}
2025-11-04 13:58:21 +09:00
export async function getNumberingRuleById(ruleId: string): Promise<ApiResponse<NumberingRuleConfig>> {
try {
const response = await apiClient.get(`/numbering-rules/${ruleId}`);
return response.data;
} catch (error: any) {
return { success: false, error: error.message || "규칙 조회 실패" };
}
}
export async function createNumberingRule(
config: NumberingRuleConfig
): Promise<ApiResponse<NumberingRuleConfig>> {
try {
const response = await apiClient.post("/numbering-rules", config);
return response.data;
} catch (error: any) {
return { success: false, error: error.message || "규칙 생성 실패" };
}
}
export async function updateNumberingRule(
ruleId: string,
config: Partial<NumberingRuleConfig>
): Promise<ApiResponse<NumberingRuleConfig>> {
try {
const response = await apiClient.put(`/numbering-rules/${ruleId}`, config);
return response.data;
} catch (error: any) {
return { success: false, error: error.message || "규칙 수정 실패" };
}
}
export async function deleteNumberingRule(ruleId: string): Promise<ApiResponse<void>> {
try {
const response = await apiClient.delete(`/numbering-rules/${ruleId}`);
return response.data;
} catch (error: any) {
return { success: false, error: error.message || "규칙 삭제 실패" };
}
}
2025-11-04 17:35:02 +09:00
/**
* ( )
*
*/
export async function previewNumberingCode(
ruleId: string
): Promise<ApiResponse<{ generatedCode: string }>> {
// ruleId 유효성 검사
if (!ruleId || ruleId === "undefined" || ruleId === "null") {
return { success: false, error: "채번 규칙 ID가 설정되지 않았습니다" };
}
2025-11-04 17:35:02 +09:00
try {
const response = await apiClient.post(`/numbering-rules/${ruleId}/preview`);
if (!response.data) {
return { success: false, error: "서버 응답이 비어있습니다" };
}
2025-11-04 17:35:02 +09:00
return response.data;
} catch (error: any) {
const errorMessage =
error.response?.data?.error ||
error.response?.data?.message ||
error.message ||
"코드 미리보기 실패";
return { success: false, error: errorMessage };
2025-11-04 17:35:02 +09:00
}
}
/**
* ( )
*
*/
export async function allocateNumberingCode(
ruleId: string
): Promise<ApiResponse<{ generatedCode: string }>> {
2025-11-04 13:58:21 +09:00
try {
2025-11-04 17:35:02 +09:00
const response = await apiClient.post(`/numbering-rules/${ruleId}/allocate`);
2025-11-04 13:58:21 +09:00
return response.data;
} catch (error: any) {
2025-11-04 17:35:02 +09:00
return { success: false, error: error.message || "코드 할당 실패" };
2025-11-04 13:58:21 +09:00
}
}
2025-11-04 17:35:02 +09:00
/**
* @deprecated generateNumberingCode는 previewNumberingCode를
*/
export async function generateNumberingCode(
ruleId: string
): Promise<ApiResponse<{ generatedCode: string }>> {
console.warn("generateNumberingCode는 deprecated. previewNumberingCode 사용 권장");
return previewNumberingCode(ruleId);
}
// 하위 호환성을 위한 별칭
export const generateCode = generateNumberingCode;
2025-11-04 13:58:21 +09:00
export async function resetSequence(ruleId: string): Promise<ApiResponse<void>> {
try {
const response = await apiClient.post(`/numbering-rules/${ruleId}/reset`);
return response.data;
} catch (error: any) {
return { success: false, error: error.message || "시퀀스 초기화 실패" };
}
}
2025-11-04 17:35:02 +09:00
2025-11-06 18:10:21 +09:00