created: script active act position
This commit is contained in:
parent
e92321d360
commit
9507040f75
1 changed files with 107 additions and 0 deletions
|
|
@ -20,6 +20,7 @@ import { PosMaster } from "../entities/PosMaster";
|
||||||
import { Brackets, LessThan, MoreThan } from "typeorm";
|
import { Brackets, LessThan, MoreThan } from "typeorm";
|
||||||
import { OrgRevision } from "../entities/OrgRevision";
|
import { OrgRevision } from "../entities/OrgRevision";
|
||||||
import Extension from "../interfaces/extension";
|
import Extension from "../interfaces/extension";
|
||||||
|
import { ProfileActposition } from "../entities/ProfileActposition";
|
||||||
|
|
||||||
@Route("api/v1/org/pos/act")
|
@Route("api/v1/org/pos/act")
|
||||||
@Tags("PosMasterAct")
|
@Tags("PosMasterAct")
|
||||||
|
|
@ -32,6 +33,7 @@ export class PosMasterActController extends Controller {
|
||||||
private orgRevisionRepository = AppDataSource.getRepository(OrgRevision);
|
private orgRevisionRepository = AppDataSource.getRepository(OrgRevision);
|
||||||
private posMasterActRepository = AppDataSource.getRepository(PosMasterAct);
|
private posMasterActRepository = AppDataSource.getRepository(PosMasterAct);
|
||||||
private posMasterRepository = AppDataSource.getRepository(PosMaster);
|
private posMasterRepository = AppDataSource.getRepository(PosMaster);
|
||||||
|
private actpositionRepository = AppDataSource.getRepository(ProfileActposition);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* API เพิ่มรักษาการในตำแหน่ง
|
* API เพิ่มรักษาการในตำแหน่ง
|
||||||
|
|
@ -535,4 +537,109 @@ export class PosMasterActController extends Controller {
|
||||||
|
|
||||||
return new HttpSuccess(_posMaster);
|
return new HttpSuccess(_posMaster);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* API รักษาการในตำแหน่ง active โดยไม่ต้องออกคำสั่ง
|
||||||
|
* @summary รักษาการในตำแหน่ง active ในระบบโดยไม่ต้องออกคำสั่ง (SUPER ADMIN)
|
||||||
|
* @param {string} id Id หน่วยงาน
|
||||||
|
*/
|
||||||
|
@Post("{id}")
|
||||||
|
async activePosMasterAct(@Path() id: string, @Request() req: { user: Record<string, any> }) {
|
||||||
|
const posMasterActs = await this.posMasterActRepository
|
||||||
|
.createQueryBuilder("posMasterAct")
|
||||||
|
.leftJoinAndSelect("posMasterAct.posMaster", "posMaster")
|
||||||
|
.leftJoinAndSelect("posMaster.orgRoot", "orgRoot")
|
||||||
|
.leftJoinAndSelect("posMaster.orgChild1", "orgChild1")
|
||||||
|
.leftJoinAndSelect("posMaster.orgChild2", "orgChild2")
|
||||||
|
.leftJoinAndSelect("posMaster.orgChild3", "orgChild3")
|
||||||
|
.leftJoinAndSelect("posMaster.orgChild4", "orgChild4")
|
||||||
|
.leftJoinAndSelect("posMaster.current_holder", "current_holder")
|
||||||
|
.leftJoinAndSelect("posMasterAct.posMasterChild", "posMasterChild")
|
||||||
|
.where("posMaster.orgRootId = :orgRootId", { orgRootId: id })
|
||||||
|
.andWhere("posMasterAct.statusReport = :statusReport", { statusReport: "PENDING" })
|
||||||
|
.select([
|
||||||
|
"posMasterAct.id",
|
||||||
|
"posMasterAct.statusReport",
|
||||||
|
"posMaster.posMasterNo",
|
||||||
|
"orgRoot.orgRootShortName",
|
||||||
|
"orgChild1.orgChild1ShortName",
|
||||||
|
"orgChild2.orgChild2ShortName",
|
||||||
|
"orgChild3.orgChild3ShortName",
|
||||||
|
"orgChild4.orgChild4ShortName",
|
||||||
|
"current_holder.position",
|
||||||
|
"posMasterChild.current_holderId",
|
||||||
|
])
|
||||||
|
.getMany();
|
||||||
|
|
||||||
|
if (posMasterActs.length === 0) {
|
||||||
|
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลรักษาการในตำแหน่งของหน่วยงานนี้");
|
||||||
|
}
|
||||||
|
|
||||||
|
await Promise.all(
|
||||||
|
posMasterActs.map(async (posMasterAct) => {
|
||||||
|
const orgShortName =
|
||||||
|
[
|
||||||
|
posMasterAct.posMaster?.orgChild4?.orgChild4ShortName,
|
||||||
|
posMasterAct.posMaster?.orgChild3?.orgChild3ShortName,
|
||||||
|
posMasterAct.posMaster?.orgChild2?.orgChild2ShortName,
|
||||||
|
posMasterAct.posMaster?.orgChild1?.orgChild1ShortName,
|
||||||
|
posMasterAct.posMaster?.orgRoot?.orgRootShortName,
|
||||||
|
].find(Boolean) ?? "";
|
||||||
|
|
||||||
|
const profileId = posMasterAct.posMasterChild?.current_holderId;
|
||||||
|
|
||||||
|
if (profileId) {
|
||||||
|
const existingActivePositions = await this.actpositionRepository.find({
|
||||||
|
select: [
|
||||||
|
"id",
|
||||||
|
"status",
|
||||||
|
"lastUpdateUserId",
|
||||||
|
"lastUpdateFullName",
|
||||||
|
"lastUpdatedAt",
|
||||||
|
"dateEnd",
|
||||||
|
],
|
||||||
|
where: { profileId, status: true },
|
||||||
|
});
|
||||||
|
|
||||||
|
if (existingActivePositions.length > 0) {
|
||||||
|
await Promise.all(
|
||||||
|
existingActivePositions.map(async (pos) => {
|
||||||
|
Object.assign(pos, {
|
||||||
|
status: false,
|
||||||
|
lastUpdateUserId: req.user?.sub ?? null,
|
||||||
|
lastUpdateFullName: req.user?.name ?? null,
|
||||||
|
lastUpdatedAt: new Date(),
|
||||||
|
dateEnd: new Date(),
|
||||||
|
});
|
||||||
|
await this.actpositionRepository.save(pos);
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const dataAct = new ProfileActposition();
|
||||||
|
Object.assign(dataAct, {
|
||||||
|
profileId: profileId ?? null,
|
||||||
|
dateStart: new Date(),
|
||||||
|
posNo:
|
||||||
|
orgShortName && posMasterAct.posMaster?.posMasterNo
|
||||||
|
? `${orgShortName} ${posMasterAct.posMaster.posMasterNo}`
|
||||||
|
: posMasterAct.posMaster?.posMasterNo ?? "-",
|
||||||
|
position: posMasterAct.posMaster?.current_holder?.position ?? null,
|
||||||
|
posNoAbb: orgShortName,
|
||||||
|
status: true,
|
||||||
|
createdUserId: req.user?.sub ?? null,
|
||||||
|
createdFullName: req.user?.name ?? null,
|
||||||
|
lastUpdateUserId: req.user?.sub ?? null,
|
||||||
|
lastUpdateFullName: req.user?.name ?? null,
|
||||||
|
});
|
||||||
|
await this.actpositionRepository.save(dataAct);
|
||||||
|
|
||||||
|
posMasterAct.statusReport = "DONE";
|
||||||
|
await this.posMasterActRepository.save(posMasterAct);
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
|
||||||
|
return new HttpSuccess();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue