CheckQueueInProgress
This commit is contained in:
parent
027cbe2814
commit
cd6aa9b1a2
2 changed files with 124 additions and 61 deletions
|
|
@ -28,7 +28,7 @@ import { Profile } from "../entities/Profile";
|
||||||
import { RequestWithUser } from "../middlewares/user";
|
import { RequestWithUser } from "../middlewares/user";
|
||||||
import permission from "../interfaces/permission";
|
import permission from "../interfaces/permission";
|
||||||
import { PermissionOrg } from "../entities/PermissionOrg";
|
import { PermissionOrg } from "../entities/PermissionOrg";
|
||||||
import { setLogDataDiff } from "../interfaces/utils";
|
import { checkQueueInProgress, setLogDataDiff } from "../interfaces/utils";
|
||||||
import { sendToQueueOrg, sendToQueueOrgDraft } from "../services/rabbitmq";
|
import { sendToQueueOrg, sendToQueueOrgDraft } from "../services/rabbitmq";
|
||||||
import { PosMasterAssign } from "../entities/PosMasterAssign";
|
import { PosMasterAssign } from "../entities/PosMasterAssign";
|
||||||
import { PosMasterAct } from "../entities/PosMasterAct";
|
import { PosMasterAct } from "../entities/PosMasterAct";
|
||||||
|
|
@ -142,35 +142,52 @@ export class OrganizationController extends Controller {
|
||||||
@Body() requestBody: CreateOrgRevision,
|
@Body() requestBody: CreateOrgRevision,
|
||||||
@Request() request: RequestWithUser,
|
@Request() request: RequestWithUser,
|
||||||
) {
|
) {
|
||||||
//new main revision
|
|
||||||
const before = null;
|
|
||||||
const revision = Object.assign(new OrgRevision(), requestBody) as OrgRevision;
|
|
||||||
revision.orgRevisionIsDraft = true;
|
|
||||||
revision.orgRevisionIsCurrent = false;
|
|
||||||
revision.createdUserId = request.user.sub;
|
|
||||||
revision.createdFullName = request.user.name;
|
|
||||||
revision.lastUpdateUserId = request.user.sub;
|
|
||||||
revision.lastUpdateFullName = request.user.name;
|
|
||||||
revision.createdAt = new Date();
|
|
||||||
revision.lastUpdatedAt = new Date();
|
|
||||||
await this.orgRevisionRepository.save(revision, { data: request });
|
|
||||||
|
|
||||||
setLogDataDiff(request, { before, after: revision });
|
|
||||||
const msg = {
|
|
||||||
data: {
|
|
||||||
requestBody: requestBody,
|
|
||||||
request: request.user,
|
|
||||||
revision: revision,
|
|
||||||
},
|
|
||||||
user: request.user,
|
|
||||||
};
|
|
||||||
try {
|
try {
|
||||||
|
// CheckQueueInProgress
|
||||||
|
// const [isBusyDraft, isBusyPublish] = await Promise.all([
|
||||||
|
// checkQueueInProgress(`${process.env.AMQ_QUEUE_ORG_DRAFT}`),
|
||||||
|
// checkQueueInProgress(`${process.env.AMQ_QUEUE_ORG}`),
|
||||||
|
// ]);
|
||||||
|
// console.log("✅ ตรวจสอบแล้ว Draft Busy:", isBusyDraft);
|
||||||
|
// console.log("✅ ตรวจสอบแล้ว Publish Busy:", isBusyPublish);
|
||||||
|
// if (isBusyDraft || isBusyPublish) {
|
||||||
|
// console.log("🚫 พบว่ามีงานอยู่ในคิว — error")
|
||||||
|
// throw new HttpError(
|
||||||
|
// HttpStatusCode.CONFLICT,
|
||||||
|
// "ไม่สามารถดำเนินการได้ หากกำลังเผยแพร่หรือสร้างแบบร่างโครงสร้างหน่วยงาน",
|
||||||
|
// );
|
||||||
|
// }
|
||||||
|
//new main revision
|
||||||
|
const before = null;
|
||||||
|
const revision = Object.assign(new OrgRevision(), requestBody) as OrgRevision;
|
||||||
|
revision.orgRevisionIsDraft = true;
|
||||||
|
revision.orgRevisionIsCurrent = false;
|
||||||
|
revision.createdUserId = request.user.sub;
|
||||||
|
revision.createdFullName = request.user.name;
|
||||||
|
revision.lastUpdateUserId = request.user.sub;
|
||||||
|
revision.lastUpdateFullName = request.user.name;
|
||||||
|
revision.createdAt = new Date();
|
||||||
|
revision.lastUpdatedAt = new Date();
|
||||||
|
await this.orgRevisionRepository.save(revision, { data: request });
|
||||||
|
|
||||||
|
setLogDataDiff(request, { before, after: revision });
|
||||||
|
const msg = {
|
||||||
|
data: {
|
||||||
|
requestBody: requestBody,
|
||||||
|
request: request.user,
|
||||||
|
revision: revision,
|
||||||
|
},
|
||||||
|
user: request.user,
|
||||||
|
};
|
||||||
await sendToQueueOrgDraft(msg);
|
await sendToQueueOrgDraft(msg);
|
||||||
return new HttpSuccess("Draft is being created... Processing in the background.");
|
return new HttpSuccess("Draft is being created... Processing in the background.");
|
||||||
} catch (error: any) {
|
} catch (error: any) {
|
||||||
|
if (error?.status && error?.message) {
|
||||||
|
return error;
|
||||||
|
}
|
||||||
return new HttpError(
|
return new HttpError(
|
||||||
HttpStatusCode.NOT_FOUND,
|
HttpStatusCode.INTERNAL_SERVER_ERROR,
|
||||||
"Failed to process the draft. Please try again later.",
|
"Failed to process the draft. Please try again later."
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -3208,45 +3225,71 @@ export class OrganizationController extends Controller {
|
||||||
*/
|
*/
|
||||||
@Get("get/publish")
|
@Get("get/publish")
|
||||||
async runPublish(@Request() request: RequestWithUser) {
|
async runPublish(@Request() request: RequestWithUser) {
|
||||||
const today = new Date();
|
try{
|
||||||
today.setHours(0, 0, 0, 0); // Set time to the beginning of the day
|
// CheckQueueInProgress
|
||||||
const orgRevisionPublish = await this.orgRevisionRepository
|
// console.log("🚀 ตรวจสอบว่ามีงานอยู่ในคิว");
|
||||||
.createQueryBuilder("orgRevision")
|
// const [isBusyDraft, isBusyPublish] = await Promise.all([
|
||||||
.where("orgRevision.orgRevisionIsDraft = false")
|
// checkQueueInProgress(`${process.env.AMQ_QUEUE_ORG_DRAFT}`),
|
||||||
.andWhere("orgRevision.orgRevisionIsCurrent = true")
|
// checkQueueInProgress(`${process.env.AMQ_QUEUE_ORG}`),
|
||||||
.getOne();
|
// ]);
|
||||||
|
// console.log("✅ ตรวจสอบแล้ว Draft Busy:", isBusyDraft);
|
||||||
|
// console.log("✅ ตรวจสอบแล้ว Publish Busy:", isBusyPublish);
|
||||||
|
// if (isBusyDraft || isBusyPublish) {
|
||||||
|
// console.log("🚫 พบว่ามีงานอยู่ในคิว — error")
|
||||||
|
// throw new HttpError(
|
||||||
|
// HttpStatusCode.CONFLICT,
|
||||||
|
// "ไม่สามารถดำเนินการได้ หากกำลังเผยแพร่หรือสร้างแบบร่างโครงสร้างหน่วยงาน",
|
||||||
|
// );
|
||||||
|
// }
|
||||||
|
|
||||||
const orgRevisionDraft = await this.orgRevisionRepository
|
const today = new Date();
|
||||||
.createQueryBuilder("orgRevision")
|
today.setHours(0, 0, 0, 0); // Set time to the beginning of the day
|
||||||
.where("orgRevision.orgRevisionIsDraft = true")
|
const orgRevisionPublish = await this.orgRevisionRepository
|
||||||
.andWhere("orgRevision.orgRevisionIsCurrent = false")
|
.createQueryBuilder("orgRevision")
|
||||||
// .andWhere("DATE(orgRevision.orgPublishDate) = :today", { today })
|
.where("orgRevision.orgRevisionIsDraft = false")
|
||||||
.getOne();
|
.andWhere("orgRevision.orgRevisionIsCurrent = true")
|
||||||
if (!orgRevisionDraft) {
|
.getOne();
|
||||||
|
|
||||||
|
const orgRevisionDraft = await this.orgRevisionRepository
|
||||||
|
.createQueryBuilder("orgRevision")
|
||||||
|
.where("orgRevision.orgRevisionIsDraft = true")
|
||||||
|
.andWhere("orgRevision.orgRevisionIsCurrent = false")
|
||||||
|
// .andWhere("DATE(orgRevision.orgPublishDate) = :today", { today })
|
||||||
|
.getOne();
|
||||||
|
if (!orgRevisionDraft) {
|
||||||
|
return new HttpSuccess();
|
||||||
|
// throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่มีข้อมูลเผยแพร่");
|
||||||
|
}
|
||||||
|
// if (orgRevisionPublish) {
|
||||||
|
// orgRevisionPublish.orgRevisionIsDraft = false;
|
||||||
|
// orgRevisionPublish.orgRevisionIsCurrent = false;
|
||||||
|
// await this.orgRevisionRepository.save(orgRevisionPublish);
|
||||||
|
// }
|
||||||
|
// orgRevisionDraft.orgRevisionIsCurrent = true;
|
||||||
|
// orgRevisionDraft.orgRevisionIsDraft = false;
|
||||||
|
// await this.orgRevisionRepository.save(orgRevisionDraft);
|
||||||
|
const msg = {
|
||||||
|
data: {
|
||||||
|
id: orgRevisionDraft.id,
|
||||||
|
status: "NOW",
|
||||||
|
lastUpdateUserId: request.user.sub,
|
||||||
|
lastUpdateFullName: request.user.name,
|
||||||
|
lastUpdatedAt: new Date(),
|
||||||
|
},
|
||||||
|
user: request.user,
|
||||||
|
token: request.headers["authorization"],
|
||||||
|
};
|
||||||
|
sendToQueueOrg(msg);
|
||||||
return new HttpSuccess();
|
return new HttpSuccess();
|
||||||
// throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่มีข้อมูลเผยแพร่");
|
} catch (error: any) {
|
||||||
|
if (error?.status && error?.message) {
|
||||||
|
return error;
|
||||||
|
}
|
||||||
|
return new HttpError(
|
||||||
|
HttpStatusCode.INTERNAL_SERVER_ERROR,
|
||||||
|
"Failed to process the publish. Please try again later."
|
||||||
|
);
|
||||||
}
|
}
|
||||||
// if (orgRevisionPublish) {
|
|
||||||
// orgRevisionPublish.orgRevisionIsDraft = false;
|
|
||||||
// orgRevisionPublish.orgRevisionIsCurrent = false;
|
|
||||||
// await this.orgRevisionRepository.save(orgRevisionPublish);
|
|
||||||
// }
|
|
||||||
// orgRevisionDraft.orgRevisionIsCurrent = true;
|
|
||||||
// orgRevisionDraft.orgRevisionIsDraft = false;
|
|
||||||
// await this.orgRevisionRepository.save(orgRevisionDraft);
|
|
||||||
const msg = {
|
|
||||||
data: {
|
|
||||||
id: orgRevisionDraft.id,
|
|
||||||
status: "NOW",
|
|
||||||
lastUpdateUserId: request.user.sub,
|
|
||||||
lastUpdateFullName: request.user.name,
|
|
||||||
lastUpdatedAt: new Date(),
|
|
||||||
},
|
|
||||||
user: request.user,
|
|
||||||
token: request.headers["authorization"],
|
|
||||||
};
|
|
||||||
sendToQueueOrg(msg);
|
|
||||||
return new HttpSuccess();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -503,6 +503,26 @@ export function editLogSequence(req: RequestWithUser, index: number, data: LogSe
|
||||||
req.app.locals.logData.sequence[index] = data;
|
req.app.locals.logData.sequence[index] = data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export async function checkQueueInProgress(queueName: string) {
|
||||||
|
// const axios = require('axios');
|
||||||
|
// console.log("Checking queue in progress");
|
||||||
|
// const res = await axios.get(`${process.env.RABBIT_API_URL}/api/queues/%2F/${queueName}`, {
|
||||||
|
// auth: { username: process.env.RABBIT_USER , password: process.env.RABBIT_PASS },
|
||||||
|
// });
|
||||||
|
|
||||||
|
// const q = res.data;
|
||||||
|
|
||||||
|
// console.log(`Queue "${queueName}" has:`);
|
||||||
|
// console.log(` - ${q.messages_ready} messages ready`);
|
||||||
|
// console.log(` - ${q.messages_unacknowledged} messages in progress (unacked)`);
|
||||||
|
|
||||||
|
// if (q.messages_unacknowledged > 0) {
|
||||||
|
// return true;
|
||||||
|
// }
|
||||||
|
|
||||||
|
// return false;
|
||||||
|
}
|
||||||
|
|
||||||
export function commandTypePath(commandCode: string): string | null {
|
export function commandTypePath(commandCode: string): string | null {
|
||||||
switch (commandCode) {
|
switch (commandCode) {
|
||||||
case "C-PM-01":
|
case "C-PM-01":
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue