Merge branch 'develop' into develop-Bright

This commit is contained in:
Bright 2025-02-13 17:38:43 +07:00
commit dbce13d107
3 changed files with 182 additions and 3 deletions

View file

@ -796,14 +796,75 @@ export class ReportController extends Controller {
*
*/
@Get("report5")
async report5() {
async report5(
@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();
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
];
const courseAndfield = rawPath
.filter((path) => path !== undefined && path !== null)
.join("/");
const date = [
Extension.ToThaiNumber(Extension.ToThaiShortDate(item.startDate)),
Extension.ToThaiNumber(Extension.ToThaiShortDate(item.endDate))
];
const dateDulation = date
.filter((path) => path !== undefined && path !== null)
.join(" - ");
return {
no: Extension.ToThaiNumber((index + 1).toString()),
id: item.id,
studyTopic: item.studyTopic ? item.studyTopic : "-",
fullName: item.prefix + item.firstName + " " + item.lastName,
position: item.position,
posLevel: item.posLevel ? item.posLevel.posLevelName : "-",
courseAndfield: courseAndfield ?? "-",
place: item.studyPlace ? item.studyPlace : "-",
country: item.studyCountry ? item.studyCountry : "-",
startAndendDate: dateDulation,
budgetApprove: item.budgetApprove ? Extension.ToThaiNumber(item.budgetApprove.toString()) : "-",
};
});
return new HttpSuccess({
template: "reportFund5",
reportName: "reportFund5",
data: {
data: "",
year: Extension.ToThaiNumber(year.toString()),
data: formattedData,
total: Extension.ToThaiNumber(total.toString()),
totalBudgetApprove: Extension.ToThaiNumber(totalBudgetApprove.toString()),
},
});
}
@ -814,8 +875,57 @@ export class ReportController extends Controller {
*
*/
@Get("report6")
async report6() {
async report6(
@Query("year") year: number,
) {
const degree = [
"ปริญญาเอก",
"ปริญญาโท",
"ปริญญาตรี",
"ปวส.",
"ปวช.",
"ม.6",
"ม.3",
];
// 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
// ];
// const courseAndfield = rawPath
// .filter((path) => path !== undefined && path !== null)
// .join("/");
// const date = [
// Extension.ToThaiNumber(Extension.ToThaiShortDate(item.startDate)),
// Extension.ToThaiNumber(Extension.ToThaiShortDate(item.endDate))
// ];
// const dateDulation = date
// .filter((path) => path !== undefined && path !== null)
// .join(" - ");
// return {
// no: Extension.ToThaiNumber((index + 1).toString()),
// id: item.id,
// rootId: item.rootId,
// root: item.root,
// degree: item.degreeLevel,
// // studyTopic: item.studyTopic ? item.studyTopic : "-",
// // fullName: item.prefix + item.firstName + " " + item.lastName,
// // position: item.position,
// // posLevel: item.posLevel ? item.posLevel.posLevelName : "-",
// // courseAndfield: courseAndfield ?? "-",
// // place: item.studyPlace ? item.studyPlace : "-",
// // country: item.studyCountry ? item.studyCountry : "-",
// // startAndendDate: dateDulation,
// // budgetApprove: item.budgetApprove ? Extension.ToThaiNumber(item.budgetApprove.toString()) : "-",
// };
// });
return new HttpSuccess({
template: "reportFund6",

View file

@ -0,0 +1,26 @@
import { ViewColumn, ViewEntity } from "typeorm";
@ViewEntity({
expression: `SELECT MAX(\`rootId\`) AS rootId,
MAX(\`root\`) AS root,\`degreeLevel\`,
COUNT(*) AS numberOfRecords,
COUNT(DISTINCT \`scholarshipType\`) AS numberOfScholarshipTypes,
SUM(\`budgetApprove\`) AS totalBudgetApprove
FROM \`developmentScholarship\`
GROUP BY \`rootId\`,\`degreeLevel\`
`,
})
export class viewProfileEvaluation {
@ViewColumn()
rootId: string;
@ViewColumn()
root: string;
@ViewColumn()
numberOfRecords: number;
@ViewColumn()
numberOfScholarshipTypes: number;
@ViewColumn()
totalBudgetApprove: number;
}

View file

@ -30,6 +30,37 @@ class Extension {
}
}
public static ToThaiShortMonth(value: number) {
switch (value) {
case 1:
return "ม.ค.";
case 2:
return "ก.พ.";
case 3:
return "มี.ค.";
case 4:
return "เม.ย.";
case 5:
return "พ.ค.";
case 6:
return "มิ.ย.";
case 7:
return "ก.ค.";
case 8:
return "ส.ค.";
case 9:
return "ก.ย.";
case 10:
return "ต.ค.";
case 11:
return "พ.ย.";
case 12:
return "ธ.ค.";
default:
return "";
}
}
public static ToThaiYear(value: number) {
if (value < 2400) return value + 543;
else return value;
@ -86,6 +117,18 @@ class Extension {
}
return sum;
}
public static ToThaiShortDate(value: Date) {
let yy = value.getFullYear() < 2400 ? value.getFullYear() + 543 : value.getFullYear();
return (
value.getDate() +
" " +
Extension.ToThaiShortMonth(value.getMonth() + 1) +
" " +
yy.toString().slice(-2)
);
}
}
export default Extension;