昨天在张工的提示下完成了递归删除部门。。。。现在真的体会到基础真的 好重要啊。。。。这个代码说不定以后还用的到呢。。。
@Override
public void delete(String departmentId) {
Department department = this.get(departmentId);
if (null != department) {
// 关联关系
List<DepartmentDepartments> departmentDepartmentss = this.departmentDepartmentsDao.searchByProperty("parentDepartment.id", departmentId, true);
if(departmentDepartmentss.size()>0){
delDept(departmentDepartmentss);
department.setIsDeleted(true);
this.save(department);
//删除和部门关联的人
List<DepartmentPersons> departmentPersons = this.departmentPersonsDao.searchByProperty("department.id", departmentId, true);
this.departmentPersonsDao.removeAll(departmentPersons);
this.departmentDepartmentsDao.remove(this.departmentDepartmentsDao.searchByProperty("department.id", departmentId, true).get(0));
}else{
department.setIsDeleted(true);
this.save(department);
//删除和部门关联的人
List<DepartmentPersons> departmentPersons = this.departmentPersonsDao.searchByProperty("department.id", departmentId, true);
this.departmentPersonsDao.removeAll(departmentPersons);
this.departmentDepartmentsDao.remove(this.departmentDepartmentsDao.searchByProperty("department.id", departmentId, true).get(0));
return;
}
// TODO 仅删除自己,自己的关联---需要递归
}
}
public void delDept(List<DepartmentDepartments> departmentDepartments) {
for (DepartmentDepartments departments : departmentDepartments) {
List<DepartmentDepartments> lstDept = this.departmentDepartmentsDao.searchByProperty("parentDepartment.id", departments.getDepartmentID(), true);
if (lstDept.size() > 0) {
delDept(lstDept);
Department department=departments.getDepartment();
if(null != department){
department.setIsDeleted(true);
this.save(department);
}
List<DepartmentPersons> departmentPersons = this.departmentPersonsDao.searchByProperty("department.id", departments.getDepartmentID(), true);
this.departmentPersonsDao.removeAll(departmentPersons);
this.departmentDepartmentsDao.remove(departments);
}
else {
//break;
Department department=departments.getDepartment();
if(null != department){
department.setIsDeleted(true);
this.save(department);
}
List<DepartmentPersons> departmentPersons = this.departmentPersonsDao.searchByProperty("department.id", departments.getDepartmentID(), true);
this.departmentPersonsDao.removeAll(departmentPersons);
this.departmentDepartmentsDao.remove(departments);
}
}
}