From 00d0f1f0fbf1a1ce9f0d1f68b914b53d2ace2da6 Mon Sep 17 00:00:00 2001 From: kittapath Date: Thu, 13 Feb 2025 21:52:49 +0700 Subject: [PATCH] edit report if no value --- src/controllers/ReportController.ts | 1066 ++++++++++++++++----------- 1 file changed, 618 insertions(+), 448 deletions(-) diff --git a/src/controllers/ReportController.ts b/src/controllers/ReportController.ts index 5fce29f..bf63247 100644 --- a/src/controllers/ReportController.ts +++ b/src/controllers/ReportController.ts @@ -26,11 +26,7 @@ export class ReportController extends Controller { * @param {string} type type ประเภท report */ @Get("main") - async GetReportDevelopemtMain( - @Query("year") year?: number, - @Query("rootId") rootId?: string, - ) { - + async GetReportDevelopemtMain(@Query("year") year?: number, @Query("rootId") rootId?: string) { // const _type = type.trim().toUpperCase(); const formattedData = { org: "_type", @@ -57,9 +53,9 @@ export class ReportController extends Controller { "SUM(DISTINCT planGoals.amount) AS goalParticipants", "COUNT(DISTINCT history.id) AS actualParticipants", "strategy1.strategyChild1Name AS strategy1", - "strategy2.strategyChild2Name AS strategy2", - "strategy3.strategyChild3Name AS strategy3", - "strategy4.strategyChild4Name AS strategy4", + "strategy2.strategyChild2Name AS strategy2", + "strategy3.strategyChild3Name AS strategy3", + "strategy4.strategyChild4Name AS strategy4", "strategy5.strategyChild5Name AS strategy5", "development.accept AS acceptBudget", "development.receive AS receiveBudget", @@ -69,224 +65,317 @@ export class ReportController extends Controller { .groupBy("development.id") .getRawMany(); - const mappedDataDev = dataDevelopment.map((item, index) => { - let budget = null; - if (item.budget == "REGULATIONBUDGET") { - budget = "งบตามข้อบัญญัติ"; - }else if (item.budget == "OTHERBUDGET") { - budget = "เงินนอกงบประมาณ"; - }else if (item.budget == "BANGKOKBUDGET") { - budget = "ไม่ใช้งบประมาณ"; - } - return { - strategy: item.strategy1, - projectName: item.projectName, - totalDate: item.totalDate != null && item.totalDate != "" ? Extension.ToThaiNumber(item.totalDate.toLocaleString()): "-", - goalParticipants: item.goalParticipants != null && item.goalParticipants != "" ? Extension.ToThaiNumber(item.goalParticipants.toLocaleString()): "-", - actualParticipants: item.actualParticipants != null && item.actualParticipants != "" ? Extension.ToThaiNumber(item.actualParticipants.toLocaleString()): "-", - budget: budget, - acceptBudget: item.acceptBudget != null && item.acceptBudget != "" ? Extension.ToThaiNumber(item.acceptBudget.toLocaleString()): "-", - receiveBudget: item.receiveBudget != null && item.receiveBudget != "" ? Extension.ToThaiNumber(item.receiveBudget.toLocaleString()): "-", - obstacle: item.obstacle, - root: item.root, - output: "-", - outcome: "-", - position: "-", - indicators: "-", - devResult: "-", - positionActual: "-", - }; - }); + const mappedDataDev = dataDevelopment.map((item, index) => { + let budget = null; + if (item.budget == "REGULATIONBUDGET") { + budget = "งบตามข้อบัญญัติ"; + } else if (item.budget == "OTHERBUDGET") { + budget = "เงินนอกงบประมาณ"; + } else if (item.budget == "BANGKOKBUDGET") { + budget = "ไม่ใช้งบประมาณ"; + } + return { + strategy: item.strategy1, + projectName: item.projectName, + totalDate: + item.totalDate != null && item.totalDate != "" + ? Extension.ToThaiNumber(item.totalDate.toLocaleString()) + : "-", + goalParticipants: + item.goalParticipants != null && item.goalParticipants != "" + ? Extension.ToThaiNumber(item.goalParticipants.toLocaleString()) + : "-", + actualParticipants: + item.actualParticipants != null && item.actualParticipants != "" + ? Extension.ToThaiNumber(item.actualParticipants.toLocaleString()) + : "-", + budget: budget, + acceptBudget: + item.acceptBudget != null && item.acceptBudget != "" + ? Extension.ToThaiNumber(item.acceptBudget.toLocaleString()) + : "-", + receiveBudget: + item.receiveBudget != null && item.receiveBudget != "" + ? Extension.ToThaiNumber(item.receiveBudget.toLocaleString()) + : "-", + obstacle: item.obstacle, + root: item.root, + output: "-", + outcome: "-", + position: "-", + indicators: "-", + devResult: "-", + positionActual: "-", + }; + }); - const resultAllStrategy = await AppDataSource.getRepository(Development) + const resultAllStrategy = await AppDataSource.getRepository(Development) .createQueryBuilder("development") .leftJoinAndSelect("development.strategyChild1Actual", "strategy1") .where("development.status = :status", { status: "FINISH" }) .andWhere("development.strategyChild1ActualId IS NOT NULL") .select([ "development.rootId AS rootId", - "development.strategyChild1ActualId AS strategyId", + "development.strategyChild1ActualId AS strategyId", "strategy1.strategyChild1Name AS strategyName", "COUNT(development.id) AS devCount", "SUM(development.receive) AS receiveBudget", "development.root AS root", ]) - .groupBy("development.rootId, development.strategyChild1ActualId, strategy1.strategyChild1Name, development.root") + .groupBy( + "development.rootId, development.strategyChild1ActualId, strategy1.strategyChild1Name, development.root", + ) .orderBy("strategy1.createdAt", "ASC") .getRawMany(); - - interface Strategy { - strategyId: string; - strategyName: string; - devCount: string; - receiveBudget: string; - sumDev: string; - sumTraget: string; - sumBudget: string; - sumRowDev: string, - sumRowTarget: string, - sumRowBudget: string, - } - - interface GroupedData { - rootId: string; - root: string; - strategy: Strategy[]; - } - - const groupedData: GroupedData[] = resultAllStrategy.reduce((acc: GroupedData[], item) => { - const existingRoot = acc.find(entry => entry.rootId === item.rootId); - if (existingRoot) { - existingRoot.strategy.push({ - strategyId: item.strategyId, - strategyName: item.strategyName, - devCount: item.devCount?item.devCount:"-", - receiveBudget: item.receiveBudget?item.receiveBudget:"-", - sumDev: "", - sumTraget: "", - sumBudget: "", - sumRowDev:"", - sumRowTarget:"", - sumRowBudget:"", - }); - } else { - acc.push({ - rootId: item.rootId, - root: item.root, - strategy: [{ + interface Strategy { + strategyId: string; + strategyName: string; + devCount: string; + receiveBudget: string; + sumDev: string; + sumTraget: string; + sumBudget: string; + sumRowDev: string; + sumRowTarget: string; + sumRowBudget: string; + } + + interface GroupedData { + rootId: string; + root: string; + strategy: Strategy[]; + } + + const groupedData: GroupedData[] = resultAllStrategy.reduce((acc: GroupedData[], item) => { + const existingRoot = acc.find((entry) => entry.rootId === item.rootId); + + if (existingRoot) { + existingRoot.strategy.push({ + strategyId: item.strategyId, + strategyName: item.strategyName, + devCount: item.devCount ? item.devCount : "-", + receiveBudget: item.receiveBudget ? item.receiveBudget : "-", + sumDev: "", + sumTraget: "", + sumBudget: "", + sumRowDev: "", + sumRowTarget: "", + sumRowBudget: "", + }); + } else { + acc.push({ + rootId: item.rootId, + root: item.root, + strategy: [ + { strategyId: item.strategyId, strategyName: item.strategyName, - devCount: item.devCount?item.devCount:"-", - receiveBudget: item.receiveBudget?item.receiveBudget:"-", + devCount: item.devCount ? item.devCount : "-", + receiveBudget: item.receiveBudget ? item.receiveBudget : "-", sumDev: "", sumTraget: "", sumBudget: "", - sumRowDev:"", - sumRowTarget:"", - sumRowBudget:"", - }] - }); - } + sumRowDev: "", + sumRowTarget: "", + sumRowBudget: "", + }, + ], + }); + } - return acc; - }, []); - let sumDev1 = 0; - let sumTraget1 = 0; - let sumBudget1 = 0; - let sumDev2 = 0; - let sumTraget2 = 0; - let sumBudget2 = 0; - let sumDev3 = 0; - let sumTraget3 = 0; - let sumBudget3 = 0; - let sumDev4 = 0; - let sumTraget4 = 0; - let sumBudget4 = 0; - const reformattedData = groupedData.map((group,x) => { - const sumRowDev = (group.strategy[0] && group.strategy[0].devCount !== "-" ? Number(group.strategy[0].devCount) : 0) + - (group.strategy[1] && group.strategy[1].devCount !== "-" ? Number(group.strategy[1].devCount) : 0) + - (group.strategy[2] && group.strategy[2].devCount !== "-" ? Number(group.strategy[2].devCount) : 0); - (group.strategy[3] && group.strategy[3].devCount !== "-" ? Number(group.strategy[3].devCount) : 0); - const sumRowBudget = (group.strategy[0] && group.strategy[0].receiveBudget !== "-" ? Number(group.strategy[0].receiveBudget) : 0) + - (group.strategy[1] && group.strategy[1].receiveBudget !== "-" ? Number(group.strategy[1].receiveBudget) : 0) + - (group.strategy[2] && group.strategy[2].receiveBudget !== "-" ? Number(group.strategy[2].receiveBudget) : 0); - (group.strategy[3] && group.strategy[3].receiveBudget !== "-" ? Number(group.strategy[3].receiveBudget) : 0); - sumDev1 = groupedData.reduce((sum, group) => { - const devCount = group.strategy[0] && group.strategy[0].devCount !== "-" ? Number(group.strategy[0].devCount) : 0; - return sum + devCount; - }, 0); - sumBudget1 = groupedData.reduce((sum, group) => { - const devCount = group.strategy[0] && group.strategy[0].receiveBudget !== "-" ? Number(group.strategy[0].receiveBudget) : 0; - return sum + devCount; - }, 0); - sumDev2 = groupedData.reduce((sum, group) => { - const devCount = group.strategy[1] && group.strategy[1].devCount !== "-" ? Number(group.strategy[1].devCount) : 0; - return sum + devCount; - }, 0); - sumBudget2 = groupedData.reduce((sum, group) => { - const devCount = group.strategy[1] && group.strategy[1].receiveBudget !== "-" ? Number(group.strategy[1].receiveBudget) : 0; - return sum + devCount; - }, 0); - sumDev3 = groupedData.reduce((sum, group) => { - const devCount = group.strategy[2] && group.strategy[2].devCount !== "-" ? Number(group.strategy[2].devCount) : 0; - return sum + devCount; - }, 0); - sumBudget3 = groupedData.reduce((sum, group) => { - const devCount = group.strategy[2] && group.strategy[2].receiveBudget !== "-" ? Number(group.strategy[2].receiveBudget) : 0; - return sum + devCount; - }, 0); - sumDev4 = groupedData.reduce((sum, group) => { - const devCount = group.strategy[3] && group.strategy[3].devCount !== "-" ? Number(group.strategy[3].devCount) : 0; - return sum + devCount; - }, 0); - sumBudget4 = groupedData.reduce((sum, group) => { - const devCount = group.strategy[3] && group.strategy[3].receiveBudget !== "-" ? Number(group.strategy[3].receiveBudget) : 0; - return sum + devCount; - }, 0); - - const formattedGroup = { - rowNo: x?Extension.ToThaiNumber((x + 1).toString()):Extension.ToThaiNumber("๑"), - rootId: group.rootId, - root: group.root, - strategyName1: group.strategy[0]&&group.strategy[0].strategyName?group.strategy[0].strategyName:"-", - devCount1: group.strategy[0]&&group.strategy[0].devCount?Extension.ToThaiNumber(group.strategy[0].devCount.toLocaleString()):"-", - target1: "-", - receiveBudget1: group.strategy[0]&&group.strategy[0].receiveBudget?Extension.ToThaiNumber(group.strategy[0].receiveBudget.toLocaleString()):"-", - + return acc; + }, []); + let sumDev1 = 0; + let sumTraget1 = 0; + let sumBudget1 = 0; + let sumDev2 = 0; + let sumTraget2 = 0; + let sumBudget2 = 0; + let sumDev3 = 0; + let sumTraget3 = 0; + let sumBudget3 = 0; + let sumDev4 = 0; + let sumTraget4 = 0; + let sumBudget4 = 0; + const reformattedData = groupedData.map((group, x) => { + const sumRowDev = + (group.strategy[0] && group.strategy[0].devCount !== "-" + ? Number(group.strategy[0].devCount) + : 0) + + (group.strategy[1] && group.strategy[1].devCount !== "-" + ? Number(group.strategy[1].devCount) + : 0) + + (group.strategy[2] && group.strategy[2].devCount !== "-" + ? Number(group.strategy[2].devCount) + : 0); + group.strategy[3] && group.strategy[3].devCount !== "-" + ? Number(group.strategy[3].devCount) + : 0; + const sumRowBudget = + (group.strategy[0] && group.strategy[0].receiveBudget !== "-" + ? Number(group.strategy[0].receiveBudget) + : 0) + + (group.strategy[1] && group.strategy[1].receiveBudget !== "-" + ? Number(group.strategy[1].receiveBudget) + : 0) + + (group.strategy[2] && group.strategy[2].receiveBudget !== "-" + ? Number(group.strategy[2].receiveBudget) + : 0); + group.strategy[3] && group.strategy[3].receiveBudget !== "-" + ? Number(group.strategy[3].receiveBudget) + : 0; + sumDev1 = groupedData.reduce((sum, group) => { + const devCount = + group.strategy[0] && group.strategy[0].devCount !== "-" + ? Number(group.strategy[0].devCount) + : 0; + return sum + devCount; + }, 0); + sumBudget1 = groupedData.reduce((sum, group) => { + const devCount = + group.strategy[0] && group.strategy[0].receiveBudget !== "-" + ? Number(group.strategy[0].receiveBudget) + : 0; + return sum + devCount; + }, 0); + sumDev2 = groupedData.reduce((sum, group) => { + const devCount = + group.strategy[1] && group.strategy[1].devCount !== "-" + ? Number(group.strategy[1].devCount) + : 0; + return sum + devCount; + }, 0); + sumBudget2 = groupedData.reduce((sum, group) => { + const devCount = + group.strategy[1] && group.strategy[1].receiveBudget !== "-" + ? Number(group.strategy[1].receiveBudget) + : 0; + return sum + devCount; + }, 0); + sumDev3 = groupedData.reduce((sum, group) => { + const devCount = + group.strategy[2] && group.strategy[2].devCount !== "-" + ? Number(group.strategy[2].devCount) + : 0; + return sum + devCount; + }, 0); + sumBudget3 = groupedData.reduce((sum, group) => { + const devCount = + group.strategy[2] && group.strategy[2].receiveBudget !== "-" + ? Number(group.strategy[2].receiveBudget) + : 0; + return sum + devCount; + }, 0); + sumDev4 = groupedData.reduce((sum, group) => { + const devCount = + group.strategy[3] && group.strategy[3].devCount !== "-" + ? Number(group.strategy[3].devCount) + : 0; + return sum + devCount; + }, 0); + sumBudget4 = groupedData.reduce((sum, group) => { + const devCount = + group.strategy[3] && group.strategy[3].receiveBudget !== "-" + ? Number(group.strategy[3].receiveBudget) + : 0; + return sum + devCount; + }, 0); - strategyName2: group.strategy[1]&&group.strategy[1].strategyName?group.strategy[1].strategyName:"-", - devCount2: group.strategy[1]&&group.strategy[1].devCount?Extension.ToThaiNumber(group.strategy[1].devCount.toLocaleString()):"-", - target2: "-", - receiveBudget2: group.strategy[1]&&group.strategy[1].receiveBudget?Extension.ToThaiNumber(group.strategy[1].receiveBudget.toLocaleString()):"-", - + const formattedGroup = { + rowNo: x ? Extension.ToThaiNumber((x + 1).toString()) : Extension.ToThaiNumber("๑"), + rootId: group.rootId, + root: group.root, + strategyName1: + group.strategy[0] && group.strategy[0].strategyName + ? group.strategy[0].strategyName + : "-", + devCount1: + group.strategy[0] && group.strategy[0].devCount + ? Extension.ToThaiNumber(group.strategy[0].devCount.toLocaleString()) + : "-", + target1: "-", + receiveBudget1: + group.strategy[0] && group.strategy[0].receiveBudget + ? Extension.ToThaiNumber(group.strategy[0].receiveBudget.toLocaleString()) + : "-", - strategyName3: group.strategy[2]&&group.strategy[2].strategyName?group.strategy[2].strategyName:"-", - devCount3: group.strategy[2]&&group.strategy[2].devCount?Extension.ToThaiNumber(group.strategy[2].devCount.toLocaleString()):"-", - target3: "-", - receiveBudget3: group.strategy[2]&&group.strategy[2].receiveBudget?Extension.ToThaiNumber(group.strategy[2].receiveBudget.toLocaleString()):"-", - + strategyName2: + group.strategy[1] && group.strategy[1].strategyName + ? group.strategy[1].strategyName + : "-", + devCount2: + group.strategy[1] && group.strategy[1].devCount + ? Extension.ToThaiNumber(group.strategy[1].devCount.toLocaleString()) + : "-", + target2: "-", + receiveBudget2: + group.strategy[1] && group.strategy[1].receiveBudget + ? Extension.ToThaiNumber(group.strategy[1].receiveBudget.toLocaleString()) + : "-", - strategyName4: group.strategy[3]&&group.strategy[3].strategyName?group.strategy[3].strategyName:"-", - devCount4: group.strategy[3]&&group.strategy[3].devCount?Extension.ToThaiNumber(group.strategy[3].devCount.toLocaleString()):"-", - target4: "-", - receiveBudget4: group.strategy[3]&&group.strategy[3].receiveBudget?Extension.ToThaiNumber(group.strategy[3].receiveBudget.toLocaleString()):"-", - + strategyName3: + group.strategy[2] && group.strategy[2].strategyName + ? group.strategy[2].strategyName + : "-", + devCount3: + group.strategy[2] && group.strategy[2].devCount + ? Extension.ToThaiNumber(group.strategy[2].devCount.toLocaleString()) + : "-", + target3: "-", + receiveBudget3: + group.strategy[2] && group.strategy[2].receiveBudget + ? Extension.ToThaiNumber(group.strategy[2].receiveBudget.toLocaleString()) + : "-", - sumRowDev: sumRowDev?Extension.ToThaiNumber(sumRowDev.toLocaleString()):"-", - sumRowTarget: "-", - sumRowBudget: sumRowBudget?Extension.ToThaiNumber(sumRowBudget.toLocaleString()):"-", - // strategy: Array(4).fill(null).map((_, index) => { - // const strategy = group.strategy[index] || { - // strategyName: "", - // devCount: "", - // target: "", - // receiveBudget: "", - // sumDev: "", - // sumTraget: "", - // sumBudget: "", - // sumRowDev: "", - // sumRowTarget: "", - // sumRowBudget: "", - // }; + strategyName4: + group.strategy[3] && group.strategy[3].strategyName + ? group.strategy[3].strategyName + : "-", + devCount4: + group.strategy[3] && group.strategy[3].devCount + ? Extension.ToThaiNumber(group.strategy[3].devCount.toLocaleString()) + : "-", + target4: "-", + receiveBudget4: + group.strategy[3] && group.strategy[3].receiveBudget + ? Extension.ToThaiNumber(group.strategy[3].receiveBudget.toLocaleString()) + : "-", - // return { - // [`strategyName${index + 1}`]: strategy.strategyName ?? "", - // [`devCount${index + 1}`]: strategy.devCount ?? "", - // [`target${index + 1}`]: "", - // [`receiveBudget${index + 1}`]: strategy.receiveBudget ?? "", - // [`sumDev${index + 1}`]: strategy.sumDev ?? "", - // [`sumTraget${index + 1}`]: strategy.sumTraget ?? "", - // [`sumBudget${index + 1}`]: strategy.sumBudget ?? "", - // [`sumRowDev`]: strategy.sumRowDev ?? "", - // [`sumRowTarget`]: strategy.sumRowTarget ?? "", - // [`sumRowBudget`]: strategy.sumRowBudget ?? "", - // }; - // }), - }; + sumRowDev: sumRowDev ? Extension.ToThaiNumber(sumRowDev.toLocaleString()) : "-", + sumRowTarget: "-", + sumRowBudget: sumRowBudget ? Extension.ToThaiNumber(sumRowBudget.toLocaleString()) : "-", + // strategy: Array(4).fill(null).map((_, index) => { + // const strategy = group.strategy[index] || { + // strategyName: "", + // devCount: "", + // target: "", + // receiveBudget: "", + // sumDev: "", + // sumTraget: "", + // sumBudget: "", + // sumRowDev: "", + // sumRowTarget: "", + // sumRowBudget: "", + // }; - return formattedGroup; - }); + // return { + // [`strategyName${index + 1}`]: strategy.strategyName ?? "", + // [`devCount${index + 1}`]: strategy.devCount ?? "", + // [`target${index + 1}`]: "", + // [`receiveBudget${index + 1}`]: strategy.receiveBudget ?? "", + // [`sumDev${index + 1}`]: strategy.sumDev ?? "", + // [`sumTraget${index + 1}`]: strategy.sumTraget ?? "", + // [`sumBudget${index + 1}`]: strategy.sumBudget ?? "", + // [`sumRowDev`]: strategy.sumRowDev ?? "", + // [`sumRowTarget`]: strategy.sumRowTarget ?? "", + // [`sumRowBudget`]: strategy.sumRowBudget ?? "", + // }; + // }), + }; + + return formattedGroup; + }); return new HttpSuccess({ template: "development", @@ -294,21 +383,28 @@ export class ReportController extends Controller { data: { data: mappedDataDev, resultAllStrategy: reformattedData, - sumDev1: Extension.ToThaiNumber(sumDev1.toLocaleString())??"-", - sumTraget1: Extension.ToThaiNumber(sumTraget1.toLocaleString())??"-", - sumBudget1: Extension.ToThaiNumber(sumBudget1.toLocaleString())??"-", - sumDev2: Extension.ToThaiNumber(sumDev2.toLocaleString())??"-", - sumTraget2: Extension.ToThaiNumber(sumTraget2.toLocaleString())??"-", - sumBudget2: Extension.ToThaiNumber(sumBudget2.toLocaleString())??"-", - sumDev3: Extension.ToThaiNumber(sumDev3.toLocaleString())??"-", - sumTraget3: Extension.ToThaiNumber(sumTraget3.toLocaleString())??"-", - sumBudget3: Extension.ToThaiNumber(sumBudget3.toLocaleString())??"-", - sumDev4: Extension.ToThaiNumber(sumDev4.toLocaleString())??"-", - sumTraget4: Extension.ToThaiNumber(sumTraget4.toLocaleString())??"-", - sumBudget4: Extension.ToThaiNumber(sumBudget4.toLocaleString())??"-", - sumAllDev: Extension.ToThaiNumber((sumDev1 + sumDev2 + sumDev3 + sumDev4).toLocaleString())??"-", - sumTraget: Extension.ToThaiNumber((sumTraget1 +sumTraget2 +sumTraget3 +sumTraget4).toLocaleString())??"-", - sumAllBudget: Extension.ToThaiNumber((sumBudget1 + sumBudget2 + sumBudget3 + sumBudget4).toLocaleString())??"-", + sumDev1: Extension.ToThaiNumber(sumDev1.toLocaleString()) ?? "-", + sumTraget1: Extension.ToThaiNumber(sumTraget1.toLocaleString()) ?? "-", + sumBudget1: Extension.ToThaiNumber(sumBudget1.toLocaleString()) ?? "-", + sumDev2: Extension.ToThaiNumber(sumDev2.toLocaleString()) ?? "-", + sumTraget2: Extension.ToThaiNumber(sumTraget2.toLocaleString()) ?? "-", + sumBudget2: Extension.ToThaiNumber(sumBudget2.toLocaleString()) ?? "-", + sumDev3: Extension.ToThaiNumber(sumDev3.toLocaleString()) ?? "-", + sumTraget3: Extension.ToThaiNumber(sumTraget3.toLocaleString()) ?? "-", + sumBudget3: Extension.ToThaiNumber(sumBudget3.toLocaleString()) ?? "-", + sumDev4: Extension.ToThaiNumber(sumDev4.toLocaleString()) ?? "-", + sumTraget4: Extension.ToThaiNumber(sumTraget4.toLocaleString()) ?? "-", + sumBudget4: Extension.ToThaiNumber(sumBudget4.toLocaleString()) ?? "-", + sumAllDev: + Extension.ToThaiNumber((sumDev1 + sumDev2 + sumDev3 + sumDev4).toLocaleString()) ?? "-", + sumTraget: + Extension.ToThaiNumber( + (sumTraget1 + sumTraget2 + sumTraget3 + sumTraget4).toLocaleString(), + ) ?? "-", + sumAllBudget: + Extension.ToThaiNumber( + (sumBudget1 + sumBudget2 + sumBudget3 + sumBudget4).toLocaleString(), + ) ?? "-", }, }); } @@ -568,10 +664,7 @@ export class ReportController extends Controller { * */ @Get("report3") - async report3( - @Query("year") year?: number, - @Query("rootId") rootId?: string, - ) { + async report3(@Query("year") year?: number, @Query("rootId") rootId?: string) { const developments = await AppDataSource.getRepository(DevelopmentScholarship) .createQueryBuilder("developmentScholarship") .leftJoinAndSelect("developmentScholarship.posLevel", "posLevel") @@ -592,58 +685,67 @@ export class ReportController extends Controller { .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 == "DOMESTICE" - ? "การศึกษาในประเทศ" - : item.scholarshipType == "NOABROAD" - ? "ฝึกอบรมในประเทศที่ส่งไปพัฒนากับหน่วยวงานภายนอก (หลักสูตรที่ไม่มีการไปต่างประเทศ)" - : item.scholarshipType == "ABROAD" - ? "ฝึกอบรมในประเทศที่ส่งไปพัฒนากับหน่วยวงานภายนอก (หลักสูตรที่มีการไปต่างประเทศ)" - : item.scholarshipType == "EXECUTIVE" - ? "ฝึกอบรมในประเทศที่ส่งไปพัฒนากับหน่วยวงานภายนอก (หลักสูตรประเภทนักบริหาร)" - : item.scholarshipType == "RESEARCH" - ? "ศึกษา ฝึกอบรม ประชุม ดูงาน และปฏิบัติการวิจัย ณ ต่างประเทศ" - : "-" - : "-", - 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.toLocaleString()) : "๐" - })); - - const sum = developments - .filter(x => x.budgetApprove) - .reduce((acc, item) => acc + (Number(item.budgetApprove)), 0); + const mapData = developments.map((item, idx: number) => ({ + no: Extension.ToThaiNumber((idx + 1).toString()), + institution: item.educationalInstitution ? item.educationalInstitution : "-", + scholarshipType: item.scholarshipType + ? item.scholarshipType == "DOMESTICE" + ? "การศึกษาในประเทศ" + : item.scholarshipType == "NOABROAD" + ? "ฝึกอบรมในประเทศที่ส่งไปพัฒนากับหน่วยวงานภายนอก (หลักสูตรที่ไม่มีการไปต่างประเทศ)" + : item.scholarshipType == "ABROAD" + ? "ฝึกอบรมในประเทศที่ส่งไปพัฒนากับหน่วยวงานภายนอก (หลักสูตรที่มีการไปต่างประเทศ)" + : item.scholarshipType == "EXECUTIVE" + ? "ฝึกอบรมในประเทศที่ส่งไปพัฒนากับหน่วยวงานภายนอก (หลักสูตรประเภทนักบริหาร)" + : item.scholarshipType == "RESEARCH" + ? "ศึกษา ฝึกอบรม ประชุม ดูงาน และปฏิบัติการวิจัย ณ ต่างประเทศ" + : "-" + : "-", + 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.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+543).toString()) : "-", - root: rootId ? developments.length > 0 ? developments.find(x => x.root != "")?.root: "-" : "-", - data: mapData.length > 0 - ? mapData - : [{ - no: "-", - institution: "-", - scholarshipType: "-", - degreeLevel: "-", - course: "-", - field: "-", - fullName: "-", - position: "-", - posLevel: "-", - totalPeriod: "-", - budgetApprove: "-", - }], - sum: sum ? Extension.ToThaiNumber(sum.toLocaleString()): "-" + year: year ? Extension.ToThaiNumber((year + 543).toString()) : "", + root: rootId + ? developments.length > 0 + ? developments.find((x) => x.root != "")?.root + : "" + : "", + data: + mapData.length > 0 + ? mapData + : [ + { + no: "", + institution: "", + scholarshipType: "", + degreeLevel: "", + course: "", + field: "", + fullName: "", + position: "", + posLevel: "", + totalPeriod: "", + budgetApprove: "", + }, + ], + sum: sum ? Extension.ToThaiNumber(sum.toLocaleString()) : "-", }, }); } @@ -654,9 +756,7 @@ export class ReportController extends Controller { * */ @Get("report4") - async report4( - @Query("year") year?: number, - ) { + async report4(@Query("year") year?: number) { const developments = await AppDataSource.getRepository(DevelopmentScholarship) .createQueryBuilder("developmentScholarship") .andWhere( @@ -668,7 +768,7 @@ export class ReportController extends Controller { .orderBy("developmentScholarship.scholarshipYear", "DESC") .addOrderBy("developmentScholarship.createdAt", "DESC") .getMany(); - + // const _develop = await this.developmentScholarshipRepository.find({ // where: { // scholarshipYear: year ? year : Not(IsNull()) @@ -676,121 +776,168 @@ export class ReportController extends Controller { // order: { "scholarshipYear" : "DESC" } // }) - const groupDevelopment = Array.isArray(developments) && developments.length > 0 - ? developments.reduce((acc:any, current:any, idx:number) => { - const root = current.root || ""; - if (!acc[root]) { - acc[root] = { - no: (idx+1), - root: root, - Bachelor : 0, - BachelorHight: 0, - Master: 0, - Doctor: 0, - DomesticeCourseCount: 0, - DomesticeProfileCount: 0, - DomesticeBudgetApprove: 0, - NoAbroadCourseCount: 0, - NoAbroadDProfileCount: 0, - NoAbroadBudgetApprove: 0, - AbroadCourseCount: 0, - AbroadProfileCount: 0, - AbroadBudgetApprove: 0, - ExecutiveCourseCount: 0, - ExecutiveProfileCount: 0, - ExecutiveBudgetApprove: 0, - TotalCourseCount: 0, - TotalProfileCount: 0, - TotalBudgetApprove: 0, - }; - } + const groupDevelopment = + Array.isArray(developments) && developments.length > 0 + ? developments.reduce((acc: any, current: any, idx: number) => { + const root = current.root || ""; + if (!acc[root]) { + acc[root] = { + no: idx + 1, + root: root, + Bachelor: 0, + BachelorHight: 0, + Master: 0, + Doctor: 0, + DomesticeCourseCount: 0, + DomesticeProfileCount: 0, + DomesticeBudgetApprove: 0, + NoAbroadCourseCount: 0, + NoAbroadDProfileCount: 0, + NoAbroadBudgetApprove: 0, + AbroadCourseCount: 0, + AbroadProfileCount: 0, + AbroadBudgetApprove: 0, + ExecutiveCourseCount: 0, + ExecutiveProfileCount: 0, + ExecutiveBudgetApprove: 0, + TotalCourseCount: 0, + TotalProfileCount: 0, + TotalBudgetApprove: 0, + }; + } - switch (current.scholarshipType) { - case "DOMESTICE": - acc[root].DomesticeCourseCount++; - acc[root].DomesticeProfileCount++; - acc[root].DomesticeBudgetApprove += current.budgetApprove || 0; - break; - case "NOABROAD": - acc[root].NoAbroadCourseCount++; - acc[root].NoAbroadProfileCount++; - acc[root].NoAbroadBudgetApprove += current.budgetApprove || 0; - break; - case "ABROAD": - acc[root].AbroadCourseCount++; - acc[root].AbroadProfileCount++; - acc[root].AbroadBudgetApprove += current.budgetApprove || 0; - break; - case "EXECUTIVE": - acc[root].ExecutiveCourseCount++; - acc[root].ExecutiveProfileCount++; - acc[root].ExecutiveBudgetApprove += current.budgetApprove || 0; - break; - } + switch (current.scholarshipType) { + case "DOMESTICE": + acc[root].DomesticeCourseCount++; + acc[root].DomesticeProfileCount++; + acc[root].DomesticeBudgetApprove += current.budgetApprove || 0; + break; + case "NOABROAD": + acc[root].NoAbroadCourseCount++; + acc[root].NoAbroadProfileCount++; + acc[root].NoAbroadBudgetApprove += current.budgetApprove || 0; + break; + case "ABROAD": + acc[root].AbroadCourseCount++; + acc[root].AbroadProfileCount++; + acc[root].AbroadBudgetApprove += current.budgetApprove || 0; + break; + case "EXECUTIVE": + acc[root].ExecutiveCourseCount++; + acc[root].ExecutiveProfileCount++; + acc[root].ExecutiveBudgetApprove += current.budgetApprove || 0; + break; + } - acc[root].TotalCourseCount = acc[root].DomesticeCourseCount + acc[root].NoAbroadCourseCount + acc[root].AbroadCourseCount + acc[root].ExecutiveCourseCount; - acc[root].TotalProfileCount = acc[root].DomesticeProfileCount + acc[root].NoAbroadProfileCount + acc[root].AbroadProfileCount + acc[root].ExecutiveProfileCount; - acc[root].TotalBudgetApprove = acc[root].DomesticeBudgetApprove + acc[root].NoAbroadBudgetApprove + acc[root].AbroadBudgetApprove + acc[root].ExecutiveBudgetApprove; + acc[root].TotalCourseCount = + acc[root].DomesticeCourseCount + + acc[root].NoAbroadCourseCount + + acc[root].AbroadCourseCount + + acc[root].ExecutiveCourseCount; + acc[root].TotalProfileCount = + acc[root].DomesticeProfileCount + + acc[root].NoAbroadProfileCount + + acc[root].AbroadProfileCount + + acc[root].ExecutiveProfileCount; + acc[root].TotalBudgetApprove = + acc[root].DomesticeBudgetApprove + + acc[root].NoAbroadBudgetApprove + + acc[root].AbroadBudgetApprove + + acc[root].ExecutiveBudgetApprove; - return acc; - }, {}) - : []; + return acc; + }, {}) + : []; const _group = Object.values(groupDevelopment); return new HttpSuccess({ template: "reportFund4", reportName: "reportFund4", data: { - year: year ? Extension.ToThaiNumber((year+543).toString()) : "-", - data: Array.isArray(_group) - // ? _group - ? _group.map((x:any) => ({ + year: year ? Extension.ToThaiNumber((year + 543).toString()) : "-", + data: Array.isArray(_group) + ? // ? _group + _group.map((x: any) => ({ no: x.no ? Extension.ToThaiNumber(x.no.toString()) : "-", - root: x.root ? x.root : "-", - Bachelor : "-", + root: x.root ? x.root : "ไม่พบหน่วยงาน", + Bachelor: "-", BachelorHight: "-", Master: "-", Doctor: "-", - DomesticeCourseCount: x.DomesticeCourseCount ? Extension.ToThaiNumber(x.DomesticeCourseCount.toLocaleString()) : "-", - DomesticeProfileCount: x.DomesticeProfileCount ? Extension.ToThaiNumber(x.DomesticeProfileCount.toLocaleString()) : "-", - DomesticeBudgetApprove: x.DomesticeBudgetApprove ? Extension.ToThaiNumber(x.DomesticeBudgetApprove.toLocaleString()) : "-", - NoAbroadCourseCount: x.NoAbroadCourseCount ? Extension.ToThaiNumber(x.NoAbroadCourseCount.toLocaleString()) : "-", - NoAbroadDProfileCount: x.NoAbroadDProfileCount ? Extension.ToThaiNumber(x.NoAbroadDProfileCount.toLocaleString()) : "-", - NoAbroadBudgetApprove: x.NoAbroadBudgetApprove ? Extension.ToThaiNumber(x.NoAbroadBudgetApprove.toLocaleString()) : "-", - AbroadCourseCount: x.AbroadCourseCount ? Extension.ToThaiNumber(x.AbroadCourseCount.toLocaleString()) : "-", - AbroadProfileCount: x.AbroadProfileCount ? Extension.ToThaiNumber(x.AbroadProfileCount.toLocaleString()) : "-", - AbroadBudgetApprove: x.AbroadBudgetApprove ? Extension.ToThaiNumber(x.AbroadBudgetApprove.toLocaleString()) : "-", - ExecutiveCourseCount: x.ExecutiveCourseCount ? Extension.ToThaiNumber(x.ExecutiveCourseCount.toLocaleString()) : "-", - ExecutiveProfileCount: x.ExecutiveProfileCount ? Extension.ToThaiNumber(x.ExecutiveProfileCount.toLocaleString()) : "-", - ExecutiveBudgetApprove: x.ExecutiveBudgetApprove ? Extension.ToThaiNumber(x.ExecutiveBudgetApprove.toLocaleString()) : "-", - TotalCourseCount: x.TotalCourseCount ? Extension.ToThaiNumber(x.TotalCourseCount.toLocaleString()) : "-", - TotalProfileCount: x.TotalProfileCount ? Extension.ToThaiNumber(x.TotalProfileCount.toLocaleString()) : "-", - TotalBudgetApprove: x.TotalBudgetApprove ? Extension.ToThaiNumber(x.TotalBudgetApprove.toLocaleString()) : "-", - })) - : [{ - no: "-", - root: "-", - Bachelor : "-", - BachelorHight: "-", - Master: "-", - Doctor: "-", - DomesticeCourseCount: "-", - DomesticeProfileCount: "-", - DomesticeBudgetApprove: "-", - NoAbroadCourseCount: "-", - NoAbroadDProfileCount: "-", - NoAbroadBudgetApprove: "-", - AbroadCourseCount: "-", - AbroadProfileCount: "-", - AbroadBudgetApprove: "-", - ExecutiveCourseCount: "-", - ExecutiveProfileCount: "-", - ExecutiveBudgetApprove: "-", - TotalCourseCount: "-", - TotalProfileCount: "-", - TotalBudgetApprove: "-", - }], - totalRoot: Array.isArray(_group) ? Extension.ToThaiNumber(_group.length.toLocaleString()) : "-" + DomesticeCourseCount: x.DomesticeCourseCount + ? Extension.ToThaiNumber(x.DomesticeCourseCount.toLocaleString()) + : "-", + DomesticeProfileCount: x.DomesticeProfileCount + ? Extension.ToThaiNumber(x.DomesticeProfileCount.toLocaleString()) + : "-", + DomesticeBudgetApprove: x.DomesticeBudgetApprove + ? Extension.ToThaiNumber(x.DomesticeBudgetApprove.toLocaleString()) + : "-", + NoAbroadCourseCount: x.NoAbroadCourseCount + ? Extension.ToThaiNumber(x.NoAbroadCourseCount.toLocaleString()) + : "-", + NoAbroadDProfileCount: x.NoAbroadDProfileCount + ? Extension.ToThaiNumber(x.NoAbroadDProfileCount.toLocaleString()) + : "-", + NoAbroadBudgetApprove: x.NoAbroadBudgetApprove + ? Extension.ToThaiNumber(x.NoAbroadBudgetApprove.toLocaleString()) + : "-", + AbroadCourseCount: x.AbroadCourseCount + ? Extension.ToThaiNumber(x.AbroadCourseCount.toLocaleString()) + : "-", + AbroadProfileCount: x.AbroadProfileCount + ? Extension.ToThaiNumber(x.AbroadProfileCount.toLocaleString()) + : "-", + AbroadBudgetApprove: x.AbroadBudgetApprove + ? Extension.ToThaiNumber(x.AbroadBudgetApprove.toLocaleString()) + : "-", + ExecutiveCourseCount: x.ExecutiveCourseCount + ? Extension.ToThaiNumber(x.ExecutiveCourseCount.toLocaleString()) + : "-", + ExecutiveProfileCount: x.ExecutiveProfileCount + ? Extension.ToThaiNumber(x.ExecutiveProfileCount.toLocaleString()) + : "-", + ExecutiveBudgetApprove: x.ExecutiveBudgetApprove + ? Extension.ToThaiNumber(x.ExecutiveBudgetApprove.toLocaleString()) + : "-", + TotalCourseCount: x.TotalCourseCount + ? Extension.ToThaiNumber(x.TotalCourseCount.toLocaleString()) + : "-", + TotalProfileCount: x.TotalProfileCount + ? Extension.ToThaiNumber(x.TotalProfileCount.toLocaleString()) + : "-", + TotalBudgetApprove: x.TotalBudgetApprove + ? Extension.ToThaiNumber(x.TotalBudgetApprove.toLocaleString()) + : "-", + })) + : [ + { + no: "-", + root: "-", + Bachelor: "-", + BachelorHight: "-", + Master: "-", + Doctor: "-", + DomesticeCourseCount: "-", + DomesticeProfileCount: "-", + DomesticeBudgetApprove: "-", + NoAbroadCourseCount: "-", + NoAbroadDProfileCount: "-", + NoAbroadBudgetApprove: "-", + AbroadCourseCount: "-", + AbroadProfileCount: "-", + AbroadBudgetApprove: "-", + ExecutiveCourseCount: "-", + ExecutiveProfileCount: "-", + ExecutiveBudgetApprove: "-", + TotalCourseCount: "-", + TotalProfileCount: "-", + TotalBudgetApprove: "-", + }, + ], + totalRoot: Array.isArray(_group) + ? Extension.ToThaiNumber(_group.length.toLocaleString()) + : "-", }, }); } @@ -805,46 +952,46 @@ 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") - .leftJoinAndSelect("developmentScholarship.posLevelguarantor", "posLevelguarantor") - .leftJoinAndSelect("developmentScholarship.posTypeguarantor", "posTypeguarantor") - // .where("developmentScholarship.rootId = :rootId", { rootId: rootId }) - .andWhere( - year !== 0 && year != null && year != undefined - ? "developmentScholarship.scholarshipYear = :scholarshipYear" - : "1=1", - { scholarshipYear: year }, - ) - .andWhere( - "developmentScholarship.scholarshipType = :scholarshipType", { scholarshipType: "RESEARCH" }, - ) - .orderBy("developmentScholarship.scholarshipYear", "DESC") - .addOrderBy("developmentScholarship.createdAt", "DESC") - .getManyAndCount(); + .createQueryBuilder("developmentScholarship") + .leftJoinAndSelect("developmentScholarship.posLevel", "posLevel") + .leftJoinAndSelect("developmentScholarship.posType", "posType") + .leftJoinAndSelect("developmentScholarship.posLevelguarantor", "posLevelguarantor") + .leftJoinAndSelect("developmentScholarship.posTypeguarantor", "posTypeguarantor") + // .where("developmentScholarship.rootId = :rootId", { rootId: rootId }) + .andWhere( + year !== 0 && year != null && year != undefined + ? "developmentScholarship.scholarshipYear = :scholarshipYear" + : "1=1", + { scholarshipYear: year }, + ) + .andWhere("developmentScholarship.scholarshipType = :scholarshipType", { + scholarshipType: "RESEARCH", + }) + .orderBy("developmentScholarship.scholarshipYear", "DESC") + .addOrderBy("developmentScholarship.createdAt", "DESC") + .getManyAndCount(); - const totalBudgetApprove = development.reduce((sum, item) => sum + Number(item.budgetApprove), 0); + const totalBudgetApprove = development.reduce( + (sum, item) => sum + Number(item.budgetApprove), + 0, + ); const formattedData = development.map((item, index) => { const rawPath = [ item.course == "-" ? null : item.course, - item.field == "-" ? null : item.course + item.field == "-" ? null : item.course, ]; - + const courseAndfield = rawPath .filter((path) => path !== undefined && path !== null) .join("/"); - + const date = [ Extension.ToThaiNumber(Extension.ToThaiShortDate(item.startDate)), - Extension.ToThaiNumber(Extension.ToThaiShortDate(item.endDate)) + Extension.ToThaiNumber(Extension.ToThaiShortDate(item.endDate)), ]; - const dateDulation = date - .filter((path) => path !== undefined && path !== null) - .join(" - "); + const dateDulation = date.filter((path) => path !== undefined && path !== null).join(" - "); return { no: Extension.ToThaiNumber((index + 1).toString()), @@ -857,16 +1004,17 @@ export class ReportController extends Controller { place: item.studyPlace ? item.studyPlace : "-", country: item.studyCountry ? item.studyCountry : "-", startAndendDate: dateDulation, - budgetApprove: item.budgetApprove ? Extension.ToThaiNumber(item.budgetApprove.toLocaleString()) : "-", + budgetApprove: item.budgetApprove + ? Extension.ToThaiNumber(item.budgetApprove.toLocaleString()) + : "-", }; }); - return new HttpSuccess({ template: "reportFund5", reportName: "reportFund5", data: { - year: year?Extension.ToThaiNumber((year+543).toString()):"", + year: year ? Extension.ToThaiNumber((year + 543).toString()) : "", data: formattedData, total: Extension.ToThaiNumber(total.toLocaleString()), totalBudgetApprove: Extension.ToThaiNumber(totalBudgetApprove.toLocaleString()), @@ -880,14 +1028,8 @@ export class ReportController extends Controller { * */ @Get("report6") - async report6( - @Query("year") year?: number, - ) { - const degree = [ - "ปริญญาเอก", - "ปริญญาโท", - "ปริญญาตรี", - ]; + async report6(@Query("year") year?: number) { + const degree = ["ปริญญาเอก", "ปริญญาโท", "ปริญญาตรี"]; const development = await this.viewDevScholarship.find({ where: { @@ -895,10 +1037,10 @@ export class ReportController extends Controller { degreeLevel: In(degree), }, }); - - const groupedData = development.reduce((acc:any, item:any) => { + + const groupedData = development.reduce((acc: any, item: any) => { const { rootId, root, degreeLevel, scholarshipType, budgetApprove } = item; - + if (!acc[rootId]) { acc[rootId] = { root, @@ -920,67 +1062,95 @@ export class ReportController extends Controller { }, }; } - + if (degreeLevel === "ปริญญาตรี") { - acc[rootId].degreeLevel1.numberOfRecords += Number(item.numberOfRecords); - acc[rootId].degreeLevel1.numberOfScholarshipTypes += Number(item.numberOfScholarshipTypes); - acc[rootId].degreeLevel1.totalBudgetApprove += Number(item.totalBudgetApprove); + acc[rootId].degreeLevel1.numberOfRecords += Number(item.numberOfRecords); + acc[rootId].degreeLevel1.numberOfScholarshipTypes += Number(item.numberOfScholarshipTypes); + acc[rootId].degreeLevel1.totalBudgetApprove += Number(item.totalBudgetApprove); } else if (degreeLevel === "ปริญญาโท") { - acc[rootId].degreeLevel2.numberOfRecords += Number(item.numberOfRecords); - acc[rootId].degreeLevel2.numberOfScholarshipTypes += Number(item.numberOfScholarshipTypes); - acc[rootId].degreeLevel2.totalBudgetApprove += Number(item.totalBudgetApprove); + acc[rootId].degreeLevel2.numberOfRecords += Number(item.numberOfRecords); + acc[rootId].degreeLevel2.numberOfScholarshipTypes += Number(item.numberOfScholarshipTypes); + acc[rootId].degreeLevel2.totalBudgetApprove += Number(item.totalBudgetApprove); } else if (degreeLevel === "ปริญญาเอก") { - acc[rootId].degreeLevel3.numberOfRecords += Number(item.numberOfRecords); - acc[rootId].degreeLevel3.numberOfScholarshipTypes += Number(item.numberOfScholarshipTypes); - acc[rootId].degreeLevel3.totalBudgetApprove += Number(item.totalBudgetApprove); + acc[rootId].degreeLevel3.numberOfRecords += Number(item.numberOfRecords); + acc[rootId].degreeLevel3.numberOfScholarshipTypes += Number(item.numberOfScholarshipTypes); + acc[rootId].degreeLevel3.totalBudgetApprove += Number(item.totalBudgetApprove); } - + return acc; }, {}); const formattedData = Object.values(groupedData).map((item: any, index: any) => { - const sumnumberOfRecords = item.degreeLevel1.numberOfRecords + item.degreeLevel2.numberOfRecords + item.degreeLevel3.numberOfRecords; - const sumnumberOfScholarshipTypes = item.degreeLevel1.numberOfScholarshipTypes + item.degreeLevel2.numberOfScholarshipTypes + item.degreeLevel3.numberOfScholarshipTypes; - const sumtotalBudgetApprove = item.degreeLevel1.totalBudgetApprove + item.degreeLevel2.totalBudgetApprove + item.degreeLevel3.totalBudgetApprove; - + const sumnumberOfRecords = + item.degreeLevel1.numberOfRecords + + item.degreeLevel2.numberOfRecords + + item.degreeLevel3.numberOfRecords; + const sumnumberOfScholarshipTypes = + item.degreeLevel1.numberOfScholarshipTypes + + item.degreeLevel2.numberOfScholarshipTypes + + item.degreeLevel3.numberOfScholarshipTypes; + const sumtotalBudgetApprove = + item.degreeLevel1.totalBudgetApprove + + item.degreeLevel2.totalBudgetApprove + + item.degreeLevel3.totalBudgetApprove; + return { no: index ? Extension.ToThaiNumber((index + 1).toString()) : "๑", rootId: item.rootId ? item.rootId : "-", root: item.root ? item.root : "-", degreeLevel1: "ปริญญาตรี", - numberOfRecords1: item.degreeLevel1.numberOfRecords ? Extension.ToThaiNumber(item.degreeLevel1.numberOfRecords.toString()) : "-", - numberOfScholarshipTypes1: item.degreeLevel1.numberOfScholarshipTypes ? Extension.ToThaiNumber(item.degreeLevel1.numberOfScholarshipTypes.toString()) : "-", - totalBudgetApprove1: item.degreeLevel1.totalBudgetApprove ? Extension.ToThaiNumber(item.degreeLevel1.totalBudgetApprove.toLocaleString()) : "-", - + numberOfRecords1: item.degreeLevel1.numberOfRecords + ? Extension.ToThaiNumber(item.degreeLevel1.numberOfRecords.toString()) + : "-", + numberOfScholarshipTypes1: item.degreeLevel1.numberOfScholarshipTypes + ? Extension.ToThaiNumber(item.degreeLevel1.numberOfScholarshipTypes.toString()) + : "-", + totalBudgetApprove1: item.degreeLevel1.totalBudgetApprove + ? Extension.ToThaiNumber(item.degreeLevel1.totalBudgetApprove.toLocaleString()) + : "-", + degreeLevel2: "ปริญญาโท", - numberOfRecords2: item.degreeLevel2.numberOfRecords ? Extension.ToThaiNumber(item.degreeLevel2.numberOfRecords.toString()) : "-", - numberOfScholarshipTypes2: item.degreeLevel2.numberOfScholarshipTypes ? Extension.ToThaiNumber(item.degreeLevel2.numberOfScholarshipTypes.toString()) : "-", - totalBudgetApprove2: item.degreeLevel2.totalBudgetApprove ? Extension.ToThaiNumber(item.degreeLevel2.totalBudgetApprove.toLocaleString()) : "-", - + numberOfRecords2: item.degreeLevel2.numberOfRecords + ? Extension.ToThaiNumber(item.degreeLevel2.numberOfRecords.toString()) + : "-", + numberOfScholarshipTypes2: item.degreeLevel2.numberOfScholarshipTypes + ? Extension.ToThaiNumber(item.degreeLevel2.numberOfScholarshipTypes.toString()) + : "-", + totalBudgetApprove2: item.degreeLevel2.totalBudgetApprove + ? Extension.ToThaiNumber(item.degreeLevel2.totalBudgetApprove.toLocaleString()) + : "-", + degreeLevel3: "ปริญญาเอก", - numberOfRecords3: item.degreeLevel3.numberOfRecords ? Extension.ToThaiNumber(item.degreeLevel3.numberOfRecords.toString()) : "-", - numberOfScholarshipTypes3: item.degreeLevel3.numberOfScholarshipTypes ? Extension.ToThaiNumber(item.degreeLevel3.numberOfScholarshipTypes.toString()) : "-", - totalBudgetApprove3: item.degreeLevel3.totalBudgetApprove ? Extension.ToThaiNumber(item.degreeLevel3.totalBudgetApprove.toLocaleString()) : "-", - + numberOfRecords3: item.degreeLevel3.numberOfRecords + ? Extension.ToThaiNumber(item.degreeLevel3.numberOfRecords.toString()) + : "-", + numberOfScholarshipTypes3: item.degreeLevel3.numberOfScholarshipTypes + ? Extension.ToThaiNumber(item.degreeLevel3.numberOfScholarshipTypes.toString()) + : "-", + totalBudgetApprove3: item.degreeLevel3.totalBudgetApprove + ? Extension.ToThaiNumber(item.degreeLevel3.totalBudgetApprove.toLocaleString()) + : "-", + totalNumberOfRecords: Extension.ToThaiNumber(sumnumberOfRecords.toString()), - totalNumberOfScholarshipTypes: Extension.ToThaiNumber(sumnumberOfScholarshipTypes.toString()), - totalTotalBudgetApprove: Extension.ToThaiNumber(sumtotalBudgetApprove.toLocaleString()) + totalNumberOfScholarshipTypes: Extension.ToThaiNumber( + sumnumberOfScholarshipTypes.toString(), + ), + totalTotalBudgetApprove: Extension.ToThaiNumber(sumtotalBudgetApprove.toLocaleString()), }; }); - const uniqueRoots = new Set(formattedData.map(item => item.root)); + const uniqueRoots = new Set(formattedData.map((item) => item.root)); const numberOfORG = uniqueRoots.size; - + return new HttpSuccess({ template: "reportFund6", reportName: "reportFund6", data: { - year: year?Extension.ToThaiNumber((year+543).toString()):"", + year: year ? Extension.ToThaiNumber((year + 543).toString()) : "", data: formattedData, - coutOrg: numberOfORG?Extension.ToThaiNumber(numberOfORG.toString())+" หน่วยงาน":"๐ หน่วยงาน" + coutOrg: numberOfORG + ? Extension.ToThaiNumber(numberOfORG.toString()) + " หน่วยงาน" + : "๐ หน่วยงาน", }, }); } - } - - \ No newline at end of file