map data entry
This commit is contained in:
parent
b56fced2d4
commit
afdc758cd0
1 changed files with 146 additions and 0 deletions
|
|
@ -92,6 +92,7 @@ import { ProfileEducations } from "../entities/ProfileEducations";
|
||||||
import { ProfileInsignias } from "../entities/ProfileInsignias";
|
import { ProfileInsignias } from "../entities/ProfileInsignias";
|
||||||
import { ProfileLeave } from "../entities/ProfileLeave";
|
import { ProfileLeave } from "../entities/ProfileLeave";
|
||||||
import { ProfileLeaves } from "../entities/ProfileLeaves";
|
import { ProfileLeaves } from "../entities/ProfileLeaves";
|
||||||
|
import { ProfileSalaryTemp } from "../entities/ProfileSalaryTemp";
|
||||||
@Route("api/v1/org/upload")
|
@Route("api/v1/org/upload")
|
||||||
@Tags("UPLOAD")
|
@Tags("UPLOAD")
|
||||||
@Security("bearerAuth")
|
@Security("bearerAuth")
|
||||||
|
|
@ -184,6 +185,8 @@ export class ImportDataController extends Controller {
|
||||||
private LeaveSummaryRepo = AppDataSource.getRepository(ProfileLeave);
|
private LeaveSummaryRepo = AppDataSource.getRepository(ProfileLeave);
|
||||||
private ProfileInsigniasRepo = AppDataSource.getRepository(ProfileInsignias);
|
private ProfileInsigniasRepo = AppDataSource.getRepository(ProfileInsignias);
|
||||||
private InsigniaRepo = AppDataSource.getRepository(ProfileInsignia);
|
private InsigniaRepo = AppDataSource.getRepository(ProfileInsignia);
|
||||||
|
private salaryTempRepo = AppDataSource.getRepository(ProfileSalaryTemp);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @summary ทะเบียนประวัติ ข้าราชการ
|
* @summary ทะเบียนประวัติ ข้าราชการ
|
||||||
*/
|
*/
|
||||||
|
|
@ -4746,4 +4749,147 @@ export class ImportDataController extends Controller {
|
||||||
}
|
}
|
||||||
return new HttpSuccess();
|
return new HttpSuccess();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @summary รวม entry กับตัวหลัก
|
||||||
|
*/
|
||||||
|
@Post("tranferEntryToMain")
|
||||||
|
async tranferEntryToMain(@Request() request: { user: Record<string, any> }) {
|
||||||
|
const profiles = await this.profileRepo.find({
|
||||||
|
where: {
|
||||||
|
citizenId: In([
|
||||||
|
"3860700270466",
|
||||||
|
"3909900758770",
|
||||||
|
"3309900659891",
|
||||||
|
"3100501312173",
|
||||||
|
"3360200140185",
|
||||||
|
"3101900524141",
|
||||||
|
"3102101307867",
|
||||||
|
]),
|
||||||
|
},
|
||||||
|
order: { profileSalary: { commandDateAffect: "ASC" } },
|
||||||
|
relations: ["profileSalary"],
|
||||||
|
});
|
||||||
|
for await (const item of profiles) {
|
||||||
|
// 2. จัดกลุ่มข้อมูลตามวันที่คำสั่งมีผล
|
||||||
|
const groupedByDate = this.groupOrdersByDate(item.profileSalary);
|
||||||
|
// 3. ประมวลผลแต่ละกลุ่ม
|
||||||
|
const processedOrders: any = [];
|
||||||
|
let num = 0;
|
||||||
|
for (let [date, orders] of Object.entries(groupedByDate) as any) {
|
||||||
|
if (orders.length == 1) {
|
||||||
|
num = num + 1;
|
||||||
|
//save
|
||||||
|
orders.isDelete = false;
|
||||||
|
processedOrders.push(orders[0]);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
// หาแถวหลัก (ที่มีเลขที่คำสั่ง)
|
||||||
|
const mainOrder: ProfileSalary[] = orders.filter((order: ProfileSalary) => order.commandNo);
|
||||||
|
const orderOrigi: ProfileSalary[] = [];
|
||||||
|
// ข้ามถ้าไม่มีแถวหลัก
|
||||||
|
if (mainOrder.length == 0) {
|
||||||
|
for await (const _item of orders) {
|
||||||
|
num = num + 1;
|
||||||
|
_item.isDelete = false;
|
||||||
|
processedOrders.push(_item);
|
||||||
|
//save
|
||||||
|
}
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (const _item1 of mainOrder) {
|
||||||
|
let _orders = orders.filter((x: ProfileSalary) => !x.id.includes(_item1.id));
|
||||||
|
for (const _item of _orders) {
|
||||||
|
num = num + 1;
|
||||||
|
//ปี 4หลัก
|
||||||
|
const findCommandNo = _item.remark?.includes(
|
||||||
|
_item1.commandNo + "/" + (_item1.commandYear + 543),
|
||||||
|
);
|
||||||
|
if (findCommandNo) {
|
||||||
|
_item.isDelete = true;
|
||||||
|
processedOrders.push(_item);
|
||||||
|
orders = orders.filter((x: ProfileSalary) => x.id != _item.id);
|
||||||
|
orderOrigi.push(_item);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
//ปี 2หลัก
|
||||||
|
const _findCommandNo = _item.remark?.includes(
|
||||||
|
_item1.commandNo + "/" + (_item1.commandYear + 543).toString().slice(-2),
|
||||||
|
);
|
||||||
|
if (_findCommandNo) {
|
||||||
|
_item.isDelete = true;
|
||||||
|
processedOrders.push(_item);
|
||||||
|
orders = orders.filter((x: ProfileSalary) => x.id != _item.id);
|
||||||
|
orderOrigi.push(_item);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (const _item of orders) {
|
||||||
|
num = num + 1;
|
||||||
|
//ปี 4หลัก
|
||||||
|
const chk1 = orderOrigi.filter(
|
||||||
|
(x) =>
|
||||||
|
x.remark.includes(_item.commandNo + "/" + (_item.commandYear + 543)) &&
|
||||||
|
(_item.commandName == "แก้ไขคำสั่ง"
|
||||||
|
? x.remark.includes("แก้ไขคำสั่ง")
|
||||||
|
: !x.remark.includes("แก้ไขคำสั่ง")),
|
||||||
|
);
|
||||||
|
if (chk1.length > 0) {
|
||||||
|
_item.isDelete = false;
|
||||||
|
_item.remark = chk1[0].remark;
|
||||||
|
//commandName
|
||||||
|
processedOrders.push(_item);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
//ปี 2หลัก
|
||||||
|
const chk2 = orderOrigi.filter(
|
||||||
|
(x) =>
|
||||||
|
x.remark.includes(
|
||||||
|
_item.commandNo + "/" + (_item.commandYear + 543).toString().slice(-2),
|
||||||
|
) &&
|
||||||
|
(_item.commandName == "แก้ไขคำสั่ง"
|
||||||
|
? x.remark.includes("แก้ไขคำสั่ง")
|
||||||
|
: !x.remark.includes("แก้ไขคำสั่ง")),
|
||||||
|
);
|
||||||
|
if (chk2.length > 0) {
|
||||||
|
_item.isDelete = false;
|
||||||
|
_item.remark = chk2[0].remark;
|
||||||
|
//commandName
|
||||||
|
processedOrders.push(_item);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
_item.isDelete = false;
|
||||||
|
processedOrders.push(_item);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
let salaryNew = processedOrders.map(({ id, ...rest }: ProfileSalary) => ({
|
||||||
|
...rest,
|
||||||
|
isEdit: false,
|
||||||
|
createdUserId: request.user.sub,
|
||||||
|
createdFullName: request.user.name,
|
||||||
|
lastUpdateUserId: request.user.sub,
|
||||||
|
lastUpdateFullName: request.user.name,
|
||||||
|
createdAt: new Date(),
|
||||||
|
lastUpdatedAt: new Date(),
|
||||||
|
}));
|
||||||
|
await this.salaryTempRepo.save(salaryNew);
|
||||||
|
// return new HttpSuccess(salaryNew.length);
|
||||||
|
}
|
||||||
|
return new HttpSuccess();
|
||||||
|
}
|
||||||
|
// ฟังก์ชันจัดกลุ่มตามวันที่
|
||||||
|
groupOrdersByDate(orders: ProfileSalary[]) {
|
||||||
|
return orders.reduce((groups: any, order) => {
|
||||||
|
const date = order.commandDateAffect.toDateString(); // เปลี่ยนชื่อฟิลด์ตามจริง
|
||||||
|
if (!groups[date]) {
|
||||||
|
groups[date] = [];
|
||||||
|
}
|
||||||
|
groups[date].push(order);
|
||||||
|
return groups;
|
||||||
|
}, {});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue