|
|
@@ -391,11 +391,153 @@ public class ProjectController {
|
|
|
* 2.0-业绩分析
|
|
|
* */
|
|
|
@GetMapping("/performanceAnalysis")
|
|
|
- public R performanceAnalysis(@RequestParam(name = "flag", required = true) int flag,@RequestParam(name = "year", required = false) Long year,
|
|
|
+ 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 = "createUser", required = false) Long createUser)
|
|
|
+ ,@RequestParam(name = "userName", required = false) String userName)
|
|
|
{
|
|
|
+
|
|
|
+ //按承做人统计多少个客户
|
|
|
+ if(flag==1)
|
|
|
+ {
|
|
|
+ Page<ServiceProjectItem> page=new Page<>(current,size);
|
|
|
+ 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);
|
|
|
+ //分组不同的承做人
|
|
|
+ IPage<ServiceProjectItem> ipage= serviceProjectItemService.page(page,itemLambdaQueryWrapper);
|
|
|
+ if(CollectionUtils.isEmpty(ipage.getRecords()))
|
|
|
+ {
|
|
|
+ return R.data(Collections.EMPTY_LIST);
|
|
|
+ }
|
|
|
+ Long finalYear = year;
|
|
|
+ ipage.getRecords().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 = 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(ipage);
|
|
|
+ }
|
|
|
+ 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);
|
|
|
+ }
|
|
|
+
|
|
|
+ //通过上述数据,查询相关客户数据
|
|
|
+ Page<ServiceProject> page=new Page<>(current,size);
|
|
|
+ LambdaQueryWrapper<ServiceProject> countCorps=new LambdaQueryWrapper<>();
|
|
|
+ countCorps
|
|
|
+ .isNotNull(ServiceProject::getCorpId)
|
|
|
+ .in(ServiceProject::getId,pids)
|
|
|
+ .eq(ServiceProject::getIsDeleted,0)
|
|
|
+ .groupBy(ServiceProject::getCorpId)
|
|
|
+ .eq(ServiceProject::getTenantId,AuthUtil.getTenantId());
|
|
|
+ IPage<ServiceProject> iPage = serviceProjectService.page(page, countCorps);
|
|
|
+
|
|
|
+ Long finalYear = year;
|
|
|
+ //开始封装数据
|
|
|
+ iPage.getRecords().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(iPage);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/*
|
|
|
if(year==null&&year==0L&&year==0)
|
|
|
{
|
|
|
Calendar cal = Calendar.getInstance();
|
|
|
@@ -491,19 +633,20 @@ public class ProjectController {
|
|
|
|
|
|
|
|
|
}
|
|
|
- return R.data(iPage);
|
|
|
+ return R.data(iPage);*/
|
|
|
+ return R.data(Collections.EMPTY_LIST);
|
|
|
}
|
|
|
|
|
|
//计算每个月的服务费
|
|
|
- public ServiceProject calculateServiceCharge(Long id,int flag,Long year)
|
|
|
+ public ServiceProject calculateServiceCharge(String userName,Long id,int flag,Long year)
|
|
|
{
|
|
|
if(flag==1)
|
|
|
{
|
|
|
- return serviceProjectService.calculateServiceCharge(AuthUtil.getTenantId(), year.toString(), null, id);
|
|
|
+ return serviceProjectService.calculateServiceCharge(AuthUtil.getTenantId(), year.toString(), null, id,userName);
|
|
|
}
|
|
|
else if(flag==2)
|
|
|
{
|
|
|
- return serviceProjectService.calculateServiceCharge(AuthUtil.getTenantId(),year.toString(),id,null);
|
|
|
+ return serviceProjectService.calculateServiceCharge(AuthUtil.getTenantId(),year.toString(),id,null,userName);
|
|
|
}
|
|
|
else
|
|
|
{
|