From f4140f45f83ba9ae57f36d30d8ad0fc898a2c2a2 Mon Sep 17 00:00:00 2001 From: kittapath Date: Mon, 20 Jan 2025 14:51:17 +0700 Subject: [PATCH] report tamplate --- src/controllers/ReportController.ts | 295 +++++++++++++++------------- 1 file changed, 161 insertions(+), 134 deletions(-) diff --git a/src/controllers/ReportController.ts b/src/controllers/ReportController.ts index 95e852c..ecf51be 100644 --- a/src/controllers/ReportController.ts +++ b/src/controllers/ReportController.ts @@ -25,7 +25,6 @@ export class ReportController extends Controller { */ @Get("main") async GetReportDevelopemtMain(/*@Path() type: string*/) { - // const _type = type.trim().toUpperCase(); const formattedData = { org: "_type", @@ -52,9 +51,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", @@ -64,117 +63,142 @@ 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.toString()): "-", - goalParticipants: item.goalParticipants != null && item.goalParticipants != "" ? Extension.ToThaiNumber(item.goalParticipants.toString()): "-", - actualParticipants: item.actualParticipants != null && item.actualParticipants != "" ? Extension.ToThaiNumber(item.actualParticipants.toString()): "-", - budget: budget, - acceptBudget: item.acceptBudget != null && item.acceptBudget != "" ? Extension.ToThaiNumber(item.acceptBudget.toString()): "-", - receiveBudget: item.receiveBudget != null && item.receiveBudget != "" ? Extension.ToThaiNumber(item.receiveBudget.toString()): "-", - 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.toString()) + : "-", + goalParticipants: + item.goalParticipants != null && item.goalParticipants != "" + ? Extension.ToThaiNumber(item.goalParticipants.toString()) + : "-", + actualParticipants: + item.actualParticipants != null && item.actualParticipants != "" + ? Extension.ToThaiNumber(item.actualParticipants.toString()) + : "-", + budget: budget, + acceptBudget: + item.acceptBudget != null && item.acceptBudget != "" + ? Extension.ToThaiNumber(item.acceptBudget.toString()) + : "-", + receiveBudget: + item.receiveBudget != null && item.receiveBudget != "" + ? Extension.ToThaiNumber(item.receiveBudget.toString()) + : "-", + 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[]; - } - - // สมมติว่า 'resultAllStrategy' ถูกกำหนดไว้แล้วและมีข้อมูลที่คุณให้มา - 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?Extension.ToThaiNumber(item.devCount.toString()):"0", - receiveBudget: item.receiveBudget?Extension.ToThaiNumber(item.receiveBudget.toString()):"0", - 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[]; + } + + // สมมติว่า 'resultAllStrategy' ถูกกำหนดไว้แล้วและมีข้อมูลที่คุณให้มา + 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 ? Extension.ToThaiNumber(item.devCount.toString()) : "0", + receiveBudget: item.receiveBudget + ? Extension.ToThaiNumber(item.receiveBudget.toString()) + : "0", + 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?Extension.ToThaiNumber(item.devCount.toString()):"0", - receiveBudget: item.receiveBudget?Extension.ToThaiNumber(item.receiveBudget.toString()):"0", + devCount: item.devCount ? Extension.ToThaiNumber(item.devCount.toString()) : "0", + receiveBudget: item.receiveBudget + ? Extension.ToThaiNumber(item.receiveBudget.toString()) + : "0", sumDev: "", sumTraget: "", sumBudget: "", - sumRowDev:"", - sumRowTarget:"", - sumRowBudget:"", - }] - }); - } + sumRowDev: "", + sumRowTarget: "", + sumRowBudget: "", + }, + ], + }); + } - return acc; - }, []); + return acc; + }, []); - // ตอนนี้คุณสามารถ map ข้อมูลใน 'groupedData' เพื่อสร้าง 'formattedData' ได้แล้ว - const reformattedData = groupedData.map((group,x) => { - const formattedGroup = { - rowNo: x?Extension.ToThaiNumber((x + 1).toString()):Extension.ToThaiNumber("๑"), - rootId: group.rootId, - root: group.root, - strategy: Array(4).fill(null).map((_, index) => { + // ตอนนี้คุณสามารถ map ข้อมูลใน 'groupedData' เพื่อสร้าง 'formattedData' ได้แล้ว + const reformattedData = groupedData.map((group, x) => { + const formattedGroup = { + rowNo: x ? Extension.ToThaiNumber((x + 1).toString()) : Extension.ToThaiNumber("๑"), + rootId: group.rootId, + root: group.root, + strategy: Array(4) + .fill(null) + .map((_, index) => { const strategy = group.strategy[index] || { strategyName: "0", devCount: "0", @@ -183,9 +207,9 @@ export class ReportController extends Controller { sumDev: "0", sumTraget: "0", sumBudget: "0", - sumRowDev:"0", - sumRowTarget:"0", - sumRowBudget:"0", + sumRowDev: "0", + sumRowTarget: "0", + sumRowBudget: "0", }; return { @@ -201,46 +225,45 @@ export class ReportController extends Controller { [`sumRowBudget`]: strategy.sumRowBudget ?? "0", }; }), - }; + }; - return formattedGroup; - }); + return formattedGroup; + }); + + // const fmdata = reformattedData.map(rfmData => { + // return { + // rowNo: rfmData.rowNo, + // rootId: rfmData.rootId, + // root: rfmData.root, + // strategy: [ + // { + // strategyName1: rfmData.strategy[0].strategyName1, + // devCount1: rfmData.strategy[0].devCount1, + // target1: rfmData.strategy[0].target1, + // receiveBudget1: rfmData.strategy[0].receiveBudget1 + // }, + // { + // strategyName2: rfmData.strategy[1].strategyName2, + // devCount2: rfmData.strategy[1].devCount2, + // target2: rfmData.strategy[1].target2, + // receiveBudget2: rfmData.strategy[1].receiveBudget2 + // }, + // { + // strategyName3: rfmData.strategy[2].strategyName3, + // devCount3: rfmData.strategy[2].devCount3, + // target3: rfmData.strategy[2].target3, + // receiveBudget3: rfmData.strategy[2].receiveBudget3 + // }, + // { + // strategyName4: rfmData.strategy[3].strategyName4, + // devCount4: rfmData.strategy[3].devCount4, + // target4: rfmData.strategy[3].target4, + // receiveBudget4: rfmData.strategy[3].receiveBudget4 + // } + // ], + // }; + // }); - - // const fmdata = reformattedData.map(rfmData => { - // return { - // rowNo: rfmData.rowNo, - // rootId: rfmData.rootId, - // root: rfmData.root, - // strategy: [ - // { - // strategyName1: rfmData.strategy[0].strategyName1, - // devCount1: rfmData.strategy[0].devCount1, - // target1: rfmData.strategy[0].target1, - // receiveBudget1: rfmData.strategy[0].receiveBudget1 - // }, - // { - // strategyName2: rfmData.strategy[1].strategyName2, - // devCount2: rfmData.strategy[1].devCount2, - // target2: rfmData.strategy[1].target2, - // receiveBudget2: rfmData.strategy[1].receiveBudget2 - // }, - // { - // strategyName3: rfmData.strategy[2].strategyName3, - // devCount3: rfmData.strategy[2].devCount3, - // target3: rfmData.strategy[2].target3, - // receiveBudget3: rfmData.strategy[2].receiveBudget3 - // }, - // { - // strategyName4: rfmData.strategy[3].strategyName4, - // devCount4: rfmData.strategy[3].devCount4, - // target4: rfmData.strategy[3].target4, - // receiveBudget4: rfmData.strategy[3].receiveBudget4 - // } - // ], - // }; - // }); - return new HttpSuccess({ template: "development", reportName: "development", @@ -432,6 +455,10 @@ export class ReportController extends Controller { getDevelopment.scholarshipType = "ฝึกอบรมในประเทศที่ส่งไปพัฒนากับหน่วยวงานภายนอก (หลักสูตรประเภทนักบริหาร)"; break; + case "RESEARCH": + getDevelopment.scholarshipType = + "ศึกษา ฝึกอบรม ประชุม ดูงาน และปฏิบัติการวิจัย ณ ต่างประเทศ"; + break; default: break; }