ソースを参照

1.新增评估部效率查询与导出接口

GouGengquan 11 ヶ月 前
コミット
a7897e59b5

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

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.dayou.common.RestResponse;
 import com.dayou.dto.AssetsStatisticalSelectDTO;
 import com.dayou.service.IAssetsStatisticalStatementService;
+import com.dayou.vo.AssetsEvaluateDepEfficiencyVO;
 import com.dayou.vo.AssetsLedgerVO;
 import com.dayou.vo.AssetsPerformanceDeductionDetailVO;
 import com.dayou.vo.AssetsPerformanceDeductionVO;
@@ -114,4 +115,24 @@ public class AssetsStatisticalStatementController extends BaseController{
         exportPlus(response, "评估人员绩效扣分", result, AssetsPerformanceDeductionVO.class);
     }
 
+    /**
+     * 评估部效率查询
+     * @param dto 查询dto
+     * @return List<AssetsEvaluateDepEfficiencyVO>
+     */
+    @GetMapping("/evaluate/dep/getEfficiencyVO")
+    public RestResponse<List<AssetsEvaluateDepEfficiencyVO>> getAssetsEvaluateDepEfficiencyVO(AssetsStatisticalSelectDTO dto) {
+        return RestResponse.data(assetsStatisticalStatementService.getAssetsEvaluateDepEfficiencyVO(dto));
+    }
+
+    /**
+     * 评估部效率导出
+     * @param dto 查询dto
+     */
+    @GetMapping("/evaluate/dep/getEfficiencyVO/export")
+    public void getAssetsEvaluateDepEfficiencyVOExport(AssetsStatisticalSelectDTO dto, HttpServletResponse response) throws IOException {
+        List<AssetsEvaluateDepEfficiencyVO> result = assetsStatisticalStatementService.getAssetsEvaluateDepEfficiencyVO(dto);
+        exportPlus(response, "评估部效率值表", result, AssetsPerformanceDeductionVO.class);
+    }
+
 }

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

@@ -2,6 +2,7 @@ package com.dayou.mapper;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.dayou.dto.AssetsStatisticalSelectDTO;
+import com.dayou.vo.AssetsEvaluateDepEfficiencyVO;
 import com.dayou.vo.AssetsLedgerVO;
 import com.dayou.vo.AssetsPerformanceDeductionDetailVO;
 import com.dayou.vo.AssetsPerformanceDeductionVO;
@@ -67,4 +68,11 @@ public interface AssetsStatisticalStatementMapper {
      * @return List<AssetsPerformanceDeductionVO>
      */
     List<AssetsPerformanceDeductionVO> assetsPerformanceDeductionVOByEvaluatorExport(@Param("dto") AssetsStatisticalSelectDTO dto);
+
+    /**
+     * 评估部效率查询
+     * @param dto 查询dto
+     * @return List<AssetsEvaluateDepEfficiencyVO>
+     */
+    List<AssetsEvaluateDepEfficiencyVO> getAssetsEvaluateDepEfficiencyVO(@Param("dto") AssetsStatisticalSelectDTO dto);
 }

+ 38 - 0
dao/src/main/resources/mapper/AssetsStatisticalStatementMapper.xml

@@ -402,5 +402,43 @@
         <include refid="assetsPerformanceDeductionByUserQuery" />
     </select>
 
+    <!--评估部效率查询-->
+    <select id="getAssetsEvaluateDepEfficiencyVO" resultType="com.dayou.vo.AssetsEvaluateDepEfficiencyVO">
+        SELECT department.id AS departmentId,
+               department.name AS departmentName,
+               (SELECT COUNT(assets.id) FROM assets WHERE deleted = 0 AND assets.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND department_id = department.id) AS currentPeriodOrderVolume,
+               (SELECT COUNT(assets.id) FROM assets WHERE deleted = 0 AND assets.created BETWEEN DATE_SUB(#{dto.startTime}, INTERVAL 1 YEAR) AND DATE_SUB(#{dto.endTime}, INTERVAL 1 YEAR) AND department_id = department.id) AS YoYOrderVolume,
+               (SELECT COUNT(assets.id) FROM assets WHERE deleted = 0 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 department_id = department.id) AS QoQOrderVolume,
+               (SELECT COUNT(production.id) FROM assets,assets_production AS production WHERE assets.id = production.business_id AND production_type = 'STATEMENT' AND production.deleted = 0 AND production.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND department_id = department.id) AS currentPeriodStatementVolume,
+               (SELECT COUNT(production.id) FROM assets,assets_production AS production WHERE assets.id = production.business_id AND production_type = 'STATEMENT' AND production.deleted = 0 AND production.created BETWEEN DATE_SUB(#{dto.startTime}, INTERVAL 1 YEAR) AND DATE_SUB(#{dto.endTime}, INTERVAL 1 YEAR) AND department_id = department.id) AS YoYStatementVolume,
+               (SELECT COUNT(production.id) FROM assets,assets_production AS production WHERE assets.id = production.business_id AND production_type = 'STATEMENT' AND production.deleted = 0 AND production.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 department_id = department.id) AS currentPeriodStatementVolume,
+               (SELECT COUNT(production.id) FROM assets,assets_production AS production WHERE assets.id = production.business_id AND production_type != 'STATEMENT' AND production.deleted = 0 AND production.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND department_id = department.id) AS currentPeriodReportVolume,
+               (SELECT COUNT(production.id) FROM assets,assets_production AS production WHERE assets.id = production.business_id AND production_type != 'STATEMENT' AND production.deleted = 0 AND production.created BETWEEN DATE_SUB(#{dto.startTime}, INTERVAL 1 YEAR) AND DATE_SUB(#{dto.endTime}, INTERVAL 1 YEAR) AND department_id = department.id) AS YoYReportVolume,
+               (SELECT COUNT(production.id) FROM assets,assets_production AS production WHERE assets.id = production.business_id AND production_type != 'STATEMENT' AND production.deleted = 0 AND production.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 department_id = department.id) AS QoQReportVolume,
+               (SELECT COALESCE(SUM(order_fund.should_amount),0) FROM assets, order_fund WHERE assets.id = order_fund.business_id AND order_fund.deleted = 0 AND assets.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND department_id = department.id) AS currentPeriodShouldAmountSum,
+               (SELECT COALESCE(SUM(order_fund.should_amount),0) FROM assets, order_fund WHERE assets.id = order_fund.business_id AND order_fund.deleted = 0 AND assets.created BETWEEN DATE_SUB(#{dto.startTime}, INTERVAL 1 YEAR) AND DATE_SUB(#{dto.endTime}, INTERVAL 1 YEAR) AND department_id = department.id) AS YoYShouldAmountSum,
+               (SELECT COALESCE(SUM(order_fund.should_amount),0) FROM assets, order_fund WHERE assets.id = order_fund.business_id AND order_fund.deleted = 0 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 department_id = department.id) AS QoQShouldAmountSum,
+               (SELECT COALESCE(SUM(order_fund.real_amount),0) FROM assets, order_fund WHERE assets.id = order_fund.business_id AND order_fund.deleted = 0 AND assets.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND department_id = department.id) AS currentPeriodRealAmountSum,
+               (SELECT COALESCE(SUM(order_fund.real_amount),0) FROM assets, order_fund WHERE assets.id = order_fund.business_id AND order_fund.deleted = 0 AND assets.created BETWEEN DATE_SUB(#{dto.startTime}, INTERVAL 1 YEAR) AND DATE_SUB(#{dto.endTime}, INTERVAL 1 YEAR) AND department_id = department.id) AS YoYRealAmountSum,
+               (SELECT COALESCE(SUM(order_fund.real_amount),0) FROM assets, order_fund WHERE assets.id = order_fund.business_id AND order_fund.deleted = 0 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 department_id = department.id) AS QoQRealAmountSum
+        FROM
+            (
+                SELECT
+                    department.id,
+                    department.name
+                FROM
+                    department,
+                    sorted_department
+                WHERE
+                    department.id = sorted_department.department_id
+                  AND department.deleted = 0
+                  AND sorted_department.business_type = 'ASSET_BUSINESS'
+                  <if test="dto != null and dto.departmentId != null">
+                      AND department.id = #{dto.departmentId}
+                  </if>
+            ) AS department
+        GROUP BY department.id
+    </select>
+
 
 </mapper>

+ 130 - 0
domain/src/main/java/com/dayou/vo/AssetsEvaluateDepEfficiencyVO.java

@@ -0,0 +1,130 @@
+package com.dayou.vo;
+
+import com.dayou.annotation.Excel;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * 资产评估部门效率 VO
+ */
+@Data
+public class AssetsEvaluateDepEfficiencyVO {
+    /**
+     * 部门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 = "时间效率")
+    private Double timeEfficiency;
+
+    /**
+     * 同比接单数量
+     */
+    @Excel(name = "同比接单增减率(%)")
+    private Double YoYOrderVolume;
+
+    /**
+     * 环比接单数量
+     */
+    @Excel(name = "环比接单增减率(%)")
+    private Double QoQOrderVolume;
+
+    /**
+     * 当期预评出具数量(意见书)
+     */
+    @Excel(name = "当期预评出具数量")
+    private Integer currentPeriodStatementVolume;
+
+    /**
+     * 同比预评出具数量
+     */
+    @Excel(name = "同比预评出具增减率(%)")
+    private Double YoYStatementVolume;
+
+    /**
+     * 环比预评出具数量
+     */
+    @Excel(name = "环比预评出具增减率(%)")
+    private Double QoQStatementVolume;
+
+    /**
+     * 当期报告(评估报告、咨询报告、意见函)出具数量
+     */
+    @Excel(name = "当期报告出具数量")
+    private Integer currentPeriodReportVolume;
+
+    /**
+     * 同比报告(评估报告、咨询报告、意见函)出具数量
+     */
+    @Excel(name = "同比报告出具增减率(%)")
+    private Double YoYReportVolume;
+
+    /**
+     * 环比报告(评估报告、咨询报告、意见函)出具数量
+     */
+    @Excel(name = "环比报告出具增减率(%)")
+    private Double QoQReportVolume;
+
+    /**
+     * 当期应收款
+     */
+    @Excel(name = "当期应收款")
+    private Double currentPeriodShouldAmountSum;
+
+    /**
+     * 同比应收款
+     */
+    @Excel(name = "同比应收款增减率(%)")
+    private Double YoYShouldAmountSum;
+
+    /**
+     * 环比应收款
+     */
+    @Excel(name = "环比应收款增减率(%)")
+    private Double QoQShouldAmountSum;
+
+    /**
+     * 当期实收款
+     */
+    @Excel(name = "当期实收款")
+    private Double currentPeriodRealAmountSum;
+
+    /**
+     * 同比实收款
+     */
+    @Excel(name = "同比实收款增减率(%)")
+    private Double YoYRealAmountSum;
+
+    /**
+     * 环比实收款
+     */
+    @Excel(name = "环比实收款增减率(%)")
+    private Double QoQRealAmountSum;
+}

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

@@ -2,6 +2,7 @@ package com.dayou.service;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.dayou.dto.AssetsStatisticalSelectDTO;
+import com.dayou.vo.AssetsEvaluateDepEfficiencyVO;
 import com.dayou.vo.AssetsLedgerVO;
 import com.dayou.vo.AssetsPerformanceDeductionDetailVO;
 import com.dayou.vo.AssetsPerformanceDeductionVO;
@@ -74,4 +75,12 @@ public interface IAssetsStatisticalStatementService {
      * @return List<AssetsPerformanceDeductionVO>
      */
     List<AssetsPerformanceDeductionVO> assetsPerformanceDeductionVOByEvaluatorExport(AssetsStatisticalSelectDTO dto);
+
+    /**
+     * 评估部效率查询
+     * @param dto 查询dto
+     * @return List<AssetsEvaluateDepEfficiencyVO>
+     */
+    List<AssetsEvaluateDepEfficiencyVO> getAssetsEvaluateDepEfficiencyVO(AssetsStatisticalSelectDTO dto);
+
 }

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

@@ -11,6 +11,7 @@ import com.dayou.mapper.AssetsEvaluationMethodMapper;
 import com.dayou.mapper.AssetsStatisticalStatementMapper;
 import com.dayou.service.IAssetsStatisticalStatementService;
 import com.dayou.service.IUserService;
+import com.dayou.vo.AssetsEvaluateDepEfficiencyVO;
 import com.dayou.vo.AssetsLedgerVO;
 import com.dayou.vo.AssetsPerformanceDeductionDetailVO;
 import com.dayou.vo.AssetsPerformanceDeductionVO;
@@ -151,6 +152,74 @@ public class AssetsStatisticalStatementServiceImpl implements IAssetsStatistical
     }
 
     /**
+     * 评估部效率查询
+     * @param dto 查询dto
+     * @return List<AssetsEvaluateDepEfficiencyVO>
+     */
+    @Override
+    public List<AssetsEvaluateDepEfficiencyVO> getAssetsEvaluateDepEfficiencyVO(AssetsStatisticalSelectDTO dto) {
+        List<AssetsEvaluateDepEfficiencyVO> efficiencyVOList = assetsStatisticalStatementMapper.getAssetsEvaluateDepEfficiencyVO(dto);
+
+        // 循环计算每个部门的同比、环比
+        for (AssetsEvaluateDepEfficiencyVO efficiencyVO : efficiencyVOList){
+            // 同比计算(同比增长率 = (当期数据 - 去年同期数据) / 去年同期数据 * 100%)
+            if (efficiencyVO.getYoYOrderVolume() > 0){
+                efficiencyVO.setYoYOrderVolume((efficiencyVO.getCurrentPeriodOrderVolume() - efficiencyVO.getYoYOrderVolume()) / efficiencyVO.getYoYOrderVolume() * 100);
+            }else {
+                efficiencyVO.setYoYOrderVolume((double) (efficiencyVO.getCurrentPeriodOrderVolume() * 100));
+            }
+            if (efficiencyVO.getYoYStatementVolume() > 0){
+                efficiencyVO.setYoYStatementVolume((efficiencyVO.getCurrentPeriodStatementVolume() - efficiencyVO.getYoYStatementVolume()) / efficiencyVO.getYoYStatementVolume() * 100);
+            }else {
+                efficiencyVO.setYoYStatementVolume((double) (efficiencyVO.getCurrentPeriodStatementVolume() * 100));
+            }
+            if (efficiencyVO.getYoYReportVolume() > 0){
+                efficiencyVO.setYoYReportVolume((efficiencyVO.getCurrentPeriodReportVolume() - efficiencyVO.getYoYReportVolume()) / efficiencyVO.getYoYReportVolume() * 100);
+            }else {
+                efficiencyVO.setYoYReportVolume((double) (efficiencyVO.getCurrentPeriodReportVolume() * 100));
+            }
+            if (efficiencyVO.getYoYShouldAmountSum() > 0){
+                efficiencyVO.setYoYShouldAmountSum((efficiencyVO.getCurrentPeriodShouldAmountSum() - efficiencyVO.getYoYShouldAmountSum()) / efficiencyVO.getYoYShouldAmountSum() * 100);
+            }else {
+                efficiencyVO.setYoYShouldAmountSum(efficiencyVO.getCurrentPeriodShouldAmountSum() * 100);
+            }
+            if (efficiencyVO.getYoYRealAmountSum() > 0){
+                efficiencyVO.setYoYRealAmountSum((efficiencyVO.getCurrentPeriodRealAmountSum() - efficiencyVO.getYoYRealAmountSum()) / efficiencyVO.getYoYRealAmountSum() * 100);
+            }else {
+                efficiencyVO.setYoYRealAmountSum(efficiencyVO.getCurrentPeriodRealAmountSum() * 100);
+            }
+
+            // 环比计算(环比增长率 = (当期数据 - 前一期数据) / 前一期数据 * 100%)
+            if (efficiencyVO.getQoQOrderVolume() > 0){
+                efficiencyVO.setQoQOrderVolume((efficiencyVO.getCurrentPeriodOrderVolume() - efficiencyVO.getQoQOrderVolume()) / efficiencyVO.getQoQOrderVolume() * 100);
+            }else {
+                efficiencyVO.setQoQOrderVolume((double) (efficiencyVO.getCurrentPeriodOrderVolume() * 100));
+            }
+            if (efficiencyVO.getQoQStatementVolume() > 0){
+                efficiencyVO.setQoQStatementVolume((efficiencyVO.getCurrentPeriodStatementVolume() - efficiencyVO.getQoQStatementVolume()) / efficiencyVO.getQoQStatementVolume() * 100);
+            }else {
+                efficiencyVO.setQoQStatementVolume((double) (efficiencyVO.getCurrentPeriodStatementVolume() * 100));
+            }
+            if (efficiencyVO.getQoQReportVolume() > 0){
+                efficiencyVO.setQoQReportVolume((efficiencyVO.getCurrentPeriodReportVolume() - efficiencyVO.getQoQReportVolume()) / efficiencyVO.getQoQReportVolume() * 100);
+            }else {
+                efficiencyVO.setQoQReportVolume((double) (efficiencyVO.getCurrentPeriodReportVolume() * 100));
+            }
+            if (efficiencyVO.getQoQShouldAmountSum() > 0){
+                efficiencyVO.setQoQShouldAmountSum((efficiencyVO.getCurrentPeriodShouldAmountSum() - efficiencyVO.getQoQShouldAmountSum()) / efficiencyVO.getQoQShouldAmountSum() * 100);
+            }else {
+                efficiencyVO.setQoQShouldAmountSum(efficiencyVO.getCurrentPeriodShouldAmountSum() * 100);
+            }
+            if (efficiencyVO.getQoQRealAmountSum() > 0){
+                efficiencyVO.setQoQRealAmountSum((efficiencyVO.getCurrentPeriodRealAmountSum() - efficiencyVO.getQoQRealAmountSum()) / efficiencyVO.getQoQRealAmountSum() * 100);
+            }else {
+                efficiencyVO.setQoQRealAmountSum(efficiencyVO.getCurrentPeriodRealAmountSum() * 100);
+            }
+        }
+        return efficiencyVOList;
+    }
+
+    /**
      * 设置评估方法与签字人等信息
      *
      * @param assetsLedgerVO       查询出来的VO信息