|
|
@@ -1,7 +1,13 @@
|
|
|
package com.goafanti.admin.service.impl;
|
|
|
|
|
|
+import java.util.ArrayList;
|
|
|
import java.util.List;
|
|
|
|
|
|
+import com.goafanti.common.constant.AFTConstants;
|
|
|
+import com.goafanti.common.dao.OrganizationManagementMapper;
|
|
|
+import com.goafanti.common.model.OrganizationManagement;
|
|
|
+import com.goafanti.core.shiro.token.TokenManager;
|
|
|
+import org.apache.commons.lang3.StringUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
@@ -15,6 +21,8 @@ public class DepartmentServiceImpl extends BaseMybatisDao<WorkingHoursMapper> im
|
|
|
|
|
|
@Autowired
|
|
|
private WorkingHoursMapper workingHoursMapper;
|
|
|
+ @Autowired
|
|
|
+ private OrganizationManagementMapper departmentMapper;
|
|
|
|
|
|
|
|
|
@Override
|
|
|
@@ -55,4 +63,50 @@ public class DepartmentServiceImpl extends BaseMybatisDao<WorkingHoursMapper> im
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public List<OrganizationManagement> selectMyDeps() {
|
|
|
+ if(TokenManager.hasRole(AFTConstants.SUPERADMIN) || TokenManager.hasRole(AFTConstants.APPROVAL_DECISION))
|
|
|
+ return departmentMapper.selectAllDeps();
|
|
|
+ else
|
|
|
+ return selectCurrentDep(TokenManager.getAdminId());
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<OrganizationManagement> selectSubDeps(String subId) {
|
|
|
+ List<OrganizationManagement> list =departmentMapper.selectSubDeps(subId);
|
|
|
+ List<OrganizationManagement> all=new ArrayList<>();
|
|
|
+ all.add(departmentMapper.selectByPrimaryKey(subId));
|
|
|
+ all.addAll(list);
|
|
|
+ for (OrganizationManagement dep : list) {
|
|
|
+ all.addAll(selectSubDeps(dep.getId()));
|
|
|
+ }
|
|
|
+ return all;
|
|
|
+ }
|
|
|
+
|
|
|
+ private List<OrganizationManagement> selectCurrentDep(String managerId){
|
|
|
+ List<OrganizationManagement> allData = new ArrayList<OrganizationManagement>();
|
|
|
+ List<OrganizationManagement> superData = departmentMapper.selectCurrentDeps(managerId);
|
|
|
+ if(superData != null && superData.size()>0){
|
|
|
+ allData.addAll(superData);
|
|
|
+ }
|
|
|
+ selectSubDeps(allData,superData);
|
|
|
+ return allData;
|
|
|
+ }
|
|
|
+
|
|
|
+ private List<OrganizationManagement> selectSubDeps(List<OrganizationManagement> allData,List<OrganizationManagement> superData){
|
|
|
+ List<OrganizationManagement> subData = new ArrayList<>();
|
|
|
+ String superIds = "";
|
|
|
+ for(OrganizationManagement om : superData){
|
|
|
+ if(!om.getId().equals(om.getSuperId())){
|
|
|
+ superIds += om.getId() + ",";
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(StringUtils.isNotBlank(superIds)) subData = departmentMapper.selectSubDeps(superIds.substring(0, superIds.length()-1));
|
|
|
+ if(subData != null && subData.size()>0) {
|
|
|
+ allData.addAll(subData);
|
|
|
+ selectSubDeps(allData,subData);
|
|
|
+ }
|
|
|
+ return allData;
|
|
|
+ }
|
|
|
+
|
|
|
}
|