Merge branch 'develop' into working
This commit is contained in:
commit
9760c4f667
2 changed files with 166 additions and 24 deletions
|
|
@ -61,6 +61,7 @@ import { ProfileFamilyFather } from "../entities/ProfileFamilyFather";
|
|||
import Extension from "../interfaces/extension";
|
||||
import { ProfileInsignia } from "../entities/ProfileInsignia";
|
||||
import { ProfileLeave } from "../entities/ProfileLeave";
|
||||
import { ProfileAbsentLate } from "../entities/ProfileAbsentLate";
|
||||
import { updateName, deleteUser } from "../keycloak";
|
||||
import permission from "../interfaces/permission";
|
||||
import { PosMasterAct } from "../entities/PosMasterAct";
|
||||
|
|
@ -134,6 +135,7 @@ export class ProfileController extends Controller {
|
|||
private subDistrictRepo = AppDataSource.getRepository(SubDistrict);
|
||||
private profileInsigniaRepo = AppDataSource.getRepository(ProfileInsignia);
|
||||
private profileLeaveRepository = AppDataSource.getRepository(ProfileLeave);
|
||||
private profileAbsentLateRepo = AppDataSource.getRepository(ProfileAbsentLate);
|
||||
private posMasterActRepository = AppDataSource.getRepository(PosMasterAct);
|
||||
private profileChildrenRepository = AppDataSource.getRepository(ProfileChildren);
|
||||
private changeNameRepository = AppDataSource.getRepository(ProfileChangeName);
|
||||
|
|
@ -1389,16 +1391,70 @@ export class ProfileController extends Controller {
|
|||
leaves.push({year:""});
|
||||
}
|
||||
|
||||
// Query มาสาย/ขาดราชการ และ merge ตามปี
|
||||
const absentLate_raw = await this.profileAbsentLateRepo
|
||||
.createQueryBuilder("absentLate")
|
||||
.select([
|
||||
"YEAR(absentLate.stampDate) as year",
|
||||
"absentLate.status as status",
|
||||
"SUM(absentLate.stampAmount) as totalAmount",
|
||||
])
|
||||
.where("absentLate.profileId = :profileId", { profileId: id })
|
||||
.andWhere("absentLate.isDeleted = :isDeleted", { isDeleted: false })
|
||||
.groupBy("YEAR(absentLate.stampDate), absentLate.status")
|
||||
.orderBy("year", "DESC")
|
||||
.getRawMany();
|
||||
|
||||
// Merge มาสาย/ขาดราชการเข้า leaves array
|
||||
absentLate_raw.forEach((item) => {
|
||||
const year = item.year
|
||||
? Extension.ToThaiNumber((item.year + 543).toString())
|
||||
: "";
|
||||
|
||||
let yearData = leaves.find((data) => data.year === year);
|
||||
|
||||
// ถ้าไม่มีปีนั้นใน leaves ให้สร้างใหม่
|
||||
if (!yearData) {
|
||||
yearData = { year };
|
||||
for (let i = 1; i <= 11; i++) {
|
||||
yearData[`leaveTypeCodeLv${i}`] = "-";
|
||||
yearData[`totalLeaveDaysLv${i}`] = "-";
|
||||
yearData[`leaveTypeNameLv${i}`] = "-";
|
||||
}
|
||||
leaves.push(yearData);
|
||||
}
|
||||
|
||||
// เพิ่มข้อมูลมาสาย/ขาดราชการ
|
||||
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 = "-";
|
||||
});
|
||||
|
||||
const leave2_raw = await this.profileLeaveRepository
|
||||
.createQueryBuilder("profileLeave")
|
||||
.leftJoinAndSelect("profileLeave.leaveType", "leaveType")
|
||||
.select([
|
||||
"profileLeave.leaveSubTypeName AS leaveSubTypeName",
|
||||
"profileLeave.coupleDayLevelCountry AS coupleDayLevelCountry",
|
||||
"profileLeave.isDeleted AS isDeleted",
|
||||
"profileLeave.dateLeaveStart AS dateLeaveStart",
|
||||
"profileLeave.dateLeaveEnd AS dateLeaveEnd",
|
||||
"profileLeave.leaveDays AS leaveDays",
|
||||
"profileLeave.reason AS reason",
|
||||
"leaveType.name as name",
|
||||
"leaveType.code as code",
|
||||
])
|
||||
.where("profileLeave.profileId = :profileId", { profileId: id })
|
||||
.andWhere("profileLeave.isDeleted = :isDeleted", { isDeleted: false })
|
||||
|
|
@ -1408,17 +1464,32 @@ export class ProfileController extends Controller {
|
|||
.getRawMany();
|
||||
const leaves2 =
|
||||
leave2_raw.length > 0
|
||||
? leave2_raw.map((item) => ({
|
||||
date:
|
||||
item.dateLeaveStart && item.dateLeaveEnd
|
||||
? Extension.ToThaiNumber(Extension.ToThaiFullDate2(item.dateLeaveStart)) +
|
||||
" - " +
|
||||
Extension.ToThaiNumber(Extension.ToThaiFullDate2(item.dateLeaveEnd))
|
||||
: "-",
|
||||
type: item.name || "-",
|
||||
leaveDays: item.leaveDays ? Extension.ToThaiNumber(item.leaveDays.toString()) : "-",
|
||||
reason: item.reason || "-",
|
||||
}))
|
||||
? leave2_raw.map((item) => {
|
||||
const leaveTypeCode = item.code ? item.code.trim().toUpperCase() : "";
|
||||
|
||||
// ข้อที่ 1: LV-008 ให้ใช้ leaveSubTypeName (ประเภทย่อย) แทน name
|
||||
const displayType =
|
||||
leaveTypeCode === "LV-008" && item.leaveSubTypeName
|
||||
? item.leaveSubTypeName
|
||||
: (item.name || "-");
|
||||
|
||||
// ข้อที่ 2: แสดง reason ก่อนเสมอ ถ้ามี coupleDayLevelCountry ค่อยแสดงประเทศ
|
||||
const displayReason = item.coupleDayLevelCountry
|
||||
? `${item.reason || ""} ลาไปประเทศ ${item.coupleDayLevelCountry}`.trim()
|
||||
: (item.reason || "-");
|
||||
|
||||
return {
|
||||
date:
|
||||
item.dateLeaveStart && item.dateLeaveEnd
|
||||
? Extension.ToThaiNumber(Extension.ToThaiFullDate2(item.dateLeaveStart)) +
|
||||
" - " +
|
||||
Extension.ToThaiNumber(Extension.ToThaiFullDate2(item.dateLeaveEnd))
|
||||
: "-",
|
||||
type: displayType,
|
||||
leaveDays: item.leaveDays ? Extension.ToThaiNumber(item.leaveDays.toString()) : "-",
|
||||
reason: displayReason,
|
||||
};
|
||||
})
|
||||
: [
|
||||
{
|
||||
date: "",
|
||||
|
|
@ -1552,7 +1623,7 @@ export class ProfileController extends Controller {
|
|||
const retire_raw = await this.salaryRepo.findOne({
|
||||
where: {
|
||||
profileId: id,
|
||||
commandCode: In(["16"]),
|
||||
commandCode: In(["12", "15", "16"]),
|
||||
},
|
||||
order: { order: "desc" },
|
||||
});
|
||||
|
|
|
|||
|
|
@ -66,6 +66,7 @@ import { ProfileEmployeeEmploymentHistory } from "../entities/ProfileEmployeeEmp
|
|||
import CallAPI from "../interfaces/call-api";
|
||||
import { ProfileInsignia } from "../entities/ProfileInsignia";
|
||||
import { ProfileLeave } from "../entities/ProfileLeave";
|
||||
import { ProfileEmployeeAbsentLate } from "../entities/ProfileEmployeeAbsentLate";
|
||||
import permission from "../interfaces/permission";
|
||||
import axios from "axios";
|
||||
import { Position } from "../entities/Position";
|
||||
|
|
@ -124,6 +125,7 @@ export class ProfileEmployeeController extends Controller {
|
|||
private profileEducationRepo = AppDataSource.getRepository(ProfileEducation);
|
||||
private profileInsigniaRepo = AppDataSource.getRepository(ProfileInsignia);
|
||||
private profileLeaveRepository = AppDataSource.getRepository(ProfileLeave);
|
||||
private profileEmployeeAbsentLateRepo = AppDataSource.getRepository(ProfileEmployeeAbsentLate);
|
||||
private positionRepository = AppDataSource.getRepository(Position);
|
||||
private employeePositionRepository = AppDataSource.getRepository(EmployeePosition);
|
||||
private permissionProflileRepository = AppDataSource.getRepository(PermissionProfile);
|
||||
|
|
@ -1383,16 +1385,70 @@ export class ProfileEmployeeController extends Controller {
|
|||
leaves.push({year:""});
|
||||
}
|
||||
|
||||
// Query มาสาย/ขาดราชการ และ merge ตามปี
|
||||
const absentLate_raw = await this.profileEmployeeAbsentLateRepo
|
||||
.createQueryBuilder("absentLate")
|
||||
.select([
|
||||
"YEAR(absentLate.stampDate) as year",
|
||||
"absentLate.status as status",
|
||||
"SUM(absentLate.stampAmount) as totalAmount",
|
||||
])
|
||||
.where("absentLate.profileEmployeeId = :profileId", { profileId: id })
|
||||
.andWhere("absentLate.isDeleted = :isDeleted", { isDeleted: false })
|
||||
.groupBy("YEAR(absentLate.stampDate), absentLate.status")
|
||||
.orderBy("year", "DESC")
|
||||
.getRawMany();
|
||||
|
||||
// Merge มาสาย/ขาดราชการเข้า leaves array
|
||||
absentLate_raw.forEach((item) => {
|
||||
const year = item.year
|
||||
? Extension.ToThaiNumber((item.year + 543).toString())
|
||||
: "";
|
||||
|
||||
let yearData = leaves.find((data) => data.year === year);
|
||||
|
||||
// ถ้าไม่มีปีนั้นใน leaves ให้สร้างใหม่
|
||||
if (!yearData) {
|
||||
yearData = { year };
|
||||
for (let i = 1; i <= 11; i++) {
|
||||
yearData[`leaveTypeCodeLv${i}`] = "-";
|
||||
yearData[`totalLeaveDaysLv${i}`] = "-";
|
||||
yearData[`leaveTypeNameLv${i}`] = "-";
|
||||
}
|
||||
leaves.push(yearData);
|
||||
}
|
||||
|
||||
// เพิ่มข้อมูลมาสาย/ขาดราชการ
|
||||
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 = "-";
|
||||
});
|
||||
|
||||
const leave2_raw = await this.profileLeaveRepository
|
||||
.createQueryBuilder("profileLeave")
|
||||
.leftJoinAndSelect("profileLeave.leaveType", "leaveType")
|
||||
.select([
|
||||
"profileLeave.leaveSubTypeName AS leaveSubTypeName",
|
||||
"profileLeave.coupleDayLevelCountry AS coupleDayLevelCountry",
|
||||
"profileLeave.isDeleted AS isDeleted",
|
||||
"profileLeave.dateLeaveStart AS dateLeaveStart",
|
||||
"profileLeave.dateLeaveEnd AS dateLeaveEnd",
|
||||
"profileLeave.leaveDays AS leaveDays",
|
||||
"profileLeave.reason AS reason",
|
||||
"leaveType.name as name",
|
||||
"leaveType.code as code",
|
||||
])
|
||||
.where("profileLeave.profileEmployeeId = :profileId", { profileId: id })
|
||||
.andWhere("profileLeave.isDeleted = :isDeleted", { isDeleted: false })
|
||||
|
|
@ -1402,17 +1458,32 @@ export class ProfileEmployeeController extends Controller {
|
|||
.getRawMany();
|
||||
const leaves2 =
|
||||
leave2_raw.length > 0
|
||||
? leave2_raw.map((item) => ({
|
||||
date:
|
||||
item.dateLeaveStart && item.dateLeaveEnd
|
||||
? Extension.ToThaiNumber(Extension.ToThaiFullDate2(item.dateLeaveStart)) +
|
||||
" - " +
|
||||
Extension.ToThaiNumber(Extension.ToThaiFullDate2(item.dateLeaveEnd))
|
||||
: "-",
|
||||
type: item.name || "-",
|
||||
leaveDays: item.leaveDays ? Extension.ToThaiNumber(item.leaveDays.toString()) : "-",
|
||||
reason: item.reason || "-",
|
||||
}))
|
||||
? leave2_raw.map((item) => {
|
||||
const leaveTypeCode = item.code ? item.code.trim().toUpperCase() : "";
|
||||
|
||||
// ข้อที่ 1: LV-008 ให้ใช้ leaveSubTypeName (ประเภทย่อย) แทน name
|
||||
const displayType =
|
||||
leaveTypeCode === "LV-008" && item.leaveSubTypeName
|
||||
? item.leaveSubTypeName
|
||||
: (item.name || "-");
|
||||
|
||||
// ข้อที่ 2: แสดง reason ก่อนเสมอ ถ้ามี coupleDayLevelCountry ค่อยแสดงประเทศ
|
||||
const displayReason = item.coupleDayLevelCountry
|
||||
? `${item.reason || ""} ลาไปประเทศ ${item.coupleDayLevelCountry}`.trim()
|
||||
: (item.reason || "-");
|
||||
|
||||
return {
|
||||
date:
|
||||
item.dateLeaveStart && item.dateLeaveEnd
|
||||
? Extension.ToThaiNumber(Extension.ToThaiFullDate2(item.dateLeaveStart)) +
|
||||
" - " +
|
||||
Extension.ToThaiNumber(Extension.ToThaiFullDate2(item.dateLeaveEnd))
|
||||
: "-",
|
||||
type: displayType,
|
||||
leaveDays: item.leaveDays ? Extension.ToThaiNumber(item.leaveDays.toString()) : "-",
|
||||
reason: displayReason,
|
||||
};
|
||||
})
|
||||
: [
|
||||
{
|
||||
date: "",
|
||||
|
|
@ -1755,7 +1826,7 @@ export class ProfileEmployeeController extends Controller {
|
|||
const retire_raw = await this.salaryRepo.findOne({
|
||||
where: {
|
||||
profileEmployeeId: id,
|
||||
commandCode: In(["16"]),
|
||||
commandCode: In(["12", "15", "16"]),
|
||||
},
|
||||
order: { order: "desc" },
|
||||
});
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue