From f4be31ed0891c65a0e7d797020672fb211bbbbb6 Mon Sep 17 00:00:00 2001 From: harid Date: Fri, 9 Jan 2026 18:40:10 +0700 Subject: [PATCH] test(4) #2160 --- src/services/rabbitmq.ts | 82 +++++++++++++++++++++++----------------- 1 file changed, 47 insertions(+), 35 deletions(-) diff --git a/src/services/rabbitmq.ts b/src/services/rabbitmq.ts index 875ae3f8..5093f52a 100644 --- a/src/services/rabbitmq.ts +++ b/src/services/rabbitmq.ts @@ -565,7 +565,7 @@ async function handler_org(msg: amqp.ConsumeMessage): Promise { relations: ["posMaster"], where: { posMaster: { - orgRevisionId: orgRevisionPublish?.id, + orgRevisionId: orgRevisionPublish!.id, }, }, }); @@ -578,30 +578,7 @@ async function handler_org(msg: amqp.ConsumeMessage): Promise { } assignMap.get(dna)!.push(posmasterAssign); } - // // ดึง permissionProfiles ของ revision เดิม - // const oldPermissionProfiles = await permissionProfilesRepository.find({ - // relations: ["orgRootTree"], - // where: { - // orgRootTree: { - // orgRevisionId: orgRevisionPublish?.id, - // } - // } - // }); - // // สร้าง Map: ancestorDNA → permissionProfiles[] - // const permissionMap = new Map(); - // for (const permissionProfile of oldPermissionProfiles) { - // const dna = permissionProfile.orgRootTree.ancestorDNA; - // if (!permissionMap.has(dna)) { - // permissionMap.set(dna, []); - // } - // permissionMap.get(dna)!.push(permissionProfile); - // } - // const newRoots = await orgRootRepository.find({ - // where: { orgRevisionId: orgRevisionDraft?.id }, - // }); - // const newRootMap = new Map( - // newRoots.map(r => [r.ancestorDNA, r.id]) - // ); + const _null: any = null; for (const item of posMaster) { @@ -611,19 +588,15 @@ async function handler_org(msg: amqp.ConsumeMessage): Promise { const newAssigns = assigns.map(({ id, ...fields }) => ({ ...fields, // copy ทุก field ยกเว้น id posMasterId: item.id, // ผูกกับ posMasterId ใหม่ + createdAt: new Date(), + createdFullName: user.name, + createdUserId: user.sub, + lastUpdatedAt: new Date(), + lastUpdateFullName: user.name, + lastUpdateUserId: user.sub, })); await posMasterAssignRepository.save(newAssigns); } - // Clone permissionProfiles - // const perms = permissionMap.get(item.ancestorDNA); - // const newRootId = newRootMap.get(item.orgRoot.ancestorDNA); - // if (perms && perms.length > 0 && newRootId) { - // const newPerms = perms.map(({ id, ...fields }) => ({ - // ...fields, - // orgRootId: newRootId, - // })); - // await permissionProfilesRepository.save(newPerms); - // } if (item.next_holderId != null) { const profile = await repoProfile.findOne({ @@ -690,6 +663,45 @@ async function handler_org(msg: amqp.ConsumeMessage): Promise { const orgChild4 = await child4Repository.find({ where: { orgRevisionId: orgRevisionPublish.id }, }); + + const newRoots = await orgRootRepository.find({ + where: { orgRevisionId: orgRevisionDraft.id }, + }); + // map ancestorDNA -> newRootId + const newRootMap = new Map( + newRoots.map(r => [r.ancestorDNA, r.id]) + ); + // ดึง permissionProfiles ของ revision เดิม + const oldPermissionProfiles = await permissionProfilesRepository.find({ + relations: ["orgRootTree"], + where: { + orgRootTree: { + orgRevisionId: orgRevisionPublish.id, + } + } + }); + const inserts: any[] = []; + for (const permiss of oldPermissionProfiles) { + const newRootId = newRootMap.get(permiss.orgRootTree.ancestorDNA); + if (!newRootId) continue; + + const { id, ...fields } = permiss; + + inserts.push({ + ...fields, + orgRootId: newRootId, + createdAt: new Date(), + createdFullName: user.name, + createdUserId: user.sub, + lastUpdatedAt: new Date(), + lastUpdateFullName: user.name, + lastUpdateUserId: user.sub, + }); + } + + if (inserts.length > 0) { + await permissionProfilesRepository.insert(inserts); + } //หา dna posmaster ถ้าไม่มีให้เอาตัวเองเป็น dna const orgemployeePosMaster = await repoEmployeePosmaster.find({