diff --git a/src/services/rabbitmq.ts b/src/services/rabbitmq.ts index 7001d710..183a0e94 100644 --- a/src/services/rabbitmq.ts +++ b/src/services/rabbitmq.ts @@ -246,7 +246,7 @@ async function handler(msg: amqp.ConsumeMessage): Promise { return null; } allRefIds.add(key); - + return { refId: x.refId, commandNo: command.commandNo, @@ -264,7 +264,7 @@ async function handler(msg: amqp.ConsumeMessage): Promise { }; }) .filter(Boolean), - 20 + 20, ); for (const chunk of chunks) { @@ -272,7 +272,7 @@ async function handler(msg: amqp.ConsumeMessage): Promise { { headers: { authorization: token } }, path + "/excecute", { refIds: chunk }, - false + false, ); } @@ -289,7 +289,6 @@ async function handler(msg: amqp.ConsumeMessage): Promise { console.log("[AMQ] Excecute Command Success"); return !!result; - } catch (e) { console.error(e); if (user) { @@ -555,8 +554,15 @@ async function handler_org(msg: amqp.ConsumeMessage): Promise { const profile = await repoProfile.findOne({ where: { id: item.next_holderId == null ? "" : item.next_holderId }, }); - const position = await item.positions.find((x) => x.positionIsSelected == true); - if (profile != null) { + if (profile != null && item.positions.length > 0) { + let position = await item.positions.find((x) => x.positionIsSelected == true); + if (position == null) { + position = await item.positions.find((x) => x.posLevelId == profile?.posLevelId); + if (position == null) { + position = await item.positions.sort((a, b) => a.orderNo - b.orderNo)[0]; + } + } + profile.posLevelId = position?.posLevelId ?? _null; profile.posTypeId = position?.posTypeId ?? _null; profile.position = position?.positionName ?? _null; @@ -631,29 +637,28 @@ async function handler_org(msg: amqp.ConsumeMessage): Promise { // })); // await repoEmployeePosmaster.save(_orgemployeePosMaster); const validProfileIds = new Set( - (await repoProfileEmployee.find({ select: ["id"] })).map(p => p.id) + (await repoProfileEmployee.find({ select: ["id"] })).map((p) => p.id), ); - + _orgemployeePosMaster = orgemployeePosMaster.map((x) => ({ ...x, - current_holderId: x.current_holderId && validProfileIds.has(x.current_holderId) - ? x.current_holderId - : null, + current_holderId: + x.current_holderId && validProfileIds.has(x.current_holderId) ? x.current_holderId : null, ancestorDNA: !x.ancestorDNA || x.ancestorDNA === "00000000-0000-0000-0000-000000000000" ? x.id : x.ancestorDNA, })); await repoEmployeePosmaster - .createQueryBuilder() - .insert() - .into(EmployeePosMaster) - .values(_orgemployeePosMaster) - .orUpdate({ - conflict_target: ['id'], - overwrite: ['ancestorDNA'], - }) - .execute(); + .createQueryBuilder() + .insert() + .into(EmployeePosMaster) + .values(_orgemployeePosMaster) + .orUpdate({ + conflict_target: ["id"], + overwrite: ["ancestorDNA"], + }) + .execute(); // } //หา dna posmaster ถ้าไม่มีให้เอาตัวเองเป็น dna @@ -678,17 +683,17 @@ async function handler_org(msg: amqp.ConsumeMessage): Promise { })); // await repoEmployeeTempPosmaster.save(_orgemployeeTempPosMaster); await repoEmployeeTempPosmaster - .createQueryBuilder() - .insert() - .into(EmployeeTempPosMaster) - .values(_orgemployeeTempPosMaster) - .orUpdate({ - conflict_target: ['id'], - overwrite: ['ancestorDNA'], - }) - .execute(); + .createQueryBuilder() + .insert() + .into(EmployeeTempPosMaster) + .values(_orgemployeeTempPosMaster) + .orUpdate({ + conflict_target: ["id"], + overwrite: ["ancestorDNA"], + }) + .execute(); // } - + //create org orgRoot.forEach(async (x: any) => { var dataId = x.id; @@ -1495,7 +1500,7 @@ async function handler_org(msg: amqp.ConsumeMessage): Promise { }); }); // } - + const employeePosMaster = await repoEmployeePosmaster.find({ where: { orgRevisionId: orgRevisionDraft.id }, relations: ["positions", "positions.posLevel", "positions.posType"], @@ -2280,7 +2285,7 @@ async function handler_org_draft(msg: amqp.ConsumeMessage): Promise { console.log("[AMQ] Create Draft Success"); if (user) { - await sendWebSocket( + await sendWebSocket( "send-create-draft-org", { success: true,