1.org实体类

  1. public class Org implements Serializable {
  2.  
  3. private static final long serialVersionUID = 1L;
  4.  
  5. private String title;
  6. private Long parent;
  7. private List<User> userList;
  8. private List<Org> nodes;
  9.  
  10. public String getTitle() {
  11. return title;
  12. }
  13.  
  14. public void setTitle(String title) {
  15. this.title = title;
  16. }
  17.  
  18. public Long getParent() {
  19. return parent;
  20. }
  21.  
  22. public void setParent(Long parent) {
  23. this.parent = parent;
  24. }
  25.  
  26. public List<Org> getNodes() {
  27. if(nodes == null){
  28. nodes = new ArrayList<Org>();
  29. }
  30. return nodes;
  31. }
  32.  
  33. public void setNodes(List<Org> nodes) {
  34. this.nodes = nodes;
  35. }
  36.  
  37. public List<User> getUserList() {
  38. if(userList == null){
  39. userList = new ArrayList<User>();
  40. }
  41. return userList;
  42. }
  43.  
  44. public void setUserList(List<User> userList) {
  45. this.userList = userList;
  46. }
  47.  
  48. @Override
  49. public String toString() {
  50. return "Org{" +
  51. "createTime=" + createTime +
  52. ", title='" + title + '\'' +
  53. ", parent=" + parent +
  54. ", userList=" + userList +
  55. ", nodes=" + nodes +
  56. '}';
  57. }
  58. }

2.查询该部门下的子部门

  1. private List<Org> hasChilds(Long id){
  2. List<Org> orgs = super.selectList(
  3. new EntityWrapper<Org>().eq(Config.ABLE_CONFIG.ABLE_COLUMN,Config.ABLE_CONFIG.ABLE)
  4. .eq("parent",id)
  5. );
  6. List<Org> orgList1 = new ArrayList<>();
  7. for(Org org : orgs){
  8. List<User> userList = userService.getByOrgId(org.getId());
  9. org.setUserList(userList); //同时也查出了该部门下的所有人员
  10. orgList1.add(org);
  11. }
  12. return orgList1;
  13. }

3.查询该部门下的所有部门的id。---应用递归查询出所有的id,放到set集合中

  1. public Set<Long> getAllChildIds(Long id,Set<Long> set) {
  2. if(set == null){
  3. set = new HashSet<>();
  4. }
  5. List<Org> orgList = hasChilds(id);
  6. set.add(id);
  7. for (int i = 0; i < orgList.size(); i++) {
  8. set.add(orgList.get(i).getId());
  9. getAllChildIds(orgList.get(i).getId(),set);
  10. }
  11. return set;
  12. }

4.查询该部门下的所有部门部门---应用递归查询出该部门下的所有部门,放到Org实体类的List<Org> node属性中。(已经在实体类中定义过了)

  1. public Org getAllChildOrgs(Long id) {
  2. Org org = null;
  3. if(id == 0){
  4. org = new Org();
  5. }else {
  6. org = get(id);
  7. }
  8. List<Org> orgList = hasChilds(id);
  9. for(Org org1 : orgList){
  10. Org org2 = getAllChildOrgs(org1.getId());
  11. org.getNodes().add(org2);
  12. }
  13. return org;
  14. }

5.递归删除该部门下所有部门

  1. //递归删除该部门下所有部门
  2. public boolean del(Long id) {
  3. if (id != null){
  4. List<Org> hasResponses = hasChilds(id);
  5. if (!CollectionUtils.isEmpty(hasResponses)){
  6. for (Org orgRsp:hasResponses){
  7. del(orgRsp.getId());
  8. }
  9. }
  10. return delCurrent(id);
  11.  
  12. }else {
  13. throw new ApplicationException(StatusCode.BAD_REQUEST.getCode(), StatusCode.BAD_REQUEST.getMessage());
  14. }
  15. }
  16.  
  17. //根据id删除对象
  18. private boolean delCurrent(Long id){
  19. Org org = new Org();
  20. org.setId(id);
  21. org.setIsDeleted(Config.ABLE_CONFIG.UNABLE);
  22. org.setUpdateTime(new Date());
  23. return super.updateById(org);
  24. }

业务-----部门Service常用逻辑的更多相关文章

  1. 业务-----添加Service常用逻辑

    1.参数不能为空 /** * 添加人员时判断是否字段全部传值 * @param request * @return */ private Boolean checkClientByCols(Clien ...

  2. 业务-----修改Service常用逻辑

    注意:修改时唯一属性不能重复 //num==null 时,没有修改Num,不用考虑重复问题.//num!=null 时,修改了num.考虑重复问题 if(!StringUtils.isEmpty(re ...

  3. Flask基础(06)-->视图常用逻辑

    Flask基础(06)-->视图常用逻辑 返回json 重定向:url_for 自定义状态码 返回json:在使用 Flask 写一个接口时候需要给客户端返回 JSON 数据,在 Flask 中 ...

  4. 业务型代码常用的SQL汇总(随时更新)

    做了一年的业务代码开发,记录并分享一下自己平时在项目中遇到的比较好用的sql 1.查询表中是否某一字段下的数据有重复数据(以ID为例) SELECT id FROM 表名GROUP BY ID HAV ...

  5. MySQL根据业务场景归纳常用SQL语句

    素材表数据:user[{"id":1,"name":"x"},{"id":2,"name":&quo ...

  6. 数据库及MYSQL基础(3)-JDBC

    教学视频链接:https://edu.aliyun.com/course/1694?spm=5176.11400004.0.0.29254768sg2H5P 程序文件链接:https://pan.ba ...

  7. MSSQL - 逻辑主键、业务主键和复合主键

    转载自:http://blog.csdn.net/sunrise918/article/details/5575054 这几天对逻辑主键.业务主键和复合主键进行了一些思考,也在网上搜索了一下相关的讨论 ...

  8. kubernetes进阶之七:Service

    1.概述 Service也是Kubernetes里的最核心的资源对象之一,Kubernetes里的每个Service其实就是我们经常提起的微服务架构中的一个“微服务”,之前我们所说的Pod.RC等资源 ...

  9. SpringBoot 三层架构 Controller、Service、Dao作用和关系详解

    首先创建一个springboot项目. model层 model层也叫pojo层或者entity层,个人比较喜欢pojo层. 一般数据库的一张表对应一个pojo层,并且表中所有字段都在pojo层都一一 ...

随机推荐

  1. jQuery EasyUI combobox多选及赋值

      1.多选属性multiple multiple:true多选 multiple:false单选 <input class="easyui-combobox" id=&qu ...

  2. JS面向对象之工厂模式

    js面向对象 什么是对象 "无序属性的集合,其属性可以包括基本值.对象或者函数",对象是一组没有特定顺序的的值.对象的没个属性或方法都有一个俄名字,每个名字都映射到一个值. 简单来 ...

  3. centos7搭建logstash

    前两节已经成功完成ek的搭建,还剩最后的一个日志上传的功能 依次执行如下命令 cd /home/elk wget https://artifacts.elastic.co/downloads/logs ...

  4. 【Codeforces Gym 100725K】Key Insertion

    Codeforces Gym 100725K 题意:给定一个初始全0的序列,然后给\(n\)个查询,每一次调用\(Insert(L_i,i)\),其中\(Insert(L,K)\)表示在第L位插入K, ...

  5. android 工具大集合

    http://www.androiddevtools.cn/ http://www.sourcetreeapp.com/

  6. lesson 4:凯撒密码问题

    一·问题描述 二·解决过程 1.设计思路 ①人机交互界面 ②加密函数(将字符串的每一个字符提取出来,通过对字符的阿斯克码值进行运算操作实现加密过程,特殊的特殊对待) ③解密函数(与加密函数算法类似) ...

  7. 在TerraExplorer中如何批量根据shape多边形对象创建TerrainModify对象?

    其实,在Skyline中TerrainModify对象就是一个特殊类型Polygon对象,他们的Geometry是可以直接交换使用的: <!DOCTYPE html PUBLIC "- ...

  8. Spring Extensible XML

    Spring框架从2.0版本开始,提供了基于Schema风格的Spring XML格式用来定义bean的扩展机制.引入Schema-based XML是为了对Traditional的XML配置形式进行 ...

  9. C#基础巩固(3)-Linq To XML 读取XML

    记录下一些读取XML的方法,以免到用的时候忘记了,还得花时间去找. 一.传统写法读取XML 现在我有一个XML文件如下: 现在我要查找名字为"王五"的这个人的 Id 和sex(性别 ...

  10. daterangepicker双日历插件的使用

    今天主要是由于项目的需要,做了一个daterangepicker双日历插件,做出来的效果如下: 个人感觉这个daterangepicker双日历插件很好用,并且实现起来也不是很麻烦,我是根据它的官方文 ...