Ver Fonte

部门树赋值

yzc há 10 meses atrás
pai
commit
6aa1efb670

+ 28 - 3
hx-tenant/src/main/java/com/fjhx/tenant/utils/DeptUstil.java

@@ -6,10 +6,9 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.ruoyi.common.core.domain.entity.SysDept;
 import com.ruoyi.common.exception.ServiceException;
 import com.ruoyi.system.service.ISysDeptService;
+import org.apache.poi.ss.formula.functions.T;
 
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
+import java.util.*;
 import java.util.function.BiConsumer;
 import java.util.function.Function;
 import java.util.stream.Collectors;
@@ -59,4 +58,30 @@ public class DeptUstil {
         list.forEach(item -> setNickNameMap.accept(item, nickNameMapByIds.get(idMapper.apply(item))));
     }
 
+    /**
+     * 赋值部门名称列表树
+     */
+    public static <T> void assignmentDeptNames(List<T> dataList, Function<T, Long> getIdFun, BiConsumer<T, List<String>> setAttributeFun) {
+        Map<Long, SysDept> sysDeptMap = sysDeptService.list().stream().collect(Collectors.toMap(SysDept::getDeptId, Function.identity()));
+        for (T item : dataList) {
+            //赋值部门信息
+            List<String> deptNameList = new ArrayList<>();
+            Long deptId = getIdFun.apply(item);
+            while (true) {
+                SysDept sysDept = sysDeptMap.get(deptId);
+                if (ObjectUtil.isEmpty(sysDept)) {
+                    break;
+                }
+                deptNameList.add(sysDept.getDeptName());
+                if (sysDept.getType() == 0) {
+                    break;
+                }
+                deptId = sysDept.getParentId();
+            }
+            //递归完数据是反的翻转一下
+            Collections.reverse(deptNameList);
+            setAttributeFun.accept(item, deptNameList);
+        }
+    }
+
 }