From d19160843eae8822bf50979fb6484488e688038a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E4=B8=96=E5=BC=BA?= Date: Tue, 10 Oct 2023 11:15:57 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E9=83=A8=E9=97=A8=E4=BA=BA=E5=91=98?= =?UTF-8?q?=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/api/xxjj/businessWarehouse/index.ts | 4 ++++ .../xxjj/businessOrganizationConfig/index.vue | 5 ++++- .../src/views/xxjj/businessWarehouse/index.vue | 2 +- .../controller/admin/dept/DeptController.java | 17 +++++++++++++++++ .../module/system/convert/dept/DeptConvert.java | 11 +++++++++-- .../system/dal/dataobject/dept/DeptDO.java | 5 +++++ 6 files changed, 40 insertions(+), 4 deletions(-) diff --git a/yudao-ui-admin-vben-master/src/api/xxjj/businessWarehouse/index.ts b/yudao-ui-admin-vben-master/src/api/xxjj/businessWarehouse/index.ts index 31c76ba..29ea922 100644 --- a/yudao-ui-admin-vben-master/src/api/xxjj/businessWarehouse/index.ts +++ b/yudao-ui-admin-vben-master/src/api/xxjj/businessWarehouse/index.ts @@ -45,3 +45,7 @@ export function getBusinessPage(params) { export function getBusinessUserList(params) { return defHttp.get({ url: '/system/business-warehouse/business-user', params }) } + +export function getDeptUserList() { + return defHttp.get({ url: '/system/dept/list-dept-user'}) +} diff --git a/yudao-ui-admin-vben-master/src/views/xxjj/businessOrganizationConfig/index.vue b/yudao-ui-admin-vben-master/src/views/xxjj/businessOrganizationConfig/index.vue index 6febdb4..083a188 100644 --- a/yudao-ui-admin-vben-master/src/views/xxjj/businessOrganizationConfig/index.vue +++ b/yudao-ui-admin-vben-master/src/views/xxjj/businessOrganizationConfig/index.vue @@ -42,7 +42,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, getBusinessUserList } from '@/api/xxjj/businessWarehouse' +import { deleteBusinessWarehouse, exportBusinessWarehouse, getBusinessWarehousePage, getBusinessUserList, getDeptUserList } from '@/api/xxjj/businessWarehouse' import { columns, searchFormSchema } from './businessWarehouse.data' import BusinessTree from './BusinessTree.vue' @@ -53,6 +53,9 @@ const { createConfirm, createMessage } = useMessage() const [registerModal, { openModal }] = useModal() const searchInfo = reactive({}) +const deptList = await getDeptUserList(); +console.log('deptList',deptList) + const [registerTable, { getForm, reload }] = useTable({ title: '业务组织配置列表', api: getBusinessUserList, diff --git a/yudao-ui-admin-vben-master/src/views/xxjj/businessWarehouse/index.vue b/yudao-ui-admin-vben-master/src/views/xxjj/businessWarehouse/index.vue index af32c91..b8a4533 100644 --- a/yudao-ui-admin-vben-master/src/views/xxjj/businessWarehouse/index.vue +++ b/yudao-ui-admin-vben-master/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' }) 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..5ed90a9 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,7 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.validation.Valid; +import java.util.Collections; import java.util.Comparator; import java.util.List; @@ -118,4 +119,20 @@ 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); + deptDOList.forEach(deptDO -> { + List adminUserDOList = userService.getUserListByDeptIds(Collections.singleton(deptDO.getId())); + deptDO.setChildren(adminUserDOList); + }); + + return success(deptDOList); + } + } 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; + + } From ccc73b1696eff936422f55b12d38b679a4ab6f58 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E4=B8=96=E5=BC=BA?= Date: Tue, 10 Oct 2023 15:49:04 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E9=83=A8=E9=97=A8=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/api/xxjj/businessWarehouse/index.ts | 4 --- .../xxjj/businessOrganizationConfig/index.vue | 5 +--- .../controller/admin/dept/DeptController.java | 17 +++++++---- .../system/service/dept/DeptService.java | 11 +++++++ .../system/service/dept/DeptServiceImpl.java | 30 +++++++++++++++++++ 5 files changed, 53 insertions(+), 14 deletions(-) diff --git a/yudao-ui-admin-vben-master/src/api/xxjj/businessWarehouse/index.ts b/yudao-ui-admin-vben-master/src/api/xxjj/businessWarehouse/index.ts index 29ea922..31c76ba 100644 --- a/yudao-ui-admin-vben-master/src/api/xxjj/businessWarehouse/index.ts +++ b/yudao-ui-admin-vben-master/src/api/xxjj/businessWarehouse/index.ts @@ -45,7 +45,3 @@ export function getBusinessPage(params) { export function getBusinessUserList(params) { return defHttp.get({ url: '/system/business-warehouse/business-user', params }) } - -export function getDeptUserList() { - return defHttp.get({ url: '/system/dept/list-dept-user'}) -} diff --git a/yudao-ui-admin-vben-master/src/views/xxjj/businessOrganizationConfig/index.vue b/yudao-ui-admin-vben-master/src/views/xxjj/businessOrganizationConfig/index.vue index 083a188..6febdb4 100644 --- a/yudao-ui-admin-vben-master/src/views/xxjj/businessOrganizationConfig/index.vue +++ b/yudao-ui-admin-vben-master/src/views/xxjj/businessOrganizationConfig/index.vue @@ -42,7 +42,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, getBusinessUserList, getDeptUserList } from '@/api/xxjj/businessWarehouse' +import { deleteBusinessWarehouse, exportBusinessWarehouse, getBusinessWarehousePage, getBusinessUserList } from '@/api/xxjj/businessWarehouse' import { columns, searchFormSchema } from './businessWarehouse.data' import BusinessTree from './BusinessTree.vue' @@ -53,9 +53,6 @@ const { createConfirm, createMessage } = useMessage() const [registerModal, { openModal }] = useModal() const searchInfo = reactive({}) -const deptList = await getDeptUserList(); -console.log('deptList',deptList) - const [registerTable, { getForm, reload }] = useTable({ title: '业务组织配置列表', api: getBusinessUserList, 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 5ed90a9..22ffdca 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 @@ -127,12 +127,17 @@ public class DeptController { DeptListReqVO deptListReqVO = new DeptListReqVO(); deptListReqVO.setStatus(CommonStatusEnum.ENABLE.getStatus()); List deptDOList = deptService.getDeptList(deptListReqVO); - deptDOList.forEach(deptDO -> { - List adminUserDOList = userService.getUserListByDeptIds(Collections.singleton(deptDO.getId())); - deptDO.setChildren(adminUserDOList); - }); - - return success(deptDOList); + //将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/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; + } + } From f95b8abb5d1157c275c53d4f9336b7834057a601 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E4=B8=96=E5=BC=BA?= Date: Tue, 10 Oct 2023 16:32:26 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E9=83=A8=E9=97=A8=E6=A0=91=E7=8A=B6?= =?UTF-8?q?=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/admin/dept/DeptController.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) 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 22ffdca..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,7 @@ 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; @@ -127,6 +128,22 @@ public class DeptController { 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添加下级用户