wlzboy
2026-01-26 739d4c2f64fcfd4ddcce6292978ad6aeb2c7bdc7
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/HospDataController.java
@@ -36,6 +36,11 @@
@RequestMapping("/system/hospital")
public class HospDataController extends BaseController {
    
    /**
     * 医院搜索最低匹配分数阈值(低于此分数的结果将被过滤)
     */
    private static final int MIN_MATCH_SCORE_THRESHOLD = 50;
    @Autowired
    private HospDataMapper hospDataMapper;
@@ -345,17 +350,20 @@
                    districtNames
                );
                            
                // 只保留有匹配的医院
                if (matchScore > 0) {
                // 只保留匹配分数达到阈值的医院
                if (matchScore >= MIN_MATCH_SCORE_THRESHOLD) {
                    matchResults.add(new HospitalMatchResult(hospital, matchScore));
                }
            }
                        
            long matchTime = System.currentTimeMillis();
            logger.info("匹配计算完成,找到 {} 个匹配的医院,耗时: {}ms", matchResults.size(), matchTime - matchStartTime);
            logger.info("匹配计算完成,找到 {} 个匹配的医院(分数>={}}),耗时: {}ms",
                matchResults.size(), MIN_MATCH_SCORE_THRESHOLD, matchTime - matchStartTime);
            
            // 4. 按匹配分数降序排序(分数越高排名越靠前)
            matchResults.sort(Comparator.comparingInt(HospitalMatchResult::getMatchScore).reversed());
            // 4. 按匹配分数降序排序,分数相同时按医院名称长度升序排序(名称越短越靠前)
            matchResults.sort(Comparator
                .comparingInt(HospitalMatchResult::getMatchScore).reversed()
                .thenComparingInt(result -> result.getHospital().getHospName().length()));
            
            // 5. 限制返回数量
            if (pageSize != null && pageSize > 0 && matchResults.size() > pageSize) {