ผลประเมิน 5 ปี

This commit is contained in:
AdisakKanthawilang 2025-05-15 17:47:24 +07:00
parent 320dd4616c
commit ebeda9aeb6

View file

@ -2391,6 +2391,54 @@ export class OrganizationDotnetController extends Controller {
},
});
const currentYear = new Date().getFullYear();
const years = [currentYear, currentYear - 1, currentYear - 2, currentYear - 3, currentYear - 4];
// APR Averages
const aprAverages: { [year: number]: number | null } = {};
const aprSums: { [year: number]: number } = {};
const aprCounts: { [year: number]: number } = {};
// OCT Averages
const octAverages: { [year: number]: number | null } = {};
const octSums: { [year: number]: number } = {};
const octCounts: { [year: number]: number } = {};
years.forEach(year => {
aprAverages[year] = null;
aprSums[year] = 0;
aprCounts[year] = 0;
octAverages[year] = null;
octSums[year] = 0;
octCounts[year] = 0;
});
profiles.forEach(profile => {
const assessments = profile.profileAssessments || [];
assessments.forEach(assessment => {
const year = Number(assessment.year);
if (years.includes(year)) {
if (assessment.period === 'APR') {
aprSums[year] += assessment.pointSum;
aprCounts[year] += 1;
}
if (assessment.period === 'OCT') {
octSums[year] += assessment.pointSum;
octCounts[year] += 1;
}
}
});
});
years.forEach(year => {
aprAverages[year] = aprCounts[year] > 0 ? aprSums[year] / aprCounts[year] : null;
octAverages[year] = octCounts[year] > 0 ? octSums[year] / octCounts[year] : null;
});
const findRevision = await this.orgRevisionRepo.findOne({
where: { orgRevisionIsCurrent: true },
});
@ -2571,6 +2619,16 @@ export class OrganizationDotnetController extends Controller {
markLeave: false,
markRate: profile.profileAssessments.length > 0 ? true : false,
markInsignia: profile.profileInsignias.length > 0 ? true : false,
apr1:aprAverages[currentYear] ? Extension.textPoint(aprAverages[currentYear] as number) : null,
apr2:aprAverages[currentYear - 1] ? Extension.textPoint(aprAverages[currentYear - 1] as number) : null,
apr3:aprAverages[currentYear - 2] ? Extension.textPoint(aprAverages[currentYear - 2] as number) : null,
apr4:aprAverages[currentYear - 3] ? Extension.textPoint(aprAverages[currentYear - 3] as number) : null,
apr5:aprAverages[currentYear - 4] ? Extension.textPoint(aprAverages[currentYear - 4] as number) : null,
oct1:octAverages[currentYear] ? Extension.textPoint(octAverages[currentYear] as number) : null,
oct2:octAverages[currentYear - 1] ? Extension.textPoint(octAverages[currentYear - 1] as number) : null,
oct3:octAverages[currentYear - 2] ? Extension.textPoint(octAverages[currentYear - 2] as number) : null,
oct4:octAverages[currentYear - 3] ? Extension.textPoint(octAverages[currentYear - 3] as number) : null,
oct5:octAverages[currentYear - 4] ? Extension.textPoint(octAverages[currentYear - 4] as number) : null,
};
});
@ -2616,6 +2674,54 @@ export class OrganizationDotnetController extends Controller {
where: { orgRevisionIsCurrent: true },
});
// const currentYear = new Date().getFullYear();
// const years = [currentYear, currentYear - 1, currentYear - 2, currentYear - 3, currentYear - 4];
// // APR Averages
// const aprAverages: { [year: number]: number | null } = {};
// const aprSums: { [year: number]: number } = {};
// const aprCounts: { [year: number]: number } = {};
// // OCT Averages
// const octAverages: { [year: number]: number | null } = {};
// const octSums: { [year: number]: number } = {};
// const octCounts: { [year: number]: number } = {};
// years.forEach(year => {
// aprAverages[year] = null;
// aprSums[year] = 0;
// aprCounts[year] = 0;
// octAverages[year] = null;
// octSums[year] = 0;
// octCounts[year] = 0;
// });
// profiles.forEach(profile => {
// const assessments = profile.profileAssessments || [];
// assessments.forEach(assessment => {
// const year = Number(assessment.year);
// if (years.includes(year)) {
// if (assessment.period === 'APR') {
// aprSums[year] += assessment.pointSum;
// aprCounts[year] += 1;
// }
// if (assessment.period === 'OCT') {
// octSums[year] += assessment.pointSum;
// octCounts[year] += 1;
// }
// }
// });
// });
// years.forEach(year => {
// aprAverages[year] = aprCounts[year] > 0 ? aprSums[year] / aprCounts[year] : null;
// octAverages[year] = octCounts[year] > 0 ? octSums[year] / octCounts[year] : null;
// });
const mapProfile = profiles.map((profile) => {
const shortName =
profile.current_holders.length == 0
@ -2710,7 +2816,17 @@ export class OrganizationDotnetController extends Controller {
x.orgRevision?.orgRevisionIsDraft == false &&
x.orgRevision?.orgRevisionIsCurrent == true,
)?.orgRootId ?? null,
posNo: shortName ?? "",
posNo: shortName ?? "",
// apr1:aprAverages[currentYear] ? Extension.textPoint(aprAverages[currentYear] as number) : null,
// apr2:aprAverages[currentYear - 1] ? Extension.textPoint(aprAverages[currentYear - 1] as number) : null,
// apr3:aprAverages[currentYear - 2] ? Extension.textPoint(aprAverages[currentYear - 2] as number) : null,
// apr4:aprAverages[currentYear - 3] ? Extension.textPoint(aprAverages[currentYear - 3] as number) : null,
// apr5:aprAverages[currentYear - 4] ? Extension.textPoint(aprAverages[currentYear - 4] as number) : null,
// oct1:octAverages[currentYear] ? Extension.textPoint(octAverages[currentYear] as number) : null,
// oct2:octAverages[currentYear - 1] ? Extension.textPoint(octAverages[currentYear - 1] as number) : null,
// oct3:octAverages[currentYear - 2] ? Extension.textPoint(octAverages[currentYear - 2] as number) : null,
// oct4:octAverages[currentYear - 3] ? Extension.textPoint(octAverages[currentYear - 3] as number) : null,
// oct5:octAverages[currentYear - 4] ? Extension.textPoint(octAverages[currentYear - 4] as number) : null,
};
});
@ -2773,6 +2889,54 @@ export class OrganizationDotnetController extends Controller {
},
});
const currentYear = new Date().getFullYear();
const years = [currentYear, currentYear - 1, currentYear - 2, currentYear - 3, currentYear - 4];
// APR Averages
const aprAverages: { [year: number]: number | null } = {};
const aprSums: { [year: number]: number } = {};
const aprCounts: { [year: number]: number } = {};
// OCT Averages
const octAverages: { [year: number]: number | null } = {};
const octSums: { [year: number]: number } = {};
const octCounts: { [year: number]: number } = {};
years.forEach(year => {
aprAverages[year] = null;
aprSums[year] = 0;
aprCounts[year] = 0;
octAverages[year] = null;
octSums[year] = 0;
octCounts[year] = 0;
});
profiles.forEach(profile => {
const assessments = profile.profileAssessments || [];
assessments.forEach(assessment => {
const year = Number(assessment.year);
if (years.includes(year)) {
if (assessment.period === 'APR') {
aprSums[year] += assessment.pointSum;
aprCounts[year] += 1;
}
if (assessment.period === 'OCT') {
octSums[year] += assessment.pointSum;
octCounts[year] += 1;
}
}
});
});
years.forEach(year => {
aprAverages[year] = aprCounts[year] > 0 ? aprSums[year] / aprCounts[year] : null;
octAverages[year] = octCounts[year] > 0 ? octSums[year] / octCounts[year] : null;
});
const mapProfile = profiles.map((profile) => {
const shortName =
profile.current_holders.length == 0
@ -2952,6 +3116,16 @@ export class OrganizationDotnetController extends Controller {
markLeave: false,
markRate: profile.profileAssessments.length > 0 ? true : false,
markInsignia: profile.profileInsignias.length > 0 ? true : false,
apr1:aprAverages[currentYear] ? Extension.textPoint(aprAverages[currentYear] as number) : null,
apr2:aprAverages[currentYear - 1] ? Extension.textPoint(aprAverages[currentYear - 1] as number) : null,
apr3:aprAverages[currentYear - 2] ? Extension.textPoint(aprAverages[currentYear - 2] as number) : null,
apr4:aprAverages[currentYear - 3] ? Extension.textPoint(aprAverages[currentYear - 3] as number) : null,
apr5:aprAverages[currentYear - 4] ? Extension.textPoint(aprAverages[currentYear - 4] as number) : null,
oct1:octAverages[currentYear] ? Extension.textPoint(octAverages[currentYear] as number) : null,
oct2:octAverages[currentYear - 1] ? Extension.textPoint(octAverages[currentYear - 1] as number) : null,
oct3:octAverages[currentYear - 2] ? Extension.textPoint(octAverages[currentYear - 2] as number) : null,
oct4:octAverages[currentYear - 3] ? Extension.textPoint(octAverages[currentYear - 3] as number) : null,
oct5:octAverages[currentYear - 4] ? Extension.textPoint(octAverages[currentYear - 4] as number) : null,
};
});