package com.goafanti.admin.service.impl; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import com.goafanti.admin.bo.DepartmentComboBox; import com.goafanti.common.constant.AFTConstants; import com.goafanti.common.dao.DepartmentMapper; import com.goafanti.common.model.Department; 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; import com.goafanti.admin.service.DepartmentService; import com.goafanti.common.dao.WorkingHoursMapper; import com.goafanti.common.model.WorkingHours; import com.goafanti.core.mybatis.BaseMybatisDao; @Service public class DepartmentServiceImpl extends BaseMybatisDao implements DepartmentService { @Autowired private WorkingHoursMapper workingHoursMapper; @Autowired private DepartmentMapper departmentMapper; @Override public int addWorkingHours(WorkingHours in) { return workingHoursMapper.insertSelective(in); } @Override public int deleteWorkingHours(Integer id) { return workingHoursMapper.deleteByPrimaryKey(id); } @Override public List selectWorkingHours() { return workingHoursMapper.selectList(); } @Override public WorkingHours getWorkingHours(String depId) { return workingHoursMapper.selectBydepId(depId); } @Override public boolean checkWorkingHoursType(Integer type) { int i=workingHoursMapper.getTypeCount(type); if(i>0) { return true; } return false; } @Override public boolean checkDepWorkingHouresType(Integer id) { int i=workingHoursMapper.getDepTypeCount(id); if(i>0) { return true; } return false; } @Override public List selectMyDeps() { if(TokenManager.hasRole(AFTConstants.SUPERADMIN) || TokenManager.hasRole(AFTConstants.APPROVAL_DECISION)) return departmentMapper.selectAllDeps(); else return selectCurrentDep(TokenManager.getAdminId()); } public List selectSubDeps(String subId) { return selectSubDeps(subId,0); } @Override public List selectSubDeps(String subId,Integer type) { return selectSubDeps(subId,type,0); } @Override public List selectSubDeps(String subId,Integer type,Integer myShiro) { List list =departmentMapper.selectSubDeps(subId); List all=new ArrayList<>(); if (type==0)all.add(departmentMapper.selectByPrimaryKey(subId)); if (!list.isEmpty()){ all.addAll(list); for (Department dep : list) { List l2=selectSubDeps(dep.getId(),1); if(!l2.isEmpty()){ all.addAll(l2); } } } if (myShiro==1){ ListmyAll=new ArrayList<>(); List my=selectMyDeps(); for (Department dep : all) { for (Department department : my) { if (dep.getId().equals(department.getId()))myAll.add(dep); } } all=myAll; } return all; } @Override public List getLowerDep(String depIds) { String[] ss=depIds.split(","); List ls=new ArrayList<>(); Arrays.stream(ss).forEach(e ->{ ls.addAll(selectSubDeps(e)); }); return ls; } private List selectCurrentDep(String managerId){ List allData = new ArrayList(); List superData = departmentMapper.selectCurrentDeps(managerId); if(superData != null && superData.size()>0){ allData.addAll(superData); } selectSubDeps(allData,superData); return allData; } private List selectSubDeps(List allData,List superData){ List subData = new ArrayList<>(); String superIds = ""; for(Department 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; } }