From 0732071da06c27f813f0af57b2921fbe601b3055 Mon Sep 17 00:00:00 2001 From: Bright Date: Tue, 29 Apr 2025 16:07:24 +0700 Subject: [PATCH] =?UTF-8?q?[Bug=20=E0=B8=AD=E0=B8=B1=E0=B8=95=E0=B8=A3?= =?UTF-8?q?=E0=B8=B2=E0=B8=81=E0=B8=B3=E0=B8=A5=E0=B8=B1=E0=B8=87=E0=B8=A5?= =?UTF-8?q?=E0=B8=B9=E0=B8=81=E0=B8=88=E0=B9=89=E0=B8=B2=E0=B8=87=E0=B8=9B?= =?UTF-8?q?=E0=B8=A3=E0=B8=B0=E0=B8=88=E0=B8=B3]=201=20=E0=B8=84=E0=B8=99?= =?UTF-8?q?=E0=B9=80=E0=B8=A5=E0=B8=B7=E0=B8=AD=E0=B8=81=E0=B8=84=E0=B8=A3?= =?UTF-8?q?=E0=B8=AD=E0=B8=87=E0=B9=84=E0=B8=94=E0=B9=89=201=20=E0=B8=95?= =?UTF-8?q?=E0=B8=B3=E0=B9=81=E0=B8=AB=E0=B8=99=E0=B9=88=E0=B8=87=20#116?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/controllers/ProfileEmployeeController.ts | 34 +++++++++++++++---- .../ProfileEmployeeTempController.ts | 33 ++++++++++++++---- 2 files changed, 53 insertions(+), 14 deletions(-) diff --git a/src/controllers/ProfileEmployeeController.ts b/src/controllers/ProfileEmployeeController.ts index a807c638..0a87094c 100644 --- a/src/controllers/ProfileEmployeeController.ts +++ b/src/controllers/ProfileEmployeeController.ts @@ -2590,7 +2590,7 @@ export class ProfileEmployeeController extends Controller { } const [profiles, total] = await this.profileRepo .createQueryBuilder("profileEmployee") - .leftJoinAndSelect("profileEmployee.next_holders", "next_holders") + .leftJoinAndSelect("profileEmployee.current_holders", "current_holders") .leftJoinAndSelect("profileEmployee.posLevel", "posLevel") .leftJoinAndSelect("profileEmployee.posType", "posType") .where( @@ -2606,12 +2606,29 @@ export class ProfileEmployeeController extends Controller { new Brackets((qb) => { qb.where( requestBody.keyword != null && requestBody.keyword != "" - ? `CONCAT(profileEmployee.prefix, profileEmployee.firstName," ",profileEmployee.lastName) LIKE :keyword` + ? "profileEmployee.prefix LIKE :keyword" : "1=1", { keyword: `%${requestBody.keyword}%`, }, - ).orWhere( + ) + .orWhere( + requestBody.keyword != null && requestBody.keyword != "" + ? "profileEmployee.firstName LIKE :keyword" + : "1=1", + { + keyword: `%${requestBody.keyword}%`, + }, + ) + .orWhere( + requestBody.keyword != null && requestBody.keyword != "" + ? "profileEmployee.lastName LIKE :keyword" + : "1=1", + { + keyword: `%${requestBody.keyword}%`, + }, + ) + .orWhere( requestBody.keyword != null && requestBody.keyword != "" ? "profileEmployee.citizenId LIKE :keyword" : "1=1", @@ -2642,19 +2659,22 @@ export class ProfileEmployeeController extends Controller { qb.where("profileEmployee.id NOT IN (:...ids)", { ids: orgRevision.employeePosMasters - .filter((x) => x.next_holderId != null) - .map((x) => x.next_holderId).length == 0 + .filter((x) => x.current_holderId != null) + .map((x) => x.current_holderId).length == 0 ? ["zxc"] : orgRevision.employeePosMasters - .filter((x) => x.next_holderId != null) - .map((x) => x.next_holderId), + .filter((x) => x.current_holderId != null) + .map((x) => x.current_holderId), }); }), ) .andWhere("profileEmployee.employeeClass = :employeeClass", { employeeClass: "PERM" }) .skip((requestBody.page - 1) * requestBody.pageSize) .take(requestBody.pageSize) + .orderBy("posType.posTypeRank", "ASC") + .addOrderBy("posLevel.posLevelRank", "ASC") .getManyAndCount(); + const data = profiles.map((_data) => ({ id: _data.id, prefix: _data.prefix, diff --git a/src/controllers/ProfileEmployeeTempController.ts b/src/controllers/ProfileEmployeeTempController.ts index a3e7734b..78a7e665 100644 --- a/src/controllers/ProfileEmployeeTempController.ts +++ b/src/controllers/ProfileEmployeeTempController.ts @@ -1704,7 +1704,7 @@ export class ProfileEmployeeTempController extends Controller { } const [profiles, total] = await this.profileRepo .createQueryBuilder("profileEmployee") - .leftJoinAndSelect("profileEmployee.next_holderTemps", "next_holderTemps") + .leftJoinAndSelect("profileEmployee.current_holderTemps", "current_holderTemps") .leftJoinAndSelect("profileEmployee.posLevel", "posLevel") .leftJoinAndSelect("profileEmployee.posType", "posType") .where( @@ -1720,12 +1720,29 @@ export class ProfileEmployeeTempController extends Controller { new Brackets((qb) => { qb.where( requestBody.keyword != null && requestBody.keyword != "" - ? `CONCAT(profileEmployee.prefix, profileEmployee.firstName," ",profileEmployee.lastName) LIKE :keyword` + ? "profileEmployee.prefix LIKE :keyword" : "1=1", { keyword: `%${requestBody.keyword}%`, }, - ).orWhere( + ) + .orWhere( + requestBody.keyword != null && requestBody.keyword != "" + ? "profileEmployee.firstName LIKE :keyword" + : "1=1", + { + keyword: `%${requestBody.keyword}%`, + }, + ) + .orWhere( + requestBody.keyword != null && requestBody.keyword != "" + ? "profileEmployee.lastName LIKE :keyword" + : "1=1", + { + keyword: `%${requestBody.keyword}%`, + }, + ) + .orWhere( requestBody.keyword != null && requestBody.keyword != "" ? "profileEmployee.citizenId LIKE :keyword" : "1=1", @@ -1780,18 +1797,20 @@ export class ProfileEmployeeTempController extends Controller { qb.where("profileEmployee.id NOT IN (:...ids)", { ids: orgRevision.employeeTempPosMasters - .filter((x) => x.next_holderId != null) - .map((x) => x.next_holderId).length == 0 + .filter((x) => x.current_holderId != null) + .map((x) => x.current_holderId).length == 0 ? ["zxc"] : orgRevision.employeeTempPosMasters - .filter((x) => x.next_holderId != null) - .map((x) => x.next_holderId), + .filter((x) => x.current_holderId != null) + .map((x) => x.current_holderId), }); }), ) .andWhere("profileEmployee.employeeClass = :employeeClass", { employeeClass: "TEMP" }) .skip((requestBody.page - 1) * requestBody.pageSize) .take(requestBody.pageSize) + .orderBy("posType.posTypeRank", "ASC") + .addOrderBy("posLevel.posLevelRank", "ASC") .getManyAndCount(); const data = profiles.map((_data) => ({ id: _data.id,