Merge branch 'develop' into adiDev
This commit is contained in:
commit
5138a01461
15 changed files with 822 additions and 5077 deletions
|
|
@ -20,6 +20,8 @@ import { In } from "typeorm";
|
|||
import { RequestWithUser } from "../middlewares/user";
|
||||
import { ApiName } from "../entities/ApiName";
|
||||
import { ApiHistory } from "../entities/ApiHistory";
|
||||
|
||||
const jwt = require("jsonwebtoken");
|
||||
@Route("api/v1/org/apiKey")
|
||||
@Tags("ApiKey")
|
||||
@Security("bearerAuth")
|
||||
|
|
@ -32,6 +34,32 @@ export class ApiKeyController extends Controller {
|
|||
private apiNameRepository = AppDataSource.getRepository(ApiName);
|
||||
private apiHistoryRepository = AppDataSource.getRepository(ApiHistory);
|
||||
|
||||
/**
|
||||
* API ตรวจสอบและถอดรหัส JWT token
|
||||
*
|
||||
* @summary ตรวจสอบ JWT API Key
|
||||
*/
|
||||
@Post("verify")
|
||||
async verifyApiKey(@Body() requestBody: { token: string }) {
|
||||
try {
|
||||
const jwtSecret = process.env.JWT_SECRET || "your-default-secret-key";
|
||||
console.log("JWT_SECRET from env:", process.env.JWT_SECRET ? "exists" : "not found");
|
||||
console.log("Using secret:", jwtSecret);
|
||||
|
||||
const decoded = jwt.verify(requestBody.token, jwtSecret);
|
||||
return new HttpSuccess({
|
||||
valid: true,
|
||||
data: decoded,
|
||||
});
|
||||
} catch (error: any) {
|
||||
console.error("JWT Verification Error:", error.message);
|
||||
return new HttpSuccess({
|
||||
valid: false,
|
||||
error: error.message,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* API สร้าง Api Key
|
||||
*
|
||||
|
|
@ -52,8 +80,33 @@ export class ApiKeyController extends Controller {
|
|||
const apiName = await this.apiNameRepository.find({
|
||||
where: { id: In(requestBody.apiId) },
|
||||
});
|
||||
|
||||
const apiKey = Object.assign(new ApiKey(), requestBody);
|
||||
apiKey.keyApi = require("crypto").randomBytes(64).toString("base64");
|
||||
|
||||
// Create JWT token with embedded data
|
||||
const tokenPayload = {
|
||||
keyId: apiKey.id || require("crypto").randomUUID(),
|
||||
name: apiKey.name,
|
||||
accessType: apiKey.accessType,
|
||||
dnaRootId: apiKey.dnaRootId,
|
||||
dnaChild1Id: apiKey.dnaChild1Id,
|
||||
dnaChild2Id: apiKey.dnaChild2Id,
|
||||
dnaChild3Id: apiKey.dnaChild3Id,
|
||||
dnaChild4Id: apiKey.dnaChild4Id,
|
||||
apiIds: requestBody.apiId,
|
||||
createdBy: request.user.sub,
|
||||
createdAt: new Date().toISOString(),
|
||||
iat: Math.floor(Date.now() / 1000),
|
||||
};
|
||||
|
||||
// Sign JWT with secret (you should use environment variable for the secret)
|
||||
const jwtSecret = process.env.JWT_SECRET || "your-default-secret-key";
|
||||
|
||||
const jwtToken = jwt.sign(tokenPayload, jwtSecret, {
|
||||
expiresIn: "365d", // 1 year expiration
|
||||
});
|
||||
|
||||
apiKey.keyApi = jwtToken;
|
||||
apiKey.apiNames = apiName;
|
||||
apiKey.createdUserId = request.user.sub;
|
||||
apiKey.createdFullName = request.user.name;
|
||||
|
|
@ -104,6 +157,12 @@ export class ApiKeyController extends Controller {
|
|||
createdUserId: _data.createdUserId,
|
||||
createdFullName: _data.createdFullName,
|
||||
name: _data.name,
|
||||
accessType: _data.accessType,
|
||||
dnaRootId: _data.dnaRootId,
|
||||
dnaChild1Id: _data.dnaChild1Id,
|
||||
dnaChild2Id: _data.dnaChild2Id,
|
||||
dnaChild3Id: _data.dnaChild3Id,
|
||||
dnaChild4Id: _data.dnaChild4Id,
|
||||
apiNames: _data.apiNames.map((x) => ({
|
||||
id: x.id,
|
||||
name: x.name,
|
||||
|
|
|
|||
|
|
@ -68,7 +68,8 @@ export class ExRetirementController extends Controller {
|
|||
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่สามารถขอ Token ได้");
|
||||
}
|
||||
|
||||
const scope = requestBody.type === "officer" ? "getOfficerRetireData" : "";
|
||||
// const scope = requestBody.type === "officer" ? "getOfficerRetireData" : "";
|
||||
const scope = "getOfficerRetireData";
|
||||
const startRecord = requestBody.page !== 1 ? (requestBody.page - 1) * 25 : 0;
|
||||
|
||||
const formData = new FormData();
|
||||
|
|
@ -78,6 +79,7 @@ export class ExRetirementController extends Controller {
|
|||
formData.append("citizenID", requestBody.citizenID);
|
||||
formData.append("firstNameTH", requestBody.firstNameTH);
|
||||
formData.append("lastNameTH", requestBody.lastNameTH);
|
||||
formData.append("officerTypeID", requestBody.type === "officer" ? "1" : "2");
|
||||
|
||||
const res = await axios.post(API_URL_BANGKOK + "/getData", formData, {
|
||||
headers: {
|
||||
|
|
@ -96,6 +98,38 @@ export class ExRetirementController extends Controller {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Get("/document/{documentId}")
|
||||
async getDocument(@Path("documentId") officerDocumentID: string) {
|
||||
let retryCount = 0;
|
||||
const maxRetries = 2;
|
||||
while (retryCount < maxRetries) {
|
||||
try {
|
||||
const token = await getToken(clientId, clientSecret);
|
||||
if (!token) {
|
||||
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่สามารถขอ Token ได้");
|
||||
}
|
||||
|
||||
const formData = new FormData();
|
||||
formData.append("scope", "getOfficerRetireFile");
|
||||
formData.append("officerDocumentID", officerDocumentID);
|
||||
|
||||
const res = await axios.post(API_URL_BANGKOK + "/getData", formData, {
|
||||
headers: {
|
||||
Authorization: `Bearer ${token}`,
|
||||
},
|
||||
});
|
||||
return res.data;
|
||||
} catch (error: any) {
|
||||
if (error.response?.status === 500 && retryCount < maxRetries - 1) {
|
||||
TokenCache.delete(`${clientId}:${clientSecret}`);
|
||||
retryCount++;
|
||||
continue;
|
||||
}
|
||||
throw new HttpError(HttpStatusCode.INTERNAL_SERVER_ERROR, "ไม่สามารถติดต่อ API ได้");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
async function getToken(ClientID: string, ClientSecret: string): Promise<string> {
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import { Controller, Post, Route, Security, Tags, Request, UploadedFile } from "tsoa";
|
||||
import { AppDataSource } from "../database/data-source";
|
||||
import { In, IsNull, LessThanOrEqual, Not } from "typeorm";
|
||||
import { In, IsNull, LessThanOrEqual, Not, Between } from "typeorm";
|
||||
import HttpSuccess from "../interfaces/http-success";
|
||||
import { UseInterceptors } from "@nestjs/common";
|
||||
import { Profile } from "../entities/Profile";
|
||||
|
|
@ -631,465 +631,529 @@ export class ImportDataController extends Controller {
|
|||
async UploadFileSQLSalary(@Request() request: { user: Record<string, any> }) {
|
||||
let rowCount = 0;
|
||||
let _null: any = null;
|
||||
let sqlStatements: string[] = [];
|
||||
const batchSize = 200; // เพิ่ม batch size เพื่อประสิทธิภาพที่ดีขึ้น
|
||||
|
||||
const [profiles, total] = await AppDataSource.getRepository(Profile)
|
||||
.createQueryBuilder("profile")
|
||||
.select(["profile.citizenId", "profile.id"])
|
||||
.orderBy("profile.citizenId", "ASC")
|
||||
// .where("profile.citizenId = '3101702379675'")
|
||||
// .where({
|
||||
// citizenId: In([
|
||||
// // "1100600109451",
|
||||
// // "1209900075508",
|
||||
// // "1739900231556",
|
||||
// // "1809900305214",
|
||||
// // "1920600228762",
|
||||
// // "3101600963742",
|
||||
// // "3102401171243",
|
||||
// // "3120100454406",
|
||||
// // "3180100306172",
|
||||
// // "3700100094722",
|
||||
// // "3809900116957",
|
||||
// "3940900213929",
|
||||
// ]),
|
||||
// })
|
||||
.leftJoinAndSelect("profile.profileSalary", "profileSalary")
|
||||
// .where({ citizenId: "3101702379675" })
|
||||
.where("profileSalary.id IS NULL")
|
||||
// .skip(0)
|
||||
// .take(10000)
|
||||
.getManyAndCount();
|
||||
for await (const _item of profiles) {
|
||||
// ดึงข้อมูลมาโดยไม่ใส่ order
|
||||
const existingProfile = await this.HR_POSITION_OFFICERRepo.find({
|
||||
where: { CIT: _item.citizenId, FLAG_PERSON_TYPE: "1" },
|
||||
// นับจำนวน profiles ทั้งหมดก่อน
|
||||
const profileRepo = AppDataSource.getRepository(Profile);
|
||||
const totalProfiles = await profileRepo.count();
|
||||
|
||||
console.log(
|
||||
`Starting OPTIMIZED batch processing: ${totalProfiles} profiles, batch size: ${batchSize}`,
|
||||
);
|
||||
|
||||
for (let offset = 0; offset < totalProfiles; offset += batchSize) {
|
||||
const profiles = await profileRepo
|
||||
.createQueryBuilder("profile")
|
||||
.select(["profile.citizenId", "profile.id"])
|
||||
.orderBy("profile.citizenId", "ASC")
|
||||
.skip(offset)
|
||||
.take(batchSize)
|
||||
.getMany();
|
||||
|
||||
console.log(
|
||||
`Processing batch ${Math.floor(offset / batchSize) + 1}/${Math.ceil(totalProfiles / batchSize)} - Querying ${profiles.length} profiles`,
|
||||
);
|
||||
|
||||
const batchRecords = []; // Array สำหรับเก็บ records ที่จะ batch insert
|
||||
|
||||
// OPTIMIZATION 1: ดึงข้อมูล HR ทั้งหมดของ batch ในครั้งเดียว
|
||||
const citizenIds = profiles.map((p) => p.citizenId);
|
||||
const allHrData = await this.HR_POSITION_OFFICERRepo.createQueryBuilder("hr")
|
||||
.where("hr.CIT IN (:...citizenIds)", { citizenIds })
|
||||
.andWhere("hr.FLAG_PERSON_TYPE = :flag", { flag: "1" })
|
||||
.orderBy("hr.CIT", "ASC")
|
||||
.addOrderBy(
|
||||
"CASE WHEN hr.MP_POS_DATE IS NULL OR hr.MP_POS_DATE = '' THEN 1 ELSE 0 END",
|
||||
"ASC",
|
||||
)
|
||||
.addOrderBy("STR_TO_DATE(SUBSTRING_INDEX(hr.MP_POS_DATE, ' ', 1), '%d/%m/%Y')", "ASC")
|
||||
.addOrderBy("hr.ORDER_MOVE_POSITION", "ASC")
|
||||
.getMany();
|
||||
|
||||
// จัดกลุ่มข้อมูล HR ตาม citizenId
|
||||
const hrDataByCitizenId = new Map();
|
||||
allHrData.forEach((hr) => {
|
||||
if (!hrDataByCitizenId.has(hr.CIT)) {
|
||||
hrDataByCitizenId.set(hr.CIT, []);
|
||||
}
|
||||
hrDataByCitizenId.get(hr.CIT).push(hr);
|
||||
});
|
||||
|
||||
// sort ด้วย JavaScript
|
||||
existingProfile.sort((a, b) => {
|
||||
let dateA = new Date().getTime();
|
||||
let dateB = new Date().getTime();
|
||||
|
||||
if (a.MP_POS_DATE) {
|
||||
const [datePart] = a.MP_POS_DATE.split(" ");
|
||||
const [day, month, year] = datePart.split("/");
|
||||
dateA = new Date(`${year}-${month.padStart(2, "0")}-${day.padStart(2, "0")}`).getTime();
|
||||
}
|
||||
if (b.MP_POS_DATE) {
|
||||
const [datePart] = b.MP_POS_DATE.split(" ");
|
||||
const [day, month, year] = datePart.split("/");
|
||||
dateB = new Date(`${year}-${month.padStart(2, "0")}-${day.padStart(2, "0")}`).getTime();
|
||||
}
|
||||
if (dateA !== dateB) {
|
||||
return dateA - dateB; // ASC
|
||||
}
|
||||
return a.ORDER_MOVE_POSITION - b.ORDER_MOVE_POSITION; // ASC
|
||||
// OPTIMIZATION 2: ดึง existing ProfileSalary ทั้งหมดของ batch ในครั้งเดียว
|
||||
const allHrIds = allHrData.map((hr) => hr.id.toString());
|
||||
const existingSalaries = await this.salaryRepo.find({
|
||||
where: { refId: In(allHrIds) },
|
||||
select: ["refId"],
|
||||
});
|
||||
const existingSalaryRefIds = new Set(existingSalaries.map((s) => s.refId));
|
||||
|
||||
let order = 1;
|
||||
for await (const item of existingProfile) {
|
||||
rowCount++;
|
||||
const profileSalary: any = new ProfileSalary();
|
||||
profileSalary.profileId = _item.id;
|
||||
profileSalary.order = order;
|
||||
order = order + 1;
|
||||
profileSalary.commandNo = isNaN(item.MP_COMMAND_NUM) ? null : item.MP_COMMAND_NUM;
|
||||
profileSalary.commandYear = isNaN(item.MP_COMMAND_NUM)
|
||||
? null
|
||||
: item.CUR_YEAR > 2500
|
||||
? item.CUR_YEAR - 543
|
||||
: item.CUR_YEAR;
|
||||
for (const _item of profiles) {
|
||||
const existingProfile = hrDataByCitizenId.get(_item.citizenId) || [];
|
||||
|
||||
let MP_COMMAND_DATE = "";
|
||||
if (item.MP_COMMAND_DATE) {
|
||||
const [datePart] = item.MP_COMMAND_DATE.split(" ");
|
||||
const [day, month, year] = datePart.split("/");
|
||||
MP_COMMAND_DATE = `${year}-${month.padStart(2, "0")}-${day.padStart(2, "0")}`;
|
||||
}
|
||||
let MP_POS_DATE = "";
|
||||
if (item.MP_POS_DATE) {
|
||||
const [datePart] = item.MP_POS_DATE.split(" ");
|
||||
const [day, month, year] = datePart.split("/");
|
||||
MP_POS_DATE = `${year}-${month.padStart(2, "0")}-${day.padStart(2, "0")}`;
|
||||
}
|
||||
profileSalary.commandDateSign = MP_COMMAND_DATE == null ? _null : new Date(MP_COMMAND_DATE);
|
||||
profileSalary.commandDateAffect = MP_POS_DATE == null ? _null : new Date(MP_POS_DATE);
|
||||
if (
|
||||
[
|
||||
"0",
|
||||
"11",
|
||||
"22",
|
||||
"31",
|
||||
"39",
|
||||
"45",
|
||||
"46",
|
||||
"47",
|
||||
"49",
|
||||
"50",
|
||||
"51",
|
||||
"60",
|
||||
"61",
|
||||
"62",
|
||||
"99",
|
||||
].includes(item.FLAG_TO_NAME_CODE)
|
||||
) {
|
||||
profileSalary.commandCode = "0";
|
||||
profileSalary.commandName = "อื่น ๆ";
|
||||
} else if (["1", "58"].includes(item.FLAG_TO_NAME_CODE)) {
|
||||
profileSalary.commandCode = "1";
|
||||
profileSalary.commandName = "บรรจุและแต่งตั้งผู้สอบแข่งขันได้";
|
||||
} else if (["23"].includes(item.FLAG_TO_NAME_CODE)) {
|
||||
profileSalary.commandCode = "2";
|
||||
profileSalary.commandName = "บรรจุและแต่งตั้งผู้ได้รับคัดเลือก";
|
||||
} else if (["3", "6", "34", "36", "37"].includes(item.FLAG_TO_NAME_CODE)) {
|
||||
profileSalary.commandCode = "3";
|
||||
profileSalary.commandName = "แต่งตั้ง ย้าย";
|
||||
} else if (["10", "55", "56"].includes(item.FLAG_TO_NAME_CODE)) {
|
||||
profileSalary.commandCode = "4";
|
||||
profileSalary.commandName = "เลื่อน";
|
||||
} else if (["14"].includes(item.FLAG_TO_NAME_CODE)) {
|
||||
profileSalary.commandCode = "5";
|
||||
profileSalary.commandName = "เลื่อนเงินเดือนตามปกติ";
|
||||
} else if (
|
||||
["8", "20", "24", "25", "43", "44", "52", "66", "67"].includes(item.FLAG_TO_NAME_CODE)
|
||||
) {
|
||||
profileSalary.commandCode = "6";
|
||||
profileSalary.commandName = "เลื่อนเงินเดือนกรณีอื่น ๆ";
|
||||
} else if (["-"].includes(item.FLAG_TO_NAME_CODE)) {
|
||||
profileSalary.commandCode = "7";
|
||||
profileSalary.commandName = "เงินพิเศษอื่น ๆ";
|
||||
} else if (["38", "40", "53", "54"].includes(item.FLAG_TO_NAME_CODE)) {
|
||||
profileSalary.commandCode = "8";
|
||||
profileSalary.commandName = "ปรับโครงสร้าง";
|
||||
} else if (["12"].includes(item.FLAG_TO_NAME_CODE)) {
|
||||
profileSalary.commandCode = "9";
|
||||
profileSalary.commandName = "พ้นทดลองปฏิบัติราชการ";
|
||||
} else if (["2", "18"].includes(item.FLAG_TO_NAME_CODE)) {
|
||||
profileSalary.commandCode = "10";
|
||||
profileSalary.commandName = "บรรจุกลับ";
|
||||
} else if (["4", "32", "33"].includes(item.FLAG_TO_NAME_CODE)) {
|
||||
profileSalary.commandCode = "11";
|
||||
profileSalary.commandName = "รับโอน";
|
||||
} else if (["5"].includes(item.FLAG_TO_NAME_CODE)) {
|
||||
profileSalary.commandCode = "12";
|
||||
profileSalary.commandName = "ให้โอน";
|
||||
} else if (["15", "95"].includes(item.FLAG_TO_NAME_CODE)) {
|
||||
profileSalary.commandCode = "13";
|
||||
profileSalary.commandName = "แก้ไขคำสั่ง";
|
||||
} else if (["19"].includes(item.FLAG_TO_NAME_CODE)) {
|
||||
profileSalary.commandCode = "14";
|
||||
profileSalary.commandName = "ยกเลิกคำสั่ง";
|
||||
} else if (["27", "35"].includes(item.FLAG_TO_NAME_CODE)) {
|
||||
profileSalary.commandCode = "15";
|
||||
profileSalary.commandName = "ลาออกจากราชการ";
|
||||
} else if (["13", "17", "21", "28", "29", "30", "59"].includes(item.FLAG_TO_NAME_CODE)) {
|
||||
profileSalary.commandCode = "16";
|
||||
profileSalary.commandName = "พ้นจากราชการ";
|
||||
} else if (["7", "9", "16", "26", "63", "68"].includes(item.FLAG_TO_NAME_CODE)) {
|
||||
profileSalary.commandCode = "17";
|
||||
profileSalary.commandName = "รักษาราชการ, ช่วยราชการ";
|
||||
}
|
||||
if (item.FLAG_TO_NAME_CODE == null && item.FLAG_TO_NAME == "ลาศึกษาต่อ") {
|
||||
profileSalary.commandCode = "0";
|
||||
profileSalary.commandName = "อื่น ๆ";
|
||||
} else if (
|
||||
item.FLAG_TO_NAME_CODE == null &&
|
||||
(item.FLAG_TO_NAME == "เลื่อน 1 ขั้นและเลื่อนระดับ" ||
|
||||
item.FLAG_TO_NAME == "เลื่อน 0.5 ขั้นและเลื่อนระดับ")
|
||||
) {
|
||||
profileSalary.commandCode = "4";
|
||||
profileSalary.commandName = "เลื่อน";
|
||||
} else if (item.FLAG_TO_NAME_CODE == null && item.FLAG_TO_NAME == "เลื่อนเงินเดือน") {
|
||||
profileSalary.commandCode = "5";
|
||||
profileSalary.commandName = "เลื่อนเงินเดือนตามปกติ";
|
||||
} else if (
|
||||
item.FLAG_TO_NAME_CODE == null &&
|
||||
(item.FLAG_TO_NAME == "ปรับตามบัญชีเงินเดือนใหม่" ||
|
||||
item.FLAG_TO_NAME == "เลื่อนเงินเดือน" ||
|
||||
item.FLAG_TO_NAME == "ปรับเงินเดือนตาม กพ.")
|
||||
) {
|
||||
profileSalary.commandCode = "6";
|
||||
profileSalary.commandName = "เลื่อนเงินเดือนกรณีอื่น ๆ";
|
||||
} else if (
|
||||
item.FLAG_TO_NAME_CODE == null &&
|
||||
item.FLAG_TO_NAME == "แต่งตั้งตามการปรับปรุงโครงฯ"
|
||||
) {
|
||||
profileSalary.commandCode = "8";
|
||||
profileSalary.commandName = "ปรับโครงสร้าง";
|
||||
} else if (item.FLAG_TO_NAME_CODE == null && item.FLAG_TO_NAME == "พ้นทดลองปฏิบัติราชการ") {
|
||||
profileSalary.commandCode = "9";
|
||||
profileSalary.commandName = "พ้นทดลองปฏิบัติราชการ";
|
||||
} else if (item.FLAG_TO_NAME_CODE == null && item.FLAG_TO_NAME == "ให้โอนมา") {
|
||||
profileSalary.commandCode = "11";
|
||||
profileSalary.commandName = "รับโอน";
|
||||
} else if (
|
||||
item.FLAG_TO_NAME_CODE == null &&
|
||||
item.FLAG_TO_NAME == "โอนไปปฏิบัติราชการที่อื่น"
|
||||
) {
|
||||
profileSalary.commandCode = "12";
|
||||
profileSalary.commandName = "ให้โอน";
|
||||
} else if (item.FLAG_TO_NAME_CODE == null && item.FLAG_TO_NAME == "ยกเลิกคำสั่ง") {
|
||||
profileSalary.commandCode = "14";
|
||||
profileSalary.commandName = "ยกเลิกคำสั่ง";
|
||||
} else if (item.FLAG_TO_NAME_CODE == null && item.FLAG_TO_NAME == "รักษาการในตำแหน่ง") {
|
||||
profileSalary.commandCode = "17";
|
||||
profileSalary.commandName = "รักษาราชการ, ช่วยราชการ";
|
||||
}
|
||||
if (
|
||||
(profileSalary.commandCode == null || profileSalary.commandCode == undefined) &&
|
||||
(profileSalary.commandName == null || profileSalary.commandName == undefined)
|
||||
) {
|
||||
let order = 1;
|
||||
for (const item of existingProfile) {
|
||||
rowCount++;
|
||||
|
||||
// ใช้ Set lookup แทนการ query database
|
||||
if (existingSalaryRefIds.has(item.id.toString())) continue;
|
||||
const profileSalary: any = new ProfileSalary();
|
||||
profileSalary.profileId = _item.id;
|
||||
profileSalary.order = order;
|
||||
order = order + 1;
|
||||
profileSalary.commandNo = isNaN(item.MP_COMMAND_NUM) ? null : item.MP_COMMAND_NUM;
|
||||
|
||||
// แก้ไข logic การกำหนด commandYear
|
||||
if (isNaN(item.CUR_YEAR) || item.CUR_YEAR == null) {
|
||||
profileSalary.commandYear = null;
|
||||
} else {
|
||||
profileSalary.commandYear = item.CUR_YEAR > 2500 ? item.CUR_YEAR - 543 : item.CUR_YEAR;
|
||||
}
|
||||
|
||||
let MP_COMMAND_DATE = "";
|
||||
if (item.MP_COMMAND_DATE && item.MP_COMMAND_DATE.trim() !== "") {
|
||||
try {
|
||||
const [datePart] = item.MP_COMMAND_DATE.split(" ");
|
||||
const [day, month, year] = datePart.split("/");
|
||||
if (day && month && year) {
|
||||
MP_COMMAND_DATE = `${year}-${month.padStart(2, "0")}-${day.padStart(2, "0")}`;
|
||||
}
|
||||
} catch (error) {
|
||||
console.warn(`Invalid MP_COMMAND_DATE format: ${item.MP_COMMAND_DATE}`);
|
||||
}
|
||||
}
|
||||
let MP_POS_DATE = "";
|
||||
if (item.MP_POS_DATE && item.MP_POS_DATE.trim() !== "") {
|
||||
try {
|
||||
const [datePart] = item.MP_POS_DATE.split(" ");
|
||||
const [day, month, year] = datePart.split("/");
|
||||
if (day && month && year) {
|
||||
MP_POS_DATE = `${year}-${month.padStart(2, "0")}-${day.padStart(2, "0")}`;
|
||||
}
|
||||
} catch (error) {
|
||||
console.warn(`Invalid MP_POS_DATE format: ${item.MP_POS_DATE}`);
|
||||
}
|
||||
}
|
||||
profileSalary.commandDateSign =
|
||||
MP_COMMAND_DATE == null ? _null : new Date(MP_COMMAND_DATE);
|
||||
profileSalary.commandDateAffect = MP_POS_DATE == null ? _null : new Date(MP_POS_DATE);
|
||||
if (
|
||||
[
|
||||
"อื่นๆ",
|
||||
"กลับไปปฏิบัติงานทางต้นสังกัด",
|
||||
"เปลี่ยนประเภทข้าราชการ",
|
||||
"โอนสับเปลี่ยน",
|
||||
"เข้ารับฝึกอบรม",
|
||||
"ดูงาน",
|
||||
"ศึกษาต่อ",
|
||||
"ขยายเวลาเข้ารับการฝึกอบรม",
|
||||
"ขยายเวลาศึกษาต่อ",
|
||||
"รายงานตัวกลับเข้าปฏิบัติราชการ",
|
||||
"ไม่ได้เลื่อนขั้น",
|
||||
"ตัดเงินเดือน",
|
||||
"ลดขั้นเงินเดือน",
|
||||
"ให้ข้าราชการกลับเข้ารับราชการ",
|
||||
"ไม่ระบุ",
|
||||
].includes(item.FLAG_TO_NAME)
|
||||
"0",
|
||||
"11",
|
||||
"22",
|
||||
"31",
|
||||
"39",
|
||||
"45",
|
||||
"46",
|
||||
"47",
|
||||
"49",
|
||||
"50",
|
||||
"51",
|
||||
"60",
|
||||
"61",
|
||||
"62",
|
||||
"99",
|
||||
].includes(item.FLAG_TO_NAME_CODE)
|
||||
) {
|
||||
profileSalary.commandCode = "0";
|
||||
profileSalary.commandName = "อื่น ๆ";
|
||||
} else if (
|
||||
[
|
||||
"บรรจุและแต่งตั้งผู้สอบแข่งขันได้",
|
||||
"ทดลองปฎิบัติราชการ",
|
||||
"ทดลองปฏิบัติราชการและปรับวุฒิ",
|
||||
"บรรจุใหม่",
|
||||
].includes(item.FLAG_TO_NAME)
|
||||
) {
|
||||
} else if (["1", "58"].includes(item.FLAG_TO_NAME_CODE)) {
|
||||
profileSalary.commandCode = "1";
|
||||
profileSalary.commandName = "บรรจุและแต่งตั้งผู้สอบแข่งขันได้";
|
||||
} else if (["บรรจุและแต่งตั้งผู้ได้รับการคัดเลือก"].includes(item.FLAG_TO_NAME)) {
|
||||
} else if (["23"].includes(item.FLAG_TO_NAME_CODE)) {
|
||||
profileSalary.commandCode = "2";
|
||||
profileSalary.commandName = "บรรจุและแต่งตั้งผู้ได้รับคัดเลือก";
|
||||
} else if (
|
||||
[
|
||||
"แต่งตั้ง (ย้ายสับเปลี่ยน)",
|
||||
"แต่งตั้ง (ย้าย)",
|
||||
"แต่งตั้ง",
|
||||
"เปลี่ยนสายงาน",
|
||||
"เปลี่ยนตำแหน่ง",
|
||||
"ตัดโอนตำแหน่ง",
|
||||
].includes(item.FLAG_TO_NAME)
|
||||
) {
|
||||
} else if (["3", "6", "34", "36", "37"].includes(item.FLAG_TO_NAME_CODE)) {
|
||||
profileSalary.commandCode = "3";
|
||||
profileSalary.commandName = "แต่งตั้ง ย้าย";
|
||||
} else if (
|
||||
["เลื่อนและแต่งตั้ง", "เลื่อนระดับ", "เลื่อนเงินเดือนและระดับ"].includes(
|
||||
item.FLAG_TO_NAME,
|
||||
)
|
||||
) {
|
||||
} else if (["10", "55", "56"].includes(item.FLAG_TO_NAME_CODE)) {
|
||||
profileSalary.commandCode = "4";
|
||||
profileSalary.commandName = "เลื่อน";
|
||||
} else if (["เลื่อนขั้นเงินเดือน", "เลื่อนเงินเดือน"].includes(item.FLAG_TO_NAME)) {
|
||||
} else if (["14"].includes(item.FLAG_TO_NAME_CODE)) {
|
||||
profileSalary.commandCode = "5";
|
||||
profileSalary.commandName = "เลื่อนเงินเดือนตามปกติ";
|
||||
} else if (
|
||||
[
|
||||
"ปรับเงินเดือนตามคุณวุฒิ",
|
||||
"ได้รับเงินตอบแทนพิเศษ",
|
||||
"เงินเพิ่มการครองชีพชั่วคราว",
|
||||
"เลื่อนขั้นเงินเดือนกรณีพิเศษ",
|
||||
"ปรับอัตราเงินเดือนตามบัญชีอัตราเงินเดือนใหม่ ท้าย พ.ร.บ. เงินเดือนและเงินประจำตำ",
|
||||
"ปรับอัตราเงินเดือนตามพระราชกฤษฎีกา การปรับอัตราเงินเดือนของข้าราชการ",
|
||||
"เลื่อนขั้นเงินเดือน (เพิ่มเติม)",
|
||||
"ปรับอัตราเงินเดือน",
|
||||
"ให้ข้าราชการได้รับเงินเดือนตามคุณวุฒิ",
|
||||
].includes(item.FLAG_TO_NAME)
|
||||
["8", "20", "24", "25", "43", "44", "52", "66", "67"].includes(item.FLAG_TO_NAME_CODE)
|
||||
) {
|
||||
profileSalary.commandCode = "6";
|
||||
profileSalary.commandName = "เลื่อนเงินเดือนกรณีอื่น ๆ";
|
||||
} else if (["--"].includes(item.FLAG_TO_NAME)) {
|
||||
} else if (["-"].includes(item.FLAG_TO_NAME_CODE)) {
|
||||
profileSalary.commandCode = "7";
|
||||
profileSalary.commandName = "เงินพิเศษอื่น ๆ";
|
||||
} else if (["38", "40", "53", "54"].includes(item.FLAG_TO_NAME_CODE)) {
|
||||
profileSalary.commandCode = "8";
|
||||
profileSalary.commandName = "ปรับโครงสร้าง";
|
||||
} else if (["12"].includes(item.FLAG_TO_NAME_CODE)) {
|
||||
profileSalary.commandCode = "9";
|
||||
profileSalary.commandName = "พ้นทดลองปฏิบัติราชการ";
|
||||
} else if (["2", "18"].includes(item.FLAG_TO_NAME_CODE)) {
|
||||
profileSalary.commandCode = "10";
|
||||
profileSalary.commandName = "บรรจุกลับ";
|
||||
} else if (["4", "32", "33"].includes(item.FLAG_TO_NAME_CODE)) {
|
||||
profileSalary.commandCode = "11";
|
||||
profileSalary.commandName = "รับโอน";
|
||||
} else if (["5"].includes(item.FLAG_TO_NAME_CODE)) {
|
||||
profileSalary.commandCode = "12";
|
||||
profileSalary.commandName = "ให้โอน";
|
||||
} else if (["15", "95"].includes(item.FLAG_TO_NAME_CODE)) {
|
||||
profileSalary.commandCode = "13";
|
||||
profileSalary.commandName = "แก้ไขคำสั่ง";
|
||||
} else if (["19"].includes(item.FLAG_TO_NAME_CODE)) {
|
||||
profileSalary.commandCode = "14";
|
||||
profileSalary.commandName = "ยกเลิกคำสั่ง";
|
||||
} else if (["27", "35"].includes(item.FLAG_TO_NAME_CODE)) {
|
||||
profileSalary.commandCode = "15";
|
||||
profileSalary.commandName = "ลาออกจากราชการ";
|
||||
} else if (["13", "17", "21", "28", "29", "30", "59"].includes(item.FLAG_TO_NAME_CODE)) {
|
||||
profileSalary.commandCode = "16";
|
||||
profileSalary.commandName = "พ้นจากราชการ";
|
||||
} else if (["7", "9", "16", "26", "63", "68"].includes(item.FLAG_TO_NAME_CODE)) {
|
||||
profileSalary.commandCode = "17";
|
||||
profileSalary.commandName = "รักษาราชการ, ช่วยราชการ";
|
||||
}
|
||||
if (item.FLAG_TO_NAME_CODE == null && item.FLAG_TO_NAME == "ลาศึกษาต่อ") {
|
||||
profileSalary.commandCode = "0";
|
||||
profileSalary.commandName = "อื่น ๆ";
|
||||
} else if (
|
||||
["ปรับโครงสร้าง", "แต่งตั้ง (จัดคนลงกรอบ)", "แต่งตั้งตามแผนอัตรากำลังฯ"].includes(
|
||||
item.FLAG_TO_NAME,
|
||||
)
|
||||
item.FLAG_TO_NAME_CODE == null &&
|
||||
(item.FLAG_TO_NAME == "เลื่อน 1 ขั้นและเลื่อนระดับ" ||
|
||||
item.FLAG_TO_NAME == "เลื่อน 0.5 ขั้นและเลื่อนระดับ")
|
||||
) {
|
||||
profileSalary.commandCode = "4";
|
||||
profileSalary.commandName = "เลื่อน";
|
||||
} else if (item.FLAG_TO_NAME_CODE == null && item.FLAG_TO_NAME == "เลื่อนเงินเดือน") {
|
||||
profileSalary.commandCode = "5";
|
||||
profileSalary.commandName = "เลื่อนเงินเดือนตามปกติ";
|
||||
} else if (
|
||||
item.FLAG_TO_NAME_CODE == null &&
|
||||
(item.FLAG_TO_NAME == "ปรับตามบัญชีเงินเดือนใหม่" ||
|
||||
item.FLAG_TO_NAME == "เลื่อนเงินเดือน" ||
|
||||
item.FLAG_TO_NAME == "ปรับเงินเดือนตาม กพ.")
|
||||
) {
|
||||
profileSalary.commandCode = "6";
|
||||
profileSalary.commandName = "เลื่อนเงินเดือนกรณีอื่น ๆ";
|
||||
} else if (
|
||||
item.FLAG_TO_NAME_CODE == null &&
|
||||
item.FLAG_TO_NAME == "แต่งตั้งตามการปรับปรุงโครงฯ"
|
||||
) {
|
||||
profileSalary.commandCode = "8";
|
||||
profileSalary.commandName = "ปรับโครงสร้าง";
|
||||
} else if (["พ้นทดลองปฏิบัติราชการ"].includes(item.FLAG_TO_NAME)) {
|
||||
} else if (
|
||||
item.FLAG_TO_NAME_CODE == null &&
|
||||
item.FLAG_TO_NAME == "พ้นทดลองปฏิบัติราชการ"
|
||||
) {
|
||||
profileSalary.commandCode = "9";
|
||||
profileSalary.commandName = "พ้นทดลองปฏิบัติราชการ";
|
||||
} else if (
|
||||
[
|
||||
"บรรจุกลับ",
|
||||
"บรรจุกลับข้าราชการ",
|
||||
"บรรจุและแต่งตั้งผู้ไปรับราชการทหารกลับเข้ารับราชการ",
|
||||
].includes(item.FLAG_TO_NAME)
|
||||
) {
|
||||
profileSalary.commandCode = "10";
|
||||
profileSalary.commandName = "บรรจุกลับ";
|
||||
} else if (
|
||||
[
|
||||
"รับโอนข้าราชการตามกฎหมายอื่น",
|
||||
"รับโอนข้าราชการตามกฎหมายอื่น ผู้สอบแข่งขันได้",
|
||||
"รับโอนข้าราชการตามกฏหมายอื่น โดยการคัดเลือก",
|
||||
].includes(item.FLAG_TO_NAME)
|
||||
) {
|
||||
} else if (item.FLAG_TO_NAME_CODE == null && item.FLAG_TO_NAME == "ให้โอนมา") {
|
||||
profileSalary.commandCode = "11";
|
||||
profileSalary.commandName = "รับโอน";
|
||||
} else if (["ให้โอน"].includes(item.FLAG_TO_NAME)) {
|
||||
} else if (
|
||||
item.FLAG_TO_NAME_CODE == null &&
|
||||
item.FLAG_TO_NAME == "โอนไปปฏิบัติราชการที่อื่น"
|
||||
) {
|
||||
profileSalary.commandCode = "12";
|
||||
profileSalary.commandName = "ให้โอน";
|
||||
} else if (["แก้ไขคำสั่ง"].includes(item.FLAG_TO_NAME)) {
|
||||
profileSalary.commandCode = "13";
|
||||
profileSalary.commandName = "แก้ไขคำสั่ง";
|
||||
} else if (["ยกเลิกคำสั่ง"].includes(item.FLAG_TO_NAME)) {
|
||||
} else if (item.FLAG_TO_NAME_CODE == null && item.FLAG_TO_NAME == "ยกเลิกคำสั่ง") {
|
||||
profileSalary.commandCode = "14";
|
||||
profileSalary.commandName = "ยกเลิกคำสั่ง";
|
||||
} else if (
|
||||
[
|
||||
"ลาออกจากราชการ",
|
||||
"พ้นจากราชการ/ลาออกจากราชการตามมาตรการพัฒนาและบริหารกำลังคน",
|
||||
].includes(item.FLAG_TO_NAME)
|
||||
) {
|
||||
profileSalary.commandCode = "15";
|
||||
profileSalary.commandName = "ลาออกจากราชการ";
|
||||
} else if (
|
||||
[
|
||||
"พ้นจากราชการ/เพื่อไปปฏิบัติราชการทหาร",
|
||||
"เกษียณ",
|
||||
"ไม่พ้นทดลองปฏิบัติราชการ",
|
||||
"พ้นจากราชการ/ให้ออก",
|
||||
"พ้นจากราชการ/ไล่ออก",
|
||||
"พ้นจากราชการ/เสียชีวิต",
|
||||
"พ้นจากราชการ/ปลดออก",
|
||||
].includes(item.FLAG_TO_NAME)
|
||||
) {
|
||||
profileSalary.commandCode = "16";
|
||||
profileSalary.commandName = "พ้นจากราชการ";
|
||||
} else if (
|
||||
[
|
||||
"แต่งตั้งข้าราชการรักษาราชการแทน",
|
||||
"ช่วยราชการ",
|
||||
"รักษาการ",
|
||||
"รักษาราชการแทน",
|
||||
"มอบหมายให้ปฏิบัติหน้าที่",
|
||||
"มอบหมายข้าราชการปฏิบัติหน้าที่แทน",
|
||||
].includes(item.FLAG_TO_NAME)
|
||||
) {
|
||||
} else if (item.FLAG_TO_NAME_CODE == null && item.FLAG_TO_NAME == "รักษาการในตำแหน่ง") {
|
||||
profileSalary.commandCode = "17";
|
||||
profileSalary.commandName = "รักษาราชการ, ช่วยราชการ";
|
||||
} else {
|
||||
profileSalary.commandCode = "0";
|
||||
profileSalary.commandName = item.FLAG_TO_NAME;
|
||||
}
|
||||
}
|
||||
profileSalary.posNoAbb = item.POS_NUM_NAME;
|
||||
profileSalary.posNo = item.POS_NUM_CODE;
|
||||
profileSalary.positionName = item.WORK_LINE_NAME;
|
||||
var positionType = _null;
|
||||
var positionLevel = _null;
|
||||
if (item.MP_CEE == "21") {
|
||||
positionType = "ทั่วไป";
|
||||
positionLevel = "ปฏิบัติงาน";
|
||||
} else if (item.MP_CEE == "22") {
|
||||
positionType = "ทั่วไป";
|
||||
positionLevel = "ชำนาญงาน";
|
||||
} else if (item.MP_CEE == "23") {
|
||||
positionType = "ทั่วไป";
|
||||
positionLevel = "อาวุโส";
|
||||
} else if (item.MP_CEE == "24") {
|
||||
positionType = "ทั่วไป";
|
||||
positionLevel = "อาวุโสเฉพาะสายงานที่กำหนด";
|
||||
} else if (item.MP_CEE == "25") {
|
||||
positionType = "ทั่วไป";
|
||||
positionLevel = "ทักษะพิเศษ";
|
||||
} else if (item.MP_CEE == "26") {
|
||||
positionType = "วิชาการ";
|
||||
positionLevel = "ปฏิบัติการ";
|
||||
} else if (item.MP_CEE == "27") {
|
||||
positionType = "วิชาการ";
|
||||
positionLevel = "ชำนาญการ";
|
||||
} else if (item.MP_CEE == "28") {
|
||||
positionType = "วิชาการ";
|
||||
positionLevel = "ชำนาญการพิเศษ";
|
||||
} else if (item.MP_CEE == "29") {
|
||||
positionType = "วิชาการ";
|
||||
positionLevel = "เชี่ยวชาญ";
|
||||
} else if (item.MP_CEE == "30") {
|
||||
positionType = "วิชาการ";
|
||||
positionLevel = "ทรงคุณวุฒิ";
|
||||
} else if (item.MP_CEE == "31") {
|
||||
positionType = "วิชาการ";
|
||||
positionLevel = "ทรงคุณวุฒิเฉพาะสายงานที่กำหนด";
|
||||
} else if (item.MP_CEE == "32") {
|
||||
positionType = "อำนวยการ";
|
||||
positionLevel = "ต้น";
|
||||
} else if (item.MP_CEE == "33") {
|
||||
positionType = "อำนวยการ";
|
||||
positionLevel = "สูง";
|
||||
} else if (item.MP_CEE == "34") {
|
||||
positionType = "บริหาร";
|
||||
positionLevel = "ต้น";
|
||||
} else if (item.MP_CEE == "35") {
|
||||
positionType = "บริหาร";
|
||||
positionLevel = "สูง";
|
||||
} else {
|
||||
profileSalary.positionCee = item.MP_CEE;
|
||||
}
|
||||
profileSalary.positionType = positionType;
|
||||
profileSalary.positionLevel = positionLevel;
|
||||
profileSalary.orgRoot = item.DEPARTMENT_NAME;
|
||||
profileSalary.orgChild1 = item.DIVISION_NAME;
|
||||
profileSalary.orgChild2 = item.SECTION_NAME;
|
||||
profileSalary.orgChild3 = item.JOB_NAME;
|
||||
if (item.DEPARTMENT_CODE == "50") {
|
||||
profileSalary.orgRoot = item.DIVISION_NAME;
|
||||
profileSalary.orgChild1 = item.SECTION_NAME;
|
||||
profileSalary.orgChild2 = item.JOB_NAME;
|
||||
}
|
||||
profileSalary.positionExecutive = item.ADMIN_NAME ?? _null;
|
||||
profileSalary.amount = isNaN(item.SALARY) ? null : item.SALARY;
|
||||
profileSalary.remark = item.REMARK;
|
||||
profileSalary.refId = item.id;
|
||||
profileSalary.isEntry = false;
|
||||
if (
|
||||
(profileSalary.commandCode == null || profileSalary.commandCode == undefined) &&
|
||||
(profileSalary.commandName == null || profileSalary.commandName == undefined)
|
||||
) {
|
||||
if (
|
||||
[
|
||||
"อื่นๆ",
|
||||
"กลับไปปฏิบัติงานทางต้นสังกัด",
|
||||
"เปลี่ยนประเภทข้าราชการ",
|
||||
"โอนสับเปลี่ยน",
|
||||
"เข้ารับฝึกอบรม",
|
||||
"ดูงาน",
|
||||
"ศึกษาต่อ",
|
||||
"ขยายเวลาเข้ารับการฝึกอบรม",
|
||||
"ขยายเวลาศึกษาต่อ",
|
||||
"รายงานตัวกลับเข้าปฏิบัติราชการ",
|
||||
"ไม่ได้เลื่อนขั้น",
|
||||
"ตัดเงินเดือน",
|
||||
"ลดขั้นเงินเดือน",
|
||||
"ให้ข้าราชการกลับเข้ารับราชการ",
|
||||
"ไม่ระบุ",
|
||||
].includes(item.FLAG_TO_NAME)
|
||||
) {
|
||||
profileSalary.commandCode = "0";
|
||||
profileSalary.commandName = "อื่น ๆ";
|
||||
} else if (
|
||||
[
|
||||
"บรรจุและแต่งตั้งผู้สอบแข่งขันได้",
|
||||
"ทดลองปฎิบัติราชการ",
|
||||
"ทดลองปฏิบัติราชการและปรับวุฒิ",
|
||||
"บรรจุใหม่",
|
||||
].includes(item.FLAG_TO_NAME)
|
||||
) {
|
||||
profileSalary.commandCode = "1";
|
||||
profileSalary.commandName = "บรรจุและแต่งตั้งผู้สอบแข่งขันได้";
|
||||
} else if (["บรรจุและแต่งตั้งผู้ได้รับการคัดเลือก"].includes(item.FLAG_TO_NAME)) {
|
||||
profileSalary.commandCode = "2";
|
||||
profileSalary.commandName = "บรรจุและแต่งตั้งผู้ได้รับคัดเลือก";
|
||||
} else if (
|
||||
[
|
||||
"แต่งตั้ง (ย้ายสับเปลี่ยน)",
|
||||
"แต่งตั้ง (ย้าย)",
|
||||
"แต่งตั้ง",
|
||||
"เปลี่ยนสายงาน",
|
||||
"เปลี่ยนตำแหน่ง",
|
||||
"ตัดโอนตำแหน่ง",
|
||||
].includes(item.FLAG_TO_NAME)
|
||||
) {
|
||||
profileSalary.commandCode = "3";
|
||||
profileSalary.commandName = "แต่งตั้ง ย้าย";
|
||||
} else if (
|
||||
["เลื่อนและแต่งตั้ง", "เลื่อนระดับ", "เลื่อนเงินเดือนและระดับ"].includes(
|
||||
item.FLAG_TO_NAME,
|
||||
)
|
||||
) {
|
||||
profileSalary.commandCode = "4";
|
||||
profileSalary.commandName = "เลื่อน";
|
||||
} else if (["เลื่อนขั้นเงินเดือน", "เลื่อนเงินเดือน"].includes(item.FLAG_TO_NAME)) {
|
||||
profileSalary.commandCode = "5";
|
||||
profileSalary.commandName = "เลื่อนเงินเดือนตามปกติ";
|
||||
} else if (
|
||||
[
|
||||
"ปรับเงินเดือนตามคุณวุฒิ",
|
||||
"ได้รับเงินตอบแทนพิเศษ",
|
||||
"เงินเพิ่มการครองชีพชั่วคราว",
|
||||
"เลื่อนขั้นเงินเดือนกรณีพิเศษ",
|
||||
"ปรับอัตราเงินเดือนตามบัญชีอัตราเงินเดือนใหม่ ท้าย พ.ร.บ. เงินเดือนและเงินประจำตำ",
|
||||
"ปรับอัตราเงินเดือนตามพระราชกฤษฎีกา การปรับอัตราเงินเดือนของข้าราชการ",
|
||||
"เลื่อนขั้นเงินเดือน (เพิ่มเติม)",
|
||||
"ปรับอัตราเงินเดือน",
|
||||
"ให้ข้าราชการได้รับเงินเดือนตามคุณวุฒิ",
|
||||
].includes(item.FLAG_TO_NAME)
|
||||
) {
|
||||
profileSalary.commandCode = "6";
|
||||
profileSalary.commandName = "เลื่อนเงินเดือนกรณีอื่น ๆ";
|
||||
} else if (["--"].includes(item.FLAG_TO_NAME)) {
|
||||
profileSalary.commandCode = "7";
|
||||
profileSalary.commandName = "เงินพิเศษอื่น ๆ";
|
||||
} else if (
|
||||
["ปรับโครงสร้าง", "แต่งตั้ง (จัดคนลงกรอบ)", "แต่งตั้งตามแผนอัตรากำลังฯ"].includes(
|
||||
item.FLAG_TO_NAME,
|
||||
)
|
||||
) {
|
||||
profileSalary.commandCode = "8";
|
||||
profileSalary.commandName = "ปรับโครงสร้าง";
|
||||
} else if (["พ้นทดลองปฏิบัติราชการ"].includes(item.FLAG_TO_NAME)) {
|
||||
profileSalary.commandCode = "9";
|
||||
profileSalary.commandName = "พ้นทดลองปฏิบัติราชการ";
|
||||
} else if (
|
||||
[
|
||||
"บรรจุกลับ",
|
||||
"บรรจุกลับข้าราชการ",
|
||||
"บรรจุและแต่งตั้งผู้ไปรับราชการทหารกลับเข้ารับราชการ",
|
||||
].includes(item.FLAG_TO_NAME)
|
||||
) {
|
||||
profileSalary.commandCode = "10";
|
||||
profileSalary.commandName = "บรรจุกลับ";
|
||||
} else if (
|
||||
[
|
||||
"รับโอนข้าราชการตามกฎหมายอื่น",
|
||||
"รับโอนข้าราชการตามกฎหมายอื่น ผู้สอบแข่งขันได้",
|
||||
"รับโอนข้าราชการตามกฏหมายอื่น โดยการคัดเลือก",
|
||||
].includes(item.FLAG_TO_NAME)
|
||||
) {
|
||||
profileSalary.commandCode = "11";
|
||||
profileSalary.commandName = "รับโอน";
|
||||
} else if (["ให้โอน"].includes(item.FLAG_TO_NAME)) {
|
||||
profileSalary.commandCode = "12";
|
||||
profileSalary.commandName = "ให้โอน";
|
||||
} else if (["แก้ไขคำสั่ง"].includes(item.FLAG_TO_NAME)) {
|
||||
profileSalary.commandCode = "13";
|
||||
profileSalary.commandName = "แก้ไขคำสั่ง";
|
||||
} else if (["ยกเลิกคำสั่ง"].includes(item.FLAG_TO_NAME)) {
|
||||
profileSalary.commandCode = "14";
|
||||
profileSalary.commandName = "ยกเลิกคำสั่ง";
|
||||
} else if (
|
||||
[
|
||||
"ลาออกจากราชการ",
|
||||
"พ้นจากราชการ/ลาออกจากราชการตามมาตรการพัฒนาและบริหารกำลังคน",
|
||||
].includes(item.FLAG_TO_NAME)
|
||||
) {
|
||||
profileSalary.commandCode = "15";
|
||||
profileSalary.commandName = "ลาออกจากราชการ";
|
||||
} else if (
|
||||
[
|
||||
"พ้นจากราชการ/เพื่อไปปฏิบัติราชการทหาร",
|
||||
"เกษียณ",
|
||||
"ไม่พ้นทดลองปฏิบัติราชการ",
|
||||
"พ้นจากราชการ/ให้ออก",
|
||||
"พ้นจากราชการ/ไล่ออก",
|
||||
"พ้นจากราชการ/เสียชีวิต",
|
||||
"พ้นจากราชการ/ปลดออก",
|
||||
].includes(item.FLAG_TO_NAME)
|
||||
) {
|
||||
profileSalary.commandCode = "16";
|
||||
profileSalary.commandName = "พ้นจากราชการ";
|
||||
} else if (
|
||||
[
|
||||
"แต่งตั้งข้าราชการรักษาราชการแทน",
|
||||
"ช่วยราชการ",
|
||||
"รักษาการ",
|
||||
"รักษาราชการแทน",
|
||||
"มอบหมายให้ปฏิบัติหน้าที่",
|
||||
"มอบหมายข้าราชการปฏิบัติหน้าที่แทน",
|
||||
].includes(item.FLAG_TO_NAME)
|
||||
) {
|
||||
profileSalary.commandCode = "17";
|
||||
profileSalary.commandName = "รักษาราชการ, ช่วยราชการ";
|
||||
} else {
|
||||
profileSalary.commandCode = "0";
|
||||
profileSalary.commandName = item.FLAG_TO_NAME;
|
||||
}
|
||||
}
|
||||
profileSalary.posNoAbb = item.POS_NUM_NAME;
|
||||
profileSalary.posNo = item.POS_NUM_CODE;
|
||||
profileSalary.positionName = item.WORK_LINE_NAME;
|
||||
var positionType = _null;
|
||||
var positionLevel = _null;
|
||||
if (item.MP_CEE == "21") {
|
||||
positionType = "ทั่วไป";
|
||||
positionLevel = "ปฏิบัติงาน";
|
||||
} else if (item.MP_CEE == "22") {
|
||||
positionType = "ทั่วไป";
|
||||
positionLevel = "ชำนาญงาน";
|
||||
} else if (item.MP_CEE == "23") {
|
||||
positionType = "ทั่วไป";
|
||||
positionLevel = "อาวุโส";
|
||||
} else if (item.MP_CEE == "24") {
|
||||
positionType = "ทั่วไป";
|
||||
positionLevel = "อาวุโสเฉพาะสายงานที่กำหนด";
|
||||
} else if (item.MP_CEE == "25") {
|
||||
positionType = "ทั่วไป";
|
||||
positionLevel = "ทักษะพิเศษ";
|
||||
} else if (item.MP_CEE == "26") {
|
||||
positionType = "วิชาการ";
|
||||
positionLevel = "ปฏิบัติการ";
|
||||
} else if (item.MP_CEE == "27") {
|
||||
positionType = "วิชาการ";
|
||||
positionLevel = "ชำนาญการ";
|
||||
} else if (item.MP_CEE == "28") {
|
||||
positionType = "วิชาการ";
|
||||
positionLevel = "ชำนาญการพิเศษ";
|
||||
} else if (item.MP_CEE == "29") {
|
||||
positionType = "วิชาการ";
|
||||
positionLevel = "เชี่ยวชาญ";
|
||||
} else if (item.MP_CEE == "30") {
|
||||
positionType = "วิชาการ";
|
||||
positionLevel = "ทรงคุณวุฒิ";
|
||||
} else if (item.MP_CEE == "31") {
|
||||
positionType = "วิชาการ";
|
||||
positionLevel = "ทรงคุณวุฒิเฉพาะสายงานที่กำหนด";
|
||||
} else if (item.MP_CEE == "32") {
|
||||
positionType = "อำนวยการ";
|
||||
positionLevel = "ต้น";
|
||||
} else if (item.MP_CEE == "33") {
|
||||
positionType = "อำนวยการ";
|
||||
positionLevel = "สูง";
|
||||
} else if (item.MP_CEE == "34") {
|
||||
positionType = "บริหาร";
|
||||
positionLevel = "ต้น";
|
||||
} else if (item.MP_CEE == "35") {
|
||||
positionType = "บริหาร";
|
||||
positionLevel = "สูง";
|
||||
} else {
|
||||
profileSalary.positionCee = item.MP_CEE;
|
||||
}
|
||||
profileSalary.positionType = positionType;
|
||||
profileSalary.positionLevel = positionLevel;
|
||||
profileSalary.orgRoot = item.DEPARTMENT_NAME;
|
||||
profileSalary.orgChild1 = item.DIVISION_NAME;
|
||||
profileSalary.orgChild2 = item.SECTION_NAME;
|
||||
profileSalary.orgChild3 = item.JOB_NAME;
|
||||
if (item.DEPARTMENT_CODE == "50") {
|
||||
profileSalary.orgRoot = item.DIVISION_NAME;
|
||||
profileSalary.orgChild1 = item.SECTION_NAME;
|
||||
profileSalary.orgChild2 = item.JOB_NAME;
|
||||
}
|
||||
profileSalary.positionExecutive = item.ADMIN_NAME ?? _null;
|
||||
profileSalary.amount = isNaN(item.SALARY) ? null : item.SALARY;
|
||||
profileSalary.remark = item.REMARK;
|
||||
profileSalary.refId = item.id;
|
||||
profileSalary.isEntry = false;
|
||||
|
||||
const sal_pos_amount_1: any =
|
||||
item.SAL_POS_AMOUNT_1 == null || item.SAL_POS_AMOUNT_1 == ""
|
||||
? _null
|
||||
: Number(item.SAL_POS_AMOUNT_1);
|
||||
const sal_pos_amount_2: any =
|
||||
item.SAL_POS_AMOUNT_2 == null || item.SAL_POS_AMOUNT_2 == ""
|
||||
? _null
|
||||
: Number(item.SAL_POS_AMOUNT_2);
|
||||
profileSalary.positionSalaryAmount = sal_pos_amount_1 ?? sal_pos_amount_2;
|
||||
const special_amt: any =
|
||||
item.SPECIAL_AMT == null || item.SPECIAL_AMT == "" ? _null : Number(item.SPECIAL_AMT);
|
||||
profileSalary.amountSpecial = special_amt;
|
||||
profileSalary.posNumCodeSit = item.POS_NUM_CODE_SIT;
|
||||
profileSalary.posNumCodeSitAbb = item.POS_NUM_CODE_SIT_ABB;
|
||||
const sal_pos_amount_1: any =
|
||||
item.SAL_POS_AMOUNT_1 == null || item.SAL_POS_AMOUNT_1 == ""
|
||||
? _null
|
||||
: isNaN(Number(item.SAL_POS_AMOUNT_1))
|
||||
? _null
|
||||
: Number(item.SAL_POS_AMOUNT_1);
|
||||
const sal_pos_amount_2: any =
|
||||
item.SAL_POS_AMOUNT_2 == null || item.SAL_POS_AMOUNT_2 == ""
|
||||
? _null
|
||||
: isNaN(Number(item.SAL_POS_AMOUNT_2))
|
||||
? _null
|
||||
: Number(item.SAL_POS_AMOUNT_2);
|
||||
profileSalary.positionSalaryAmount = sal_pos_amount_1 ?? sal_pos_amount_2;
|
||||
|
||||
profileSalary.createdUserId = request.user.sub;
|
||||
profileSalary.createdFullName = request.user.name;
|
||||
profileSalary.lastUpdateUserId = request.user.sub;
|
||||
profileSalary.lastUpdateFullName = request.user.name;
|
||||
profileSalary.createdAt = new Date().toISOString().split("T")[0];
|
||||
profileSalary.lastUpdatedAt = new Date().toISOString().split("T")[0];
|
||||
console.log(">>>>>>>>>>>>>>>>>>>" + rowCount);
|
||||
const special_amt: any =
|
||||
item.SPECIAL_AMT == null || item.SPECIAL_AMT == ""
|
||||
? _null
|
||||
: isNaN(Number(item.SPECIAL_AMT))
|
||||
? _null
|
||||
: Number(item.SPECIAL_AMT);
|
||||
profileSalary.amountSpecial = special_amt;
|
||||
profileSalary.posNumCodeSit = item.POS_NUM_CODE_SIT;
|
||||
profileSalary.posNumCodeSitAbb = item.POS_NUM_CODE_SIT_ABB;
|
||||
|
||||
profileSalary.createdUserId = request.user.sub;
|
||||
profileSalary.createdFullName = request.user.name;
|
||||
profileSalary.lastUpdateUserId = request.user.sub;
|
||||
profileSalary.lastUpdateFullName = request.user.name;
|
||||
profileSalary.createdAt = new Date().toISOString().split("T")[0];
|
||||
profileSalary.lastUpdatedAt = new Date().toISOString().split("T")[0];
|
||||
|
||||
// เพิ่มลงใน batch array แทนการ save ทันที
|
||||
batchRecords.push(profileSalary);
|
||||
}
|
||||
order = 1;
|
||||
}
|
||||
|
||||
// Batch insert สำหรับ batch นี้
|
||||
if (batchRecords.length > 0) {
|
||||
try {
|
||||
await this.salaryRepo.save(profileSalary);
|
||||
// Debug: ตรวจสอบ NaN values ก่อน save
|
||||
const hasNaN = batchRecords.some((record) => {
|
||||
return Object.values(record).some((value) => typeof value === "number" && isNaN(value));
|
||||
});
|
||||
|
||||
if (hasNaN) {
|
||||
console.warn(
|
||||
`Warning: Found NaN values in batch ${Math.floor(offset / batchSize) + 1}`,
|
||||
);
|
||||
// แทนที่ NaN ด้วย null
|
||||
batchRecords.forEach((record) => {
|
||||
Object.keys(record).forEach((key) => {
|
||||
if (typeof record[key] === "number" && isNaN(record[key])) {
|
||||
console.warn(`Replacing NaN in field ${key} with null`);
|
||||
record[key] = null;
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
await this.salaryRepo.save(batchRecords);
|
||||
console.log(
|
||||
`Saved ${batchRecords.length} records for batch ${Math.floor(offset / batchSize) + 1}`,
|
||||
);
|
||||
} catch (error) {
|
||||
console.error("Error executing function from controller:", item.CIT);
|
||||
console.error(`Error saving batch ${Math.floor(offset / batchSize) + 1}:`, error);
|
||||
}
|
||||
}
|
||||
order = 1;
|
||||
}
|
||||
|
||||
console.log(`Total processed: ${rowCount} records`);
|
||||
return new HttpSuccess();
|
||||
}
|
||||
|
||||
|
|
@ -6226,4 +6290,26 @@ export class ImportDataController extends Controller {
|
|||
return groups;
|
||||
}, {});
|
||||
}
|
||||
|
||||
@Post("updateCommandYearNull")
|
||||
async updateCommandYearNull(@Request() request: { user: Record<string, any> }) {
|
||||
const profiles = await this.salaryRepo.find({
|
||||
where: {
|
||||
createdAt: Between(
|
||||
new Date("2025-10-23T00:00:00.000Z"),
|
||||
new Date("2025-10-25T00:00:00.000Z"),
|
||||
),
|
||||
commandYear: IsNull(),
|
||||
},
|
||||
});
|
||||
|
||||
for (const item of profiles) {
|
||||
console.log(item.id);
|
||||
if (item.commandDateAffect) {
|
||||
item.commandYear = item.commandDateAffect.getFullYear();
|
||||
await this.salaryRepo.save(item);
|
||||
}
|
||||
}
|
||||
return new HttpSuccess();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -148,6 +148,7 @@ export class ProfileGovernmentHistoryController extends Controller {
|
|||
let _workflow = await new permission().Workflow(req, profileId, "SYS_REGISTRY_OFFICER");
|
||||
if (_workflow == false)
|
||||
await new permission().PermissionOrgUserGet(req, "SYS_REGISTRY_OFFICER", profileId);
|
||||
|
||||
const orgRevision = await this.orgRevisionRepository.findOne({
|
||||
select: ["id"],
|
||||
where: {
|
||||
|
|
@ -155,10 +156,22 @@ export class ProfileGovernmentHistoryController extends Controller {
|
|||
orgRevisionIsCurrent: true,
|
||||
},
|
||||
});
|
||||
|
||||
// ค้นหา profile ก่อน
|
||||
const record = await this.profileRepo.findOne({
|
||||
where: {
|
||||
where: { id: profileId },
|
||||
relations: ["posType", "posLevel"],
|
||||
});
|
||||
|
||||
if (!record) {
|
||||
throw new HttpError(HttpStatus.NOT_FOUND, "ไม่พบข้อมูล profile");
|
||||
}
|
||||
|
||||
// ค้นหา profileSalary แยกต่างหาก
|
||||
const profileWithSalary = await this.profileRepo.findOne({
|
||||
where: {
|
||||
id: profileId,
|
||||
profileSalary: {
|
||||
profileSalary: {
|
||||
commandCode: In([
|
||||
"0",
|
||||
"9",
|
||||
|
|
@ -175,16 +188,19 @@ export class ProfileGovernmentHistoryController extends Controller {
|
|||
"15",
|
||||
"16",
|
||||
]),
|
||||
}
|
||||
},
|
||||
},
|
||||
relations: ["posType", "posLevel", "profileSalary"],
|
||||
relations: ["profileSalary"],
|
||||
order: {
|
||||
profileSalary: {
|
||||
order: "DESC",
|
||||
createdAt: "DESC"
|
||||
}
|
||||
}
|
||||
createdAt: "DESC",
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
// ใช้ profileSalary จาก query ที่สอง หรือ [] ถ้าไม่เจอ
|
||||
record.profileSalary = profileWithSalary?.profileSalary || [];
|
||||
const posMaster = await this.posMasterRepo.findOne({
|
||||
where: {
|
||||
orgRevisionId: orgRevision?.id,
|
||||
|
|
@ -236,8 +252,8 @@ export class ProfileGovernmentHistoryController extends Controller {
|
|||
orgShortName = posMaster.orgChild4?.orgChild4ShortName ?? "";
|
||||
}
|
||||
}
|
||||
let _OrgLeave:any = []
|
||||
let _profileSalary:any = null;
|
||||
let _OrgLeave: any = [];
|
||||
let _profileSalary: any = null;
|
||||
if (record?.isLeave && record?.profileSalary.length > 0) {
|
||||
// _OrgLeave = [
|
||||
// record?.profileSalary[0].orgChild4 ? record?.profileSalary[0].orgChild4 : null,
|
||||
|
|
@ -247,15 +263,14 @@ export class ProfileGovernmentHistoryController extends Controller {
|
|||
// record?.profileSalary[0].orgRoot ? record?.profileSalary[0].orgRoot : null,
|
||||
// ];
|
||||
if (record.leaveType == "RETIRE") {
|
||||
_profileSalary = record?.profileSalary.length > 1
|
||||
? record?.profileSalary[1]
|
||||
: record?.profileSalary.length > 0
|
||||
_profileSalary =
|
||||
record?.profileSalary.length > 1
|
||||
? record?.profileSalary[1]
|
||||
: record?.profileSalary.length > 0
|
||||
? record?.profileSalary[0]
|
||||
: null;
|
||||
} else {
|
||||
_profileSalary = record?.profileSalary.length > 0
|
||||
? record?.profileSalary[0]
|
||||
: null;
|
||||
_profileSalary = record?.profileSalary.length > 0 ? record?.profileSalary[0] : null;
|
||||
}
|
||||
if (_profileSalary) {
|
||||
_OrgLeave = [
|
||||
|
|
@ -269,17 +284,20 @@ export class ProfileGovernmentHistoryController extends Controller {
|
|||
_OrgLeave = [];
|
||||
}
|
||||
}
|
||||
const orgLeave = _OrgLeave.filter((x:any) => x !== undefined && x !== null).join("\n");
|
||||
const orgLeave = _OrgLeave.filter((x: any) => x !== undefined && x !== null).join("\n");
|
||||
const data = {
|
||||
org: record?.isLeave == false ? org : orgLeave, //สังกัด
|
||||
positionField: position == null ? null : position.positionField, //สายงาน
|
||||
position: record?.position, //ตำแหน่ง
|
||||
posLevel: record?.posLevel == null ? null : record?.posLevel.posLevelName, //ระดับ
|
||||
posMasterNo: record?.isLeave == false
|
||||
? posMaster == null ? null : `${orgShortName} ${posMaster.posMasterNo}`
|
||||
: _profileSalary != null
|
||||
? `${_profileSalary.posNoAbb} ${_profileSalary.posNo}`
|
||||
: null, //เลขที่ตำแหน่ง
|
||||
posMasterNo:
|
||||
record?.isLeave == false
|
||||
? posMaster == null
|
||||
? null
|
||||
: `${orgShortName} ${posMaster.posMasterNo}`
|
||||
: _profileSalary != null
|
||||
? `${_profileSalary.posNoAbb} ${_profileSalary.posNo}`
|
||||
: null, //เลขที่ตำแหน่ง
|
||||
posType: record?.posType == null ? null : record?.posType.posTypeName, //ประเภท
|
||||
posExecutive:
|
||||
position == null || position.posExecutive == null
|
||||
|
|
@ -310,8 +328,20 @@ export class ProfileGovernmentHistoryController extends Controller {
|
|||
orgRevisionIsCurrent: true,
|
||||
},
|
||||
});
|
||||
|
||||
// ค้นหา profile ก่อน
|
||||
const record = await this.profileRepo.findOne({
|
||||
where: {
|
||||
where: { id: profileId },
|
||||
relations: ["posType", "posLevel"],
|
||||
});
|
||||
|
||||
if (!record) {
|
||||
throw new HttpError(HttpStatus.NOT_FOUND, "ไม่พบข้อมูล profile");
|
||||
}
|
||||
|
||||
// ค้นหา profileSalary แยกต่างหาก
|
||||
const profileWithSalary = await this.profileRepo.findOne({
|
||||
where: {
|
||||
id: profileId,
|
||||
profileSalary: {
|
||||
commandCode: In([
|
||||
|
|
@ -330,20 +360,19 @@ export class ProfileGovernmentHistoryController extends Controller {
|
|||
"15",
|
||||
"16",
|
||||
]),
|
||||
}
|
||||
},
|
||||
relations: {
|
||||
posType: true,
|
||||
posLevel: true,
|
||||
profileSalary: true
|
||||
},
|
||||
},
|
||||
relations: ["profileSalary"],
|
||||
order: {
|
||||
profileSalary: {
|
||||
order: "DESC",
|
||||
createdAt: "DESC"
|
||||
}
|
||||
}
|
||||
createdAt: "DESC",
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
// ใช้ profileSalary จาก query ที่สอง หรือ [] ถ้าไม่เจอ
|
||||
record.profileSalary = profileWithSalary?.profileSalary || [];
|
||||
const posMaster = await this.posMasterRepo.findOne({
|
||||
where: {
|
||||
orgRevisionId: orgRevision?.id,
|
||||
|
|
@ -395,8 +424,8 @@ export class ProfileGovernmentHistoryController extends Controller {
|
|||
orgShortName = posMaster.orgChild4?.orgChild4ShortName;
|
||||
}
|
||||
}
|
||||
let _OrgLeave:any = []
|
||||
let _profileSalary:any = null;
|
||||
let _OrgLeave: any = [];
|
||||
let _profileSalary: any = null;
|
||||
if (record?.isLeave && record?.profileSalary.length > 0) {
|
||||
// _OrgLeave = [
|
||||
// record?.profileSalary[0].orgChild4 ? record?.profileSalary[0].orgChild4 : null,
|
||||
|
|
@ -406,15 +435,14 @@ export class ProfileGovernmentHistoryController extends Controller {
|
|||
// record?.profileSalary[0].orgRoot ? record?.profileSalary[0].orgRoot : null,
|
||||
// ];
|
||||
if (record.leaveType == "RETIRE") {
|
||||
_profileSalary = record?.profileSalary.length > 1
|
||||
? record?.profileSalary[1]
|
||||
: record?.profileSalary.length > 0
|
||||
_profileSalary =
|
||||
record?.profileSalary.length > 1
|
||||
? record?.profileSalary[1]
|
||||
: record?.profileSalary.length > 0
|
||||
? record?.profileSalary[0]
|
||||
: null;
|
||||
} else {
|
||||
_profileSalary = record?.profileSalary.length > 0
|
||||
? record?.profileSalary[0]
|
||||
: null;
|
||||
_profileSalary = record?.profileSalary.length > 0 ? record?.profileSalary[0] : null;
|
||||
}
|
||||
if (_profileSalary) {
|
||||
_OrgLeave = [
|
||||
|
|
@ -428,19 +456,19 @@ export class ProfileGovernmentHistoryController extends Controller {
|
|||
_OrgLeave = [];
|
||||
}
|
||||
}
|
||||
const orgLeave = _OrgLeave.filter((x:any) => x !== undefined && x !== null).join("\n");
|
||||
const orgLeave = _OrgLeave.filter((x: any) => x !== undefined && x !== null).join("\n");
|
||||
const data = {
|
||||
org: record?.isLeave == false ? org : orgLeave, //สังกัด
|
||||
positionField: position == null ? null : position.positionField, //สายงาน
|
||||
position: record?.position, //ตำแหน่ง
|
||||
posLevel: record?.posLevel == null ? null : record?.posLevel.posLevelName, //ระดับ
|
||||
posMasterNo:
|
||||
record?.isLeave == false
|
||||
? posMaster == null
|
||||
? null
|
||||
posMasterNo:
|
||||
record?.isLeave == false
|
||||
? posMaster == null
|
||||
? null
|
||||
: `${orgShortName} ${posMaster.posMasterNo}`
|
||||
: _profileSalary != null
|
||||
? `${_profileSalary.posNoAbb} ${_profileSalary.posNo}`
|
||||
: _profileSalary != null
|
||||
? `${_profileSalary.posNoAbb} ${_profileSalary.posNo}`
|
||||
: null, //เลขที่ตำแหน่ง
|
||||
posType: record?.posType == null ? null : record?.posType.posTypeName, //ประเภท
|
||||
posExecutive:
|
||||
|
|
@ -458,7 +486,7 @@ export class ProfileGovernmentHistoryController extends Controller {
|
|||
govAgeAbsent: record?.govAgeAbsent,
|
||||
govAgePlus: record?.govAgePlus,
|
||||
reasonSameDate: record?.reasonSameDate,
|
||||
isLeave: record?.isLeave
|
||||
isLeave: record?.isLeave,
|
||||
};
|
||||
|
||||
return new HttpSuccess(data);
|
||||
|
|
|
|||
|
|
@ -149,36 +149,16 @@ export class ProfileGovernmentEmployeeController extends Controller {
|
|||
orgRevisionIsCurrent: true,
|
||||
},
|
||||
});
|
||||
|
||||
// ค้นหา profile ก่อน
|
||||
const record = await this.profileEmployeeRepo.findOne({
|
||||
where: {
|
||||
id: profileEmployeeId,
|
||||
// profileSalary: {
|
||||
// commandCode: In([
|
||||
// "0",
|
||||
// "9",
|
||||
// "1",
|
||||
// "2",
|
||||
// "3",
|
||||
// "4",
|
||||
// "8",
|
||||
// "10",
|
||||
// "11",
|
||||
// "12",
|
||||
// "13",
|
||||
// "14",
|
||||
// "15",
|
||||
// "16",
|
||||
// ]),
|
||||
// }
|
||||
},
|
||||
relations: ["posType", "posLevel"/*, "profileSalary"*/],
|
||||
// order: {
|
||||
// profileSalary: {
|
||||
// order: "DESC",
|
||||
// createdAt: "DESC"
|
||||
// }
|
||||
// }
|
||||
where: { id: profileEmployeeId },
|
||||
relations: ["posType", "posLevel"],
|
||||
});
|
||||
|
||||
if (!record) {
|
||||
throw new HttpError(HttpStatus.NOT_FOUND, "ไม่พบข้อมูล profile");
|
||||
}
|
||||
const posMaster = await this.posMasterRepo.findOne({
|
||||
where: {
|
||||
orgRevisionId: orgRevision?.id,
|
||||
|
|
@ -217,10 +197,10 @@ export class ProfileGovernmentEmployeeController extends Controller {
|
|||
orgShortName = posMaster.orgChild4?.orgChild4ShortName;
|
||||
}
|
||||
}
|
||||
let _OrgLeave:any = []
|
||||
let orgLeave:string = ""
|
||||
let posNoLeave:string = ""
|
||||
let _profileSalary:any = null;
|
||||
let _OrgLeave: any = [];
|
||||
let orgLeave: string = "";
|
||||
let posNoLeave: string = "";
|
||||
let _profileSalary: any = null;
|
||||
if (record?.isLeave /*&& record?.profileSalary.length > 0*/) {
|
||||
const profileSalary = await this.salaryRepo.find({
|
||||
select: [
|
||||
|
|
@ -230,7 +210,7 @@ export class ProfileGovernmentEmployeeController extends Controller {
|
|||
"orgChild3",
|
||||
"orgChild4",
|
||||
"posNoAbb",
|
||||
"posNo"
|
||||
"posNo",
|
||||
],
|
||||
where: {
|
||||
profileEmployeeId: profileEmployeeId,
|
||||
|
|
@ -253,8 +233,8 @@ export class ProfileGovernmentEmployeeController extends Controller {
|
|||
},
|
||||
order: {
|
||||
order: "DESC",
|
||||
createdAt: "DESC"
|
||||
}
|
||||
createdAt: "DESC",
|
||||
},
|
||||
});
|
||||
// _OrgLeave = [
|
||||
// profileSalary.length > 0 && profileSalary[0].orgChild4 ? profileSalary[0].orgChild4 : null,
|
||||
|
|
@ -264,15 +244,14 @@ export class ProfileGovernmentEmployeeController extends Controller {
|
|||
// profileSalary.length > 0 && profileSalary[0].orgRoot ? profileSalary[0].orgRoot : null,
|
||||
// ];
|
||||
if (record.leaveType == "RETIRE") {
|
||||
_profileSalary = profileSalary.length > 1
|
||||
? profileSalary[1]
|
||||
: profileSalary.length > 0
|
||||
? profileSalary[0]
|
||||
: null;
|
||||
_profileSalary =
|
||||
profileSalary.length > 1
|
||||
? profileSalary[1]
|
||||
: profileSalary.length > 0
|
||||
? profileSalary[0]
|
||||
: null;
|
||||
} else {
|
||||
_profileSalary = profileSalary.length > 0
|
||||
? profileSalary[0]
|
||||
: null
|
||||
_profileSalary = profileSalary.length > 0 ? profileSalary[0] : null;
|
||||
}
|
||||
if (_profileSalary) {
|
||||
_OrgLeave = [
|
||||
|
|
@ -285,10 +264,9 @@ export class ProfileGovernmentEmployeeController extends Controller {
|
|||
} else {
|
||||
_OrgLeave = [];
|
||||
}
|
||||
orgLeave = _OrgLeave.filter((x:any) => x !== undefined && x !== null).join("\n");
|
||||
posNoLeave = _profileSalary != null
|
||||
? `${_profileSalary.posNoAbb} ${_profileSalary.posNo}`
|
||||
: ""
|
||||
orgLeave = _OrgLeave.filter((x: any) => x !== undefined && x !== null).join("\n");
|
||||
posNoLeave =
|
||||
_profileSalary != null ? `${_profileSalary.posNoAbb} ${_profileSalary.posNo}` : "";
|
||||
}
|
||||
const data = {
|
||||
org: record?.isLeave == false ? org : orgLeave, //สังกัด
|
||||
|
|
@ -297,9 +275,12 @@ export class ProfileGovernmentEmployeeController extends Controller {
|
|||
record?.posLevel == null
|
||||
? null
|
||||
: `${record?.posType?.posTypeShortName ?? ""} ${record?.posLevel?.posLevelName ?? ""}`, //ระดับ
|
||||
posMasterNo: record?.isLeave == false
|
||||
? posMaster == null ? null : `${orgShortName} ${posMaster.posMasterNo}`
|
||||
: posNoLeave/*record && record?.profileSalary.length > 0
|
||||
posMasterNo:
|
||||
record?.isLeave == false
|
||||
? posMaster == null
|
||||
? null
|
||||
: `${orgShortName} ${posMaster.posMasterNo}`
|
||||
: posNoLeave /*record && record?.profileSalary.length > 0
|
||||
? `${record?.profileSalary[0].posNoAbb} ${record?.profileSalary[0].posNo}`
|
||||
: null*/, //เลขที่ตำแหน่ง
|
||||
posType: record?.posType == null ? null : record?.posType.posTypeName, //ประเภท
|
||||
|
|
@ -326,34 +307,16 @@ export class ProfileGovernmentEmployeeController extends Controller {
|
|||
orgRevisionIsCurrent: true,
|
||||
},
|
||||
});
|
||||
|
||||
// ค้นหา profile ก่อน
|
||||
const record = await this.profileEmployeeRepo.findOne({
|
||||
where: {
|
||||
id: profileEmployeeId,
|
||||
// profileSalary:{
|
||||
// commandCode: In([
|
||||
// "0",
|
||||
// "9",
|
||||
// "1",
|
||||
// "2",
|
||||
// "3",
|
||||
// "4",
|
||||
// "8",
|
||||
// "10",
|
||||
// "11",
|
||||
// "12",
|
||||
// "13",
|
||||
// "14",
|
||||
// "15",
|
||||
// "16",
|
||||
// ]),
|
||||
// }
|
||||
},
|
||||
relations: {
|
||||
posType: true,
|
||||
posLevel: true,
|
||||
// profileSalary: true
|
||||
},
|
||||
where: { id: profileEmployeeId },
|
||||
relations: ["posType", "posLevel"],
|
||||
});
|
||||
|
||||
if (!record) {
|
||||
throw new HttpError(HttpStatus.NOT_FOUND, "ไม่พบข้อมูล profile");
|
||||
}
|
||||
const posMaster = await this.posMasterRepo.findOne({
|
||||
where: {
|
||||
orgRevisionId: orgRevision?.id,
|
||||
|
|
@ -392,10 +355,10 @@ export class ProfileGovernmentEmployeeController extends Controller {
|
|||
orgShortName = posMaster.orgChild4?.orgChild4ShortName;
|
||||
}
|
||||
}
|
||||
let _OrgLeave:any = []
|
||||
let orgLeave:string = ""
|
||||
let posNoLeave:string = ""
|
||||
let _profileSalary:any = null;
|
||||
let _OrgLeave: any = [];
|
||||
let orgLeave: string = "";
|
||||
let posNoLeave: string = "";
|
||||
let _profileSalary: any = null;
|
||||
if (record?.isLeave /*&& record?.profileSalary.length > 0*/) {
|
||||
const profileSalary = await this.salaryRepo.find({
|
||||
select: [
|
||||
|
|
@ -405,7 +368,7 @@ export class ProfileGovernmentEmployeeController extends Controller {
|
|||
"orgChild3",
|
||||
"orgChild4",
|
||||
"posNoAbb",
|
||||
"posNo"
|
||||
"posNo",
|
||||
],
|
||||
where: {
|
||||
profileEmployeeId: profileEmployeeId,
|
||||
|
|
@ -428,8 +391,8 @@ export class ProfileGovernmentEmployeeController extends Controller {
|
|||
},
|
||||
order: {
|
||||
order: "DESC",
|
||||
createdAt: "DESC"
|
||||
}
|
||||
createdAt: "DESC",
|
||||
},
|
||||
});
|
||||
// _OrgLeave = [
|
||||
// profileSalary.length > 0 && profileSalary[0].orgChild4 ? profileSalary[0].orgChild4 : null,
|
||||
|
|
@ -439,15 +402,14 @@ export class ProfileGovernmentEmployeeController extends Controller {
|
|||
// profileSalary.length > 0 && profileSalary[0].orgRoot ? profileSalary[0].orgRoot : null,
|
||||
// ];
|
||||
if (record.leaveType == "RETIRE") {
|
||||
_profileSalary = profileSalary.length > 1
|
||||
? profileSalary[1]
|
||||
: profileSalary.length > 0
|
||||
? profileSalary[0]
|
||||
: null;
|
||||
_profileSalary =
|
||||
profileSalary.length > 1
|
||||
? profileSalary[1]
|
||||
: profileSalary.length > 0
|
||||
? profileSalary[0]
|
||||
: null;
|
||||
} else {
|
||||
_profileSalary = profileSalary.length > 0
|
||||
? profileSalary[0]
|
||||
: null;
|
||||
_profileSalary = profileSalary.length > 0 ? profileSalary[0] : null;
|
||||
}
|
||||
if (_profileSalary) {
|
||||
_OrgLeave = [
|
||||
|
|
@ -460,23 +422,23 @@ export class ProfileGovernmentEmployeeController extends Controller {
|
|||
} else {
|
||||
_OrgLeave = [];
|
||||
}
|
||||
orgLeave = _OrgLeave.filter((x:any) => x !== undefined && x !== null).join("\n");
|
||||
posNoLeave = _profileSalary != null
|
||||
? `${_profileSalary.posNoAbb} ${_profileSalary.posNo}`
|
||||
: ""
|
||||
orgLeave = _OrgLeave.filter((x: any) => x !== undefined && x !== null).join("\n");
|
||||
posNoLeave =
|
||||
_profileSalary != null ? `${_profileSalary.posNoAbb} ${_profileSalary.posNo}` : "";
|
||||
}
|
||||
const data = {
|
||||
org: record?.isLeave == false ? org : orgLeave, //สังกัด
|
||||
position: record?.position, //ตำแหน่ง
|
||||
posLevel: record?.posLevel == null && record?.posType == null
|
||||
? null
|
||||
: `${record?.posType.posTypeShortName} ${record?.posLevel.posLevelName}`, //ระดับ
|
||||
posMasterNo:
|
||||
record?.isLeave == false
|
||||
? posMaster == null
|
||||
? null
|
||||
posLevel:
|
||||
record?.posLevel == null && record?.posType == null
|
||||
? null
|
||||
: `${record?.posType.posTypeShortName} ${record?.posLevel.posLevelName}`, //ระดับ
|
||||
posMasterNo:
|
||||
record?.isLeave == false
|
||||
? posMaster == null
|
||||
? null
|
||||
: `${orgShortName} ${posMaster.posMasterNo}`
|
||||
: posNoLeave/*record && record.profileSalary.length > 0
|
||||
: posNoLeave /*record && record.profileSalary.length > 0
|
||||
? `${record?.profileSalary[0].posNoAbb} ${record?.profileSalary[0].posNo}`
|
||||
: null*/, //เลขที่ตำแหน่ง
|
||||
posType: record?.posType == null ? null : record?.posType.posTypeName, //ประเภท
|
||||
|
|
@ -490,7 +452,7 @@ export class ProfileGovernmentEmployeeController extends Controller {
|
|||
govAgeAbsent: record?.govAgeAbsent ?? null, // ขาดราชการ
|
||||
govAgePlus: record?.govAgePlus, // อายุราชการเกื้อกูล
|
||||
dateRetireLaw: record?.dateRetireLaw ?? null, // วันที่เกษียฯอายุราชการตามกฎหมาย
|
||||
isLeave: record?.isLeave
|
||||
isLeave: record?.isLeave,
|
||||
};
|
||||
return new HttpSuccess(data);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue