From 656d6f8029f8bf9b2daa9dcc89101a879a70b860 Mon Sep 17 00:00:00 2001
From: wlzboy <66905212@qq.com>
Date: 星期三, 03 十二月 2025 23:10:05 +0800
Subject: [PATCH] feat:优先添加执行人

---
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/HospDataController.java |  144 ++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 139 insertions(+), 5 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 e498a51..d4f92b1 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
@@ -4,6 +4,7 @@
 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;
@@ -14,6 +15,8 @@
 
 /**
  * 鍖婚櫌鏁版嵁Controller
+ * 浠嶮ySQL鐨則b_hosp_data琛ㄦ煡璇㈠尰闄㈡暟鎹�
+ * hospId瀵瑰簲legacy_hosp_id瀛楁锛堟棫绯荤粺鐨勫尰闄D锛�
  * 
  * @author ruoyi
  * @date 2024-01-16
@@ -24,27 +27,158 @@
     
     @Autowired
     private HospDataMapper hospDataMapper;
+
+    @Autowired
+    private ISQLHospDataService sqlHospDataService;
     
     /**
-     * 鎼滅储鍖婚櫌
+     * 鎼滅储鍖婚櫌锛堜粠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) {
         HospData hospital = hospDataMapper.selectHospDataById(hospId);
         return success(hospital);
     }
+    
+    /**
+     * 鑾峰彇甯哥敤杞嚭鍖婚櫌鍒楄〃锛堜粠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 = "pageSize", required = false, defaultValue = "50") Integer pageSize) {
+        // 鏌ヨ甯哥敤杞嚭鍖婚櫌ID鍒楄〃
+        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 = "pageSize", required = false, defaultValue = "50") Integer pageSize) {
+        // 鏌ヨ甯哥敤杞叆鍖婚櫌ID鍒楄〃
+        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);
+    }
 }

--
Gitblit v1.9.1