From a28c894d35b5ca697bfe455c2d584c7f28ec3722 Mon Sep 17 00:00:00 2001
From: lige <bestlige@outlook.com>
Date: 星期五, 15 十二月 2023 15:51:59 +0800
Subject: [PATCH] 优化项目列表

---
 ltkj-hosp/src/main/java/com/ltkj/hosp/mapper/TjProjectMapper.java                |   18 ++++++++++++++++++
 ltkj-hosp/src/main/java/com/ltkj/hosp/service/ITjProjectService.java             |    3 +++
 ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjProjectController.java |   33 ++++++++++++++++++++-------------
 ltkj-hosp/src/main/java/com/ltkj/hosp/service/impl/TjProjectServiceImpl.java     |    5 +++++
 4 files changed, 46 insertions(+), 13 deletions(-)

diff --git a/ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjProjectController.java b/ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjProjectController.java
index a6687df..8f87e6b 100644
--- a/ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjProjectController.java
+++ b/ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjProjectController.java
@@ -66,27 +66,34 @@
     public AjaxResult getlist(@RequestParam(required = false) @ApiParam(value = "椤圭洰鍚嶇О") String proName,
                               @RequestParam(required = false) @ApiParam(value = "妫�鏌ョ被鍒�") String checkType,
                               @RequestParam(required = false) @ApiParam(value = "閮ㄩ棬id") String deptId) {
-        LambdaQueryWrapper<TjProject> wq0 = new LambdaQueryWrapper<>();
-        wq0.eq(TjProject::getProParentId, 0);
-        if(null !=proName){
-            wq0.like(TjProject::getProName,proName);
-        }
-        if(null !=checkType){
-            wq0.like(TjProject::getProCheckType,checkType);
-        }
-        if(null !=deptId){
-            wq0.like(TjProject::getDeptId,deptId);
-        }
+//        LambdaQueryWrapper<TjProject> wq0 = new LambdaQueryWrapper<>();
+//        wq0.eq(TjProject::getProParentId, 0);
+//        if(null !=proName){
+//            wq0.like(TjProject::getProName,proName);
+//        }
+//        if(null !=checkType){
+//            wq0.like(TjProject::getProCheckType,checkType);
+//        }
+//        if(null !=deptId){
+//            wq0.like(TjProject::getDeptId,deptId);
+//        }
+//
+//        List<TjProject> tjProjects = tjProjectService.list(wq0);
 
-        List<TjProject> tjProjects = tjProjectService.list(wq0);
+        //涓婇潰鐨勬崲sql
+        final List<TjProject> tjProjects = tjProjectService.getProBySqlAndName(proName, checkType, deptId);
+
         if (tjProjects != null) {
             for (TjProject project : tjProjects) {
                 LambdaQueryWrapper<TjProject> wq1 = new LambdaQueryWrapper<>();
                 wq1.eq(TjProject::getProParentId, project.getProId());
+                if(null !=proName) {
+                    wq1.like(TjProject::getProName, proName);
+                }
                 List<TjProject> projectList = tjProjectService.list(wq1);
                 project.setTjProjectList(projectList);
 
-                //鏍规嵁姣忎釜椤圭洰鐨刣eptId鎷垮埌name  2023/2/7
+
                 SysDept sysDept = deptService.selectDeptById(project.getDeptId());
                 if (sysDept!=null){
                     project.setDeptName(sysDept.getDeptName());
diff --git a/ltkj-hosp/src/main/java/com/ltkj/hosp/mapper/TjProjectMapper.java b/ltkj-hosp/src/main/java/com/ltkj/hosp/mapper/TjProjectMapper.java
index 1a3fd1f..0d20f6b 100644
--- a/ltkj-hosp/src/main/java/com/ltkj/hosp/mapper/TjProjectMapper.java
+++ b/ltkj-hosp/src/main/java/com/ltkj/hosp/mapper/TjProjectMapper.java
@@ -103,4 +103,22 @@
     @Select("SELECT c.* FROM tj_package a LEFT JOIN tj_package_project b ON a.pac_id=b.pac_id LEFT JOIN " +
             "tj_project c ON b.pro_id=c.pro_id  WHERE a.pac_id=#{pacId} and c.deleted=0")
     List<TjProject> getTjParentProjectListByPacId(String pacId);
+
+    @Select("SELECT DISTINCT d.* from (\n" +
+            "\tSELECT  * FROM `tj_project` a\n" +
+            "\twhere  a.pro_parent_id=0 \n" +
+            "\tand (case WHEN #{proName} is NOt NULL THEN a.pro_name like concat('%',#{proName},'%') ELSE 1=1 END)\n" +
+            "\tand (case WHEN #{checkType} is NOt NULL THEN a.pro_check_type=#{checkType} ELSE 1=1 END)\n" +
+            "\tand (case WHEN #{deptId} is NOt NULL THEN a.dept_id=#{deptId} ELSE 1=1 END)\n" +
+            "UNION  \n" +
+            "\tSELECT b.* FROM `tj_project` b JOIN(\n" +
+            "\tSELECT * FROM `tj_project` a\n" +
+            "\twhere a.pro_parent_id!=0\n" +
+            "\tand (case WHEN #{proName} is NOt NULL THEN a.pro_name like concat('%',#{proName},'%') ELSE 1=1 END)\n" +
+            "\tand (case WHEN #{checkType} is NOt NULL THEN a.pro_check_type=#{checkType} ELSE 1=1 END)\n" +
+            "\tand (case WHEN #{deptId} is NOt NULL THEN a.dept_id=#{deptId} ELSE 1=1 END)\n" +
+            ") c\n" +
+            "on c.pro_parent_id=b.pro_id\n" +
+            ") d\n")
+    List<TjProject> getProBySqlAndName(@Param("proName")String proName,@Param("checkType")String checkType,@Param("deptId")String deptId);
 }
diff --git a/ltkj-hosp/src/main/java/com/ltkj/hosp/service/ITjProjectService.java b/ltkj-hosp/src/main/java/com/ltkj/hosp/service/ITjProjectService.java
index 37b455b..2ef8bbd 100644
--- a/ltkj-hosp/src/main/java/com/ltkj/hosp/service/ITjProjectService.java
+++ b/ltkj-hosp/src/main/java/com/ltkj/hosp/service/ITjProjectService.java
@@ -100,4 +100,7 @@
      */
     public List<com.ltkj.hosp.treeUtil.TreeSelect> buildProjectTreeSelect(List<TjProject> projects);
 
+
+    List<TjProject> getProBySqlAndName(String proName,String checkType,String deptId);
+
 }
diff --git a/ltkj-hosp/src/main/java/com/ltkj/hosp/service/impl/TjProjectServiceImpl.java b/ltkj-hosp/src/main/java/com/ltkj/hosp/service/impl/TjProjectServiceImpl.java
index eb31836..24cb385 100644
--- a/ltkj-hosp/src/main/java/com/ltkj/hosp/service/impl/TjProjectServiceImpl.java
+++ b/ltkj-hosp/src/main/java/com/ltkj/hosp/service/impl/TjProjectServiceImpl.java
@@ -186,6 +186,11 @@
         return deptTrees.stream().map(TreeSelect::new).collect(Collectors.toList());
     }
 
+    @Override
+    public List<TjProject> getProBySqlAndName(String proName, String checkType, String deptId) {
+        return tjProjectMapper.getProBySqlAndName(proName,checkType,deptId);
+    }
+
     /**
      * 閫掑綊鍒楄〃
      */

--
Gitblit v1.8.0