Przeglądaj źródła

1.新增个贷部门效率值表查询
2.优化资产统计报表查询SQL

GouGengquan 11 miesięcy temu
rodzic
commit
5f6253856e

+ 31 - 0
biz-base/src/main/java/com/dayou/controller/PersonalStatisticalStatementController.java

@@ -0,0 +1,31 @@
+package com.dayou.controller;
+
+import com.dayou.common.RestResponse;
+import com.dayou.dto.PersonalStatisticalSelectDTO;
+import com.dayou.service.IPersonalStatisticalStatementService;
+import com.dayou.vo.PersonalDepEfficiencyVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+@RestController
+@RequestMapping("personal/statisticalStatement")
+public class PersonalStatisticalStatementController {
+
+    @Autowired
+    private IPersonalStatisticalStatementService personalStatisticalStatementService;
+
+    /**
+     * 个贷部门效率值查询
+     * @param dto 查询dto
+     * @return List<PersonalDepEfficiencyVO>
+     */
+    @GetMapping("/department/getPersonalDepEfficiencyVO")
+    public RestResponse<List<PersonalDepEfficiencyVO>> getPersonalDepEfficiencyVO(PersonalStatisticalSelectDTO dto) {
+        return RestResponse.data(personalStatisticalStatementService.getPersonalDepEfficiencyVO(dto));
+    }
+
+}

+ 18 - 0
dao/src/main/java/com/dayou/mapper/PersonalStatisticalStatementMapper.java

@@ -0,0 +1,18 @@
+package com.dayou.mapper;
+
+import com.dayou.dto.PersonalStatisticalSelectDTO;
+import com.dayou.vo.PersonalDepEfficiencyVO;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+public interface PersonalStatisticalStatementMapper {
+
+    /**
+     * 个贷部门效率值查询
+     * @param dto 查询dto
+     * @return List<PersonalDepEfficiencyVO>
+     */
+    List<PersonalDepEfficiencyVO> getPersonalDepEfficiencyVO(@Param("dto") PersonalStatisticalSelectDTO dto);
+
+}

Plik diff jest za duży
+ 50 - 50
dao/src/main/resources/mapper/AssetsStatisticalStatementMapper.xml


Plik diff jest za duży
+ 37 - 0
dao/src/main/resources/mapper/PersonalStatisticalStatementMapper.xml


+ 28 - 0
domain/src/main/java/com/dayou/dto/PersonalStatisticalSelectDTO.java

@@ -0,0 +1,28 @@
+package com.dayou.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class PersonalStatisticalSelectDTO {
+
+    /**
+     * 筛选开始时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date startTime;
+
+    /**
+     * 筛选结束时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date endTime;
+
+    /**
+     * 效率类型(接单:order、预评:statement、报告:report、应收款:should、实收款:real)
+     */
+    private String efficiencyType;
+
+}

+ 90 - 0
domain/src/main/java/com/dayou/vo/PersonalDepEfficiencyDetailVO.java

@@ -0,0 +1,90 @@
+package com.dayou.vo;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.dayou.annotation.Excel;
+import com.dayou.annotation.ExportCell;
+import com.dayou.annotation.ImportCell;
+import com.dayou.annotation.LuceneSearchable;
+
+import java.math.BigDecimal;
+import java.time.LocalDate;
+
+public class PersonalDepEfficiencyDetailVO {
+
+    /**
+     * 订单编号
+     */
+    private String orderId;
+
+    /**
+     * 坐落
+     */
+    private String location;
+
+    /**
+     * 客户名称
+     */
+    @Excel(name = "客户名称")
+    private String customerName;
+
+    /**
+     * 业务来源(客户子级名称)
+     */
+    @Excel(name = "业务来源")
+    private String customerSubName;
+
+    /**
+     * 中介
+     */
+    @ImportCell
+    @ExportCell(columnName = "中介")
+    private String agent;
+
+    /**
+     * 委托人1
+     */
+    @TableField("bailorA")
+    @ImportCell
+    @ExportCell(columnName = "委托人1")
+    @LuceneSearchable("bailorA")
+    private String bailorA;
+
+    /**
+     * 面积
+     */
+    private BigDecimal acreage;
+
+    /**
+     * 单价
+     */
+    @ImportCell
+    @ExportCell(columnName = "单价")
+    private BigDecimal price;
+
+
+    /**
+     * 总价
+     */
+    @ImportCell
+    @ExportCell(columnName = "总价")
+    private BigDecimal amount;
+
+    /**
+     * 出意见书时间
+     */
+    @Excel(name = "出意见书时间")
+    private LocalDate writeStatementDate;
+
+    /**
+     * 出报告时间
+     */
+    @Excel(name = "出报告时间")
+    private LocalDate writeReportDate;
+
+    /**
+     * 价值时点(对应实地查勘日)
+     */
+    @Excel(name = "价值时点")
+    private LocalDate valuationDate;
+
+}

+ 177 - 0
domain/src/main/java/com/dayou/vo/PersonalDepEfficiencyVO.java

@@ -0,0 +1,177 @@
+package com.dayou.vo;
+
+import com.dayou.annotation.Excel;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+
+@Data
+public class PersonalDepEfficiencyVO {
+
+    /**
+     * 评估目的
+     */
+    @Excel(name = "评估目的")
+    private String evaluateAim;
+
+    /**
+     * 当期部门接单量
+     */
+    @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 totalRealAmountSum;
+
+    /**
+     * 当期出单率(报告数/接单数)
+     */
+    @Excel(name = "当期出单率")
+    private Double currentPeriodOrderHasReportVolume;
+
+    /**
+     * 同比出单率(报告数/接单数)
+     */
+    @Excel(name = "同比出单率")
+    @JsonProperty("YoYOrderHasReportVolume")
+    private Double YoYOrderHasReportVolume;
+
+    /**
+     * 环比出单率(报告数/接单数)
+     */
+    @Excel(name = "环比出单率")
+    @JsonProperty("QoQOrderHasReportVolume")
+    private Double QoQOrderHasReportVolume;
+
+    /**
+     * 当期死单率(%)
+     */
+    @Excel(name = "当期死单率(%)")
+    @JsonProperty("currentPeriodDeadOrderVolume")
+    private Double currentPeriodDeadOrderVolume;
+
+    /**
+     * 同比死单率(%)
+     */
+    @Excel(name = "同比死单率(%)")
+    @JsonProperty("YoYDeadOrderVolume")
+    private Double YoYDeadOrderVolume;
+
+    /**
+     * 环比死单率(%)
+     */
+    @Excel(name = "环比死单率(%)")
+    @JsonProperty("QoQDeadOrderVolume")
+    private Double QoQDeadOrderVolume;
+
+    /**
+     * 当期实收款订单数
+     */
+    private Integer currentPeriodRealAmountOrderCount;
+
+    /**
+     * 同比实收款订单数
+     */
+    private Integer YoYRealAmountOrderCount;
+
+    /**
+     * 环比实收款订单数
+     */
+    private Integer QoQRealAmountOrderCount;
+}

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

@@ -1,9 +1,7 @@
 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;

+ 17 - 0
service/src/main/java/com/dayou/service/IPersonalStatisticalStatementService.java

@@ -0,0 +1,17 @@
+package com.dayou.service;
+
+import com.dayou.dto.PersonalStatisticalSelectDTO;
+import com.dayou.vo.PersonalDepEfficiencyVO;
+
+import java.util.List;
+
+public interface IPersonalStatisticalStatementService {
+
+    /**
+     * 个贷部门效率值查询
+     * @param dto 查询dto
+     * @return List<PersonalDepEfficiencyVO>
+     */
+    List<PersonalDepEfficiencyVO> getPersonalDepEfficiencyVO(PersonalStatisticalSelectDTO dto);
+
+}

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

@@ -466,9 +466,9 @@ public class AssetsStatisticalStatementServiceImpl implements IAssetsStatistical
                 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);
+                efficiencyVO.setDeadOrderVolumeA(0.0);
+                efficiencyVO.setDeadOrderVolumeB(0.0);
+                efficiencyVO.setDeadOrderVolumeC(0.0);
             }
         }
         return efficiencyVOList;
@@ -571,9 +571,9 @@ public class AssetsStatisticalStatementServiceImpl implements IAssetsStatistical
                 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);
+                efficiencyVO.setDeadOrderVolumeA(0.0);
+                efficiencyVO.setDeadOrderVolumeB(0.0);
+                efficiencyVO.setDeadOrderVolumeC(0.0);
             }
         }
         return efficiencyVOList;

+ 123 - 0
service/src/main/java/com/dayou/service/impl/PersonalStatisticalStatementServiceImpl.java

@@ -0,0 +1,123 @@
+package com.dayou.service.impl;
+
+import cn.hutool.core.util.NumberUtil;
+import com.dayou.dto.PersonalStatisticalSelectDTO;
+import com.dayou.mapper.PersonalStatisticalStatementMapper;
+import com.dayou.service.IPersonalStatisticalStatementService;
+import com.dayou.vo.AssetsMarketEfficiencyVO;
+import com.dayou.vo.PersonalDepEfficiencyVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+public class PersonalStatisticalStatementServiceImpl implements IPersonalStatisticalStatementService {
+
+    @Autowired
+    private PersonalStatisticalStatementMapper personalStatisticalStatementMapper;
+
+    /**
+     * 个贷部门效率值查询
+     * @param dto 查询dto
+     * @return List<PersonalDepEfficiencyVO>
+     */
+    @Override
+    public List<PersonalDepEfficiencyVO> getPersonalDepEfficiencyVO(PersonalStatisticalSelectDTO dto) {
+        List<PersonalDepEfficiencyVO> efficiencyVOList = personalStatisticalStatementMapper.getPersonalDepEfficiencyVO(dto);
+        // 循环计算每个评估目的的同比、环比
+        for (PersonalDepEfficiencyVO efficiencyVO : efficiencyVOList) {
+
+            /*
+             * 计算死单率
+             * 死单率(下单数-出报告数) / (下单数)
+             * 同比环比同理,公式来源于老系统SQL
+             */
+            if (efficiencyVO.getCurrentPeriodOrderVolume() > 0 && efficiencyVO.getYoYReportVolume() > 0 && efficiencyVO.getQoQReportVolume() > 0) {
+                efficiencyVO.setCurrentPeriodDeadOrderVolume(NumberUtil.round((double) (efficiencyVO.getCurrentPeriodOrderVolume() - efficiencyVO.getCurrentPeriodReportVolume()) / efficiencyVO.getCurrentPeriodOrderVolume() * 100, 2).doubleValue());
+                efficiencyVO.setQoQDeadOrderVolume(NumberUtil.round((efficiencyVO.getCurrentPeriodOrderVolume() - efficiencyVO.getYoYReportVolume()) / efficiencyVO.getYoYReportVolume() * 100, 2).doubleValue());
+                efficiencyVO.setYoYDeadOrderVolume(NumberUtil.round((efficiencyVO.getCurrentPeriodOrderVolume() - efficiencyVO.getQoQReportVolume()) / efficiencyVO.getQoQReportVolume() * 100, 2).doubleValue());
+            } else {
+                efficiencyVO.setCurrentPeriodDeadOrderVolume(0.0);
+                efficiencyVO.setQoQDeadOrderVolume(0.0);
+                efficiencyVO.setYoYDeadOrderVolume(0.0);
+            }
+
+            // 计算当期出单率(收费项目数/个贷订单数)
+            if (efficiencyVO.getCurrentPeriodRealAmountOrderCount() > 0) {
+                efficiencyVO.setCurrentPeriodOrderHasReportVolume((efficiencyVO.getCurrentPeriodRealAmountOrderCount().doubleValue() / efficiencyVO.getCurrentPeriodOrderVolume().doubleValue()));
+            } else {
+                efficiencyVO.setCurrentPeriodOrderHasReportVolume(0.0);
+            }
+            // 计算同比出单率
+            if (efficiencyVO.getYoYRealAmountOrderCount() > 0) {
+                efficiencyVO.setYoYOrderHasReportVolume(NumberUtil.round((efficiencyVO.getCurrentPeriodOrderHasReportVolume() - (efficiencyVO.getYoYRealAmountOrderCount() / efficiencyVO.getYoYOrderVolume())) / (efficiencyVO.getYoYRealAmountOrderCount() / efficiencyVO.getYoYOrderVolume()) * 100, 2).doubleValue());
+            } else {
+                efficiencyVO.setYoYOrderHasReportVolume(NumberUtil.round(efficiencyVO.getCurrentPeriodOrderHasReportVolume() * 100, 2).doubleValue());
+            }
+            // 计算环比出单率
+            if (efficiencyVO.getQoQRealAmountOrderCount() > 0) {
+                efficiencyVO.setQoQOrderHasReportVolume(NumberUtil.round((efficiencyVO.getCurrentPeriodOrderHasReportVolume() - (efficiencyVO.getQoQRealAmountOrderCount() / efficiencyVO.getQoQOrderVolume())) / (efficiencyVO.getQoQRealAmountOrderCount() / 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);
+            }
+
+        }
+        return efficiencyVOList;
+    }
+}