Merge branch 'develop' of github.com:Frappet/hrms-api-org into develop
This commit is contained in:
commit
e3a4ad4ed7
6 changed files with 168 additions and 70 deletions
|
|
@ -122,7 +122,7 @@ export class ImportDataController extends Controller {
|
||||||
// }
|
// }
|
||||||
|
|
||||||
const existingProfile = await this.profileRepo.findOne({
|
const existingProfile = await this.profileRepo.findOne({
|
||||||
where: { citizenId: item.ID },
|
where: { citizenId: item.id.toString() },
|
||||||
});
|
});
|
||||||
if (existingProfile) {
|
if (existingProfile) {
|
||||||
profile.id = existingProfile.id;
|
profile.id = existingProfile.id;
|
||||||
|
|
@ -152,7 +152,7 @@ export class ImportDataController extends Controller {
|
||||||
}
|
}
|
||||||
|
|
||||||
let dateRetire = new Date(item.BORN);
|
let dateRetire = new Date(item.BORN);
|
||||||
profile.citizenId = item.ID == "" ? "" : item.ID;
|
profile.citizenId = item.id.toString() == "" ? "" : item.id.toString();
|
||||||
profile.rank =
|
profile.rank =
|
||||||
item.RANK_NAME == "" ||
|
item.RANK_NAME == "" ||
|
||||||
item.RANK_NAME == "นาย" ||
|
item.RANK_NAME == "นาย" ||
|
||||||
|
|
@ -1817,7 +1817,7 @@ export class ImportDataController extends Controller {
|
||||||
rowCount++;
|
rowCount++;
|
||||||
|
|
||||||
const existingProfile = await this.profileRepo.findOne({
|
const existingProfile = await this.profileRepo.findOne({
|
||||||
where: { citizenId: item.ID },
|
where: { citizenId: item.id.toString() },
|
||||||
});
|
});
|
||||||
if (existingProfile == null) {
|
if (existingProfile == null) {
|
||||||
continue;
|
continue;
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,7 @@ import { ProfileAssessment } from "../entities/ProfileAssessment";
|
||||||
import { log } from "console";
|
import { log } from "console";
|
||||||
import { format } from "path";
|
import { format } from "path";
|
||||||
import { viewProfileEvaluation } from "../entities/view/viewProfileEvaluation";
|
import { viewProfileEvaluation } from "../entities/view/viewProfileEvaluation";
|
||||||
|
import { viewProfileEmployeeEvaluation } from "../entities/view/viewProfileEmployeeEvaluation";
|
||||||
|
|
||||||
@Route("api/v1/org/unauthorize")
|
@Route("api/v1/org/unauthorize")
|
||||||
@Tags("OrganizationUnauthorize")
|
@Tags("OrganizationUnauthorize")
|
||||||
|
|
@ -30,6 +31,7 @@ export class OrganizationUnauthorizeController extends Controller {
|
||||||
private profileEmpRepo = AppDataSource.getRepository(ProfileEmployee);
|
private profileEmpRepo = AppDataSource.getRepository(ProfileEmployee);
|
||||||
private profileAssessmentRepo = AppDataSource.getRepository(ProfileAssessment);
|
private profileAssessmentRepo = AppDataSource.getRepository(ProfileAssessment);
|
||||||
private viewProfileEvaluationRepo = AppDataSource.getRepository(viewProfileEvaluation);
|
private viewProfileEvaluationRepo = AppDataSource.getRepository(viewProfileEvaluation);
|
||||||
|
private viewProfileEmployeeEvaluationRepo = AppDataSource.getRepository(viewProfileEmployeeEvaluation);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* API รายชื่อราชการที่เลื่อนเงินเดือน (unauthorize)
|
* API รายชื่อราชการที่เลื่อนเงินเดือน (unauthorize)
|
||||||
|
|
@ -1174,12 +1176,12 @@ export class OrganizationUnauthorizeController extends Controller {
|
||||||
* @summary ผลการประเมิน 5 ปีย้อนหลังนับจากปีปัจจุบัน
|
* @summary ผลการประเมิน 5 ปีย้อนหลังนับจากปีปัจจุบัน
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
@Get("calculateEvaluation")
|
@Get("calculateEvaluation/{type}")
|
||||||
async calculateEvaluation(
|
async calculateEvaluation(
|
||||||
// @Path() node: number,
|
@Path() type: string,
|
||||||
// @Path() nodeId: string,
|
// @Path() nodeId: string,
|
||||||
) {
|
) {
|
||||||
|
const conType = type.toUpperCase();
|
||||||
// let condition :any = {};
|
// let condition :any = {};
|
||||||
// switch (node) {
|
// switch (node) {
|
||||||
// case 0:
|
// case 0:
|
||||||
|
|
@ -1200,21 +1202,23 @@ export class OrganizationUnauthorizeController extends Controller {
|
||||||
// default:
|
// default:
|
||||||
// throw new HttpError(HttpStatus.NOT_FOUND, "ไม่พบข้อมูล");
|
// throw new HttpError(HttpStatus.NOT_FOUND, "ไม่พบข้อมูล");
|
||||||
// }
|
// }
|
||||||
|
let lists = null;
|
||||||
const lists = await this.viewProfileEvaluationRepo.find({
|
lists = await this.viewProfileEvaluationRepo.find({
|
||||||
// where:{
|
// where:{
|
||||||
// ...condition
|
// ...condition
|
||||||
// }
|
// }
|
||||||
})
|
})
|
||||||
|
if(conType == "EMPLOYEE"){
|
||||||
|
lists = await this.viewProfileEmployeeEvaluationRepo.find({})
|
||||||
|
}
|
||||||
const groupData: any = {};
|
const groupData: any = {};
|
||||||
const year = new Date().getFullYear();
|
const year = new Date().getFullYear();
|
||||||
const years = [year, year - 1, year - 2, year - 3, year - 4];
|
const years = [year, year - 1, year - 2, year - 3, year - 4];
|
||||||
|
|
||||||
lists.forEach((item: any) => {
|
lists.forEach((item: any) => {
|
||||||
if (!groupData[item.profileId]) {
|
if (!groupData[conType == "EMPLOYEE"?item.profileEmployeeId:item.profileId]) {
|
||||||
groupData[item.profileId] = {
|
groupData[conType == "EMPLOYEE"?item.profileEmployeeId:item.profileId] = {
|
||||||
profileId: item.profileId,
|
profileId: conType == "EMPLOYEE"?item.profileEmployeeId:item.profileId,
|
||||||
yearAPR1: "-", periodAPR1: "-", resultAPR1: "-",
|
yearAPR1: "-", periodAPR1: "-", resultAPR1: "-",
|
||||||
yearOCT1: "-", periodOCT1: "-", resultOCT1: "-",
|
yearOCT1: "-", periodOCT1: "-", resultOCT1: "-",
|
||||||
yearAPR2: "-", periodAPR2: "-", resultAPR2: "-",
|
yearAPR2: "-", periodAPR2: "-", resultAPR2: "-",
|
||||||
|
|
@ -1227,7 +1231,6 @@ export class OrganizationUnauthorizeController extends Controller {
|
||||||
yearOCT5: "-", periodOCT5: "-", resultOCT5: "-"
|
yearOCT5: "-", periodOCT5: "-", resultOCT5: "-"
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
const yearIndex = years.indexOf(parseInt(item.year));
|
const yearIndex = years.indexOf(parseInt(item.year));
|
||||||
if (yearIndex !== -1) {
|
if (yearIndex !== -1) {
|
||||||
const yearSuffix = yearIndex + 1;
|
const yearSuffix = yearIndex + 1;
|
||||||
|
|
@ -1235,40 +1238,45 @@ export class OrganizationUnauthorizeController extends Controller {
|
||||||
const periodKey = `period${item.period}${yearSuffix}`;
|
const periodKey = `period${item.period}${yearSuffix}`;
|
||||||
const resultKey = `result${item.period}${yearSuffix}`;
|
const resultKey = `result${item.period}${yearSuffix}`;
|
||||||
|
|
||||||
groupData[item.profileId][yearKey] = item.year;
|
groupData[conType == "EMPLOYEE"?item.profileEmployeeId:item.profileId][yearKey] = item.year;
|
||||||
groupData[item.profileId][periodKey] = item.period;
|
groupData[conType == "EMPLOYEE"?item.profileEmployeeId:item.profileId][periodKey] = item.period;
|
||||||
groupData[item.profileId][resultKey] = item.result;
|
groupData[conType == "EMPLOYEE"?item.profileEmployeeId:item.profileId][resultKey] = item.result;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
const formattedResults = Object.values(groupData).map((x: any) => ({
|
||||||
const formattedResults = Object.values(groupData).map((item: any) => ({
|
profileId: x.profileId,
|
||||||
profileId: item.profileId,
|
yearAPR1: x.yearAPR1,
|
||||||
yearAPR1: item.yearAPR1,
|
periodAPR1: x.periodAPR1,
|
||||||
periodAPR1: item.periodAPR1,
|
resultAPR1: x.resultAPR1,
|
||||||
resultAPR1: item.resultAPR1,
|
yearOCT1: x.yearOCT1,
|
||||||
yearOCT1: item.yearOCT1,
|
periodOCT1: x.periodOCT1,
|
||||||
periodOCT1: item.periodOCT1,
|
resultOCT1: x.resultOCT1,
|
||||||
resultOCT1: item.resultOCT1,
|
yearAPR2: x.yearAPR2,
|
||||||
yearAPR2: item.yearAPR2,
|
periodAPR2: x.periodAPR2,
|
||||||
periodAPR2: item.periodAPR2,
|
resultAPR2: x.resultAPR2,
|
||||||
resultAPR2: item.resultAPR2,
|
yearOCT2: x.yearOCT2,
|
||||||
yearOCT2: item.yearOCT2,
|
periodOCT2: x.periodOCT2,
|
||||||
periodOCT2: item.periodOCT2,
|
resultOCT2: x.resultOCT2,
|
||||||
resultOCT2: item.resultOCT2,
|
yearAPR3: x.yearAPR3,
|
||||||
yearAPR3: item.yearAPR3,
|
periodAPR3: x.periodAPR3,
|
||||||
periodAPR3: item.periodAPR3,
|
resultAPR3: x.resultAPR3,
|
||||||
resultAPR3: item.resultAPR3,
|
yearOCT3: x.yearOCT3,
|
||||||
yearOCT3: item.yearOCT3,
|
periodOCT3: x.periodOCT3,
|
||||||
periodOCT3: item.periodOCT3,
|
resultOCT3: x.resultOCT3,
|
||||||
resultOCT3: item.resultOCT3,
|
yearAPR4: x.yearAPR4,
|
||||||
yearAPR4: item.yearAPR4,
|
periodAPR4: x.periodAPR4,
|
||||||
periodAPR4: item.periodAPR4,
|
resultAPR4: x.resultAPR4,
|
||||||
resultAPR4: item.resultAPR4,
|
yearOCT4: x.yearOCT4,
|
||||||
yearOCT4: item.yearOCT4,
|
periodOCT4: x.periodOCT4,
|
||||||
periodOCT4: item.periodOCT4,
|
resultOCT4: x.resultOCT4,
|
||||||
resultOCT4: item.resultOCT4,
|
yearAPR5: x.yearAPR5,
|
||||||
|
periodAPR5: x.periodAPR5,
|
||||||
|
resultAPR5: x.resultAPR5,
|
||||||
|
yearOCT5: x.yearOCT5,
|
||||||
|
periodOCT5: x.periodOCT5,
|
||||||
|
resultOCT5: x.resultOCT5,
|
||||||
}));
|
}));
|
||||||
|
|
||||||
return new HttpSuccess(formattedResults);
|
return new HttpSuccess(formattedResults);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -81,25 +81,20 @@ export class ReportController extends Controller {
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
const rawdataProfile = await this.posMasterRepository
|
const rawdataProfile = await this.posMasterRepository
|
||||||
.createQueryBuilder("posMaster")
|
.createQueryBuilder('posMaster')
|
||||||
.leftJoinAndSelect("posMaster.current_holder", "current_holder")
|
.leftJoinAndSelect('posMaster.current_holder', 'current_holder')
|
||||||
.leftJoinAndSelect("posMaster.positions", "positions")
|
.leftJoinAndSelect('posMaster.positions', 'positions')
|
||||||
.leftJoinAndSelect("posMaster.orgRoot", "orgRoot")
|
.leftJoinAndSelect('posMaster.orgRoot', 'orgRoot')
|
||||||
.leftJoinAndSelect("positions.posExecutive", "posExecutive")
|
.leftJoinAndSelect('positions.posExecutive', 'posExecutive')
|
||||||
.leftJoinAndSelect("current_holder.posType", "posType")
|
.leftJoinAndSelect('current_holder.posType', 'posType')
|
||||||
.leftJoinAndSelect("current_holder.posLevel", "posLevel")
|
.leftJoinAndSelect('current_holder.posLevel', 'posLevel')
|
||||||
.leftJoinAndSelect("current_holder.profileEducations", "profileEducations")
|
.leftJoinAndSelect('current_holder.profileEducations', 'profileEducations')
|
||||||
.where("posMaster.orgRevisionId = :currentRevisionId", {
|
.where('posMaster.orgRevisionId = :currentRevisionId', { currentRevisionId: currentRevision?.id })
|
||||||
currentRevisionId: currentRevision?.id,
|
.andWhere(rootId?'posMaster.orgRootId = :rootId': "1=1", { rootId: rootId })
|
||||||
})
|
.andWhere('posMaster.current_holderId Is Not Null')
|
||||||
.andWhere(rootId ? "posMaster.orgRootId = :rootId" : "1=1", { rootId: rootId })
|
.andWhere('positions.positionIsSelected = :positionIsSelected', { positionIsSelected: true })
|
||||||
.andWhere("posMaster.current_holderId Is Not Null")
|
.andWhere( yearInAD && yearInAD != null? 'YEAR(current_holder.dateAppoint) = :year': "1=1", { year: yearInAD }) //ตอนนี้ where ที่วันที่บรรจุ (รอ prove) ว่าจะ where ที่ไหน
|
||||||
.andWhere("positions.positionIsSelected = :positionIsSelected", { positionIsSelected: true })
|
.andWhere(`
|
||||||
.andWhere(yearInAD && yearInAD != null ? "YEAR(current_holder.dateAppoint) = :year" : "1=1", {
|
|
||||||
year: yearInAD,
|
|
||||||
})
|
|
||||||
.andWhere(
|
|
||||||
`
|
|
||||||
TIMESTAMPDIFF(YEAR, current_holder.birthDate, CURDATE()) >= :minAge
|
TIMESTAMPDIFF(YEAR, current_holder.birthDate, CURDATE()) >= :minAge
|
||||||
AND TIMESTAMPDIFF(YEAR, current_holder.birthDate, CURDATE()) <= :maxAge
|
AND TIMESTAMPDIFF(YEAR, current_holder.birthDate, CURDATE()) <= :maxAge
|
||||||
`,
|
`,
|
||||||
|
|
@ -157,7 +152,6 @@ export class ReportController extends Controller {
|
||||||
...item,
|
...item,
|
||||||
count: Extension.ToThaiNumber(item.count.toString()),
|
count: Extension.ToThaiNumber(item.count.toString()),
|
||||||
}));
|
}));
|
||||||
|
|
||||||
return new HttpSuccess({
|
return new HttpSuccess({
|
||||||
template: "registry-officer",
|
template: "registry-officer",
|
||||||
reportName: "xlsx-report",
|
reportName: "xlsx-report",
|
||||||
|
|
|
||||||
|
|
@ -12,12 +12,12 @@ export class OFFICER {
|
||||||
// })
|
// })
|
||||||
// RET_YEAR: string;
|
// RET_YEAR: string;
|
||||||
|
|
||||||
@Column({
|
// @Column({
|
||||||
nullable: true,
|
// nullable: true,
|
||||||
type: "text",
|
// type: "text",
|
||||||
default: null,
|
// default: null,
|
||||||
})
|
// })
|
||||||
ID: string;
|
// ID: string;
|
||||||
|
|
||||||
@Column({
|
@Column({
|
||||||
nullable: true,
|
nullable: true,
|
||||||
|
|
|
||||||
55
src/entities/view/viewProfileEmployeeEvaluation.ts
Normal file
55
src/entities/view/viewProfileEmployeeEvaluation.ts
Normal file
|
|
@ -0,0 +1,55 @@
|
||||||
|
import { ViewColumn, ViewEntity } from "typeorm";
|
||||||
|
|
||||||
|
@ViewEntity({
|
||||||
|
expression: `SELECT
|
||||||
|
\`profileEmployeeId\`,
|
||||||
|
\`period\`,
|
||||||
|
\`year\`,
|
||||||
|
\`employeePosMaster\`.\`orgRootId\`,
|
||||||
|
\`employeePosMaster\`.\`orgChild1Id\`,
|
||||||
|
\`employeePosMaster\`.\`orgChild2Id\`,
|
||||||
|
\`employeePosMaster\`.\`orgChild3Id\`,
|
||||||
|
\`employeePosMaster\`.\`orgChild4Id\`,
|
||||||
|
COUNT(*) AS recordCount,
|
||||||
|
SUM(pointSum) AS totalPointSum,
|
||||||
|
SUM(pointSum) / COUNT(*) AS result
|
||||||
|
FROM \`profileAssessment\`
|
||||||
|
LEFT JOIN \`profileEmployee\` ON \`profileAssessment\`.\`profileEmployeeId\` = \`profileEmployee\`.\`id\`
|
||||||
|
LEFT JOIN \`employeePosMaster\` ON \`profileEmployee\`.\`id\` = \`employeePosMaster\`.\`current_holderId\`
|
||||||
|
LEFT JOIN \`orgRevision\` ON \`employeePosMaster\`.\`orgRevisionId\` = \`orgRevision\`.\`id\`
|
||||||
|
WHERE \`period\` IS NOT NULL
|
||||||
|
AND \`orgRevision\`.\`orgRevisionIsCurrent\` = TRUE
|
||||||
|
GROUP BY \`profileEmployeeId\`, \`period\`, \`year\`,
|
||||||
|
\`employeePosMaster\`.\`orgRootId\`,
|
||||||
|
\`employeePosMaster\`.\`orgChild1Id\`,
|
||||||
|
\`employeePosMaster\`.\`orgChild2Id\`,
|
||||||
|
\`employeePosMaster\`.\`orgChild3Id\`,
|
||||||
|
\`employeePosMaster\`.\`orgChild4Id\`
|
||||||
|
ORDER BY \`year\` DESC, \`period\` ASC;
|
||||||
|
`,
|
||||||
|
})
|
||||||
|
|
||||||
|
export class viewProfileEmployeeEvaluation {
|
||||||
|
@ViewColumn()
|
||||||
|
profileEmployeeId: string;
|
||||||
|
@ViewColumn()
|
||||||
|
period: string;
|
||||||
|
@ViewColumn()
|
||||||
|
year: number;
|
||||||
|
@ViewColumn()
|
||||||
|
orgRootId: string;
|
||||||
|
@ViewColumn()
|
||||||
|
orgChild1Id: string;
|
||||||
|
@ViewColumn()
|
||||||
|
orgChild2Id: string;
|
||||||
|
@ViewColumn()
|
||||||
|
orgChild3Id: string;
|
||||||
|
@ViewColumn()
|
||||||
|
orgChild4Id: string;
|
||||||
|
@ViewColumn()
|
||||||
|
recordCount: number;
|
||||||
|
@ViewColumn()
|
||||||
|
totalPointSum: number;
|
||||||
|
@ViewColumn()
|
||||||
|
result: number;
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,41 @@
|
||||||
|
import { MigrationInterface, QueryRunner } from "typeorm";
|
||||||
|
|
||||||
|
export class AddViewProfileEmployeeEvaluation1739768503699 implements MigrationInterface {
|
||||||
|
name = 'AddViewProfileEmployeeEvaluation1739768503699'
|
||||||
|
|
||||||
|
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||||
|
await queryRunner.query(`CREATE VIEW \`view_profile_employee_evaluation\` AS SELECT
|
||||||
|
\`profileEmployeeId\`,
|
||||||
|
\`period\`,
|
||||||
|
\`year\`,
|
||||||
|
\`employeePosMaster\`.\`orgRootId\`,
|
||||||
|
\`employeePosMaster\`.\`orgChild1Id\`,
|
||||||
|
\`employeePosMaster\`.\`orgChild2Id\`,
|
||||||
|
\`employeePosMaster\`.\`orgChild3Id\`,
|
||||||
|
\`employeePosMaster\`.\`orgChild4Id\`,
|
||||||
|
COUNT(*) AS recordCount,
|
||||||
|
SUM(pointSum) AS totalPointSum,
|
||||||
|
SUM(pointSum) / COUNT(*) AS result
|
||||||
|
FROM \`profileAssessment\`
|
||||||
|
LEFT JOIN \`profileEmployee\` ON \`profileAssessment\`.\`profileEmployeeId\` = \`profileEmployee\`.\`id\`
|
||||||
|
LEFT JOIN \`employeePosMaster\` ON \`profileEmployee\`.\`id\` = \`employeePosMaster\`.\`current_holderId\`
|
||||||
|
LEFT JOIN \`orgRevision\` ON \`employeePosMaster\`.\`orgRevisionId\` = \`orgRevision\`.\`id\`
|
||||||
|
WHERE \`period\` IS NOT NULL
|
||||||
|
AND \`orgRevision\`.\`orgRevisionIsCurrent\` = TRUE
|
||||||
|
GROUP BY \`profileEmployeeId\`, \`period\`, \`year\`,
|
||||||
|
\`employeePosMaster\`.\`orgRootId\`,
|
||||||
|
\`employeePosMaster\`.\`orgChild1Id\`,
|
||||||
|
\`employeePosMaster\`.\`orgChild2Id\`,
|
||||||
|
\`employeePosMaster\`.\`orgChild3Id\`,
|
||||||
|
\`employeePosMaster\`.\`orgChild4Id\`
|
||||||
|
ORDER BY \`year\` DESC, \`period\` ASC;
|
||||||
|
`);
|
||||||
|
await queryRunner.query(`INSERT INTO \`bma_ehr_organization_demo\`.\`typeorm_metadata\`(\`database\`, \`schema\`, \`table\`, \`type\`, \`name\`, \`value\`) VALUES (DEFAULT, ?, DEFAULT, ?, ?, ?)`, ["bma_ehr_organization_demo","VIEW","view_profile_employee_evaluation","SELECT \n `profileEmployeeId`,\n `period`,\n `year`,\n `employeePosMaster`.`orgRootId`,\n `employeePosMaster`.`orgChild1Id`,\n `employeePosMaster`.`orgChild2Id`,\n `employeePosMaster`.`orgChild3Id`,\n `employeePosMaster`.`orgChild4Id`, \n COUNT(*) AS recordCount, \n SUM(pointSum) AS totalPointSum, \n SUM(pointSum) / COUNT(*) AS result\n FROM `profileAssessment` \n LEFT JOIN `profileEmployee` ON `profileAssessment`.`profileEmployeeId` = `profileEmployee`.`id`\n LEFT JOIN `employeePosMaster` ON `profileEmployee`.`id` = `employeePosMaster`.`current_holderId`\n LEFT JOIN `orgRevision` ON `employeePosMaster`.`orgRevisionId` = `orgRevision`.`id`\n WHERE `period` IS NOT NULL\n AND `orgRevision`.`orgRevisionIsCurrent` = TRUE\n GROUP BY `profileEmployeeId`, `period`, `year`, \n `employeePosMaster`.`orgRootId`, \n `employeePosMaster`.`orgChild1Id`, \n `employeePosMaster`.`orgChild2Id`, \n `employeePosMaster`.`orgChild3Id`, \n `employeePosMaster`.`orgChild4Id`\n ORDER BY `year` DESC, `period` ASC;"]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||||
|
await queryRunner.query(`DELETE FROM \`bma_ehr_organization_demo\`.\`typeorm_metadata\` WHERE \`type\` = ? AND \`name\` = ? AND \`schema\` = ?`, ["VIEW","view_profile_employee_evaluation","bma_ehr_organization_demo"]);
|
||||||
|
await queryRunner.query(`DROP VIEW \`view_profile_employee_evaluation\``);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue