diff options
| author | dujinkim <dujin.kim@dtsolution.co.kr> | 2025-11-11 09:22:58 +0000 |
|---|---|---|
| committer | dujinkim <dujin.kim@dtsolution.co.kr> | 2025-11-11 09:22:58 +0000 |
| commit | 535de26b9cf3242c04543d6891d78352b9593a60 (patch) | |
| tree | cfb2a76a3442ad0ec1d2b2b75293658d93a45808 /lib/pq/service.ts | |
| parent | 88b737a71372353e47c466553273d88f5bf36834 (diff) | |
(최겸) 구매 수정사항 개발
Diffstat (limited to 'lib/pq/service.ts')
| -rw-r--r-- | lib/pq/service.ts | 89 |
1 files changed, 88 insertions, 1 deletions
diff --git a/lib/pq/service.ts b/lib/pq/service.ts index 15d9aebc..fd71888e 100644 --- a/lib/pq/service.ts +++ b/lib/pq/service.ts @@ -3777,7 +3777,28 @@ export async function createPQListAction(input: CreatePqListInput) { if (existingGeneralPQ.length > 0) {
return {
success: false,
- error: "General PQ 목록은 하나만 생성할 수 있습니다"
+ error: "General PQ 목록은 하나만 생성할 수 있습니다. 먼저 활성화된 General PQ를 비활성화한 후 생성해주세요."
+ };
+ }
+ }
+
+ // Non-Inspection PQ인 경우 중복 체크
+ if (validated.type === "NON_INSPECTION") {
+ const existingNonInspectionPQ = await db
+ .select()
+ .from(pqLists)
+ .where(
+ and(
+ eq(pqLists.type, "NON_INSPECTION"),
+ eq(pqLists.isDeleted, false)
+ )
+ )
+ .limit(1);
+
+ if (existingNonInspectionPQ.length > 0) {
+ return {
+ success: false,
+ error: "미실사 PQ 목록은 하나만 생성할 수 있습니다. 먼저 활성화된 미실사 PQ를 비활성화한 후 생성해주세요."
};
}
}
@@ -3829,6 +3850,20 @@ export async function createPQListAction(input: CreatePqListInput) { })
.returning();
+ // NON_INSPECTION 타입인 경우 기존 활성화된 NON_INSPECTION 리스트들을 비활성화
+ if (validated.type === "NON_INSPECTION") {
+ await tx
+ .update(pqLists)
+ .set({ isDeleted: true, updatedAt: now, updatedBy: userId })
+ .where(
+ and(
+ eq(pqLists.type, "NON_INSPECTION"),
+ eq(pqLists.isDeleted, false),
+ ne(pqLists.id, newPqList.id) // 새로 생성한 리스트 제외
+ )
+ );
+ }
+
// 프로젝트 PQ인 경우 General PQ 항목들을 자동으로 복사
let copiedCriteriaCount = 0;
if (validated.type === "PROJECT") {
@@ -4417,6 +4452,58 @@ export async function getPQListInfo(pqListId: number) { )();
}
+// 활성화된 미실사 PQ 리스트 조회 (하나만 존재한다고 가정)
+export async function getNonInspectionPQLists() {
+ unstable_noStore();
+
+ try {
+ const pqList = await db
+ .select({
+ id: pqLists.id,
+ name: pqLists.name,
+ type: pqLists.type,
+ projectId: pqLists.projectId,
+ validTo: pqLists.validTo,
+ isDeleted: pqLists.isDeleted,
+ createdAt: pqLists.createdAt,
+ updatedAt: pqLists.updatedAt,
+ })
+ .from(pqLists)
+ .where(and(
+ eq(pqLists.type, "NON_INSPECTION"),
+ eq(pqLists.isDeleted, false)
+ ))
+ .limit(1)
+ .then(rows => rows[0]);
+
+ if (!pqList) {
+ return {
+ success: false,
+ error: "활성화된 미실사 PQ 목록을 찾을 수 없습니다"
+ };
+ }
+
+ // 현재 시간과 비교하여 상태 결정
+ const now = new Date();
+ const isValid = !pqList.validTo || pqList.validTo > now;
+ const status = isValid ? "ACTIVE" : "INACTIVE";
+
+ return {
+ success: true,
+ data: {
+ ...pqList,
+ status
+ }
+ };
+ } catch (error) {
+ console.error("Error in getNonInspectionPQLists:", error);
+ return {
+ success: false,
+ error: "미실사 PQ 목록 정보를 가져오는 중 오류가 발생했습니다"
+ };
+ }
+}
+
export async function getPQsByListId(pqListId: number, input: GetPQSchema) {
return unstable_cache(
async () => {
|
