From 62afcb53d54e4466cc6117cec476f947e8266ff8 Mon Sep 17 00:00:00 2001 From: furongxin <419481438@qq.com> Date: Fri, 27 Dec 2024 21:43:27 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=20=E5=8C=BA=E5=88=86?= =?UTF-8?q?=E5=A4=96=E9=83=A8=E4=BA=BA=E5=91=98=E9=83=A8=E9=97=A8=20?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/admin/dept/DeptController.java | 50 ++++++++++++++++++- 1 file changed, 49 insertions(+), 1 deletion(-) diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dept/DeptController.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dept/DeptController.java index a308dd62..2c542e1c 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dept/DeptController.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dept/DeptController.java @@ -2,9 +2,11 @@ package cn.iocoder.yudao.module.system.controller.admin.dept; import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.util.json.JsonUtils; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.framework.datapermission.core.annotation.DataPermission; import cn.iocoder.yudao.framework.security.core.LoginUser; +import cn.iocoder.yudao.module.infra.api.config.ConfigApi; import cn.iocoder.yudao.module.system.controller.admin.dept.vo.dept.DeptListReqVO; import cn.iocoder.yudao.module.system.controller.admin.dept.vo.dept.DeptRespVO; import cn.iocoder.yudao.module.system.controller.admin.dept.vo.dept.DeptSaveReqVO; @@ -13,6 +15,7 @@ import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO; import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO; import cn.iocoder.yudao.module.system.service.dept.DeptService; import cn.iocoder.yudao.module.system.service.user.AdminUserService; +import com.fasterxml.jackson.core.type.TypeReference; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; @@ -22,11 +25,12 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.validation.Valid; -import java.util.List; +import java.util.*; import java.util.stream.Collectors; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUser; +import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; @Tag(name = "管理后台 - 部门") @RestController @@ -39,6 +43,9 @@ public class DeptController { @Resource private AdminUserService userService; + @Resource + private ConfigApi configApi; + @PostMapping("create") @Operation(summary = "创建部门") @PreAuthorize("@ss.hasPermission('system:dept:create')") @@ -164,6 +171,47 @@ public class DeptController { return success(BeanUtils.toBean(list, DeptSimpleRespVO.class)); } + @GetMapping(value = {"/all-list-outsiders"}) + @Operation(summary = "获取部门精简信息列表", description = "只包含被开启的部门,主要用于需要区分外部人员时的下拉选项") + @DataPermission(enable = false) + public CommonResult> getAllDeptListOutsiders() { + + // 获取外部人员 部门信息 + String deptString = configApi.getConfigKey("system.outsiders").getCheckedData(); + Map deptMap = JsonUtils.parseObject(deptString, new TypeReference>(){}); + // 判断当前登录用户是否 属于外部人员 + for (String key : deptMap.keySet()) { + String value = deptMap.get(key); + if (value.contains(Objects.requireNonNull(getLoginUserId()).toString())) { + + DeptDO deptDO = deptService.getDept(Long.valueOf(key)); + return success(BeanUtils.toBean(Collections.singletonList(deptDO), DeptSimpleRespVO.class)); + } + } + + List list = deptService.getDeptList( + new DeptListReqVO().setStatus(CommonStatusEnum.ENABLE.getStatus())); + + // 获得所有得虚机构部门信息 + List virtuallyDeptId = list.stream() + .filter(dept -> dept.getVirtuallyStatus() == 1) + .collect(Collectors.toList()); + + virtuallyDeptId.forEach(data -> { + + // 将虚机构的子部门,父部门设置为虚机构的父部门 + list.stream().filter(dept -> dept.getParentId().equals(data.getId())) + .map(dept -> dept.setParentId(data.getParentId())) + .collect(Collectors.toList()); + + }); + + // 移除虚机构,不展示 + list.removeIf(dept -> dept.getVirtuallyStatus() == 1); + + return success(BeanUtils.toBean(list, DeptSimpleRespVO.class)); + } + @GetMapping(value = { "/get-factory-dept"}) @Operation(summary = "获取工厂部门精简信息列表", description = "只包含被开启的部门,主要用于前端的下拉选项") @DataPermission(enable = false)