diff options
| author | dujinkim <dujin.kim@dtsolution.co.kr> | 2025-08-11 00:19:38 +0000 |
|---|---|---|
| committer | dujinkim <dujin.kim@dtsolution.co.kr> | 2025-08-11 00:19:38 +0000 |
| commit | a383fd2a30f60360ebc0c1b897b3d43cbae178fa (patch) | |
| tree | 98adaae908465697ad627391e66113dc0694abb3 /lib/docu-list-rule/document-class | |
| parent | 71f4e15800b0cf771d1dddab6cc46fc7c2a17c51 (diff) | |
| parent | f30678aa2956620177e61cbcc0fb57e9ce6872f1 (diff) | |
Merge branch 'dujinkim' of https://github.com/DTS-Development/SHI_EVCP into dujinkim
Diffstat (limited to 'lib/docu-list-rule/document-class')
3 files changed, 14 insertions, 41 deletions
diff --git a/lib/docu-list-rule/document-class/service.ts b/lib/docu-list-rule/document-class/service.ts index 91a4e053..2ec31ae6 100644 --- a/lib/docu-list-rule/document-class/service.ts +++ b/lib/docu-list-rule/document-class/service.ts @@ -23,13 +23,13 @@ export async function getDocumentClassCodeGroups(input: { const { page, perPage, sort, search, filters, joinOperator } = input const offset = (page - 1) * perPage - // 기본 조건 - let whereConditions = sql`${documentClasses.isActive} = true` + // 기본 조건 (plant 타입 프로젝트만) + let whereConditions = sql`${documentClasses.isActive} = true AND ${projects.type} = 'plant'` // 검색 조건 if (search) { const searchTerm = `%${search}%` - whereConditions = sql`${whereConditions} AND ( + whereConditions = sql`${documentClasses.isActive} = true AND ${projects.type} = 'plant' AND ( ${documentClasses.code} ILIKE ${searchTerm} OR ${documentClasses.value} ILIKE ${searchTerm} OR ${documentClasses.description} ILIKE ${searchTerm} OR @@ -102,7 +102,8 @@ export async function getDocumentClassCodeGroups(input: { updatedAt: documentClasses.updatedAt, projectId: documentClasses.projectId, projectCode: projects.code, - projectName: projects.name, + projectName: projects.name, + projectType: projects.type, }) .from(documentClasses) .leftJoin(projects, eq(documentClasses.projectId, projects.id)) @@ -179,38 +180,6 @@ export async function createDocumentClassCodeGroup(input: { } } - // 해당 프로젝트의 Code Group이 존재하는지 확인 - const existingCodeGroup = await db - .select({ id: codeGroups.id }) - .from(codeGroups) - .where(and( - eq(codeGroups.projectId, input.projectId), // projectId로 변경 - eq(codeGroups.groupId, 'DOC_CLASS') - )) - .limit(1) - - let codeGroupId: number | null = null - - if (existingCodeGroup.length === 0) { - // Code Group이 없으면 자동으로 생성 - const [newCodeGroup] = await db - .insert(codeGroups) - .values({ - projectId: input.projectId, // projectId로 변경 - groupId: 'DOC_CLASS', - description: 'Document Class', - codeFormat: 'DOC_CLASS_###', - expressions: '^DOC_CLASS_\\d{3}$', - controlType: 'Combobox', - isActive: true, - }) - .returning({ id: codeGroups.id }) - - codeGroupId = newCodeGroup.id - } else { - codeGroupId = existingCodeGroup[0].id - } - const [newDocumentClass] = await db .insert(documentClasses) .values({ @@ -218,7 +187,7 @@ export async function createDocumentClassCodeGroup(input: { code: newCode, value: formattedValue, description: input.description || "", - codeGroupId: codeGroupId, + codeGroupId: null, // Code Group 연결 제거 isActive: true, }) .returning({ id: documentClasses.id }) diff --git a/lib/docu-list-rule/document-class/table/document-class-add-dialog.tsx b/lib/docu-list-rule/document-class/table/document-class-add-dialog.tsx index dfd1d7f2..a51b0598 100644 --- a/lib/docu-list-rule/document-class/table/document-class-add-dialog.tsx +++ b/lib/docu-list-rule/document-class/table/document-class-add-dialog.tsx @@ -54,7 +54,7 @@ export function DocumentClassAddDialog({ }: DocumentClassAddDialogProps) { const [open, setOpen] = React.useState(false) const [isPending, startTransition] = React.useTransition() - const [projects, setProjects] = React.useState<Array<{ id: number; code: string; name: string }>>([]) + const [projects, setProjects] = React.useState<Array<{ id: number; code: string; name: string; type: string }>>([]) const form = useForm<CreateDocumentClassSchema>({ resolver: zodResolver(createDocumentClassSchema), @@ -78,10 +78,15 @@ export function DocumentClassAddDialog({ sort: [], filters: [], joinOperator: "and", - flags: [] + flags: [], + code: "", + name: "", + type: "" }) if (result.data) { - setProjects(result.data) + // plant 타입의 프로젝트만 필터링 + const plantProjects = result.data.filter(project => project.type === 'plant') + setProjects(plantProjects) } } catch (error) { console.error("Failed to load projects:", error) diff --git a/lib/docu-list-rule/document-class/table/document-class-table.tsx b/lib/docu-list-rule/document-class/table/document-class-table.tsx index c9156ff7..03855fe1 100644 --- a/lib/docu-list-rule/document-class/table/document-class-table.tsx +++ b/lib/docu-list-rule/document-class/table/document-class-table.tsx @@ -25,7 +25,6 @@ export function DocumentClassTable({ promises }: DocumentClassTableProps) { const [selectedDocumentClass, setSelectedDocumentClass] = React.useState<typeof documentClasses.$inferSelect | null>(null) const refreshData = React.useCallback(() => { - // 전체 페이지 새로고침 대신 router.refresh() 사용 (성능 개선) router.refresh() }, [router]) |
