Browse Source

优化字典搜索。

lighter 3 years ago
parent
commit
0f05a618c4

+ 17 - 55
src/main/java/thyyxxk/webserver/dao/his/yibao/DictionaryDao.java

@@ -11,69 +11,31 @@ import java.util.List;
 @Mapper
 public interface DictionaryDao {
 
-    @Select("SELECT RTRIM(code) AS code,rtrim(name) name FROM a_employee_mi WHERE isnull(del_flag,0)!=1 and py_code LIKE #{content}")
-    List<PureCodeName> searchPhysicianByPinyin(String content);
+    @Select("SELECT RTRIM(code) AS code,rtrim(name) name FROM a_employee_mi WHERE " +
+            "isnull(del_flag,0)!=1 and ${method} LIKE #{content} collate Chinese_PRC_CI_AS")
+    List<PureCodeName> searchPhysician(@Param("method") String method, @Param("content") String content);
 
-    @Select("SELECT RTRIM(code) AS code,rtrim(name) name FROM a_employee_mi WHERE code LIKE #{content}")
-    List<PureCodeName> searchPhysicianByCode(String content);
+    @Select("select diagnosis_code as code, diagnosis_name as name from t_si_dl_dss_dns " +
+            "where ${method} LIKE #{content} collate Chinese_PRC_CI_AS")
+    List<PureCodeName> searchDiagnose(@Param("method") String method, @Param("content") String content);
 
-    @Select("SELECT RTRIM(code) AS code,rtrim(name) name FROM a_employee_mi WHERE name LIKE #{content}")
-    List<PureCodeName> searchPhysicianByName(String content);
-
-    @Select("select diagnosis_code as code, diagnosis_name as name from t_si_dl_dss_dns where py_code LIKE #{content}")
-    List<PureCodeName> searchDiagnoseByPinyin(String content);
-
-    @Select("select diagnosis_code as code, diagnosis_name as name from t_si_dl_dss_dns where diagnosis_code LIKE #{content}")
-    List<PureCodeName> searchDiagnoseByCode(String content);
-
-    @Select("select diagnosis_code as code, diagnosis_name as name from t_si_dl_dss_dns where diagnosis_name LIKE #{content}")
-    List<PureCodeName> searchDiagnoseByName(String content);
-
-    @Select("select distinct new_code as code,new_name as name from ${tableName} where new_name like #{content}")
+    @Select("select distinct new_code as code,new_name as name from ${tableName} where new_name like #{content} collate Chinese_PRC_CI_AS")
     List<PureCodeName> selectSlwSpcDiag(@Param("content") String content, @Param("tableName") String tableName);
 
     @Select("select * from ${table}")
     List<SpecialDiag> selectAllSpecialDiags(@Param("table") String table);
 
-    @Select("select code,name from t_zd_injury_icd where code like #{content}")
-    List<PureCodeName> selectInjurydiagByCode(@Param("content") String content);
-
-    @Select("select code,name from t_zd_injury_icd where name like #{content}")
-    List<PureCodeName> selectInjurydiagByName(@Param("content") String content);
-
-    @Select("select code,name from t_zd_injury_icd where py_code like #{content}")
-    List<PureCodeName> selectInjurydiagByAlpha(@Param("content") String content);
-
-    @Select("select rtrim(new_code) as code, rtrim(new_name) as name from " +
-            "si_icd_employees_maternity_hospitalization where py_code like #{content}")
-    List<PureCodeName> selectMatnDiagForFrontSheetByPyCode(@Param("content") String content);
-
-    @Select("select rtrim(new_code) as code, rtrim(new_name) as name from " +
-            "si_icd_employees_maternity_hospitalization where new_code like #{content}")
-    List<PureCodeName> selectMatnDiagForFrontSheetByCode(@Param("content") String content);
-
-    @Select("select rtrim(new_code) as code, rtrim(new_name) as name from " +
-            "si_icd_employees_maternity_hospitalization where new_name like #{content}")
-    List<PureCodeName> selectMatnDiagForFrontSheetByName(@Param("content") String content);
-
-    @Select("select rtrim(new_code) as code, rtrim(new_name) as name " +
-            "from si_icd_single_diseases where py_code like #{content} ")
-    List<PureCodeName> selectSpcDssDiagForFrontSheetByPyCode(@Param("content") String content);
-
-    @Select("select rtrim(new_code) as code, rtrim(new_name) as name " +
-            "from si_icd_single_diseases where code like #{content} ")
-    List<PureCodeName> selectSpcDssDiagForFrontSheetByCode(@Param("content") String content);
-
-    @Select("select rtrim(new_code) as code, rtrim(new_name) as name " +
-            "from si_icd_single_diseases where name like #{content} ")
-    List<PureCodeName> selectSpcDssDiagForFrontSheetByName(@Param("content") String content);
+    @Select("select code,name from t_zd_injury_icd where ${method} like #{content} collate Chinese_PRC_CI_AS")
+    List<PureCodeName> selectInjurydiag(@Param("method") String method, @Param("content") String content);
 
-    @Select("select code, name from t_zd_injury_disease where py_code like #{content} ")
-    List<PureCodeName> selectInjuryDssDiagForFrontSheetByPyCode(@Param("content") String content);
+    @Select("select rtrim(new_code) as code, rtrim(new_name) as name from si_icd_employees_maternity_hospitalization " +
+            "where ${method} like #{content} collate Chinese_PRC_CI_AS")
+    List<PureCodeName> selectMatnDiagForFrontSheet(@Param("method") String method, @Param("content") String content);
 
-    @Select("select code, name from t_zd_injury_disease where code like #{content} ")
-    List<PureCodeName> selectInjuryDssDiagForFrontSheetByCode(@Param("content") String content);
+    @Select("select rtrim(new_code) as code, rtrim(new_name) as name from si_hospitalization_single_disease " +
+            "where ${method} like #{content} collate Chinese_PRC_CI_AS")
+    List<PureCodeName> selectSpcDssDiagForFrontSheet(@Param("method") String method, @Param("content") String content);
 
-    @Select("select code, name from t_zd_injury_disease where name like #{content} ")
-    List<PureCodeName> selectInjuryDssDiagForFrontSheetByName(@Param("content") String content);
+    @Select("select code, name from t_zd_injury_disease where ${method} like #{content} collate Chinese_PRC_CI_AS")
+    List<PureCodeName> selectInjuryDssDiagForFrontSheet(@Param("method") String method, @Param("content") String content);
 }

+ 37 - 62
src/main/java/thyyxxk/webserver/service/yibao/DictionaryService.java

@@ -43,31 +43,23 @@ public class DictionaryService {
     }
 
     private List<PureCodeName> deepinPhysician(String method, String content, boolean accurateSearch) {
-        content = accurateSearch ? content.toUpperCase() + '%' : '%' + content.toUpperCase() + '%';
-        switch (method) {
-            case "alpha":
-                return dao.searchPhysicianByPinyin(content);
-            case "code":
-                return dao.searchPhysicianByCode(content);
-            case "name":
-                return dao.searchPhysicianByName(content);
-            default:
-                return new ArrayList<>();
+        content = accurateSearch ? content + '%' : '%' + content + '%';
+        if (method.equals("alpha")) {
+            method = "py_code";
         }
+        return dao.searchPhysician(method, content);
     }
 
     private List<PureCodeName> deepinDiag(String method, String content, boolean accurateSearch) {
-        content = accurateSearch ? content.toUpperCase() + '%' : '%' + content.toUpperCase() + '%';
-        switch (method) {
-            case "alpha":
-                return dao.searchDiagnoseByPinyin(content);
-            case "code":
-                return dao.searchDiagnoseByCode(content);
-            case "name":
-                return dao.searchDiagnoseByName(content);
-            default:
-                return new ArrayList<>();
+        content = accurateSearch ? content + '%' : '%' + content + '%';
+        if (method.equals("alpha")) {
+            method = "py_code";
+        } else if (method.equals("code")) {
+            method = "diagnosis_code";
+        } else {
+            method = "diagnosis_name";
         }
+        return dao.searchDiagnose(method, content);
     }
 
     private List<PureCodeName> deepinSlwSpcDiag(String content, Integer perstype) {
@@ -81,67 +73,50 @@ public class DictionaryService {
     }
 
     private List<PureCodeName> deepinInjuryDiag(String method, String content) {
-        content = "%" + content.toUpperCase() + "%";
-        switch (method) {
-            case "alpha":
-                return dao.selectInjurydiagByAlpha(content);
-            case "code":
-                return dao.selectInjurydiagByCode(content);
-            case "name":
-                return dao.selectInjurydiagByName(content);
+        content = "%" + content + "%";
+        if (method.equals("alpha")) {
+            method = "py_code";
         }
-        return new ArrayList<>();
+        return dao.selectInjurydiag(method, content);
     }
 
     public ResultVo<List<SpecialDiag>> getAllSpecialDiags(String medType) {
-        String tableName;
-        if (medType.equals("2102")) {
-            tableName = "si_icd_employees_single_disease_hospitalization";
-        } else if (medType.equals("2102-residents")) {
-            tableName = "si_icd_residents_single_disease_hospitalization";
-        } else {
+        String tableName = "si_hospitalization_single_disease";
+        if (medType.equals("52")) {
             tableName = "si_icd_employees_maternity_hospitalization";
         }
         return ResultVoUtil.success(dao.selectAllSpecialDiags(tableName));
     }
 
     public ResultVo<List<PureCodeName>> getMaternDiagsForFrontSheet(SearchDataParam param) {
-        String content = "%" + param.getContent().toUpperCase() + "%";
-        switch (param.getMethod()) {
-            case "alpha":
-                return ResultVoUtil.success(dao.selectMatnDiagForFrontSheetByPyCode(content));
-            case "code":
-                return ResultVoUtil.success(dao.selectMatnDiagForFrontSheetByCode(content));
-            case "name":
-                return ResultVoUtil.success(dao.selectMatnDiagForFrontSheetByName(content));
+        String content = "%" + param.getContent() + "%";
+        String method = "py_code";
+        if (param.getMethod().equals("code")) {
+            method = "new_code";
+        } else if (param.getMethod().equals("name")) {
+            method = "new_name";
         }
-        return ResultVoUtil.fail(ExceptionEnum.NULL_POINTER);
+        return ResultVoUtil.success(dao.selectMatnDiagForFrontSheet(method, content));
     }
 
     public ResultVo<List<PureCodeName>> getSingleDssForFrontSheet(SearchDataParam param) {
-        String content = "%" + param.getContent().toUpperCase() + "%";
-        switch (param.getMethod()) {
-            case "alpha":
-                return ResultVoUtil.success(dao.selectSpcDssDiagForFrontSheetByPyCode(content));
-            case "code":
-                return ResultVoUtil.success(dao.selectSpcDssDiagForFrontSheetByCode(content));
-            case "name":
-                return ResultVoUtil.success(dao.selectSpcDssDiagForFrontSheetByName(content));
+        String content = "%" + param.getContent() + "%";
+        String method = "py_code";
+        if (param.getMethod().equals("code")) {
+            method = "new_code";
+        } else if (param.getMethod().equals("name")) {
+            method = "new_name";
         }
-        return ResultVoUtil.fail(ExceptionEnum.NULL_POINTER);
+        return ResultVoUtil.success(dao.selectSpcDssDiagForFrontSheet(method, content));
     }
 
     public ResultVo<List<PureCodeName>> getInjuryDssForFrontSheet(SearchDataParam param) {
-        String content = "%" + param.getContent().toUpperCase() + "%";
-        switch (param.getMethod()) {
-            case "alpha":
-                return ResultVoUtil.success(dao.selectInjuryDssDiagForFrontSheetByPyCode(content));
-            case "code":
-                return ResultVoUtil.success(dao.selectInjuryDssDiagForFrontSheetByCode(content));
-            case "name":
-                return ResultVoUtil.success(dao.selectInjuryDssDiagForFrontSheetByName(content));
+        String content = "%" + param.getContent() + "%";
+        String method = "py_code";
+        if (!param.getMethod().equals("alpha")) {
+            method = param.getMethod();
         }
-        return ResultVoUtil.fail(ExceptionEnum.NULL_POINTER);
+        return ResultVoUtil.success(dao.selectInjuryDssDiagForFrontSheet(method, content));
     }
 
     public ResultVo<List<PureCodeName>> searchYbDiag(SearchDataParam param) {