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