新增 区分外部人员部门 查询接口

This commit is contained in:
furongxin 2024-12-27 21:43:27 +08:00
parent c9510fb65f
commit 62afcb53d5

View File

@ -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<List<DeptSimpleRespVO>> getAllDeptListOutsiders() {
// 获取外部人员 部门信息
String deptString = configApi.getConfigKey("system.outsiders").getCheckedData();
Map<String, String> deptMap = JsonUtils.parseObject(deptString, new TypeReference<Map<String, String>>(){});
// 判断当前登录用户是否 属于外部人员
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<DeptDO> list = deptService.getDeptList(
new DeptListReqVO().setStatus(CommonStatusEnum.ENABLE.getStatus()));
// 获得所有得虚机构部门信息
List<DeptDO> 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)