Jelajahi Sumber

1.控制台导出
2.业务数据 代理人 渠道

wuhp 2 tahun lalu
induk
melakukan
ed5f1af219

+ 66 - 5
src/main/java/com/ydtech/modules/admin/controller/taskStatistics/TaskStatisticsController.java

@@ -4,13 +4,10 @@ package com.ydtech.modules.admin.controller.taskStatistics;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.ydtech.core.page.HttpResult;
 import com.ydtech.modules.admin.model.dto.TaskStatisticsDto;
-import com.ydtech.modules.admin.model.report.company.CompanyPremiumDataDto;
-import com.ydtech.modules.admin.model.report.company.CompanyPremiumDataQueryDto;
+import com.ydtech.modules.admin.model.vo.BusinessAgentData;
 import com.ydtech.modules.admin.model.vo.TaskStatisticsVo;
 import com.ydtech.modules.admin.service.TaskStatisticsService;
-import com.ydtech.modules.order.entity.BasePageResult;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.*;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -80,6 +77,17 @@ public class TaskStatisticsController {
     }
 
 
+    /**
+     * @description:   任务统计-代理人导出
+     * @author: whp
+     * @date: 2024/9/9
+     **/
+    @PostMapping("/agentExcel")
+    @ApiOperation(value = "任务统计-代理人导出")
+    public HttpResult channelAgentExcel(@RequestBody TaskStatisticsVo taskStatisticsVo) {
+        return this.taskStatisticsService.agentExcel(taskStatisticsVo);
+    }
+
     /**
      * @description:   财务中心-费用校验
      * @author: whp
@@ -111,6 +119,19 @@ public class TaskStatisticsController {
             return HttpResult.error("查询错误"+e.getMessage());
         }
     }
+
+
+    /**
+     * @description:   任务统计-保险公司-导出
+     * @author: whp
+     * @date: 2024/9/9
+     **/
+    @PostMapping("/insuranceCompanyExcel")
+    @ApiOperation(value = "任务统计-保险公司-导出")
+    public HttpResult insuranceCompanyExcel(@RequestBody TaskStatisticsVo taskStatisticsVo) {
+        return this.taskStatisticsService.insuranceCompanyExcel(taskStatisticsVo);
+    }
+
     /**
      * @description:   控制台-业务数据
      * @author: whp
@@ -142,7 +163,47 @@ public class TaskStatisticsController {
             return HttpResult.error("查询错误"+e.getMessage());
         }
     }
+    /**
+     * @description:   任务统计-渠道导出
+     * @author: whp
+     * @date: 2024/8/13
+     **/
+    @PostMapping("/channelExcel")
+    @ApiOperation(value = "任务统计-渠道导出")
+    public HttpResult channelExcel(@RequestBody TaskStatisticsVo taskStatisticsVo) {
+        return this.taskStatisticsService.channelExcel(taskStatisticsVo);
+    }
 
+    /**
+     * @description:   任控制台-业务数据-代理人
+     * @author: whp
+     * @date: 2024/09/09
+     **/
+    @PostMapping("getBusinessAgentData")
+    @ApiOperation(value = "控制台-业务数据-代理人")
+    public HttpResult<IPage<BusinessAgentData>> getBusinessAgentData(@RequestBody TaskStatisticsVo taskStatisticsVo) {
+        try{
+            IPage<BusinessAgentData> result = taskStatisticsService.getBusinessAgentData(taskStatisticsVo);
+            return HttpResult.ok("查询数据成功", result);
+        }catch (Exception e){
+            return HttpResult.error("查询错误"+e.getMessage());
+        }
+    }
 
+    /**
+     * @description:   任控制台-业务数据-代理人-合计
+     * @author: whp
+     * @date: 2024/09/09
+     **/
+    @PostMapping("getBusinessAgentDataTotal")
+    @ApiOperation(value = "控制台-业务数据-代理人-合计")
+    public HttpResult<BusinessAgentData> getBusinessAgentDataTotal(@RequestBody TaskStatisticsVo taskStatisticsVo) {
+        try{
+            BusinessAgentData result = taskStatisticsService.getBusinessAgentDataTotal(taskStatisticsVo);
+            return HttpResult.ok("查询数据成功", result);
+        }catch (Exception e){
+            return HttpResult.error("查询错误"+e.getMessage());
+        }
+    }
 
 }

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

@@ -0,0 +1,23 @@
+package com.ydtech.modules.admin.dao;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ydtech.modules.admin.model.vo.BusinessAgentData;
+import com.ydtech.modules.admin.model.vo.TaskStatisticsVo;
+import org.apache.ibatis.annotations.Mapper;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+
+import com.ydtech.modules.admin.model.dto.TaskStatisticsDto;
+import org.apache.ibatis.annotations.Param;
+
+@Mapper
+public interface TaskStatisticsMapper extends BaseMapper<TaskStatisticsDto> {
+    IPage<BusinessAgentData> getBusinessAgentData(@Param("page") Page page, @Param("vo") TaskStatisticsVo taskStatisticsVo);
+
+    Long getBusinessAgentDataTotal(@Param("vo") TaskStatisticsVo taskStatisticsVo);
+
+    BusinessAgentData getBusinessAgentDataTotalAdd(@Param("vo") TaskStatisticsVo taskStatisticsVo);
+
+    BusinessAgentData getAllsumPremium(@Param("vo") TaskStatisticsVo taskStatisticsVo);
+}

+ 33 - 0
src/main/java/com/ydtech/modules/admin/model/dto/InsuranceCompanyExcel.java

@@ -0,0 +1,33 @@
+package com.ydtech.modules.admin.model.dto;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class InsuranceCompanyExcel {
+    @ExcelProperty(value = "保险公司",index = 0)
+    private String insuranceCompanyName;
+
+    @ExcelProperty(value = "合作公司名称",index = 1)
+    private String partnerCompaniesName;
+
+    @ExcelProperty(value = "报价中",index = 2)
+    private BigDecimal qutationCount;
+
+    @ExcelProperty(value = "待审核",index = 3)
+    private BigDecimal auditOrder;
+
+
+    @ExcelProperty(value = "已核保待缴费",index = 4)
+    private BigDecimal underwritingCountRate;
+
+    @ExcelProperty(value = "已承保",index = 5)
+    private BigDecimal qutationInsureCount;
+
+    @ExcelProperty(value = "核保退回",index = 6)
+    private BigDecimal underwritingReturn;
+
+}

+ 2 - 0
src/main/java/com/ydtech/modules/admin/model/dto/TaskStatisticsDto.java

@@ -1,5 +1,7 @@
 package com.ydtech.modules.admin.model.dto;
 
+import com.alibaba.excel.annotation.ExcelIgnore;
+import com.alibaba.fastjson.JSONObject;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;

+ 55 - 0
src/main/java/com/ydtech/modules/admin/model/dto/TaskStatisticsExcel.java

@@ -0,0 +1,55 @@
+package com.ydtech.modules.admin.model.dto;
+
+import com.alibaba.excel.annotation.ExcelIgnore;
+import com.alibaba.excel.annotation.ExcelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class TaskStatisticsExcel {
+    @ExcelProperty(value = "二级机构",index = 0)
+    private String provinceName;
+
+    @ExcelProperty(value = "三级机构",index = 1)
+    private String cityName;
+
+    @ExcelProperty(value = "四级机构",index = 2)
+    private String districtName;
+
+    @ExcelProperty(value = "归属机构",index = 3)
+    private String deptName;
+
+    @ExcelProperty(value = "业务员名称",index =4)
+    private String userName;
+
+    @ExcelProperty(value = "业务员工号",index = 5)
+    private String userId;
+
+    @ExcelProperty(value = "报价中",index = 6)
+    private BigDecimal qutationCount;
+
+    @ExcelProperty(value = "待审核",index = 7)
+    private BigDecimal auditOrder;
+
+    @ExcelProperty(value = "已核保待缴费",index = 8)
+    private BigDecimal underwritingCount;
+
+    @ExcelProperty(value = "已承保",index = 9)
+    private BigDecimal qutationInsureCount;
+
+    @ExcelProperty(value = "核保退回",index = 10)
+    private BigDecimal underwritingReturn;
+
+    @ExcelProperty(value = "报价率",index = 11)
+    private BigDecimal quotationRate;
+
+    @ExcelProperty(value = "承保率",index = 12)
+    private BigDecimal closeRate;
+
+    @ExcelProperty(value = "核保通过率",index = 13)
+    private BigDecimal contributionRate;
+
+    @ExcelIgnore
+    private String deptId;
+}

+ 42 - 0
src/main/java/com/ydtech/modules/admin/model/vo/BusinessAgentData.java

@@ -0,0 +1,42 @@
+package com.ydtech.modules.admin.model.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+
+@Data
+@ApiModel("业务数据代理人")
+public class BusinessAgentData {
+
+
+    @ApiModelProperty(value = "姓名")
+    private String userName;
+
+    @ApiModelProperty(value = "工号")
+    private String userId;
+
+    @ApiModelProperty(value = "签单保费")
+    private BigDecimal sumPremium;
+
+    @ApiModelProperty(value = "交强险保费")
+    private BigDecimal jqpremium;
+
+    @ApiModelProperty(value = "车船税")
+    private BigDecimal taxamount;
+
+
+    @ApiModelProperty(value = "商业险保费")
+    private BigDecimal sypremium;
+
+    @ApiModelProperty(value = "非车险保费")
+    private BigDecimal jypremium;
+
+
+    @ApiModelProperty(value = "签单保费占比")
+    private BigDecimal sumPremiumProportion;
+
+
+}

+ 7 - 0
src/main/java/com/ydtech/modules/admin/model/vo/TaskStatisticsVo.java

@@ -73,6 +73,13 @@ public class TaskStatisticsVo implements Serializable {
     private String endDate;
 
 
+    @ApiModelProperty(value = "天数")
+    private String dateType;
+
+    @ApiModelProperty(value = "机构来源(1-渠道、2-个代)")
+    private String managementSource;
+
+
 
 
 

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

@@ -1,7 +1,9 @@
 package com.ydtech.modules.admin.service;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.ydtech.core.page.HttpResult;
 import com.ydtech.modules.admin.model.dto.TaskStatisticsDto;
+import com.ydtech.modules.admin.model.vo.BusinessAgentData;
 import com.ydtech.modules.admin.model.vo.TaskStatisticsVo;
 import com.ydtech.modules.order.entity.BasePageResult;
 
@@ -50,4 +52,36 @@ public interface TaskStatisticsService {
      * @date: 2024/8/13
      **/
     List<TaskStatisticsDto> getDistribution(TaskStatisticsVo taskStatisticsVo);
+    /**
+     * @description:   任务统计-渠道导出
+     * @author: whp
+     * @date: 2024/8/13
+     **/
+    HttpResult channelExcel(TaskStatisticsVo taskStatisticsVo);
+
+    /**
+     * @description:   任控制台-业务数据-代理人
+     * @author: whp
+     * @date: 2024/09/09
+     **/
+    IPage<BusinessAgentData> getBusinessAgentData(TaskStatisticsVo taskStatisticsVo);
+
+    /**
+     * @description:   任控制台-业务数据-代理人-合计
+     * @author: whp
+     * @date: 2024/09/09
+     **/
+    BusinessAgentData getBusinessAgentDataTotal(TaskStatisticsVo taskStatisticsVo);
+    /**
+     * @description:   任务统计-代理人导出
+     * @author: whp
+     * @date: 2024/9/9
+     **/
+    HttpResult agentExcel(TaskStatisticsVo taskStatisticsVo);
+    /**
+     * @description:   任务统计-保险公司-导出
+     * @author: whp
+     * @date: 2024/9/9
+     **/
+    HttpResult insuranceCompanyExcel(TaskStatisticsVo taskStatisticsVo);
 }

+ 202 - 14
src/main/java/com/ydtech/modules/admin/service/impl/TaskStatisticsServiceImpl.java

@@ -6,23 +6,35 @@ import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 import com.ydtech.core.page.HttpResult;
 import com.ydtech.core.page.PageRequest;
+import com.ydtech.exception.SystemException;
 import com.ydtech.modules.admin.dao.SysAmountAuditingMapper;
+import com.ydtech.modules.admin.dao.TaskStatisticsMapper;
 import com.ydtech.modules.admin.model.SysDept;
+import com.ydtech.modules.admin.model.dto.InsuranceCompanyExcel;
 import com.ydtech.modules.admin.model.dto.TaskStatisticsDto;
+import com.ydtech.modules.admin.model.dto.TaskStatisticsExcel;
+import com.ydtech.modules.admin.model.vo.BusinessAgentData;
 import com.ydtech.modules.admin.model.vo.TaskStatisticsVo;
 import com.ydtech.modules.admin.service.SysDeptService;
 import com.ydtech.modules.admin.service.TaskStatisticsService;
+import com.ydtech.modules.admin.utils.SliceUpDateUtil;
 import com.ydtech.modules.base.model.vo.PageVo;
-import com.ydtech.modules.fnc.entity.InsPlyIncome;
+import com.ydtech.modules.inv.utils.EasyExcelUtils;
 import com.ydtech.modules.order.dao.InsAreaCompanyMapper;
 import com.ydtech.modules.order.dao.InsOrdersMapper;
-import com.ydtech.modules.order.entity.BasePageResult;
-import com.ydtech.modules.order.entity.InsAreaCompany;
 import org.apache.commons.lang3.ObjectUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
+import java.io.File;
+import java.io.IOException;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.HashMap;
@@ -44,10 +56,20 @@ public class TaskStatisticsServiceImpl  implements TaskStatisticsService {
     @Autowired
     private InsOrdersMapper insOrdersMapper;
 
+    @Autowired
+    private TaskStatisticsMapper  taskStatisticsMapper;
+
     @Autowired
     private SysDeptService sysDeptService;
 
 
+    @Value("${upload.file.path}")
+    private String uploadPath;
+
+    @Value("${upload.file.url}")
+    private String uploadUrl;
+
+
     /**
      * @description:   渠道任务统计查询
      * @author: whp
@@ -129,17 +151,18 @@ public class TaskStatisticsServiceImpl  implements TaskStatisticsService {
                 if (StringUtils.isNotEmpty(deptId)) {
                     int length = deptId.length();
                     if (length > 0) {
-                        if (length > 10) {
-                            String substring = deptId.substring(0, 6);
-                            String substring1 = deptId.substring(0, 8);
-                            SysDept cityName = sysDeptService.getById(substring);
-                            SysDept districtName = sysDeptService.getById(substring1);
-                            record.setCityName(cityName.getName());
-                            record.setDistrictName(districtName.getName());
-                        } else if (length > 6) {
-                            String substring = deptId.substring(0, 6);
-                            SysDept cityName = sysDeptService.getById(substring);
-                            record.setCityName(cityName.getName());
+                        if (length > 0) {
+                            if (length > 10) {
+                                String substring = deptId.substring(0, 6);
+                                String substring1 = deptId.substring(0, 8);
+                                String province = deptId.substring(0, 4);
+                                SysDept cityName = sysDeptService.getById(substring);
+                                SysDept districtName = sysDeptService.getById(substring1);
+                                SysDept provinceName = sysDeptService.getById(province);
+                                record.setCityName(cityName.getName());
+                                record.setDistrictName(districtName.getName());
+                                record.setProvinceName(provinceName.getName());
+                            }
                         }
                     }
                 }
@@ -210,4 +233,169 @@ public class TaskStatisticsServiceImpl  implements TaskStatisticsService {
         return result;
     }
 
+    /**
+     * @description:   任务统计-渠道导出
+     * @author: whp
+     * @date: 2024/09/09
+     **/
+    @Override
+    public HttpResult channelExcel(TaskStatisticsVo taskStatisticsVo) {
+        taskStatisticsVo.setManagementSource("1");
+        return getHttpResult(taskStatisticsVo);
+    }
+
+    private HttpResult getHttpResult(TaskStatisticsVo taskStatisticsVo) {
+        List<TaskStatisticsExcel> list = this.insAreaCompanyMapper.channelExcel(taskStatisticsVo);
+        if (list != null && !list.isEmpty()) {
+            for (TaskStatisticsExcel record : list) {
+                String deptId = record.getDeptId();
+                if (StringUtils.isNotEmpty(deptId)) {
+                    int length = deptId.length();
+                    if (length > 0) {
+                        if (length > 0) {
+                            if (length > 10) {
+                                String substring = deptId.substring(0, 6);
+                                String substring1 = deptId.substring(0, 8);
+                                String province = deptId.substring(0, 4);
+                                SysDept cityName = sysDeptService.getById(substring);
+                                SysDept districtName = sysDeptService.getById(substring1);
+                                SysDept provinceName = sysDeptService.getById(province);
+                                record.setCityName(cityName.getName());
+                                record.setDistrictName(districtName.getName());
+                                record.setProvinceName(provinceName.getName());
+                            }
+                        }
+                    }
+                }
+
+
+            }
+        }
+        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, taskStatisticsVo.getManagementSource() .equals("1") ? "渠道导出":"代理人导出", TaskStatisticsExcel.class, list);
+        return HttpResult.ok("", uploadUrl + "excel/" + fileName);
+    }
+
+    /**
+     * @description:   任控制台-业务数据-代理人
+     * @author: whp
+     * @date: 2024/09/09
+     **/
+    @Override
+    public IPage<BusinessAgentData> getBusinessAgentData(TaskStatisticsVo taskStatisticsVo) {
+        PageVo<TaskStatisticsVo> pageVo = new PageVo<>();
+        Page page = new Page(taskStatisticsVo.getPageNum(), taskStatisticsVo.getPageSize());
+        page.setSearchCount(false).setOptimizeCountSql(false);//关闭count查询
+        pageVo.setPageNum(taskStatisticsVo.getPageNum());
+        pageVo.setPageSize(taskStatisticsVo.getPageSize());
+
+
+        HashMap<String, String> dateMapByType = getDateMapByType(taskStatisticsVo.getDateType(), taskStatisticsVo.getCreatetimeStart(), taskStatisticsVo.getCreatetimeEnd());
+        taskStatisticsVo.setCreatetimeStart(dateMapByType.get("startDate"));
+        taskStatisticsVo.setCreatetimeEnd(dateMapByType.get("endDate"));
+
+        IPage<BusinessAgentData> list = this.taskStatisticsMapper.getBusinessAgentData(page,taskStatisticsVo);
+        Long  total = this.taskStatisticsMapper.getBusinessAgentDataTotal(taskStatisticsVo);
+        list.setTotal(total);
+        return list;
+    }
+
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/6/19 11:57
+     *  @Description:  通过时间类型判断
+     */
+    private static HashMap<String,String> getDateMapByType(String type, String startDate, String endDate) {
+        HashMap<String,String> map =new HashMap<>();
+        String  startDateStr="";
+        String  endDateStr="";
+        if(StringUtils.isNotBlank(startDate) && StringUtils.isNotBlank(endDate)){
+            startDateStr= StringUtils.isNotBlank(startDate)?startDate+" 00:00:00":null;
+            endDateStr= StringUtils.isNotBlank(endDate)?endDate+" 23:59:59":null;
+        }else{
+            if("1".equals(type)){
+                // 一月内
+                startDateStr= SliceUpDateUtil.getBeforeDay(new Date(),2)+" 00:00:00";
+                endDateStr=SliceUpDateUtil.getBeforeDay(new Date(),0)+" 23:59:59";
+            }else if("2".equals(type)){
+                // 三月内
+                startDateStr=SliceUpDateUtil.getBeforeDay(new Date(),3)+" 00:00:00";
+                endDateStr=SliceUpDateUtil.getBeforeDay(new Date(),0)+" 23:59:59";
+            }else if("3".equals(type)){
+                // 近半年
+                startDateStr=SliceUpDateUtil.getBeforeDay(new Date(),4)+" 00:00:00";
+                endDateStr=SliceUpDateUtil.getBeforeDay(new Date(),0)+" 23:59:59";
+            }
+        }
+        map.put("startDate",startDateStr);
+        map.put("endDate",endDateStr);
+        return map;
+    }
+
+    /**
+     * @description:   任控制台-业务数据-代理人-合计
+     * @author: whp
+     * @date: 2024/09/09
+     **/
+    @Override
+    public BusinessAgentData getBusinessAgentDataTotal(TaskStatisticsVo taskStatisticsVo) {
+        HashMap<String, String> dateMapByType = getDateMapByType(taskStatisticsVo.getDateType(), taskStatisticsVo.getCreatetimeStart(), taskStatisticsVo.getCreatetimeEnd());
+        taskStatisticsVo.setCreatetimeStart(dateMapByType.get("startDate"));
+        taskStatisticsVo.setCreatetimeEnd(dateMapByType.get("endDate"));
+
+        BusinessAgentData result = this.taskStatisticsMapper.getBusinessAgentDataTotalAdd(taskStatisticsVo);
+
+        BusinessAgentData allsumPremium = this.taskStatisticsMapper.getAllsumPremium(taskStatisticsVo);
+
+        if (ObjectUtils.isNotEmpty(allsumPremium) && ObjectUtils.isNotEmpty(result)) {
+            BigDecimal sumPremium = allsumPremium.getSumPremium().compareTo(BigDecimal.ZERO) > 0 ? allsumPremium.getSumPremium() : BigDecimal.ZERO;
+            BigDecimal resultSumPremium = result.getSumPremium().compareTo(BigDecimal.ZERO) > 0 ? result.getSumPremium() : BigDecimal.ZERO;
+            if (!sumPremium.equals(BigDecimal.ZERO)) {
+                result.setSumPremiumProportion(resultSumPremium.divide(sumPremium).setScale(2, RoundingMode.DOWN).multiply(new BigDecimal("100")));
+            }
+        }
+        return result;
+    }
+    /**
+     * @description:   任务统计-代理人导出
+     * @author: whp
+     * @date: 2024/9/9
+     **/
+    @Override
+    public HttpResult agentExcel(TaskStatisticsVo taskStatisticsVo) {
+        taskStatisticsVo.setManagementSource("2");
+        return getHttpResult(taskStatisticsVo);
+    }
+
+
+    /**
+     * @description:   任务统计-保险公司-导出
+     * @author: whp
+     * @date: 2024/9/9
+     **/
+    @Override
+    public HttpResult insuranceCompanyExcel(TaskStatisticsVo taskStatisticsVo) {
+        List<InsuranceCompanyExcel> list = this.insAreaCompanyMapper.insuranceCompanyExcel(taskStatisticsVo);
+        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, "保险公司导出", InsuranceCompanyExcel.class, list);
+        return HttpResult.ok("", uploadUrl + "excel/" + fileName);
+    }
+
 }

+ 13 - 4
src/main/java/com/ydtech/modules/order/dao/InsAreaCompanyMapper.java

@@ -3,10 +3,7 @@ package com.ydtech.modules.order.dao;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.ydtech.modules.admin.model.dto.AllpremiumDto;
-import com.ydtech.modules.admin.model.dto.PremiumReportDto;
-import com.ydtech.modules.admin.model.dto.QxFrontlineAgentDto;
-import com.ydtech.modules.admin.model.dto.TaskStatisticsDto;
+import com.ydtech.modules.admin.model.dto.*;
 import com.ydtech.modules.admin.model.report.company.*;
 import com.ydtech.modules.admin.model.report.opetationData.BusinessDataDto;
 import com.ydtech.modules.admin.model.report.opetationData.BusinessDataQueryDto;
@@ -288,6 +285,18 @@ public interface InsAreaCompanyMapper extends BaseMapper<InsAreaCompany> {
 
 
     List<OrdersDataDto> selectByOrdersDataVo(@Param("vo") OrdersDataVo dtoParams);
+        /**
+     * @description:   任务统计-渠道导出
+     * @author: whp
+     * @date: 2024/09/09
+     **/
+    List<TaskStatisticsExcel> channelExcel(@Param("taskStatisticsVo") TaskStatisticsVo taskStatisticsVo);
+    /**
+     * @description:   任务统计-保险公司-导出
+     * @author: whp
+     * @date: 2024/9/9
+     **/
+    List<InsuranceCompanyExcel> insuranceCompanyExcel(@Param("taskStatisticsVo") TaskStatisticsVo taskStatisticsVo);
 }
 
 

+ 147 - 0
src/main/resources/mapper/modules/admin/TaskStatisticsMapper.xml

@@ -0,0 +1,147 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ydtech.modules.admin.dao.TaskStatisticsMapper">
+
+    <select id="getBusinessAgentData" resultType="com.ydtech.modules.admin.model.vo.BusinessAgentData">
+        select
+        io.userid as "userId",
+        su.name as "userName",
+        IFNULL (sum(sumpremium),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"
+        from ins_area_company iac
+        left join ins_orders io on io.orderno =iac.orderno
+        left join sys_user su on io.userid =su.id
+        left join sys_dept sd on sd.id =su.dept_id
+        <where>
+            iac.orderstatus = '3'
+            <if test="vo.createtimeStart  != null  and  vo.createtimeStart!=''  and vo.createtimeEnd  != null  and  vo.createtimeEnd!=''">
+                AND DATE_FORMAT( iac.createtime, '%Y-%m-%d') BETWEEN DATE_FORMAT( #{vo.createtimeStart}, '%Y-%m-%d') AND
+                DATE_FORMAT( #{vo.createtimeEnd}, '%Y-%m-%d')
+            </if>
+
+            <if test="vo.days !=null  and vo.days !=''  and vo.days != 0 ">
+                and iac.createtime >= DATE_SUB(NOW(), INTERVAL #{vo.days} DAY)
+            </if>
+
+            <if test="vo.userId !=null  and vo.userId!=''">
+                and su.id=#{vo.userId}
+            </if>
+
+            <if test="vo.managementSource !=null  and vo.managementSource!=''">
+                and sd.management_source=#{vo.managementSource}
+            </if>
+
+            <if test="vo.userName !=null  and vo.userName!=''">
+                and su.name=#{vo.userName}
+            </if>
+        </where>
+        group by io.userid,su.name
+    </select>
+
+    <select id="getBusinessAgentDataTotal" resultType="java.lang.Long">
+        select
+        count(0)
+        from ins_area_company iac
+        left join ins_orders io on io.orderno =iac.orderno
+        <where>
+            iac.orderstatus = '3'
+            <if test="vo.createtimeStart  != null  and  vo.createtimeStart!=''  and vo.createtimeEnd  != null  and  vo.createtimeEnd!=''">
+                AND DATE_FORMAT( iac.createtime, '%Y-%m-%d') BETWEEN DATE_FORMAT( #{vo.createtimeStart}, '%Y-%m-%d') AND
+                DATE_FORMAT( #{vo.createtimeEnd}, '%Y-%m-%d')
+            </if>
+
+            <if test="vo.days !=null  and vo.days !=''  and vo.days != 0 ">
+                and iac.createtime >= DATE_SUB(NOW(), INTERVAL #{vo.days} DAY)
+            </if>
+
+            <if test="vo.userName !=null  and vo.userName!=''">
+                and su.name=#{vo.userName}
+            </if>
+
+            <if test="vo.userId !=null  and vo.userId!=''">
+                and su.id=#{vo.userId}
+            </if>
+
+            <if test="vo.managementSource !=null  and vo.managementSource!=''">
+                and sd.management_source=#{vo.managementSource}
+            </if>
+        </where>
+        group by io.userid
+    </select>
+
+    <select id="getBusinessAgentDataTotalAdd" resultType="com.ydtech.modules.admin.model.vo.BusinessAgentData">
+        select
+            IFNULL (sum(sumpremium),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"
+        from ins_area_company iac
+                 left join ins_orders io on io.orderno =iac.orderno
+                 left join sys_user su on io.userid =su.id
+                 left join sys_dept sd on sd.id =su.dept_id
+        <where>
+            iac.orderstatus = '3'
+            <if test="vo.createtimeStart  != null  and  vo.createtimeStart!=''  and vo.createtimeEnd  != null  and  vo.createtimeEnd!=''">
+                AND DATE_FORMAT( iac.createtime, '%Y-%m-%d') BETWEEN DATE_FORMAT( #{vo.createtimeStart}, '%Y-%m-%d') AND
+                DATE_FORMAT( #{vo.createtimeEnd}, '%Y-%m-%d')
+            </if>
+
+            <if test="vo.days !=null  and vo.days !=''  and vo.days != 0 ">
+                and iac.createtime >= DATE_SUB(NOW(), INTERVAL #{vo.days} DAY)
+            </if>
+
+            <if test="vo.userName !=null  and vo.userName!=''">
+                and su.name=#{vo.userName}
+            </if>
+
+            <if test="vo.userId !=null  and vo.userId!=''">
+                and su.id=#{vo.userId}
+            </if>
+
+            <if test="vo.managementSource !=null  and vo.managementSource!=''">
+                and sd.management_source=#{vo.managementSource}
+            </if>
+        </where>
+    </select>
+
+
+    <select id="getAllsumPremium" resultType="com.ydtech.modules.admin.model.vo.BusinessAgentData">
+        select
+            IFNULL (sum(sumpremium),0) as "sumpremium"
+        from ins_area_company iac
+                 left join ins_orders io on io.orderno =iac.orderno
+                 left join sys_user su on io.userid =su.id
+                 left join sys_dept sd on sd.id =su.dept_id
+        <where>
+            iac.orderstatus = '3'
+            <if test="vo.createtimeStart  != null  and  vo.createtimeStart!=''  and vo.createtimeEnd  != null  and  vo.createtimeEnd!=''">
+                AND DATE_FORMAT( iac.createtime, '%Y-%m-%d') BETWEEN DATE_FORMAT( #{vo.createtimeStart}, '%Y-%m-%d') AND
+                DATE_FORMAT( #{vo.createtimeEnd}, '%Y-%m-%d')
+            </if>
+
+            <if test="vo.days !=null  and vo.days !=''  and vo.days != 0 ">
+                and iac.createtime >= DATE_SUB(NOW(), INTERVAL #{vo.days} DAY)
+            </if>
+
+            <if test="vo.userName !=null  and vo.userName!=''">
+                and su.name=#{vo.userName}
+            </if>
+
+            <if test="vo.userId !=null  and vo.userId!=''">
+                and su.id=#{vo.userId}
+            </if>
+
+            <if test="vo.managementSource !=null  and vo.managementSource!=''">
+                and sd.management_source=#{vo.managementSource}
+            </if>
+        </where>
+    </select>
+
+
+</mapper>

+ 0 - 23
src/main/resources/mapper/modules/fnc/InsPlyIncomeMapper.xml

@@ -2847,29 +2847,6 @@
             </if>
         </where>
     </select>
-    <select id="queryDateByTypeByMonth"
-            resultType="com.ydtech.modules.admin.model.report.financialReceivables.FinancialReceivablesAllMonthVo">
-        SELECT
-        SUM(IFNULL(a.commission_feevalue ,0 ) + IFNULL(a.other_feevalue ,0 )) AS ysSumAmount,
-        SUM(CASE WHEN a.handling_fees_status = '0' THEN IFNULL(a.commission_feevalue ,0 ) + IFNULL(a.other_feevalue ,0 ) ELSE 0 END ) AS "yisSumAmount",
-        SUM(CASE WHEN a.handling_fees_status = '1' THEN IFNULL(a.commission_feevalue ,0 ) + IFNULL(a.other_feevalue ,0 ) ELSE 0 END) AS "wsSumAmount"
-        FROM
-        ins_ply_income a
-        LEFT JOIN
-        ptl_agreement pa ON pa.id = a.agreement_id
-        <where>
-            1=1
-            <if test="vo.type !=null  and  vo.type  !=''">
-                and pa.agreement_type =#{vo.type}
-            </if>
-            <if test="vo.beginDate  != null  and  vo.beginDate!=''  and vo.endDate  != null  and  vo.endDate!=''">
-                AND  a.signdate  BETWEEN #{vo.beginDate} AND #{vo.endDate}
-            </if>
-            <if test="vo.yearAndMonth  != null  and  vo.yearAndMonth!=''">
-                AND   DATE_FORMAT(a.signdate, '%Y-%m') =#{vo.yearAndMonth}
-            </if>
-        </where>
-    </select>
     <select id="getProfitAnalysisQueryList" resultType="com.ydtech.modules.admin.model.report.profitAnalysis.ProfitAnalysisDto">
         SELECT
             a.signingTime as "yearAndMonth",

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

@@ -1931,4 +1931,138 @@
             </if>
         </where>
     </select>
+    <select id="channelExcel" resultType="com.ydtech.modules.admin.model.dto.TaskStatisticsExcel">
+        select a.*,(select name  from sys_user  where id =a.userId) as "userName"
+        from (
+        SELECT
+        sd.NAME AS "deptName",
+        io.userid AS "userId",
+        sd.parent_id as "deptId",
+        COUNT( CASE WHEN iac.orderstatus = 0 THEN 1 END ) AS qutationCount,
+        COUNT( CASE WHEN iac.orderstatus = 2 THEN 1 END ) AS underwritingCount,
+        COUNT( CASE WHEN iac.orderstatus = 3 THEN 1 END ) AS qutationInsureCount,
+        COUNT( CASE WHEN iac.orderstatus = 4 THEN 1 END ) AS underwritingReturn,
+        (COUNT( CASE WHEN iac.orderstatus = 2 THEN 1 END ) / COUNT( CASE WHEN iac.orderstatus = 0 THEN 1 END )) * 100 AS "passingRate",
+        (COUNT( CASE WHEN iac.orderstatus = 3 THEN 1 END ) /  COUNT( iac.orderstatus )) * 100 AS "closeRate",
+        ((COUNT( CASE WHEN iac.orderstatus = 3 THEN 1 END )  +  COUNT( CASE WHEN iac.orderstatus = 2 THEN 1 END ))/ COUNT( iac.orderstatus )) * 100 AS "contributionRate",
+        (COUNT( CASE WHEN iac.orderstatus = 0 THEN 1 END ) / COUNT( iac.orderstatus )) * 100 AS "quotationRate",
+        COUNT( CASE WHEN iac.orderstatus = 1 THEN 1 END ) AS "auditOrder"
+        FROM
+        ins_area_company iac
+        LEFT JOIN ins_orders io ON io.orderno = iac.orderno
+        LEFT JOIN sys_dept sd ON sd.id = io.deptid
+        <where>
+            1=1
+            <if test="taskStatisticsVo.provinceId != null and taskStatisticsVo.provinceId != ''">
+                and io.deptid like "${taskStatisticsVo.provinceId}%"
+            </if>
+            <if test="taskStatisticsVo.cityId != null and taskStatisticsVo.cityId != ''">
+                and io.deptid like "${taskStatisticsVo.cityId}%"
+            </if>
+            <if test="taskStatisticsVo.countyId != null and taskStatisticsVo.countyId != ''">
+                and io.deptid like "${taskStatisticsVo.countyId}%"
+            </if>
+            <if test="taskStatisticsVo.houseId != null and taskStatisticsVo.houseId != ''">
+                and io.deptid like "${taskStatisticsVo.houseId}%"
+            </if>
+
+            <if test="taskStatisticsVo.createtimeStart !=null and taskStatisticsVo.createtimeStart != '' and taskStatisticsVo.createtimeEnd !=null and taskStatisticsVo.createtimeEnd != ''">
+                AND   DATE_FORMAT( io.createtime, '%Y-%m-%d')   BETWEEN #{taskStatisticsVo.createtimeStart} AND #{taskStatisticsVo.createtimeEnd}
+            </if>
+            <if test="taskStatisticsVo.beginDate !=null and taskStatisticsVo.beginDate != '' and taskStatisticsVo.endDate !=null and taskStatisticsVo.endDate != ''">
+                AND   DATE_FORMAT( iac.createtime, '%Y-%m-%d')   BETWEEN  DATE_FORMAT( #{taskStatisticsVo.beginDate}, '%Y-%m-%d') AND  DATE_FORMAT( #{taskStatisticsVo.endDate}, '%Y-%m-%d')
+            </if>
+            <if test="taskStatisticsVo.days !=null  and taskStatisticsVo.days !='' ">
+                and iac.createtime >= DATE_SUB(NOW(), INTERVAL #{taskStatisticsVo.days} DAY)
+            </if>
+            <if test="taskStatisticsVo.managementSource!=null  and  taskStatisticsVo.managementSource!=''">
+                and  sd.management_source=#{taskStatisticsVo.managementSource}
+
+            </if>
+
+            <if test="taskStatisticsVo.days !=null  and taskStatisticsVo.days !='' ">
+                <choose>
+                    <when test="taskStatisticsVo.days =='1'">
+                        and io.createtime >= DATE_SUB(NOW(), INTERVAL 1 DAY)
+                    </when>
+
+                    <when test="taskStatisticsVo.days =='7'">
+                        and io.createtime >= DATE_SUB(NOW(), INTERVAL 7 DAY)
+                    </when>
+
+                    <when test="taskStatisticsVo.days =='30'">
+                        and io.createtime >= DATE_SUB(NOW(), INTERVAL 30 DAY)
+                    </when>
+                </choose>
+            </if>
+        </where>
+        GROUP BY
+        io.userid,
+        sd.NAME,
+        sd.id
+        ) a
+    </select>
+
+
+    <select id="insuranceCompanyExcel" resultType="com.ydtech.modules.admin.model.dto.InsuranceCompanyExcel">
+
+        SELECT
+        a.*,
+        ( SELECT eic.namesimple FROM esm_ins_company eic WHERE eic.id = a.partner_companies_id ) AS "partnerCompaniesName"
+        FROM
+        (
+        SELECT
+        pa.insurance_company_id,
+        pa.partner_companies_id,
+        pa.insurance_company AS "insuranceCompanyName",
+        COUNT( CASE WHEN iac.orderstatus = 0 THEN 1 END ) AS qutationCount,
+        COUNT( CASE WHEN iac.orderstatus = 2 THEN 1 END ) AS underwritingCount,
+        COUNT( CASE WHEN iac.orderstatus = 3 THEN 1 END ) AS qutationInsureCount,
+        COUNT( CASE WHEN iac.orderstatus = 4 THEN 1 END ) AS underwritingReturn,
+        COUNT( CASE WHEN iac.orderstatus = 2 THEN 1 END ) / COUNT( CASE WHEN iac.orderstatus = 0 THEN 1 END ) AS "passingRate",
+        COUNT( CASE WHEN iac.orderstatus = 3 THEN 1 END ) / COUNT( CASE WHEN iac.orderstatus = 0 THEN 1 END ) AS "closeRate",
+        COUNT( CASE WHEN iac.orderstatus = 3 THEN 1 END ) / COUNT( iac.orderstatus ) AS "contributionRate",
+        COUNT( CASE WHEN iac.orderstatus = 0 THEN 1 END ) / COUNT( iac.orderstatus ) AS "quotationRate",
+        COUNT( CASE WHEN ifa.auditstatus = 0 THEN 1 END ) AS "auditOrder"
+        FROM
+        ins_area_company iac
+        LEFT JOIN ins_fee_audit ifa ON ifa.ins_order_no = iac.id
+        LEFT JOIN ptl_agreement pa ON pa.id = iac.agreement_id
+        <where>
+            pa.insurance_company_id IS NOT NULL
+            <if test="taskStatisticsVo.provinceId != null and taskStatisticsVo.provinceId != ''">
+                and io.deptid like "${taskStatisticsVo.provinceId}%"
+            </if>
+            <if test="taskStatisticsVo.cityId != null and taskStatisticsVo.cityId != ''">
+                and io.deptid like "${taskStatisticsVo.cityId}%"
+            </if>
+            <if test="taskStatisticsVo.countyId != null and taskStatisticsVo.countyId != ''">
+                and io.deptid like "${taskStatisticsVo.countyId}%"
+            </if>
+            <if test="taskStatisticsVo.houseId != null and taskStatisticsVo.houseId != ''">
+                and io.deptid like "${taskStatisticsVo.houseId}%"
+            </if>
+            <if test="taskStatisticsVo.createtimeStart !=null and taskStatisticsVo.createtimeStart != '' and taskStatisticsVo.createtimeEnd !=null and taskStatisticsVo.createtimeEnd != ''">
+                AND   DATE_FORMAT( io.createtime, '%Y-%m-%d')   BETWEEN #{taskStatisticsVo.createtimeStart} AND #{taskStatisticsVo.createtimeEnd}
+            </if>
+            <if test="taskStatisticsVo.beginDate !=null and taskStatisticsVo.beginDate != '' and taskStatisticsVo.endDate !=null and taskStatisticsVo.endDate != ''">
+                AND   DATE_FORMAT( iac.createtime, '%Y-%m-%d')   BETWEEN DATE_FORMAT( #{taskStatisticsVo.beginDate}, '%Y-%m-%d')  AND DATE_FORMAT( #{taskStatisticsVo.endDate}, '%Y-%m-%d')
+            </if>
+
+            <if test="taskStatisticsVo.companyId !=null and taskStatisticsVo.companyId != ''">
+                AND  iac.company_id =#{taskStatisticsVo.companyId}
+            </if>
+
+            <if test="taskStatisticsVo.days !=null  and taskStatisticsVo.days !='' ">
+                and iac.createtime >= DATE_SUB(NOW(), INTERVAL #{taskStatisticsVo.days} DAY)
+            </if>
+        </where>
+        GROUP BY
+        pa.insurance_company_id,
+        pa.partner_companies_id,
+        pa.insurance_company
+        ) a
+
+
+    </select>
 </mapper>