Merge branch 'develop'

* develop:
  fix
  ระยะเวลาครองตำแหน่ง (ในทะเบียนประวัติ)
  migrate
  หาหัวหน้าปลัด
  no message
  แบบร่างลูกจ้าง
  comment import entry
  no message
  edit build
  update commander-director-position
  fix report
  fix issue #1217
  fix issue #1217
  แก้คำสั่ง
  fix posLevel
  fix issue #1194
  del migrate
  migrate
  fix commandNo : type (String)
This commit is contained in:
Warunee Tamkoo 2025-02-27 16:05:47 +07:00
commit 31663244d3
16 changed files with 1680 additions and 306 deletions

View file

@ -3423,6 +3423,7 @@ export class CommandController extends Controller {
profileId: profile.id,
commandId: item.commandId,
position: profile.position,
positionName: profile.position,
positionType: profile?.posType?.posTypeName ?? null,
positionLevel: profile?.posLevel?.posLevelName ?? null,
positionExecutive: position?.posExecutive?.posExecutiveName ?? null,
@ -3451,8 +3452,8 @@ export class CommandController extends Controller {
isGovernment: item.isGovernment,
commandNo: item.commandNo,
commandYear: item.commandYear,
posNo: shortName,
posNoAbb: posNo,
posNo: posNo,
posNoAbb: shortName,
commandDateAffect: item.commandDateAffect,
commandDateSign: item.commandDateSign,
commandCode: item.commandCode,
@ -3612,6 +3613,7 @@ export class CommandController extends Controller {
profileEmployeeId: profile.id,
commandId: item.commandId,
position: profile.position,
positionName: profile.position,
positionType: profile?.posType?.posTypeName ?? null,
positionLevel: profile?.posLevel?.posLevelName ?? null,
amount: item.amount ? item.amount : null,
@ -3638,8 +3640,8 @@ export class CommandController extends Controller {
isGovernment: item.isGovernment,
commandNo: item.commandNo,
commandYear: item.commandYear,
posNo: shortName,
posNoAbb: posNo,
posNo: posNo,
posNoAbb: shortName,
commandDateAffect: item.commandDateAffect,
commandDateSign: item.commandDateSign,
commandCode: item.commandCode,
@ -3867,8 +3869,8 @@ export class CommandController extends Controller {
isGovernment: item.isGovernment,
commandNo: item.commandNo,
commandYear: item.commandYear,
posNo: shortName,
posNoAbb: posNo,
posNo: posNo,
posNoAbb: shortName,
commandDateAffect: item.commandDateAffect,
commandDateSign: item.commandDateSign,
commandCode: item.commandCode,
@ -4091,8 +4093,8 @@ export class CommandController extends Controller {
lastUpdatedAt: new Date(),
commandNo: item.commandNo,
commandYear: item.commandYear,
posNo: shortName,
posNoAbb: posNo,
posNo: posNo,
posNoAbb: shortName,
commandDateAffect: item.commandDateAffect,
commandDateSign: item.commandDateSign,
commandCode: item.commandCode,
@ -4266,8 +4268,8 @@ export class CommandController extends Controller {
isGovernment: item.isGovernment,
commandNo: item.commandNo,
commandYear: item.commandYear,
posNo: shortName,
posNoAbb: posNo,
posNo: posNo,
posNoAbb: shortName,
commandDateAffect: item.commandDateAffect,
commandDateSign: item.commandDateSign,
commandCode: item.commandCode,
@ -4794,8 +4796,8 @@ export class CommandController extends Controller {
lastUpdatedAt: new Date(),
commandNo: item.commandNo,
commandYear: item.commandYear,
posNo: orgShortName,
posNoAbb: profile.posMasterNoTemp ?? "",
posNo: profile.posMasterNoTemp ?? "",
posNoAbb: orgShortName,
commandDateAffect: item.commandDateAffect,
commandDateSign: item.commandDateSign,
commandCode: item.commandCode,
@ -5006,7 +5008,6 @@ export class CommandController extends Controller {
statusReport: "DONE",
}));
await this.posMasterActRepository.save(data);
await Promise.all(
posMasters.map(async (item) => {
if (item.posMasterChild != null && item.posMasterChild.current_holderId != null) {
@ -5047,16 +5048,17 @@ export class CommandController extends Controller {
createdAt: new Date(),
lastUpdatedAt: new Date(),
commandNo: body.refIds[0].commandNo,
refCommandNo: body.refIds[0].commandNo,
commandYear: body.refIds[0].commandYear,
posNo: shortName,
posNoAbb: item.posMaster.posMasterNo,
posNo: item.posMaster.posMasterNo,
posNoAbb: shortName,
commandDateAffect: body.refIds[0].commandDateAffect,
commandDateSign: body.refIds[0].commandDateSign,
commandCode: body.refIds[0].commandCode,
commandName: body.refIds[0].commandName,
remark: body.refIds[0].remark,
};
const dataAct = new ProfileActposition();
Object.assign(dataAct, metaAct);
const historyAct = new ProfileActpositionHistory();
@ -5293,8 +5295,8 @@ export class CommandController extends Controller {
lastUpdatedAt: new Date(),
commandNo: item.commandNo,
commandYear: item.commandYear,
posNo: shortName,
posNoAbb: posMaster.posMasterNo,
posNo: posMaster.posMasterNo,
posNoAbb: shortName,
commandDateAffect: item.commandDateAffect,
commandDateSign: item.commandDateSign,
commandCode: item.commandCode,

View file

@ -48,6 +48,7 @@ import { Position } from "../entities/Position";
import { PosMaster } from "../entities/PosMaster";
import { positionOfficer } from "../entities/positionOfficer";
// import { uuidv7 } from "uuidv7";
// import { ProfileSalaries } from "../entities/ProfileSalaries";
@Route("api/v1/org/upload")
@Tags("UPLOAD")
@Security("bearerAuth")
@ -62,6 +63,7 @@ export class ImportDataController extends Controller {
private posLevelRepo = AppDataSource.getRepository(PosLevel);
private posTypeRepo = AppDataSource.getRepository(PosType);
private positionOfficerRepo = AppDataSource.getRepository(positionOfficer);
// private ProfileSalariesRepo = AppDataSource.getRepository(ProfileSalaries);
private HR_PERSONAL_OFFICER_FAMILYRepo = AppDataSource.getRepository(HR_PERSONAL_OFFICER_FAMILY);
private HR_EDUCATIONRepo = AppDataSource.getRepository(HR_EDUCATION);
private HR_PERSONAL_OFFICER_ADDRESSRepo = AppDataSource.getRepository(
@ -330,13 +332,29 @@ export class ImportDataController extends Controller {
.select(["profile.citizenId", "profile.id"])
.orderBy("profile.citizenId", "ASC")
// .where("profile.citizenId = '3101702379675'")
.skip(0)
.take(10000)
.where({
citizenId: In([
// "1100600109451",
// "1209900075508",
// "1739900231556",
// "1809900305214",
// "1920600228762",
// "3101600963742",
// "3102401171243",
// "3120100454406",
// "3180100306172",
// "3700100094722",
// "3809900116957",
"3940900213929",
]),
})
// .skip(10000)
// .take(20000)
.getManyAndCount();
var _profiles: ProfileSalary[] = [];
const filePath = path.join(__dirname, "salaryProfile.csv");
const filePath = path.join(__dirname, "salaryProfile1.csv");
// CSV Header
let csvData = `"id","createdAt","createdUserId","lastUpdatedAt","lastUpdateUserId","createdFullName","lastUpdateFullName","profileId","profileEmployeeId","order","commandNo","commandYear","commandDateSign","commandDateAffect","commandCode","commandName","posNoAbb","posNo","positionName","positionType","positionLevel","positionCee","orgRoot","orgChild1","orgChild2","orgChild3","orgChild4","positionExecutive","amount","amountSpecial","positionSalaryAmount","mouthSalaryAmount","remark","dateGovernment","isGovernment","commandId"\n`;
let csvData = `"id","createdAt","createdUserId","lastUpdatedAt","lastUpdateUserId","createdFullName","lastUpdateFullName","profileId","profileEmployeeId","order","commandNo","commandYear","commandDateSign","commandDateAffect","commandCode","commandName","posNoAbb","posNo","positionName","positionType","positionLevel","positionCee","orgRoot","orgChild1","orgChild2","orgChild3","orgChild4","positionExecutive","amount","amountSpecial","positionSalaryAmount","mouthSalaryAmount","remark","dateGovernment","isGovernment","commandId","refId"\n`;
fs.appendFile(filePath, csvData, (err) => {
if (err) {
@ -364,8 +382,20 @@ export class ImportDataController extends Controller {
order = order + 1;
profileSalary.commandNo = item.mp_command_num;
profileSalary.commandYear = item.cur_year > 2500 ? item.cur_year - 543 : item.cur_year;
profileSalary.commandDateSign = item.mp_command_date;
profileSalary.commandDateAffect = item.mp_pos_date;
profileSalary.commandDateSign =
item.mp_command_date == null
? null_
: new Date(item.mp_command_date.setDate(item.mp_command_date.getDate() + 1))
.toISOString()
.replace("T", " ")
.substring(0, 19);
profileSalary.commandDateAffect =
item.mp_pos_date == null
? null_
: new Date(item.mp_pos_date.setDate(item.mp_pos_date.getDate() + 1))
.toISOString()
.replace("T", " ")
.substring(0, 19);
if (
[
"0",
@ -445,52 +475,203 @@ export class ImportDataController extends Controller {
profileSalary.commandName = "รักษาราชการ, ช่วยราชการ";
}
if (
item.flag_to_name == "" &&
(item.flag_to_name_code == "เลื่อน 1 ขั้นและเลื่อนระดับ" ||
item.flag_to_name_code == "เลื่อน 0.5 ขั้นและเลื่อนระดับ" ||
item.flag_to_name_code == "ลาศึกษาต่อ")
item.flag_to_name_code == null &&
(item.flag_to_name == "เลื่อน 1 ขั้นและเลื่อนระดับ" ||
item.flag_to_name == "เลื่อน 0.5 ขั้นและเลื่อนระดับ" ||
item.flag_to_name == "ลาศึกษาต่อ")
) {
profileSalary.commandCode = "0";
profileSalary.commandName = "อื่น ๆ";
} else if (item.flag_to_name == "" && item.flag_to_name_code == "เลื่อนเงินเดือน") {
} else if (item.flag_to_name_code == null && item.flag_to_name == "เลื่อนเงินเดือน") {
profileSalary.commandCode = "5";
profileSalary.commandName = "เลื่อนเงินเดือนตามปกติ";
} else if (
item.flag_to_name == "" &&
(item.flag_to_name_code == "ปรับตามบัญชีเงินเดือนใหม่" ||
item.flag_to_name_code == "เลื่อนเงินเดือน" ||
item.flag_to_name_code == "ปรับเงินเดือนตาม กพ.")
item.flag_to_name_code == null &&
(item.flag_to_name == "ปรับตามบัญชีเงินเดือนใหม่" ||
item.flag_to_name == "เลื่อนเงินเดือน" ||
item.flag_to_name == "ปรับเงินเดือนตาม กพ.")
) {
profileSalary.commandCode = "6";
profileSalary.commandName = "เลื่อนเงินเดือนกรณีอื่น ๆ";
} else if (
item.flag_to_name == "" &&
item.flag_to_name_code == "แต่งตั้งตามการปรับปรุงโครงฯ"
item.flag_to_name_code == null &&
item.flag_to_name == "แต่งตั้งตามการปรับปรุงโครงฯ"
) {
profileSalary.commandCode = "8";
profileSalary.commandName = "ปรับโครงสร้าง";
} else if (
item.flag_to_name == "" &&
item.flag_to_name_code == "พ้นทดลองปฏิบัติราชการ"
item.flag_to_name_code == null &&
item.flag_to_name == "พ้นทดลองปฏิบัติราชการ"
) {
profileSalary.commandCode = "9";
profileSalary.commandName = "พ้นทดลองปฏิบัติราชการ";
} else if (item.flag_to_name == "" && item.flag_to_name_code == "ให้โอนมา") {
} else if (item.flag_to_name_code == null && item.flag_to_name == "ให้โอนมา") {
profileSalary.commandCode = "11";
profileSalary.commandName = "รับโอน";
} else if (
item.flag_to_name == "" &&
item.flag_to_name_code == "โอนไปปฏิบัติราชการที่อื่น"
item.flag_to_name_code == null &&
item.flag_to_name == "โอนไปปฏิบัติราชการที่อื่น"
) {
profileSalary.commandCode = "12";
profileSalary.commandName = "ให้โอน";
} else if (item.flag_to_name == "" && item.flag_to_name_code == "ยกเลิกคำสั่ง") {
} else if (item.flag_to_name_code == null && item.flag_to_name == "ยกเลิกคำสั่ง") {
profileSalary.commandCode = "14";
profileSalary.commandName = "ยกเลิกคำสั่ง";
} else if (item.flag_to_name == "" && item.flag_to_name_code == "รักษาการในตำแหน่ง") {
} else if (item.flag_to_name_code == null && item.flag_to_name == "รักษาการในตำแหน่ง") {
profileSalary.commandCode = "17";
profileSalary.commandName = "รักษาราชการ, ช่วยราชการ";
}
if (
(profileSalary.commandCode == null || profileSalary.commandCode == undefined) &&
(profileSalary.commandName == null || profileSalary.commandName == undefined)
) {
if (
[
"อื่นๆ",
"กลับไปปฏิบัติงานทางต้นสังกัด",
"เปลี่ยนประเภทข้าราชการ",
"โอนสับเปลี่ยน",
"เข้ารับฝึกอบรม",
"ดูงาน",
"ศึกษาต่อ",
"ขยายเวลาเข้ารับการฝึกอบรม",
"ขยายเวลาศึกษาต่อ",
"รายงานตัวกลับเข้าปฏิบัติราชการ",
"ไม่ได้เลื่อนขั้น",
"เลือนเงินเดือนและระดับ",
"เลื่อนเงินเดือนและระดับ",
"ตัดเงินเดือน",
"ลดขั้นเงินเดือน",
"ให้ข้าราชการกลับเข้ารับราชการ",
"ไม่ระบุ",
].includes(item.flag_to_name)
) {
profileSalary.commandCode = "0";
profileSalary.commandName = "อื่น ๆ";
} else if (
[
"บรรจุและแต่งตั้งผู้สอบแข่งขันได้",
"ทดลองปฎิบัติราชการ",
"ทดลองปฏิบัติราชการและปรับวุฒิ",
"บรรจุใหม่",
].includes(item.flag_to_name)
) {
profileSalary.commandCode = "1";
profileSalary.commandName = "บรรจุและแต่งตั้งผู้สอบแข่งขันได้";
} else if (["บรรจุและแต่งตั้งผู้ได้รับการคัดเลือก"].includes(item.flag_to_name)) {
profileSalary.commandCode = "2";
profileSalary.commandName = "บรรจุและแต่งตั้งผู้ได้รับคัดเลือก";
} else if (
[
"แต่งตั้ง (ย้ายสับเปลี่ยน)",
"แต่งตั้ง (ย้าย)",
"แต่งตั้ง",
"เปลี่ยนสายงาน",
"เปลี่ยนตำแหน่ง",
"ตัดโอนตำแหน่ง",
].includes(item.flag_to_name)
) {
profileSalary.commandCode = "3";
profileSalary.commandName = "แต่งตั้ง ย้าย";
} else if (["เลื่อนและแต่งตั้ง", "เลื่อนระดับ"].includes(item.flag_to_name)) {
profileSalary.commandCode = "4";
profileSalary.commandName = "เลื่อน";
} else if (["เลื่อนขั้นเงินเดือน", "เลื่อนเงินเดือน"].includes(item.flag_to_name)) {
profileSalary.commandCode = "5";
profileSalary.commandName = "เลื่อนเงินเดือนตามปกติ";
} else if (
[
"ปรับเงินเดือนตามคุณวุฒิ",
"ได้รับเงินตอบแทนพิเศษ",
"เงินเพิ่มการครองชีพชั่วคราว",
"เลื่อนขั้นเงินเดือนกรณีพิเศษ",
"ปรับอัตราเงินเดือนตามบัญชีอัตราเงินเดือนใหม่ ท้าย พ.ร.บ. เงินเดือนและเงินประจำตำ",
"ปรับอัตราเงินเดือนตามพระราชกฤษฎีกา การปรับอัตราเงินเดือนของข้าราชการ",
"เลื่อนขั้นเงินเดือน (เพิ่มเติม)",
"ปรับอัตราเงินเดือน",
"ให้ข้าราชการได้รับเงินเดือนตามคุณวุฒิ",
].includes(item.flag_to_name)
) {
profileSalary.commandCode = "6";
profileSalary.commandName = "เลื่อนเงินเดือนกรณีอื่น ๆ";
} else if (["--"].includes(item.flag_to_name)) {
profileSalary.commandCode = "7";
profileSalary.commandName = "เงินพิเศษอื่น ๆ";
} else if (
["ปรับโครงสร้าง", "แต่งตั้ง (จัดคนลงกรอบ)", "แต่งตั้งตามแผนอัตรากำลังฯ"].includes(
item.flag_to_name,
)
) {
profileSalary.commandCode = "8";
profileSalary.commandName = "ปรับโครงสร้าง";
} else if (["พ้นทดลองปฏิบัติราชการ"].includes(item.flag_to_name)) {
profileSalary.commandCode = "9";
profileSalary.commandName = "พ้นทดลองปฏิบัติราชการ";
} else if (
[
"บรรจุกลับ",
"บรรจุกลับข้าราชการ",
"บรรจุและแต่งตั้งผู้ไปรับราชการทหารกลับเข้ารับราชการ",
].includes(item.flag_to_name)
) {
profileSalary.commandCode = "10";
profileSalary.commandName = "บรรจุกลับ";
} else if (
[
"รับโอนข้าราชการตามกฎหมายอื่น",
"รับโอนข้าราชการตามกฎหมายอื่น ผู้สอบแข่งขันได้",
"รับโอนข้าราชการตามกฏหมายอื่น โดยการคัดเลือก",
].includes(item.flag_to_name)
) {
profileSalary.commandCode = "11";
profileSalary.commandName = "รับโอน";
} else if (["ให้โอน"].includes(item.flag_to_name)) {
profileSalary.commandCode = "12";
profileSalary.commandName = "ให้โอน";
} else if (["แก้ไขคำสั่ง"].includes(item.flag_to_name)) {
profileSalary.commandCode = "13";
profileSalary.commandName = "แก้ไขคำสั่ง";
} else if (["ยกเลิกคำสั่ง"].includes(item.flag_to_name)) {
profileSalary.commandCode = "14";
profileSalary.commandName = "ยกเลิกคำสั่ง";
} else if (
[
"ลาออกจากราชการ",
"พ้นจากราชการ/ลาออกจากราชการตามมาตรการพัฒนาและบริหารกำลังคน",
].includes(item.flag_to_name)
) {
profileSalary.commandCode = "15";
profileSalary.commandName = "ลาออกจากราชการ";
} else if (
[
"พ้นจากราชการ/เพื่อไปปฏิบัติราชการทหาร",
"เกษียณ",
"ไม่พ้นทดลองปฏิบัติราชการ",
"พ้นจากราชการ/ให้ออก",
"พ้นจากราชการ/ไล่ออก",
"พ้นจากราชการ/เสียชีวิต",
"พ้นจากราชการ/ปลดออก",
].includes(item.flag_to_name)
) {
profileSalary.commandCode = "16";
profileSalary.commandName = "พ้นจากราชการ";
} else if (
[
"แต่งตั้งข้าราชการรักษาราชการแทน",
"ช่วยราชการ",
"รักษาการ",
"รักษาราชการแทน",
"มอบหมายให้ปฏิบัติหน้าที่",
"มอบหมายข้าราชการปฏิบัติหน้าที่แทน",
].includes(item.flag_to_name)
) {
profileSalary.commandCode = "17";
profileSalary.commandName = "รักษาราชการ, ช่วยราชการ";
} else {
profileSalary.commandCode = "0";
profileSalary.commandName = item.flag_to_name;
}
}
profileSalary.posNoAbb = item.pos_num_name;
profileSalary.posNo = item.pos_num_code;
profileSalary.positionName = item.work_line_name;
@ -558,6 +739,8 @@ export class ImportDataController extends Controller {
profileSalary.positionExecutive = item.admin_name;
profileSalary.amount = item.salary;
profileSalary.remark = item.remark;
profileSalary.refId = item.id;
profileSalary.isEntry = false;
const sal_pos_amount_1: any =
item.sal_pos_amount_1 == null || item.sal_pos_amount_1 == ""
@ -576,8 +759,8 @@ export class ImportDataController extends Controller {
profileSalary.createdFullName = request.user.name;
profileSalary.lastUpdateUserId = request.user.sub;
profileSalary.lastUpdateFullName = request.user.name;
profileSalary.createdAt = new Date();
profileSalary.lastUpdatedAt = new Date();
profileSalary.createdAt = new Date().toISOString().split("T")[0];
profileSalary.lastUpdatedAt = new Date().toISOString().split("T")[0];
// const result = uuidv7();
// profileSalary.id = result;
// console.log(">>>>>>>>>>>>>>>>>>>" + rowCount);
@ -599,7 +782,8 @@ export class ImportDataController extends Controller {
// Loop through each salary profile and format data as CSV
// _profiles.forEach((profile) => {
csvData = `"${profileSalary.id || "NULL"}","${profileSalary.createdAt?.toISOString()?.split("T")[0] || "NULL"}","${profileSalary.createdUserId || "NULL"}","${profileSalary.lastUpdatedAt?.toISOString()?.split("T")[0] || "NULL"}","${profileSalary.lastUpdateUserId || "NULL"}","${profileSalary.createdFullName || "NULL"}","${profileSalary.lastUpdateFullName || "NULL"}","${profileSalary.profileId || "NULL"}","${profileSalary.profileEmployeeId || "NULL"}","${profileSalary.order || "NULL"}","${profileSalary.commandNo || "NULL"}","${profileSalary.commandYear || "NULL"}","${profileSalary.commandDateSign?.toISOString()?.split("T")[0] || "NULL"}","${profileSalary.commandDateAffect?.toISOString()?.split("T")[0] || "NULL"}","${profileSalary.commandCode || "NULL"}","${profileSalary.commandName || "NULL"}","${profileSalary.posNoAbb || "NULL"}","${profileSalary.posNo || "NULL"}","${profileSalary.positionName || "NULL"}","${profileSalary.positionType || "NULL"}","${profileSalary.positionLevel || "NULL"}","${profileSalary.positionCee || "NULL"}","${profileSalary.orgRoot || "NULL"}","${profileSalary.orgChild1 || "NULL"}","${profileSalary.orgChild2 || "NULL"}","${profileSalary.orgChild3 || "NULL"}","${profileSalary.orgChild4 || "NULL"}","${profileSalary.positionExecutive || "NULL"}","${profileSalary.amount || 0}","${profileSalary.amountSpecial || 0}","${profileSalary.positionSalaryAmount || 0}","${profileSalary.mouthSalaryAmount || 0}","${profileSalary.remark || "NULL"}","${profileSalary.dateGovernment?.toISOString()?.split("T")[0] || "NULL"}","${profileSalary.isGovernment || "NULL"}","${profileSalary.commandId || "NULL"}"\n`;
console.log(profileSalary.commandDateSign);
csvData = `"${profileSalary.id || "NULL"}","${profileSalary.createdAt || "NULL"}","${profileSalary.createdUserId || "NULL"}","${profileSalary.lastUpdatedAt || "NULL"}","${profileSalary.lastUpdateUserId || "NULL"}","${profileSalary.createdFullName || "NULL"}","${profileSalary.lastUpdateFullName || "NULL"}","${profileSalary.profileId || "NULL"}","${profileSalary.profileEmployeeId || "NULL"}","${profileSalary.order || "NULL"}","${profileSalary.commandNo || "NULL"}","${profileSalary.commandYear || "NULL"}","${profileSalary.commandDateSign || "NULL"}","${profileSalary.commandDateAffect || "NULL"}","${profileSalary.commandCode || "NULL"}","${profileSalary.commandName || "NULL"}","${profileSalary.posNoAbb || "NULL"}","${profileSalary.posNo || "NULL"}","${profileSalary.positionName || "NULL"}","${profileSalary.positionType || "NULL"}","${profileSalary.positionLevel || "NULL"}","${profileSalary.positionCee || "NULL"}","${profileSalary.orgRoot || "NULL"}","${profileSalary.orgChild1 || "NULL"}","${profileSalary.orgChild2 || "NULL"}","${profileSalary.orgChild3 || "NULL"}","${profileSalary.orgChild4 || "NULL"}","${profileSalary.positionExecutive || "NULL"}","${profileSalary.amount || 0}","${profileSalary.amountSpecial || 0}","${profileSalary.positionSalaryAmount || 0}","${profileSalary.mouthSalaryAmount || 0}","${profileSalary.remark || "NULL"}","${profileSalary.dateGovernment || "NULL"}","${profileSalary.isGovernment || "NULL"}","${profileSalary.commandId || "NULL"}","${profileSalary.refId || "NULL"}"\n`;
// });
// Write the CSV data to the file
@ -1693,6 +1877,7 @@ export class ImportDataController extends Controller {
},
});
//order xxxxxxxxxxxxxxxx
await Promise.all(
IMPORT_CHILD.map(async (item) => {
const orgRoot = new OrgRoot();
@ -2092,4 +2277,110 @@ export class ImportDataController extends Controller {
}
return new HttpSuccess();
}
// /**
// * @summary เงินเดือน ข้าราชการ
// */
// @Post("uploadProfileSalary-OfficerEntry")
// async UploadFileSQLSalaryEntry(@Request() request: { user: Record<string, any> }) {
// let rowCount = 0;
// let null_: any = null;
// let sqlStatements: string[] = [];
// const [profiles, total] = await AppDataSource.getRepository(Profile)
// .createQueryBuilder("profile")
// .select(["profile.citizenId", "profile.id"])
// .orderBy("profile.citizenId", "ASC")
// // .where("profile.citizenId = '3101702379675'")
// .skip(10000)
// .take(20000)
// .getManyAndCount();
// var _profiles: ProfileSalary[] = [];
// const filePath = path.join(__dirname, "salaryProfile1.csv");
// // CSV Header
// let csvData = `"id","createdAt","createdUserId","lastUpdatedAt","lastUpdateUserId","createdFullName","lastUpdateFullName","profileId","profileEmployeeId","order","commandNo","commandYear","commandDateSign","commandDateAffect","commandCode","commandName","posNoAbb","posNo","positionName","positionType","positionLevel","positionCee","orgRoot","orgChild1","orgChild2","orgChild3","orgChild4","positionExecutive","amount","amountSpecial","positionSalaryAmount","mouthSalaryAmount","remark","dateGovernment","isGovernment","commandId","refId"\n`;
// fs.appendFile(filePath, csvData, (err) => {
// if (err) {
// console.error("Error writing CSV file:", err);
// } else {
// console.log("Salary profiles successfully written to salaryProfile.csv");
// }
// });
// await Promise.all(
// profiles.map(async (_item) => {
// const existingProfile = await this.ProfileSalariesRepo.find({
// where: { ProfileId: _item.citizenId },
// order: {
// Order: "ASC",
// },
// });
// let order = 1;
// await Promise.all(
// existingProfile.map(async (item) => {
// rowCount++;
// const profileSalary: any = new ProfileSalary();
// profileSalary.profileId = _item.id;
// profileSalary.order = item.Order;
// profileSalary.commandDateAffect =
// item.Date == null
// ? null_
// : new Date(item.Date.setDate(item.Date.getDate() + 1))
// .toISOString()
// .replace("T", " ")
// .substring(0, 19);
// profileSalary.remark = item.SalaryRef + item.PositionName;
// profileSalary.amount = item.Amount;
// profileSalary.positionSalaryAmount = item.PositionSalaryAmount;
// const str = item.PosNoName;
// const parts = str.split(" ");
// if (parts.length > 1) {
// const posNo = parts.at(-1);
// const posNoAbb = parts.slice(0, -1).join(" ");
// profileSalary.posNoAbb = posNoAbb;
// profileSalary.posNo = posNo;
// }
// profileSalary.posLevel = this.canConvertToInt(item.PositionLevelName)
// ? null_
// : item.PositionLevelName;
// profileSalary.posCee = this.canConvertToInt(item.PositionLevelName)
// ? item.PositionLevelName
// : null_;
// //xxxxxxxxxxxxxxxxx
// profileSalary.posType = item.PositionTypeName;
// profileSalary.isEntry = true;
// profileSalary.createdUserId = request.user.sub;
// profileSalary.createdFullName = request.user.name;
// profileSalary.lastUpdateUserId = request.user.sub;
// profileSalary.lastUpdateFullName = request.user.name;
// profileSalary.createdAt = new Date().toISOString().split("T")[0];
// profileSalary.lastUpdatedAt = new Date().toISOString().split("T")[0];
// // const result = uuidv7();
// // profileSalary.id = result;
// console.log(profileSalary.commandDateSign);
// csvData = `"${profileSalary.id || "NULL"}","${profileSalary.createdAt || "NULL"}","${profileSalary.createdUserId || "NULL"}","${profileSalary.lastUpdatedAt || "NULL"}","${profileSalary.lastUpdateUserId || "NULL"}","${profileSalary.createdFullName || "NULL"}","${profileSalary.lastUpdateFullName || "NULL"}","${profileSalary.profileId || "NULL"}","${profileSalary.profileEmployeeId || "NULL"}","${profileSalary.order || "NULL"}","${profileSalary.commandNo || "NULL"}","${profileSalary.commandYear || "NULL"}","${profileSalary.commandDateSign || "NULL"}","${profileSalary.commandDateAffect || "NULL"}","${profileSalary.commandCode || "NULL"}","${profileSalary.commandName || "NULL"}","${profileSalary.posNoAbb || "NULL"}","${profileSalary.posNo || "NULL"}","${profileSalary.positionName || "NULL"}","${profileSalary.positionType || "NULL"}","${profileSalary.positionLevel || "NULL"}","${profileSalary.positionCee || "NULL"}","${profileSalary.orgRoot || "NULL"}","${profileSalary.orgChild1 || "NULL"}","${profileSalary.orgChild2 || "NULL"}","${profileSalary.orgChild3 || "NULL"}","${profileSalary.orgChild4 || "NULL"}","${profileSalary.positionExecutive || "NULL"}","${profileSalary.amount || 0}","${profileSalary.amountSpecial || 0}","${profileSalary.positionSalaryAmount || 0}","${profileSalary.mouthSalaryAmount || 0}","${profileSalary.remark || "NULL"}","${profileSalary.dateGovernment || "NULL"}","${profileSalary.isGovernment || "NULL"}","${profileSalary.commandId || "NULL"}","${profileSalary.refId || "NULL"}"\n`;
// fs.appendFile(filePath, csvData.replace('"NULL"', "NULL"), (err) => {
// if (err) {
// console.error("Error writing CSV file:", err);
// } else {
// console.log(
// "Salary profiles successfully written to salaryProfile.csv: " + rowCount,
// );
// }
// });
// }),
// );
// order = 1;
// }),
// );
// return new HttpSuccess();
// }
// canConvertToInt(str: string) {
// const num = Number(str);
// return Number.isInteger(num);
// }
}

View file

@ -34,6 +34,7 @@ import { PosMasterAssign } from "../entities/PosMasterAssign";
import { PosMasterAct } from "../entities/PosMasterAct";
import { EmployeePosition } from "../entities/EmployeePosition";
import { EmployeePosMaster } from "../entities/EmployeePosMaster";
import { EmployeeTempPosMaster } from "../entities/EmployeeTempPosMaster";
@Route("api/v1/org")
@Tags("Organization")
@ -57,6 +58,7 @@ export class OrganizationController extends Controller {
private profileRepo = AppDataSource.getRepository(Profile);
private employeePosMasterRepository = AppDataSource.getRepository(EmployeePosMaster);
private employeePositionRepository = AppDataSource.getRepository(EmployeePosition);
private employeeTempPosMasterRepository = AppDataSource.getRepository(EmployeeTempPosMaster);
/**
* API
@ -243,6 +245,53 @@ export class OrganizationController extends Controller {
}));
await this.posMasterRepository.save(_orgPosMaster);
}
//หา dna posmaster ถ้าไม่มีให้เอาตัวเองเป็น dna
const orgemployeePosMaster = await this.employeePosMasterRepository.find({
where: { orgRevisionId: requestBody.orgRevisionId },
relations: ["positions"],
});
let _orgemployeePosMaster: EmployeePosMaster[];
if (
requestBody.typeDraft.toUpperCase() == "ORG_POSITION" ||
requestBody.typeDraft.toUpperCase() == "ORG_POSITION_PERSON" ||
requestBody.typeDraft.toUpperCase() == "ORG_POSITION_ROLE" ||
requestBody.typeDraft.toUpperCase() == "ORG_POSITION_PERSON_ROLE"
) {
_orgemployeePosMaster = orgemployeePosMaster.map((x) => ({
...x,
ancestorDNA:
x.ancestorDNA == null || x.ancestorDNA == "00000000-0000-0000-0000-000000000000"
? x.id
: x.ancestorDNA,
}));
await this.employeePosMasterRepository.save(_orgemployeePosMaster);
}
//หา dna posmaster ถ้าไม่มีให้เอาตัวเองเป็น dna
const orgemployeeTempPosMaster = await this.employeeTempPosMasterRepository.find({
where: { orgRevisionId: requestBody.orgRevisionId },
relations: ["positions"],
});
let _orgemployeeTempPosMaster: EmployeeTempPosMaster[];
if (
requestBody.typeDraft.toUpperCase() == "ORG_POSITION" ||
requestBody.typeDraft.toUpperCase() == "ORG_POSITION_PERSON" ||
requestBody.typeDraft.toUpperCase() == "ORG_POSITION_ROLE" ||
requestBody.typeDraft.toUpperCase() == "ORG_POSITION_PERSON_ROLE"
) {
_orgemployeeTempPosMaster = orgemployeeTempPosMaster.map((x) => ({
...x,
ancestorDNA:
x.ancestorDNA == null || x.ancestorDNA == "00000000-0000-0000-0000-000000000000"
? x.id
: x.ancestorDNA,
}));
await this.employeeTempPosMasterRepository.save(_orgemployeeTempPosMaster);
}
//create org
_orgRoot.forEach(async (x: any) => {
var dataId = x.id;
@ -319,6 +368,126 @@ export class OrganizationController extends Controller {
});
}),
);
//create employeePosmaster
await Promise.all(
_orgemployeePosMaster
.filter((x: EmployeePosMaster) => x.orgRootId == dataId && x.orgChild1Id == null)
.map(async (item: any) => {
delete item.id;
const employeePosMaster = Object.assign(new EmployeePosMaster(), item);
employeePosMaster.positions = [];
if (
requestBody.typeDraft.toUpperCase() == "ORG_POSITION_PERSON" ||
requestBody.typeDraft.toUpperCase() == "ORG_POSITION_PERSON_ROLE"
) {
employeePosMaster.current_holderId = item.current_holderId;
} else {
// employeePosMaster.next_holderId = null;
employeePosMaster.isSit = false;
}
if (
requestBody.typeDraft.toUpperCase() == "ORG_POSITION_ROLE" ||
requestBody.typeDraft.toUpperCase() == "ORG_POSITION_PERSON_ROLE"
) {
employeePosMaster.authRoleId = item.authRoleId;
} else {
employeePosMaster.authRoleId = null;
}
// employeePosMaster.current_holderId = null;
employeePosMaster.orgRevisionId = revision.id;
employeePosMaster.orgRootId = data.id;
employeePosMaster.createdUserId = request.user.sub;
employeePosMaster.createdFullName = request.user.name;
employeePosMaster.createdAt = new Date();
employeePosMaster.lastUpdateUserId = request.user.sub;
employeePosMaster.lastUpdateFullName = request.user.name;
employeePosMaster.lastUpdatedAt = new Date();
await this.employeePosMasterRepository.save(employeePosMaster);
//create employeePosition
item.positions.map(async (pos: any) => {
delete pos.id;
const employeePosition: EmployeePosition = Object.assign(
new EmployeePosition(),
pos,
);
employeePosition.posMasterId = employeePosMaster.id;
if (
requestBody.typeDraft.toUpperCase() == "ORG_POSITION" ||
requestBody.typeDraft.toUpperCase() == "ORG_POSITION_ROLE"
) {
employeePosition.positionIsSelected = false;
}
employeePosition.createdUserId = request.user.sub;
employeePosition.createdFullName = request.user.name;
employeePosition.createdAt = new Date();
employeePosition.lastUpdateUserId = request.user.sub;
employeePosition.lastUpdateFullName = request.user.name;
employeePosition.lastUpdatedAt = new Date();
await this.employeePositionRepository.save(employeePosition);
});
}),
);
//create employeeTempPosmaster
await Promise.all(
_orgemployeeTempPosMaster
.filter((x: EmployeeTempPosMaster) => x.orgRootId == dataId && x.orgChild1Id == null)
.map(async (item: any) => {
delete item.id;
const employeeTempPosMaster = Object.assign(new EmployeeTempPosMaster(), item);
employeeTempPosMaster.positions = [];
if (
requestBody.typeDraft.toUpperCase() == "ORG_POSITION_PERSON" ||
requestBody.typeDraft.toUpperCase() == "ORG_POSITION_PERSON_ROLE"
) {
employeeTempPosMaster.current_holderId = item.current_holderId;
} else {
// employeeTempPosMaster.next_holderId = null;
employeeTempPosMaster.isSit = false;
}
if (
requestBody.typeDraft.toUpperCase() == "ORG_POSITION_ROLE" ||
requestBody.typeDraft.toUpperCase() == "ORG_POSITION_PERSON_ROLE"
) {
employeeTempPosMaster.authRoleId = item.authRoleId;
} else {
employeeTempPosMaster.authRoleId = null;
}
// employeeTempPosMaster.current_holderId = null;
employeeTempPosMaster.orgRevisionId = revision.id;
employeeTempPosMaster.orgRootId = data.id;
employeeTempPosMaster.createdUserId = request.user.sub;
employeeTempPosMaster.createdFullName = request.user.name;
employeeTempPosMaster.createdAt = new Date();
employeeTempPosMaster.lastUpdateUserId = request.user.sub;
employeeTempPosMaster.lastUpdateFullName = request.user.name;
employeeTempPosMaster.lastUpdatedAt = new Date();
await this.employeeTempPosMasterRepository.save(employeeTempPosMaster);
//create employeePosition
item.positions.map(async (pos: any) => {
delete pos.id;
const employeePosition: EmployeePosition = Object.assign(
new EmployeePosition(),
pos,
);
employeePosition.posMasterTempId = employeeTempPosMaster.id;
if (
requestBody.typeDraft.toUpperCase() == "ORG_POSITION" ||
requestBody.typeDraft.toUpperCase() == "ORG_POSITION_ROLE"
) {
employeePosition.positionIsSelected = false;
}
employeePosition.createdUserId = request.user.sub;
employeePosition.createdFullName = request.user.name;
employeePosition.createdAt = new Date();
employeePosition.lastUpdateUserId = request.user.sub;
employeePosition.lastUpdateFullName = request.user.name;
employeePosition.lastUpdatedAt = new Date();
await this.employeePositionRepository.save(employeePosition);
});
}),
);
}
//create org
@ -401,6 +570,130 @@ export class OrganizationController extends Controller {
});
}),
);
//create employeePosmaster
await Promise.all(
_orgemployeePosMaster
.filter(
(x: EmployeePosMaster) => x.orgChild1Id == data1Id && x.orgChild2Id == null,
)
.map(async (item: any) => {
delete item.id;
const employeePosMaster = Object.assign(new EmployeePosMaster(), item);
employeePosMaster.positions = [];
if (
requestBody.typeDraft.toUpperCase() == "ORG_POSITION_PERSON" ||
requestBody.typeDraft.toUpperCase() == "ORG_POSITION_PERSON_ROLE"
) {
employeePosMaster.current_holderId = item.current_holderId;
} else {
// employeePosMaster.next_holderId = null;
employeePosMaster.isSit = false;
}
if (
requestBody.typeDraft.toUpperCase() == "ORG_POSITION_ROLE" ||
requestBody.typeDraft.toUpperCase() == "ORG_POSITION_PERSON_ROLE"
) {
employeePosMaster.authRoleId = item.authRoleId;
} else {
employeePosMaster.authRoleId = null;
}
// employeePosMaster.current_holderId = null;
employeePosMaster.orgRevisionId = revision.id;
employeePosMaster.orgRootId = data.id;
employeePosMaster.createdUserId = request.user.sub;
employeePosMaster.createdFullName = request.user.name;
employeePosMaster.createdAt = new Date();
employeePosMaster.lastUpdateUserId = request.user.sub;
employeePosMaster.lastUpdateFullName = request.user.name;
employeePosMaster.lastUpdatedAt = new Date();
await this.employeePosMasterRepository.save(employeePosMaster);
//create employeePosition
item.positions.map(async (pos: any) => {
delete pos.id;
const employeePosition: EmployeePosition = Object.assign(
new EmployeePosition(),
pos,
);
employeePosition.posMasterId = employeePosMaster.id;
if (
requestBody.typeDraft.toUpperCase() == "ORG_POSITION" ||
requestBody.typeDraft.toUpperCase() == "ORG_POSITION_ROLE"
) {
employeePosition.positionIsSelected = false;
}
employeePosition.createdUserId = request.user.sub;
employeePosition.createdFullName = request.user.name;
employeePosition.createdAt = new Date();
employeePosition.lastUpdateUserId = request.user.sub;
employeePosition.lastUpdateFullName = request.user.name;
employeePosition.lastUpdatedAt = new Date();
await this.employeePositionRepository.save(employeePosition);
});
}),
);
//create employeeTempPosmaster
await Promise.all(
_orgemployeeTempPosMaster
.filter(
(x: EmployeeTempPosMaster) => x.orgChild1Id == data1Id && x.orgChild2Id == null,
)
.map(async (item: any) => {
delete item.id;
const employeeTempPosMaster = Object.assign(new EmployeeTempPosMaster(), item);
employeeTempPosMaster.positions = [];
if (
requestBody.typeDraft.toUpperCase() == "ORG_POSITION_PERSON" ||
requestBody.typeDraft.toUpperCase() == "ORG_POSITION_PERSON_ROLE"
) {
employeeTempPosMaster.current_holderId = item.current_holderId;
} else {
// employeeTempPosMaster.next_holderId = null;
employeeTempPosMaster.isSit = false;
}
if (
requestBody.typeDraft.toUpperCase() == "ORG_POSITION_ROLE" ||
requestBody.typeDraft.toUpperCase() == "ORG_POSITION_PERSON_ROLE"
) {
employeeTempPosMaster.authRoleId = item.authRoleId;
} else {
employeeTempPosMaster.authRoleId = null;
}
// employeeTempPosMaster.current_holderId = null;
employeeTempPosMaster.orgRevisionId = revision.id;
employeeTempPosMaster.orgRootId = data.id;
employeeTempPosMaster.createdUserId = request.user.sub;
employeeTempPosMaster.createdFullName = request.user.name;
employeeTempPosMaster.createdAt = new Date();
employeeTempPosMaster.lastUpdateUserId = request.user.sub;
employeeTempPosMaster.lastUpdateFullName = request.user.name;
employeeTempPosMaster.lastUpdatedAt = new Date();
await this.employeeTempPosMasterRepository.save(employeeTempPosMaster);
//create employeePosition
item.positions.map(async (pos: any) => {
delete pos.id;
const employeePosition: EmployeePosition = Object.assign(
new EmployeePosition(),
pos,
);
employeePosition.posMasterTempId = employeeTempPosMaster.id;
if (
requestBody.typeDraft.toUpperCase() == "ORG_POSITION" ||
requestBody.typeDraft.toUpperCase() == "ORG_POSITION_ROLE"
) {
employeePosition.positionIsSelected = false;
}
employeePosition.createdUserId = request.user.sub;
employeePosition.createdFullName = request.user.name;
employeePosition.createdAt = new Date();
employeePosition.lastUpdateUserId = request.user.sub;
employeePosition.lastUpdateFullName = request.user.name;
employeePosition.lastUpdatedAt = new Date();
await this.employeePositionRepository.save(employeePosition);
});
}),
);
}
//create org
@ -485,6 +778,134 @@ export class OrganizationController extends Controller {
});
}),
);
//create employeePosmaster
await Promise.all(
_orgemployeePosMaster
.filter(
(x: EmployeePosMaster) => x.orgChild2Id == data2Id && x.orgChild3Id == null,
)
.map(async (item: any) => {
delete item.id;
const employeePosMaster = Object.assign(new EmployeePosMaster(), item);
employeePosMaster.positions = [];
if (
requestBody.typeDraft.toUpperCase() == "ORG_POSITION_PERSON" ||
requestBody.typeDraft.toUpperCase() == "ORG_POSITION_PERSON_ROLE"
) {
employeePosMaster.current_holderId = item.current_holderId;
} else {
// employeePosMaster.next_holderId = null;
employeePosMaster.isSit = false;
}
if (
requestBody.typeDraft.toUpperCase() == "ORG_POSITION_ROLE" ||
requestBody.typeDraft.toUpperCase() == "ORG_POSITION_PERSON_ROLE"
) {
employeePosMaster.authRoleId = item.authRoleId;
} else {
employeePosMaster.authRoleId = null;
}
// employeePosMaster.current_holderId = null;
employeePosMaster.orgRevisionId = revision.id;
employeePosMaster.orgRootId = data.id;
employeePosMaster.createdUserId = request.user.sub;
employeePosMaster.createdFullName = request.user.name;
employeePosMaster.createdAt = new Date();
employeePosMaster.lastUpdateUserId = request.user.sub;
employeePosMaster.lastUpdateFullName = request.user.name;
employeePosMaster.lastUpdatedAt = new Date();
await this.employeePosMasterRepository.save(employeePosMaster);
//create employeePosition
item.positions.map(async (pos: any) => {
delete pos.id;
const employeePosition: EmployeePosition = Object.assign(
new EmployeePosition(),
pos,
);
employeePosition.posMasterId = employeePosMaster.id;
if (
requestBody.typeDraft.toUpperCase() == "ORG_POSITION" ||
requestBody.typeDraft.toUpperCase() == "ORG_POSITION_ROLE"
) {
employeePosition.positionIsSelected = false;
}
employeePosition.createdUserId = request.user.sub;
employeePosition.createdFullName = request.user.name;
employeePosition.createdAt = new Date();
employeePosition.lastUpdateUserId = request.user.sub;
employeePosition.lastUpdateFullName = request.user.name;
employeePosition.lastUpdatedAt = new Date();
await this.employeePositionRepository.save(employeePosition);
});
}),
);
//create employeeTempPosmaster
await Promise.all(
_orgemployeeTempPosMaster
.filter(
(x: EmployeeTempPosMaster) =>
x.orgChild2Id == data2Id && x.orgChild3Id == null,
)
.map(async (item: any) => {
delete item.id;
const employeeTempPosMaster = Object.assign(
new EmployeeTempPosMaster(),
item,
);
employeeTempPosMaster.positions = [];
if (
requestBody.typeDraft.toUpperCase() == "ORG_POSITION_PERSON" ||
requestBody.typeDraft.toUpperCase() == "ORG_POSITION_PERSON_ROLE"
) {
employeeTempPosMaster.current_holderId = item.current_holderId;
} else {
// employeeTempPosMaster.next_holderId = null;
employeeTempPosMaster.isSit = false;
}
if (
requestBody.typeDraft.toUpperCase() == "ORG_POSITION_ROLE" ||
requestBody.typeDraft.toUpperCase() == "ORG_POSITION_PERSON_ROLE"
) {
employeeTempPosMaster.authRoleId = item.authRoleId;
} else {
employeeTempPosMaster.authRoleId = null;
}
// employeeTempPosMaster.current_holderId = null;
employeeTempPosMaster.orgRevisionId = revision.id;
employeeTempPosMaster.orgRootId = data.id;
employeeTempPosMaster.createdUserId = request.user.sub;
employeeTempPosMaster.createdFullName = request.user.name;
employeeTempPosMaster.createdAt = new Date();
employeeTempPosMaster.lastUpdateUserId = request.user.sub;
employeeTempPosMaster.lastUpdateFullName = request.user.name;
employeeTempPosMaster.lastUpdatedAt = new Date();
await this.employeeTempPosMasterRepository.save(employeeTempPosMaster);
//create employeePosition
item.positions.map(async (pos: any) => {
delete pos.id;
const employeePosition: EmployeePosition = Object.assign(
new EmployeePosition(),
pos,
);
employeePosition.posMasterTempId = employeeTempPosMaster.id;
if (
requestBody.typeDraft.toUpperCase() == "ORG_POSITION" ||
requestBody.typeDraft.toUpperCase() == "ORG_POSITION_ROLE"
) {
employeePosition.positionIsSelected = false;
}
employeePosition.createdUserId = request.user.sub;
employeePosition.createdFullName = request.user.name;
employeePosition.createdAt = new Date();
employeePosition.lastUpdateUserId = request.user.sub;
employeePosition.lastUpdateFullName = request.user.name;
employeePosition.lastUpdatedAt = new Date();
await this.employeePositionRepository.save(employeePosition);
});
}),
);
}
//create org
@ -573,6 +994,135 @@ export class OrganizationController extends Controller {
});
}),
);
//create employeePosmaster
await Promise.all(
_orgemployeePosMaster
.filter(
(x: EmployeePosMaster) =>
x.orgChild3Id == data3Id && x.orgChild4Id == null,
)
.map(async (item: any) => {
delete item.id;
const employeePosMaster = Object.assign(new EmployeePosMaster(), item);
employeePosMaster.positions = [];
if (
requestBody.typeDraft.toUpperCase() == "ORG_POSITION_PERSON" ||
requestBody.typeDraft.toUpperCase() == "ORG_POSITION_PERSON_ROLE"
) {
employeePosMaster.current_holderId = item.current_holderId;
} else {
// employeePosMaster.next_holderId = null;
employeePosMaster.isSit = false;
}
if (
requestBody.typeDraft.toUpperCase() == "ORG_POSITION_ROLE" ||
requestBody.typeDraft.toUpperCase() == "ORG_POSITION_PERSON_ROLE"
) {
employeePosMaster.authRoleId = item.authRoleId;
} else {
employeePosMaster.authRoleId = null;
}
// employeePosMaster.current_holderId = null;
employeePosMaster.orgRevisionId = revision.id;
employeePosMaster.orgRootId = data.id;
employeePosMaster.createdUserId = request.user.sub;
employeePosMaster.createdFullName = request.user.name;
employeePosMaster.createdAt = new Date();
employeePosMaster.lastUpdateUserId = request.user.sub;
employeePosMaster.lastUpdateFullName = request.user.name;
employeePosMaster.lastUpdatedAt = new Date();
await this.employeePosMasterRepository.save(employeePosMaster);
//create employeePosition
item.positions.map(async (pos: any) => {
delete pos.id;
const employeePosition: EmployeePosition = Object.assign(
new EmployeePosition(),
pos,
);
employeePosition.posMasterId = employeePosMaster.id;
if (
requestBody.typeDraft.toUpperCase() == "ORG_POSITION" ||
requestBody.typeDraft.toUpperCase() == "ORG_POSITION_ROLE"
) {
employeePosition.positionIsSelected = false;
}
employeePosition.createdUserId = request.user.sub;
employeePosition.createdFullName = request.user.name;
employeePosition.createdAt = new Date();
employeePosition.lastUpdateUserId = request.user.sub;
employeePosition.lastUpdateFullName = request.user.name;
employeePosition.lastUpdatedAt = new Date();
await this.employeePositionRepository.save(employeePosition);
});
}),
);
//create employeeTempPosmaster
await Promise.all(
_orgemployeeTempPosMaster
.filter(
(x: EmployeeTempPosMaster) =>
x.orgChild3Id == data3Id && x.orgChild4Id == null,
)
.map(async (item: any) => {
delete item.id;
const employeeTempPosMaster = Object.assign(
new EmployeeTempPosMaster(),
item,
);
employeeTempPosMaster.positions = [];
if (
requestBody.typeDraft.toUpperCase() == "ORG_POSITION_PERSON" ||
requestBody.typeDraft.toUpperCase() == "ORG_POSITION_PERSON_ROLE"
) {
employeeTempPosMaster.current_holderId = item.current_holderId;
} else {
// employeeTempPosMaster.next_holderId = null;
employeeTempPosMaster.isSit = false;
}
if (
requestBody.typeDraft.toUpperCase() == "ORG_POSITION_ROLE" ||
requestBody.typeDraft.toUpperCase() == "ORG_POSITION_PERSON_ROLE"
) {
employeeTempPosMaster.authRoleId = item.authRoleId;
} else {
employeeTempPosMaster.authRoleId = null;
}
// employeeTempPosMaster.current_holderId = null;
employeeTempPosMaster.orgRevisionId = revision.id;
employeeTempPosMaster.orgRootId = data.id;
employeeTempPosMaster.createdUserId = request.user.sub;
employeeTempPosMaster.createdFullName = request.user.name;
employeeTempPosMaster.createdAt = new Date();
employeeTempPosMaster.lastUpdateUserId = request.user.sub;
employeeTempPosMaster.lastUpdateFullName = request.user.name;
employeeTempPosMaster.lastUpdatedAt = new Date();
await this.employeeTempPosMasterRepository.save(employeeTempPosMaster);
//create employeePosition
item.positions.map(async (pos: any) => {
delete pos.id;
const employeePosition: EmployeePosition = Object.assign(
new EmployeePosition(),
pos,
);
employeePosition.posMasterTempId = employeeTempPosMaster.id;
if (
requestBody.typeDraft.toUpperCase() == "ORG_POSITION" ||
requestBody.typeDraft.toUpperCase() == "ORG_POSITION_ROLE"
) {
employeePosition.positionIsSelected = false;
}
employeePosition.createdUserId = request.user.sub;
employeePosition.createdFullName = request.user.name;
employeePosition.createdAt = new Date();
employeePosition.lastUpdateUserId = request.user.sub;
employeePosition.lastUpdateFullName = request.user.name;
employeePosition.lastUpdatedAt = new Date();
await this.employeePositionRepository.save(employeePosition);
});
}),
);
}
//create org
@ -661,6 +1211,134 @@ export class OrganizationController extends Controller {
});
}),
);
//create employeePosmaster
await Promise.all(
_orgemployeePosMaster
.filter((x: EmployeePosMaster) => x.orgChild4Id == data4Id)
.map(async (item: any) => {
delete item.id;
const employeePosMaster = Object.assign(
new EmployeePosMaster(),
item,
);
employeePosMaster.positions = [];
if (
requestBody.typeDraft.toUpperCase() == "ORG_POSITION_PERSON" ||
requestBody.typeDraft.toUpperCase() == "ORG_POSITION_PERSON_ROLE"
) {
employeePosMaster.current_holderId = item.current_holderId;
} else {
// employeePosMaster.next_holderId = null;
employeePosMaster.isSit = false;
}
if (
requestBody.typeDraft.toUpperCase() == "ORG_POSITION_ROLE" ||
requestBody.typeDraft.toUpperCase() == "ORG_POSITION_PERSON_ROLE"
) {
employeePosMaster.authRoleId = item.authRoleId;
} else {
employeePosMaster.authRoleId = null;
}
// employeePosMaster.current_holderId = null;
employeePosMaster.orgRevisionId = revision.id;
employeePosMaster.orgRootId = data.id;
employeePosMaster.createdUserId = request.user.sub;
employeePosMaster.createdFullName = request.user.name;
employeePosMaster.createdAt = new Date();
employeePosMaster.lastUpdateUserId = request.user.sub;
employeePosMaster.lastUpdateFullName = request.user.name;
employeePosMaster.lastUpdatedAt = new Date();
await this.employeePosMasterRepository.save(employeePosMaster);
//create employeePosition
item.positions.map(async (pos: any) => {
delete pos.id;
const employeePosition: EmployeePosition = Object.assign(
new EmployeePosition(),
pos,
);
employeePosition.posMasterId = employeePosMaster.id;
if (
requestBody.typeDraft.toUpperCase() == "ORG_POSITION" ||
requestBody.typeDraft.toUpperCase() == "ORG_POSITION_ROLE"
) {
employeePosition.positionIsSelected = false;
}
employeePosition.createdUserId = request.user.sub;
employeePosition.createdFullName = request.user.name;
employeePosition.createdAt = new Date();
employeePosition.lastUpdateUserId = request.user.sub;
employeePosition.lastUpdateFullName = request.user.name;
employeePosition.lastUpdatedAt = new Date();
await this.employeePositionRepository.save(employeePosition);
});
}),
);
//create employeeTempPosmaster
await Promise.all(
_orgemployeeTempPosMaster
.filter((x: EmployeeTempPosMaster) => x.orgChild4Id == data4Id)
.map(async (item: any) => {
delete item.id;
const employeeTempPosMaster = Object.assign(
new EmployeeTempPosMaster(),
item,
);
employeeTempPosMaster.positions = [];
if (
requestBody.typeDraft.toUpperCase() == "ORG_POSITION_PERSON" ||
requestBody.typeDraft.toUpperCase() == "ORG_POSITION_PERSON_ROLE"
) {
employeeTempPosMaster.current_holderId = item.current_holderId;
} else {
// employeeTempPosMaster.next_holderId = null;
employeeTempPosMaster.isSit = false;
}
if (
requestBody.typeDraft.toUpperCase() == "ORG_POSITION_ROLE" ||
requestBody.typeDraft.toUpperCase() == "ORG_POSITION_PERSON_ROLE"
) {
employeeTempPosMaster.authRoleId = item.authRoleId;
} else {
employeeTempPosMaster.authRoleId = null;
}
// employeeTempPosMaster.current_holderId = null;
employeeTempPosMaster.orgRevisionId = revision.id;
employeeTempPosMaster.orgRootId = data.id;
employeeTempPosMaster.createdUserId = request.user.sub;
employeeTempPosMaster.createdFullName = request.user.name;
employeeTempPosMaster.createdAt = new Date();
employeeTempPosMaster.lastUpdateUserId = request.user.sub;
employeeTempPosMaster.lastUpdateFullName = request.user.name;
employeeTempPosMaster.lastUpdatedAt = new Date();
await this.employeeTempPosMasterRepository.save(
employeeTempPosMaster,
);
//create employeePosition
item.positions.map(async (pos: any) => {
delete pos.id;
const employeePosition: EmployeePosition = Object.assign(
new EmployeePosition(),
pos,
);
employeePosition.posMasterTempId = employeeTempPosMaster.id;
if (
requestBody.typeDraft.toUpperCase() == "ORG_POSITION" ||
requestBody.typeDraft.toUpperCase() == "ORG_POSITION_ROLE"
) {
employeePosition.positionIsSelected = false;
}
employeePosition.createdUserId = request.user.sub;
employeePosition.createdFullName = request.user.name;
employeePosition.createdAt = new Date();
employeePosition.lastUpdateUserId = request.user.sub;
employeePosition.lastUpdateFullName = request.user.name;
employeePosition.lastUpdatedAt = new Date();
await this.employeePositionRepository.save(employeePosition);
});
}),
);
}
});
});

View file

@ -1739,10 +1739,14 @@ export class ProfileController extends Controller {
orgRevision: { orgRevisionIsDraft: false, orgRevisionIsCurrent: true },
},
});
return new HttpSuccess({ data: [], total: 0 });
if (!posMaster) throw new HttpError(HttpStatus.NOT_FOUND, "ไม่พบข้อมูลการครองตำแหน่ง");
posMaster.current_holderId = "";
// return new HttpSuccess({ data: [], total: 0 });
} else if ((posMaster?.current_holder?.posLevel?.posLevelAuthority ?? null) == "GOVERNOR") {
return new HttpSuccess({ data: [], total: 0 });
}
console.log(posMaster);
console.log(posMaster.id);
let condition: any = {
orgRootId: posMaster.orgRootId,
id: Not(posMaster.current_holderId || ""),
@ -1772,6 +1776,9 @@ export class ProfileController extends Controller {
condition.isDirector = true;
conditionNow.isDirector = true;
}
console.log(condition);
console.log("------------------");
console.log(conditionNow);
if (body.isAct == true) {
const [lists, total] = await AppDataSource.getRepository(viewDirectorActing)
.createQueryBuilder("viewDirectorActing")

View file

@ -2443,7 +2443,9 @@ export class ProfileEmployeeController extends Controller {
dateRetireLaw: profile.dateRetireLaw,
posMaster: posMaster == null ? null : posMaster.posMasterNo,
posMasterNo: posMaster == null ? null : posMaster.posMasterNo,
posLevelName: profile.posLevel == null ? null : profile.posLevel.posLevelName,
posLevelName: profile.posLevel == null && profile.posType == null
? null
: `${profile.posType.posTypeShortName} ${profile.posLevel.posLevelName}`,
posLevelRank: profile.posLevel == null ? null : profile.posLevel.posLevelRank,
posLevelId: profile.posLevel == null ? null : profile.posLevel.id,
posTypeName: profile.posType == null ? null : profile.posType.posTypeName,
@ -2834,7 +2836,9 @@ export class ProfileEmployeeController extends Controller {
posTypeId: item.posTypeId,
posTypeName: item.posType?.posTypeName,
posLevelId: item.posLevelId,
posLevelName: item.posLevel?.posLevelName,
posLevelName: item.posLevel == null && item.posType == null
? null
: `${item.posType?.posTypeShortName} ${item.posLevel?.posLevelName}`,
educationDegree:
latestProfileEducation != null && latestProfileEducation.educationLevel != null
? latestProfileEducation.educationLevel
@ -4633,7 +4637,9 @@ export class ProfileEmployeeController extends Controller {
posTypeId: item.posTypeId,
posTypeName: item.posType?.posTypeName,
posLevelId: item.posLevelId,
posLevelName: item.posLevel?.posLevelName,
posLevelName: item.posLevel == null && item.posType == null
? null
: `${item.posType?.posTypeShortName} ${item.posLevel?.posLevelName}`,
educationDegree:
latestProfileEducation != null && latestProfileEducation.educationLevel != null
? latestProfileEducation.educationLevel

View file

@ -111,7 +111,7 @@ export class ProfileGovernmentEmployeeController extends Controller {
posLevel:
record.posType == null && record.posLevel == null
? null
: `${record.posType.posTypeShortName}${record.posLevel.posLevelName}`, //ระดับ
: `${record.posType.posTypeShortName} ${record.posLevel.posLevelName}`, //ระดับ
posMasterNo: posMaster == null ? null : `${orgShortName} ${posMaster.posMasterNo}`, //เลขที่ตำแหน่ง
posType: record.posType == null ? null : record.posType.posTypeName, //ประเภท
dateLeave: record.birthDate == null ? null : calculateRetireDate(record.birthDate),
@ -299,7 +299,9 @@ export class ProfileGovernmentEmployeeController extends Controller {
const data = {
org: org, //สังกัด
position: record.position, //ตำแหน่ง
posLevel: record.posLevel == null ? null : record.posLevel.posLevelName, //ระดับ
posLevel: record.posLevel == null && record.posType == null
? null
: `${record.posType.posTypeShortName} ${record.posLevel.posLevelName}`, //ระดับ
posMasterNo: posMaster == null ? null : `${orgShortName} ${posMaster.posMasterNo}`, //เลขที่ตำแหน่ง
posType: record.posType == null ? null : record.posType.posTypeName, //ประเภท
dateLeave: record.birthDate == null ? null : calculateRetireDate(record.birthDate), //วันเกษียณ

View file

@ -80,6 +80,55 @@ export class ProfileSalaryController extends Controller {
return new HttpSuccess(record);
}
@Get("tenure/{profileId}")
public async getPositionTenure(@Path() profileId: string, @Request() req: RequestWithUser) {
const position = await AppDataSource.query(
"CALL GetProfileSalaryPosition(?)",
[profileId]
);
const _position = position.length > 0 ? position[0] : []
const mapPosition = _position.length > 1
? _position
.slice(1)
.map((curr: any, index: number) => ({
year: curr.Years ? Math.floor(Number(curr.Years)) : 0,
month: curr.Months ? Math.floor(Number(curr.Months)) : 0,
day: curr.Days ? Math.floor(Number(curr.Days)) : 0,
name: _position[index]?.positionName
}))
: [];
const posLevel = [{
year: 1,
month: 0,
day: 0,
name: "ต้น",
}];
const posExecutive = await AppDataSource.query(
"CALL GetProfileSalaryExecutive(?)",
[profileId]
);
const _posExecutive = posExecutive.length > 0 ? posExecutive[0] : []
const mapPosExecutive = _posExecutive.length > 1
? _posExecutive
.slice(1)
.map((curr: any, index: number) => ({
year: curr.Years ? Math.floor(Number(curr.Years)) : 0,
month: curr.Months ? Math.floor(Number(curr.Months)) : 0,
day: curr.Days ? Math.floor(Number(curr.Days)) : 0,
name: _posExecutive[index]?.positionName
}))
: [];
return new HttpSuccess({
position: mapPosition,
posLevel: posLevel,
posExecutive: mapPosExecutive
});
}
@Get("admin/{profileId}")
public async getSalaryAdmin(@Path() profileId: string, @Request() req: RequestWithUser) {
let _workflow = await new permission().Workflow(req, profileId, "SYS_SALARY_OFFICER");

View file

@ -36,7 +36,7 @@ export class ProfileSalary extends EntityBase {
comment: "เลขที่คำสั่ง",
default: null,
})
commandNo: number;
commandNo: string;
@Column({
nullable: true,
@ -203,6 +203,13 @@ export class ProfileSalary extends EntityBase {
})
remark: string;
@Column({
nullable: true,
comment: "refId",
default: null,
})
refId: number;
@Column({
comment: "วันที่",
type: "datetime",
@ -217,6 +224,13 @@ export class ProfileSalary extends EntityBase {
})
isGovernment: boolean;
@Column({
nullable: true,
comment: "ข้อมูลจาก Entry",
default: null,
})
isEntry: boolean;
@Column({
nullable: true,
length: 40,
@ -242,7 +256,7 @@ export class ProfileSalary extends EntityBase {
}
export class CreateProfileSalary {
profileId: string;
profileId: string | null;
commandDateAffect?: Date | null;
commandDateSign?: Date | null;
amount?: Double | null;
@ -266,7 +280,7 @@ export class CreateProfileSalary {
positionCee?: string | null;
commandCode?: string | null;
commandName?: string | null;
commandNo?: number | null;
commandNo?: string | null;
commandYear?: number | null;
}
@ -293,7 +307,7 @@ export class CreateProfileSalaryEmployee {
positionCee?: string | null;
commandCode?: string | null;
commandName?: string | null;
commandNo?: number | null;
commandNo?: string | null;
commandYear?: number | null;
}
@ -318,7 +332,7 @@ export class UpdateProfileSalaryEmployee {
positionCee?: string | null;
commandCode?: string | null;
commandName?: string | null;
commandNo?: number | null;
commandNo?: string | null;
commandYear?: number | null;
}
@ -344,6 +358,6 @@ export type UpdateProfileSalary = {
positionCee?: string | null;
commandCode?: string | null;
commandName?: string | null;
commandNo?: number | null;
commandNo?: string | null;
commandYear?: number | null;
};

View file

@ -17,7 +17,7 @@ export class ProfileSalaryHistory extends EntityBase {
comment: "เลขที่คำสั่ง",
default: null,
})
commandNo: number;
commandNo: string;
@Column({
nullable: true,

View file

@ -0,0 +1,151 @@
import { ViewColumn, ViewEntity } from "typeorm";
@ViewEntity({
expression: `
SELECT
DATE(MIN(commandDateAffect)) AS commandDateAffect,
TIMESTAMPDIFF(
DAY,
LAG(MIN(commandDateAffect)) OVER (PARTITION BY profileEmployeeId ORDER BY commandDateAffect, \`order\` ASC), MIN(commandDateAffect)) AS days_diff,
TIMESTAMPDIFF(
DAY,
LAG(MIN(commandDateAffect)) OVER (PARTITION BY profileEmployeeId ORDER BY commandDateAffect, \`order\` ASC), MIN(commandDateAffect)) / 365.2524 AS 'Years',
TIMESTAMPDIFF(
DAY,
LAG(MIN(commandDateAffect)) OVER (PARTITION BY profileEmployeeId ORDER BY commandDateAffect, \`order\` ASC), MIN(commandDateAffect)) / 30.4375 % 12 AS 'Months',
TIMESTAMPDIFF(
DAY,
LAG(MIN(commandDateAffect)) OVER (PARTITION BY profileEmployeeId ORDER BY commandDateAffect, \`order\` ASC), MIN(commandDateAffect)) % 30.4375 AS 'Days',
positionName,
positionCee,
posNo,
positionType,
positionLevel,
OrgRoot,
orgChild1,
orgChild2,
orgChild3,
orgChild4,
commandCode,
commandName,
commandNo,
commandYear,
remark,
profileEmployeeId,
ROW_NUMBER() OVER (PARTITION BY profileEmployeeId ORDER BY commandDateAffect ASC) AS orderNumber
FROM
profileSalary
WHERE
profileEmployeeId IS NOT NULL AND
commandCode IN (1, 2, 3, 4, 8, 10, 11, 12, 15, 16)
GROUP BY
profileEmployeeId, positionName
UNION ALL
SELECT
CURDATE() AS commandDateAffect,
TIMESTAMPDIFF(DAY, MAX(commandDateAffect), CURDATE()) AS days_diff,
TIMESTAMPDIFF(DAY, MAX(commandDateAffect), CURDATE()) / 365.2524 AS 'Years',
TIMESTAMPDIFF(DAY, MAX(commandDateAffect), CURDATE()) / 30.4375 % 12 AS 'Months',
TIMESTAMPDIFF(DAY, MAX(commandDateAffect), CURDATE()) % 30.4375 AS 'Days',
NULL AS positionName,
NULL AS positionCee,
NULL AS posNo,
NULL AS positionType,
NULL AS positionLevel,
NULL AS OrgRoot,
NULL AS orgChild1,
NULL AS orgChild2,
NULL AS orgChild3,
NULL AS orgChild4,
NULL AS commandCode,
NULL AS commandName,
NULL AS commandNo,
NULL AS commandYear,
'Comparison with current date' AS remark,
profileEmployeeId,
NULL AS orderNumber
FROM
profileSalary
WHERE
profileEmployeeId IS NOT NULL AND
commandCode IN (1, 2, 3, 4, 8, 10, 11, 12, 15, 16)
GROUP BY
profileEmployeeId
ORDER BY
profileEmployeeId,
commandDateAffect ASC
`,
})
export class viewCurrentTenureEmployee {
@ViewColumn()
commandDateAffect: Date;
@ViewColumn()
days_diff: number;
@ViewColumn()
Years: number;
@ViewColumn()
Months: number;
@ViewColumn()
Days: number;
@ViewColumn()
positionName: string;
@ViewColumn()
positionCee: string;
@ViewColumn()
posNo: string;
@ViewColumn()
positionExecutive: string;
@ViewColumn()
positionType: string;
@ViewColumn()
positionLevel: string;
@ViewColumn()
OrgRoot: string;
@ViewColumn()
orgChild1: string;
@ViewColumn()
orgChild2: string;
@ViewColumn()
orgChild3: string;
@ViewColumn()
orgChild4: string;
@ViewColumn()
commandCode: number;
@ViewColumn()
commandName: string;
@ViewColumn()
commandNo: string;
@ViewColumn()
commandYear: number;
@ViewColumn()
remark: string;
@ViewColumn()
profileEmployeeId: string;
@ViewColumn()
orderNumber: number;
}

View file

@ -0,0 +1,151 @@
import { ViewColumn, ViewEntity } from "typeorm";
@ViewEntity({
expression: `
SELECT
DATE(MIN(commandDateAffect)) AS commandDateAffect,
TIMESTAMPDIFF(
DAY,
LAG(MIN(commandDateAffect)) OVER (PARTITION BY profileId ORDER BY commandDateAffect, \`order\` ASC), MIN(commandDateAffect)) AS days_diff,
TIMESTAMPDIFF(
DAY,
LAG(MIN(commandDateAffect)) OVER (PARTITION BY profileId ORDER BY commandDateAffect, \`order\` ASC), MIN(commandDateAffect)) / 365.2524 AS 'Years',
TIMESTAMPDIFF(
DAY,
LAG(MIN(commandDateAffect)) OVER (PARTITION BY profileId ORDER BY commandDateAffect, \`order\` ASC), MIN(commandDateAffect)) / 30.4375 % 12 AS 'Months',
TIMESTAMPDIFF(
DAY,
LAG(MIN(commandDateAffect)) OVER (PARTITION BY profileId ORDER BY commandDateAffect, \`order\` ASC), MIN(commandDateAffect)) % 30.4375 AS 'Days',
positionName,
positionCee,
posNo,
positionExecutive,
positionType,
positionLevel,
OrgRoot,
orgChild1,
orgChild2,
orgChild3,
orgChild4,
commandCode,
commandName,
commandNo,
commandYear,
remark,
profileId,
ROW_NUMBER() OVER (PARTITION BY profileId ORDER BY commandDateAffect ASC) AS orderNumber
FROM
profileSalary
WHERE
commandCode IN (1, 2, 3, 4, 8, 10, 11, 12, 15, 16)
GROUP BY
profileId, positionName
UNION ALL
SELECT
CURDATE() AS commandDateAffect,
TIMESTAMPDIFF(DAY, MAX(commandDateAffect), CURDATE()) AS days_diff,
TIMESTAMPDIFF(DAY, MAX(commandDateAffect), CURDATE()) / 365.2524 AS 'Years',
TIMESTAMPDIFF(DAY, MAX(commandDateAffect), CURDATE()) / 30.4375 % 12 AS 'Months',
TIMESTAMPDIFF(DAY, MAX(commandDateAffect), CURDATE()) % 30.4375 AS 'Days',
NULL AS positionName,
NULL AS positionCee,
NULL AS posNo,
NULL AS positionExecutive,
NULL AS positionType,
NULL AS positionLevel,
NULL AS OrgRoot,
NULL AS orgChild1,
NULL AS orgChild2,
NULL AS orgChild3,
NULL AS orgChild4,
NULL AS commandCode,
NULL AS commandName,
NULL AS commandNo,
NULL AS commandYear,
'Comparison with current date' AS remark,
profileId,
NULL AS orderNumber
FROM
profileSalary
WHERE
commandCode IN (1, 2, 3, 4, 8, 10, 11, 12, 15, 16)
GROUP BY
profileId
ORDER BY
profileId,
commandDateAffect ASC
`,
})
export class viewCurrentTenureOfficer {
@ViewColumn()
commandDateAffect: Date;
@ViewColumn()
days_diff: number;
@ViewColumn()
Years: number;
@ViewColumn()
Months: number;
@ViewColumn()
Days: number;
@ViewColumn()
positionName: string;
@ViewColumn()
positionCee: string;
@ViewColumn()
posNo: string;
@ViewColumn()
positionExecutive: string;
@ViewColumn()
positionType: string;
@ViewColumn()
positionLevel: string;
@ViewColumn()
OrgRoot: string;
@ViewColumn()
orgChild1: string;
@ViewColumn()
orgChild2: string;
@ViewColumn()
orgChild3: string;
@ViewColumn()
orgChild4: string;
@ViewColumn()
commandCode: number;
@ViewColumn()
commandName: string;
@ViewColumn()
commandNo: string;
@ViewColumn()
commandYear: number;
@ViewColumn()
remark: string;
@ViewColumn()
profileId: string;
@ViewColumn()
orderNumber: number;
}

View file

@ -1,246 +0,0 @@
import { MigrationInterface, QueryRunner } from "typeorm";
export class Update22420251740366319309 implements MigrationInterface {
name = 'Update22420251740366319309'
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE \`OFFICER\` DROP COLUMN \`idOFFICER\``);
await queryRunner.query(`ALTER TABLE \`OFFICER\` DROP PRIMARY KEY`);
await queryRunner.query(`ALTER TABLE \`OFFICER\` DROP COLUMN \`ID\``);
await queryRunner.query(`ALTER TABLE \`OFFICER\` DROP COLUMN \`FLAG_PERSON_TYPE\``);
await queryRunner.query(`ALTER TABLE \`OFFICER\` DROP COLUMN \`RANK_CODE\``);
await queryRunner.query(`ALTER TABLE \`OFFICER\` DROP COLUMN \`FLAG_TYPE\``);
await queryRunner.query(`ALTER TABLE \`OFFICER\` DROP COLUMN \`RET_BORN_DATE\``);
await queryRunner.query(`ALTER TABLE \`OFFICER\` DROP COLUMN \`RET_BORN_YEAR\``);
await queryRunner.query(`ALTER TABLE \`OFFICER\` DROP COLUMN \`RETURN_OCCUPY_DATE\``);
await queryRunner.query(`ALTER TABLE \`OFFICER\` DROP COLUMN \`MP_FORCE_DATE\``);
await queryRunner.query(`ALTER TABLE \`OFFICER\` DROP COLUMN \`UPCLASS_DATE\``);
await queryRunner.query(`ALTER TABLE \`OFFICER\` DROP COLUMN \`WORK_LINE_DATE\``);
await queryRunner.query(`ALTER TABLE \`OFFICER\` DROP COLUMN \`FUND_COURSE_NAME\``);
await queryRunner.query(`ALTER TABLE \`OFFICER\` DROP COLUMN \`EDUCATION_NAME\``);
await queryRunner.query(`ALTER TABLE \`OFFICER\` DROP COLUMN \`MAJOR_CODE\``);
await queryRunner.query(`ALTER TABLE \`OFFICER\` DROP COLUMN \`MAJOR_NAME\``);
await queryRunner.query(`ALTER TABLE \`OFFICER\` DROP COLUMN \`UNIVER_NAME\``);
await queryRunner.query(`ALTER TABLE \`OFFICER\` DROP COLUMN \`POSITION_CATG\``);
await queryRunner.query(`ALTER TABLE \`OFFICER\` DROP COLUMN \`WORK_LINE_CODE\``);
await queryRunner.query(`ALTER TABLE \`OFFICER\` DROP COLUMN \`MP_CEE_NAME\``);
await queryRunner.query(`ALTER TABLE \`OFFICER\` DROP COLUMN \`MP_CEE\``);
await queryRunner.query(`ALTER TABLE \`OFFICER\` DROP COLUMN \`ADMIN_CODE\``);
await queryRunner.query(`ALTER TABLE \`OFFICER\` DROP COLUMN \`ADMIN_NAME\``);
await queryRunner.query(`ALTER TABLE \`OFFICER\` DROP COLUMN \`SALARY_LEVEL_CODE\``);
await queryRunner.query(`ALTER TABLE \`OFFICER\` DROP COLUMN \`SALARY_POS_ABB_NAME\``);
await queryRunner.query(`ALTER TABLE \`OFFICER\` DROP COLUMN \`SAL_POS_AMOUNT_2\``);
await queryRunner.query(`ALTER TABLE \`OFFICER\` DROP COLUMN \`SPECIALIST_CODE\``);
await queryRunner.query(`ALTER TABLE \`OFFICER\` DROP COLUMN \`SPECIALIST_DATE\``);
await queryRunner.query(`ALTER TABLE \`OFFICER\` DROP COLUMN \`SALARY_POS_ABB_NAME_1\``);
await queryRunner.query(`ALTER TABLE \`OFFICER\` DROP COLUMN \`SAL_POS_AMOUNT_1\``);
await queryRunner.query(`ALTER TABLE \`OFFICER\` DROP COLUMN \`ADMIN_DATE\``);
await queryRunner.query(`ALTER TABLE \`OFFICER\` DROP COLUMN \`MP_FLAG\``);
await queryRunner.query(`ALTER TABLE \`OFFICER\` DROP COLUMN \`SALARY_ADD\``);
await queryRunner.query(`ALTER TABLE \`OFFICER\` DROP COLUMN \`SPECIAL_PERCENT\``);
await queryRunner.query(`ALTER TABLE \`OFFICER\` DROP COLUMN \`SPECIAL_AMT\``);
await queryRunner.query(`ALTER TABLE \`OFFICER\` DROP COLUMN \`PAYMENT_AMT\``);
await queryRunner.query(`ALTER TABLE \`OFFICER\` DROP COLUMN \`PAYMENT_PERCENT\``);
await queryRunner.query(`ALTER TABLE \`OFFICER\` DROP COLUMN \`MP_FLAG_1\``);
await queryRunner.query(`ALTER TABLE \`OFFICER\` DROP COLUMN \`COST_LIVING_AMOUNT\``);
await queryRunner.query(`ALTER TABLE \`OFFICER\` DROP COLUMN \`DEPARTMENT_CODE\``);
await queryRunner.query(`ALTER TABLE \`OFFICER\` DROP COLUMN \`DIVISION_CODE\``);
await queryRunner.query(`ALTER TABLE \`OFFICER\` DROP COLUMN \`SECTION_CODE\``);
await queryRunner.query(`ALTER TABLE \`OFFICER\` DROP COLUMN \`JOB_CODE\``);
await queryRunner.query(`ALTER TABLE \`OFFICER\` DROP COLUMN \`FLAG_CUR_ST\``);
await queryRunner.query(`ALTER TABLE \`OFFICER\` DROP COLUMN \`POS_NUM_CODE_SIT\``);
await queryRunner.query(`ALTER TABLE \`OFFICER\` DROP COLUMN \`MP_COMMAND_NUM\``);
await queryRunner.query(`ALTER TABLE \`OFFICER\` DROP COLUMN \`MP_COMMAND_DATE\``);
await queryRunner.query(`ALTER TABLE \`OFFICER\` DROP COLUMN \`FLAG_TO_NAME_CODE\``);
await queryRunner.query(`ALTER TABLE \`OFFICER\` DROP COLUMN \`MP_POS_DATE\``);
await queryRunner.query(`ALTER TABLE \`OFFICER\` DROP COLUMN \`MP_YEAR\``);
await queryRunner.query(`ALTER TABLE \`OFFICER\` DROP COLUMN \`RET_BORN_MP_YEAR\``);
await queryRunner.query(`ALTER TABLE \`OFFICER\` DROP COLUMN \`SALARY_POS_CODE\``);
await queryRunner.query(`ALTER TABLE \`OFFICER\` DROP COLUMN \`SALARY_POS_CODE_1\``);
await queryRunner.query(`ALTER TABLE \`OFFICER\` DROP COLUMN \`CUR_YEAR\``);
await queryRunner.query(`ALTER TABLE \`OFFICER\` DROP COLUMN \`FLAG_TO_NAME\``);
await queryRunner.query(`ALTER TABLE \`OFFICER\` DROP COLUMN \`POS_NUM_CODE_SIT_ABB\``);
await queryRunner.query(`ALTER TABLE \`OFFICER\` DROP COLUMN \`POS_NUM_CODE_SIT_CODE\``);
await queryRunner.query(`ALTER TABLE \`OFFICER\` DROP COLUMN \`CONTENT_NO\``);
await queryRunner.query(`ALTER TABLE \`OFFICER\` DROP COLUMN \`POS_NUM_CODE_SIT_O\``);
await queryRunner.query(`ALTER TABLE \`OFFICER\` DROP COLUMN \`POS_NUM_CODE_SIT_ABB_O\``);
await queryRunner.query(`ALTER TABLE \`OFFICER\` DROP COLUMN \`POS_NUM_CODE_SIT_CODE_O\``);
await queryRunner.query(`ALTER TABLE \`OFFICER\` DROP COLUMN \`MP_COMMAND_NUM_O\``);
await queryRunner.query(`ALTER TABLE \`OFFICER\` DROP COLUMN \`CUR_YEAR_O\``);
await queryRunner.query(`ALTER TABLE \`OFFICER\` DROP COLUMN \`MP_YEAR_O\``);
await queryRunner.query(`ALTER TABLE \`OFFICER\` DROP COLUMN \`FLAG_TO_NAME_CODE_O\``);
await queryRunner.query(`ALTER TABLE \`OFFICER\` DROP COLUMN \`FLAG_TO_NAME_O\``);
await queryRunner.query(`ALTER TABLE \`OFFICER\` DROP COLUMN \`MP_COMMAND_DATE_O\``);
await queryRunner.query(`ALTER TABLE \`OFFICER\` DROP COLUMN \`MP_POS_DATE_O\``);
await queryRunner.query(`ALTER TABLE \`OFFICER\` DROP COLUMN \`MP_FLAG_O\``);
await queryRunner.query(`ALTER TABLE \`OFFICER\` DROP COLUMN \`MP_FLAG_1_O\``);
await queryRunner.query(`ALTER TABLE \`OFFICER\` DROP COLUMN \`MP_CEE_O\``);
await queryRunner.query(`ALTER TABLE \`OFFICER\` DROP COLUMN \`SALARY_LEVEL_CODE_O\``);
await queryRunner.query(`ALTER TABLE \`OFFICER\` DROP COLUMN \`SALARY_O\``);
await queryRunner.query(`ALTER TABLE \`OFFICER\` DROP COLUMN \`SPECIAL_AMT_O\``);
await queryRunner.query(`ALTER TABLE \`OFFICER\` DROP COLUMN \`SALARY_ADD_O\``);
await queryRunner.query(`ALTER TABLE \`OFFICER\` DROP COLUMN \`MP_CEE_CODE\``);
await queryRunner.query(`ALTER TABLE \`OFFICER\` DROP COLUMN \`SALARY_LEVEL\``);
await queryRunner.query(`ALTER TABLE \`OFFICER\` DROP COLUMN \`MP_CEE_CODE_O\``);
await queryRunner.query(`ALTER TABLE \`OFFICER\` DROP COLUMN \`SALARY_LEVEL_O\``);
await queryRunner.query(`ALTER TABLE \`OFFICER\` DROP COLUMN \`GROUPWORK_CODE\``);
await queryRunner.query(`ALTER TABLE \`OFFICER\` DROP COLUMN \`WORK_LINE_CODE_O\``);
await queryRunner.query(`ALTER TABLE \`OFFICER\` DROP COLUMN \`WORK_LINE_NAME_O\``);
await queryRunner.query(`ALTER TABLE \`OFFICER\` DROP COLUMN \`FLAG_RETIRE_STATUS\``);
await queryRunner.query(`ALTER TABLE \`OFFICER\` DROP COLUMN \`MARRIAGE_STATE\``);
await queryRunner.query(`ALTER TABLE \`OFFICER\` DROP COLUMN \`SUN_NO\``);
await queryRunner.query(`ALTER TABLE \`OFFICER\` DROP COLUMN \`RETIRE_TYPE_CODE\``);
await queryRunner.query(`ALTER TABLE \`OFFICER\` DROP COLUMN \`RETIRE_POS_NO\``);
await queryRunner.query(`ALTER TABLE \`OFFICER\` DROP COLUMN \`DEXPIRE_DATE\``);
await queryRunner.query(`ALTER TABLE \`OFFICER\` DROP COLUMN \`HELP_LIVING_AMOUNT\``);
await queryRunner.query(`ALTER TABLE \`OFFICER\` DROP COLUMN \`OLD_RETIRE_DEPARTMENT_CODE\``);
await queryRunner.query(`ALTER TABLE \`OFFICER\` DROP COLUMN \`OLD_RETIRE_DIVISION_CODE\``);
await queryRunner.query(`ALTER TABLE \`OFFICER\` DROP COLUMN \`OLD_RETIRE_SECTION_CODE\``);
await queryRunner.query(`ALTER TABLE \`OFFICER\` DROP COLUMN \`OLD_RETIRE_JOB_CODE\``);
await queryRunner.query(`ALTER TABLE \`OFFICER\` DROP COLUMN \`CREATE_DATE\``);
await queryRunner.query(`ALTER TABLE \`OFFICER\` DROP COLUMN \`UPDATE_DATE\``);
await queryRunner.query(`ALTER TABLE \`HR_PERSONAL_EMP_ADDRESS\` DROP COLUMN \`STREET\``);
await queryRunner.query(`ALTER TABLE \`HR_PERSONAL_EMP_ADDRESS\` DROP COLUMN \`TEL\``);
await queryRunner.query(`ALTER TABLE \`HR_PERSONAL_EMP_ADDRESS\` DROP COLUMN \`CONTACT_STREET\``);
await queryRunner.query(`ALTER TABLE \`HR_PERSONAL_EMP_ADDRESS\` DROP COLUMN \`CONTACT_TEL\``);
await queryRunner.query(`ALTER TABLE \`HR_PERSONAL_EMP_FAMILY\` DROP COLUMN \`FATHER_RANK_CODE\``);
await queryRunner.query(`ALTER TABLE \`HR_PERSONAL_EMP_FAMILY\` DROP COLUMN \`MOTHER_RANK_CODE\``);
await queryRunner.query(`ALTER TABLE \`HR_PERSONAL_EMP_FAMILY\` DROP COLUMN \`SPOUSE_RANK_CODE\``);
await queryRunner.query(`ALTER TABLE \`HR_PERSONAL_EMP_FAMILY\` DROP COLUMN \`LIFE_SPOUSE\``);
await queryRunner.query(`ALTER TABLE \`HR_PERSONAL_EMP_FAMILY\` DROP COLUMN \`SUN_NO\``);
await queryRunner.query(`ALTER TABLE \`HR_EDUCATION_EMP\` DROP COLUMN \`FLAG_EDUCATION\``);
await queryRunner.query(`ALTER TABLE \`HR_EDUCATION_EMP\` DROP COLUMN \`MAJOR_CODE\``);
await queryRunner.query(`ALTER TABLE \`HR_EDUCATION_EMP\` DROP COLUMN \`MINOR_CODE\``);
await queryRunner.query(`ALTER TABLE \`HR_EDUCATION_EMP\` DROP COLUMN \`FUND_COURSE_CODE\``);
await queryRunner.query(`ALTER TABLE \`OFFICER\` ADD \`id\` int NOT NULL PRIMARY KEY AUTO_INCREMENT`);
await queryRunner.query(`ALTER TABLE \`positionOfficer\` DROP COLUMN \`id\``);
await queryRunner.query(`ALTER TABLE \`positionOfficer\` ADD \`id\` int NOT NULL PRIMARY KEY AUTO_INCREMENT`);
await queryRunner.query(`ALTER TABLE \`positionOfficer\` DROP COLUMN \`order_move_position\``);
await queryRunner.query(`ALTER TABLE \`positionOfficer\` ADD \`order_move_position\` text NULL`);
await queryRunner.query(`ALTER TABLE \`HR_EDUCATION\` DROP COLUMN \`EDUCATION_SEQ\``);
await queryRunner.query(`ALTER TABLE \`HR_EDUCATION\` ADD \`EDUCATION_SEQ\` varchar(255) NULL`);
await queryRunner.query(`ALTER TABLE \`HR_EDUCATION_EMP\` DROP COLUMN \`EDUCATION_SEQ\``);
await queryRunner.query(`ALTER TABLE \`HR_EDUCATION_EMP\` ADD \`EDUCATION_SEQ\` varchar(255) NULL`);
}
public async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE \`HR_EDUCATION_EMP\` DROP COLUMN \`EDUCATION_SEQ\``);
await queryRunner.query(`ALTER TABLE \`HR_EDUCATION_EMP\` ADD \`EDUCATION_SEQ\` mediumtext NULL`);
await queryRunner.query(`ALTER TABLE \`HR_EDUCATION\` DROP COLUMN \`EDUCATION_SEQ\``);
await queryRunner.query(`ALTER TABLE \`HR_EDUCATION\` ADD \`EDUCATION_SEQ\` text NULL`);
await queryRunner.query(`ALTER TABLE \`positionOfficer\` DROP COLUMN \`order_move_position\``);
await queryRunner.query(`ALTER TABLE \`positionOfficer\` ADD \`order_move_position\` int NULL`);
await queryRunner.query(`ALTER TABLE \`positionOfficer\` DROP COLUMN \`id\``);
await queryRunner.query(`ALTER TABLE \`positionOfficer\` ADD \`id\` int NOT NULL DEFAULT '0'`);
await queryRunner.query(`ALTER TABLE \`OFFICER\` DROP COLUMN \`id\``);
await queryRunner.query(`ALTER TABLE \`HR_EDUCATION_EMP\` ADD \`FUND_COURSE_CODE\` mediumtext NULL`);
await queryRunner.query(`ALTER TABLE \`HR_EDUCATION_EMP\` ADD \`MINOR_CODE\` mediumtext NULL`);
await queryRunner.query(`ALTER TABLE \`HR_EDUCATION_EMP\` ADD \`MAJOR_CODE\` mediumtext NULL`);
await queryRunner.query(`ALTER TABLE \`HR_EDUCATION_EMP\` ADD \`FLAG_EDUCATION\` mediumtext NULL`);
await queryRunner.query(`ALTER TABLE \`HR_PERSONAL_EMP_FAMILY\` ADD \`SUN_NO\` mediumtext NULL`);
await queryRunner.query(`ALTER TABLE \`HR_PERSONAL_EMP_FAMILY\` ADD \`LIFE_SPOUSE\` mediumtext NULL`);
await queryRunner.query(`ALTER TABLE \`HR_PERSONAL_EMP_FAMILY\` ADD \`SPOUSE_RANK_CODE\` mediumtext NULL`);
await queryRunner.query(`ALTER TABLE \`HR_PERSONAL_EMP_FAMILY\` ADD \`MOTHER_RANK_CODE\` mediumtext NULL`);
await queryRunner.query(`ALTER TABLE \`HR_PERSONAL_EMP_FAMILY\` ADD \`FATHER_RANK_CODE\` mediumtext NULL`);
await queryRunner.query(`ALTER TABLE \`HR_PERSONAL_EMP_ADDRESS\` ADD \`CONTACT_TEL\` mediumtext NULL`);
await queryRunner.query(`ALTER TABLE \`HR_PERSONAL_EMP_ADDRESS\` ADD \`CONTACT_STREET\` mediumtext NULL`);
await queryRunner.query(`ALTER TABLE \`HR_PERSONAL_EMP_ADDRESS\` ADD \`TEL\` mediumtext NULL`);
await queryRunner.query(`ALTER TABLE \`HR_PERSONAL_EMP_ADDRESS\` ADD \`STREET\` mediumtext NULL`);
await queryRunner.query(`ALTER TABLE \`OFFICER\` ADD \`UPDATE_DATE\` text NULL`);
await queryRunner.query(`ALTER TABLE \`OFFICER\` ADD \`CREATE_DATE\` text NULL`);
await queryRunner.query(`ALTER TABLE \`OFFICER\` ADD \`OLD_RETIRE_JOB_CODE\` text NULL`);
await queryRunner.query(`ALTER TABLE \`OFFICER\` ADD \`OLD_RETIRE_SECTION_CODE\` text NULL`);
await queryRunner.query(`ALTER TABLE \`OFFICER\` ADD \`OLD_RETIRE_DIVISION_CODE\` text NULL`);
await queryRunner.query(`ALTER TABLE \`OFFICER\` ADD \`OLD_RETIRE_DEPARTMENT_CODE\` text NULL`);
await queryRunner.query(`ALTER TABLE \`OFFICER\` ADD \`HELP_LIVING_AMOUNT\` text NULL`);
await queryRunner.query(`ALTER TABLE \`OFFICER\` ADD \`DEXPIRE_DATE\` text NULL`);
await queryRunner.query(`ALTER TABLE \`OFFICER\` ADD \`RETIRE_POS_NO\` text NULL`);
await queryRunner.query(`ALTER TABLE \`OFFICER\` ADD \`RETIRE_TYPE_CODE\` text NULL`);
await queryRunner.query(`ALTER TABLE \`OFFICER\` ADD \`SUN_NO\` text NULL`);
await queryRunner.query(`ALTER TABLE \`OFFICER\` ADD \`MARRIAGE_STATE\` text NULL`);
await queryRunner.query(`ALTER TABLE \`OFFICER\` ADD \`FLAG_RETIRE_STATUS\` text NULL`);
await queryRunner.query(`ALTER TABLE \`OFFICER\` ADD \`WORK_LINE_NAME_O\` text NULL`);
await queryRunner.query(`ALTER TABLE \`OFFICER\` ADD \`WORK_LINE_CODE_O\` text NULL`);
await queryRunner.query(`ALTER TABLE \`OFFICER\` ADD \`GROUPWORK_CODE\` text NULL`);
await queryRunner.query(`ALTER TABLE \`OFFICER\` ADD \`SALARY_LEVEL_O\` text NULL`);
await queryRunner.query(`ALTER TABLE \`OFFICER\` ADD \`MP_CEE_CODE_O\` text NULL`);
await queryRunner.query(`ALTER TABLE \`OFFICER\` ADD \`SALARY_LEVEL\` text NULL`);
await queryRunner.query(`ALTER TABLE \`OFFICER\` ADD \`MP_CEE_CODE\` text NULL`);
await queryRunner.query(`ALTER TABLE \`OFFICER\` ADD \`SALARY_ADD_O\` text NULL`);
await queryRunner.query(`ALTER TABLE \`OFFICER\` ADD \`SPECIAL_AMT_O\` text NULL`);
await queryRunner.query(`ALTER TABLE \`OFFICER\` ADD \`SALARY_O\` text NULL`);
await queryRunner.query(`ALTER TABLE \`OFFICER\` ADD \`SALARY_LEVEL_CODE_O\` text NULL`);
await queryRunner.query(`ALTER TABLE \`OFFICER\` ADD \`MP_CEE_O\` text NULL`);
await queryRunner.query(`ALTER TABLE \`OFFICER\` ADD \`MP_FLAG_1_O\` text NULL`);
await queryRunner.query(`ALTER TABLE \`OFFICER\` ADD \`MP_FLAG_O\` text NULL`);
await queryRunner.query(`ALTER TABLE \`OFFICER\` ADD \`MP_POS_DATE_O\` text NULL`);
await queryRunner.query(`ALTER TABLE \`OFFICER\` ADD \`MP_COMMAND_DATE_O\` text NULL`);
await queryRunner.query(`ALTER TABLE \`OFFICER\` ADD \`FLAG_TO_NAME_O\` text NULL`);
await queryRunner.query(`ALTER TABLE \`OFFICER\` ADD \`FLAG_TO_NAME_CODE_O\` text NULL`);
await queryRunner.query(`ALTER TABLE \`OFFICER\` ADD \`MP_YEAR_O\` text NULL`);
await queryRunner.query(`ALTER TABLE \`OFFICER\` ADD \`CUR_YEAR_O\` text NULL`);
await queryRunner.query(`ALTER TABLE \`OFFICER\` ADD \`MP_COMMAND_NUM_O\` text NULL`);
await queryRunner.query(`ALTER TABLE \`OFFICER\` ADD \`POS_NUM_CODE_SIT_CODE_O\` text NULL`);
await queryRunner.query(`ALTER TABLE \`OFFICER\` ADD \`POS_NUM_CODE_SIT_ABB_O\` text NULL`);
await queryRunner.query(`ALTER TABLE \`OFFICER\` ADD \`POS_NUM_CODE_SIT_O\` text NULL`);
await queryRunner.query(`ALTER TABLE \`OFFICER\` ADD \`CONTENT_NO\` text NULL`);
await queryRunner.query(`ALTER TABLE \`OFFICER\` ADD \`POS_NUM_CODE_SIT_CODE\` text NULL`);
await queryRunner.query(`ALTER TABLE \`OFFICER\` ADD \`POS_NUM_CODE_SIT_ABB\` text NULL`);
await queryRunner.query(`ALTER TABLE \`OFFICER\` ADD \`FLAG_TO_NAME\` text NULL`);
await queryRunner.query(`ALTER TABLE \`OFFICER\` ADD \`CUR_YEAR\` text NULL`);
await queryRunner.query(`ALTER TABLE \`OFFICER\` ADD \`SALARY_POS_CODE_1\` text NULL`);
await queryRunner.query(`ALTER TABLE \`OFFICER\` ADD \`SALARY_POS_CODE\` text NULL`);
await queryRunner.query(`ALTER TABLE \`OFFICER\` ADD \`RET_BORN_MP_YEAR\` text NULL`);
await queryRunner.query(`ALTER TABLE \`OFFICER\` ADD \`MP_YEAR\` text NULL`);
await queryRunner.query(`ALTER TABLE \`OFFICER\` ADD \`MP_POS_DATE\` text NULL`);
await queryRunner.query(`ALTER TABLE \`OFFICER\` ADD \`FLAG_TO_NAME_CODE\` text NULL`);
await queryRunner.query(`ALTER TABLE \`OFFICER\` ADD \`MP_COMMAND_DATE\` text NULL`);
await queryRunner.query(`ALTER TABLE \`OFFICER\` ADD \`MP_COMMAND_NUM\` text NULL`);
await queryRunner.query(`ALTER TABLE \`OFFICER\` ADD \`POS_NUM_CODE_SIT\` text NULL`);
await queryRunner.query(`ALTER TABLE \`OFFICER\` ADD \`FLAG_CUR_ST\` text NULL`);
await queryRunner.query(`ALTER TABLE \`OFFICER\` ADD \`JOB_CODE\` text NULL`);
await queryRunner.query(`ALTER TABLE \`OFFICER\` ADD \`SECTION_CODE\` text NULL`);
await queryRunner.query(`ALTER TABLE \`OFFICER\` ADD \`DIVISION_CODE\` text NULL`);
await queryRunner.query(`ALTER TABLE \`OFFICER\` ADD \`DEPARTMENT_CODE\` text NULL`);
await queryRunner.query(`ALTER TABLE \`OFFICER\` ADD \`COST_LIVING_AMOUNT\` text NULL`);
await queryRunner.query(`ALTER TABLE \`OFFICER\` ADD \`MP_FLAG_1\` text NULL`);
await queryRunner.query(`ALTER TABLE \`OFFICER\` ADD \`PAYMENT_PERCENT\` text NULL`);
await queryRunner.query(`ALTER TABLE \`OFFICER\` ADD \`PAYMENT_AMT\` text NULL`);
await queryRunner.query(`ALTER TABLE \`OFFICER\` ADD \`SPECIAL_AMT\` text NULL`);
await queryRunner.query(`ALTER TABLE \`OFFICER\` ADD \`SPECIAL_PERCENT\` text NULL`);
await queryRunner.query(`ALTER TABLE \`OFFICER\` ADD \`SALARY_ADD\` text NULL`);
await queryRunner.query(`ALTER TABLE \`OFFICER\` ADD \`MP_FLAG\` text NULL`);
await queryRunner.query(`ALTER TABLE \`OFFICER\` ADD \`ADMIN_DATE\` text NULL`);
await queryRunner.query(`ALTER TABLE \`OFFICER\` ADD \`SAL_POS_AMOUNT_1\` text NULL`);
await queryRunner.query(`ALTER TABLE \`OFFICER\` ADD \`SALARY_POS_ABB_NAME_1\` text NULL`);
await queryRunner.query(`ALTER TABLE \`OFFICER\` ADD \`SPECIALIST_DATE\` text NULL`);
await queryRunner.query(`ALTER TABLE \`OFFICER\` ADD \`SPECIALIST_CODE\` text NULL`);
await queryRunner.query(`ALTER TABLE \`OFFICER\` ADD \`SAL_POS_AMOUNT_2\` text NULL`);
await queryRunner.query(`ALTER TABLE \`OFFICER\` ADD \`SALARY_POS_ABB_NAME\` text NULL`);
await queryRunner.query(`ALTER TABLE \`OFFICER\` ADD \`SALARY_LEVEL_CODE\` text NULL`);
await queryRunner.query(`ALTER TABLE \`OFFICER\` ADD \`ADMIN_NAME\` text NULL`);
await queryRunner.query(`ALTER TABLE \`OFFICER\` ADD \`ADMIN_CODE\` text NULL`);
await queryRunner.query(`ALTER TABLE \`OFFICER\` ADD \`MP_CEE\` text NULL`);
await queryRunner.query(`ALTER TABLE \`OFFICER\` ADD \`MP_CEE_NAME\` text NULL`);
await queryRunner.query(`ALTER TABLE \`OFFICER\` ADD \`WORK_LINE_CODE\` text NULL`);
await queryRunner.query(`ALTER TABLE \`OFFICER\` ADD \`POSITION_CATG\` text NULL`);
await queryRunner.query(`ALTER TABLE \`OFFICER\` ADD \`UNIVER_NAME\` text NULL`);
await queryRunner.query(`ALTER TABLE \`OFFICER\` ADD \`MAJOR_NAME\` text NULL`);
await queryRunner.query(`ALTER TABLE \`OFFICER\` ADD \`MAJOR_CODE\` text NULL`);
await queryRunner.query(`ALTER TABLE \`OFFICER\` ADD \`EDUCATION_NAME\` text NULL`);
await queryRunner.query(`ALTER TABLE \`OFFICER\` ADD \`FUND_COURSE_NAME\` text NULL`);
await queryRunner.query(`ALTER TABLE \`OFFICER\` ADD \`WORK_LINE_DATE\` text NULL`);
await queryRunner.query(`ALTER TABLE \`OFFICER\` ADD \`UPCLASS_DATE\` text NULL`);
await queryRunner.query(`ALTER TABLE \`OFFICER\` ADD \`MP_FORCE_DATE\` text NULL`);
await queryRunner.query(`ALTER TABLE \`OFFICER\` ADD \`RETURN_OCCUPY_DATE\` text NULL`);
await queryRunner.query(`ALTER TABLE \`OFFICER\` ADD \`RET_BORN_YEAR\` text NULL`);
await queryRunner.query(`ALTER TABLE \`OFFICER\` ADD \`RET_BORN_DATE\` text NULL`);
await queryRunner.query(`ALTER TABLE \`OFFICER\` ADD \`FLAG_TYPE\` text NULL`);
await queryRunner.query(`ALTER TABLE \`OFFICER\` ADD \`RANK_CODE\` text NULL`);
await queryRunner.query(`ALTER TABLE \`OFFICER\` ADD \`FLAG_PERSON_TYPE\` text NULL`);
await queryRunner.query(`ALTER TABLE \`OFFICER\` ADD \`ID\` varchar(13) NOT NULL`);
await queryRunner.query(`ALTER TABLE \`OFFICER\` ADD PRIMARY KEY (\`ID\`)`);
await queryRunner.query(`ALTER TABLE \`OFFICER\` ADD \`idOFFICER\` int NULL`);
}
}

View file

@ -0,0 +1,20 @@
import { MigrationInterface, QueryRunner } from "typeorm";
export class UpdateProfileSalary1740392430192 implements MigrationInterface {
name = 'UpdateProfileSalary1740392430192'
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE \`profileSalaryHistory\` DROP COLUMN \`commandNo\``);
await queryRunner.query(`ALTER TABLE \`profileSalaryHistory\` ADD \`commandNo\` varchar(255) NULL COMMENT 'เลขที่คำสั่ง'`);
await queryRunner.query(`ALTER TABLE \`profileSalary\` DROP COLUMN \`commandNo\``);
await queryRunner.query(`ALTER TABLE \`profileSalary\` ADD \`commandNo\` varchar(255) NULL COMMENT 'เลขที่คำสั่ง'`);
}
public async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE \`profileSalary\` DROP COLUMN \`commandNo\``);
await queryRunner.query(`ALTER TABLE \`profileSalary\` ADD \`commandNo\` int NULL COMMENT 'เลขที่คำสั่ง'`);
await queryRunner.query(`ALTER TABLE \`profileSalaryHistory\` DROP COLUMN \`commandNo\``);
await queryRunner.query(`ALTER TABLE \`profileSalaryHistory\` ADD \`commandNo\` int NULL COMMENT 'เลขที่คำสั่ง'`);
}
}

View file

@ -0,0 +1,172 @@
import { MigrationInterface, QueryRunner } from "typeorm";
export class AddViewCurrentTenure1740558529773 implements MigrationInterface {
name = 'AddViewCurrentTenure1740558529773'
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`CREATE VIEW \`view_current_tenure_officer\` AS
SELECT
DATE(MIN(commandDateAffect)) AS commandDateAffect,
TIMESTAMPDIFF(
DAY,
LAG(MIN(commandDateAffect)) OVER (PARTITION BY profileId ORDER BY commandDateAffect, \`order\` ASC), MIN(commandDateAffect)) AS days_diff,
TIMESTAMPDIFF(
DAY,
LAG(MIN(commandDateAffect)) OVER (PARTITION BY profileId ORDER BY commandDateAffect, \`order\` ASC), MIN(commandDateAffect)) / 365.2524 AS 'Years',
TIMESTAMPDIFF(
DAY,
LAG(MIN(commandDateAffect)) OVER (PARTITION BY profileId ORDER BY commandDateAffect, \`order\` ASC), MIN(commandDateAffect)) / 30.4375 % 12 AS 'Months',
TIMESTAMPDIFF(
DAY,
LAG(MIN(commandDateAffect)) OVER (PARTITION BY profileId ORDER BY commandDateAffect, \`order\` ASC), MIN(commandDateAffect)) % 30.4375 AS 'Days',
positionName,
positionCee,
posNo,
positionExecutive,
positionType,
positionLevel,
OrgRoot,
orgChild1,
orgChild2,
orgChild3,
orgChild4,
commandCode,
commandName,
commandNo,
commandYear,
remark,
profileId,
ROW_NUMBER() OVER (PARTITION BY profileId ORDER BY commandDateAffect ASC) AS orderNumber
FROM
profileSalary
WHERE
commandCode IN (1, 2, 3, 4, 8, 10, 11, 12, 15, 16)
GROUP BY
profileId, positionName
UNION ALL
SELECT
CURDATE() AS commandDateAffect,
TIMESTAMPDIFF(DAY, MAX(commandDateAffect), CURDATE()) AS days_diff,
TIMESTAMPDIFF(DAY, MAX(commandDateAffect), CURDATE()) / 365.2524 AS 'Years',
TIMESTAMPDIFF(DAY, MAX(commandDateAffect), CURDATE()) / 30.4375 % 12 AS 'Months',
TIMESTAMPDIFF(DAY, MAX(commandDateAffect), CURDATE()) % 30.4375 AS 'Days',
NULL AS positionName,
NULL AS positionCee,
NULL AS posNo,
NULL AS positionExecutive,
NULL AS positionType,
NULL AS positionLevel,
NULL AS OrgRoot,
NULL AS orgChild1,
NULL AS orgChild2,
NULL AS orgChild3,
NULL AS orgChild4,
NULL AS commandCode,
NULL AS commandName,
NULL AS commandNo,
NULL AS commandYear,
'Comparison with current date' AS remark,
profileId,
NULL AS orderNumber
FROM
profileSalary
WHERE
commandCode IN (1, 2, 3, 4, 8, 10, 11, 12, 15, 16)
GROUP BY
profileId
ORDER BY
profileId,
commandDateAffect ASC
`);
await queryRunner.query(`INSERT INTO \`bma_ehr_organization_demo\`.\`typeorm_metadata\`(\`database\`, \`schema\`, \`table\`, \`type\`, \`name\`, \`value\`) VALUES (DEFAULT, ?, DEFAULT, ?, ?, ?)`, ["bma_ehr_organization_demo","VIEW","view_current_tenure_officer","SELECT\n DATE(MIN(commandDateAffect)) AS commandDateAffect,\n TIMESTAMPDIFF(\n DAY,\n LAG(MIN(commandDateAffect)) OVER (PARTITION BY profileId ORDER BY commandDateAffect, `order` ASC), MIN(commandDateAffect)) AS days_diff,\n TIMESTAMPDIFF(\n DAY,\n LAG(MIN(commandDateAffect)) OVER (PARTITION BY profileId ORDER BY commandDateAffect, `order` ASC), MIN(commandDateAffect)) / 365.2524 AS 'Years',\n TIMESTAMPDIFF(\n DAY,\n LAG(MIN(commandDateAffect)) OVER (PARTITION BY profileId ORDER BY commandDateAffect, `order` ASC), MIN(commandDateAffect)) / 30.4375 % 12 AS 'Months',\n TIMESTAMPDIFF(\n DAY,\n LAG(MIN(commandDateAffect)) OVER (PARTITION BY profileId ORDER BY commandDateAffect, `order` ASC), MIN(commandDateAffect)) % 30.4375 AS 'Days',\n positionName,\n positionCee,\n posNo,\n positionExecutive,\n positionType,\n positionLevel,\n OrgRoot,\n orgChild1,\n orgChild2,\n orgChild3,\n orgChild4,\n commandCode,\n commandName,\n commandNo,\n commandYear,\n remark,\n profileId,\n ROW_NUMBER() OVER (PARTITION BY profileId ORDER BY commandDateAffect ASC) AS orderNumber\n FROM\n profileSalary\n WHERE\n commandCode IN (1, 2, 3, 4, 8, 10, 11, 12, 15, 16)\n GROUP BY\n profileId, positionName\n\n UNION ALL\n\n SELECT\n CURDATE() AS commandDateAffect,\n TIMESTAMPDIFF(DAY, MAX(commandDateAffect), CURDATE()) AS days_diff,\n TIMESTAMPDIFF(DAY, MAX(commandDateAffect), CURDATE()) / 365.2524 AS 'Years',\n TIMESTAMPDIFF(DAY, MAX(commandDateAffect), CURDATE()) / 30.4375 % 12 AS 'Months',\n TIMESTAMPDIFF(DAY, MAX(commandDateAffect), CURDATE()) % 30.4375 AS 'Days',\n NULL AS positionName,\n NULL AS positionCee,\n NULL AS posNo,\n NULL AS positionExecutive,\n NULL AS positionType,\n NULL AS positionLevel,\n NULL AS OrgRoot,\n NULL AS orgChild1,\n NULL AS orgChild2,\n NULL AS orgChild3,\n NULL AS orgChild4,\n NULL AS commandCode,\n NULL AS commandName,\n NULL AS commandNo,\n NULL AS commandYear,\n 'Comparison with current date' AS remark,\n profileId,\n NULL AS orderNumber\n FROM\n profileSalary\n WHERE\n commandCode IN (1, 2, 3, 4, 8, 10, 11, 12, 15, 16)\n GROUP BY\n profileId\n\n ORDER BY\n profileId,\n commandDateAffect ASC"]);
await queryRunner.query(`CREATE VIEW \`view_current_tenure_employee\` AS
SELECT
DATE(MIN(commandDateAffect)) AS commandDateAffect,
TIMESTAMPDIFF(
DAY,
LAG(MIN(commandDateAffect)) OVER (PARTITION BY profileEmployeeId ORDER BY commandDateAffect, \`order\` ASC), MIN(commandDateAffect)) AS days_diff,
TIMESTAMPDIFF(
DAY,
LAG(MIN(commandDateAffect)) OVER (PARTITION BY profileEmployeeId ORDER BY commandDateAffect, \`order\` ASC), MIN(commandDateAffect)) / 365.2524 AS 'Years',
TIMESTAMPDIFF(
DAY,
LAG(MIN(commandDateAffect)) OVER (PARTITION BY profileEmployeeId ORDER BY commandDateAffect, \`order\` ASC), MIN(commandDateAffect)) / 30.4375 % 12 AS 'Months',
TIMESTAMPDIFF(
DAY,
LAG(MIN(commandDateAffect)) OVER (PARTITION BY profileEmployeeId ORDER BY commandDateAffect, \`order\` ASC), MIN(commandDateAffect)) % 30.4375 AS 'Days',
positionName,
positionCee,
posNo,
positionType,
positionLevel,
OrgRoot,
orgChild1,
orgChild2,
orgChild3,
orgChild4,
commandCode,
commandName,
commandNo,
commandYear,
remark,
profileEmployeeId,
ROW_NUMBER() OVER (PARTITION BY profileEmployeeId ORDER BY commandDateAffect ASC) AS orderNumber
FROM
profileSalary
WHERE
profileEmployeeId IS NOT NULL AND
commandCode IN (1, 2, 3, 4, 8, 10, 11, 12, 15, 16)
GROUP BY
profileEmployeeId, positionName
UNION ALL
SELECT
CURDATE() AS commandDateAffect,
TIMESTAMPDIFF(DAY, MAX(commandDateAffect), CURDATE()) AS days_diff,
TIMESTAMPDIFF(DAY, MAX(commandDateAffect), CURDATE()) / 365.2524 AS 'Years',
TIMESTAMPDIFF(DAY, MAX(commandDateAffect), CURDATE()) / 30.4375 % 12 AS 'Months',
TIMESTAMPDIFF(DAY, MAX(commandDateAffect), CURDATE()) % 30.4375 AS 'Days',
NULL AS positionName,
NULL AS positionCee,
NULL AS posNo,
NULL AS positionType,
NULL AS positionLevel,
NULL AS OrgRoot,
NULL AS orgChild1,
NULL AS orgChild2,
NULL AS orgChild3,
NULL AS orgChild4,
NULL AS commandCode,
NULL AS commandName,
NULL AS commandNo,
NULL AS commandYear,
'Comparison with current date' AS remark,
profileEmployeeId,
NULL AS orderNumber
FROM
profileSalary
WHERE
profileEmployeeId IS NOT NULL AND
commandCode IN (1, 2, 3, 4, 8, 10, 11, 12, 15, 16)
GROUP BY
profileEmployeeId
ORDER BY
profileEmployeeId,
commandDateAffect ASC
`);
await queryRunner.query(`INSERT INTO \`bma_ehr_organization_demo\`.\`typeorm_metadata\`(\`database\`, \`schema\`, \`table\`, \`type\`, \`name\`, \`value\`) VALUES (DEFAULT, ?, DEFAULT, ?, ?, ?)`, ["bma_ehr_organization_demo","VIEW","view_current_tenure_employee","SELECT\n DATE(MIN(commandDateAffect)) AS commandDateAffect,\n TIMESTAMPDIFF(\n DAY,\n LAG(MIN(commandDateAffect)) OVER (PARTITION BY profileEmployeeId ORDER BY commandDateAffect, `order` ASC), MIN(commandDateAffect)) AS days_diff,\n TIMESTAMPDIFF(\n DAY,\n LAG(MIN(commandDateAffect)) OVER (PARTITION BY profileEmployeeId ORDER BY commandDateAffect, `order` ASC), MIN(commandDateAffect)) / 365.2524 AS 'Years',\n TIMESTAMPDIFF(\n DAY,\n LAG(MIN(commandDateAffect)) OVER (PARTITION BY profileEmployeeId ORDER BY commandDateAffect, `order` ASC), MIN(commandDateAffect)) / 30.4375 % 12 AS 'Months',\n TIMESTAMPDIFF(\n DAY,\n LAG(MIN(commandDateAffect)) OVER (PARTITION BY profileEmployeeId ORDER BY commandDateAffect, `order` ASC), MIN(commandDateAffect)) % 30.4375 AS 'Days',\n positionName,\n positionCee,\n posNo,\n positionType,\n positionLevel,\n OrgRoot,\n orgChild1,\n orgChild2,\n orgChild3,\n orgChild4,\n commandCode,\n commandName,\n commandNo,\n commandYear,\n remark,\n profileEmployeeId,\n ROW_NUMBER() OVER (PARTITION BY profileEmployeeId ORDER BY commandDateAffect ASC) AS orderNumber\n FROM\n profileSalary\n WHERE\n profileEmployeeId IS NOT NULL AND\n commandCode IN (1, 2, 3, 4, 8, 10, 11, 12, 15, 16)\n GROUP BY\n profileEmployeeId, positionName\n\n UNION ALL\n\n SELECT\n CURDATE() AS commandDateAffect,\n TIMESTAMPDIFF(DAY, MAX(commandDateAffect), CURDATE()) AS days_diff,\n TIMESTAMPDIFF(DAY, MAX(commandDateAffect), CURDATE()) / 365.2524 AS 'Years',\n TIMESTAMPDIFF(DAY, MAX(commandDateAffect), CURDATE()) / 30.4375 % 12 AS 'Months',\n TIMESTAMPDIFF(DAY, MAX(commandDateAffect), CURDATE()) % 30.4375 AS 'Days',\n NULL AS positionName,\n NULL AS positionCee,\n NULL AS posNo,\n NULL AS positionType,\n NULL AS positionLevel,\n NULL AS OrgRoot,\n NULL AS orgChild1,\n NULL AS orgChild2,\n NULL AS orgChild3,\n NULL AS orgChild4,\n NULL AS commandCode,\n NULL AS commandName,\n NULL AS commandNo,\n NULL AS commandYear,\n 'Comparison with current date' AS remark,\n profileEmployeeId,\n NULL AS orderNumber\n FROM\n profileSalary\n WHERE\n profileEmployeeId IS NOT NULL AND\n commandCode IN (1, 2, 3, 4, 8, 10, 11, 12, 15, 16)\n GROUP BY\n profileEmployeeId\n\n ORDER BY\n profileEmployeeId,\n commandDateAffect ASC"]);
}
public async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`DELETE FROM \`bma_ehr_organization_demo\`.\`typeorm_metadata\` WHERE \`type\` = ? AND \`name\` = ? AND \`schema\` = ?`, ["VIEW","view_current_tenure_employee","bma_ehr_organization_demo"]);
await queryRunner.query(`DROP VIEW \`view_current_tenure_employee\``);
await queryRunner.query(`DELETE FROM \`bma_ehr_organization_demo\`.\`typeorm_metadata\` WHERE \`type\` = ? AND \`name\` = ? AND \`schema\` = ?`, ["VIEW","view_current_tenure_officer","bma_ehr_organization_demo"]);
await queryRunner.query(`DROP VIEW \`view_current_tenure_officer\``);
}
}

View file

@ -0,0 +1,18 @@
import { MigrationInterface, QueryRunner } from "typeorm";
export class Updateprofilesalaryaddrefid1740561148833 implements MigrationInterface {
name = 'Updateprofilesalaryaddrefid1740561148833'
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`CREATE TABLE \`ProfileSalaries\` (\`id\` varchar(36) NOT NULL, \`createdAt\` datetime(6) NOT NULL COMMENT 'สร้างข้อมูลเมื่อ' DEFAULT CURRENT_TIMESTAMP(6), \`createdUserId\` varchar(40) NOT NULL COMMENT 'User Id ที่สร้างข้อมูล' DEFAULT '00000000-0000-0000-0000-000000000000', \`lastUpdatedAt\` datetime(6) NOT NULL COMMENT 'แก้ไขข้อมูลล่าสุดเมื่อ' DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6), \`lastUpdateUserId\` varchar(40) NOT NULL COMMENT 'User Id ที่แก้ไขข้อมูล' DEFAULT '00000000-0000-0000-0000-000000000000', \`createdFullName\` varchar(200) NOT NULL COMMENT 'ชื่อ User ที่สร้างข้อมูล' DEFAULT 'string', \`lastUpdateFullName\` varchar(200) NOT NULL COMMENT 'ชื่อ User ที่แก้ไขข้อมูลล่าสุด' DEFAULT 'string', \`Order\` int NULL, \`Date\` datetime NULL, \`SalaryRef\` varchar(255) NULL, \`Amount\` double NULL, \`PositionSalaryAmount\` double NULL, \`PosNoName\` varchar(255) NULL, \`PositionTypeName\` varchar(255) NULL, \`PositionLevelName\` varchar(255) NULL, \`PositionName\` varchar(255) NULL, \`ProfileId\` varchar(255) NULL, PRIMARY KEY (\`id\`)) ENGINE=InnoDB`);
await queryRunner.query(`ALTER TABLE \`profileSalary\` ADD \`refId\` int NULL COMMENT 'refId'`);
await queryRunner.query(`ALTER TABLE \`profileSalary\` ADD \`isEntry\` tinyint NULL COMMENT 'ข้อมูลจาก Entry'`);
}
public async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE \`profileSalary\` DROP COLUMN \`isEntry\``);
await queryRunner.query(`ALTER TABLE \`profileSalary\` DROP COLUMN \`refId\``);
await queryRunner.query(`DROP TABLE \`ProfileSalaries\``);
}
}

View file

@ -8,6 +8,9 @@ import HttpStatusCode from "../interfaces/http-status";
import { RequestWithUser } from "../middlewares/user";
import { PosMaster } from "../entities/PosMaster";
import { Profile } from "../entities/Profile";
import { EmployeePosMaster } from "../entities/EmployeePosMaster";
import { EmployeeTempPosMaster } from "../entities/EmployeeTempPosMaster";
import { ProfileEmployee } from "../entities/ProfileEmployee";
export let sendToQueue: (payload: any) => void;
export let sendToQueueOrg: (payload: any) => void;
@ -42,7 +45,7 @@ export async function init() {
console.log("[AMQ] Listening for message...");
createConsumer(queue, channel, handler), //----> (3) Process Consumer
createConsumer(queue_org, channel, handler_org);
createConsumer(queue_org, channel, handler_org);
// createConsumer(queue2, channel, handler2);
}
@ -125,7 +128,10 @@ async function handler(msg: amqp.ConsumeMessage): Promise<boolean> {
async function handler_org(msg: amqp.ConsumeMessage): Promise<boolean> {
//----> condition before process consume
const repoPosmaster = AppDataSource.getRepository(PosMaster);
const repoEmployeePosmaster = AppDataSource.getRepository(EmployeePosMaster);
const repoEmployeeTempPosmaster = AppDataSource.getRepository(EmployeeTempPosMaster);
const repoProfile = AppDataSource.getRepository(Profile);
const repoProfileEmployee = AppDataSource.getRepository(ProfileEmployee);
const { data, token, user } = JSON.parse(msg.content.toString());
const { id, status, lastUpdateUserId, lastUpdateFullName, lastUpdatedAt } = data;
try {
@ -166,6 +172,60 @@ async function handler_org(msg: amqp.ConsumeMessage): Promise<boolean> {
await repoPosmaster.save(item).catch((e) => console.log(e));
}),
);
const employeePosMaster = await repoEmployeePosmaster.find({
where: { orgRevisionId: id },
relations: ["positions", "positions.posLevel", "positions.posType"],
});
await Promise.all(
employeePosMaster.map(async (item) => {
if (item.next_holderId != null && status == "NOW") {
const profile = await repoProfileEmployee.findOne({
where: { id: item.next_holderId == null ? "" : item.next_holderId },
});
const position = await item.positions.find((x) => x.positionIsSelected == true);
const _null: any = null;
if (profile != null) {
profile.posLevelId = position?.posLevelId ?? _null;
profile.posTypeId = position?.posTypeId ?? _null;
profile.position = position?.positionName ?? _null;
await repoProfileEmployee.save(profile);
}
}
// item.current_holderId = item.next_holderId;
// item.next_holderId = null;
item.lastUpdateUserId = lastUpdateUserId;
item.lastUpdateFullName = lastUpdateFullName;
item.lastUpdatedAt = lastUpdatedAt;
await repoEmployeePosmaster.save(item).catch((e) => console.log(e));
}),
);
const employeeTempPosMaster = await repoEmployeeTempPosmaster.find({
where: { orgRevisionId: id },
relations: ["positions", "positions.posLevel", "positions.posType"],
});
await Promise.all(
employeeTempPosMaster.map(async (item) => {
if (item.next_holderId != null && status == "NOW") {
const profile = await repoProfileEmployee.findOne({
where: { id: item.next_holderId == null ? "" : item.next_holderId },
});
const position = await item.positions.find((x) => x.positionIsSelected == true);
const _null: any = null;
if (profile != null) {
profile.posLevelId = position?.posLevelId ?? _null;
profile.posTypeId = position?.posTypeId ?? _null;
profile.position = position?.positionName ?? _null;
await repoProfileEmployee.save(profile);
}
}
// item.current_holderId = item.next_holderId;
// item.next_holderId = null;
item.lastUpdateUserId = lastUpdateUserId;
item.lastUpdateFullName = lastUpdateFullName;
item.lastUpdatedAt = lastUpdatedAt;
await repoEmployeeTempPosmaster.save(item).catch((e) => console.log(e));
}),
);
console.log("[AMQ] Excecute Organization Success");
return true;
} catch (error) {
@ -173,4 +233,3 @@ async function handler_org(msg: amqp.ConsumeMessage): Promise<boolean> {
return false;
}
}