From 739d4c2f64fcfd4ddcce6292978ad6aeb2c7bdc7 Mon Sep 17 00:00:00 2001
From: wlzboy <66905212@qq.com>
Date: 星期一, 26 一月 2026 23:00:13 +0800
Subject: [PATCH] feat: 优化医院搜索

---
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/HospDataController.java |   18 ++
 app/pagesTask/create-emergency.vue                                                |  334 +++++++++++++++++-------------------------------------
 ruoyi-admin/src/main/resources/application.yml                                    |    2 
 3 files changed, 121 insertions(+), 233 deletions(-)

diff --git a/app/pagesTask/create-emergency.vue b/app/pagesTask/create-emergency.vue
index 146f8c0..e68decb 100644
--- a/app/pagesTask/create-emergency.vue
+++ b/app/pagesTask/create-emergency.vue
@@ -400,41 +400,6 @@
         </view>
       </view>
     </uni-popup>
-    
-    <!-- 鎷嶇収璇嗗埆寮圭獥 -->
-    <uni-popup ref="photoOCRPopup" type="bottom" :safe-area="true">
-      <view class="photo-ocr-popup">
-        <view class="popup-header">
-          <view class="popup-title">鎷嶇収璇嗗埆</view>
-          <view class="popup-close" @click="closePhotoOCRPopup">
-            <uni-icons type="closeempty" size="24" color="#333"></uni-icons>
-          </view>
-        </view>
-        
-        <view class="ocr-content">
-          <view class="ocr-tip">
-            <uni-icons type="info" size="18" color="#007AFF"></uni-icons>
-            <text>鎷嶇収鎴栭�夋嫨鍥剧墖锛岃嚜鍔ㄨ瘑鍒浆杩愬崟淇℃伅</text>
-          </view>
-          
-          <view class="image-preview" v-if="ocrImage">
-            <image :src="ocrImage" mode="aspectFit" style="width: 100%; height: 300rpx; border-radius: 10rpx;"></image>
-          </view>
-          
-          <view class="ocr-actions">
-            <button class="select-btn" @click="selectImage">閫夋嫨鍥剧墖</button>
-            <button class="capture-btn" @click="captureImage">鎷嶇収</button>
-          </view>
-        </view>
-        
-        <view class="popup-footer">
-          <button class="cancel-btn" @click="closePhotoOCRPopup">鍙栨秷</button>
-          <button class="confirm-btn" @click="performOCR" :disabled="ocrLoading">
-            {{ ocrLoading ? '璇嗗埆涓�...' : '寮�濮嬭瘑鍒�' }}
-          </button>
-        </view>
-      </view>
-    </uni-popup>
   </scroll-view>
 </template>
 
@@ -537,9 +502,6 @@
       // 鏅鸿兘璇嗗埆鐩稿叧
       rawText: '',
       parseLoading: false,
-      // 鎷嶇収璇嗗埆鐩稿叧
-      ocrImage: '',
-      ocrLoading: false,
       // 澶氬浘鐗囨媿鐓ц瘑鍒浉鍏�
       multiOcrImages: [],
       multiOcrLoading: false,
@@ -1692,12 +1654,6 @@
     
     // ==================== 鎷嶇収璇嗗埆鐩稿叧鏂规硶 ====================
     
-    // 鏄剧ず鎷嶇収璇嗗埆寮圭獥
-    showPhotoOCRPopup() {
-      this.ocrImage = ''
-      this.$refs.photoOCRPopup.open()
-    },
-    
     // 鏄剧ず澶氬浘鎷嶇収璇嗗埆寮圭獥
     showMultiPhotoOCRPopup() {
       this.page1Image = ''
@@ -1774,38 +1730,6 @@
         fail: (err) => {
           console.error('閫夋嫨鍥剧墖澶辫触:', err)
           this.$modal.showToast('閫夋嫨鍥剧墖澶辫触')
-        }
-      })
-    },
-    
-    // 閫夋嫨鍥剧墖
-    selectImage() {
-      uni.chooseImage({
-        count: 1,
-        sizeType: ['compressed'],
-        sourceType: ['album'],
-        success: (res) => {
-          this.ocrImage = res.tempFilePaths[0]
-        },
-        fail: (err) => {
-          console.error('閫夋嫨鍥剧墖澶辫触:', err)
-          this.$modal.showToast('閫夋嫨鍥剧墖澶辫触')
-        }
-      })
-    },
-    
-    // 鎷嶇収
-    captureImage() {
-      uni.chooseImage({
-        count: 1,
-        sizeType: ['compressed'],
-        sourceType: ['camera'],
-        success: (res) => {
-          this.ocrImage = res.tempFilePaths[0]
-        },
-        fail: (err) => {
-          console.error('鎷嶇収澶辫触:', err)
-          this.$modal.showToast('鎷嶇収澶辫触')
         }
       })
     },
@@ -1963,41 +1887,101 @@
         }
       }
       
-      // 鎻愬彇璇婃柇锛堢梾鎯咃級
+      // 鎻愬彇璇婃柇锛堢梾鎯咃級锛堥檺鍒�10涓瓧绗︿互鍐咃紝閬垮厤璇瘑鍒級
       if (fields['璇婃柇']) {
-        this.taskForm.patient.condition = fields['璇婃柇'].trim()
+        const diagnosis = fields['璇婃柇'].trim()
+        // 鍙湁褰�10涓瓧绗︿互鍐呯殑璇婃柇淇℃伅鎵嶅~鍏ヨ〃鍗�
+        if (diagnosis.length <= 10) {
+          this.taskForm.patient.condition = diagnosis
+        } else {
+          console.log('璇婃柇淇℃伅杩囬暱锛屽彲鑳戒负璇瘑鍒紝宸插拷鐣�:', diagnosis)
+        }
       }
       
       // 鎻愬彇琛岀▼锛堣浆鍑哄尰闄㈠拰杞叆鍖婚櫌锛�
       if (fields['琛岀▼']) {
         const route = fields['琛岀▼'].trim()
-        // 鎸�"-"鎴�"鈥�"鍒嗗壊琛岀▼
-        const hospitals = route.split(/[-鈥擼/).map(h => h.trim())
+        console.log('銆愯绋嬨�慜CR璇嗗埆鐨勮绋嬩俊鎭�:', route)
+        
+        // 鎸夊绉嶅垎闅旂鍒嗗壊琛岀▼锛�-銆佲�斻��---銆�-->銆佲啋銆佺┖鏍肩瓑
+        const hospitals = route.split(/[-鈥擼{1,3}|-->|鈫抾\s{2,}/).map(h => h.trim()).filter(h => h.length > 0)
+        console.log('銆愯绋嬨�戝垎鍓插悗鐨勫尰闄㈠垪琛�:', hospitals)
+        
         if (hospitals.length >= 2) {
           // 绗竴涓槸杞嚭鍖婚櫌
-          this.taskForm.hospitalOut.name = hospitals[0]
-          // 绗簩涓槸杞叆鍖婚櫌
-          this.taskForm.hospitalIn.name = hospitals[1]
+          const outHospital = hospitals[0]
+          this.taskForm.hospitalOut.name = outHospital
           
-          // 灏濊瘯浠庡尰闄㈠簱涓尮閰嶅苟琛ュ叏鍦板潃
-          Promise.all([
-            this.findHospitalByName(hospitals[0], 'out', false),
-            this.findHospitalByName(hospitals[1], 'in', false)
-          ]).then(([outHosp, inHosp]) => {
-            if (outHosp) {
-              this.taskForm.hospitalOut.id = outHosp.hospId
-              this.taskForm.hospitalOut.name = outHosp.hospName
-              if (outHosp.hospName !== '瀹朵腑') {
-                this.taskForm.hospitalOut.address = this.buildFullAddress(outHosp)
-                this.taskForm.hospitalOut.city = outHosp.hopsCity || ''
+          // 濡傛灍杞嚭鍖婚櫌鏄�滃涓�濓紝鎻愬彇鍚庨潰鐨勮缁嗗湴鍧�
+          if (outHospital === '瀹朵腑' && hospitals.length >= 3) {
+            // 灏嗗墿浣欓儴鍒嗕綔涓鸿缁嗗湴鍧�
+            const detailAddress = hospitals.slice(1, hospitals.length - 1).join(' ')
+            if (detailAddress) {
+              this.taskForm.hospitalOut.address = detailAddress
+              console.log('銆愯绋嬨�戣浆鍑哄涓湴鍧�:', detailAddress)
+            }
+            // 鏈�鍚庝竴涓槸杞叆鍖婚櫌
+            this.taskForm.hospitalIn.name = hospitals[hospitals.length - 1]
+            console.log('銆愯绋嬨�戣浆鍏ュ尰闄�:', hospitals[hospitals.length - 1])
+          } else {
+            // 绗簩涓槸杞叆鍖婚櫌
+            const inHospital = hospitals[1]
+            this.taskForm.hospitalIn.name = inHospital
+            
+            // 濡傛灉杞叆鍖婚櫌鏄�滃涓�濓紝鎻愬彇鍚庨潰鐨勮缁嗗湴鍧�
+            if (inHospital === '瀹朵腑' && hospitals.length >= 3) {
+              // 灏嗗墿浣欓儴鍒嗕綔涓鸿缁嗗湴鍧�
+              const detailAddress = hospitals.slice(2).join(' ')
+              if (detailAddress) {
+                this.taskForm.hospitalIn.address = detailAddress
+                console.log('銆愯绋嬨�戣浆鍏ュ涓湴鍧�:', detailAddress)
               }
             }
-            if (inHosp) {
-              this.taskForm.hospitalIn.id = inHosp.hospId
-              this.taskForm.hospitalIn.name = inHosp.hospName
-              if (inHosp.hospName !== '瀹朵腑') {
+          }
+          
+          // 灏濊瘯浠庡尰闄㈠簱涓尮閰嶅苟琛ュ叏鍦板潃锛堝彧鍦ㄩ潪鈥滃涓�濇椂锛�
+          const outHospitalName = this.taskForm.hospitalOut.name
+          const inHospitalName = this.taskForm.hospitalIn.name
+          
+          Promise.all([
+            outHospitalName !== '瀹朵腑' ? this.findHospitalByName(outHospitalName, 'out', false) : Promise.resolve(null),
+            inHospitalName !== '瀹朵腑' ? this.findHospitalByName(inHospitalName, 'in', false) : Promise.resolve(null)
+          ]).then(([outHosp, inHosp]) => {
+            // 澶勭悊杞嚭鍖婚櫌
+            if (outHospitalName !== '瀹朵腑') {
+              if (outHosp) {
+                // 鎵惧埌鍖婚櫌锛屼娇鐢ㄥ尰闄㈠簱涓殑淇℃伅
+                this.taskForm.hospitalOut.id = outHosp.hospId
+                this.taskForm.hospitalOut.name = outHosp.hospName
+                this.taskForm.hospitalOut.address = this.buildFullAddress(outHosp)
+                this.taskForm.hospitalOut.city = outHosp.hopsCity || ''
+                console.log('銆愯绋嬨�戣浆鍑哄尰闄㈠尮閰嶆垚鍔�:', outHosp.hospName)
+              } else {
+                // 鎵句笉鍒板尰闄紝榛樿璁剧疆涓�"瀹朵腑"锛屽師鍖婚櫌鍚嶇О浣滀负鍦板潃
+                console.log('銆愯绋嬨�戣浆鍑哄尰闄㈡湭鎵惧埌锛岄粯璁よ缃负瀹朵腑锛屽湴鍧�涓�:', outHospitalName)
+                this.taskForm.hospitalOut.name = '瀹朵腑'
+                this.taskForm.hospitalOut.address = outHospitalName
+                this.taskForm.hospitalOut.id = null
+                this.taskForm.hospitalOut.city = ''
+              }
+            }
+            
+            // 澶勭悊杞叆鍖婚櫌
+            if (inHospitalName !== '瀹朵腑') {
+              if (inHosp) {
+                // 鎵惧埌鍖婚櫌锛屼娇鐢ㄥ尰闄㈠簱涓殑淇℃伅
+                this.taskForm.hospitalIn.id = inHosp.hospId
+                this.taskForm.hospitalIn.name = inHosp.hospName
                 this.taskForm.hospitalIn.address = this.buildFullAddress(inHosp)
                 this.taskForm.hospitalIn.city = inHosp.hopsCity || ''
+                console.log('銆愯绋嬨�戣浆鍏ュ尰闄㈠尮閰嶆垚鍔�:', inHosp.hospName)
+              } else {
+                // 鎵句笉鍒板尰闄紝榛樿璁剧疆涓�"瀹朵腑"锛屽師鍖婚櫌鍚嶇О浣滀负鍦板潃
+                console.log('銆愯绋嬨�戣浆鍏ュ尰闄㈡湭鎵惧埌锛岄粯璁よ缃负瀹朵腑锛屽湴鍧�涓�:', inHospitalName)
+                this.taskForm.hospitalIn.name = '瀹朵腑'
+                this.taskForm.hospitalIn.address = inHospitalName
+                this.taskForm.hospitalIn.id = null
+                this.taskForm.hospitalIn.city = ''
               }
             }
             
@@ -2013,137 +1997,24 @@
       console.log('澶氬浘OCR缁撴灉澶勭悊瀹屾垚锛岃〃鍗曟暟鎹洿鏂�')
     },
     
-    // 鎵цOCR璇嗗埆
-    performOCR() {
-      if (!this.ocrImage) {
-        this.$modal.showToast('璇峰厛閫夋嫨鎴栨媿鎽勫浘鐗�')
-        return
-      }
-      
-      this.ocrLoading = true
-      
-      // 浣跨敤OCR API杩涜璇嗗埆
-      recognizeImage(this.ocrImage, 'HandWriting', 'tencent', DEFAULT_TRANSFER_ITEM_NAMES)
-        .then(response => {
-          const ocrResult = response.data.ocrResult
-          this.processOCRResult(ocrResult)
-          this.$modal.showToast('OCR璇嗗埆鎴愬姛')
-        })
-        .catch(error => {
-          console.error('OCR璇嗗埆澶辫触:', error)
-          this.$modal.showToast(`OCR璇嗗埆澶辫触: ${error.msg || '鏈煡閿欒'}`)
-        })
-        .finally(() => {
-          this.ocrLoading = false
-          this.closePhotoOCRPopup()
-        })
-    },
-    
-    // 澶勭悊OCR璇嗗埆缁撴灉
-    processOCRResult(ocrResult) {
-      if (!ocrResult || !ocrResult.content) {
-        console.log('OCR璇嗗埆缁撴灉涓虹┖')
-        return
-      }
-      
-      const content = ocrResult.content
-      console.log('OCR璇嗗埆鍐呭:', content)
-      
-      // 鎻愬彇鎮h�呭鍚�
-      const patientNameMatch = content.match(/鎮h�呭鍚峓锛�:]?\s*([^\n锛�,銆傦紱;]+)/)
-      if (patientNameMatch && patientNameMatch[1]) {
-        this.taskForm.patient.name = patientNameMatch[1].trim()
-      }
-      
-      // 鎻愬彇鎬у埆
-      const genderMatch = content.match(/鎬у埆[锛�:]?\s*([^\n锛�,銆傦紱;]+)/)
-      if (genderMatch && genderMatch[1]) {
-        const gender = genderMatch[1].trim()
-        if (gender.includes('鐢�')) {
-          this.taskForm.patient.gender = 'male'
-        } else if (gender.includes('濂�')) {
-          this.taskForm.patient.gender = 'female'
-        }
-      }
-      
-      // 鎻愬彇韬唤璇佸彿
-      const idCardMatch = content.match(/韬唤璇佸彿[锛�:]?\s*([^\n锛�,銆傦紱;]+)/)
-      const signerIdMatch = content.match(/绛惧瓧浜鸿韩浠借瘉鍙风爜[锛�:]?\s*([^\n锛�,銆傦紱;]+)/)
-      if (idCardMatch && idCardMatch[1]) {
-        this.taskForm.patient.idCard = idCardMatch[1].trim()
-      } else if (signerIdMatch && signerIdMatch[1]) {
-        this.taskForm.patient.idCard = signerIdMatch[1].trim()
-      }
-      
-      // 鎻愬彇鑱旂郴鐢佃瘽
-      const phoneMatch = content.match(/鑱旂郴鐢佃瘽[锛�:]?\s*([^\n锛�,銆傦紱;]+)/)
-      if (phoneMatch && phoneMatch[1]) {
-        this.taskForm.patient.phone = phoneMatch[1].trim()
-      }
-      
-      // 鎻愬彇璇婃柇淇℃伅
-      const diagnosisMatch = content.match(/璇婃柇[锛�:]?\s*([^\n锛�,銆傦紱;]+)/)
-      if (diagnosisMatch && diagnosisMatch[1]) {
-        this.taskForm.patient.condition = diagnosisMatch[1].trim()
-      }
-      
-      // 鎻愬彇闇�鏀粯杞繍璐圭敤锛堟垚浜や环锛�
-      const priceMatch = content.match(/闇�鏀粯杞繍璐圭敤[锛�:]?\s*([^\n锛�,銆傦紱;]+)/)
-      if (priceMatch && priceMatch[1]) {
-        // 鎻愬彇鏁板瓧閲戦
-        const priceNumber = priceMatch[1].match(/\d+(?:\.\d{1,2})?/)
-        if (priceNumber) {
-          this.taskForm.price = parseFloat(priceNumber[0]).toFixed(2)
-        }
-      }
-      
-      // 鎻愬彇鏃ユ湡
-      const dateMatch = content.match(/鏃ユ湡[锛�:]?\s*([^\n锛�,銆傦紱;]+)/)
-      if (dateMatch && dateMatch[1]) {
-        const dateString = dateMatch[1].trim()
-        // 灏濊瘯瑙f瀽鏃ユ湡鏍煎紡
-        const dateFormatted = this.formatDateString(dateString)
-        if (dateFormatted) {
-          this.taskForm.transferTime = dateFormatted
-        }
-      }
-      
-      // 鎻愬彇琛岀▼锛堣浆鍑哄尰闄㈠拰杞叆鍖婚櫌锛�
-      const routeMatch = content.match(/琛岀▼[锛�:]?\s*([^\n]+)/)
-      if (routeMatch && routeMatch[1]) {
-        const route = routeMatch[1].trim()
-        // 鎸�"-"鍒嗗壊琛岀▼锛岃幏鍙栬浆鍑哄拰杞叆鍖婚櫌
-        const hospitals = route.split(/[-鈥擼/).map(h => h.trim())
-        if (hospitals.length >= 2) {
-          // 绗竴涓槸杞嚭鍖婚櫌
-          this.taskForm.hospitalOut.name = hospitals[0]
-          // 绗簩涓槸杞叆鍖婚櫌
-          this.taskForm.hospitalIn.name = hospitals[1]
-        }
-      }
-      
-      // 鎻愬彇瀹跺睘绛惧悕鎴栨湰浜轰綔涓鸿仈绯讳汉
-      const familyContactMatch = content.match(/(?:瀹跺睘绛惧悕|鏈汉)[锛�:]?\s*([^\n锛�,銆傦紱;]+)/)
-      if (familyContactMatch && familyContactMatch[1]) {
-        this.taskForm.patient.contact = familyContactMatch[1].trim()
-      }
-      
-      // 鎻愬彇鎮h�呯鍚嶏紙鎵嬪嵃锛変綔涓鸿仈绯讳汉
-      const patientSignatureMatch = content.match(/鎮h�呯鍚嶏紙鎵嬪嵃锛塠锛�:]?\s*([^\n锛�,銆傦紱;]+)/)
-      if (patientSignatureMatch && patientSignatureMatch[1]) {
-        if (!this.taskForm.patient.contact) {
-          this.taskForm.patient.contact = patientSignatureMatch[1].trim()
-        }
-      }
-      
-      console.log('OCR缁撴灉澶勭悊瀹屾垚锛岃〃鍗曟暟鎹洿鏂�')
-    },
-    
     // 鏍煎紡鍖栨棩鏈熷瓧绗︿覆锛堣繑鍥� yyyy-MM-dd HH:mm:ss 鏍煎紡锛�
     formatDateString(dateStr) {
       // 灏濊瘯涓嶅悓鐨勬棩鏈熸牸寮�
-      let cleaned = dateStr.replace(/[骞存湀]/g, '-').replace(/[鏃ュ彿]/g, '')
-      
+      // 鏀寔鏍煎紡锛�
+      // - yyyy骞碝M鏈坉d鏃H鏃秏m鍒�
+      // - yyyy骞碝M鏈坉d鏃�
+      // - YYYYMMDD
+      // - yyyy-MM-dd HH:mm:ss
+      console.log('灏濊瘯鏍煎紡鍖栨棩鏈熷瓧绗︿覆:', dateStr)
+      let cleaned = dateStr
+        .replace(/[骞存湀]/g, '-')
+        .replace(/[鏃ュ彿]/g, ' ')  // 鏃�/鍙� 鈫� 绌烘牸锛屼繚鐣欐棩鏈熷拰鏃堕棿鐨勫垎闅�
+        .replace(/鏃�/g, ':')
+        .replace(/鍒�/g, ':')
+        .replace(/绉�/g, '')
+        .replace(/\s+/g, ' ')  // 澶氫釜绌烘牸鍚堝苟涓轰竴涓�
+        .trim()
+      console.log('娓呯悊鍚庣殑鏃ユ湡瀛楃涓�:', cleaned)
       let dateResult = ''
       
       // 濡傛灉鏄痀YMMDD鏍煎紡
@@ -2151,7 +2022,7 @@
         const year = '20' + cleaned.substring(0, 2)
         const month = cleaned.substring(2, 4)
         const day = cleaned.substring(4, 6)
-        dateResult = `${year}-${month}-${day}`
+        dateResult = `${year}-${month}-${day}`;
       }
       // 濡傛灉鏄痀YYYMMDD鏍煎紡
       else if (/^\d{8}$/.test(cleaned)) {
@@ -2168,6 +2039,15 @@
       else if (cleaned.match(/^\d{4}[-/]\d{1,2}[-/]\d{1,2}\s+\d{1,2}:\d{1,2}:\d{1,2}$/)) {
         return cleaned.replace(/[//]/g, '-')
       }
+      // 濡傛灉鍖呭惈鏃跺垎浣嗙己灏戠锛坹yyy-MM-dd HH:mm:锛�
+      else if (cleaned.match(/^\d{4}[-/]\d{1,2}[-/]\d{1,2}\s+\d{1,2}:\d{1,2}:$/)) {
+        // 鍘绘帀鏈熬鐨勫啋鍙凤紝琛ヤ笂绉掓暟00
+        return cleaned.replace(/[//]/g, '-').replace(/:$/, '') + ':00'
+      }
+      // 濡傛灉鍙寘鍚椂鍒嗭紙yyyy-MM-dd HH:mm锛�
+      else if (cleaned.match(/^\d{4}[-/]\d{1,2}[-/]\d{1,2}\s+\d{1,2}:\d{1,2}$/)) {
+        return cleaned.replace(/[//]/g, '-') + ':00'
+      }
       else {
         dateResult = dateStr
       }
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 6b3cba6..d17147c 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
@@ -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) {
diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml
index ffcd5be..fed985b 100644
--- a/ruoyi-admin/src/main/resources/application.yml
+++ b/ruoyi-admin/src/main/resources/application.yml
@@ -58,7 +58,7 @@
     basename: i18n/messages
   profiles:
     # 鐜 dev|test|prod
-    active: prod
+    active: dev
   # 鏂囦欢涓婁紶
   servlet:
     multipart:

--
Gitblit v1.9.1