diff --git a/openhis-server-new/openhis-application/pom.xml b/openhis-server-new/openhis-application/pom.xml index 2c60a5c1..da4f5578 100644 --- a/openhis-server-new/openhis-application/pom.xml +++ b/openhis-server-new/openhis-application/pom.xml @@ -112,6 +112,13 @@ 17 17 UTF-8 + + + org.projectlombok + lombok + ${lombok.version} + + diff --git a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/basedatamanage/appservice/IOrganizationAppService.java b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/basedatamanage/appservice/IOrganizationAppService.java index 9d6c3782..0fac92e3 100644 --- a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/basedatamanage/appservice/IOrganizationAppService.java +++ b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/basedatamanage/appservice/IOrganizationAppService.java @@ -5,6 +5,7 @@ import com.core.common.core.domain.R; import com.openhis.web.basedatamanage.dto.OrganizationDto; import javax.servlet.http.HttpServletRequest; +import java.util.List; /** * Organization 应该服务类 @@ -17,13 +18,13 @@ public interface IOrganizationAppService { * @param pageSize 查询条数 * @param name 科室名称 * @param typeEnum 科室类型 - * @param classEnum 科室分类 + * @param classEnumList 科室分类列表(逗号分隔的值) * @param sortField 排序字段 * @param sortOrder 排序方向 * @param request 请求数据 * @return 机构树分页列表 */ - Page getOrganizationTree(Integer pageNo, Integer pageSize, String name, Integer typeEnum, String classEnum, + Page getOrganizationTree(Integer pageNo, Integer pageSize, String name, Integer typeEnum, List classEnumList, String sortField, String sortOrder, HttpServletRequest request); /** 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 3b77e874..a78af066 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 @@ -39,50 +39,69 @@ public class OrganizationAppServiceImpl implements IOrganizationAppService { private AssignSeqUtil assignSeqUtil; @Override - public Page getOrganizationTree(Integer pageNo, Integer pageSize, String name, Integer typeEnum, String classEnum, + public Page getOrganizationTree(Integer pageNo, Integer pageSize, String name, Integer typeEnum, List classEnumList, String sortField, String sortOrder, HttpServletRequest request) { + + // 使用Page对象进行分页查询 + Page page = new Page<>(pageNo, pageSize); + // 创建查询条件 LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(Organization::getDeleteFlag, "0"); // 只查询未删除的记录 - // 添加查询条件 if (StringUtils.isNotEmpty(name)) { queryWrapper.like(Organization::getName, name); } if (typeEnum != null) { queryWrapper.eq(Organization::getTypeEnum, typeEnum); } - if (StringUtils.isNotEmpty(classEnum)) { - // 对于多选,需要处理逗号分隔的值 + if (classEnumList != null && !classEnumList.isEmpty()) { + // 使用OR条件来匹配class_enum字段中包含任一值的记录 queryWrapper.and(wrapper -> { - String[] classEnums = classEnum.split(","); - for (String cls : classEnums) { - 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 + ","); - }); + for (int i = 0; i < classEnumList.size(); i++) { + String classEnum = classEnumList.get(i); + if (i == 0) { + // 第一个条件 + wrapper.and(subWrapper -> { + subWrapper.eq(Organization::getClassEnum, classEnum) // 精确匹配 + .or() // 或者 + .likeRight(Organization::getClassEnum, classEnum + ",") // 以"值,"开头 + .or() // 或者 + .likeLeft(Organization::getClassEnum, "," + classEnum) // 以",值"结尾 + .or() // 或者 + .like(Organization::getClassEnum, "," + classEnum + ","); // 在中间,被逗号包围 + }); + } else { + // 后续条件使用OR连接 + wrapper.or(subWrapper -> { + subWrapper.eq(Organization::getClassEnum, classEnum) // 精确匹配 + .or() // 或者 + .likeRight(Organization::getClassEnum, classEnum + ",") // 以"值,"开头 + .or() // 或者 + .likeLeft(Organization::getClassEnum, "," + classEnum) // 以",值"结尾 + .or() // 或者 + .like(Organization::getClassEnum, "," + classEnum + ","); // 在中间,被逗号包围 + }); + } } }); } - // 创建Page对象 - Page page = new Page<>(pageNo, pageSize); - // 执行分页查询 - page = organizationService.page(page, queryWrapper); + Page resultPage = organizationService.page(page, queryWrapper); - List organizationList = page.getRecords(); - // 将机构列表转为树结构 + // 将查询结果转为DTO并构建树结构 + List organizationList = resultPage.getRecords(); List orgTree = buildTree(organizationList); - Page orgQueryDtoPage = new Page<>(pageNo, pageSize, page.getTotal()); - orgQueryDtoPage.setRecords(orgTree); - return orgQueryDtoPage; + + // 创建结果分页对象 + Page result = new Page<>(); + result.setRecords(orgTree); + result.setTotal(resultPage.getTotal()); + result.setSize(resultPage.getSize()); + result.setCurrent(resultPage.getCurrent()); + + return result; } /** diff --git a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/basedatamanage/controller/OrganizationController.java b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/basedatamanage/controller/OrganizationController.java index 27d98990..481412d3 100644 --- a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/basedatamanage/controller/OrganizationController.java +++ b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/basedatamanage/controller/OrganizationController.java @@ -5,6 +5,7 @@ package com.openhis.web.basedatamanage.controller; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.core.common.core.domain.R; +import com.core.common.utils.StringUtils; import com.core.common.utils.MessageUtils; import com.openhis.common.constant.PromptMsgConstant; import com.openhis.web.basedatamanage.appservice.IOrganizationAppService; @@ -16,6 +17,8 @@ import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; +import java.util.Arrays; +import java.util.List; /** * 机构管理controller @@ -43,7 +46,7 @@ public class OrganizationController { * @param pageSize 查询条数 * @param name 科室名称 * @param typeEnum 科室类型 - * @param classEnum 科室分类 + * @param classEnum 科室分类(支持多选,逗号分隔) * @param sortField 排序字段 * @param sortOrder 排序方向 * @param request 请求对象 @@ -57,8 +60,15 @@ public class OrganizationController { @RequestParam(value = "classEnum", required = false) String classEnum, @RequestParam(value = "sortField", required = false) String sortField, @RequestParam(value = "sortOrder", required = false) String sortOrder, HttpServletRequest request) { + + // 解析classEnum参数,支持逗号分隔的多个值 + List classEnumList = null; + if (StringUtils.isNotBlank(classEnum)) { + classEnumList = Arrays.asList(classEnum.split(",")); + } + Page organizationTree = - iOrganizationAppService.getOrganizationTree(pageNo, pageSize, name, typeEnum, classEnum, sortField, sortOrder, request); + iOrganizationAppService.getOrganizationTree(pageNo, pageSize, name, typeEnum, classEnumList, sortField, sortOrder, request); return R.ok(organizationTree, MessageUtils.createMessage(PromptMsgConstant.Common.M00009, new Object[] {"机构信息"})); } diff --git a/openhis-server-new/openhis-domain/pom.xml b/openhis-server-new/openhis-domain/pom.xml index 945bf489..d216f6cb 100644 --- a/openhis-server-new/openhis-domain/pom.xml +++ b/openhis-server-new/openhis-domain/pom.xml @@ -23,6 +23,14 @@ 17 17 + UTF-8 + + + org.projectlombok + lombok + ${lombok.version} + + diff --git a/openhis-server-new/openhis-domain/src/main/java/com/openhis/administration/mapper/OrganizationMapper.java b/openhis-server-new/openhis-domain/src/main/java/com/openhis/administration/mapper/OrganizationMapper.java index 820ea0b1..db8266ad 100644 --- a/openhis-server-new/openhis-domain/src/main/java/com/openhis/administration/mapper/OrganizationMapper.java +++ b/openhis-server-new/openhis-domain/src/main/java/com/openhis/administration/mapper/OrganizationMapper.java @@ -3,6 +3,7 @@ package com.openhis.administration.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.openhis.administration.domain.Organization; import com.openhis.administration.dto.OrgDataDto; +import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Repository; import java.util.List; @@ -24,4 +25,5 @@ public interface OrganizationMapper extends BaseMapper { **/ List searchOrgDataByHealth(); + } \ No newline at end of file diff --git a/openhis-server-new/openhis-domain/src/main/java/com/openhis/administration/service/IEncounterDiagnosisService.java b/openhis-server-new/openhis-domain/src/main/java/com/openhis/administration/service/IEncounterDiagnosisService.java index 52aa0b84..9847de00 100644 --- a/openhis-server-new/openhis-domain/src/main/java/com/openhis/administration/service/IEncounterDiagnosisService.java +++ b/openhis-server-new/openhis-domain/src/main/java/com/openhis/administration/service/IEncounterDiagnosisService.java @@ -45,13 +45,13 @@ public interface IEncounterDiagnosisService extends IService List getDiagnosisList(Long encounterId); /** - * 查询 EncounterDiagnosis - * + * 查询特定类型的诊断 + * * @param encounterId 就诊id * @param ybIptDiseTypeCode 诊断类型 * @return 诊断集合 */ - List getDiagnosisList(Long encounterId, YbIptDiseTypeCode ybIptDiseTypeCode); + List getDiagnosisListByType(Long encounterId, YbIptDiseTypeCode ybIptDiseTypeCode); /** * 查询 EncounterDiagnosis diff --git a/openhis-server-new/openhis-domain/src/main/java/com/openhis/administration/service/IOrganizationService.java b/openhis-server-new/openhis-domain/src/main/java/com/openhis/administration/service/IOrganizationService.java index 136e054f..c6ab79b2 100644 --- a/openhis-server-new/openhis-domain/src/main/java/com/openhis/administration/service/IOrganizationService.java +++ b/openhis-server-new/openhis-domain/src/main/java/com/openhis/administration/service/IOrganizationService.java @@ -55,4 +55,5 @@ public interface IOrganizationService extends IService { * @return List **/ List searchOrgDataByHealth(); + } \ No newline at end of file diff --git a/openhis-server-new/openhis-domain/src/main/java/com/openhis/administration/service/impl/EncounterDiagnosisServiceImpl.java b/openhis-server-new/openhis-domain/src/main/java/com/openhis/administration/service/impl/EncounterDiagnosisServiceImpl.java index 8b9875b8..bf3ff206 100644 --- a/openhis-server-new/openhis-domain/src/main/java/com/openhis/administration/service/impl/EncounterDiagnosisServiceImpl.java +++ b/openhis-server-new/openhis-domain/src/main/java/com/openhis/administration/service/impl/EncounterDiagnosisServiceImpl.java @@ -95,14 +95,14 @@ public class EncounterDiagnosisServiceImpl extends ServiceImpl getDiagnosisList(Long encounterId, YbIptDiseTypeCode ybIptDiseTypeCode) { + public List getDiagnosisListByType(Long encounterId, YbIptDiseTypeCode ybIptDiseTypeCode) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper().eq(EncounterDiagnosis::getEncounterId, encounterId); if (ybIptDiseTypeCode != null) { 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 417d714e..77666648 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 @@ -101,4 +101,5 @@ public class OrganizationServiceImpl extends ServiceImpl searchOrgDataByHealth() { return this.organizationMapper.searchOrgDataByHealth(); } + } diff --git a/openhis-server-new/openhis-domain/src/main/java/com/openhis/yb/service/YbDao.java b/openhis-server-new/openhis-domain/src/main/java/com/openhis/yb/service/YbDao.java index 4f57106a..6e58fd81 100644 --- a/openhis-server-new/openhis-domain/src/main/java/com/openhis/yb/service/YbDao.java +++ b/openhis-server-new/openhis-domain/src/main/java/com/openhis/yb/service/YbDao.java @@ -2032,7 +2032,7 @@ public class YbDao { } } Yb2301InputFeeDetail yb2301InputFeeDetail; - List yb2301InputFeeDetailList = new ArrayList(); + List yb2301InputFeeDetailList = new ArrayList<>(); // int i = 1; for (ChargeItemBaseInfoDto chargeItemBaseInfoDto : chargeItemBaseInfoDtosList) { yb2301InputFeeDetail = new Yb2301InputFeeDetail(); @@ -2378,7 +2378,7 @@ public class YbDao { // throw new ServiceException("未查询到患者的医保信息"); // } List diagnosisList - = iEncounterDiagnosisService.getDiagnosisList(encounterId, YbIptDiseTypeCode.DISCHARGE_DIAGNOSIS); + = iEncounterDiagnosisService.getDiagnosisListByType(encounterId, YbIptDiseTypeCode.DISCHARGE_DIAGNOSIS); if (diagnosisList.isEmpty()) { throw new ServiceException("未查询到出院诊断信息"); } @@ -2558,7 +2558,7 @@ public class YbDao { // throw new ServiceException("未查询到患者的医保信息"); // } List diagnosisList - = iEncounterDiagnosisService.getDiagnosisList(encounterId, YbIptDiseTypeCode.DISCHARGE_DIAGNOSIS); + = iEncounterDiagnosisService.getDiagnosisListByType(encounterId, YbIptDiseTypeCode.DISCHARGE_DIAGNOSIS); if (diagnosisList.isEmpty()) { throw new ServiceException("未查询到出院诊断信息"); } diff --git a/openhis-server-new/openhis-domain/src/main/java/com/openhis/yb/service/YbManager.java b/openhis-server-new/openhis-domain/src/main/java/com/openhis/yb/service/YbManager.java index c482dba6..b149fd85 100644 --- a/openhis-server-new/openhis-domain/src/main/java/com/openhis/yb/service/YbManager.java +++ b/openhis-server-new/openhis-domain/src/main/java/com/openhis/yb/service/YbManager.java @@ -920,7 +920,7 @@ public class YbManager { } Yb2301InputFeeDetail yb2301InputFeeDetail; - List yb2301InputFeeDetailList = new ArrayList(); + List yb2301InputFeeDetailList = new ArrayList<>(); BigDecimal quantity = BigDecimal.ZERO; // 分组分类 Map> groupByTable diff --git a/openhis-server-new/openhis-domain/src/main/resources/mapper/administration/OrganizationMapper.xml b/openhis-server-new/openhis-domain/src/main/resources/mapper/administration/OrganizationMapper.xml index a40d0260..dcd00ea0 100644 --- a/openhis-server-new/openhis-domain/src/main/resources/mapper/administration/OrganizationMapper.xml +++ b/openhis-server-new/openhis-domain/src/main/resources/mapper/administration/OrganizationMapper.xml @@ -14,4 +14,5 @@ GROUP BY heal.offered_org_id) + \ No newline at end of file