用户更换部门 部门下员工数改变

 /**
     * 编辑用户修改部门的用户数
     *
     * @param oldCompanyDept 之前的部门
     * @param companyDept    修改后的部门
     */
    private void editUserAndChangeDeptNo(CompanyDept oldCompanyDept, CompanyDept companyDept) {
        Integer newDeptNo = companyDept.getDeptNo();
        Integer oldDeptNo = oldCompanyDept.getDeptNo();
        //下级转为上级
        if (oldCompanyDept.getDeptLevel() > companyDept.getDeptLevel()) {
            //如果修改后的部门不是顶级部门 则向下查找到修改之前的部门
            if (companyDept.getDeptLevel() != 1) {
                CompanyDept children = oldCompanyDept;
                for (; ; ) {
                    CompanyDept parent = companyDeptBaseService.selectByid(children.getParentId());
                    if (parent == null) {
                        break;
                    }
                    if (children.getDeptLevel().equals(companyDept.getDeptLevel())) {
                        if (!children.getId().equals(companyDept.getId())) {
                            children.setDeptNo(children.getDeptNo() - 1);
                            companyDeptBaseService.update(children);
                            companyDept.setDeptNo(companyDept.getDeptNo() + 1);
                            companyDeptBaseService.update(companyDept);
                        }
                        break;
                    }
                    children.setDeptNo(children.getDeptNo() - 1);
                    companyDeptBaseService.update(children);
                    children = parent;
                }
            }
        }
        //上级转为下级
        if (oldCompanyDept.getDeptLevel() < companyDept.getDeptLevel()) {
            if (companyDept.getDeptLevel() != 1) {
                companyDept.setDeptNo(companyDept.getDeptNo() + 1);
                companyDeptBaseService.update(companyDept);
                CompanyDept children = companyDept;
                for (; ; ) {
                    CompanyDept parent = companyDeptBaseService.selectByid(children.getParentId());
                    if (parent.getDeptLevel().equals(oldCompanyDept.getDeptLevel())) {
                        if (!parent.getId().equals(oldCompanyDept.getId())) {
                            parent.setDeptNo(parent.getDeptNo() + 1);
                            companyDeptBaseService.update(parent);
                            oldCompanyDept.setDeptNo(parent.getDeptNo() - 1);
                            companyDeptBaseService.update(oldCompanyDept);
                        }
                        break;
                    }
                    parent.setDeptNo(parent.getDeptNo() + 1);
                    companyDeptBaseService.update(parent);
                    children = parent;
                }
            }
        }
        //如果是平级 则修改后的部门+1 之前的部门-1
        if (oldCompanyDept.getDeptLevel().equals(companyDept.getDeptLevel())) {
            companyDept.setDeptNo(newDeptNo + 1);
            oldCompanyDept.setDeptNo(oldDeptNo - 1);
            companyDeptBaseService.update(companyDept);
            companyDeptBaseService.update(oldCompanyDept);
        }
    }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章