Merge branch 'develop' into adiDev
All checks were successful
Build & Deploy on Dev / build (push) Successful in 1m14s

This commit is contained in:
Adisak 2026-05-26 18:11:00 +07:00
commit 9288c9e833
2 changed files with 29 additions and 27 deletions

View file

@ -525,20 +525,19 @@ export class ApiWebServiceController extends Controller {
// สำหรับ ProfileLeave: ตรวจสอบฟิลด์ที่ต้องการ join และแปลง propertyKey // สำหรับ ProfileLeave: ตรวจสอบฟิลด์ที่ต้องการ join และแปลง propertyKey
const profileLeaveFieldJoins: Record<string, string> = {}; // alias -> relationName const profileLeaveFieldJoins: Record<string, string> = {}; // alias -> relationName
if (tbMain === "ProfileLeave") { // Process ProfileLeave fields regardless of main table
propertyKey = propertyKey.map((key) => { propertyKey = propertyKey.map((key) => {
const [table, field] = key.split("."); const [table, field] = key.split(".");
if (table === "ProfileLeave") { if (table === "ProfileLeave") {
const replacement = this.PROFILELEAVE_FIELD_REPLACEMENTS[field]; const replacement = this.PROFILELEAVE_FIELD_REPLACEMENTS[field];
if (replacement) { if (replacement) {
const alias = `${table}_${replacement.joinRelation}`; const alias = `${table}_${replacement.joinRelation}`;
profileLeaveFieldJoins[alias] = replacement.joinRelation; profileLeaveFieldJoins[alias] = replacement.joinRelation;
return `${alias}.${replacement.joinField}`; return `${alias}.${replacement.joinField}`;
}
} }
return key; }
}); return key;
} });
const queryBuilder = repo.createQueryBuilder(tbMain); const queryBuilder = repo.createQueryBuilder(tbMain);
@ -615,10 +614,19 @@ export class ApiWebServiceController extends Controller {
} }
// join สำหรับฟิลด์ ProfileLeave ที่ต้องการดึงค่าจากตารางอื่น // join สำหรับฟิลด์ ProfileLeave ที่ต้องการดึงค่าจากตารางอื่น
if (tbMain === "ProfileLeave" && Object.keys(profileLeaveFieldJoins).length > 0) { if (Object.keys(profileLeaveFieldJoins).length > 0) {
Object.entries(profileLeaveFieldJoins).forEach(([alias, relationName]) => { if (tbMain === "ProfileLeave") {
queryBuilder.leftJoin(`${tbMain}.${relationName}`, alias); // ProfileLeave is the main table - direct join
}); Object.entries(profileLeaveFieldJoins).forEach(([alias, relationName]) => {
queryBuilder.leftJoin(`${tbMain}.${relationName}`, alias);
});
} else {
// ProfileLeave is a related table - the base join is already created by propertyOtherKey logic
// Join from the ProfileLeave alias (not from nested path)
Object.entries(profileLeaveFieldJoins).forEach(([alias, relationName]) => {
queryBuilder.leftJoin(`ProfileLeave.${relationName}`, alias);
});
}
} }
// join สำหรับ PosMaster เมื่อต้องการดึงค่าจาก Profile (ข้อมูลคนครอง) // join สำหรับ PosMaster เมื่อต้องการดึงค่าจาก Profile (ข้อมูลคนครอง)

View file

@ -343,9 +343,11 @@ export class CommandController extends Controller {
.andWhere( .andWhere(
new Brackets((qb) => { new Brackets((qb) => {
qb.where( qb.where(
keyword != null && keyword != "" ? "command.commandNo LIKE :baseKeyword" : "1=1", keyword != null && keyword != ""
? "TRIM(CONCAT(COALESCE(command.shortName, ''), ' ', command.commandNo, '/', command.commandYear + 543)) LIKE :keyword"
: "1=1",
{ {
baseKeyword: `%${baseKeyword}%`, keyword: `%${keyword}%`,
}, },
) )
.orWhere(keyword != null && keyword != "" ? "command.issue LIKE :keyword" : "1=1", { .orWhere(keyword != null && keyword != "" ? "command.issue LIKE :keyword" : "1=1", {
@ -356,14 +358,6 @@ export class CommandController extends Controller {
{ {
keyword: `%${keyword}%`, keyword: `%${keyword}%`,
}, },
)
.orWhere(
keyword != null && keyword != ""
? "CONCAT(command.shortName, ' ', command.commandNo) LIKE :keyword"
: "1=1",
{
keyword: `%${keyword}%`,
},
); );
}), }),
) )