From a11b6f152c15788b35ec8f5d0bd5263d3a7a434b Mon Sep 17 00:00:00 2001 From: kittapath Date: Mon, 3 Mar 2025 14:52:29 +0700 Subject: [PATCH] import data --- src/controllers/ImportDataController.ts | 626 +++++++++++++----------- src/controllers/ReportController.ts | 3 - src/entities/HR_EDUCATION.ts | 14 + src/entities/HR_FUND_COURSE_CODE.ts | 35 ++ src/entities/HR_MAJOR_CODE.ts | 28 ++ src/entities/OFFICER.ts | 14 + src/entities/ProfileSalaries.ts | 65 +++ 7 files changed, 502 insertions(+), 283 deletions(-) create mode 100644 src/entities/HR_FUND_COURSE_CODE.ts create mode 100644 src/entities/HR_MAJOR_CODE.ts create mode 100644 src/entities/ProfileSalaries.ts diff --git a/src/controllers/ImportDataController.ts b/src/controllers/ImportDataController.ts index ae5fe722..39741806 100644 --- a/src/controllers/ImportDataController.ts +++ b/src/controllers/ImportDataController.ts @@ -47,6 +47,10 @@ import { OFFICER } from "../entities/OFFICER"; import { Position } from "../entities/Position"; import { PosMaster } from "../entities/PosMaster"; import { positionOfficer } from "../entities/positionOfficer"; +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"; // import { uuidv7 } from "uuidv7"; // import { ProfileSalaries } from "../entities/ProfileSalaries"; @Route("api/v1/org/upload") @@ -74,6 +78,9 @@ export class ImportDataController extends Controller { private HR_PERSONAL_EMP_FAMILYRepo = AppDataSource.getRepository(HR_PERSONAL_EMP_FAMILY); private educationMisRepo = AppDataSource.getRepository(EducationMis); + 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); private provincsRepo = AppDataSource.getRepository(ProvinceImport); private amphurRepo = AppDataSource.getRepository(AmphurImport); private subDistrictRepo = AppDataSource.getRepository(SubDistrictImport); @@ -91,6 +98,7 @@ export class ImportDataController extends Controller { private OFFICERRepo = AppDataSource.getRepository(OFFICER); private positionRepo = AppDataSource.getRepository(Position); private posMasterRepo = AppDataSource.getRepository(PosMaster); + private posExecutiveRepo = AppDataSource.getRepository(PosExecutive); /** * @summary ทะเบียนประวัติ ข้าราชการ */ @@ -199,7 +207,7 @@ export class ImportDataController extends Controller { // where: { posTypeName: item.MP_Type }, // }); // profile.posTypeId = type?.id ?? null_; - profile.amount = item.SALARY == "" ? 0 : Number(Extension.CheckRelationship(item.SALARY)); + profile.amount = item.SALARY == "" ? 0 : Number(item.SALARY); // profile.isLeave = // item.FLAG_RETIRE_STATUSxxxx == "" || item.FLAG_RETIRE_STATUSxxxx == null ? false : true; profile.createdUserId = request.user.sub; @@ -409,7 +417,6 @@ export class ImportDataController extends Controller { "49", "50", "51", - "56", "60", "61", "62", @@ -427,7 +434,7 @@ export class ImportDataController extends Controller { } else if (["3", "6", "34", "36", "37"].includes(item.flag_to_name_code)) { profileSalary.commandCode = "3"; profileSalary.commandName = "แต่งตั้ง ย้าย"; - } else if (["10", "55"].includes(item.flag_to_name_code)) { + } 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)) { @@ -474,14 +481,16 @@ export class ImportDataController extends Controller { profileSalary.commandCode = "17"; profileSalary.commandName = "รักษาราชการ, ช่วยราชการ"; } - if ( - item.flag_to_name_code == null && - (item.flag_to_name == "เลื่อน 1 ขั้นและเลื่อนระดับ" || - item.flag_to_name == "เลื่อน 0.5 ขั้นและเลื่อนระดับ" || - item.flag_to_name == "ลาศึกษาต่อ") - ) { + 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 = "เลื่อนเงินเดือนตามปกติ"; @@ -538,8 +547,6 @@ export class ImportDataController extends Controller { "ขยายเวลาศึกษาต่อ", "รายงานตัวกลับเข้าปฏิบัติราชการ", "ไม่ได้เลื่อนขั้น", - "เลือนเงินเดือนและระดับ", - "เลื่อนเงินเดือนและระดับ", "ตัดเงินเดือน", "ลดขั้นเงินเดือน", "ให้ข้าราชการกลับเข้ารับราชการ", @@ -573,7 +580,11 @@ export class ImportDataController extends Controller { ) { profileSalary.commandCode = "3"; profileSalary.commandName = "แต่งตั้ง ย้าย"; - } else if (["เลื่อนและแต่งตั้ง", "เลื่อนระดับ"].includes(item.flag_to_name)) { + } else if ( + ["เลื่อนและแต่งตั้ง", "เลื่อนระดับ", "เลื่อนเงินเดือนและระดับ"].includes( + item.flag_to_name, + ) + ) { profileSalary.commandCode = "4"; profileSalary.commandName = "เลื่อน"; } else if (["เลื่อนขั้นเงินเดือน", "เลื่อนเงินเดือน"].includes(item.flag_to_name)) { @@ -1228,69 +1239,71 @@ export class ImportDataController extends Controller { // .take(5) // .getMany(); - await Promise.all( - profiles.map(async (_item) => { - const existingProfile = await this.HR_EDUCATIONRepo.find({ - where: { CIT: _item.citizenId }, - select: [ - "CIT", - "EDUCATION_CODE", - "START_EDUCATION_YEAR", - "EDUCATION_YEAR", - "INSTITUE", - "EDUCATION_SEQ", - ], + for (const _item of profiles) { + const existingProfile = await this.HR_EDUCATIONRepo.find({ + where: { CIT: _item.citizenId }, + select: [ + "CIT", + "EDUCATION_CODE", + "START_EDUCATION_YEAR", + "EDUCATION_YEAR", + "INSTITUE", + "EDUCATION_SEQ", + ], + }); + + const educationLevel = await this.profileEducationRepo.findOne({ + select: ["id", "level", "profileId"], + where: { profileId: _item.id }, + order: { level: "DESC" }, + }); + + // educations = await []; + for (const item of existingProfile) { + rowCount++; + const education = new ProfileEducation(); + const educationCode = await this.educationMisRepo.findOne({ + where: { EDUCATION_CODE: item.EDUCATION_CODE }, + }); + const hrMajorCode = await this.HR_MAJOR_CODERepo.findOne({ + where: { MAJOR_CODE: item.MAJOR_CODE }, + }); + const hrFundCourseCode = await this.HR_FUND_COURSE_CODERepo.findOne({ + where: { FUND_COURSE_CODE: item.FUND_COURSE_CODE }, }); - const educationLevel = await this.profileEducationRepo.findOne({ - select: ["id", "level", "profileId"], - where: { profileId: _item.id }, - order: { level: "DESC" }, - }); + let startDate = item.START_EDUCATION_YEAR + ? Extension.ConvertToDateTimeV2(item.START_EDUCATION_YEAR) + : null_; + // startDate = startDate ? new Date(startDate, 0, 1) : null_; - // educations = await []; - await Promise.all( - existingProfile.map(async (item) => { - rowCount++; - const education = new ProfileEducation(); - const educationCode = await this.educationMisRepo.findOne({ - where: { EDUCATION_CODE: item.EDUCATION_CODE }, - }); + let endDate = item.EDUCATION_YEAR + ? Extension.ConvertToDateTimeV2(item.EDUCATION_YEAR) + : null_; + // endDate = endDate ? new Date(endDate, 0, 1) : null_; - let startDate = item.START_EDUCATION_YEAR - ? Extension.ConvertToDateTimeV2(item.START_EDUCATION_YEAR) - : null_; - // startDate = startDate ? new Date(startDate, 0, 1) : null_; - - let endDate = item.EDUCATION_YEAR - ? Extension.ConvertToDateTimeV2(item.EDUCATION_YEAR) - : null_; - // endDate = endDate ? new Date(endDate, 0, 1) : null_; - - education.level = educationLevel == null ? 1 : educationLevel.level + 1; - education.profileId = _item.id; - education.degree = educationCode ? educationCode.EDUCATION_ABB_NAME : ""; - // education.degree = educationCode ? educationCode.MAJOR_NAME: ""; - // education.degree = educationCode ? educationCode.FUND_COURSE_CODE: ""; - education.institute = item.INSTITUE; - education.level = item.EDUCATION_SEQ ? null_ : Number(item.EDUCATION_SEQ); - education.startDate = startDate; - education.endDate = endDate; - education.createdUserId = request.user.sub; - education.createdFullName = request.user.name; - education.lastUpdateUserId = request.user.sub; - education.lastUpdateFullName = request.user.name; - education.createdAt = new Date(); - education.lastUpdatedAt = new Date(); - // await educations.push(await education); - console.log(">>>>>>>>>>>>>>>>>>>" + rowCount); - await this.profileEducationRepo.save(await education); - }), - ); - // await this.profileEducationRepo.save(educations); - // educations = await []; - }), - ); + education.level = educationLevel == null ? 1 : educationLevel.level + 1; + education.profileId = _item.id; + education.degree = educationCode ? educationCode.EDUCATION_NAME : null_; + education.field = hrMajorCode ? hrMajorCode.MAJOR_NAME : null_; + education.educationLevelId = hrFundCourseCode ? hrFundCourseCode.refId : null_; + education.institute = item.INSTITUE; + education.level = item.EDUCATION_SEQ ? null_ : Number(item.EDUCATION_SEQ); + education.startDate = startDate; + education.endDate = endDate; + education.createdUserId = request.user.sub; + education.createdFullName = request.user.name; + education.lastUpdateUserId = request.user.sub; + education.lastUpdateFullName = request.user.name; + education.createdAt = new Date(); + education.lastUpdatedAt = new Date(); + // await educations.push(await education); + console.log(">>>>>>>>>>>>>>>>>>>" + rowCount); + await this.profileEducationRepo.save(await education); + } + // await this.profileEducationRepo.save(educations); + // educations = await []; + } // } // console.log(">>>>>>>>>>>>>>>>>>>" + rowCount); // await this.profileEducationRepo.save(educations); @@ -1878,11 +1891,50 @@ export class ImportDataController extends Controller { orgChild3: "", }, }); + 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++; + } - //order xxxxxxxxxxxxxxxx - await Promise.all( - IMPORT_CHILD.map(async (item) => { - const orgRoot = new OrgRoot(); + //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({ + where: { orgRootName: item.orgRoot }, + 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; @@ -1900,46 +1952,171 @@ export class ImportDataController extends Controller { orgRoot.createdAt = new Date(); orgRoot.lastUpdatedAt = new Date(); await this.orgRootRepo.save(orgRoot); - }), - ); + } - //create child1 - const IMPORT_CHILD1 = await this.IMPORT_ORGRepo.find({ + 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({ where: { orgRoot: Not(""), orgChild1: Not(""), - orgChild2: "", + orgChild2: Not(""), orgChild3: "", }, }); + for (const item of IMPORT_CHILD2) { + const orgChild2 = new OrgChild2(); + let orgRoot = await this.orgRootRepo.findOne({ + where: { orgRootName: item.orgRoot }, + 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({ + where: { orgChild1Name: item.orgChild1 }, + relations: ["orgChild2s"], + }); + if (orgChild1 == null) { + orgChild1 = new OrgChild1(); + orgChild1.orgRootId = orgRoot.id; + orgChild1.orgChild1Order = + orgRoot == null || orgRoot.orgChild1s == null || orgRoot.orgChild1s.length == 0 + ? 1 + : orgRoot.orgChild1s.length + 1; + 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); + } + 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); + } - await Promise.all( - IMPORT_CHILD1.map(async (item) => { - const orgChild1 = new OrgChild1(); - let orgRoot = await this.orgRootRepo.findOne({ - where: { orgRootName: item.orgRoot }, - }); - if (orgRoot == null) { - orgRoot = new OrgRoot(); - 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); - } + //create child3 + const IMPORT_CHILD3 = await this.IMPORT_ORGRepo.find({ + where: { + orgRoot: Not(""), + orgChild1: Not(""), + orgChild2: Not(""), + orgChild3: Not(""), + }, + }); + for (const item of IMPORT_CHILD3) { + const orgChild3 = new OrgChild3(); + let orgRoot = await this.orgRootRepo.findOne({ + where: { orgRootName: item.orgRoot }, + 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({ + where: { orgChild1Name: item.orgChild1 }, + 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; @@ -1958,68 +2135,17 @@ export class ImportDataController extends Controller { orgChild1.createdAt = new Date(); orgChild1.lastUpdatedAt = new Date(); await this.orgChild1Repo.save(orgChild1); - }), - ); - - //create child2 - const IMPORT_CHILD2 = await this.IMPORT_ORGRepo.find({ - where: { - orgRoot: Not(""), - orgChild1: Not(""), - orgChild2: Not(""), - orgChild3: "", - }, - }); - await Promise.all( - IMPORT_CHILD2.map(async (item) => { - const orgChild2 = new OrgChild2(); - let orgRoot = await this.orgRootRepo.findOne({ - where: { orgRootName: item.orgRoot }, - }); - if (orgRoot == null) { - orgRoot = new OrgRoot(); - 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({ - where: { orgChild1Name: item.orgChild1 }, - }); - if (orgChild1 == null) { - orgChild1 = new OrgChild1(); - 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); - } + } + let orgChild2 = await this.orgChild2Repo.findOne({ + where: { orgChild2Name: item.orgChild2 }, + 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; @@ -2039,117 +2165,32 @@ export class ImportDataController extends Controller { orgChild2.createdAt = new Date(); orgChild2.lastUpdatedAt = new Date(); await this.orgChild2Repo.save(orgChild2); - }), - ); - - //create child3 - const IMPORT_CHILD3 = await this.IMPORT_ORGRepo.find({ - where: { - orgRoot: Not(""), - orgChild1: Not(""), - orgChild2: Not(""), - orgChild3: Not(""), - }, - }); - - await Promise.all( - IMPORT_CHILD3.map(async (item) => { - const orgChild3 = new OrgChild3(); - let orgRoot = await this.orgRootRepo.findOne({ - where: { orgRootName: item.orgRoot }, - }); - if (orgRoot == null) { - orgRoot = new OrgRoot(); - 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({ - where: { orgChild1Name: item.orgChild1 }, - }); - if (orgChild1 == null) { - orgChild1 = new OrgChild1(); - 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); - } - let orgChild2 = await this.orgChild2Repo.findOne({ - where: { orgChild2Name: item.orgChild2 }, - }); - if (orgChild2 == null) { - orgChild2 = new OrgChild2(); - 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.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); - }), - ); + } + 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(); } /** @@ -2174,7 +2215,7 @@ export class ImportDataController extends Controller { rowCount++; const existingProfile = await this.profileRepo.findOne({ - where: { citizenId: item.id.toString() }, + where: { citizenId: item.CIT }, }); if (existingProfile == null) { continue; @@ -2270,6 +2311,31 @@ export class ImportDataController extends Controller { position.lastUpdateFullName = request.user.name; position.createdAt = new Date(); position.lastUpdatedAt = new Date(); + + const posExecutive = await this.posExecutiveRepo.findOne({ + where: { + posExecutiveName: item.ADMIN_NAME, + }, + }); + if (posExecutive == null && item.ADMIN_NAME != "" && item.ADMIN_NAME != null) { + const posExecutiveOrder = await this.posExecutiveRepo.findOne({ + where: { posExecutivePriority: Not(IsNull()) }, + order: { posExecutivePriority: "DESC" }, + }); + let posExecutive = new PosExecutive(); + + posExecutive.posExecutivePriority = + posExecutiveOrder == null ? null_ : posExecutiveOrder.posExecutivePriority + 1; + posExecutive.posExecutiveName = item.ADMIN_NAME; + posExecutive.createdUserId = request.user.sub; + posExecutive.createdFullName = request.user.name; + posExecutive.lastUpdateUserId = request.user.sub; + posExecutive.lastUpdateFullName = request.user.name; + posExecutive.createdAt = new Date(); + posExecutive.lastUpdatedAt = new Date(); + await this.posExecutiveRepo.save(posExecutive); + } + position.posExecutiveId = posExecutive == null ? null_ : posExecutive.id; position.positionName = item.WORK_LINE_NAME == "" ? null_ : item.WORK_LINE_NAME; position.posTypeId = type_ != null && type_.posTypeName == item.MP_CATEGORY && type_ ? type_.id : null; diff --git a/src/controllers/ReportController.ts b/src/controllers/ReportController.ts index a7be928d..77a8a2ec 100644 --- a/src/controllers/ReportController.ts +++ b/src/controllers/ReportController.ts @@ -259,9 +259,6 @@ export class ReportController extends Controller { tenureTypeCondition = "registryOfficer.Years BETWEEN :tenureMin AND :tenureMax"; //xxxxxxxxxxxx } - const sql_mode = await AppDataSource.query( - "SET SESSION sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));", - ); const [lists, total] = await AppDataSource.getRepository(viewRegistryOfficer) .createQueryBuilder("registryOfficer") .where(nodeCondition, { diff --git a/src/entities/HR_EDUCATION.ts b/src/entities/HR_EDUCATION.ts index a107632c..5f4e34f4 100644 --- a/src/entities/HR_EDUCATION.ts +++ b/src/entities/HR_EDUCATION.ts @@ -52,4 +52,18 @@ export class HR_EDUCATION { default: null, }) EDUCATION_SEQ: string; + + @Column({ + nullable: true, + type: "text", + default: null, + }) + FUND_COURSE_CODE: string; + + @Column({ + nullable: true, + type: "text", + default: null, + }) + MAJOR_CODE: string; } diff --git a/src/entities/HR_FUND_COURSE_CODE.ts b/src/entities/HR_FUND_COURSE_CODE.ts new file mode 100644 index 00000000..630462f8 --- /dev/null +++ b/src/entities/HR_FUND_COURSE_CODE.ts @@ -0,0 +1,35 @@ +import { Entity, Column, PrimaryGeneratedColumn } from "typeorm"; + +@Entity("HR_FUND_COURSE_CODE") +export class HR_FUND_COURSE_CODE { + @PrimaryGeneratedColumn() + id!: number; + + @Column({ + nullable: true, + type: "text", + default: null, + }) + FUND_COURSE_CODE: string; + + @Column({ + nullable: true, + type: "text", + default: null, + }) + FUND_COURSE_NAME: string; + + @Column({ + nullable: true, + type: "text", + default: null, + }) + LEVEL_SEQ: string; + + @Column({ + nullable: true, + type: "text", + default: null, + }) + refId: string; +} diff --git a/src/entities/HR_MAJOR_CODE.ts b/src/entities/HR_MAJOR_CODE.ts new file mode 100644 index 00000000..71db59f8 --- /dev/null +++ b/src/entities/HR_MAJOR_CODE.ts @@ -0,0 +1,28 @@ +import { Entity, Column, PrimaryGeneratedColumn } from "typeorm"; + +@Entity("HR_MAJOR_CODE") +export class HR_MAJOR_CODE { + @PrimaryGeneratedColumn() + id!: number; + + @Column({ + nullable: true, + type: "text", + default: null, + }) + MAJOR_CODE: string; + + @Column({ + nullable: true, + type: "text", + default: null, + }) + MAJOR_NAME: string; + + @Column({ + nullable: true, + type: "text", + default: null, + }) + MAJOR_ABB_NAME: string; +} diff --git a/src/entities/OFFICER.ts b/src/entities/OFFICER.ts index 58edfd64..3ef6f39f 100644 --- a/src/entities/OFFICER.ts +++ b/src/entities/OFFICER.ts @@ -19,6 +19,13 @@ export class OFFICER { // }) // ID: string; + @Column({ + nullable: true, + type: "text", + default: null, + }) + CIT: string; + @Column({ nullable: true, type: "text", @@ -130,4 +137,11 @@ export class OFFICER { default: null, }) POS_NUM_NAME: string; + + @Column({ + nullable: true, + type: "text", + default: null, + }) + ADMIN_NAME: string; } diff --git a/src/entities/ProfileSalaries.ts b/src/entities/ProfileSalaries.ts new file mode 100644 index 00000000..10829deb --- /dev/null +++ b/src/entities/ProfileSalaries.ts @@ -0,0 +1,65 @@ +import { Entity, Column, Double } from "typeorm"; +import { EntityBase } from "./base/Base"; + +@Entity("ProfileSalaries") +export class ProfileSalaries extends EntityBase { + @Column({ + nullable: true, + default: null, + }) + Order: number; + + @Column({ + nullable: true, + default: null, + }) + Date: Date; + + @Column({ + nullable: true, + default: null, + }) + SalaryRef: string; + + @Column({ + nullable: true, + type: "double", + }) + Amount: Double; + + @Column({ + nullable: true, + type: "double", + }) + PositionSalaryAmount: Double; + + @Column({ + nullable: true, + default: null, + }) + PosNoName: string; + + @Column({ + nullable: true, + default: null, + }) + PositionTypeName: string; + + @Column({ + nullable: true, + default: null, + }) + PositionLevelName: string; + + @Column({ + nullable: true, + default: null, + }) + PositionName: string; + + @Column({ + nullable: true, + default: null, + }) + ProfileId: string; +}