浏览代码

推广者推广统计数据接口

yanliming 5 年之前
父节点
当前提交
b46b974da7

+ 91 - 4
picc-admin-server/src/main/java/com/jpsoft/picc/modules/base/controller/CompanyController.java

@@ -1,24 +1,28 @@
 package com.jpsoft.picc.modules.base.controller;
 
 import com.github.pagehelper.Page;
+import com.jpsoft.picc.modules.base.controller.dto.PromoterDto;
 import com.jpsoft.picc.modules.base.entity.Company;
 import com.jpsoft.picc.modules.base.entity.CompanyUser;
 import com.jpsoft.picc.modules.base.service.CompanyUserService;
+import com.jpsoft.picc.modules.business.entity.InsuranceApplication;
+import com.jpsoft.picc.modules.business.service.InsuranceApplicationService;
+import com.jpsoft.picc.modules.common.constant.PolicyStatus;
 import com.jpsoft.picc.modules.common.dto.MsgResult;
 import com.jpsoft.picc.modules.common.utils.PojoUtils;
 import com.jpsoft.picc.modules.common.dto.Sort;
 import com.jpsoft.picc.modules.common.dto.MessageResult;
 import com.jpsoft.picc.modules.base.service.CompanyService;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiImplicitParam;
-import io.swagger.annotations.ApiImplicitParams;
-import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.*;
+import lombok.Data;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+import java.math.BigDecimal;
+import java.text.SimpleDateFormat;
 import java.util.*;
 
 @RestController
@@ -33,6 +37,9 @@ public class CompanyController {
     @Autowired
     private CompanyUserService companyUserService;
 
+    @Autowired
+    private InsuranceApplicationService insuranceApplicationService;
+
     @ApiOperation(value="获取信息")
     @GetMapping("detail")
     @ApiImplicitParams({
@@ -290,4 +297,84 @@ public class CompanyController {
 
         return msgResult;
     }
+
+
+    @ApiOperation(value="推广者推广统计数据")
+    @RequestMapping(value = "getPromoterData",method = RequestMethod.POST)
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "promoter",value = "推广者帐号", required = true, paramType = "query")
+    })
+    public MsgResult<PromoterDto> getPromoterData(String promoter, @RequestAttribute String subject){
+
+        MsgResult<PromoterDto> msgResult = new MsgResult<PromoterDto>();
+
+        PromoterDto promoterDto = new PromoterDto();
+
+        try {
+
+            Date date = new Date();
+
+            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
+
+            Calendar calendar = Calendar.getInstance();
+
+            calendar.setTime(date);
+
+            calendar.add(Calendar.MONTH, 1);//增加一个月
+
+            Date dt1 = calendar.getTime();
+
+            String startTime = sdf.format(date) + "-01";
+            String endTime = sdf.format(dt1) + "-01";
+
+
+            //累计客户数
+            List<Company> companyList = companyService.findByPromoter(promoter);
+
+            BigDecimal total = new BigDecimal(0);
+            BigDecimal month = new BigDecimal(0);
+
+            for (Company company : companyList) {
+                String status = String.valueOf(PolicyStatus.SendOutPolicy.getValue());
+                //累计投保生效金额
+                List<InsuranceApplication> insuranceApplicationList = insuranceApplicationService.findByCompanyId(company.getId(),status);
+
+                for (InsuranceApplication insuranceApplication : insuranceApplicationList) {
+                    BigDecimal insuranceFee = insuranceApplication.getInsuranceFee();
+                    total = total.add(insuranceFee);
+                }
+
+                //本月投保生效金额
+                List<InsuranceApplication> insuranceApplicationList2 = insuranceApplicationService.findByCompanyIdAndCreatTime(company.getId(), status,startTime, endTime);
+
+                for (InsuranceApplication insuranceApplication : insuranceApplicationList2) {
+                    BigDecimal insuranceFee = insuranceApplication.getInsuranceFee();
+                    month = month.add(insuranceFee);
+                }
+            }
+
+
+            //本月客户数
+            List<Company> monthCompanyList = companyService.findByPromoterAndCreatTime(promoter, startTime, endTime);
+
+            promoterDto.setCompanyNum(companyList.size());
+            promoterDto.setMonthCompanyNum(monthCompanyList.size());
+            promoterDto.setTotalInsuranceFee(total);
+            promoterDto.setMonthInsuranceFee(month);
+        }
+        catch(Exception ex){
+            logger.error(ex.getMessage(),ex);
+
+            msgResult.setSuccess(false);
+            msgResult.setMsg(ex.getMessage());
+        }
+
+
+        msgResult.setSuccess(true);
+        msgResult.setData(promoterDto);
+
+        return msgResult;
+    }
+
+
 }

+ 2 - 0
picc-common/src/main/java/com/jpsoft/picc/modules/base/dao/CompanyDAO.java

@@ -14,6 +14,8 @@ public interface CompanyDAO {
 	Company get(String id);
 	int delete(String id);
 	List<Company> list();
+	List<Company> findByPromoter(String promoter);
+	List<Company> findByPromoterAndCreatTime(String promoter,String startTime,String endTime);
 	List<Company> search(Map<String, Object> searchParams, List<Sort> sortList);
     Company findByCreateBy(String userId);
 }

+ 2 - 0
picc-common/src/main/java/com/jpsoft/picc/modules/base/service/CompanyService.java

@@ -13,6 +13,8 @@ public interface CompanyService {
 	int update(Company model);
 	int delete(String id);
 	List<Company> list();
+	List<Company> findByPromoter(String promoter);
+	List<Company> findByPromoterAndCreatTime(String promoter,String startTime,String endTime);
 	Page<Company> pageSearch(Map<String, Object> searchParams,int pageNum,int pageSize,List<Sort> sortList);
     Company findByCreateBy(String userId);
 }

+ 10 - 0
picc-common/src/main/java/com/jpsoft/picc/modules/base/service/impl/CompanyServiceImpl.java

@@ -59,6 +59,16 @@ public class CompanyServiceImpl implements CompanyService {
 		return companyDAO.list();
 	}
 
+	@Override
+	public List<Company> findByPromoter(String promoter){
+		return companyDAO.findByPromoter(promoter);
+	}
+
+	@Override
+	public List<Company> findByPromoterAndCreatTime(String promoter,String startTime,String endTime){
+		return companyDAO.findByPromoterAndCreatTime(promoter,startTime,endTime);
+	}
+
 	@Override
 	public Page<Company> pageSearch(Map<String, Object> searchParams, int pageNumber, int pageSize,List<Sort> sortList) {
         Page<Company> page = PageHelper.startPage(pageNumber,pageSize).doSelectPage(()->{

+ 4 - 0
picc-common/src/main/java/com/jpsoft/picc/modules/business/dao/InsuranceApplicationDAO.java

@@ -21,5 +21,9 @@ public interface InsuranceApplicationDAO {
 
     List<InsuranceApplication> list();
 
+    List<InsuranceApplication> findByCompanyId(String companyId,String status);
+
+    List<InsuranceApplication> findByCompanyIdAndCreatTime(String companyId,String status,String startTime,String endTime);
+
     List<InsuranceApplication> search(Map<String, Object> searchParams, List<Sort> sortList);
 }

+ 4 - 0
picc-common/src/main/java/com/jpsoft/picc/modules/business/service/InsuranceApplicationService.java

@@ -21,4 +21,8 @@ public interface InsuranceApplicationService {
     List<InsuranceApplication> list();
 
     Page<InsuranceApplication> pageSearch(Map<String, Object> searchParams, int pageNum, int pageSize, List<Sort> sortList);
+
+    List<InsuranceApplication> findByCompanyId(String companyId,String status);
+
+    List<InsuranceApplication> findByCompanyIdAndCreatTime(String companyId,String status,String startTime,String endTime);
 }

+ 10 - 0
picc-common/src/main/java/com/jpsoft/picc/modules/business/service/impl/InsuranceApplicationServiceImpl.java

@@ -59,6 +59,16 @@ public class InsuranceApplicationServiceImpl implements InsuranceApplicationServ
         return insuranceApplicationDAO.list();
     }
 
+    @Override
+    public List<InsuranceApplication> findByCompanyId(String companyId,String status){
+        return insuranceApplicationDAO.findByCompanyId(companyId,status);
+    }
+
+    @Override
+    public List<InsuranceApplication> findByCompanyIdAndCreatTime(String companyId,String status,String startTime,String endTime){
+        return insuranceApplicationDAO.findByCompanyIdAndCreatTime(companyId,status,startTime,endTime);
+    }
+
     @Override
     public Page<InsuranceApplication> pageSearch(Map<String, Object> searchParams, int pageNumber, int pageSize, List<Sort> sortList) {
         Page<InsuranceApplication> page = PageHelper.startPage(pageNumber, pageSize).doSelectPage(() -> {

+ 10 - 0
picc-common/src/main/resources/mapper/base/Company.xml

@@ -195,4 +195,14 @@ id_,name_,legal_name,legal_card,legal_card_file,uscc_code,uscc_files,type_,busin
     <select id="findByCreateBy" resultMap="CompanyMap">
 		select * from base_company where create_by=#{0} and del_flag=0 limit 1
 	</select>
+	<select id="findByPromoter" resultMap="CompanyMap">
+		select * from base_company where promoter_=#{0} and del_flag=0
+	</select>
+
+	<select id="findByPromoterAndCreatTime" resultMap="CompanyMap">
+		<![CDATA[
+		select * from base_company where promoter_=#{promoter} and del_flag=0 and create_time >= str_to_date( #{startTime},'%Y-%m-%d')
+			AND create_time < str_to_date( #{endTime},'%Y-%m-%d')
+		]]>
+	</select>
 </mapper>

+ 11 - 0
picc-common/src/main/resources/mapper/business/InsuranceApplication.xml

@@ -171,6 +171,17 @@
 	<select id="list" resultMap="InsuranceApplicationMap">
 		select * from business_insurance_application where del_flag = false
 	</select>
+    <select id="findByCompanyId" resultMap="InsuranceApplicationMap">
+        select * from business_insurance_application where company_id=#{companyId} and status_=#{status} and del_flag = false
+    </select>
+    <select id="findByCompanyIdAndCreatTime" resultMap="InsuranceApplicationMap">
+        <![CDATA[
+            select * from business_insurance_application where company_id=#{companyId} and status_=#{status} and del_flag = false and start_time >= str_to_date( #{startTime},'%Y-%m-%d')
+			AND start_time < str_to_date( #{endTime},'%Y-%m-%d')
+        ]]>
+    </select>
+
+
 	<select id="search" parameterType="hashmap" resultMap="InsuranceApplicationMap">
 		<![CDATA[
 		    select * from (