Forráskód Böngészése

优化诊断模糊查询

yeguodong 2 hete
szülő
commit
5903184840

+ 23 - 10
src/main/java/cn/hnthyy/thmz/mapper/his/zd/ZdIcdCodeMapper.java

@@ -56,28 +56,41 @@ public interface ZdIcdCodeMapper {
     @Select({"<script>",
             "<choose>",
             "<when test='name == null or name == \"\"'>",
-            "SELECT TOP 100 * FROM zd_icd_code_new",
+            "SELECT TOP 100 rtrim(yb_code) code, rtrim(name) name, rtrim(py_code) py_code, infectiousdiseases_flag FROM zd_icd_code_new",
             "</when>",
             "<otherwise>",
-            "SELECT * FROM zd_icd_code_new ",
+            "SELECT rtrim(yb_code) code, rtrim(name) name, rtrim(py_code) py_code, infectiousdiseases_flag FROM zd_icd_code_new ",
             "WHERE ",
             "name LIKE '%' + #{name} + '%' ",
             "OR yb_code LIKE '%' + #{name} + '%' ",
+            "OR UPPER(py_code) LIKE '%' + UPPER(#{name}) + '%' ",
             "ORDER BY ",
-            "CASE WHEN name LIKE '%' + #{name} + '%' THEN 1 ELSE 2 END ASC, ",
             "CASE ",
-            "WHEN name = #{name} THEN 1 ",
-            "WHEN name LIKE #{name} + '%' THEN 2 ",
-            "WHEN yb_code = #{name} THEN 3 ",
-            "WHEN yb_code LIKE #{name} + '%' THEN 4 ",
-            "WHEN name LIKE '%' + #{name} + '%' THEN 5 ",
-            "ELSE 6 ",
+            "WHEN UPPER(py_code) LIKE '%' + UPPER(#{name}) + '%' THEN 1 ",
+            "WHEN name LIKE '%' + #{name} + '%' THEN 2 ",
+            "ELSE 3 ",
             "END ASC, ",
             "CASE ",
+            "WHEN UPPER(py_code) = UPPER(#{name}) THEN 1 ",
+            "WHEN UPPER(py_code) LIKE UPPER(#{name}) + '%' THEN 2 ",
+            "WHEN name = #{name} THEN 3 ",
+            "WHEN name LIKE #{name} + '%' THEN 4 ",
+            "WHEN yb_code = #{name} THEN 5 ",
+            "WHEN yb_code LIKE #{name} + '%' THEN 6 ",
+            "WHEN UPPER(py_code) LIKE '%' + UPPER(#{name}) + '%' THEN 7 ",
+            "WHEN name LIKE '%' + #{name} + '%' THEN 8 ",
+            "ELSE 9 ",
+            "END ASC, ",
+            "CASE ",
+            "WHEN UPPER(py_code) LIKE '%' + UPPER(#{name}) + '%' THEN CHARINDEX(UPPER(#{name}), UPPER(py_code)) ",
             "WHEN name LIKE '%' + #{name} + '%' THEN CHARINDEX(#{name}, name) ",
             "ELSE CHARINDEX(#{name}, yb_code) ",
             "END ASC, ",
-            "LEN(CASE WHEN name LIKE '%' + #{name} + '%' THEN name ELSE yb_code END) ASC",
+            "LEN(CASE ",
+            "WHEN UPPER(py_code) LIKE '%' + UPPER(#{name}) + '%' THEN py_code ",
+            "WHEN name LIKE '%' + #{name} + '%' THEN name ",
+            "ELSE yb_code ",
+            "END) ASC",
             "</otherwise>",
             "</choose>",
             "</script>"})