From a7a6a0c332f268010b4da0161cdee80acf9bc4ce Mon Sep 17 00:00:00 2001
From: Crunchy <3114200645@qq.com>
Date: 星期一, 22 四月 2024 15:59:57 +0800
Subject: [PATCH] 2024-4-22 资源要求-人员明细-bug修改
---
cnas-server/src/main/java/com/yuanchu/mom/dto/DepartmentDto.java | 2 +
cnas-server/src/main/java/com/yuanchu/mom/service/impl/DepartmentServiceImpl.java | 42 +++++++++-----------
cnas-server/src/main/resources/mapper/DepartmentMapper.xml | 37 ++++++------------
cnas-server/src/main/java/com/yuanchu/mom/mapper/DepartmentMapper.java | 3 +
4 files changed, 36 insertions(+), 48 deletions(-)
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/dto/DepartmentDto.java b/cnas-server/src/main/java/com/yuanchu/mom/dto/DepartmentDto.java
index b8dc71c..d1d94d0 100644
--- a/cnas-server/src/main/java/com/yuanchu/mom/dto/DepartmentDto.java
+++ b/cnas-server/src/main/java/com/yuanchu/mom/dto/DepartmentDto.java
@@ -2,12 +2,14 @@
import lombok.AllArgsConstructor;
import lombok.Data;
+import lombok.NoArgsConstructor;
import java.util.ArrayList;
import java.util.List;
@Data
@AllArgsConstructor
+@NoArgsConstructor
public class DepartmentDto {
private Integer id;
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/mapper/DepartmentMapper.java b/cnas-server/src/main/java/com/yuanchu/mom/mapper/DepartmentMapper.java
index 8a26404..833fb7f 100644
--- a/cnas-server/src/main/java/com/yuanchu/mom/mapper/DepartmentMapper.java
+++ b/cnas-server/src/main/java/com/yuanchu/mom/mapper/DepartmentMapper.java
@@ -3,6 +3,7 @@
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yuanchu.mom.dto.DepartmentDto;
import com.yuanchu.mom.dto.UserDto;
import com.yuanchu.mom.pojo.Department;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
@@ -23,7 +24,7 @@
//鑾峰彇閮ㄩ棬鏍�
- List<Department> selectDepartment();
+ List<DepartmentDto> selectDepartment();
//鏍规嵁閫夋嫨鐨勬爲灞曠ず鐩稿叧鐨勪汉鍛�
IPage<UserDto> showUserById(@Param("page") IPage<UserDto> page, @Param("ids") List<String> ids, @Param("ew") QueryWrapper<UserDto> ew);
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DepartmentServiceImpl.java b/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DepartmentServiceImpl.java
index 1d9cd61..fa99cdf 100644
--- a/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DepartmentServiceImpl.java
+++ b/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DepartmentServiceImpl.java
@@ -17,6 +17,7 @@
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import lombok.var;
+import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -24,10 +25,7 @@
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Wrapper;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
import java.util.stream.Collectors;
/**
@@ -57,26 +55,24 @@
//鑾峰彇閮ㄩ棬鏍�
@Override
public List<DepartmentDto> selectDepartment() {
- List<Department> departments = departmentMapper.selectDepartment();
- // 鍋囪 resultSet 鏄粠鏁版嵁搴撴煡璇㈣繑鍥炵殑缁撴灉闆�
- List<DepartmentDto> departmentDtos = new ArrayList<>();
- Map<Integer, DepartmentDto> departmentMap = new HashMap<>();
+ List<DepartmentDto> departments = departmentMapper.selectDepartment();
+ //鑾峰彇鐖惰妭鐐�
+ List<DepartmentDto> collect = departments.stream().filter(m -> m.getFatherId() == null).peek(
+ (m) -> m.setChildren(getChildren(m, departments))
+ ).collect(Collectors.toList());
+ return collect;
+ }
- for (Department department : departments) {
- DepartmentDto departmentDto = new DepartmentDto(department.getId(), department.getName(), department.getFatherId(), new ArrayList<DepartmentDto>());
- departmentMap.put(department.getId(), departmentDto);
- if (department.getFatherId() == null) {
- // 鏍归儴闂�
- departmentDtos.add(departmentDto);
- } else {
- // 灏嗗綋鍓嶉儴闂ㄦ坊鍔犲埌鐖堕儴闂ㄧ殑 children 鍒楄〃涓�
- DepartmentDto parent = departmentMap.get(department.getFatherId());
- if (parent != null) {
- parent.getChildren().add(departmentDto);
- }
- }
- }
- return departmentDtos;
+ /**
+ * 閫掑綊鏌ヨ瀛愯妭鐐�
+ * @param root 鏍硅妭鐐�
+ * @param all 鎵�鏈夎妭鐐�
+ * @return 鏍硅妭鐐逛俊鎭�
+ */
+ private List<DepartmentDto> getChildren(DepartmentDto root, List<DepartmentDto> all) {
+ return all.stream().filter(m -> Objects.equals(m.getFatherId(), root.getId())).peek(
+ (m) -> m.setChildren(getChildren(m, all))
+ ).collect(Collectors.toList());
}
//鍒犻櫎閮ㄩ棬
diff --git a/cnas-server/src/main/resources/mapper/DepartmentMapper.xml b/cnas-server/src/main/resources/mapper/DepartmentMapper.xml
index d29cd93..f0a3326 100644
--- a/cnas-server/src/main/resources/mapper/DepartmentMapper.xml
+++ b/cnas-server/src/main/resources/mapper/DepartmentMapper.xml
@@ -1,21 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yuanchu.mom.mapper.DepartmentMapper">
- <select id="selectDepartment" resultType="com.yuanchu.mom.pojo.Department">
- WITH RECURSIVE DepartmentHierarchy AS (
- SELECT id, name, father_id
- FROM department
- WHERE father_id IS NULL
-
- UNION ALL
-
- SELECT d.id, d.name, d.father_id
- FROM department d
- JOIN DepartmentHierarchy dh ON d.father_id = dh.id
- )
+ <select id="selectDepartment" resultType="com.yuanchu.mom.dto.DepartmentDto">
SELECT id, name, father_id
- FROM DepartmentHierarchy;
+ FROM department
</select>
+
<select id="showUserById" resultType="com.yuanchu.mom.dto.UserDto">
select * from (select id, name, age, email, phone,depart_id
from user where state=1 and SUBSTRING_INDEX(depart_id, ',', -1) in
@@ -26,18 +16,17 @@
${ew.customSqlSegment}
</if>
</select>
+
<select id="selectSonById" resultType="java.lang.Integer">
- WITH RECURSIVE DepartmentHierarchy AS (
- SELECT id, name, father_id
- FROM department
- WHERE id = #{id}
- UNION ALL
- SELECT d.id, d.name, d.father_id
- FROM department d
- JOIN DepartmentHierarchy dh ON d.father_id = dh.id
- )
+ SELECT au.id
+ FROM (SELECT * FROM department WHERE father_id IS NOT NULL) au,
+ (SELECT @father_id := #{id}) pd
+ WHERE FIND_IN_SET(father_id, @father_id) > 0
+ AND @father_id := concat(@father_id, ',', id)
+ UNION
SELECT id
- FROM DepartmentHierarchy
- order by id desc;
+ FROM department
+ WHERE id = #{id}
+ ORDER BY id
</select>
</mapper>
--
Gitblit v1.9.3