From 5882e21a41536cdb457539dd881b1b1bce6e90ea Mon Sep 17 00:00:00 2001 From: Bright Date: Thu, 13 Feb 2025 11:15:13 +0700 Subject: [PATCH] update report3 --- src/controllers/ReportController.ts | 78 ++++++++++++++++++++--------- 1 file changed, 55 insertions(+), 23 deletions(-) diff --git a/src/controllers/ReportController.ts b/src/controllers/ReportController.ts index deb87af..5aaa802 100644 --- a/src/controllers/ReportController.ts +++ b/src/controllers/ReportController.ts @@ -567,34 +567,66 @@ export class ReportController extends Controller { @Query("year") year: number, @Query("rootId") rootId?: string, ) { - const [development, total] = await AppDataSource.getRepository(DevelopmentScholarship) - .createQueryBuilder("developmentScholarship") - .leftJoinAndSelect("developmentScholarship.posLevel", "posLevel") - .leftJoinAndSelect("developmentScholarship.posType", "posType") - .andWhere( - year !== 0 && year != null && year != undefined - ? "developmentScholarship.scholarshipYear = :scholarshipYear" - : "1=1", - { scholarshipYear: year }, - ) - .andWhere( - rootId != "" && rootId != null && rootId != undefined - ? "developmentScholarship.rootId = :rootId" - : "1=1", - { rootId: rootId }, - ) - .orderBy("developmentScholarship.scholarshipYear", "DESC") - .addOrderBy("developmentScholarship.createdAt", "DESC") - .getManyAndCount(); + const developments = await AppDataSource.getRepository(DevelopmentScholarship) + .createQueryBuilder("developmentScholarship") + .leftJoinAndSelect("developmentScholarship.posLevel", "posLevel") + .leftJoinAndSelect("developmentScholarship.posType", "posType") + .andWhere( + year !== 0 && year != null && year != undefined + ? "developmentScholarship.scholarshipYear = :scholarshipYear" + : "1=1", + { scholarshipYear: year }, + ) + .andWhere( + rootId != "" && rootId != null && rootId != undefined + ? "developmentScholarship.rootId = :rootId" + : "1=1", + { rootId: rootId }, + ) + .orderBy("developmentScholarship.scholarshipYear", "DESC") + .addOrderBy("developmentScholarship.createdAt", "DESC") + .getMany(); + + const mapData = developments.map((item, idx:number) => ({ + no: Extension.ToThaiNumber((idx+1).toString()), + institution: item.educationalInstitution ? item.educationalInstitution : "-", + scholarshipType: item.scholarshipType ? item.scholarshipType : "-", + degreeLevel: item.degreeLevel ? item.degreeLevel : "-", + course: item.course ? item.course : "-", + field: item.field ? item.field : "-", + fullName: `${item.prefix}${item.firstName} ${item.lastName}`, + position: item.position ? item.position : "-", + posLevel: item.posLevel ? item.posLevel.posLevelName : "-", + totalPeriod: item.totalPeriod ? item.totalPeriod : "-", + budgetApprove: item.budgetApprove ? Extension.ToThaiNumber(item.budgetApprove.toString()) : "๐" //toLocaleString + })); + + const sum = developments + .filter(x => x.budgetApprove) + .reduce((acc, item) => acc + (Number(item.budgetApprove)), 0); return new HttpSuccess({ template: "reportFund3", reportName: "reportFund3", data: { - year: year ? Extension.ToThaiNumber(year.toString()) : "-", - root: null, - developments: development, - total: total + year: year ? Extension.ToThaiNumber((year+543).toString()) : "-", + root: developments.length > 0 ? developments[0].root : "-", + data: mapData.length > 0 + ? mapData + : [{ + no: "-", + institution: "-", + scholarshipType: "-", + degreeLevel: "-", + course: "-", + field: "-", + fullName: "-", + position: "-", + posLevel: "-", + totalPeriod: "-", + budgetApprove: "-", + }], + sum: sum ? Extension.ToThaiNumber(sum.toString()): "-" }, }); }