fix orderPeriod/report kpi8

This commit is contained in:
Bright 2024-07-12 16:10:39 +07:00
parent 9526799ec0
commit e8ff7f76cc
2 changed files with 64 additions and 55 deletions

View file

@ -215,7 +215,8 @@ export class kpiPeriodController extends Controller {
year !== 0 && year != null && year != undefined ? "kpiPeriod.year = :year" : "1=1", year !== 0 && year != null && year != undefined ? "kpiPeriod.year = :year" : "1=1",
{ year: year }, { year: year },
) )
.orderBy("kpiPeriod.createdAt", "DESC") .orderBy("kpiPeriod.startDate", "ASC")
.addOrderBy("kpiPeriod.year", "ASC")
.skip((page - 1) * pageSize) .skip((page - 1) * pageSize)
.take(pageSize) .take(pageSize)
.getManyAndCount(); .getManyAndCount();

View file

@ -75,6 +75,7 @@ export class ReportController extends Controller {
where: { where: {
kpiPeriodId: requestBody.periodId, kpiPeriodId: requestBody.periodId,
orgId: requestBody.root, orgId: requestBody.root,
evaluationStatus: "KP7"
}, },
}); });
data = { data = {
@ -1016,66 +1017,14 @@ export class ReportController extends Controller {
templateName = "KPI8"; templateName = "KPI8";
reportName = "KPI8"; reportName = "KPI8";
//use_filter //use_filter
if (requestBody.profileId) { let period_:any
const profileEvaluationIds = await AppDataSource.getRepository(KpiUserEvaluation) let formattedUserDevelopmentLists:any
.createQueryBuilder("kpiUserEvaluation") let userInfo:any
.leftJoinAndSelect("kpiUserEvaluation.kpiPeriod", "kpiPeriod") let userDevelopmentLists:any
// .where("kpiUserEvaluation.profileId = :profileId", { profileId: requestBody.profileId }) let fullNameParts:any
.andWhere("kpiUserEvaluation.kpiPeriodId = :kpiPeriodId", { let affiliation:any
kpiPeriodId: requestBody.periodId, if (requestBody.profileId && requestBody.periodId) {
}) period_ = await this.kpiPeriodRepository.findOne({
.groupBy("kpiUserEvaluation.kpiPeriodId")
.select("MIN(kpiUserEvaluation.id) as id")
.getRawMany();
if (profileEvaluationIds.length > 0) {
const userInfo = await this.kpiUserEvaluationRepository.find({
where: {
id: In(profileEvaluationIds.map((x: any) => x.id)),
},
});
const userDevelopmentLists = await this.kpiUserDevelopmentRepository.find({
where: {
kpiUserEvaluationId: In(profileEvaluationIds.map((x: any) => x.id)),
},
select: [
"id",
"name",
"target",
"summary",
"point",
"achievement0",
"achievement5",
"achievement10",
"isDevelopment10",
"isDevelopment20",
"isDevelopment70",
],
});
const formattedUserDevelopmentLists = userDevelopmentLists.map(
(development: any, index: number) => ({
no: Extension.ToThaiNumber((index + 1).toString()),
...development,
summary: development.summary
? Extension.ToThaiNumber(development.summary.toString())
: null,
point: development.point
? Extension.ToThaiNumber(development.point.toString())
: null,
}),
);
const fullNameParts = [
userInfo[0]?.child4,
userInfo[0]?.child3,
userInfo[0]?.child2,
userInfo[0]?.child1,
userInfo[0]?.org,
];
const affiliation = fullNameParts
.filter((part) => part !== undefined && part !== null)
.join("/");
const period_ = await this.kpiPeriodRepository.findOne({
where: { id: String(requestBody.periodId) } where: { id: String(requestBody.periodId) }
}) })
if(period_ && !period1 && !period2) { if(period_ && !period1 && !period2) {
@ -1106,25 +1055,84 @@ export class ReportController extends Controller {
: ""; : "";
} }
} }
const profileEvaluationIds = await AppDataSource.getRepository(KpiUserEvaluation)
.createQueryBuilder("kpiUserEvaluation")
.leftJoinAndSelect("kpiUserEvaluation.kpiPeriod", "kpiPeriod")
// .where("kpiUserEvaluation.profileId = :profileId", { profileId: requestBody.profileId })
.andWhere("kpiUserEvaluation.kpiPeriodId = :kpiPeriodId", {
kpiPeriodId: requestBody.periodId,
})
.andWhere("kpiUserEvaluation.evaluationStatus = 'KP7'")
.groupBy("kpiUserEvaluation.kpiPeriodId")
.select("MIN(kpiUserEvaluation.id) as id")
.getRawMany();
if (profileEvaluationIds.length > 0) {
userInfo = await this.kpiUserEvaluationRepository.find({
where: {
id: In(profileEvaluationIds.map((x: any) => x.id)),
evaluationStatus: "KP7"
},
});
userDevelopmentLists = await this.kpiUserDevelopmentRepository.find({
where: {
kpiUserEvaluationId: In(profileEvaluationIds.map((x: any) => x.id)),
},
select: [
"id",
"name",
"target",
"summary",
"point",
"achievement0",
"achievement5",
"achievement10",
"isDevelopment10",
"isDevelopment20",
"isDevelopment70",
],
});
formattedUserDevelopmentLists = userDevelopmentLists.map(
(development: any, index: number) => ({
no: Extension.ToThaiNumber((index + 1).toString()),
...development,
summary: development.summary
? Extension.ToThaiNumber(development.summary.toString())
: null,
point: development.point
? Extension.ToThaiNumber(development.point.toString())
: null,
}),
);
fullNameParts = [
userInfo[0]?.child4,
userInfo[0]?.child3,
userInfo[0]?.child2,
userInfo[0]?.child1,
userInfo[0]?.org,
];
affiliation = fullNameParts
.filter((part:any) => part !== undefined && part !== null)
.join("/");
}
}
formattedData = { formattedData = {
year: period_ ? Extension.ToThaiNumber(period_.year.toString()) : "-",
fullName: userInfo fullName: userInfo
? userInfo[0]?.prefix + userInfo[0]?.firstName + " " + userInfo[0]?.lastName ? userInfo[0]?.prefix + userInfo[0]?.firstName + " " + userInfo[0]?.lastName
: null, : "-",
affiliation: affiliation ?? null, affiliation: affiliation ?? "-",
// durationKPI: data?.durationKPI ?? null, durationKPI: period_ ? period_.durationKPI : "-",
durationKPI: period_ ? period_.durationKPI : null, position: userInfo ? userInfo[0]?.position : "-",
position: userInfo ? userInfo[0]?.position : null, posType: userInfo ? userInfo[0]?.posTypeName : "-",
posType: userInfo ? userInfo[0]?.posTypeName : null, posLevel: userInfo ? userInfo[0]?.posLevelName : "-",
posLevel: userInfo ? userInfo[0]?.posLevelName : null,
period1: period1 ? Extension.ToThaiNumber(period1) : "-", period1: period1 ? Extension.ToThaiNumber(period1) : "-",
period2: period2 ? Extension.ToThaiNumber(period2) : "-", period2: period2 ? Extension.ToThaiNumber(period2) : "-",
developments: developments:
formattedUserDevelopmentLists.length > 0 ? formattedUserDevelopmentLists : [{}], formattedUserDevelopmentLists ? formattedUserDevelopmentLists : [{}],
}; };
} }
}
}
if (requestBody.type == "KPI9") { if (requestBody.type == "KPI9") {
templateName = "KPI9"; templateName = "KPI9";
reportName = "KPI9"; reportName = "KPI9";