From d9c98f4f255b11f43554bdb096592d310f86f21e Mon Sep 17 00:00:00 2001 From: Kittapath Date: Wed, 17 Apr 2024 17:31:07 +0700 Subject: [PATCH] no message --- src/controllers/DevelopmentController.ts | 2 +- .../DevelopmentEmployeeHistoryController.ts | 89 ++++++++++++----- .../DevelopmentHistoryController.ts | 98 +++++++++++++------ .../DevelopmentScholarshipController.ts | 4 +- src/entities/DevelopmentHistory.ts | 7 ++ src/entities/DevelopmentScholarship.ts | 9 ++ ...13347839774-update_table_devhis_add_org.ts | 16 +++ 7 files changed, 169 insertions(+), 56 deletions(-) create mode 100644 src/migration/1713347839774-update_table_devhis_add_org.ts diff --git a/src/controllers/DevelopmentController.ts b/src/controllers/DevelopmentController.ts index 6fbafd9..b1f71a4 100644 --- a/src/controllers/DevelopmentController.ts +++ b/src/controllers/DevelopmentController.ts @@ -1469,7 +1469,7 @@ export class DevelopmentController extends Controller { ? item.employeePosLevel.posLevelName : null, posExecutive: item.posExecutive, - org: item.root, + org: item.org, trainingDays: item.trainingDays, commandNumber: item.order, commandDate: item.dateOrder, diff --git a/src/controllers/DevelopmentEmployeeHistoryController.ts b/src/controllers/DevelopmentEmployeeHistoryController.ts index 48ccdfd..8c587ef 100644 --- a/src/controllers/DevelopmentEmployeeHistoryController.ts +++ b/src/controllers/DevelopmentEmployeeHistoryController.ts @@ -35,6 +35,34 @@ export class DevelopmentEmployeeHistoryController extends Controller { private posTypeRepository = AppDataSource.getRepository(EmployeePosType); private posLevelRepository = AppDataSource.getRepository(EmployeePosLevel); + /** + * API list หน่วยงาน + * + * @summary DEV_00 - list หน่วยงาน # + * + */ + @Get("org/{year}") + async GetOrgDevelopemt(@Path() year: number) { + const type = "EMPLOYEE"; + const getOrg = await this.developmentHistoryRepository + .createQueryBuilder("developmentHistory") + .leftJoinAndSelect("developmentHistory.development", "development") + .andWhere("developmentHistory.root IS NOT NULL") + .andWhere(year > 0 ? "development.year LIKE :year" : "1=1", { + year: `${year.toString()}`, + }) + .andWhere("developmentHistory.type LIKE :type", { + type: `${type}`, + }) + .select("developmentHistory.root") + .groupBy("developmentHistory.root") + .getRawMany(); + if (getOrg.length > 0) { + return new HttpSuccess(getOrg.map((x) => x.developmentHistory_root)); + } + return new HttpSuccess(getOrg); + } + /** * API เพิ่มประวัติการฝึกอบรม/ดูงาน * @@ -187,12 +215,16 @@ export class DevelopmentEmployeeHistoryController extends Controller { * @summary DEV_009 - รายการประวัติการฝึกอบรม/ดูงาน #9 * */ - @Get() + @Post("filter") async GetDevelopmentHistoryLists( - @Query("page") page: number = 1, - @Query("pageSize") pageSize: number = 10, - @Query("keyword") keyword?: string, - @Query("year") year?: number, + @Body() + body: { + page: number; + pageSize: number; + keyword?: string; + year?: number; + root: string | null; + }, ) { const type = "EMPLOYEE"; const [development, total] = await AppDataSource.getRepository(DevelopmentHistory) @@ -201,77 +233,84 @@ export class DevelopmentEmployeeHistoryController extends Controller { .leftJoinAndSelect("developmentHistory.employeePosLevel", "employeePosLevel") .leftJoinAndSelect("developmentHistory.employeePosType", "employeePosType") .andWhere( - year != 0 && year != null && year != undefined ? "development.year = :year" : "1=1", - { year: year }, + body.year != 0 && body.year != null && body.year != undefined + ? "development.year = :year" + : "1=1", + { year: body.year }, ) + .andWhere(body.root != null ? "developmentHistory.root = :root" : "1=1", { root: body.root }) .andWhere("developmentHistory.type = :type", { type: type }) .andWhere( new Brackets((qb) => { qb.where( - keyword != null && keyword != "" ? "developmentHistory.prefix LIKE :keyword" : "1=1", + body.keyword != null && body.keyword != "" + ? "developmentHistory.prefix LIKE :keyword" + : "1=1", { - keyword: `%${keyword}%`, + keyword: `%${body.keyword}%`, }, ) .orWhere( - keyword != null && keyword != "" + body.keyword != null && body.keyword != "" ? "developmentHistory.firstName LIKE :keyword" : "1=1", { - keyword: `%${keyword}%`, + keyword: `%${body.keyword}%`, }, ) .orWhere( - keyword != null && keyword != "" + body.keyword != null && body.keyword != "" ? "developmentHistory.lastName LIKE :keyword" : "1=1", { - keyword: `%${keyword}%`, + keyword: `%${body.keyword}%`, }, ) .orWhere( - keyword != null && keyword != "" + body.keyword != null && body.keyword != "" ? "developmentHistory.position LIKE :keyword" : "1=1", { - keyword: `%${keyword}%`, + keyword: `%${body.keyword}%`, }, ) .orWhere( - keyword != null && keyword != "" + body.keyword != null && body.keyword != "" ? "developmentHistory.position LIKE :keyword" : "1=1", { - keyword: `%${keyword}%`, + keyword: `%${body.keyword}%`, }, ) .orWhere( - keyword != null && keyword != "" ? "development.projectName LIKE :keyword" : "1=1", + body.keyword != null && body.keyword != "" + ? "development.projectName LIKE :keyword" + : "1=1", { - keyword: `%${keyword}%`, + keyword: `%${body.keyword}%`, }, ) .orWhere( - keyword != null && keyword != "" + body.keyword != null && body.keyword != "" ? "employeePosType.posTypeName LIKE :keyword" : "1=1", { - keyword: `%${keyword}%`, + keyword: `%${body.keyword}%`, }, ) .orWhere( - keyword != null && keyword != "" + body.keyword != null && body.keyword != "" ? "employeePosLevel.posLevelName LIKE :keyword" : "1=1", { - keyword: `%${keyword}%`, + keyword: `%${body.keyword}%`, }, ); }), ) .orderBy("developmentHistory.createdAt", "DESC") - .skip((page - 1) * pageSize) - .take(pageSize) + .skip((body.page - 1) * body.pageSize) + .take(body.pageSize) .getManyAndCount(); const formattedData = development.map((item) => ({ diff --git a/src/controllers/DevelopmentHistoryController.ts b/src/controllers/DevelopmentHistoryController.ts index 9f1fd7a..476c201 100644 --- a/src/controllers/DevelopmentHistoryController.ts +++ b/src/controllers/DevelopmentHistoryController.ts @@ -35,6 +35,34 @@ export class DevelopmentOfficerHistoryController extends Controller { private posTypeRepository = AppDataSource.getRepository(PosType); private posLevelRepository = AppDataSource.getRepository(PosLevel); + /** + * API list หน่วยงาน + * + * @summary DEV_00 - list หน่วยงาน # + * + */ + @Get("org/{year}") + async GetOrgDevelopemt(@Path() year: number) { + const type = "OFFICER"; + const getOrg = await this.developmentHistoryRepository + .createQueryBuilder("developmentHistory") + .leftJoinAndSelect("developmentHistory.development", "development") + .andWhere("developmentHistory.root IS NOT NULL") + .andWhere(year > 0 ? "development.year LIKE :year" : "1=1", { + year: `${year.toString()}`, + }) + .andWhere("developmentHistory.type LIKE :type", { + type: `${type}`, + }) + .select("developmentHistory.root") + .groupBy("developmentHistory.root") + .getRawMany(); + if (getOrg.length > 0) { + return new HttpSuccess(getOrg.map((x) => x.developmentHistory_root)); + } + return new HttpSuccess(getOrg); + } + /** * API เพิ่มประวัติการฝึกอบรม/ดูงาน * @@ -179,13 +207,16 @@ export class DevelopmentOfficerHistoryController extends Controller { * @summary DEV_009 - รายการประวัติการฝึกอบรม/ดูงาน #9 * */ - @Get() + @Post("filter") async GetDevelopmentHistoryLists( - @Query("page") page: number = 1, - @Query("pageSize") pageSize: number = 10, - @Query("keyword") keyword?: string, - @Query("year") year?: number, - @Query("root") root?: number, + @Body() + body: { + page: number; + pageSize: number; + keyword?: string; + year?: number; + root: string | null; + }, ) { const type = "OFFICER"; const [development, total] = await AppDataSource.getRepository(DevelopmentHistory) @@ -194,76 +225,87 @@ export class DevelopmentOfficerHistoryController extends Controller { .leftJoinAndSelect("developmentHistory.posLevel", "posLevel") .leftJoinAndSelect("developmentHistory.posType", "posType") .andWhere( - year != 0 && year != null && year != undefined ? "development.year = :year" : "1=1", - { year: year }, + body.year != 0 && body.year != null && body.year != undefined + ? "development.year = :year" + : "1=1", + { year: body.year }, ) - .andWhere(root != null && root != undefined ? "development.root = :root" : "1=1", { - root: root, + .andWhere(body.root != null && body.root != undefined ? "development.root = :root" : "1=1", { + root: body.root, }) + .andWhere(body.root != null ? "developmentHistory.root = :root" : "1=1", { root: body.root }) .andWhere("developmentHistory.type = :type", { type: type }) .andWhere( new Brackets((qb) => { qb.where( - keyword != null && keyword != "" ? "developmentHistory.prefix LIKE :keyword" : "1=1", + body.keyword != null && body.keyword != "" + ? "developmentHistory.prefix LIKE :keyword" + : "1=1", { - keyword: `%${keyword}%`, + keyword: `%${body.keyword}%`, }, ) .orWhere( - keyword != null && keyword != "" + body.keyword != null && body.keyword != "" ? "developmentHistory.firstName LIKE :keyword" : "1=1", { - keyword: `%${keyword}%`, + keyword: `%${body.keyword}%`, }, ) .orWhere( - keyword != null && keyword != "" + body.keyword != null && body.keyword != "" ? "developmentHistory.lastName LIKE :keyword" : "1=1", { - keyword: `%${keyword}%`, + keyword: `%${body.keyword}%`, }, ) .orWhere( - keyword != null && keyword != "" + body.keyword != null && body.keyword != "" ? "developmentHistory.position LIKE :keyword" : "1=1", { - keyword: `%${keyword}%`, + keyword: `%${body.keyword}%`, }, ) .orWhere( - keyword != null && keyword != "" + body.keyword != null && body.keyword != "" ? "developmentHistory.position LIKE :keyword" : "1=1", { - keyword: `%${keyword}%`, + keyword: `%${body.keyword}%`, }, ) .orWhere( - keyword != null && keyword != "" ? "development.projectName LIKE :keyword" : "1=1", + body.keyword != null && body.keyword != "" + ? "development.projectName LIKE :keyword" + : "1=1", { - keyword: `%${keyword}%`, + keyword: `%${body.keyword}%`, }, ) .orWhere( - keyword != null && keyword != "" ? "posType.posTypeName LIKE :keyword" : "1=1", + body.keyword != null && body.keyword != "" + ? "posType.posTypeName LIKE :keyword" + : "1=1", { - keyword: `%${keyword}%`, + keyword: `%${body.keyword}%`, }, ) .orWhere( - keyword != null && keyword != "" ? "posLevel.posLevelName LIKE :keyword" : "1=1", + body.keyword != null && body.keyword != "" + ? "posLevel.posLevelName LIKE :keyword" + : "1=1", { - keyword: `%${keyword}%`, + keyword: `%${body.keyword}%`, }, ); }), ) .orderBy("developmentHistory.createdAt", "DESC") - .skip((page - 1) * pageSize) - .take(pageSize) + .skip((body.page - 1) * body.pageSize) + .take(body.pageSize) .getManyAndCount(); const formattedData = development.map((item) => ({ id: item.id, diff --git a/src/controllers/DevelopmentScholarshipController.ts b/src/controllers/DevelopmentScholarshipController.ts index 830dced..c85f7a4 100644 --- a/src/controllers/DevelopmentScholarshipController.ts +++ b/src/controllers/DevelopmentScholarshipController.ts @@ -238,7 +238,7 @@ export class DevelopmentScholarshipController extends Controller { throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลทุนการศึกษา/ฝึกอบรมนี้"); } const formattedData = { - root: getDevelopment.root ? getDevelopment.root : null, + org: getDevelopment.org ? getDevelopment.org : null, rank: getDevelopment.rank ? getDevelopment.rank : null, prefix: getDevelopment.prefix ? getDevelopment.prefix : null, firstName: getDevelopment.firstName ? getDevelopment.firstName : null, @@ -367,7 +367,7 @@ export class DevelopmentScholarshipController extends Controller { "isGraduated", "graduatedDate", "graduatedReason", - "root", + "org", ], }); if (!getDevelopment) { diff --git a/src/entities/DevelopmentHistory.ts b/src/entities/DevelopmentHistory.ts index 33f0131..12e9ee5 100644 --- a/src/entities/DevelopmentHistory.ts +++ b/src/entities/DevelopmentHistory.ts @@ -22,6 +22,13 @@ export class DevelopmentHistory extends EntityBase { }) root: string; + @Column({ + nullable: true, + comment: "ชื่อหน่วยงานที่สังกัด", + default: null, + }) + org: string; + @Column({ nullable: true, comment: "ชื่อย่อหน่วยงาน", diff --git a/src/entities/DevelopmentScholarship.ts b/src/entities/DevelopmentScholarship.ts index 0b5a3a8..99b3d23 100644 --- a/src/entities/DevelopmentScholarship.ts +++ b/src/entities/DevelopmentScholarship.ts @@ -19,6 +19,13 @@ export class DevelopmentScholarship extends EntityBase { }) root: string; + @Column({ + nullable: true, + comment: "ชื่อหน่วยงานที่สังกัด", + default: null, + }) + org: string; + @Column({ nullable: true, comment: "ชื่อย่อหน่วยงาน", @@ -529,6 +536,7 @@ export class DevelopmentScholarship extends EntityBase { export class CreateDevelopmentScholarship { rootId: string | null; root: string | null; + org: string | null; orgRootShortName: string | null; orgRevisionId: string | null; profileId: string | null; @@ -588,6 +596,7 @@ export class CreateDevelopmentScholarship { export class UpdateDevelopmentScholarship { rootId: string | null; root: string | null; + org: string | null; orgRootShortName: string | null; orgRevisionId: string | null; profileId: string | null; diff --git a/src/migration/1713347839774-update_table_devhis_add_org.ts b/src/migration/1713347839774-update_table_devhis_add_org.ts new file mode 100644 index 0000000..029260d --- /dev/null +++ b/src/migration/1713347839774-update_table_devhis_add_org.ts @@ -0,0 +1,16 @@ +import { MigrationInterface, QueryRunner } from "typeorm"; + +export class UpdateTableDevhisAddOrg1713347839774 implements MigrationInterface { + name = 'UpdateTableDevhisAddOrg1713347839774' + + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE \`developmentHistory\` ADD \`org\` varchar(255) NULL COMMENT 'ชื่อหน่วยงานที่สังกัด'`); + await queryRunner.query(`ALTER TABLE \`developmentScholarship\` ADD \`org\` varchar(255) NULL COMMENT 'ชื่อหน่วยงานที่สังกัด'`); + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE \`developmentScholarship\` DROP COLUMN \`org\``); + await queryRunner.query(`ALTER TABLE \`developmentHistory\` DROP COLUMN \`org\``); + } + +}