From 0ffdf00009b0bede0859fa33deddefb55c075a7b Mon Sep 17 00:00:00 2001
From: wlzboy <66905212@qq.com>
Date: 星期日, 01 二月 2026 16:42:36 +0800
Subject: [PATCH] feat:优化增加任务同步接口,允许前端手动控制同步
---
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/HospDataController.java | 401 +++++++++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 388 insertions(+), 13 deletions(-)
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/HospDataController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/HospDataController.java
index 80a6869..5904fca 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/HospDataController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/HospDataController.java
@@ -2,18 +2,32 @@
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.utils.HospitalTokenizerUtil;
+import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.system.domain.HospData;
+import com.ruoyi.system.domain.HospitalTokenizerTask;
+import com.ruoyi.system.domain.TbHospData;
import com.ruoyi.system.mapper.HospDataMapper;
+import com.ruoyi.system.service.HospitalTokenizerAsyncService;
+import com.ruoyi.system.service.ISQLHospDataService;
+import com.ruoyi.system.service.ITbHospDataService;
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.ArrayList;
+import java.util.Comparator;
+import java.util.HashSet;
import java.util.List;
+import java.util.Set;
+import java.util.UUID;
/**
* 鍖婚櫌鏁版嵁Controller
+ * 浠嶮ySQL鐨則b_hosp_data琛ㄦ煡璇㈠尰闄㈡暟鎹�
+ * hospId瀵瑰簲legacy_hosp_id瀛楁锛堟棫绯荤粺鐨勫尰闄D锛�
*
* @author ruoyi
* @date 2024-01-16
@@ -22,25 +36,71 @@
@RequestMapping("/system/hospital")
public class HospDataController extends BaseController {
+ /**
+ * 鍖婚櫌鎼滅储鏈�浣庡尮閰嶅垎鏁伴槇鍊硷紙浣庝簬姝ゅ垎鏁扮殑缁撴灉灏嗚杩囨护锛�
+ */
+ private static final int MIN_MATCH_SCORE_THRESHOLD = 1;
+
@Autowired
private HospDataMapper hospDataMapper;
+
+ @Autowired
+ private ISQLHospDataService sqlHospDataService;
+
+ @Autowired
+ private ITbHospDataService tbHospDataService;
+
+ @Autowired
+ private com.ruoyi.system.mapper.TbHospDataMapper tbHospDataMapper;
+
+ @Autowired
+ private HospitalTokenizerAsyncService asyncService;
/**
- * 鎼滅储鍖婚櫌
+ * 鎼滅储鍖婚櫌锛堜粠MySQL tb_hosp_data琛ㄦ煡璇級
* 鏀寔鏍规嵁鍖婚櫌鍚嶇О銆佸湴鍧�銆佸湴鍩熻繘琛屾ā绯婃悳绱�
* @param keyword 鎼滅储鍏抽敭璇嶏紙鍖婚櫌鍚嶇О銆佸湴鍧�銆佺畝绉般�佺渷甯傚尯锛�
- * @param region 鍦板煙鍏抽敭璇嶏紙鐢ㄤ簬杩囨护鐪佸競鍖猴級
+ * @param deptId 閮ㄩ棬ID锛堢敤浜庢牴鎹儴闂ㄥ尯鍩熼厤缃繃婊ゅ尰闄級
*/
@GetMapping("/search")
public AjaxResult searchHospitals(
@RequestParam(value = "keyword", required = false) String keyword,
- @RequestParam(value = "region", required = false) String region) {
- List<HospData> list = hospDataMapper.searchHospitals(keyword, region);
+ @RequestParam(value = "deptId", required = false) Long deptId,
+ @RequestParam(value = "pageSize", required = false, defaultValue = "50") Integer pageSize) {
+ List<HospData> list;
+
+ // 濡傛灉keyword涓虹┖锛屼娇鐢ㄩ儴闂ㄥ尯鍩熻繃婊ゆ煡璇�
+ if (keyword == null || keyword=="") {
+ if (deptId != null) {
+ list = hospDataMapper.searchHospitalsByDeptRegion("", deptId);
+ } else {
+ list = hospDataMapper.searchHospitals("", "");
+ }
+ } else {
+
+ list = hospDataMapper.searchHospitals(keyword, "");
+
+ }
+
+ // 闄愬埗杩斿洖鏁伴噺
+ if (pageSize != null && pageSize > 0 && list.size() > pageSize) {
+ list = list.subList(0, pageSize);
+ }
+
+ // 纭繚"瀹朵腑"鍦ㄧ粨鏋滀腑
+ 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鑾峰彇鍖婚櫌璇︽儏
+ * 鏍规嵁ID鑾峰彇鍖婚櫌璇︽儏锛堜粠MySQL tb_hosp_data琛ㄦ煡璇級
+ * @param hospId 鍖婚櫌ID锛堝搴攍egacy_hosp_id锛�
*/
@GetMapping("/detail")
public AjaxResult getHospitalDetail(@RequestParam("hospId") Integer hospId) {
@@ -49,40 +109,355 @@
}
/**
- * 鑾峰彇甯哥敤杞嚭鍖婚櫌鍒楄〃
+ * 鑾峰彇甯哥敤杞嚭鍖婚櫌鍒楄〃锛堜粠MySQL tb_hosp_data琛ㄦ煡璇級
* @param serviceOrdClass 鍒嗗叕鍙哥紪鐮侊紙service_order_class锛�
* @param region 鍦板煙鍏抽敭璇嶏紙鍙�夛級
+ * @param pageSize 杩斿洖缁撴灉鏁伴噺闄愬埗锛堥粯璁�50锛�
*/
@GetMapping("/frequent/out")
public AjaxResult getFrequentOutHospitals(
@RequestParam("serviceOrdClass") String serviceOrdClass,
- @RequestParam(value = "region", required = false) String region) {
+ @RequestParam(value = "region", required = false) String region,
+ @RequestParam(value = "pageSize", required = false, defaultValue = "50") Integer pageSize) {
// 鏌ヨ甯哥敤杞嚭鍖婚櫌ID鍒楄〃
- List<Integer> hospIds = hospDataMapper.selectFrequentOutHospitalIds(serviceOrdClass);
- if (hospIds == null || hospIds.isEmpty()) {
+ logger.info("getFrequentOutHospitals 浼犲叆鐨� serviceOrdClass :{}",serviceOrdClass);
+ List<Integer> hospIds = sqlHospDataService.selectFrequentOutHospitalIds(serviceOrdClass);
+ logger.info(" getFrequentOutHospitals 鏌ヨ鍑烘潵鐨� hospIds :{}",hospIds.toArray().length);
+ if (hospIds.isEmpty()) {
return success();
}
+
// 鏍规嵁ID鍒楄〃鏌ヨ鍖婚櫌璇︽儏
List<HospData> hospitals = hospDataMapper.selectHospDataByIds(hospIds, region);
+
+ // 闄愬埗杩斿洖鏁伴噺
+ if (pageSize != null && pageSize > 0 && hospitals.size() > pageSize) {
+ hospitals = hospitals.subList(0, pageSize);
+ }
+
return success(hospitals);
}
/**
- * 鑾峰彇甯哥敤杞叆鍖婚櫌鍒楄〃
+ * 鑾峰彇甯哥敤杞叆鍖婚櫌鍒楄〃锛堜粠MySQL tb_hosp_data琛ㄦ煡璇級
* @param serviceOrdClass 鍒嗗叕鍙哥紪鐮侊紙service_order_class锛�
* @param region 鍦板煙鍏抽敭璇嶏紙鍙�夛級
+ * @param pageSize 杩斿洖缁撴灉鏁伴噺闄愬埗锛堥粯璁�50锛�
*/
@GetMapping("/frequent/in")
public AjaxResult getFrequentInHospitals(
@RequestParam("serviceOrdClass") String serviceOrdClass,
- @RequestParam(value = "region", required = false) String region) {
+ @RequestParam(value = "region", required = false) String region,
+ @RequestParam(value = "pageSize", required = false, defaultValue = "50") Integer pageSize) {
// 鏌ヨ甯哥敤杞叆鍖婚櫌ID鍒楄〃
- List<Integer> hospIds = hospDataMapper.selectFrequentInHospitalIds(serviceOrdClass);
- if (hospIds == null || hospIds.isEmpty()) {
+ logger.info("getFrequentInHospitals 浼犲叆鐨� serviceOrdClass {}",serviceOrdClass);
+ List<Integer> hospIds = sqlHospDataService.selectFrequentInHospitalIds(serviceOrdClass);
+ logger.info("getFrequentInHospitals 鏌ヨ鍑烘潵鐨� hospIds {}",hospIds.toArray().length);
+ if (hospIds.isEmpty()) {
return success();
}
+ Integer homeHospId=hospDataMapper.getHomeHospId();
+
// 鏍规嵁ID鍒楄〃鏌ヨ鍖婚櫌璇︽儏
List<HospData> hospitals = hospDataMapper.selectHospDataByIds(hospIds, region);
+
+ // 闄愬埗杩斿洖鏁伴噺
+ if (pageSize != null && pageSize > 0 && hospitals.size() > pageSize) {
+ hospitals = hospitals.subList(0, pageSize);
+ }
+
+ if(homeHospId>0) {
+ HospData hospData = hospDataMapper.selectHospDataById(homeHospId);
+ hospitals.add(0,hospData);
+ }
return success(hospitals);
}
+
+ /**
+ * 鏍规嵁閮ㄩ棬鍖哄煙閰嶇疆鎼滅储鍖婚櫌锛堜粠MySQLtb_hosp_data琛ㄦ煡璇紝鏀寔鐪併�佸競銆佸幙/鍖虹瓑澶氱骇鍖哄煙锛�
+ * @param keyword 鎼滅储鍏抽敭璇�
+ * @param deptId 閮ㄩ棬ID
+ * @param pageSize 杩斿洖缁撴灉鏁伴噺闄愬埗锛堥粯璁�50锛�
+ */
+ @GetMapping("/search/by-dept-region")
+ public AjaxResult searchHospitalsByDeptRegion(
+ @RequestParam(value = "keyword", required = false) String keyword,
+ @RequestParam("deptId") Long deptId,
+ @RequestParam(value = "pageSize", required = false, defaultValue = "50") Integer pageSize) {
+ logger.info("鏍规嵁閮ㄩ棬鍖哄煙閰嶇疆鎼滅储鍖婚櫌锛歞eptId={}, keyword={}, pageSize={}", deptId, keyword, pageSize);
+
+ // 璋冪敤Mapper鏌ヨ锛岃嚜鍔ㄦ牴鎹儴闂ㄧ殑鍖哄煙閰嶇疆杩囨护鍖婚櫌
+ List<HospData> hospitals = hospDataMapper.searchHospitalsByDeptRegion(keyword, deptId);
+ logger.info("鏌ヨ鍒板尰闄㈡暟閲忥細{}", hospitals.size());
+
+ // 闄愬埗杩斿洖鏁伴噺
+ if (pageSize != null && pageSize > 0 && hospitals.size() > pageSize) {
+ hospitals = hospitals.subList(0, pageSize);
+ }
+
+ // 纭繚"瀹朵腑"鍦ㄧ粨鏋滀腑
+ 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);
+ }
+
+ /**
+ * 鎵归噺鐢熸垚鎵�鏈夊尰闄㈢殑鍒嗚瘝锛堝紓姝ワ級
+ * 绠$悊鍛樻帴鍙o紝鐢ㄤ簬鍒濆鍖栨垨閲嶆柊鐢熸垚鍖婚櫌鍒嗚瘝
+ *
+ * @return 浠诲姟ID
+ */
+ @GetMapping("/generateKeywords")
+ public AjaxResult generateAllHospitalKeywords() {
+ logger.info("寮�濮嬫壒閲忕敓鎴愬尰闄㈠垎璇嶏紙寮傛锛�...");
+
+ try {
+ // 鐢熸垚浠诲姟ID
+ String taskId = UUID.randomUUID().toString().replace("-", "");
+
+ // 寮傛鎵ц浠诲姟
+ asyncService.executeTokenizerTask(taskId);
+
+ logger.info("鍖婚櫌鍒嗚瘝浠诲姟宸插惎鍔�: taskId={}", taskId);
+
+ // 绔嬪嵆杩斿洖浠诲姟ID
+ return success()
+ .put("taskId", taskId)
+ .put("message", "鍒嗚瘝浠诲姟宸插惎鍔紝璇锋煡璇换鍔¤繘搴�");
+
+ } catch (Exception e) {
+ logger.error("鍚姩鍖婚櫌鍒嗚瘝浠诲姟澶辫触", e);
+ return error("鍚姩澶辫触锛�" + e.getMessage());
+ }
+ }
+
+ /**
+ * 鏌ヨ鍖婚櫌鍒嗚瘝浠诲姟杩涘害
+ *
+ * @param taskId 浠诲姟ID
+ * @return 浠诲姟杩涘害淇℃伅
+ */
+ @GetMapping("/getTaskProgress")
+ public AjaxResult getTaskProgress(@RequestParam("taskId") String taskId) {
+ try {
+ HospitalTokenizerTask task = asyncService.getTaskStatus(taskId);
+
+ if (task == null) {
+ return error("浠诲姟涓嶅瓨鍦ㄦ垨宸茶繃鏈�");
+ }
+
+ return success(task);
+
+ } catch (Exception e) {
+ logger.error("鏌ヨ浠诲姟杩涘害澶辫触: taskId={}", taskId, e);
+ return error("鏌ヨ澶辫触锛�" + e.getMessage());
+ }
+ }
+
+ /**
+ * 鍩轰簬鍒嗚瘝鍖归厤鎼滅储鍖婚櫌
+ * 鍓嶇浼犲叆鍖婚櫌淇℃伅锛岃繘琛屽垎璇嶅悗涓庢暟鎹簱涓殑鍒嗚瘝鍖归厤
+ * 鏍规嵁鍖归厤鐨勫垎璇嶆暟閲忚繘琛屾潈閲嶆帓搴忥紝鍖归厤瓒婂鎺掑悕瓒婇潬鍓�
+ *
+ * @param searchText 鎼滅储鏂囨湰锛堝尰闄㈠悕绉般�佸湴鍧�绛夛級
+ * @param pageSize 杩斿洖缁撴灉鏁伴噺闄愬埗锛堥粯璁�50锛�
+ * @return 鍖归厤鐨勫尰闄㈠垪琛紙鎸夊尮閰嶅害鎺掑簭锛�
+ */
+ @GetMapping("/searchByKeywords")
+ public AjaxResult searchHospitalsByKeywords(
+ @RequestParam("searchText") String searchText,
+ @RequestParam(value = "pageSize", required = false, defaultValue = "50") Integer pageSize) {
+
+ logger.info("鍩轰簬鍒嗚瘝鍖归厤鎼滅储鍖婚櫌锛歴earchText={}, pageSize={}", searchText, pageSize);
+
+ if (searchText == null || searchText.trim().isEmpty()) {
+ return error("鎼滅储鏂囨湰涓嶈兘涓虹┖");
+ }
+
+ try {
+ long startTime = System.currentTimeMillis();
+
+ // 1. 瀵瑰墠绔紶鍏ョ殑鎼滅储鏂囨湰杩涜鍒嗚瘝
+ String searchKeywords = HospitalTokenizerUtil.tokenizeSearchText(searchText);
+ logger.info("鎼滅储鏂囨湰鍒嗚瘝缁撴灉锛歿}", searchKeywords);
+
+ if (searchKeywords.isEmpty()) {
+ return success(new ArrayList<>());
+ }
+
+ // 2. 灏嗗垎璇嶇粨鏋滄媶鍒嗕负鍏抽敭璇嶅垪琛紝鐢ㄤ簬鏁版嵁搴撻杩囨护
+ String[] keywordArray = searchKeywords.split(",");
+ List<String> keywordList = new ArrayList<>();
+ for (String keyword : keywordArray) {
+ String trimmed = keyword.trim();
+ if (!trimmed.isEmpty() && trimmed.length() >= 2) { // 鍙娇鐢�2涓瓧浠ヤ笂鐨勫叧閿瘝
+ keywordList.add(trimmed);
+ }
+ }
+
+ if (keywordList.isEmpty()) {
+ logger.warn("娌℃湁鏈夋晥鐨勫叧閿瘝鐢ㄤ簬鎼滅储");
+ return success(new ArrayList<>());
+ }
+
+ logger.info("浣跨敤鍏抽敭璇嶈繘琛屾暟鎹簱棰勮繃婊�: {}", keywordList);
+
+ // 3. 閫氳繃鏁版嵁搴撳眰闈㈤杩囨护锛屽彧鏌ヨ鍙兘鍖归厤鐨勫尰闄紙鑰屼笉鏄墍鏈夊尰闄級
+ List<TbHospData> candidateHospitals = tbHospDataMapper.selectTbHospDataByKeywords(keywordList, "0");
+
+ long queryTime = System.currentTimeMillis();
+ logger.info("鏁版嵁搴撻杩囨护瀹屾垚锛屽�欓�夊尰闄㈡暟閲�: {}, 鑰楁椂: {}ms", candidateHospitals.size(), queryTime - startTime);
+
+ // 4. 鎻愬彇鍊欓�夊尰闄㈢殑鍦板尯鍚嶇О锛堜粠 hopsArea 瀛楁锛�
+ Set<String> districtNames = new HashSet<>();
+ for (TbHospData hospital : candidateHospitals) {
+ if (StringUtils.isNotBlank(hospital.getHopsArea())) {
+ // 鎻愬彇鍦板尯鍚嶏紝绉婚櫎甯歌鍚庣紑
+ String area = hospital.getHopsArea()
+ .replace("鍖�", "")
+ .replace("甯�", "")
+ .replace("鍘�", "")
+ .trim();
+ if (area.length() > 0) {
+ districtNames.add(area);
+ }
+ }
+ }
+
+ logger.info("鎻愬彇鍒� {} 涓嫭鐗瑰湴鍖哄悕绉�", districtNames.size());
+
+ // 5. 瀵瑰�欓�夊尰闄㈣绠楀尮閰嶅垎鏁帮紝骞惰繃婊ゅ嚭鏈夊尮閰嶇殑鍖婚櫌
+ List<HospitalMatchResult> matchResults = new ArrayList<>();
+
+ long matchStartTime = System.currentTimeMillis();
+
+ for (TbHospData hospital : candidateHospitals) {
+ if (hospital.getHospKeywords() == null || hospital.getHospKeywords().isEmpty()) {
+ continue;
+ }
+
+ // 璁$畻鍖归厤鍒嗘暟锛堜紶鍏ュ尰闄㈠悕绉板拰鍦板尯鍚嶇О闆嗗悎锛�
+ int matchScore = HospitalTokenizerUtil.calculateMatchScore(
+ searchKeywords,
+ hospital.getHospKeywords(),
+ hospital.getHospName(),
+ districtNames
+ );
+
+ // 鍙繚鐣欏尮閰嶅垎鏁拌揪鍒伴槇鍊肩殑鍖婚櫌
+ if (matchScore >= MIN_MATCH_SCORE_THRESHOLD) {
+ matchResults.add(new HospitalMatchResult(hospital, matchScore));
+ }
+ }
+
+ long matchTime = System.currentTimeMillis();
+ logger.info("鍖归厤璁$畻瀹屾垚锛屾壘鍒� {} 涓尮閰嶇殑鍖婚櫌锛堝垎鏁�>={}}锛夛紝鑰楁椂: {}ms",
+ matchResults.size(), MIN_MATCH_SCORE_THRESHOLD, matchTime - matchStartTime);
+
+ // 4. 鎸夊尮閰嶅垎鏁伴檷搴忔帓搴忥紝鍒嗘暟鐩稿悓鏃舵寜鍖婚櫌鍚嶇О闀垮害鍗囧簭鎺掑簭锛堝悕绉拌秺鐭秺闈犲墠锛�
+ matchResults.sort(Comparator
+ .comparingInt(HospitalMatchResult::getMatchScore).reversed()
+ .thenComparingInt(result -> result.getHospital().getHospName().length()));
+
+ // 5. 闄愬埗杩斿洖鏁伴噺
+ if (pageSize != null && pageSize > 0 && matchResults.size() > pageSize) {
+ matchResults = matchResults.subList(0, pageSize);
+ }
+
+ // 6. 杞崲涓篐ospData瀵硅薄杩斿洖锛堝寘鍚尮閰嶅垎鏁帮級
+ List<HospDataWithScore> result = new ArrayList<>();
+ for (HospitalMatchResult matchResult : matchResults) {
+ TbHospData tbHospData = matchResult.getHospital();
+ HospData hospData = convertToHospData(tbHospData);
+ result.add(new HospDataWithScore(hospData, matchResult.getMatchScore()));
+ logger.debug("鍖婚櫌: {}, 鍖归厤鍒嗘暟: {}",
+ hospData.getHospName(), matchResult.getMatchScore());
+ }
+
+ logger.info("杩斿洖 {} 涓尰闄㈢粨鏋�", result.size());
+
+ long totalTime = System.currentTimeMillis() - startTime;
+ logger.info("鎼滅储瀹屾垚 - 鎬昏�楁椂: {}ms, 鏁版嵁搴撴煡璇�: {}ms, 鍖归厤璁$畻: {}ms",
+ totalTime, queryTime - startTime, matchTime - matchStartTime);
+
+ return success(result);
+
+ } catch (Exception e) {
+ logger.error("鍒嗚瘝鍖归厤鎼滅储澶辫触", e);
+ return error("鎼滅储澶辫触锛�" + e.getMessage());
+ }
+ }
+
+ /**
+ * 灏員bHospData杞崲涓篐ospData
+ */
+ private HospData convertToHospData(TbHospData tbHospData) {
+ HospData hospData = new HospData();
+ hospData.setHospId(tbHospData.getLegacyHospId());
+ hospData.setHospName(tbHospData.getHospName());
+ hospData.setHospCityId(tbHospData.getHospCityId());
+ hospData.setHospShort(tbHospData.getHospShort());
+ hospData.setHopsProvince(tbHospData.getHopsProvince());
+ hospData.setHopsCity(tbHospData.getHopsCity());
+ hospData.setHopsArea(tbHospData.getHopsArea());
+ hospData.setHospAddress(tbHospData.getHospAddress());
+ hospData.setHospTel(tbHospData.getHospTel());
+ hospData.setHospUnitId(tbHospData.getHospUnitId());
+ hospData.setHospState(tbHospData.getHospState());
+ hospData.setHospOaId(tbHospData.getHospOaId());
+ hospData.setHospIntroducerId(tbHospData.getHospIntroducerId());
+ if (tbHospData.getHospIntroducerDate() != null) {
+ hospData.setHospIntroducerDate(tbHospData.getHospIntroducerDate().toString());
+ }
+ hospData.setHospLevel(tbHospData.getHospLevel());
+ return hospData;
+ }
+
+ /**
+ * 鍖婚櫌鍖归厤缁撴灉鍐呴儴绫�
+ */
+ private static class HospitalMatchResult {
+ private TbHospData hospital;
+ private int matchScore;
+
+ public HospitalMatchResult(TbHospData hospital, int matchScore) {
+ this.hospital = hospital;
+ this.matchScore = matchScore;
+ }
+
+ public TbHospData getHospital() {
+ return hospital;
+ }
+
+ public int getMatchScore() {
+ return matchScore;
+ }
+ }
+
+ /**
+ * 鍖婚櫌鏁版嵁涓庡尮閰嶅垎鏁板寘瑁呯被
+ */
+ private static class HospDataWithScore {
+ private HospData hospital;
+ private int matchScore;
+
+ public HospDataWithScore(HospData hospital, int matchScore) {
+ this.hospital = hospital;
+ this.matchScore = matchScore;
+ }
+
+ public HospData getHospital() {
+ return hospital;
+ }
+
+ public int getMatchScore() {
+ return matchScore;
+ }
+ }
}
--
Gitblit v1.9.1