Merge branch 'develop' into adiDev

This commit is contained in:
AdisakKanthawilang 2025-08-22 16:48:59 +07:00
commit d9a730e6c6
2 changed files with 40 additions and 34 deletions

View file

@ -2972,8 +2972,9 @@ export class PositionController extends Controller {
//Check All Branch //Check All Branch
const orgRevision = await this.orgRevisionRepository.findOne({ const orgRevision = await this.orgRevisionRepository.findOne({
where: { where: {
orgRevisionIsDraft: true, // orgRevisionIsDraft: true,
orgRevisionIsCurrent: false, // orgRevisionIsCurrent: false,
id: posMaster.orgRevisionId
}, },
}); });
const _orgRoot = await this.orgRootRepository.find({ const _orgRoot = await this.orgRootRepository.find({

View file

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