Parcourir la source

修改部门统计

anderx il y a 3 ans
Parent
commit
c388033ffd

+ 12 - 0
src/main/java/com/goafanti/admin/service/DepartmentService.java

@@ -1,7 +1,10 @@
 package com.goafanti.admin.service;
 
+import com.goafanti.common.model.OrganizationManagement;
 import com.goafanti.common.model.WorkingHours;
 
+import java.util.List;
+
 
 public interface DepartmentService {
 
@@ -16,4 +19,13 @@ public interface DepartmentService {
 	boolean checkWorkingHoursType(Integer type);
 
 	boolean checkDepWorkingHouresType(Integer id);
+
+	/**
+	 * 查询分管部门、查询管理部门
+	 * @return
+	 */
+	List<OrganizationManagement> selectMyDeps();
+
+
+	List<OrganizationManagement> selectSubDeps(String subId);
 }

+ 9 - 3
src/main/java/com/goafanti/admin/service/impl/AdminServiceImpl.java

@@ -9,6 +9,9 @@ import java.util.UUID;
 
 import javax.annotation.Resource;
 
+import com.goafanti.admin.service.DepartmentService;
+import com.goafanti.common.model.OrganizationManagement;
+import com.goafanti.order.service.OrderService;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.cache.annotation.Cacheable;
@@ -53,6 +56,8 @@ public class AdminServiceImpl extends BaseMybatisDao<AdminMapper> implements Adm
 	private UserBusinessMapper	userBusinessMapper;
 	@Autowired
 	private OrganizationManagementMapper	organizationManagementMapper;
+	@Autowired
+	private DepartmentService departmentService;
 	@Resource(name = "passwordUtil")
 	private PasswordUtil					passwordUtil;
 
@@ -365,12 +370,12 @@ public class AdminServiceImpl extends BaseMybatisDao<AdminMapper> implements Adm
 	}
 
 	@Override
-	@Cacheable(cacheNames = "selectAllUser#500",key = "'selectAllUser:depId:'+#depId+'startTime:'+#startTime+" +
-			"'endTime:'+#endTime+'aName:'+#aName")
+	@Cacheable(cacheNames = "selectAllUser#500",key = "'selectAllUser:depId:'+#depId+'startTime:'+#startTime+" +"'endTime:'+#endTime+'aName:'+#aName")
 	public depCountBo selectAllUser(String depId, String startTime, String endTime,String aName) {
 		depCountBo acb=new depCountBo();
 		if (endTime!=null)endTime=endTime+" 23:59:59";
 		List<depCountBo >deps=new ArrayList<>();
+		List<OrganizationManagement> depIds=new ArrayList<>();
 		if (depId==null) {
 			acb.setName("科德集团");
 			deps=organizationManagementMapper.selectBysuperName("科德集团");
@@ -379,8 +384,9 @@ public class AdminServiceImpl extends BaseMybatisDao<AdminMapper> implements Adm
 			acb.setName(oo.getName());
 			acb.setId(depId);
 			deps=organizationManagementMapper.selectBysuperId(oo.getId());
+			depIds =departmentService.selectSubDeps(depId);
 		}
-		List<AdminCustomerBo> list =organizationManagementMapper.AlldepCount(startTime,  endTime);
+		List<AdminCustomerBo> list =organizationManagementMapper.AlldepCount(depIds,startTime,  endTime);
 		for (AdminCustomerBo ad : list) {
 			if (acb.getId().equals(ad.getDepId())){
 				acb.getaList().add(ad);

+ 54 - 0
src/main/java/com/goafanti/admin/service/impl/DepartmentServiceImpl.java

@@ -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;
+	}
+
 }

+ 1 - 1
src/main/java/com/goafanti/common/dao/OrganizationManagementMapper.java

@@ -150,5 +150,5 @@ public interface OrganizationManagementMapper {
 			@Param("adminName")String adminName,@Param("startTime")String startTime, @Param("endTime")String endTime);
 
 
-	List<AdminCustomerBo> AlldepCount(@Param("startTime")String startTime, @Param("endTime")String endTime);
+	List<AdminCustomerBo> AlldepCount(@Param("depIds")List<OrganizationManagement> depIds ,@Param("startTime")String startTime, @Param("endTime")String endTime);
 }

+ 6 - 0
src/main/java/com/goafanti/common/mapper/OrganizationManagementMapper.xml

@@ -685,6 +685,12 @@
         group by a.aid ) y on a.id=y.aid
                      left join department c on a.department_id =c.id
         where  a.status='正常'  and a.type=1
+        <if test="depIds!= null">
+            and a.department_id in
+            <foreach close=")" collection="depIds" item="deps" open="(" separator=",">
+                #{deps.id}
+            </foreach>
+        </if>
     </select>
 
 </mapper>