Просмотр исходного кода

1.大中型统计报表-部门/个人效率值查询
2.效率值列表详情查询

GouGengquan 10 месяцев назад
Родитель
Сommit
e7e06df981

+ 62 - 3
biz-base/src/main/java/com/dayou/controller/MajorStatisticalStatementController.java

@@ -4,9 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.dayou.common.RestResponse;
 import com.dayou.dto.MajorStatisticalSelectDTO;
 import com.dayou.service.IMajorStatisticalStatementService;
-import com.dayou.vo.MajorLedgerVO;
-import com.dayou.vo.MajorPerformanceDeductionDetailVO;
-import com.dayou.vo.MajorPerformanceDeductionVO;
+import com.dayou.vo.*;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -117,4 +115,65 @@ public class MajorStatisticalStatementController extends BaseController{
         exportPlus(response, fileName, result, MajorPerformanceDeductionDetailVO.class);
     }
 
+    /**
+     * 评估部效率查询
+     * @param dto 查询dto
+     * @return List<MajorEvaluateEfficiencyVO>
+     */
+    @GetMapping("/evaluate/dep/getEfficiencyVO")
+    public RestResponse<List<MajorEvaluateEfficiencyVO>> getMajorEvaluateDepEfficiencyVO(MajorStatisticalSelectDTO dto) {
+        return RestResponse.data(majorStatisticalStatementService.getMajorEvaluateDepEfficiencyVO(dto));
+    }
+
+    /**
+     * 评估部效率导出
+     * @param dto 查询dto
+     */
+    @GetMapping("/evaluate/dep/getEfficiencyVO/export")
+    public void exportMajorEvaluateDepEfficiencyVO(MajorStatisticalSelectDTO dto, HttpServletResponse response) throws IOException {
+        List<MajorEvaluateEfficiencyVO> result = majorStatisticalStatementService.getMajorEvaluateDepEfficiencyVO(dto);
+        exportPlus(response, "评估部效率值表", result, MajorEvaluateEfficiencyVO.class);
+    }
+
+    /**
+     * 评估人员效率查询
+     * @param dto 查询dto
+     * @return List<MajorEvaluateEfficiencyVO>
+     */
+    @GetMapping("/evaluate/per/getEfficiencyVO")
+    public RestResponse<List<MajorEvaluateEfficiencyVO>> getMajorEvaluatePerEfficiencyVO(MajorStatisticalSelectDTO dto) {
+        return RestResponse.data(majorStatisticalStatementService.getMajorEvaluatePerEfficiencyVO(dto));
+    }
+
+    /**
+     * 评估人员效率导出
+     * @param dto 查询dto
+     */
+    @GetMapping("/evaluate/per/getEfficiencyVO/export")
+    public void exportMajorEvaluatePerEfficiencyVO(MajorStatisticalSelectDTO dto, HttpServletResponse response) throws IOException {
+        List<MajorEvaluateEfficiencyVO> result = majorStatisticalStatementService.getMajorEvaluatePerEfficiencyVO(dto);
+        exportPlus(response, "评估人员效率值表", result, MajorEvaluateEfficiencyVO.class);
+    }
+
+    /**
+     * 效率详情列表查询
+     * @param page 分页
+     * @param dto 查询dto
+     * @return RestResponse<Page<MajorEfficiencyDetailVO>>
+     */
+    @GetMapping("/evaluate/getMajorEvaEffDetailVO")
+    public RestResponse<Page<MajorEfficiencyDetailVO>> getMajorEfficiencyDetailVO(Page page, MajorStatisticalSelectDTO dto) {
+        return RestResponse.data(majorStatisticalStatementService.getMajorEfficiencyDetailVO(page, dto));
+    }
+
+    /**
+     * 效率详情列表导出
+     * @param dto 查询dto
+     */
+    @GetMapping("/evaluate/getMajorEvaEffDetailVO/export")
+    public void exportMajorEfficiencyDetailVO(MajorStatisticalSelectDTO dto, HttpServletResponse response) throws IOException {
+        List<MajorEfficiencyDetailVO> result = majorStatisticalStatementService.exportMajorEfficiencyDetailVO(dto);
+        exportPlus(response, "大中型订单列表", result, MajorEfficiencyDetailVO.class);
+    }
+
 }

+ 30 - 3
dao/src/main/java/com/dayou/mapper/MajorStatisticalStatementMapper.java

@@ -2,9 +2,7 @@ package com.dayou.mapper;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.dayou.dto.MajorStatisticalSelectDTO;
-import com.dayou.vo.MajorLedgerVO;
-import com.dayou.vo.MajorPerformanceDeductionDetailVO;
-import com.dayou.vo.MajorPerformanceDeductionVO;
+import com.dayou.vo.*;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -54,4 +52,33 @@ public interface MajorStatisticalStatementMapper {
      * @return List<MajorPerformanceDeductionDetailVO>
      */
     List<MajorPerformanceDeductionDetailVO> exportMajorPerformanceDeductionDetailVO(@Param("dto") MajorStatisticalSelectDTO dto);
+
+    /**
+     * 评估部效率查询
+     * @param dto 查询dto
+     * @return List<MajorEvaluateEfficiencyVO>
+     */
+    List<MajorEvaluateEfficiencyVO> getMajorEvaluateDepEfficiencyVO(@Param("dto") MajorStatisticalSelectDTO dto);
+
+    /**
+     * 评估人员效率查询
+     * @param dto 查询dto
+     * @return List<MajorEvaluateEfficiencyVO>
+     */
+    List<MajorEvaluateEfficiencyVO> getMajorEvaluatePerEfficiencyVO(@Param("dto") MajorStatisticalSelectDTO dto);
+
+    /**
+     * 效率详情列表查询
+     * @param page 分页
+     * @param dto 查询dto
+     * @return Page<MajorEfficiencyDetailVO>
+     */
+    Page<MajorEfficiencyDetailVO> getMajorEfficiencyDetailVO(@Param("page") Page page, @Param("dto") MajorStatisticalSelectDTO dto);
+
+    /**
+     * 效率详情列表导出
+     * @param dto 查询dto
+     * @return List<MajorEfficiencyDetailVO>
+     */
+    List<MajorEfficiencyDetailVO> exportMajorEfficiencyDetailVO(@Param("dto") MajorStatisticalSelectDTO dto);
 }

+ 5 - 9
dao/src/main/resources/mapper/AssetsStatisticalStatementMapper.xml

@@ -469,7 +469,7 @@
                (SELECT COALESCE(SUM(order_fund.real_amount),0) FROM assets, order_fund WHERE assets.deleted = 0 AND assets.id = order_fund.business_id AND order_fund.deleted = 0 AND business_type = 'ASSET_BUSINESS' AND assets.created BETWEEN DATE_SUB(#{dto.startTime}, INTERVAL DATEDIFF(#{dto.endTime},#{dto.startTime}) DAY) AND DATE_SUB(#{dto.endTime}, INTERVAL DATEDIFF(#{dto.endTime},#{dto.startTime}) DAY) AND principal_id = user.id) AS QoQRealAmountSum,
                (SELECT COALESCE(SUM(order_fund.real_amount),0) FROM assets, order_fund WHERE assets.deleted = 0 AND assets.id = order_fund.business_id AND order_fund.deleted = 0 AND business_type = 'ASSET_BUSINESS' AND principal_id = user.id) AS totalRealAmountSum
         FROM
-            (SELECT user.id AS id,
+            (SELECT DISTINCT user.id AS id,
                     user.`name` AS userName,
                     department.name AS departmentName,
                     department.id AS departmentId
@@ -481,7 +481,6 @@
                AND sorted_department.deleted = 0
                AND user_post.deleted = 0
                AND sorted_department.business_type = 'ASSET_BUSINESS'
-             GROUP BY user.id
             ) AS user
         <where>
             <if test="dto != null and dto.departmentId != null">
@@ -490,9 +489,6 @@
             <if test="dto != null and dto.userName != null">
                 AND user.userName LIKE CONCAT('%',#{dto.userName},'%')
             </if>
-            <if test="dto != null and dto.userName != null">
-                AND user.userName LIKE CONCAT('%',#{dto.userName},'%')
-            </if>
         </where>
         GROUP BY user.id
     </select>
@@ -548,16 +544,16 @@
         LEFT JOIN assets_production AS report ON report.business_id =nodeInfo.businessId AND report.production_no = nodeInfo.business_min_id AND report.deleted = 0 AND report.production_type != 'STATEMENT'
         LEFT JOIN order_fund ON order_fund.business_id = assets.id AND business_type = 'ASSET_BUSINESS' AND order_fund.deleted = 0
         WHERE assets.deleted = 0
-        <if test="dto != null and dto.customerId">
+        <if test="dto != null and dto.customerId != null">
             AND assets.clientele_id = #{dto.customerId}
         </if>
-        <if test="dto != null and dto.clienteleContactId">
+        <if test="dto != null and dto.clienteleContactId != null">
             AND assets.clientele_contact_id = #{dto.clienteleContactId}
         </if>
-        <if test="dto != null and dto.departmentId">
+        <if test="dto != null and dto.departmentId != null">
             AND assets.department_id = #{dto.departmentId}
         </if>
-        <if test="dto != null and dto.marketDepartmentId">
+        <if test="dto != null and dto.marketDepartmentId != null">
             AND assets.market_department_id = #{dto.marketDepartmentId}
         </if>
         <if test="dto != null and dto.principalId != null">

Разница между файлами не показана из-за своего большого размера
+ 277 - 0
dao/src/main/resources/mapper/MajorStatisticalStatementMapper.xml


+ 26 - 1
domain/src/main/java/com/dayou/dto/MajorStatisticalSelectDTO.java

@@ -9,6 +9,31 @@ import java.util.Date;
 public class MajorStatisticalSelectDTO {
 
     /**
+     * 客户id
+     */
+    private Long customerId;
+
+    /**
+     * 客户联系人id
+     */
+    private Long clienteleContactId;
+
+    /**
+     * 是否金融(true:金融,false:非金融)
+     */
+    private Boolean financial;
+
+    /**
+     * 估价目的
+     */
+    private String evaluateAim;
+
+    /**
+     * 是否口估(true:是,false:否)
+     */
+    private Boolean informalEvaluate;
+
+    /**
      * 客户经理id(user_id)
      */
     private Long clientManagerId;
@@ -59,7 +84,7 @@ public class MajorStatisticalSelectDTO {
     private String mistakeType;
 
     /**
-     * 效率类型(接单:order、预评:statement、报告:report、应收款:should、实收款:real)
+     * 效率类型(接单:order、预评:statement、报告:report、应收款:should、实收款:real、未看现场:unSite)
      */
     private String efficiencyType;
 

+ 0 - 3
domain/src/main/java/com/dayou/vo/AssetsEvaluateEfficiencyVO.java

@@ -4,9 +4,6 @@ import com.dayou.annotation.Excel;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import lombok.Data;
 
-/**
- * 资产评估部门效率 VO
- */
 @Data
 public class AssetsEvaluateEfficiencyVO {
     /**

+ 134 - 0
domain/src/main/java/com/dayou/vo/MajorEfficiencyDetailVO.java

@@ -0,0 +1,134 @@
+package com.dayou.vo;
+
+import com.dayou.annotation.Excel;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.time.LocalDate;
+
+@Data
+public class MajorEfficiencyDetailVO {
+
+    private Integer id;
+
+    /**
+     * 项目编号
+     */
+    @Excel(name = "项目编号")
+    private String orderId;
+
+    /**
+     * 是否金融(金融/非金融)
+     */
+    @Excel(name = "是否金融")
+    private String financial;
+
+    /**
+     * 项目名称
+     */
+    @Excel(name = "项目名称")
+    private String projectName;
+
+    /**
+     * 客户名称
+     */
+    @Excel(name = "客户名称")
+    private String customerName;
+
+    /**
+     * 业务来源(客户子级名称)
+     */
+    @Excel(name = "业务来源")
+    private String customerSubName;
+
+    /**
+     * 产权人
+     */
+    @Excel(name = "产权人")
+    private String owner;
+
+    /**
+     * 报告号
+     */
+    @Excel(name = "报告号")
+    private String reportNo;
+
+    /**
+     * 项目负责人名
+     */
+    @Excel(name = "项目负责人")
+    private String principalName;
+
+    /**
+     * 项目参与人
+     */
+    @Excel(name = "项目参与人")
+    private String members;
+
+    /**
+     * 客户经理名
+     */
+    @Excel(name = "客户经理")
+    private String clientManagerName;
+
+    /**
+     * 评估金额(万元)(审核定价)
+     */
+    @Excel(name = "评估金额(万元)")
+    private BigDecimal checkValueSum;
+
+    /**
+     * 建筑面积
+     */
+    @Excel(name = "建筑面积(㎡)")
+    private String buildAcreageSum;
+
+    /**
+     * 估价目的
+     */
+    @Excel(name = "估价目的")
+    private String evaluateAim;
+
+    /**
+     * 实勘时间
+     */
+    @Excel(name = "实勘时间")
+    private LocalDate reconnaissanceDate;
+
+    /**
+     * 出意见书时间
+     */
+    @Excel(name = "出意见书时间")
+    private LocalDate writeStatementDate;
+
+    /**
+     * 出报告时间
+     */
+    @Excel(name = "出报告时间")
+    private LocalDate writeReportDate;
+
+    /**
+     * 订单应收款(元)
+     */
+    @Excel(name = "订单应收款(元)")
+    private Double shouldAmount;
+
+    /**
+     * 订单实收款(元)
+     */
+    @Excel(name = "订单实收款(元)")
+    private Double realAmount;
+
+    /**
+     * 当前实例节点名称
+     */
+    @Excel(name = "当前实例节点名称")
+    private String currentNodeName;
+
+    /**
+     * 当前节点处理人
+     */
+    @Excel(name = "当前节点处理人")
+    private String handlerName;
+
+}

+ 212 - 0
domain/src/main/java/com/dayou/vo/MajorEvaluateEfficiencyVO.java

@@ -0,0 +1,212 @@
+package com.dayou.vo;
+
+import com.dayou.annotation.Excel;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+
+@Data
+public class MajorEvaluateEfficiencyVO {
+
+    /**
+     * 部门id
+     */
+    private Long departmentId;
+
+    /**
+     * 用户id
+     */
+    private Long userId;
+
+    /**
+     * 员工姓名
+     */
+    @Excel(name = "员工姓名")
+    private String userName;
+
+    /**
+     * 部门名称
+     */
+    @Excel(name = "部门名称")
+    private String departmentName;
+
+    /**
+     * 评估目的
+     */
+    @Excel(name = "评估目的")
+    private String evaluateAim;
+
+    /**
+     * 是否金融(金融/非金融)
+     */
+    @Excel(name = "是否金融", readConverterExp="true=金融,false=非金融")
+    private Boolean financial;
+
+    /**
+     * 未看现场数
+     */
+    @Excel(name = "未看现场数")
+    private Integer unSiteCount;
+
+    /**
+     * 当期口估量
+     */
+    @Excel(name = "当期口估量")
+    private Integer informalEvaluateCount;
+
+    /**
+     * 当期非口估量
+     */
+    @Excel(name = "当期非口估量")
+    private Integer unInformalEvaluateCount;
+
+    /**
+     * 同比接单数量
+     */
+    @Excel(name = "同比接单增减率(%)")
+    @JsonProperty("YoYOrderVolume")
+    private Double YoYOrderVolume;
+
+    /**
+     * 环比接单数量
+     */
+    @Excel(name = "环比接单增减率(%)")
+    @JsonProperty("QoQOrderVolume")
+    private Double QoQOrderVolume;
+
+    /**
+     * 当期预评出具数量(意见书)
+     */
+    @Excel(name = "当期预评出具数量")
+    private Integer currentPeriodStatementVolume;
+
+    /**
+     * 同比预评出具数量
+     */
+    @Excel(name = "同比预评出具增减率(%)")
+    @JsonProperty("YoYStatementVolume")
+    private Double YoYStatementVolume;
+
+    /**
+     * 环比预评出具数量
+     */
+    @Excel(name = "环比预评出具增减率(%)")
+    @JsonProperty("QoQStatementVolume")
+    private Double QoQStatementVolume;
+
+    /**
+     * 当期报告(评估报告、咨询报告、意见函)出具数量
+     */
+    @Excel(name = "当期报告出具数量")
+    private Integer currentPeriodReportVolume;
+
+    /**
+     * 同比报告(评估报告、咨询报告、意见函)出具数量
+     */
+    @Excel(name = "同比报告出具增减率(%)")
+    @JsonProperty("YoYReportVolume")
+    private Double YoYReportVolume;
+
+    /**
+     * 环比报告(评估报告、咨询报告、意见函)出具数量
+     */
+    @Excel(name = "环比报告出具增减率(%)")
+    @JsonProperty("QoQReportVolume")
+    private Double QoQReportVolume;
+
+    /**
+     * 当期应收款
+     */
+    @Excel(name = "当期应收款")
+    private Double currentPeriodShouldAmountSum;
+
+    /**
+     * 同比应收款
+     */
+    @Excel(name = "同比应收款增减率(%)")
+    @JsonProperty("YoYShouldAmountSum")
+    private Double YoYShouldAmountSum;
+
+    /**
+     * 环比应收款
+     */
+    @Excel(name = "环比应收款增减率(%)")
+    @JsonProperty("QoQShouldAmountSum")
+    private Double QoQShouldAmountSum;
+
+    /**
+     * 当期实收款
+     */
+    @Excel(name = "当期实收款")
+    private Double currentPeriodRealAmountSum;
+
+    /**
+     * 同比实收款
+     */
+    @Excel(name = "同比实收款增减率(%)")
+    @JsonProperty("YoYRealAmountSum")
+    private Double YoYRealAmountSum;
+
+    /**
+     * 环比实收款
+     */
+    @Excel(name = "环比实收款增减率(%)")
+    @JsonProperty("QoQRealAmountSum")
+    private Double QoQRealAmountSum;
+
+    /**
+     * 实收款总计
+     */
+    @Excel(name = "实收款总计")
+    private Double totalRealAmountSum;
+
+    /**
+     * 当期出单率
+     */
+    @Excel(name = "当期出单率")
+    private Double currentPeriodOrderHasReportVolume;
+
+    /**
+     * 同比出单率(报告数/接单数)
+     */
+    @Excel(name = "同比出单率")
+    @JsonProperty("YoYOrderHasReportVolume")
+    private Double YoYOrderHasReportVolume;
+
+    /**
+     * 环比出单率(报告数/接单数)
+     */
+    @Excel(name = "环比出单率")
+    @JsonProperty("QoQOrderHasReportVolume")
+    private Double QoQOrderHasReportVolume;
+
+    /**
+     * 累计年口估数
+     */
+    @Excel(name = "累计年口估数")
+    private Integer yearInformalEvaluateCount;
+
+    /**
+     * 意见书平均内控作业时长(AICP:Average Internal Control Processing)
+     */
+    @Excel(name = "意见书平均内控作业时长")
+    private Double statementAICPTime;
+
+    /**
+     * 报告平均内控作业时长(AICP:Average Internal Control Processing)
+     */
+    @Excel(name = "报告平均内控作业时长")
+    private Double reportAICPTime;
+
+    /**
+     * 报价时长(金融)
+     */
+    @Excel(name = "报价时长(金融)")
+    private Double financialQuoteProcessingTime;
+
+    /**
+     * 报价时长(非金融)
+     */
+    @Excel(name = "报价时长(非金融)")
+    private Double unFinancialQuoteProcessingTime;
+
+}

+ 30 - 3
service/src/main/java/com/dayou/service/IMajorStatisticalStatementService.java

@@ -2,9 +2,7 @@ package com.dayou.service;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.dayou.dto.MajorStatisticalSelectDTO;
-import com.dayou.vo.MajorLedgerVO;
-import com.dayou.vo.MajorPerformanceDeductionDetailVO;
-import com.dayou.vo.MajorPerformanceDeductionVO;
+import com.dayou.vo.*;
 
 import java.util.List;
 
@@ -53,4 +51,33 @@ public interface IMajorStatisticalStatementService {
      * @return List<MajorPerformanceDeductionDetailVO>
      */
     List<MajorPerformanceDeductionDetailVO> exportMajorPerformanceDeductionDetailVO(MajorStatisticalSelectDTO dto);
+
+    /**
+     * 评估部效率查询
+     * @param dto 查询dto
+     * @return List<MajorEvaluateEfficiencyVO>
+     */
+    List<MajorEvaluateEfficiencyVO> getMajorEvaluateDepEfficiencyVO(MajorStatisticalSelectDTO dto);
+
+    /**
+     * 评估人员效率查询
+     * @param dto 查询dto
+     * @return List<MajorEvaluateEfficiencyVO>
+     */
+    List<MajorEvaluateEfficiencyVO> getMajorEvaluatePerEfficiencyVO(MajorStatisticalSelectDTO dto);
+
+    /**
+     * 效率详情列表查询
+     * @param page 分页
+     * @param dto 查询dto
+     * @return Page<MajorEfficiencyDetailVO>
+     */
+    Page<MajorEfficiencyDetailVO> getMajorEfficiencyDetailVO(Page page, MajorStatisticalSelectDTO dto);
+
+    /**
+     * 效率详情列表导出
+     * @param dto 查询dto
+     * @return List<MajorEfficiencyDetailVO>
+     */
+    List<MajorEfficiencyDetailVO> exportMajorEfficiencyDetailVO(MajorStatisticalSelectDTO dto);
 }

+ 1 - 1
service/src/main/java/com/dayou/service/impl/AssetsStatisticalStatementServiceImpl.java

@@ -358,7 +358,7 @@ public class AssetsStatisticalStatementServiceImpl implements IAssetsStatistical
     }
 
     /**
-     * 效率详情列表查询
+     * 效率详情列表导出
      * @param dto 查询dto
      * @return Page<AssetsEvaluateEfficiencyDetailVO>
      */

+ 215 - 3
service/src/main/java/com/dayou/service/impl/MajorStatisticalStatementServiceImpl.java

@@ -1,5 +1,6 @@
 package com.dayou.service.impl;
 
+import cn.hutool.core.util.NumberUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson.JSONArray;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -9,9 +10,7 @@ import com.dayou.entity.User;
 import com.dayou.mapper.MajorStatisticalStatementMapper;
 import com.dayou.service.IUserService;
 import com.dayou.service.IMajorStatisticalStatementService;
-import com.dayou.vo.MajorLedgerVO;
-import com.dayou.vo.MajorPerformanceDeductionDetailVO;
-import com.dayou.vo.MajorPerformanceDeductionVO;
+import com.dayou.vo.*;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -97,6 +96,219 @@ public class MajorStatisticalStatementServiceImpl implements IMajorStatisticalSt
     }
 
     /**
+     * 评估部效率查询
+     * @param dto 查询dto
+     * @return List<MajorEvaluateEfficiencyVO>
+     */
+    @Override
+    public List<MajorEvaluateEfficiencyVO> getMajorEvaluateDepEfficiencyVO(MajorStatisticalSelectDTO dto) {
+        List<MajorEvaluateEfficiencyVO> efficiencyVOList = majorStatisticalStatementMapper.getMajorEvaluateDepEfficiencyVO(dto);
+        // 循环计算每个部门的同比、环比
+        for (MajorEvaluateEfficiencyVO efficiencyVO : efficiencyVOList) {
+
+            // 计算当期出单率
+            if (efficiencyVO.getCurrentPeriodReportVolume() > 0) { // 当期出报告书大于0
+                efficiencyVO.setCurrentPeriodOrderHasReportVolume((efficiencyVO.getCurrentPeriodReportVolume().doubleValue() / (efficiencyVO.getInformalEvaluateCount() + efficiencyVO.getUnInformalEvaluateCount())));
+            } else {
+                efficiencyVO.setCurrentPeriodOrderHasReportVolume(0.0);
+            }
+            // 计算同比出单率
+            if (efficiencyVO.getYoYReportVolume() > 0) {
+                efficiencyVO.setYoYOrderHasReportVolume(NumberUtil.round((efficiencyVO.getCurrentPeriodOrderHasReportVolume() - (efficiencyVO.getYoYReportVolume() / efficiencyVO.getYoYOrderVolume())) / (efficiencyVO.getYoYReportVolume() / efficiencyVO.getYoYOrderVolume()) * 100, 2).doubleValue());
+            } else {
+                efficiencyVO.setYoYOrderHasReportVolume(NumberUtil.round(efficiencyVO.getCurrentPeriodOrderHasReportVolume() * 100, 2).doubleValue());
+            }
+            // 计算环比出单率
+            if (efficiencyVO.getQoQReportVolume() > 0) {
+                efficiencyVO.setQoQOrderHasReportVolume(NumberUtil.round((efficiencyVO.getCurrentPeriodOrderHasReportVolume() - (efficiencyVO.getQoQReportVolume() / efficiencyVO.getQoQOrderVolume())) / (efficiencyVO.getQoQReportVolume() / efficiencyVO.getQoQOrderVolume()) * 100, 2).doubleValue());
+            } else {
+                efficiencyVO.setQoQOrderHasReportVolume(NumberUtil.round(efficiencyVO.getCurrentPeriodOrderHasReportVolume() * 100, 2).doubleValue());
+            }
+            efficiencyVO.setCurrentPeriodOrderHasReportVolume(NumberUtil.round(efficiencyVO.getCurrentPeriodOrderHasReportVolume() * 100, 2).doubleValue());
+
+            // 同比计算(同比增长率 = (当期数据 - 去年同期数据) / 去年同期数据 * 100%) (保留两位小数)
+            if (efficiencyVO.getYoYOrderVolume() > 0) {
+                efficiencyVO.setYoYOrderVolume(NumberUtil.round(((efficiencyVO.getInformalEvaluateCount() + efficiencyVO.getUnInformalEvaluateCount()) - efficiencyVO.getYoYOrderVolume()) / efficiencyVO.getYoYOrderVolume() * 100, 2).doubleValue());
+            } else {
+                efficiencyVO.setYoYOrderVolume((double) ((efficiencyVO.getInformalEvaluateCount() + efficiencyVO.getUnInformalEvaluateCount()) * 100));
+            }
+            if (efficiencyVO.getYoYStatementVolume() > 0) {
+                efficiencyVO.setYoYStatementVolume(NumberUtil.round((efficiencyVO.getCurrentPeriodStatementVolume() - efficiencyVO.getYoYStatementVolume()) / efficiencyVO.getYoYStatementVolume() * 100, 2).doubleValue());
+            } else {
+                efficiencyVO.setYoYStatementVolume((double) (efficiencyVO.getCurrentPeriodStatementVolume() * 100));
+            }
+            if (efficiencyVO.getYoYReportVolume() > 0) {
+                efficiencyVO.setYoYReportVolume(NumberUtil.round((efficiencyVO.getCurrentPeriodReportVolume() - efficiencyVO.getYoYReportVolume()) / efficiencyVO.getYoYReportVolume() * 100, 2).doubleValue());
+            } else {
+                efficiencyVO.setYoYReportVolume((double) (efficiencyVO.getCurrentPeriodReportVolume() * 100));
+            }
+            if (efficiencyVO.getYoYShouldAmountSum() > 0) {
+                efficiencyVO.setYoYShouldAmountSum(NumberUtil.round((efficiencyVO.getCurrentPeriodShouldAmountSum() - efficiencyVO.getYoYShouldAmountSum()) / efficiencyVO.getYoYShouldAmountSum() * 100, 2).doubleValue());
+            } else {
+                efficiencyVO.setYoYShouldAmountSum(efficiencyVO.getCurrentPeriodShouldAmountSum() * 100);
+            }
+            if (efficiencyVO.getYoYRealAmountSum() > 0) {
+                efficiencyVO.setYoYRealAmountSum(NumberUtil.round((efficiencyVO.getCurrentPeriodRealAmountSum() - efficiencyVO.getYoYRealAmountSum()) / efficiencyVO.getYoYRealAmountSum() * 100, 2).doubleValue());
+            } else {
+                efficiencyVO.setYoYRealAmountSum(efficiencyVO.getCurrentPeriodRealAmountSum() * 100);
+            }
+
+            // 环比计算(环比增长率 = (当期数据 - 前一期数据) / 前一期数据 * 100%) (保留两位小数)
+            if (efficiencyVO.getQoQOrderVolume() > 0) {
+                efficiencyVO.setQoQOrderVolume(NumberUtil.round(((efficiencyVO.getInformalEvaluateCount() + efficiencyVO.getUnInformalEvaluateCount()) - efficiencyVO.getQoQOrderVolume()) / efficiencyVO.getQoQOrderVolume() * 100, 2).doubleValue());
+            } else {
+                efficiencyVO.setQoQOrderVolume((double) ((efficiencyVO.getInformalEvaluateCount() + efficiencyVO.getUnInformalEvaluateCount()) * 100));
+            }
+            if (efficiencyVO.getQoQStatementVolume() > 0) {
+                efficiencyVO.setQoQStatementVolume(NumberUtil.round((efficiencyVO.getCurrentPeriodStatementVolume() - efficiencyVO.getQoQStatementVolume()) / efficiencyVO.getQoQStatementVolume() * 100, 2).doubleValue());
+            } else {
+                efficiencyVO.setQoQStatementVolume((double) (efficiencyVO.getCurrentPeriodStatementVolume() * 100));
+            }
+            if (efficiencyVO.getQoQReportVolume() > 0) {
+                efficiencyVO.setQoQReportVolume(NumberUtil.round((efficiencyVO.getCurrentPeriodReportVolume() - efficiencyVO.getQoQReportVolume()) / efficiencyVO.getQoQReportVolume() * 100, 2).doubleValue());
+            } else {
+                efficiencyVO.setQoQReportVolume((double) (efficiencyVO.getCurrentPeriodReportVolume() * 100));
+            }
+            if (efficiencyVO.getQoQShouldAmountSum() > 0) {
+                efficiencyVO.setQoQShouldAmountSum(NumberUtil.round((efficiencyVO.getCurrentPeriodShouldAmountSum() - efficiencyVO.getQoQShouldAmountSum()) / efficiencyVO.getQoQShouldAmountSum() * 100, 2).doubleValue());
+            } else {
+                efficiencyVO.setQoQShouldAmountSum(efficiencyVO.getCurrentPeriodShouldAmountSum() * 100);
+            }
+            if (efficiencyVO.getQoQRealAmountSum() > 0) {
+                efficiencyVO.setQoQRealAmountSum(NumberUtil.round((efficiencyVO.getCurrentPeriodRealAmountSum() - efficiencyVO.getQoQRealAmountSum()) / efficiencyVO.getQoQRealAmountSum() * 100, 2).doubleValue());
+            } else {
+                efficiencyVO.setQoQRealAmountSum(efficiencyVO.getCurrentPeriodRealAmountSum() * 100);
+            }
+        }
+        return efficiencyVOList;
+    }
+
+    /**
+     * 评估人员效率查询
+     * @param dto 查询dto
+     * @return List<MajorEvaluateEfficiencyVO>
+     */
+    @Override
+    public List<MajorEvaluateEfficiencyVO> getMajorEvaluatePerEfficiencyVO(MajorStatisticalSelectDTO dto) {
+        List<MajorEvaluateEfficiencyVO> efficiencyVOList = majorStatisticalStatementMapper.getMajorEvaluatePerEfficiencyVO(dto);
+        // 循环计算每个部门的同比、环比
+        for (MajorEvaluateEfficiencyVO efficiencyVO : efficiencyVOList) {
+
+            // 计算当期出单率
+            if (efficiencyVO.getCurrentPeriodReportVolume() > 0) { // 当期出报告书大于0
+                efficiencyVO.setCurrentPeriodOrderHasReportVolume((efficiencyVO.getCurrentPeriodReportVolume().doubleValue() / (efficiencyVO.getInformalEvaluateCount() + efficiencyVO.getUnInformalEvaluateCount())));
+            } else {
+                efficiencyVO.setCurrentPeriodOrderHasReportVolume(0.0);
+            }
+            // 计算同比出单率
+            if (efficiencyVO.getYoYReportVolume() > 0) {
+                efficiencyVO.setYoYOrderHasReportVolume(NumberUtil.round((efficiencyVO.getCurrentPeriodOrderHasReportVolume() - (efficiencyVO.getYoYReportVolume() / efficiencyVO.getYoYOrderVolume())) / (efficiencyVO.getYoYReportVolume() / efficiencyVO.getYoYOrderVolume()) * 100, 2).doubleValue());
+            } else {
+                efficiencyVO.setYoYOrderHasReportVolume(NumberUtil.round(efficiencyVO.getCurrentPeriodOrderHasReportVolume() * 100, 2).doubleValue());
+            }
+            // 计算环比出单率
+            if (efficiencyVO.getQoQReportVolume() > 0) {
+                efficiencyVO.setQoQOrderHasReportVolume(NumberUtil.round((efficiencyVO.getCurrentPeriodOrderHasReportVolume() - (efficiencyVO.getQoQReportVolume() / efficiencyVO.getQoQOrderVolume())) / (efficiencyVO.getQoQReportVolume() / efficiencyVO.getQoQOrderVolume()) * 100, 2).doubleValue());
+            } else {
+                efficiencyVO.setQoQOrderHasReportVolume(NumberUtil.round(efficiencyVO.getCurrentPeriodOrderHasReportVolume() * 100, 2).doubleValue());
+            }
+            efficiencyVO.setCurrentPeriodOrderHasReportVolume(NumberUtil.round(efficiencyVO.getCurrentPeriodOrderHasReportVolume() * 100, 2).doubleValue());
+
+            // 同比计算(同比增长率 = (当期数据 - 去年同期数据) / 去年同期数据 * 100%) (保留两位小数)
+            if (efficiencyVO.getYoYOrderVolume() > 0) {
+                efficiencyVO.setYoYOrderVolume(NumberUtil.round(((efficiencyVO.getInformalEvaluateCount() + efficiencyVO.getUnInformalEvaluateCount()) - efficiencyVO.getYoYOrderVolume()) / efficiencyVO.getYoYOrderVolume() * 100, 2).doubleValue());
+            } else {
+                efficiencyVO.setYoYOrderVolume((double) ((efficiencyVO.getInformalEvaluateCount() + efficiencyVO.getUnInformalEvaluateCount()) * 100));
+            }
+            if (efficiencyVO.getYoYStatementVolume() > 0) {
+                efficiencyVO.setYoYStatementVolume(NumberUtil.round((efficiencyVO.getCurrentPeriodStatementVolume() - efficiencyVO.getYoYStatementVolume()) / efficiencyVO.getYoYStatementVolume() * 100, 2).doubleValue());
+            } else {
+                efficiencyVO.setYoYStatementVolume((double) (efficiencyVO.getCurrentPeriodStatementVolume() * 100));
+            }
+            if (efficiencyVO.getYoYReportVolume() > 0) {
+                efficiencyVO.setYoYReportVolume(NumberUtil.round((efficiencyVO.getCurrentPeriodReportVolume() - efficiencyVO.getYoYReportVolume()) / efficiencyVO.getYoYReportVolume() * 100, 2).doubleValue());
+            } else {
+                efficiencyVO.setYoYReportVolume((double) (efficiencyVO.getCurrentPeriodReportVolume() * 100));
+            }
+            if (efficiencyVO.getYoYShouldAmountSum() > 0) {
+                efficiencyVO.setYoYShouldAmountSum(NumberUtil.round((efficiencyVO.getCurrentPeriodShouldAmountSum() - efficiencyVO.getYoYShouldAmountSum()) / efficiencyVO.getYoYShouldAmountSum() * 100, 2).doubleValue());
+            } else {
+                efficiencyVO.setYoYShouldAmountSum(efficiencyVO.getCurrentPeriodShouldAmountSum() * 100);
+            }
+            if (efficiencyVO.getYoYRealAmountSum() > 0) {
+                efficiencyVO.setYoYRealAmountSum(NumberUtil.round((efficiencyVO.getCurrentPeriodRealAmountSum() - efficiencyVO.getYoYRealAmountSum()) / efficiencyVO.getYoYRealAmountSum() * 100, 2).doubleValue());
+            } else {
+                efficiencyVO.setYoYRealAmountSum(efficiencyVO.getCurrentPeriodRealAmountSum() * 100);
+            }
+
+            // 环比计算(环比增长率 = (当期数据 - 前一期数据) / 前一期数据 * 100%) (保留两位小数)
+            if (efficiencyVO.getQoQOrderVolume() > 0) {
+                efficiencyVO.setQoQOrderVolume(NumberUtil.round(((efficiencyVO.getInformalEvaluateCount() + efficiencyVO.getUnInformalEvaluateCount()) - efficiencyVO.getQoQOrderVolume()) / efficiencyVO.getQoQOrderVolume() * 100, 2).doubleValue());
+            } else {
+                efficiencyVO.setQoQOrderVolume((double) ((efficiencyVO.getInformalEvaluateCount() + efficiencyVO.getUnInformalEvaluateCount()) * 100));
+            }
+            if (efficiencyVO.getQoQStatementVolume() > 0) {
+                efficiencyVO.setQoQStatementVolume(NumberUtil.round((efficiencyVO.getCurrentPeriodStatementVolume() - efficiencyVO.getQoQStatementVolume()) / efficiencyVO.getQoQStatementVolume() * 100, 2).doubleValue());
+            } else {
+                efficiencyVO.setQoQStatementVolume((double) (efficiencyVO.getCurrentPeriodStatementVolume() * 100));
+            }
+            if (efficiencyVO.getQoQReportVolume() > 0) {
+                efficiencyVO.setQoQReportVolume(NumberUtil.round((efficiencyVO.getCurrentPeriodReportVolume() - efficiencyVO.getQoQReportVolume()) / efficiencyVO.getQoQReportVolume() * 100, 2).doubleValue());
+            } else {
+                efficiencyVO.setQoQReportVolume((double) (efficiencyVO.getCurrentPeriodReportVolume() * 100));
+            }
+            if (efficiencyVO.getQoQShouldAmountSum() > 0) {
+                efficiencyVO.setQoQShouldAmountSum(NumberUtil.round((efficiencyVO.getCurrentPeriodShouldAmountSum() - efficiencyVO.getQoQShouldAmountSum()) / efficiencyVO.getQoQShouldAmountSum() * 100, 2).doubleValue());
+            } else {
+                efficiencyVO.setQoQShouldAmountSum(efficiencyVO.getCurrentPeriodShouldAmountSum() * 100);
+            }
+            if (efficiencyVO.getQoQRealAmountSum() > 0) {
+                efficiencyVO.setQoQRealAmountSum(NumberUtil.round((efficiencyVO.getCurrentPeriodRealAmountSum() - efficiencyVO.getQoQRealAmountSum()) / efficiencyVO.getQoQRealAmountSum() * 100, 2).doubleValue());
+            } else {
+                efficiencyVO.setQoQRealAmountSum(efficiencyVO.getCurrentPeriodRealAmountSum() * 100);
+            }
+        }
+        return efficiencyVOList;
+    }
+
+    /**
+     * 效率详情列表查询
+     * @param page 分页
+     * @param dto 查询dto
+     * @return Page<MajorEfficiencyDetailVO>
+     */
+    @Override
+    public Page<MajorEfficiencyDetailVO> getMajorEfficiencyDetailVO(Page page, MajorStatisticalSelectDTO dto) {
+        Page<MajorEfficiencyDetailVO> detailVOPage = majorStatisticalStatementMapper.getMajorEfficiencyDetailVO(page, dto);
+        for (MajorEfficiencyDetailVO detailVO : detailVOPage.getRecords()){
+            if (ObjectUtil.isNotNull(detailVO.getMembers())){
+                JSONArray jsonArray = JSONArray.parseArray(detailVO.getMembers());
+                List<Long> membersId = jsonArray.toJavaList(Long.class);
+                String names = null;
+                for (Long id : membersId) {
+                    if (ObjectUtil.isNull(names)) {
+                        names = userService.getById(id).getName() + ';';
+                    } else {
+                        names += userService.getById(id).getName() + ';';
+                    }
+                }
+                detailVO.setMembers(names);
+            }
+        }
+        return detailVOPage;
+    }
+
+    /**
+     * 效率详情列表导出
+     * @param dto 查询dto
+     * @return List<MajorEfficiencyDetailVO>
+     */
+    @Override
+    public List<MajorEfficiencyDetailVO> exportMajorEfficiencyDetailVO(MajorStatisticalSelectDTO dto) {
+        return majorStatisticalStatementMapper.exportMajorEfficiencyDetailVO(dto);
+    }
+
+    /**
      * 设置项目参与人
      * @param majorLedgerVOList 台账集合
      * @return List<MajorLedgerVO>