Browse Source

业务分析修改

ioioio 3 years ago
parent
commit
6b1106ae75

+ 31 - 0
blade-service-api/blade-project-api/src/main/java/org/springblade/project/entity/ServiceProject.java

@@ -122,4 +122,35 @@ public class ServiceProject  implements Serializable {
 	//客户联系人名称
 	@TableField(exist = false)
 	private String corpNames;
+
+	private String sourceBusiness;
+
+	@TableField(exist = false)
+	private Integer countCorp;
+	@TableField(exist = false)
+	private Integer countCreateUser;
+	@TableField(exist = false)
+	private BigDecimal Jan;
+	@TableField(exist = false)
+	private BigDecimal Feb;
+	@TableField(exist = false)
+	private BigDecimal Mar;
+	@TableField(exist = false)
+	private BigDecimal Apr;
+	@TableField(exist = false)
+	private BigDecimal May;
+	@TableField(exist = false)
+	private BigDecimal June;
+	@TableField(exist = false)
+	private BigDecimal July;
+	@TableField(exist = false)
+	private BigDecimal Aug;
+	@TableField(exist = false)
+	private BigDecimal Sept;
+	@TableField(exist = false)
+	private BigDecimal Oct;
+	@TableField(exist = false)
+	private BigDecimal Nov;
+	@TableField(exist = false)
+	private BigDecimal Dece;
 }

+ 115 - 8
blade-service/blade-project/src/main/java/org/springblade/project/controller/ProjectController.java

@@ -324,7 +324,7 @@ public class ProjectController {
 	/**
 	 * 2.0新逻辑-主营项目主表清核-必须所有子表明细结算之后才可以清核
  	 */
-	@PostMapping("masterCheck")
+	@PostMapping("/masterCheck")
     public R masterCheck(@RequestParam(name = "id",  required = true) Long id)
 	{
 		serviceProjectService.masterCheck(id);
@@ -334,7 +334,7 @@ public class ProjectController {
 	/**
 	 * 2.0新逻辑-微服务对外feign调用接口-主营项目审批通过
 	 * */
-	@PostMapping("projectPassCheck")
+	@PostMapping("/projectPassCheck")
 	public R projectPassCheck(@RequestParam(name = "id",  required = true) Long id)
 	{
 		serviceProjectService.projectPassCheck(id);
@@ -344,7 +344,7 @@ public class ProjectController {
 	/**
 	 * 2.0新逻辑-微服务对外feign调用接口-主营项目审批驳回
 	 * */
-	@PostMapping("projectPassCancel")
+	@PostMapping("/projectPassCancel")
 	public R projectPassCancel(@RequestParam(name = "id",  required = true) Long id)
 	{
 		serviceProjectService.projectPassCancel(id);
@@ -354,24 +354,131 @@ public class ProjectController {
 	/**
 	 * 2.0新逻辑 主营项目明细结算和取消结算功能
 	 * */
-	@PostMapping("settleAccounts")
+	@PostMapping("/settleAccounts")
 	public R settleAccounts(@RequestParam(name = "id",  required = true) Long id,
-							@RequestParam(name = "status", required = true) int status)
+							@RequestParam(name = "status", required = true) int status
+							,@RequestParam(name = "accountName", required = false) String accountName
+							,@RequestParam(name = "accountBank", required = false) String accountBank
+							,@RequestParam(name = "payTime", required = false) Date payTime
+							,@RequestParam(name = "accountNo", required = false) String accountNo)
 	{
-		serviceProjectService.settleAccounts(id,status);
+		serviceProjectService.settleAccounts(id,status,accountName,accountBank,payTime,accountNo);
 		return R.success("操作成功");
 	}
 
 	/**
-	 * 2.0-统计分析
+	 * 2.0-统计列表
 	 * */
-	@GetMapping("statisticalAnalysis")
+	@GetMapping("/statisticalAnalysis")
 	public R statisticalAnalysis()
 	{
 		List<ServiceProjectItem> serviceProjectItems = serviceProjectItemService.statisticalAnalysis(AuthUtil.getTenantId());
 		return R.data(serviceProjectItems);
 	}
 
+	/**
+	 *
+	 * 2.0-业绩分析
+	 * */
+	@GetMapping("/performanceAnalysis")
+	public R performanceAnalysis(@RequestParam(name = "flag",  required = true) int flag,@RequestParam(name = "year",  required = false) Long year)
+	{
+        LambdaQueryWrapper<ServiceProject> serviceProjectLambdaQueryWrapper=new LambdaQueryWrapper<>();
+		serviceProjectLambdaQueryWrapper
+			.eq(ServiceProject::getIsDeleted,0)
+			.eq(ServiceProject::getTenantId,AuthUtil.getTenantId());
+			if(year==null&&year==0L&&year==0)
+			{
+				Calendar cal = Calendar.getInstance();
+				year = Long.valueOf(cal.get(Calendar.YEAR));
+			}
+			//年份
+		    serviceProjectLambdaQueryWrapper.apply(" year(create_time) = '"+year+"'");
+			if(flag==1)
+			{
+				serviceProjectLambdaQueryWrapper.groupBy(ServiceProject::getCreateUser);
+			}
+			else if(flag==2)
+			{
+				serviceProjectLambdaQueryWrapper.groupBy(ServiceProject::getCorpId);
+			}
+		    List<ServiceProject> serviceProjectList = serviceProjectService.list(serviceProjectLambdaQueryWrapper);
+		   	if(!CollectionUtils.isEmpty(serviceProjectList))
+		   	{
+				Long finalYear = year;
+				serviceProjectList.forEach(lt->{
+					if(flag==1)
+					{
+						List<Long> createUserIds = serviceProjectList.stream().map(ServiceProject::getCreateUser).collect(Collectors.toList());
+						createUserIds.forEach(e->{
+							LambdaQueryWrapper<ServiceProject> countCops=new LambdaQueryWrapper<>();
+							countCops
+								.eq(ServiceProject::getCreateUser,e)
+								.eq(ServiceProject::getTenantId,AuthUtil.getTenantId());
+							int copsSize = serviceProjectService.list(countCops).stream().map(ServiceProject::getCorpId).distinct().collect(Collectors.toList()).size();
+							lt.setCountCorp(copsSize);
+						});
+
+
+					}
+					else if(flag==2)
+					{
+						List<Long> corpsIds = serviceProjectList.stream().map(ServiceProject::getCorpId).collect(Collectors.toList());
+						corpsIds.forEach(e->{
+							LambdaQueryWrapper<ServiceProject> countCreateUser=new LambdaQueryWrapper<>();
+							countCreateUser
+								.eq(ServiceProject::getCorpId,e)
+								.eq(ServiceProject::getTenantId,AuthUtil.getTenantId());
+							int createUserSize = serviceProjectService.list(countCreateUser).stream().map(ServiceProject::getCreateUser).distinct().collect(Collectors.toList()).size();
+						    lt.setCountCreateUser(createUserSize);
+						});
+					}
+					ServiceProject serviceProject=null;
+					if(flag==1)
+					{
+						serviceProject = calculateServiceCharge(lt.getCreateUser(), 1, finalYear);
+					}
+					else if(flag==2)
+					{
+						serviceProject = calculateServiceCharge(lt.getCorpId(), 2, finalYear);
+					}
+					lt.setJan(serviceProject.getJan());//1
+					lt.setFeb(serviceProject.getFeb());//2
+					lt.setMar(serviceProject.getMar());//3
+					lt.setApr(serviceProject.getApr());//4
+					lt.setMay(serviceProject.getMay());//5
+					lt.setJune(serviceProject.getJune());//6
+					lt.setJuly(serviceProject.getJuly());//7
+					lt.setAug(serviceProject.getAug());//8
+					lt.setSept(serviceProject.getSept());//9
+					lt.setOct(serviceProject.getOct());//10
+					lt.setNov(serviceProject.getNov());//11
+					lt.setDece(serviceProject.getDece());//12
+
+				});
+
+
+			}
+		   	return R.data(serviceProjectList);
+	}
+
+    //计算每个月的服务费
+	public ServiceProject calculateServiceCharge(Long id,int flag,Long year)
+	{
+		  if(flag==1)
+		  {
+			  return serviceProjectService.calculateServiceCharge(AuthUtil.getTenantId(), year.toString(), null, id);
+		  }
+		  else if(flag==2)
+		  {
+			  return serviceProjectService.calculateServiceCharge(AuthUtil.getTenantId(),year.toString(),id,null);
+		  }
+		  else
+		  {
+		  	throw new SecurityException("查询服务费失败");
+		  }
+
+	}
 
 
 }

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

@@ -4,6 +4,7 @@ package org.springblade.project.mapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
+import org.springblade.project.entity.ServiceProject;
 import org.springblade.project.entity.ServiceProjectItem;
 
 import java.util.List;
@@ -19,4 +20,6 @@ import java.util.List;
 public interface ServiceProjectItemMapper extends BaseMapper<ServiceProjectItem> {
 
 	List<ServiceProjectItem>  statisticalAnalysis(@Param("tenantId") String tenantId);
+
+	ServiceProject calculateServiceCharge(@Param("tenantId") String tenantId,@Param("year") String year,@Param("corpId") Long corpId,@Param("createUser") Long createUser);
 }

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

@@ -60,5 +60,30 @@
 	order by  a.update_time desc
     </select>
 
+    <select id="calculateServiceCharge" resultType="org.springblade.project.entity.ServiceProject">
+      select
+      sum(case month(create_time) when '1'  then service_charge else 0 end) as Jan,
+      sum(case month(create_time) when '2'  then service_charge else 0 end) as Feb,
+      sum(case month(create_time) when '3'  then service_charge else 0 end) as Mar,
+      sum(case month(create_time) when '4'  then service_charge else 0 end) as Apr,
+      sum(case month(create_time) when '5'  then service_charge else 0 end) as May,
+      sum(case month(create_time) when '6'  then service_charge else 0 end) as June,
+      sum(case month(create_time) when '7'  then service_charge else 0 end) as July,
+      sum(case month(create_time) when '8'  then service_charge else 0 end) as Aug,
+     sum(case month(create_time) when '9'  then service_charge else 0 end) as Sept,
+     sum(case month(create_time) when '10' then service_charge  else 0 end) as Oct,
+     sum(case month(create_time) when '11' then service_charge  else 0 end) as Nov,
+     sum(case month(create_time) when '12' then service_charge  else 0 end) as Dece
+     from service_project
+    where year(create_time)=#{year}
+    AND tenant_id = #{tenantId}
+    <if test="corpId!=null">
+        AND corp_id = #{corpId}
+    </if>
+
+        <if test="createUser!=null">
+            AND create_user = #{createUser}
+        </if>
+    </select>
 
 </mapper>

+ 4 - 1
blade-service/blade-project/src/main/java/org/springblade/project/service/ServiceProjectService.java

@@ -4,6 +4,7 @@ package org.springblade.project.service;
 
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import org.apache.ibatis.annotations.Param;
 import org.springblade.core.mp.base.BaseService;
 import org.springblade.core.tool.api.R;
 import org.springblade.project.entity.ServiceProject;
@@ -37,5 +38,7 @@ public interface ServiceProjectService extends IService<ServiceProject>
 
     void projectPassCancel(Long id);
 
-    void settleAccounts(Long id,int status);
+    void settleAccounts(Long id,int status, String accountName,String accountBank,Date payTime, String accountNo);
+
+	ServiceProject calculateServiceCharge(String tenantId,  String year,  Long corpId,  Long createUser);
 }

+ 14 - 1
blade-service/blade-project/src/main/java/org/springblade/project/service/impl/ServiceProjectServiceImpl.java

@@ -24,6 +24,8 @@ import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.interceptor.TransactionAspectSupport;
 import org.springframework.util.CollectionUtils;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.web.bind.annotation.RequestParam;
+
 import javax.annotation.Resource;
 import java.math.BigDecimal;
 import java.util.Date;
@@ -418,9 +420,14 @@ public class ServiceProjectServiceImpl extends ServiceImpl<ServiceProjectMapper,
 
 	@Override
 	@Transactional
-	public void settleAccounts(Long id,int status)
+	public void settleAccounts(Long id,int status, String accountName,String accountBank,Date payTime,String accountNo)
 	{
 		ServiceProjectItem serviceProjectItem = serviceProjectItemMapper.selectById(id);
+		serviceProjectItem.setAccountName(accountName);
+		serviceProjectItem.setAccountBank(accountBank);
+		serviceProjectItem.setAccountNo(accountNo);
+		serviceProjectItem.setPayTime(payTime);
+
 		if(status==5)
 		{
 			if(serviceProjectItem.getStatus()==5)
@@ -466,6 +473,12 @@ public class ServiceProjectServiceImpl extends ServiceImpl<ServiceProjectMapper,
 		}
 	}
 
+	@Override
+	public ServiceProject calculateServiceCharge(String tenantId, String year, Long corpId, Long createUser)
+	  {
+		return serviceProjectItemMapper.calculateServiceCharge(tenantId,year,corpId,createUser);
+	}
+
 	public void checkMoney(Long serviceId,List<ServiceProjectItem> items)
 	{
 		ServiceProject serviceProject = serviceProjectMapper.selectById(serviceId);