Merge branch 'develop' into adiDev

This commit is contained in:
AdisakKanthawilang 2025-06-26 15:58:53 +07:00
commit 434293418d
5 changed files with 274 additions and 121 deletions

View file

@ -3083,6 +3083,7 @@ export class CommandController extends Controller {
} }
posMaster.current_holderId = item.profileId; posMaster.current_holderId = item.profileId;
posMaster.conditionReason = _null;
if (posMasterOld != null) await this.posMasterRepository.save(posMasterOld); if (posMasterOld != null) await this.posMasterRepository.save(posMasterOld);
await this.posMasterRepository.save(posMaster); await this.posMasterRepository.save(posMaster);
@ -3333,7 +3334,7 @@ export class CommandController extends Controller {
positionTypeNew?: string | null; positionTypeNew?: string | null;
positionLevelNew?: string | null; positionLevelNew?: string | null;
positionNameNew?: string | null; positionNameNew?: string | null;
posmasterId?: string| null; posmasterId?: string | null;
posTypeNameNew?: string | null; posTypeNameNew?: string | null;
posLevelNameNew?: string | null; posLevelNameNew?: string | null;
posNoNew?: string | null; posNoNew?: string | null;
@ -3403,7 +3404,7 @@ export class CommandController extends Controller {
} }
let _commandYear = item.commandYear; let _commandYear = item.commandYear;
if (item.commandYear) { if (item.commandYear) {
_commandYear = item.commandYear > 2500 ? item.commandYear : item.commandYear+543 _commandYear = item.commandYear > 2500 ? item.commandYear : item.commandYear + 543;
} }
const returnWork = await checkReturnCommandType(String(item.commandId)); const returnWork = await checkReturnCommandType(String(item.commandId));
const dest_item = await this.salaryRepo.findOne({ const dest_item = await this.salaryRepo.findOne({
@ -3424,7 +3425,7 @@ export class CommandController extends Controller {
createdAt: new Date(), createdAt: new Date(),
lastUpdatedAt: new Date(), lastUpdatedAt: new Date(),
}; };
if(!returnWork) { if (!returnWork) {
Object.assign(data, { ...item, ...meta }); Object.assign(data, { ...item, ...meta });
const history = new ProfileSalaryHistory(); const history = new ProfileSalaryHistory();
Object.assign(history, { ...data, id: undefined }); Object.assign(history, { ...data, id: undefined });
@ -3486,13 +3487,14 @@ export class CommandController extends Controller {
await this.positionRepository.save(clearPosition); await this.positionRepository.save(clearPosition);
} }
posMaster.current_holderId = profile.id; posMaster.current_holderId = profile.id;
posMaster.conditionReason = _null;
await this.posMasterRepository.save(posMaster); await this.posMasterRepository.save(posMaster);
const positionNew = await this.positionRepository.findOne({ const positionNew = await this.positionRepository.findOne({
where: { where: {
posMasterId: posMaster.id, posMasterId: posMaster.id,
}, },
}); });
if(positionNew) { if (positionNew) {
positionNew.positionIsSelected = true; positionNew.positionIsSelected = true;
await this.positionRepository.save(positionNew, { data: req }); await this.positionRepository.save(positionNew, { data: req });
} }
@ -3523,7 +3525,7 @@ export class CommandController extends Controller {
commandName: item.commandName, commandName: item.commandName,
remark: item.remark, remark: item.remark,
}; };
Object.assign(data, {...newMapProfileSalary, ...meta}); Object.assign(data, { ...newMapProfileSalary, ...meta });
const history = new ProfileSalaryHistory(); const history = new ProfileSalaryHistory();
Object.assign(history, { ...data, id: undefined }); Object.assign(history, { ...data, id: undefined });
await this.salaryRepo.save(data); await this.salaryRepo.save(data);
@ -3552,10 +3554,15 @@ export class CommandController extends Controller {
// profile.birthDate.toISOString().slice(5, 7) + // profile.birthDate.toISOString().slice(5, 7) +
// gregorianYear; // gregorianYear;
// password = formattedDate; // password = formattedDate;
const _date = new Date(profile.birthDate.toDateString()).getDate().toString().padStart(2, "0"); const _date = new Date(profile.birthDate.toDateString())
const _month = (new Date(profile.birthDate.toDateString()).getMonth()+1).toString().padStart(2, "0"); .getDate()
const _year = (new Date(profile.birthDate.toDateString()).getFullYear()+543); .toString()
password = `${_date}${_month}${_year}` .padStart(2, "0");
const _month = (new Date(profile.birthDate.toDateString()).getMonth() + 1)
.toString()
.padStart(2, "0");
const _year = new Date(profile.birthDate.toDateString()).getFullYear() + 543;
password = `${_date}${_month}${_year}`;
} }
userKeycloakId = await createUser(profile.citizenId, password, { userKeycloakId = await createUser(profile.citizenId, password, {
firstName: profile.firstName, firstName: profile.firstName,
@ -3694,7 +3701,7 @@ export class CommandController extends Controller {
} }
let _commandYear = item.commandYear; let _commandYear = item.commandYear;
if (item.commandYear) { if (item.commandYear) {
_commandYear = item.commandYear > 2500 ? item.commandYear : item.commandYear+543 _commandYear = item.commandYear > 2500 ? item.commandYear : item.commandYear + 543;
} }
const dest_item = await this.salaryRepo.findOne({ const dest_item = await this.salaryRepo.findOne({
where: { profileEmployeeId: item.profileId }, where: { profileEmployeeId: item.profileId },
@ -3861,7 +3868,7 @@ export class CommandController extends Controller {
} }
let _commandYear = item.commandYear; let _commandYear = item.commandYear;
if (item.commandYear) { if (item.commandYear) {
_commandYear = item.commandYear > 2500 ? item.commandYear : item.commandYear+543 _commandYear = item.commandYear > 2500 ? item.commandYear : item.commandYear + 543;
} }
const dest_item = await this.salaryRepo.findOne({ const dest_item = await this.salaryRepo.findOne({
where: { profileId: item.profileId }, where: { profileId: item.profileId },
@ -4167,7 +4174,7 @@ export class CommandController extends Controller {
body.data.map(async (item) => { body.data.map(async (item) => {
let _commandYear = item.commandYear; let _commandYear = item.commandYear;
if (item.commandYear) { if (item.commandYear) {
_commandYear = item.commandYear > 2500 ? item.commandYear : item.commandYear+543 _commandYear = item.commandYear > 2500 ? item.commandYear : item.commandYear + 543;
} }
if (item.profileType && item.profileType.trim().toUpperCase() == "OFFICER") { if (item.profileType && item.profileType.trim().toUpperCase() == "OFFICER") {
const profile = await this.profileRepository.findOne({ const profile = await this.profileRepository.findOne({
@ -4679,7 +4686,7 @@ export class CommandController extends Controller {
} }
let _commandYear = item.commandYear; let _commandYear = item.commandYear;
if (item.commandYear) { if (item.commandYear) {
_commandYear = item.commandYear > 2500 ? item.commandYear : item.commandYear+543 _commandYear = item.commandYear > 2500 ? item.commandYear : item.commandYear + 543;
} }
// const orgRevision = await this.orgRevisionRepo.findOne({ // const orgRevision = await this.orgRevisionRepo.findOne({
// where: { // where: {
@ -5161,7 +5168,7 @@ export class CommandController extends Controller {
} }
let _commandYear = item.commandYear; let _commandYear = item.commandYear;
if (item.commandYear) { if (item.commandYear) {
_commandYear = item.commandYear > 2500 ? item.commandYear : item.commandYear+543 _commandYear = item.commandYear > 2500 ? item.commandYear : item.commandYear + 543;
} }
const _profile = await this.profileRepository.findOne({ const _profile = await this.profileRepository.findOne({
where: { id: item.profileId }, where: { id: item.profileId },
@ -5457,10 +5464,15 @@ export class CommandController extends Controller {
// item.bodyProfile.birthDate.toISOString().slice(5, 7) + // item.bodyProfile.birthDate.toISOString().slice(5, 7) +
// gregorianYear; // gregorianYear;
// password = formattedDate; // password = formattedDate;
const _date = new Date(item.bodyProfile.birthDate.toDateString()).getDate().toString().padStart(2, "0"); const _date = new Date(item.bodyProfile.birthDate.toDateString())
const _month = (new Date(item.bodyProfile.birthDate.toDateString()).getMonth()+1).toString().padStart(2, "0"); .getDate()
const _year = (new Date(item.bodyProfile.birthDate.toDateString()).getFullYear()+543); .toString()
password = `${_date}${_month}${_year}` .padStart(2, "0");
const _month = (new Date(item.bodyProfile.birthDate.toDateString()).getMonth() + 1)
.toString()
.padStart(2, "0");
const _year = new Date(item.bodyProfile.birthDate.toDateString()).getFullYear() + 543;
password = `${_date}${_month}${_year}`;
} }
userKeycloakId = await createUser(item.bodyProfile.citizenId, password, { userKeycloakId = await createUser(item.bodyProfile.citizenId, password, {
firstName: item.bodyProfile.firstName, firstName: item.bodyProfile.firstName,
@ -5501,7 +5513,7 @@ export class CommandController extends Controller {
relations: ["roleKeycloaks", "profileInsignias"], relations: ["roleKeycloaks", "profileInsignias"],
}); });
let _oldInsigniaIds: string[] = []; let _oldInsigniaIds: string[] = [];
if (!profile) { if (!profile) {
//กรณีลูกจ้างประจำมาสอบเป็นข้าราชการ ต้อง update สถานะโปรไฟล์เดิม //กรณีลูกจ้างประจำมาสอบเป็นข้าราชการ ต้อง update สถานะโปรไฟล์เดิม
let profileEmployee: any = await this.profileEmployeeRepository.findOne({ let profileEmployee: any = await this.profileEmployeeRepository.findOne({
where: { citizenId: item.bodyProfile.citizenId }, where: { citizenId: item.bodyProfile.citizenId },
@ -5525,14 +5537,14 @@ export class CommandController extends Controller {
const history = new ProfileSalaryHistory(); const history = new ProfileSalaryHistory();
Object.assign(history, { ...profileEmpSalary, id: undefined }); Object.assign(history, { ...profileEmpSalary, id: undefined });
profileEmpSalary.dateGovernment = meta.createdAt; profileEmpSalary.dateGovernment = meta.createdAt;
profileEmpSalary.profileId = _null, (profileEmpSalary.profileId = _null),
await this.salaryRepo.save(profileEmpSalary, { data: req }); await this.salaryRepo.save(profileEmpSalary, { data: req });
setLogDataDiff(req, { before, after: profileEmpSalary }); setLogDataDiff(req, { before, after: profileEmpSalary });
history.profileSalaryId = profileEmpSalary.id; history.profileSalaryId = profileEmpSalary.id;
await this.salaryHistoryRepo.save(history, { data: req }); await this.salaryHistoryRepo.save(history, { data: req });
if (profileEmployee.profileInsignias.length > 0) { if (profileEmployee.profileInsignias.length > 0) {
_oldInsigniaIds = profileEmployee.profileInsignias.map((x:any) => x.id); _oldInsigniaIds = profileEmployee.profileInsignias.map((x: any) => x.id);
} }
await removeProfileInOrganize(profileEmployee.id, "EMPLOYEE"); await removeProfileInOrganize(profileEmployee.id, "EMPLOYEE");
if (profileEmployee.keycloak != null) { if (profileEmployee.keycloak != null) {
@ -5593,9 +5605,12 @@ export class CommandController extends Controller {
//ขรก.ในระบบ หรือ ขรก.ในระบบที่สถานะพ้นจากราชการ //ขรก.ในระบบ หรือ ขรก.ในระบบที่สถานะพ้นจากราชการ
else { else {
//สร้างโปรไฟล์ใหม่ ถ้าสถานะพ้นราชการ คำสั่งโอนออกหรือคำสั่งขอลาออก //สร้างโปรไฟล์ใหม่ ถ้าสถานะพ้นราชการ คำสั่งโอนออกหรือคำสั่งขอลาออก
if (profile.isLeave && ["PLACEMENT_TRANSFER", "RETIRE_RESIGN"].includes(profile.leaveType)) { if (
profile.isLeave &&
["PLACEMENT_TRANSFER", "RETIRE_RESIGN"].includes(profile.leaveType)
) {
if (profile.profileInsignias.length > 0) { if (profile.profileInsignias.length > 0) {
_oldInsigniaIds = profile.profileInsignias.map((x:any) => x.id); _oldInsigniaIds = profile.profileInsignias.map((x: any) => x.id);
} }
profile = Object.assign({ ...item.bodyProfile, ...meta }); profile = Object.assign({ ...item.bodyProfile, ...meta });
profile.dateRetire = _dateRetire; profile.dateRetire = _dateRetire;
@ -5633,8 +5648,7 @@ export class CommandController extends Controller {
profile.phone = item.bodyProfile.phone ?? null; profile.phone = item.bodyProfile.phone ?? null;
await this.profileRepository.save(profile); await this.profileRepository.save(profile);
setLogDataDiff(req, { before, after: profile }); setLogDataDiff(req, { before, after: profile });
} } else {
else {
profile.roleKeycloaks = result && roleKeycloak ? [roleKeycloak] : []; profile.roleKeycloaks = result && roleKeycloak ? [roleKeycloak] : [];
profile.keycloak = profile.keycloak =
userKeycloakId && typeof userKeycloakId === "string" ? userKeycloakId : ""; userKeycloakId && typeof userKeycloakId === "string" ? userKeycloakId : "";
@ -5892,6 +5906,7 @@ export class CommandController extends Controller {
} }
posMaster.current_holderId = profile.id; posMaster.current_holderId = profile.id;
posMaster.conditionReason = _null;
if (posMasterOld != null) await this.posMasterRepository.save(posMasterOld); if (posMasterOld != null) await this.posMasterRepository.save(posMasterOld);
await this.posMasterRepository.save(posMaster); await this.posMasterRepository.save(posMaster);
@ -5912,8 +5927,8 @@ export class CommandController extends Controller {
await this.positionRepository.save(positionNew, { data: req }); await this.positionRepository.save(positionNew, { data: req });
} }
} }
// Insignia // Insignia
if(_oldInsigniaIds.length > 0) { if (_oldInsigniaIds.length > 0) {
const _insignias = await this.insigniaRepo.find({ const _insignias = await this.insigniaRepo.find({
where: { id: In(_oldInsigniaIds) }, where: { id: In(_oldInsigniaIds) },
order: { createdAt: "ASC" }, order: { createdAt: "ASC" },
@ -6277,10 +6292,15 @@ export class CommandController extends Controller {
// profile.birthDate.toISOString().slice(5, 7) + // profile.birthDate.toISOString().slice(5, 7) +
// gregorianYear; // gregorianYear;
// password = formattedDate; // password = formattedDate;
const _date = new Date(profile.birthDate.toDateString()).getDate().toString().padStart(2, "0"); const _date = new Date(profile.birthDate.toDateString())
const _month = (new Date(profile.birthDate.toDateString()).getMonth()+1).toString().padStart(2, "0"); .getDate()
const _year = (new Date(profile.birthDate.toDateString()).getFullYear()+543); .toString()
password = `${_date}${_month}${_year}` .padStart(2, "0");
const _month = (new Date(profile.birthDate.toDateString()).getMonth() + 1)
.toString()
.padStart(2, "0");
const _year = new Date(profile.birthDate.toDateString()).getFullYear() + 543;
password = `${_date}${_month}${_year}`;
} }
const userKeycloakId = await createUser(profile.citizenId, password, { const userKeycloakId = await createUser(profile.citizenId, password, {
firstName: profile.firstName, firstName: profile.firstName,
@ -6606,7 +6626,9 @@ export class CommandController extends Controller {
: "-", : "-",
dateEnd: "-", dateEnd: "-",
RemarkVertical: item.RemarkVertical ? Extension.ToThaiNumber(item.RemarkVertical) : "-", RemarkVertical: item.RemarkVertical ? Extension.ToThaiNumber(item.RemarkVertical) : "-",
RemarkHorizontal: item.RemarkHorizontal ? Extension.ToThaiNumber(item.RemarkHorizontal) : "-", RemarkHorizontal: item.RemarkHorizontal
? Extension.ToThaiNumber(item.RemarkHorizontal)
: "-",
order: order:
posMasterAct.posMasterOrder == null posMasterAct.posMasterOrder == null
? "-" ? "-"

View file

@ -4755,21 +4755,27 @@ export class ImportDataController extends Controller {
*/ */
@Post("tranferEntryToMain") @Post("tranferEntryToMain")
async tranferEntryToMain(@Request() request: { user: Record<string, any> }) { async tranferEntryToMain(@Request() request: { user: Record<string, any> }) {
const _profiles = await this.profileRepo
.createQueryBuilder("profile")
.leftJoinAndSelect("profile.profileSalary", "profileSalary")
.leftJoinAndSelect("profile.profileSalaryTemp", "profileSalaryTemp")
.where("profileSalary.isEntry = :isEntry", { isEntry: true })
.andWhere("profile.statusCheckEdit != :status", { status: "EDITED" })
.andWhere("profileSalaryTemp.id IS NULL") // 💥 filter ให้ profileSalaryTemp ว่าง
.orderBy("profileSalary.commandDateAffect", "ASC")
.addOrderBy("profileSalary.order", "ASC")
.getMany();
const profiles = await this.profileRepo.find({ const profiles = await this.profileRepo.find({
where: { where: {
citizenId: In([ id: In(_profiles.map((x) => x.id)),
"3860700270466", profileSalary: { isEntry: true },
"3909900758770", statusCheckEdit: Not("EDITED"),
"3309900659891",
"3100501312173",
"3360200140185",
"3101900524141",
"3102101307867",
]),
}, },
order: { profileSalary: { commandDateAffect: "ASC", order: "ASC" } }, order: { profileSalary: { commandDateAffect: "ASC", order: "ASC" } },
relations: ["profileSalary"], relations: ["profileSalary"],
}); });
// console.log(profiles.lengthisDelete)
for await (const item of profiles) { for await (const item of profiles) {
// 2. จัดกลุ่มข้อมูลตามวันที่คำสั่งมีผล // 2. จัดกลุ่มข้อมูลตามวันที่คำสั่งมีผล
const groupedByDate = this.groupOrdersByDate(item.profileSalary); const groupedByDate = this.groupOrdersByDate(item.profileSalary);
@ -4780,7 +4786,7 @@ export class ImportDataController extends Controller {
if (orders.length == 1) { if (orders.length == 1) {
num = num + 1; num = num + 1;
//save //save
orders.isDelete = false; orders[0].isDelete = false;
processedOrders.push(orders[0]); processedOrders.push(orders[0]);
continue; continue;
} }
@ -4819,7 +4825,7 @@ export class ImportDataController extends Controller {
const findCommandNo = _item.remark?.includes( const findCommandNo = _item.remark?.includes(
_item1.commandNo + "/" + (_item1.commandYear + 543), _item1.commandNo + "/" + (_item1.commandYear + 543),
); );
if (findCommandNo && chkEditCommandNo == true && chkCanCommandNo == true) { if (findCommandNo && (chkEditCommandNo == true || chkCanCommandNo == true)) {
_item.isDelete = true; _item.isDelete = true;
processedOrders.push(_item); processedOrders.push(_item);
orders = orders.filter((x: ProfileSalary) => x.id != _item.id); orders = orders.filter((x: ProfileSalary) => x.id != _item.id);
@ -4831,7 +4837,7 @@ export class ImportDataController extends Controller {
const _findCommandNo = _item.remark?.includes( const _findCommandNo = _item.remark?.includes(
_item1.commandNo + "/" + (_item1.commandYear + 543).toString().slice(-2), _item1.commandNo + "/" + (_item1.commandYear + 543).toString().slice(-2),
); );
if (_findCommandNo && chkEditCommandNo == true && chkCanCommandNo == true) { if (_findCommandNo && (chkEditCommandNo == true || chkCanCommandNo == true)) {
_item.isDelete = true; _item.isDelete = true;
processedOrders.push(_item); processedOrders.push(_item);
orders = orders.filter((x: ProfileSalary) => x.id != _item.id); orders = orders.filter((x: ProfileSalary) => x.id != _item.id);
@ -4938,15 +4944,15 @@ export class ImportDataController extends Controller {
async tranferEntryToMainEdit(@Request() request: { user: Record<string, any> }) { async tranferEntryToMainEdit(@Request() request: { user: Record<string, any> }) {
const profiles = await this.salaryTempRepo.find({ const profiles = await this.salaryTempRepo.find({
where: { where: {
profileId: In([ // profileId: In([
"529558c4-5c5d-431a-8b40-940cded51a41", // "529558c4-5c5d-431a-8b40-940cded51a41",
"649f2d08-2a01-48b1-afcc-8a4c99091b17", // "649f2d08-2a01-48b1-afcc-8a4c99091b17",
"9ac31312-441a-4cdf-a778-974d9232ca55", // "9ac31312-441a-4cdf-a778-974d9232ca55",
"9c6b5005-ee8e-432f-a83d-cd41fb199e56", // "9c6b5005-ee8e-432f-a83d-cd41fb199e56",
"c8c664de-e792-4fbd-85c1-fbeefdc860d4", // "c8c664de-e792-4fbd-85c1-fbeefdc860d4",
"c9639f3b-26d0-47fc-a53d-1a0e4926697e", // "c9639f3b-26d0-47fc-a53d-1a0e4926697e",
"e6d40cd6-c77b-4229-8e8d-a6df3f83394b", // "e6d40cd6-c77b-4229-8e8d-a6df3f83394b",
]), // ]),
isEntry: true, isEntry: true,
isDelete: true, isDelete: true,
}, },
@ -4975,6 +4981,45 @@ export class ImportDataController extends Controller {
} }
return new HttpSuccess(); return new HttpSuccess();
} }
/**
* @summary entry
*/
@Post("tranferEntryToMainEditEntry")
async tranferEntryToMainEditEntry(@Request() request: { user: Record<string, any> }) {
const profiles = await this.salaryTempRepo.find({
where: {
// profileId: In([
// "529558c4-5c5d-431a-8b40-940cded51a41",
// "649f2d08-2a01-48b1-afcc-8a4c99091b17",
// "9ac31312-441a-4cdf-a778-974d9232ca55",
// "9c6b5005-ee8e-432f-a83d-cd41fb199e56",
// "c8c664de-e792-4fbd-85c1-fbeefdc860d4",
// "c9639f3b-26d0-47fc-a53d-1a0e4926697e",
// "e6d40cd6-c77b-4229-8e8d-a6df3f83394b",
// ]),
isEntry: true,
},
relations: ["profile"],
});
let num = 1;
for await (const item of profiles) {
console.log(num);
num += 1;
const existingProfile = await this.ProfileSalariesRepo.createQueryBuilder("profile")
.where("profile.posNo = :posNo", { posNo: item.profile.citizenId })
.andWhere("CONCAT(profile.SalaryRef, ' ', profile.PositionName) = :remark", {
remark: item.remark,
})
.getOne();
if (existingProfile) {
item.remark = existingProfile.SalaryRef;
await this.salaryTempRepo.save(item);
}
}
return new HttpSuccess();
}
// ฟังก์ชันจัดกลุ่มตามวันที่ // ฟังก์ชันจัดกลุ่มตามวันที่
groupOrdersByDate(orders: ProfileSalary[]) { groupOrdersByDate(orders: ProfileSalary[]) {
return orders.reduce((groups: any, order) => { return orders.reduce((groups: any, order) => {

View file

@ -4688,6 +4688,8 @@ export class PositionController extends Controller {
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลทะเบียนประวัตินี้"); throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลทะเบียนประวัตินี้");
posMaster.current_holderId = body.profileId; posMaster.current_holderId = body.profileId;
const _null: any = null;
posMaster.conditionReason = _null;
if (posMasterOld != null) await this.posMasterRepository.save(posMasterOld); if (posMasterOld != null) await this.posMasterRepository.save(posMasterOld);
await this.posMasterRepository.save(posMaster); await this.posMasterRepository.save(posMaster);

View file

@ -1050,18 +1050,20 @@ export class ProfileEmployeeTempController extends Controller {
} }
/** /**
* API * API
* *
* @summary (ADMIN) * @summary (ADMIN)
* *
*/ */
@Get("temp") @Get("temp")
async listProfileEmp() { async listProfileEmp(@Request() request: RequestWithUser) {
let _dataOrg = await new permission().PermissionOrgList(request, "SYS_REGISTRY_TEMP");
const [record, total] = await this.profileRepo const [record, total] = await this.profileRepo
.createQueryBuilder("profileEmployee") .createQueryBuilder("profileEmployee")
.leftJoinAndSelect("profileEmployee.posLevel", "posLevel") .leftJoinAndSelect("profileEmployee.posLevel", "posLevel")
.leftJoinAndSelect("profileEmployee.posType", "posType") .leftJoinAndSelect("profileEmployee.posType", "posType")
.leftJoinAndSelect("profileEmployee.current_holders", "current_holders") .leftJoinAndSelect("profileEmployee.current_holders", "current_holders")
.leftJoinAndSelect("profileEmployee.current_holderTemps", "current_holderTemps")
.leftJoinAndSelect("profileEmployee.profileEmployeeEmployment", "profileEmployeeEmployment") .leftJoinAndSelect("profileEmployee.profileEmployeeEmployment", "profileEmployeeEmployment")
.leftJoinAndSelect("current_holders.positions", "positions") .leftJoinAndSelect("current_holders.positions", "positions")
.leftJoinAndSelect("current_holders.orgRoot", "orgRoot") .leftJoinAndSelect("current_holders.orgRoot", "orgRoot")
@ -1069,8 +1071,63 @@ export class ProfileEmployeeTempController extends Controller {
.leftJoinAndSelect("current_holders.orgChild2", "orgChild2") .leftJoinAndSelect("current_holders.orgChild2", "orgChild2")
.leftJoinAndSelect("current_holders.orgChild3", "orgChild3") .leftJoinAndSelect("current_holders.orgChild3", "orgChild3")
.leftJoinAndSelect("current_holders.orgChild4", "orgChild4") .leftJoinAndSelect("current_holders.orgChild4", "orgChild4")
.leftJoinAndSelect("current_holderTemps.orgRoot", "orgRootTemp")
.leftJoinAndSelect("current_holderTemps.orgChild1", "orgChild1Temp")
.leftJoinAndSelect("current_holderTemps.orgChild2", "orgChild2Temp")
.leftJoinAndSelect("current_holderTemps.orgChild3", "orgChild3Temp")
.leftJoinAndSelect("current_holderTemps.orgChild4", "orgChild4Temp")
.andWhere("profileEmployee.employeeClass = :employeeClass", { employeeClass: "TEMP" }) .andWhere("profileEmployee.employeeClass = :employeeClass", { employeeClass: "TEMP" })
.andWhere("profileEmployee.statusTemp = :statusTemp", { statusTemp: "PENDING" }) .andWhere("profileEmployee.statusTemp = :statusTemp", { statusTemp: "PENDING" })
.andWhere(
_dataOrg.root != undefined && _dataOrg.root != null
? _dataOrg.root[0] != null
? `current_holderTemps.orgRootId IN (:...root)`
: `current_holderTemps.orgRootId is null`
: "1=1",
{
root: _dataOrg.root,
},
)
.andWhere(
_dataOrg.child1 != undefined && _dataOrg.child1 != null
? _dataOrg.child1[0] != null
? `current_holderTemps.orgChild1Id IN (:...child1)`
: `current_holderTemps.orgChild1Id is null`
: "1=1",
{
child1: _dataOrg.child1,
},
)
.andWhere(
_dataOrg.child2 != undefined && _dataOrg.child2 != null
? _dataOrg.child2[0] != null
? `current_holderTemps.orgChild2Id IN (:...child2)`
: `current_holderTemps.orgChild2Id is null`
: "1=1",
{
child2: _dataOrg.child2,
},
)
.andWhere(
_dataOrg.child3 != undefined && _dataOrg.child3 != null
? _dataOrg.child3[0] != null
? `current_holderTemps.orgChild3Id IN (:...child3)`
: `current_holderTemps.orgChild3Id is null`
: "1=1",
{
child3: _dataOrg.child3,
},
)
.andWhere(
_dataOrg.child4 != undefined && _dataOrg.child4 != null
? _dataOrg.child4[0] != null
? `current_holderTemps.orgChild4Id IN (:...child4)`
: `current_holderTemps.orgChild4Id is null`
: "1=1",
{
child4: _dataOrg.child4,
},
)
.getManyAndCount(); .getManyAndCount();
const data = await Promise.all( const data = await Promise.all(
record.map((_data) => { record.map((_data) => {
@ -1409,9 +1466,9 @@ export class ProfileEmployeeTempController extends Controller {
} }
/** /**
* API * API
* *
* @summary ORG_065 - (ADMIN) #70 * @summary ORG_065 - (ADMIN) #70
* *
*/ */
@Get() @Get()
@ -1540,9 +1597,20 @@ export class ProfileEmployeeTempController extends Controller {
// : `profileEmployee.dateRetire IS NOT NULL` // : `profileEmployee.dateRetire IS NOT NULL`
// : "1=1", // : "1=1",
// ) // )
.andWhere("profileEmployee.employeeClass = :type", { .andWhere(
type: "TEMP", "profileEmployee.employeeClass = :type", {
}) type: type ? type.trim().toLocaleUpperCase() : "TEMP"
}
)
.orWhere(
`current_holderTemps.orgRootId is null AND current_holderTemps.orgChild1Id is null AND
current_holderTemps.orgChild2Id is null AND current_holderTemps.orgChild3Id is null AND
current_holderTemps.orgChild4Id is null AND profileEmployee.createdUserId = :keycloak AND
profileEmployee.employeeClass = :type`, {
keycloak: request.user.sub,
type: type ? type.trim().toLocaleUpperCase() : "TEMP",
}
)
.skip((page - 1) * pageSize) .skip((page - 1) * pageSize)
.take(pageSize) .take(pageSize)
.getManyAndCount(); .getManyAndCount();

View file

@ -58,10 +58,10 @@ export async function init() {
console.log(channel ? "[AMQ] Create channel success" : "[AMQ] Create channel failed"); console.log(channel ? "[AMQ] Create channel success" : "[AMQ] Create channel failed");
channel.assertQueue(queue, { durable: true }), //----> (1.5) assert queue and set durable (if "true" save to disk on RabbitMQ) channel.assertQueue(queue, { durable: true }), //----> (1.5) assert queue and set durable (if "true" save to disk on RabbitMQ)
channel.assertQueue(queue_org, { durable: true }), channel.assertQueue(queue_org, { durable: true }),
channel.assertQueue(queue_org_draft, { durable: true }), channel.assertQueue(queue_org_draft, { durable: true }),
channel.assertQueue(queue_command_noti, { durable: true }), channel.assertQueue(queue_command_noti, { durable: true }),
channel.prefetch(1); channel.prefetch(1);
sendToQueue = (payload: any, persistent = true) => { sendToQueue = (payload: any, persistent = true) => {
//----> (2) sendQueue To RabbitMQ and set persistent (if "true" redo the failed queue when server run again) //----> (2) sendQueue To RabbitMQ and set persistent (if "true" redo the failed queue when server run again)
@ -84,7 +84,7 @@ export async function init() {
console.log("[AMQ] Listening for message..."); console.log("[AMQ] Listening for message...");
createConsumer(queue, channel, handler), //----> (3) Process Consumer createConsumer(queue, channel, handler), //----> (3) Process Consumer
createConsumer(queue_org, channel, handler_org); createConsumer(queue_org, channel, handler_org);
createConsumer(queue_org_draft, channel, handler_org_draft); createConsumer(queue_org_draft, channel, handler_org_draft);
createConsumer(queue_command_noti, channel, handler_command_noti); createConsumer(queue_command_noti, channel, handler_command_noti);
// createConsumer(queue2, channel, handler2); // createConsumer(queue2, channel, handler2);
@ -168,7 +168,7 @@ async function handler(msg: amqp.ConsumeMessage): Promise<boolean> {
console.log("[AMQ] Excecute Command Success"); console.log("[AMQ] Excecute Command Success");
Object.assign(command, { status, lastUpdateUserId, lastUpdateFullName, lastUpdatedAt }); Object.assign(command, { status, lastUpdateUserId, lastUpdateFullName, lastUpdatedAt });
const result = await repo.save(command).catch((e) => console.log(e)); const result = await repo.save(command).catch((e) => console.log(e));
if(user){ if (user) {
sendWebSocket( sendWebSocket(
"send-command-notification", "send-command-notification",
{ {
@ -176,14 +176,14 @@ async function handler(msg: amqp.ConsumeMessage): Promise<boolean> {
message: `ระบบออกคำสั่งเลขที่ ${command.commandNo}/${command.commandYear + 543} เสร็จสิ้น`, message: `ระบบออกคำสั่งเลขที่ ${command.commandNo}/${command.commandYear + 543} เสร็จสิ้น`,
payload: command, payload: command,
}, },
{ userId: user?.sub}, { userId: user?.sub },
).catch(console.error); ).catch(console.error);
} }
return !!result; return !!result;
}) })
.catch((e) => { .catch((e) => {
console.error(e); console.error(e);
if(user){ if (user) {
sendWebSocket( sendWebSocket(
"send-command-notification", "send-command-notification",
{ {
@ -191,7 +191,7 @@ async function handler(msg: amqp.ConsumeMessage): Promise<boolean> {
message: `ระบบออกคำสั่งเลขที่ ${command.commandNo}/${command.commandYear + 543} ผิดพลาด`, message: `ระบบออกคำสั่งเลขที่ ${command.commandNo}/${command.commandYear + 543} ผิดพลาด`,
payload: command, payload: command,
}, },
{ userId: user?.sub}, { userId: user?.sub },
).catch(console.error); ).catch(console.error);
} }
return false; return false;
@ -306,12 +306,12 @@ async function handler_command_noti(msg: amqp.ConsumeMessage): Promise<boolean>
subject: `${command.issue}`, subject: `${command.issue}`,
body: `${command.issue}`, body: `${command.issue}`,
receiverUserIds: profiles, receiverUserIds: profiles,
payload: "",// แนบไฟล์ (ถ้าจำเป็น) payload: "", // แนบไฟล์ (ถ้าจำเป็น)
isSendMail: true, isSendMail: true,
isSendInbox: true, isSendInbox: true,
isSendNotification: true, isSendNotification: true,
}, },
false false,
) )
.catch((error) => { .catch((error) => {
if (error.response) { if (error.response) {
@ -329,17 +329,18 @@ async function handler_command_noti(msg: amqp.ConsumeMessage): Promise<boolean>
console.error("Full error object:", error); console.error("Full error object:", error);
}); });
let profilesSend = command && command.commandSends.length > 0 let profilesSend =
? command.commandSends command && command.commandSends.length > 0
.filter((x: any) => x.profileId != null) ? command.commandSends
.map((x: any) => ({ .filter((x: any) => x.profileId != null)
receiverUserId: x.profileId, .map((x: any) => ({
notiLink: "", receiverUserId: x.profileId,
isSendMail: x.commandSendCCs.map((x: any) => x.name == "EMAIL").length > 0, notiLink: "",
isSendInbox: x.commandSendCCs.map((x: any) => x.name == "INBOX").length > 0, isSendMail: x.commandSendCCs.map((x: any) => x.name == "EMAIL").length > 0,
isSendNotification: true, isSendInbox: x.commandSendCCs.map((x: any) => x.name == "INBOX").length > 0,
})) isSendNotification: true,
: []; }))
: [];
const profilesSendRequest = new CallAPI() const profilesSendRequest = new CallAPI()
.PostData( .PostData(
@ -349,10 +350,11 @@ async function handler_command_noti(msg: amqp.ConsumeMessage): Promise<boolean>
subject: `${command.issue}`, subject: `${command.issue}`,
body: `${command.issue}`, body: `${command.issue}`,
receiverUserIds: profilesSend, receiverUserIds: profilesSend,
payload: "", // แนบไฟล์ (ถ้าจำเป็น) payload: "", // แนบไฟล์ (ถ้าจำเป็น)
}, },
false false,
).catch((error) => { )
.catch((error) => {
if (error.response) { if (error.response) {
// Server ตอบกลับ (มี status code 4xx หรือ 5xx) // Server ตอบกลับ (มี status code 4xx หรือ 5xx)
console.error("Error status:", error.response.status); console.error("Error status:", error.response.status);
@ -372,14 +374,12 @@ async function handler_command_noti(msg: amqp.ConsumeMessage): Promise<boolean>
console.log("[AMQ] Send Notification Success"); console.log("[AMQ] Send Notification Success");
return true; return true;
} catch (error) { } catch (error) {
console.error("[AMQ] Error:", error); console.error("[AMQ] Error:", error);
return false; return false;
} }
} }
async function handler_org(msg: amqp.ConsumeMessage): Promise<boolean> { async function handler_org(msg: amqp.ConsumeMessage): Promise<boolean> {
//----> condition before process consume //----> condition before process consume
const repoPosmaster = AppDataSource.getRepository(PosMaster); const repoPosmaster = AppDataSource.getRepository(PosMaster);
@ -397,7 +397,7 @@ async function handler_org(msg: amqp.ConsumeMessage): Promise<boolean> {
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();
@ -406,12 +406,14 @@ async function handler_org(msg: amqp.ConsumeMessage): Promise<boolean> {
.where("orgRevision.orgRevisionIsDraft = true") .where("orgRevision.orgRevisionIsDraft = true")
.andWhere("orgRevision.orgRevisionIsCurrent = false") .andWhere("orgRevision.orgRevisionIsCurrent = false")
.getOne(); .getOne();
if (orgRevisionPublish) { //เข้าเงื่อนไขจะเปลี่ยนสถานะ orgRevisionPublish เป็นไม่ใช่ current และไม่เป็น daft if (orgRevisionPublish) {
//เข้าเงื่อนไขจะเปลี่ยนสถานะ orgRevisionPublish เป็นไม่ใช่ current และไม่เป็น daft
orgRevisionPublish.orgRevisionIsDraft = false; orgRevisionPublish.orgRevisionIsDraft = false;
orgRevisionPublish.orgRevisionIsCurrent = false; orgRevisionPublish.orgRevisionIsCurrent = false;
await repoOrgRevision.save(orgRevisionPublish); await repoOrgRevision.save(orgRevisionPublish);
} }
if (orgRevisionDraft) { //เข้าเงื่อนไขจะเปลี่ยนสถานะ orgRevisionDraft เป็นไม่ใช่ daft และเป็น current if (orgRevisionDraft) {
//เข้าเงื่อนไขจะเปลี่ยนสถานะ orgRevisionDraft เป็นไม่ใช่ daft และเป็น current
orgRevisionDraft.orgRevisionIsCurrent = true; orgRevisionDraft.orgRevisionIsCurrent = true;
orgRevisionDraft.orgRevisionIsDraft = false; orgRevisionDraft.orgRevisionIsDraft = false;
await repoOrgRevision.save(orgRevisionDraft); await repoOrgRevision.save(orgRevisionDraft);
@ -449,7 +451,8 @@ async function handler_org(msg: amqp.ConsumeMessage): Promise<boolean> {
} }
} }
item.current_holderId = item.next_holderId; item.current_holderId = item.next_holderId;
if(item.current_holderId){ item.conditionReason = _null;
if (item.current_holderId) {
item.conditionReason = _null; item.conditionReason = _null;
} }
item.next_holderId = null; item.next_holderId = null;
@ -461,7 +464,7 @@ async function handler_org(msg: amqp.ConsumeMessage): Promise<boolean> {
if (orgRevisionPublish != null && orgRevisionDraft != null) { if (orgRevisionPublish != null && orgRevisionDraft != null) {
//new main revision //new main revision
const before = null; const before = null;
//ทุก orgRoot และ orgChild ข้างล่างนี้จะเป็นตัวเก่าที่ไม่ได้เป็น current revision //ทุก orgRoot และ orgChild ข้างล่างนี้จะเป็นตัวเก่าที่ไม่ได้เป็น current revision
//cone tree //cone tree
// if ( // if (
@ -475,7 +478,7 @@ async function handler_org(msg: amqp.ConsumeMessage): Promise<boolean> {
const orgRoot = await orgRootRepository.find({ const orgRoot = await orgRootRepository.find({
where: { orgRevisionId: orgRevisionPublish.id }, where: { orgRevisionId: orgRevisionPublish.id },
}); });
const orgChild1 = await child1Repository.find({ const orgChild1 = await child1Repository.find({
where: { orgRevisionId: orgRevisionPublish.id }, where: { orgRevisionId: orgRevisionPublish.id },
}); });
@ -537,11 +540,11 @@ async function handler_org(msg: amqp.ConsumeMessage): Promise<boolean> {
})); }));
await repoEmployeeTempPosmaster.save(_orgemployeeTempPosMaster); await repoEmployeeTempPosmaster.save(_orgemployeeTempPosMaster);
// } // }
//create org //create org
orgRoot.forEach(async (x: any) => { orgRoot.forEach(async (x: any) => {
var dataId = x.id; var dataId = x.id;
const orgRootCurrent = await orgRootRepository.find({ const orgRootCurrent = await orgRootRepository.find({
where: { orgRevisionId: orgRevisionDraft.id }, where: { orgRevisionId: orgRevisionDraft.id },
}); });
@ -549,18 +552,20 @@ async function handler_org(msg: amqp.ConsumeMessage): Promise<boolean> {
const matchedOrgRoot = orgRootCurrent.find((i: OrgRoot) => { const matchedOrgRoot = orgRootCurrent.find((i: OrgRoot) => {
if ( if (
x.ancestorDNA === x.id || // ถ้า ancestorDNA ถูกตั้งเป็น id ตัวเอง x.ancestorDNA === x.id || // ถ้า ancestorDNA ถูกตั้งเป็น id ตัวเอง
x.ancestorDNA === null || x.ancestorDNA === null ||
x.ancestorDNA === "00000000-0000-0000-0000-000000000000" x.ancestorDNA === "00000000-0000-0000-0000-000000000000"
) { ) {
return i.ancestorDNA === null || i.ancestorDNA === "00000000-0000-0000-0000-000000000000"; return (
i.ancestorDNA === null || i.ancestorDNA === "00000000-0000-0000-0000-000000000000"
);
} }
return i.ancestorDNA === x.ancestorDNA; return i.ancestorDNA === x.ancestorDNA;
}); });
// if ( // if (
// requestBody.typeDraft.toUpperCase() == "ORG_POSITION" || // requestBody.typeDraft.toUpperCase() == "ORG_POSITION" ||
// requestBody.typeDraft.toUpperCase() == "ORG_POSITION_PERSON" || // requestBody.typeDraft.toUpperCase() == "ORG_POSITION_PERSON" ||
// requestBody.typeDraft.toUpperCase() == "ORG_POSITION_ROLE" || // requestBody.typeDraft.toUpperCase() == "ORG_POSITION_ROLE" ||
// requestBody.typeDraft.toUpperCase() == "ORG_POSITION_PERSON_ROLE" // requestBody.typeDraft.toUpperCase() == "ORG_POSITION_PERSON_ROLE"
// ) { // ) {
//create employeePosmaster //create employeePosmaster
@ -590,7 +595,7 @@ async function handler_org(msg: amqp.ConsumeMessage): Promise<boolean> {
// } // }
// employeePosMaster.current_holderId = null; // employeePosMaster.current_holderId = null;
employeePosMaster.orgRevisionId = orgRevisionDraft.id; employeePosMaster.orgRevisionId = orgRevisionDraft.id;
employeePosMaster.orgRootId = matchedOrgRoot?.id ?? null employeePosMaster.orgRootId = matchedOrgRoot?.id ?? null;
employeePosMaster.createdUserId = ""; employeePosMaster.createdUserId = "";
employeePosMaster.createdFullName = "System Administrator"; employeePosMaster.createdFullName = "System Administrator";
employeePosMaster.createdAt = new Date(); employeePosMaster.createdAt = new Date();
@ -697,10 +702,12 @@ async function handler_org(msg: amqp.ConsumeMessage): Promise<boolean> {
const matchedOrgChild1 = orgChild1Current.find((i: OrgChild1) => { const matchedOrgChild1 = orgChild1Current.find((i: OrgChild1) => {
if ( if (
x.ancestorDNA === x.id || // ถ้า ancestorDNA ถูกตั้งเป็น id ตัวเอง x.ancestorDNA === x.id || // ถ้า ancestorDNA ถูกตั้งเป็น id ตัวเอง
x.ancestorDNA === null || x.ancestorDNA === null ||
x.ancestorDNA === "00000000-0000-0000-0000-000000000000" x.ancestorDNA === "00000000-0000-0000-0000-000000000000"
) { ) {
return i.ancestorDNA === null || i.ancestorDNA === "00000000-0000-0000-0000-000000000000"; return (
i.ancestorDNA === null || i.ancestorDNA === "00000000-0000-0000-0000-000000000000"
);
} }
return i.ancestorDNA === x.ancestorDNA; return i.ancestorDNA === x.ancestorDNA;
}); });
@ -782,7 +789,7 @@ async function handler_org(msg: amqp.ConsumeMessage): Promise<boolean> {
.map(async (item: any) => { .map(async (item: any) => {
delete item.id; delete item.id;
const employeeTempPosMaster = Object.assign(new EmployeeTempPosMaster(), item); const employeeTempPosMaster = Object.assign(new EmployeeTempPosMaster(), item);
employeeTempPosMaster.positions = []; employeeTempPosMaster.positions = [];
// if ( // if (
// requestBody.typeDraft.toUpperCase() == "ORG_POSITION_PERSON" || // requestBody.typeDraft.toUpperCase() == "ORG_POSITION_PERSON" ||
// requestBody.typeDraft.toUpperCase() == "ORG_POSITION_PERSON_ROLE" // requestBody.typeDraft.toUpperCase() == "ORG_POSITION_PERSON_ROLE"
@ -846,14 +853,17 @@ async function handler_org(msg: amqp.ConsumeMessage): Promise<boolean> {
const orgChild2Current = await child2Repository.find({ const orgChild2Current = await child2Repository.find({
where: { orgRevisionId: orgRevisionDraft.id }, where: { orgRevisionId: orgRevisionDraft.id },
}); });
const matchedOrgChild2 = orgChild2Current.find((i: OrgChild2) => { const matchedOrgChild2 = orgChild2Current.find((i: OrgChild2) => {
if ( if (
x.ancestorDNA === x.id || // ถ้า ancestorDNA ถูกตั้งเป็น id ตัวเอง x.ancestorDNA === x.id || // ถ้า ancestorDNA ถูกตั้งเป็น id ตัวเอง
x.ancestorDNA === null || x.ancestorDNA === null ||
x.ancestorDNA === "00000000-0000-0000-0000-000000000000" x.ancestorDNA === "00000000-0000-0000-0000-000000000000"
) { ) {
return i.ancestorDNA === null || i.ancestorDNA === "00000000-0000-0000-0000-000000000000"; return (
i.ancestorDNA === null ||
i.ancestorDNA === "00000000-0000-0000-0000-000000000000"
);
} }
return i.ancestorDNA === x.ancestorDNA; return i.ancestorDNA === x.ancestorDNA;
}); });
@ -1007,14 +1017,17 @@ async function handler_org(msg: amqp.ConsumeMessage): Promise<boolean> {
const orgChild3Current = await child3Repository.find({ const orgChild3Current = await child3Repository.find({
where: { orgRevisionId: orgRevisionDraft.id }, where: { orgRevisionId: orgRevisionDraft.id },
}); });
const matchedOrgChild3 = orgChild3Current.find((i: OrgChild3) => { const matchedOrgChild3 = orgChild3Current.find((i: OrgChild3) => {
if ( if (
x.ancestorDNA === x.id || // ถ้า ancestorDNA ถูกตั้งเป็น id ตัวเอง x.ancestorDNA === x.id || // ถ้า ancestorDNA ถูกตั้งเป็น id ตัวเอง
x.ancestorDNA === null || x.ancestorDNA === null ||
x.ancestorDNA === "00000000-0000-0000-0000-000000000000" x.ancestorDNA === "00000000-0000-0000-0000-000000000000"
) { ) {
return i.ancestorDNA === null || i.ancestorDNA === "00000000-0000-0000-0000-000000000000"; return (
i.ancestorDNA === null ||
i.ancestorDNA === "00000000-0000-0000-0000-000000000000"
);
} }
return i.ancestorDNA === x.ancestorDNA; return i.ancestorDNA === x.ancestorDNA;
}); });
@ -1171,14 +1184,17 @@ async function handler_org(msg: amqp.ConsumeMessage): Promise<boolean> {
const orgChild4Current = await child4Repository.find({ const orgChild4Current = await child4Repository.find({
where: { orgRevisionId: orgRevisionDraft.id }, where: { orgRevisionId: orgRevisionDraft.id },
}); });
const matchedOrgChild4 = orgChild4Current.find((i: OrgChild4) => { const matchedOrgChild4 = orgChild4Current.find((i: OrgChild4) => {
if ( if (
x.ancestorDNA === x.id || // ถ้า ancestorDNA ถูกตั้งเป็น id ตัวเอง x.ancestorDNA === x.id || // ถ้า ancestorDNA ถูกตั้งเป็น id ตัวเอง
x.ancestorDNA === null || x.ancestorDNA === null ||
x.ancestorDNA === "00000000-0000-0000-0000-000000000000" x.ancestorDNA === "00000000-0000-0000-0000-000000000000"
) { ) {
return i.ancestorDNA === null || i.ancestorDNA === "00000000-0000-0000-0000-000000000000"; return (
i.ancestorDNA === null ||
i.ancestorDNA === "00000000-0000-0000-0000-000000000000"
);
} }
return i.ancestorDNA === x.ancestorDNA; return i.ancestorDNA === x.ancestorDNA;
}); });
@ -1560,7 +1576,7 @@ async function handler_org_draft(msg: amqp.ConsumeMessage): Promise<boolean> {
) )
) { ) {
posMaster.next_holderId = item.current_holderId; posMaster.next_holderId = item.current_holderId;
if(posMaster.next_holderId){ if (posMaster.next_holderId) {
posMaster.conditionReason = _null; posMaster.conditionReason = _null;
} }
} else { } else {
@ -1655,7 +1671,7 @@ async function handler_org_draft(msg: amqp.ConsumeMessage): Promise<boolean> {
) )
) { ) {
posMaster.next_holderId = item.current_holderId; posMaster.next_holderId = item.current_holderId;
if(posMaster.next_holderId){ if (posMaster.next_holderId) {
posMaster.conditionReason = _null; posMaster.conditionReason = _null;
} }
} else { } else {
@ -1752,7 +1768,7 @@ async function handler_org_draft(msg: amqp.ConsumeMessage): Promise<boolean> {
) )
) { ) {
posMaster.next_holderId = item.current_holderId; posMaster.next_holderId = item.current_holderId;
if(posMaster.next_holderId){ if (posMaster.next_holderId) {
posMaster.conditionReason = _null; posMaster.conditionReason = _null;
} }
} else { } else {
@ -1851,7 +1867,7 @@ async function handler_org_draft(msg: amqp.ConsumeMessage): Promise<boolean> {
) )
) { ) {
posMaster.next_holderId = item.current_holderId; posMaster.next_holderId = item.current_holderId;
if(posMaster.next_holderId){ if (posMaster.next_holderId) {
posMaster.conditionReason = _null; posMaster.conditionReason = _null;
} }
} else { } else {
@ -1953,7 +1969,7 @@ async function handler_org_draft(msg: amqp.ConsumeMessage): Promise<boolean> {
) )
) { ) {
posMaster.next_holderId = item.current_holderId; posMaster.next_holderId = item.current_holderId;
if(posMaster.next_holderId){ if (posMaster.next_holderId) {
posMaster.conditionReason = _null; posMaster.conditionReason = _null;
} }
} else { } else {
@ -2024,7 +2040,7 @@ async function handler_org_draft(msg: amqp.ConsumeMessage): Promise<boolean> {
} }
//ลบ daft เก่าที่ค้างแล้วยังไม่ได้เผยแพร่ //ลบ daft เก่าที่ค้างแล้วยังไม่ได้เผยแพร่
const _orgRevisions = await orgRevisionRepository.find({ const _orgRevisions = await orgRevisionRepository.find({
where: [{ orgRevisionIsDraft: true, id: Not(revision.id) }], where: [{ orgRevisionIsDraft: true, id: Not(revision.id) }],
}); });
const _roots = await orgRootRepository.find({ const _roots = await orgRootRepository.find({
where: [{ orgRevisionId: In(_orgRevisions.map((x) => x.id)) }], where: [{ orgRevisionId: In(_orgRevisions.map((x) => x.id)) }],