1.org实体类

public class Org  implements Serializable {

    private static final long serialVersionUID = 1L;

    private String title;
    private Long parent;
    private List<User> userList;
    private List<Org> nodes;

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public Long getParent() {
        return parent;
    }

    public void setParent(Long parent) {
        this.parent = parent;
    }

    public List<Org> getNodes() {
        if(nodes == null){
            nodes = new ArrayList<Org>();
        }
        return nodes;
    }

    public void setNodes(List<Org> nodes) {
        this.nodes = nodes;
    }

    public List<User> getUserList() {
        if(userList == null){
            userList = new ArrayList<User>();
        }
        return userList;
    }

    public void setUserList(List<User> userList) {
        this.userList = userList;
    }

    @Override
    public String toString() {
        return "Org{" +
                "createTime=" + createTime +
                ", title='" + title + '\'' +
                ", parent=" + parent +
                ", userList=" + userList +
                ", nodes=" + nodes +
                '}';
    }
}

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

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

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

 public Set<Long> getAllChildIds(Long id,Set<Long> set) {
        if(set == null){
            set = new HashSet<>();
        }
        List<Org> orgList = hasChilds(id);
        set.add(id);
        for (int i = 0; i < orgList.size(); i++) {
            set.add(orgList.get(i).getId());
            getAllChildIds(orgList.get(i).getId(),set);
        }
        return set;
    }

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

    public Org  getAllChildOrgs(Long id) {
        Org org = null;
        if(id == 0){
            org = new Org();
        }else {
            org = get(id);
        }
        List<Org> orgList = hasChilds(id);
        for(Org org1 : orgList){
            Org org2 = getAllChildOrgs(org1.getId());
            org.getNodes().add(org2);
        }
        return org;
    }

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

//递归删除该部门下所有部门
public boolean del(Long id) {
        if (id != null){
            List<Org> hasResponses = hasChilds(id);
            if (!CollectionUtils.isEmpty(hasResponses)){
                for (Org orgRsp:hasResponses){
                    del(orgRsp.getId());
                }
            }
            return delCurrent(id);

        }else {
            throw new ApplicationException(StatusCode.BAD_REQUEST.getCode(), StatusCode.BAD_REQUEST.getMessage());
        }
    }

//根据id删除对象
 private boolean delCurrent(Long id){
        Org org = new Org();
        org.setId(id);
        org.setIsDeleted(Config.ABLE_CONFIG.UNABLE);
        org.setUpdateTime(new Date());
        return super.updateById(org);
    }

业务-----部门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. Android清理设备内存具体完整演示样例(二)

    版权声明: https://blog.csdn.net/lfdfhl/article/details/27672913 MainActivity例如以下: package cc.c; import j ...

  2. MySQL-proxy代理导致PHP PDO::ATTR_EMULATE_PREPARES的预处理出错,MySQL报General error: 1243错误

    背景: 用的ThinkPHP5的框架.(相比之前的3.2版本,版本5都用了PDO处理数据库) 症状: 报错信息: SQLSTATE[HY000]: General error: 1243 Unknow ...

  3. 一个非常好的php实现手机号归属地查询接口类

    前一阵子看到了一个非常好的php手机归属地查询的类,写的很精简,查询也很精确!大致代码是这样的: <?php header("Content-type:text/html;charse ...

  4. (零 ) 天猫精灵接入Home Assistant-总说明

    天猫精灵设备管理 https://bbs.hassbian.com/tmall 自己的hass访问地址 http://[自己的IP或域名]:8123/states 自己的MQTT服务器访问 http: ...

  5. ethereum/EIPs-1077 Executable Signed Messages

    https://github.com/alexvandesande/EIPs/blob/ee2347027e94b93708939f2e448447d030ca2d76/EIPS/eip-1077.m ...

  6. 深入理解Java中的final关键字(转)

    文章转自http://www.importnew.com/7553.html Java中的final关键字非常重要,它可以应用于类.方法以及变量.这篇文章中我将带你看看什么是final关键字?将变量, ...

  7. PAT A1097 Deduplication on a Linked List (25 分)——链表

    Given a singly linked list L with integer keys, you are supposed to remove the nodes with duplicated ...

  8. Luogu P2880 [USACO07JAN]平衡的阵容Balanced Lineup (ST表模板)

    传送门(ST表裸题) ST表是一种很优雅的算法,用于求静态RMQ 数组l[i][j]表示从i开始,长度为2^j的序列中的最大值 注意事项: 1.核心部分: ; (<<j) <= n; ...

  9. day83

    今日内容 rest_framework序列化 首先序列化需要对写一个类继承serializers.Serializer 方式一:在models的publish写一个__str__方法返回出版社名字 p ...

  10. 一篇自己都看不懂的Matrix tree总结

    Matrix tree定理用于连通图生成树计数,由于博主太菜看不懂定理证明,所以本篇博客不提供\(Matrix\ tree\)定理的证明内容(反正这个东西背结论就可以了是吧) 理解\(Matrix\ ...