From 5667e04d12f04927601417b415fe85d0982c57a7 Mon Sep 17 00:00:00 2001 From: chenqi Date: Sun, 18 Jan 2026 14:06:44 +0800 Subject: [PATCH] =?UTF-8?q?fix(organization):=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E7=BB=84=E7=BB=87=E6=9F=A5=E8=AF=A2=E4=B8=ADclass=5Fenum?= =?UTF-8?q?=E5=AD=97=E6=AE=B5=E7=9A=84=E5=A4=9A=E5=80=BC=E5=8C=B9=E9=85=8D?= =?UTF-8?q?=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 将FIND_IN_SET函数替换为LIKE操作符组合,提高PostgreSQL兼容性 - 添加子查询包装器支持多种匹配模式 - 实现精确匹配、前缀匹配、后缀匹配和中间匹配四种查询方式 - 确保逗号分隔的枚举值能够正确匹配查询条件 - 优化查询性能并提升代码可读性 --- .../appservice/impl/OrganizationAppServiceImpl.java | 12 +++++++++++- .../service/impl/OrganizationServiceImpl.java | 13 +++++++++++-- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/basedatamanage/appservice/impl/OrganizationAppServiceImpl.java b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/basedatamanage/appservice/impl/OrganizationAppServiceImpl.java index 187d0d4f..3b77e874 100644 --- a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/basedatamanage/appservice/impl/OrganizationAppServiceImpl.java +++ b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/basedatamanage/appservice/impl/OrganizationAppServiceImpl.java @@ -56,7 +56,17 @@ public class OrganizationAppServiceImpl implements IOrganizationAppService { queryWrapper.and(wrapper -> { String[] classEnums = classEnum.split(","); for (String cls : classEnums) { - wrapper.or().apply("FIND_IN_SET(?, class_enum)", cls.trim()); + String trimmedCls = cls.trim(); + // 使用OR连接多个条件来匹配逗号分隔的值 + wrapper.or().and(subWrapper -> { + subWrapper.eq(Organization::getClassEnum, trimmedCls) + .or() + .likeRight(Organization::getClassEnum, trimmedCls + ",") + .or() + .likeLeft(Organization::getClassEnum, "," + trimmedCls) + .or() + .like(Organization::getClassEnum, "," + trimmedCls + ","); + }); } }); } diff --git a/openhis-server-new/openhis-domain/src/main/java/com/openhis/administration/service/impl/OrganizationServiceImpl.java b/openhis-server-new/openhis-domain/src/main/java/com/openhis/administration/service/impl/OrganizationServiceImpl.java index 4d03e66d..417d714e 100644 --- a/openhis-server-new/openhis-domain/src/main/java/com/openhis/administration/service/impl/OrganizationServiceImpl.java +++ b/openhis-server-new/openhis-domain/src/main/java/com/openhis/administration/service/impl/OrganizationServiceImpl.java @@ -69,8 +69,17 @@ public class OrganizationServiceImpl extends ServiceImpl { + subWrapper.eq(Organization::getClassEnum, classValue) + .or() + .likeRight(Organization::getClassEnum, classValue + ",") + .or() + .likeLeft(Organization::getClassEnum, "," + classValue) + .or() + .like(Organization::getClassEnum, "," + classValue + ","); + }); } return baseMapper.selectList(queryWrapper);