ソースを参照

1.统计报表-资产台账相关开发(待完善)

GouGengquan 1 年間 前
コミット
dee1190248

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

@@ -0,0 +1,32 @@
+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.AssetsLedgerVO;
+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;
+
+@RestController
+@RequestMapping("assets/statisticalStatement")
+@Slf4j
+public class AssetsStatisticalStatementController {
+
+    @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));
+    }
+
+}

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

@@ -0,0 +1,16 @@
+package com.dayou.mapper;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.dayou.dto.AssetsStatisticalSelectDTO;
+import com.dayou.vo.AssetsLedgerVO;
+import org.apache.ibatis.annotations.Param;
+
+public interface AssetsStatisticalStatementMapper {
+
+    /**
+     * 获取资产台账
+     * @param dto 查询dto
+     * @return Page<AssetsLedgerVO>
+     */
+    Page<AssetsLedgerVO> getAssetsLedgerVO(@Param("page") Page page, @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
         #查询当前进行的节点信息(并使用左连接)

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

@@ -0,0 +1,176 @@
+<?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">
+
+    <!--获取资产台账-->
+    <select id="getAssetsLedgerVO" resultType="com.dayou.vo.AssetsLedgerVO">
+        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,
+               report.production_type                                                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,
+               IFNULL((SELECT node.`name`
+                       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.business_id = assets.id
+                         AND (IF(statement.production_no IS NULL, instance.business_sub_id IS NULL,
+                                 statement.production_no = instance.business_sub_id))
+                         AND (IF(report.production_no IS NULL, instance.business_min_id IS NULL,
+                                 report.production_no = instance.business_min_id))
+                         AND (instance.state = 'PENDING' OR
+                              (instance.state = 'FINISHED' AND node.`code` = 'BUSINESS_ARCHIVING'))),
+                      IF(statement.production_no IS NULL, '撰写意见书', '撰写报告')) 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 evaluationMethodId,
+               GROUP_CONCAT(target.defined_evaluation_method SEPARATOR ', ') AS definedEvaluationMethod,
+               GROUP_CONCAT(target.choice_evaluation_method_id SEPARATOR ', ') AS choiceEvaluationMethodId,
+               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'
+               ) 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'
+        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">
+            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
+     </select>
+</mapper>

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

@@ -0,0 +1,48 @@
+package com.dayou.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class AssetsStatisticalSelectDTO {
+
+    /**
+     * 关键字信息
+     */
+    private String keyWord;
+
+    /**
+     * 客户经理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;
+
+}

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

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

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

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

@@ -0,0 +1,23 @@
+package com.dayou.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.dayou.dto.AssetsStatisticalSelectDTO;
+import com.dayou.vo.AssetsLedgerVO;
+
+/**
+ * <p>
+ * 资产业务统计报表 服务类
+ * </p>
+ *
+ * @author GouGengquan
+ * @since 2024-07-31
+ */
+public interface IAssetsStatisticalStatementService {
+
+    /**
+     * 获取资产台账
+     * @param dto 查询dto
+     * @return Page<AssetsLedgerVO>
+     */
+    Page<AssetsLedgerVO> getAssetsLedgerVO(AssetsStatisticalSelectDTO dto,Page page);
+}

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

@@ -0,0 +1,26 @@
+package com.dayou.service.impl;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.dayou.dto.AssetsStatisticalSelectDTO;
+import com.dayou.mapper.AssetsStatisticalStatementMapper;
+import com.dayou.service.IAssetsStatisticalStatementService;
+import com.dayou.vo.AssetsLedgerVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class AssetsStatisticalStatementServiceImpl implements IAssetsStatisticalStatementService {
+
+    @Autowired
+    private AssetsStatisticalStatementMapper assetsStatisticalStatementMapper;
+
+    /**
+     * 获取资产台账
+     * @param dto 查询dto
+     * @return Page<AssetsLedgerVO>
+     */
+    @Override
+    public Page<AssetsLedgerVO> getAssetsLedgerVO(AssetsStatisticalSelectDTO dto,Page page) {
+        return assetsStatisticalStatementMapper.getAssetsLedgerVO(page,dto);
+    }
+}