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")
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;
}