Merge branch 'develop' into adiDev

This commit is contained in:
AdisakKanthawilang 2025-03-04 10:53:20 +07:00
commit dd33feef99
15 changed files with 1742 additions and 597 deletions

View file

@ -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,67 +1239,72 @@ 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_NAME : "";
education.institute = item.INSTITUE;
education.level = item.EDUCATION_SEQ ? null_ : Number(item.EDUCATION_SEQ);
education.startDate = startDate;
education.endDate = endDate;
education.createdUserId = request.user.sub;
education.createdFullName = request.user.name;
education.lastUpdateUserId = request.user.sub;
education.lastUpdateFullName = request.user.name;
education.createdAt = new Date();
education.lastUpdatedAt = new Date();
// 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.educationLevel = hrFundCourseCode ? hrFundCourseCode.FUND_COURSE_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);
@ -1876,11 +1892,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;
@ -1898,46 +1953,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;
@ -1956,68 +2136,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;
@ -2037,117 +2166,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();
}
/**
@ -2172,7 +2216,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;
@ -2268,6 +2312,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;

View file

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

View file

@ -89,32 +89,31 @@ export class ProfileSalaryEmployeeController extends Controller {
@Get("tenure/{profileId}")
public async getPositionTenure(@Path() profileId: string, @Request() req: RequestWithUser) {
const position = await AppDataSource.query(
"CALL GetProfileEmployeeSalaryPosition(?)",
[profileId]
);
const _position = position.length > 0 ? position[0] : []
const mapPosition = _position.length > 1
? _position
.slice(1)
.map((curr: any, index: number) => ({
year: curr.Years ? Math.floor(Number(curr.Years)) : 0,
month: curr.Months ? Math.floor(Number(curr.Months)) : 0,
day: curr.Days ? Math.floor(Number(curr.Days)) : 0,
name: _position[index]?.positionName
}))
: [];
const position = await AppDataSource.query("CALL GetProfileEmployeeSalaryPosition(?)", [
profileId,
]);
const _position = position.length > 0 ? position[0] : [];
const mapPosition =
_position.length > 1
? _position.slice(1).map((curr: any, index: number) => ({
year: curr.Years ? Math.floor(Number(curr.Years)) : 0,
month: curr.Months ? Math.floor(Number(curr.Months)) : 0,
day: curr.Days ? Math.floor(Number(curr.Days)) : 0,
name: _position[index]?.positionName,
}))
: [];
const posLevel = [{
year: 3,
month: 0,
day: 0,
name: "ส 1",
}];
const posLevel: any = [
// {
// year: 3,
// month: 0,
// day: 0,
// name: "ส 1",
// }
];
return new HttpSuccess({
position: mapPosition,
posLevel: posLevel
posLevel: posLevel,
});
}

View file

@ -196,11 +196,11 @@ export class ReportController extends Controller {
@Query() sort: "ASC" | "DESC" = "ASC",
) {
const _null: any = null;
if(!dateStart) {
dateStart = _null
if (!dateStart) {
dateStart = _null;
}
if(!dateEnd) {
dateEnd = _null
if (!dateEnd) {
dateEnd = _null;
}
if (ageMin && (ageMin < 18 || ageMin > 60)) {
throw new HttpError(HttpStatus.NOT_FOUND, "ageMin must be between 18 and 60");
@ -247,18 +247,17 @@ export class ReportController extends Controller {
}
let retireLawCondition = "1=1";
if(isRetireLaw) {
if (isRetireLaw) {
retireLawCondition =
"DATE(registryOfficer.dateRetireLaw) >= :startDateRetireLaw AND DATE(registryOfficer.dateRetireLaw) <= :endDateRetireLaw";
"DATE(registryOfficer.dateRetireLaw) >= :startDateRetireLaw AND DATE(registryOfficer.dateRetireLaw) <= :endDateRetireLaw";
}
let tenureTypeCondition = "1=1";
if(tenureType != "" && tenureType == "position") {
if (tenureType != "" && tenureType == "position") {
tenureTypeCondition = "registryOfficer.Years BETWEEN :tenureMin AND :tenureMax";
} else if (tenureType != "" && tenureType == "level") {
tenureTypeCondition = "registryOfficer.Years BETWEEN :tenureMin AND :tenureMax"; //xxxxxxxxxxxx
}
else if (tenureType != "" && tenureType == "level") {
tenureTypeCondition = "registryOfficer.posxecutiveYears BETWEEN :tenureMin AND :tenureMax";
}
const [lists, total] = await AppDataSource.getRepository(viewRegistryOfficer)
.createQueryBuilder("registryOfficer")
@ -278,36 +277,36 @@ export class ReportController extends Controller {
endDateAppoint: dateEnd?.toISOString().split("T")[0],
})
.andWhere(retireLawCondition, {
startDateRetireLaw: new Date(new Date().getFullYear() - 1, 9, 1, 0, 0, 0, 0)?.toISOString().split("T")[0],
endDateRetireLaw: new Date(new Date().getFullYear(), 8, 30, 23, 59, 59, 999).toISOString().split("T")[0],
startDateRetireLaw: new Date(new Date().getFullYear() - 1, 9, 1, 0, 0, 0, 0)
?.toISOString()
.split("T")[0],
endDateRetireLaw: new Date(new Date().getFullYear(), 8, 30, 23, 59, 59, 999)
.toISOString()
.split("T")[0],
})
.andWhere("registryOfficer.isProbation = :isProbation", {
isProbation: isProbation,
})
.andWhere(IsLeavecondition.join(" AND "), parameters)
.andWhere(
posType != null && posType != ""
? "registryOfficer.posTypeName LIKE :posTypeName"
: "1=1",
posType != null && posType != "" ? "registryOfficer.posTypeName LIKE :posTypeName" : "1=1",
{
posTypeName: `%${posType}%`,
}
},
)
.andWhere(
posLevel != null && posLevel != ""
? "registryOfficer.posLevelName LIKE :posLevelName"
posLevel != null && posLevel != ""
? "registryOfficer.posLevelName LIKE :posLevelName"
: "1=1",
{
posLevelName: `%${posLevel}%`,
}
},
)
.andWhere(
position != null && position != ""
? "registryOfficer.position LIKE :position"
: "1=1",
position != null && position != "" ? "registryOfficer.position LIKE :position" : "1=1",
{
position: `%${position}%`,
}
},
)
.andWhere(
positionExecutive != null && positionExecutive != ""
@ -315,31 +314,22 @@ export class ReportController extends Controller {
: "1=1",
{
posExecutiveName: `%${positionExecutive}%`,
}
},
)
.andWhere(gender != null && gender != "" ? "registryOfficer.gender LIKE :gender" : "1=1", {
gender: `%${gender}%`,
})
.andWhere(
gender != null && gender != ""
? "registryOfficer.gender LIKE :gender"
: "1=1",
{
gender: `%${gender}%`,
}
)
.andWhere(
status != null && status != ""
? "registryOfficer.relationship LIKE :relationship"
: "1=1",
status != null && status != "" ? "registryOfficer.relationship LIKE :relationship" : "1=1",
{
relationship: `%${status}%`,
}
},
)
.andWhere(
education != null && education != ""
? "registryOfficer.degree LIKE :degree"
: "1=1",
education != null && education != "" ? "registryOfficer.degree LIKE :degree" : "1=1",
{
degree: `%${education}%`,
}
},
)
.orderBy(`registryOfficer.${sortBy}`, sort)
.getManyAndCount();
@ -381,12 +371,24 @@ export class ReportController extends Controller {
age: x.age,
currentPosition: null,
lengthPosition: null,
Years: x.Years,
Months: x.Months,
Days: x.Days,
// posExecutiveYears: x.posExecutiveYears,
// posExecutiveMonths: x.posExecutiveMonths,
// posExecutiveDays: x.posExecutiveDays
positionDate: {
Years: x.Years,
Months: x.Months,
Days: x.Days,
},
posExcutiveDate: {
Years: x.posExecutiveYears,
Months: x.posExecutiveMonths,
Days: x.posExecutiveDays,
},
posLevelDate: {
// Years: x.levelYears,
// Months: x.levelMonths,
// Days: x.levelDays,
Years: 0,
Months: 0,
Days: 0,
},
}));
return new HttpSuccess({
data: mapData,
@ -536,11 +538,11 @@ export class ReportController extends Controller {
@Query() sort: "ASC" | "DESC" = "ASC",
) {
const _null: any = null;
if(!dateStart) {
dateStart = _null
if (!dateStart) {
dateStart = _null;
}
if(!dateEnd) {
dateEnd = _null
if (!dateEnd) {
dateEnd = _null;
}
if (ageMin && (ageMin < 18 || ageMin > 60)) {
throw new HttpError(HttpStatus.NOT_FOUND, "ageMin must be between 18 and 60");
@ -587,9 +589,9 @@ export class ReportController extends Controller {
}
let retireLawCondition = "1=1";
if(isRetireLaw) {
if (isRetireLaw) {
retireLawCondition =
"DATE(registryEmployee.dateRetireLaw) >= :startDateRetireLaw AND DATE(registryEmployee.dateRetireLaw) <= :endDateRetireLaw";
"DATE(registryEmployee.dateRetireLaw) >= :startDateRetireLaw AND DATE(registryEmployee.dateRetireLaw) <= :endDateRetireLaw";
}
const [lists, total] = await AppDataSource.getRepository(viewRegistryEmployee)
@ -606,8 +608,12 @@ export class ReportController extends Controller {
endDateAppoint: dateEnd?.toISOString().split("T")[0],
})
.andWhere(retireLawCondition, {
startDateRetireLaw: new Date(new Date().getFullYear() - 1, 9, 1, 0, 0, 0, 0)?.toISOString().split("T")[0],
endDateRetireLaw: new Date(new Date().getFullYear(), 8, 30, 23, 59, 59, 999).toISOString().split("T")[0],
startDateRetireLaw: new Date(new Date().getFullYear() - 1, 9, 1, 0, 0, 0, 0)
?.toISOString()
.split("T")[0],
endDateRetireLaw: new Date(new Date().getFullYear(), 8, 30, 23, 59, 59, 999)
.toISOString()
.split("T")[0],
})
.andWhere("registryEmployee.isProbation = :isProbation", {
isProbation: isProbation,
@ -615,52 +621,39 @@ export class ReportController extends Controller {
.andWhere(IsLeavecondition.join(" AND "), parameters)
.andWhere("registryEmployee.employeeClass = 'PERM'")
.andWhere(
posType != null && posType != ""
? "registryEmployee.posTypeName LIKE :posTypeName"
: "1=1",
posType != null && posType != "" ? "registryEmployee.posTypeName LIKE :posTypeName" : "1=1",
{
posTypeName: `%${posType}%`,
}
},
)
.andWhere(
posLevel != null && posLevel != ""
? "registryEmployee.posLevelName LIKE :posLevelName"
posLevel != null && posLevel != ""
? "registryEmployee.posLevelName LIKE :posLevelName"
: "1=1",
{
posLevelName: `%${posLevel}%`,
}
},
)
.andWhere(
position != null && position != ""
? "registryEmployee.position LIKE :position"
: "1=1",
position != null && position != "" ? "registryEmployee.position LIKE :position" : "1=1",
{
position: `%${position}%`,
}
},
)
.andWhere(gender != null && gender != "" ? "registryEmployee.gender LIKE :gender" : "1=1", {
gender: `%${gender}%`,
})
.andWhere(
gender != null && gender != ""
? "registryEmployee.gender LIKE :gender"
: "1=1",
{
gender: `%${gender}%`,
}
)
.andWhere(
status != null && status != ""
? "registryEmployee.relationship LIKE :relationship"
: "1=1",
status != null && status != "" ? "registryEmployee.relationship LIKE :relationship" : "1=1",
{
relationship: `%${status}%`,
}
},
)
.andWhere(
education != null && education != ""
? "registryEmployee.degree LIKE :degree"
: "1=1",
education != null && education != "" ? "registryEmployee.degree LIKE :degree" : "1=1",
{
degree: `%${education}%`,
}
},
)
.orderBy(`registryEmployee.${sortBy}`, sort)
.getManyAndCount();