import edu

This commit is contained in:
mamoss 2025-03-11 23:37:05 +07:00
parent ce5a595bc6
commit b314fe0cec
5 changed files with 58 additions and 14 deletions

17
package-lock.json generated
View file

@ -12,6 +12,7 @@
"@elastic/elasticsearch": "^8.14.0", "@elastic/elasticsearch": "^8.14.0",
"@nestjs/platform-express": "^10.3.9", "@nestjs/platform-express": "^10.3.9",
"@tsoa/runtime": "^6.0.0", "@tsoa/runtime": "^6.0.0",
"act": "^0.0.6",
"amqplib": "^0.10.4", "amqplib": "^0.10.4",
"axios": "^1.7.9", "axios": "^1.7.9",
"cors": "^2.8.5", "cors": "^2.8.5",
@ -618,6 +619,14 @@
"node": ">=0.4.0" "node": ">=0.4.0"
} }
}, },
"node_modules/act": {
"version": "0.0.6",
"resolved": "https://registry.npmjs.org/act/-/act-0.0.6.tgz",
"integrity": "sha512-ZtxoGxWmoq6bF1lGASkepxfeLED9TNVt8cQjEMFNUlaVxXMr/XfpO7iAKF3ElBgVquxyntne4u4iBqg12sSBiA==",
"dependencies": {
"underscore": "~1.3.3"
}
},
"node_modules/align-text": { "node_modules/align-text": {
"version": "0.1.4", "version": "0.1.4",
"resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz",
@ -5145,6 +5154,14 @@
"integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==", "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==",
"dev": true "dev": true
}, },
"node_modules/underscore": {
"version": "1.3.3",
"resolved": "https://registry.npmjs.org/underscore/-/underscore-1.3.3.tgz",
"integrity": "sha512-ddgUaY7xyrznJ0tbSUZgvNdv5qbiF6XcUBTrHgdCOVUrxJYWozD5KyiRjtIwds1reZ7O1iPLv5rIyqnVAcS6gg==",
"engines": {
"node": "*"
}
},
"node_modules/undici": { "node_modules/undici": {
"version": "6.19.5", "version": "6.19.5",
"resolved": "https://registry.npmjs.org/undici/-/undici-6.19.5.tgz", "resolved": "https://registry.npmjs.org/undici/-/undici-6.19.5.tgz",

View file

@ -32,6 +32,7 @@
"@elastic/elasticsearch": "^8.14.0", "@elastic/elasticsearch": "^8.14.0",
"@nestjs/platform-express": "^10.3.9", "@nestjs/platform-express": "^10.3.9",
"@tsoa/runtime": "^6.0.0", "@tsoa/runtime": "^6.0.0",
"act": "^0.0.6",
"amqplib": "^0.10.4", "amqplib": "^0.10.4",
"axios": "^1.7.9", "axios": "^1.7.9",
"cors": "^2.8.5", "cors": "^2.8.5",

View file

@ -30,7 +30,7 @@ async function main() {
); );
app.use(express.json()); app.use(express.json());
app.use(express.urlencoded({ extended: true })); app.use(express.urlencoded({ extended: true }));
app.use(logMiddleware); // app.use(logMiddleware);
app.use("/", express.static("static")); app.use("/", express.static("static"));
app.use("/api-docs", swaggerUi.serve, swaggerUi.setup(swaggerDocument)); app.use("/api-docs", swaggerUi.serve, swaggerUi.setup(swaggerDocument));

View file

@ -493,6 +493,24 @@ export class OrgRootController extends Controller {
.getOne(); .getOne();
try { try {
if (orgRevisionPublish != null) { if (orgRevisionPublish != null) {
const _orgRevisions = await repoOrgRevision.find({
where: [{ orgRevisionIsDraft: true, id: Not(orgRevisionPublish.id) }],
});
const _employeePosMasters = await repoEmployeePosmaster.find({
where: [{ orgRevisionId: In(_orgRevisions.map((x) => x.id)) }],
});
const _employeeTempPosMasters = await repoEmployeeTempPosmaster.find({
where: [{ orgRevisionId: In(_orgRevisions.map((x) => x.id)) }],
});
await employeePositionRepository.delete({
posMasterId: In(_employeePosMasters.map((x) => x.id)),
});
await employeePositionRepository.delete({
posMasterTempId: In(_employeeTempPosMasters.map((x) => x.id)),
});
await repoEmployeePosmaster.remove(_employeePosMasters);
await repoEmployeeTempPosmaster.remove(_employeeTempPosMasters);
//หา dna tree //หา dna tree
const orgRoot = await orgRootRepository.find({ const orgRoot = await orgRootRepository.find({
where: { orgRevisionId: orgRevisionPublish.id }, where: { orgRevisionId: orgRevisionPublish.id },

View file

@ -134,6 +134,7 @@ async function handler(msg: amqp.ConsumeMessage): Promise<boolean> {
} }
async function handler_org(msg: amqp.ConsumeMessage): Promise<boolean> { async function handler_org(msg: amqp.ConsumeMessage): Promise<boolean> {
console.log("zzzzzzzzzzzzzzzz");
//----> condition before process consume //----> condition before process consume
const repoPosmaster = AppDataSource.getRepository(PosMaster); const repoPosmaster = AppDataSource.getRepository(PosMaster);
const repoEmployeePosmaster = AppDataSource.getRepository(EmployeePosMaster); const repoEmployeePosmaster = AppDataSource.getRepository(EmployeePosMaster);
@ -148,11 +149,13 @@ async function handler_org(msg: amqp.ConsumeMessage): Promise<boolean> {
const child3Repository = AppDataSource.getRepository(OrgChild3); const child3Repository = AppDataSource.getRepository(OrgChild3);
const child4Repository = AppDataSource.getRepository(OrgChild4); const child4Repository = AppDataSource.getRepository(OrgChild4);
console.log("zzzzzzzzzzzzzzzz");
const orgRevisionPublish = await repoOrgRevision const orgRevisionPublish = await repoOrgRevision
.createQueryBuilder("orgRevision") .createQueryBuilder("orgRevision")
.where("orgRevision.orgRevisionIsDraft = false") .where("orgRevision.orgRevisionIsDraft = false")
.andWhere("orgRevision.orgRevisionIsCurrent = true") .andWhere("orgRevision.orgRevisionIsCurrent = true")
.getOne(); .getOne();
console.log("zzzzzzzzzzzzzzzz");
const orgRevisionDraft = await repoOrgRevision const orgRevisionDraft = await repoOrgRevision
.createQueryBuilder("orgRevision") .createQueryBuilder("orgRevision")
@ -164,14 +167,17 @@ async function handler_org(msg: amqp.ConsumeMessage): Promise<boolean> {
orgRevisionPublish.orgRevisionIsCurrent = false; orgRevisionPublish.orgRevisionIsCurrent = false;
await repoOrgRevision.save(orgRevisionPublish); await repoOrgRevision.save(orgRevisionPublish);
} }
console.log("zzzzzzzzzzzzzzzz");
if (orgRevisionDraft) { if (orgRevisionDraft) {
orgRevisionDraft.orgRevisionIsCurrent = true; orgRevisionDraft.orgRevisionIsCurrent = true;
orgRevisionDraft.orgRevisionIsDraft = false; orgRevisionDraft.orgRevisionIsDraft = false;
await repoOrgRevision.save(orgRevisionDraft); await repoOrgRevision.save(orgRevisionDraft);
} }
console.log("zzzzzzzzzzzzzzzz");
const { data, token, user } = JSON.parse(msg.content.toString()); const { data, token, user } = JSON.parse(msg.content.toString());
const { id, status, lastUpdateUserId, lastUpdateFullName, lastUpdatedAt } = data; const { id, status, lastUpdateUserId, lastUpdateFullName, lastUpdatedAt } = data;
console.log("zzzzzzzzzzzzzzzz");
try { try {
const posMaster = await repoPosmaster.find({ const posMaster = await repoPosmaster.find({
where: { orgRevisionId: id }, where: { orgRevisionId: id },
@ -187,7 +193,9 @@ async function handler_org(msg: amqp.ConsumeMessage): Promise<boolean> {
"positions.posExecutive", "positions.posExecutive",
], ],
}); });
console.log("zzzzzzzzzzzzzzzz");
for (const item of posMaster) { for (const item of posMaster) {
console.log("zzzzzzzzzzzzzzzz");
if (item.next_holderId != null && status == "NOW") { if (item.next_holderId != null && status == "NOW") {
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 },
@ -210,7 +218,7 @@ async function handler_org(msg: amqp.ConsumeMessage): Promise<boolean> {
} }
console.log(orgRevisionPublish); console.log(orgRevisionPublish);
console.log("zzzzzzzzzzzzzzzz"); console.log("zzzzzzzzzzzzzzzz");
if (orgRevisionPublish != null) { if (orgRevisionPublish != null && orgRevisionDraft !=null) {
console.log("cccccccccccccccccccccc"); console.log("cccccccccccccccccccccc");
//new main revision //new main revision
const before = null; const before = null;
@ -333,7 +341,7 @@ async function handler_org(msg: amqp.ConsumeMessage): Promise<boolean> {
// employeePosMaster.authRoleId = null; // employeePosMaster.authRoleId = null;
// } // }
// employeePosMaster.current_holderId = null; // employeePosMaster.current_holderId = null;
employeePosMaster.orgRevisionId = orgRevisionPublish.id; employeePosMaster.orgRevisionId = orgRevisionDraft.id;
employeePosMaster.orgRootId = dataId; employeePosMaster.orgRootId = dataId;
employeePosMaster.createdUserId = ""; employeePosMaster.createdUserId = "";
employeePosMaster.createdFullName = "System Administrator"; employeePosMaster.createdFullName = "System Administrator";
@ -393,7 +401,7 @@ async function handler_org(msg: amqp.ConsumeMessage): Promise<boolean> {
// employeeTempPosMaster.authRoleId = null; // employeeTempPosMaster.authRoleId = null;
// } // }
// employeeTempPosMaster.current_holderId = null; // employeeTempPosMaster.current_holderId = null;
employeeTempPosMaster.orgRevisionId = orgRevisionPublish.id; employeeTempPosMaster.orgRevisionId = orgRevisionDraft.id;
employeeTempPosMaster.orgRootId = dataId; employeeTempPosMaster.orgRootId = dataId;
employeeTempPosMaster.createdUserId = ""; employeeTempPosMaster.createdUserId = "";
employeeTempPosMaster.createdFullName = "System Administrator"; employeeTempPosMaster.createdFullName = "System Administrator";
@ -466,7 +474,7 @@ async function handler_org(msg: amqp.ConsumeMessage): Promise<boolean> {
// employeePosMaster.authRoleId = null; // employeePosMaster.authRoleId = null;
// } // }
// employeePosMaster.current_holderId = null; // employeePosMaster.current_holderId = null;
employeePosMaster.orgRevisionId = orgRevisionPublish.id; employeePosMaster.orgRevisionId = orgRevisionDraft.id;
employeePosMaster.orgRootId = dataId; employeePosMaster.orgRootId = dataId;
employeePosMaster.orgChild1Id = data1Id; employeePosMaster.orgChild1Id = data1Id;
employeePosMaster.createdUserId = ""; employeePosMaster.createdUserId = "";
@ -529,7 +537,7 @@ async function handler_org(msg: amqp.ConsumeMessage): Promise<boolean> {
// employeeTempPosMaster.authRoleId = null; // employeeTempPosMaster.authRoleId = null;
// } // }
// employeeTempPosMaster.current_holderId = null; // employeeTempPosMaster.current_holderId = null;
employeeTempPosMaster.orgRevisionId = orgRevisionPublish.id; employeeTempPosMaster.orgRevisionId = orgRevisionDraft.id;
employeeTempPosMaster.orgRootId = dataId; employeeTempPosMaster.orgRootId = dataId;
employeeTempPosMaster.orgChild1Id = data1Id; employeeTempPosMaster.orgChild1Id = data1Id;
employeeTempPosMaster.createdUserId = ""; employeeTempPosMaster.createdUserId = "";
@ -605,7 +613,7 @@ async function handler_org(msg: amqp.ConsumeMessage): Promise<boolean> {
// employeePosMaster.authRoleId = null; // employeePosMaster.authRoleId = null;
// } // }
// employeePosMaster.current_holderId = null; // employeePosMaster.current_holderId = null;
employeePosMaster.orgRevisionId = orgRevisionPublish.id; employeePosMaster.orgRevisionId = orgRevisionDraft.id;
employeePosMaster.orgRootId = dataId; employeePosMaster.orgRootId = dataId;
employeePosMaster.orgChild1Id = data1Id; employeePosMaster.orgChild1Id = data1Id;
employeePosMaster.orgChild2Id = data2Id; employeePosMaster.orgChild2Id = data2Id;
@ -673,7 +681,7 @@ async function handler_org(msg: amqp.ConsumeMessage): Promise<boolean> {
// employeeTempPosMaster.authRoleId = null; // employeeTempPosMaster.authRoleId = null;
// } // }
// employeeTempPosMaster.current_holderId = null; // employeeTempPosMaster.current_holderId = null;
employeeTempPosMaster.orgRevisionId = orgRevisionPublish.id; employeeTempPosMaster.orgRevisionId = orgRevisionDraft.id;
employeeTempPosMaster.orgRootId = dataId; employeeTempPosMaster.orgRootId = dataId;
employeeTempPosMaster.orgChild1Id = data1Id; employeeTempPosMaster.orgChild1Id = data1Id;
employeeTempPosMaster.orgChild2Id = data2Id; employeeTempPosMaster.orgChild2Id = data2Id;
@ -751,7 +759,7 @@ async function handler_org(msg: amqp.ConsumeMessage): Promise<boolean> {
// employeePosMaster.authRoleId = null; // employeePosMaster.authRoleId = null;
// } // }
// employeePosMaster.current_holderId = null; // employeePosMaster.current_holderId = null;
employeePosMaster.orgRevisionId = orgRevisionPublish.id; employeePosMaster.orgRevisionId = orgRevisionDraft.id;
employeePosMaster.orgRootId = dataId; employeePosMaster.orgRootId = dataId;
employeePosMaster.orgChild1Id = data1Id; employeePosMaster.orgChild1Id = data1Id;
employeePosMaster.orgChild2Id = data2Id; employeePosMaster.orgChild2Id = data2Id;
@ -820,7 +828,7 @@ async function handler_org(msg: amqp.ConsumeMessage): Promise<boolean> {
// employeeTempPosMaster.authRoleId = null; // employeeTempPosMaster.authRoleId = null;
// } // }
// employeeTempPosMaster.current_holderId = null; // employeeTempPosMaster.current_holderId = null;
employeeTempPosMaster.orgRevisionId = orgRevisionPublish.id; employeeTempPosMaster.orgRevisionId = orgRevisionDraft.id;
employeeTempPosMaster.orgRootId = dataId; employeeTempPosMaster.orgRootId = dataId;
employeeTempPosMaster.orgChild1Id = data1Id; employeeTempPosMaster.orgChild1Id = data1Id;
employeeTempPosMaster.orgChild2Id = data2Id; employeeTempPosMaster.orgChild2Id = data2Id;
@ -899,7 +907,7 @@ async function handler_org(msg: amqp.ConsumeMessage): Promise<boolean> {
// employeePosMaster.authRoleId = null; // employeePosMaster.authRoleId = null;
// } // }
// employeePosMaster.current_holderId = null; // employeePosMaster.current_holderId = null;
employeePosMaster.orgRevisionId = orgRevisionPublish.id; employeePosMaster.orgRevisionId = orgRevisionDraft.id;
employeePosMaster.orgRootId = dataId; employeePosMaster.orgRootId = dataId;
employeePosMaster.orgChild1Id = data1Id; employeePosMaster.orgChild1Id = data1Id;
employeePosMaster.orgChild2Id = data2Id; employeePosMaster.orgChild2Id = data2Id;
@ -966,7 +974,7 @@ async function handler_org(msg: amqp.ConsumeMessage): Promise<boolean> {
// employeeTempPosMaster.authRoleId = null; // employeeTempPosMaster.authRoleId = null;
// } // }
// employeeTempPosMaster.current_holderId = null; // employeeTempPosMaster.current_holderId = null;
employeeTempPosMaster.orgRevisionId = orgRevisionPublish.id; employeeTempPosMaster.orgRevisionId = orgRevisionDraft.id;
employeeTempPosMaster.orgRootId = dataId; employeeTempPosMaster.orgRootId = dataId;
employeeTempPosMaster.orgChild1Id = data1Id; employeeTempPosMaster.orgChild1Id = data1Id;
employeeTempPosMaster.orgChild2Id = data2Id; employeeTempPosMaster.orgChild2Id = data2Id;
@ -1013,7 +1021,7 @@ async function handler_org(msg: amqp.ConsumeMessage): Promise<boolean> {
// } // }
const employeePosMaster = await repoEmployeePosmaster.find({ const employeePosMaster = await repoEmployeePosmaster.find({
where: { orgRevisionId: orgRevisionPublish.id }, where: { orgRevisionId: orgRevisionDraft.id },
relations: ["positions", "positions.posLevel", "positions.posType"], relations: ["positions", "positions.posLevel", "positions.posType"],
}); });
for (const item of employeePosMaster) { for (const item of employeePosMaster) {
@ -1038,7 +1046,7 @@ async function handler_org(msg: amqp.ConsumeMessage): Promise<boolean> {
await repoEmployeePosmaster.save(item).catch((e) => console.log(e)); await repoEmployeePosmaster.save(item).catch((e) => console.log(e));
} }
const employeeTempPosMaster = await repoEmployeeTempPosmaster.find({ const employeeTempPosMaster = await repoEmployeeTempPosmaster.find({
where: { orgRevisionId: orgRevisionPublish.id }, where: { orgRevisionId: orgRevisionDraft.id },
relations: ["positions", "positions.posLevel", "positions.posType"], relations: ["positions", "positions.posLevel", "positions.posType"],
}); });
for (const item of employeeTempPosMaster) { for (const item of employeeTempPosMaster) {