edit report if no value

This commit is contained in:
kittapath 2025-02-13 21:52:49 +07:00
parent 724a41a6a0
commit 00d0f1f0fb

View file

@ -26,11 +26,7 @@ export class ReportController extends Controller {
* @param {string} type type report * @param {string} type type report
*/ */
@Get("main") @Get("main")
async GetReportDevelopemtMain( async GetReportDevelopemtMain(@Query("year") year?: number, @Query("rootId") rootId?: string) {
@Query("year") year?: number,
@Query("rootId") rootId?: string,
) {
// const _type = type.trim().toUpperCase(); // const _type = type.trim().toUpperCase();
const formattedData = { const formattedData = {
org: "_type", org: "_type",
@ -73,20 +69,35 @@ export class ReportController extends Controller {
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.toLocaleString()): "-", totalDate:
goalParticipants: item.goalParticipants != null && item.goalParticipants != "" ? Extension.ToThaiNumber(item.goalParticipants.toLocaleString()): "-", item.totalDate != null && item.totalDate != ""
actualParticipants: item.actualParticipants != null && item.actualParticipants != "" ? Extension.ToThaiNumber(item.actualParticipants.toLocaleString()): "-", ? 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, budget: budget,
acceptBudget: item.acceptBudget != null && item.acceptBudget != "" ? Extension.ToThaiNumber(item.acceptBudget.toLocaleString()): "-", acceptBudget:
receiveBudget: item.receiveBudget != null && item.receiveBudget != "" ? Extension.ToThaiNumber(item.receiveBudget.toLocaleString()): "-", item.acceptBudget != null && item.acceptBudget != ""
? Extension.ToThaiNumber(item.acceptBudget.toLocaleString())
: "-",
receiveBudget:
item.receiveBudget != null && item.receiveBudget != ""
? Extension.ToThaiNumber(item.receiveBudget.toLocaleString())
: "-",
obstacle: item.obstacle, obstacle: item.obstacle,
root: item.root, root: item.root,
output: "-", output: "-",
@ -111,7 +122,9 @@ 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();
@ -123,9 +136,9 @@ export class ReportController extends Controller {
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 {
@ -135,37 +148,39 @@ export class ReportController extends Controller {
} }
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?item.devCount:"-", devCount: item.devCount ? item.devCount : "-",
receiveBudget: item.receiveBudget?item.receiveBudget:"-", receiveBudget: item.receiveBudget ? item.receiveBudget : "-",
sumDev: "", sumDev: "",
sumTraget: "", sumTraget: "",
sumBudget: "", sumBudget: "",
sumRowDev:"", sumRowDev: "",
sumRowTarget:"", sumRowTarget: "",
sumRowBudget:"", sumRowBudget: "",
}); });
} else { } else {
acc.push({ acc.push({
rootId: item.rootId, rootId: item.rootId,
root: item.root, root: item.root,
strategy: [{ strategy: [
{
strategyId: item.strategyId, strategyId: item.strategyId,
strategyName: item.strategyName, strategyName: item.strategyName,
devCount: item.devCount?item.devCount:"-", devCount: item.devCount ? item.devCount : "-",
receiveBudget: item.receiveBudget?item.receiveBudget:"-", receiveBudget: item.receiveBudget ? item.receiveBudget : "-",
sumDev: "", sumDev: "",
sumTraget: "", sumTraget: "",
sumBudget: "", sumBudget: "",
sumRowDev:"", sumRowDev: "",
sumRowTarget:"", sumRowTarget: "",
sumRowBudget:"", sumRowBudget: "",
}] },
],
}); });
} }
@ -183,79 +198,153 @@ export class ReportController extends Controller {
let sumDev4 = 0; let sumDev4 = 0;
let sumTraget4 = 0; let sumTraget4 = 0;
let sumBudget4 = 0; let sumBudget4 = 0;
const reformattedData = groupedData.map((group,x) => { const reformattedData = groupedData.map((group, x) => {
const sumRowDev = (group.strategy[0] && group.strategy[0].devCount !== "-" ? Number(group.strategy[0].devCount) : 0) + const sumRowDev =
(group.strategy[1] && group.strategy[1].devCount !== "-" ? Number(group.strategy[1].devCount) : 0) + (group.strategy[0] && group.strategy[0].devCount !== "-"
(group.strategy[2] && group.strategy[2].devCount !== "-" ? Number(group.strategy[2].devCount) : 0); ? Number(group.strategy[0].devCount)
(group.strategy[3] && group.strategy[3].devCount !== "-" ? Number(group.strategy[3].devCount) : 0); : 0) +
const sumRowBudget = (group.strategy[0] && group.strategy[0].receiveBudget !== "-" ? Number(group.strategy[0].receiveBudget) : 0) + (group.strategy[1] && group.strategy[1].devCount !== "-"
(group.strategy[1] && group.strategy[1].receiveBudget !== "-" ? Number(group.strategy[1].receiveBudget) : 0) + ? Number(group.strategy[1].devCount)
(group.strategy[2] && group.strategy[2].receiveBudget !== "-" ? Number(group.strategy[2].receiveBudget) : 0); : 0) +
(group.strategy[3] && group.strategy[3].receiveBudget !== "-" ? Number(group.strategy[3].receiveBudget) : 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) => { sumDev1 = groupedData.reduce((sum, group) => {
const devCount = group.strategy[0] && group.strategy[0].devCount !== "-" ? Number(group.strategy[0].devCount) : 0; const devCount =
group.strategy[0] && group.strategy[0].devCount !== "-"
? Number(group.strategy[0].devCount)
: 0;
return sum + devCount; return sum + devCount;
}, 0); }, 0);
sumBudget1 = groupedData.reduce((sum, group) => { sumBudget1 = groupedData.reduce((sum, group) => {
const devCount = group.strategy[0] && group.strategy[0].receiveBudget !== "-" ? Number(group.strategy[0].receiveBudget) : 0; const devCount =
group.strategy[0] && group.strategy[0].receiveBudget !== "-"
? Number(group.strategy[0].receiveBudget)
: 0;
return sum + devCount; return sum + devCount;
}, 0); }, 0);
sumDev2 = groupedData.reduce((sum, group) => { sumDev2 = groupedData.reduce((sum, group) => {
const devCount = group.strategy[1] && group.strategy[1].devCount !== "-" ? Number(group.strategy[1].devCount) : 0; const devCount =
group.strategy[1] && group.strategy[1].devCount !== "-"
? Number(group.strategy[1].devCount)
: 0;
return sum + devCount; return sum + devCount;
}, 0); }, 0);
sumBudget2 = groupedData.reduce((sum, group) => { sumBudget2 = groupedData.reduce((sum, group) => {
const devCount = group.strategy[1] && group.strategy[1].receiveBudget !== "-" ? Number(group.strategy[1].receiveBudget) : 0; const devCount =
group.strategy[1] && group.strategy[1].receiveBudget !== "-"
? Number(group.strategy[1].receiveBudget)
: 0;
return sum + devCount; return sum + devCount;
}, 0); }, 0);
sumDev3 = groupedData.reduce((sum, group) => { sumDev3 = groupedData.reduce((sum, group) => {
const devCount = group.strategy[2] && group.strategy[2].devCount !== "-" ? Number(group.strategy[2].devCount) : 0; const devCount =
group.strategy[2] && group.strategy[2].devCount !== "-"
? Number(group.strategy[2].devCount)
: 0;
return sum + devCount; return sum + devCount;
}, 0); }, 0);
sumBudget3 = groupedData.reduce((sum, group) => { sumBudget3 = groupedData.reduce((sum, group) => {
const devCount = group.strategy[2] && group.strategy[2].receiveBudget !== "-" ? Number(group.strategy[2].receiveBudget) : 0; const devCount =
group.strategy[2] && group.strategy[2].receiveBudget !== "-"
? Number(group.strategy[2].receiveBudget)
: 0;
return sum + devCount; return sum + devCount;
}, 0); }, 0);
sumDev4 = groupedData.reduce((sum, group) => { sumDev4 = groupedData.reduce((sum, group) => {
const devCount = group.strategy[3] && group.strategy[3].devCount !== "-" ? Number(group.strategy[3].devCount) : 0; const devCount =
group.strategy[3] && group.strategy[3].devCount !== "-"
? Number(group.strategy[3].devCount)
: 0;
return sum + devCount; return sum + devCount;
}, 0); }, 0);
sumBudget4 = groupedData.reduce((sum, group) => { sumBudget4 = groupedData.reduce((sum, group) => {
const devCount = group.strategy[3] && group.strategy[3].receiveBudget !== "-" ? Number(group.strategy[3].receiveBudget) : 0; const devCount =
group.strategy[3] && group.strategy[3].receiveBudget !== "-"
? Number(group.strategy[3].receiveBudget)
: 0;
return sum + devCount; return sum + devCount;
}, 0); }, 0);
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,
strategyName1: group.strategy[0]&&group.strategy[0].strategyName?group.strategy[0].strategyName:"-", strategyName1:
devCount1: group.strategy[0]&&group.strategy[0].devCount?Extension.ToThaiNumber(group.strategy[0].devCount.toLocaleString()):"-", 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: "-", target1: "-",
receiveBudget1: group.strategy[0]&&group.strategy[0].receiveBudget?Extension.ToThaiNumber(group.strategy[0].receiveBudget.toLocaleString()):"-", receiveBudget1:
group.strategy[0] && group.strategy[0].receiveBudget
? Extension.ToThaiNumber(group.strategy[0].receiveBudget.toLocaleString())
: "-",
strategyName2:
strategyName2: group.strategy[1]&&group.strategy[1].strategyName?group.strategy[1].strategyName:"-", group.strategy[1] && group.strategy[1].strategyName
devCount2: group.strategy[1]&&group.strategy[1].devCount?Extension.ToThaiNumber(group.strategy[1].devCount.toLocaleString()):"-", ? group.strategy[1].strategyName
: "-",
devCount2:
group.strategy[1] && group.strategy[1].devCount
? Extension.ToThaiNumber(group.strategy[1].devCount.toLocaleString())
: "-",
target2: "-", target2: "-",
receiveBudget2: group.strategy[1]&&group.strategy[1].receiveBudget?Extension.ToThaiNumber(group.strategy[1].receiveBudget.toLocaleString()):"-", receiveBudget2:
group.strategy[1] && group.strategy[1].receiveBudget
? Extension.ToThaiNumber(group.strategy[1].receiveBudget.toLocaleString())
: "-",
strategyName3:
strategyName3: group.strategy[2]&&group.strategy[2].strategyName?group.strategy[2].strategyName:"-", group.strategy[2] && group.strategy[2].strategyName
devCount3: group.strategy[2]&&group.strategy[2].devCount?Extension.ToThaiNumber(group.strategy[2].devCount.toLocaleString()):"-", ? group.strategy[2].strategyName
: "-",
devCount3:
group.strategy[2] && group.strategy[2].devCount
? Extension.ToThaiNumber(group.strategy[2].devCount.toLocaleString())
: "-",
target3: "-", target3: "-",
receiveBudget3: group.strategy[2]&&group.strategy[2].receiveBudget?Extension.ToThaiNumber(group.strategy[2].receiveBudget.toLocaleString()):"-", receiveBudget3:
group.strategy[2] && group.strategy[2].receiveBudget
? Extension.ToThaiNumber(group.strategy[2].receiveBudget.toLocaleString())
: "-",
strategyName4:
strategyName4: group.strategy[3]&&group.strategy[3].strategyName?group.strategy[3].strategyName:"-", group.strategy[3] && group.strategy[3].strategyName
devCount4: group.strategy[3]&&group.strategy[3].devCount?Extension.ToThaiNumber(group.strategy[3].devCount.toLocaleString()):"-", ? group.strategy[3].strategyName
: "-",
devCount4:
group.strategy[3] && group.strategy[3].devCount
? Extension.ToThaiNumber(group.strategy[3].devCount.toLocaleString())
: "-",
target4: "-", target4: "-",
receiveBudget4: group.strategy[3]&&group.strategy[3].receiveBudget?Extension.ToThaiNumber(group.strategy[3].receiveBudget.toLocaleString()):"-", receiveBudget4:
group.strategy[3] && group.strategy[3].receiveBudget
? Extension.ToThaiNumber(group.strategy[3].receiveBudget.toLocaleString())
: "-",
sumRowDev: sumRowDev ? Extension.ToThaiNumber(sumRowDev.toLocaleString()) : "-",
sumRowDev: sumRowDev?Extension.ToThaiNumber(sumRowDev.toLocaleString()):"-",
sumRowTarget: "-", sumRowTarget: "-",
sumRowBudget: sumRowBudget?Extension.ToThaiNumber(sumRowBudget.toLocaleString()):"-", sumRowBudget: sumRowBudget ? Extension.ToThaiNumber(sumRowBudget.toLocaleString()) : "-",
// 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: "", // strategyName: "",
@ -294,21 +383,28 @@ export class ReportController extends Controller {
data: { data: {
data: mappedDataDev, data: mappedDataDev,
resultAllStrategy: reformattedData, resultAllStrategy: reformattedData,
sumDev1: Extension.ToThaiNumber(sumDev1.toLocaleString())??"-", sumDev1: Extension.ToThaiNumber(sumDev1.toLocaleString()) ?? "-",
sumTraget1: Extension.ToThaiNumber(sumTraget1.toLocaleString())??"-", sumTraget1: Extension.ToThaiNumber(sumTraget1.toLocaleString()) ?? "-",
sumBudget1: Extension.ToThaiNumber(sumBudget1.toLocaleString())??"-", sumBudget1: Extension.ToThaiNumber(sumBudget1.toLocaleString()) ?? "-",
sumDev2: Extension.ToThaiNumber(sumDev2.toLocaleString())??"-", sumDev2: Extension.ToThaiNumber(sumDev2.toLocaleString()) ?? "-",
sumTraget2: Extension.ToThaiNumber(sumTraget2.toLocaleString())??"-", sumTraget2: Extension.ToThaiNumber(sumTraget2.toLocaleString()) ?? "-",
sumBudget2: Extension.ToThaiNumber(sumBudget2.toLocaleString())??"-", sumBudget2: Extension.ToThaiNumber(sumBudget2.toLocaleString()) ?? "-",
sumDev3: Extension.ToThaiNumber(sumDev3.toLocaleString())??"-", sumDev3: Extension.ToThaiNumber(sumDev3.toLocaleString()) ?? "-",
sumTraget3: Extension.ToThaiNumber(sumTraget3.toLocaleString())??"-", sumTraget3: Extension.ToThaiNumber(sumTraget3.toLocaleString()) ?? "-",
sumBudget3: Extension.ToThaiNumber(sumBudget3.toLocaleString())??"-", sumBudget3: Extension.ToThaiNumber(sumBudget3.toLocaleString()) ?? "-",
sumDev4: Extension.ToThaiNumber(sumDev4.toLocaleString())??"-", sumDev4: Extension.ToThaiNumber(sumDev4.toLocaleString()) ?? "-",
sumTraget4: Extension.ToThaiNumber(sumTraget4.toLocaleString())??"-", sumTraget4: Extension.ToThaiNumber(sumTraget4.toLocaleString()) ?? "-",
sumBudget4: Extension.ToThaiNumber(sumBudget4.toLocaleString())??"-", sumBudget4: Extension.ToThaiNumber(sumBudget4.toLocaleString()) ?? "-",
sumAllDev: Extension.ToThaiNumber((sumDev1 + sumDev2 + sumDev3 + sumDev4).toLocaleString())??"-", sumAllDev:
sumTraget: Extension.ToThaiNumber((sumTraget1 +sumTraget2 +sumTraget3 +sumTraget4).toLocaleString())??"-", Extension.ToThaiNumber((sumDev1 + sumDev2 + sumDev3 + sumDev4).toLocaleString()) ?? "-",
sumAllBudget: Extension.ToThaiNumber((sumBudget1 + sumBudget2 + sumBudget3 + sumBudget4).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") @Get("report3")
async report3( async report3(@Query("year") year?: number, @Query("rootId") rootId?: string) {
@Query("year") year?: number,
@Query("rootId") rootId?: string,
) {
const developments = await AppDataSource.getRepository(DevelopmentScholarship) const developments = await AppDataSource.getRepository(DevelopmentScholarship)
.createQueryBuilder("developmentScholarship") .createQueryBuilder("developmentScholarship")
.leftJoinAndSelect("developmentScholarship.posLevel", "posLevel") .leftJoinAndSelect("developmentScholarship.posLevel", "posLevel")
@ -592,11 +685,11 @@ export class ReportController extends Controller {
.addOrderBy("developmentScholarship.createdAt", "DESC") .addOrderBy("developmentScholarship.createdAt", "DESC")
.getMany(); .getMany();
const mapData = developments.map((item, idx:number) => ({ const mapData = developments.map((item, idx: number) => ({
no: Extension.ToThaiNumber((idx+1).toString()), no: Extension.ToThaiNumber((idx + 1).toString()),
institution: item.educationalInstitution ? item.educationalInstitution : "-", institution: item.educationalInstitution ? item.educationalInstitution : "-",
scholarshipType: item.scholarshipType ? scholarshipType: item.scholarshipType
item.scholarshipType == "DOMESTICE" ? item.scholarshipType == "DOMESTICE"
? "การศึกษาในประเทศ" ? "การศึกษาในประเทศ"
: item.scholarshipType == "NOABROAD" : item.scholarshipType == "NOABROAD"
? "ฝึกอบรมในประเทศที่ส่งไปพัฒนากับหน่วยวงานภายนอก (หลักสูตรที่ไม่มีการไปต่างประเทศ)" ? "ฝึกอบรมในประเทศที่ส่งไปพัฒนากับหน่วยวงานภายนอก (หลักสูตรที่ไม่มีการไปต่างประเทศ)"
@ -615,35 +708,44 @@ export class ReportController extends Controller {
position: item.position ? item.position : "-", position: item.position ? item.position : "-",
posLevel: item.posLevel ? item.posLevel.posLevelName : "-", posLevel: item.posLevel ? item.posLevel.posLevelName : "-",
totalPeriod: item.totalPeriod ? item.totalPeriod : "-", totalPeriod: item.totalPeriod ? item.totalPeriod : "-",
budgetApprove: item.budgetApprove ? Extension.ToThaiNumber(item.budgetApprove.toLocaleString()) : "" budgetApprove: item.budgetApprove
? Extension.ToThaiNumber(item.budgetApprove.toLocaleString())
: "",
})); }));
const sum = developments const sum = developments
.filter(x => x.budgetApprove) .filter((x) => x.budgetApprove)
.reduce((acc, item) => acc + (Number(item.budgetApprove)), 0); .reduce((acc, item) => acc + Number(item.budgetApprove), 0);
return new HttpSuccess({ return new HttpSuccess({
template: "reportFund3", template: "reportFund3",
reportName: "reportFund3", reportName: "reportFund3",
data: { data: {
year: year ? Extension.ToThaiNumber((year+543).toString()) : "-", year: year ? Extension.ToThaiNumber((year + 543).toString()) : "",
root: rootId ? developments.length > 0 ? developments.find(x => x.root != "")?.root: "-" : "-", root: rootId
data: mapData.length > 0 ? developments.length > 0
? developments.find((x) => x.root != "")?.root
: ""
: "",
data:
mapData.length > 0
? mapData ? mapData
: [{ : [
no: "-", {
institution: "-", no: "",
scholarshipType: "-", institution: "",
degreeLevel: "-", scholarshipType: "",
course: "-", degreeLevel: "",
field: "-", course: "",
fullName: "-", field: "",
position: "-", fullName: "",
posLevel: "-", position: "",
totalPeriod: "-", posLevel: "",
budgetApprove: "-", totalPeriod: "",
}], budgetApprove: "",
sum: sum ? Extension.ToThaiNumber(sum.toLocaleString()): "-" },
],
sum: sum ? Extension.ToThaiNumber(sum.toLocaleString()) : "-",
}, },
}); });
} }
@ -654,9 +756,7 @@ export class ReportController extends Controller {
* *
*/ */
@Get("report4") @Get("report4")
async report4( async report4(@Query("year") year?: number) {
@Query("year") year?: number,
) {
const developments = await AppDataSource.getRepository(DevelopmentScholarship) const developments = await AppDataSource.getRepository(DevelopmentScholarship)
.createQueryBuilder("developmentScholarship") .createQueryBuilder("developmentScholarship")
.andWhere( .andWhere(
@ -676,14 +776,15 @@ export class ReportController extends Controller {
// order: { "scholarshipYear" : "DESC" } // order: { "scholarshipYear" : "DESC" }
// }) // })
const groupDevelopment = Array.isArray(developments) && developments.length > 0 const groupDevelopment =
? developments.reduce((acc:any, current:any, idx:number) => { Array.isArray(developments) && developments.length > 0
? developments.reduce((acc: any, current: any, idx: number) => {
const root = current.root || ""; const root = current.root || "";
if (!acc[root]) { if (!acc[root]) {
acc[root] = { acc[root] = {
no: (idx+1), no: idx + 1,
root: root, root: root,
Bachelor : 0, Bachelor: 0,
BachelorHight: 0, BachelorHight: 0,
Master: 0, Master: 0,
Doctor: 0, Doctor: 0,
@ -728,9 +829,21 @@ export class ReportController extends Controller {
break; break;
} }
acc[root].TotalCourseCount = acc[root].DomesticeCourseCount + acc[root].NoAbroadCourseCount + acc[root].AbroadCourseCount + acc[root].ExecutiveCourseCount; acc[root].TotalCourseCount =
acc[root].TotalProfileCount = acc[root].DomesticeProfileCount + acc[root].NoAbroadProfileCount + acc[root].AbroadProfileCount + acc[root].ExecutiveProfileCount; acc[root].DomesticeCourseCount +
acc[root].TotalBudgetApprove = acc[root].DomesticeBudgetApprove + acc[root].NoAbroadBudgetApprove + acc[root].AbroadBudgetApprove + acc[root].ExecutiveBudgetApprove; 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;
}, {}) }, {})
@ -741,36 +854,67 @@ export class ReportController extends Controller {
template: "reportFund4", template: "reportFund4",
reportName: "reportFund4", reportName: "reportFund4",
data: { data: {
year: year ? Extension.ToThaiNumber((year+543).toString()) : "-", year: year ? Extension.ToThaiNumber((year + 543).toString()) : "-",
data: Array.isArray(_group) data: Array.isArray(_group)
// ? _group ? // ? _group
? _group.map((x:any) => ({ _group.map((x: any) => ({
no: x.no ? Extension.ToThaiNumber(x.no.toString()) : "-", no: x.no ? Extension.ToThaiNumber(x.no.toString()) : "-",
root: x.root ? x.root : "-", root: x.root ? x.root : "ไม่พบหน่วยงาน",
Bachelor : "-", Bachelor: "-",
BachelorHight: "-", BachelorHight: "-",
Master: "-", Master: "-",
Doctor: "-", Doctor: "-",
DomesticeCourseCount: x.DomesticeCourseCount ? Extension.ToThaiNumber(x.DomesticeCourseCount.toLocaleString()) : "-", DomesticeCourseCount: x.DomesticeCourseCount
DomesticeProfileCount: x.DomesticeProfileCount ? Extension.ToThaiNumber(x.DomesticeProfileCount.toLocaleString()) : "-", ? Extension.ToThaiNumber(x.DomesticeCourseCount.toLocaleString())
DomesticeBudgetApprove: x.DomesticeBudgetApprove ? Extension.ToThaiNumber(x.DomesticeBudgetApprove.toLocaleString()) : "-", : "-",
NoAbroadCourseCount: x.NoAbroadCourseCount ? Extension.ToThaiNumber(x.NoAbroadCourseCount.toLocaleString()) : "-", DomesticeProfileCount: x.DomesticeProfileCount
NoAbroadDProfileCount: x.NoAbroadDProfileCount ? Extension.ToThaiNumber(x.NoAbroadDProfileCount.toLocaleString()) : "-", ? Extension.ToThaiNumber(x.DomesticeProfileCount.toLocaleString())
NoAbroadBudgetApprove: x.NoAbroadBudgetApprove ? Extension.ToThaiNumber(x.NoAbroadBudgetApprove.toLocaleString()) : "-", : "-",
AbroadCourseCount: x.AbroadCourseCount ? Extension.ToThaiNumber(x.AbroadCourseCount.toLocaleString()) : "-", DomesticeBudgetApprove: x.DomesticeBudgetApprove
AbroadProfileCount: x.AbroadProfileCount ? Extension.ToThaiNumber(x.AbroadProfileCount.toLocaleString()) : "-", ? Extension.ToThaiNumber(x.DomesticeBudgetApprove.toLocaleString())
AbroadBudgetApprove: x.AbroadBudgetApprove ? Extension.ToThaiNumber(x.AbroadBudgetApprove.toLocaleString()) : "-", : "-",
ExecutiveCourseCount: x.ExecutiveCourseCount ? Extension.ToThaiNumber(x.ExecutiveCourseCount.toLocaleString()) : "-", NoAbroadCourseCount: x.NoAbroadCourseCount
ExecutiveProfileCount: x.ExecutiveProfileCount ? Extension.ToThaiNumber(x.ExecutiveProfileCount.toLocaleString()) : "-", ? Extension.ToThaiNumber(x.NoAbroadCourseCount.toLocaleString())
ExecutiveBudgetApprove: x.ExecutiveBudgetApprove ? Extension.ToThaiNumber(x.ExecutiveBudgetApprove.toLocaleString()) : "-", : "-",
TotalCourseCount: x.TotalCourseCount ? Extension.ToThaiNumber(x.TotalCourseCount.toLocaleString()) : "-", NoAbroadDProfileCount: x.NoAbroadDProfileCount
TotalProfileCount: x.TotalProfileCount ? Extension.ToThaiNumber(x.TotalProfileCount.toLocaleString()) : "-", ? Extension.ToThaiNumber(x.NoAbroadDProfileCount.toLocaleString())
TotalBudgetApprove: x.TotalBudgetApprove ? Extension.ToThaiNumber(x.TotalBudgetApprove.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: "-", no: "-",
root: "-", root: "-",
Bachelor : "-", Bachelor: "-",
BachelorHight: "-", BachelorHight: "-",
Master: "-", Master: "-",
Doctor: "-", Doctor: "-",
@ -789,8 +933,11 @@ export class ReportController extends Controller {
TotalCourseCount: "-", TotalCourseCount: "-",
TotalProfileCount: "-", TotalProfileCount: "-",
TotalBudgetApprove: "-", TotalBudgetApprove: "-",
}], },
totalRoot: Array.isArray(_group) ? Extension.ToThaiNumber(_group.length.toLocaleString()) : "-" ],
totalRoot: Array.isArray(_group)
? Extension.ToThaiNumber(_group.length.toLocaleString())
: "-",
}, },
}); });
} }
@ -805,7 +952,6 @@ export class ReportController extends Controller {
@Query("year") year?: number, @Query("year") year?: number,
// @Query("rootId") rootId: string, // @Query("rootId") rootId: string,
) { ) {
const [development, total] = await AppDataSource.getRepository(DevelopmentScholarship) const [development, total] = await AppDataSource.getRepository(DevelopmentScholarship)
.createQueryBuilder("developmentScholarship") .createQueryBuilder("developmentScholarship")
.leftJoinAndSelect("developmentScholarship.posLevel", "posLevel") .leftJoinAndSelect("developmentScholarship.posLevel", "posLevel")
@ -819,18 +965,21 @@ export class ReportController extends Controller {
: "1=1", : "1=1",
{ scholarshipYear: year }, { scholarshipYear: year },
) )
.andWhere( .andWhere("developmentScholarship.scholarshipType = :scholarshipType", {
"developmentScholarship.scholarshipType = :scholarshipType", { scholarshipType: "RESEARCH" }, scholarshipType: "RESEARCH",
) })
.orderBy("developmentScholarship.scholarshipYear", "DESC") .orderBy("developmentScholarship.scholarshipYear", "DESC")
.addOrderBy("developmentScholarship.createdAt", "DESC") .addOrderBy("developmentScholarship.createdAt", "DESC")
.getManyAndCount(); .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 formattedData = development.map((item, index) => {
const rawPath = [ const rawPath = [
item.course == "-" ? null : item.course, item.course == "-" ? null : item.course,
item.field == "-" ? null : item.course item.field == "-" ? null : item.course,
]; ];
const courseAndfield = rawPath const courseAndfield = rawPath
@ -839,12 +988,10 @@ export class ReportController extends Controller {
const date = [ const date = [
Extension.ToThaiNumber(Extension.ToThaiShortDate(item.startDate)), Extension.ToThaiNumber(Extension.ToThaiShortDate(item.startDate)),
Extension.ToThaiNumber(Extension.ToThaiShortDate(item.endDate)) Extension.ToThaiNumber(Extension.ToThaiShortDate(item.endDate)),
]; ];
const dateDulation = date const dateDulation = date.filter((path) => path !== undefined && path !== null).join(" - ");
.filter((path) => path !== undefined && path !== null)
.join(" - ");
return { return {
no: Extension.ToThaiNumber((index + 1).toString()), no: Extension.ToThaiNumber((index + 1).toString()),
@ -857,16 +1004,17 @@ export class ReportController extends Controller {
place: item.studyPlace ? item.studyPlace : "-", place: item.studyPlace ? item.studyPlace : "-",
country: item.studyCountry ? item.studyCountry : "-", country: item.studyCountry ? item.studyCountry : "-",
startAndendDate: dateDulation, startAndendDate: dateDulation,
budgetApprove: item.budgetApprove ? Extension.ToThaiNumber(item.budgetApprove.toLocaleString()) : "-", budgetApprove: item.budgetApprove
? Extension.ToThaiNumber(item.budgetApprove.toLocaleString())
: "-",
}; };
}); });
return new HttpSuccess({ return new HttpSuccess({
template: "reportFund5", template: "reportFund5",
reportName: "reportFund5", reportName: "reportFund5",
data: { data: {
year: year?Extension.ToThaiNumber((year+543).toString()):"", year: year ? Extension.ToThaiNumber((year + 543).toString()) : "",
data: formattedData, data: formattedData,
total: Extension.ToThaiNumber(total.toLocaleString()), total: Extension.ToThaiNumber(total.toLocaleString()),
totalBudgetApprove: Extension.ToThaiNumber(totalBudgetApprove.toLocaleString()), totalBudgetApprove: Extension.ToThaiNumber(totalBudgetApprove.toLocaleString()),
@ -880,14 +1028,8 @@ export class ReportController extends Controller {
* *
*/ */
@Get("report6") @Get("report6")
async report6( async report6(@Query("year") year?: number) {
@Query("year") year?: number, const degree = ["ปริญญาเอก", "ปริญญาโท", "ปริญญาตรี"];
) {
const degree = [
"ปริญญาเอก",
"ปริญญาโท",
"ปริญญาตรี",
];
const development = await this.viewDevScholarship.find({ const development = await this.viewDevScholarship.find({
where: { where: {
@ -896,7 +1038,7 @@ export class ReportController extends Controller {
}, },
}); });
const groupedData = development.reduce((acc:any, item:any) => { const groupedData = development.reduce((acc: any, item: any) => {
const { rootId, root, degreeLevel, scholarshipType, budgetApprove } = item; const { rootId, root, degreeLevel, scholarshipType, budgetApprove } = item;
if (!acc[rootId]) { if (!acc[rootId]) {
@ -939,48 +1081,76 @@ export class ReportController extends Controller {
}, {}); }, {});
const formattedData = Object.values(groupedData).map((item: any, index: any) => { const formattedData = Object.values(groupedData).map((item: any, index: any) => {
const sumnumberOfRecords = item.degreeLevel1.numberOfRecords + item.degreeLevel2.numberOfRecords + item.degreeLevel3.numberOfRecords; const sumnumberOfRecords =
const sumnumberOfScholarshipTypes = item.degreeLevel1.numberOfScholarshipTypes + item.degreeLevel2.numberOfScholarshipTypes + item.degreeLevel3.numberOfScholarshipTypes; item.degreeLevel1.numberOfRecords +
const sumtotalBudgetApprove = item.degreeLevel1.totalBudgetApprove + item.degreeLevel2.totalBudgetApprove + item.degreeLevel3.totalBudgetApprove; 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 { return {
no: index ? Extension.ToThaiNumber((index + 1).toString()) : "๑", no: index ? Extension.ToThaiNumber((index + 1).toString()) : "๑",
rootId: item.rootId ? item.rootId : "-", rootId: item.rootId ? item.rootId : "-",
root: item.root ? item.root : "-", root: item.root ? item.root : "-",
degreeLevel1: "ปริญญาตรี", degreeLevel1: "ปริญญาตรี",
numberOfRecords1: item.degreeLevel1.numberOfRecords ? Extension.ToThaiNumber(item.degreeLevel1.numberOfRecords.toString()) : "-", numberOfRecords1: item.degreeLevel1.numberOfRecords
numberOfScholarshipTypes1: item.degreeLevel1.numberOfScholarshipTypes ? Extension.ToThaiNumber(item.degreeLevel1.numberOfScholarshipTypes.toString()) : "-", ? Extension.ToThaiNumber(item.degreeLevel1.numberOfRecords.toString())
totalBudgetApprove1: item.degreeLevel1.totalBudgetApprove ? Extension.ToThaiNumber(item.degreeLevel1.totalBudgetApprove.toLocaleString()) : "-", : "-",
numberOfScholarshipTypes1: item.degreeLevel1.numberOfScholarshipTypes
? Extension.ToThaiNumber(item.degreeLevel1.numberOfScholarshipTypes.toString())
: "-",
totalBudgetApprove1: item.degreeLevel1.totalBudgetApprove
? Extension.ToThaiNumber(item.degreeLevel1.totalBudgetApprove.toLocaleString())
: "-",
degreeLevel2: "ปริญญาโท", degreeLevel2: "ปริญญาโท",
numberOfRecords2: item.degreeLevel2.numberOfRecords ? Extension.ToThaiNumber(item.degreeLevel2.numberOfRecords.toString()) : "-", numberOfRecords2: item.degreeLevel2.numberOfRecords
numberOfScholarshipTypes2: item.degreeLevel2.numberOfScholarshipTypes ? Extension.ToThaiNumber(item.degreeLevel2.numberOfScholarshipTypes.toString()) : "-", ? Extension.ToThaiNumber(item.degreeLevel2.numberOfRecords.toString())
totalBudgetApprove2: item.degreeLevel2.totalBudgetApprove ? Extension.ToThaiNumber(item.degreeLevel2.totalBudgetApprove.toLocaleString()) : "-", : "-",
numberOfScholarshipTypes2: item.degreeLevel2.numberOfScholarshipTypes
? Extension.ToThaiNumber(item.degreeLevel2.numberOfScholarshipTypes.toString())
: "-",
totalBudgetApprove2: item.degreeLevel2.totalBudgetApprove
? Extension.ToThaiNumber(item.degreeLevel2.totalBudgetApprove.toLocaleString())
: "-",
degreeLevel3: "ปริญญาเอก", degreeLevel3: "ปริญญาเอก",
numberOfRecords3: item.degreeLevel3.numberOfRecords ? Extension.ToThaiNumber(item.degreeLevel3.numberOfRecords.toString()) : "-", numberOfRecords3: item.degreeLevel3.numberOfRecords
numberOfScholarshipTypes3: item.degreeLevel3.numberOfScholarshipTypes ? Extension.ToThaiNumber(item.degreeLevel3.numberOfScholarshipTypes.toString()) : "-", ? Extension.ToThaiNumber(item.degreeLevel3.numberOfRecords.toString())
totalBudgetApprove3: item.degreeLevel3.totalBudgetApprove ? Extension.ToThaiNumber(item.degreeLevel3.totalBudgetApprove.toLocaleString()) : "-", : "-",
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()), totalNumberOfRecords: Extension.ToThaiNumber(sumnumberOfRecords.toString()),
totalNumberOfScholarshipTypes: Extension.ToThaiNumber(sumnumberOfScholarshipTypes.toString()), totalNumberOfScholarshipTypes: Extension.ToThaiNumber(
totalTotalBudgetApprove: Extension.ToThaiNumber(sumtotalBudgetApprove.toLocaleString()) 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; const numberOfORG = uniqueRoots.size;
return new HttpSuccess({ return new HttpSuccess({
template: "reportFund6", template: "reportFund6",
reportName: "reportFund6", reportName: "reportFund6",
data: { data: {
year: year?Extension.ToThaiNumber((year+543).toString()):"", year: year ? Extension.ToThaiNumber((year + 543).toString()) : "",
data: formattedData, data: formattedData,
coutOrg: numberOfORG?Extension.ToThaiNumber(numberOfORG.toString())+" หน่วยงาน":" หน่วยงาน" coutOrg: numberOfORG
? Extension.ToThaiNumber(numberOfORG.toString()) + " หน่วยงาน"
: " หน่วยงาน",
}, },
}); });
} }
} }