report tamplate

This commit is contained in:
kittapath 2025-01-20 14:51:17 +07:00
parent 9c8fb66601
commit f4140f45f8

View file

@ -25,7 +25,6 @@ export class ReportController extends Controller {
*/ */
@Get("main") @Get("main")
async GetReportDevelopemtMain(/*@Path() type: string*/) { async GetReportDevelopemtMain(/*@Path() type: string*/) {
// const _type = type.trim().toUpperCase(); // const _type = type.trim().toUpperCase();
const formattedData = { const formattedData = {
org: "_type", org: "_type",
@ -64,36 +63,51 @@ export class ReportController extends Controller {
.groupBy("development.id") .groupBy("development.id")
.getRawMany(); .getRawMany();
const mappedDataDev = dataDevelopment.map((item, index) => { const mappedDataDev = dataDevelopment.map((item, index) => {
let budget = null; let budget = null;
if (item.budget == "REGULATIONBUDGET") { if (item.budget == "REGULATIONBUDGET") {
budget = "งบตามข้อบัญญัติ"; budget = "งบตามข้อบัญญัติ";
}else if (item.budget == "OTHERBUDGET") { } else if (item.budget == "OTHERBUDGET") {
budget = "เงินนอกงบประมาณ"; budget = "เงินนอกงบประมาณ";
}else if (item.budget == "BANGKOKBUDGET") { } else if (item.budget == "BANGKOKBUDGET") {
budget = "ไม่ใช้งบประมาณ"; budget = "ไม่ใช้งบประมาณ";
} }
return { return {
strategy: item.strategy1, strategy: item.strategy1,
projectName: item.projectName, projectName: item.projectName,
totalDate: item.totalDate != null && item.totalDate != "" ? Extension.ToThaiNumber(item.totalDate.toString()): "-", totalDate:
goalParticipants: item.goalParticipants != null && item.goalParticipants != "" ? Extension.ToThaiNumber(item.goalParticipants.toString()): "-", item.totalDate != null && item.totalDate != ""
actualParticipants: item.actualParticipants != null && item.actualParticipants != "" ? Extension.ToThaiNumber(item.actualParticipants.toString()): "-", ? Extension.ToThaiNumber(item.totalDate.toString())
budget: budget, : "-",
acceptBudget: item.acceptBudget != null && item.acceptBudget != "" ? Extension.ToThaiNumber(item.acceptBudget.toString()): "-", goalParticipants:
receiveBudget: item.receiveBudget != null && item.receiveBudget != "" ? Extension.ToThaiNumber(item.receiveBudget.toString()): "-", item.goalParticipants != null && item.goalParticipants != ""
obstacle: item.obstacle, ? Extension.ToThaiNumber(item.goalParticipants.toString())
root: item.root, : "-",
output: "-", actualParticipants:
outcome: "-", item.actualParticipants != null && item.actualParticipants != ""
position: "-", ? Extension.ToThaiNumber(item.actualParticipants.toString())
indicators: "-", : "-",
devResult: "-", budget: budget,
positionActual: "-", 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") .createQueryBuilder("development")
.leftJoinAndSelect("development.strategyChild1Actual", "strategy1") .leftJoinAndSelect("development.strategyChild1Actual", "strategy1")
.where("development.status = :status", { status: "FINISH" }) .where("development.status = :status", { status: "FINISH" })
@ -106,75 +120,85 @@ export class ReportController extends Controller {
"SUM(development.receive) AS receiveBudget", "SUM(development.receive) AS receiveBudget",
"development.root AS root", "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") .orderBy("strategy1.createdAt", "ASC")
.getRawMany(); .getRawMany();
interface Strategy { interface Strategy {
strategyId: string; strategyId: string;
strategyName: string; strategyName: string;
devCount: string; devCount: string;
receiveBudget: string; receiveBudget: string;
sumDev: string; sumDev: string;
sumTraget: string; sumTraget: string;
sumBudget: string; sumBudget: string;
sumRowDev: string, sumRowDev: string;
sumRowTarget: string, sumRowTarget: string;
sumRowBudget: string, sumRowBudget: string;
} }
interface GroupedData { interface GroupedData {
rootId: string; rootId: string;
root: string; root: string;
strategy: Strategy[]; strategy: Strategy[];
} }
// สมมติว่า 'resultAllStrategy' ถูกกำหนดไว้แล้วและมีข้อมูลที่คุณให้มา // สมมติว่า 'resultAllStrategy' ถูกกำหนดไว้แล้วและมีข้อมูลที่คุณให้มา
const groupedData: GroupedData[] = resultAllStrategy.reduce((acc: GroupedData[], item) => { const groupedData: GroupedData[] = resultAllStrategy.reduce((acc: GroupedData[], item) => {
const existingRoot = acc.find(entry => entry.rootId === item.rootId); const existingRoot = acc.find((entry) => entry.rootId === item.rootId);
if (existingRoot) { if (existingRoot) {
existingRoot.strategy.push({ existingRoot.strategy.push({
strategyId: item.strategyId, strategyId: item.strategyId,
strategyName: item.strategyName, strategyName: item.strategyName,
devCount: item.devCount?Extension.ToThaiNumber(item.devCount.toString()):"0", devCount: item.devCount ? Extension.ToThaiNumber(item.devCount.toString()) : "0",
receiveBudget: item.receiveBudget?Extension.ToThaiNumber(item.receiveBudget.toString()):"0", receiveBudget: item.receiveBudget
sumDev: "", ? Extension.ToThaiNumber(item.receiveBudget.toString())
sumTraget: "", : "0",
sumBudget: "", sumDev: "",
sumRowDev:"", sumTraget: "",
sumRowTarget:"", sumBudget: "",
sumRowBudget:"", sumRowDev: "",
}); sumRowTarget: "",
} else { sumRowBudget: "",
acc.push({ });
rootId: item.rootId, } else {
root: item.root, acc.push({
strategy: [{ rootId: item.rootId,
root: item.root,
strategy: [
{
strategyId: item.strategyId, strategyId: item.strategyId,
strategyName: item.strategyName, strategyName: item.strategyName,
devCount: item.devCount?Extension.ToThaiNumber(item.devCount.toString()):"0", devCount: item.devCount ? Extension.ToThaiNumber(item.devCount.toString()) : "0",
receiveBudget: item.receiveBudget?Extension.ToThaiNumber(item.receiveBudget.toString()):"0", receiveBudget: item.receiveBudget
? Extension.ToThaiNumber(item.receiveBudget.toString())
: "0",
sumDev: "", sumDev: "",
sumTraget: "", sumTraget: "",
sumBudget: "", sumBudget: "",
sumRowDev:"", sumRowDev: "",
sumRowTarget:"", sumRowTarget: "",
sumRowBudget:"", sumRowBudget: "",
}] },
}); ],
} });
}
return acc; return acc;
}, []); }, []);
// ตอนนี้คุณสามารถ map ข้อมูลใน 'groupedData' เพื่อสร้าง 'formattedData' ได้แล้ว // ตอนนี้คุณสามารถ map ข้อมูลใน 'groupedData' เพื่อสร้าง 'formattedData' ได้แล้ว
const reformattedData = groupedData.map((group,x) => { const reformattedData = groupedData.map((group, x) => {
const formattedGroup = { const formattedGroup = {
rowNo: x?Extension.ToThaiNumber((x + 1).toString()):Extension.ToThaiNumber("๑"), rowNo: x ? Extension.ToThaiNumber((x + 1).toString()) : Extension.ToThaiNumber("๑"),
rootId: group.rootId, rootId: group.rootId,
root: group.root, root: group.root,
strategy: Array(4).fill(null).map((_, index) => { strategy: Array(4)
.fill(null)
.map((_, index) => {
const strategy = group.strategy[index] || { const strategy = group.strategy[index] || {
strategyName: "0", strategyName: "0",
devCount: "0", devCount: "0",
@ -183,9 +207,9 @@ export class ReportController extends Controller {
sumDev: "0", sumDev: "0",
sumTraget: "0", sumTraget: "0",
sumBudget: "0", sumBudget: "0",
sumRowDev:"0", sumRowDev: "0",
sumRowTarget:"0", sumRowTarget: "0",
sumRowBudget:"0", sumRowBudget: "0",
}; };
return { return {
@ -201,45 +225,44 @@ export class ReportController extends Controller {
[`sumRowBudget`]: strategy.sumRowBudget ?? "0", [`sumRowBudget`]: strategy.sumRowBudget ?? "0",
}; };
}), }),
}; };
return formattedGroup; return formattedGroup;
}); });
// const fmdata = reformattedData.map(rfmData => {
// const fmdata = reformattedData.map(rfmData => { // return {
// return { // rowNo: rfmData.rowNo,
// rowNo: rfmData.rowNo, // rootId: rfmData.rootId,
// rootId: rfmData.rootId, // root: rfmData.root,
// root: rfmData.root, // strategy: [
// strategy: [ // {
// { // strategyName1: rfmData.strategy[0].strategyName1,
// strategyName1: rfmData.strategy[0].strategyName1, // devCount1: rfmData.strategy[0].devCount1,
// devCount1: rfmData.strategy[0].devCount1, // target1: rfmData.strategy[0].target1,
// target1: rfmData.strategy[0].target1, // receiveBudget1: rfmData.strategy[0].receiveBudget1
// receiveBudget1: rfmData.strategy[0].receiveBudget1 // },
// }, // {
// { // strategyName2: rfmData.strategy[1].strategyName2,
// strategyName2: rfmData.strategy[1].strategyName2, // devCount2: rfmData.strategy[1].devCount2,
// devCount2: rfmData.strategy[1].devCount2, // target2: rfmData.strategy[1].target2,
// target2: rfmData.strategy[1].target2, // receiveBudget2: rfmData.strategy[1].receiveBudget2
// receiveBudget2: rfmData.strategy[1].receiveBudget2 // },
// }, // {
// { // strategyName3: rfmData.strategy[2].strategyName3,
// strategyName3: rfmData.strategy[2].strategyName3, // devCount3: rfmData.strategy[2].devCount3,
// devCount3: rfmData.strategy[2].devCount3, // target3: rfmData.strategy[2].target3,
// target3: rfmData.strategy[2].target3, // receiveBudget3: rfmData.strategy[2].receiveBudget3
// receiveBudget3: rfmData.strategy[2].receiveBudget3 // },
// }, // {
// { // strategyName4: rfmData.strategy[3].strategyName4,
// strategyName4: rfmData.strategy[3].strategyName4, // devCount4: rfmData.strategy[3].devCount4,
// devCount4: rfmData.strategy[3].devCount4, // target4: rfmData.strategy[3].target4,
// target4: rfmData.strategy[3].target4, // receiveBudget4: rfmData.strategy[3].receiveBudget4
// receiveBudget4: rfmData.strategy[3].receiveBudget4 // }
// } // ],
// ], // };
// }; // });
// });
return new HttpSuccess({ return new HttpSuccess({
template: "development", template: "development",
@ -432,6 +455,10 @@ export class ReportController extends Controller {
getDevelopment.scholarshipType = getDevelopment.scholarshipType =
"ฝึกอบรมในประเทศที่ส่งไปพัฒนากับหน่วยวงานภายนอก (หลักสูตรประเภทนักบริหาร)"; "ฝึกอบรมในประเทศที่ส่งไปพัฒนากับหน่วยวงานภายนอก (หลักสูตรประเภทนักบริหาร)";
break; break;
case "RESEARCH":
getDevelopment.scholarshipType =
"ศึกษา ฝึกอบรม ประชุม ดูงาน และปฏิบัติการวิจัย ณ ต่างประเทศ";
break;
default: default:
break; break;
} }