This commit is contained in:
AdisakKanthawilang 2024-07-15 16:43:34 +07:00
parent 95922c5e73
commit 92825464df
2 changed files with 130 additions and 128 deletions

View file

@ -461,114 +461,116 @@ export class ReportController extends Controller {
templateName = "KPI4";
reportName = "KPI4";
const yearNow = new Date().getFullYear();
let combinedDatas: any;
if (requestBody.profileId) {
//ชั่วคราว
const profileEvaluationNowYearIds = await AppDataSource.getRepository(KpiUserEvaluation)
.createQueryBuilder("kpiUserEvaluation")
.leftJoinAndSelect("kpiUserEvaluation.kpiPeriod", "kpiPeriod")
// .where("kpiUserEvaluation.profileId = :profileId", { profileId: requestBody.profileId })
.where("kpiUserEvaluation.profileId = :profileId", { profileId: requestBody.profileId })
// .where("kpiPeriod.year = :year", { year: yearNow })
.groupBy("kpiUserEvaluation.kpiPeriodId")
.select("MIN(kpiUserEvaluation.id) as id")
.getRawMany();
// const profileEvaluationNextYearIds = await AppDataSource.getRepository(KpiUserEvaluation)
// .createQueryBuilder("kpiUserEvaluation")
// .leftJoinAndSelect("kpiUserEvaluation.kpiPeriod", "kpiPeriod")
// .where("kpiUserEvaluation.profileId = :profileId", { profileId: requestBody.profileId })
// .where("kpiPeriod.year = :year", { year: yearNow + 1 })
// .groupBy("kpiUserEvaluation.kpiPeriodId")
// .select("MIN(kpiUserEvaluation.id) as id")
// .getRawMany();
// const profileEvaluationCombianIds = profileEvaluationNowYearIds.concat(profileEvaluationNextYearIds);
// const profileEvaluationNextYearIds = await AppDataSource.getRepository(KpiUserEvaluation)
// .createQueryBuilder("kpiUserEvaluation")
// .leftJoinAndSelect("kpiUserEvaluation.kpiPeriod", "kpiPeriod")
// .where("kpiUserEvaluation.profileId = :profileId", { profileId: requestBody.profileId })
// .where("kpiPeriod.year = :year", { year: yearNow + 1 })
// .groupBy("kpiUserEvaluation.kpiPeriodId")
// .select("MIN(kpiUserEvaluation.id) as id")
// .getRawMany();
// const profileEvaluationCombianIds = profileEvaluationNowYearIds.concat(profileEvaluationNextYearIds);
if (profileEvaluationNowYearIds.length > 0) {
//ชั่วคราว
const profileEvaluations = await this.kpiUserEvaluationRepository.find({
relations: ["kpiPeriod"],
where: { id: In(profileEvaluationNowYearIds.map((evaluation) => evaluation.id)) },
});
const groupedEvaluations = profileEvaluations.reduce((acc: any, evaluation: any) => {
const year = evaluation.kpiPeriod.year;
const profileId = evaluation.profileId;
const key = `${profileId}-${year}`;
if (!acc[key]) {
acc[key] = {
fullName: evaluation.prefix + evaluation.firstName + " " + evaluation.lastName,
profileId: profileId,
year: year?Extension.ToThaiNumber(Extension.ToThaiYear(year).toString()):null,
evaluations: [],
};
}
acc[key].evaluations.push(evaluation);
return acc;
}, {});
// สร้าง formatData
const combinedDatas = Object.values(groupedEvaluations).map((group: any) => {
const data: any = {
fullName: group.fullName ?? null,
year: group.year ?? null,
};
group.evaluations.forEach((evaluation: any) => {
if (evaluation.kpiPeriod.durationKPI === "APR") {
data.summaryPointAPR1 =
evaluation.summaryPoint >= 90
? Extension.ToThaiNumber(evaluation.summaryPoint.toString())
: null;
data.summaryPointAPR2 =
evaluation.summaryPoint >= 80 && evaluation.summaryPoint < 90
? Extension.ToThaiNumber(evaluation.summaryPoint.toString())
: null;
data.summaryPointAPR3 =
evaluation.summaryPoint >= 70 && evaluation.summaryPoint < 80
? Extension.ToThaiNumber(evaluation.summaryPoint.toString())
: null;
data.summaryPointAPR4 =
evaluation.summaryPoint >= 60 && evaluation.summaryPoint < 70
? Extension.ToThaiNumber(evaluation.summaryPoint.toString())
: null;
data.summaryPointAPR5 =
evaluation.summaryPoint < 60
? Extension.ToThaiNumber(evaluation.summaryPoint.toString())
: null;
data.periodAPR = evaluation.kpiPeriod.durationKPI;
} else if (evaluation.kpiPeriod.durationKPI === "OCT") {
data.summaryPointOCT1 =
evaluation.summaryPoint >= 90
? Extension.ToThaiNumber(evaluation.summaryPoint.toString())
: null;
data.summaryPointOCT2 =
evaluation.summaryPoint >= 80 && evaluation.summaryPoint < 90
? Extension.ToThaiNumber(evaluation.summaryPoint.toString())
: null;
data.summaryPointOCT3 =
evaluation.summaryPoint >= 70 && evaluation.summaryPoint < 80
? Extension.ToThaiNumber(evaluation.summaryPoint.toString())
: null;
data.summaryPointOCT4 =
evaluation.summaryPoint >= 60 && evaluation.summaryPoint < 70
? Extension.ToThaiNumber(evaluation.summaryPoint.toString())
: null;
data.summaryPointOCT5 =
evaluation.summaryPoint < 60
? Extension.ToThaiNumber(evaluation.summaryPoint.toString())
: null;
data.periodOCT = evaluation.kpiPeriod.durationKPI ?? null;
}
//ชั่วคราว
const profileEvaluations = await this.kpiUserEvaluationRepository.find({
relations: ["kpiPeriod"],
where: { id: In(profileEvaluationNowYearIds.map((evaluation) => evaluation.id)) },
});
return data;
});
formattedData = {
combinedDatas: combinedDatas.length > 0 ? combinedDatas : [{}],
fullName: combinedDatas[0]["fullName"] ?? null,
};
const groupedEvaluations = profileEvaluations.reduce((acc: any, evaluation: any) => {
const year = evaluation.kpiPeriod.year;
const profileId = evaluation.profileId;
const key = `${profileId}-${year}`;
if (!acc[key]) {
acc[key] = {
fullName: evaluation.prefix + evaluation.firstName + " " + evaluation.lastName,
profileId: profileId,
year: year ? Extension.ToThaiNumber(Extension.ToThaiYear(year).toString()) : null,
evaluations: [],
};
}
acc[key].evaluations.push(evaluation);
return acc;
}, {});
// สร้าง formatData
combinedDatas = Object.values(groupedEvaluations).map((group: any) => {
const data: any = {
fullName: group.fullName ?? null,
year: group.year ?? null,
};
group.evaluations.forEach((evaluation: any) => {
if (evaluation.kpiPeriod.durationKPI === "APR") {
data.summaryPointAPR1 =
evaluation.summaryPoint >= 90
? Extension.ToThaiNumber(evaluation.summaryPoint.toString())
: null;
data.summaryPointAPR2 =
evaluation.summaryPoint >= 80 && evaluation.summaryPoint < 90
? Extension.ToThaiNumber(evaluation.summaryPoint.toString())
: null;
data.summaryPointAPR3 =
evaluation.summaryPoint >= 70 && evaluation.summaryPoint < 80
? Extension.ToThaiNumber(evaluation.summaryPoint.toString())
: null;
data.summaryPointAPR4 =
evaluation.summaryPoint >= 60 && evaluation.summaryPoint < 70
? Extension.ToThaiNumber(evaluation.summaryPoint.toString())
: null;
data.summaryPointAPR5 =
evaluation.summaryPoint < 60
? Extension.ToThaiNumber(evaluation.summaryPoint.toString())
: null;
data.periodAPR = evaluation.kpiPeriod.durationKPI;
} else if (evaluation.kpiPeriod.durationKPI === "OCT") {
data.summaryPointOCT1 =
evaluation.summaryPoint >= 90
? Extension.ToThaiNumber(evaluation.summaryPoint.toString())
: null;
data.summaryPointOCT2 =
evaluation.summaryPoint >= 80 && evaluation.summaryPoint < 90
? Extension.ToThaiNumber(evaluation.summaryPoint.toString())
: null;
data.summaryPointOCT3 =
evaluation.summaryPoint >= 70 && evaluation.summaryPoint < 80
? Extension.ToThaiNumber(evaluation.summaryPoint.toString())
: null;
data.summaryPointOCT4 =
evaluation.summaryPoint >= 60 && evaluation.summaryPoint < 70
? Extension.ToThaiNumber(evaluation.summaryPoint.toString())
: null;
data.summaryPointOCT5 =
evaluation.summaryPoint < 60
? Extension.ToThaiNumber(evaluation.summaryPoint.toString())
: null;
data.periodOCT = evaluation.kpiPeriod.durationKPI ?? null;
}
});
return data;
});
}
}
formattedData = {
combinedDatas: combinedDatas.length > 0 ? combinedDatas : [{}],
fullName: combinedDatas.length > 0?combinedDatas[0]["fullName"]:"-",
};
}
if (requestBody.type == "KPI5") {
templateName = "KPI5";
@ -662,83 +664,83 @@ export class ReportController extends Controller {
if (x.kpiPeriod.year === yearNow - 4 && x.kpiPeriod.durationKPI === "APR") {
acc.summaryPointAPR1 = x.summaryPoint
?Extension.ToThaiNumber(x.summaryPoint.toString()): null;
acc.textPointAPR1 = x.summaryPoint?Extension.textPoint(x.summaryPoint):null;
? Extension.ToThaiNumber(x.summaryPoint.toString()) : null;
acc.textPointAPR1 = x.summaryPoint ? Extension.textPoint(x.summaryPoint) : null;
acc.periodAPR1 = x.kpiPeriod.durationKPI;
acc.yearAPR1 =
x.kpiPeriod.year?Extension.ToThaiNumber(Extension.ToThaiYear(x.kpiPeriod.year).toString()):null;
x.kpiPeriod.year ? Extension.ToThaiNumber(Extension.ToThaiYear(x.kpiPeriod.year).toString()) : null;
}
if (x.kpiPeriod.year === yearNow - 4 && x.kpiPeriod.durationKPI === "OCT") {
acc.summaryPointOCT1 = x.summaryPoint?Extension.ToThaiNumber(x.summaryPoint.toString()):null;
acc.textPointOCT1 = x.summaryPoint?Extension.textPoint(x.summaryPoint):null;
acc.summaryPointOCT1 = x.summaryPoint ? Extension.ToThaiNumber(x.summaryPoint.toString()) : null;
acc.textPointOCT1 = x.summaryPoint ? Extension.textPoint(x.summaryPoint) : null;
acc.periodOCT1 = x.kpiPeriod.durationKPI;
acc.yearOCT1 =
x.kpiPeriod.year?Extension.ToThaiNumber(Extension.ToThaiYear(x.kpiPeriod.year).toString()):null;
x.kpiPeriod.year ? Extension.ToThaiNumber(Extension.ToThaiYear(x.kpiPeriod.year).toString()) : null;
}
if (x.kpiPeriod.year === yearNow - 3 && x.kpiPeriod.durationKPI === "APR") {
acc.summaryPointAPR2 = x.summaryPoint?Extension.ToThaiNumber(x.summaryPoint.toString()):null;
acc.textPointAPR2 = x.summaryPoint?Extension.textPoint(x.summaryPoint):null;
acc.summaryPointAPR2 = x.summaryPoint ? Extension.ToThaiNumber(x.summaryPoint.toString()) : null;
acc.textPointAPR2 = x.summaryPoint ? Extension.textPoint(x.summaryPoint) : null;
acc.periodAPR2 = x.kpiPeriod.durationKPI;
acc.yearAPR2 =
x.kpiPeriod.year?Extension.ToThaiNumber(Extension.ToThaiYear(x.kpiPeriod.year).toString()):null;
x.kpiPeriod.year ? Extension.ToThaiNumber(Extension.ToThaiYear(x.kpiPeriod.year).toString()) : null;
}
if (x.kpiPeriod.year === yearNow - 3 && x.kpiPeriod.durationKPI === "OCT") {
acc.summaryPointOCT2 = x.summaryPoint?Extension.ToThaiNumber(x.summaryPoint.toString()):null;
acc.textPointOCT2 = x.summaryPoint?Extension.textPoint(x.summaryPoint):null;
acc.summaryPointOCT2 = x.summaryPoint ? Extension.ToThaiNumber(x.summaryPoint.toString()) : null;
acc.textPointOCT2 = x.summaryPoint ? Extension.textPoint(x.summaryPoint) : null;
acc.periodOCT2 = x.kpiPeriod.durationKPI;
acc.yearOCT2 =
x.kpiPeriod.year?Extension.ToThaiNumber(Extension.ToThaiYear(x.kpiPeriod.year).toString()):null;
x.kpiPeriod.year ? Extension.ToThaiNumber(Extension.ToThaiYear(x.kpiPeriod.year).toString()) : null;
}
if (x.kpiPeriod.year === yearNow - 2 && x.kpiPeriod.durationKPI === "APR") {
acc.summaryPointAPR3 = x.summaryPoint?Extension.ToThaiNumber(x.summaryPoint.toString()):null;
acc.textPointAPR3 = x.summaryPoint?Extension.textPoint(x.summaryPoint):null;
acc.summaryPointAPR3 = x.summaryPoint ? Extension.ToThaiNumber(x.summaryPoint.toString()) : null;
acc.textPointAPR3 = x.summaryPoint ? Extension.textPoint(x.summaryPoint) : null;
acc.periodAPR3 = x.kpiPeriod.durationKPI;
acc.yearAPR3 =
x.kpiPeriod.year?Extension.ToThaiNumber(Extension.ToThaiYear(x.kpiPeriod.year).toString()):null;
x.kpiPeriod.year ? Extension.ToThaiNumber(Extension.ToThaiYear(x.kpiPeriod.year).toString()) : null;
}
if (x.kpiPeriod.year === yearNow - 2 && x.kpiPeriod.durationKPI === "OCT") {
acc.summaryPointOCT3 = x.summaryPoint?Extension.ToThaiNumber(x.summaryPoint.toString()):null;
acc.textPointOCT3 = x.summaryPoint?Extension.textPoint(x.summaryPoint):null;
acc.summaryPointOCT3 = x.summaryPoint ? Extension.ToThaiNumber(x.summaryPoint.toString()) : null;
acc.textPointOCT3 = x.summaryPoint ? Extension.textPoint(x.summaryPoint) : null;
acc.periodOCT3 = x.kpiPeriod.durationKPI;
acc.yearOCT3 =
x.kpiPeriod.year?Extension.ToThaiNumber(Extension.ToThaiYear(x.kpiPeriod.year).toString()):null;
x.kpiPeriod.year ? Extension.ToThaiNumber(Extension.ToThaiYear(x.kpiPeriod.year).toString()) : null;
}
if (x.kpiPeriod.year === yearNow - 1 && x.kpiPeriod.durationKPI === "APR") {
acc.summaryPointAPR4 = x.summaryPoint?Extension.ToThaiNumber(x.summaryPoint.toString()):null;
acc.textPointAPR4 = x.summaryPoint?Extension.textPoint(x.summaryPoint):null;
acc.summaryPointAPR4 = x.summaryPoint ? Extension.ToThaiNumber(x.summaryPoint.toString()) : null;
acc.textPointAPR4 = x.summaryPoint ? Extension.textPoint(x.summaryPoint) : null;
acc.periodAPR4 = x.kpiPeriod.durationKPI;
acc.yearAPR4 =
x.kpiPeriod.year?Extension.ToThaiNumber(Extension.ToThaiYear(x.kpiPeriod.year).toString()):null;
x.kpiPeriod.year ? Extension.ToThaiNumber(Extension.ToThaiYear(x.kpiPeriod.year).toString()) : null;
}
if (x.kpiPeriod.year === yearNow - 1 && x.kpiPeriod.durationKPI === "OCT") {
acc.summaryPointOCT4 = x.summaryPoint?Extension.ToThaiNumber(x.summaryPoint.toString()):null;
acc.textPointOCT4 = x.summaryPoint?Extension.textPoint(x.summaryPoint):null;
acc.summaryPointOCT4 = x.summaryPoint ? Extension.ToThaiNumber(x.summaryPoint.toString()) : null;
acc.textPointOCT4 = x.summaryPoint ? Extension.textPoint(x.summaryPoint) : null;
acc.periodOCT4 = x.kpiPeriod.durationKPI;
acc.yearOCT4 =
x.kpiPeriod.year?Extension.ToThaiNumber(Extension.ToThaiYear(x.kpiPeriod.year).toString()):null;
x.kpiPeriod.year ? Extension.ToThaiNumber(Extension.ToThaiYear(x.kpiPeriod.year).toString()) : null;
}
if (x.kpiPeriod.year === yearNow && x.kpiPeriod.durationKPI === "APR") {
acc.summaryPointAPR5 = x.summaryPoint?Extension.ToThaiNumber(x.summaryPoint.toString()):null;
acc.textPointAPR5 = x.summaryPoint?Extension.textPoint(x.summaryPoint):null;
acc.summaryPointAPR5 = x.summaryPoint ? Extension.ToThaiNumber(x.summaryPoint.toString()) : null;
acc.textPointAPR5 = x.summaryPoint ? Extension.textPoint(x.summaryPoint) : null;
acc.periodAPR5 = x.kpiPeriod.durationKPI;
acc.yearAPR5 =
x.kpiPeriod.year?Extension.ToThaiNumber(Extension.ToThaiYear(x.kpiPeriod.year).toString()):null;
x.kpiPeriod.year ? Extension.ToThaiNumber(Extension.ToThaiYear(x.kpiPeriod.year).toString()) : null;
}
if (x.kpiPeriod.year === yearNow && x.kpiPeriod.durationKPI === "OCT") {
acc.summaryPointOCT5 = x.summaryPoint?Extension.ToThaiNumber(x.summaryPoint.toString()):null;
acc.textPointOCT5 = x.summaryPoint?Extension.textPoint(x.summaryPoint):null;
acc.summaryPointOCT5 = x.summaryPoint ? Extension.ToThaiNumber(x.summaryPoint.toString()) : null;
acc.textPointOCT5 = x.summaryPoint ? Extension.textPoint(x.summaryPoint) : null;
acc.periodOCT5 = x.kpiPeriod.durationKPI;
acc.yearOCT5 =
x.kpiPeriod.year?Extension.ToThaiNumber(Extension.ToThaiYear(x.kpiPeriod.year).toString()):null;
x.kpiPeriod.year ? Extension.ToThaiNumber(Extension.ToThaiYear(x.kpiPeriod.year).toString()) : null;
}
return acc;
@ -798,7 +800,7 @@ export class ReportController extends Controller {
);
formattedData = combinedData;
}
}
}
}
if (requestBody.type == "KPI6") {
templateName = "KPI6";
@ -1058,7 +1060,7 @@ export class ReportController extends Controller {
const profileEvaluationIds = await AppDataSource.getRepository(KpiUserEvaluation)
.createQueryBuilder("kpiUserEvaluation")
.leftJoinAndSelect("kpiUserEvaluation.kpiPeriod", "kpiPeriod")
// .where("kpiUserEvaluation.profileId = :profileId", { profileId: requestBody.profileId })
.where("kpiUserEvaluation.profileId = :profileId", { profileId: requestBody.profileId })
.andWhere("kpiUserEvaluation.kpiPeriodId = :kpiPeriodId", {
kpiPeriodId: requestBody.periodId,
})