Pārlūkot izejas kodu

1.控制台 - 人员统计 后线人员 前线人员 渠道
2.控制台 - 财务中心 - 费用校验
3.控制台 - 协议统计

wuhp 2 gadi atpakaļ
vecāks
revīzija
c19f4e94a9

+ 54 - 0
src/main/java/com/ydtech/modules/admin/controller/personnelStatistics/PersonnelStatisticsController.java

@@ -0,0 +1,54 @@
+package com.ydtech.modules.admin.controller.personnelStatistics;
+
+import com.ydtech.core.page.HttpResult;
+import com.ydtech.modules.admin.model.report.user.HouLinePersonnelReportDto;
+import com.ydtech.modules.admin.model.vo.HouLinePersonnelReportVo;
+import com.ydtech.modules.admin.service.SysDeptService;
+import com.ydtech.modules.admin.service.UserReportService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.HashMap;
+
+/**
+ *    人员统计
+ */
+
+@Api(tags = "人员统计")
+@RequestMapping("/userStatistics")
+@RestController
+public class PersonnelStatisticsController {
+
+
+    @Autowired
+    private SysDeptService sysDeptService;
+
+    @Autowired
+    private UserReportService userReportService;
+
+    /**
+     *  @version
+     *  @author: whp
+     *  @Date: 2024/7/24 9:04
+     *  @Description:  通过后线人员机构查询统计数据
+     */
+    @PostMapping("queryHXReportData")
+    @ApiOperation(value = "查询后线人员统计数据")
+    public HttpResult<HashMap<String,Object>> queryHXReportDataNew(@RequestBody HouLinePersonnelReportVo houLinePersonnelReportVo) {
+
+        try{
+            HashMap<String,Object> houLinePersonnelReportDto = userReportService.queryHXReportDataNew(houLinePersonnelReportVo);
+            return HttpResult.ok("查询数据成功", houLinePersonnelReportDto);
+        }catch (Exception e){
+            return HttpResult.error("查询错误"+e.getMessage());
+        }
+    }
+
+
+
+
+
+
+}

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

@@ -0,0 +1,99 @@
+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.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 org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @description:   任务统计
+ * @author: whp
+ * @date: 2024/7/25
+ **/
+@Api(tags = "控制台-任务统计")
+@RequestMapping("/taskStatistics")
+@RestController
+public class TaskStatisticsController {
+
+    @Autowired
+    private TaskStatisticsService  taskStatisticsService;
+    /**
+     * @description:   渠道任务统计查询
+     * @author: whp
+     * @date: 2024/7/25
+     **/
+    @PostMapping("queryPage")
+    @ApiOperation(value = "控制台-渠道任务统计查询")
+    public HttpResult<IPage<TaskStatisticsDto>> queryPage(@RequestBody TaskStatisticsVo taskStatisticsVo) {
+        try{
+            IPage<TaskStatisticsDto> result = taskStatisticsService.queryPage(taskStatisticsVo);
+            return HttpResult.ok("查询数据成功", result);
+        }catch (Exception e){
+            return HttpResult.error("查询错误"+e.getMessage());
+        }
+    }
+
+    /**
+     * @description:   保险公司统计查询
+     * @author: whp
+     * @date: 2024/7/25
+     **/
+    @PostMapping("insuranceCompanyQueryPage")
+    @ApiOperation(value = "控制台-保险公司统计查询")
+    public HttpResult<IPage<TaskStatisticsDto>> insuranceCompanyQueryPage(@RequestBody TaskStatisticsVo taskStatisticsVo) {
+        try{
+            IPage<TaskStatisticsDto> result = taskStatisticsService.insuranceCompanyQueryPage(taskStatisticsVo);
+            return HttpResult.ok("查询数据成功", result);
+        }catch (Exception e){
+            return HttpResult.error("查询错误"+e.getMessage());
+        }
+    }
+
+    /**
+     * @description:   代理人统计查询
+     * @author: whp
+     * @date: 2024/7/26
+     **/
+    @PostMapping("agentStatisticsQueryPage")
+    @ApiOperation(value = "控制台-代理人统计查询")
+    public HttpResult<IPage<TaskStatisticsDto>> agentStatisticsQueryPage(@RequestBody TaskStatisticsVo taskStatisticsVo) {
+        try{
+            IPage<TaskStatisticsDto> result = taskStatisticsService.agentStatisticsQueryPage(taskStatisticsVo);
+            return HttpResult.ok("查询数据成功", result);
+        }catch (Exception e){
+            return HttpResult.error("查询错误"+e.getMessage());
+        }
+    }
+
+
+    /**
+     * @description:   财务中心-费用校验
+     * @author: whp
+     * @date: 2024/7/29
+     **/
+    @PostMapping("costCenter")
+    @ApiOperation(value = "控制台-财务中心-费用校验")
+    public HttpResult<IPage<TaskStatisticsDto>> costCenter(@RequestBody TaskStatisticsVo taskStatisticsVo) {
+        try{
+            IPage<TaskStatisticsDto> result = taskStatisticsService.costCenter(taskStatisticsVo);
+            return HttpResult.ok("查询数据成功", result);
+        }catch (Exception e){
+            return HttpResult.error("查询错误"+e.getMessage());
+        }
+    }
+
+
+
+}

+ 3 - 1
src/main/java/com/ydtech/modules/admin/dao/SysUserMapper.java

@@ -10,7 +10,9 @@ import com.ydtech.modules.admin.model.dto.QuTeamNumDto;
 import com.ydtech.modules.admin.model.dto.QuUserNumDto;
 import com.ydtech.modules.admin.model.dto.ReportDto;
 import com.ydtech.modules.admin.model.dto.SysUserDto;
+import com.ydtech.modules.admin.model.report.user.HouLinePersonnelReportDto;
 import com.ydtech.modules.admin.model.report.user.QianLineQDPersonnelReportDto;
+import com.ydtech.modules.admin.model.vo.HouLinePersonnelReportVo;
 import com.ydtech.modules.admin.model.vo.SysUserBaseVO;
 import com.ydtech.modules.admin.model.vo.SysUserVO;
 import com.ydtech.modules.admin.model.vo.SysUserVOExt;
@@ -396,7 +398,7 @@ public interface SysUserMapper extends BaseMapper<SysUser> {
     @Select("select id   from  sys_user  where   status ='1' ")
     List<String> getUserIds();
 
-
+    HashMap<String,Object> queryHXReportDataNew(HouLinePersonnelReportVo houLinePersonnelReportVo);
 }
 
 

+ 14 - 0
src/main/java/com/ydtech/modules/admin/model/SysUserInfo.java

@@ -12,6 +12,7 @@ import lombok.Data;
 
 import javax.validation.constraints.NotBlank;
 import java.io.Serializable;
+import java.math.BigDecimal;
 import java.time.LocalDate;
 import java.util.Date;
 
@@ -125,6 +126,19 @@ public class SysUserInfo implements Serializable {
     @TableField(value = "emergency_contact_name")
     private String emergencyContactName;
 
+    @ApiModelProperty(value = "专业")
+    @TableField(value = "speciality")
+    private String speciality;
+
+    @ApiModelProperty(value = "薪资")
+    @TableField(value = "salary")
+    private BigDecimal salary;
+
+    @ApiModelProperty(value = "是否是计算机专业")
+    @TableField(value = "is_speciality")
+    private BigDecimal isSpeciality;
+
+
     @ApiModelProperty(value = "")
     @TableField(value = "remark")
     private String remark;

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

@@ -0,0 +1,64 @@
+package com.ydtech.modules.admin.model.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@ApiModel("任务统计")
+@Data
+public class TaskStatisticsDto {
+
+    @ApiModelProperty(value = "报价中")
+    private BigDecimal qutationCount;
+
+    @ApiModelProperty(value = "已核保待缴费")
+    private BigDecimal underwritingCount;
+
+    @ApiModelProperty(value = "已承保数")
+    private BigDecimal qutationInsureCount;
+
+    @ApiModelProperty(value = "待审核")
+    private BigDecimal auditOrder;
+
+    @ApiModelProperty(value = "通过率")
+    private BigDecimal passingRate;
+
+    @ApiModelProperty(value = "成交率")
+    private BigDecimal closeRate;
+
+    @ApiModelProperty(value = "缴费率")
+    private BigDecimal contributionRate;
+
+    @ApiModelProperty(value = "报价率")
+    private BigDecimal quotationRate;
+
+    @ApiModelProperty(value = "核保退回")
+    private BigDecimal underwritingReturn;
+
+    @ApiModelProperty(value = "人工审核")
+    private BigDecimal persionAudit;
+
+    @ApiModelProperty(value = "自动审核")
+    private BigDecimal automaticAudit;
+
+    @ApiModelProperty(value = "已审核")
+    private BigDecimal auditstatusOrders;
+
+
+    @ApiModelProperty(value = "部门名称")
+    private String deptName;
+
+    @ApiModelProperty(value = "用户名称")
+    private String userName;
+
+    @ApiModelProperty(value = "用户工号")
+    private String userId;
+
+    @ApiModelProperty(value = "合作公司名称")
+    private String partnerCompaniesName;
+
+    @ApiModelProperty(value = "保险公司名称")
+    private String insuranceCompanyName;
+}

+ 19 - 0
src/main/java/com/ydtech/modules/admin/model/report/user/HouLinePersonnelReportDto.java

@@ -5,6 +5,7 @@ import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
+import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -41,6 +42,24 @@ public class HouLinePersonnelReportDto {
     @ApiModelProperty(value = "平均年龄")
     private String  avgAge;
 
+    /***
+     * 薪资
+     */
+    @ApiModelProperty(value = "薪资")
+    private BigDecimal salary;
+
+    /***
+     * 男生统计
+     */
+    @ApiModelProperty(value = "男生统计")
+    private String manSex;
+
+    /***
+     * 女生统计
+     */
+    @ApiModelProperty(value = "女生统计")
+    private String femaleSex;
+
     /***
      * 学历分布
      */

+ 30 - 0
src/main/java/com/ydtech/modules/admin/model/vo/HouLinePersonnelReportVo.java

@@ -0,0 +1,30 @@
+package com.ydtech.modules.admin.model.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @description: 人员统计
+ * @author: whp
+ * @date: 2024/7/24
+ **/
+@Data
+@ApiModel("后线人员统计查询实体")
+public class HouLinePersonnelReportVo implements Serializable {
+
+    @ApiModelProperty(value = "省机构id")
+    private String provinceId;
+
+    @ApiModelProperty(value = "市机构id")
+    private String cityId;
+
+    @ApiModelProperty(value = "县机构id")
+    private String countyId;
+
+    @ApiModelProperty(value = "门店机构id")
+    private String houseId;
+
+}

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

@@ -0,0 +1,59 @@
+package com.ydtech.modules.admin.model.vo;
+
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.Min;
+import java.io.Serializable;
+
+/**
+ * @description:   任务统计
+ * @author: whp
+ * @date: 2024/7/25
+ **/
+@Data
+@ApiModel("任务统计查询实体")
+public class TaskStatisticsVo implements Serializable {
+
+
+    @ApiModelProperty(value = "每页页数")
+    private int pageSize;
+
+    @ApiModelProperty(value = "页数")
+    @Min(value = 1, message = "页数最小为1")
+    private int pageNum;
+
+    @ApiModelProperty(value = "省机构id")
+    private String provinceId;
+
+    @ApiModelProperty(value = "市机构id")
+    private String cityId;
+
+    @ApiModelProperty(value = "县机构id")
+    private String countyId;
+
+    @ApiModelProperty(value = "门店机构id")
+    private String houseId;
+
+
+    @ApiModelProperty(value = "时间筛选开始")
+    private String createtimeStart;
+
+    @ApiModelProperty(value = "时间筛选结束")
+    private String createtimeEnd;
+
+    @ApiModelProperty(value = "天数")
+    private String days;
+
+    @ApiModelProperty(value = "投保险种")
+    private String riskCode;
+
+
+
+
+
+
+
+}

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

@@ -0,0 +1,34 @@
+package com.ydtech.modules.admin.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.ydtech.modules.admin.model.dto.TaskStatisticsDto;
+import com.ydtech.modules.admin.model.vo.TaskStatisticsVo;
+import com.ydtech.modules.order.entity.BasePageResult;
+
+/**
+ * @description:   任务统计
+ * @author: whp
+ * @date: 2024/7/25
+ **/
+public interface TaskStatisticsService {
+    IPage<TaskStatisticsDto> queryPage(TaskStatisticsVo taskStatisticsVo);
+    /**
+     * @description:   保险公司统计查询
+     * @author: whp
+     * @date: 2024/7/25
+     **/
+    IPage<TaskStatisticsDto> insuranceCompanyQueryPage(TaskStatisticsVo taskStatisticsVo);
+    /**
+     * @description:   代理人统计查询
+     * @author: whp
+     * @date: 2024/7/26
+     **/
+    IPage<TaskStatisticsDto> agentStatisticsQueryPage(TaskStatisticsVo taskStatisticsVo);
+    /**
+     * @description:   财务中心-费用校验
+     * @author: whp
+     * @date: 2024/7/29
+     **/
+    IPage<TaskStatisticsDto> costCenter(TaskStatisticsVo taskStatisticsVo);
+
+}

+ 10 - 0
src/main/java/com/ydtech/modules/admin/service/UserReportService.java

@@ -5,7 +5,9 @@ import com.ydtech.modules.admin.model.report.user.HouLinePersonnelReportDto;
 import com.ydtech.modules.admin.model.report.user.QianLineDDPersonnelReportDto;
 import com.ydtech.modules.admin.model.report.user.QianLineDLPersonnelReportDto;
 import com.ydtech.modules.admin.model.report.user.QianLineQDPersonnelReportDto;
+import com.ydtech.modules.admin.model.vo.HouLinePersonnelReportVo;
 
+import java.util.HashMap;
 import java.util.List;
 
 /**
@@ -43,6 +45,14 @@ public interface UserReportService {
      *  @Description:  查询后线代理人统计数据
      */
     QianLineDLPersonnelReportDto queryQXDLReportData(String deptId);
+    /**
+     *  @version
+     *  @author: whp
+     *  @Date: 2024/7/24 9:04
+     *  @Description:  通过后线人员机构查询统计数据
+     */
+    HashMap<String,Object> queryHXReportDataNew(HouLinePersonnelReportVo houLinePersonnelReportVo);
+
 }
 
 

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

@@ -0,0 +1,98 @@
+package com.ydtech.modules.admin.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+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.modules.admin.dao.SysAmountAuditingMapper;
+import com.ydtech.modules.admin.model.dto.TaskStatisticsDto;
+import com.ydtech.modules.admin.model.vo.TaskStatisticsVo;
+import com.ydtech.modules.admin.service.TaskStatisticsService;
+import com.ydtech.modules.base.model.vo.PageVo;
+import com.ydtech.modules.fnc.entity.InsPlyIncome;
+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.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @description:   任务统计
+ * @author: whp
+ * @date: 2024/7/25
+ **/
+@Service
+public class TaskStatisticsServiceImpl  implements TaskStatisticsService {
+
+    @Autowired
+    private InsAreaCompanyMapper insAreaCompanyMapper;
+
+    @Autowired
+    private SysAmountAuditingMapper sysAmountAuditingMapper;
+    @Autowired
+    private InsOrdersMapper insOrdersMapper;
+
+
+    /**
+     * @description:   渠道任务统计查询
+     * @author: whp
+     * @date: 2024/7/25
+     **/
+    @Override
+    public IPage<TaskStatisticsDto> queryPage(TaskStatisticsVo taskStatisticsVo) {
+        PageVo<TaskStatisticsVo> pageVo = new PageVo<>();
+        Page page = new Page(taskStatisticsVo.getPageNum(), taskStatisticsVo.getPageSize());
+        pageVo.setPageNum(taskStatisticsVo.getPageNum());
+        pageVo.setPageSize(taskStatisticsVo.getPageSize());
+        IPage<TaskStatisticsDto> list = this.insAreaCompanyMapper.queryPageTaskStatistics(page,taskStatisticsVo);
+        return list;
+    }
+    /**
+     * @description:   保险公司统计查询
+     * @author: whp
+     * @date: 2024/7/25
+     **/
+    @Override
+    public IPage<TaskStatisticsDto> insuranceCompanyQueryPage(TaskStatisticsVo taskStatisticsVo) {
+        PageVo<TaskStatisticsVo> pageVo = new PageVo<>();
+        Page page = new Page(taskStatisticsVo.getPageNum(), taskStatisticsVo.getPageSize());
+        pageVo.setPageNum(taskStatisticsVo.getPageNum());
+        pageVo.setPageSize(taskStatisticsVo.getPageSize());
+        IPage<TaskStatisticsDto> list = this.insAreaCompanyMapper.insuranceCompanyQueryPage(page,taskStatisticsVo);
+        return list;
+    }
+    /**
+     * @description:   代理人统计查询
+     * @author: whp
+     * @date: 2024/7/26
+     **/
+    @Override
+    public IPage<TaskStatisticsDto> agentStatisticsQueryPage(TaskStatisticsVo taskStatisticsVo) {
+        PageVo<TaskStatisticsVo> pageVo = new PageVo<>();
+        Page page = new Page(taskStatisticsVo.getPageNum(), taskStatisticsVo.getPageSize());
+        pageVo.setPageNum(taskStatisticsVo.getPageNum());
+        pageVo.setPageSize(taskStatisticsVo.getPageSize());
+        IPage<TaskStatisticsDto> list = this.insAreaCompanyMapper.agentStatisticsQueryPage(page,taskStatisticsVo);
+        return list;
+    }
+    /**
+     * @description:   财务中心-费用校验
+     * @author: whp
+     * @date: 2024/7/29
+     **/
+    @Override
+    public IPage<TaskStatisticsDto> costCenter(TaskStatisticsVo taskStatisticsVo) {
+        PageVo<TaskStatisticsVo> pageVo = new PageVo<>();
+        Page page = new Page(taskStatisticsVo.getPageNum(), taskStatisticsVo.getPageSize());
+        pageVo.setPageNum(taskStatisticsVo.getPageNum());
+        pageVo.setPageSize(taskStatisticsVo.getPageSize());
+        IPage<TaskStatisticsDto> list = this.insAreaCompanyMapper.costCenter(page,taskStatisticsVo);
+        return list;
+    }
+}

+ 14 - 0
src/main/java/com/ydtech/modules/admin/service/impl/UserReportServiceImpl.java

@@ -7,6 +7,7 @@ import com.ydtech.modules.admin.model.SysDept;
 import com.ydtech.modules.admin.model.SysUser;
 import com.ydtech.modules.admin.model.dto.ReportDto;
 import com.ydtech.modules.admin.model.report.user.*;
+import com.ydtech.modules.admin.model.vo.HouLinePersonnelReportVo;
 import com.ydtech.modules.admin.service.UserReportService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -52,6 +53,17 @@ public class UserReportServiceImpl implements UserReportService {
         );
         return houLinePersonnelReportDto;
     }
+
+    /**
+     *  @version
+     *  @author: whp
+     *  @Date: 2024/7/24 9:04
+     *  @Description:  通过后线人员机构查询统计数据
+     */
+    @Override
+    public HashMap<String,Object> queryHXReportDataNew(HouLinePersonnelReportVo houLinePersonnelReportVo) {
+        return  sysUserMapper.queryHXReportDataNew(houLinePersonnelReportVo);
+    }
     /**
      *  @version
      *  @author: hxl
@@ -120,6 +132,8 @@ public class UserReportServiceImpl implements UserReportService {
         return new QianLineDLPersonnelReportDto("团队长", String.valueOf(map.get("sumCount")), String.valueOf(map.get("avgAge")),
                 areaList,sexList,whList,list);
     }
+
+
     /**
      *  @version
      *  @author: hxl

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

@@ -1,9 +1,11 @@
 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.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.report.company.CompanyQutationCountDataDto;
@@ -13,6 +15,8 @@ import com.ydtech.modules.admin.model.report.opetationData.BusinessDataQueryDto;
 import com.ydtech.modules.admin.model.report.opetationData.QuotationCountDataDto;
 import com.ydtech.modules.admin.model.report.opetationData.QuotationCountQueryDto;
 import com.ydtech.modules.admin.model.vo.SubOrder;
+import com.ydtech.modules.admin.model.vo.TaskStatisticsVo;
+import com.ydtech.modules.base.model.vo.PageVo;
 import com.ydtech.modules.order.entity.InsAreaCompany;
 import com.ydtech.modules.order.entity.InsOrders;
 import com.ydtech.modules.order.entity.dto.InsAreaCompanyQueryDto;
@@ -180,6 +184,27 @@ public interface InsAreaCompanyMapper extends BaseMapper<InsAreaCompany> {
      *  @Description:  获取暂存订单的数据
      */
     Page<InsAreaCompany> getStageOrder(@Param("page") Page page, @Param("userId") String userId, @Param("vo") RejectPageQueryVo rejectPageQueryVo);
+
+    IPage<TaskStatisticsDto> queryPageTaskStatistics(@Param("page") Page page, @Param("taskStatisticsVo") TaskStatisticsVo taskStatisticsVo);
+    /**
+     * @description:   保险公司统计查询
+     * @author: whp
+     * @date: 2024/7/25
+     **/
+    Page<TaskStatisticsDto> insuranceCompanyQueryPage(@Param("page") Page page,@Param("taskStatisticsVo") TaskStatisticsVo taskStatisticsVo);
+    /**
+     * @description:   代理人统计查询
+     * @author: whp
+     * @date: 2024/7/26
+     **/
+    IPage<TaskStatisticsDto> agentStatisticsQueryPage(@Param("page") Page page, @Param("taskStatisticsVo") TaskStatisticsVo taskStatisticsVo);
+    /**
+     * @description:   财务中心-费用校验
+     * @author: whp
+     * @date: 2024/7/29
+     **/
+    IPage<TaskStatisticsDto> costCenter(@Param("page") Page page, @Param("taskStatisticsVo") TaskStatisticsVo taskStatisticsVo);
+
 }
 
 

+ 23 - 0
src/main/resources/mapper/modules/admin/SysUserMapper.xml

@@ -1266,4 +1266,27 @@
         t1.`status` = 1
         AND t1.id NOT LIKE '%M%'
     </select>
+
+    <select id="queryHXReportDataNew" resultType="java.util.HashMap">
+        SELECT
+            sum(info.salary) as  "salary",
+            sum(case when info.sex ='M' THEN 1 ELSE 0 END ) as "manSex",
+            sum(case when info.sex ='F'  THEN 1 ELSE 0 END) as "femaleSex",
+            sum(case when info.sex ='M' THEN 1 ELSE 0 END ) / (sum(case when info.sex ='M' THEN 1 ELSE 0 END ) +  sum(case when info.sex ='F'  THEN 1 ELSE 0 END)) as "manProportion",
+            sum(case when info.sex ='F'  THEN 1 ELSE 0 END) / (sum(case when info.sex ='M' THEN 1 ELSE 0 END ) +  sum(case when info.sex ='F'  THEN 1 ELSE 0 END)) as "femaleProportion",
+            sum(case when info.is_speciality ='1'  THEN 1 ELSE 0 END) as "computerSpecialityPersion",
+            sum(case when info.is_speciality ='0'  THEN 1 ELSE 0 END) as "otherSpecialityPersion",
+            sum(case when info.is_speciality ='1'  THEN 1 ELSE 0 END) / (sum(case when info.is_speciality ='1'  THEN 1 ELSE 0 END) + sum(case when info.is_speciality ='0'  THEN 1 ELSE 0 END)) as "computerSpecialityProportion",
+            sum(case when info.is_speciality ='0'  THEN 1 ELSE 0 END) / (sum(case when info.is_speciality ='1'  THEN 1 ELSE 0 END) + sum(case when info.is_speciality ='0'  THEN 1 ELSE 0 END))  as "otherSpecialityProportion"
+        FROM
+            sys_user su
+                LEFT JOIN sys_dept sd ON su.dept_id = sd.id
+                LEFT JOIN sys_user_info info ON info.id = su.id
+        <where>
+            info.id is not  null
+            and su.id  LIKE '%M%'
+            and su.status = '1'
+        </where>
+    </select>
+
 </mapper>

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

@@ -901,4 +901,228 @@
                 and  io.licenseno like  CONCAT('%', #{vo.licenseno}, '%')
             </if>
     </select>
+
+    <select id="queryPageTaskStatistics"  resultType="com.ydtech.modules.admin.model.dto.TaskStatisticsDto">
+        SELECT
+            sd.name as "deptName",
+            su.name as "userName",
+            io.userid as "userId",
+            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( CASE WHEN iac.orderstatus = 2 THEN 1 END )  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_orders  io  on  io.orderno  = iac.orderno
+            left  join   sys_dept sd  on sd.id=io.deptid
+            left  join   sys_user su  on su.id=io.userid
+            left  join   ins_fee_audit   ifa   on ifa .ins_order_no  =iac.id
+            <where>
+                sd.management_source = '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.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 , su.name, sd.id , sd.name
+    </select>
+
+
+    <select id="insuranceCompanyQueryPage"  resultType="com.ydtech.modules.admin.model.dto.TaskStatisticsDto">
+        SELECT
+        pa.insurance_company_id,
+        pa.insurance_company as "insuranceCompanyName",
+        eic.namesimple as "partnerCompaniesName",
+        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( CASE WHEN iac.orderstatus = 2 THEN 1 END ) 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_orders io ON io.orderno = iac.orderno
+        LEFT JOIN sys_dept sd ON sd.id = io.deptid
+        LEFT JOIN ins_fee_audit ifa ON ifa.ins_order_no = iac.id
+        LEFT JOIN ptl_agreement pa ON pa.id = iac.agreement_id
+        LEFT JOIN esm_ins_company eic ON eic.id = pa.partner_companies_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.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
+            pa.insurance_company_id,
+            pa.insurance_company,
+            eic.namesimple,
+            pa.insurance_company
+    </select>
+
+    <select id="agentStatisticsQueryPage"  resultType="com.ydtech.modules.admin.model.dto.TaskStatisticsDto">
+        SELECT
+        sd.name as "deptName",
+        su.name as "userName",
+        io.userid as "userId",
+        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( CASE WHEN iac.orderstatus = 2 THEN 1 END )  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_orders  io  on  io.orderno  = iac.orderno
+        left  join   sys_dept sd  on sd.id=io.deptid
+        left  join   sys_user su  on su.id=io.userid
+        left  join   ins_fee_audit   ifa   on ifa .ins_order_no  =iac.id
+        <where>
+            sd.management_source = '2'
+            <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.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 , su.name, sd.id , sd.name
+    </select>
+
+    <select id="costCenter" resultType="com.ydtech.modules.admin.model.dto.TaskStatisticsDto">
+        SELECT
+            iac.company_id,
+            iac.inscompany as  “insuranceCompanyName”,
+            COUNT( CASE WHEN ifa.auditstatus = 1 THEN 1 END ) AS "auditstatusOrders",
+            COUNT( CASE WHEN ifa.auditstatus = 0 THEN 1 END ) AS "auditOrder",
+            COUNT( CASE WHEN pa.audit_type = 1 AND ifa.auditstatus = 1 THEN 1 END ) AS "persionAudit",
+            COUNT( CASE WHEN pa.audit_type = 2 AND ifa.auditstatus = 1 THEN 1 END ) AS "automaticAudit"
+        FROM
+            ins_fee_audit ifa
+                LEFT JOIN ins_area_company iac ON iac.id = ifa.ins_order_no
+                LEFT JOIN ptl_agreement pa ON pa.id = iac.agreement_id
+                LEFT JOIN ins_fee_order_new ion ON ion.ins_order_no = iac.id
+        <where>
+            1=1
+            <if test="taskStatisticsVo.createtimeStart !=null and taskStatisticsVo.createtimeStart != '' and taskStatisticsVo.createtimeEnd !=null and taskStatisticsVo.createtimeEnd != ''">
+                AND   DATE_FORMAT( ifa.audittime, '%Y-%m-%d')   BETWEEN #{taskStatisticsVo.createtimeStart} AND #{taskStatisticsVo.createtimeEnd}
+            </if>
+
+            <if test="taskStatisticsVo.days !=null  and taskStatisticsVo.days !='' ">
+                <choose>
+                    <when test="taskStatisticsVo.days =='1'">
+                        and ifa.audittime >= DATE_SUB(NOW(), INTERVAL 1 DAY)
+                    </when>
+
+                    <when test="taskStatisticsVo.days =='7'">
+                        and ifa.audittime >= DATE_SUB(NOW(), INTERVAL 7 DAY)
+                    </when>
+
+                    <when test="taskStatisticsVo.days =='30'">
+                        and ifa.audittime >= DATE_SUB(NOW(), INTERVAL 30 DAY)
+                    </when>
+                </choose>
+            </if>
+
+            <if test="taskStatisticsVo.riskCode != null and taskStatisticsVo.riskCode != ''">
+                and iac.product = #{taskStatisticsVo.riskCode}
+            </if>
+
+        </where>
+        GROUP BY
+            iac.company_id,
+            iac.inscompany
+    </select>
 </mapper>