From 5e4f11973057b4c44124f93f3790bd47c22f1311 Mon Sep 17 00:00:00 2001 From: mamoss <> Date: Tue, 29 Apr 2025 15:33:37 +0700 Subject: [PATCH] import data uat --- src/controllers/ImportDataController.ts | 3002 +++++++++++++++-------- src/entities/EMPLOYEE.ts | 189 ++ src/entities/HR_DISCIPLINE.ts | 27 + src/entities/HR_DISCIPLINE_EMP.ts | 27 + src/entities/HR_EDUCATION_EMP.ts | 21 + src/entities/HR_INSIGNIA.ts | 69 + src/entities/HR_INSIGNIA_EMP.ts | 62 + src/entities/HR_POSITION_EMPLOYEE.ts | 191 ++ src/entities/HR_POSITION_OFFICER.ts | 163 ++ src/entities/OFFICER.ts | 12 +- 10 files changed, 2757 insertions(+), 1006 deletions(-) create mode 100644 src/entities/EMPLOYEE.ts create mode 100644 src/entities/HR_DISCIPLINE.ts create mode 100644 src/entities/HR_DISCIPLINE_EMP.ts create mode 100644 src/entities/HR_INSIGNIA.ts create mode 100644 src/entities/HR_INSIGNIA_EMP.ts create mode 100644 src/entities/HR_POSITION_EMPLOYEE.ts diff --git a/src/controllers/ImportDataController.ts b/src/controllers/ImportDataController.ts index d05c5454..9acea89f 100644 --- a/src/controllers/ImportDataController.ts +++ b/src/controllers/ImportDataController.ts @@ -54,11 +54,26 @@ import { HR_MAJOR_CODE } from "../entities/HR_MAJOR_CODE"; // import { uuidv7 } from "uuidv7"; import { ProfileSalaries } from "../entities/ProfileSalaries"; import { HR_POSITION_OFFICER } from "../entities/HR_POSITION_OFFICER"; +import { EMPLOYEE } from "../entities/EMPLOYEE"; +import { EmployeePosLevel } from "../entities/EmployeePosLevel"; +import { EmployeePosType } from "../entities/EmployeePosType"; +import { EmployeePosMaster } from "../entities/EmployeePosMaster"; +import { EmployeePosition } from "../entities/EmployeePosition"; +import { HR_POSITION_EMPLOYEE } from "../entities/HR_POSITION_EMPLOYEE"; +import { ProfileDiscipline } from "../entities/ProfileDiscipline"; +import { ProfileInsignia } from "../entities/ProfileInsignia"; +import { HR_DISCIPLINE_EMP } from "../entities/HR_DISCIPLINE_EMP"; +import { HR_DISCIPLINE } from "../entities/HR_DISCIPLINE"; +import { HR_INSIGNIA } from "../entities/HR_INSIGNIA"; +import { HR_INSIGNIA_EMP } from "../entities/HR_INSIGNIA_EMP"; +import { Insignia } from "../entities/Insignia"; @Route("api/v1/org/upload") @Tags("UPLOAD") @Security("bearerAuth") export class ImportDataController extends Controller { private profileEducationRepo = AppDataSource.getRepository(ProfileEducation); + private profileDisciplineRepo = AppDataSource.getRepository(ProfileDiscipline); + private profileInsigniaRepo = AppDataSource.getRepository(ProfileInsignia); private profileFamilyCoupleRepository = AppDataSource.getRepository(ProfileFamilyCouple); private profileFamilyMotherRepository = AppDataSource.getRepository(ProfileFamilyMother); private profileFamilyFatherRepository = AppDataSource.getRepository(ProfileFamilyFather); @@ -67,13 +82,19 @@ export class ImportDataController extends Controller { private profileEmpRepo = AppDataSource.getRepository(ProfileEmployee); private posLevelRepo = AppDataSource.getRepository(PosLevel); private posTypeRepo = AppDataSource.getRepository(PosType); + private posLevelEmpRepo = AppDataSource.getRepository(EmployeePosLevel); + private posTypeEmpRepo = AppDataSource.getRepository(EmployeePosType); 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_DISCIPLINERepo = AppDataSource.getRepository(HR_DISCIPLINE); + private HR_INSIGNIARepo = AppDataSource.getRepository(HR_INSIGNIA); private HR_PERSONAL_OFFICER_ADDRESSRepo = AppDataSource.getRepository( HR_PERSONAL_OFFICER_ADDRESS, ); + private HR_DISCIPLINE_EMPRepo = AppDataSource.getRepository(HR_DISCIPLINE_EMP); + private HR_INSIGNIA_EMPRepo = AppDataSource.getRepository(HR_INSIGNIA_EMP); private HR_EDUCATION_EMPRepo = AppDataSource.getRepository(HR_EDUCATION_EMP); private HR_PERSONAL_EMP_ADDRESSRepo = AppDataSource.getRepository(HR_PERSONAL_EMP_ADDRESS); private HR_PERSONAL_EMP_FAMILYRepo = AppDataSource.getRepository(HR_PERSONAL_EMP_FAMILY); @@ -83,6 +104,7 @@ export class ImportDataController extends Controller { private HR_MAJOR_CODERepo = AppDataSource.getRepository(HR_MAJOR_CODE); private HR_FUND_COURSE_CODERepo = AppDataSource.getRepository(HR_FUND_COURSE_CODE); private HR_POSITION_OFFICERRepo = AppDataSource.getRepository(HR_POSITION_OFFICER); + private HR_POSITION_EMPLOYEERepo = AppDataSource.getRepository(HR_POSITION_EMPLOYEE); private provincsRepo = AppDataSource.getRepository(ProvinceImport); private amphurRepo = AppDataSource.getRepository(AmphurImport); private subDistrictRepo = AppDataSource.getRepository(SubDistrictImport); @@ -98,73 +120,125 @@ export class ImportDataController extends Controller { private orgChild4Repo = AppDataSource.getRepository(OrgChild4); private IMPORT_ORGRepo = AppDataSource.getRepository(IMPORT_ORG); private OFFICERRepo = AppDataSource.getRepository(OFFICER); + private EMPLOYEERepo = AppDataSource.getRepository(EMPLOYEE); + + private positionEmpRepo = AppDataSource.getRepository(EmployeePosition); private positionRepo = AppDataSource.getRepository(Position); private posMasterRepo = AppDataSource.getRepository(PosMaster); + private posMasterEmpRepo = AppDataSource.getRepository(EmployeePosMaster); private posExecutiveRepo = AppDataSource.getRepository(PosExecutive); + private insigniaRepo = AppDataSource.getRepository(Insignia); /** * @summary ทะเบียนประวัติ ข้าราชการ */ @Post("uploadProfile-Officer") async UploadFileSqlOfficer(@Request() request: { user: Record }) { const OFFICER = await this.OFFICERRepo.find(); - // let users = []; let rowCount = 0; - // const filePath = path.resolve(__dirname, "OFFICER.csv"); // Corrected file path - // const readStream = fs.createReadStream(filePath).pipe(csvParser()); - // let profiles: any = []; let _null: any = null; let profile: any; - // await Promise.all( - // OFFICER.map(async (item) => { for await (const item of OFFICER) { - // readStream.map(async (item: any) => { rowCount++; let type_: any = null; let level_: any = null; profile = null; profile = new Profile(); - // if (item["FLAG_RETIRE_STATUSxxxx != "" && item["FLAG_RETIRE_STATUSxxxx != null) { - // continue; - // } - // if (item["FLAG_PERSON_TYPExxxx != "1") { - // continue; - // } - // if (new Date(item.RET_YEAR).getFullYear() >= 2567) { - // return; - // } const existingProfile = await this.profileRepo.findOne({ - where: { citizenId: item.id.toString() }, + where: { citizenId: item.CIT.toString() }, }); if (existingProfile) { profile.id = existingProfile.id; + if (profile.typeId != null) { + continue; + } // continue; } - if (item.MP_CATEGORY) { + var positionType = ""; + var positionLevel = ""; + if (item.MP_CEE == "21") { + positionType = "ทั่วไป"; + positionLevel = "ปฏิบัติงาน"; + } else if (item.MP_CEE == "22") { + positionType = "ทั่วไป"; + positionLevel = "ชำนาญงาน"; + } else if (item.MP_CEE == "23") { + positionType = "ทั่วไป"; + positionLevel = "อาวุโส"; + } else if (item.MP_CEE == "24") { + positionType = "ทั่วไป"; + positionLevel = "อาวุโสเฉพาะสายงานที่กำหนด"; + } else if (item.MP_CEE == "25") { + positionType = "ทั่วไป"; + positionLevel = "ทักษะพิเศษ"; + } else if (item.MP_CEE == "26") { + positionType = "วิชาการ"; + positionLevel = "ปฏิบัติการ"; + } else if (item.MP_CEE == "27") { + positionType = "วิชาการ"; + positionLevel = "ชำนาญการ"; + } else if (item.MP_CEE == "28") { + positionType = "วิชาการ"; + positionLevel = "ชำนาญการพิเศษ"; + } else if (item.MP_CEE == "29") { + positionType = "วิชาการ"; + positionLevel = "เชี่ยวชาญ"; + } else if (item.MP_CEE == "30") { + positionType = "วิชาการ"; + positionLevel = "ทรงคุณวุฒิ"; + } else if (item.MP_CEE == "31") { + positionType = "วิชาการ"; + positionLevel = "ทรงคุณวุฒิเฉพาะสายงานที่กำหนด"; + } else if (item.MP_CEE == "32") { + positionType = "อำนวยการ"; + positionLevel = "ต้น"; + } else if (item.MP_CEE == "33") { + positionType = "อำนวยการ"; + positionLevel = "สูง"; + } else if (item.MP_CEE == "34") { + positionType = "บริหาร"; + positionLevel = "ต้น"; + } else if (item.MP_CEE == "35") { + positionType = "บริหาร"; + positionLevel = "สูง"; + } + if (positionType) { type_ = await this.posTypeRepo.findOne({ - where: { posTypeName: item.MP_CATEGORY }, + where: { posTypeName: positionType }, }); } - if (item.MP_LEVEL) { + if (positionLevel) { if (type_ == null) { level_ = await this.posLevelRepo.findOne({ where: { - posLevelName: item.MP_LEVEL, + posLevelName: positionLevel, }, }); } else { level_ = await this.posLevelRepo.findOne({ where: { - posLevelName: item.MP_LEVEL, + posLevelName: positionLevel, posTypeId: type_.id, }, }); } } - let dateRetire = new Date(item.BORN); - profile.citizenId = item.id.toString() == "" ? "" : item.id.toString(); + let BORN = ""; + if (item.BORN) { + const [datePart] = item.BORN.split(" "); + const [day, month, year] = datePart.split("/"); + BORN = `${year}-${month.padStart(2, "0")}-${day.padStart(2, "0")}`; + } + let BEGIN_ENTRY_DATE = ""; + if (item.BEGIN_ENTRY_DATE) { + const [datePart] = item.BEGIN_ENTRY_DATE.split(" "); + const [day, month, year] = datePart.split("/"); + BEGIN_ENTRY_DATE = `${year}-${month.padStart(2, "0")}-${day.padStart(2, "0")}`; + } + + profile.citizenId = item.CIT; profile.rank = item.RANK_NAME == "" || item.RANK_NAME == "นาย" || @@ -181,61 +255,28 @@ export class ImportDataController extends Controller { profile.firstName = item.FNAME == "" ? null : item.FNAME; profile.lastName = item.LNAME == "" ? null : item.LNAME; profile.gender = item.SEX == "1" ? "ชาย" : item.SEX == "2" ? "หญิง" : _null; - profile.birthDate = item.BORN == "" ? _null : new Date(item.BORN); - profile.dateAppoint = item.BEGIN_ENTRY_DATE == "" ? _null : new Date(item.BEGIN_ENTRY_DATE); - profile.dateStart = item.BEGIN_ENTRY_DATE == "" ? _null : new Date(item.BEGIN_ENTRY_DATE); - profile.dateRetire = dateRetire == null ? _null : calculateRetireDate(dateRetire); - profile.dateRetireLaw = dateRetire == null ? _null : calculateRetireLaw(dateRetire); + profile.birthDate = BORN == "" ? _null : new Date(BORN); + profile.dateAppoint = BEGIN_ENTRY_DATE == "" ? _null : new Date(BEGIN_ENTRY_DATE); + profile.dateStart = BEGIN_ENTRY_DATE == "" ? _null : new Date(BEGIN_ENTRY_DATE); + profile.dateRetire = BORN == "" ? _null : calculateRetireDate(new Date(BORN)); + profile.dateRetireLaw = BORN == "" ? _null : calculateRetireLaw(new Date(BORN)); profile.position = item.WORK_LINE_NAME == "" ? null : item.WORK_LINE_NAME; profile.posTypeId = - type_ != null && type_.posTypeName == item.MP_CATEGORY && type_ ? type_.id : null; + type_ != null && type_.posTypeName == positionType && type_ ? type_.id : null; profile.posLevelId = - level_ != null && level_.posLevelName == item.MP_LEVEL && level_ ? level_.id : null; - // profile.relationship = - // item.สถานภาพ == "" ? "" : Extension.CheckRelationship(item.สถานภาพ); - // profile.position = - // item.WORK_LINE_NAME == "" ? "" : Extension.CheckRelationship(item.WORK_LINE_NAME); - profile.position = item["WORK_LINE_NAME"] == "" ? null : item["WORK_LINE_NAME"]; - // const level = await this.posLevelRepo.findOne({ - // where: { - // posLevelName: item.MP_LEVEL, - // posType: { - // posTypeName: item.MP_Type, - // }, - // }, - // }); - // profile.posLevelId = level?.id ?? _null; - // const type = await this.posTypeRepo.findOne({ - // where: { posTypeName: item.MP_Type }, - // }); - // profile.posTypeId = type?.id ?? _null; + level_ != null && level_.posLevelName == positionLevel && level_ ? level_.id : null; profile.amount = item.SALARY == "" ? 0 : Number(item.SALARY); - // profile.isLeave = - // item.FLAG_RETIRE_STATUSxxxx == "" || item.FLAG_RETIRE_STATUSxxxx == null ? false : true; profile.createdUserId = request.user.sub; profile.createdFullName = request.user.name; profile.lastUpdateUserId = request.user.sub; profile.lastUpdateFullName = request.user.name; profile.createdAt = new Date(); profile.lastUpdatedAt = new Date(); - // profiles.push(profile); + console.log(">>>>>>>>>>>>>>>>>>>" + rowCount); - // if (profiles.length === BATCH_SIZE) { await this.profileRepo.save(profile); - // console.log(profile); - // profiles = await []; - // if (global.gc) { - // global.gc(); - // } - // } } - // }), - // ); - // ) - // ); - // console.log(rowCount); - // await this.profileRepo.save(profiles); return new HttpSuccess(); } @@ -244,87 +285,122 @@ export class ImportDataController extends Controller { */ @Post("uploadProfile-Employee") async UploadFileSQL(@Request() request: { user: Record }) { - let users = []; - let rowCount = 0; - const filePath = path.resolve(__dirname, "EMP.csv"); // Corrected file path - const readStream = fs.createReadStream(filePath).pipe(csvParser()); - let profiles: any = []; - let _null: any = null; - let profileEmp: any; + const existingProfile = await this.profileEmpRepo.find({ + select: ["citizenId"], + }); - for await (const item of readStream) { + const EMPLOYEE = await this.EMPLOYEERepo.find({ + where: { CIT: Not(In(existingProfile.map((x) => x.citizenId))) }, + }); + let rowCount = 0; + let _null: any = null; + let profile: any; + for await (const item of EMPLOYEE) { rowCount++; - profileEmp = null; - profileEmp = new ProfileEmployee(); - // if (item["FLAG_RETIRE_STATUS"] != "" && item["FLAG_RETIRE_STATUS"] != null) { - // continue; - // } - // if (item["FLAG_PERSON_TYPE"] != "6") { - // continue; - // } - // if (new Date(item["RET_YEAR"]).getFullYear() >= 2567) { - // continue; - // } + let type_: any = null; + let level_: any = null; + profile = null; + profile = new ProfileEmployee(); + const existingProfile = await this.profileEmpRepo.findOne({ - where: { citizenId: item["ID"] }, + where: { citizenId: item.CIT.toString() }, }); if (existingProfile) { - profileEmp.id = existingProfile.id; + profile.id = existingProfile.id; // continue; + } else { + continue; } - let dateRetire = new Date(item["MP_FORCE_DATE"]); + var positionType = ""; + var positionLevel = 0; + if (item.CATEGORY_SAL_CODE == "11") { + positionType = "บริการพื้นฐาน"; + // positionLevel = "ปฏิบัติงาน"; + } else if (item.CATEGORY_SAL_CODE == "12") { + positionType = "สนับสนุน"; + // positionLevel = "ชำนาญงาน"; + } else if (item.CATEGORY_SAL_CODE == "13") { + positionType = "ช่าง"; + // positionLevel = "อาวุโส"; + } + if (positionType) { + type_ = await this.posTypeEmpRepo.findOne({ + where: { posTypeName: positionType }, + }); + } + // if (positionLevel) { + // if (type_ == null) { + // level_ = await this.posLevelEmpRepo.findOne({ + // where: { + // posLevelName: positionLevel, + // }, + // }); + // } else { + // level_ = await this.posLevelEmpRepo.findOne({ + // where: { + // posLevelName: positionLevel, + // posTypeId: type_.id, + // }, + // }); + // } + // } + + // let BORN = ""; + // if (item.BORN) { + // const [datePart] = item.BORN.split(" "); + // const [day, month, year] = datePart.split("/"); + // BORN = `${year}-${month.padStart(2, "0")}-${day.padStart(2, "0")}`; + // } + // let BEGIN_ENTRY_DATE = ""; + // if (item.BEGIN_ENTRY_DATE) { + // const [datePart] = item.BEGIN_ENTRY_DATE.split(" "); + // const [day, month, year] = datePart.split("/"); + // BEGIN_ENTRY_DATE = `${year}-${month.padStart(2, "0")}-${day.padStart(2, "0")}`; + // } + + // profile.citizenId = item.CIT; + // profile.rank = + // item.RANK_NAME == "" || + // item.RANK_NAME == "นาย" || + // item.RANK_NAME == "นาง" || + // item.RANK_NAME == "นางสาว" + // ? null + // : item.RANK_NAME; + // profile.prefix = item.RANK_NAME == "" ? null : item.RANK_NAME; + // profile.prefixMain = + // item.RANK_NAME == "" || + // (item.RANK_NAME != "นาย" && item.RANK_NAME != "นาง" && item.RANK_NAME != "นางสาว") + // ? null + // : item.RANK_NAME; + // profile.firstName = item.FNAME == "" ? null : item.FNAME; + // profile.lastName = item.LNAME == "" ? null : item.LNAME; + // profile.employeeClass = "PERM"; + // profile.gender = item.SEX == "1" ? "ชาย" : item.SEX == "2" ? "หญิง" : _null; + // profile.birthDate = BORN == "" ? _null : new Date(BORN); + // profile.dateAppoint = BEGIN_ENTRY_DATE == "" ? _null : new Date(BEGIN_ENTRY_DATE); + // profile.dateStart = BEGIN_ENTRY_DATE == "" ? _null : new Date(BEGIN_ENTRY_DATE); + // profile.dateRetire = BORN == "" ? _null : calculateRetireDate(new Date(BORN)); + // profile.dateRetireLaw = BORN == "" ? _null : calculateRetireLaw(new Date(BORN)); + // profile.position = item.WORK_LINE_NAME == "" ? null : item.WORK_LINE_NAME.split(" ")[0]; + profile.posTypeId = + type_ != null && type_.posTypeName == positionType && type_ ? type_.id : null; + // profile.posLevelId = + // level_ != null && level_.posLevelName == positionLevel && level_ ? level_.id : null; + + // profile.amount = item.SALARY == "" ? 0 : Number(item.SALARY); + // profile.salaryLevel = item.SALARY == "" ? null : Number(item.SALARY_LEVEL_CODE); + // profile.createdUserId = request.user.sub; + // profile.createdFullName = request.user.name; + // profile.lastUpdateUserId = request.user.sub; + // profile.lastUpdateFullName = request.user.name; + // profile.createdAt = new Date(); + // profile.lastUpdatedAt = new Date(); - profileEmp.citizenId = item["ID"] == "" ? "" : item["ID"]; - profileEmp.employeeClass = - item["FLAG_PERSON_TYPE"] == "6" ? "PERM" : item["FLAG_PERSON_TYPE"] == "7" ? "TEMP" : ""; - profileEmp.rank = - item["RANK_NAME"] == "" || - item["RANK_NAME"] == "นาย" || - item["RANK_NAME"] == "นาง" || - item["RANK_NAME"] == "นางสาว" - ? null - : item["RANK_NAME"]; - profileEmp.prefix = item["RANK_NAME"] == "" ? null : item["RANK_NAME"]; - profileEmp.prefixMain = - item["RANK_NAME"] == "" || - (item["RANK_NAME"] != "นาย" && item["RANK_NAME"] != "นาง" && item["RANK_NAME"] != "นางสาว") - ? null - : item["RANK_NAME"]; - profileEmp.firstName = item["FNAME"] == "" ? null : item["FNAME"]; - profileEmp.lastName = item["LNAME"] == "" ? null : item["LNAME"]; - profileEmp.gender = item["SEX"] == "1" ? "ชาย" : item["SEX"] == "2" ? "หญิง" : _null; - profileEmp.birthDate = item["BORN"] == "" ? _null : new Date(item["BORN"]); - profileEmp.dateAppoint = - item["BEGIN_ENTRY_DATE"] == "" ? _null : new Date(item["BEGIN_ENTRY_DATE"]); - profileEmp.dateStart = item["MP_FORCE_DATE"] == "" ? _null : new Date(item["MP_FORCE_DATE"]); - profileEmp.dateRetire = dateRetire == null ? _null : calculateRetireDate(dateRetire); - profileEmp.dateRetireLaw = dateRetire == null ? _null : calculateRetireLaw(dateRetire); - profileEmp.position = item["WORK_LINE_NAME"] == "" ? null : item["WORK_LINE_NAME"]; - profileEmp.salaryLevel = item["SALARY_LEVEL_CODE"] == "" ? null : item["SALARY_LEVEL_CODE"]; - profileEmp.relationship = - item["MARRIAGE_STATE"] == "" ? "" : Extension.CheckRelationship(item["MARRIAGE_STATE"]); - profileEmp.amount = - item["SALARY"] == "" ? 0 : Number(Extension.CheckRelationship(item.SALARY)); - profileEmp.createdUserId = request.user.sub; - profileEmp.createdFullName = request.user.name; - profileEmp.lastUpdateUserId = request.user.sub; - profileEmp.lastUpdateFullName = request.user.name; - profileEmp.createdAt = new Date(); - profileEmp.lastUpdatedAt = new Date(); - // profiles.push(profileEmp); console.log(">>>>>>>>>>>>>>>>>>>" + rowCount); - // if (profiles.length === BATCH_SIZE) { - await this.profileEmpRepo.save(profileEmp); - // profiles = await []; - // if (global.gc) { - // global.gc(); - // } - // } + await this.profileEmpRepo.save(profile); } - // console.log(rowCount); - // await this.profileEmpRepo.save(profiles); return new HttpSuccess(); } @@ -358,8 +434,11 @@ export class ImportDataController extends Controller { // "3940900213929", // ]), // }) - .skip(0) - .take(10000) + .leftJoinAndSelect("profile.profileSalary", "profileSalary") + // .where({citizenId: "1720700018869"}) + .where("profileSalary.id IS NULL") + // .skip(0) + // .take(10000) .getManyAndCount(); var _profiles: ProfileSalary[] = []; const filePath = path.join(__dirname, "salaryProfile1.csv"); @@ -373,448 +452,445 @@ export class ImportDataController extends Controller { console.log("Salary profiles successfully written to salaryProfile.csv"); } }); - await Promise.all( - profiles.map(async (_item) => { - const existingProfile = await this.positionOfficerRepo.find({ - where: { citizenId: _item.citizenId, flag_person_type: "1" }, - order: { - mp_pos_date: "ASC", - order_move_position: "ASC", - }, - }); - let order = 1; - await Promise.all( - existingProfile.map(async (item) => { - rowCount++; - const profileSalary: any = new ProfileSalary(); - profileSalary.profileId = _item.id; - profileSalary.order = order; - 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 == 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", - "11", - "22", - "31", - "39", - "45", - "46", - "47", - "49", - "50", - "51", - "60", - "61", - "62", - "99", - ].includes(item.flag_to_name_code) - ) { - profileSalary.commandCode = "0"; - profileSalary.commandName = "อื่น ๆ"; - } else if (["1", "58"].includes(item.flag_to_name_code)) { - profileSalary.commandCode = "1"; - profileSalary.commandName = "บรรจุและแต่งตั้งผู้สอบแข่งขันได้"; - } else if (["23"].includes(item.flag_to_name_code)) { - profileSalary.commandCode = "2"; - profileSalary.commandName = "บรรจุและแต่งตั้งผู้ได้รับคัดเลือก"; - } else if (["3", "6", "34", "36", "37"].includes(item.flag_to_name_code)) { - profileSalary.commandCode = "3"; - profileSalary.commandName = "แต่งตั้ง ย้าย"; - } else if (["10", "55", "56"].includes(item.flag_to_name_code)) { - profileSalary.commandCode = "4"; - profileSalary.commandName = "เลื่อน"; - } else if (["14"].includes(item.flag_to_name_code)) { - profileSalary.commandCode = "5"; - profileSalary.commandName = "เลื่อนเงินเดือนตามปกติ"; - } else if ( - ["8", "20", "24", "25", "43", "44", "52", "66", "67"].includes(item.flag_to_name_code) - ) { - profileSalary.commandCode = "6"; - profileSalary.commandName = "เลื่อนเงินเดือนกรณีอื่น ๆ"; - } else if (["-"].includes(item.flag_to_name_code)) { - profileSalary.commandCode = "7"; - profileSalary.commandName = "เงินพิเศษอื่น ๆ"; - } else if (["38", "40", "53", "54"].includes(item.flag_to_name_code)) { - profileSalary.commandCode = "8"; - profileSalary.commandName = "ปรับโครงสร้าง"; - } else if (["12"].includes(item.flag_to_name_code)) { - profileSalary.commandCode = "9"; - profileSalary.commandName = "พ้นทดลองปฏิบัติราชการ"; - } else if (["2", "18"].includes(item.flag_to_name_code)) { - profileSalary.commandCode = "10"; - profileSalary.commandName = "บรรจุกลับ"; - } else if (["4", "32", "33"].includes(item.flag_to_name_code)) { - profileSalary.commandCode = "11"; - profileSalary.commandName = "รับโอน"; - } else if (["5"].includes(item.flag_to_name_code)) { - profileSalary.commandCode = "12"; - profileSalary.commandName = "ให้โอน"; - } else if (["15", "95"].includes(item.flag_to_name_code)) { - profileSalary.commandCode = "13"; - profileSalary.commandName = "แก้ไขคำสั่ง"; - } else if (["19"].includes(item.flag_to_name_code)) { - profileSalary.commandCode = "14"; - profileSalary.commandName = "ยกเลิกคำสั่ง"; - } else if (["27", "35"].includes(item.flag_to_name_code)) { - profileSalary.commandCode = "15"; - profileSalary.commandName = "ลาออกจากราชการ"; - } else if ( - ["13", "17", "21", "28", "29", "30", "59"].includes(item.flag_to_name_code) - ) { - profileSalary.commandCode = "16"; - profileSalary.commandName = "พ้นจากราชการ"; - } else if (["7", "9", "16", "26", "63", "68"].includes(item.flag_to_name_code)) { - profileSalary.commandCode = "17"; - profileSalary.commandName = "รักษาราชการ, ช่วยราชการ"; - } - if (item.flag_to_name_code == null && item.flag_to_name == "ลาศึกษาต่อ") { - profileSalary.commandCode = "0"; - profileSalary.commandName = "อื่น ๆ"; - } else if ( - item.flag_to_name_code == null && - (item.flag_to_name == "เลื่อน 1 ขั้นและเลื่อนระดับ" || - item.flag_to_name == "เลื่อน 0.5 ขั้นและเลื่อนระดับ") - ) { - profileSalary.commandCode = "4"; - profileSalary.commandName = "เลื่อน"; - } else if (item.flag_to_name_code == null && item.flag_to_name == "เลื่อนเงินเดือน") { - profileSalary.commandCode = "5"; - profileSalary.commandName = "เลื่อนเงินเดือนตามปกติ"; - } else if ( - 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_code == null && - item.flag_to_name == "แต่งตั้งตามการปรับปรุงโครงฯ" - ) { - profileSalary.commandCode = "8"; - profileSalary.commandName = "ปรับโครงสร้าง"; - } else if ( - item.flag_to_name_code == null && - item.flag_to_name == "พ้นทดลองปฏิบัติราชการ" - ) { - profileSalary.commandCode = "9"; - profileSalary.commandName = "พ้นทดลองปฏิบัติราชการ"; - } else if (item.flag_to_name_code == null && item.flag_to_name == "ให้โอนมา") { - profileSalary.commandCode = "11"; - profileSalary.commandName = "รับโอน"; - } else if ( - item.flag_to_name_code == null && - item.flag_to_name == "โอนไปปฏิบัติราชการที่อื่น" - ) { - profileSalary.commandCode = "12"; - profileSalary.commandName = "ให้โอน"; - } else if (item.flag_to_name_code == null && item.flag_to_name == "ยกเลิกคำสั่ง") { - profileSalary.commandCode = "14"; - profileSalary.commandName = "ยกเลิกคำสั่ง"; - } 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; - var positionType = ""; - var positionLevel = ""; - if (item.mp_cee == "21") { - positionType = "ทั่วไป"; - positionLevel = "ปฏิบัติงาน"; - } else if (item.mp_cee == "22") { - positionType = "ทั่วไป"; - positionLevel = "ชำนาญงาน"; - } else if (item.mp_cee == "23") { - positionType = "ทั่วไป"; - positionLevel = "อาวุโส"; - } else if (item.mp_cee == "24") { - positionType = "ทั่วไป"; - positionLevel = "อาวุโสเฉพาะสายงานที่กำหนด"; - } else if (item.mp_cee == "25") { - positionType = "ทั่วไป"; - positionLevel = "ทักษะพิเศษ"; - } else if (item.mp_cee == "26") { - positionType = "วิชาการ"; - positionLevel = "ปฏิบัติการ"; - } else if (item.mp_cee == "27") { - positionType = "วิชาการ"; - positionLevel = "ชำนาญการ"; - } else if (item.mp_cee == "28") { - positionType = "วิชาการ"; - positionLevel = "ชำนาญการพิเศษ"; - } else if (item.mp_cee == "29") { - positionType = "วิชาการ"; - positionLevel = "เชี่ยวชาญ"; - } else if (item.mp_cee == "30") { - positionType = "วิชาการ"; - positionLevel = "ทรงคุณวุฒิ"; - } else if (item.mp_cee == "31") { - positionType = "วิชาการ"; - positionLevel = "ทรงคุณวุฒิเฉพาะสายงานที่กำหนด"; - } else if (item.mp_cee == "32") { - positionType = "อำนวยการ"; - positionLevel = "ต้น"; - } else if (item.mp_cee == "33") { - positionType = "อำนวยการ"; - positionLevel = "สูง"; - } else if (item.mp_cee == "34") { - positionType = "บริหาร"; - positionLevel = "ต้น"; - } else if (item.mp_cee == "35") { - positionType = "บริหาร"; - positionLevel = "สูง"; - } else { - profileSalary.positionCee = item.mp_cee; - } - profileSalary.positionType = positionType; - profileSalary.positionLevel = positionLevel; - profileSalary.orgRoot = item.department_name; - profileSalary.orgChild1 = item.division_name; - profileSalary.orgChild2 = item.section_name; - profileSalary.orgChild3 = item.job_name; - if (item.department_code == "50") { - profileSalary.orgRoot = item.division_name; - profileSalary.orgChild1 = item.section_name; - profileSalary.orgChild2 = item.job_name; - } - profileSalary.positionExecutive = item.admin_name; - profileSalary.amount = item.salary; - profileSalary.remark = item.remark; - profileSalary.refId = item.id; - profileSalary.isEntry = false; + for await (const _item of profiles) { + const existingProfile = await this.HR_POSITION_OFFICERRepo.find({ + where: { CIT: _item.citizenId, FLAG_PERSON_TYPE: "1" }, + order: { + MP_POS_DATE: "ASC", + ORDER_MOVE_POSITION: "ASC", + }, + }); + let order = 1; + for await (const item of existingProfile) { + rowCount++; + const profileSalary: any = new ProfileSalary(); + profileSalary.profileId = _item.id; + profileSalary.order = order; + order = order + 1; + profileSalary.commandNo = isNaN(item.MP_COMMAND_NUM) ? null : item.MP_COMMAND_NUM; + profileSalary.commandYear = isNaN(item.MP_COMMAND_NUM) + ? null + : item.CUR_YEAR > 2500 + ? item.CUR_YEAR - 543 + : item.CUR_YEAR; - const sal_pos_amount_1: any = - item.sal_pos_amount_1 == null || item.sal_pos_amount_1 == "" - ? _null - : Number(item.sal_pos_amount_1); - const sal_pos_amount_2: any = - item.sal_pos_amount_2 == null || item.sal_pos_amount_2 == "" - ? _null - : Number(item.sal_pos_amount_2); - profileSalary.positionSalaryAmount = sal_pos_amount_1 ?? sal_pos_amount_2; - const special_amt: any = - item.special_amt == null || item.special_amt == "" ? _null : Number(item.special_amt); - profileSalary.amountSpecial = special_amt; + let MP_COMMAND_DATE = ""; + if (item.MP_COMMAND_DATE) { + const [datePart] = item.MP_COMMAND_DATE.split(" "); + const [day, month, year] = datePart.split("/"); + MP_COMMAND_DATE = `${year}-${month.padStart(2, "0")}-${day.padStart(2, "0")}`; + } + let MP_POS_DATE = ""; + if (item.MP_POS_DATE) { + const [datePart] = item.MP_POS_DATE.split(" "); + const [day, month, year] = datePart.split("/"); + MP_POS_DATE = `${year}-${month.padStart(2, "0")}-${day.padStart(2, "0")}`; + } + profileSalary.commandDateSign = MP_COMMAND_DATE == null ? _null : new Date(MP_COMMAND_DATE); + profileSalary.commandDateAffect = MP_POS_DATE == null ? _null : new Date(MP_POS_DATE); + if ( + [ + "0", + "11", + "22", + "31", + "39", + "45", + "46", + "47", + "49", + "50", + "51", + "60", + "61", + "62", + "99", + ].includes(item.FLAG_TO_NAME_CODE) + ) { + profileSalary.commandCode = "0"; + profileSalary.commandName = "อื่น ๆ"; + } else if (["1", "58"].includes(item.FLAG_TO_NAME_CODE)) { + profileSalary.commandCode = "1"; + profileSalary.commandName = "บรรจุและแต่งตั้งผู้สอบแข่งขันได้"; + } else if (["23"].includes(item.FLAG_TO_NAME_CODE)) { + profileSalary.commandCode = "2"; + profileSalary.commandName = "บรรจุและแต่งตั้งผู้ได้รับคัดเลือก"; + } else if (["3", "6", "34", "36", "37"].includes(item.FLAG_TO_NAME_CODE)) { + profileSalary.commandCode = "3"; + profileSalary.commandName = "แต่งตั้ง ย้าย"; + } else if (["10", "55", "56"].includes(item.FLAG_TO_NAME_CODE)) { + profileSalary.commandCode = "4"; + profileSalary.commandName = "เลื่อน"; + } else if (["14"].includes(item.FLAG_TO_NAME_CODE)) { + profileSalary.commandCode = "5"; + profileSalary.commandName = "เลื่อนเงินเดือนตามปกติ"; + } else if ( + ["8", "20", "24", "25", "43", "44", "52", "66", "67"].includes(item.FLAG_TO_NAME_CODE) + ) { + profileSalary.commandCode = "6"; + profileSalary.commandName = "เลื่อนเงินเดือนกรณีอื่น ๆ"; + } else if (["-"].includes(item.FLAG_TO_NAME_CODE)) { + profileSalary.commandCode = "7"; + profileSalary.commandName = "เงินพิเศษอื่น ๆ"; + } else if (["38", "40", "53", "54"].includes(item.FLAG_TO_NAME_CODE)) { + profileSalary.commandCode = "8"; + profileSalary.commandName = "ปรับโครงสร้าง"; + } else if (["12"].includes(item.FLAG_TO_NAME_CODE)) { + profileSalary.commandCode = "9"; + profileSalary.commandName = "พ้นทดลองปฏิบัติราชการ"; + } else if (["2", "18"].includes(item.FLAG_TO_NAME_CODE)) { + profileSalary.commandCode = "10"; + profileSalary.commandName = "บรรจุกลับ"; + } else if (["4", "32", "33"].includes(item.FLAG_TO_NAME_CODE)) { + profileSalary.commandCode = "11"; + profileSalary.commandName = "รับโอน"; + } else if (["5"].includes(item.FLAG_TO_NAME_CODE)) { + profileSalary.commandCode = "12"; + profileSalary.commandName = "ให้โอน"; + } else if (["15", "95"].includes(item.FLAG_TO_NAME_CODE)) { + profileSalary.commandCode = "13"; + profileSalary.commandName = "แก้ไขคำสั่ง"; + } else if (["19"].includes(item.FLAG_TO_NAME_CODE)) { + profileSalary.commandCode = "14"; + profileSalary.commandName = "ยกเลิกคำสั่ง"; + } else if (["27", "35"].includes(item.FLAG_TO_NAME_CODE)) { + profileSalary.commandCode = "15"; + profileSalary.commandName = "ลาออกจากราชการ"; + } else if (["13", "17", "21", "28", "29", "30", "59"].includes(item.FLAG_TO_NAME_CODE)) { + profileSalary.commandCode = "16"; + profileSalary.commandName = "พ้นจากราชการ"; + } else if (["7", "9", "16", "26", "63", "68"].includes(item.FLAG_TO_NAME_CODE)) { + profileSalary.commandCode = "17"; + profileSalary.commandName = "รักษาราชการ, ช่วยราชการ"; + } + if (item.FLAG_TO_NAME_CODE == null && item.FLAG_TO_NAME == "ลาศึกษาต่อ") { + profileSalary.commandCode = "0"; + profileSalary.commandName = "อื่น ๆ"; + } else if ( + item.FLAG_TO_NAME_CODE == null && + (item.FLAG_TO_NAME == "เลื่อน 1 ขั้นและเลื่อนระดับ" || + item.FLAG_TO_NAME == "เลื่อน 0.5 ขั้นและเลื่อนระดับ") + ) { + profileSalary.commandCode = "4"; + profileSalary.commandName = "เลื่อน"; + } else if (item.FLAG_TO_NAME_CODE == null && item.FLAG_TO_NAME == "เลื่อนเงินเดือน") { + profileSalary.commandCode = "5"; + profileSalary.commandName = "เลื่อนเงินเดือนตามปกติ"; + } else if ( + 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_CODE == null && + item.FLAG_TO_NAME == "แต่งตั้งตามการปรับปรุงโครงฯ" + ) { + profileSalary.commandCode = "8"; + profileSalary.commandName = "ปรับโครงสร้าง"; + } else if (item.FLAG_TO_NAME_CODE == null && item.FLAG_TO_NAME == "พ้นทดลองปฏิบัติราชการ") { + profileSalary.commandCode = "9"; + profileSalary.commandName = "พ้นทดลองปฏิบัติราชการ"; + } else if (item.FLAG_TO_NAME_CODE == null && item.FLAG_TO_NAME == "ให้โอนมา") { + profileSalary.commandCode = "11"; + profileSalary.commandName = "รับโอน"; + } else if ( + item.FLAG_TO_NAME_CODE == null && + item.FLAG_TO_NAME == "โอนไปปฏิบัติราชการที่อื่น" + ) { + profileSalary.commandCode = "12"; + profileSalary.commandName = "ให้โอน"; + } else if (item.FLAG_TO_NAME_CODE == null && item.FLAG_TO_NAME == "ยกเลิกคำสั่ง") { + profileSalary.commandCode = "14"; + profileSalary.commandName = "ยกเลิกคำสั่ง"; + } 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; + var positionType = _null; + var positionLevel = _null; + if (item.MP_CEE == "21") { + positionType = "ทั่วไป"; + positionLevel = "ปฏิบัติงาน"; + } else if (item.MP_CEE == "22") { + positionType = "ทั่วไป"; + positionLevel = "ชำนาญงาน"; + } else if (item.MP_CEE == "23") { + positionType = "ทั่วไป"; + positionLevel = "อาวุโส"; + } else if (item.MP_CEE == "24") { + positionType = "ทั่วไป"; + positionLevel = "อาวุโสเฉพาะสายงานที่กำหนด"; + } else if (item.MP_CEE == "25") { + positionType = "ทั่วไป"; + positionLevel = "ทักษะพิเศษ"; + } else if (item.MP_CEE == "26") { + positionType = "วิชาการ"; + positionLevel = "ปฏิบัติการ"; + } else if (item.MP_CEE == "27") { + positionType = "วิชาการ"; + positionLevel = "ชำนาญการ"; + } else if (item.MP_CEE == "28") { + positionType = "วิชาการ"; + positionLevel = "ชำนาญการพิเศษ"; + } else if (item.MP_CEE == "29") { + positionType = "วิชาการ"; + positionLevel = "เชี่ยวชาญ"; + } else if (item.MP_CEE == "30") { + positionType = "วิชาการ"; + positionLevel = "ทรงคุณวุฒิ"; + } else if (item.MP_CEE == "31") { + positionType = "วิชาการ"; + positionLevel = "ทรงคุณวุฒิเฉพาะสายงานที่กำหนด"; + } else if (item.MP_CEE == "32") { + positionType = "อำนวยการ"; + positionLevel = "ต้น"; + } else if (item.MP_CEE == "33") { + positionType = "อำนวยการ"; + positionLevel = "สูง"; + } else if (item.MP_CEE == "34") { + positionType = "บริหาร"; + positionLevel = "ต้น"; + } else if (item.MP_CEE == "35") { + positionType = "บริหาร"; + positionLevel = "สูง"; + } else { + profileSalary.positionCee = item.MP_CEE; + } + profileSalary.positionType = positionType; + profileSalary.positionLevel = positionLevel; + profileSalary.orgRoot = item.DEPARTMENT_NAME; + profileSalary.orgChild1 = item.DIVISION_NAME; + profileSalary.orgChild2 = item.SECTION_NAME; + profileSalary.orgChild3 = item.JOB_NAME; + if (item.DEPARTMENT_CODE == "50") { + profileSalary.orgRoot = item.DIVISION_NAME; + profileSalary.orgChild1 = item.SECTION_NAME; + profileSalary.orgChild2 = item.JOB_NAME; + } + profileSalary.positionExecutive = item.ADMIN_NAME ?? _null; + profileSalary.amount = isNaN(item.SALARY) ? null : item.SALARY; + profileSalary.remark = item.REMARK; + profileSalary.refId = item.id; + profileSalary.isEntry = false; - 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(">>>>>>>>>>>>>>>>>>>" + rowCount); + const sal_pos_amount_1: any = + item.SAL_POS_AMOUNT_1 == null || item.SAL_POS_AMOUNT_1 == "" + ? _null + : Number(item.SAL_POS_AMOUNT_1); + const sal_pos_amount_2: any = + item.SAL_POS_AMOUNT_2 == null || item.SAL_POS_AMOUNT_2 == "" + ? _null + : Number(item.SAL_POS_AMOUNT_2); + profileSalary.positionSalaryAmount = sal_pos_amount_1 ?? sal_pos_amount_2; + const special_amt: any = + item.SPECIAL_AMT == null || item.SPECIAL_AMT == "" ? _null : Number(item.SPECIAL_AMT); + profileSalary.amountSpecial = special_amt; - // // Generate SQL INSERT Statement using TypeORM QueryBuilder but don't execute it - // const queryBuilder = AppDataSource.createQueryBuilder() - // .insert() - // .into(ProfileSalary) - // .values(profileSalary); + 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(">>>>>>>>>>>>>>>>>>>" + rowCount); - // const sql = queryBuilder.getSql(); - // sqlStatements.push(sql); - // _profiles.push(profileSalary); - // save to file - // Define the output file path + // // Generate SQL INSERT Statement using TypeORM QueryBuilder but don't execute it + // const queryBuilder = AppDataSource.createQueryBuilder() + // .insert() + // .into(ProfileSalary) + // .values(profileSalary); - // 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`; + // const sql = queryBuilder.getSql(); + // sqlStatements.push(sql); + // _profiles.push(profileSalary); + // save to file + // Define the output file path - // Loop through each salary profile and format data as CSV - // _profiles.forEach((profile) => { - 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`; - // }); + // 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`; - // Write the CSV data to the file - 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, - ); - } - }); - // await this.salaryRepo.save(profileSalary); - }), - ); - order = 1; - }), - ); + // Loop through each salary profile and format data as CSV + // _profiles.forEach((profile) => { + // 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 + // 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); + // } + // }); + try { + await this.salaryRepo.save(profileSalary); + } catch (error) { + console.error("Error executing function from controller:", item.CIT); + } + } + order = 1; + } // // console.log(rowCount); // // Define the output file path // const filePath = path.join(__dirname, "salaryProfile.csv"); @@ -845,81 +921,416 @@ export class ImportDataController extends Controller { async UploadFileSQLSalaryEmp(@Request() request: { user: Record }) { let rowCount = 0; let _null: any = null; + let sqlStatements: string[] = []; const [profiles, total] = await AppDataSource.getRepository(ProfileEmployee) .createQueryBuilder("profile") .select(["profile.citizenId", "profile.id"]) .orderBy("profile.citizenId", "ASC") - .skip(0) - .take(10000) + // .where("profile.citizenId = '3101702379675'") + // .where({ + // citizenId: In([ + // // "1100600109451", + // // "1209900075508", + // // "1739900231556", + // // "1809900305214", + // // "1920600228762", + // // "3101600963742", + // // "3102401171243", + // // "3120100454406", + // // "3180100306172", + // // "3700100094722", + // // "3809900116957", + // "3940900213929", + // ]), + // }) + .leftJoinAndSelect("profile.profileSalary", "profileSalary") + // .where({employeeClass: "P"}) + .where("profileSalary.id IS NULL") + // .skip(0) + // .take(10000) .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`; - await Promise.all( - profiles.map(async (_item) => { - const existingProfile = await this.positionOfficerRepo.find({ - where: { citizenId: _item.citizenId, flag_person_type: "7" }, - }); + fs.appendFile(filePath, csvData, (err) => { + if (err) { + console.error("Error writing CSV file:", err); + } else { + console.log("Salary profiles successfully written to salaryProfile.csv"); + } + }); + for await (const _item of profiles) { + const existingProfile = await this.HR_POSITION_EMPLOYEERepo.find({ + where: { CIT: _item.citizenId, FLAG_PERSON_TYPE: "6" }, + order: { + MP_POS_DATE: "ASC", + ORDER_MOVE_POSITION: "ASC", + }, + }); + let order = 1; + for await (const item of existingProfile) { + rowCount++; + const profileSalary: any = new ProfileSalary(); + profileSalary.profileEmployeeId = _item.id; + profileSalary.order = order; + order = order + 1; + profileSalary.commandNo = isNaN(item.MP_COMMAND_NUM) ? null : item.MP_COMMAND_NUM; + profileSalary.commandYear = isNaN(item.MP_COMMAND_NUM) + ? null + : item.CUR_YEAR > 2500 + ? item.CUR_YEAR - 543 + : item.CUR_YEAR; - await Promise.all( - existingProfile.map(async (item) => { - rowCount++; - const profileSalary: any = new ProfileSalary(); - profileSalary.profileId = _item.id; - profileSalary.order = item.order_move_position; /// - profileSalary.commandNo = item.mp_command_num; - profileSalary.commandYear = item.cur_year; - profileSalary.commandDateSign = item.mp_command_date; - profileSalary.commandDateAffect = item.mp_pos_date; - profileSalary.commandCode = item.flag_to_name_code; - profileSalary.commandName = item.flag_to_name; - profileSalary.posNoAbb = item.pos_num_name; - profileSalary.posNo = item.pos_num_code; - profileSalary.positionName = item.work_line_name; - profileSalary.positionCee = item.mp_cee; - profileSalary.positionType = item.mp_cee; - profileSalary.positionLevel = item.mp_cee; - profileSalary.orgRoot = item.department_name; - profileSalary.orgChild1 = item.division_name; - profileSalary.orgChild2 = item.section_name; - profileSalary.orgChild3 = item.job_name; - if (item.department_code == "50") { - profileSalary.orgRoot = item.division_name; - profileSalary.orgChild1 = item.section_name; - profileSalary.orgChild2 = item.job_name; - } - profileSalary.positionExecutive = item.admin_name; - profileSalary.amount = item.salary; - profileSalary.remark = item.remark; + let MP_COMMAND_DATE = ""; + if (item.MP_COMMAND_DATE) { + const [datePart] = item.MP_COMMAND_DATE.split(" "); + const [day, month, year] = datePart.split("/"); + MP_COMMAND_DATE = `${year}-${month.padStart(2, "0")}-${day.padStart(2, "0")}`; + } + let MP_POS_DATE = ""; + if (item.MP_POS_DATE) { + const [datePart] = item.MP_POS_DATE.split(" "); + const [day, month, year] = datePart.split("/"); + MP_POS_DATE = `${year}-${month.padStart(2, "0")}-${day.padStart(2, "0")}`; + } + profileSalary.commandDateSign = MP_COMMAND_DATE == null ? _null : new Date(MP_COMMAND_DATE); + profileSalary.commandDateAffect = MP_POS_DATE == null ? _null : new Date(MP_POS_DATE); + if ( + [ + "0", + "11", + "22", + "31", + "39", + "45", + "46", + "47", + "49", + "50", + "51", + "60", + "61", + "62", + "99", + ].includes(item.FLAG_TO_NAME_CODE) + ) { + profileSalary.commandCode = "0"; + profileSalary.commandName = "อื่น ๆ"; + } else if (["1", "58"].includes(item.FLAG_TO_NAME_CODE)) { + profileSalary.commandCode = "1"; + profileSalary.commandName = "บรรจุและแต่งตั้งผู้สอบแข่งขันได้"; + } else if (["23"].includes(item.FLAG_TO_NAME_CODE)) { + profileSalary.commandCode = "2"; + profileSalary.commandName = "บรรจุและแต่งตั้งผู้ได้รับคัดเลือก"; + } else if (["3", "6", "34", "36", "37"].includes(item.FLAG_TO_NAME_CODE)) { + profileSalary.commandCode = "3"; + profileSalary.commandName = "แต่งตั้ง ย้าย"; + } else if (["10", "55", "56"].includes(item.FLAG_TO_NAME_CODE)) { + profileSalary.commandCode = "4"; + profileSalary.commandName = "เลื่อน"; + } else if (["14"].includes(item.FLAG_TO_NAME_CODE)) { + profileSalary.commandCode = "5"; + profileSalary.commandName = "เลื่อนเงินเดือนตามปกติ"; + } else if ( + ["8", "20", "24", "25", "43", "44", "52", "66", "67"].includes(item.FLAG_TO_NAME_CODE) + ) { + profileSalary.commandCode = "6"; + profileSalary.commandName = "เลื่อนเงินเดือนกรณีอื่น ๆ"; + } else if (["-"].includes(item.FLAG_TO_NAME_CODE)) { + profileSalary.commandCode = "7"; + profileSalary.commandName = "เงินพิเศษอื่น ๆ"; + } else if (["38", "40", "53", "54"].includes(item.FLAG_TO_NAME_CODE)) { + profileSalary.commandCode = "8"; + profileSalary.commandName = "ปรับโครงสร้าง"; + } else if (["12"].includes(item.FLAG_TO_NAME_CODE)) { + profileSalary.commandCode = "9"; + profileSalary.commandName = "พ้นทดลองปฏิบัติราชการ"; + } else if (["2", "18"].includes(item.FLAG_TO_NAME_CODE)) { + profileSalary.commandCode = "10"; + profileSalary.commandName = "บรรจุกลับ"; + } else if (["4", "32", "33"].includes(item.FLAG_TO_NAME_CODE)) { + profileSalary.commandCode = "11"; + profileSalary.commandName = "รับโอน"; + } else if (["5"].includes(item.FLAG_TO_NAME_CODE)) { + profileSalary.commandCode = "12"; + profileSalary.commandName = "ให้โอน"; + } else if (["15", "95"].includes(item.FLAG_TO_NAME_CODE)) { + profileSalary.commandCode = "13"; + profileSalary.commandName = "แก้ไขคำสั่ง"; + } else if (["19"].includes(item.FLAG_TO_NAME_CODE)) { + profileSalary.commandCode = "14"; + profileSalary.commandName = "ยกเลิกคำสั่ง"; + } else if (["27", "35"].includes(item.FLAG_TO_NAME_CODE)) { + profileSalary.commandCode = "15"; + profileSalary.commandName = "ลาออกจากราชการ"; + } else if (["13", "17", "21", "28", "29", "30", "59"].includes(item.FLAG_TO_NAME_CODE)) { + profileSalary.commandCode = "16"; + profileSalary.commandName = "พ้นจากราชการ"; + } else if (["7", "9", "16", "26", "63", "68"].includes(item.FLAG_TO_NAME_CODE)) { + profileSalary.commandCode = "17"; + profileSalary.commandName = "รักษาราชการ, ช่วยราชการ"; + } + if (item.FLAG_TO_NAME_CODE == null && item.FLAG_TO_NAME == "ลาศึกษาต่อ") { + profileSalary.commandCode = "0"; + profileSalary.commandName = "อื่น ๆ"; + } else if ( + item.FLAG_TO_NAME_CODE == null && + (item.FLAG_TO_NAME == "เลื่อน 1 ขั้นและเลื่อนระดับ" || + item.FLAG_TO_NAME == "เลื่อน 0.5 ขั้นและเลื่อนระดับ") + ) { + profileSalary.commandCode = "4"; + profileSalary.commandName = "เลื่อน"; + } else if (item.FLAG_TO_NAME_CODE == null && item.FLAG_TO_NAME == "เลื่อนเงินเดือน") { + profileSalary.commandCode = "5"; + profileSalary.commandName = "เลื่อนเงินเดือนตามปกติ"; + } else if ( + 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_CODE == null && + item.FLAG_TO_NAME == "แต่งตั้งตามการปรับปรุงโครงฯ" + ) { + profileSalary.commandCode = "8"; + profileSalary.commandName = "ปรับโครงสร้าง"; + } else if (item.FLAG_TO_NAME_CODE == null && item.FLAG_TO_NAME == "พ้นทดลองปฏิบัติราชการ") { + profileSalary.commandCode = "9"; + profileSalary.commandName = "พ้นทดลองปฏิบัติราชการ"; + } else if (item.FLAG_TO_NAME_CODE == null && item.FLAG_TO_NAME == "ให้โอนมา") { + profileSalary.commandCode = "11"; + profileSalary.commandName = "รับโอน"; + } else if ( + item.FLAG_TO_NAME_CODE == null && + item.FLAG_TO_NAME == "โอนไปปฏิบัติราชการที่อื่น" + ) { + profileSalary.commandCode = "12"; + profileSalary.commandName = "ให้โอน"; + } else if (item.FLAG_TO_NAME_CODE == null && item.FLAG_TO_NAME == "ยกเลิกคำสั่ง") { + profileSalary.commandCode = "14"; + profileSalary.commandName = "ยกเลิกคำสั่ง"; + } 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; + var positionType = _null; + var positionLevel = _null; + if (item.CATEGORY_SAL_CODE == "11") { + positionType = "บริการพื้นฐาน"; + } else if (item.CATEGORY_SAL_CODE == "12") { + positionType = "สนับสนุน"; + } else if (item.CATEGORY_SAL_CODE == "13") { + positionType = "ช่าง"; + } - const sal_pos_amount_1: any = - item.sal_pos_amount_1 == null || item.sal_pos_amount_1 == "" - ? _null - : Number(item.sal_pos_amount_1); - const sal_pos_amount_2: any = - item.sal_pos_amount_2 == null || item.sal_pos_amount_2 == "" - ? _null - : Number(item.sal_pos_amount_2); - profileSalary.positionSalaryAmount = sal_pos_amount_1 ?? sal_pos_amount_2; - const special_amt: any = - item.special_amt == null || item.special_amt == "" ? _null : Number(item.special_amt); - profileSalary.amountSpecial = special_amt; + profileSalary.positionType = positionType; + profileSalary.positionLevel = positionLevel; + profileSalary.orgRoot = item.DEPARTMENT_NAME; + profileSalary.orgChild1 = item.DIVISION_NAME; + profileSalary.orgChild2 = item.SECTION_NAME; + profileSalary.orgChild3 = item.JOB_NAME; + if (item.DEPARTMENT_CODE == "50") { + profileSalary.orgRoot = item.DIVISION_NAME; + profileSalary.orgChild1 = item.SECTION_NAME; + profileSalary.orgChild2 = item.JOB_NAME; + } + // profileSalary.positionExecutive = item.ADMIN_NAME ?? _null; + profileSalary.amount = isNaN(item.SALARY) ? null : item.SALARY; + profileSalary.remark = item.REMARK; + profileSalary.refId = item.id; + profileSalary.isEntry = false; - profileSalary.commandId; + // const sal_pos_amount_1: any = + // item.SAL_POS_AMOUNT_1 == null || item.SAL_POS_AMOUNT_1 == "" + // ? _null + // : Number(item.SAL_POS_AMOUNT_1); + // const sal_pos_amount_2: any = + // item.SAL_POS_AMOUNT_2 == null || item.SAL_POS_AMOUNT_2 == "" + // ? _null + // : Number(item.SAL_POS_AMOUNT_2); + // profileSalary.positionSalaryAmount = sal_pos_amount_1 ?? sal_pos_amount_2; + const special_amt: any = + item.SPECIAL_AMT == null || item.SPECIAL_AMT == "" ? _null : Number(item.SPECIAL_AMT); + profileSalary.amountSpecial = special_amt; - profileSalary.createdUserId = request.user.sub; - profileSalary.createdFullName = request.user.name; - profileSalary.lastUpdateUserId = request.user.sub; - profileSalary.lastUpdateFullName = request.user.name; - profileSalary.createdAt = new Date(); - profileSalary.lastUpdatedAt = new Date(); - console.log(">>>>>>>>>>>>>>>>>>>" + rowCount); - // save to file - // await this.salaryRepo.save(profileSalary); - }), - ); - }), - ); - console.log(rowCount); + 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]; + console.log(">>>>>>>>>>>>>>>>>>>" + rowCount); + + try { + await this.salaryRepo.save(profileSalary); + } catch (error) { + console.error("Error executing function from controller:", item.CIT); + } + } + order = 1; + } return new HttpSuccess(); } @@ -949,98 +1360,96 @@ export class ImportDataController extends Controller { // .take(BATCH_SIZE) // .getMany(); - await Promise.all( - profiles.map(async (_item) => { - const existingProfile = await this.HR_PERSONAL_OFFICER_FAMILYRepo.findOne({ - where: { CIT: _item.citizenId }, - select: [ - "CIT", - "FATHER_RANK_NAME", - "FATHER_FNAME", - "FATHER_LNAME", - "MOTHER_RANK_NAME", - "MOTHER_FNAME", - "MOTHER_LNAME", - "SPOUSE_RANK_NAME", - "SPOUSE_FNAME", - "SPOUSE_LNAME", - "SPOUSE_ID", - "MARRIAGE_STATE", - ], - }); - if (!existingProfile) { - return; - } + for await (const _item of profiles) { + const existingProfile = await this.HR_PERSONAL_OFFICER_FAMILYRepo.findOne({ + where: { CIT: _item.citizenId }, + select: [ + "CIT", + "FATHER_RANK_NAME", + "FATHER_FNAME", + "FATHER_LNAME", + "MOTHER_RANK_NAME", + "MOTHER_FNAME", + "MOTHER_LNAME", + "SPOUSE_RANK_NAME", + "SPOUSE_FNAME", + "SPOUSE_LNAME", + "SPOUSE_ID", + "MARRIAGE_STATE", + ], + }); + if (!existingProfile) { + continue; + } - rowCount++; - const profileFather = new ProfileFamilyFather(); - const profileMother = new ProfileFamilyMother(); - const profileCouple = new ProfileFamilyCouple(); + rowCount++; + const profileFather = new ProfileFamilyFather(); + const profileMother = new ProfileFamilyMother(); + const profileCouple = new ProfileFamilyCouple(); - profileFather.profileId = _item.id; - profileFather.fatherPrefix = existingProfile.FATHER_RANK_NAME; - profileFather.fatherFirstName = existingProfile.FATHER_FNAME; - profileFather.fatherLastName = existingProfile.FATHER_LNAME; - profileFather.createdUserId = request.user.sub; - profileFather.createdFullName = request.user.name; - profileFather.lastUpdateUserId = request.user.sub; - profileFather.lastUpdateFullName = request.user.name; - profileFather.createdAt = new Date(); - profileFather.lastUpdatedAt = new Date(); + profileFather.profileId = _item.id; + profileFather.fatherPrefix = existingProfile.FATHER_RANK_NAME; + profileFather.fatherFirstName = existingProfile.FATHER_FNAME; + profileFather.fatherLastName = existingProfile.FATHER_LNAME; + profileFather.createdUserId = request.user.sub; + profileFather.createdFullName = request.user.name; + profileFather.lastUpdateUserId = request.user.sub; + profileFather.lastUpdateFullName = request.user.name; + profileFather.createdAt = new Date(); + profileFather.lastUpdatedAt = new Date(); - profileMother.profileId = _item.id; - profileMother.motherPrefix = existingProfile.MOTHER_RANK_NAME; - profileMother.motherFirstName = existingProfile.MOTHER_FNAME; - profileMother.motherLastName = existingProfile.MOTHER_LNAME; - profileMother.createdUserId = request.user.sub; - profileMother.createdFullName = request.user.name; - profileMother.lastUpdateUserId = request.user.sub; - profileMother.lastUpdateFullName = request.user.name; - profileMother.createdAt = new Date(); - profileMother.lastUpdatedAt = new Date(); + profileMother.profileId = _item.id; + profileMother.motherPrefix = existingProfile.MOTHER_RANK_NAME; + profileMother.motherFirstName = existingProfile.MOTHER_FNAME; + profileMother.motherLastName = existingProfile.MOTHER_LNAME; + profileMother.createdUserId = request.user.sub; + profileMother.createdFullName = request.user.name; + profileMother.lastUpdateUserId = request.user.sub; + profileMother.lastUpdateFullName = request.user.name; + profileMother.createdAt = new Date(); + profileMother.lastUpdatedAt = new Date(); - profileCouple.profileId = _item.id; - profileCouple.couplePrefix = existingProfile.SPOUSE_RANK_NAME; - profileCouple.coupleFirstName = existingProfile.SPOUSE_FNAME; - profileCouple.coupleLastName = existingProfile.SPOUSE_LNAME; - profileCouple.coupleCitizenId = existingProfile.SPOUSE_ID; - profileCouple.relationship = - existingProfile.MARRIAGE_STATE == "1" - ? "โสด" - : existingProfile.MARRIAGE_STATE == "2" - ? "สมรส" - : existingProfile.MARRIAGE_STATE == "3" - ? "หย่าร้าง" - : existingProfile.MARRIAGE_STATE == "4" - ? "หม้าย" - : "-"; - // profileCouple.coupleLive = existingProfile.LIFE_SPOUSE; - profileCouple.createdUserId = request.user.sub; - profileCouple.createdFullName = request.user.name; - profileCouple.lastUpdateUserId = request.user.sub; - profileCouple.lastUpdateFullName = request.user.name; - profileCouple.createdAt = new Date(); - profileCouple.lastUpdatedAt = new Date(); + profileCouple.profileId = _item.id; + profileCouple.couplePrefix = existingProfile.SPOUSE_RANK_NAME; + profileCouple.coupleFirstName = existingProfile.SPOUSE_FNAME; + profileCouple.coupleLastName = existingProfile.SPOUSE_LNAME; + profileCouple.coupleCitizenId = existingProfile.SPOUSE_ID; + profileCouple.relationship = + existingProfile.MARRIAGE_STATE == "1" + ? "โสด" + : existingProfile.MARRIAGE_STATE == "2" + ? "สมรส" + : existingProfile.MARRIAGE_STATE == "3" + ? "หย่าร้าง" + : existingProfile.MARRIAGE_STATE == "4" + ? "หม้าย" + : "-"; + // profileCouple.coupleLive = existingProfile.LIFE_SPOUSE; + profileCouple.createdUserId = request.user.sub; + profileCouple.createdFullName = request.user.name; + profileCouple.lastUpdateUserId = request.user.sub; + profileCouple.lastUpdateFullName = request.user.name; + profileCouple.createdAt = new Date(); + profileCouple.lastUpdatedAt = new Date(); - // fathers.push(profileFather); - // mothers.push(profileMother); - // couples.push(profileCouple); - console.log(">>>>>>>>>>>>>>>>>>>" + rowCount); + // fathers.push(profileFather); + // mothers.push(profileMother); + // couples.push(profileCouple); + console.log(">>>>>>>>>>>>>>>>>>>" + rowCount); - // if (fathers.length === BATCH_SIZE) { - await this.profileFamilyFatherRepository.save(profileFather); - // fathers = await []; - // } - // if (mothers.length === BATCH_SIZE) { - await this.profileFamilyMotherRepository.save(profileMother); - // mothers = await []; - // } - // if (couples.length === BATCH_SIZE) { - await this.profileFamilyCoupleRepository.save(profileCouple); - // couples = await []; - // } - }), - ); + // if (fathers.length === BATCH_SIZE) { + await this.profileFamilyFatherRepository.save(profileFather); + // fathers = await []; + // } + // if (mothers.length === BATCH_SIZE) { + await this.profileFamilyMotherRepository.save(profileMother); + // mothers = await []; + // } + // if (couples.length === BATCH_SIZE) { + await this.profileFamilyCoupleRepository.save(profileCouple); + // couples = await []; + // } + } // } // console.log(rowCount); @@ -1079,98 +1488,96 @@ export class ImportDataController extends Controller { // .take(BATCH_SIZE) // .getMany(); - await Promise.all( - profiles.map(async (_item) => { - const existingProfile = await this.HR_PERSONAL_EMP_FAMILYRepo.findOne({ - where: { CIT: _item.citizenId }, - select: [ - "CIT", - "FATHER_RANK_NAME", - "FATHER_FNAME", - "FATHER_LNAME", - "MOTHER_RANK_NAME", - "MOTHER_FNAME", - "MOTHER_LNAME", - "SPOUSE_RANK_NAME", - "SPOUSE_FNAME", - "SPOUSE_LNAME", - "SPOUSE_ID", - "MARRIAGE_STATE", - ], - }); - if (!existingProfile) { - return; - } + for await (const _item of profiles) { + const existingProfile = await this.HR_PERSONAL_EMP_FAMILYRepo.findOne({ + where: { CIT: _item.citizenId }, + select: [ + "CIT", + "FATHER_RANK_NAME", + "FATHER_FNAME", + "FATHER_LNAME", + "MOTHER_RANK_NAME", + "MOTHER_FNAME", + "MOTHER_LNAME", + "SPOUSE_RANK_NAME", + "SPOUSE_FNAME", + "SPOUSE_LNAME", + "SPOUSE_ID", + "MARRIAGE_STATE", + ], + }); + if (!existingProfile) { + continue; + } - rowCount++; - const profileFather = new ProfileFamilyFather(); - const profileMother = new ProfileFamilyMother(); - const profileCouple = new ProfileFamilyCouple(); + rowCount++; + const profileFather = new ProfileFamilyFather(); + const profileMother = new ProfileFamilyMother(); + const profileCouple = new ProfileFamilyCouple(); - profileFather.profileEmployeeId = _item.id; - profileFather.fatherPrefix = existingProfile.FATHER_RANK_NAME; - profileFather.fatherFirstName = existingProfile.FATHER_FNAME; - profileFather.fatherLastName = existingProfile.FATHER_LNAME; - profileFather.createdUserId = request.user.sub; - profileFather.createdFullName = request.user.name; - profileFather.lastUpdateUserId = request.user.sub; - profileFather.lastUpdateFullName = request.user.name; - profileFather.createdAt = new Date(); - profileFather.lastUpdatedAt = new Date(); + profileFather.profileEmployeeId = _item.id; + profileFather.fatherPrefix = existingProfile.FATHER_RANK_NAME; + profileFather.fatherFirstName = existingProfile.FATHER_FNAME; + profileFather.fatherLastName = existingProfile.FATHER_LNAME; + profileFather.createdUserId = request.user.sub; + profileFather.createdFullName = request.user.name; + profileFather.lastUpdateUserId = request.user.sub; + profileFather.lastUpdateFullName = request.user.name; + profileFather.createdAt = new Date(); + profileFather.lastUpdatedAt = new Date(); - profileMother.profileEmployeeId = _item.id; - profileMother.motherPrefix = existingProfile.MOTHER_RANK_NAME; - profileMother.motherFirstName = existingProfile.MOTHER_FNAME; - profileMother.motherLastName = existingProfile.MOTHER_LNAME; - profileMother.createdUserId = request.user.sub; - profileMother.createdFullName = request.user.name; - profileMother.lastUpdateUserId = request.user.sub; - profileMother.lastUpdateFullName = request.user.name; - profileMother.createdAt = new Date(); - profileMother.lastUpdatedAt = new Date(); + profileMother.profileEmployeeId = _item.id; + profileMother.motherPrefix = existingProfile.MOTHER_RANK_NAME; + profileMother.motherFirstName = existingProfile.MOTHER_FNAME; + profileMother.motherLastName = existingProfile.MOTHER_LNAME; + profileMother.createdUserId = request.user.sub; + profileMother.createdFullName = request.user.name; + profileMother.lastUpdateUserId = request.user.sub; + profileMother.lastUpdateFullName = request.user.name; + profileMother.createdAt = new Date(); + profileMother.lastUpdatedAt = new Date(); - profileCouple.profileEmployeeId = _item.id; - profileCouple.couplePrefix = existingProfile.SPOUSE_RANK_NAME; - profileCouple.coupleFirstName = existingProfile.SPOUSE_FNAME; - profileCouple.coupleLastName = existingProfile.SPOUSE_LNAME; - profileCouple.coupleCitizenId = existingProfile.SPOUSE_ID; - profileCouple.relationship = - existingProfile.MARRIAGE_STATE == "1" - ? "โสด" - : existingProfile.MARRIAGE_STATE == "2" - ? "สมรส" - : existingProfile.MARRIAGE_STATE == "3" - ? "หย่าร้าง" - : existingProfile.MARRIAGE_STATE == "4" - ? "หม้าย" - : "-"; - // profileCouple.coupleLive = existingProfile.LIFE_SPOUSE; - profileCouple.createdUserId = request.user.sub; - profileCouple.createdFullName = request.user.name; - profileCouple.lastUpdateUserId = request.user.sub; - profileCouple.lastUpdateFullName = request.user.name; - profileCouple.createdAt = new Date(); - profileCouple.lastUpdatedAt = new Date(); + profileCouple.profileEmployeeId = _item.id; + profileCouple.couplePrefix = existingProfile.SPOUSE_RANK_NAME; + profileCouple.coupleFirstName = existingProfile.SPOUSE_FNAME; + profileCouple.coupleLastName = existingProfile.SPOUSE_LNAME; + profileCouple.coupleCitizenId = existingProfile.SPOUSE_ID; + profileCouple.relationship = + existingProfile.MARRIAGE_STATE == "1" + ? "โสด" + : existingProfile.MARRIAGE_STATE == "2" + ? "สมรส" + : existingProfile.MARRIAGE_STATE == "3" + ? "หย่าร้าง" + : existingProfile.MARRIAGE_STATE == "4" + ? "หม้าย" + : "-"; + // profileCouple.coupleLive = existingProfile.LIFE_SPOUSE; + profileCouple.createdUserId = request.user.sub; + profileCouple.createdFullName = request.user.name; + profileCouple.lastUpdateUserId = request.user.sub; + profileCouple.lastUpdateFullName = request.user.name; + profileCouple.createdAt = new Date(); + profileCouple.lastUpdatedAt = new Date(); - // fathers.push(profileFather); - // mothers.push(profileMother); - // couples.push(profileCouple); - console.log(">>>>>>>>>>>>>>>>>>>" + rowCount); + // fathers.push(profileFather); + // mothers.push(profileMother); + // couples.push(profileCouple); + console.log(">>>>>>>>>>>>>>>>>>>" + rowCount); - // if (fathers.length === BATCH_SIZE) { - await this.profileFamilyFatherRepository.save(profileFather); - // fathers = await []; - // } - // if (mothers.length === BATCH_SIZE) { - await this.profileFamilyMotherRepository.save(profileMother); - // mothers = await []; - // } - // if (couples.length === BATCH_SIZE) { - await this.profileFamilyCoupleRepository.save(profileCouple); - // couples = await []; - // } - }), - ); + // if (fathers.length === BATCH_SIZE) { + await this.profileFamilyFatherRepository.save(profileFather); + // fathers = await []; + // } + // if (mothers.length === BATCH_SIZE) { + await this.profileFamilyMotherRepository.save(profileMother); + // mothers = await []; + // } + // if (couples.length === BATCH_SIZE) { + await this.profileFamilyCoupleRepository.save(profileCouple); + // couples = await []; + // } + } // } // console.log(rowCount); @@ -1275,15 +1682,21 @@ export class ImportDataController extends Controller { where: { FUND_COURSE_CODE: item.FUND_COURSE_CODE }, }); - let startDate = item.START_EDUCATION_YEAR - ? Extension.ConvertToDateTimeV2(item.START_EDUCATION_YEAR) - : _null; - // startDate = startDate ? new Date(startDate, 0, 1) : _null; + // let startDate = item.START_EDUCATION_YEAR + // ? Extension.ConvertToDateTimeV2(item.START_EDUCATION_YEAR) + // : _null; + let startDate = + item.START_EDUCATION_YEAR != "" && Number(item.START_EDUCATION_YEAR) > 2500 + ? new Date(Number(item.START_EDUCATION_YEAR) - 543, 0, 1) + : _null; - let endDate = item.EDUCATION_YEAR - ? Extension.ConvertToDateTimeV2(item.EDUCATION_YEAR) - : _null; - // endDate = endDate ? new Date(endDate, 0, 1) : _null; + // let endDate = item.EDUCATION_YEAR + // ? Extension.ConvertToDateTimeV2(item.EDUCATION_YEAR) + // : _null; + let endDate = + item.EDUCATION_YEAR != "" && Number(item.EDUCATION_YEAR) > 2500 + ? new Date(Number(item.EDUCATION_YEAR) - 543, 0, 1) + : _null; if (item.FLAG_EDUCATION == "1") { const checkData = await this.HR_EDUCATIONRepo.find({ where: { CIT: _item.citizenId, FLAG_EDUCATION: "1" }, @@ -1367,66 +1780,108 @@ export class ImportDataController extends Controller { // .take(BATCH_SIZE) // .getMany(); - await Promise.all( - profiles.map(async (_item) => { - const existingProfile = await this.HR_EDUCATION_EMPRepo.find({ - where: { CIT: _item.citizenId }, - select: [ - "CIT", - "EDUCATION_CODE", - "START_EDUCATION_YEAR", - "EDUCATION_YEAR", - "INSTITUE", - "EDUCATION_SEQ", - ], + for (const _item of profiles) { + const existingProfile = await this.HR_EDUCATION_EMPRepo.find({ + where: { CIT: _item.citizenId }, + // select: [ + // "CIT", + // "EDUCATION_CODE", + // "START_EDUCATION_YEAR", + // "EDUCATION_YEAR", + // "INSTITUE", + // "EDUCATION_SEQ", + // ], + order: { EDUCATION_SEQ: "ASC" }, + }); + + const educationLevel = await this.profileEducationRepo.findOne({ + select: ["id", "level", "profileEmployeeId"], + where: { profileEmployeeId: _item.id }, + order: { level: "DESC" }, + }); + + // educations = await []; + for (const item of existingProfile) { + rowCount++; + const education = new ProfileEducation(); + const educationCode = await this.educationMisRepo.findOne({ + where: { EDUCATION_CODE: item.EDUCATION_CODE }, + }); + const hrMajorCode = await this.HR_MAJOR_CODERepo.findOne({ + where: { MAJOR_CODE: item.MAJOR_CODE }, + }); + const hrFundCourseCode = await this.HR_FUND_COURSE_CODERepo.findOne({ + where: { FUND_COURSE_CODE: item.FUND_COURSE_CODE }, }); - const educationLevel = await this.profileEducationRepo.findOne({ - select: ["id", "level", "profileId"], - where: { profileEmployeeId: _item.id }, - order: { level: "DESC" }, - }); + // let startDate = item.START_EDUCATION_YEAR + // ? Extension.ConvertToDateTimeV2(item.START_EDUCATION_YEAR) + // : _null; + let startDate = + item.START_EDUCATION_YEAR != "" && Number(item.START_EDUCATION_YEAR) > 2500 + ? new Date(Number(item.START_EDUCATION_YEAR) - 543, 0, 1) + : _null; - educations = await []; - await Promise.all( - existingProfile.map(async (item) => { - rowCount++; - const education = new ProfileEducation(); - const educationCode = await this.educationMisRepo.findOne({ - where: { EDUCATION_CODE: item.EDUCATION_CODE }, + // let endDate = item.EDUCATION_YEAR + // ? Extension.ConvertToDateTimeV2(item.EDUCATION_YEAR) + // : _null; + let endDate = + item.EDUCATION_YEAR != "" && Number(item.EDUCATION_YEAR) > 2500 + ? new Date(Number(item.EDUCATION_YEAR) - 543, 0, 1) + : _null; + if (item.FLAG_EDUCATION == "1") { + const checkData = await this.HR_EDUCATIONRepo.find({ + where: { CIT: _item.citizenId, FLAG_EDUCATION: "1" }, + order: { EDUCATION_SEQ: "DESC" }, + }); + if ((checkData.length > 1 && checkData[0].id == item.id) || checkData.length == 1) { + education.isEducation = true; + const findIsHigh = await this.HR_EDUCATIONRepo.findOne({ + where: { CIT: _item.citizenId, FLAG_EDUCATION: "3" }, }); - - let startDate = item.START_EDUCATION_YEAR - ? Extension.ConvertToDateTimeV2(item.START_EDUCATION_YEAR) - : _null; - // startDate = startDate ? new Date(startDate, 0, 1) : _null; - - let endDate = item.EDUCATION_YEAR - ? Extension.ConvertToDateTimeV2(item.EDUCATION_YEAR) - : _null; - // endDate = endDate ? new Date(endDate, 0, 1) : _null; - - education.level = educationLevel == null ? 1 : educationLevel.level + 1; - education.profileEmployeeId = _item.id; - education.degree = educationCode ? educationCode.EDUCATION_NAME : ""; - education.institute = item.INSTITUE; - education.level = item.EDUCATION_SEQ ? _null : Number(item.EDUCATION_SEQ); - education.startDate = startDate; - education.endDate = endDate; - education.createdUserId = request.user.sub; - education.createdFullName = request.user.name; - education.lastUpdateUserId = request.user.sub; - education.lastUpdateFullName = request.user.name; - education.createdAt = new Date(); - education.lastUpdatedAt = new Date(); - // educations.push(education); - console.log(">>>>>>>>>>>>>>>>>>>" + rowCount); - await this.profileEducationRepo.save(education); - }), - ); - // await this.profileEducationRepo.save(educations); - }), - ); + if (findIsHigh == null) { + education.isHigh = true; + } + } + } else if (item.FLAG_EDUCATION == "2") { + } else if (item.FLAG_EDUCATION == "3") { + const checkData = await this.HR_EDUCATIONRepo.find({ + where: { CIT: _item.citizenId, FLAG_EDUCATION: "3" }, + order: { EDUCATION_SEQ: "DESC" }, + }); + if ((checkData.length > 1 && checkData[0].id == item.id) || checkData.length == 1) { + education.isHigh = true; + const findIsEducation = await this.HR_EDUCATIONRepo.findOne({ + where: { CIT: _item.citizenId, FLAG_EDUCATION: "1" }, + }); + if (findIsEducation == null) { + education.isEducation = true; + } + } + } + education.level = educationLevel == null ? 1 : educationLevel.level + 1; + education.profileEmployeeId = _item.id; + education.degree = educationCode ? educationCode.EDUCATION_NAME : _null; + education.field = hrMajorCode ? hrMajorCode.MAJOR_NAME : _null; + education.educationLevel = hrFundCourseCode ? hrFundCourseCode.FUND_COURSE_NAME : _null; + education.educationLevelId = hrFundCourseCode ? hrFundCourseCode.refId : _null; + education.institute = item.INSTITUE; + education.level = item.EDUCATION_SEQ ? Number(item.EDUCATION_SEQ) : _null; + education.startDate = startDate; + education.endDate = endDate; + education.createdUserId = request.user.sub; + education.createdFullName = request.user.name; + education.lastUpdateUserId = request.user.sub; + education.lastUpdateFullName = request.user.name; + education.createdAt = new Date(); + education.lastUpdatedAt = new Date(); + // await educations.push(await education); + console.log(">>>>>>>>>>>>>>>>>>>" + rowCount); + await this.profileEducationRepo.save(await education); + } + // await this.profileEducationRepo.save(educations); + // educations = await []; + } // } // console.log(">>>>>>>>>>>>>>>>>>>" + rowCount); // await this.profileEducationRepo.save(educations); @@ -1751,143 +2206,190 @@ export class ImportDataController extends Controller { // .skip(0) // .take(20) .getManyAndCount(); - // for (var i = 1; i <= total / BATCH_SIZE; i++) { - // const profiles = await AppDataSource.getRepository(ProfileEmployee) - // .createQueryBuilder("profile") - // .orderBy("profile.citizenId", "ASC") - // .skip((i - 1) * BATCH_SIZE) - // .take(BATCH_SIZE) - // .getMany(); - // profileDatas = await []; - await Promise.all( - profiles.map(async (_item) => { - const existingProfile = await this.HR_PERSONAL_EMP_ADDRESSRepo.findOne({ - where: { CIT: _item.citizenId }, + const meta = { + createdUserId: request.user.sub, + createdFullName: request.user.name, + lastUpdateUserId: request.user.sub, + lastUpdateFullName: request.user.name, + createdAt: new Date(), + lastUpdatedAt: new Date(), + }; + for (const _item of profiles) { + const existingProfile = await this.HR_PERSONAL_EMP_ADDRESSRepo.findOne({ + where: { CIT: _item.citizenId }, + }); + + if (!existingProfile) { + continue; + } + let PROVINCE_CODE = Number(existingProfile.PROVINCE_CODE).toString(); + let DISTRICT_CODE = Number(existingProfile.DISTRICT_CODE).toString(); + let AMPHUR_CODE = Number(existingProfile.AMPHUR_CODE).toString(); + let CONTACT_PROVINCE_CODE = Number(existingProfile.CONTACT_PROVINCE_CODE).toString(); + let CONTACT_DISTRICT_CODE = Number(existingProfile.CONTACT_DISTRICT_CODE).toString(); + let CONTACT_AMPHUR_CODE = Number(existingProfile.CONTACT_AMPHUR_CODE).toString(); + rowCount++; + //registration address + if (PROVINCE_CODE) { + let provinceRegis_ = await this.provincsRepo.findOne({ + where: { PROVINCE_CODE: PROVINCE_CODE }, }); - - if (!existingProfile) { - return; - } - - rowCount++; - let provinceRegis_: any = null; - let districtRegis_: any = null; - let subDistrictRegis_: any = null; - let provinceCurr_: any = null; - let districtCurr_: any = null; - let subDistrictCurr_: any = null; - //registration address - if (existingProfile.PROVINCE_CODE) { - provinceRegis_ = await this.provincsRepo.findOne({ - where: { PROVINCE_CODE: existingProfile.PROVINCE_CODE }, - }); - if (provinceRegis_) { - let provinceId = await this.provinceIdRepo.findOne({ - where: { - name: provinceRegis_.PROVINCE_NAME, - }, - }); - _item.registrationProvinceId = provinceId ? provinceId.id : _null; - } - } - if (existingProfile.AMPHUR_CODE && provinceRegis_) { - districtRegis_ = await this.amphurRepo.findOne({ + if (provinceRegis_) { + let provinceId = await this.provinceIdRepo.findOne({ where: { - AMPHUR_CODE: existingProfile.AMPHUR_CODE, - PROVINCE_CODE: provinceRegis_.PROVINCE_CODE, + name: provinceRegis_.PROVINCE_NAME, }, }); - if (districtRegis_) { - let districtId = await this.districtIdRepo.findOne({ + if (provinceId == null) { + provinceId = new Province(); + Object.assign(provinceId, { + ...meta, + name: provinceRegis_.PROVINCE_NAME, + }); + await this.provinceIdRepo.save(provinceId); + } + _item.registrationProvinceId = provinceId ? provinceId.id : _null; + if (AMPHUR_CODE) { + let districtRegis_ = await this.amphurRepo.findOne({ where: { - name: districtRegis_.AMPHUR_NAME, + AMPHUR_CODE: AMPHUR_CODE, + PROVINCE_CODE: provinceRegis_.PROVINCE_CODE, }, }); - _item.registrationDistrictId = districtId ? districtId.id : _null; + if (districtRegis_) { + let districtId = await this.districtIdRepo.findOne({ + where: { + name: districtRegis_.AMPHUR_NAME, + }, + }); + if (districtId == null) { + districtId = new District(); + Object.assign(districtId, { + ...meta, + name: districtRegis_.AMPHUR_NAME, + provinceId: provinceId.id, + }); + await this.provinceIdRepo.save(provinceId); + } + _item.registrationDistrictId = districtId ? districtId.id : _null; + if (DISTRICT_CODE) { + let subDistrictRegis_ = await this.subDistrictRepo.findOne({ + where: { + DISTRICT_CODE: DISTRICT_CODE, + AMPHUR_CODE: districtRegis_.AMPHUR_CODE, + PROVINCE_CODE: provinceRegis_.PROVINCE_CODE, + }, + }); + if (subDistrictRegis_) { + let subDistrictId = await this.subDistrictIdRepo.findOne({ + where: { + name: subDistrictRegis_.DISTRICT_NAME, + }, + }); + if (subDistrictId == null) { + subDistrictId = new SubDistrict(); + Object.assign(subDistrictId, { + ...meta, + name: subDistrictRegis_.DISTRICT_NAME, + zipCode: existingProfile.ZIPCODE, + districtId: districtId.id, + }); + await this.provinceIdRepo.save(provinceId); + } + _item.registrationSubDistrictId = subDistrictId ? subDistrictId.id : _null; + } + } + } } } - if (existingProfile.DISTRICT_CODE && districtRegis_ && provinceRegis_) { - subDistrictRegis_ = await this.subDistrictRepo.findOne({ + } + //current address + if (CONTACT_PROVINCE_CODE) { + let provinceCurr_ = await this.provincsRepo.findOne({ + where: { PROVINCE_CODE: CONTACT_PROVINCE_CODE }, + }); + if (provinceCurr_) { + let provinceId = await this.provinceIdRepo.findOne({ where: { - DISTRICT_CODE: existingProfile.DISTRICT_CODE, - AMPHUR_CODE: districtRegis_.AMPHUR_CODE, - PROVINCE_CODE: provinceRegis_.PROVINCE_CODE, + name: provinceCurr_.PROVINCE_NAME, }, }); - if (subDistrictRegis_) { - let subDistrictId = await this.subDistrictIdRepo.findOne({ + if (provinceId == null) { + provinceId = new Province(); + Object.assign(provinceId, { + ...meta, + name: provinceCurr_.PROVINCE_NAME, + }); + await this.provinceIdRepo.save(provinceId); + } + _item.currentProvinceId = provinceId ? provinceId.id : _null; + if (CONTACT_AMPHUR_CODE) { + let districtCurr_ = await this.amphurRepo.findOne({ where: { - name: subDistrictRegis_.DISTRICT_NAME, + AMPHUR_CODE: CONTACT_AMPHUR_CODE, + PROVINCE_CODE: provinceCurr_.PROVINCE_CODE, }, }); - _item.registrationSubDistrictId = subDistrictId ? subDistrictId.id : _null; + if (districtCurr_) { + let districtId = await this.districtIdRepo.findOne({ + where: { + name: districtCurr_.AMPHUR_NAME, + }, + }); + if (districtId == null) { + districtId = new District(); + Object.assign(districtId, { + ...meta, + name: districtCurr_.AMPHUR_NAME, + provinceId: provinceId.id, + }); + await this.provinceIdRepo.save(provinceId); + } + _item.currentDistrictId = districtId ? districtId.id : _null; + if (CONTACT_DISTRICT_CODE) { + let subDistrictCurr_ = await this.subDistrictRepo.findOne({ + where: { + DISTRICT_CODE: CONTACT_DISTRICT_CODE, + AMPHUR_CODE: districtCurr_.AMPHUR_CODE, + PROVINCE_CODE: provinceCurr_.PROVINCE_CODE, + }, + }); + if (subDistrictCurr_) { + let subDistrictId = await this.subDistrictIdRepo.findOne({ + where: { + name: subDistrictCurr_.DISTRICT_NAME, + }, + }); + if (subDistrictId == null) { + subDistrictId = new SubDistrict(); + Object.assign(subDistrictId, { + ...meta, + name: subDistrictCurr_.DISTRICT_NAME, + zipCode: existingProfile.CONTACT_ZIPCODE, + districtId: districtId.id, + }); + await this.provinceIdRepo.save(provinceId); + } + _item.currentSubDistrictId = subDistrictId ? subDistrictId.id : _null; + } + } + } } } - //current address - if (existingProfile.CONTACT_PROVINCE_CODE) { - provinceCurr_ = await this.provincsRepo.findOne({ - where: { PROVINCE_CODE: existingProfile.CONTACT_PROVINCE_CODE }, - }); - if (provinceCurr_) { - let provinceId = await this.provinceIdRepo.findOne({ - where: { - name: provinceCurr_.PROVINCE_NAME, - }, - }); - _item.currentProvinceId = provinceId ? provinceId.id : _null; - } - } - if (existingProfile.CONTACT_AMPHUR_CODE && provinceCurr_) { - districtCurr_ = await this.amphurRepo.findOne({ - where: { - AMPHUR_CODE: existingProfile.CONTACT_AMPHUR_CODE, - PROVINCE_CODE: provinceCurr_.PROVINCE_CODE, - }, - }); - if (districtCurr_) { - let districtId = await this.districtIdRepo.findOne({ - where: { - name: districtCurr_.AMPHUR_NAME, - }, - }); - _item.currentDistrictId = districtId ? districtId.id : _null; - } - } - if (existingProfile.CONTACT_DISTRICT_CODE && districtCurr_ && provinceCurr_) { - subDistrictCurr_ = await this.subDistrictRepo.findOne({ - where: { - DISTRICT_CODE: existingProfile.CONTACT_DISTRICT_CODE, - AMPHUR_CODE: districtCurr_.AMPHUR_CODE, - PROVINCE_CODE: provinceCurr_.PROVINCE_CODE, - }, - }); - if (subDistrictCurr_) { - let subDistrictId = await this.subDistrictIdRepo.findOne({ - where: { - name: subDistrictCurr_.DISTRICT_NAME, - }, - }); - _item.currentSubDistrictId = subDistrictId ? subDistrictId.id : _null; - } - } - _item.registrationAddress = existingProfile.H_NUMBER; - _item.registrationZipCode = existingProfile.ZIPCODE; - _item.currentAddress = existingProfile.CONTACT_H_NUMBER; - _item.currentZipCode = existingProfile.CONTACT_ZIPCODE; - _item.createdUserId = request.user.sub; - _item.createdFullName = request.user.name; - _item.lastUpdateUserId = request.user.sub; - _item.lastUpdateFullName = request.user.name; - _item.createdAt = new Date(); - _item.lastUpdatedAt = new Date(); - // profileDatas.push(_item); - console.log(">>>>>>>>>>>>>>>>>>>" + rowCount); - await this.profileEmpRepo.save(_item); - }), - ); - // await this.profileEmpRepo.save(profileDatas); - // } - // console.log(">>>>>>>>>>>>>>>>>>>" + rowCount); + } + _item.registrationAddress = existingProfile.H_NUMBER; + _item.registrationZipCode = existingProfile.ZIPCODE; + _item.currentAddress = existingProfile.CONTACT_H_NUMBER; + _item.currentZipCode = existingProfile.CONTACT_ZIPCODE; + _item.createdUserId = request.user.sub; + _item.createdFullName = request.user.name; + _item.lastUpdateUserId = request.user.sub; + _item.lastUpdateFullName = request.user.name; + _item.createdAt = new Date(); + _item.lastUpdatedAt = new Date(); + console.log(">>>>>>>>>>>>>>>>>>>" + rowCount); + await this.profileEmpRepo.save(_item); + } return new HttpSuccess(); } /** @@ -2302,8 +2804,8 @@ export class ImportDataController extends Controller { let type_: any = null; let level_: any = null; const orgRevision = await this.orgRevisionRepo.findOne({ - // where: { orgRevisionIsCurrent: true, orgRevisionIsDraft: false }, - where: { id: "30e594c9-a65b-485e-a4c5-71aa497e6b8a" }, + where: { orgRevisionIsCurrent: false, orgRevisionIsDraft: true }, + // where: { id: "30e594c9-a65b-485e-a4c5-71aa497e6b8a" }, }); if (orgRevision == null) return new HttpSuccess(); for await (const _item of officer) { @@ -2392,7 +2894,9 @@ export class ImportDataController extends Controller { } } } + posMaster.statusReport = "PENDING"; + posMaster.posMasterOrder = 1; posMaster.isCondition = false; posMaster.isStaff = false; posMaster.isDirector = false; @@ -2408,32 +2912,84 @@ export class ImportDataController extends Controller { posMaster.lastUpdateFullName = request.user.name; posMaster.createdAt = new Date(); posMaster.lastUpdatedAt = new Date(); + if (posMaster.orgRootId == null) { + continue; + } await this.posMasterRepo.save(posMaster); posMaster.ancestorDNA = posMaster.id; await this.posMasterRepo.save(posMaster); let position = new Position(); - if (item.MP_CATEGORY) { + var positionType = ""; + var positionLevel = ""; + if (item.MP_CEE == "21") { + positionType = "ทั่วไป"; + positionLevel = "ปฏิบัติงาน"; + } else if (item.MP_CEE == "22") { + positionType = "ทั่วไป"; + positionLevel = "ชำนาญงาน"; + } else if (item.MP_CEE == "23") { + positionType = "ทั่วไป"; + positionLevel = "อาวุโส"; + } else if (item.MP_CEE == "24") { + positionType = "ทั่วไป"; + positionLevel = "อาวุโสเฉพาะสายงานที่กำหนด"; + } else if (item.MP_CEE == "25") { + positionType = "ทั่วไป"; + positionLevel = "ทักษะพิเศษ"; + } else if (item.MP_CEE == "26") { + positionType = "วิชาการ"; + positionLevel = "ปฏิบัติการ"; + } else if (item.MP_CEE == "27") { + positionType = "วิชาการ"; + positionLevel = "ชำนาญการ"; + } else if (item.MP_CEE == "28") { + positionType = "วิชาการ"; + positionLevel = "ชำนาญการพิเศษ"; + } else if (item.MP_CEE == "29") { + positionType = "วิชาการ"; + positionLevel = "เชี่ยวชาญ"; + } else if (item.MP_CEE == "30") { + positionType = "วิชาการ"; + positionLevel = "ทรงคุณวุฒิ"; + } else if (item.MP_CEE == "31") { + positionType = "วิชาการ"; + positionLevel = "ทรงคุณวุฒิเฉพาะสายงานที่กำหนด"; + } else if (item.MP_CEE == "32") { + positionType = "อำนวยการ"; + positionLevel = "ต้น"; + } else if (item.MP_CEE == "33") { + positionType = "อำนวยการ"; + positionLevel = "สูง"; + } else if (item.MP_CEE == "34") { + positionType = "บริหาร"; + positionLevel = "ต้น"; + } else if (item.MP_CEE == "35") { + positionType = "บริหาร"; + positionLevel = "สูง"; + } + if (positionType) { type_ = await this.posTypeRepo.findOne({ - where: { posTypeName: item.MP_CATEGORY }, + where: { posTypeName: positionType }, }); } - if (item.MP_LEVEL) { + if (positionLevel) { if (type_ == null) { level_ = await this.posLevelRepo.findOne({ where: { - posLevelName: item.MP_LEVEL, + posLevelName: positionLevel, }, }); } else { level_ = await this.posLevelRepo.findOne({ where: { - posLevelName: item.MP_LEVEL, + posLevelName: positionLevel, posTypeId: type_.id, }, }); } } + position.posMasterId = posMaster.id; position.isSpecial = false; position.positionIsSelected = true; @@ -2470,13 +3026,238 @@ export class ImportDataController extends Controller { position.posExecutiveId = posExecutive == null ? _null : posExecutive.id; position.positionName = item.WORK_LINE_NAME == "" ? _null : item.WORK_LINE_NAME; position.posTypeId = - type_ != null && type_.posTypeName == item.MP_CATEGORY && type_ ? type_.id : null; + type_ != null && type_.posTypeName == positionType && type_ ? type_.id : null; position.posLevelId = - level_ != null && level_.posLevelName == item.MP_LEVEL && level_ ? level_.id : null; + level_ != null && level_.posLevelName == positionLevel && level_ ? level_.id : null; + if (position.posTypeId == null || position.posLevelId == null) { + await this.posMasterRepo.delete({ id: posMaster.id }); + continue; + } await this.positionRepo.save(position); } return new HttpSuccess(); } + /** + * @summary ทะเบียนประวัติ ลูกจ้าง + */ + @Post("mapposition-Employee") + async MapPositionEmployee(@Request() request: { user: Record }) { + const employee = await AppDataSource.getRepository(ProfileEmployee) + .createQueryBuilder("profile") + .leftJoinAndSelect("profile.next_holders", "posMaster") + // .where({citizenId: "1720700018869"}) + .where("posMaster.id IS NULL") + .getMany(); + let rowCount = 0; + let _null: any = null; + let type_: any = null; + let level_: any = null; + const orgRevision = await this.orgRevisionRepo.findOne({ + where: { orgRevisionIsCurrent: false, orgRevisionIsDraft: true }, + // where: { id: "30e594c9-a65b-485e-a4c5-71aa497e6b8a" }, + }); + if (orgRevision == null) return new HttpSuccess(); + for await (const _item of employee) { + rowCount++; + console.log(rowCount); + const item = await AppDataSource.getRepository(EMPLOYEE) + .createQueryBuilder("EMPLOYEE") + .where({ CIT: _item.citizenId }) + .getOne(); + + if (item == null) { + continue; + } + + item.DEPARTMENT_CODE = item.DEPARTMENT_CODE.toString().padStart(2, "0"); + item.DIVISION_CODE = item.DIVISION_CODE.toString().padStart(2, "0"); + item.SECTION_CODE = item.SECTION_CODE.toString().padStart(2, "0"); + item.JOB_CODE = item.JOB_CODE.toString().padStart(2, "0"); + let posMaster = new EmployeePosMaster(); + let orgRoot = (await this.orgRootRepo.findOne({ + where: { + DEPARTMENT_CODE: item.DEPARTMENT_CODE, + DIVISION_CODE: item.DIVISION_CODE, + SECTION_CODE: item.SECTION_CODE, + JOB_CODE: item.JOB_CODE, + orgRevisionId: orgRevision.id, + }, + })) as OrgRoot; + if (orgRoot != null) { + posMaster.orgRootId = orgRoot.id ?? _null; + } else { + let orgChild1 = await this.orgChild1Repo.findOne({ + where: { + DEPARTMENT_CODE: item.DEPARTMENT_CODE, + DIVISION_CODE: item.DIVISION_CODE, + SECTION_CODE: item.SECTION_CODE, + JOB_CODE: item.JOB_CODE, + orgRevisionId: orgRevision.id, + }, + }); + if (orgChild1 != null) { + posMaster.orgRootId = orgChild1.orgRootId ?? _null; + posMaster.orgChild1Id = orgChild1.id ?? _null; + } else { + let orgChild2 = await this.orgChild2Repo.findOne({ + where: { + DEPARTMENT_CODE: item.DEPARTMENT_CODE, + DIVISION_CODE: item.DIVISION_CODE, + SECTION_CODE: item.SECTION_CODE, + JOB_CODE: item.JOB_CODE, + orgRevisionId: orgRevision.id, + }, + }); + if (orgChild2 != null) { + posMaster.orgRootId = orgChild2.orgRootId ?? _null; + posMaster.orgChild1Id = orgChild2.orgChild1Id ?? _null; + posMaster.orgChild2Id = orgChild2.id ?? _null; + } else { + let orgChild3 = await this.orgChild3Repo.findOne({ + where: { + DEPARTMENT_CODE: item.DEPARTMENT_CODE, + DIVISION_CODE: item.DIVISION_CODE, + SECTION_CODE: item.SECTION_CODE, + JOB_CODE: item.JOB_CODE, + orgRevisionId: orgRevision.id, + }, + }); + if (orgChild3 != null) { + posMaster.orgRootId = orgChild3.orgRootId ?? _null; + posMaster.orgChild1Id = orgChild3.orgChild1Id ?? _null; + posMaster.orgChild2Id = orgChild3.orgChild2Id ?? _null; + posMaster.orgChild3Id = orgChild3.id ?? _null; + } else { + let orgChild4 = await this.orgChild4Repo.findOne({ + where: { + DEPARTMENT_CODE: item.DEPARTMENT_CODE, + DIVISION_CODE: item.DIVISION_CODE, + SECTION_CODE: item.SECTION_CODE, + JOB_CODE: item.JOB_CODE, + orgRevisionId: orgRevision.id, + }, + }); + if (orgChild4 != null) { + posMaster.orgRootId = orgChild4.id ?? _null; + posMaster.orgChild1Id = orgChild4.id ?? _null; + posMaster.orgChild2Id = orgChild4.id ?? _null; + posMaster.orgChild3Id = orgChild4.id ?? _null; + posMaster.orgChild4Id = orgChild4.id ?? _null; + } + } + } + } + } + + // posMaster.statusReport = "PENDING"; + posMaster.posMasterOrder = 1; + // posMaster.isCondition = false; + posMaster.isStaff = false; + posMaster.isDirector = false; + posMaster.isSit = false; + posMaster.next_holderId = _item.id; + posMaster.posMasterNo = + item.POS_NUM_CODE == "" || item.POS_NUM_CODE == null ? _null : Number(item.POS_NUM_CODE); + posMaster.orgRevisionId = orgRevision.id; + posMaster.posMasterCreatedAt = new Date(); + posMaster.createdUserId = request.user.sub; + posMaster.createdFullName = request.user.name; + posMaster.lastUpdateUserId = request.user.sub; + posMaster.lastUpdateFullName = request.user.name; + posMaster.createdAt = new Date(); + posMaster.lastUpdatedAt = new Date(); + if (posMaster.orgRootId == null) { + continue; + } + await this.posMasterEmpRepo.save(posMaster); + posMaster.ancestorDNA = posMaster.id; + await this.posMasterEmpRepo.save(posMaster); + + let position = new EmployeePosition(); + var positionType = ""; + var positionLevel = + item.LEVEL_NAME == "" || item.LEVEL_NAME == null ? 0 : Number(item.LEVEL_NAME); + if (item.CATEGORY_SAL_CODE == "11") { + positionType = "บริการพื้นฐาน"; + } else if (item.CATEGORY_SAL_CODE == "12") { + positionType = "สนับสนุน"; + } else if (item.CATEGORY_SAL_CODE == "13") { + positionType = "ช่าง"; + } + if (positionType) { + type_ = await this.posTypeEmpRepo.findOne({ + where: { posTypeName: positionType }, + }); + } + if (positionType) { + type_ = await this.posTypeEmpRepo.findOne({ + where: { posTypeName: positionType }, + }); + } + if (positionLevel) { + if (type_ == null) { + level_ = await this.posLevelEmpRepo.findOne({ + where: { + posLevelName: positionLevel, + }, + }); + } else { + level_ = await this.posLevelEmpRepo.findOne({ + where: { + posLevelName: positionLevel, + posTypeId: type_.id, + }, + }); + } + } + + position.posMasterId = posMaster.id; + // position.isSpecial = false; + position.positionIsSelected = true; + position.createdUserId = request.user.sub; + position.createdFullName = request.user.name; + position.lastUpdateUserId = request.user.sub; + position.lastUpdateFullName = request.user.name; + position.createdAt = new Date(); + position.lastUpdatedAt = new Date(); + + // const posExecutive = await this.posExecutiveRepo.findOne({ + // where: { + // posExecutiveName: item.ADMIN_NAME, + // }, + // }); + // if (posExecutive == null && item.ADMIN_NAME != "" && item.ADMIN_NAME != null) { + // const posExecutiveOrder = await this.posExecutiveRepo.findOne({ + // where: { posExecutivePriority: Not(IsNull()) }, + // order: { posExecutivePriority: "DESC" }, + // }); + // let posExecutive = new PosExecutive(); + + // posExecutive.posExecutivePriority = + // posExecutiveOrder == null ? _null : posExecutiveOrder.posExecutivePriority + 1; + // posExecutive.posExecutiveName = item.ADMIN_NAME; + // posExecutive.createdUserId = request.user.sub; + // posExecutive.createdFullName = request.user.name; + // posExecutive.lastUpdateUserId = request.user.sub; + // posExecutive.lastUpdateFullName = request.user.name; + // posExecutive.createdAt = new Date(); + // posExecutive.lastUpdatedAt = new Date(); + // await this.posExecutiveRepo.save(posExecutive); + // } + // position.posExecutiveId = posExecutive == null ? _null : posExecutive.id; + position.positionName = item.WORK_LINE_NAME == "" ? _null : item.WORK_LINE_NAME.split(" ")[0]; + position.posTypeId = + type_ != null && type_.posTypeName == positionType && type_ ? type_.id : null; + position.posLevelId = + level_ != null && level_.posLevelName == positionLevel && level_ ? level_.id : null; + if (position.posTypeId == null || position.posLevelId == null) { + await this.posMasterEmpRepo.delete({ id: posMaster.id }); + continue; + } + await this.positionEmpRepo.save(position); + } + return new HttpSuccess(); + } /** * @summary เงินเดือน ข้าราชการ @@ -2892,4 +3673,225 @@ export class ImportDataController extends Controller { data: { data: result }, }); } + + /** + * @summary วินัย ข้าราชการ + */ + @Post("uploadProfileDiscipline-Officer") + async UploadFileSQLDiscipline(@Request() request: { user: Record }) { + let rowCount = 0; + let _null: any = null; + + const [profiles, total] = await AppDataSource.getRepository(Profile) + .createQueryBuilder("profile") + .select(["profile.citizenId", "profile.id"]) + .orderBy("profile.citizenId", "ASC") + .getManyAndCount(); + + for (const _item of profiles) { + const existingProfile = await this.HR_DISCIPLINERepo.find({ + where: { CIT: _item.citizenId }, + }); + + for (const item of existingProfile) { + let CREATE_DATE = ""; + if (item.CREATE_DATE) { + const [datePart] = item.CREATE_DATE.split(" "); + const [day, month, year] = datePart.split("/"); + CREATE_DATE = `${year}-${month.padStart(2, "0")}-${day.padStart(2, "0")}`; + } + rowCount++; + const discipline = new ProfileDiscipline(); + discipline.profileId = _item.id; + discipline.detail = item.REASON_FLAW; + discipline.date = CREATE_DATE == "" ? _null : new Date(CREATE_DATE); + discipline.createdUserId = request.user.sub; + discipline.createdFullName = request.user.name; + discipline.lastUpdateUserId = request.user.sub; + discipline.lastUpdateFullName = request.user.name; + discipline.createdAt = new Date(); + discipline.lastUpdatedAt = new Date(); + console.log(">>>>>>>>>>>>>>>>>>>" + rowCount); + await this.profileDisciplineRepo.save(await discipline); + } + } + return new HttpSuccess(); + } + + /** + * @summary วินัย ลูกจ้างประจำ + */ + @Post("uploadProfileDiscipline-Employee") + async UploadFileSQLDisciplineEmp(@Request() request: { user: Record }) { + let rowCount = 0; + let _null: any = null; + + const [profiles, total] = await AppDataSource.getRepository(ProfileEmployee) + .createQueryBuilder("profile") + .select(["profile.citizenId", "profile.id"]) + .orderBy("profile.citizenId", "ASC") + .getManyAndCount(); + + for (const _item of profiles) { + const existingProfile = await this.HR_DISCIPLINE_EMPRepo.find({ + where: { CIT: _item.citizenId }, + }); + + for (const item of existingProfile) { + let CREATE_DATE = ""; + if (item.CREATE_DATE) { + const [datePart] = item.CREATE_DATE.split(" "); + const [day, month, year] = datePart.split("/"); + CREATE_DATE = `${year}-${month.padStart(2, "0")}-${day.padStart(2, "0")}`; + } + rowCount++; + const discipline = new ProfileDiscipline(); + discipline.profileEmployeeId = _item.id; + discipline.detail = item.REASON_FLAW; + discipline.date = CREATE_DATE == "" ? _null : new Date(CREATE_DATE); + discipline.createdUserId = request.user.sub; + discipline.createdFullName = request.user.name; + discipline.lastUpdateUserId = request.user.sub; + discipline.lastUpdateFullName = request.user.name; + discipline.createdAt = new Date(); + discipline.lastUpdatedAt = new Date(); + console.log(">>>>>>>>>>>>>>>>>>>" + rowCount); + await this.profileDisciplineRepo.save(await discipline); + } + } + return new HttpSuccess(); + } + + /** + * @summary เครื่องราช ข้าราชการ + */ + @Post("uploadProfileInsignia-Officer") + async UploadFileSQLInsignia(@Request() request: { user: Record }) { + console.log(">>>>>>>>>>>>>>>>>>>"); + let rowCount = 0; + let _null: any = null; + + const [profiles, total] = await AppDataSource.getRepository(Profile) + .createQueryBuilder("profile") + .select(["profile.citizenId", "profile.id"]) + .orderBy("profile.citizenId", "ASC") + .getManyAndCount(); + + for (const _item of profiles) { + const existingProfile = await this.HR_INSIGNIARepo.find({ + where: { CIT: _item.citizenId }, + }); + + for (const item of existingProfile) { + let DECORATION_DATE = ""; + if (item.DECORATION_DATE) { + const [datePart] = item.DECORATION_DATE.split(" "); + const [day, month, year] = datePart.split("/"); + DECORATION_DATE = `${year}-${month.padStart(2, "0")}-${day.padStart(2, "0")}`; + } + let PERMISSION_DATE = ""; + if (item.PERMISSION_DATE) { + const [datePart] = item.PERMISSION_DATE.split(" "); + const [day, month, year] = datePart.split("/"); + PERMISSION_DATE = `${year}-${month.padStart(2, "0")}-${day.padStart(2, "0")}`; + } + let CREATE_DATE = ""; + let _year = null; + if (item.CREATE_DATE) { + const [datePart] = item.CREATE_DATE.split(" "); + const [day, month, year] = datePart.split("/"); + CREATE_DATE = `${year}-${month.padStart(2, "0")}-${day.padStart(2, "0")}`; + _year = year; + } + rowCount++; + const insignia = new ProfileInsignia(); + insignia.profileId = _item.id; + insignia.year = _year == null ? _null : Number(_year); + insignia.volume = item.BOOK; + insignia.section = item.PART; + insignia.page = item.PAGE; + insignia.receiveDate = PERMISSION_DATE == "" ? _null : new Date(PERMISSION_DATE); + insignia.dateAnnounce = DECORATION_DATE == "" ? _null : new Date(DECORATION_DATE); + insignia.issue = item.ISSUE; + const insigniaMeta = await this.insigniaRepo.findOne({ + where: { name: item.DECORATIONS_NAME }, + }); + if (insigniaMeta != null) { + insignia.insigniaId = insigniaMeta.id; + } + insignia.createdUserId = request.user.sub; + insignia.createdFullName = request.user.name; + insignia.lastUpdateUserId = request.user.sub; + insignia.lastUpdateFullName = request.user.name; + insignia.createdAt = new Date(); + insignia.lastUpdatedAt = new Date(); + console.log(">>>>>>>>>>>>>>>>>>>" + rowCount); + await this.profileInsigniaRepo.save(await insignia); + } + } + return new HttpSuccess(); + } + + /** + * @summary เครื่องราช ลูกจ้างประจำ + */ + @Post("uploadProfileInsignia-Employee") + async UploadFileSQLInsigniaEmp(@Request() request: { user: Record }) { + let rowCount = 0; + let _null: any = null; + + const [profiles, total] = await AppDataSource.getRepository(ProfileEmployee) + .createQueryBuilder("profile") + .select(["profile.citizenId", "profile.id"]) + .orderBy("profile.citizenId", "ASC") + .getManyAndCount(); + + for (const _item of profiles) { + const existingProfile = await this.HR_INSIGNIA_EMPRepo.find({ + where: { CIT: _item.citizenId }, + }); + + for (const item of existingProfile) { + let DECORATION_DATE = ""; + if (item.DECORATION_DATE) { + const [datePart] = item.DECORATION_DATE.split(" "); + const [day, month, year] = datePart.split("/"); + DECORATION_DATE = `${year}-${month.padStart(2, "0")}-${day.padStart(2, "0")}`; + } + let CREATE_DATE = ""; + let _year = null; + if (item.CREATE_DATE) { + const [datePart] = item.CREATE_DATE.split(" "); + const [day, month, year] = datePart.split("/"); + CREATE_DATE = `${year}-${month.padStart(2, "0")}-${day.padStart(2, "0")}`; + _year = year; + } + rowCount++; + const insignia = new ProfileInsignia(); + insignia.profileEmployeeId = _item.id; + insignia.year = _year == null ? _null : Number(_year); + insignia.volume = item.BOOK; + insignia.section = item.PART; + insignia.page = item.PAGE; + insignia.receiveDate = CREATE_DATE == "" ? _null : new Date(CREATE_DATE); + insignia.dateAnnounce = DECORATION_DATE == "" ? _null : new Date(DECORATION_DATE); + insignia.issue = item.ISSUE; + const insigniaMeta = await this.insigniaRepo.findOne({ + where: { name: item.DECORATIONS_NAME }, + }); + if (insigniaMeta != null) { + insignia.insigniaId = insigniaMeta.id; + } + insignia.createdUserId = request.user.sub; + insignia.createdFullName = request.user.name; + insignia.lastUpdateUserId = request.user.sub; + insignia.lastUpdateFullName = request.user.name; + insignia.createdAt = new Date(); + insignia.lastUpdatedAt = new Date(); + console.log(">>>>>>>>>>>>>>>>>>>" + rowCount); + await this.profileInsigniaRepo.save(await insignia); + } + } + return new HttpSuccess(); + } } diff --git a/src/entities/EMPLOYEE.ts b/src/entities/EMPLOYEE.ts new file mode 100644 index 00000000..a20b6f65 --- /dev/null +++ b/src/entities/EMPLOYEE.ts @@ -0,0 +1,189 @@ +import { Entity, Column, PrimaryGeneratedColumn } from "typeorm"; + +@Entity("EMPLOYEE") +export class EMPLOYEE { + @PrimaryGeneratedColumn() + id!: number; + + // @Column({ + // nullable: true, + // type: "text", + // default: null, + // }) + // RET_YEAR: string; + + @Column({ + nullable: true, + type: "text", + default: null, + }) + ID: string; + + @Column({ + nullable: true, + type: "text", + default: null, + }) + CIT: string; + + // @Column({ + // nullable: true, + // type: "text", + // default: null, + // }) + // MP_CATEGORY: string; + + // @Column({ + // nullable: true, + // type: "text", + // default: null, + // }) + // MP_LEVEL: string; + + @Column({ + nullable: true, + type: "text", + default: null, + }) + BORN: string; + + @Column({ + nullable: true, + type: "text", + default: null, + }) + RANK_NAME: string; + + @Column({ + nullable: true, + type: "text", + default: null, + }) + FNAME: string; + + @Column({ + nullable: true, + type: "text", + default: null, + }) + LNAME: string; + + @Column({ + nullable: true, + type: "text", + default: null, + }) + BEGIN_ENTRY_DATE: string; + + @Column({ + nullable: true, + type: "text", + default: null, + }) + SEX: string; + + @Column({ + nullable: true, + type: "text", + default: null, + }) + WORK_LINE_NAME: string; + + @Column({ + nullable: true, + type: "text", + default: null, + }) + SALARY: string; + + @Column({ + nullable: true, + type: "text", + default: null, + }) + DEPARTMENT_NAME: string; + + @Column({ + nullable: true, + type: "text", + default: null, + }) + DEPARTMENT_CODE: string; + + @Column({ + nullable: true, + type: "text", + default: null, + }) + DIVISION_NAME: string; + + @Column({ + nullable: true, + type: "text", + default: null, + }) + DIVISION_CODE: string; + + @Column({ + nullable: true, + type: "text", + default: null, + }) + SECTION_NAME: string; + + @Column({ + nullable: true, + type: "text", + default: null, + }) + SECTION_CODE: string; + + @Column({ + nullable: true, + type: "text", + default: null, + }) + JOB_NAME: string; + + @Column({ + nullable: true, + type: "text", + default: null, + }) + JOB_CODE: string; + + @Column({ + nullable: true, + type: "text", + default: null, + }) + POS_NUM_CODE: string; + + @Column({ + nullable: true, + type: "text", + default: null, + }) + POS_NUM_NAME: string; + + @Column({ + nullable: true, + type: "text", + default: null, + }) + CATEGORY_SAL_CODE: string; + + @Column({ + nullable: true, + type: "text", + default: null, + }) + SALARY_LEVEL_CODE: string; + + @Column({ + nullable: true, + type: "text", + default: null, + }) + LEVEL_NAME: string; +} diff --git a/src/entities/HR_DISCIPLINE.ts b/src/entities/HR_DISCIPLINE.ts new file mode 100644 index 00000000..28f6f521 --- /dev/null +++ b/src/entities/HR_DISCIPLINE.ts @@ -0,0 +1,27 @@ +import { Entity, Column, PrimaryGeneratedColumn } from "typeorm"; + +@Entity("HR_DISCIPLINE") +export class HR_DISCIPLINE { + @Column({ + nullable: true, + type: "text", + default: null, + }) + CIT: string; + @PrimaryGeneratedColumn() + id!: number; + + @Column({ + nullable: true, + type: "text", + default: null, + }) + REASON_FLAW: string; + + @Column({ + nullable: true, + type: "text", + default: null, + }) + CREATE_DATE: string; +} diff --git a/src/entities/HR_DISCIPLINE_EMP.ts b/src/entities/HR_DISCIPLINE_EMP.ts new file mode 100644 index 00000000..f21ce754 --- /dev/null +++ b/src/entities/HR_DISCIPLINE_EMP.ts @@ -0,0 +1,27 @@ +import { Entity, Column, PrimaryGeneratedColumn } from "typeorm"; + +@Entity("HR_DISCIPLINE_EMP") +export class HR_DISCIPLINE_EMP { + @Column({ + nullable: true, + type: "text", + default: null, + }) + CIT: string; + @PrimaryGeneratedColumn() + id!: number; + + @Column({ + nullable: true, + type: "text", + default: null, + }) + REASON_FLAW: string; + + @Column({ + nullable: true, + type: "text", + default: null, + }) + CREATE_DATE: string; +} diff --git a/src/entities/HR_EDUCATION_EMP.ts b/src/entities/HR_EDUCATION_EMP.ts index bec7fed0..143189c7 100644 --- a/src/entities/HR_EDUCATION_EMP.ts +++ b/src/entities/HR_EDUCATION_EMP.ts @@ -52,4 +52,25 @@ export class HR_EDUCATION_EMP { default: null, }) EDUCATION_SEQ: string; + + @Column({ + nullable: true, + type: "text", + default: null, + }) + FUND_COURSE_CODE: string; + + @Column({ + nullable: true, + type: "text", + default: null, + }) + MAJOR_CODE: string; + + @Column({ + nullable: true, + type: "text", + default: null, + }) + FLAG_EDUCATION: string; } diff --git a/src/entities/HR_INSIGNIA.ts b/src/entities/HR_INSIGNIA.ts new file mode 100644 index 00000000..11eeeb01 --- /dev/null +++ b/src/entities/HR_INSIGNIA.ts @@ -0,0 +1,69 @@ +import { Entity, Column, PrimaryGeneratedColumn } from "typeorm"; + +@Entity("HR_INSIGNIA") +export class HR_INSIGNIA { + @Column({ + nullable: true, + type: "text", + default: null, + }) + CIT: string; + @PrimaryGeneratedColumn() + id!: number; + + @Column({ + nullable: true, + type: "text", + default: null, + }) + DECORATION_DATE: string; + + @Column({ + nullable: true, + type: "text", + default: null, + }) + CREATE_DATE: string; + + @Column({ + nullable: true, + type: "text", + default: null, + }) + PERMISSION_DATE: string; + + @Column({ + nullable: true, + type: "text", + default: null, + }) + BOOK: string; + + @Column({ + nullable: true, + type: "text", + default: null, + }) + PART: string; + + @Column({ + nullable: true, + type: "text", + default: null, + }) + PAGE: string; + + @Column({ + nullable: true, + type: "text", + default: null, + }) + ISSUE: string; + + @Column({ + nullable: true, + type: "text", + default: null, + }) + DECORATIONS_NAME: string; +} diff --git a/src/entities/HR_INSIGNIA_EMP.ts b/src/entities/HR_INSIGNIA_EMP.ts new file mode 100644 index 00000000..37551cd9 --- /dev/null +++ b/src/entities/HR_INSIGNIA_EMP.ts @@ -0,0 +1,62 @@ +import { Entity, Column, PrimaryGeneratedColumn } from "typeorm"; + +@Entity("HR_INSIGNIA_EMP") +export class HR_INSIGNIA_EMP { + @Column({ + nullable: true, + type: "text", + default: null, + }) + CIT: string; + @PrimaryGeneratedColumn() + id!: number; + + @Column({ + nullable: true, + type: "text", + default: null, + }) + DECORATION_DATE: string; + + @Column({ + nullable: true, + type: "text", + default: null, + }) + CREATE_DATE: string; + + @Column({ + nullable: true, + type: "text", + default: null, + }) + BOOK: string; + + @Column({ + nullable: true, + type: "text", + default: null, + }) + PART: string; + + @Column({ + nullable: true, + type: "text", + default: null, + }) + PAGE: string; + + @Column({ + nullable: true, + type: "text", + default: null, + }) + ISSUE: string; + + @Column({ + nullable: true, + type: "text", + default: null, + }) + DECORATIONS_NAME: string; +} diff --git a/src/entities/HR_POSITION_EMPLOYEE.ts b/src/entities/HR_POSITION_EMPLOYEE.ts new file mode 100644 index 00000000..08eeced0 --- /dev/null +++ b/src/entities/HR_POSITION_EMPLOYEE.ts @@ -0,0 +1,191 @@ +import { Entity, Column, PrimaryGeneratedColumn } from "typeorm"; + +@Entity("HR_POSITION_EMPLOYEE") +export class HR_POSITION_EMPLOYEE { + @PrimaryGeneratedColumn() + id!: number; + + @Column({ + nullable: true, + type: "text", + default: null, + }) + CIT: string; + + @Column({ + nullable: true, + type: "text", + default: null, + }) + FLAG_PERSON_TYPE: string; + + @Column({ + nullable: true, + type: "text", + default: null, + }) + ORDER_MOVE_POSITION: number; + + @Column({ + nullable: true, + type: "text", + default: null, + }) + POS_NUM_CODE_SIT: string; + + @Column({ + nullable: true, + type: "text", + default: null, + }) + POS_NUM_CODE_SIT_ABB: string; + + @Column({ + nullable: true, + default: null, + }) + MP_COMMAND_NUM: number; + + @Column({ + nullable: true, + default: null, + }) + CUR_YEAR: number; + + @Column({ + nullable: true, + default: null, + }) + MP_COMMAND_DATE: string; + + @Column({ + nullable: true, + default: null, + }) + MP_POS_DATE: string; + + @Column({ + nullable: true, + type: "text", + default: null, + }) + FLAG_TO_NAME_CODE: string; + + @Column({ + nullable: true, + type: "text", + default: null, + }) + FLAG_TO_NAME: string; + + @Column({ + nullable: true, + type: "text", + default: null, + }) + POS_NUM_NAME: string; + + @Column({ + nullable: true, + type: "text", + default: null, + }) + POS_NUM_CODE: string; + + @Column({ + nullable: true, + type: "text", + default: null, + }) + WORK_LINE_NAME: string; + + // @Column({ + // nullable: true, + // type: "text", + // default: null, + // }) + // MP_CEE: string; + + @Column({ + nullable: true, + type: "text", + default: null, + }) + JOB_NAME: string; + + @Column({ + nullable: true, + type: "text", + default: null, + }) + SECTION_NAME: string; + + @Column({ + nullable: true, + type: "text", + default: null, + }) + DIVISION_NAME: string; + + @Column({ + nullable: true, + type: "text", + default: null, + }) + DEPARTMENT_CODE: string; + + @Column({ + nullable: true, + type: "text", + default: null, + }) + DEPARTMENT_NAME: string; + + // @Column({ + // nullable: true, + // type: "text", + // default: null, + // }) + // ADMIN_NAME: string; + + @Column({ + nullable: true, + default: null, + }) + SALARY: number; + + @Column({ + nullable: true, + type: "text", + default: null, + }) + REMARK: string; + + // @Column({ + // nullable: true, + // type: "text", + // default: null, + // }) + // SAL_POS_AMOUNT_1: string; + + // @Column({ + // nullable: true, + // type: "text", + // default: null, + // }) + // SAL_POS_AMOUNT_2: string; + + @Column({ + nullable: true, + type: "text", + default: null, + }) + SPECIAL_AMT: string; + + @Column({ + nullable: true, + type: "text", + default: null, + }) + CATEGORY_SAL_CODE: string; +} diff --git a/src/entities/HR_POSITION_OFFICER.ts b/src/entities/HR_POSITION_OFFICER.ts index 0f57a9f8..58ba959f 100644 --- a/src/entities/HR_POSITION_OFFICER.ts +++ b/src/entities/HR_POSITION_OFFICER.ts @@ -5,6 +5,27 @@ export class HR_POSITION_OFFICER { @PrimaryGeneratedColumn() id!: number; + @Column({ + nullable: true, + type: "text", + default: null, + }) + CIT: string; + + @Column({ + nullable: true, + type: "text", + default: null, + }) + FLAG_PERSON_TYPE: string; + + @Column({ + nullable: true, + type: "text", + default: null, + }) + ORDER_MOVE_POSITION: number; + @Column({ nullable: true, type: "text", @@ -18,4 +39,146 @@ export class HR_POSITION_OFFICER { default: null, }) POS_NUM_CODE_SIT_ABB: string; + + @Column({ + nullable: true, + default: null, + }) + MP_COMMAND_NUM: number; + + @Column({ + nullable: true, + default: null, + }) + CUR_YEAR: number; + + @Column({ + nullable: true, + default: null, + }) + MP_COMMAND_DATE: string; + + @Column({ + nullable: true, + default: null, + }) + MP_POS_DATE: string; + + @Column({ + nullable: true, + type: "text", + default: null, + }) + FLAG_TO_NAME_CODE: string; + + @Column({ + nullable: true, + type: "text", + default: null, + }) + FLAG_TO_NAME: string; + + @Column({ + nullable: true, + type: "text", + default: null, + }) + POS_NUM_NAME: string; + + @Column({ + nullable: true, + type: "text", + default: null, + }) + POS_NUM_CODE: string; + + @Column({ + nullable: true, + type: "text", + default: null, + }) + WORK_LINE_NAME: string; + + @Column({ + nullable: true, + type: "text", + default: null, + }) + MP_CEE: string; + + @Column({ + nullable: true, + type: "text", + default: null, + }) + JOB_NAME: string; + + @Column({ + nullable: true, + type: "text", + default: null, + }) + SECTION_NAME: string; + + @Column({ + nullable: true, + type: "text", + default: null, + }) + DIVISION_NAME: string; + + @Column({ + nullable: true, + type: "text", + default: null, + }) + DEPARTMENT_CODE: string; + + @Column({ + nullable: true, + type: "text", + default: null, + }) + DEPARTMENT_NAME: string; + + @Column({ + nullable: true, + type: "text", + default: null, + }) + ADMIN_NAME: string; + + @Column({ + nullable: true, + default: null, + }) + SALARY: number; + + @Column({ + nullable: true, + type: "text", + default: null, + }) + REMARK: string; + + @Column({ + nullable: true, + type: "text", + default: null, + }) + SAL_POS_AMOUNT_1: string; + + @Column({ + nullable: true, + type: "text", + default: null, + }) + SAL_POS_AMOUNT_2: string; + + @Column({ + nullable: true, + type: "text", + default: null, + }) + SPECIAL_AMT: string; } diff --git a/src/entities/OFFICER.ts b/src/entities/OFFICER.ts index 87ce4739..36346b38 100644 --- a/src/entities/OFFICER.ts +++ b/src/entities/OFFICER.ts @@ -5,12 +5,12 @@ export class OFFICER { @PrimaryGeneratedColumn() id!: number; - // @Column({ - // nullable: true, - // type: "text", - // default: null, - // }) - // RET_YEAR: string; + @Column({ + nullable: true, + type: "text", + default: null, + }) + MP_CEE: string; @Column({ nullable: true,