From 47b8082636e1905f6eb998d053671da878de8f1c Mon Sep 17 00:00:00 2001
From: zhanghua <314079846@qq.com>
Date: 星期一, 17 十月 2022 18:04:04 +0800
Subject: [PATCH] 部门查询代码重构

---
 ycl-common/src/main/java/com/ycl/service/depart/impl/UmsDepartServiceImpl.java |   50 +++-------------
 ycl-common/src/main/java/com/ycl/controller/depart/DepartController.java       |   17 +++--
 ycl-common/src/main/java/com/ycl/mapper/depart/UmsDepartMapper.java            |    3 +
 ycl-common/src/main/java/com/ycl/service/depart/UmsDepartService.java          |   10 ++
 ycl-common/src/main/java/com/ycl/vo/depart/UmsDepartVO.java                    |   28 +--------
 ycl-common/src/main/resources/mapper/depart/UmsDepartMapper.xml                |   63 +++++++++++++++------
 6 files changed, 80 insertions(+), 91 deletions(-)

diff --git a/ycl-common/src/main/java/com/ycl/controller/depart/DepartController.java b/ycl-common/src/main/java/com/ycl/controller/depart/DepartController.java
index 893f3b4..e3d63c6 100644
--- a/ycl-common/src/main/java/com/ycl/controller/depart/DepartController.java
+++ b/ycl-common/src/main/java/com/ycl/controller/depart/DepartController.java
@@ -3,6 +3,7 @@
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ycl.annotation.LogSave;
 import com.ycl.api.BasePageDTO;
 import com.ycl.api.BasePageVO;
@@ -45,7 +46,7 @@
 
     @ApiOperation("娣诲姞閮ㄩ棬")
     @PostMapping(value = "/create")
-    @LogSave(operationType = "閮ㄩ棬绠$悊",contain = "娣诲姞閮ㄩ棬")
+    @LogSave(operationType = "閮ㄩ棬绠$悊", contain = "娣诲姞閮ㄩ棬")
     public CommonResult<Void> create(@Validated @RequestBody DepartVO.AddDepartVO addDepartVO) {
         departService.create(addDepartVO);
         return CommonResult.success(null);
@@ -53,7 +54,7 @@
 
     @ApiOperation("缂栬緫閮ㄩ棬")
     @PostMapping(value = "/update")
-    @LogSave(operationType = "閮ㄩ棬绠$悊",contain = "缂栬緫閮ㄩ棬")
+    @LogSave(operationType = "閮ㄩ棬绠$悊", contain = "缂栬緫閮ㄩ棬")
     public CommonResult<Void> create(@Validated @RequestBody DepartVO.UpdateDepartVO params) {
         departService.update(params);
         return CommonResult.success(null);
@@ -61,7 +62,7 @@
 
     @ApiOperation("鍒犻櫎")
     @PostMapping(value = "/delete")
-    @LogSave(operationType = "閮ㄩ棬绠$悊",contain = "鍒犻櫎閮ㄩ棬")
+    @LogSave(operationType = "閮ㄩ棬绠$悊", contain = "鍒犻櫎閮ㄩ棬")
     public CommonResult<Void> delete(@Validated @RequestBody DepartVO.IdDepartVO params) {
         departService.delete(params.getId());
         return CommonResult.success(null);
@@ -74,7 +75,7 @@
      **/
     @ApiOperation("鎵瑰鐞�-鍒犻櫎")
     @PostMapping(value = "/batch_deletion")
-    @LogSave(operationType = "閮ㄩ棬绠$悊",contain = "鎵归噺鍒犻櫎閮ㄩ棬")
+    @LogSave(operationType = "閮ㄩ棬绠$悊", contain = "鎵归噺鍒犻櫎閮ㄩ棬")
     public CommonResult delete(@RequestParam List<Long> ids) {
         if (ids.isEmpty()) {
             return CommonResult.failed("bad request parameter");
@@ -84,7 +85,7 @@
 
     @ApiOperation("璇︽儏")
     @PostMapping(value = "/detail")
-    @LogSave(operationType = "閮ㄩ棬绠$悊",contain = "鏌ョ湅閮ㄩ棬")
+    @LogSave(operationType = "閮ㄩ棬绠$悊", contain = "鏌ョ湅閮ㄩ棬")
     public CommonResult<UmsDepart> detail(@Validated @RequestBody DepartVO.IdDepartVO params) {
         UmsDepart sccgDepart = departService.loadDepartById(params.getId());
         return CommonResult.success(sccgDepart);
@@ -106,8 +107,10 @@
 
     @ApiOperation("鏌ヨ鍏ㄩ儴閮ㄩ棬")
     @GetMapping(value = "/page")
-    public CommonResult<IPage<UmsDepartVO>> page(DepartVO.PageDepartVO params) {
-        IPage<UmsDepartVO> page = departService.pageDepart(params);
+    public CommonResult<IPage<UmsDepartVO>> page(@RequestParam("currentPage") Integer currentPage, @RequestParam("pageSize") Integer pageSize,
+                                                @RequestParam(value = "departName", required = false) String departName) {
+        IPage<UmsDepartVO> page = new Page<>(currentPage, pageSize);
+        departService.pageDepart(departName, page);
         return CommonResult.success(page);
     }
 
diff --git a/ycl-common/src/main/java/com/ycl/mapper/depart/UmsDepartMapper.java b/ycl-common/src/main/java/com/ycl/mapper/depart/UmsDepartMapper.java
index 79d5849..a89249a 100644
--- a/ycl-common/src/main/java/com/ycl/mapper/depart/UmsDepartMapper.java
+++ b/ycl-common/src/main/java/com/ycl/mapper/depart/UmsDepartMapper.java
@@ -2,6 +2,8 @@
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.ycl.entity.depart.UmsDepart;
+import com.ycl.vo.depart.UmsDepartVO;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
@@ -17,4 +19,5 @@
 
     List<UmsDepart> selectDepartList();
 
+    List<UmsDepartVO> selectPageByName(@Param("departName") String departName, @Param("offset") Long offset, @Param("size") Long size);
 }
diff --git a/ycl-common/src/main/java/com/ycl/service/depart/UmsDepartService.java b/ycl-common/src/main/java/com/ycl/service/depart/UmsDepartService.java
index 50f9d50..550c14d 100644
--- a/ycl-common/src/main/java/com/ycl/service/depart/UmsDepartService.java
+++ b/ycl-common/src/main/java/com/ycl/service/depart/UmsDepartService.java
@@ -1,10 +1,12 @@
 package com.ycl.service.depart;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ycl.entity.depart.UmsDepart;
 import com.ycl.vo.depart.DepartVO;
 import com.ycl.vo.depart.UmsDepartVO;
+import org.springframework.web.bind.annotation.RequestParam;
 
 import java.util.List;
 
@@ -41,25 +43,29 @@
 
     /**
      * 鍒犻櫎
+     *
      * @param id
      */
     void delete(long id);
 
     /**
      * 鏍戝舰
+     *
      * @return
      */
     List<UmsDepart> tree();
 
     /**
      * 鍒嗛〉
-     * @param params
+     *
+     * @param page
      * @return
      */
-    IPage<UmsDepartVO> pageDepart(DepartVO.PageDepartVO params);
+    IPage<UmsDepartVO> pageDepart(String departName, IPage<UmsDepartVO> page);
 
     /**
      * 淇敼鐘舵��
+     *
      * @param params
      */
     void updateStatus(DepartVO.StatusDepartVO params);
diff --git a/ycl-common/src/main/java/com/ycl/service/depart/impl/UmsDepartServiceImpl.java b/ycl-common/src/main/java/com/ycl/service/depart/impl/UmsDepartServiceImpl.java
index 801bdf2..5979651 100644
--- a/ycl-common/src/main/java/com/ycl/service/depart/impl/UmsDepartServiceImpl.java
+++ b/ycl-common/src/main/java/com/ycl/service/depart/impl/UmsDepartServiceImpl.java
@@ -63,7 +63,7 @@
         }
         UmsDepart depart = new UmsDepart();
         BeanUtils.copyProperties(addDepartVO, depart);
-		depart.setStatus(Short.valueOf("1"));
+        depart.setStatus(Short.valueOf("1"));
         umsDepartService.save(depart);
         addDepartVO.getDepartManagerList()
                 .forEach(item -> {
@@ -139,44 +139,16 @@
     }
 
     @Override
-    public IPage<UmsDepartVO> pageDepart(DepartVO.PageDepartVO params) {
-        Page<UmsDepart> page = new Page<>(params.getCurrent(), params.getPageSize());
-        LambdaQueryWrapper<UmsDepart> query = new LambdaQueryWrapper<>();
-        if (StringUtils.isNotBlank(params.getDepartName())) {
-            query.like(UmsDepart::getDepartName, params.getDepartName());
-        }
-        if (PojoUtils.Vo.isUsefulSearchParam(params.getDepartType())) {
-            query.like(UmsDepart::getDepartType, params.getDepartType());
-        }
-        query.orderByDesc(UmsDepart::getCreateTime);
-        Page<UmsDepart> departPage = sccgDepartMapper.selectPage(page, query);
-        Page<UmsDepartVO> umsDepartVOPage = new Page<>();
-        BeanUtils.copyProperties(departPage, umsDepartVOPage);
-        List<UmsDepartVO> umsDepartVOList = new ArrayList<>();
-        //璐熻矗浜�
-        if (CollUtil.isNotEmpty(departPage.getRecords())) {
-            for (UmsDepart record : departPage.getRecords()) {
-                UmsDepartVO umsDepartVO = new UmsDepartVO();
-                BeanUtils.copyProperties(record, umsDepartVO);
-                umsDepartVO.setDepartType(dataDictionaryMapper
-                        .selectOne(new LambdaQueryWrapper<DataDictionary>()
-                                .eq(DataDictionary::getId, record.getDepartType()))
-                        .getName());
-                umsDepartVOList.add(umsDepartVO);
-                List<UmsDepartManage> umsAdminDeparts = umsAdminDepartService.queryByDepartId(record.getId());
-                if (CollUtil.isNotEmpty(umsAdminDeparts)) {
-                    List<AdminDepartDTO.UserInfoDTO> userInfoDTOS = umsAdminDeparts.stream().map(a -> {
-                        AdminDepartDTO.UserInfoDTO userInfoDTO = new AdminDepartDTO.UserInfoDTO();
-                        userInfoDTO.setUserId(a.getUserId());
-//                        userInfoDTO.setUsername(umsAdminService.getById(a.getUserId()).getUsername());
-                        return userInfoDTO;
-                    }).collect(Collectors.toList());
-                    record.setUserInfoDTOS(userInfoDTOS);
-                }
-            }
-        }
-        umsDepartVOPage.setRecords(umsDepartVOList);
-        return umsDepartVOPage;
+    public IPage<UmsDepartVO> pageDepart(String departName, IPage<UmsDepartVO> page) {
+
+        List<UmsDepartVO> ls = sccgDepartMapper.selectPageByName(departName, page.offset(), page.getSize());
+        LambdaQueryWrapper<UmsDepart> queryWrapper = new LambdaQueryWrapper<UmsDepart>()
+                .like(StringUtils.isNotEmpty(departName), UmsDepart::getDepartName, departName);
+        long total = this.count(queryWrapper);
+
+        page.setRecords(ls);
+        page.setTotal(total);
+        return page;
     }
 
     @Override
diff --git a/ycl-common/src/main/java/com/ycl/vo/depart/UmsDepartVO.java b/ycl-common/src/main/java/com/ycl/vo/depart/UmsDepartVO.java
index 9abc73e..5bdc4be 100644
--- a/ycl-common/src/main/java/com/ycl/vo/depart/UmsDepartVO.java
+++ b/ycl-common/src/main/java/com/ycl/vo/depart/UmsDepartVO.java
@@ -3,6 +3,7 @@
 import com.baomidou.mybatisplus.annotation.*;
 import com.ycl.api.BaseEntity;
 import com.ycl.dto.user.AdminDepartDTO;
+import com.ycl.entity.depart.UmsDepart;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Getter;
@@ -22,32 +23,9 @@
 @Getter
 @Setter
 @ApiModel(value = "umsDepartVO", description = "閮ㄩ棬琛�")
-public class UmsDepartVO {
-
-    @ApiModelProperty("涓婚敭")
-    @TableId(value = "id", type = IdType.AUTO)
-    private Long id;
-
-    @ApiModelProperty("閮ㄩ棬鍚嶇О")
-    private String departName;
-
-    @ApiModelProperty("閮ㄩ棬鎻忚堪")
-    private String departDes;
+public class UmsDepartVO extends UmsDepart {
 
     @ApiModelProperty("閮ㄩ棬绫诲瀷")
-    private String departType;
+    private String departTypeName;
 
-    @ApiModelProperty("鐖剁骇id,榛樿0")
-    private Long parentId;
-
-    @ApiModelProperty("鍋滅敤鐘舵�侊紝0->false,1->true,榛樿鍋滅敤")
-    private Short status;
-
-    /**
-     * 閫昏緫鍒犻櫎 0:false 1:true 榛樿0
-     */
-    @ApiModelProperty(value = "鏄惁鍒犻櫎", hidden = true)
-    @TableField(select = false)
-    @TableLogic()
-    private byte isDeleted;
 }
diff --git a/ycl-common/src/main/resources/mapper/depart/UmsDepartMapper.xml b/ycl-common/src/main/resources/mapper/depart/UmsDepartMapper.xml
index b8ec297..a477ce2 100644
--- a/ycl-common/src/main/resources/mapper/depart/UmsDepartMapper.xml
+++ b/ycl-common/src/main/resources/mapper/depart/UmsDepartMapper.xml
@@ -4,30 +4,57 @@
 
     <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
     <resultMap id="BaseResultMap" type="com.ycl.entity.depart.UmsDepart">
-        <id column="id" property="id" />
-        <result column="depart_name" property="departName" />
-        <result column="depart_des" property="departDes" />
-        <result column="depart_type" property="departType" />
-        <result column="parent_id" property="parentId" />
-        <result column="status" property="status" />
-        <result column="create_time" property="createTime" />
-        <result column="update_time" property="updateTime" />
-        <result column="is_deleted" property="isDeleted" />
+        <id column="id" property="id"/>
+        <result column="depart_name" property="departName"/>
+        <result column="depart_des" property="departDes"/>
+        <result column="depart_type" property="departType"/>
+        <result column="parent_id" property="parentId"/>
+        <result column="status" property="status"/>
+        <result column="create_time" property="createTime"/>
+        <result column="update_time" property="updateTime"/>
+        <result column="is_deleted" property="isDeleted"/>
     </resultMap>
     <resultMap type="com.ycl.entity.depart.UmsDepart" id="UserDepartResultMap" extends="BaseResultMap">
         <collection property="userInfoDTOS" javaType="ArrayList" ofType="com.ycl.dto.user.DepartUserDTO">
-            <id column="user_id" property="userId" />
-            <result column="username" property="username" />
+            <id column="user_id" property="userId"/>
+            <result column="username" property="username"/>
         </collection>
     </resultMap>
 
-    <select id="selectDepartList"  resultMap="UserDepartResultMap">
-        SELECT
-            ud.*,ua.id user_id,ua.username
-        FROM
-            ums_depart ud
-                LEFT JOIN ums_depart_manager udm ON ud.id = udm.depart_id
-                LEFT JOIN ums_admin ua ON udm.user_id = ua.id
+    <resultMap id="DepartVOMap" type="com.ycl.vo.depart.UmsDepartVO" extends="BaseResultMap">
+        <result column="depart_type_name" property="departTypeName" jdbcType="VARCHAR"></result>
+        <collection property="userInfoDTOS" javaType="ArrayList" ofType="com.ycl.dto.user.DepartUserDTO">
+            <id column="user_id" property="userId"/>
+            <result column="username" property="username"/>
+        </collection>
+    </resultMap>
+
+    <select id="selectDepartList" resultMap="UserDepartResultMap">
+        SELECT ud.*,
+               ua.id user_id,
+               ua.username
+        FROM ums_depart ud
+                 LEFT JOIN ums_depart_manager udm ON ud.id = udm.depart_id
+                 LEFT JOIN ums_admin ua ON udm.user_id = ua.id
+    </select>
+    <select id="selectPageByName" resultMap="DepartVOMap">
+        SELECT t_0.*,
+        ua.id user_id,
+        ua.username,
+        dd.`name` as depart_type_name
+        FROM (
+        SELECT ud.*
+        FROM ums_depart ud
+        WHERE is_deleted = 0
+        <if test="departName!=null and departName!=''">
+            and ud.name like CONCAT('%',#{departName},'%')
+        </if>
+        ORDER BY create_time desc
+        LIMIT #{offset}, #{size}
+        ) t_0
+        LEFT JOIN ums_depart_manager udm ON t_0.id = udm.depart_id
+        LEFT JOIN ums_admin ua ON udm.user_id = ua.id
+        left join ums_data_dictionary as dd on t_0.depart_type = dd.id
     </select>
 
 

--
Gitblit v1.8.0