用戶更換部門 部門下員工數改變

 /**
     * 編輯用戶修改部門的用戶數
     *
     * @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);
        }
    }

 

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