Browse Source

统计分析增加全部导出

ioioio 3 years ago
parent
commit
898844b42e

+ 155 - 0
blade-service/blade-project/src/main/java/org/springblade/project/controller/ProjectController.java

@@ -393,6 +393,159 @@ public class ProjectController {
 		return R.data(serviceProjectItems);
 	}
 
+
+	/**
+	 *
+	 * 2.0-业绩分析 -导出
+	 * */
+	@GetMapping("/import-out-performanceAnalysis")
+	public R<?> importOutPerformanceAnalysis(
+		@RequestParam(name = "flag",  required = true) int flag
+		,@RequestParam(name = "year",  defaultValue = "2021") Long year
+		,@RequestParam(name = "corpNames", required = false) Long corpNames
+		,@RequestParam(name = "userName",  required = false) String userName)
+	{
+		//按承做人统计多少个客户
+		if(flag==1)
+		{
+
+			LambdaQueryWrapper<ServiceProjectItem> itemLambdaQueryWrapper=new LambdaQueryWrapper<>();
+			itemLambdaQueryWrapper.apply(" year(pay_time) = '"+year+"'");
+			itemLambdaQueryWrapper.eq(ServiceProjectItem::getTenantId,AuthUtil.getTenantId());
+			itemLambdaQueryWrapper.eq(ServiceProjectItem::getIsDeleted,0);
+			itemLambdaQueryWrapper.eq(StringUtils.isNotBlank(userName),ServiceProjectItem::getUserName,userName);
+			itemLambdaQueryWrapper.groupBy(ServiceProjectItem::getUserName);
+			//分组不同的承做人
+			List<ServiceProjectItem> itemList = serviceProjectItemService.list(itemLambdaQueryWrapper);
+			if(CollectionUtils.isEmpty(itemList))
+			{
+				return R.data(Collections.EMPTY_LIST);
+			}
+			Long finalYear = year;
+			itemList.forEach(e->{
+				//统计此制单人多少个客户
+				LambdaQueryWrapper<ServiceProjectItem> count=new LambdaQueryWrapper<>();
+				count
+					.eq(ServiceProjectItem::getUserName,e.getUserName())
+					.eq(ServiceProjectItem::getTenantId,AuthUtil.getTenantId())
+					.eq(ServiceProjectItem::getIsDeleted,0);
+				List<ServiceProjectItem> list = serviceProjectItemService.list(count);
+				List<Long> pids = list.stream().map(ServiceProjectItem::getPId).collect(Collectors.toList());
+				if(!CollectionUtils.isEmpty(pids))
+				{
+					//从主表获取客户并且分组
+					LambdaQueryWrapper<ServiceProject> countCorps=new LambdaQueryWrapper<>();
+					countCorps
+						.in(ServiceProject::getId,pids)
+						.eq(ServiceProject::getIsDeleted,0)
+						.eq(ServiceProject::getTenantId,AuthUtil.getTenantId());
+					List<ServiceProject> corpsProjects = serviceProjectService.list(countCorps);
+					e.setCountCorp(corpsProjects.stream().map(ServiceProject::getCorpId).distinct().collect(Collectors.toList()).size());
+				}
+				else
+				{
+					e.setCountCorp(0);
+				}
+
+
+
+				//计算服务费
+				ServiceProject serviceProject = this.calculateServiceCharge(e.getUserName(), null, 1, finalYear);
+				e.setJan(serviceProject==null?BigDecimal.ZERO:serviceProject.getJan());//1
+				e.setFeb(serviceProject==null?BigDecimal.ZERO:serviceProject.getFeb());//2
+				e.setMar(serviceProject==null?BigDecimal.ZERO:serviceProject.getMar());//3
+				e.setApr(serviceProject==null?BigDecimal.ZERO:serviceProject.getApr());//4
+				e.setMay(serviceProject==null?BigDecimal.ZERO:serviceProject.getMay());//5
+				e.setJune(serviceProject==null?BigDecimal.ZERO:serviceProject.getJune());//6
+				e.setJuly(serviceProject==null?BigDecimal.ZERO:serviceProject.getJuly());//7
+				e.setAug(serviceProject==null?BigDecimal.ZERO:serviceProject.getAug());//8
+				e.setSept(serviceProject==null?BigDecimal.ZERO:serviceProject.getSept());//9
+				e.setOct(serviceProject==null?BigDecimal.ZERO:serviceProject.getOct());//10
+				e.setNov(serviceProject==null?BigDecimal.ZERO:serviceProject.getNov());//11
+				e.setDece(serviceProject==null?BigDecimal.ZERO:serviceProject.getDece());//12
+			});
+			return R.data(itemList);
+		}
+		else if(flag==2)
+		{
+			//获取结算时间为指定年的数据
+			LambdaQueryWrapper<ServiceProjectItem> itemLambdaQueryWrapper=new LambdaQueryWrapper<>();
+			itemLambdaQueryWrapper.apply(" year(pay_time) = '"+year+"'");
+			itemLambdaQueryWrapper.eq(ServiceProjectItem::getTenantId,AuthUtil.getTenantId());
+			itemLambdaQueryWrapper.eq(ServiceProjectItem::getIsDeleted,0);
+			List<Long> pids = serviceProjectItemService.list(itemLambdaQueryWrapper).stream().map(ServiceProjectItem::getPId).collect(Collectors.toList());
+			if(CollectionUtils.isEmpty(pids))
+			{
+				return R.data(null);
+			}
+
+			//通过上述数据,查询相关客户数据
+			LambdaQueryWrapper<ServiceProject> countCorps=new LambdaQueryWrapper<>();
+			countCorps
+				.eq(corpNames!=null,ServiceProject::getCorpId,corpNames)
+				.isNotNull(ServiceProject::getCorpId)
+				.in(ServiceProject::getId,pids)
+				.eq(ServiceProject::getIsDeleted,0)
+				.groupBy(ServiceProject::getCorpId)
+				.eq(ServiceProject::getTenantId,AuthUtil.getTenantId());
+			List<ServiceProject> projectList = serviceProjectService.list(countCorps);
+
+			Long finalYear = year;
+			//开始封装数据
+			projectList.forEach(e->{
+				//客户名称
+				if(e.getCorpId()!=null)
+				{
+					R<CorpsDesc> corpMessage = corpsDescClient.getCorpMessage(e.getCorpId());
+					if(corpMessage.isSuccess()&&corpMessage.getData()!=null)
+					{
+						e.setCorpNames(corpMessage.getData().getCname());
+					}
+				}
+				//统计此客户多少个承做人
+				LambdaQueryWrapper<ServiceProject> count=new LambdaQueryWrapper<>();
+				count.eq(ServiceProject::getTenantId,AuthUtil.getTenantId());
+				count.eq(ServiceProject::getIsDeleted,0);
+				count.eq(ServiceProject::getCorpId,e.getCorpId());
+				List<Long> pid = serviceProjectService.list(count).stream().map(ServiceProject::getId).collect(Collectors.toList());
+
+				if(!CollectionUtils.isEmpty(pid))
+				{
+					LambdaQueryWrapper<ServiceProjectItem> countItem=new LambdaQueryWrapper<>();
+					countItem.in(ServiceProjectItem::getPId,pid);
+					countItem.eq(ServiceProjectItem::getIsDeleted,0);
+					countItem.eq(ServiceProjectItem::getTenantId,AuthUtil.getTenantId());
+					List<ServiceProjectItem> list = serviceProjectItemService.list(countItem);
+					e.setCountUserName(list.stream().map(ServiceProjectItem::getUserName).distinct().collect(Collectors.toList()).size());
+				}
+				else
+				{
+					e.setCountUserName(0);
+				}
+
+
+				//统计服务费
+				ServiceProject serviceProject = calculateServiceCharge(null,e.getCorpId(), 2, finalYear);
+				e.setJan(serviceProject==null?BigDecimal.ZERO:serviceProject.getJan());//1
+				e.setFeb(serviceProject==null?BigDecimal.ZERO:serviceProject.getFeb());//2
+				e.setMar(serviceProject==null?BigDecimal.ZERO:serviceProject.getMar());//3
+				e.setApr(serviceProject==null?BigDecimal.ZERO:serviceProject.getApr());//4
+				e.setMay(serviceProject==null?BigDecimal.ZERO:serviceProject.getMay());//5
+				e.setJune(serviceProject==null?BigDecimal.ZERO:serviceProject.getJune());//6
+				e.setJuly(serviceProject==null?BigDecimal.ZERO:serviceProject.getJuly());//7
+				e.setAug(serviceProject==null?BigDecimal.ZERO:serviceProject.getAug());//8
+				e.setSept(serviceProject==null?BigDecimal.ZERO:serviceProject.getSept());//9
+				e.setOct(serviceProject==null?BigDecimal.ZERO:serviceProject.getOct());//10
+				e.setNov(serviceProject==null?BigDecimal.ZERO:serviceProject.getNov());//11
+				e.setDece(serviceProject==null?BigDecimal.ZERO:serviceProject.getDece());//12
+
+			});
+			return R.data(projectList);
+		}
+		return R.data(Collections.EMPTY_LIST);
+	}
+
+
 	/**
 	 *
 	 * 2.0-业绩分析
@@ -401,6 +554,7 @@ public class ProjectController {
 	public R<?> performanceAnalysis(@RequestParam(name = "flag",  required = true) int flag,@RequestParam(name = "year",  defaultValue = "2021") Long year,
 								 @RequestParam(name = "current", defaultValue = "1") Integer current
 		                        ,@RequestParam(name = "size", defaultValue = "10") Integer size
+		                        ,@RequestParam(name = "corpNames", required = false) Long corpNames
 	                            ,@RequestParam(name = "userName",  required = false) String userName)
 	{
 
@@ -482,6 +636,7 @@ public class ProjectController {
 			Page<ServiceProject> page=new Page<>(current,size);
 			LambdaQueryWrapper<ServiceProject> countCorps=new LambdaQueryWrapper<>();
 			countCorps
+				.eq(corpNames!=null,ServiceProject::getCorpId,corpNames)
 				.isNotNull(ServiceProject::getCorpId)
 				.in(ServiceProject::getId,pids)
 				.eq(ServiceProject::getIsDeleted,0)

+ 1 - 0
blade-service/blade-project/src/main/java/org/springblade/project/mapper/ServiceProjectItemMapper.xml

@@ -49,6 +49,7 @@
 		  a.id=b.p_id
 	AND b.tenant_id = #{tenantId}
 	and b.is_deleted = 0
+    AND b.STATUS IN ( '0', '1', '2', '3', '4', '5', '6' )
         <if test='userName != null and userName!= ""'>
             AND b.user_name = #{userName}
         </if>