diff --git a/src/controllers/KpiUserDevelopmentController.ts b/src/controllers/KpiUserDevelopmentController.ts index b88493c..9471186 100644 --- a/src/controllers/KpiUserDevelopmentController.ts +++ b/src/controllers/KpiUserDevelopmentController.ts @@ -366,7 +366,7 @@ export class KpiUserDevelopmentController extends Controller { * */ @Get("admin/detail/{id}") - async GetKpiDevelopmentStatusKP7ById(@Query("id") id: string) { + async GetKpiDevelopmentStatusKP7ById(@Path("id") id: string) { const kpiUserDevelopment = await this.kpiUserDevelopmentRepository.findOne({ relations: [ "kpiUserEvaluation", diff --git a/src/controllers/ReportController.ts b/src/controllers/ReportController.ts index c3cf1e2..3f163a0 100644 --- a/src/controllers/ReportController.ts +++ b/src/controllers/ReportController.ts @@ -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, })