Browse Source

fix: 修复残疾人企业查询公司名称筛选错误

修复问题2:按公司名称搜索"中智"时会返回"中宏人寿"等其他公司的记录

根本原因:
1. companyName 被错误地放在 OR 并集查询中(与姓名、身份证号、平台ID一起)
2. 路由层未传递 companyName 参数到服务层

修复方案:
- disabled-person.service.ts: 将 companyName 从 OR 并集查询移除,使用独立的 AND 逻辑
- person-company.routes.ts: 添加缺失的 companyName 参数传递

验证结果:
- 搜索"中智"现在只返回5条"中智经济技术合作股份有限公司"记录
- 其他筛选条件(性别、残疾类别、残疾等级、姓名等)均无回归问题

Generated with [Claude Code](https://claude.ai/code)
via [Happy](https://happy.engineering)

Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Happy <yesreply@happy.engineering>
yourname 4 weeks ago
parent
commit
003c0f9935

+ 1 - 0
allin-packages/disability-module/src/routes/person-company.routes.ts

@@ -59,6 +59,7 @@ const app = new OpenAPIHono<AuthContext>()
         district: query.district,
         district: query.district,
         disabilityId: query.disabilityId,
         disabilityId: query.disabilityId,
         companyId: query.companyId,
         companyId: query.companyId,
+        companyName: query.companyName,
         platformId: query.platformId,
         platformId: query.platformId,
         page: query.skip ? Math.floor(query.skip / (query.take || 10)) + 1 : 1,
         page: query.skip ? Math.floor(query.skip / (query.take || 10)) + 1 : 1,
         limit: query.take || 10
         limit: query.take || 10

+ 7 - 6
allin-packages/disability-module/src/services/disabled-person.service.ts

@@ -927,8 +927,8 @@ export class DisabledPersonService extends GenericCrudService<DisabledPerson> {
       .innerJoin('op.order', 'order')
       .innerJoin('op.order', 'order')
       .leftJoin('order.company', 'company');
       .leftJoin('order.company', 'company');
 
 
-    // 并集查询逻辑:姓名 OR 身份证号 OR 平台 OR 公司名称
-    const hasUnionFilter = name || idCardParam || platformId || companyName;
+    // 并集查询逻辑:姓名 OR 身份证号 OR 平台
+    const hasUnionFilter = name || idCardParam || platformId;
 
 
     if (hasUnionFilter) {
     if (hasUnionFilter) {
       const unionConditions: string[] = [];
       const unionConditions: string[] = [];
@@ -946,16 +946,17 @@ export class DisabledPersonService extends GenericCrudService<DisabledPerson> {
         unionConditions.push('order.platformId = :platformId');
         unionConditions.push('order.platformId = :platformId');
         parameters.platformId = platformId;
         parameters.platformId = platformId;
       }
       }
-      if (companyName) {
-        unionConditions.push('company.companyName LIKE :companyName');
-        parameters.companyName = `%${companyName}%`;
-      }
 
 
       if (unionConditions.length > 0) {
       if (unionConditions.length > 0) {
         queryBuilder.andWhere(`(${unionConditions.join(' OR ')})`, parameters);
         queryBuilder.andWhere(`(${unionConditions.join(' OR ')})`, parameters);
       }
       }
     }
     }
 
 
+    // 公司名称筛选:使用 AND 逻辑(独立筛选条件)
+    if (companyName) {
+      queryBuilder.andWhere('company.companyName LIKE :companyName', { companyName: `%${companyName}%` });
+    }
+
     // 其他筛选条件继续使用 AND 逻辑
     // 其他筛选条件继续使用 AND 逻辑
     if (gender) {
     if (gender) {
       queryBuilder.andWhere('person.gender = :gender', { gender });
       queryBuilder.andWhere('person.gender = :gender', { gender });