From 1487a187cc4e9daf2b733626929c77e945c926fe Mon Sep 17 00:00:00 2001 From: aijinhui <aijinhui> Date: 星期一, 30 十月 2023 14:36:56 +0800 Subject: [PATCH] app任务管理组织架构 --- ruoyi-common/src/main/java/com/ruoyi/common/core/domain/DeptUserTree.java | 35 +++++++++++ ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java | 7 ++ ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java | 62 +++++++++++++++++++- ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDeptService.java | 6 ++ ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java | 2 ard-work/src/main/java/com/ruoyi/app/task/controller/ArdAppTaskController.java | 61 ++++++++++++++++---- 6 files changed, 156 insertions(+), 17 deletions(-) diff --git a/ard-work/src/main/java/com/ruoyi/app/task/controller/ArdAppTaskController.java b/ard-work/src/main/java/com/ruoyi/app/task/controller/ArdAppTaskController.java index b164ead..5c7a168 100644 --- a/ard-work/src/main/java/com/ruoyi/app/task/controller/ArdAppTaskController.java +++ b/ard-work/src/main/java/com/ruoyi/app/task/controller/ArdAppTaskController.java @@ -1,26 +1,22 @@ package com.ruoyi.app.task.controller; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletResponse; -import com.alibaba.fastjson2.JSONObject; -import com.github.pagehelper.PageHelper; -import com.github.pagehelper.PageInfo; -import com.ruoyi.alarm.steal.domain.ArdAlarmStealelec; -import com.ruoyi.app.task.domain.AppParam; -import com.ruoyi.app.task.domain.ArdAppTaskDetail; -import com.ruoyi.app.task.domain.WellParam; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.ruoyi.app.task.domain.*; +import com.ruoyi.common.core.domain.DeptUserTree; +import com.ruoyi.common.core.domain.entity.SysDept; import com.ruoyi.common.core.domain.entity.SysUser; +import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.StringUtils; -import com.ruoyi.common.utils.spring.SpringUtils; +import com.ruoyi.system.service.ISysDeptService; import com.ruoyi.system.service.ISysUserService; -import com.ruoyi.utils.pagehelper.JpaPageHelper; -import com.ruoyi.utils.pagehelper.JpaPageInfo; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; -import org.apache.catalina.security.SecurityUtil; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -28,11 +24,9 @@ import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.enums.BusinessType; -import com.ruoyi.app.task.domain.ArdAppTask; import com.ruoyi.app.task.service.IArdAppTaskService; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.common.core.page.TableDataInfo; -import org.springframework.web.multipart.MultipartFile; /** * app浠诲姟绠$悊Controller @@ -46,6 +40,11 @@ public class ArdAppTaskController extends BaseController { @Autowired private IArdAppTaskService ardAppTaskService; + @Autowired + private ISysUserService sysUserService; + + @Autowired + private ISysDeptService sysDeptService; /** @@ -180,4 +179,40 @@ return success(ardAppTaskService.likeWell(wellParam)); } + @ApiOperation("鎸囨尌绔�-鏌ヨ鏍戝舰缁勭粐鏋舵瀯") + @PostMapping(value = "/treeDept") + public AjaxResult treeDept() { + //鏌ヨ鐢ㄦ埛ID + String usersId = SecurityUtils.getUserId(); + //鏍规嵁userId鏌ヨ閮ㄩ棬Id + SysUser sysUser = sysUserService.selectUserById(usersId); + //鏍规嵁褰撳墠deptId鎴栬�呭綋鍓嶅強鎵�灞炰笅绾х殑鎵�鏈塪eptId + List<Long> deptList = sysDeptService.deptIdBySub(sysUser.getDeptId()); + //鏌ヨ鎵�鏈夐儴闂ㄤ俊鎭� + List<SysDept> sysDeptList = sysDeptService.allByUser(deptList); + List<DeptUserTree> deptUserTrees = new ArrayList<>(); + for (int i = 0; i < sysDeptList.size(); i++) { + SysDept sysDept = sysDeptList.get(i); + DeptUserTree deptUserTree = new DeptUserTree(); + deptUserTree.setAncestors(sysDept.getAncestors()); + deptUserTree.setDeptId(sysDept.getDeptId()); + deptUserTree.setDeptName(sysDept.getDeptName()); + deptUserTree.setParentId(sysDept.getParentId()); + deptUserTrees.add(deptUserTree); + QueryWrapper<SysUser> queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("dept_id",sysDept.getDeptId()); + List<SysUser> users = sysUserService.userByDept(sysDept.getDeptId()); + for (int j = 0; j < users.size(); j++) { + SysUser user = users.get(j); + DeptUserTree deptUserTree1 = new DeptUserTree(); + deptUserTree1.setDeptId(user.getDeptId()); + deptUserTree1.setUserId(user.getUserId()); + deptUserTree1.setNickName(user.getNickName()); + deptUserTree1.setParentId(sysDept.getParentId()); + deptUserTrees.add(deptUserTree1); + } + } + return success(sysDeptService.deptUserTree(deptUserTrees)); + } + } diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/DeptUserTree.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/DeptUserTree.java new file mode 100644 index 0000000..3d00f14 --- /dev/null +++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/DeptUserTree.java @@ -0,0 +1,35 @@ +package com.ruoyi.common.core.domain; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.ruoyi.common.core.domain.TreeDeptWell; +import lombok.Data; + +import java.util.ArrayList; +import java.util.List; + +@Data +public class DeptUserTree { + @JsonInclude(JsonInclude.Include.NON_EMPTY) + private Long deptId; + /** 鐖堕儴闂↖D */ + @JsonInclude(JsonInclude.Include.NON_EMPTY) + private Long parentId; + + /** 绁栫骇鍒楄〃 */ + @JsonInclude(JsonInclude.Include.NON_EMPTY) + private String ancestors; + + /** 閮ㄩ棬鍚嶇О */ + @JsonInclude(JsonInclude.Include.NON_EMPTY) + private String deptName; + + /** 濮撳悕ID */ + @JsonInclude(JsonInclude.Include.NON_EMPTY) + private String userId; + + /** 濮撳悕 */ + @JsonInclude(JsonInclude.Include.NON_EMPTY) + private String nickName; + + private List<DeptUserTree> children = new ArrayList<>(); +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDeptService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDeptService.java index 403ffed..47cf6f0 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDeptService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDeptService.java @@ -4,6 +4,7 @@ import java.util.Map; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.ruoyi.common.core.domain.DeptUserTree; import com.ruoyi.common.core.domain.TreeDeptWell; import com.ruoyi.common.core.domain.TreeSelect; import com.ruoyi.common.core.domain.TreeSelectWell; @@ -145,4 +146,9 @@ */ List<TreeDeptWell> wellTree(List<TreeDeptWell> depts); List<TreeDeptWell> buildDeptWellTree(List<TreeDeptWell> depts); + + /** + * 浜哄憳閮ㄩ棬缁撴瀯鏍戝舰 + */ + List<DeptUserTree> deptUserTree(List<DeptUserTree> depts); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java index 156e22c..ed79e23 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java @@ -236,4 +236,6 @@ List<SysUser> userByDeptList(List<Long> deptList); + List<SysUser> userByDept(Long deptId); + } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java index 0d33856..63a92e1 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java @@ -4,13 +4,10 @@ import java.util.stream.Collectors; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.ruoyi.common.core.domain.HealthVo; -import com.ruoyi.common.core.domain.TreeDeptWell; -import com.ruoyi.common.core.domain.TreeSelectWell; +import com.ruoyi.common.core.domain.*; import org.springframework.stereotype.Service; import com.ruoyi.common.annotation.DataScope; import com.ruoyi.common.constant.UserConstants; -import com.ruoyi.common.core.domain.TreeSelect; import com.ruoyi.common.core.domain.entity.SysDept; import com.ruoyi.common.core.domain.entity.SysRole; import com.ruoyi.common.core.domain.entity.SysUser; @@ -429,4 +426,61 @@ { return getChildListWell(list, t).size() > 0; } + + + + @Override + public List<DeptUserTree> deptUserTree(List<DeptUserTree> depts) + { + List<DeptUserTree> returnList = new ArrayList<>(); + List<Long> tempList = depts.stream().map(DeptUserTree::getDeptId).collect(Collectors.toList()); + for (DeptUserTree dept : depts) + { + // 濡傛灉鏄《绾ц妭鐐�, 閬嶅巻璇ョ埗鑺傜偣鐨勬墍鏈夊瓙鑺傜偣 + if (!tempList.contains(dept.getParentId())) + { + recursionFnDeptUserTree(depts, dept); + returnList.add(dept); + } + } + if (returnList.isEmpty()) + { + returnList = depts; + } + return returnList; + } + + private void recursionFnDeptUserTree(List<DeptUserTree> list, DeptUserTree t) + { + // 寰楀埌瀛愯妭鐐瑰垪琛� + if(t.getUserId()==null){ + List<DeptUserTree> childList = getChildListDeptUserTree(list, t); + t.setChildren(childList); + for (DeptUserTree tChild : childList) { + if (hasChildDeptUserTree(list, tChild)) { + recursionFnDeptUserTree(list, tChild); + } + } + } + } + + private List<DeptUserTree> getChildListDeptUserTree(List<DeptUserTree> list, DeptUserTree t) + { + List<DeptUserTree> tlist = new ArrayList<>(); + Iterator<DeptUserTree> it = list.iterator(); + while (it.hasNext()) + { + DeptUserTree n = (DeptUserTree) it.next(); + if (StringUtils.isNotNull(n.getParentId()) && n.getParentId().longValue() == t.getDeptId().longValue()) + { + tlist.add(n); + } + } + return tlist; + } + + private boolean hasChildDeptUserTree(List<DeptUserTree> list, DeptUserTree t) + { + return getChildListDeptUserTree(list, t).size() > 0; + } } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java index aa41612..a38e204 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java @@ -640,4 +640,11 @@ queryWrapper.in("dept_id",deptList); return userMapper.selectList(queryWrapper); } + + @Override + public List<SysUser> userByDept(Long deptId) { + QueryWrapper<SysUser> queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("dept_id",deptId); + return userMapper.selectList(queryWrapper); + } } -- Gitblit v1.9.3