From effc7824602f024bd6f86a77d9e543d1d1de6d4b Mon Sep 17 00:00:00 2001 From: harid Date: Wed, 25 Mar 2026 15:53:26 +0700 Subject: [PATCH] fix report kk1 --- src/controllers/ProfileController.ts | 213 ++++++++----- src/controllers/ProfileEmployeeController.ts | 306 ++++++++++++------- 2 files changed, 332 insertions(+), 187 deletions(-) diff --git a/src/controllers/ProfileController.ts b/src/controllers/ProfileController.ts index ccec5b1a..7b883d73 100644 --- a/src/controllers/ProfileController.ts +++ b/src/controllers/ProfileController.ts @@ -87,6 +87,7 @@ import { OrgChild4 } from "../entities/OrgChild4"; import { ProfileSalaryHistory } from "../entities/ProfileSalaryHistory"; import { ProfileAssistance } from "../entities/ProfileAssistance"; import { CommandRecive } from "../entities/CommandRecive"; +import { CommandCode } from "../entities/CommandCode"; import { EmployeePosMaster } from "../entities/EmployeePosMaster"; import { CreatePosMasterHistoryOfficer, getTopDegrees } from "../services/PositionService"; import { ProfileLeaveService } from "../services/ProfileLeaveService"; @@ -146,6 +147,7 @@ export class ProfileController extends Controller { private permissionProflileRepository = AppDataSource.getRepository(PermissionProfile); private profileAssistanceRepository = AppDataSource.getRepository(ProfileAssistance); private commandReciveRepository = AppDataSource.getRepository(CommandRecive); + private commandCodeRepository = AppDataSource.getRepository(CommandCode); // Services private profileLeaveService = new ProfileLeaveService(); @@ -1370,26 +1372,26 @@ export class ProfileController extends Controller { yearData = { year }; for (let i = 1; i <= 11; i++) { - yearData[`leaveTypeCodeLv${i}`] = "-"; - yearData[`totalLeaveDaysLv${i}`] = "-"; - yearData[`leaveTypeNameLv${i}`] = "-"; + yearData[`leaveTypeCodeLv${i}`] = ""; + yearData[`totalLeaveDaysLv${i}`] = ""; + yearData[`leaveTypeNameLv${i}`] = ""; } leaves.push(yearData); } - yearData[leaveTypeCodeKey] = item.code ? item.code : "-"; + yearData[leaveTypeCodeKey] = item.code ? item.code : ""; yearData[totalLeaveDaysKey] = item.totalLeaveDays ? Extension.ToThaiNumber(item.totalLeaveDays.toString()) : "-"; - yearData[leaveTypeNameKey] = item.name ? item.name : "-"; + yearData[leaveTypeNameKey] = item.name ? item.name : ""; } } }); - if (leaves.length === 0) { - leaves.push({year:""}); - } + // if (leaves.length === 0) { + // leaves.push({year:""}); + // } // Query มาสาย/ขาดราชการ และ merge ตามปี const absentLate_raw = await this.profileAbsentLateRepo @@ -1417,9 +1419,9 @@ export class ProfileController extends Controller { if (!yearData) { yearData = { year }; for (let i = 1; i <= 11; i++) { - yearData[`leaveTypeCodeLv${i}`] = "-"; - yearData[`totalLeaveDaysLv${i}`] = "-"; - yearData[`leaveTypeNameLv${i}`] = "-"; + yearData[`leaveTypeCodeLv${i}`] = ""; + yearData[`totalLeaveDaysLv${i}`] = ""; + yearData[`leaveTypeNameLv${i}`] = ""; } leaves.push(yearData); } @@ -1428,18 +1430,18 @@ export class ProfileController extends Controller { if (item.status === "LATE") { yearData.late = item.totalAmount ? Extension.ToThaiNumber(parseFloat(item.totalAmount).toFixed(1)) - : "-"; + : ""; } else if (item.status === "ABSENT") { yearData.absent = item.totalAmount ? Extension.ToThaiNumber(parseFloat(item.totalAmount).toFixed(1)) - : "-"; + : ""; } }); - // เติมค่า "-" ถ้าไม่มีข้อมูลมาสาย/ขาดราชการ + // เติมค่า "" ถ้าไม่มีข้อมูลมาสาย/ขาดราชการ leaves.forEach((yearData) => { - if (!yearData.late) yearData.late = "-"; - if (!yearData.absent) yearData.absent = "-"; + if (!yearData.late) yearData.late = ""; + if (!yearData.absent) yearData.absent = ""; }); const leave2_raw = await this.profileLeaveRepository @@ -1568,39 +1570,78 @@ export class ProfileController extends Controller { ]; const position_raw = await this.salaryRepo.find({ - where: { + where: [{ profileId: id, commandCode: In(["0","1","2","3","4","8","9","10","11","12","13","14","15","16","20"]), // isEntry: false, }, + { profileId: id, commandCode: IsNull() }], order: { order: "ASC" }, }); + let _commandName:any = ""; + let _commandDateAffect:any = "" const positionList = position_raw.length > 0 - ? position_raw.map((item) => ({ - commandName: item.commandName ?? "", - commandDateAffect: item.commandDateAffect + ? await Promise.all(position_raw.map(async(item, idx, arr) => { + const isLast = idx === arr.length - 1; + if (isLast) { + _commandDateAffect = item.commandDateAffect ? Extension.ToThaiNumber(Extension.ToThaiFullDate2(item.commandDateAffect)) - : "", - commandDateSign: item.commandDateSign - ? Extension.ToThaiNumber(Extension.ToThaiFullDate2(item.commandDateSign)) - : "", - posNo: - item.posNoAbb && item.posNo - ? Extension.ToThaiNumber(`${item.posNoAbb} ${item.posNo}`) + : ""; + } + const _code = item.commandCode ? Number(item.commandCode) : null; + if (_code != null) { + _commandName = await this.commandCodeRepository.findOne({ + select: { name: true, code: true }, + where: { code: _code } + }); + } + const codeSitAbb = item.posNumCodeSitAbb ?? "-" + const commandNo = item.commandNo && item.commandYear + ? item.commandNo+"/"+(item.commandYear > 2500 ? item.commandYear : item.commandYear + 543) + : "-" + const dateAffect = item.commandDateAffect + ? `${Extension.ToThaiFullDate2(item.commandDateAffect)}` + : "-" + return { + commandName: _commandName && _commandName.name + ? _commandName.name + : item.commandName, + commandDateAffect: item.commandDateAffect + ? Extension.ToThaiNumber( + Extension.ToThaiFullDate2(item.commandDateAffect) + ) : "", - position: item.positionName, - posType: item.positionType, - posLevel: item.positionLevel - ? Extension.ToThaiNumber(item.positionLevel) - : item.positionCee + commandDateSign: item.commandDateSign + ? Extension.ToThaiNumber( + Extension.ToThaiFullDate2(item.commandDateSign) + ) + : "", + posNo: + item.posNoAbb && item.posNo + ? Extension.ToThaiNumber(`${item.posNoAbb} ${item.posNo}`) + : "", + position: item.positionName, + posType: item.positionType, + posLevel: item.positionLevel + ? Extension.ToThaiNumber(item.positionLevel) + : item.positionCee ? Extension.ToThaiNumber(item.positionCee) : null, - amount: item.amount ? Extension.ToThaiNumber(Number(item.amount).toLocaleString()) : "", - positionSalaryAmount: item.positionSalaryAmount - ? Extension.ToThaiNumber(Number(item.positionSalaryAmount).toLocaleString()) - : "", - refDoc: Extension.ToThaiNumber(`คำสั่ง ${item.posNumCodeSitAbb ?? "-"} ที่ ${item.commandNo ?? "-"}/${item.commandYear>2500?item.commandYear:item.commandYear+543} ลว. ${(Extension.ToThaiFullDate2(item.commandDateAffect))}`) + amount: item.amount + ? Extension.ToThaiNumber( + Number(item.amount).toLocaleString() + ) + : "", + positionSalaryAmount: item.positionSalaryAmount + ? Extension.ToThaiNumber( + Number(item.positionSalaryAmount).toLocaleString() + ) + : "", + refDoc: Extension.ToThaiNumber( + `คำสั่ง ${codeSitAbb} ที่ ${commandNo} ลว. ${dateAffect}` + ), + }; })) : [ { @@ -1620,34 +1661,35 @@ export class ProfileController extends Controller { // ประวัติพ้นจากราชการ let retires = []; const currentDate = new Date(); - const retire_raw = await this.salaryRepo.findOne({ - where: { - profileId: id, - commandCode: In(["12", "15", "16"]), - }, - order: { order: "desc" }, - }); + // todo: รอข้อสรุป + // const retire_raw = await this.salaryRepo.findOne({ + // where: { + // profileId: id, + // commandCode: In(["12", "15", "16"]), + // }, + // order: { order: "desc" }, + // }); - if (retire_raw) { - const startDate = retire_raw.commandDateAffect; + // if (retire_raw) { + // const startDate = retire_raw.commandDateAffect; - // คำนวณจำนวนวันจากวันพ้นสภาพถึงปัจจุบัน - let daysCount = 0; - if (startDate) { - const start = new Date(startDate); - daysCount = Math.ceil((currentDate.getTime() - start.getTime()) / (1000 * 60 * 60 * 24)); - } + // // คำนวณจำนวนวันจากวันพ้นสภาพถึงปัจจุบัน + // let daysCount = 0; + // if (startDate) { + // const start = new Date(startDate); + // daysCount = Math.ceil((currentDate.getTime() - start.getTime()) / (1000 * 60 * 60 * 24)); + // } - const startDateStr = startDate - ? Extension.ToThaiNumber(Extension.ToThaiFullDate2(startDate)) - : "-"; + // const startDateStr = startDate + // ? Extension.ToThaiNumber(Extension.ToThaiFullDate2(startDate)) + // : "-"; - retires.push({ - date: `${startDateStr}`, - detail: retire_raw.commandName ?? "-", - day: daysCount > 0 ? Extension.ToThaiNumber(daysCount.toLocaleString()) : "-" - }); - } + // retires.push({ + // date: `${startDateStr}`, + // detail: retire_raw.commandName ?? "-", + // day: daysCount > 0 ? Extension.ToThaiNumber(daysCount.toLocaleString()) : "-" + // }); + // } // กรณีไม่มีข้อมูล if (retires.length === 0) { @@ -1782,7 +1824,7 @@ export class ProfileController extends Controller { }); } } - // Merge รักษาการ และ ช่วยราชาร + // Merge รักษาการ และ ช่วยราชการ const actposition = [..._actpositions, ..._assistances]; const duty_raw = await this.dutyRepository.find({ @@ -1892,23 +1934,33 @@ export class ProfileController extends Controller { }); const otherIncome = otherIncome_raw.length > 0 - ? otherIncome_raw.map((item) => ({ - commandName: item.commandName ?? "", - commandDateAffect: item.commandDateAffect - ? Extension.ToThaiNumber(Extension.ToThaiFullDate2(item.commandDateAffect)) - : "", - commandDateSign: item.commandDateSign - ? Extension.ToThaiNumber(Extension.ToThaiFullDate2(item.commandDateSign)) - : "", - commandNo: item.commandNo ? Extension.ToThaiNumber(item.commandNo) : "", - position: item.positionName, - posLevel: item.positionLevel - ? Extension.ToThaiNumber(item.positionLevel) - : item.positionCee - ? Extension.ToThaiNumber(item.positionCee) - : null, - amount: item.amount ? Extension.ToThaiNumber(Number(item.amount).toLocaleString()) : "", - refDoc: Extension.ToThaiNumber(`คำสั่ง ${item.posNumCodeSitAbb ?? "-"} ที่ ${item.commandNo ?? "-"}/${item.commandYear>2500?item.commandYear:item.commandYear+543} ลว. ${(Extension.ToThaiFullDate2(item.commandDateAffect))}`) + ? await Promise.all( + otherIncome_raw.map(async(item) => { + const codeSitAbb = item.posNumCodeSitAbb ?? "-" + const commandNo = item.commandNo && item.commandYear + ? item.commandNo+"/"+(item.commandYear > 2500 ? item.commandYear : item.commandYear + 543) + : "-" + const dateAffect = item.commandDateAffect + ? `${Extension.ToThaiFullDate2(item.commandDateAffect)}` + : "-" + return { + commandName: item.commandName ?? "", + commandDateAffect: item.commandDateAffect + ? Extension.ToThaiNumber(Extension.ToThaiFullDate2(item.commandDateAffect)) + : "", + commandDateSign: item.commandDateSign + ? Extension.ToThaiNumber(Extension.ToThaiFullDate2(item.commandDateSign)) + : "", + commandNo: item.commandNo ? Extension.ToThaiNumber(item.commandNo) : "", + position: item.positionName, + posLevel: item.positionLevel + ? Extension.ToThaiNumber(item.positionLevel) + : item.positionCee + ? Extension.ToThaiNumber(item.positionCee) + : null, + amount: item.amount ? Extension.ToThaiNumber(Number(item.amount).toLocaleString()) : "", + refDoc: Extension.ToThaiNumber(`คำสั่ง ${codeSitAbb} ที่ ${commandNo} ลว. ${dateAffect}`) + } })) : [ { @@ -2042,8 +2094,7 @@ export class ProfileController extends Controller { appointDate: profiles?.dateAppoint ? Extension.ToThaiNumber(Extension.ToThaiFullDate2(profiles.dateAppoint)) : "", - positionDate: - positionList.length > 0 ? positionList[positionList.length - 1].commandDateAffect : "", + positionDate: _commandDateAffect ?? "", citizenId: profiles.citizenId != null ? Extension.ToThaiNumber(profiles.citizenId.toString()) : "", fatherFullName: diff --git a/src/controllers/ProfileEmployeeController.ts b/src/controllers/ProfileEmployeeController.ts index c476e3ae..dee9c6d0 100644 --- a/src/controllers/ProfileEmployeeController.ts +++ b/src/controllers/ProfileEmployeeController.ts @@ -84,6 +84,7 @@ import { ProfileDuty } from "../entities/ProfileDuty"; import { getTopDegrees } from "../services/PositionService"; import { ProfileLeaveService } from "../services/ProfileLeaveService"; import { PostRetireToExprofile } from "./ExRetirementController"; +import { CommandCode } from "../entities/CommandCode"; @Route("api/v1/org/profile-employee") @Tags("ProfileEmployee") @Security("bearerAuth") @@ -136,6 +137,7 @@ export class ProfileEmployeeController extends Controller { private profileAssessmentsRepository = AppDataSource.getRepository(ProfileAssessment); private profileAbilityRepo = AppDataSource.getRepository(ProfileAbility); private profileAssistanceRepository = AppDataSource.getRepository(ProfileAssistance); + private commandCodeRepository = AppDataSource.getRepository(CommandCode); // Services private profileLeaveService = new ProfileLeaveService(); @@ -808,27 +810,68 @@ export class ProfileEmployeeController extends Controller { }, ]; - const leave_raw = await this.profileLeaveRepository.find({ - relations: { leaveType: true }, - where: { profileEmployeeId: id, isDeleted: false }, - order: { dateLeaveStart: "ASC" }, + const leave_raw = await this.profileLeaveRepository + .createQueryBuilder("profileLeave") + .leftJoinAndSelect("profileLeave.leaveType", "leaveType") + .select([ + "profileLeave.isDeleted", + "profileLeave.leaveTypeId", + "leaveType.name as name", + "leaveType.code as code", + "profileLeave.status", + "profileLeave.profileEmployeeId", + "MAX(profileLeave.dateLeaveStart) as maxDateLeaveStart", + ]) + .addSelect("SUM(profileLeave.leaveDays)", "totalLeaveDays") + .where("profileLeave.profileEmployeeId = :profileId", { profileId: id }) + .andWhere("profileLeave.isDeleted = :isDeleted", { isDeleted: false }) + .andWhere("profileLeave.status = :status", { status: "approve" }) + .groupBy("profileLeave.leaveTypeId") + .orderBy("code", "ASC") + .addOrderBy("maxDateLeaveStart", "ASC") + .getRawMany(); + + const leaves: any[] = []; + + leave_raw.forEach((item) => { + const leaveTypeCode = item.code ? item.code.trim().toUpperCase() : ""; + if (leaveTypeCode.startsWith("LV-")) { + const lvIndex = parseInt(leaveTypeCode.split("-")[1], 10); + + if (lvIndex >= 1 && lvIndex <= 11) { + const leaveTypeCodeKey = `leaveTypeCodeLv${lvIndex}`; + const totalLeaveDaysKey = `totalLeaveDaysLv${lvIndex}`; + const leaveTypeNameKey = `leaveTypeNameLv${lvIndex}`; + + const leaveDate = item.maxDateLeaveStart ? new Date(item.maxDateLeaveStart) : null; + const year = leaveDate + ? Extension.ToThaiNumber(Extension.ToThaiShortYear(leaveDate)) + : ""; + + let yearData = leaves.find((data) => data.year === year); + if (!yearData) { + yearData = { year }; + + for (let i = 1; i <= 11; i++) { + yearData[`leaveTypeCodeLv${i}`] = "-"; + yearData[`totalLeaveDaysLv${i}`] = "-"; + yearData[`leaveTypeNameLv${i}`] = "-"; + } + + leaves.push(yearData); + } + + yearData[leaveTypeCodeKey] = item.code ? item.code : "-"; + yearData[totalLeaveDaysKey] = item.totalLeaveDays + ? Extension.ToThaiNumber(item.totalLeaveDays.toString()) + : "-"; + yearData[leaveTypeNameKey] = item.name ? item.name : "-"; + } + } }); - const leaves = - leave_raw.length > 0 - ? leave_raw.map((item) => ({ - LeaveTypeName: item.leaveType.name, - DateLeaveStart: item.dateLeaveStart - ? Extension.ToThaiNumber(Extension.ToThaiFullDate2(item.dateLeaveStart)) - : "", - LeaveDays: item.leaveDays ? Extension.ToThaiNumber(item.leaveDays.toString()) : "", - })) - : [ - { - LeaveTypeName: "-", - DateLeaveStart: "-", - LeaveDays: "-", - }, - ]; + + // กรองเอา object ที่ไม่มี year ออก + const filteredLeaves = leaves.filter(item => item.year && item.year !== ""); const data = { fullName: `${profiles?.prefix}${profiles?.firstName} ${profiles?.lastName}`, @@ -917,7 +960,7 @@ export class ProfileEmployeeController extends Controller { ? Extension.ToThaiNumber(Extension.ToThaiShortYear(profiles.profileAvatars[6].createdAt)) : null, insignias, - leaves, + leaves: filteredLeaves, certs, trainings, disciplines, @@ -943,6 +986,7 @@ export class ProfileEmployeeController extends Controller { public async getKk1new(@Path() id: string, @Request() req: RequestWithUser) { const profiles = await this.profileRepo.findOne({ relations: [ + "posType", "posLevel", "currentSubDistrict", "currentDistrict", @@ -1364,26 +1408,26 @@ export class ProfileEmployeeController extends Controller { yearData = { year }; for (let i = 1; i <= 11; i++) { - yearData[`leaveTypeCodeLv${i}`] = "-"; - yearData[`totalLeaveDaysLv${i}`] = "-"; - yearData[`leaveTypeNameLv${i}`] = "-"; + yearData[`leaveTypeCodeLv${i}`] = ""; + yearData[`totalLeaveDaysLv${i}`] = ""; + yearData[`leaveTypeNameLv${i}`] = ""; } leaves.push(yearData); } - yearData[leaveTypeCodeKey] = item.code ? item.code : "-"; + yearData[leaveTypeCodeKey] = item.code ? item.code : ""; yearData[totalLeaveDaysKey] = item.totalLeaveDays ? Extension.ToThaiNumber(item.totalLeaveDays.toString()) - : "-"; - yearData[leaveTypeNameKey] = item.name ? item.name : "-"; + : ""; + yearData[leaveTypeNameKey] = item.name ? item.name : ""; } } }); - if (leaves.length === 0) { - leaves.push({year:""}); - } + // if (leaves.length === 0) { + // leaves.push({year:""}); + // } // Query มาสาย/ขาดราชการ และ merge ตามปี const absentLate_raw = await this.profileEmployeeAbsentLateRepo @@ -1411,9 +1455,9 @@ export class ProfileEmployeeController extends Controller { if (!yearData) { yearData = { year }; for (let i = 1; i <= 11; i++) { - yearData[`leaveTypeCodeLv${i}`] = "-"; - yearData[`totalLeaveDaysLv${i}`] = "-"; - yearData[`leaveTypeNameLv${i}`] = "-"; + yearData[`leaveTypeCodeLv${i}`] = ""; + yearData[`totalLeaveDaysLv${i}`] = ""; + yearData[`leaveTypeNameLv${i}`] = ""; } leaves.push(yearData); } @@ -1422,18 +1466,18 @@ export class ProfileEmployeeController extends Controller { if (item.status === "LATE") { yearData.lateAmount = item.totalAmount ? Extension.ToThaiNumber(parseFloat(item.totalAmount).toFixed(1)) - : "-"; + : ""; } else if (item.status === "ABSENT") { yearData.absentAmount = item.totalAmount ? Extension.ToThaiNumber(parseFloat(item.totalAmount).toFixed(1)) - : "-"; + : ""; } }); - // เติมค่า "-" ถ้าไม่มีข้อมูลมาสาย/ขาดราชการ + // เติมค่า "" ถ้าไม่มีข้อมูลมาสาย/ขาดราชการ leaves.forEach((yearData) => { - if (!yearData.lateAmount) yearData.lateAmount = "-"; - if (!yearData.absentAmount) yearData.absentAmount = "-"; + if (!yearData.lateAmount) yearData.lateAmount = ""; + if (!yearData.absentAmount) yearData.absentAmount = ""; }); const leave2_raw = await this.profileLeaveRepository @@ -1562,39 +1606,78 @@ export class ProfileEmployeeController extends Controller { ]; const position_raw = await this.salaryRepo.find({ - where: { + where: [{ profileEmployeeId: id, commandCode: In(["0","1","2","3","4","8","9","10","11","12","13","14","15","16","20"]), // isEntry: false, }, + { profileEmployeeId: id, commandCode: IsNull() }], order: { order: "ASC" }, }); + let _commandName:any = ""; + let _commandDateAffect:any = "" const positionList = position_raw.length > 0 - ? position_raw.map((item) => ({ - commandName: item.commandName ?? "", - commandDateAffect: item.commandDateAffect + ? await Promise.all(position_raw.map(async(item, idx, arr) => { + const isLast = idx === arr.length - 1; + if (isLast) { + _commandDateAffect = item.commandDateAffect ? Extension.ToThaiNumber(Extension.ToThaiFullDate2(item.commandDateAffect)) - : "", - commandDateSign: item.commandDateSign - ? Extension.ToThaiNumber(Extension.ToThaiFullDate2(item.commandDateSign)) - : "", - posNo: - item.posNoAbb && item.posNo - ? Extension.ToThaiNumber(`${item.posNoAbb} ${item.posNo}`) + : ""; + } + const _code = item.commandCode ? Number(item.commandCode) : null; + if (_code != null) { + _commandName = await this.commandCodeRepository.findOne({ + select: { name: true, code: true }, + where: { code: _code } + }); + } + const codeSitAbb = item.posNumCodeSitAbb ?? "-" + const commandNo = item.commandNo && item.commandYear + ? item.commandNo+"/"+(item.commandYear > 2500 ? item.commandYear : item.commandYear + 543) + : "-" + const dateAffect = item.commandDateAffect + ? `${Extension.ToThaiFullDate2(item.commandDateAffect)}` + : "-" + return { + commandName: _commandName && _commandName.name + ? _commandName.name + : item.commandName, + commandDateAffect: item.commandDateAffect + ? Extension.ToThaiNumber( + Extension.ToThaiFullDate2(item.commandDateAffect) + ) : "", - position: item.positionName, - posType: item.positionType, - posLevel: item.positionLevel - ? Extension.ToThaiNumber(item.positionLevel) - : item.positionCee + commandDateSign: item.commandDateSign + ? Extension.ToThaiNumber( + Extension.ToThaiFullDate2(item.commandDateSign) + ) + : "", + posNo: + item.posNoAbb && item.posNo + ? Extension.ToThaiNumber(`${item.posNoAbb} ${item.posNo}`) + : "", + position: item.positionName, + posType: item.positionType, + posLevel: item.positionLevel + ? Extension.ToThaiNumber(item.positionLevel) + : item.positionCee ? Extension.ToThaiNumber(item.positionCee) : null, - amount: item.amount ? Extension.ToThaiNumber(Number(item.amount).toLocaleString()) : "", - positionSalaryAmount: item.positionSalaryAmount - ? Extension.ToThaiNumber(Number(item.positionSalaryAmount).toLocaleString()) - : "", - refDoc: Extension.ToThaiNumber(`คำสั่ง ${item.posNumCodeSitAbb ?? "-"} ที่ ${item.commandNo ?? "-"}/${item.commandYear>2500?item.commandYear:item.commandYear+543} ลว. ${(Extension.ToThaiFullDate2(item.commandDateAffect))}`) + amount: item.amount + ? Extension.ToThaiNumber( + Number(item.amount).toLocaleString() + ) + : "", + positionSalaryAmount: item.positionSalaryAmount + ? Extension.ToThaiNumber( + Number(item.positionSalaryAmount).toLocaleString() + ) + : "", + refDoc: Extension.ToThaiNumber( + `คำสั่ง ${codeSitAbb} ที่ ${commandNo} ลว. ${dateAffect}` + ), + }; })) : [ { @@ -1610,6 +1693,7 @@ export class ProfileEmployeeController extends Controller { refDoc: "" }, ]; + // ลูกจ้างยังไม่มีรักษาการและช่วยราชการ // const actposition_raw = await this.profileActpositionRepo.find({ // select: ["dateStart", "dateEnd", "position", "isDeleted"], @@ -1789,23 +1873,33 @@ export class ProfileEmployeeController extends Controller { }); const otherIncome = otherIncome_raw.length > 0 - ? otherIncome_raw.map((item) => ({ - commandName: item.commandName ?? "", - commandDateAffect: item.commandDateAffect - ? Extension.ToThaiNumber(Extension.ToThaiFullDate2(item.commandDateAffect)) - : "", - commandDateSign: item.commandDateSign - ? Extension.ToThaiNumber(Extension.ToThaiFullDate2(item.commandDateSign)) - : "", - commandNo: item.commandNo ? Extension.ToThaiNumber(item.commandNo) : "", - position: item.positionName, - posLevel: item.positionLevel - ? Extension.ToThaiNumber(item.positionLevel) - : item.positionCee - ? Extension.ToThaiNumber(item.positionCee) - : null, - amount: item.amount ? Extension.ToThaiNumber(Number(item.amount).toLocaleString()) : "", - refDoc: Extension.ToThaiNumber(`คำสั่ง ${item.posNumCodeSitAbb ?? "-"} ที่ ${item.commandNo ?? "-"}/${item.commandYear>2500?item.commandYear:item.commandYear+543} ลว. ${(Extension.ToThaiFullDate2(item.commandDateAffect))}`) + ? await Promise.all( + otherIncome_raw.map(async(item) => { + const codeSitAbb = item.posNumCodeSitAbb ?? "-" + const commandNo = item.commandNo && item.commandYear + ? item.commandNo+"/"+(item.commandYear > 2500 ? item.commandYear : item.commandYear + 543) + : "-" + const dateAffect = item.commandDateAffect + ? `${Extension.ToThaiFullDate2(item.commandDateAffect)}` + : "-" + return { + commandName: item.commandName ?? "", + commandDateAffect: item.commandDateAffect + ? Extension.ToThaiNumber(Extension.ToThaiFullDate2(item.commandDateAffect)) + : "", + commandDateSign: item.commandDateSign + ? Extension.ToThaiNumber(Extension.ToThaiFullDate2(item.commandDateSign)) + : "", + commandNo: item.commandNo ? Extension.ToThaiNumber(item.commandNo) : "", + position: item.positionName, + posLevel: item.positionLevel + ? Extension.ToThaiNumber(item.positionLevel) + : item.positionCee + ? Extension.ToThaiNumber(item.positionCee) + : null, + amount: item.amount ? Extension.ToThaiNumber(Number(item.amount).toLocaleString()) : "", + refDoc: Extension.ToThaiNumber(`คำสั่ง ${codeSitAbb} ที่ ${commandNo} ลว. ${dateAffect}`) + } })) : [ { @@ -1823,34 +1917,35 @@ export class ProfileEmployeeController extends Controller { // ประวัติพ้นจากราชการ let retires = []; const currentDate = new Date(); - const retire_raw = await this.salaryRepo.findOne({ - where: { - profileEmployeeId: id, - commandCode: In(["12", "15", "16"]), - }, - order: { order: "desc" }, - }); + // todo: รอข้อสรุป + // const retire_raw = await this.salaryRepo.findOne({ + // where: { + // profileEmployeeId: id, + // commandCode: In(["12", "15", "16"]), + // }, + // order: { order: "desc" }, + // }); - if (retire_raw) { - const startDate = retire_raw.commandDateAffect; + // if (retire_raw) { + // const startDate = retire_raw.commandDateAffect; - // คำนวณจำนวนวันจากวันพ้นสภาพถึงปัจจุบัน - let daysCount = 0; - if (startDate) { - const start = new Date(startDate); - daysCount = Math.ceil((currentDate.getTime() - start.getTime()) / (1000 * 60 * 60 * 24)); - } + // // คำนวณจำนวนวันจากวันพ้นสภาพถึงปัจจุบัน + // let daysCount = 0; + // if (startDate) { + // const start = new Date(startDate); + // daysCount = Math.ceil((currentDate.getTime() - start.getTime()) / (1000 * 60 * 60 * 24)); + // } - const startDateStr = startDate - ? Extension.ToThaiNumber(Extension.ToThaiFullDate2(startDate)) - : "-"; + // const startDateStr = startDate + // ? Extension.ToThaiNumber(Extension.ToThaiFullDate2(startDate)) + // : "-"; - retires.push({ - date: `${startDateStr} - ปัจจุบัน`, - detail: retire_raw.commandName ?? "-", - day: daysCount > 0 ? Extension.ToThaiNumber(daysCount.toLocaleString()) : "-" - }); - } + // retires.push({ + // date: `${startDateStr} - ปัจจุบัน`, + // detail: retire_raw.commandName ?? "-", + // day: daysCount > 0 ? Extension.ToThaiNumber(daysCount.toLocaleString()) : "-" + // }); + // } // กรณีไม่มีข้อมูล if (retires.length === 0) { @@ -1863,11 +1958,11 @@ export class ProfileEmployeeController extends Controller { (_child2 == null ? "" : _child2 + " ") + (_child1 == null ? "" : _child1 + " ") + (_root == null ? "" : _root).trim() - const _position = profiles?.position != null ? - profiles?.posLevel != null - ? Extension.ToThaiNumber(`${profiles.position}${profiles.posLevel.posLevelName}`) + const _position = (profiles?.position != null ? + profiles.posType != null && profiles?.posLevel != null + ? Extension.ToThaiNumber(`${profiles.position} ${profiles.posType.posTypeShortName} ${profiles.posLevel.posLevelName}`) : profiles.position - : "" + : "").trim() const ocAssistance = await this.profileAssistanceRepository.findOne({ select: ["agency", "profileEmployeeId", "commandName", "status", "isDeleted"], where: { @@ -1960,8 +2055,7 @@ export class ProfileEmployeeController extends Controller { appointDate: profiles?.dateAppoint ? Extension.ToThaiNumber(Extension.ToThaiFullDate2(profiles.dateAppoint)) : "", - positionDate: - positionList.length > 0 ? positionList[positionList.length - 1].commandDateAffect : "", + positionDate: _commandDateAffect ?? "", citizenId: profiles.citizenId != null ? Extension.ToThaiNumber(profiles.citizenId.toString()) : "", fatherFullName: