From fc36338476ccb0e8fa641794de4022f300f59a2e Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期二, 16 七月 2024 13:59:01 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
src/main/java/com/mindskip/xzs/service/impl/DepartmentServiceImpl.java | 135 +++++++++++++++++++++++++++++++++++---------
1 files changed, 107 insertions(+), 28 deletions(-)
diff --git a/src/main/java/com/mindskip/xzs/service/impl/DepartmentServiceImpl.java b/src/main/java/com/mindskip/xzs/service/impl/DepartmentServiceImpl.java
index d2d83e3..f723447 100644
--- a/src/main/java/com/mindskip/xzs/service/impl/DepartmentServiceImpl.java
+++ b/src/main/java/com/mindskip/xzs/service/impl/DepartmentServiceImpl.java
@@ -1,12 +1,10 @@
package com.mindskip.xzs.service.impl;
-import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
-import com.github.pagehelper.PageHelper;
-import com.github.pagehelper.PageInfo;
import com.mindskip.xzs.domain.Department;
-import com.mindskip.xzs.domain.UserDepartment;
import com.mindskip.xzs.domain.enums.DeptAdminEnum;
import com.mindskip.xzs.domain.vo.BaseSelect;
+import com.mindskip.xzs.domain.vo.CascaderDataVO;
+import com.mindskip.xzs.domain.vo.DepartmentEditVO;
import com.mindskip.xzs.domain.vo.UpdateDeptAdminVO;
import com.mindskip.xzs.repository.BaseMapper;
import com.mindskip.xzs.repository.DepartmentMapper;
@@ -14,14 +12,15 @@
import com.mindskip.xzs.repository.UserMapper;
import com.mindskip.xzs.service.DepartmentService;
import com.mindskip.xzs.utility.ModelMapperSingle;
+import com.mindskip.xzs.utility.TreeUtils;
import com.mindskip.xzs.viewmodel.admin.department.DepartmentResponseVM;
import org.modelmapper.ModelMapper;
+import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
-import java.util.List;
-import java.util.Objects;
+import java.util.*;
import java.util.stream.Collectors;
@Service
@@ -41,25 +40,20 @@
}
@Override
- public Integer add(String name) {
- Department department = new Department();
- department.setDeleted("0");
- department.setName(name);
- return departmentMapper.add(department);
- }
-
- @Override
- public Integer remove(Integer id) {
- Department department = new Department();
- department.setId(id);
- department.setDeleted("1");
- return departmentMapper.update(department);
+ public Integer add(Department model) {
+ model.setDeleted("0");
+ if (Objects.nonNull(model.getParentId())) {
+ // 鏌ュ嚭鐖剁骇鐨勫眰绾�
+ List<Integer> fatherList = departmentMapper.getFather(model.getParentId());
+ Collections.reverse(fatherList);
+ model.setLevel(fatherList.size() + 1);
+ }
+ return departmentMapper.add(model);
}
@Transactional(rollbackFor = Exception.class)
@Override
public Integer update(Department department) {
-// userDepartmentMapper.removeByDepartmentId(department.getId());
Department entity = departmentMapper.getById(department.getId());
if (Objects.isNull(entity)) {
throw new RuntimeException("璇ラ儴闂ㄤ笉瀛樺湪");
@@ -74,15 +68,53 @@
// 鏍囪瘑閮ㄩ棬绠$悊鍛�
userMapper.updateDeptAdmin(department.getAdminId(), DeptAdminEnum.YES.getValue(), entity.getId());
}
+ if (Objects.nonNull(department.getParentId())) {
+ // 鏌ュ嚭鐖剁骇鐨勫眰绾�
+ List<Integer> fatherList = departmentMapper.getFather(department.getParentId());
+ department.setLevel(fatherList.size() + 1);
+ } else {
+ department.setLevel(1);
+ }
Integer update = departmentMapper.update(department);
return update;
}
@Override
- public PageInfo<DepartmentResponseVM> gets(DepartmentResponseVM departmentResponseVM) {
- return PageHelper.startPage(departmentResponseVM.getPageIndex(), departmentResponseVM.getPageSize(), "id desc").doSelectPageInfo(() ->
- departmentMapper.page(departmentResponseVM)
- );
+ public Integer remove(Integer id) {
+ Department department = new Department();
+ department.setId(id);
+ department.setDeleted("1");
+ return departmentMapper.update(department);
+ }
+
+ @Override
+ public List<DepartmentResponseVM> gets(DepartmentResponseVM departmentResponseVM) {
+ List<DepartmentResponseVM> deptList = departmentMapper.page(departmentResponseVM);
+ return this.buildPageTree(deptList);
+ }
+
+ public List<DepartmentResponseVM> buildPageTree(List<DepartmentResponseVM> departments) {
+ // 鐢ㄤ簬瀛樺偍宸茬粡鏀惧叆鏍戠殑鑺傜偣锛屼互value涓洪敭
+ Map<Integer, DepartmentResponseVM> map = new HashMap<>();
+ List<DepartmentResponseVM> rootNodes = new ArrayList<>();
+
+ // 绗竴姝ワ細灏嗘墍鏈夎妭鐐规斁鍏ap涓紝骞跺垵濮嬪寲children鍒楄〃
+ for (DepartmentResponseVM dept : departments) {
+ map.put(dept.getId(), dept);
+ dept.setChildren(new ArrayList<>());
+ }
+ // 绗簩姝ワ細鏋勫缓鏍戝舰缁撴瀯
+ for (DepartmentResponseVM dept : departments) {
+ if (dept.getParentId() == null) {
+ rootNodes.add(dept);
+ } else {
+ DepartmentResponseVM parent = map.get(dept.getParentId());
+ if (parent != null) {
+ parent.getChildren().add(dept);
+ }
+ }
+ }
+ return rootNodes;
}
@Override
@@ -91,11 +123,22 @@
}
@Override
- public List<Department> gets(Integer deptId) {
- if (deptId == null || deptId == -1) {
- deptId = null;
+ public DepartmentEditVO getByIdVO(Integer id) {
+ Department dept = departmentMapper.getById(id);
+ DepartmentEditVO vo = new DepartmentEditVO();
+ BeanUtils.copyProperties(dept, vo);
+ if (Objects.nonNull(dept.getParentId())) {
+ // 鏌ュ嚭瀹屾暣鐨勭埗绾D
+ List<Integer> fatherList = departmentMapper.getFather(dept.getParentId());
+ Collections.reverse(fatherList);
+ vo.setParentIds(fatherList);
}
- return departmentMapper.gets(deptId);
+ return vo;
+ }
+
+ @Override
+ public List<Department> gets(List<Integer> deptId) {
+ return TreeUtils.build(departmentMapper.gets(deptId));
}
@Override
@@ -130,5 +173,41 @@
// 鏍囪瘑閮ㄩ棬绠$悊鍛�
userMapper.updateDeptAdmin(form.getAdminIds(), DeptAdminEnum.YES.getValue(), entity.getId());
}
+ // 淇敼琚�夋嫨鐨勭敤鎴蜂负閮ㄩ棬绠$悊鍛�
+ userMapper.updateUserDeptAdmin(form);
+ // 淇敼娌¤閫夋嫨鐨勭敤鎴峰苟涓斾笉鏄埆鐨勯儴闂ㄧ鐞嗗憳鐨勭敤鎴疯鑹蹭负1
+ userMapper.cancelUserDeptAdmin(form);
+ }
+
+ @Override
+ public List<CascaderDataVO> cascader() {
+ List<CascaderDataVO> deptList = departmentMapper.list();
+ List<CascaderDataVO> tree = this.buildTree(deptList);
+ return tree;
+ }
+
+
+ public List<CascaderDataVO> buildTree(List<CascaderDataVO> departments) {
+ // 鐢ㄤ簬瀛樺偍宸茬粡鏀惧叆鏍戠殑鑺傜偣锛屼互value涓洪敭
+ Map<Integer, CascaderDataVO> map = new HashMap<>();
+ List<CascaderDataVO> rootNodes = new ArrayList<>();
+
+ // 绗竴姝ワ細灏嗘墍鏈夎妭鐐规斁鍏ap涓紝骞跺垵濮嬪寲children鍒楄〃
+ for (CascaderDataVO dept : departments) {
+ map.put(dept.getValue(), dept);
+ dept.setChildren(new ArrayList<>());
+ }
+ // 绗簩姝ワ細鏋勫缓鏍戝舰缁撴瀯
+ for (CascaderDataVO dept : departments) {
+ if (dept.getParentId() == null) { // 鍋囪椤剁骇閮ㄩ棬鐨刾arentId涓簄ull鎴�0
+ rootNodes.add(dept);
+ } else {
+ CascaderDataVO parent = map.get(dept.getParentId());
+ if (parent != null) {
+ parent.getChildren().add(dept);
+ }
+ }
+ }
+ return rootNodes;
}
}
--
Gitblit v1.8.0