Sfoglia il codice sorgente

Merge remote-tracking branch 'origin/dev'

GouGengquan 11 mesi fa
parent
commit
2dac926744

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

@@ -0,0 +1,138 @@
+package com.dayou.controller;
+
+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;
+import lombok.extern.slf4j.Slf4j;
+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 javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.util.List;
+
+@RestController
+@RequestMapping("assets/statisticalStatement")
+@Slf4j
+public class AssetsStatisticalStatementController extends BaseController{
+
+    @Autowired
+    private IAssetsStatisticalStatementService assetsStatisticalStatementService;
+
+    /**
+     * 获取资产台账
+     * @param dto 查询dto
+     * @return Page<AssetsLedgerVO>
+     */
+    @GetMapping("/getAssetsLedgerVO")
+    public RestResponse<Page<AssetsLedgerVO>> getAssetsLedgerVO(AssetsStatisticalSelectDTO dto, Page page) {
+        return RestResponse.data(assetsStatisticalStatementService.getAssetsLedgerVO(dto,page));
+    }
+
+    /**
+     * 资产台账导出
+     * @param dto 查询dto
+     */
+    @GetMapping("/getAssetsLedgerVO/export")
+    public void assetsLedgerVOExport(AssetsStatisticalSelectDTO dto, HttpServletResponse response) throws IOException {
+        List<AssetsLedgerVO> result = assetsStatisticalStatementService.assetsLedgerVOExport(dto);
+        exportPlus(response,"资产台账列表",result, AssetsLedgerVO.class);
+    }
+
+    /**
+     * 评估部绩效扣分查询
+     * @param dto 查询dto
+     * @return List<AssetsPerformanceDeductionVO>
+     */
+    @GetMapping("/department/getAssetsPerformanceDeductionVO")
+    public RestResponse<List<AssetsPerformanceDeductionVO>> getAssetsPerformanceDeductionVO(AssetsStatisticalSelectDTO dto) {
+        return RestResponse.data(assetsStatisticalStatementService.getAssetsPerformanceDeductionVO(dto));
+    }
+
+    /**
+     * 评估部绩效扣分导出
+     * @param dto 查询dto
+     */
+    @GetMapping("/department/getAssetsPerformanceDeductionVO/export")
+    public void assetsPerformanceDeductionVOExport(AssetsStatisticalSelectDTO dto, HttpServletResponse response) throws IOException {
+        List<AssetsPerformanceDeductionVO> result = assetsStatisticalStatementService.assetsPerformanceDeductionVOExport(dto);
+        exportPlus(response, "资产评估部绩效扣分", result, AssetsPerformanceDeductionVO.class);
+    }
+
+    /**
+     * 查询错误详情列表
+     * @param page 分页
+     * @param dto 查询dto
+     * @return Page<AssetsPerformanceDeductionDetailVO>
+     */
+    @GetMapping("/department/getAssetsPerformanceDeductionDetail")
+    public RestResponse<Page<AssetsPerformanceDeductionDetailVO>> getAssetsPerformanceDeductionDetail(Page page, AssetsStatisticalSelectDTO dto) {
+        return RestResponse.data(assetsStatisticalStatementService.getAssetsPerformanceDeductionDetail(page, dto));
+    }
+
+    /**
+     * 错误详情列表导出
+     * @param dto 查询dto
+     */
+    @GetMapping("/department/getAssetsPerformanceDeductionDetail/export")
+    public void assetsPerformanceDeductionDetailExport(AssetsStatisticalSelectDTO dto, HttpServletResponse response) throws IOException {
+        List<AssetsPerformanceDeductionDetailVO> result = assetsStatisticalStatementService.assetsPerformanceDeductionDetailExport(dto);
+        String fileName = "资产评估部绩效扣分详情_" + dto.getCheckLoop();
+        if (dto.getMistakeType().equals("normal")){
+            fileName += "_" + "一般错误";
+        } else if (dto.getMistakeType().equals("hard")) {
+            fileName += "_" + "较大错误";
+        }else {
+            fileName += "_" + "重大错误";
+        }
+        exportPlus(response, fileName, result, AssetsPerformanceDeductionDetailVO.class);
+    }
+
+    /**
+     * 评估人员绩效扣分查询
+     * @param dto 查询dto
+     * @return List<AssetsPerformanceDeductionVO>
+     */
+    @GetMapping("/evaluator/getAssetsPerformanceDeductionVO")
+    public RestResponse<List<AssetsPerformanceDeductionVO>> getAssetsPerformanceDeductionVOByEvaluator(AssetsStatisticalSelectDTO dto) {
+        return RestResponse.data(assetsStatisticalStatementService.getAssetsPerformanceDeductionVOByEvaluator(dto));
+    }
+
+    /**
+     * 评估人员绩效扣分导出
+     * @param dto 查询dto
+     */
+    @GetMapping("/evaluator/getAssetsPerformanceDeductionVO/export")
+    public void assetsPerformanceDeductionVOByEvaluatorExport(AssetsStatisticalSelectDTO dto, HttpServletResponse response) throws IOException {
+        List<AssetsPerformanceDeductionVO> result = assetsStatisticalStatementService.assetsPerformanceDeductionVOByEvaluatorExport(dto);
+        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);
+    }
+
+}

+ 5 - 5
biz-base/src/main/resources/application-local.yml

@@ -39,12 +39,12 @@ spring:
 
 
 dfs:
-  path: /Users/wuwei/opt
-  domain: /dfs
+  path: E:\upload
+  domain: E:\upload
   domainName: https://kps.scdayou.com/dfs
-  code: /code
-  domainRoot: https://kps.scdayou.com/admin
-  luceneDir: /Users/wuwei/luceneDir
+  code: \code
+  domainRoot: localhost
+  luceneDir: E:\luceneIndex
 
 advice:
   file:

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

@@ -0,0 +1,78 @@
+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;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+public interface AssetsStatisticalStatementMapper {
+
+    /**
+     * 获取资产台账
+     * @param dto 查询dto
+     * @return Page<AssetsLedgerVO>
+     */
+    Page<AssetsLedgerVO> getAssetsLedgerVO(@Param("page") Page page, @Param("dto") AssetsStatisticalSelectDTO dto);
+
+    /**
+     * 获取资产台账
+     * @param dto 查询dto
+     * @return List<AssetsLedgerVO>
+     */
+    List<AssetsLedgerVO> assetsLedgerVOExport(@Param("dto") AssetsStatisticalSelectDTO dto);
+
+    /**
+     * 评估部绩效扣分查询
+     * @param dto 查询dto
+     * @return List<AssetsPerformanceDeductionVO>
+     */
+    List<AssetsPerformanceDeductionVO> getAssetsPerformanceDeductionVO(@Param("dto") AssetsStatisticalSelectDTO dto);
+
+    /**
+     * 评估部绩效扣分导出
+     * @param dto 查询dto
+     * @return Page<AssetsPerformanceDeductionVO>
+     */
+    List<AssetsPerformanceDeductionVO> assetsPerformanceDeductionVOExport(@Param("dto") AssetsStatisticalSelectDTO dto);
+
+    /**
+     * 查询错误详情列表
+     * @param page 分页
+     * @param dto 查询dto
+     * @return Page<AssetsPerformanceDeductionDetailVO>
+     */
+    Page<AssetsPerformanceDeductionDetailVO> getAssetsPerformanceDeductionDetail(@Param("page") Page page, @Param("dto") AssetsStatisticalSelectDTO dto);
+
+    /**
+     * 错误详情列表导出
+     * @param dto 查询dto
+     * @return Page<AssetsPerformanceDeductionDetailVO>
+     */
+    List<AssetsPerformanceDeductionDetailVO> assetsPerformanceDeductionDetailExport(@Param("dto") AssetsStatisticalSelectDTO dto);
+
+    /**
+     * 评估人员绩效扣分查询
+     * @param dto 查询dto
+     * @return List<AssetsPerformanceDeductionVO>
+     */
+    List<AssetsPerformanceDeductionVO> getAssetsPerformanceDeductionVOByEvaluator(@Param("dto") AssetsStatisticalSelectDTO dto);
+
+    /**
+     * 评估人员绩效扣分导出
+     * @param dto 查询dto
+     * @return List<AssetsPerformanceDeductionVO>
+     */
+    List<AssetsPerformanceDeductionVO> assetsPerformanceDeductionVOByEvaluatorExport(@Param("dto") AssetsStatisticalSelectDTO dto);
+
+    /**
+     * 评估部效率查询
+     * @param dto 查询dto
+     * @return List<AssetsEvaluateDepEfficiencyVO>
+     */
+    List<AssetsEvaluateDepEfficiencyVO> getAssetsEvaluateDepEfficiencyVO(@Param("dto") AssetsStatisticalSelectDTO dto);
+}

+ 1 - 1
dao/src/main/resources/mapper/AssetsMapper.xml

@@ -79,7 +79,7 @@
         nodeInfo.currentNodeId,
         nodeInfo.recordId,
         nodeInfo.handlerId
-        FROM (SELECT @i := 0) AS sort,assets
+        FROM assets
         LEFT JOIN user ON user.id = assets.principal_id
         LEFT JOIN customer_company AS customer ON customer.id = assets.clientele_id
         #查询当前进行的节点信息(并使用左连接)

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

@@ -0,0 +1,444 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.dayou.mapper.AssetsStatisticalStatementMapper">
+
+    <!--资产台账查询SQL-->
+    <sql id="assetsLedgerQuery">
+        SELECT (@i :=  @i + 1) AS id,
+               assets.id                                                             AS assetsId,
+               assets.order_id                                                       AS orderId,
+               statement.production_no                                               AS statementNo,
+               report.production_no                                                  AS reportNo,
+               CASE report.production_type WHEN 'LETTER' THEN '意见函' WHEN 'CONSULT' THEN '咨询报告' WHEN 'REPORT' THEN '评估报告' ELSE '-' END AS productionType,
+               report.valuation_basis_date                                           AS valuationBasisDate,
+               report.create_production_date                                         AS createReportDate,
+               COALESCE(report.assets_name, statement.assets_name, assets.name)      AS projectName,
+               IF(nodeInfo.state = 'CLOSED','项目终止',IF(nodeInfo.name IS NULL,IF(statement.production_no IS NULL, '撰写意见书', '撰写报告'),nodeInfo.name)) AS currentNodeName,
+               assets.security AS security,
+               assets.significant_assets_reorganization AS significantAssetsReorganization,
+               assets.state_assets AS stateAssets,
+               assets.foreign_assets_involved AS foreignAssetsInvolved,
+               assets.dispense_benefit AS dispenseBenefit,
+               manager.name AS clientManagerName,
+               principal.name AS principalName,
+               (SELECT customer_company.name FROM customer_company WHERE customer_company.id = clientele_id) AS customerName,
+               (SELECT customer_company.name FROM customer_company WHERE customer_company.id = clientele_sub_id) AS customerSubName,
+               assets.bailor AS bailor,
+               assets.bailor_contact_tel AS bailorContactTel,
+               GROUP_CONCAT(target.id SEPARATOR '; ')                                AS targetId,
+               GROUP_CONCAT(target.purpose_name SEPARATOR '; ')                      AS purposeName,
+               GROUP_CONCAT(target.type_name SEPARATOR '; ')                         AS valueTypeName,
+               GROUP_CONCAT(target.targetTypename SEPARATOR '; ')                    AS targetTypename,
+               GROUP_CONCAT(target.secTargetTypaName SEPARATOR '; ')                 AS secTargetTypaName,
+               GROUP_CONCAT(target.evaluation_method_id SEPARATOR ', ')              AS evaluationMethods,
+               GROUP_CONCAT(target.defined_evaluation_method SEPARATOR '; ')         AS definedEvaluationMethod,
+               GROUP_CONCAT(target.choice_evaluation_method_id SEPARATOR ', ')       AS choiceEvaluationMethods,
+               GROUP_CONCAT(target.choice_defined_evaluation_method SEPARATOR '; ')  AS choiceDefinedEvaluationMethod,
+               GROUP_CONCAT(target.estimated_value  SEPARATOR '; ')                  AS estimatedValue,
+               fund.should_amount                                                    AS shouldAmount,
+               fund.real_amount                                                      AS realAmount,
+               report.signatory                                                      AS signatory,
+               report.repertory_out_time                                             AS repertoryOutTime,
+               (
+                   SELECT user.name
+                   FROM work_flow_node_instance AS instance,
+                        work_task_record        AS record,
+                        work_node               AS node,
+                        user
+                   WHERE instance.id = record.instance_id
+                     AND record.handler_id = user.id
+                     AND node.id = instance.node_id
+                     AND instance.business_id = assets.id
+                     AND instance.business_sub_id = statement.production_no
+                     AND node.code = 'REVIEW_STATEMENT'
+                     AND instance.deleted = 0
+               ) AS statementCheckerName,
+               (
+                   SELECT user.name
+                   FROM work_flow_node_instance AS instance,
+                        work_task_record        AS record,
+                        work_node               AS node,
+                        user
+                   WHERE instance.id = record.instance_id
+                     AND record.handler_id = user.id
+                     AND node.id = instance.node_id
+                     AND instance.business_id = assets.id
+                     AND instance.business_sub_id = statement.production_no
+                     AND node.code = 'REEXAMINE_STATEMENT'
+                     AND instance.deleted = 0
+               ) AS statementReCheckerName,
+               (
+                   SELECT user.name
+                   FROM work_flow_node_instance AS instance,
+                        work_task_record        AS record,
+                        work_node               AS node,
+                        user
+                   WHERE instance.id = record.instance_id
+                     AND record.handler_id = user.id
+                     AND node.id = instance.node_id
+                     AND instance.business_id = assets.id
+                     AND instance.business_min_id = report.production_no
+                     AND node.code = 'CHECK_REPORT'
+                     AND instance.deleted = 0
+               ) AS reportCheckerName,
+               (
+                   SELECT user.name
+                   FROM work_flow_node_instance AS instance,
+                        work_task_record        AS record,
+                        work_node               AS node,
+                        user
+                   WHERE instance.id = record.instance_id
+                     AND record.handler_id = user.id
+                     AND node.id = instance.node_id
+                     AND instance.business_id = assets.id
+                     AND instance.business_min_id = report.production_no
+                     AND node.code = 'RECHECK_REPORT'
+                     AND instance.deleted = 0
+               ) AS reportReCheckerName,
+               (
+                   SELECT user.name
+                   FROM work_flow_node_instance AS instance,
+                        work_task_record        AS record,
+                        work_node               AS node,
+                        user
+                   WHERE instance.id = record.instance_id
+                     AND record.handler_id = user.id
+                     AND node.id = instance.node_id
+                     AND instance.business_id = assets.id
+                     AND instance.business_min_id = report.production_no
+                     AND node.code = 'FOURTH_CHECK_REPORT'
+                     AND instance.deleted = 0
+               ) AS reportFourthCheckerName
+        FROM (SELECT @i := 0) AS sort,assets
+        LEFT JOIN (
+            SELECT target.id,
+                   target.assets_id,
+                   purpose_name,
+                   vType.type_name,
+                   evaluation_method_id,
+                   defined_evaluation_method,
+                   choice_evaluation_method_id,
+                   choice_defined_evaluation_method,
+                   type.type_name AS targetTypename,
+                   secType.type_name AS secTargetTypaName,
+                   estimated_value,
+                   statement_no,
+                   report_no
+            FROM assets_evaluation_target AS target
+                     LEFT JOIN assets_evaluation_target_purpose AS purpose ON evaluation_purpose_id = purpose.id
+                     LEFT JOIN assets_evaluation_target_type AS type ON evaluation_type_id = type.id
+                     LEFT JOIN assets_evaluation_target_type AS secType ON evaluation_type_sec_id = type.id
+                     LEFT JOIN assets_value_type AS vType ON assets_value_id = vType.id
+        ) AS target ON assets.id = target.assets_id
+        LEFT JOIN assets_production AS report ON report_no = report.production_no
+        LEFT JOIN assets_production AS statement ON statement_no = statement.production_no
+        LEFT JOIN user AS manager ON manager.id = assets.client_manager_id
+        LEFT JOIN user AS principal ON principal.id = assets.principal_id
+        LEFT JOIN order_fund AS fund ON fund.business_id = assets.id AND fund.business_type = 'ASSET_BUSINESS'
+        LEFT JOIN (
+            SELECT node.`name`,instance.business_id,instance.business_sub_id,instance.business_min_id,instance.state
+            FROM work_flow_node_instance AS instance,
+            work_node AS node
+            WHERE instance.node_id = node.id
+            AND node.deleted = 0
+            AND instance.deleted = 0
+            AND (instance.state = 'PENDING' OR instance.state = 'CLOSED' OR
+            (instance.state = 'FINISHED' AND node.`code` = 'BUSINESS_ARCHIVING'))
+        ) AS nodeInfo ON nodeInfo.business_id = assets.id
+        AND (IF(statement.production_no IS NULL, nodeInfo.business_sub_id IS NULL,
+        statement.production_no = nodeInfo.business_sub_id))
+        AND (IF(report.production_no IS NULL, nodeInfo.business_min_id IS NULL,
+        report.production_no = nodeInfo.business_min_id))
+        WHERE assets.deleted = 0
+        <if test="dto != null and dto.keyWord != null and dto.keyWord != '' ">
+            AND (
+            assets.order_id LIKE CONCAT('%',#{dto.keyWord},'%') OR
+            statement.assets_name LIKE CONCAT('%',#{dto.keyWord},'%') OR
+            report.assets_name LIKE CONCAT('%',#{dto.keyWord},'%')
+            )
+        </if>
+        <if test="dto != null and dto.clientManagerId">
+            AND assets.client_manager_id = #{dto.clientManagerId}
+        </if>
+        <if test="dto != null and dto.principalId">
+            AND assets.principal_id = #{dto.principalId}
+        </if>
+        <if test="dto != null and dto.departmentId != null">
+            AND assets.principal_id = #{dto.departmentId}
+        </if>
+        <if test="dto != null and dto.startTime != null and dto.endTime!= null">
+            AND (assets.created BETWEEN #{dto.startTime} AND #{dto.endTime})
+        </if>
+        <if test="dto != null and dto.assetsBusinessGener">
+            AND assets.assets_business_gener = #{dto.assetsBusinessGener}
+        </if>
+        GROUP BY statementNo,reportNo,assets.id
+        ORDER BY assets.created DESC
+    </sql>
+
+    <!--获取资产台账-->
+    <select id="getAssetsLedgerVO" resultType="com.dayou.vo.AssetsLedgerVO">
+        <include refid="assetsLedgerQuery" />
+     </select>
+
+    <!--资产台账导出-->
+    <select id="assetsLedgerVOExport" resultType="com.dayou.vo.AssetsLedgerVO">
+        <include refid="assetsLedgerQuery" />
+    </select>
+
+    <sql id="assetsPerformanceDeductionQuery">
+        SELECT
+        department.id AS departmentId,
+        department.name AS departmentName,
+        COALESCE ( SUM( checkPer.normal_mistake ), 0 ) AS checkNormalMistakeScore,
+        COALESCE ( SUM( checkPer.hard_mistake ), 0 ) AS checkHardMistakeScore,
+        COALESCE ( SUM( checkPer.fatal_mistake ), 0 ) AS checkFatalMistakeScore,
+        COALESCE ( SUM( reCheckPer.normal_mistake ), 0 ) AS reCheckNormalMistakeScore,
+        COALESCE ( SUM( reCheckPer.hard_mistake ), 0 ) AS reCheckHardMistakeScore,
+        COALESCE ( SUM( reCheckPer.fatal_mistake ), 0 ) AS reCheckFatalMistakeScore,
+        COALESCE ( SUM( fourthCheckPer.normal_mistake ), 0 ) AS fourthCheckNormalMistakeScore,
+        COALESCE ( SUM( fourthCheckPer.hard_mistake ), 0 ) AS fourthCheckHardMistakeScore,
+        COALESCE ( SUM( fourthCheckPer.fatal_mistake ), 0 ) AS fourthCheckFatalMistakeScore,
+        COALESCE (
+        COALESCE ( SUM( checkPer.normal_mistake ), 0 ) + COALESCE ( SUM( checkPer.hard_mistake ), 0 ) + COALESCE ( SUM( checkPer.fatal_mistake ), 0 ) + COALESCE ( SUM( reCheckPer.normal_mistake ), 0 ) + COALESCE ( SUM( reCheckPer.hard_mistake ), 0 ) + COALESCE ( SUM( reCheckPer.fatal_mistake ), 0 ) + COALESCE ( SUM( fourthCheckPer.normal_mistake ), 0 ) + COALESCE ( SUM( fourthCheckPer.hard_mistake ), 0 ) + COALESCE ( SUM( fourthCheckPer.fatal_mistake ), 0 ),
+        0
+        ) AS allMistakeScore
+        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'
+        ) AS department
+        LEFT JOIN (
+        SELECT
+        department_id,
+        assets.created,
+        assets_production.id AS production_id
+        FROM
+        assets
+        LEFT JOIN assets_production ON assets_production.business_id = assets.id
+        AND assets_production.deleted = 0
+        ) AS orderInfo ON department.id = orderInfo.department_id
+        LEFT JOIN ( SELECT production_id, fatal_mistake, hard_mistake, normal_mistake FROM
+        business_production_performance WHERE business_type = 'ASSET_BUSINESS' AND check_loop = '初审'
+        <if test="dto != null and dto.startTime != null and dto.endTime!= null">
+            AND (business_production_performance.modified BETWEEN #{dto.startTime} AND #{dto.endTime})
+        </if>
+        ) AS checkPer ON checkPer.production_id = orderInfo.production_id
+        LEFT JOIN ( SELECT production_id, fatal_mistake, hard_mistake, normal_mistake FROM
+        business_production_performance WHERE business_type = 'ASSET_BUSINESS' AND check_loop = '复审'
+        <if test="dto != null and dto.startTime != null and dto.endTime!= null">
+            AND (business_production_performance.modified BETWEEN #{dto.startTime} AND #{dto.endTime})
+        </if>
+        ) AS reCheckPer ON reCheckPer.production_id = orderInfo.production_id
+        LEFT JOIN ( SELECT production_id, fatal_mistake, hard_mistake, normal_mistake FROM
+        business_production_performance WHERE business_type = 'ASSET_BUSINESS' AND check_loop = '四审'
+        <if test="dto != null and dto.startTime != null and dto.endTime!= null">
+            AND (business_production_performance.modified BETWEEN #{dto.startTime} AND #{dto.endTime})
+        </if>
+        ) AS fourthCheckPer ON fourthCheckPer.production_id = orderInfo.production_id
+        <where>
+            <if test="dto != null and dto.departmentId != null">
+                AND department.id = #{dto.departmentId}
+            </if>
+        </where>
+        GROUP BY department.id
+    </sql>
+
+    <!--评估部绩效扣分查询-->
+    <select id="getAssetsPerformanceDeductionVO" resultType="com.dayou.vo.AssetsPerformanceDeductionVO">
+        <include refid="assetsPerformanceDeductionQuery" />
+    </select>
+
+    <!--评估部绩效扣分导出-->
+    <select id="assetsPerformanceDeductionVOExport" resultType="com.dayou.vo.AssetsPerformanceDeductionVO">
+        <include refid="assetsPerformanceDeductionQuery" />
+    </select>
+
+    <!--查询错误详情SQL-->
+    <sql id="assetsPerformanceDeductionDetailQuery">
+        SELECT performance.id,
+               assets.order_id            AS orderId,
+               assets.members             AS members,
+               production.assets_name     AS projectName,
+               customer.name              AS customerName,
+               production.production_no   AS productionNo,
+               (CASE production.production_type
+                    WHEN 'STATEMENT' THEN '意见书'
+                    WHEN 'LETTER' THEN '意见函'
+                    WHEN 'CONSULT' THEN '咨询报告'
+                    WHEN 'REPORT' THEN '评估报告'
+                    END)                  AS productionType,
+               principal.name             AS principalName,
+               checker.name               AS checkerName,
+               (CASE #{dto.mistakeType}
+                    WHEN 'normal' THEN performance.normal_mistake
+                    WHEN 'hard' THEN performance.hard_mistake
+                    WHEN 'fatal' THEN performance.fatal_mistake
+                    ELSE '-'
+                    END)                  AS mistakeCount,
+               production.evaluate_amount AS evaluateAmount,
+               performance.modified       AS checkTime,
+               performance.reason         AS reason
+        FROM assets
+                 LEFT JOIN assets_production AS production ON assets.id = production.business_id
+                 LEFT JOIN business_production_performance AS performance ON production.id = performance.production_id
+                 LEFT JOIN customer_company AS customer ON customer.id = assets.clientele_id
+                 LEFT JOIN user AS principal ON principal.id = assets.principal_id
+                 LEFT JOIN user AS checker ON checker.id = performance.check_id
+        WHERE assets.department_id = #{dto.departmentId}
+          AND performance.check_loop = #{dto.checkLoop}
+          AND (performance.modified BETWEEN #{dto.startTime} AND #{dto.endTime})
+          <if test="dto.principalId != null">
+              AND assets.principal_id = #{dto.principalId}
+          </if>
+          <if test="dto.mistakeType == 'normal' ">
+            AND performance.normal_mistake > 0
+          </if>
+          <if test="dto.mistakeType == 'hard' ">
+            AND performance.hard_mistake > 0
+          </if>
+          <if test="dto.mistakeType == 'fatal' ">
+            AND performance.fatal_mistake > 0
+          </if>
+    </sql>
+
+    <!--查询错误详情列表-->
+    <select id="getAssetsPerformanceDeductionDetail" resultType="com.dayou.vo.AssetsPerformanceDeductionDetailVO">
+        <include refid="assetsPerformanceDeductionDetailQuery" />
+    </select>
+
+    <!--错误详情列表导出-->
+    <select id="assetsPerformanceDeductionDetailExport" resultType="com.dayou.vo.AssetsPerformanceDeductionDetailVO">
+        <include refid="assetsPerformanceDeductionDetailQuery" />
+    </select>
+
+    <!--评估人员绩效扣分查询SQL-->
+    <sql id="assetsPerformanceDeductionByUserQuery">
+        SELECT user.id AS userId,
+               user.userName,
+               user.departmentId,
+               user.departmentName,
+               COALESCE ( SUM( checkPer.normal_mistake ), 0 ) AS checkNormalMistakeScore,
+               COALESCE ( SUM( checkPer.hard_mistake ), 0 ) AS checkHardMistakeScore,
+               COALESCE ( SUM( checkPer.fatal_mistake ), 0 ) AS checkFatalMistakeScore,
+               COALESCE ( SUM( reCheckPer.normal_mistake ), 0 ) AS reCheckNormalMistakeScore,
+               COALESCE ( SUM( reCheckPer.hard_mistake ), 0 ) AS reCheckHardMistakeScore,
+               COALESCE ( SUM( reCheckPer.fatal_mistake ), 0 ) AS reCheckFatalMistakeScore,
+               COALESCE ( SUM( fourthCheckPer.normal_mistake ), 0 ) AS fourthCheckNormalMistakeScore,
+               COALESCE ( SUM( fourthCheckPer.hard_mistake ), 0 ) AS fourthCheckHardMistakeScore,
+               COALESCE ( SUM( fourthCheckPer.fatal_mistake ), 0 ) AS fourthCheckFatalMistakeScore,
+               COALESCE (
+               COALESCE ( SUM( checkPer.normal_mistake ), 0 ) + COALESCE ( SUM( checkPer.hard_mistake ), 0 ) + COALESCE ( SUM( checkPer.fatal_mistake ), 0 ) + COALESCE ( SUM( reCheckPer.normal_mistake ), 0 ) + COALESCE ( SUM( reCheckPer.hard_mistake ), 0 ) + COALESCE ( SUM( reCheckPer.fatal_mistake ), 0 ) + COALESCE ( SUM( fourthCheckPer.normal_mistake ), 0 ) + COALESCE ( SUM( fourthCheckPer.hard_mistake ), 0 ) + COALESCE ( SUM( fourthCheckPer.fatal_mistake ), 0 ),
+                0
+                ) AS allMistakeScore
+        FROM (SELECT user.id AS id,
+                     user.`name` AS userName,
+                     department.name AS departmentName,
+                     department.id AS departmentId
+              FROM user,post,user_post,sorted_department,department
+              WHERE `user`.id = user_post.user_id
+                AND user_post.post_id = post.id
+                AND post.department_id = sorted_department.department_id
+                AND sorted_department.department_id = department.id
+                AND sorted_department.deleted = 0
+                AND user_post.deleted = 0
+                AND sorted_department.business_type = 'ASSET_BUSINESS'
+              GROUP BY user.id
+             ) AS user
+        LEFT JOIN (
+            SELECT
+            principal_id,
+            assets.created,
+            assets_production.id AS production_id
+            FROM
+            assets
+            LEFT JOIN assets_production ON assets_production.business_id = assets.id
+            AND assets_production.deleted = 0
+        ) AS orderInfo ON user.id = orderInfo.principal_id
+        LEFT JOIN ( SELECT production_id, fatal_mistake, hard_mistake, normal_mistake FROM
+        business_production_performance WHERE business_type = 'ASSET_BUSINESS' AND check_loop = '初审'
+        <if test="dto != null and dto.startTime != null and dto.endTime!= null">
+            AND (business_production_performance.modified BETWEEN #{dto.startTime} AND #{dto.endTime})
+        </if>
+        ) AS checkPer ON checkPer.production_id = orderInfo.production_id
+        LEFT JOIN ( SELECT production_id, fatal_mistake, hard_mistake, normal_mistake FROM
+        business_production_performance WHERE business_type = 'ASSET_BUSINESS' AND check_loop = '复审'
+        <if test="dto != null and dto.startTime != null and dto.endTime!= null">
+            AND (business_production_performance.modified BETWEEN #{dto.startTime} AND #{dto.endTime})
+        </if>
+        ) AS reCheckPer ON reCheckPer.production_id = orderInfo.production_id
+        LEFT JOIN ( SELECT production_id, fatal_mistake, hard_mistake, normal_mistake FROM
+        business_production_performance WHERE business_type = 'ASSET_BUSINESS' AND check_loop = '四审'
+        <if test="dto != null and dto.startTime != null and dto.endTime!= null">
+            AND (business_production_performance.modified BETWEEN #{dto.startTime} AND #{dto.endTime})
+        </if>
+        ) AS fourthCheckPer ON fourthCheckPer.production_id = orderInfo.production_id
+        <where>
+            <if test="dto != null and dto.departmentId != null">
+                AND user.departmentId = #{dto.departmentId}
+            </if>
+            <if test="dto != null and dto.userName != null">
+                AND user.userName LIKE CONCAT('%',#{dto.userName},'%')
+            </if>
+        </where>
+        GROUP BY user.id
+    </sql>
+
+    <!--评估人员绩效扣分查询-->
+    <select id="getAssetsPerformanceDeductionVOByEvaluator" resultType="com.dayou.vo.AssetsPerformanceDeductionVO">
+        <include refid="assetsPerformanceDeductionByUserQuery" />
+    </select>
+
+    <!--评估人员绩效扣分导出-->
+    <select id="assetsPerformanceDeductionVOByEvaluatorExport" resultType="com.dayou.vo.AssetsPerformanceDeductionVO">
+        <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>

+ 63 - 0
domain/src/main/java/com/dayou/dto/AssetsStatisticalSelectDTO.java

@@ -0,0 +1,63 @@
+package com.dayou.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class AssetsStatisticalSelectDTO {
+
+    /**
+     * 关键字信息
+     */
+    private String keyWord;
+
+    /**
+     * 用户名
+     */
+    private String userName;
+
+    /**
+     * 客户经理id(user_id)
+     */
+    private Long clientManagerId;
+
+    /**
+     * 项目负责人id(user_id)
+     */
+    private Long principalId;
+
+    /**
+     * 部门id
+     */
+    private Long departmentId;
+
+    /**
+     * 资产业务类型
+     */
+    private String assetsBusinessGener;
+
+    /**
+     * 筛选开始时间
+     */
+    @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;
+
+    /**
+     * 审核轮次
+     */
+    private String checkLoop;
+
+    /**
+     * 错误类型(normal、hard、fatal)
+     */
+    private String mistakeType;
+
+}

+ 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;
+}

+ 6 - 0
domain/src/main/java/com/dayou/vo/AssetsEvaluationTargetVO.java

@@ -28,7 +28,13 @@ public class AssetsEvaluationTargetVO extends AssetsEvaluationTarget {
      */
     private String secTargetTypaName;
 
+    /**
+     * 意见书创建日期
+     */
     private Date statementCreateProductionDate;
 
+    /**
+     * 报告创建日期
+     */
     private Date reportCreateProductionDate;
 }

+ 242 - 0
domain/src/main/java/com/dayou/vo/AssetsLedgerVO.java

@@ -0,0 +1,242 @@
+package com.dayou.vo;
+
+import com.dayou.annotation.Excel;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+
+@Data
+public class AssetsLedgerVO {
+
+    private Long Id;
+
+    /**
+     * 资产业务id
+     */
+    private Long assetsId;
+
+    /**
+     * 项目编号
+     */
+    @Excel(name = "项目编号")
+    private String orderId;
+
+    /**
+     * 意见书号
+     */
+    @Excel(name = "意见书号")
+    private String statementNo;
+
+    /**
+     * 报告号
+     */
+    @Excel(name = "报告号")
+    private String reportNo;
+
+    /**
+     * 报告类型
+     */
+    @Excel(name = "报告类型")
+    private String productionType;
+
+    /**
+     * 评估基准日
+     */
+    @Excel(name = "评估基准日")
+    private LocalDate valuationBasisDate;
+
+    /**
+     * 报告出具日期
+     */
+    @Excel(name = "报告出具日期")
+    private LocalDate createReportDate;
+
+    /**
+     * 项目名称
+     */
+    @Excel(name = "项目名称")
+    private String projectName;
+
+    /**
+     * 当前实例节点名称
+     */
+    @Excel(name = "当前实例节点名称")
+    private String currentNodeName;
+
+    /**
+     * 是否证券项目(0:Y 1:N)
+     */
+    @Excel(name = "是否证券项目", readConverterExp = "true=是,false=否")
+    private Boolean security;
+
+    /**
+     * 是否资产重组项目(0:Y 1:N)
+     */
+    @Excel(name = "是否资产重组项目", readConverterExp = "true=是,false=否")
+    private Boolean significantAssetsReorganization;
+
+    /**
+     * 是否国资项目(0:Y 1:N)
+     */
+    @Excel(name = "是否国资项目", readConverterExp = "true=是,false=否")
+    private Boolean stateAssets;
+
+    /**
+     * 是否涉及境外资产(0:Y 1:N)
+     */
+    @Excel(name = "是否涉及境外资产", readConverterExp = "true=是,false=否")
+    private Boolean foreignAssetsInvolved;
+
+    /**
+     * 是否分配产值
+     */
+    @Excel(name = "是否分配产值", readConverterExp = "true=是,false=否")
+    private Boolean dispenseBenefit;
+
+    /**
+     * 客户经理名
+     */
+    @Excel(name = "客户经理")
+    private String clientManagerName;
+
+    /**
+     * 项目负责人名
+     */
+    @Excel(name = "项目负责人")
+    private String principalName;
+
+    /**
+     * 客户名称
+     */
+    @Excel(name = "客户名称")
+    private String customerName;
+
+    /**
+     * 业务来源(客户子级名称)
+     */
+    @Excel(name = "业务来源")
+    private String customerSubName;
+
+    /**
+     * 委托方
+     */
+    @Excel(name = "委托方")
+    private String bailor;
+
+    /**
+     * 委托方电话
+     */
+    @Excel(name = "委托方电话")
+    private String bailorContactTel;
+
+    /**
+     * 评估对象评估目的
+     */
+    @Excel(name = "评估对象评估目的")
+    private String purposeName;
+
+    /**
+     * 评估对象价值类型
+     */
+    @Excel(name = "评估对象价值类型")
+    private String valueTypeName;
+
+    /**
+     * 一级评估对象
+     */
+    @Excel(name = "一级评估对象")
+    private String targetTypename;
+
+    /**
+     * 二级评估对象
+     */
+    @Excel(name = "二级评估对象")
+    private String secTargetTypaName;
+
+    /**
+     * 评估方法id
+     */
+    @Excel(name = "评估方法id")
+    private String evaluationMethods;
+
+    /**
+     * 自定义其他评估方法
+     */
+    @Excel(name = "自定义其他评估方法")
+    private String definedEvaluationMethod;
+
+    /**
+     * 最终选择的评估方法id
+     */
+    @Excel(name = "最终选择的评估方法id")
+    private String choiceEvaluationMethods;
+
+    /**
+     * 最终选择的自定义其他评估方法
+     */
+    @Excel(name = "最终选择的自定义其他评估方法")
+    private String choiceDefinedEvaluationMethod;
+
+    /**
+     * 评估结论对应的评估值(万)
+     */
+    @Excel(name = "评估结论对应的评估值(万)")
+    private String estimatedValue;
+
+    /**
+     * 订单应收款(元)
+     */
+    @Excel(name = "订单应收款(元)")
+    private Double shouldAmount;
+
+    /**
+     * 订单实收款(元)
+     */
+    @Excel(name = "订单实收款(元)")
+    private Double realAmount;
+
+    /**
+     * 签字人(产品类型为报告时,签字人必填)
+     */
+    @Excel(name = "签字人")
+    private String signatory;
+
+    /**
+     * 出库时间
+     */
+    @Excel(name = "出库时间")
+    private LocalDateTime repertoryOutTime;
+
+    /**
+     * 意见书审核人(二审)
+     */
+    @Excel(name = "意见书审核人")
+    private String statementCheckerName;
+
+    /**
+     * 意见书复审人(三审)
+     */
+    @Excel(name = "意见书复审人")
+    private String statementReCheckerName;
+
+    /**
+     * 报告审核人(二审)
+     */
+    @Excel(name = "报告审核人")
+    private String reportCheckerName;
+
+    /**
+     * 报告复审人(三审)
+     */
+    @Excel(name = "报告复审人")
+    private String reportReCheckerName;
+
+    /**
+     * 报告四审人(四审)
+     */
+    @Excel(name = "报告四审人")
+    private String reportFourthCheckerName;
+
+}

+ 89 - 0
domain/src/main/java/com/dayou/vo/AssetsPerformanceDeductionDetailVO.java

@@ -0,0 +1,89 @@
+package com.dayou.vo;
+
+import com.dayou.annotation.Excel;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.time.LocalDate;
+import java.util.Date;
+
+@Data
+public class AssetsPerformanceDeductionDetailVO {
+
+    private Integer id;
+
+    /**
+     * 项目编号
+     */
+    @Excel(name = "项目编号")
+    private String orderId;
+
+    /**
+     * 项目名称
+     */
+    @Excel(name = "项目名称")
+    private String projectName;
+
+    /**
+     * 客户名称
+     */
+    @Excel(name = "客户名称")
+    private String customerName;
+
+    /**
+     * 产品类型
+     */
+    @Excel(name = "产品类型")
+    private String productionType;
+
+    /**
+     * 产品号
+     */
+    @Excel(name = "产品号")
+    private String productionNo;
+
+
+    /**
+     * 项目负责人
+     */
+    @Excel(name = "项目负责人")
+    private String principalName;
+
+    /**
+     * 参与人
+     */
+    @Excel(name = "参与人")
+    private String members;
+
+    /**
+     * 评估金额(万元)
+     */
+    @Excel(name = "评估金额(万元)")
+    private BigDecimal evaluateAmount;
+
+    /**
+     * 扣分人
+     */
+    @Excel(name = "扣分人")
+    private String checkerName;
+
+    /**
+     * 错误个数
+     */
+    @Excel(name = "错误个数")
+    private Integer mistakeCount;
+
+    /**
+     * 扣分时间
+     */
+    @Excel(name = "扣分时间")
+    private LocalDate checkTime;
+
+    /**
+     * 扣分原因
+     */
+    @Excel(name = "扣分原因")
+    private String reason;
+
+}

+ 132 - 0
domain/src/main/java/com/dayou/vo/AssetsPerformanceDeductionVO.java

@@ -0,0 +1,132 @@
+package com.dayou.vo;
+
+import com.dayou.annotation.Excel;
+import lombok.Data;
+
+@Data
+public class AssetsPerformanceDeductionVO {
+
+    /**
+     * 部门id
+     */
+    private Long departmentId;
+
+    /**
+     * 用户id
+     */
+    private Long userId;
+
+    /**
+     * 员工姓名
+     */
+    @Excel(name = "员工姓名")
+    private String userName;
+
+    /**
+     * 部门名称
+     */
+    @Excel(name = "部门名称")
+    private String departmentName;
+
+    /**
+     * 审核一般错误扣分
+     */
+    @Excel(name = "审核一般错误")
+    private Integer checkNormalMistakeScore;
+
+    /**
+     * 审核较大错误扣分
+     */
+    @Excel(name = "审核较大错误")
+    private Integer checkHardMistakeScore;
+
+    /**
+     * 审核严重错误扣分
+     */
+    @Excel(name = "审核严重错误")
+    private Integer checkFatalMistakeScore;
+
+    /**
+     * 复审一般错误扣分
+     */
+    @Excel(name = "复审一般错误")
+    private Integer reCheckNormalMistakeScore;
+
+    /**
+     * 复审较大错误扣分
+     */
+    @Excel(name = "复审较大错误")
+    private Integer reCheckHardMistakeScore;
+
+    /**
+     * 复审严重错误扣分
+     */
+    @Excel(name = "复审严重错误")
+    private Integer reCheckFatalMistakeScore;
+
+    /**
+     * 四审一般错误扣分
+     */
+    @Excel(name = "四审一般错误")
+    private Integer fourthCheckNormalMistakeScore;
+
+    /**
+     * 四审较大错误扣分
+     */
+    @Excel(name = "四审较大错误")
+    private Integer fourthCheckHardMistakeScore;
+
+    /**
+     * 四审严重错误扣分
+     */
+    @Excel(name = "四审严重错误")
+    private Integer fourthCheckFatalMistakeScore;
+
+    /**
+     * 外部投诉一般错误扣分
+     */
+    @Excel(name = "外部投诉一般错误")
+    private Integer externalComplaintNormalMistakeScore;
+
+    /**
+     * 外部投诉较大错误扣分
+     */
+    @Excel(name = "外部投诉较大错误")
+    private Integer externalComplaintHardMistakeScore;
+
+    /**
+     * 外部投诉严重错误扣分
+     */
+    @Excel(name = "外部投诉严重错误")
+    private Integer externalComplaintFatalMistakeScore;
+
+    /**
+     * 外部投诉服务态度恶劣
+     */
+    @Excel(name = "服务态度恶劣")
+    private Integer badServiceAttitude;
+
+    /**
+     * 内部投诉一般错误扣分
+     */
+    @Excel(name = "内部投诉一般错误")
+    private Integer internalComplaintNormalMistakeScore;
+
+    /**
+     * 内部投诉较大错误扣分
+     */
+    @Excel(name = "内部投诉较大错误")
+    private Integer internalComplaintHardMistakeScore;
+
+    /**
+     * 内部投诉严重错误扣分
+     */
+    @Excel(name = "内部投诉严重错误")
+    private Integer internalComplaintFatalMistakeScore;
+
+    /**
+     * 扣分合计
+     */
+    @Excel(name = "扣分合计")
+    private Integer allMistakeScore;
+}

+ 1 - 1
service/src/main/java/com/dayou/dyoa/DyoaHistoryServiceImpl.java

@@ -54,7 +54,7 @@ public class DyoaHistoryServiceImpl implements IDyoaHistoryService{
     private static String COOKIE ;
 
 
-    private static final String HISTORY_LOGIN_URL = "http://noa.scdayou.com/login?loginName=admin&password=ABC666000";
+    private static final String HISTORY_LOGIN_URL = "http://noa.scdayou.com/login?loginName=admin&password=root1234";
 
     private static final String HISTORY_MAJOR_ORDER_URL = "http://noa.scdayou.com/dyoa/order/pageQuery";
 

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

@@ -0,0 +1,86 @@
+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;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 资产业务统计报表 服务类
+ * </p>
+ *
+ * @author GouGengquan
+ * @since 2024-07-31
+ */
+public interface IAssetsStatisticalStatementService {
+
+    /**
+     * 获取资产台账
+     * @param dto 查询dto
+     * @return Page<AssetsLedgerVO>
+     */
+    Page<AssetsLedgerVO> getAssetsLedgerVO(AssetsStatisticalSelectDTO dto,Page page);
+
+    /**
+     * 资产台账导出
+     * @param dto 查询dto
+     * @return Page<AssetsLedgerVO>
+     */
+    List<AssetsLedgerVO> assetsLedgerVOExport(AssetsStatisticalSelectDTO dto);
+
+    /**
+     * 评估部绩效扣分查询
+     * @param dto 查询dto
+     * @return List<AssetsPerformanceDeductionVO>
+     */
+    List<AssetsPerformanceDeductionVO> getAssetsPerformanceDeductionVO(AssetsStatisticalSelectDTO dto);
+
+    /**
+     * 评估部绩效扣分导出
+     * @param dto 查询dto
+     * @return List<AssetsPerformanceDeductionVO>
+     */
+    List<AssetsPerformanceDeductionVO> assetsPerformanceDeductionVOExport(AssetsStatisticalSelectDTO dto);
+
+    /**
+     * 查询错误详情列表
+     * @param page 分页
+     * @param dto 查询dto
+     * @return Page<AssetsPerformanceDeductionDetailVO>
+     */
+    Page<AssetsPerformanceDeductionDetailVO> getAssetsPerformanceDeductionDetail(Page page, AssetsStatisticalSelectDTO dto);
+
+    /**
+     * 错误详情列表导出
+     * @param dto 查询dto
+     * @return Page<AssetsPerformanceDeductionDetailVO>
+     */
+    List<AssetsPerformanceDeductionDetailVO> assetsPerformanceDeductionDetailExport(AssetsStatisticalSelectDTO dto);
+
+    /**
+     * 评估人员绩效扣分查询
+     * @param dto 查询dto
+     * @return List<AssetsPerformanceDeductionVO>
+     */
+    List<AssetsPerformanceDeductionVO> getAssetsPerformanceDeductionVOByEvaluator(AssetsStatisticalSelectDTO dto);
+
+    /**
+     * 评估人员绩效扣分导出
+     * @param dto 查询dto
+     * @return List<AssetsPerformanceDeductionVO>
+     */
+    List<AssetsPerformanceDeductionVO> assetsPerformanceDeductionVOByEvaluatorExport(AssetsStatisticalSelectDTO dto);
+
+    /**
+     * 评估部效率查询
+     * @param dto 查询dto
+     * @return List<AssetsEvaluateDepEfficiencyVO>
+     */
+    List<AssetsEvaluateDepEfficiencyVO> getAssetsEvaluateDepEfficiencyVO(AssetsStatisticalSelectDTO dto);
+
+}

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

@@ -0,0 +1,359 @@
+package com.dayou.service.impl;
+
+import cn.hutool.core.util.ObjectUtil;
+import com.alibaba.fastjson.JSONArray;
+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.User;
+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;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+@Service
+public class AssetsStatisticalStatementServiceImpl implements IAssetsStatisticalStatementService {
+
+    @Autowired
+    private AssetsStatisticalStatementMapper assetsStatisticalStatementMapper;
+
+    @Autowired
+    private AssetsEvaluationMethodMapper assetsEvaluationMethodMapper;
+
+    @Autowired
+    private IUserService userService;
+
+    /**
+     * 获取资产台账
+     *
+     * @param dto 查询dto
+     * @return Page<AssetsLedgerVO>
+     */
+    @Override
+    public Page<AssetsLedgerVO> getAssetsLedgerVO(AssetsStatisticalSelectDTO dto, Page page) {
+        Page<AssetsLedgerVO> assetsLedgerVOPage = assetsStatisticalStatementMapper.getAssetsLedgerVO(page, dto);
+        // 获取评估方法信息
+        List<AssetsEvaluationMethod> evaluationMethodList = assetsEvaluationMethodMapper.getAssetsEvaluationMethod();
+        // 获取用户信息
+        LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<User>()
+                .select(User::getId, User::getName)
+                .eq(User::getDeleted, false);
+        List<User> userList = userService.list(lambdaQueryWrapper);
+        // 设置评估方法与签字人等信息
+        for (AssetsLedgerVO assetsLedgerVO : assetsLedgerVOPage.getRecords()) {
+            assetsLedgerVO = setVOJSONInfo(assetsLedgerVO, evaluationMethodList, userList);
+        }
+        return assetsLedgerVOPage;
+    }
+
+    /**
+     * 资产台账导出
+     *
+     * @param dto 查询dto
+     * @return Page<AssetsLedgerVO>
+     */
+    @Override
+    public List<AssetsLedgerVO> assetsLedgerVOExport(AssetsStatisticalSelectDTO dto) {
+        List<AssetsLedgerVO> assetsLedgerVOList = assetsStatisticalStatementMapper.assetsLedgerVOExport(dto);
+        // 获取评估方法信息
+        List<AssetsEvaluationMethod> evaluationMethodList = assetsEvaluationMethodMapper.getAssetsEvaluationMethod();
+        // 获取用户信息
+        LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<User>()
+                .select(User::getId, User::getName)
+                .eq(User::getDeleted, false);
+        List<User> userList = userService.list(lambdaQueryWrapper);
+        // 设置评估方法与签字人等信息
+        for (AssetsLedgerVO assetsLedgerVO : assetsLedgerVOList) {
+            assetsLedgerVO = setVOJSONInfo(assetsLedgerVO, evaluationMethodList, userList);
+        }
+        return assetsLedgerVOList;
+    }
+
+    /**
+     * 评估部绩效扣分查询
+     *
+     * @param dto 查询dto
+     * @return Page<AssetsPerformanceDeductionVO>
+     */
+    @Override
+    public List<AssetsPerformanceDeductionVO> getAssetsPerformanceDeductionVO(AssetsStatisticalSelectDTO dto) {
+        return assetsStatisticalStatementMapper.getAssetsPerformanceDeductionVO(dto);
+    }
+
+    /**
+     * 评估部绩效扣分导出
+     *
+     * @param dto 查询dto
+     * @return Page<AssetsPerformanceDeductionVO>
+     */
+    @Override
+    public List<AssetsPerformanceDeductionVO> assetsPerformanceDeductionVOExport(AssetsStatisticalSelectDTO dto) {
+        return assetsStatisticalStatementMapper.assetsPerformanceDeductionVOExport(dto);
+    }
+
+    /**
+     * 查询错误详情列表
+     *
+     * @param page 分页
+     * @param dto  查询dto
+     * @return Page<AssetsPerformanceDeductionDetailVO>
+     */
+    @Override
+    public Page<AssetsPerformanceDeductionDetailVO> getAssetsPerformanceDeductionDetail(Page page, AssetsStatisticalSelectDTO dto) {
+        Page<AssetsPerformanceDeductionDetailVO> detailVOPage = assetsStatisticalStatementMapper.getAssetsPerformanceDeductionDetail(page, dto);
+        detailVOPage.setRecords(setDetailVOJSONInfo(detailVOPage.getRecords()));
+        return detailVOPage;
+    }
+
+    /**
+     * 错误详情列表导出
+     *
+     * @param dto 查询dto
+     * @return Page<AssetsPerformanceDeductionDetailVO>
+     */
+    @Override
+    public List<AssetsPerformanceDeductionDetailVO> assetsPerformanceDeductionDetailExport(AssetsStatisticalSelectDTO dto) {
+        List<AssetsPerformanceDeductionDetailVO> detailVOList = assetsStatisticalStatementMapper.assetsPerformanceDeductionDetailExport(dto);
+        detailVOList = setDetailVOJSONInfo(detailVOList);
+        return detailVOList;
+    }
+
+    /**
+     * 评估人员绩效扣分查询
+     * @param dto 查询dto
+     * @return List<AssetsPerformanceDeductionVO>
+     */
+    @Override
+    public List<AssetsPerformanceDeductionVO> getAssetsPerformanceDeductionVOByEvaluator(AssetsStatisticalSelectDTO dto) {
+        return assetsStatisticalStatementMapper.getAssetsPerformanceDeductionVOByEvaluator(dto);
+    }
+
+    /**
+     * 评估人员绩效扣分导出
+     * @param dto 查询dto
+     * @return List<AssetsPerformanceDeductionVO>
+     */
+    @Override
+    public List<AssetsPerformanceDeductionVO> assetsPerformanceDeductionVOByEvaluatorExport(AssetsStatisticalSelectDTO dto) {
+        return assetsStatisticalStatementMapper.assetsPerformanceDeductionVOByEvaluatorExport(dto);
+    }
+
+    /**
+     * 评估部效率查询
+     * @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信息
+     * @param evaluationMethodList 评估方法信息
+     * @param userList             用户信息
+     * @return AssetsLedgerVO
+     */
+    public AssetsLedgerVO setVOJSONInfo(AssetsLedgerVO assetsLedgerVO, List<AssetsEvaluationMethod> evaluationMethodList, List<User> userList) {
+        // 正则表达式匹配任何在[]内的值
+        Pattern pattern = Pattern.compile("\\[(.*?)\\]");
+
+        // 获取评估方法
+        if (ObjectUtil.isNotNull(assetsLedgerVO.getEvaluationMethods())) {
+            Matcher matcher = pattern.matcher(assetsLedgerVO.getEvaluationMethods());
+            List<String> methodIdsList = new ArrayList<>();
+            while (matcher.find()) {
+                // 将匹配的整个字符串添加到列表中
+                methodIdsList.add(matcher.group(0));
+            }
+            // 新建字符串用来装处理后的方法名
+            String evaluationMethodNames = null;
+            // 获取方法id
+            for (String methodIds : methodIdsList) {
+                // 将JSON格式的id数组转成集合
+                JSONArray jsonArray = JSONArray.parseArray(methodIds);
+                List<Long> idList = jsonArray.toJavaList(Long.class);
+                // 通过id进行匹配并返回方法名
+                int index = 0;
+                for (AssetsEvaluationMethod evaluationMethod : evaluationMethodList) {
+                    if (idList.contains(evaluationMethod.getId())) {
+                        if (ObjectUtil.isNotNull(evaluationMethodNames)) {
+                            evaluationMethodNames += evaluationMethod.getMethodName();
+                            index++;
+                        } else {
+                            evaluationMethodNames = evaluationMethod.getMethodName();
+                            index++;
+                        }
+                        if (index < idList.size()) {
+                            evaluationMethodNames += ',';
+                        } else {
+                            evaluationMethodNames += ';';
+                        }
+                    }
+                }
+            }
+            assetsLedgerVO.setEvaluationMethods(evaluationMethodNames.toString());
+        }
+
+        // 获取最终选择的评估方法
+        if (ObjectUtil.isNotNull(assetsLedgerVO.getChoiceEvaluationMethods())) {
+            Matcher choiceMatcher = pattern.matcher(assetsLedgerVO.getChoiceEvaluationMethods());
+            List<String> choiceMethodIdsList = new ArrayList<>();
+            while (choiceMatcher.find()) {
+                // 将匹配的整个字符串添加到列表中
+                choiceMethodIdsList.add(choiceMatcher.group(0));
+            }
+            // 新建字符串用来装处理后的方法名
+            String choiceEvaluationMethodNames = null;
+            // 获取方法id
+            for (String methodIds : choiceMethodIdsList) {
+                // 将JSON格式的id数组转成集合
+                JSONArray jsonArray = JSONArray.parseArray(methodIds);
+                List<Long> idList = jsonArray.toJavaList(Long.class);
+                // 通过id进行匹配并返回方法名
+                int index = 0;
+                for (AssetsEvaluationMethod evaluationMethod : evaluationMethodList) {
+                    if (idList.contains(evaluationMethod.getId())) {
+                        if (ObjectUtil.isNotNull(choiceEvaluationMethodNames)) {
+                            choiceEvaluationMethodNames += evaluationMethod.getMethodName();
+                            index++;
+                        } else {
+                            choiceEvaluationMethodNames = evaluationMethod.getMethodName();
+                            index++;
+                        }
+                        if (index < idList.size()) {
+                            choiceEvaluationMethodNames += ',';
+                        } else {
+                            choiceEvaluationMethodNames += ';';
+                        }
+                    }
+                }
+            }
+            assetsLedgerVO.setChoiceEvaluationMethods(choiceEvaluationMethodNames.toString());
+        }
+
+        // 获取签字人
+        if (ObjectUtil.isNotNull(assetsLedgerVO.getSignatory())) {
+            String signatoryNames = null;
+            JSONArray jsonArray = JSONArray.parseArray(assetsLedgerVO.getSignatory());
+            List<Long> signatoryIdList = jsonArray.toJavaList(Long.class);
+            int index = 0;
+            for (User user : userList) {
+                if (signatoryIdList.contains(user.getId())) {
+                    if (ObjectUtil.isNotNull(signatoryNames)) {
+                        signatoryNames += user.getName();
+                        index++;
+                    } else {
+                        signatoryNames = user.getName();
+                        index++;
+                    }
+                    if (index < signatoryIdList.size()) {
+                        signatoryNames += ',';
+                    } else {
+                        signatoryNames += ';';
+                    }
+                }
+            }
+            assetsLedgerVO.setSignatory(signatoryNames);
+        }
+
+        return assetsLedgerVO;
+    }
+
+    /**
+     * 设置参与人信息
+     * @param detailVOList 查询出来的VO信息
+     * @return List<AssetsPerformanceDeductionDetailVO>
+     */
+    public List<AssetsPerformanceDeductionDetailVO> setDetailVOJSONInfo(List<AssetsPerformanceDeductionDetailVO> detailVOList){
+        for (AssetsPerformanceDeductionDetailVO detailVO : detailVOList) {
+            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 detailVOList;
+    }
+}