diff --git a/yunxi-module-system/yunxi-module-system-biz/src/main/java/com/yunxi/scm/module/system/controller/admin/dept/DeptController.java b/yunxi-module-system/yunxi-module-system-biz/src/main/java/com/yunxi/scm/module/system/controller/admin/dept/DeptController.java index 34d984a..ebda8e1 100644 --- a/yunxi-module-system/yunxi-module-system-biz/src/main/java/com/yunxi/scm/module/system/controller/admin/dept/DeptController.java +++ b/yunxi-module-system/yunxi-module-system-biz/src/main/java/com/yunxi/scm/module/system/controller/admin/dept/DeptController.java @@ -21,6 +21,8 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.validation.Valid; +import java.util.ArrayList; +import java.util.Collections; import java.util.Comparator; import java.util.List; @@ -118,4 +120,41 @@ public class DeptController { return success(DeptConvert.INSTANCE.convertList02(list)); } + @GetMapping("/list-dept-user") + @Operation(summary = "获取部门和人员列表") + @PreAuthorize("@ss.hasPermission('system:dept:user')") + public CommonResult> getDeptUserList() { + // 获得部门列表,只要开启状态的 + DeptListReqVO deptListReqVO = new DeptListReqVO(); + deptListReqVO.setStatus(CommonStatusEnum.ENABLE.getStatus()); + List deptDOList = deptService.getDeptList(deptListReqVO); + //将Dept转化为简单的Dept + List simpleDeptList = new ArrayList<>(); + simpleDeptList.addAll(DeptConvert.INSTANCE.convertList02(deptDOList)); + deptDOList.forEach(deptDO -> { + List adminUserList = userService.getUserListByDeptIds(Collections.singleton(deptDO.getId())); + for (AdminUserDO adminUserDO : adminUserList){ + DeptSimpleRespVO deptSimpleRespVO = new DeptSimpleRespVO(); + deptSimpleRespVO.setId(adminUserDO.getId()); + deptSimpleRespVO.setParentId(adminUserDO.getDeptId()); + deptSimpleRespVO.setName(adminUserDO.getNickname()); + simpleDeptList.add(deptSimpleRespVO); + } + }); + + List adminUserDOList = new ArrayList<>(); + + //将list转为树状 + List list = deptService.buildTree(deptDOList,0); + //为部门list添加下级用户 + List list1 = deptService.setBuildTree(list); +// for (DeptDO deptDO : list){ +// if (deptDO.getChildren() == null){ +// List adminUserDOList = userService.getUserListByDeptIds(Collections.singleton(deptDO.getId())); +// deptDO.setChildren(adminUserDOList); +// } +// } + return success(list1); + } + } diff --git a/yunxi-module-system/yunxi-module-system-biz/src/main/java/com/yunxi/scm/module/system/convert/dept/DeptConvert.java b/yunxi-module-system/yunxi-module-system-biz/src/main/java/com/yunxi/scm/module/system/convert/dept/DeptConvert.java index bb5df69..9cf3f11 100644 --- a/yunxi-module-system/yunxi-module-system-biz/src/main/java/com/yunxi/scm/module/system/convert/dept/DeptConvert.java +++ b/yunxi-module-system/yunxi-module-system-biz/src/main/java/com/yunxi/scm/module/system/convert/dept/DeptConvert.java @@ -1,16 +1,23 @@ package com.yunxi.scm.module.system.convert.dept; import com.yunxi.scm.module.system.api.dept.dto.DeptRespDTO; +import com.yunxi.scm.module.system.controller.admin.auth.vo.AuthPermissionInfoRespVO; import com.yunxi.scm.module.system.controller.admin.dept.vo.dept.DeptCreateReqVO; import com.yunxi.scm.module.system.controller.admin.dept.vo.dept.DeptRespVO; import com.yunxi.scm.module.system.controller.admin.dept.vo.dept.DeptSimpleRespVO; import com.yunxi.scm.module.system.controller.admin.dept.vo.dept.DeptUpdateReqVO; +import com.yunxi.scm.module.system.convert.auth.AuthConvert; import com.yunxi.scm.module.system.dal.dataobject.dept.DeptDO; +import com.yunxi.scm.module.system.dal.dataobject.permission.MenuDO; +import com.yunxi.scm.module.system.enums.permission.MenuTypeEnum; import org.mapstruct.Mapper; import org.mapstruct.factory.Mappers; +import org.slf4j.LoggerFactory; -import java.util.List; -import java.util.Map; +import java.util.*; + +import static com.yunxi.scm.framework.common.util.collection.CollectionUtils.filterList; +import static com.yunxi.scm.module.system.dal.dataobject.permission.MenuDO.ID_ROOT; @Mapper public interface DeptConvert { diff --git a/yunxi-module-system/yunxi-module-system-biz/src/main/java/com/yunxi/scm/module/system/dal/dataobject/dept/DeptDO.java b/yunxi-module-system/yunxi-module-system-biz/src/main/java/com/yunxi/scm/module/system/dal/dataobject/dept/DeptDO.java index 2471156..da1262d 100644 --- a/yunxi-module-system/yunxi-module-system-biz/src/main/java/com/yunxi/scm/module/system/dal/dataobject/dept/DeptDO.java +++ b/yunxi-module-system/yunxi-module-system-biz/src/main/java/com/yunxi/scm/module/system/dal/dataobject/dept/DeptDO.java @@ -3,6 +3,7 @@ package com.yunxi.scm.module.system.dal.dataobject.dept; import com.baomidou.mybatisplus.annotation.TableField; import com.yunxi.scm.framework.common.enums.CommonStatusEnum; import com.yunxi.scm.framework.tenant.core.db.TenantBaseDO; +import com.yunxi.scm.module.system.controller.admin.auth.vo.AuthPermissionInfoRespVO; import com.yunxi.scm.module.system.dal.dataobject.user.AdminUserDO; import com.baomidou.mybatisplus.annotation.KeySequence; import com.baomidou.mybatisplus.annotation.TableId; @@ -70,4 +71,8 @@ public class DeptDO extends TenantBaseDO { */ private Long enterpriseId; + @TableField(exist = false) + private List children; + + } diff --git a/yunxi-module-system/yunxi-module-system-biz/src/main/java/com/yunxi/scm/module/system/service/dept/DeptService.java b/yunxi-module-system/yunxi-module-system-biz/src/main/java/com/yunxi/scm/module/system/service/dept/DeptService.java index dc73e62..0e86e03 100644 --- a/yunxi-module-system/yunxi-module-system-biz/src/main/java/com/yunxi/scm/module/system/service/dept/DeptService.java +++ b/yunxi-module-system/yunxi-module-system-biz/src/main/java/com/yunxi/scm/module/system/service/dept/DeptService.java @@ -5,6 +5,7 @@ import com.yunxi.scm.framework.common.util.collection.CollectionUtils; import com.yunxi.scm.module.system.controller.admin.dept.vo.dept.DeptCreateReqVO; import com.yunxi.scm.module.system.controller.admin.dept.vo.dept.DeptListReqVO; import com.yunxi.scm.module.system.controller.admin.dept.vo.dept.DeptUpdateReqVO; +import com.yunxi.scm.module.system.controller.admin.user.vo.user.UserPageItemRespVO; import com.yunxi.scm.module.system.dal.dataobject.dept.DeptDO; import java.util.*; @@ -101,4 +102,14 @@ public interface DeptService { */ void validateDeptList(Collection ids); + /** + * 组装为树形结构 + * + */ + List buildTree(List deptDOList, long pid); + /** + * 为部门树形结构添加用户 + * + */ + List setBuildTree(List deptDOList); } diff --git a/yunxi-module-system/yunxi-module-system-biz/src/main/java/com/yunxi/scm/module/system/service/dept/DeptServiceImpl.java b/yunxi-module-system/yunxi-module-system-biz/src/main/java/com/yunxi/scm/module/system/service/dept/DeptServiceImpl.java index d904739..06e3c17 100644 --- a/yunxi-module-system/yunxi-module-system-biz/src/main/java/com/yunxi/scm/module/system/service/dept/DeptServiceImpl.java +++ b/yunxi-module-system/yunxi-module-system-biz/src/main/java/com/yunxi/scm/module/system/service/dept/DeptServiceImpl.java @@ -9,10 +9,12 @@ import com.yunxi.scm.module.system.controller.admin.dept.vo.dept.DeptListReqVO; import com.yunxi.scm.module.system.controller.admin.dept.vo.dept.DeptUpdateReqVO; import com.yunxi.scm.module.system.convert.dept.DeptConvert; import com.yunxi.scm.module.system.dal.dataobject.dept.DeptDO; +import com.yunxi.scm.module.system.dal.dataobject.user.AdminUserDO; import com.yunxi.scm.module.system.dal.mysql.dept.DeptMapper; import com.yunxi.scm.module.system.dal.redis.RedisKeyConstants; import com.yunxi.scm.module.system.enums.dept.DeptIdEnum; import com.google.common.annotations.VisibleForTesting; +import com.yunxi.scm.module.system.service.user.AdminUserService; import lombok.extern.slf4j.Slf4j; import org.springframework.cache.annotation.CacheEvict; import org.springframework.cache.annotation.Cacheable; @@ -38,6 +40,8 @@ public class DeptServiceImpl implements DeptService { @Resource private DeptMapper deptMapper; + @Resource + private AdminUserService userService; @Override @CacheEvict(cacheNames = RedisKeyConstants.DEPT_CHILDREN_ID_LIST, @@ -202,4 +206,30 @@ public class DeptServiceImpl implements DeptService { }); } + @Override + public List buildTree(List deptDOList, long pid) { + List treeList = new ArrayList<>(); + for (DeptDO dept : deptDOList) { + if (dept.getParentId() == pid) { + dept.setChildren(buildTree(deptDOList, dept.getId())); + treeList.add(dept); + } + } + return treeList; + } + + @Override + public List setBuildTree(List deptDOList) { + List tree = new ArrayList<>(); + for (DeptDO deptDO : deptDOList) { + if (deptDO.getChildren() != null && deptDO.getChildren().size()>0) { + setBuildTree(deptDO.getChildren()); + }else{ + List adminUserDOList = userService.getUserListByDeptIds(Collections.singleton(deptDO.getId())); + deptDO.setChildren(adminUserDOList); + } + } + return tree; + } + } diff --git a/yunxi-ui-admin-vben/src/views/xxjj/businessWarehouse/index.vue b/yunxi-ui-admin-vben/src/views/xxjj/businessWarehouse/index.vue index af32c91..b8a4533 100644 --- a/yunxi-ui-admin-vben/src/views/xxjj/businessWarehouse/index.vue +++ b/yunxi-ui-admin-vben/src/views/xxjj/businessWarehouse/index.vue @@ -43,7 +43,7 @@ import { useModal } from '@/components/Modal' import BusinessWarehouseModal from './BusinessWarehouseModal.vue' import { IconEnum } from '@/enums/appEnum' import { BasicTable, useTable, TableAction } from '@/components/Table' -import { deleteBusinessWarehouse, exportBusinessWarehouse, getBusinessWarehousePage, getBusinessPage} from '@/api/xxjj/businessWarehouse' +import { deleteBusinessWarehouse, exportBusinessWarehouse, getBusinessWarehousePage, getBusinessPage } from '@/api/xxjj/businessWarehouse' import { columns, searchFormSchema } from './businessWarehouse.data' defineOptions({ name: 'BusinessWarehouse' })