From 1e403f59e0cef59d528b94882512cb637c0c2444 Mon Sep 17 00:00:00 2001 From: harid Date: Thu, 5 Mar 2026 18:00:20 +0700 Subject: [PATCH] =?UTF-8?q?MIgrate=20=E0=B9=80=E0=B8=9E=E0=B8=B4=E0=B9=88?= =?UTF-8?q?=E0=B8=A1=E0=B8=9F=E0=B8=B4=E0=B8=A5=E0=B8=94=E0=B9=8C=E0=B8=A5?= =?UTF-8?q?=E0=B8=B3=E0=B8=94=E0=B8=B1=E0=B8=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/controllers/DevelopmentController.ts | 24 ++++++++++ .../DevelopmentScholarshipController.ts | 48 +++++++++++++++---- src/entities/DevelopmentHistory.ts | 9 ++++ ...-update_developmentHistory_add_field_no.ts | 14 ++++++ 4 files changed, 87 insertions(+), 8 deletions(-) create mode 100644 src/migration/1772705709988-update_developmentHistory_add_field_no.ts diff --git a/src/controllers/DevelopmentController.ts b/src/controllers/DevelopmentController.ts index 3c67c1a..8e0a440 100644 --- a/src/controllers/DevelopmentController.ts +++ b/src/controllers/DevelopmentController.ts @@ -2999,6 +2999,9 @@ export class DevelopmentController extends Controller { development.createdAt = new Date(); development.lastUpdatedAt = new Date(); development.isProfile = true; + development.no = item["ลำดับ"] !== undefined && item["ลำดับ"] !== null && item["ลำดับ"] !== "" && !isNaN(Number(item["ลำดับ"])) + ? Number(item["ลำดับ"]) + : null; await this.developmentHistoryRepository.save(development, { data: request }); setLogDataDiff(request, { before, after: development }); }) @@ -3032,6 +3035,9 @@ export class DevelopmentController extends Controller { development.createdAt = new Date(); development.lastUpdatedAt = new Date(); development.isProfile = false; + development.no = item["ลำดับ"] !== undefined && item["ลำดับ"] !== null && item["ลำดับ"] !== "" && !isNaN(Number(item["ลำดับ"])) + ? Number(item["ลำดับ"]) + : null; await this.developmentHistoryRepository.save(development, { data: request }); setLogDataDiff(request, { before, after: development }); }); @@ -3062,6 +3068,9 @@ export class DevelopmentController extends Controller { development.createdAt = new Date(); development.lastUpdatedAt = new Date(); development.isProfile = true; + development.no = item["ลำดับ"] !== undefined && item["ลำดับ"] !== null && item["ลำดับ"] !== "" && !isNaN(Number(item["ลำดับ"])) + ? Number(item["ลำดับ"]) + : null; await this.developmentHistoryRepository.save(development, { data: request }); setLogDataDiff(request, { before, after: development }); }) @@ -3095,6 +3104,9 @@ export class DevelopmentController extends Controller { development.createdAt = new Date(); development.lastUpdatedAt = new Date(); development.isProfile = false; + development.no = item["ลำดับ"] !== undefined && item["ลำดับ"] !== null && item["ลำดับ"] !== "" && !isNaN(Number(item["ลำดับ"])) + ? Number(item["ลำดับ"]) + : null; await this.developmentHistoryRepository.save(development, { data: request }); setLogDataDiff(request, { before, after: development }); }); @@ -3130,6 +3142,9 @@ export class DevelopmentController extends Controller { development.createdAt = new Date(); development.lastUpdatedAt = new Date(); development.isProfile = false; + development.no = item["ลำดับ"] !== undefined && item["ลำดับ"] !== null && item["ลำดับ"] !== "" && !isNaN(Number(item["ลำดับ"])) + ? Number(item["ลำดับ"]) + : null; await this.developmentHistoryRepository.save(development, { data: request }); setLogDataDiff(request, { before, after: development }); } @@ -3184,6 +3199,9 @@ export class DevelopmentController extends Controller { oldProfile.lastUpdateFullName = request.user.name; oldProfile.createdAt = new Date(); oldProfile.lastUpdatedAt = new Date(); + if(requestBody.no !== undefined && requestBody.no !== null && requestBody.no !== "" && !isNaN(Number(requestBody.no))) { + oldProfile.no = Number(requestBody.no); + } // addLogSequence(request, { // action: "database", // status: "success", @@ -3220,6 +3238,9 @@ export class DevelopmentController extends Controller { development.lastUpdateFullName = request.user.name; development.createdAt = new Date(); development.lastUpdatedAt = new Date(); + if(requestBody.no !== undefined && requestBody.no !== null && requestBody.no !== "" && !isNaN(Number(requestBody.no))) { + development.no = Number(requestBody.no); + } // addLogSequence(request, { // action: "database", // status: "success", @@ -3262,6 +3283,9 @@ export class DevelopmentController extends Controller { development.createdAt = new Date(); development.lastUpdatedAt = new Date(); development.isProfile = false; + if(requestBody.no !== undefined && requestBody.no !== null && requestBody.no !== "" && !isNaN(Number(requestBody.no))) { + development.no = Number(requestBody.no); + } // addLogSequence(request, { // action: "database", // status: "success", diff --git a/src/controllers/DevelopmentScholarshipController.ts b/src/controllers/DevelopmentScholarshipController.ts index 38bcda9..a39889b 100644 --- a/src/controllers/DevelopmentScholarshipController.ts +++ b/src/controllers/DevelopmentScholarshipController.ts @@ -162,6 +162,8 @@ export class DevelopmentScholarshipController extends Controller { @Query("scholarshipType") scholarshipType?: string, @Query("sortBy") sortBy?: string, @Query("descending") descending?: boolean, + @Query("citizenId") citizenId?: string, + @Query("guarantorCitizenId") guarantorCitizenId?: string, ) { let _data = await new permission().PermissionOrgList(request, "SYS_DEV_SCHOLARSHIP"); await new CallAPI() @@ -198,11 +200,23 @@ export class DevelopmentScholarshipController extends Controller { { scholarshipYear: year }, ) .andWhere( - scholarshipType != null && scholarshipType != undefined + scholarshipType != null && scholarshipType != undefined && scholarshipType != "ALL" ? "developmentScholarship.scholarshipType = :scholarshipType" : "1=1", { scholarshipType: scholarshipType }, ) + .andWhere( + citizenId != null && citizenId != undefined && citizenId != "" + ? "developmentScholarship.citizenId = :citizenId" + : "1=1", + { citizenId: citizenId }, + ) + .andWhere( + guarantorCitizenId != null && guarantorCitizenId != undefined && guarantorCitizenId != "" + ? "developmentScholarship.guarantorCitizenId = :guarantorCitizenId" + : "1=1", + { guarantorCitizenId: guarantorCitizenId }, + ) .andWhere( new Brackets((qb) => { qb.where( @@ -213,6 +227,14 @@ export class DevelopmentScholarshipController extends Controller { keyword: `%${keyword}%`, }, ) + .orWhere( + keyword != null && keyword != "" + ? `CONCAT(developmentScholarship.guarantorPrefix, developmentScholarship.guarantorFirstName," ",developmentScholarship.guarantorLastName) like '%${keyword}%'` + : "1=1", + { + keyword: `%${keyword}%`, + }, + ) .orWhere( keyword != null && keyword != "" ? "developmentScholarship.citizenId LIKE :keyword" @@ -268,29 +290,34 @@ export class DevelopmentScholarshipController extends Controller { `posType.posTypeName`, descending ? "DESC" : "ASC" ); - }else if(sortBy === "posLevel"){ + } + else if(sortBy === "posLevel"){ query = query.orderBy( `posLevel.posLevelName`, descending ? "DESC" : "ASC" ); - }else if(sortBy === "year"){ + } + else if(sortBy === "year"){ query = query.orderBy( `developmentScholarship.scholarshipYear`, descending ? "DESC" : "ASC" ); - }else if(sortBy === "fullName"){ + } + else if(sortBy === "fullName"){ query = query .orderBy(`developmentScholarship.prefix`,descending ? "DESC" : "ASC") .addOrderBy(`developmentScholarship.firstName`,descending ? "DESC" : "ASC") .addOrderBy(`developmentScholarship.lastName`,descending ? "DESC" : "ASC") - }else{ + } + else{ query = query.orderBy( `developmentScholarship.${sortBy}`, descending ? "DESC" : "ASC" ); } - }else{ - query = query.orderBy("developmentScholarship.scholarshipYear", "DESC") + } + else{ + query = query.orderBy("developmentScholarship.startDate", "ASC") .addOrderBy("developmentScholarship.createdAt", "DESC") } @@ -303,12 +330,17 @@ export class DevelopmentScholarshipController extends Controller { id: item.id, year: item.scholarshipYear, citizenId: item.citizenId, - fullName: item.prefix + item.firstName + " " + item.lastName, + fullName: `${item.prefix ?? ""}${item.firstName ?? ""} ${item.lastName ?? ""}`, position: item.position, posType: item.posType ? item.posType.posTypeName : null, posLevel: item.posLevel ? item.posLevel.posLevelName : null, posExecutive: item.posExecutive, status: item.status, + scholarshipType: item.scholarshipType, + startDate: item.startDate, + endDate: item.endDate, + fullNameGuarantor: `${item.guarantorPrefix ?? ""}${item.guarantorFirstName ?? ""} ${item.guarantorLastName ?? ""}` , + guarantorCitizenId: item.guarantorCitizenId, })); return new HttpSuccess({ data: formattedData, total }); diff --git a/src/entities/DevelopmentHistory.ts b/src/entities/DevelopmentHistory.ts index eeb61a1..dfbd9c4 100644 --- a/src/entities/DevelopmentHistory.ts +++ b/src/entities/DevelopmentHistory.ts @@ -227,6 +227,13 @@ export class DevelopmentHistory extends EntityBase { default: false, }) isProfile: boolean; + + @Column({ + nullable: true, + comment: "ลำดับ", + default: null, + }) + no: number | null; } export class CreateDevelopmentHistory { @Column() @@ -325,4 +332,6 @@ export class CreateDevelopmentHistoryOBO { dateStart: Date | null; @Column() dateEnd: Date | null; + @Column() + no?: string | null; } diff --git a/src/migration/1772705709988-update_developmentHistory_add_field_no.ts b/src/migration/1772705709988-update_developmentHistory_add_field_no.ts new file mode 100644 index 0000000..15fa63f --- /dev/null +++ b/src/migration/1772705709988-update_developmentHistory_add_field_no.ts @@ -0,0 +1,14 @@ +import { MigrationInterface, QueryRunner } from "typeorm"; + +export class UpdateDevelopmentHistoryAddFieldNo1772705709988 implements MigrationInterface { + name = 'UpdateDevelopmentHistoryAddFieldNo1772705709988' + + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE \`developmentHistory\` ADD \`no\` int NULL COMMENT 'ลำดับ'`); + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE \`developmentHistory\` DROP COLUMN \`no\``); + } + +}