화면 목록 저장기능

This commit is contained in:
kjs
2025-09-01 17:57:52 +09:00
parent 94ec47afe7
commit 31d25268ce
8 changed files with 544 additions and 104 deletions

View File

@@ -804,6 +804,45 @@ export class ScreenManagementService {
createdDate: data.created_date,
};
}
/**
* 화면 코드 자동 생성 (회사코드 + '_' + 순번)
*/
async generateScreenCode(companyCode: string): Promise<string> {
// 해당 회사의 기존 화면 코드들 조회
const existingScreens = await prisma.screen_definitions.findMany({
where: {
company_code: companyCode,
screen_code: {
startsWith: companyCode,
},
},
select: { screen_code: true },
orderBy: { screen_code: "desc" },
});
// 회사 코드 뒤의 숫자 부분 추출하여 최대값 찾기
let maxNumber = 0;
const pattern = new RegExp(
`^${companyCode.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")}(?:_)?(\\d+)$`
);
for (const screen of existingScreens) {
const match = screen.screen_code.match(pattern);
if (match) {
const number = parseInt(match[1], 10);
if (number > maxNumber) {
maxNumber = number;
}
}
}
// 다음 순번으로 화면 코드 생성 (3자리 패딩)
const nextNumber = maxNumber + 1;
const paddedNumber = nextNumber.toString().padStart(3, "0");
return `${companyCode}_${paddedNumber}`;
}
}
// 서비스 인스턴스 export