화면 목록 저장기능
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user