package com.ruoyi.web.controller.system; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.system.domain.HospData; import com.ruoyi.system.mapper.HospDataMapper; import com.ruoyi.system.service.ISQLHospDataService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import java.util.List; /** * 医院数据Controller * 从MySQL的tb_hosp_data表查询医院数据 * hospId对应legacy_hosp_id字段(旧系统的医院ID) * * @author ruoyi * @date 2024-01-16 */ @RestController @RequestMapping("/system/hospital") public class HospDataController extends BaseController { @Autowired private HospDataMapper hospDataMapper; @Autowired private ISQLHospDataService sqlHospDataService; /** * 搜索医院(从MySQL tb_hosp_data表查询) * 支持根据医院名称、地址、地域进行模糊搜索 * @param keyword 搜索关键词(医院名称、地址、简称、省市区) * @param deptId 部门ID(用于根据部门区域配置过滤医院) */ @GetMapping("/search") public AjaxResult searchHospitals( @RequestParam(value = "keyword", required = false) String keyword, @RequestParam(value = "deptId", required = false) Long deptId) { List list; // 如果keyword为空,使用部门区域过滤查询 if (keyword == null || keyword=="") { if (deptId != null) { list = hospDataMapper.searchHospitalsByDeptRegion("", deptId); } else { list = hospDataMapper.searchHospitals("", ""); } } else { list = hospDataMapper.searchHospitals(keyword, ""); } // 确保"家中"在结果中 Integer homeHospId = hospDataMapper.getHomeHospId(); if(homeHospId > 0 && !list.isEmpty() && list.stream().noneMatch(hospData -> hospData.getHospId().equals(homeHospId))) { HospData hospData = hospDataMapper.selectHospDataById(homeHospId); if (hospData != null) { list.add(0, hospData); } } return success(list); } /** * 根据ID获取医院详情(从MySQL tb_hosp_data表查询) * @param hospId 医院ID(对应legacy_hosp_id) */ @GetMapping("/detail") public AjaxResult getHospitalDetail(@RequestParam("hospId") Integer hospId) { HospData hospital = hospDataMapper.selectHospDataById(hospId); return success(hospital); } /** * 获取常用转出医院列表(从MySQL tb_hosp_data表查询) * @param serviceOrdClass 分公司编码(service_order_class) * @param region 地域关键词(可选) */ @GetMapping("/frequent/out") public AjaxResult getFrequentOutHospitals( @RequestParam("serviceOrdClass") String serviceOrdClass, @RequestParam(value = "region", required = false) String region) { // 查询常用转出医院ID列表 logger.info("getFrequentOutHospitals 传入的 serviceOrdClass :{}",serviceOrdClass); List hospIds = sqlHospDataService.selectFrequentOutHospitalIds(serviceOrdClass); logger.info(" getFrequentOutHospitals 查询出来的 hospIds :{}",hospIds.toArray().length); if (hospIds.isEmpty()) { return success(); } // 根据ID列表查询医院详情 List hospitals = hospDataMapper.selectHospDataByIds(hospIds, region); return success(hospitals); } /** * 获取常用转入医院列表(从MySQL tb_hosp_data表查询) * @param serviceOrdClass 分公司编码(service_order_class) * @param region 地域关键词(可选) */ @GetMapping("/frequent/in") public AjaxResult getFrequentInHospitals( @RequestParam("serviceOrdClass") String serviceOrdClass, @RequestParam(value = "region", required = false) String region) { // 查询常用转入医院ID列表 logger.info("getFrequentInHospitals 传入的 serviceOrdClass {}",serviceOrdClass); List hospIds = sqlHospDataService.selectFrequentInHospitalIds(serviceOrdClass); logger.info("getFrequentInHospitals 查询出来的 hospIds {}",hospIds.toArray().length); if (hospIds.isEmpty()) { return success(); } Integer homeHospId=hospDataMapper.getHomeHospId(); // 根据ID列表查询医院详情 List hospitals = hospDataMapper.selectHospDataByIds(hospIds, region); if(homeHospId>0) { HospData hospData= hospDataMapper.selectHospDataById(homeHospId); hospitals.add(0,hospData); } return success(hospitals); } /** * 根据部门区域配置搜索医院(从MySQL tb_hosp_data表查询,支持省、市、县/区等多级区域) * @param keyword 搜索关键词 * @param deptId 部门ID */ @GetMapping("/search/by-dept-region") public AjaxResult searchHospitalsByDeptRegion( @RequestParam(value = "keyword", required = false) String keyword, @RequestParam("deptId") Long deptId) { logger.info("根据部门区域配置搜索医院:deptId={}, keyword={}", deptId, keyword); // 调用Mapper查询,自动根据部门的区域配置过滤医院 List hospitals = hospDataMapper.searchHospitalsByDeptRegion(keyword, deptId); logger.info("查询到医院数量:{}", hospitals.size()); // 确保"家中"在结果中 Integer homeHospId = hospDataMapper.getHomeHospId(); if (homeHospId > 0 && hospitals.stream().noneMatch(h -> h.getHospId().equals(homeHospId))) { HospData homeHosp = hospDataMapper.selectHospDataById(homeHospId); if (homeHosp != null) { hospitals.add(0, homeHosp); } } return success(hospitals); } }