no message

This commit is contained in:
Bright 2024-11-19 18:07:06 +07:00
parent ef01602285
commit b1c88e9872

View file

@ -12,10 +12,12 @@ import { OrgChild3 } from "../entities/OrgChild3";
import { OrgChild4 } from "../entities/OrgChild4"; import { OrgChild4 } from "../entities/OrgChild4";
import { PosType } from "../entities/PosType"; import { PosType } from "../entities/PosType";
import { PosLevel } from "../entities/PosLevel"; import { PosLevel } from "../entities/PosLevel";
import { PosMaster } from "../entities/PosMaster";
import Extension from "../interfaces/extension"; import Extension from "../interfaces/extension";
import { LeaveType } from "../entities/LeaveType";
@Route("api/v1/org/report") @Route("api/v1/org/report")
@Tags("Report") @Tags("Report")
@Security("bearerAuth") // @Security("bearerAuth")
@Response( @Response(
HttpStatusCode.INTERNAL_SERVER_ERROR, HttpStatusCode.INTERNAL_SERVER_ERROR,
"เกิดข้อผิดพลาด ไม่สามารถแสดงรายการได้ กรุณาลองใหม่ในภายหลัง", "เกิดข้อผิดพลาด ไม่สามารถแสดงรายการได้ กรุณาลองใหม่ในภายหลัง",
@ -29,6 +31,7 @@ export class ReportController extends Controller {
private child4Repository = AppDataSource.getRepository(OrgChild4); private child4Repository = AppDataSource.getRepository(OrgChild4);
private posTypepository = AppDataSource.getRepository(PosType); private posTypepository = AppDataSource.getRepository(PosType);
private posLevelRepository = AppDataSource.getRepository(PosLevel); private posLevelRepository = AppDataSource.getRepository(PosLevel);
private posMasterRepository = AppDataSource.getRepository(PosMaster);
/** /**
* API Report1 * API Report1
@ -4092,90 +4095,69 @@ export class ReportController extends Controller {
@Get("report4/{rootId}") @Get("report4/{rootId}")
async findReport4(@Path() rootId: string) { async findReport4(@Path() rootId: string) {
const orgRootData = await this.orgRootRepository.find({ const orgRootData = await this.orgRootRepository.findOne({
where: { where: { id: rootId }
id: rootId,
},
order: { orgRootOrder: "ASC" },
relations: [
"posMasters",
"posMasters.positions",
"posMasters.positions.posLevel",
"posMasters.positions.posType",
"posMasters.positions.posExecutive",
],
});
if(!rootId) throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูล");
const posType = await this.posTypepository.find({
order: {
posTypeRank: "ASC",
posLevels: { "posLevelRank": "ASC" }
},
relations: ["posLevels"]
}); });
if (!orgRootData) throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูล");
const posLevel = await this.posLevelRepository.find({ const posMaster = await this.posMasterRepository
order: {"posLevelRank": "ASC"} .createQueryBuilder("posMaster")
}); .leftJoinAndSelect("posMaster.positions", "position")
.leftJoinAndSelect("position.posType", "posType")
.leftJoinAndSelect("position.posLevel", "posLevel")
.where("posMaster.orgRootId = :rootId", { rootId })
.orderBy("posType.posTypeRank", "ASC")
.addOrderBy("posLevel.posLevelRank", "ASC")
.getMany();
const mapData = posType.map((type) => ({ const _posMaster = posMaster.map((x) => ({
id: type.id, type: [...new Set(x.positions.flatMap((y) => y.posType.posTypeName))].join(","),
typeName: type.posTypeName, typeRank: [...new Set(x.positions.flatMap((y) => y.posType.posTypeRank))].join(""),
levels: posLevel level: [...new Set(x.positions.flatMap((y) => y.posLevel.posLevelName))].join(","),
.filter((level) => level.posTypeId === type.id) levelRank: [...new Set(x.positions.flatMap((y) => `${y.posType.posTypeRank}${y.posLevel.posLevelRank}`))].join(""),
.map((level) => ({ levelName: level.posLevelName, id: level.id })), }))
})); // .sort((x:any, y:any) => parseInt(x.typeRank) - parseInt(y.typeRank))
// .sort((x:any, y:any) => parseInt(x.levelRank) - parseInt(y.levelRank));
let _data: any = []; // console.log("XXX: ",_posMaster)
mapData.forEach((type, idx) => { const groupPosMaster = _posMaster.reduce((total: any, idx: any) => {
type.levels.forEach((level, idy) => { const sortedLevel = idx.level.split(",").sort().join(",");
_data.push({ const key = `${idx.type}-${sortedLevel}`;
typeName: idy == 0 ? type.typeName : "",
levelName: level.levelName, if (!total[key]) {
total: orgRootData.length > 0 total[key] = {
? orgRootData[0].posMasters type: idx.type,
.flatMap((x) => x.positions typeRank: idx.typeRank,
.filter((y) => y.posLevelId === level.id && y.posTypeId === type.id ) level: sortedLevel,
.map((z) => ({ LeaveType: idx.levelRank,
position: z.positionName || "" total: 0,
})
)).length
: 0,
remark: "" remark: ""
}); };
}); }
_data.push({ total[key].total += 1;
typeName: "", return total;
levelName: "รวม", }, {});
total: orgRootData.length > 0
? orgRootData[0].posMasters let result = Object.values(groupPosMaster)
.flatMap((x) => x.positions .sort((x:any, y:any) => parseInt(x.typeRank) - parseInt(y.typeRank))
.filter((y) => y.posTypeId === type.id ) .sort((x:any, y:any) => parseInt(x.levelRank) - parseInt(y.levelRank));;
.map((z) => ({ // let _TypeTemp = "";
position: z.positionName || "" // result = result.map((item: any) => {
}) // if (item.type === _TypeTemp) {
)).length // return { ...item, type: "" };
: 0, // }
remark: "" // _TypeTemp = item.type;
}); // return item;
}); // });
_data.push({
typeName: "",
levelName: "รวมทั้งสิ้น",
total: orgRootData.length > 0
? orgRootData[0].posMasters.flatMap((x) => x.positions).length
: 0,
remark: ""
});
return new HttpSuccess({ return new HttpSuccess({
template: "report4", template: "report4",
reportName: "report4", reportName: "report4",
data: { data: {
dateCurrent: Extension.ToThaiShortDate(new Date()), dateCurrent: Extension.ToThaiShortDate(new Date()),
rootName: orgRootData.length > 0 ? orgRootData[0].orgRootName : "-", rootName: orgRootData ? orgRootData.orgRootName : "-",
data: _data data: result
} }
}); });
} }
} }