Reiskuchen 5 yıl önce
ebeveyn
işleme
3e60913b07

+ 5 - 4
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/Department.java

@@ -1,14 +1,15 @@
 package com.management.platform.entity;
 
 import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.extension.activerecord.Model;
-import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableField;
-import java.io.Serializable;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
 
+import java.io.Serializable;
+
 /**
  * <p>
  * 部门
@@ -22,7 +23,7 @@ import lombok.experimental.Accessors;
 @Accessors(chain = true)
 public class Department extends Model<Department> {
 
-    private static final long serialVersionUID=1L;
+    private static final long serialVersionUID = 1L;
 
     /**
      * 主键

+ 4 - 2
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/vo/DepartmentVO.java

@@ -1,6 +1,5 @@
 package com.management.platform.entity.vo;
 
-import com.management.platform.entity.Department;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
@@ -10,6 +9,9 @@ import java.util.List;
 @Data
 @EqualsAndHashCode(callSuper = false)
 @Accessors(chain = true)
-public class DepartmentVO extends Department {
+public class DepartmentVO {
+    private Integer id;
+    private String label;
+    private Integer parentId;
     private List<DepartmentVO> children;
 }

+ 24 - 16
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/DepartmentServiceImpl.java

@@ -8,7 +8,6 @@ import com.management.platform.mapper.DepartmentMapper;
 import com.management.platform.mapper.UserMapper;
 import com.management.platform.service.DepartmentService;
 import com.management.platform.util.HttpRespMsg;
-import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
@@ -38,19 +37,23 @@ public class DepartmentServiceImpl extends ServiceImpl<DepartmentMapper, Departm
         HttpRespMsg httpRespMsg = new HttpRespMsg();
         try {
             //筛选公司下所有的部门
-            Integer companyId = userMapper.selectById(request.getHeader("Token")).getCompanyId();
+//            Integer companyId = userMapper.selectById(request.getHeader("Token")).getCompanyId();
+            Integer companyId = 6;
             List<Department> departmentList = departmentMapper.selectList(new QueryWrapper<Department>()
                     .eq("company_id", companyId));
+            //结果列表
             List<DepartmentVO> list = new ArrayList<>();
-            Stack<DepartmentVO> stack1 = new Stack<>(); //存放上依赖下的栈
-            Stack<DepartmentVO> stack2 = new Stack<>(); //临时存放对1中的依赖
-            Stack<DepartmentVO> stack3 = new Stack<>(); //存放所有要塞进去的东西
+            Stack<DepartmentVO>
+                    //存放顺序依赖的主栈
+                    stack1 = new Stack<>(),
+                    //存放主栈中的依赖的上半段的栈
+                    stack2 = new Stack<>(),
+                    //存放最后塞入列表前的栈
+                    stack3 = new Stack<>();
             for (int i = 0; i < departmentList.size(); i++) {
                 Department department = departmentList.get(i);
                 if (department.getSuperiorId() == null) {
-                    DepartmentVO departmentVO = new DepartmentVO();
-                    BeanUtils.copyProperties(department, departmentVO);
-                    stack1.push(departmentVO);
+                    stack1.push(formatDepartmentToVO(department));
                     departmentList.remove(i--);
                 }
             }
@@ -59,11 +62,9 @@ public class DepartmentServiceImpl extends ServiceImpl<DepartmentMapper, Departm
                 DepartmentVO temp = stack1.peek();
                 for (int i = 0; i < departmentList.size(); i++) {
                     Department department = departmentList.get(i);
-                    if (department.getSuperiorId().equals(temp.getDepartmentId())) {
+                    if (department.getSuperiorId().equals(temp.getId())) {
                         isPushed = true;
-                        DepartmentVO departmentVO = new DepartmentVO();
-                        BeanUtils.copyProperties(department, departmentVO);
-                        stack1.push(departmentVO);
+                        stack1.push(formatDepartmentToVO(department));
                         departmentList.remove(i--);
                     }
                 }
@@ -73,13 +74,13 @@ public class DepartmentServiceImpl extends ServiceImpl<DepartmentMapper, Departm
             }
             while (!stack1.isEmpty()) {
                 DepartmentVO first = stack1.pop();
-                Integer superiorId = first.getSuperiorId();
+                Integer superiorId = first.getParentId();
                 if (superiorId != null) {
                     stack3.push(first);
-                    while (stack2.peek().getSuperiorId() != null && stack2.peek().getSuperiorId().equals(superiorId)) {
+                    while (stack2.peek().getParentId() != null && stack2.peek().getParentId().equals(superiorId)) {
                         stack3.push(stack2.pop());
                     }
-                    while (stack1.peek().getSuperiorId() != null && stack1.peek().getSuperiorId().equals(superiorId)) {
+                    while (stack1.peek().getParentId() != null && stack1.peek().getParentId().equals(superiorId)) {
                         stack3.push(stack1.pop());
                     }
                     List<DepartmentVO> targetList = new ArrayList<>();
@@ -96,10 +97,17 @@ public class DepartmentServiceImpl extends ServiceImpl<DepartmentMapper, Departm
             }
             httpRespMsg.data = list;
         } catch (NullPointerException e) {
-            e.printStackTrace();
             httpRespMsg.setError("验证失败");
             return httpRespMsg;
         }
         return httpRespMsg;
     }
+
+    private DepartmentVO formatDepartmentToVO(Department department) {
+        return new DepartmentVO()
+                .setId(department.getDepartmentId())
+                .setLabel(department.getDepartmentName())
+                .setParentId(department.getSuperiorId());
+    }
+
 }