فهرست منبع

1.新增市场部效率与客户经理效率相关接口
2.assets表新增字段

GouGengquan 11 ماه پیش
والد
کامیت
8069bead7d

+ 10 - 0
biz-base/src/main/java/com/dayou/controller/AssetsController.java

@@ -214,6 +214,16 @@ public class AssetsController extends BaseController {
         return RestResponse.data(assetsService.getAssetsBusinessMembers(assetsBusinessMembersDTO));
     }
 
+    /**
+     * 获取资产市场下单部门
+     * @return RestResponse<List<PullDownModel>>
+     */
+    @GetMapping("/getAssetsMarketDepartment")
+    public RestResponse<List<PullDownModel>> getAssetsMarketDepartment(){
+        List<PullDownModel> ret = ConvertUtil.copyList(assetsService.getAssetsMarketDepartment(), PullDownModel.class);
+        return RestResponse.data(ret);
+    }
+
     @GetMapping("/detail/{id}")
     public RestResponse<Assets> detail(@PathVariable Long id) {
         Assets assets = assetsService.detail(id);

+ 40 - 0
biz-base/src/main/java/com/dayou/controller/AssetsStatisticalStatementController.java

@@ -173,4 +173,44 @@ public class AssetsStatisticalStatementController extends BaseController{
         exportPlus(response, "资产订单列表", result, AssetsEvaluateEfficiencyDetailVO.class);
     }
 
+    /**
+     * 市场部效率查询
+     * @param dto 查询dto
+     * @return List<AssetsMarketEfficiencyVO>
+     */
+    @GetMapping("/market/dep/getEfficiencyVO")
+    public RestResponse<List<AssetsMarketEfficiencyVO>> getAssetsMarketDepEfficiencyVO(AssetsStatisticalSelectDTO dto) {
+        return RestResponse.data(assetsStatisticalStatementService.getAssetsMarketDepEfficiencyVO(dto));
+    }
+
+    /**
+     * 市场部效率导出
+     * @param dto 查询dto
+     */
+    @GetMapping("/market/dep/getEfficiencyVO/export")
+    public void assetsMarketDepEfficiencyVOExport(AssetsStatisticalSelectDTO dto, HttpServletResponse response) throws IOException {
+        List<AssetsMarketEfficiencyVO> result = assetsStatisticalStatementService.getAssetsMarketDepEfficiencyVO(dto);
+        exportPlus(response, "市场部效率值表", result, AssetsMarketEfficiencyVO.class);
+    }
+
+    /**
+     * 客户经理效率查询
+     * @param dto 查询dto
+     * @return List<AssetsMarketEfficiencyVO>
+     */
+    @GetMapping("/market/per/getEfficiencyVO")
+    public RestResponse<List<AssetsMarketEfficiencyVO>> getAssetsMarketPerEfficiencyVO(AssetsStatisticalSelectDTO dto) {
+        return RestResponse.data(assetsStatisticalStatementService.getAssetsMarketPerEfficiencyVO(dto));
+    }
+
+    /**
+     * 客户经理效率导出
+     * @param dto 查询dto
+     */
+    @GetMapping("/market/per/getEfficiencyVO/export")
+    public void assetsMarketPerEfficiencyVOExport(AssetsStatisticalSelectDTO dto, HttpServletResponse response) throws IOException {
+        List<AssetsMarketEfficiencyVO> result = assetsStatisticalStatementService.getAssetsMarketPerEfficiencyVO(dto);
+        exportPlus(response, "客户经理效率值表", result, AssetsMarketEfficiencyVO.class);
+    }
+
 }

+ 14 - 0
dao/src/main/java/com/dayou/mapper/AssetsMapper.java

@@ -6,6 +6,7 @@ import com.dayou.dto.AssetsSelectDTO;
 import com.dayou.entity.Assets;
 import com.dayou.dao.CustomBaseMapper;
 import com.dayou.entity.BusinessNumber;
+import com.dayou.entity.Department;
 import com.dayou.vo.AssetsBusinessMember;
 import com.dayou.vo.AssetsOrderFundInvoiceVO;
 import com.dayou.vo.AssetsRepertoryVo;
@@ -130,6 +131,19 @@ public interface AssetsMapper extends CustomBaseMapper<Assets> {
     AssetsBusinessMember getAssetsBusinessMember(@Param("userId") Long userId);
 
     /**
+     * 通过客户经理id获取下单部门
+     * @param managerId 客户经理id
+     * @return Long 下单部门id
+     */
+    Long getManagerDepId(@Param("managerId") Long managerId);
+
+    /**
+     * 获取资产下单部门
+     * @return List<Department> 下单部门id
+     */
+    List<Department> getMarkeDepartment();
+
+    /**
      * 更新资产订单基本信息
      * @param assets 更新信息
      * @return Boolean

+ 21 - 0
dao/src/main/java/com/dayou/mapper/AssetsStatisticalStatementMapper.java

@@ -95,4 +95,25 @@ public interface AssetsStatisticalStatementMapper {
      */
     List<AssetsEvaluateEfficiencyDetailVO> assetsEvaEffDetailVOExport(@Param("dto") AssetsStatisticalSelectDTO dto);
 
+    /**
+     * 市场部效率查询
+     * @param dto 查询dto
+     * @return List<AssetsMarketEfficiencyVO>
+     */
+    List<AssetsMarketEfficiencyVO> getAssetsMarketDepEfficiencyVO(@Param("dto") AssetsStatisticalSelectDTO dto);
+
+    /**
+     * 客户经理效率查询
+     * @param dto 查询dto
+     * @return List<AssetsMarketEfficiencyVO>
+     */
+    List<AssetsMarketEfficiencyVO> getAssetsMarketPerEfficiencyVO(@Param("dto") AssetsStatisticalSelectDTO dto);
+
+    /**
+     * 资产客户效率查询
+     * @param dto 查询dto
+     * @return List<AssetsCustomerEfficiencyVO>
+     */
+    List<AssetsCustomerEfficiencyVO> getAssetsCustomerEfficiencyVO(@Param("dto") AssetsStatisticalSelectDTO dto);
+
 }

+ 22 - 0
dao/src/main/resources/mapper/AssetsMapper.xml

@@ -729,6 +729,28 @@
         AND id = #{userId}
     </select>
 
+    <!--通过客户经理id获取下单部门-->
+    <select id="getManagerDepId" resultType="java.lang.Long">
+        SELECT post.department_id
+        FROM user,user_post,post
+        WHERE user.id = user_post.user_id
+        AND user_post.post_id = post.id
+        AND user_post.deleted = 0
+        AND post.deleted = 0
+        AND user.id = #{managerId}
+        LIMIT 1
+    </select>
+
+    <!--获取资产下单部门-->
+    <select id="getMarkeDepartment" resultType="com.dayou.entity.Department">
+        SELECT department.id,department.name
+        FROM assets,department
+        WHERE assets.market_department_id = department.id
+        AND department.deleted = 0
+        AND assets.deleted = 0
+        GROUP BY department.id
+    </select>
+
     <!--更新资产订单基本信息-->
     <update id="updateOrderBaseInfo">
         UPDATE assets

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 130 - 1
dao/src/main/resources/mapper/AssetsStatisticalStatementMapper.xml


+ 11 - 1
domain/src/main/java/com/dayou/dto/AssetsStatisticalSelectDTO.java

@@ -9,6 +9,11 @@ import java.util.Date;
 public class AssetsStatisticalSelectDTO {
 
     /**
+     * 客户id
+     */
+    private Long customerId;
+
+    /**
      * 关键字信息
      */
     private String keyWord;
@@ -29,11 +34,16 @@ public class AssetsStatisticalSelectDTO {
     private Long principalId;
 
     /**
-     * 部门id
+     * 接单部门id
      */
     private Long departmentId;
 
     /**
+     * 市场部门id
+     */
+    private Long marketDepartmentId;
+
+    /**
      * 资产业务类型
      */
     private String assetsBusinessGener;

+ 5 - 0
domain/src/main/java/com/dayou/entity/Assets.java

@@ -192,5 +192,10 @@ public class Assets extends BaseEntity {
     @ExportCell(columnName = "备注")
     private String remark;
 
+    /**
+     * 市场部门id(下单部门id)
+     */
+    private Long marketDepartmentId;
+
 
 }

+ 190 - 0
domain/src/main/java/com/dayou/vo/AssetsCustomerEfficiencyVO.java

@@ -0,0 +1,190 @@
+package com.dayou.vo;
+
+import com.dayou.annotation.Excel;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+
+@Data
+public class AssetsCustomerEfficiencyVO {
+
+    /**
+     * 部门id
+     */
+    private Long customerId;
+
+    /**
+     * 客户名称
+     */
+    @Excel(name = "客户名称")
+    private String customerName;
+
+    /**
+     * 用户id
+     */
+    private Long userId;
+
+    /**
+     * 客户经理
+     */
+    @Excel(name = "客户经理")
+    private String userName;
+
+    /**
+     * 当期部门接单量
+     */
+    @Excel(name = "当期来单量")
+    private Integer currentPeriodOrderVolume;
+
+    /**
+     * 同比接单数量
+     */
+    @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 allRealAmountSum;
+
+    /**
+     * 财务损失(元)
+     */
+    @Excel(name = "财务损失(元)")
+    private Double financialLossSum;
+
+    /**
+     * 财务损失率(%)
+     */
+    @Excel(name = "财务损失率(%)")
+    private Double financialLossVolume;
+
+    /**
+     * 当期出单率
+     */
+    @Excel(name = "当期出单率")
+    private Double currentPeriodOrderHasReportVolume;
+
+    /**
+     * 同比出单率(报告数/接单数)
+     */
+    @Excel(name = "同比出单率")
+    @JsonProperty("YoYOrderHasReportVolume")
+    private Double YoYOrderHasReportVolume;
+
+    /**
+     * 环比出单率(报告数/接单数)
+     */
+    @Excel(name = "环比出单率")
+    @JsonProperty("QoQOrderHasReportVolume")
+    private Double QoQOrderHasReportVolume;
+
+    /**
+     * 当期收费折扣率
+     */
+    @Excel(name = "当期收费折扣率")
+    private Double currentDiscountVolume;
+
+    /**
+     * 同比收费折扣率
+     */
+    @Excel(name = "同比收费折扣率")
+    @JsonProperty("YoYDiscountVolume")
+    private Double YoYDiscountVolume;
+
+    /**
+     * 环比收费折扣率
+     */
+    @Excel(name = "环比收费折扣率")
+    @JsonProperty("QoQDiscountVolume")
+    private Double QoQDiscountVolume;
+
+}

+ 174 - 0
domain/src/main/java/com/dayou/vo/AssetsMarketEfficiencyVO.java

@@ -0,0 +1,174 @@
+package com.dayou.vo;
+
+import com.dayou.annotation.Excel;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+
+@Data
+public class AssetsMarketEfficiencyVO {
+
+    /**
+     * 部门id
+     */
+    private Long departmentId;
+
+    /**
+     * 用户id
+     */
+    private Long userId;
+
+    /**
+     * 员工姓名
+     */
+    @Excel(name = "员工姓名")
+    private String userName;
+
+    /**
+     * 部门名称
+     */
+    @Excel(name = "部门名称")
+    private String departmentName;
+
+    /**
+     * 当期部门接单量
+     */
+    @Excel(name = "当期下单量")
+    private Integer currentPeriodOrderVolume;
+
+    /**
+     * 同比接单数量
+     */
+    @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 currentPeriodOrderHasReportVolume;
+
+    /**
+     * 同比出单率(报告数/接单数)
+     */
+    @Excel(name = "同比出单率")
+    @JsonProperty("YoYOrderHasReportVolume")
+    private Double YoYOrderHasReportVolume;
+
+    /**
+     * 环比出单率(报告数/接单数)
+     */
+    @Excel(name = "环比出单率")
+    @JsonProperty("QoQOrderHasReportVolume")
+    private Double QoQOrderHasReportVolume;
+
+    /**
+     * 当期实收款订单数
+     */
+    private Integer currentPeriodRealAmountOrderCount;
+
+    /**
+     * 死单率A(%)
+     */
+    @Excel(name = "死单率A(%)")
+    private Double deadOrderVolumeA;
+
+    /**
+     * 死单率B(%)
+     */
+    @Excel(name = "死单率B(%)")
+    private Double deadOrderVolumeB;
+
+    /**
+     * 死单率C(%)
+     */
+    @Excel(name = "死单率C(%)")
+    private Double deadOrderVolumeC;
+}

+ 7 - 0
service/src/main/java/com/dayou/service/IAssetsService.java

@@ -3,6 +3,7 @@ import com.dayou.dto.*;
 import com.dayou.entity.Assets;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.dayou.entity.Department;
 import com.dayou.vo.AssetsBusinessMember;
 import com.dayou.vo.AssetsOrderFundInvoiceVO;
 import com.dayou.vo.AssetsRepertoryVo;
@@ -138,4 +139,10 @@ public interface IAssetsService extends IService<Assets> {
          */
         Boolean updateOrderBaseInfo(Assets assets);
 
+        /**
+         * 获取资产市场下单部门
+         * @return List<Department>
+         */
+        List<Department> getAssetsMarketDepartment();
+
 }

+ 16 - 0
service/src/main/java/com/dayou/service/IAssetsStatisticalStatementService.java

@@ -1,7 +1,9 @@
 package com.dayou.service;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.dayou.common.PullDownModel;
 import com.dayou.dto.AssetsStatisticalSelectDTO;
+import com.dayou.entity.Department;
 import com.dayou.vo.*;
 
 import java.util.List;
@@ -102,4 +104,18 @@ public interface IAssetsStatisticalStatementService {
      */
     List<AssetsEvaluateEfficiencyDetailVO> assetsEvaEffDetailVOExport(AssetsStatisticalSelectDTO dto);
 
+    /**
+     * 市场部效率查询
+     * @param dto 查询dto
+     * @return List<AssetsMarketEfficiencyVO>
+     */
+    List<AssetsMarketEfficiencyVO> getAssetsMarketDepEfficiencyVO(AssetsStatisticalSelectDTO dto);
+
+    /**
+     * 客户经理效率查询
+     * @param dto 查询dto
+     * @return List<AssetsMarketEfficiencyVO>
+     */
+    List<AssetsMarketEfficiencyVO> getAssetsMarketPerEfficiencyVO(AssetsStatisticalSelectDTO dto);
+
 }

+ 11 - 0
service/src/main/java/com/dayou/service/impl/AssetsServiceImpl.java

@@ -200,6 +200,8 @@ public class AssetsServiceImpl extends ServiceImpl<AssetsMapper, Assets> impleme
     public WorkNodeCommit add(Assets assets) {
         //获取项目编号
         assets.setOrderId(businessNumberService.takeOrderNumber());
+        //获取下单部门id
+        assets.setMarketDepartmentId(assetsMapper.getManagerDepId(assets.getClientManagerId()));
         // 判断分单类型
         if (BY_TURNS.equals(assets.getAllotType())) {
             //获取轮单部门
@@ -659,6 +661,15 @@ public class AssetsServiceImpl extends ServiceImpl<AssetsMapper, Assets> impleme
     }
 
     /**
+     * 获取资产市场下单部门
+     * @return List<Department>
+     */
+    @Override
+    public List<Department> getAssetsMarketDepartment() {
+        return assetsMapper.getMarkeDepartment();
+    }
+
+    /**
      * 获取资产轮单部门id
      *
      * @return Long

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

@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.dayou.dto.AssetsStatisticalSelectDTO;
 import com.dayou.entity.AssetsEvaluationMethod;
+import com.dayou.entity.Department;
 import com.dayou.entity.User;
 import com.dayou.mapper.AssetsEvaluationMethodMapper;
 import com.dayou.mapper.AssetsStatisticalStatementMapper;
@@ -18,6 +19,7 @@ import org.springframework.stereotype.Service;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Objects;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
@@ -368,6 +370,216 @@ public class AssetsStatisticalStatementServiceImpl implements IAssetsStatistical
     }
 
     /**
+     * 市场部效率查询
+     * @param dto 查询dto
+     * @return List<AssetsMarketEfficiencyVO>
+     */
+    @Override
+    public List<AssetsMarketEfficiencyVO> getAssetsMarketDepEfficiencyVO(AssetsStatisticalSelectDTO dto) {
+        List<AssetsMarketEfficiencyVO> efficiencyVOList = assetsStatisticalStatementMapper.getAssetsMarketDepEfficiencyVO(dto);
+
+        // 循环计算每个部门的同比、环比
+        for (AssetsMarketEfficiencyVO efficiencyVO : efficiencyVOList) {
+
+            // 计算当期出单率
+            if (efficiencyVO.getCurrentPeriodReportVolume() > 0) { // 当期出报告书大于0
+                efficiencyVO.setCurrentPeriodOrderHasReportVolume((efficiencyVO.getCurrentPeriodReportVolume().doubleValue() / efficiencyVO.getCurrentPeriodOrderVolume().doubleValue()));
+            } 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.getCurrentPeriodOrderVolume() - efficiencyVO.getYoYOrderVolume()) / efficiencyVO.getYoYOrderVolume() * 100, 2).doubleValue());
+            } else {
+                efficiencyVO.setYoYOrderVolume((double) (efficiencyVO.getCurrentPeriodOrderVolume() * 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.getCurrentPeriodOrderVolume() - efficiencyVO.getQoQOrderVolume()) / efficiencyVO.getQoQOrderVolume() * 100, 2).doubleValue());
+            } else {
+                efficiencyVO.setQoQOrderVolume((double) (efficiencyVO.getCurrentPeriodOrderVolume() * 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);
+            }
+
+            /*
+             * 计算死单率
+             * 死单率A = (下单数-出报告数) / (下单数)
+             * 死单率B = (下单数-出预评数) / (下单数)
+             * 死单率C = (下单数-收费项目数) / 下单数
+             */
+            if (efficiencyVO.getCurrentPeriodOrderVolume() > 0) {
+                efficiencyVO.setDeadOrderVolumeA(NumberUtil.round((double) (efficiencyVO.getCurrentPeriodOrderVolume() - efficiencyVO.getCurrentPeriodReportVolume()) / efficiencyVO.getCurrentPeriodOrderVolume() * 100, 2).doubleValue());
+                efficiencyVO.setDeadOrderVolumeB(NumberUtil.round((double) (efficiencyVO.getCurrentPeriodOrderVolume() - efficiencyVO.getCurrentPeriodStatementVolume()) / efficiencyVO.getCurrentPeriodOrderVolume() * 100, 2).doubleValue());
+                efficiencyVO.setDeadOrderVolumeC(NumberUtil.round((double) (efficiencyVO.getCurrentPeriodOrderVolume() - efficiencyVO.getCurrentPeriodRealAmountOrderCount()) / efficiencyVO.getCurrentPeriodOrderVolume() * 100, 2).doubleValue());
+            } else {
+                efficiencyVO.setDeadOrderVolumeA(null);
+                efficiencyVO.setDeadOrderVolumeB(null);
+                efficiencyVO.setDeadOrderVolumeC(null);
+            }
+        }
+        return efficiencyVOList;
+    }
+
+    /**
+     * 客户经理效率查询
+     * @param dto 查询dto
+     * @return List<AssetsMarketEfficiencyVO>
+     */
+    @Override
+    public List<AssetsMarketEfficiencyVO> getAssetsMarketPerEfficiencyVO(AssetsStatisticalSelectDTO dto) {
+        List<AssetsMarketEfficiencyVO> efficiencyVOList = assetsStatisticalStatementMapper.getAssetsMarketPerEfficiencyVO(dto);
+
+        // 循环计算每个部门的同比、环比
+        for (AssetsMarketEfficiencyVO efficiencyVO : efficiencyVOList) {
+
+            // 计算当期出单率
+            if (efficiencyVO.getCurrentPeriodReportVolume() > 0) { // 当期出报告书大于0
+                efficiencyVO.setCurrentPeriodOrderHasReportVolume((efficiencyVO.getCurrentPeriodReportVolume().doubleValue() / efficiencyVO.getCurrentPeriodOrderVolume().doubleValue()));
+            } 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.getCurrentPeriodOrderVolume() - efficiencyVO.getYoYOrderVolume()) / efficiencyVO.getYoYOrderVolume() * 100, 2).doubleValue());
+            } else {
+                efficiencyVO.setYoYOrderVolume((double) (efficiencyVO.getCurrentPeriodOrderVolume() * 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.getCurrentPeriodOrderVolume() - efficiencyVO.getQoQOrderVolume()) / efficiencyVO.getQoQOrderVolume() * 100, 2).doubleValue());
+            } else {
+                efficiencyVO.setQoQOrderVolume((double) (efficiencyVO.getCurrentPeriodOrderVolume() * 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);
+            }
+
+            /*
+             * 计算死单率
+             * 死单率A = (下单数-出报告数) / (下单数)
+             * 死单率B = (下单数-出预评数) / (下单数)
+             * 死单率C = (下单数-收费项目数) / 下单数
+             */
+            if (efficiencyVO.getCurrentPeriodOrderVolume() > 0) {
+                efficiencyVO.setDeadOrderVolumeA(NumberUtil.round((double) (efficiencyVO.getCurrentPeriodOrderVolume() - efficiencyVO.getCurrentPeriodReportVolume()) / efficiencyVO.getCurrentPeriodOrderVolume() * 100, 2).doubleValue());
+                efficiencyVO.setDeadOrderVolumeB(NumberUtil.round((double) (efficiencyVO.getCurrentPeriodOrderVolume() - efficiencyVO.getCurrentPeriodStatementVolume()) / efficiencyVO.getCurrentPeriodOrderVolume() * 100, 2).doubleValue());
+                efficiencyVO.setDeadOrderVolumeC(NumberUtil.round((double) (efficiencyVO.getCurrentPeriodOrderVolume() - efficiencyVO.getCurrentPeriodRealAmountOrderCount()) / efficiencyVO.getCurrentPeriodOrderVolume() * 100, 2).doubleValue());
+            } else {
+                efficiencyVO.setDeadOrderVolumeA(null);
+                efficiencyVO.setDeadOrderVolumeB(null);
+                efficiencyVO.setDeadOrderVolumeC(null);
+            }
+        }
+        return efficiencyVOList;
+    }
+
+    /**
      * 设置评估方法与签字人等信息
      *
      * @param assetsLedgerVO       查询出来的VO信息

+ 7 - 0
sql/update_sql.sql

@@ -636,6 +636,13 @@ ALTER TABLE `personal_target` ADD qr_code varchar(255) NULL COMMENT '出入库
   操作人:苟耕铨
  */
 
+/**
+  日期:2024-07-09
+  修改人:苟耕铨
+ */
+# assets表新增字段
+ALTER TABLE `assets` ADD market_department_id bigint(20) NULL COMMENT '市场部门id(下单部门id)';
+