diff --git a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/datadictionary/appservice/impl/DiagTreatMAppServiceImpl.java b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/datadictionary/appservice/impl/DiagTreatMAppServiceImpl.java index 8f863e5e..709ceb88 100644 --- a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/datadictionary/appservice/impl/DiagTreatMAppServiceImpl.java +++ b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/datadictionary/appservice/impl/DiagTreatMAppServiceImpl.java @@ -193,6 +193,13 @@ public class DiagTreatMAppServiceImpl implements IDiagTreatMAppService { DiagnosisTreatmentSelParam.setYbType(null); // 临时移除,防止HisQueryUtils处理 } + // 临时保存inspectionTypeId值,手动添加带表别名的条件 + Long inspectionTypeIdValue = null; + if (DiagnosisTreatmentSelParam != null && DiagnosisTreatmentSelParam.getInspectionTypeId() != null) { + inspectionTypeIdValue = DiagnosisTreatmentSelParam.getInspectionTypeId(); + DiagnosisTreatmentSelParam.setInspectionTypeId(null); // 临时移除,防止HisQueryUtils处理 + } + // 构建查询条件 QueryWrapper queryWrapper = HisQueryUtils.buildQueryWrapper(DiagnosisTreatmentSelParam, searchKey, new HashSet<>(Arrays.asList("bus_no", "name", "py_str", "wb_str")), request); @@ -204,6 +211,13 @@ public class DiagTreatMAppServiceImpl implements IDiagTreatMAppService { DiagnosisTreatmentSelParam.setYbType(ybTypeValue); } + // 如果需要按检验类型过滤,添加带表别名的条件 + if (inspectionTypeIdValue != null) { + queryWrapper.eq("T1.inspection_type_id", inspectionTypeIdValue); + // 恢复参数对象中的值 + DiagnosisTreatmentSelParam.setInspectionTypeId(inspectionTypeIdValue); + } + // 分页查询 IPage diseaseTreatmentPage = activityDefinitionManageMapper.getDiseaseTreatmentPage(new Page(pageNo, pageSize), queryWrapper); @@ -336,6 +350,8 @@ public class DiagTreatMAppServiceImpl implements IDiagTreatMAppService { // 显式设置新增的字段 activityDefinition.setSortOrder(diagnosisTreatmentUpDto.getSortOrder()); activityDefinition.setServiceRange(diagnosisTreatmentUpDto.getServiceRange()); + // 显式设置检验类型ID + activityDefinition.setInspectionTypeId(diagnosisTreatmentUpDto.getInspectionTypeId()); // 显式设置划价标记(避免前端字段/类型差异导致 copyProperties 后仍为默认值) activityDefinition.setPricingFlag(diagnosisTreatmentUpDto.getPricingFlag()); @@ -479,11 +495,13 @@ public class DiagTreatMAppServiceImpl implements IDiagTreatMAppService { ActivityDefinition activityDefinition = new ActivityDefinition(); BeanUtils.copyProperties(diagnosisTreatmentUpDto, activityDefinition); - + // 显式设置新增的字段 activityDefinition.setSortOrder(diagnosisTreatmentUpDto.getSortOrder()); activityDefinition.setServiceRange(diagnosisTreatmentUpDto.getServiceRange()); - + // 显式设置检验类型ID + activityDefinition.setInspectionTypeId(diagnosisTreatmentUpDto.getInspectionTypeId()); + // 如果前端没有传入编码,则使用10位数基础采番 if (StringUtils.isEmpty(activityDefinition.getBusNo())) { String code = assignSeqUtil.getSeq(AssignSeqEnum.ACTIVITY_DEFINITION_NUM.getPrefix(), 10); diff --git a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/datadictionary/controller/DiagnosisTreatmentController.java b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/datadictionary/controller/DiagnosisTreatmentController.java index 86defc5f..03b4e89d 100644 --- a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/datadictionary/controller/DiagnosisTreatmentController.java +++ b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/datadictionary/controller/DiagnosisTreatmentController.java @@ -1,6 +1,9 @@ package com.openhis.web.datadictionary.controller; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.core.common.core.domain.R; +import com.openhis.lab.domain.InspectionType; +import com.openhis.lab.service.IInspectionTypeService; import com.openhis.web.datadictionary.appservice.IDiagTreatMAppService; import com.openhis.web.datadictionary.dto.DiagnosisTreatmentSelParam; import com.openhis.web.datadictionary.dto.DiagnosisTreatmentUpDto; @@ -30,6 +33,9 @@ public class DiagnosisTreatmentController { @Resource private IDiagTreatMAppService diagTreatMAppService; + @Resource + private IInspectionTypeService inspectionTypeService; + /** * 诊疗目录初期查询 * @@ -188,4 +194,17 @@ public class DiagnosisTreatmentController { public R updatePricingFlag(@RequestBody List ids, @RequestParam Integer pricingFlag) { return diagTreatMAppService.updatePricingFlag(ids, pricingFlag); } + + /** + * 获取检验类型列表(用于下拉框) + * + * @return 检验类型列表 + */ + @GetMapping("/inspection-types") + public R getInspectionTypes() { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(InspectionType::getValidFlag, 1) + .orderByAsc(InspectionType::getSortOrder); + return R.ok(inspectionTypeService.list(queryWrapper)); + } } diff --git a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/DiagnosisTreatmentDto.java b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/DiagnosisTreatmentDto.java index 45103331..bcac163a 100644 --- a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/DiagnosisTreatmentDto.java +++ b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/DiagnosisTreatmentDto.java @@ -130,4 +130,13 @@ public class DiagnosisTreatmentDto { /** 服务范围 */ private String serviceRange; + + /** 检验类型ID */ + @Dict(dictTable = "inspection_type", dictCode = "id", dictText = "name", deleteFlag = "valid_flag") + @JsonSerialize(using = ToStringSerializer.class) + private Long inspectionTypeId; + private String inspectionTypeId_dictText; + + /** 检验类型名称(用于前端 testType 字段) */ + private String testType; } diff --git a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/DiagnosisTreatmentSelParam.java b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/DiagnosisTreatmentSelParam.java index 6c4ce563..55d22d4b 100644 --- a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/DiagnosisTreatmentSelParam.java +++ b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/DiagnosisTreatmentSelParam.java @@ -30,4 +30,7 @@ public class DiagnosisTreatmentSelParam { /** 状态 */ private Integer statusEnum; + + /** 检验类型ID */ + private Long inspectionTypeId; } diff --git a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/DiagnosisTreatmentUpDto.java b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/DiagnosisTreatmentUpDto.java index 9e5e83ac..92f77c38 100644 --- a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/DiagnosisTreatmentUpDto.java +++ b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/DiagnosisTreatmentUpDto.java @@ -128,4 +128,8 @@ public class DiagnosisTreatmentUpDto { /** 服务范围 */ private String serviceRange; + + /** 检验类型ID */ + @JsonSerialize(using = ToStringSerializer.class) + private Long inspectionTypeId; } diff --git a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/lab/controller/InspectionTypeController.java b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/lab/controller/InspectionTypeController.java index 07ba4edd..161024a1 100644 --- a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/lab/controller/InspectionTypeController.java +++ b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/lab/controller/InspectionTypeController.java @@ -1,6 +1,7 @@ package com.openhis.web.lab.controller; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; import com.core.common.core.controller.BaseController; import com.core.common.core.domain.AjaxResult; import com.openhis.lab.domain.InspectionType; @@ -29,7 +30,25 @@ public class InspectionTypeController extends BaseController { private final TransactionTemplate transactionTemplate; /** - * 获取检验类型列表 + * 分页获取检验类型列表 + * + * @param pageNo 页码 + * @param pageSize 每页数量 + * @param searchKey 搜索关键词 + */ + @GetMapping("/page") + public AjaxResult getPage( + @RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(value = "pageSize", defaultValue = "100") Integer pageSize, + @RequestParam(value = "searchKey", required = false) String searchKey) { + log.info("【检验类型】分页查询请求 - pageNo: {}, pageSize: {}, searchKey: {}", pageNo, pageSize, searchKey); + IPage result = inspectionTypeService.getPage(pageNo, pageSize, searchKey); + log.info("【检验类型】分页查询完成 - 总记录数: {}, 当前页记录数: {}", result.getTotal(), result.getRecords().size()); + return AjaxResult.success(result); + } + + /** + * 获取检验类型列表(不分页,兼容旧接口) */ @GetMapping("/list") public AjaxResult list(InspectionType inspectionType) { diff --git a/openhis-server-new/openhis-application/src/main/resources/mapper/datadictionary/ActivityDefinitionManageMapper.xml b/openhis-server-new/openhis-application/src/main/resources/mapper/datadictionary/ActivityDefinitionManageMapper.xml index 42b17d8a..c19d1f42 100644 --- a/openhis-server-new/openhis-application/src/main/resources/mapper/datadictionary/ActivityDefinitionManageMapper.xml +++ b/openhis-server-new/openhis-application/src/main/resources/mapper/datadictionary/ActivityDefinitionManageMapper.xml @@ -30,16 +30,22 @@ T1.pricing_flag, T1.sort_order, T1.service_range, + T1.inspection_type_id, T2.type_code as item_type_code, T2.yb_type, T2.price_code, T2.price as retail_price, - T4.amount as maximum_retail_price + T4.amount as maximum_retail_price, + T3.name as test_type FROM wor_activity_definition T1 /* 只JOIN必要的价格表,使用INNER JOIN避免笛卡尔积 */ INNER JOIN adm_charge_item_definition T2 ON T1.id = T2.instance_id AND T2.instance_table = 'wor_activity_definition' + /* 检验类型关联 */ + LEFT JOIN inspection_type T3 + ON T1.inspection_type_id = T3.id + AND T3.valid_flag = 1 /* 最高零售价使用LEFT JOIN,因为可能不存在 */ LEFT JOIN adm_charge_item_def_detail T4 ON T4.definition_id = T2.id @@ -97,9 +103,13 @@ T1.children_json, T1.pricing_flag, T1.sort_order, - T1.service_range + T1.service_range, + T1.inspection_type_id, + T3.name as test_type FROM wor_activity_definition T1 LEFT JOIN adm_charge_item_definition T2 ON T1.id = T2.instance_id + /* 检验类型关联 */ + LEFT JOIN inspection_type T3 ON T1.inspection_type_id = T3.id AND T3.valid_flag = 1 T1.delete_flag = '0' AND T2.instance_table = 'wor_activity_definition' diff --git a/openhis-server-new/openhis-domain/src/main/java/com/openhis/lab/service/IInspectionTypeService.java b/openhis-server-new/openhis-domain/src/main/java/com/openhis/lab/service/IInspectionTypeService.java index 4a57aeb1..d03dc980 100644 --- a/openhis-server-new/openhis-domain/src/main/java/com/openhis/lab/service/IInspectionTypeService.java +++ b/openhis-server-new/openhis-domain/src/main/java/com/openhis/lab/service/IInspectionTypeService.java @@ -1,5 +1,7 @@ package com.openhis.lab.service; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.openhis.lab.domain.InspectionType; @@ -11,4 +13,13 @@ import com.openhis.lab.domain.InspectionType; */ public interface IInspectionTypeService extends IService { + /** + * 分页查询检验类型列表 + * + * @param pageNo 页码 + * @param pageSize 每页数量 + * @param searchKey 搜索关键词(可选) + * @return 分页结果 + */ + IPage getPage(Integer pageNo, Integer pageSize, String searchKey); } \ No newline at end of file diff --git a/openhis-server-new/openhis-domain/src/main/java/com/openhis/lab/service/impl/InspectionTypeServiceImpl.java b/openhis-server-new/openhis-domain/src/main/java/com/openhis/lab/service/impl/InspectionTypeServiceImpl.java index 27811011..265694f5 100644 --- a/openhis-server-new/openhis-domain/src/main/java/com/openhis/lab/service/impl/InspectionTypeServiceImpl.java +++ b/openhis-server-new/openhis-domain/src/main/java/com/openhis/lab/service/impl/InspectionTypeServiceImpl.java @@ -1,10 +1,14 @@ package com.openhis.lab.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.openhis.lab.domain.InspectionType; import com.openhis.lab.mapper.InspectionTypeMapper; import com.openhis.lab.service.IInspectionTypeService; import org.springframework.stereotype.Service; +import org.springframework.util.StringUtils; /** * 检验类型Service实现类 @@ -15,4 +19,22 @@ import org.springframework.stereotype.Service; @Service public class InspectionTypeServiceImpl extends ServiceImpl implements IInspectionTypeService { + @Override + public IPage getPage(Integer pageNo, Integer pageSize, String searchKey) { + Page page = new Page<>(pageNo, pageSize); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + + // 搜索关键词(按编码或名称模糊查询) + if (StringUtils.hasText(searchKey)) { + queryWrapper.and(wrapper -> wrapper + .like(InspectionType::getCode, searchKey) + .or() + .like(InspectionType::getName, searchKey)); + } + + // 按排序字段升序排列 + queryWrapper.orderByAsc(InspectionType::getSortOrder); + + return this.page(page, queryWrapper); + } } \ No newline at end of file diff --git a/openhis-server-new/openhis-domain/src/main/java/com/openhis/workflow/domain/ActivityDefinition.java b/openhis-server-new/openhis-domain/src/main/java/com/openhis/workflow/domain/ActivityDefinition.java index 4f35ab0d..a70ec378 100644 --- a/openhis-server-new/openhis-domain/src/main/java/com/openhis/workflow/domain/ActivityDefinition.java +++ b/openhis-server-new/openhis-domain/src/main/java/com/openhis/workflow/domain/ActivityDefinition.java @@ -89,4 +89,7 @@ public class ActivityDefinition extends HisBaseEntity { /** 服务范围 */ private String serviceRange; + + /** 检验类型ID(关联 inspection_type 表) */ + private Long inspectionTypeId; } \ No newline at end of file diff --git a/openhis-ui-vue3/src/views/doctorstation/components/api.js b/openhis-ui-vue3/src/views/doctorstation/components/api.js index 3cc69357..1b874af9 100644 --- a/openhis-ui-vue3/src/views/doctorstation/components/api.js +++ b/openhis-ui-vue3/src/views/doctorstation/components/api.js @@ -949,7 +949,23 @@ export function deleteInspectionApplication(applyNo) { } /** - * 获取检验类型列表(分类) + * 分页获取检验类型列表(分类) + * @param {Object} queryParams - 查询参数 + * @param {number} queryParams.pageNo - 页码 + * @param {number} queryParams.pageSize - 每页数量 + * @param {string} queryParams.searchKey - 搜索关键词 + */ +export function getInspectionTypePage(queryParams) { + return request({ + url: '/system/inspection-type/page', + method: 'get', + params: queryParams, + }); +} + +/** + * 获取检验类型列表(不分页,兼容旧接口) + * @deprecated 建议使用 getInspectionTypePage 分页接口 */ export function getInspectionTypeList() { return request({ @@ -965,6 +981,7 @@ export function getInspectionTypeList() { * @param {number} queryParams.pageNo - 页码 * @param {number} queryParams.pageSize - 每页数量 * @param {string} queryParams.categoryCode - 目录类别编码(检验) + * @param {string} queryParams.inspectionTypeId - 检验类型ID列表,多个用逗号分隔 */ export function getInspectionItemList(queryParams) { return request({ diff --git a/openhis-ui-vue3/src/views/doctorstation/components/inspection/inspectionApplication.vue b/openhis-ui-vue3/src/views/doctorstation/components/inspection/inspectionApplication.vue index ac1d2201..7df872fe 100644 --- a/openhis-ui-vue3/src/views/doctorstation/components/inspection/inspectionApplication.vue +++ b/openhis-ui-vue3/src/views/doctorstation/components/inspection/inspectionApplication.vue @@ -490,7 +490,7 @@ \ No newline at end of file