Преглед изворни кода

1.控制台业务数据导出

wuhp пре 1 година
родитељ
комит
c4c0290cf3

+ 61 - 0
src/main/java/com/ydtech/modules/admin/controller/taskStatistics/TaskStatisticsController.java

@@ -333,6 +333,26 @@ public class TaskStatisticsController {
         }
         }
     }
     }
 
 
+    /**
+     * @description:   控制台 - 业务数据 -保险公司导出
+     * @author: whp
+     * @date: 2024/12/13
+     **/
+    @PostMapping("/getBusinessDataExcel")
+    @ApiOperation(value = "任务统计-保险公司导出")
+    public HttpResult getBusinessDataExcel(@RequestBody TaskStatisticsVo taskStatisticsVo, HttpServletRequest httpServerRequest) {
+        KztGetDeptUtils kztGetDeptUtils = new KztGetDeptUtils();
+        KztGetDeptUtilsDto kztGetDeptUtilsDto = kztGetDeptUtils.KztGetDeptIds(httpServerRequest.getRequestURL().toString());
+        if(ObjectUtils.isNotEmpty(kztGetDeptUtilsDto)){
+            if("1".equals(kztGetDeptUtilsDto.getType())){
+                taskStatisticsVo.setDeptIds(kztGetDeptUtilsDto.getIds());
+            } else if ("2".equals(kztGetDeptUtilsDto.getType())) {
+                taskStatisticsVo.setUserIds(kztGetDeptUtilsDto.getIds());
+            }
+        }
+        return this.taskStatisticsService.getBusinessDataExcel(taskStatisticsVo);
+    }
+
     /**
     /**
      * @description:   控制台-业务数据-统计
      * @description:   控制台-业务数据-统计
      * @author: whp
      * @author: whp
@@ -410,6 +430,47 @@ public class TaskStatisticsController {
         }
         }
     }
     }
 
 
+    /**
+     * @description:   控制台 - 业务数据 -代理人导出
+     * @author: whp
+     * @date: 2024/12/13
+     **/
+    @PostMapping("/getBusinessAgentExcel")
+    @ApiOperation(value = "任务统计-代理人导出")
+    public HttpResult getBusinessAgentExcel(@RequestBody TaskStatisticsVo taskStatisticsVo, HttpServletRequest httpServerRequest) {
+        KztGetDeptUtils kztGetDeptUtils = new KztGetDeptUtils();
+        KztGetDeptUtilsDto kztGetDeptUtilsDto = kztGetDeptUtils.KztGetDeptIds(httpServerRequest.getRequestURL().toString());
+        if(ObjectUtils.isNotEmpty(kztGetDeptUtilsDto)){
+            if("1".equals(kztGetDeptUtilsDto.getType())){
+                taskStatisticsVo.setDeptIds(kztGetDeptUtilsDto.getIds());
+            } else if ("2".equals(kztGetDeptUtilsDto.getType())) {
+                taskStatisticsVo.setUserIds(kztGetDeptUtilsDto.getIds());
+            }
+        }
+        return this.taskStatisticsService.getBusinessAgentExcel(taskStatisticsVo);
+    }
+
+
+    /**
+     * @description:   控制台 - 业务数据 -渠道导出
+     * @author: whp
+     * @date: 2024/12/13
+     **/
+    @PostMapping("/getChannelExcel")
+    @ApiOperation(value = "任务统计-渠道导出")
+    public HttpResult getChannelExcel(@RequestBody TaskStatisticsVo taskStatisticsVo, HttpServletRequest httpServerRequest) {
+        KztGetDeptUtils kztGetDeptUtils = new KztGetDeptUtils();
+        KztGetDeptUtilsDto kztGetDeptUtilsDto = kztGetDeptUtils.KztGetDeptIds(httpServerRequest.getRequestURL().toString());
+        if(ObjectUtils.isNotEmpty(kztGetDeptUtilsDto)){
+            if("1".equals(kztGetDeptUtilsDto.getType())){
+                taskStatisticsVo.setDeptIds(kztGetDeptUtilsDto.getIds());
+            } else if ("2".equals(kztGetDeptUtilsDto.getType())) {
+                taskStatisticsVo.setUserIds(kztGetDeptUtilsDto.getIds());
+            }
+        }
+        return this.taskStatisticsService.getChannelExcel(taskStatisticsVo);
+    }
+
 
 
 
 
     /**
     /**

+ 2 - 0
src/main/java/com/ydtech/modules/admin/dao/TaskStatisticsMapper.java

@@ -55,4 +55,6 @@ public interface TaskStatisticsMapper extends BaseMapper<TaskStatisticsDto> {
      **/
      **/
     BusinessOrderData getBusinessOrderDataTotal(@Param("vo") TaskStatisticsVo taskStatisticsVo);
     BusinessOrderData getBusinessOrderDataTotal(@Param("vo") TaskStatisticsVo taskStatisticsVo);
 
 
+    List<BusinessAgentData> getBusinessAgentDataExcel(@Param("vo") TaskStatisticsVo taskStatisticsVo);
+
 }
 }

+ 42 - 0
src/main/java/com/ydtech/modules/admin/model/dto/BusinessAgentExcel.java

@@ -0,0 +1,42 @@
+package com.ydtech.modules.admin.model.dto;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class BusinessAgentExcel {
+    @ExcelProperty(value = "姓名", index = 0)
+    private String userName;
+
+    @ExcelProperty(value = "工号", index = 1)
+    private String userId;
+
+    @ExcelProperty(value = "归属机构", index = 2)
+    private String deptName;
+
+    @ExcelProperty(value = "管理人", index = 3)
+    private String leaderName;
+
+    @ExcelProperty(value = "机构来源", index = 4)
+    private String managementSource;
+
+    @ExcelProperty(value = "签单保费", index = 5)
+    private BigDecimal sumPremium;
+
+
+    @ExcelProperty(value = "交强险保费", index = 6)
+    private BigDecimal jqpremium;
+
+
+    @ExcelProperty(value = "车船税", index = 7)
+    private BigDecimal taxamount;
+
+    @ExcelProperty(value = "商业险保费", index = 8)
+    private BigDecimal sypremium;
+
+
+    @ExcelProperty(value = "非车险保费", index = 9)
+    private BigDecimal jypremium;
+}

+ 39 - 0
src/main/java/com/ydtech/modules/admin/model/dto/BusinessCompanyExcel.java

@@ -0,0 +1,39 @@
+package com.ydtech.modules.admin.model.dto;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class BusinessCompanyExcel {
+    @ExcelProperty(value = "保险公司", index = 0)
+    private String insuranceCompanyName;
+
+    @ExcelProperty(value = "协议类型", index = 1)
+    private String agreementType;
+
+    @ExcelProperty(value = "合作公司", index = 2)
+    private String partnerCompaniesName;
+
+    @ExcelProperty(value = "对接人", index = 3)
+    private String dockingPerson;
+
+    @ExcelProperty(value = "对接人联系方式", index = 4)
+    private String dockingPhone;
+
+    @ExcelProperty(value = "总保费", index = 5)
+    private String totalPremium;
+
+    @ExcelProperty(value = "出单笔数", index = 6)
+    private BigDecimal qutationInsureCount;
+
+    @ExcelProperty(value = "单均保费", index = 7)
+    private BigDecimal averagePremium;
+
+    @ExcelProperty(value = "人员数量", index = 8)
+    private BigDecimal userNumber;
+
+    @ExcelProperty(value = "人均产能", index = 9)
+    private BigDecimal perCapitaAmount;
+}

+ 60 - 0
src/main/java/com/ydtech/modules/admin/model/dto/GetChannelExcel.java

@@ -0,0 +1,60 @@
+package com.ydtech.modules.admin.model.dto;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class GetChannelExcel {
+
+    @ExcelProperty(value = "姓名", index = 0)
+    private String userName;
+
+    @ExcelProperty(value = "工号", index = 1)
+    private String userId;
+
+    @ExcelProperty(value = "归属机构", index = 2)
+    private String deptName;
+
+    @ExcelProperty(value = "管理人", index = 3)
+    private String leaderName;
+
+    @ExcelProperty(value = "机构来源", index = 4)
+    private String managementSource;
+
+    @ExcelProperty(value = "签单保费", index = 5)
+    private BigDecimal sumPremium;
+
+
+    @ExcelProperty(value = "交强险保费", index = 6)
+    private BigDecimal jqpremium;
+
+
+    @ExcelProperty(value = "车船税", index = 7)
+    private BigDecimal taxamount;
+
+    @ExcelProperty(value = "商业险保费", index = 8)
+    private BigDecimal sypremium;
+
+
+    @ExcelProperty(value = "非车险保费", index = 9)
+    private BigDecimal jypremium;
+
+
+    @ExcelProperty(value = "单交订单数", index = 10)
+    private String riskCodeDj;
+
+    @ExcelProperty(value = "单商订单数", index = 11)
+    private String riskCodeDs;
+
+
+    @ExcelProperty(value = "单三订单数", index = 12)
+    private String riskCodeDsan;
+
+    @ExcelProperty(value = "交三订单数", index = 13)
+    private String riskCodeJs;
+
+    @ExcelProperty(value = "交商订单数", index = 14)
+    private String riskCodeJshang;
+}

+ 20 - 0
src/main/java/com/ydtech/modules/admin/service/TaskStatisticsService.java

@@ -168,4 +168,24 @@ public interface TaskStatisticsService {
      * @return
      * @return
      */
      */
     BusinessAgentData getBusinessElectricDataTotal(TaskStatisticsVo taskStatisticsVo);
     BusinessAgentData getBusinessElectricDataTotal(TaskStatisticsVo taskStatisticsVo);
+
+    /**
+     * @description:   控制台 - 业务数据 -保险公司导出
+     * @author: whp
+     * @date: 2024/12/13
+     **/
+    HttpResult getBusinessDataExcel(TaskStatisticsVo taskStatisticsVo);
+    /**
+     * @description:   控制台 - 业务数据 -代理人导出
+     * @author: whp
+     * @date: 2024/12/13
+     **/
+    HttpResult getBusinessAgentExcel(TaskStatisticsVo taskStatisticsVo);
+    /**
+     * @description:   控制台 - 业务数据 -渠道导出
+     * @author: whp
+     * @date: 2024/12/13
+     **/
+    HttpResult getChannelExcel(TaskStatisticsVo taskStatisticsVo);
+
 }
 }

+ 152 - 0
src/main/java/com/ydtech/modules/admin/service/impl/TaskStatisticsServiceImpl.java

@@ -1,5 +1,6 @@
 package com.ydtech.modules.admin.service.impl;
 package com.ydtech.modules.admin.service.impl;
 
 
+import cn.hutool.core.bean.BeanUtil;
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -19,6 +20,7 @@ import com.ydtech.modules.admin.model.SysUser;
 import com.ydtech.modules.admin.model.dto.*;
 import com.ydtech.modules.admin.model.dto.*;
 import com.ydtech.modules.admin.model.vo.BusinessAgentData;
 import com.ydtech.modules.admin.model.vo.BusinessAgentData;
 import com.ydtech.modules.admin.model.vo.BusinessOrderData;
 import com.ydtech.modules.admin.model.vo.BusinessOrderData;
+import com.ydtech.modules.admin.model.vo.SysUserPartner;
 import com.ydtech.modules.admin.model.vo.TaskStatisticsVo;
 import com.ydtech.modules.admin.model.vo.TaskStatisticsVo;
 import com.ydtech.modules.admin.service.SysDeptService;
 import com.ydtech.modules.admin.service.SysDeptService;
 import com.ydtech.modules.admin.service.TaskStatisticsService;
 import com.ydtech.modules.admin.service.TaskStatisticsService;
@@ -30,9 +32,11 @@ import com.ydtech.modules.order.dao.InsAreaCompanyMapper;
 import com.ydtech.modules.order.dao.InsOrdersMapper;
 import com.ydtech.modules.order.dao.InsOrdersMapper;
 import org.apache.commons.lang3.ObjectUtils;
 import org.apache.commons.lang3.ObjectUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
 
 
 import java.io.File;
 import java.io.File;
 import java.io.IOException;
 import java.io.IOException;
@@ -1220,6 +1224,154 @@ public class TaskStatisticsServiceImpl  implements TaskStatisticsService {
         return result;
         return result;
     }
     }
 
 
+    @Override
+    public HttpResult getBusinessDataExcel(TaskStatisticsVo taskStatisticsVo) {
+        if (StringUtils.isNotEmpty(taskStatisticsVo.getDays())) {
+            if ("7".equals(taskStatisticsVo.getDays())) {
+                taskStatisticsVo.setDateType("2");
+            } else if ("30".equals(taskStatisticsVo.getDays())) {
+                taskStatisticsVo.setDateType("3");
+            } else if ("1".equals(taskStatisticsVo.getDays())) {
+                taskStatisticsVo.setDateType("1");
+            }
+        }
+
+        if (com.ydtech.utils.StringUtils.isNotEmpty(taskStatisticsVo.getParterProvinceId())) {
+            String provinceId = this.removeTrailingZeros(taskStatisticsVo.getParterProvinceId());
+            taskStatisticsVo.setParterProvinceId(provinceId);
+        }
+
+        if (com.ydtech.utils.StringUtils.isNotEmpty(taskStatisticsVo.getParterCityId())) {
+            String cityId = this.removeTrailingZeros(taskStatisticsVo.getParterCityId());
+            taskStatisticsVo.setParterCityId(cityId);
+        }
+
+        if (com.ydtech.utils.StringUtils.isNotEmpty(taskStatisticsVo.getParterCountyId())) {
+            String countyId = this.removeTrailingZeros(taskStatisticsVo.getParterCountyId());
+            taskStatisticsVo.setParterCountyId(countyId);
+        }
+
+        HashMap<String, String> dateMapByType = getDateMapByTypeNew(taskStatisticsVo.getDateType(), taskStatisticsVo.getCreatetimeStart(), taskStatisticsVo.getCreatetimeEnd());
+        taskStatisticsVo.setCreatetimeStart(dateMapByType.get("startDate"));
+        taskStatisticsVo.setCreatetimeEnd(dateMapByType.get("endDate"));
+
+        List<TaskStatisticsDto> list = this.insAreaCompanyMapper.getBusinessDataList(taskStatisticsVo);
+        List<BusinessCompanyExcel> sysUserPartners = BeanUtil.copyToList(list, BusinessCompanyExcel.class);
+        String uploadPath = this.uploadPath + "/excel/";
+        Path path = Paths.get(uploadPath);
+        if (!Files.exists(path)) {
+            try {
+                Files.createDirectories(path);
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+        }
+        String fileName = EasyExcelUtils.downExcel(uploadPath, "业务数据保险公司导出", BusinessCompanyExcel.class, sysUserPartners);
+        return HttpResult.ok("", uploadUrl + "excel/" + fileName);
+    }
+
+    /**
+     * @description:   控制台 - 业务数据 - 代理人导出
+     * @author: whp
+     * @date: 2024/12/13
+     **/
+    @Override
+    public HttpResult getBusinessAgentExcel(TaskStatisticsVo taskStatisticsVo) {
+        if(StringUtils.isNotEmpty(taskStatisticsVo.getTreeType()) ){
+            if((StringUtils.isNotEmpty(taskStatisticsVo.getTreeUserId()) && "2".equals(taskStatisticsVo.getTreeType()))){
+                List<String> userIds=this.getNextLevel(taskStatisticsVo.getTreeUserId());
+                if(!userIds.isEmpty() && userIds.get(0)!=null){
+                    taskStatisticsVo.setUserIds(userIds);
+                }else {
+                    taskStatisticsVo.setUserId(taskStatisticsVo.getTreeUserId());
+                }
+            }else if (StringUtils.isNotEmpty(taskStatisticsVo.getTreeUserId()) && "1".equals(taskStatisticsVo.getTreeType())){
+                taskStatisticsVo.setDeptId(taskStatisticsVo.getTreeUserId());
+                taskStatisticsVo.setTreeUserId(null);
+                taskStatisticsVo.setUserIds(new ArrayList<>());
+            }
+        }
+
+        HashMap<String, String> dateMapByType = getDateMapByTypeNew(taskStatisticsVo.getDateType(), taskStatisticsVo.getCreatetimeStart(), taskStatisticsVo.getCreatetimeEnd());
+        taskStatisticsVo.setCreatetimeStart(dateMapByType.get("startDate"));
+        taskStatisticsVo.setCreatetimeEnd(dateMapByType.get("endDate"));
+        getDateByType(taskStatisticsVo.getDateType(), taskStatisticsVo);
+        List<BusinessAgentData> list = this.taskStatisticsMapper.getBusinessAgentDataExcel(taskStatisticsVo);
+        for (BusinessAgentData record : list) {
+            this.appendName(record);
+            if (record.getDistributionAmountRate() == null) {
+                record.setDistributionAmountRate(new BigDecimal("0.0000"));
+            }
+            if(record.getManagementSource().equals("2")){
+                record.setManagementSource("代理人");
+            }
+        }
+        List<BusinessAgentExcel> sysUserPartners = BeanUtil.copyToList(list, BusinessAgentExcel.class);
+
+        String uploadPath = this.uploadPath + "/excel/";
+        Path path = Paths.get(uploadPath);
+        if (!Files.exists(path)) {
+            try {
+                Files.createDirectories(path);
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+        }
+        String fileName = EasyExcelUtils.downExcel(uploadPath, "业务数据代理人导出", BusinessAgentExcel.class, sysUserPartners);
+        return HttpResult.ok("", uploadUrl + "excel/" + fileName);
+    }
+    /**
+     * @description:   控制台 - 业务数据 -渠道导出
+     * @author: whp
+     * @date: 2024/12/13
+     **/
+    @Override
+    public HttpResult getChannelExcel(TaskStatisticsVo taskStatisticsVo) {
+        if(StringUtils.isNotEmpty(taskStatisticsVo.getTreeType()) ){
+            if((StringUtils.isNotEmpty(taskStatisticsVo.getTreeUserId()) && "2".equals(taskStatisticsVo.getTreeType()))){
+                List<String> userIds=this.getNextLevel(taskStatisticsVo.getTreeUserId());
+                if(!userIds.isEmpty() && userIds.get(0)!=null){
+                    taskStatisticsVo.setUserIds(userIds);
+                }else {
+                    taskStatisticsVo.setUserId(taskStatisticsVo.getTreeUserId());
+                }
+            }else if (StringUtils.isNotEmpty(taskStatisticsVo.getTreeUserId()) && "1".equals(taskStatisticsVo.getTreeType())){
+                taskStatisticsVo.setDeptId(taskStatisticsVo.getTreeUserId());
+                taskStatisticsVo.setTreeUserId(null);
+                taskStatisticsVo.setUserIds(new ArrayList<>());
+            }
+        }
+
+        HashMap<String, String> dateMapByType = getDateMapByTypeNew(taskStatisticsVo.getDateType(), taskStatisticsVo.getCreatetimeStart(), taskStatisticsVo.getCreatetimeEnd());
+        taskStatisticsVo.setCreatetimeStart(dateMapByType.get("startDate"));
+        taskStatisticsVo.setCreatetimeEnd(dateMapByType.get("endDate"));
+        getDateByType(taskStatisticsVo.getDateType(), taskStatisticsVo);
+        List<BusinessAgentData> list = this.taskStatisticsMapper.getBusinessAgentDataExcel(taskStatisticsVo);
+        for (BusinessAgentData record : list) {
+            this.appendName(record);
+            if (record.getDistributionAmountRate() == null) {
+                record.setDistributionAmountRate(new BigDecimal("0.0000"));
+            }
+            if(record.getManagementSource().equals("1")){
+                record.setManagementSource("渠道");
+
+            }
+        }
+        List<GetChannelExcel> sysUserPartners = BeanUtil.copyToList(list, GetChannelExcel.class);
+
+        String uploadPath = this.uploadPath + "/excel/";
+        Path path = Paths.get(uploadPath);
+        if (!Files.exists(path)) {
+            try {
+                Files.createDirectories(path);
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+        }
+        String fileName = EasyExcelUtils.downExcel(uploadPath, "业务数据渠道导出", GetChannelExcel.class, sysUserPartners);
+        return HttpResult.ok("", uploadUrl + "excel/" + fileName);
+    }
+
     /**
     /**
      *  @version
      *  @version
      *  @author: hh
      *  @author: hh

+ 9 - 0
src/main/java/com/ydtech/modules/order/dao/InsAreaCompanyMapper.java

@@ -420,6 +420,15 @@ public interface InsAreaCompanyMapper extends BaseMapper<InsAreaCompany> {
      * @return  代课录单数
      * @return  代课录单数
      */
      */
     HashMap<String,Object> getSumEntryStatus(@Param("taskStatisticsVo") TaskStatisticsVo taskStatisticsVo);
     HashMap<String,Object> getSumEntryStatus(@Param("taskStatisticsVo") TaskStatisticsVo taskStatisticsVo);
+
+    /**
+     *
+     * @param taskStatisticsVo
+     * @return  业务 数据保险公司
+     */
+    List<TaskStatisticsDto> getBusinessDataList(@Param("vo") TaskStatisticsVo taskStatisticsVo);
+
+
 }
 }
 
 
 
 

+ 109 - 1
src/main/resources/mapper/modules/admin/TaskStatisticsMapper.xml

@@ -111,7 +111,6 @@
             </if>
             </if>
         </where>
         </where>
         order by  a.sumpremium  desc ,su.id
         order by  a.sumpremium  desc ,su.id
-
     </select>
     </select>
 
 
     <select id="getBusinessAgentDataTotal" resultType="java.lang.Long">
     <select id="getBusinessAgentDataTotal" resultType="java.lang.Long">
@@ -508,4 +507,113 @@
                 io.orderno) a
                 io.orderno) a
     </select>
     </select>
 
 
+    <select id="getBusinessAgentDataExcel"  resultType="com.ydtech.modules.admin.model.vo.BusinessAgentData">
+        select
+        su.id as "userId",
+        su.name as "userName",
+        sd.id as "deptId",
+        su.leader_name as "leaderName",
+        IFNULL(a.sumpremium,0) as "sumpremium",
+        IFNULL(a.jqpremium,0) as "jqpremium",
+        IFNULL(a.sypremium,0) as "sypremium",
+        IFNULL(a.taxamount,0) as "taxamount",
+        IFNULL(a.jypremium,0) as "jypremium",
+        IFNULL(a.riskCodeJs,0) as "riskCodeJs",
+        IFNULL(a.riskCodeDj,0) as "riskCodeDj" ,
+        IFNULL(a.riskCodeJshang,0) as "riskCodeJshang",
+        IFNULL(a.riskCodeDs,0) as "riskCodeDs",
+        IFNULL(a.riskCodeDsan,0) as "riskCodeDsan",
+        sd.management_source as "managementSource",
+        IFNULL(IFNULL(a.entranceAllFee,0) -IFNULL(a.exportAllFee,0),0)  as  "distributionAmount",
+        (IFNULL(IFNULL(a.entranceAllFee,0) -IFNULL(a.exportAllFee,0),0)) / a.sumpremium as "distributionAmountRate"
+        from sys_user su
+        left join sys_dept sd on sd.id =su.dept_id
+        LEFT JOIN sys_user_role sur ON sur.user_id = su.id
+        left join (
+        select
+        io.userid as "userId",
+        sum(IFNULL(jqpremium, 0) + IFNULL(sypremium, 0)+ IFNULL(jypremium, 0)) as "sumpremium",
+        IFNULL(sum(jqpremium),0) as "jqpremium",
+        IFNULL(sum(sypremium),0) as "sypremium",
+        IFNULL(sum(taxamount),0) as "taxamount",
+        IFNULL(sum(jypremium),0) as "jypremium",
+        COUNT( CASE WHEN iac.product = '交三'  THEN 1 END ) AS "riskCodeJs",
+        COUNT( CASE WHEN iac.product = '单交'  THEN 1 END ) AS "riskCodeDj",
+        COUNT( CASE WHEN iac.product = '交商'  THEN 1 END ) AS "riskCodeJshang",
+        COUNT( CASE WHEN iac.product = '单商'  THEN 1 END ) AS "riskCodeDs",
+        COUNT( CASE WHEN iac.product = '单三'  THEN 1 END ) AS "riskCodeDsan",
+        ROUND(sum(IFNULL(ifon.jq_costs_premiums,0) + IFNULL(ifon.sy_costs_premiums,0) + IFNULL
+        (ifon.no_costs_premiums,0)),2) as "entranceAllFee",
+        ROUND(sum(IFNULL(jq_export_other_costs_premiums,0) + IFNULL(jq_export_supervise_costs_premiums,0)
+        +IFNULL(sy_export_other_costs_premiums,0) +IFNULL(sy_export_supervise_costs_premiums,0)
+        +IFNULL(no_export_other_costs_premiums,0)+IFNULL(no_export_supervise_costs_premiums,0) ),2) as "exportAllFee"
+        from ins_area_company iac
+        left join ins_orders io on io.orderno =iac.orderno
+        left join  sys_user  su  on su.id =io.userid
+        LEFT JOIN ins_fee_order_new ifon ON iac.id = ifon.ins_order_no
+        <where>
+            iac.orderstatus = '3'
+            <if test="vo.signingTimeStart != null and vo.signingTimeStart!='' and vo.signingTimeEnd != null and vo.signingTimeEnd != ''">
+                AND DATE_FORMAT(iac.signing_time, '%Y-%m-%d') BETWEEN DATE_FORMAT(#{vo.signingTimeStart}, '%Y-%m-%d') AND DATE_FORMAT(#{vo.signingTimeEnd}, '%Y-%m-%d')
+            </if>
+            <if test="vo.enterTimeStart != null and vo.enterTimeStart!='' and vo.enterTimeEnd != null and vo.enterTimeEnd != ''">
+                AND DATE_FORMAT(iac.createtime, '%Y-%m-%d') BETWEEN DATE_FORMAT(#{vo.enterTimeStart}, '%Y-%m-%d') AND DATE_FORMAT(#{vo.enterTimeEnd}, '%Y-%m-%d')
+            </if>
+
+            <if test="vo.userIds  !=null  and vo.userIds!=''  and vo.userIds.size()>0">
+                and su.leader_id in
+                <foreach collection="vo.userIds" item="item" open="(" separator="," close=")">
+                    #{item}
+                </foreach>
+            </if>
+
+        </where>
+        group by io.userid
+        ) a  on  a.userId  =su.id
+        <where>
+            1=1
+            <if test="vo.userId !=null  and vo.userId!=''">
+                and su.id=#{vo.userId}
+            </if>
+
+            <if test="vo.userName !=null  and vo.userName!=''">
+                and su.name=#{vo.userName}
+            </if>
+
+            <if test="vo.managementSource !=null  and vo.managementSource!=''">
+                and sd.management_source=#{vo.managementSource}
+            </if>
+
+            <if test="vo.userIds  !=null  and vo.userIds!=''  and vo.userIds.size()>0">
+                and su.leader_id in
+                <foreach collection="vo.userIds" item="item" open="(" separator="," close=")">
+                    #{item}
+                </foreach>
+            </if>
+
+            <choose>
+                <when  test='vo.managementSource == "2"'>
+                    and (sur.role_id = 20  or  sur.role_id = 21)
+                </when>
+                <when  test='vo.managementSource == "1"'>
+                    and (sur.role_id = 19  or  sur.role_id = 21)
+                </when>
+                <otherwise>
+                </otherwise>
+            </choose>
+
+            <if test="vo.deptIds != null and vo.deptIds != '' and vo.deptIds.size() > 0">
+                AND sd.id in
+                <foreach collection="vo.deptIds" item="item" open="(" separator="," close=")">
+                    #{item}
+                </foreach>
+            </if>
+
+            <if test="vo.deptId !=null  and vo.deptId!=''">
+                and sd.id like concat('%',#{vo.deptId},'%')
+            </if>
+        </where>
+        order by  a.sumpremium  desc ,su.id
+    </select>
+
 </mapper>
 </mapper>

+ 121 - 0
src/main/resources/mapper/modules/order/InsAreaCompanyMapper.xml

@@ -3631,6 +3631,127 @@
                 </if>
                 </if>
 
 
             </where>
             </where>
+    </select>
 
 
+    <select id="getBusinessDataList" resultType="com.ydtech.modules.admin.model.dto.TaskStatisticsDto">
+        select
+        a.dockingPerson as "dockingPerson",
+        a.dockingPhone as "dockingPhone",
+        a.agreementType as "agreementType",
+        a.logo  as "logo",
+        a.companyId as "companyId",
+        a.insuranceCompanyName as "insuranceCompanyName",
+        a.parterCompanyId as "parterCompanyId",
+        a.partnerCompaniesName as "partnerCompaniesName",
+        sum(a.totalPremium) as  "totalPremium",
+        sum(a.qutationInsureCount) as  "qutationInsureCount",
+        sum(a.totalPremium) / sum(a.qutationInsureCount)  AS "averagePremium",
+        sum(a.totalPremium)  /   sum(a.userNumber)   as "perCapitaAmount",
+        sum(a.userNumber) as "userNumber"
+        from  (
+        select
+        a.companyId as "companyId",
+        a.insuranceCompanyName as "insuranceCompanyName",
+        a.parterCompanyId as "parterCompanyId",
+        a.partnerCompaniesName as "partnerCompaniesName",
+        a.totalPremium as "totalPremium",
+        a.qutationInsureCount as "qutationInsureCount",
+        a.userNumber as "userNumber",
+        c.docking_person as "dockingPerson",
+        c.docking_phone as "dockingPhone",
+        c.agreement_type as "agreementType",
+        b.logo  as "logo"
+        from  (
+        SELECT
+        agree.insurance_company_id AS "companyId",
+        agree.insurance_company AS "insuranceCompanyName",
+        agree.partner_companies_id AS "parterCompanyId",
+        ins.namesimple AS "partnerCompaniesName",
+        agree.id as "agreeId",
+        IFNULL(sum(iac.jqpremium),0) + IFNULL(sum(iac.sypremium),0) +IFNULL(sum(iac.jypremium),0) as "totalPremium",
+        COUNT(0 ) AS "qutationInsureCount",
+        (IFNULL(sum(iac.jqpremium),0) + IFNULL(sum(iac.sypremium),0) +IFNULL(sum(iac.jypremium),0)) / COUNT(0 )  AS "averagePremium",
+        COUNT(DISTINCT io.userId) AS "userNumber",
+        (IFNULL(sum(iac.jqpremium),0) + IFNULL(sum(iac.sypremium),0) +IFNULL(sum(iac.jypremium),0)) / COUNT(DISTINCT io.userId)  as "perCapitaAmount"
+        FROM
+        ins_area_company iac
+        LEFT JOIN ptl_agreement agree ON iac.agreement_id = agree.id
+        LEFT JOIN ins_orders  io  on  io.orderno  = iac.orderno
+        LEFT JOIN sys_user  su  on  io.userid  =su.id
+        LEFT JOIN ins_fee_audit ifa  on ifa.ins_order_no =iac.id
+        LEFT JOIN esm_ins_company ins ON agree.partner_companies_id = ins.id
+        WHERE
+        agree.id IS NOT NULL
+        and  iac.orderstatus = '3'
+        and  ifa.auditstatus != '2'
+        <if test="vo.companyId  != null  and  vo.companyId!='' ">
+            and  agree.insurance_company_id = #{vo.companyId}
+        </if>
+        <if test="vo.parterCompanyId  != null  and  vo.parterCompanyId!='' ">
+            and agree.partner_companies_id = #{vo.parterCompanyId}
+        </if>
+        <if test="vo.createtimeStart  != null  and  vo.createtimeStart!=''  and vo.createtimeEnd  != null  and  vo.createtimeEnd!=''">
+            AND   DATE_FORMAT( iac.signing_time, '%Y-%m-%d')   BETWEEN DATE_FORMAT( #{vo.createtimeStart}, '%Y-%m-%d')  AND DATE_FORMAT( #{vo.createtimeEnd}, '%Y-%m-%d')
+        </if>
+        <if test="vo.provinceId != null and vo.provinceId != '' and  vo.cityId == null and vo.countyId == null  and vo.houseId == null ">
+            and io.deptid like concat('%',#{vo.provinceId},'%')
+        </if>
+        <if test="vo.cityId != null and vo.cityId != '' and vo.countyId ==null and  vo.houseId ==null">
+            and io.deptid like concat('%',#{vo.cityId},'%')
+        </if>
+        <if test="vo.countyId != null and vo.countyId != '' and  vo.houseId  ==null">
+            and io.deptid like concat('%',#{vo.countyId},'%')
+        </if>
+        <if test="vo.houseId != null and vo.houseId != ''">
+            and io.deptid like concat('%',#{vo.houseId},'%')
+        </if>
+
+        <if test="vo.parterProvinceId != null and vo.parterProvinceId != '' and  vo.parterCityId == null and vo.parterCountyId == null ">
+            and agree.partner_companies_id like concat('%',#{vo.parterProvinceId},'%')
+        </if>
+        <if test="vo.parterCityId != null and vo.parterCityId != '' and vo.parterCountyId ==null ">
+            and agree.partner_companies_id like concat('%',#{vo.parterCityId},'%')
+        </if>
+        <if test="vo.parterCountyId != null and vo.parterCountyId != '' ">
+            and agree.partner_companies_id like concat('%',#{vo.parterCountyId},'%')
+        </if>
+
+        <if test="vo.deptIds != null and vo.deptIds != '' and vo.deptIds.size() > 0">
+            AND io.deptid  in
+            <foreach collection="vo.deptIds" item="item" open="(" separator="," close=")">
+                #{item}
+            </foreach>
+        </if>
+
+        <if test="vo.userIds != null and vo.userIds != '' and vo.userIds.size() > 0">
+            AND su.leader_id  in
+            <foreach collection="vo.userIds" item="item" open="(" separator="," close=")">
+                #{item}
+            </foreach>
+        </if>
+        GROUP BY
+        agree.insurance_company_id,
+        agree.insurance_company,
+        agree.partner_companies_id,
+        agree.id
+        <choose>
+            <when test="vo.orderSort != null and vo.orderSort != '' and  vo.userNumberSort == null ">
+                order by
+                sum(sumpremium) ${vo.orderSort == 'asc' ? 'asc' : 'desc'}
+            </when>
+            <when test="vo.userNumberSort != null and vo.userNumberSort != '' and  vo.orderSort == null ">
+                order by
+                COUNT(DISTINCT io.userId) ${vo.userNumberSort == 'asc' ? 'asc' : 'desc'}
+            </when>
+            <when test="vo.userNumberSort != null and vo.userNumberSort != '' and  vo.orderSort != null and vo.orderSort != ''  ">
+                order by
+                COUNT(DISTINCT io.userId) ${vo.userNumberSort == 'asc' ? 'asc' : 'desc'},   sum(sumpremium) ${vo.orderSort == 'asc' ? 'asc' : 'desc'}
+            </when>
+        </choose>
+        )  a
+        left join  esm_ins_company  b on b.id =a.companyId
+        left join ptl_agreement  c on c.id =a.agreeId
+        ) a
+        group by   a.companyId,a.insuranceCompanyName,a.parterCompanyId,a.partnerCompaniesName,a.logo,a.dockingPerson,a.dockingPhone,a.agreementType
     </select>
     </select>
 </mapper>
 </mapper>