2024-10-18 11:33:04 +07:00
import { Controller , Post , Route , Security , Tags , Request , UploadedFile } from "tsoa" ;
2024-06-06 11:15:26 +07:00
import { AppDataSource } from "../database/data-source" ;
2025-03-17 15:42:48 +07:00
import { In , IsNull , LessThanOrEqual , Not } from "typeorm" ;
2024-06-06 11:15:26 +07:00
import HttpSuccess from "../interfaces/http-success" ;
import { UseInterceptors } from "@nestjs/common" ;
2024-06-10 17:11:54 +07:00
import { Profile } from "../entities/Profile" ;
2024-07-26 14:41:41 +07:00
import { ProfileEmployee } from "../entities/ProfileEmployee" ;
2024-06-10 17:11:54 +07:00
import { ProfileSalary } from "../entities/ProfileSalary" ;
import { ProfileFamilyCouple } from "../entities/ProfileFamilyCouple" ;
import { ProfileFamilyMother } from "../entities/ProfileFamilyMother" ;
import { ProfileFamilyFather } from "../entities/ProfileFamilyFather" ;
2024-07-26 14:41:41 +07:00
import { ProfileEducation } from "../entities/ProfileEducation" ;
2024-06-12 14:44:18 +07:00
import { PosLevel } from "../entities/PosLevel" ;
import { PosType } from "../entities/PosType" ;
2024-07-26 14:41:41 +07:00
import { FileInterceptor } from "@nestjs/platform-express" ;
import * as xlsx from "xlsx" ;
2024-07-25 16:20:48 +07:00
import Extension from "../interfaces/extension" ;
2024-10-18 11:33:04 +07:00
import { calculateRetireDate , calculateRetireLaw } from "../interfaces/utils" ;
2024-07-26 14:44:33 +07:00
import * as fs from "fs" ;
import * as path from "path" ;
const { createConnection } = require ( "typeorm" ) ;
import csvParser from "csv-parser" ;
import { HR_PERSONAL_OFFICER_FAMILY } from "../entities/HR_PERSONAL_OFFICER_FAMILY" ;
const BATCH_SIZE = 1000 ;
// import { EducationMis } from "../entities/EducationMis";
2024-07-25 16:20:48 +07:00
import { EducationMis } from "../entities/EducationMis" ;
2024-07-26 14:41:41 +07:00
import { ProvinceImport } from "../entities/ProvinceImport" ;
import { AmphurImport } from "../entities/AmphurImport" ;
import { SubDistrictImport } from "../entities/SubDistrictImport" ;
import { Province } from "../entities/Province" ;
import { District } from "../entities/District" ;
import { SubDistrict } from "../entities/SubDistrict" ;
2024-07-26 15:52:32 +07:00
import { HR_EDUCATION } from "../entities/HR_EDUCATION" ;
import { HR_PERSONAL_OFFICER_ADDRESS } from "../entities/HR_PERSONAL_OFFICER_ADDRESS" ;
import { HR_EDUCATION_EMP } from "../entities/HR_EDUCATION_EMP" ;
import { HR_PERSONAL_EMP_ADDRESS } from "../entities/HR_PERSONAL_EMP_ADDRESS" ;
import { HR_PERSONAL_EMP_FAMILY } from "../entities/HR_PERSONAL_EMP_FAMILY" ;
2025-01-31 17:35:56 +07:00
import { OrgRoot } from "../entities/OrgRoot" ;
import { OrgChild1 } from "../entities/OrgChild1" ;
import { OrgChild2 } from "../entities/OrgChild2" ;
import { OrgChild3 } from "../entities/OrgChild3" ;
import { OrgChild4 } from "../entities/OrgChild4" ;
import { IMPORT_ORG } from "../entities/IMPORT_ORG" ;
import { OrgRevision } from "../entities/OrgRevision" ;
2025-02-12 10:43:01 +07:00
import { OFFICER } from "../entities/OFFICER" ;
2025-02-14 09:58:51 +07:00
import { Position } from "../entities/Position" ;
import { PosMaster } from "../entities/PosMaster" ;
2025-02-21 19:10:27 +07:00
import { positionOfficer } from "../entities/positionOfficer" ;
2025-03-03 14:52:29 +07:00
import { PosExecutive } from "../entities/PosExecutive" ;
import { EducationLevel } from "../entities/EducationLevel" ;
import { HR_FUND_COURSE_CODE } from "../entities/HR_FUND_COURSE_CODE" ;
import { HR_MAJOR_CODE } from "../entities/HR_MAJOR_CODE" ;
2025-02-26 15:54:09 +07:00
// import { uuidv7 } from "uuidv7";
2025-03-04 15:29:08 +07:00
import { ProfileSalaries } from "../entities/ProfileSalaries" ;
2025-03-25 09:36:38 +07:00
import { HR_POSITION_OFFICER } from "../entities/HR_POSITION_OFFICER" ;
2025-04-29 15:33:37 +07:00
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" ;
2025-05-01 09:40:35 +07:00
import { ProfileChildren } from "../entities/ProfileChildren" ;
import { ProfileChangeName } from "../entities/ProfileChangeName" ;
import { HR_CHILDEN } from "../entities/HR_CHILDEN" ;
import { HR_CHILDEN_EMP } from "../entities/HR_CHILDEN_EMP" ;
import { HR_CHANGENAME } from "../entities/HR_CHANGENAME" ;
import { HR_CHANGENAME_EMP } from "../entities/HR_CHANGENAME_EMP" ;
2024-06-06 11:20:37 +07:00
@Route ( "api/v1/org/upload" )
@Tags ( "UPLOAD" )
2024-06-06 11:15:26 +07:00
@Security ( "bearerAuth" )
export class ImportDataController extends Controller {
2025-01-06 23:58:24 +07:00
private profileEducationRepo = AppDataSource . getRepository ( ProfileEducation ) ;
2025-04-29 15:33:37 +07:00
private profileDisciplineRepo = AppDataSource . getRepository ( ProfileDiscipline ) ;
private profileInsigniaRepo = AppDataSource . getRepository ( ProfileInsignia ) ;
2024-06-10 17:11:54 +07:00
private profileFamilyCoupleRepository = AppDataSource . getRepository ( ProfileFamilyCouple ) ;
private profileFamilyMotherRepository = AppDataSource . getRepository ( ProfileFamilyMother ) ;
private profileFamilyFatherRepository = AppDataSource . getRepository ( ProfileFamilyFather ) ;
2025-01-08 14:15:28 +07:00
private salaryRepo = AppDataSource . getRepository ( ProfileSalary ) ;
2025-05-01 09:40:35 +07:00
private profileChildrenRepo = AppDataSource . getRepository ( ProfileChildren ) ;
private profileChangeNameRepo = AppDataSource . getRepository ( ProfileChangeName ) ;
2024-06-10 17:11:54 +07:00
private profileRepo = AppDataSource . getRepository ( Profile ) ;
private profileEmpRepo = AppDataSource . getRepository ( ProfileEmployee ) ;
2024-06-12 14:44:18 +07:00
private posLevelRepo = AppDataSource . getRepository ( PosLevel ) ;
private posTypeRepo = AppDataSource . getRepository ( PosType ) ;
2025-04-29 15:33:37 +07:00
private posLevelEmpRepo = AppDataSource . getRepository ( EmployeePosLevel ) ;
private posTypeEmpRepo = AppDataSource . getRepository ( EmployeePosType ) ;
2025-02-21 19:10:27 +07:00
private positionOfficerRepo = AppDataSource . getRepository ( positionOfficer ) ;
2025-03-04 15:29:08 +07:00
private ProfileSalariesRepo = AppDataSource . getRepository ( ProfileSalaries ) ;
2024-07-26 14:44:33 +07:00
private HR_PERSONAL_OFFICER_FAMILYRepo = AppDataSource . getRepository ( HR_PERSONAL_OFFICER_FAMILY ) ;
2024-07-26 15:52:32 +07:00
private HR_EDUCATIONRepo = AppDataSource . getRepository ( HR_EDUCATION ) ;
2025-04-29 15:33:37 +07:00
private HR_DISCIPLINERepo = AppDataSource . getRepository ( HR_DISCIPLINE ) ;
private HR_INSIGNIARepo = AppDataSource . getRepository ( HR_INSIGNIA ) ;
2025-05-01 09:40:35 +07:00
private HR_CHILDENRepo = AppDataSource . getRepository ( HR_CHILDEN ) ;
private HR_CHANGENAMERepo = AppDataSource . getRepository ( HR_CHANGENAME ) ;
2024-07-26 15:52:32 +07:00
private HR_PERSONAL_OFFICER_ADDRESSRepo = AppDataSource . getRepository (
HR_PERSONAL_OFFICER_ADDRESS ,
) ;
2025-04-29 15:33:37 +07:00
private HR_DISCIPLINE_EMPRepo = AppDataSource . getRepository ( HR_DISCIPLINE_EMP ) ;
private HR_INSIGNIA_EMPRepo = AppDataSource . getRepository ( HR_INSIGNIA_EMP ) ;
2025-05-01 09:40:35 +07:00
private HR_CHILDEN_EMPRepo = AppDataSource . getRepository ( HR_CHILDEN_EMP ) ;
private HR_CHANGENAME_EMPRepo = AppDataSource . getRepository ( HR_CHANGENAME_EMP ) ;
2024-07-26 15:52:32 +07:00
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 ) ;
2024-07-26 14:44:33 +07:00
2024-07-25 16:20:48 +07:00
private educationMisRepo = AppDataSource . getRepository ( EducationMis ) ;
2025-03-03 14:52:29 +07:00
private educationLevelRepo = AppDataSource . getRepository ( EducationLevel ) ;
private HR_MAJOR_CODERepo = AppDataSource . getRepository ( HR_MAJOR_CODE ) ;
private HR_FUND_COURSE_CODERepo = AppDataSource . getRepository ( HR_FUND_COURSE_CODE ) ;
2025-03-25 09:36:38 +07:00
private HR_POSITION_OFFICERRepo = AppDataSource . getRepository ( HR_POSITION_OFFICER ) ;
2025-04-29 15:33:37 +07:00
private HR_POSITION_EMPLOYEERepo = AppDataSource . getRepository ( HR_POSITION_EMPLOYEE ) ;
2024-07-26 14:41:41 +07:00
private provincsRepo = AppDataSource . getRepository ( ProvinceImport ) ;
private amphurRepo = AppDataSource . getRepository ( AmphurImport ) ;
private subDistrictRepo = AppDataSource . getRepository ( SubDistrictImport ) ;
private provinceIdRepo = AppDataSource . getRepository ( Province ) ;
private districtIdRepo = AppDataSource . getRepository ( District ) ;
private subDistrictIdRepo = AppDataSource . getRepository ( SubDistrict ) ;
2025-01-31 17:35:56 +07:00
private orgRevisionRepo = AppDataSource . getRepository ( OrgRevision ) ;
private orgRootRepo = AppDataSource . getRepository ( OrgRoot ) ;
private orgChild1Repo = AppDataSource . getRepository ( OrgChild1 ) ;
private orgChild2Repo = AppDataSource . getRepository ( OrgChild2 ) ;
private orgChild3Repo = AppDataSource . getRepository ( OrgChild3 ) ;
private orgChild4Repo = AppDataSource . getRepository ( OrgChild4 ) ;
private IMPORT_ORGRepo = AppDataSource . getRepository ( IMPORT_ORG ) ;
2025-02-12 10:43:01 +07:00
private OFFICERRepo = AppDataSource . getRepository ( OFFICER ) ;
2025-04-29 15:33:37 +07:00
private EMPLOYEERepo = AppDataSource . getRepository ( EMPLOYEE ) ;
private positionEmpRepo = AppDataSource . getRepository ( EmployeePosition ) ;
2025-02-14 09:58:51 +07:00
private positionRepo = AppDataSource . getRepository ( Position ) ;
private posMasterRepo = AppDataSource . getRepository ( PosMaster ) ;
2025-04-29 15:33:37 +07:00
private posMasterEmpRepo = AppDataSource . getRepository ( EmployeePosMaster ) ;
2025-03-03 14:52:29 +07:00
private posExecutiveRepo = AppDataSource . getRepository ( PosExecutive ) ;
2025-04-29 15:33:37 +07:00
private insigniaRepo = AppDataSource . getRepository ( Insignia ) ;
2024-06-06 11:15:26 +07:00
/ * *
2024-07-25 16:20:48 +07:00
* @summary ท ะ เ บ ี ย น ป ร ะ ว ั ต ิ ข ้ า ร า ช ก า ร
2024-06-06 11:15:26 +07:00
* /
2024-07-25 16:20:48 +07:00
@Post ( "uploadProfile-Officer" )
2024-07-26 14:44:33 +07:00
async UploadFileSqlOfficer ( @Request ( ) request : { user : Record < string , any > } ) {
2025-02-12 10:43:01 +07:00
const OFFICER = await this . OFFICERRepo . find ( ) ;
2025-02-14 09:58:51 +07:00
let rowCount = 0 ;
2025-03-10 09:52:50 +07:00
let _null : any = null ;
2025-02-14 09:58:51 +07:00
let profile : any ;
2025-02-12 10:43:01 +07:00
for await ( const item of OFFICER ) {
2025-02-14 09:58:51 +07:00
rowCount ++ ;
let type_ : any = null ;
let level_ : any = null ;
profile = null ;
profile = new Profile ( ) ;
const existingProfile = await this . profileRepo . findOne ( {
2025-04-29 15:33:37 +07:00
where : { citizenId : item.CIT.toString ( ) } ,
2024-07-31 09:43:23 +07:00
} ) ;
2025-02-14 09:58:51 +07:00
if ( existingProfile ) {
profile . id = existingProfile . id ;
2025-04-29 15:33:37 +07:00
if ( profile . typeId != null ) {
continue ;
}
2025-02-14 09:58:51 +07:00
// continue;
2024-07-26 14:44:33 +07:00
}
2025-02-14 09:58:51 +07:00
2025-04-29 15:33:37 +07:00
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 ) {
2025-02-14 09:58:51 +07:00
type_ = await this . posTypeRepo . findOne ( {
2025-04-29 15:33:37 +07:00
where : { posTypeName : positionType } ,
2025-02-14 09:58:51 +07:00
} ) ;
}
2025-04-29 15:33:37 +07:00
if ( positionLevel ) {
2025-02-14 09:58:51 +07:00
if ( type_ == null ) {
level_ = await this . posLevelRepo . findOne ( {
where : {
2025-04-29 15:33:37 +07:00
posLevelName : positionLevel ,
2025-02-14 09:58:51 +07:00
} ,
} ) ;
} else {
level_ = await this . posLevelRepo . findOne ( {
where : {
2025-04-29 15:33:37 +07:00
posLevelName : positionLevel ,
2025-02-14 09:58:51 +07:00
posTypeId : type_.id ,
} ,
} ) ;
}
}
2025-04-29 15:33:37 +07:00
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 ;
2025-02-14 09:58:51 +07:00
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 ;
2025-03-10 09:52:50 +07:00
profile . gender = item . SEX == "1" ? "ชาย" : item . SEX == "2" ? "หญิง" : _null ;
2025-04-29 15:33:37 +07:00
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 ) ) ;
2025-02-14 09:58:51 +07:00
profile . position = item . WORK_LINE_NAME == "" ? null : item . WORK_LINE_NAME ;
profile . posTypeId =
2025-04-29 15:33:37 +07:00
type_ != null && type_ . posTypeName == positionType && type_ ? type_.id : null ;
2025-02-14 09:58:51 +07:00
profile . posLevelId =
2025-04-29 15:33:37 +07:00
level_ != null && level_ . posLevelName == positionLevel && level_ ? level_.id : null ;
2025-03-03 14:52:29 +07:00
profile . amount = item . SALARY == "" ? 0 : Number ( item . SALARY ) ;
2025-02-14 09:58:51 +07:00
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 ( ) ;
2025-04-29 15:33:37 +07:00
2025-02-14 09:58:51 +07:00
console . log ( ">>>>>>>>>>>>>>>>>>>" + rowCount ) ;
await this . profileRepo . save ( profile ) ;
2024-07-26 14:44:33 +07:00
}
2024-07-25 16:27:43 +07:00
return new HttpSuccess ( ) ;
2024-06-10 17:11:54 +07:00
}
2024-07-25 16:20:48 +07:00
/ * *
* @summary ท ะ เ บ ี ย น ป ร ะ ว ั ต ิ ล ู ก จ ้ า ง ป ร ะ จ ำ
* /
@Post ( "uploadProfile-Employee" )
2024-07-26 14:44:33 +07:00
async UploadFileSQL ( @Request ( ) request : { user : Record < string , any > } ) {
2025-04-29 15:33:37 +07:00
const existingProfile = await this . profileEmpRepo . find ( {
select : [ "citizenId" ] ,
} ) ;
const EMPLOYEE = await this . EMPLOYEERepo . find ( {
where : { CIT : Not ( In ( existingProfile . map ( ( x ) = > x . citizenId ) ) ) } ,
} ) ;
2024-07-26 14:44:33 +07:00
let rowCount = 0 ;
2025-03-10 09:52:50 +07:00
let _null : any = null ;
2025-04-29 15:33:37 +07:00
let profile : any ;
for await ( const item of EMPLOYEE ) {
2024-07-26 14:44:33 +07:00
rowCount ++ ;
2025-04-29 15:33:37 +07:00
let type_ : any = null ;
let level_ : any = null ;
profile = null ;
profile = new ProfileEmployee ( ) ;
2024-07-26 14:44:33 +07:00
const existingProfile = await this . profileEmpRepo . findOne ( {
2025-04-29 15:33:37 +07:00
where : { citizenId : item.CIT.toString ( ) } ,
2024-07-26 14:44:33 +07:00
} ) ;
if ( existingProfile ) {
2025-04-29 15:33:37 +07:00
profile . id = existingProfile . id ;
2024-09-18 19:18:16 +07:00
// continue;
2025-04-29 15:33:37 +07:00
} else {
continue ;
2024-07-26 14:44:33 +07:00
}
2025-04-29 15:33:37 +07:00
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();
2024-07-26 14:59:34 +07:00
2024-07-26 14:44:33 +07:00
console . log ( ">>>>>>>>>>>>>>>>>>>" + rowCount ) ;
2025-04-29 15:33:37 +07:00
await this . profileEmpRepo . save ( profile ) ;
2024-07-26 14:44:33 +07:00
}
2024-07-25 16:27:43 +07:00
return new HttpSuccess ( ) ;
2024-06-10 17:11:54 +07:00
}
2024-07-25 16:20:48 +07:00
/ * *
* @summary เ ง ิ น เ ด ื อ น ข ้ า ร า ช ก า ร
* /
@Post ( "uploadProfileSalary-Officer" )
2024-07-26 14:44:33 +07:00
async UploadFileSQLSalary ( @Request ( ) request : { user : Record < string , any > } ) {
let rowCount = 0 ;
2025-03-10 09:52:50 +07:00
let _null : any = null ;
2025-02-24 11:04:17 +07:00
let sqlStatements : string [ ] = [ ] ;
2024-07-26 14:44:33 +07:00
2024-07-31 09:43:23 +07:00
const [ profiles , total ] = await AppDataSource . getRepository ( Profile )
2024-07-26 14:44:33 +07:00
. createQueryBuilder ( "profile" )
2024-07-31 09:43:23 +07:00
. select ( [ "profile.citizenId" , "profile.id" ] )
. orderBy ( "profile.citizenId" , "ASC" )
2025-02-24 11:04:17 +07:00
// .where("profile.citizenId = '3101702379675'")
2025-03-24 21:57:50 +07:00
// .where({
// citizenId: In([
// // "1100600109451",
// // "1209900075508",
// // "1739900231556",
// // "1809900305214",
// // "1920600228762",
// // "3101600963742",
// // "3102401171243",
// // "3120100454406",
// // "3180100306172",
// // "3700100094722",
// // "3809900116957",
// "3940900213929",
// ]),
// })
2025-04-29 15:33:37 +07:00
. leftJoinAndSelect ( "profile.profileSalary" , "profileSalary" )
2025-04-29 17:54:32 +07:00
// .where({ citizenId: "3101702379675" })
2025-04-29 15:33:37 +07:00
. where ( "profileSalary.id IS NULL" )
// .skip(0)
// .take(10000)
2024-07-26 14:44:33 +07:00
. getManyAndCount ( ) ;
2025-04-29 15:33:37 +07:00
for await ( const _item of profiles ) {
2025-04-29 17:54:32 +07:00
// ดึงข้อมูลมาโดยไม่ใส่ order
2025-04-29 15:33:37 +07:00
const existingProfile = await this . HR_POSITION_OFFICERRepo . find ( {
where : { CIT : _item.citizenId , FLAG_PERSON_TYPE : "1" } ,
} ) ;
2025-04-29 17:54:32 +07:00
// sort ด้วย JavaScript
existingProfile . sort ( ( a , b ) = > {
let dateA = new Date ( ) . getTime ( ) ;
let dateB = new Date ( ) . getTime ( ) ;
if ( a . MP_POS_DATE ) {
const [ datePart ] = a . MP_POS_DATE . split ( " " ) ;
const [ day , month , year ] = datePart . split ( "/" ) ;
dateA = new Date ( ` ${ year } - ${ month . padStart ( 2 , "0" ) } - ${ day . padStart ( 2 , "0" ) } ` ) . getTime ( ) ;
}
if ( b . MP_POS_DATE ) {
const [ datePart ] = b . MP_POS_DATE . split ( " " ) ;
const [ day , month , year ] = datePart . split ( "/" ) ;
dateB = new Date ( ` ${ year } - ${ month . padStart ( 2 , "0" ) } - ${ day . padStart ( 2 , "0" ) } ` ) . getTime ( ) ;
}
if ( dateA !== dateB ) {
return dateA - dateB ; // ASC
}
return a . ORDER_MOVE_POSITION - b . ORDER_MOVE_POSITION ; // ASC
} ) ;
2025-04-29 15:33:37 +07:00
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 ;
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 ;
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 ( ) . 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 ;
}
2024-07-31 09:43:23 +07:00
return new HttpSuccess ( ) ;
2024-06-10 17:11:54 +07:00
}
2024-07-25 16:20:48 +07:00
/ * *
* @summary เ ง ิ น เ ด ื อ น ล ู ก จ ้ า ง ป ร ะ จ ำ
* /
@Post ( "uploadProfileSalary-Employee" )
2024-07-26 14:44:33 +07:00
async UploadFileSQLSalaryEmp ( @Request ( ) request : { user : Record < string , any > } ) {
let rowCount = 0 ;
2025-03-10 09:52:50 +07:00
let _null : any = null ;
2025-04-29 15:33:37 +07:00
let sqlStatements : string [ ] = [ ] ;
2024-07-26 14:44:33 +07:00
2024-07-31 09:43:23 +07:00
const [ profiles , total ] = await AppDataSource . getRepository ( ProfileEmployee )
2024-07-26 14:44:33 +07:00
. createQueryBuilder ( "profile" )
2024-07-31 09:43:23 +07:00
. select ( [ "profile.citizenId" , "profile.id" ] )
. orderBy ( "profile.citizenId" , "ASC" )
2025-04-29 15:33:37 +07:00
// .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)
2024-07-26 14:44:33 +07:00
. getManyAndCount ( ) ;
2025-04-29 15:33:37 +07:00
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 ` ;
2024-07-26 14:44:33 +07:00
2025-04-29 15:33:37 +07:00
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" } ,
2025-04-29 17:54:32 +07:00
} ) ;
// sort ด้วย JavaScript
existingProfile . sort ( ( a , b ) = > {
let dateA = new Date ( ) . getTime ( ) ;
let dateB = new Date ( ) . getTime ( ) ;
if ( a . MP_POS_DATE ) {
const [ datePart ] = a . MP_POS_DATE . split ( " " ) ;
const [ day , month , year ] = datePart . split ( "/" ) ;
dateA = new Date ( ` ${ year } - ${ month . padStart ( 2 , "0" ) } - ${ day . padStart ( 2 , "0" ) } ` ) . getTime ( ) ;
}
if ( b . MP_POS_DATE ) {
const [ datePart ] = b . MP_POS_DATE . split ( " " ) ;
const [ day , month , year ] = datePart . split ( "/" ) ;
dateB = new Date ( ` ${ year } - ${ month . padStart ( 2 , "0" ) } - ${ day . padStart ( 2 , "0" ) } ` ) . getTime ( ) ;
}
if ( dateA !== dateB ) {
return dateA - dateB ; // ASC
}
return a . ORDER_MOVE_POSITION - b . ORDER_MOVE_POSITION ; // ASC
2025-04-29 15:33:37 +07:00
} ) ;
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 ;
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 ;
2025-05-01 09:40:35 +07:00
profileSalary . positionName = item . WORK_LINE_NAME_F ;
2025-04-29 15:33:37 +07:00
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 = "ช่าง" ;
}
2024-07-31 09:43:23 +07:00
2025-04-29 15:33:37 +07:00
profileSalary . positionType = positionType ;
2025-05-01 09:40:35 +07:00
profileSalary . positionLevel = item . LEVEL_NAME ;
2025-04-29 15:33:37 +07:00
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 ;
// 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 ( ) . 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 ;
}
2024-07-25 16:27:43 +07:00
return new HttpSuccess ( ) ;
2024-06-10 17:11:54 +07:00
}
2024-07-25 16:20:48 +07:00
/ * *
* @summary ค ร อ บ ค ร ั ว ข ้ า ร า ช ก า ร
* /
@Post ( "uploadProfileFamily-Officer" )
2024-07-26 14:44:33 +07:00
async UploadFileSQLFamily ( @Request ( ) request : { user : Record < string , any > } ) {
let rowCount = 0 ;
2024-07-25 16:20:48 +07:00
let fathers : any = [ ] ;
let mothers : any = [ ] ;
let couples : any = [ ] ;
2024-07-31 09:43:23 +07:00
const [ profiles , total ] = await AppDataSource . getRepository ( Profile )
2024-07-26 14:44:33 +07:00
. createQueryBuilder ( "profile" )
2024-07-31 09:43:23 +07:00
. select ( [ "profile.citizenId" , "profile.id" ] )
. orderBy ( "profile.citizenId" , "ASC" )
// .skip(0)
2025-02-12 10:43:01 +07:00
// .take(1000)
2024-07-26 14:44:33 +07:00
. getManyAndCount ( ) ;
2024-07-31 09:43:23 +07:00
// for (var i = 1; i <= total / BATCH_SIZE; i++) {
// const profiles = await AppDataSource.getRepository(Profile)
// .createQueryBuilder("profile")
// .select(["profile.citizenId", "profile.id"])
// .orderBy("profile.citizenId", "ASC")
// .skip((i - 1) * BATCH_SIZE)
// .take(BATCH_SIZE)
// .getMany();
2024-07-26 14:44:33 +07:00
2025-04-29 15:33:37 +07:00
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 ;
}
2024-07-31 09:43:23 +07:00
2025-04-29 15:33:37 +07:00
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 ( ) ;
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 ( ) ;
// fathers.push(profileFather);
// mothers.push(profileMother);
// couples.push(profileCouple);
console . log ( ">>>>>>>>>>>>>>>>>>>" + rowCount ) ;
2024-07-31 09:43:23 +07:00
2025-04-29 15:33:37 +07:00
// 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 [];
// }
}
2024-07-26 14:44:33 +07:00
// }
2024-08-05 10:16:26 +07:00
// console.log(rowCount);
2024-07-25 16:20:48 +07:00
2024-07-31 09:43:23 +07:00
// await Promise.all([
// this.profileFamilyFatherRepository.save(fathers),
// this.profileFamilyMotherRepository.save(mothers),
// this.profileFamilyCoupleRepository.save(couples),
// ]);
2024-07-25 16:20:48 +07:00
2024-07-25 16:27:43 +07:00
return new HttpSuccess ( ) ;
2024-06-10 17:11:54 +07:00
}
2024-07-25 16:20:48 +07:00
/ * *
* @summary ค ร อ บ ค ร ั ว ล ู ก จ ้ า ง ป ร ะ จ ำ
* /
@Post ( "uploadProfileFamily-Employee" )
2024-07-26 14:44:33 +07:00
async UploadFileSQLFamilyEmp ( @Request ( ) request : { user : Record < string , any > } ) {
let rowCount = 0 ;
2024-07-25 16:20:48 +07:00
let fathers : any = [ ] ;
let mothers : any = [ ] ;
let couples : any = [ ] ;
2024-06-10 17:11:54 +07:00
2024-07-31 09:43:23 +07:00
const [ profiles , total ] = await AppDataSource . getRepository ( ProfileEmployee )
2024-07-26 14:44:33 +07:00
. createQueryBuilder ( "profile" )
2024-07-31 09:43:23 +07:00
. select ( [ "profile.citizenId" , "profile.id" ] )
. orderBy ( "profile.citizenId" , "ASC" )
// .skip(0)
// .take(20)
2024-07-26 14:44:33 +07:00
. getManyAndCount ( ) ;
2024-07-31 09:43:23 +07:00
// for (var i = 1; i <= total / BATCH_SIZE; i++) {
// const profiles = await AppDataSource.getRepository(ProfileEmployee)
// .createQueryBuilder("profile")
// .select(["profile.citizenId", "profile.id"])
// .orderBy("profile.citizenId", "ASC")
// .skip((i - 1) * BATCH_SIZE)
// .take(BATCH_SIZE)
// .getMany();
2024-07-26 14:44:33 +07:00
2025-04-29 15:33:37 +07:00
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 ;
}
2024-07-31 09:43:23 +07:00
2025-04-29 15:33:37 +07:00
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 ( ) ;
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 ( ) ;
// fathers.push(profileFather);
// mothers.push(profileMother);
// couples.push(profileCouple);
console . log ( ">>>>>>>>>>>>>>>>>>>" + rowCount ) ;
2024-07-31 09:43:23 +07:00
2025-04-29 15:33:37 +07:00
// 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 [];
// }
}
2024-07-31 09:43:23 +07:00
// }
2024-08-05 10:16:26 +07:00
// console.log(rowCount);
2024-07-25 16:20:48 +07:00
2024-07-31 09:43:23 +07:00
// await Promise.all([
// this.profileFamilyFatherRepository.save(fathers),
// this.profileFamilyMotherRepository.save(mothers),
// this.profileFamilyCoupleRepository.save(couples),
// ]);
2024-07-25 16:20:48 +07:00
2024-07-25 16:27:43 +07:00
return new HttpSuccess ( ) ;
2024-06-12 14:44:18 +07:00
}
2024-07-25 16:20:48 +07:00
2024-07-26 14:41:41 +07:00
/ * *
* @summary Import Education
* /
@Post ( "ImportEducation" )
@UseInterceptors ( FileInterceptor ( "file" ) )
async UploadFileSQLEducationCode (
@UploadedFile ( ) file : Express.Multer.File ,
@Request ( ) request : { user : Record < string , any > } ,
) {
const workbook = xlsx . read ( file . buffer , { type : "buffer" } ) ;
2024-07-26 14:59:34 +07:00
const sheetName = workbook . SheetNames [ 0 ] ;
2024-07-26 14:41:41 +07:00
const sheet = workbook . Sheets [ sheetName ] ;
const getExcel = xlsx . utils . sheet_to_json ( sheet ) ;
let educationMis_ : any = [ ] ;
2024-07-26 14:59:34 +07:00
2024-07-26 14:41:41 +07:00
await Promise . all (
getExcel . map ( async ( item : any ) = > {
const educationMis = new EducationMis ( ) ;
educationMis . EDUCATION_CODE = item . EDUCATION_CODE ;
educationMis . EDUCATION_NAME = item . EDUCATION_NAME ;
educationMis . EDUCATION_ABB_NAME = item . EDUCATION_ABB_NAME ;
educationMis . createdUserId = request . user . sub ;
educationMis . createdFullName = request . user . name ;
educationMis . lastUpdateUserId = request . user . sub ;
2024-07-26 14:59:34 +07:00
educationMis . lastUpdateFullName = request . user . name ;
2024-08-30 21:02:14 +07:00
educationMis . createdAt = new Date ( ) ;
educationMis . lastUpdatedAt = new Date ( ) ;
2024-07-26 14:41:41 +07:00
educationMis_ . push ( educationMis ) ;
} ) ,
) ;
await this . educationMisRepo . save ( educationMis_ ) ;
return new HttpSuccess ( educationMis_ ) ;
}
/ * *
* @summary ป ร ะ ว ั ต ิ ก า ร ศ ึ ก ษ า ข ้ า ร า ช ก า ร
* /
@Post ( "uploadProfileEducation-Officer" )
2024-07-26 15:52:32 +07:00
async UploadFileSQLEducation ( @Request ( ) request : { user : Record < string , any > } ) {
let rowCount = 0 ;
2024-07-26 14:41:41 +07:00
let educations : any = [ ] ;
2025-03-10 09:52:50 +07:00
let _null : any = null ;
2024-07-31 09:43:23 +07:00
const [ profiles , total ] = await AppDataSource . getRepository ( Profile )
2024-07-26 15:52:32 +07:00
. createQueryBuilder ( "profile" )
2024-07-31 09:43:23 +07:00
. select ( [ "profile.citizenId" , "profile.id" ] )
. orderBy ( "profile.citizenId" , "ASC" )
// .skip(0)
// .take(20)
2024-07-26 15:52:32 +07:00
. getManyAndCount ( ) ;
2024-07-31 09:43:23 +07:00
// for (var i = 1; i <= 2; i++) {
// const profiles = await AppDataSource.getRepository(Profile)
// .createQueryBuilder("profile")
// .select(["profile.citizenId", "profile.id"])
// .orderBy("profile.citizenId", "ASC")
// .skip((i - 1) * 5)
// .take(5)
// .getMany();
2024-07-26 15:52:32 +07:00
2025-03-03 14:52:29 +07:00
for ( const _item of profiles ) {
const existingProfile = await this . HR_EDUCATIONRepo . find ( {
where : { CIT : _item.citizenId } ,
2025-03-11 10:03:55 +07:00
// select: [
// "CIT",
// "EDUCATION_CODE",
// "START_EDUCATION_YEAR",
// "EDUCATION_YEAR",
// "INSTITUE",
// "EDUCATION_SEQ",
// ],
order : { EDUCATION_SEQ : "ASC" } ,
2025-03-03 14:52:29 +07:00
} ) ;
2024-07-31 09:43:23 +07:00
2025-03-03 14:52:29 +07:00
const educationLevel = await this . profileEducationRepo . findOne ( {
select : [ "id" , "level" , "profileId" ] ,
where : { profileId : _item.id } ,
order : { level : "DESC" } ,
} ) ;
2024-07-31 09:43:23 +07:00
2025-03-03 14:52:29 +07:00
// 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 } ,
} ) ;
2024-07-31 09:43:23 +07:00
2025-04-29 15:33:37 +07:00
// 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;
let endDate =
item . EDUCATION_YEAR != "" && Number ( item . EDUCATION_YEAR ) > 2500
? new Date ( Number ( item . EDUCATION_YEAR ) - 543 , 0 , 1 )
: _null ;
2025-03-11 10:03:55 +07:00
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" } ,
} ) ;
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 ;
}
}
}
2025-03-03 14:52:29 +07:00
education . level = educationLevel == null ? 1 : educationLevel.level + 1 ;
education . profileId = _item . id ;
2025-03-10 09:52:50 +07:00
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 ;
2025-03-03 14:52:29 +07:00
education . institute = item . INSTITUE ;
2025-03-10 09:52:50 +07:00
education . level = item . EDUCATION_SEQ ? Number ( item . EDUCATION_SEQ ) : _null ;
2025-03-03 14:52:29 +07:00
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 [];
}
2024-07-31 09:43:23 +07:00
// }
2024-08-05 10:16:26 +07:00
// console.log(">>>>>>>>>>>>>>>>>>>" + rowCount);
2025-01-06 23:58:24 +07:00
// await this.profileEducationRepo.save(educations);
2024-07-26 14:41:41 +07:00
return new HttpSuccess ( ) ;
}
2024-07-26 14:59:34 +07:00
2024-07-26 14:41:41 +07:00
/ * *
* @summary ป ร ะ ว ั ต ิ ก า ร ศ ึ ก ษ า ล ู ก จ ้ า ง ป ร ะ จ ำ
* /
@Post ( "uploadProfileEducation-Employee" )
2024-07-26 15:52:32 +07:00
async UploadFileSQLEducationEmp ( @Request ( ) request : { user : Record < string , any > } ) {
let rowCount = 0 ;
2024-07-26 14:41:41 +07:00
let educations : any = [ ] ;
2025-03-10 09:52:50 +07:00
let _null : any = null ;
2024-07-31 09:43:23 +07:00
const [ profiles , total ] = await AppDataSource . getRepository ( ProfileEmployee )
2024-07-26 15:52:32 +07:00
. createQueryBuilder ( "profile" )
2024-07-31 09:43:23 +07:00
. select ( [ "profile.citizenId" , "profile.id" ] )
. orderBy ( "profile.citizenId" , "ASC" )
// .skip(0)
// .take(20)
2024-07-26 15:52:32 +07:00
. getManyAndCount ( ) ;
2024-07-31 09:43:23 +07:00
// for (var i = 1; i <= total / BATCH_SIZE; i++) {
// const profiles = await AppDataSource.getRepository(ProfileEmployee)
// .createQueryBuilder("profile")
// .select(["profile.citizenId", "profile.id"])
// .orderBy("profile.citizenId", "ASC")
// .skip((i - 1) * BATCH_SIZE)
// .take(BATCH_SIZE)
// .getMany();
2024-07-26 15:52:32 +07:00
2025-04-29 15:33:37 +07:00
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" } ,
} ) ;
2024-07-31 09:43:23 +07:00
2025-04-29 15:33:37 +07:00
// 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 } ,
2025-01-06 23:58:24 +07:00
} ) ;
2025-04-29 15:33:37 +07:00
// 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;
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" } ,
} ) ;
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 [];
}
2024-07-31 09:43:23 +07:00
// }
2024-08-05 10:16:26 +07:00
// console.log(">>>>>>>>>>>>>>>>>>>" + rowCount);
2025-01-06 23:58:24 +07:00
// await this.profileEducationRepo.save(educations);
2024-07-26 14:41:41 +07:00
return new HttpSuccess ( ) ;
}
/ * *
* @summary Import Province
* /
@Post ( "ImportProvince" )
@UseInterceptors ( FileInterceptor ( "file" ) )
async ImportProvince (
@UploadedFile ( ) file : Express.Multer.File ,
@Request ( ) request : { user : Record < string , any > } ,
) {
const workbook = xlsx . read ( file . buffer , { type : "buffer" } ) ;
2024-07-26 14:59:34 +07:00
const sheetName = workbook . SheetNames [ 0 ] ;
2024-07-26 14:41:41 +07:00
const sheet = workbook . Sheets [ sheetName ] ;
const getExcel = xlsx . utils . sheet_to_json ( sheet ) ;
let provinces_ : any = [ ] ;
await Promise . all (
getExcel . map ( async ( item : any ) = > {
const prov = new ProvinceImport ( ) ;
prov . PROVINCE_CODE = item . PROVINCE_CODE ;
prov . PROVINCE_NAME = item . PROVINCE_NAME ;
prov . createdUserId = request . user . sub ;
prov . createdFullName = request . user . name ;
prov . lastUpdateUserId = request . user . sub ;
2024-07-26 14:59:34 +07:00
prov . lastUpdateFullName = request . user . name ;
2024-08-30 21:02:14 +07:00
prov . createdAt = new Date ( ) ;
prov . lastUpdatedAt = new Date ( ) ;
2024-07-26 14:41:41 +07:00
provinces_ . push ( prov ) ;
} ) ,
) ;
await this . provincsRepo . save ( provinces_ ) ;
return new HttpSuccess ( provinces_ ) ;
}
/ * *
* @summary Import Amphur
* /
@Post ( "ImportAmphur" )
@UseInterceptors ( FileInterceptor ( "file" ) )
async ImportAmphur (
@UploadedFile ( ) file : Express.Multer.File ,
@Request ( ) request : { user : Record < string , any > } ,
) {
const workbook = xlsx . read ( file . buffer , { type : "buffer" } ) ;
2024-07-26 14:59:34 +07:00
const sheetName = workbook . SheetNames [ 0 ] ;
2024-07-26 14:41:41 +07:00
const sheet = workbook . Sheets [ sheetName ] ;
const getExcel = xlsx . utils . sheet_to_json ( sheet ) ;
let amphur_ : any = [ ] ;
await Promise . all (
getExcel . map ( async ( item : any ) = > {
const amh = new AmphurImport ( ) ;
amh . PROVINCE_CODE = item . PROVINCE_CODE ;
amh . AMPHUR_CODE = item . AMPHUR_CODE ;
amh . AMPHUR_NAME = item . AMPHUR_NAME ;
amh . createdUserId = request . user . sub ;
amh . createdFullName = request . user . name ;
amh . lastUpdateUserId = request . user . sub ;
2024-07-26 14:59:34 +07:00
amh . lastUpdateFullName = request . user . name ;
2024-08-30 21:02:14 +07:00
amh . createdAt = new Date ( ) ;
amh . lastUpdatedAt = new Date ( ) ;
2024-07-26 14:41:41 +07:00
amphur_ . push ( amh ) ;
} ) ,
) ;
await this . amphurRepo . save ( amphur_ ) ;
return new HttpSuccess ( amphur_ ) ;
}
/ * *
* @summary Import SubDistrict
* /
@Post ( "ImportSubDistrict" )
@UseInterceptors ( FileInterceptor ( "file" ) )
async ImportSubDistrict (
@UploadedFile ( ) file : Express.Multer.File ,
@Request ( ) request : { user : Record < string , any > } ,
) {
const workbook = xlsx . read ( file . buffer , { type : "buffer" } ) ;
2024-07-26 14:59:34 +07:00
const sheetName = workbook . SheetNames [ 0 ] ;
2024-07-26 14:41:41 +07:00
const sheet = workbook . Sheets [ sheetName ] ;
const getExcel = xlsx . utils . sheet_to_json ( sheet ) ;
let subDistrict_ : any = [ ] ;
await Promise . all (
getExcel . map ( async ( item : any ) = > {
const subD = new SubDistrictImport ( ) ;
subD . PROVINCE_CODE = item . PROVINCE_CODE ;
subD . AMPHUR_CODE = item . AMPHUR_CODE ;
subD . DISTRICT_CODE = item . DISTRICT_CODE ;
subD . DISTRICT_NAME = item . DISTRICT_NAME ;
subD . createdUserId = request . user . sub ;
subD . createdFullName = request . user . name ;
subD . lastUpdateUserId = request . user . sub ;
2024-07-26 14:59:34 +07:00
subD . lastUpdateFullName = request . user . name ;
2024-08-30 21:02:14 +07:00
subD . createdAt = new Date ( ) ;
subD . lastUpdatedAt = new Date ( ) ;
2024-07-26 14:41:41 +07:00
subDistrict_ . push ( subD ) ;
} ) ,
) ;
await this . subDistrictRepo . save ( subDistrict_ ) ;
return new HttpSuccess ( subDistrict_ ) ;
}
/ * *
* @summary ท ี ่ อ ย ู ่ ต า ม ท ะ เ บ ี ย น บ ้ า น - ป ั จ จ ุ บ ั น ข ้ า ร า ช ก า ร
* /
@Post ( "uploadProfileAddress-Officer" )
2024-07-26 15:52:32 +07:00
async UploadFileSQLAddress ( @Request ( ) request : { user : Record < string , any > } ) {
let rowCount = 0 ;
2025-03-10 09:52:50 +07:00
let _null : any = null ;
2024-07-31 09:43:23 +07:00
const [ profiles , total ] = await AppDataSource . getRepository ( Profile )
2024-07-26 15:52:32 +07:00
. createQueryBuilder ( "profile" )
2024-07-31 09:43:23 +07:00
. select ( [ "profile.citizenId" , "profile.id" ] )
. orderBy ( "profile.citizenId" , "ASC" )
2025-05-01 09:40:35 +07:00
// .where("profile.citizenId = '3101702379675'")
2024-07-31 09:43:23 +07:00
// .skip(0)
// .take(20)
2024-07-26 15:52:32 +07:00
. getManyAndCount ( ) ;
2025-03-07 11:15:50 +07:00
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_OFFICER_ADDRESSRepo . findOne ( {
where : { CIT : _item.citizenId } ,
} ) ;
2024-07-26 15:52:32 +07:00
2025-03-07 11:15:50 +07:00
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 ( provinceRegis_ ) {
let provinceId = await this . provinceIdRepo . findOne ( {
2024-07-31 09:43:23 +07:00
where : {
2025-03-07 11:15:50 +07:00
name : provinceRegis_.PROVINCE_NAME ,
2024-07-31 09:43:23 +07:00
} ,
} ) ;
2025-03-07 11:15:50 +07:00
if ( provinceId == null ) {
provinceId = new Province ( ) ;
Object . assign ( provinceId , {
. . . meta ,
name : provinceRegis_.PROVINCE_NAME ,
2024-07-26 14:41:41 +07:00
} ) ;
2025-03-07 11:15:50 +07:00
await this . provinceIdRepo . save ( provinceId ) ;
2024-07-26 14:41:41 +07:00
}
2025-03-10 09:52:50 +07:00
_item . registrationProvinceId = provinceId ? provinceId.id : _null ;
2025-03-07 11:15:50 +07:00
if ( AMPHUR_CODE ) {
let districtRegis_ = await this . amphurRepo . findOne ( {
2024-07-31 09:43:23 +07:00
where : {
2025-03-07 11:15:50 +07:00
AMPHUR_CODE : AMPHUR_CODE ,
PROVINCE_CODE : provinceRegis_.PROVINCE_CODE ,
2024-07-31 09:43:23 +07:00
} ,
2024-07-26 14:41:41 +07:00
} ) ;
2025-03-07 11:15:50 +07:00
if ( districtRegis_ ) {
let districtId = await this . districtIdRepo . findOne ( {
where : {
name : districtRegis_.AMPHUR_NAME ,
2025-05-01 09:40:35 +07:00
provinceId : provinceId.id ,
2025-03-07 11:15:50 +07:00
} ,
} ) ;
if ( districtId == null ) {
districtId = new District ( ) ;
Object . assign ( districtId , {
. . . meta ,
name : districtRegis_.AMPHUR_NAME ,
provinceId : provinceId.id ,
} ) ;
2025-05-01 09:40:35 +07:00
await this . districtIdRepo . save ( districtId ) ;
2025-03-07 11:15:50 +07:00
}
2025-03-10 09:52:50 +07:00
_item . registrationDistrictId = districtId ? districtId.id : _null ;
2025-03-07 11:15:50 +07:00
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 ,
2025-05-01 09:40:35 +07:00
districtId : districtId.id ,
2025-03-07 11:15:50 +07:00
} ,
} ) ;
if ( subDistrictId == null ) {
subDistrictId = new SubDistrict ( ) ;
Object . assign ( subDistrictId , {
. . . meta ,
name : subDistrictRegis_.DISTRICT_NAME ,
zipCode : existingProfile.ZIPCODE ,
districtId : districtId.id ,
} ) ;
2025-05-01 09:40:35 +07:00
await this . subDistrictIdRepo . save ( subDistrictId ) ;
2025-03-07 11:15:50 +07:00
}
2025-03-10 09:52:50 +07:00
_item . registrationSubDistrictId = subDistrictId ? subDistrictId.id : _null ;
2025-03-07 11:15:50 +07:00
}
}
}
2024-07-26 14:41:41 +07:00
}
2024-07-31 09:43:23 +07:00
}
2025-03-07 11:15:50 +07:00
}
//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 ( {
2024-07-31 09:43:23 +07:00
where : {
2025-03-07 11:15:50 +07:00
name : provinceCurr_.PROVINCE_NAME ,
2024-07-31 09:43:23 +07:00
} ,
} ) ;
2025-03-07 11:15:50 +07:00
if ( provinceId == null ) {
provinceId = new Province ( ) ;
Object . assign ( provinceId , {
. . . meta ,
name : provinceCurr_.PROVINCE_NAME ,
2024-07-26 14:41:41 +07:00
} ) ;
2025-03-07 11:15:50 +07:00
await this . provinceIdRepo . save ( provinceId ) ;
2024-07-26 14:41:41 +07:00
}
2025-03-10 09:52:50 +07:00
_item . currentProvinceId = provinceId ? provinceId.id : _null ;
2025-03-07 11:15:50 +07:00
if ( CONTACT_AMPHUR_CODE ) {
let districtCurr_ = await this . amphurRepo . findOne ( {
2024-07-26 14:59:34 +07:00
where : {
2025-03-07 11:15:50 +07:00
AMPHUR_CODE : CONTACT_AMPHUR_CODE ,
PROVINCE_CODE : provinceCurr_.PROVINCE_CODE ,
2024-07-26 14:59:34 +07:00
} ,
2024-07-26 14:41:41 +07:00
} ) ;
2025-03-07 11:15:50 +07:00
if ( districtCurr_ ) {
let districtId = await this . districtIdRepo . findOne ( {
where : {
name : districtCurr_.AMPHUR_NAME ,
2025-05-01 09:40:35 +07:00
provinceId : provinceId.id ,
2025-03-07 11:15:50 +07:00
} ,
} ) ;
if ( districtId == null ) {
districtId = new District ( ) ;
Object . assign ( districtId , {
. . . meta ,
name : districtCurr_.AMPHUR_NAME ,
provinceId : provinceId.id ,
} ) ;
2025-05-01 09:40:35 +07:00
await this . districtIdRepo . save ( districtId ) ;
2025-03-07 11:15:50 +07:00
}
2025-03-10 09:52:50 +07:00
_item . currentDistrictId = districtId ? districtId.id : _null ;
2025-03-07 11:15:50 +07:00
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 ,
2025-05-01 09:40:35 +07:00
districtId : districtId.id ,
2025-03-07 11:15:50 +07:00
} ,
} ) ;
if ( subDistrictId == null ) {
subDistrictId = new SubDistrict ( ) ;
Object . assign ( subDistrictId , {
. . . meta ,
name : subDistrictCurr_.DISTRICT_NAME ,
zipCode : existingProfile.CONTACT_ZIPCODE ,
districtId : districtId.id ,
} ) ;
2025-05-01 09:40:35 +07:00
await this . subDistrictIdRepo . save ( subDistrictId ) ;
2025-03-07 11:15:50 +07:00
}
2025-03-10 09:52:50 +07:00
_item . currentSubDistrictId = subDistrictId ? subDistrictId.id : _null ;
2025-03-07 11:15:50 +07:00
}
}
}
2024-07-26 14:41:41 +07:00
}
2024-07-31 09:43:23 +07:00
}
2025-03-07 11:15:50 +07:00
}
_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 . profileRepo . save ( _item ) ;
}
2024-07-26 14:41:41 +07:00
return new HttpSuccess ( ) ;
}
2024-07-26 14:59:34 +07:00
2024-07-26 14:41:41 +07:00
/ * *
* @summary ท ี ่ อ ย ู ่ ต า ม ท ะ เ บ ี ย น บ ้ า น - ป ั จ จ ุ บ ั น ล ู ก จ ้ า ง ป ร ะ จ ำ
* /
@Post ( "uploadProfileAddress-Employee" )
2024-07-26 15:52:32 +07:00
async UploadFileSQLAddressEmp ( @Request ( ) request : { user : Record < string , any > } ) {
let rowCount = 0 ;
let profileDatas : any = [ ] ;
2025-03-10 09:52:50 +07:00
let _null : any = null ;
2024-07-31 09:43:23 +07:00
const [ profiles , total ] = await AppDataSource . getRepository ( ProfileEmployee )
2024-07-26 15:52:32 +07:00
. createQueryBuilder ( "profile" )
2024-07-31 09:43:23 +07:00
. select ( [ "profile.citizenId" , "profile.id" ] )
. orderBy ( "profile.citizenId" , "ASC" )
2025-05-01 16:31:41 +07:00
// .where("profile.citizenId = '3610700119735'")
2024-07-31 09:43:23 +07:00
// .skip(0)
// .take(20)
2024-07-26 15:52:32 +07:00
. getManyAndCount ( ) ;
2025-04-29 15:33:37 +07:00
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 } ,
} ) ;
2024-07-26 15:52:32 +07:00
2025-04-29 15:33:37 +07:00
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 ( provinceRegis_ ) {
let provinceId = await this . provinceIdRepo . findOne ( {
2024-07-31 09:43:23 +07:00
where : {
2025-04-29 15:33:37 +07:00
name : provinceRegis_.PROVINCE_NAME ,
2024-07-31 09:43:23 +07:00
} ,
} ) ;
2025-04-29 15:33:37 +07:00
if ( provinceId == null ) {
provinceId = new Province ( ) ;
Object . assign ( provinceId , {
. . . meta ,
name : provinceRegis_.PROVINCE_NAME ,
2024-07-26 14:41:41 +07:00
} ) ;
2025-04-29 15:33:37 +07:00
await this . provinceIdRepo . save ( provinceId ) ;
2024-07-26 14:41:41 +07:00
}
2025-04-29 15:33:37 +07:00
_item . registrationProvinceId = provinceId ? provinceId.id : _null ;
if ( AMPHUR_CODE ) {
let districtRegis_ = await this . amphurRepo . findOne ( {
2024-07-31 09:43:23 +07:00
where : {
2025-04-29 15:33:37 +07:00
AMPHUR_CODE : AMPHUR_CODE ,
PROVINCE_CODE : provinceRegis_.PROVINCE_CODE ,
2024-07-31 09:43:23 +07:00
} ,
2024-07-26 14:41:41 +07:00
} ) ;
2025-04-29 15:33:37 +07:00
if ( districtRegis_ ) {
let districtId = await this . districtIdRepo . findOne ( {
where : {
name : districtRegis_.AMPHUR_NAME ,
2025-05-01 16:31:41 +07:00
provinceId : provinceId.id ,
2025-04-29 15:33:37 +07:00
} ,
} ) ;
if ( districtId == null ) {
districtId = new District ( ) ;
Object . assign ( districtId , {
. . . meta ,
name : districtRegis_.AMPHUR_NAME ,
provinceId : provinceId.id ,
} ) ;
2025-05-01 09:40:35 +07:00
await this . districtIdRepo . save ( districtId ) ;
2025-04-29 15:33:37 +07:00
}
_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 ,
2025-05-01 16:31:41 +07:00
districtId : districtId.id ,
2025-04-29 15:33:37 +07:00
} ,
} ) ;
if ( subDistrictId == null ) {
subDistrictId = new SubDistrict ( ) ;
Object . assign ( subDistrictId , {
. . . meta ,
name : subDistrictRegis_.DISTRICT_NAME ,
zipCode : existingProfile.ZIPCODE ,
districtId : districtId.id ,
} ) ;
2025-05-01 09:40:35 +07:00
await this . subDistrictIdRepo . save ( subDistrictId ) ;
2025-04-29 15:33:37 +07:00
}
_item . registrationSubDistrictId = subDistrictId ? subDistrictId.id : _null ;
}
}
}
2024-07-26 14:41:41 +07:00
}
2024-07-31 09:43:23 +07:00
}
2025-04-29 15:33:37 +07:00
}
//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 ( {
2024-07-31 09:43:23 +07:00
where : {
2025-04-29 15:33:37 +07:00
name : provinceCurr_.PROVINCE_NAME ,
2024-07-31 09:43:23 +07:00
} ,
} ) ;
2025-04-29 15:33:37 +07:00
if ( provinceId == null ) {
provinceId = new Province ( ) ;
Object . assign ( provinceId , {
. . . meta ,
name : provinceCurr_.PROVINCE_NAME ,
2024-07-26 14:41:41 +07:00
} ) ;
2025-04-29 15:33:37 +07:00
await this . provinceIdRepo . save ( provinceId ) ;
2024-07-26 14:41:41 +07:00
}
2025-04-29 15:33:37 +07:00
_item . currentProvinceId = provinceId ? provinceId.id : _null ;
if ( CONTACT_AMPHUR_CODE ) {
let districtCurr_ = await this . amphurRepo . findOne ( {
2024-07-26 14:59:34 +07:00
where : {
2025-04-29 15:33:37 +07:00
AMPHUR_CODE : CONTACT_AMPHUR_CODE ,
PROVINCE_CODE : provinceCurr_.PROVINCE_CODE ,
2024-07-26 14:59:34 +07:00
} ,
2024-07-26 14:41:41 +07:00
} ) ;
2025-04-29 15:33:37 +07:00
if ( districtCurr_ ) {
let districtId = await this . districtIdRepo . findOne ( {
where : {
name : districtCurr_.AMPHUR_NAME ,
2025-05-01 16:31:41 +07:00
provinceId : provinceId.id ,
2025-04-29 15:33:37 +07:00
} ,
} ) ;
if ( districtId == null ) {
districtId = new District ( ) ;
Object . assign ( districtId , {
. . . meta ,
name : districtCurr_.AMPHUR_NAME ,
provinceId : provinceId.id ,
} ) ;
2025-05-01 09:40:35 +07:00
await this . districtIdRepo . save ( districtId ) ;
2025-04-29 15:33:37 +07:00
}
_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 ,
2025-05-01 16:31:41 +07:00
districtId : districtId.id ,
2025-04-29 15:33:37 +07:00
} ,
} ) ;
if ( subDistrictId == null ) {
subDistrictId = new SubDistrict ( ) ;
Object . assign ( subDistrictId , {
. . . meta ,
name : subDistrictCurr_.DISTRICT_NAME ,
zipCode : existingProfile.CONTACT_ZIPCODE ,
districtId : districtId.id ,
} ) ;
2025-05-01 09:40:35 +07:00
await this . subDistrictIdRepo . save ( subDistrictId ) ;
2025-04-29 15:33:37 +07:00
}
_item . currentSubDistrictId = subDistrictId ? subDistrictId.id : _null ;
}
}
}
2024-07-26 14:41:41 +07:00
}
2024-07-31 09:43:23 +07:00
}
2025-04-29 15:33:37 +07:00
}
_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 ) ;
}
2024-08-05 10:16:26 +07:00
return new HttpSuccess ( ) ;
}
/ * *
* @summary ท ะ เ บ ี ย น ป ร ะ ว ั ต ิ ข ้ า ร า ช ก า ร
* /
@Post ( "cleardataupload" )
async ClearDataUpload ( @Request ( ) request : { user : Record < string , any > } ) {
const profileOff = await this . profileRepo . find ( {
select : [ "citizenId" ] ,
} ) ;
const profileEmp = await this . profileEmpRepo . find ( {
select : [ "citizenId" ] ,
} ) ;
const _profileOff = profileOff . map ( ( x ) = > x . citizenId ) ;
const _profileEmp = profileEmp . map ( ( x ) = > x . citizenId ) ;
const allId = _profileOff . concat ( _profileEmp ) ;
for ( var i = 1 ; i <= 1000 ; i ++ ) {
2025-02-21 19:10:27 +07:00
const positionOfficer = await this . positionOfficerRepo . find ( {
where : { citizenId : Not ( In ( allId ) ) } ,
2024-08-05 10:16:26 +07:00
take : 1000 ,
skip : 0 ,
} ) ;
2025-02-21 19:10:27 +07:00
this . positionOfficerRepo . remove ( positionOfficer ) ;
2024-08-05 10:16:26 +07:00
// const HR_PERSONAL_OFFICER_FAMILY = await this.HR_PERSONAL_OFFICER_FAMILYRepo.find({
// where: { CIT: Not(In(allId)) },
// take: 1000,
// skip: 0,
// });
// this.HR_PERSONAL_OFFICER_FAMILYRepo.remove(HR_PERSONAL_OFFICER_FAMILY);
// const HR_EDUCATION = await this.HR_EDUCATIONRepo.find({
// where: { CIT: Not(In(allId)) },
// take: 1000,
// skip: 0,
// });
// this.HR_EDUCATIONRepo.remove(HR_EDUCATION);
// const HR_PERSONAL_OFFICER_ADDRESS = await this.HR_PERSONAL_OFFICER_ADDRESSRepo.find({
// where: { CIT: Not(In(allId)) },
// take: 1000,
// skip: 0,
// });
// this.HR_PERSONAL_OFFICER_ADDRESSRepo.remove(HR_PERSONAL_OFFICER_ADDRESS);
// const HR_EDUCATION_EMP = await this.HR_EDUCATION_EMPRepo.find({
// where: { CIT: Not(In(allId)) },
// take: 1000,
// skip: 0,
// });
// this.HR_EDUCATION_EMPRepo.remove(HR_EDUCATION_EMP);
// const HR_PERSONAL_EMP_ADDRESS = await this.HR_PERSONAL_EMP_ADDRESSRepo.find({
// where: { CIT: Not(In(allId)) },
// take: 1000,
// skip: 0,
// });
// this.HR_PERSONAL_EMP_ADDRESSRepo.remove(HR_PERSONAL_EMP_ADDRESS);
// const HR_PERSONAL_EMP_FAMILY = await this.HR_PERSONAL_EMP_FAMILYRepo.find({
// where: { CIT: Not(In(allId)) },
// take: 1000,
// skip: 0,
// });
// this.HR_PERSONAL_EMP_FAMILYRepo.remove(HR_PERSONAL_EMP_FAMILY);
}
2024-07-26 14:41:41 +07:00
return new HttpSuccess ( ) ;
}
2025-01-31 17:35:56 +07:00
/ * *
* @summary Import Org
* /
@Post ( "ImportOrg" )
async ImportOrg ( @Request ( ) request : { user : Record < string , any > } ) {
const orgRevision = await this . orgRevisionRepo . findOne ( {
2025-03-24 21:57:50 +07:00
// where: { orgRevisionIsCurrent: true, orgRevisionIsDraft: false },
where : { id : "30e594c9-a65b-485e-a4c5-71aa497e6b8a" } ,
2025-01-31 17:35:56 +07:00
} ) ;
if ( orgRevision == null ) return new HttpSuccess ( ) ;
2025-02-12 10:43:01 +07:00
//create root
const IMPORT_CHILD = await this . IMPORT_ORGRepo . find ( {
where : {
orgRoot : Not ( "" ) ,
orgChild1 : "" ,
orgChild2 : "" ,
orgChild3 : "" ,
} ,
} ) ;
2025-03-03 14:52:29 +07:00
let order = 1 ;
for ( const item of IMPORT_CHILD ) {
const orgRoot = new OrgRoot ( ) ;
orgRoot . orgRootOrder = order ;
orgRoot . orgRootName = item . orgRoot ;
orgRoot . orgRootShortName = item . orgShortname ;
const rank : any = item . orgRank ;
orgRoot . orgRootRank = rank ;
orgRoot . orgRootRankSub = item . orgSubRank ;
orgRoot . DEPARTMENT_CODE = item . DEPARTMENT_CODE ;
orgRoot . DIVISION_CODE = item . DIVISION_CODE ;
orgRoot . SECTION_CODE = item . SECTION_CODE ;
orgRoot . JOB_CODE = item . JOB_CODE ;
orgRoot . orgRevisionId = orgRevision . id ;
orgRoot . createdUserId = request . user . sub ;
orgRoot . createdFullName = request . user . name ;
orgRoot . lastUpdateUserId = request . user . sub ;
orgRoot . lastUpdateFullName = request . user . name ;
orgRoot . createdAt = new Date ( ) ;
orgRoot . lastUpdatedAt = new Date ( ) ;
await this . orgRootRepo . save ( orgRoot ) ;
order ++ ;
}
2025-02-12 10:43:01 +07:00
2025-03-03 14:52:29 +07:00
//create child1
const IMPORT_CHILD1 = await this . IMPORT_ORGRepo . find ( {
where : {
orgRoot : Not ( "" ) ,
orgChild1 : Not ( "" ) ,
orgChild2 : "" ,
orgChild3 : "" ,
} ,
} ) ;
for ( const item of IMPORT_CHILD1 ) {
const orgChild1 = new OrgChild1 ( ) ;
let orgRoot = await this . orgRootRepo . findOne ( {
2025-03-24 21:57:50 +07:00
where : { orgRootName : item.orgRoot , orgRevisionId : orgRevision.id } ,
2025-03-03 14:52:29 +07:00
relations : [ "orgChild1s" ] ,
} ) ;
if ( orgRoot == null ) {
orgRoot = new OrgRoot ( ) ;
orgRoot . orgRootOrder = order ;
order = order + 1 ;
2025-01-31 17:35:56 +07:00
orgRoot . orgRootName = item . orgRoot ;
2025-02-10 16:16:20 +07:00
orgRoot . orgRootShortName = item . orgShortname ;
const rank : any = item . orgRank ;
orgRoot . orgRootRank = rank ;
orgRoot . orgRootRankSub = item . orgSubRank ;
orgRoot . DEPARTMENT_CODE = item . DEPARTMENT_CODE ;
orgRoot . DIVISION_CODE = item . DIVISION_CODE ;
orgRoot . SECTION_CODE = item . SECTION_CODE ;
orgRoot . JOB_CODE = item . JOB_CODE ;
2025-01-31 17:35:56 +07:00
orgRoot . orgRevisionId = orgRevision . id ;
orgRoot . createdUserId = request . user . sub ;
orgRoot . createdFullName = request . user . name ;
orgRoot . lastUpdateUserId = request . user . sub ;
orgRoot . lastUpdateFullName = request . user . name ;
orgRoot . createdAt = new Date ( ) ;
orgRoot . lastUpdatedAt = new Date ( ) ;
await this . orgRootRepo . save ( orgRoot ) ;
2025-03-03 14:52:29 +07:00
}
2025-02-12 10:43:01 +07:00
2025-03-03 14:52:29 +07:00
orgChild1 . orgChild1Order =
orgRoot == null || orgRoot . orgChild1s == null || orgRoot . orgChild1s . length == 0
? 1
: orgRoot . orgChild1s . length + 1 ;
orgChild1 . orgRootId = orgRoot . id ;
orgChild1 . orgChild1Name = item . orgChild1 ;
orgChild1 . orgChild1ShortName = item . orgShortname ;
const rank : any = item . orgRank ;
orgChild1 . orgChild1Rank = rank ;
orgChild1 . orgChild1RankSub = item . orgSubRank ;
orgChild1 . DEPARTMENT_CODE = item . DEPARTMENT_CODE ;
orgChild1 . DIVISION_CODE = item . DIVISION_CODE ;
orgChild1 . SECTION_CODE = item . SECTION_CODE ;
orgChild1 . JOB_CODE = item . JOB_CODE ;
orgChild1 . orgRevisionId = orgRevision . id ;
orgChild1 . createdUserId = request . user . sub ;
orgChild1 . createdFullName = request . user . name ;
orgChild1 . lastUpdateUserId = request . user . sub ;
orgChild1 . lastUpdateFullName = request . user . name ;
orgChild1 . createdAt = new Date ( ) ;
orgChild1 . lastUpdatedAt = new Date ( ) ;
await this . orgChild1Repo . save ( orgChild1 ) ;
}
//create child2
const IMPORT_CHILD2 = await this . IMPORT_ORGRepo . find ( {
2025-02-12 10:43:01 +07:00
where : {
orgRoot : Not ( "" ) ,
orgChild1 : Not ( "" ) ,
2025-03-03 14:52:29 +07:00
orgChild2 : Not ( "" ) ,
2025-02-12 10:43:01 +07:00
orgChild3 : "" ,
} ,
} ) ;
2025-03-03 14:52:29 +07:00
for ( const item of IMPORT_CHILD2 ) {
const orgChild2 = new OrgChild2 ( ) ;
let orgRoot = await this . orgRootRepo . findOne ( {
2025-03-24 21:57:50 +07:00
where : { orgRootName : item.orgRoot , orgRevisionId : orgRevision.id } ,
2025-03-03 14:52:29 +07:00
relations : [ "orgChild1s" ] ,
} ) ;
if ( orgRoot == null ) {
orgRoot = new OrgRoot ( ) ;
orgRoot . orgRootOrder = order ;
order = order + 1 ;
orgRoot . orgRootName = item . orgRoot ;
orgRoot . orgRootShortName = item . orgShortname ;
const rank : any = item . orgRank ;
orgRoot . orgRootRank = rank ;
orgRoot . orgRootRankSub = item . orgSubRank ;
orgRoot . DEPARTMENT_CODE = item . DEPARTMENT_CODE ;
orgRoot . DIVISION_CODE = item . DIVISION_CODE ;
orgRoot . SECTION_CODE = item . SECTION_CODE ;
orgRoot . JOB_CODE = item . JOB_CODE ;
orgRoot . orgRevisionId = orgRevision . id ;
orgRoot . createdUserId = request . user . sub ;
orgRoot . createdFullName = request . user . name ;
orgRoot . lastUpdateUserId = request . user . sub ;
orgRoot . lastUpdateFullName = request . user . name ;
orgRoot . createdAt = new Date ( ) ;
orgRoot . lastUpdatedAt = new Date ( ) ;
await this . orgRootRepo . save ( orgRoot ) ;
}
let orgChild1 = await this . orgChild1Repo . findOne ( {
2025-03-24 21:57:50 +07:00
where : {
orgChild1Name : item.orgChild1 ,
orgRootId : orgRoot.id ,
orgRevisionId : orgRevision.id ,
} ,
2025-03-03 14:52:29 +07:00
relations : [ "orgChild2s" ] ,
} ) ;
if ( orgChild1 == null ) {
orgChild1 = new OrgChild1 ( ) ;
2025-02-12 10:43:01 +07:00
orgChild1 . orgRootId = orgRoot . id ;
2025-03-03 14:52:29 +07:00
orgChild1 . orgChild1Order =
orgRoot == null || orgRoot . orgChild1s == null || orgRoot . orgChild1s . length == 0
? 1
: orgRoot . orgChild1s . length + 1 ;
2025-02-12 10:43:01 +07:00
orgChild1 . orgChild1Name = item . orgChild1 ;
orgChild1 . orgChild1ShortName = item . orgShortname ;
const rank : any = item . orgRank ;
orgChild1 . orgChild1Rank = rank ;
orgChild1 . orgChild1RankSub = item . orgSubRank ;
orgChild1 . DEPARTMENT_CODE = item . DEPARTMENT_CODE ;
orgChild1 . DIVISION_CODE = item . DIVISION_CODE ;
orgChild1 . SECTION_CODE = item . SECTION_CODE ;
orgChild1 . JOB_CODE = item . JOB_CODE ;
orgChild1 . orgRevisionId = orgRevision . id ;
orgChild1 . createdUserId = request . user . sub ;
orgChild1 . createdFullName = request . user . name ;
orgChild1 . lastUpdateUserId = request . user . sub ;
orgChild1 . lastUpdateFullName = request . user . name ;
orgChild1 . createdAt = new Date ( ) ;
orgChild1 . lastUpdatedAt = new Date ( ) ;
await this . orgChild1Repo . save ( orgChild1 ) ;
2025-03-03 14:52:29 +07:00
}
orgChild2 . orgChild2Order =
orgChild1 == null || orgChild1 . orgChild2s == null || orgChild1 . orgChild2s . length == 0
? 1
: orgChild1 . orgChild2s . length + 1 ;
orgChild2 . orgRootId = orgRoot . id ;
orgChild2 . orgChild1Id = orgChild1 . id ;
orgChild2 . orgChild2Name = item . orgChild2 ;
orgChild2 . orgChild2ShortName = item . orgShortname ;
const rank : any = item . orgRank ;
orgChild2 . orgChild2Rank = rank ;
orgChild2 . orgChild2RankSub = item . orgSubRank ;
orgChild2 . DEPARTMENT_CODE = item . DEPARTMENT_CODE ;
orgChild2 . DIVISION_CODE = item . DIVISION_CODE ;
orgChild2 . SECTION_CODE = item . SECTION_CODE ;
orgChild2 . JOB_CODE = item . JOB_CODE ;
orgChild2 . orgRevisionId = orgRevision . id ;
orgChild2 . createdUserId = request . user . sub ;
orgChild2 . createdFullName = request . user . name ;
orgChild2 . lastUpdateUserId = request . user . sub ;
orgChild2 . lastUpdateFullName = request . user . name ;
orgChild2 . createdAt = new Date ( ) ;
orgChild2 . lastUpdatedAt = new Date ( ) ;
await this . orgChild2Repo . save ( orgChild2 ) ;
}
2025-02-12 10:43:01 +07:00
2025-03-03 14:52:29 +07:00
//create child3
const IMPORT_CHILD3 = await this . IMPORT_ORGRepo . find ( {
2025-02-12 10:43:01 +07:00
where : {
orgRoot : Not ( "" ) ,
orgChild1 : Not ( "" ) ,
orgChild2 : Not ( "" ) ,
2025-03-03 14:52:29 +07:00
orgChild3 : Not ( "" ) ,
2025-02-12 10:43:01 +07:00
} ,
} ) ;
2025-03-03 14:52:29 +07:00
for ( const item of IMPORT_CHILD3 ) {
const orgChild3 = new OrgChild3 ( ) ;
let orgRoot = await this . orgRootRepo . findOne ( {
2025-03-24 21:57:50 +07:00
where : { orgRootName : item.orgRoot , orgRevisionId : orgRevision.id } ,
2025-03-03 14:52:29 +07:00
relations : [ "orgChild1s" ] ,
} ) ;
if ( orgRoot == null ) {
orgRoot = new OrgRoot ( ) ;
orgRoot . orgRootOrder = order ;
order = order + 1 ;
orgRoot . orgRootName = item . orgRoot ;
orgRoot . orgRootShortName = item . orgShortname ;
const rank : any = item . orgRank ;
orgRoot . orgRootRank = rank ;
orgRoot . orgRootRankSub = item . orgSubRank ;
orgRoot . DEPARTMENT_CODE = item . DEPARTMENT_CODE ;
orgRoot . DIVISION_CODE = item . DIVISION_CODE ;
orgRoot . SECTION_CODE = item . SECTION_CODE ;
orgRoot . JOB_CODE = item . JOB_CODE ;
orgRoot . orgRevisionId = orgRevision . id ;
orgRoot . createdUserId = request . user . sub ;
orgRoot . createdFullName = request . user . name ;
orgRoot . lastUpdateUserId = request . user . sub ;
orgRoot . lastUpdateFullName = request . user . name ;
orgRoot . createdAt = new Date ( ) ;
orgRoot . lastUpdatedAt = new Date ( ) ;
await this . orgRootRepo . save ( orgRoot ) ;
}
let orgChild1 = await this . orgChild1Repo . findOne ( {
2025-03-24 21:57:50 +07:00
where : {
orgChild1Name : item.orgChild1 ,
orgRootId : orgRoot.id ,
orgRevisionId : orgRevision.id ,
} ,
2025-03-03 14:52:29 +07:00
relations : [ "orgChild2s" ] ,
} ) ;
if ( orgChild1 == null ) {
orgChild1 = new OrgChild1 ( ) ;
orgChild1 . orgChild1Order =
orgRoot == null || orgRoot . orgChild1s == null || orgRoot . orgChild1s . length == 0
? 1
: orgRoot . orgChild1s . length + 1 ;
orgChild1 . orgRootId = orgRoot . id ;
orgChild1 . orgChild1Name = item . orgChild1 ;
orgChild1 . orgChild1ShortName = item . orgShortname ;
const rank : any = item . orgRank ;
orgChild1 . orgChild1Rank = rank ;
orgChild1 . orgChild1RankSub = item . orgSubRank ;
orgChild1 . DEPARTMENT_CODE = item . DEPARTMENT_CODE ;
orgChild1 . DIVISION_CODE = item . DIVISION_CODE ;
orgChild1 . SECTION_CODE = item . SECTION_CODE ;
orgChild1 . JOB_CODE = item . JOB_CODE ;
orgChild1 . orgRevisionId = orgRevision . id ;
orgChild1 . createdUserId = request . user . sub ;
orgChild1 . createdFullName = request . user . name ;
orgChild1 . lastUpdateUserId = request . user . sub ;
orgChild1 . lastUpdateFullName = request . user . name ;
orgChild1 . createdAt = new Date ( ) ;
orgChild1 . lastUpdatedAt = new Date ( ) ;
await this . orgChild1Repo . save ( orgChild1 ) ;
}
2025-04-29 15:33:37 +07:00
let orgChild2 = await this . orgChild2Repo . findOne ( {
where : {
orgChild2Name : item.orgChild2 ,
orgChild1Id : orgChild1.id ,
orgRootId : orgRoot.id ,
orgRevisionId : orgRevision.id ,
} ,
relations : [ "orgChild3s" ] ,
} ) ;
if ( orgChild2 == null ) {
orgChild2 = new OrgChild2 ( ) ;
orgChild2 . orgChild2Order =
orgChild1 == null || orgChild1 . orgChild2s == null || orgChild1 . orgChild2s . length == 0
? 1
: orgChild1 . orgChild2s . length + 1 ;
orgChild2 . orgRootId = orgRoot . id ;
orgChild2 . orgChild1Id = orgChild1 . id ;
orgChild2 . orgChild2Name = item . orgChild2 ;
orgChild2 . orgChild2ShortName = item . orgShortname ;
const rank : any = item . orgRank ;
orgChild2 . orgChild2Rank = rank ;
orgChild2 . orgChild2RankSub = item . orgSubRank ;
orgChild2 . DEPARTMENT_CODE = item . DEPARTMENT_CODE ;
orgChild2 . DIVISION_CODE = item . DIVISION_CODE ;
orgChild2 . SECTION_CODE = item . SECTION_CODE ;
orgChild2 . JOB_CODE = item . JOB_CODE ;
orgChild2 . orgRevisionId = orgRevision . id ;
orgChild2 . createdUserId = request . user . sub ;
orgChild2 . createdFullName = request . user . name ;
orgChild2 . lastUpdateUserId = request . user . sub ;
orgChild2 . lastUpdateFullName = request . user . name ;
orgChild2 . createdAt = new Date ( ) ;
orgChild2 . lastUpdatedAt = new Date ( ) ;
await this . orgChild2Repo . save ( orgChild2 ) ;
}
orgChild3 . orgChild3Order =
orgChild2 == null || orgChild2 . orgChild3s == null || orgChild2 . orgChild3s . length == 0
? 1
: orgChild2 . orgChild3s . length + 1 ;
orgChild3 . orgRootId = orgRoot . id ;
orgChild3 . orgChild1Id = orgChild1 . id ;
orgChild3 . orgChild2Id = orgChild2 . id ;
orgChild3 . orgChild3Name = item . orgChild3 ;
orgChild3 . orgChild3ShortName = item . orgShortname ;
const rank : any = item . orgRank ;
orgChild3 . orgChild3Rank = rank ;
orgChild3 . orgChild3RankSub = item . orgSubRank ;
orgChild3 . DEPARTMENT_CODE = item . DEPARTMENT_CODE ;
orgChild3 . DIVISION_CODE = item . DIVISION_CODE ;
orgChild3 . SECTION_CODE = item . SECTION_CODE ;
orgChild3 . JOB_CODE = item . JOB_CODE ;
orgChild3 . orgRevisionId = orgRevision . id ;
orgChild3 . createdUserId = request . user . sub ;
orgChild3 . createdFullName = request . user . name ;
orgChild3 . lastUpdateUserId = request . user . sub ;
orgChild3 . lastUpdateFullName = request . user . name ;
orgChild3 . createdAt = new Date ( ) ;
orgChild3 . lastUpdatedAt = new Date ( ) ;
await this . orgChild3Repo . save ( orgChild3 ) ;
}
return new HttpSuccess ( ) ;
}
/ * *
* @summary ท ะ เ บ ี ย น ป ร ะ ว ั ต ิ ข ้ า ร า ช ก า ร
* /
@Post ( "mapposition-Officer" )
async MapPositionOfficer ( @Request ( ) request : { user : Record < string , any > } ) {
const officer = await AppDataSource . getRepository ( Profile )
. 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 officer ) {
rowCount ++ ;
console . log ( rowCount ) ;
const item = await AppDataSource . getRepository ( OFFICER )
. createQueryBuilder ( "OFFICER" )
. where ( { CIT : _item.citizenId } )
. getOne ( ) ;
if ( item == null ) {
continue ;
}
let posMaster = new PosMaster ( ) ;
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 . posMasterRepo . save ( posMaster ) ;
posMaster . ancestorDNA = posMaster . id ;
await this . posMasterRepo . save ( posMaster ) ;
let position = new Position ( ) ;
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 : positionType } ,
} ) ;
}
if ( positionLevel ) {
if ( type_ == null ) {
level_ = await this . posLevelRepo . findOne ( {
where : {
posLevelName : positionLevel ,
} ,
} ) ;
} else {
level_ = await this . posLevelRepo . 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 ( {
2025-03-24 21:57:50 +07:00
where : {
2025-04-29 15:33:37 +07:00
posExecutiveName : item.ADMIN_NAME ,
2025-03-24 21:57:50 +07:00
} ,
2025-03-03 14:52:29 +07:00
} ) ;
2025-04-29 15:33:37 +07:00
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 ) ;
2025-03-03 14:52:29 +07:00
}
2025-04-29 15:33:37 +07:00
position . posExecutiveId = posExecutive == null ? _null : posExecutive.id ;
position . positionName = item . WORK_LINE_NAME == "" ? _null : item.WORK_LINE_NAME ;
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 . posMasterRepo . delete ( { id : posMaster.id } ) ;
continue ;
}
await this . positionRepo . save ( position ) ;
2025-03-03 14:52:29 +07:00
}
2025-01-31 17:35:56 +07:00
return new HttpSuccess ( ) ;
}
2025-02-14 09:58:51 +07:00
/ * *
2025-04-29 15:33:37 +07:00
* @summary ท ะ เ บ ี ย น ป ร ะ ว ั ต ิ ล ู ก จ ้ า ง
2025-02-14 09:58:51 +07:00
* /
2025-04-29 15:33:37 +07:00
@Post ( "mapposition-Employee" )
async MapPositionEmployee ( @Request ( ) request : { user : Record < string , any > } ) {
const employee = await AppDataSource . getRepository ( ProfileEmployee )
2025-03-17 15:42:48 +07:00
. createQueryBuilder ( "profile" )
2025-03-24 21:57:50 +07:00
. leftJoinAndSelect ( "profile.next_holders" , "posMaster" )
2025-03-17 15:42:48 +07:00
// .where({citizenId: "1720700018869"})
. where ( "posMaster.id IS NULL" )
. getMany ( ) ;
2025-03-13 14:53:55 +07:00
let rowCount = 0 ;
2025-03-10 09:52:50 +07:00
let _null : any = null ;
2025-02-14 09:58:51 +07:00
let type_ : any = null ;
let level_ : any = null ;
const orgRevision = await this . orgRevisionRepo . findOne ( {
2025-05-01 09:40:35 +07:00
where : { orgRevisionIsCurrent : true , orgRevisionIsDraft : false } ,
2025-04-29 15:33:37 +07:00
// where: { id: "30e594c9-a65b-485e-a4c5-71aa497e6b8a" },
2025-02-14 09:58:51 +07:00
} ) ;
if ( orgRevision == null ) return new HttpSuccess ( ) ;
2025-04-29 15:33:37 +07:00
for await ( const _item of employee ) {
2025-02-14 09:58:51 +07:00
rowCount ++ ;
2025-03-12 22:44:45 +07:00
console . log ( rowCount ) ;
2025-04-29 15:33:37 +07:00
const item = await AppDataSource . getRepository ( EMPLOYEE )
. createQueryBuilder ( "EMPLOYEE" )
2025-03-17 15:42:48 +07:00
. where ( { CIT : _item.citizenId } )
2025-03-15 03:45:37 +07:00
. getOne ( ) ;
2025-02-14 09:58:51 +07:00
2025-03-15 03:45:37 +07:00
if ( item == null ) {
2025-02-14 09:58:51 +07:00
continue ;
}
2025-04-29 15:33:37 +07:00
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 ( ) ;
2025-03-17 15:42:48 +07:00
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 ;
2025-03-13 14:53:55 +07:00
if ( orgRoot != null ) {
posMaster . orgRootId = orgRoot . id ? ? _null ;
} else {
let orgChild1 = await this . orgChild1Repo . findOne ( {
2025-03-12 22:44:45 +07:00
where : {
2025-03-13 14:53:55 +07:00
DEPARTMENT_CODE : item.DEPARTMENT_CODE ,
DIVISION_CODE : item.DIVISION_CODE ,
SECTION_CODE : item.SECTION_CODE ,
JOB_CODE : item.JOB_CODE ,
2025-03-12 22:44:45 +07:00
orgRevisionId : orgRevision.id ,
2025-02-14 09:58:51 +07:00
} ,
2025-03-13 14:53:55 +07:00
} ) ;
if ( orgChild1 != null ) {
posMaster . orgRootId = orgChild1 . orgRootId ? ? _null ;
posMaster . orgChild1Id = orgChild1 . id ? ? _null ;
2025-03-17 15:42:48 +07:00
} else {
2025-03-13 14:53:55 +07:00
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 ,
2025-02-14 09:58:51 +07:00
} ,
2025-03-13 14:53:55 +07:00
} ) ;
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 ,
2025-03-12 22:44:45 +07:00
} ,
2025-03-13 14:53:55 +07:00
} ) ;
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 ;
}
}
}
}
2025-03-12 22:44:45 +07:00
}
2025-04-29 15:33:37 +07:00
// posMaster.statusReport = "PENDING";
posMaster . posMasterOrder = 1 ;
// posMaster.isCondition = false;
2025-02-14 09:58:51 +07:00
posMaster . isStaff = false ;
posMaster . isDirector = false ;
posMaster . isSit = false ;
2025-03-24 21:57:50 +07:00
posMaster . next_holderId = _item . id ;
posMaster . posMasterNo =
item . POS_NUM_CODE == "" || item . POS_NUM_CODE == null ? _null : Number ( item . POS_NUM_CODE ) ;
2025-02-14 09:58:51 +07:00
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 ( ) ;
2025-04-29 15:33:37 +07:00
if ( posMaster . orgRootId == null ) {
continue ;
}
await this . posMasterEmpRepo . save ( posMaster ) ;
2025-02-14 09:58:51 +07:00
posMaster . ancestorDNA = posMaster . id ;
2025-04-29 15:33:37 +07:00
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 } ,
2025-02-14 09:58:51 +07:00
} ) ;
}
2025-04-29 15:33:37 +07:00
if ( positionLevel ) {
2025-02-14 09:58:51 +07:00
if ( type_ == null ) {
2025-04-29 15:33:37 +07:00
level_ = await this . posLevelEmpRepo . findOne ( {
2025-02-14 09:58:51 +07:00
where : {
2025-04-29 15:33:37 +07:00
posLevelName : positionLevel ,
2025-02-14 09:58:51 +07:00
} ,
} ) ;
} else {
2025-04-29 15:33:37 +07:00
level_ = await this . posLevelEmpRepo . findOne ( {
2025-02-14 09:58:51 +07:00
where : {
2025-04-29 15:33:37 +07:00
posLevelName : positionLevel ,
2025-02-14 09:58:51 +07:00
posTypeId : type_.id ,
} ,
} ) ;
}
}
2025-04-29 15:33:37 +07:00
2025-02-14 09:58:51 +07:00
position . posMasterId = posMaster . id ;
2025-04-29 15:33:37 +07:00
// position.isSpecial = false;
2025-02-14 09:58:51 +07:00
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 ( ) ;
2025-03-03 14:52:29 +07:00
2025-04-29 15:33:37 +07:00
// 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 ] ;
2025-02-14 09:58:51 +07:00
position . posTypeId =
2025-04-29 15:33:37 +07:00
type_ != null && type_ . posTypeName == positionType && type_ ? type_.id : null ;
2025-02-14 09:58:51 +07:00
position . posLevelId =
2025-04-29 15:33:37 +07:00
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 ) ;
2025-02-14 09:58:51 +07:00
}
return new HttpSuccess ( ) ;
}
2025-02-26 15:45:45 +07:00
2025-03-04 15:29:08 +07:00
/ * *
* @summary เ ง ิ น เ ด ื อ น ข ้ า ร า ช ก า ร
* /
@Post ( "uploadProfileSalary-OfficerEntry" )
async UploadFileSQLSalaryEntry ( @Request ( ) request : { user : Record < string , any > } ) {
let rowCount = 0 ;
2025-03-10 09:52:50 +07:00
let _null : any = null ;
2025-03-04 15:29:08 +07:00
let sqlStatements : string [ ] = [ ] ;
2025-04-05 19:21:50 +07:00
// const [profiles, total] = await AppDataSource.getRepository(Profile)
// .createQueryBuilder("profile")
// .select(["profile.citizenId", "profile.id"])
// .orderBy("profile.citizenId", "ASC")
// // .skip(0)
// // .take(1000)
// .getManyAndCount();
const profiles = await this . profileRepo . find ( {
where : { profileSalary : { isEntry : Not ( true ) } } ,
order : {
citizenId : "ASC" ,
} ,
select : [ "citizenId" , "id" ] ,
} ) ;
// const filePath = path.join(__dirname, "salaryProfile1.csv");
2025-03-04 15:29:08 +07:00
// CSV Header
2025-04-05 19:21:50 +07:00
// 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","isEntry"\n`;
2025-03-04 15:29:08 +07:00
2025-04-05 19:21:50 +07:00
// fs.appendFile(filePath, csvData, (err) => {
// if (err) {
// console.error("Error writing CSV file:", err);
// } else {
// console.log("Salary profiles successfully written to salaryProfile.csv");
// }
// });
2025-03-04 15:29:08 +07:00
// await Promise.all(
// profiles.map(async (_item) => {
for await ( const _item of profiles ) {
const existingProfile = await this . ProfileSalariesRepo . find ( {
where : { posNo : _item.citizenId } ,
order : {
Order : "ASC" ,
} ,
} ) ;
let order = 1 ;
// await Promise.all(
// existingProfile.map(async (item) => {
for await ( const item of existingProfile ) {
rowCount ++ ;
const profileSalary : any = new ProfileSalary ( ) ;
profileSalary . profileId = _item . id ;
profileSalary . order = item . Order ;
profileSalary . commandDateAffect =
item . Date == null
2025-03-10 09:52:50 +07:00
? _null
2025-03-04 15:29:08 +07:00
: new Date ( item . Date . setDate ( item . Date . getDate ( ) + 1 ) )
. toISOString ( )
. replace ( "T" , " " )
. substring ( 0 , 19 ) ;
2025-04-03 16:40:19 +07:00
profileSalary . remark = ` ${ item . SalaryRef } ${ item . PositionName } ` ;
2025-03-04 15:29:08 +07:00
profileSalary . amount = item . Amount ;
profileSalary . positionSalaryAmount = item . PositionSalaryAmount ;
// const str = item.PosNoName;
// const parts = str.split(" ");
// if (parts.length > 1) {
// const posNo = parts.at(-1);
// const posNoAbb = parts.slice(0, -1).join(" ");
// profileSalary.posNoAbb = posNoAbb;
// profileSalary.posNo = posNo;
// }
profileSalary . posNo = item . PosNoName ;
profileSalary . positionLevel = item . PositionLevelName ;
profileSalary . positionCee = this . canConvertToInt ( item . PositionLevelName )
? item . PositionLevelName
2025-03-10 09:52:50 +07:00
: _null ;
2025-03-04 15:29:08 +07:00
profileSalary . positionType = item . PositionTypeName ;
profileSalary . isEntry = true ;
profileSalary . createdUserId = request . user . sub ;
profileSalary . createdFullName = request . user . name ;
profileSalary . lastUpdateUserId = request . user . sub ;
profileSalary . lastUpdateFullName = request . user . name ;
profileSalary . createdAt = new Date ( ) . toISOString ( ) . split ( "T" ) [ 0 ] ;
profileSalary . lastUpdatedAt = new Date ( ) . toISOString ( ) . split ( "T" ) [ 0 ] ;
// const result = uuidv7();
// profileSalary.id = result;
await this . salaryRepo . save ( profileSalary ) ;
// 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"}","${profileSalary.isEntry || "NULL"}"\n`;
// fs.appendFile(filePath, csvData.replace('"NULL"', "NULL"), (err) => {
// if (err) {
// console.error("Error writing CSV file:", err);
// } else {
console . log ( "Salary profiles successfully written to salaryProfile.csv: " + rowCount ) ;
// }
// });
}
2025-05-06 15:04:31 +07:00
console . log ( ">>>>>>>>>>>>>>>>>>> " + _item . citizenId ) ;
2025-03-04 15:29:08 +07:00
order = 1 ;
}
return new HttpSuccess ( ) ;
}
canConvertToInt ( str : string ) {
try {
const num = Number ( str ) ;
return Number . isInteger ( num ) ;
} catch ( error ) {
return null ;
}
}
2025-03-14 13:36:26 +07:00
/ * *
* @summary เ ง ิ น เ ด ื อ น ข ้ า ร า ช ก า ร
* /
@Post ( "mark-director" )
async UpdateMarkDirector ( @Request ( ) request : { user : Record < string , any > } ) {
let rowCount = 0 ;
const posMaster = await this . posMasterRepo . find ( {
where : { positions : { posExecutiveId : Not ( IsNull ( ) ) } } ,
} ) ;
for await ( const _item of posMaster ) {
rowCount ++ ;
_item . isDirector = true ;
await this . posMasterRepo . save ( _item ) ;
console . log ( rowCount ) ;
}
return new HttpSuccess ( ) ;
}
2025-03-17 15:42:48 +07:00
/ * *
* @summary เ ง ิ น เ ด ื อ น ข ้ า ร า ช ก า ร
* /
@Post ( "update-amount" )
async UpdateAmount ( @Request ( ) request : { user : Record < string , any > } ) {
let rowCount = 0 ;
2025-03-24 21:57:50 +07:00
const profile : any = await this . profileRepo . find ( { where : { amount : LessThanOrEqual ( 0 ) } } ) ;
2025-03-17 15:42:48 +07:00
for await ( const _item of profile ) {
2025-03-24 21:57:50 +07:00
const OFFICER = await this . OFFICERRepo . findOne ( {
select : [ "CIT" , "SALARY" ] ,
where : { CIT : _item.citizenId } ,
} ) ;
2025-03-17 15:42:48 +07:00
if ( OFFICER ) {
rowCount ++ ;
_item . amount = Number ( OFFICER . SALARY ) ;
await this . profileRepo . save ( _item ) ;
console . log ( rowCount ) ;
}
}
return new HttpSuccess ( ) ;
}
2025-03-24 21:57:50 +07:00
/ * *
* @summary เ ง ิ น เ ด ื อ น ข ้ า ร า ช ก า ร
* /
@Post ( "update-profileSalary" )
async UpdateProfileSalary ( @Request ( ) request : { user : Record < string , any > } ) {
let rowCount = 0 ;
2025-05-01 13:35:54 +07:00
const profileSalarys : any = await this . salaryRepo . find ( {
where : { refId : Not ( IsNull ( ) ) , profileEmployeeId : IsNull ( ) , posNumCodeSit : IsNull ( ) } ,
} ) ;
2025-03-24 21:57:50 +07:00
for await ( const _item of profileSalarys ) {
2025-03-25 09:36:38 +07:00
const OFFICER = await this . HR_POSITION_OFFICERRepo . findOne ( {
select : [ "id" , "POS_NUM_CODE_SIT" , "POS_NUM_CODE_SIT_ABB" ] ,
where : { id : _item.refId } ,
2025-03-24 21:57:50 +07:00
} ) ;
if ( OFFICER ) {
rowCount ++ ;
_item . posNumCodeSit = OFFICER . POS_NUM_CODE_SIT ;
_item . posNumCodeSitAbb = OFFICER . POS_NUM_CODE_SIT_ABB ;
2025-03-26 10:19:45 +07:00
await this . salaryRepo . save ( _item ) ;
2025-03-24 21:57:50 +07:00
console . log ( rowCount ) ;
}
}
return new HttpSuccess ( ) ;
}
2025-04-23 09:33:26 +07:00
2025-05-01 13:18:57 +07:00
/ * *
* @summary เ ง ิ น เ ด ื อ น ข ้ า ร า ช ก า ร
* /
@Post ( "update-profileSalaryEmp" )
async UpdateProfileSalaryEmp ( @Request ( ) request : { user : Record < string , any > } ) {
let rowCount = 0 ;
2025-05-01 13:35:54 +07:00
const profileSalarys : any = await this . salaryRepo . find ( {
where : { refId : Not ( IsNull ( ) ) , profileId : IsNull ( ) , posNumCodeSit : IsNull ( ) } ,
} ) ;
2025-05-01 13:18:57 +07:00
for await ( const _item of profileSalarys ) {
const EMPLOYEE = await this . HR_POSITION_EMPLOYEERepo . findOne ( {
select : [ "id" , "POS_NUM_CODE_SIT" , "POS_NUM_CODE_SIT_ABB" ] ,
where : { id : _item.refId } ,
} ) ;
if ( EMPLOYEE ) {
rowCount ++ ;
_item . posNumCodeSit = EMPLOYEE . POS_NUM_CODE_SIT ;
_item . posNumCodeSitAbb = EMPLOYEE . POS_NUM_CODE_SIT_ABB ;
await this . salaryRepo . save ( _item ) ;
console . log ( rowCount ) ;
}
}
return new HttpSuccess ( ) ;
}
2025-04-23 09:33:26 +07:00
OrgRank ( value : string ) {
switch ( value . trim ( ) . toUpperCase ( ) ) {
case "DEPARTMENT" :
return "หน่วยงาน" ;
case "OFFICE" :
return "ส่วนราชการระดับกอง/สำนักงาน หรือเทียบเท่า" ;
case "DIVISION" :
return "ส่วนราชการระดับส่วน/กลุ่มภารกิจ" ;
case "SECTION" :
return "ส่วนราชการระดับฝ่าย/กลุ่มงาน หรือเทียบเท่า" ;
default :
return "" ;
}
}
OrgRankSub ( value : string ) {
switch ( value . trim ( ) . toUpperCase ( ) ) {
case "BUREAU" :
return "สำนัก" ;
case "OFFICE" :
return "สำนักงาน" ;
case "DISTRICT" :
return "สำนักงานเขต" ;
case "DIVISION" :
return "กอง" ;
case "INSTITUTION" :
return "สถาบัน" ;
case "HOSPITAL" :
return "โรงพยาบาล" ;
case "CENTER" :
return "ศูนย์" ;
case "MEDICAL" :
return "ศูนย์บริการการแพทย์" ;
case "HEALTHMAJOR" :
return "ศูนย์บริการสาธารณสุข" ;
case "UNIT" :
return "หน่วย" ;
case "SECTION" :
return "ส่วน" ;
case "FACTION" :
return "ฝ่าย" ;
case "GROUPWORK" :
return "กลุ่มงาน" ;
case "HEALTHBRANCH" :
return "ศูนย์บริการสาธารณสุขสาขา" ;
case "TRAINING" :
return "ศูนย์ฝึกอาชีพ" ;
case "SCHOOL" :
return "โรงเรียนฝึกอาชีพ" ;
case "ELDERLY" :
return "บ้านพักผู้สูงอายุ" ;
case "PARK" :
return "สวนสาธารณะ" ;
case "FIRESTATION" :
return "สถานีดับเพลิง" ;
case "WORK" :
return "งาน" ;
case "PRIMARYSCHOOL" :
return "โรงเรียนประถมศึกษา" ;
case "SECONDARYSCHOOL" :
return "โรงเรียนมัธยมศึกษา" ;
case "MISSION" :
return "กลุ่มภารกิจ" ;
default :
return "" ;
}
}
/ * *
* @summary Import Org
* /
@Post ( "ExportOrg" )
async ExportOrg ( @Request ( ) request : { user : Record < string , any > } ) {
const orgRevision = await this . orgRevisionRepo . findOne ( {
where : { orgRevisionIsCurrent : false , orgRevisionIsDraft : true } ,
// where: { id: "30e594c9-a65b-485e-a4c5-71aa497e6b8a" },
} ) ;
if ( orgRevision == null ) return new HttpSuccess ( ) ;
//create root
const orgRaw = await this . orgRootRepo . find ( {
where : { orgRevisionId : orgRevision.id } ,
order : {
orgRootOrder : "ASC" ,
} ,
} ) ;
let order = 1 ;
let result = [ ] ;
for await ( const item of orgRaw ) {
console . log ( item . orgRootOrder ) ;
const data = {
ORDER : order ,
HRMS_DEP_CODE : "" ,
HRMS_DIV_CODE : "" ,
DEPARTMENT_CODE : item.DEPARTMENT_CODE ,
DIVISION_CODE : item.DIVISION_CODE ,
SECTION_CODE : item.SECTION_CODE ,
JOB_CODE : item.JOB_CODE ,
orgRoot : item.orgRootName ,
orgChild1 : "" ,
orgChild2 : "" ,
orgChild3 : "" ,
orgChild4 : "" ,
orgShortname : item.orgRootShortName ,
orgRank : this.OrgRank ( item . orgRootRank ) ,
orgSubRank : this.OrgRankSub ( item . orgRootRankSub ) ,
} ;
await result . push ( data ) ;
order ++ ;
const org1Raw = await this . orgChild1Repo . find ( {
where : { orgRevisionId : orgRevision.id , orgRootId : item.id } ,
order : {
orgChild1Order : "ASC" ,
} ,
relations : [ "orgRoot" ] ,
} ) ;
for await ( const item1 of org1Raw ) {
const data1 = {
ORDER : order ,
HRMS_DEP_CODE : "" ,
HRMS_DIV_CODE : "" ,
DEPARTMENT_CODE : item1.DEPARTMENT_CODE ,
DIVISION_CODE : item1.DIVISION_CODE ,
SECTION_CODE : item1.SECTION_CODE ,
JOB_CODE : item1.JOB_CODE ,
orgRoot : item1.orgRoot.orgRootName ,
orgChild1 : item1.orgChild1Name ,
orgChild2 : "" ,
orgChild3 : "" ,
orgChild4 : "" ,
orgShortname : item1.orgChild1ShortName ,
orgRank : this.OrgRank ( item1 . orgChild1Rank ) ,
orgSubRank : this.OrgRankSub ( item1 . orgChild1RankSub ) ,
} ;
await result . push ( data1 ) ;
order ++ ;
const org2Raw = await this . orgChild2Repo . find ( {
where : { orgRevisionId : orgRevision.id , orgRootId : item.id , orgChild1Id : item1.id } ,
order : {
orgChild2Order : "ASC" ,
} ,
relations : [ "orgRoot" , "orgChild1" ] ,
} ) ;
for await ( const item2 of org2Raw ) {
const data2 = {
ORDER : order ,
HRMS_DEP_CODE : "" ,
HRMS_DIV_CODE : "" ,
DEPARTMENT_CODE : item2.DEPARTMENT_CODE ,
DIVISION_CODE : item2.DIVISION_CODE ,
SECTION_CODE : item2.SECTION_CODE ,
JOB_CODE : item2.JOB_CODE ,
orgRoot : item2.orgRoot.orgRootName ,
orgChild1 : item2.orgChild1.orgChild1Name ,
orgChild2 : item2.orgChild2Name ,
orgChild3 : "" ,
orgChild4 : "" ,
orgShortname : item2.orgChild2ShortName ,
orgRank : this.OrgRank ( item2 . orgChild2Rank ) ,
orgSubRank : this.OrgRankSub ( item2 . orgChild2RankSub ) ,
} ;
await result . push ( data2 ) ;
order ++ ;
const org3Raw = await this . orgChild3Repo . find ( {
where : {
orgRevisionId : orgRevision.id ,
orgRootId : item.id ,
orgChild1Id : item1.id ,
orgChild2Id : item2.id ,
} ,
order : {
orgChild3Order : "ASC" ,
} ,
relations : [ "orgRoot" , "orgChild1" , "orgChild2" ] ,
} ) ;
for await ( const item3 of org3Raw ) {
const data3 = {
ORDER : order ,
HRMS_DEP_CODE : "" ,
HRMS_DIV_CODE : "" ,
DEPARTMENT_CODE : item3.DEPARTMENT_CODE ,
DIVISION_CODE : item3.DIVISION_CODE ,
SECTION_CODE : item3.SECTION_CODE ,
JOB_CODE : item3.JOB_CODE ,
orgRoot : item3.orgRoot.orgRootName ,
orgChild1 : item3.orgChild1.orgChild1Name ,
orgChild2 : item3.orgChild2.orgChild2Name ,
orgChild3 : item3.orgChild3Name ,
orgChild4 : "" ,
orgShortname : item3.orgChild3ShortName ,
orgRank : this.OrgRank ( item3 . orgChild3Rank ) ,
orgSubRank : this.OrgRankSub ( item3 . orgChild3RankSub ) ,
} ;
await result . push ( data3 ) ;
order ++ ;
const org4Raw = await this . orgChild4Repo . find ( {
where : {
orgRevisionId : orgRevision.id ,
orgRootId : item.id ,
orgChild1Id : item1.id ,
orgChild2Id : item2.id ,
orgChild3Id : item3.id ,
} ,
order : {
orgChild4Order : "ASC" ,
} ,
relations : [ "orgRoot" , "orgChild1" , "orgChild2" , "orgChild3" ] ,
} ) ;
for await ( const item4 of org4Raw ) {
const data4 = {
ORDER : order ,
HRMS_DEP_CODE : "" ,
HRMS_DIV_CODE : "" ,
DEPARTMENT_CODE : item4.DEPARTMENT_CODE ,
DIVISION_CODE : item4.DIVISION_CODE ,
SECTION_CODE : item4.SECTION_CODE ,
JOB_CODE : item4.JOB_CODE ,
orgRoot : item4.orgRoot.orgRootName ,
orgChild1 : item4.orgChild1.orgChild1Name ,
orgChild2 : item4.orgChild2.orgChild2Name ,
orgChild3 : item4.orgChild3.orgChild3Name ,
orgChild4 : item4.orgChild4Name ,
orgShortname : item4.orgChild4ShortName ,
orgRank : this.OrgRank ( item4 . orgChild4Rank ) ,
orgSubRank : this.OrgRankSub ( item4 . orgChild4RankSub ) ,
} ;
await result . push ( data4 ) ;
order ++ ;
}
}
}
}
}
return new HttpSuccess ( {
template : "exportRawOrg" ,
reportName : "exportRawOrg" ,
data : { data : result } ,
} ) ;
}
2025-04-29 15:33:37 +07:00
/ * *
* @summary ว ิ น ั ย ข ้ า ร า ช ก า ร
* /
@Post ( "uploadProfileDiscipline-Officer" )
async UploadFileSQLDiscipline ( @Request ( ) request : { user : Record < string , any > } ) {
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 < string , any > } ) {
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 < string , any > } ) {
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 < string , any > } ) {
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 ( ) ;
}
2025-05-01 09:40:35 +07:00
/ * *
* @summary เ ป ล ี ่ ย น ช ื ่ อ ข ้ า ร า ช ก า ร
* /
@Post ( "uploadProfileChangeName-Officer" )
async UploadFileSQLChangeName ( @Request ( ) request : { user : Record < string , any > } ) {
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_CHANGENAMERepo . find ( {
where : { CIT : _item.citizenId } ,
// order: { SEQ: "ASC" },
} ) ;
for ( const item of existingProfile ) {
let EFFECT_DATE = "" ;
if ( item . EFFECT_DATE ) {
const [ datePart ] = item . EFFECT_DATE . split ( " " ) ;
const [ day , month , year ] = datePart . split ( "/" ) ;
EFFECT_DATE = ` ${ year } - ${ month . padStart ( 2 , "0" ) } - ${ day . padStart ( 2 , "0" ) } ` ;
}
rowCount ++ ;
const changeName = new ProfileChangeName ( ) ;
changeName . profileId = _item . id ;
changeName . prefix = item . NEW_RANK_NAME == "" ? _item.prefix : item.NEW_RANK_NAME ;
changeName . firstName = item . NEW_FNAME == "" ? _item.firstName : item.NEW_FNAME ;
changeName . lastName = item . NEW_LNAME == "" ? _item.lastName : item.NEW_LNAME ;
changeName . createdUserId = request . user . sub ;
changeName . createdFullName = request . user . name ;
changeName . lastUpdateUserId = request . user . sub ;
changeName . lastUpdateFullName = request . user . name ;
changeName . createdAt = EFFECT_DATE == "" ? new Date ( ) : new Date ( EFFECT_DATE ) ;
changeName . lastUpdatedAt = EFFECT_DATE == "" ? new Date ( ) : new Date ( EFFECT_DATE ) ;
console . log ( ">>>>>>>>>>>>>>>>>>>" + rowCount ) ;
await this . profileChangeNameRepo . save ( await changeName ) ;
}
}
return new HttpSuccess ( ) ;
}
/ * *
* @summary เ ป ล ี ่ ย น ช ื ่ อ ล ู ก จ ้ า ง ป ร ะ จ ำ
* /
@Post ( "uploadProfileChangeName-Employee" )
async UploadFileSQLChangeNameEmp ( @Request ( ) request : { user : Record < string , any > } ) {
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_CHANGENAME_EMPRepo . find ( {
where : { CIT : _item.citizenId } ,
// order: { SEQ: "ASC" },
} ) ;
for ( const item of existingProfile ) {
let EFFECT_DATE = "" ;
if ( item . EFFECT_DATE ) {
const [ datePart ] = item . EFFECT_DATE . split ( " " ) ;
const [ day , month , year ] = datePart . split ( "/" ) ;
EFFECT_DATE = ` ${ year } - ${ month . padStart ( 2 , "0" ) } - ${ day . padStart ( 2 , "0" ) } ` ;
}
rowCount ++ ;
const changeName = new ProfileChangeName ( ) ;
changeName . profileEmployeeId = _item . id ;
changeName . prefix = item . NEW_RANK_NAME == "" ? _item.prefix : item.NEW_RANK_NAME ;
changeName . firstName = item . NEW_FNAME == "" ? _item.firstName : item.NEW_FNAME ;
changeName . lastName = item . NEW_LNAME == "" ? _item.lastName : item.NEW_LNAME ;
changeName . createdUserId = request . user . sub ;
changeName . createdFullName = request . user . name ;
changeName . lastUpdateUserId = request . user . sub ;
changeName . lastUpdateFullName = request . user . name ;
changeName . createdAt = EFFECT_DATE == "" ? new Date ( ) : new Date ( EFFECT_DATE ) ;
changeName . lastUpdatedAt = EFFECT_DATE == "" ? new Date ( ) : new Date ( EFFECT_DATE ) ;
console . log ( ">>>>>>>>>>>>>>>>>>>" + rowCount ) ;
await this . profileChangeNameRepo . save ( await changeName ) ;
}
}
return new HttpSuccess ( ) ;
}
/ * *
* @summary บ ุ ต ร ข ้ า ร า ช ก า ร
* /
@Post ( "uploadProfileChild-Officer" )
async UploadFileSQLChild ( @Request ( ) request : { user : Record < string , any > } ) {
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_CHILDENRepo . find ( {
where : { CIT : _item.citizenId } ,
order : { SEQ : "ASC" } ,
} ) ;
for ( const item of existingProfile ) {
rowCount ++ ;
const child = new ProfileChildren ( ) ;
child . profileId = _item . id ;
child . childrenPrefix = item . RANK_NAME ;
child . childrenFirstName = item . CHILD_FNAME ;
child . childrenLastName = item . CHILD_LNAME ;
child . childrenLive = item . LIFE_STATUS == "2" ? false : true ;
child . createdUserId = request . user . sub ;
child . createdFullName = request . user . name ;
child . lastUpdateUserId = request . user . sub ;
child . lastUpdateFullName = request . user . name ;
child . createdAt = new Date ( ) ;
child . lastUpdatedAt = new Date ( ) ;
console . log ( ">>>>>>>>>>>>>>>>>>>" + rowCount ) ;
await this . profileChildrenRepo . save ( await child ) ;
}
}
return new HttpSuccess ( ) ;
}
/ * *
* @summary บ ุ ต ร ล ู ก จ ้ า ง ป ร ะ จ ำ
* /
@Post ( "uploadProfileChild-Employee" )
async UploadFileSQLChildEmp ( @Request ( ) request : { user : Record < string , any > } ) {
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_CHILDEN_EMPRepo . find ( {
where : { CIT : _item.citizenId } ,
order : { SEQ : "ASC" } ,
} ) ;
for ( const item of existingProfile ) {
rowCount ++ ;
const child = new ProfileChildren ( ) ;
child . profileEmployeeId = _item . id ;
child . childrenPrefix = item . RANK_NAME ;
child . childrenFirstName = item . CHILD_FNAME ;
child . childrenLastName = item . CHILD_LNAME ;
child . childrenLive = item . LIFE_STATUS == "2" ? false : true ;
child . createdUserId = request . user . sub ;
child . createdFullName = request . user . name ;
child . lastUpdateUserId = request . user . sub ;
child . lastUpdateFullName = request . user . name ;
child . createdAt = new Date ( ) ;
child . lastUpdatedAt = new Date ( ) ;
console . log ( ">>>>>>>>>>>>>>>>>>>" + rowCount ) ;
await this . profileChildrenRepo . save ( await child ) ;
}
}
return new HttpSuccess ( ) ;
}
2024-06-06 11:15:26 +07:00
}