parent
7e3982a96d
commit
194d79bf04
2 changed files with 203 additions and 259 deletions
|
|
@ -6,8 +6,6 @@ import HttpError from "../interfaces/http-error";
|
||||||
import { RequestWithUser } from "../middlewares/user";
|
import { RequestWithUser } from "../middlewares/user";
|
||||||
import { Profile } from "../entities/Profile";
|
import { Profile } from "../entities/Profile";
|
||||||
import { ProfileGovernment, UpdateProfileGovernment } from "../entities/ProfileGovernment";
|
import { ProfileGovernment, UpdateProfileGovernment } from "../entities/ProfileGovernment";
|
||||||
import { Position } from "../entities/Position";
|
|
||||||
import { PosMaster } from "../entities/PosMaster";
|
|
||||||
import {
|
import {
|
||||||
calculateAge,
|
calculateAge,
|
||||||
calculateGovAge,
|
calculateGovAge,
|
||||||
|
|
@ -15,7 +13,6 @@ import {
|
||||||
setLogDataDiff,
|
setLogDataDiff,
|
||||||
} from "../interfaces/utils";
|
} from "../interfaces/utils";
|
||||||
import permission from "../interfaces/permission";
|
import permission from "../interfaces/permission";
|
||||||
import { OrgRevision } from "../entities/OrgRevision";
|
|
||||||
import { In } from "typeorm";
|
import { In } from "typeorm";
|
||||||
@Route("api/v1/org/profile/government")
|
@Route("api/v1/org/profile/government")
|
||||||
@Tags("ProfileGovernment")
|
@Tags("ProfileGovernment")
|
||||||
|
|
@ -23,9 +20,6 @@ import { In } from "typeorm";
|
||||||
export class ProfileGovernmentHistoryController extends Controller {
|
export class ProfileGovernmentHistoryController extends Controller {
|
||||||
private profileRepo = AppDataSource.getRepository(Profile);
|
private profileRepo = AppDataSource.getRepository(Profile);
|
||||||
private govRepo = AppDataSource.getRepository(ProfileGovernment);
|
private govRepo = AppDataSource.getRepository(ProfileGovernment);
|
||||||
private positionRepo = AppDataSource.getRepository(Position);
|
|
||||||
private posMasterRepo = AppDataSource.getRepository(PosMaster);
|
|
||||||
private orgRevisionRepository = AppDataSource.getRepository(OrgRevision);
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @summary ข้อมูลราชการ
|
* @summary ข้อมูลราชการ
|
||||||
|
|
@ -33,13 +27,6 @@ export class ProfileGovernmentHistoryController extends Controller {
|
||||||
*/
|
*/
|
||||||
@Get("user")
|
@Get("user")
|
||||||
public async getGovHistoryUser(@Request() request: { user: Record<string, any> }) {
|
public async getGovHistoryUser(@Request() request: { user: Record<string, any> }) {
|
||||||
const orgRevision = await this.orgRevisionRepository.findOne({
|
|
||||||
select: ["id"],
|
|
||||||
where: {
|
|
||||||
orgRevisionIsDraft: false,
|
|
||||||
orgRevisionIsCurrent: true,
|
|
||||||
},
|
|
||||||
});
|
|
||||||
const profile = await this.profileRepo.findOneBy({ keycloak: request.user.sub });
|
const profile = await this.profileRepo.findOneBy({ keycloak: request.user.sub });
|
||||||
if (!profile) {
|
if (!profile) {
|
||||||
throw new HttpError(HttpStatus.BAD_REQUEST, "ไม่พบ profile ดังกล่าว");
|
throw new HttpError(HttpStatus.BAD_REQUEST, "ไม่พบ profile ดังกล่าว");
|
||||||
|
|
@ -51,79 +38,19 @@ export class ProfileGovernmentHistoryController extends Controller {
|
||||||
posLevel: true,
|
posLevel: true,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
const posMaster = await this.posMasterRepo.findOne({
|
|
||||||
where: {
|
|
||||||
// orgRevision: {
|
|
||||||
// orgRevisionIsCurrent: true,
|
|
||||||
// orgRevisionIsDraft: false,
|
|
||||||
// },
|
|
||||||
orgRevisionId: orgRevision?.id,
|
|
||||||
current_holderId: profile.id,
|
|
||||||
},
|
|
||||||
order: { createdAt: "DESC" },
|
|
||||||
relations: {
|
|
||||||
orgRoot: true,
|
|
||||||
orgChild1: true,
|
|
||||||
orgChild2: true,
|
|
||||||
orgChild3: true,
|
|
||||||
orgChild4: true,
|
|
||||||
},
|
|
||||||
});
|
|
||||||
const position = await this.positionRepo.findOne({
|
|
||||||
where: {
|
|
||||||
positionIsSelected: true,
|
|
||||||
posMaster: {
|
|
||||||
// orgRevision: {
|
|
||||||
// orgRevisionIsCurrent: true,
|
|
||||||
// orgRevisionIsDraft: false,
|
|
||||||
// },
|
|
||||||
orgRevisionId: orgRevision?.id,
|
|
||||||
current_holderId: profile.id,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
order: { createdAt: "DESC" },
|
|
||||||
relations: {
|
|
||||||
posExecutive: true,
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
if (!record) throw new HttpError(HttpStatus.NOT_FOUND, "ไม่พบข้อมูล");
|
if (!record) throw new HttpError(HttpStatus.NOT_FOUND, "ไม่พบข้อมูล");
|
||||||
const fullNameParts = [
|
|
||||||
posMaster == null || posMaster.orgChild4 == null ? null : posMaster.orgChild4.orgChild4Name,
|
// ดึงข้อมูลจาก profile ที่เก็บไว้แล้ว
|
||||||
posMaster == null || posMaster.orgChild3 == null ? null : posMaster.orgChild3.orgChild3Name,
|
|
||||||
posMaster == null || posMaster.orgChild2 == null ? null : posMaster.orgChild2.orgChild2Name,
|
|
||||||
posMaster == null || posMaster.orgChild1 == null ? null : posMaster.orgChild1.orgChild1Name,
|
|
||||||
posMaster == null || posMaster.orgRoot == null ? null : posMaster.orgRoot.orgRootName,
|
|
||||||
];
|
|
||||||
const org = fullNameParts.filter((part) => part !== undefined && part !== null).join("\n");
|
|
||||||
let orgShortName = "";
|
|
||||||
if (posMaster != null) {
|
|
||||||
if (posMaster.orgChild1Id === null) {
|
|
||||||
orgShortName = posMaster.orgRoot?.orgRootShortName;
|
|
||||||
} else if (posMaster.orgChild2Id === null) {
|
|
||||||
orgShortName = posMaster.orgChild1?.orgChild1ShortName;
|
|
||||||
} else if (posMaster.orgChild3Id === null) {
|
|
||||||
orgShortName = posMaster.orgChild2?.orgChild2ShortName;
|
|
||||||
} else if (posMaster.orgChild4Id === null) {
|
|
||||||
orgShortName = posMaster.orgChild3?.orgChild3ShortName;
|
|
||||||
} else {
|
|
||||||
orgShortName = posMaster.orgChild4?.orgChild4ShortName;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//posMaster?.isSit แก้ไขชั่วคราว
|
|
||||||
const data = {
|
const data = {
|
||||||
org: org, //สังกัด
|
org: record.org ?? null, //สังกัด
|
||||||
positionField: position == null || posMaster?.isSit ? null : position.positionField, //สายงาน
|
positionField: record.positionField ?? null, //สายงาน
|
||||||
position: record.position, //ตำแหน่ง
|
position: record.position, //ตำแหน่ง
|
||||||
posLevel: record.posLevel == null ? null : record.posLevel.posLevelName, //ระดับ
|
posLevel: record.posLevel == null ? null : record.posLevel.posLevelName, //ระดับ
|
||||||
posMasterNo: posMaster == null ? null : `${orgShortName} ${posMaster.posMasterNo}`, //เลขที่ตำแหน่ง
|
posMasterNo: record.posMasterNo ?? null, //เลขที่ตำแหน่ง
|
||||||
posType: record.posType == null ? null : record.posType.posTypeName, //ประเภท
|
posType: record.posType == null ? null : record.posType.posTypeName, //ประเภท
|
||||||
posExecutive:
|
posExecutive: record.posExecutive ?? null, //ตำแหน่งทางการบริหาร
|
||||||
position == null || position.posExecutive == null || posMaster?.isSit
|
positionArea: record.positionArea ?? null, //ด้าน/สาขา
|
||||||
? null
|
positionExecutiveField: record.positionExecutiveField ?? null, //ด้านทางการบริหาร
|
||||||
: position.posExecutive.posExecutiveName, //ตำแหน่งทางการบริหาร
|
|
||||||
positionArea: position == null || posMaster?.isSit ? null : position.positionArea, //ด้าน/สาขา
|
|
||||||
positionExecutiveField: position == null || posMaster?.isSit ? null : position.positionExecutiveField, //ด้านทางการบริหาร
|
|
||||||
dateLeave: record.birthDate == null ? null : calculateRetireDate(record.birthDate),
|
dateLeave: record.birthDate == null ? null : calculateRetireDate(record.birthDate),
|
||||||
dateRetireLaw: record.dateRetireLaw ?? null,
|
dateRetireLaw: record.dateRetireLaw ?? null,
|
||||||
// govAge: record.dateStart == null ? null : calculateAge(record.dateStart),
|
// govAge: record.dateStart == null ? null : calculateAge(record.dateStart),
|
||||||
|
|
@ -151,14 +78,6 @@ export class ProfileGovernmentHistoryController extends Controller {
|
||||||
if (_workflow == false)
|
if (_workflow == false)
|
||||||
await new permission().PermissionOrgUserGet(req, "SYS_REGISTRY_OFFICER", profileId);
|
await new permission().PermissionOrgUserGet(req, "SYS_REGISTRY_OFFICER", profileId);
|
||||||
|
|
||||||
const orgRevision = await this.orgRevisionRepository.findOne({
|
|
||||||
select: ["id"],
|
|
||||||
where: {
|
|
||||||
orgRevisionIsDraft: false,
|
|
||||||
orgRevisionIsCurrent: true,
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
// ค้นหา profile ก่อน
|
// ค้นหา profile ก่อน
|
||||||
const record = await this.profileRepo.findOne({
|
const record = await this.profileRepo.findOne({
|
||||||
where: { id: profileId },
|
where: { id: profileId },
|
||||||
|
|
@ -204,67 +123,10 @@ export class ProfileGovernmentHistoryController extends Controller {
|
||||||
|
|
||||||
// ใช้ profileSalary จาก query ที่สอง หรือ [] ถ้าไม่เจอ
|
// ใช้ profileSalary จาก query ที่สอง หรือ [] ถ้าไม่เจอ
|
||||||
record.profileSalary = profileWithSalary?.profileSalary || [];
|
record.profileSalary = profileWithSalary?.profileSalary || [];
|
||||||
const posMaster = await this.posMasterRepo.findOne({
|
|
||||||
where: {
|
|
||||||
orgRevisionId: orgRevision?.id,
|
|
||||||
current_holderId: profileId,
|
|
||||||
},
|
|
||||||
order: { createdAt: "DESC" },
|
|
||||||
relations: {
|
|
||||||
orgRoot: true,
|
|
||||||
orgChild1: true,
|
|
||||||
orgChild2: true,
|
|
||||||
orgChild3: true,
|
|
||||||
orgChild4: true,
|
|
||||||
},
|
|
||||||
});
|
|
||||||
const position = await this.positionRepo.findOne({
|
|
||||||
where: {
|
|
||||||
positionIsSelected: true,
|
|
||||||
posMaster: {
|
|
||||||
orgRevisionId: orgRevision?.id,
|
|
||||||
current_holderId: profileId,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
order: { createdAt: "DESC" },
|
|
||||||
relations: {
|
|
||||||
posExecutive: true,
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
// if (!record) throw new HttpError(HttpStatus.NOT_FOUND, "ไม่พบข้อมูล");
|
|
||||||
const fullNameParts = [
|
|
||||||
posMaster == null || posMaster.orgChild4 == null ? null : posMaster.orgChild4.orgChild4Name,
|
|
||||||
posMaster == null || posMaster.orgChild3 == null ? null : posMaster.orgChild3.orgChild3Name,
|
|
||||||
posMaster == null || posMaster.orgChild2 == null ? null : posMaster.orgChild2.orgChild2Name,
|
|
||||||
posMaster == null || posMaster.orgChild1 == null ? null : posMaster.orgChild1.orgChild1Name,
|
|
||||||
posMaster == null || posMaster.orgRoot == null ? null : posMaster.orgRoot.orgRootName,
|
|
||||||
];
|
|
||||||
const org = fullNameParts.filter((part) => part !== undefined && part !== null).join("\n");
|
|
||||||
let orgShortName = "";
|
|
||||||
if (posMaster != null) {
|
|
||||||
if (posMaster.orgChild1Id === null) {
|
|
||||||
orgShortName = posMaster.orgRoot?.orgRootShortName ?? "";
|
|
||||||
} else if (posMaster.orgChild2Id === null) {
|
|
||||||
orgShortName = posMaster.orgChild1?.orgChild1ShortName ?? "";
|
|
||||||
} else if (posMaster.orgChild3Id === null) {
|
|
||||||
orgShortName = posMaster.orgChild2?.orgChild2ShortName ?? "";
|
|
||||||
} else if (posMaster.orgChild4Id === null) {
|
|
||||||
orgShortName = posMaster.orgChild3?.orgChild3ShortName ?? "";
|
|
||||||
} else {
|
|
||||||
orgShortName = posMaster.orgChild4?.orgChild4ShortName ?? "";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
let _OrgLeave: any = [];
|
let _OrgLeave: any = [];
|
||||||
let _profileSalary: any = null;
|
let _profileSalary: any = null;
|
||||||
if (record?.isLeave && record?.profileSalary.length > 0) {
|
if (record?.isLeave && record?.profileSalary.length > 0) {
|
||||||
// _OrgLeave = [
|
|
||||||
// record?.profileSalary[0].orgChild4 ? record?.profileSalary[0].orgChild4 : null,
|
|
||||||
// record?.profileSalary[0].orgChild3 ? record?.profileSalary[0].orgChild3 : null,
|
|
||||||
// record?.profileSalary[0].orgChild2 ? record?.profileSalary[0].orgChild2 : null,
|
|
||||||
// record?.profileSalary[0].orgChild1 ? record?.profileSalary[0].orgChild1 : null,
|
|
||||||
// record?.profileSalary[0].orgRoot ? record?.profileSalary[0].orgRoot : null,
|
|
||||||
// ];
|
|
||||||
if (record.leaveType == "RETIRE") {
|
if (record.leaveType == "RETIRE") {
|
||||||
_profileSalary =
|
_profileSalary =
|
||||||
record?.profileSalary.length > 1
|
record?.profileSalary.length > 1
|
||||||
|
|
@ -288,27 +150,23 @@ export class ProfileGovernmentHistoryController extends Controller {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
const orgLeave = _OrgLeave.filter((x: any) => x !== undefined && x !== null).join("\n");
|
const orgLeave = _OrgLeave.filter((x: any) => x !== undefined && x !== null).join("\n");
|
||||||
//posMaster?.isSit แก้ไขชั่วคราว
|
|
||||||
|
// ดึงข้อมูลจาก profile ที่เก็บไว้แล้ว
|
||||||
const data = {
|
const data = {
|
||||||
org: record?.isLeave == false ? org : orgLeave, //สังกัด
|
org: record?.isLeave == false ? (record.org ?? null) : orgLeave, //สังกัด
|
||||||
positionField: position == null || posMaster?.isSit ? null : position.positionField, //สายงาน
|
positionField: record.positionField ?? null, //สายงาน
|
||||||
position: record?.position, //ตำแหน่ง
|
position: record?.position, //ตำแหน่ง
|
||||||
posLevel: record?.posLevel == null ? null : record?.posLevel.posLevelName, //ระดับ
|
posLevel: record?.posLevel == null ? null : record?.posLevel.posLevelName, //ระดับ
|
||||||
posMasterNo:
|
posMasterNo:
|
||||||
record?.isLeave == false
|
record?.isLeave == false
|
||||||
? posMaster == null
|
? record.posMasterNo ?? null
|
||||||
? null
|
|
||||||
: `${orgShortName} ${posMaster.posMasterNo}`
|
|
||||||
: _profileSalary != null
|
: _profileSalary != null
|
||||||
? `${_profileSalary.posNoAbb} ${_profileSalary.posNo}`
|
? `${_profileSalary.posNoAbb} ${_profileSalary.posNo}`
|
||||||
: null, //เลขที่ตำแหน่ง
|
: null, //เลขที่ตำแหน่ง
|
||||||
posType: record?.posType == null ? null : record?.posType.posTypeName, //ประเภท
|
posType: record?.posType == null ? null : record?.posType.posTypeName, //ประเภท
|
||||||
posExecutive:
|
posExecutive: record.posExecutive ?? null, //ตำแหน่งทางการบริหาร
|
||||||
position == null || position.posExecutive == null || posMaster?.isSit
|
positionArea: record.positionArea ?? null, //ด้าน/สาขา
|
||||||
? null
|
positionExecutiveField: record.positionExecutiveField ?? null, //ด้านทางการบริหาร
|
||||||
: position.posExecutive.posExecutiveName, //ตำแหน่งทางการบริหาร
|
|
||||||
positionArea: position == null || posMaster?.isSit ? null : position.positionArea, //ด้าน/สาขา
|
|
||||||
positionExecutiveField: position == null || posMaster?.isSit ? null : position.positionExecutiveField, //ด้านทางการบริหาร
|
|
||||||
dateLeave: record?.birthDate == null ? null : calculateRetireDate(record?.birthDate),
|
dateLeave: record?.birthDate == null ? null : calculateRetireDate(record?.birthDate),
|
||||||
dateRetireLaw: record?.dateRetireLaw ?? null,
|
dateRetireLaw: record?.dateRetireLaw ?? null,
|
||||||
// govAge: record?.dateStart == null ? null : calculateAge(record?.dateStart),
|
// govAge: record?.dateStart == null ? null : calculateAge(record?.dateStart),
|
||||||
|
|
@ -326,14 +184,6 @@ export class ProfileGovernmentHistoryController extends Controller {
|
||||||
|
|
||||||
@Get("admin/{profileId}")
|
@Get("admin/{profileId}")
|
||||||
public async getGovHistoryAdmin(@Path() profileId: string) {
|
public async getGovHistoryAdmin(@Path() profileId: string) {
|
||||||
const orgRevision = await this.orgRevisionRepository.findOne({
|
|
||||||
select: ["id"],
|
|
||||||
where: {
|
|
||||||
orgRevisionIsDraft: false,
|
|
||||||
orgRevisionIsCurrent: true,
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
// ค้นหา profile ก่อน
|
// ค้นหา profile ก่อน
|
||||||
const record = await this.profileRepo.findOne({
|
const record = await this.profileRepo.findOne({
|
||||||
where: { id: profileId },
|
where: { id: profileId },
|
||||||
|
|
@ -379,67 +229,10 @@ export class ProfileGovernmentHistoryController extends Controller {
|
||||||
|
|
||||||
// ใช้ profileSalary จาก query ที่สอง หรือ [] ถ้าไม่เจอ
|
// ใช้ profileSalary จาก query ที่สอง หรือ [] ถ้าไม่เจอ
|
||||||
record.profileSalary = profileWithSalary?.profileSalary || [];
|
record.profileSalary = profileWithSalary?.profileSalary || [];
|
||||||
const posMaster = await this.posMasterRepo.findOne({
|
|
||||||
where: {
|
|
||||||
orgRevisionId: orgRevision?.id,
|
|
||||||
current_holderId: profileId,
|
|
||||||
},
|
|
||||||
order: { createdAt: "DESC" },
|
|
||||||
relations: {
|
|
||||||
orgRoot: true,
|
|
||||||
orgChild1: true,
|
|
||||||
orgChild2: true,
|
|
||||||
orgChild3: true,
|
|
||||||
orgChild4: true,
|
|
||||||
},
|
|
||||||
});
|
|
||||||
const position = await this.positionRepo.findOne({
|
|
||||||
where: {
|
|
||||||
positionIsSelected: true,
|
|
||||||
posMaster: {
|
|
||||||
orgRevisionId: orgRevision?.id,
|
|
||||||
current_holderId: profileId,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
order: { createdAt: "DESC" },
|
|
||||||
relations: {
|
|
||||||
posExecutive: true,
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
// if (!record) throw new HttpError(HttpStatus.NOT_FOUND, "ไม่พบข้อมูล");
|
|
||||||
const fullNameParts = [
|
|
||||||
posMaster == null || posMaster.orgChild4 == null ? null : posMaster.orgChild4.orgChild4Name,
|
|
||||||
posMaster == null || posMaster.orgChild3 == null ? null : posMaster.orgChild3.orgChild3Name,
|
|
||||||
posMaster == null || posMaster.orgChild2 == null ? null : posMaster.orgChild2.orgChild2Name,
|
|
||||||
posMaster == null || posMaster.orgChild1 == null ? null : posMaster.orgChild1.orgChild1Name,
|
|
||||||
posMaster == null || posMaster.orgRoot == null ? null : posMaster.orgRoot.orgRootName,
|
|
||||||
];
|
|
||||||
const org = fullNameParts.filter((part) => part !== undefined && part !== null).join("\n");
|
|
||||||
let orgShortName = "";
|
|
||||||
if (posMaster != null) {
|
|
||||||
if (posMaster.orgChild1Id === null) {
|
|
||||||
orgShortName = posMaster.orgRoot?.orgRootShortName;
|
|
||||||
} else if (posMaster.orgChild2Id === null) {
|
|
||||||
orgShortName = posMaster.orgChild1?.orgChild1ShortName;
|
|
||||||
} else if (posMaster.orgChild3Id === null) {
|
|
||||||
orgShortName = posMaster.orgChild2?.orgChild2ShortName;
|
|
||||||
} else if (posMaster.orgChild4Id === null) {
|
|
||||||
orgShortName = posMaster.orgChild3?.orgChild3ShortName;
|
|
||||||
} else {
|
|
||||||
orgShortName = posMaster.orgChild4?.orgChild4ShortName;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
let _OrgLeave: any = [];
|
let _OrgLeave: any = [];
|
||||||
let _profileSalary: any = null;
|
let _profileSalary: any = null;
|
||||||
if (record?.isLeave && record?.profileSalary.length > 0) {
|
if (record?.isLeave && record?.profileSalary.length > 0) {
|
||||||
// _OrgLeave = [
|
|
||||||
// record?.profileSalary[0].orgChild4 ? record?.profileSalary[0].orgChild4 : null,
|
|
||||||
// record?.profileSalary[0].orgChild3 ? record?.profileSalary[0].orgChild3 : null,
|
|
||||||
// record?.profileSalary[0].orgChild2 ? record?.profileSalary[0].orgChild2 : null,
|
|
||||||
// record?.profileSalary[0].orgChild1 ? record?.profileSalary[0].orgChild1 : null,
|
|
||||||
// record?.profileSalary[0].orgRoot ? record?.profileSalary[0].orgRoot : null,
|
|
||||||
// ];
|
|
||||||
if (record.leaveType == "RETIRE") {
|
if (record.leaveType == "RETIRE") {
|
||||||
_profileSalary =
|
_profileSalary =
|
||||||
record?.profileSalary.length > 1
|
record?.profileSalary.length > 1
|
||||||
|
|
@ -463,27 +256,23 @@ export class ProfileGovernmentHistoryController extends Controller {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
const orgLeave = _OrgLeave.filter((x: any) => x !== undefined && x !== null).join("\n");
|
const orgLeave = _OrgLeave.filter((x: any) => x !== undefined && x !== null).join("\n");
|
||||||
//posMaster?.isSit แก้ไขชั่วคราว
|
|
||||||
|
// ดึงข้อมูลจาก profile ที่เก็บไว้แล้ว
|
||||||
const data = {
|
const data = {
|
||||||
org: record?.isLeave == false ? org : orgLeave, //สังกัด
|
org: record?.isLeave == false ? (record.org ?? null) : orgLeave, //สังกัด
|
||||||
positionField: position == null || posMaster?.isSit ? null : position.positionField, //สายงาน
|
positionField: record.positionField ?? null, //สายงาน
|
||||||
position: record?.position, //ตำแหน่ง
|
position: record?.position, //ตำแหน่ง
|
||||||
posLevel: record?.posLevel == null ? null : record?.posLevel.posLevelName, //ระดับ
|
posLevel: record?.posLevel == null ? null : record?.posLevel.posLevelName, //ระดับ
|
||||||
posMasterNo:
|
posMasterNo:
|
||||||
record?.isLeave == false
|
record?.isLeave == false
|
||||||
? posMaster == null
|
? record.posMasterNo ?? null
|
||||||
? null
|
|
||||||
: `${orgShortName} ${posMaster.posMasterNo}`
|
|
||||||
: _profileSalary != null
|
: _profileSalary != null
|
||||||
? `${_profileSalary.posNoAbb} ${_profileSalary.posNo}`
|
? `${_profileSalary.posNoAbb} ${_profileSalary.posNo}`
|
||||||
: null, //เลขที่ตำแหน่ง
|
: null, //เลขที่ตำแหน่ง
|
||||||
posType: record?.posType == null ? null : record?.posType.posTypeName, //ประเภท
|
posType: record?.posType == null ? null : record?.posType.posTypeName, //ประเภท
|
||||||
posExecutive:
|
posExecutive: record.posExecutive ?? null, //ตำแหน่งทางการบริหาร
|
||||||
position == null || position.posExecutive == null || posMaster?.isSit
|
positionArea: record.positionArea ?? null, //ด้าน/สาขา
|
||||||
? null
|
positionExecutiveField: record.positionExecutiveField ?? null, //ด้านทางการบริหาร
|
||||||
: position.posExecutive.posExecutiveName, //ตำแหน่งทางการบริหาร
|
|
||||||
positionArea: position == null || posMaster?.isSit ? null : position.positionArea, //ด้าน/สาขา
|
|
||||||
positionExecutiveField: position == null || posMaster?.isSit ? null : position.positionExecutiveField, //ด้านทางการบริหาร
|
|
||||||
dateLeave: record?.birthDate == null ? null : calculateRetireDate(record?.birthDate),
|
dateLeave: record?.birthDate == null ? null : calculateRetireDate(record?.birthDate),
|
||||||
dateRetireLaw: record?.dateRetireLaw ?? null,
|
dateRetireLaw: record?.dateRetireLaw ?? null,
|
||||||
// govAge: record?.dateStart == null ? null : calculateAge(record?.dateStart),
|
// govAge: record?.dateStart == null ? null : calculateAge(record?.dateStart),
|
||||||
|
|
@ -582,3 +371,4 @@ export class ProfileGovernmentHistoryController extends Controller {
|
||||||
return new HttpSuccess();
|
return new HttpSuccess();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
154
update_profile_position_fields.sql
Normal file
154
update_profile_position_fields.sql
Normal file
|
|
@ -0,0 +1,154 @@
|
||||||
|
-- =====================================================
|
||||||
|
-- Update position fields in profile table
|
||||||
|
-- อัพเดทฟิลด์ตำแหน่งในตาราง profile
|
||||||
|
--
|
||||||
|
-- Fields:
|
||||||
|
-- - positionField (สายงาน)
|
||||||
|
-- - posExecutive (ตำแหน่งทางการบริหาร)
|
||||||
|
-- - positionArea (ด้าน/สาขา)
|
||||||
|
-- - positionExecutiveField (ด้านทางการบริหาร)
|
||||||
|
-- - posMasterNo (เลขที่ตำแหน่ง) - format: orgShortName + space + number
|
||||||
|
-- - org (สังกัด)
|
||||||
|
--
|
||||||
|
-- Run each query separately to verify results
|
||||||
|
-- =====================================================
|
||||||
|
|
||||||
|
-- 1. Update positionField (สายงาน)
|
||||||
|
UPDATE profile p
|
||||||
|
INNER JOIN posMaster pm ON pm.current_holderId = p.id
|
||||||
|
INNER JOIN orgRevision oRev ON pm.orgRevisionId = oRev.id AND oRev.orgRevisionIsCurrent = 1 AND oRev.orgRevisionIsDraft = 0
|
||||||
|
INNER JOIN position pos ON pos.posMasterId = pm.id AND pos.positionIsSelected = 1
|
||||||
|
SET p.positionField = pos.positionField
|
||||||
|
WHERE p.positionField IS NULL;
|
||||||
|
|
||||||
|
-- 2. Update posExecutive (ตำแหน่งทางการบริหาร)
|
||||||
|
UPDATE profile p
|
||||||
|
INNER JOIN posMaster pm ON pm.current_holderId = p.id
|
||||||
|
INNER JOIN orgRevision oRev ON pm.orgRevisionId = oRev.id AND oRev.orgRevisionIsCurrent = 1 AND oRev.orgRevisionIsDraft = 0
|
||||||
|
INNER JOIN position pos ON pos.posMasterId = pm.id AND pos.positionIsSelected = 1
|
||||||
|
INNER JOIN posExecutive pe ON pos.posExecutiveId = pe.id
|
||||||
|
SET p.posExecutive = pe.posExecutiveName
|
||||||
|
WHERE p.posExecutive IS NULL;
|
||||||
|
|
||||||
|
-- 3. Update positionArea (ด้าน/สาขา)
|
||||||
|
UPDATE profile p
|
||||||
|
INNER JOIN posMaster pm ON pm.current_holderId = p.id
|
||||||
|
INNER JOIN orgRevision oRev ON pm.orgRevisionId = oRev.id AND oRev.orgRevisionIsCurrent = 1 AND oRev.orgRevisionIsDraft = 0
|
||||||
|
INNER JOIN position pos ON pos.posMasterId = pm.id AND pos.positionIsSelected = 1
|
||||||
|
SET p.positionArea = pos.positionArea
|
||||||
|
WHERE p.positionArea IS NULL;
|
||||||
|
|
||||||
|
-- 4. Update positionExecutiveField (ด้านทางการบริหาร)
|
||||||
|
UPDATE profile p
|
||||||
|
INNER JOIN posMaster pm ON pm.current_holderId = p.id
|
||||||
|
INNER JOIN orgRevision oRev ON pm.orgRevisionId = oRev.id AND oRev.orgRevisionIsCurrent = 1 AND oRev.orgRevisionIsDraft = 0
|
||||||
|
INNER JOIN position pos ON pos.posMasterId = pm.id AND pos.positionIsSelected = 1
|
||||||
|
SET p.positionExecutiveField = pos.positionExecutiveField
|
||||||
|
WHERE p.positionExecutiveField IS NULL;
|
||||||
|
|
||||||
|
-- 5. Update posMasterNo (เลขที่ตำแหน่ง) - format: orgShortName + space + number
|
||||||
|
UPDATE profile p
|
||||||
|
INNER JOIN posMaster pm ON pm.current_holderId = p.id
|
||||||
|
INNER JOIN orgRevision oRev ON pm.orgRevisionId = oRev.id AND oRev.orgRevisionIsCurrent = 1 AND oRev.orgRevisionIsDraft = 0
|
||||||
|
LEFT JOIN orgRoot r ON pm.orgRootId = r.id
|
||||||
|
LEFT JOIN orgChild1 c1 ON pm.orgChild1Id = c1.id
|
||||||
|
LEFT JOIN orgChild2 c2 ON pm.orgChild2Id = c2.id
|
||||||
|
LEFT JOIN orgChild3 c3 ON pm.orgChild3Id = c3.id
|
||||||
|
LEFT JOIN orgChild4 c4 ON pm.orgChild4Id = c4.id
|
||||||
|
SET p.posMasterNo = TRIM(CONCAT(
|
||||||
|
CASE
|
||||||
|
WHEN pm.orgChild1Id IS NULL THEN r.orgRootShortName
|
||||||
|
WHEN pm.orgChild2Id IS NULL THEN c1.orgChild1ShortName
|
||||||
|
WHEN pm.orgChild3Id IS NULL THEN c2.orgChild2ShortName
|
||||||
|
WHEN pm.orgChild4Id IS NULL THEN c3.orgChild3ShortName
|
||||||
|
ELSE c4.orgChild4ShortName
|
||||||
|
END,
|
||||||
|
' ',
|
||||||
|
pm.posMasterNo
|
||||||
|
))
|
||||||
|
WHERE p.posMasterNo IS NULL;
|
||||||
|
|
||||||
|
-- 6. Update org (สังกัด) - combine all org levels
|
||||||
|
UPDATE profile p
|
||||||
|
INNER JOIN posMaster pm ON pm.current_holderId = p.id
|
||||||
|
INNER JOIN orgRevision oRev ON pm.orgRevisionId = oRev.id AND oRev.orgRevisionIsCurrent = 1 AND oRev.orgRevisionIsDraft = 0
|
||||||
|
LEFT JOIN orgRoot r ON pm.orgRootId = r.id
|
||||||
|
LEFT JOIN orgChild1 c1 ON pm.orgChild1Id = c1.id
|
||||||
|
LEFT JOIN orgChild2 c2 ON pm.orgChild2Id = c2.id
|
||||||
|
LEFT JOIN orgChild3 c3 ON pm.orgChild3Id = c3.id
|
||||||
|
LEFT JOIN orgChild4 c4 ON pm.orgChild4Id = c4.id
|
||||||
|
SET p.org = TRIM(CONCAT_WS(
|
||||||
|
' ',
|
||||||
|
r.orgRootName,
|
||||||
|
c1.orgChild1Name,
|
||||||
|
c2.orgChild2Name,
|
||||||
|
c3.orgChild3Name,
|
||||||
|
c4.orgChild4Name
|
||||||
|
))
|
||||||
|
WHERE p.org IS NULL;
|
||||||
|
|
||||||
|
-- =====================================================
|
||||||
|
-- เช็คผลลัพธ์ (Check results)
|
||||||
|
-- =====================================================
|
||||||
|
|
||||||
|
-- เช็คจำนวนที่ update ได้
|
||||||
|
SELECT
|
||||||
|
COUNT(CASE WHEN positionField IS NOT NULL THEN 1 END) AS has_positionField,
|
||||||
|
COUNT(CASE WHEN posExecutive IS NOT NULL THEN 1 END) AS has_posExecutive,
|
||||||
|
COUNT(CASE WHEN positionArea IS NOT NULL THEN 1 END) AS has_positionArea,
|
||||||
|
COUNT(CASE WHEN positionExecutiveField IS NOT NULL THEN 1 END) AS has_positionExecutiveField,
|
||||||
|
COUNT(CASE WHEN posMasterNo IS NOT NULL THEN 1 END) AS has_posMasterNo,
|
||||||
|
COUNT(CASE WHEN org IS NOT NULL THEN 1 END) AS has_org
|
||||||
|
FROM profile;
|
||||||
|
|
||||||
|
-- =====================================================
|
||||||
|
-- SELECT query สำหรับทดสอบก่อนรัน (Test before run)
|
||||||
|
-- =====================================================
|
||||||
|
|
||||||
|
SELECT
|
||||||
|
p.id,
|
||||||
|
p.firstName,
|
||||||
|
p.lastName,
|
||||||
|
p.citizenId,
|
||||||
|
|
||||||
|
p.positionField as old_positionField,
|
||||||
|
p.posExecutive as old_posExecutive,
|
||||||
|
p.positionArea as old_positionArea,
|
||||||
|
p.positionExecutiveField as old_positionExecutiveField,
|
||||||
|
p.posMasterNo as old_posMasterNo,
|
||||||
|
p.org as old_org,
|
||||||
|
|
||||||
|
pos.positionField as new_positionField,
|
||||||
|
pe.posExecutiveName as new_posExecutive,
|
||||||
|
pos.positionArea as new_positionArea,
|
||||||
|
pos.positionExecutiveField as new_positionExecutiveField,
|
||||||
|
|
||||||
|
TRIM(CONCAT(
|
||||||
|
CASE
|
||||||
|
WHEN pm.orgChild1Id IS NULL THEN r.orgRootShortName
|
||||||
|
WHEN pm.orgChild2Id IS NULL THEN c1.orgChild1ShortName
|
||||||
|
WHEN pm.orgChild3Id IS NULL THEN c2.orgChild2ShortName
|
||||||
|
WHEN pm.orgChild4Id IS NULL THEN c3.orgChild3ShortName
|
||||||
|
ELSE c4.orgChild4ShortName
|
||||||
|
END,
|
||||||
|
' ',
|
||||||
|
pm.posMasterNo
|
||||||
|
)) as new_posMasterNo,
|
||||||
|
|
||||||
|
TRIM(CONCAT_WS(' ', r.orgRootName, c1.orgChild1Name, c2.orgChild2Name, c3.orgChild3Name, c4.orgChild4Name)) as new_org
|
||||||
|
|
||||||
|
FROM profile p
|
||||||
|
INNER JOIN posMaster pm ON pm.current_holderId = p.id
|
||||||
|
INNER JOIN orgRevision oRev ON pm.orgRevisionId = oRev.id AND oRev.orgRevisionIsCurrent = 1 AND oRev.orgRevisionIsDraft = 0
|
||||||
|
INNER JOIN position pos ON pos.posMasterId = pm.id AND pos.positionIsSelected = 1
|
||||||
|
LEFT JOIN posExecutive pe ON pos.posExecutiveId = pe.id
|
||||||
|
LEFT JOIN orgRoot r ON pm.orgRootId = r.id
|
||||||
|
LEFT JOIN orgChild1 c1 ON pm.orgChild1Id = c1.id
|
||||||
|
LEFT JOIN orgChild2 c2 ON pm.orgChild2Id = c2.id
|
||||||
|
LEFT JOIN orgChild3 c3 ON pm.orgChild3Id = c3.id
|
||||||
|
LEFT JOIN orgChild4 c4 ON pm.orgChild4Id = c4.id
|
||||||
|
|
||||||
|
-- ใส่ WHERE ทดสอบ 1 คน (Test 1 person)
|
||||||
|
WHERE p.id = 'ใส่ profile_id ที่ต้องการทดสอบ'
|
||||||
|
-- หรือทดสอบ 10 คน (Test 10 persons)
|
||||||
|
-- LIMIT 10;
|
||||||
Loading…
Add table
Add a link
Reference in a new issue