Ver Fonte

Merge remote-tracking branch 'origin/master'

# Conflicts:
#	biz-base/src/main/java/com/dayou/controller/FinanceRealFundController.java
#	dao/src/main/java/com/dayou/mapper/FinanceRealFundMapper.java
#	dao/src/main/resources/mapper/FinanceRealFundMapper.xml
#	service/src/main/java/com/dayou/service/IFinanceRealFundService.java
#	service/src/main/java/com/dayou/service/impl/FinanceRealFundServiceImpl.java
wucl há 1 ano atrás
pai
commit
9220cc72d7
26 ficheiros alterados com 465 adições e 73 exclusões
  1. 1 1
      biz-base/src/main/java/com/dayou/controller/AssetsController.java
  2. 26 0
      biz-base/src/main/java/com/dayou/controller/BusinessIncomeController.java
  3. 10 0
      biz-base/src/main/java/com/dayou/controller/CommissionDeclareController.java
  4. 20 0
      biz-base/src/main/java/com/dayou/controller/FinanceRealFundController.java
  5. 9 0
      dao/src/main/java/com/dayou/mapper/BusinessIncomeMapper.java
  6. 8 0
      dao/src/main/java/com/dayou/mapper/CommissionDeclareMapper.java
  7. 13 0
      dao/src/main/java/com/dayou/mapper/FinanceRealFundMapper.java
  8. 4 1
      dao/src/main/resources/mapper/AssetsEvaluationTargetMapper.xml
  9. 4 1
      dao/src/main/resources/mapper/AssetsMapper.xml
  10. 2 1
      dao/src/main/resources/mapper/AssetsProductionMapper.xml
  11. 89 58
      dao/src/main/resources/mapper/BusinessIncomeMapper.xml
  12. 13 1
      dao/src/main/resources/mapper/CommissionDeclareMapper.xml
  13. 128 0
      dao/src/main/resources/mapper/FinanceRealFundMapper.xml
  14. 6 0
      domain/src/main/java/com/dayou/dto/CommissionDeclareDTO.java
  15. 2 0
      domain/src/main/java/com/dayou/entity/BusinessCommissionRate.java
  16. 5 0
      domain/src/main/java/com/dayou/entity/CommissionDeclare.java
  17. 11 0
      domain/src/main/java/com/dayou/vo/CommissionDeclareDetailVO.java
  18. 12 0
      domain/src/main/java/com/dayou/vo/CommissionDeclareVO.java
  19. 9 0
      service/src/main/java/com/dayou/service/IBusinessIncomeService.java
  20. 8 1
      service/src/main/java/com/dayou/service/ICommissionDeclareService.java
  21. 14 0
      service/src/main/java/com/dayou/service/IFinanceRealFundService.java
  22. 12 8
      service/src/main/java/com/dayou/service/impl/AssetsProductionServiceImpl.java
  23. 14 0
      service/src/main/java/com/dayou/service/impl/BusinessIncomeServiceImpl.java
  24. 10 0
      service/src/main/java/com/dayou/service/impl/CommissionDeclareServiceImpl.java
  25. 20 0
      service/src/main/java/com/dayou/service/impl/FinanceRealFundServiceImpl.java
  26. 15 1
      sql/update_sql.sql

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

@@ -54,7 +54,7 @@ public class AssetsController extends BaseController {
     }
 
     /**
-     * 条件查询我的资产任务订单列表
+     * 条件查询我的资产订单列表
      * @param page 分页条件
      * @param assetsSelectDTO 查询条件
      * @return Page<AssetsVO>

+ 26 - 0
biz-base/src/main/java/com/dayou/controller/BusinessIncomeController.java

@@ -1,8 +1,11 @@
 package com.dayou.controller;
 
+import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.dayou.common.RestResponse;
+import com.dayou.exception.ErrorCode;
 import com.dayou.service.IBusinessIncomeService;
+import com.dayou.vo.RealFundAssetsStatVO;
 import com.dayou.vo.UserCommissionProdVO;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -10,6 +13,12 @@ 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.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+
 /**
  * 业务收入
  *
@@ -50,6 +59,23 @@ public class BusinessIncomeController extends BaseController {
         return RestResponse.data(ret);
     }
 
+    /**
+     * 资产业务我的提成导出excel
+     * @param vo 查询条件
+     */
+    @GetMapping("/my/assets/export")
+    public void myAssetsIncomeExport(HttpServletResponse response, UserCommissionProdVO vo) throws IOException {
+        List<UserCommissionProdVO> list = businessIncomeService.myAssetsIncomeExport(vo);
+        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
+        if (ObjectUtil.isNull(vo.getStartDate()) || ObjectUtil.isNull(vo.getEndDate())){
+            ErrorCode.throwBusinessException("起始时间和结束时间必填!", "500");
+        }if (ObjectUtil.isNull(list) || list.isEmpty()){
+            ErrorCode.throwBusinessException("条件筛选结果数量为0,不可导出!", "500");
+        }else {
+            exportPlus(response, "资产我的提成_" + dateFormat.format(new Date()),list, UserCommissionProdVO.class);
+        }
+    }
+
 
 }
 

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

@@ -144,5 +144,15 @@ public class CommissionDeclareController extends BaseController {
     public RestResponse<List<CommissionDeclareTodoCheckVO>> assetsTodoCheckList() {
         return RestResponse.data(commissionDeclareService.assetsTodoCheckList());
     }
+
+    /**
+     * 更新资产绩效申报提成比列与下限信息
+     * @param declareDTO dto
+     * @return RestResponse<Boolean>
+     */
+    @PutMapping("/assets/check/update")
+    public RestResponse<Boolean> updateAssetsCommissionDeclare(@RequestBody CommissionDeclareDTO declareDTO) {
+        return RestResponse.data(commissionDeclareService.updateAssetsCommissionDeclare(declareDTO));
+    }
 }
 

+ 20 - 0
biz-base/src/main/java/com/dayou/controller/FinanceRealFundController.java

@@ -298,5 +298,25 @@ public class FinanceRealFundController extends BaseController {
         Page<PersonalProdOverdueVO> result = financeRealFundService.overduePersonal(overdueVO,page);
         return RestResponse.data(result);
     }
+
+    /**
+     * 资产评估人员提成计算
+     * @param vo vo
+     * @return List<UserCommissionTotalAmountVO>
+     */
+    @GetMapping("/commission/assets/evaluator")
+    public RestResponse<List<UserCommissionTotalAmountVO>> assetsEvaluatorCommission(UserCommissionTotalAmountVO vo) {
+        return RestResponse.data(financeRealFundService.assetsEvaluatorCommission(vo));
+    }
+
+    /**
+     * 资产评估人员提成详情
+     * @param vo vo
+     * @return List<UserCommissionTotalAmountVO>
+     */
+    @GetMapping("/commission/assets/evaluator/detail")
+    public RestResponse<List<UserCommissionProdVO>> assetsEvaluatorCommissionDetail(UserCommissionProdVO vo) {
+        return RestResponse.data(financeRealFundService.assetsEvaluatorCommissionDetail(vo));
+    }
 }
 

+ 9 - 0
dao/src/main/java/com/dayou/mapper/BusinessIncomeMapper.java

@@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.dayou.vo.UserCommissionProdVO;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.List;
+
 /**
  * 类说明:
  *
@@ -23,4 +25,11 @@ public interface BusinessIncomeMapper {
      * @return Page<UserCommissionProdVO>
      */
     Page<UserCommissionProdVO> myAssetsIncome(Page page, @Param("vo") UserCommissionProdVO vo);
+
+    /**
+     * 资产业务我的提成导出excel
+     * @param vo 查询条件
+     * @return Page<UserCommissionProdVO>
+     */
+    List<UserCommissionProdVO> myAssetsIncomeExport(@Param("vo") UserCommissionProdVO vo);
 }

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

@@ -1,6 +1,7 @@
 package com.dayou.mapper;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.dayou.dto.CommissionDeclareDTO;
 import com.dayou.entity.CommissionDeclare;
 import com.dayou.dao.CustomBaseMapper;
 import com.dayou.vo.CommissionDeclareTodoCheckVO;
@@ -61,4 +62,11 @@ public interface CommissionDeclareMapper extends CustomBaseMapper<CommissionDecl
      * @return List<CommissionDeclareTodoCheckVO>
      */
     List<CommissionDeclareTodoCheckVO> assetsTodoCheckList( @Param("checkVO")CommissionDeclareTodoCheckVO checkVO);
+
+    /**
+     * 更新资产绩效申报提成比列与下限信息
+     * @param declareDTO dto
+     * @return Boolean
+     */
+    Boolean updateAssetsCommissionDeclare(@Param("declareDTO") CommissionDeclareDTO declareDTO);
 }

+ 13 - 0
dao/src/main/java/com/dayou/mapper/FinanceRealFundMapper.java

@@ -52,4 +52,17 @@ public interface FinanceRealFundMapper extends CustomBaseMapper<FinanceRealFund>
     List<UserCommissionProdVO> marketUserDetailExport(@Param("vo")UserCommissionProdVO vo);
 
     Page<PersonalProdOverdueVO> overduePersonal(Page page, PersonalProdOverdueVO overdueVO);
+    /**
+     * 资产评估人员提成计算
+     * @param vo vo
+     * @return List<UserCommissionTotalAmountVO>
+     */
+    List<UserCommissionTotalAmountVO> assetsEvaluatorCommission(@Param("vo") UserCommissionTotalAmountVO vo);
+
+    /**
+     * 资产评估人员提成计算详情
+     * @param vo vo
+     * @return List<UserCommissionTotalAmountVO>
+     */
+    List<UserCommissionProdVO> assetsEvaluatorCommissionDetail(@Param("vo") UserCommissionProdVO vo);
 }

+ 4 - 1
dao/src/main/resources/mapper/AssetsEvaluationTargetMapper.xml

@@ -60,7 +60,10 @@
         LEFT JOIN assets_evaluation_target_purpose AS purpose ON purpose.id = target.evaluation_purpose_id
         LEFT JOIN assets_value_type AS value_type ON value_type.id = target.assets_value_id
         WHERE target.assets_id = #{id}
-        <if test="(statementNo != null and statementNo != '') or (reportNo != null and reportNo != '') ">
+        <if test="(statementNo != null and statementNo != '') and (reportNo != null and reportNo != '') ">
+            AND statement_no = #{statementNo} AND report_no = #{reportNo}
+        </if>
+        <if test="statementNo != null and statementNo != '' ">
             AND statement_no = #{statementNo}
         </if>
         <if test="reportNo != null and reportNo != '' ">

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

@@ -86,13 +86,15 @@
         nodeInstance.business_id AS businessId,
         nodeInstance.business_sub_id,
         nodeInstance.business_min_id,
+        nodeInstance.state,
         record.id AS recordId,
         record.handler_id AS handlerId
         FROM work_flow_node_instance AS nodeInstance,
         work_task_record AS record,
         user,
         work_node AS node
-        WHERE (state = 'PENDING' OR( state = 'FINISHED' AND node.`code` = 'BUSINESS_ARCHIVING' ))
+        WHERE state = 'PENDING'
+#             (state = 'PENDING' OR( state = 'FINISHED' AND node.`code` = 'BUSINESS_ARCHIVING' ))
         AND nodeInstance.node_id = node.id
         AND record.handler_id = user.id
         AND nodeInstance.deleted = 0
@@ -100,6 +102,7 @@
         AND nodeInstance.business_type = 'ASSET_BUSINESS'
         ) AS nodeInfo ON nodeInfo.businessId = assets.id
         WHERE assets.deleted = 0
+        AND nodeInfo.state = 'PENDING'
         #评估业务类别(业务类型)查询
         <if test="assetsSelectDTO != null and assetsSelectDTO.assetsBusinessGener != null and assetsSelectDTO.assetsBusinessGener != '' ">
             AND assets.assets_business_gener = #{assetsSelectDTO.assetsBusinessGener}

+ 2 - 1
dao/src/main/resources/mapper/AssetsProductionMapper.xml

@@ -138,7 +138,8 @@
             OR
         </if>
         <if test="(statementNo == null or statementNo == '') and (reportNos != null and reportNos.size() > 0) ">
-            OR
+#             OR
+            AND
         </if>
         <if test="reportNos != null and reportNos.size() > 0">
             production_no IN

+ 89 - 58
dao/src/main/resources/mapper/BusinessIncomeMapper.xml

@@ -66,67 +66,98 @@
         order by settleDate DESC
     </select>
 
+    <!--资产实收款统计-->
+    <sql id="myAssetsIncomeSql">
+        SELECT bpd.id,
+               a.name                                                                           AS name,
+               fc.claim_amount                                                                  AS realAmount,
+               ap.production_no                                                                 AS reportNo,
+               IF(fc.claim_datetime > ap.save_file_date, fc.claim_datetime, ap.save_file_date)  AS settleDate,
+               ap.created,
+               dd.name                                                                          AS businessCate,
+               IF(cd.ratio IS NULL, bcr.min_ratio, cd.ratio)                                    AS ratio,
+               bpd.member_id,
+               bpd.performance_distribution                                                     AS allotRatio,
+               IF(bpd.user_type = '评估人员',
+                  IF(cd.defined_low_limit_amount &lt; fc.claim_amount,
+                     fc.claim_amount *  (cd.ratio / 100) * (bpd.performance_distribution / 100),
+                     cd.defined_low_limit_amount * (cd.ratio / 100) * (bpd.performance_distribution / 100)
+                  )
+                   ,fc.claim_amount *  (bcr.min_ratio / 100) * (bpd.performance_distribution / 100)
+               ) AS commissionAmount,
+               IF(bpd.user_type = '评估人员',
+                  IF(cd.defined_low_limit_amount &lt; fc.claim_amount,
+                     fc.claim_amount *  (cd.ratio / 100),
+                     cd.defined_low_limit_amount * (cd.ratio / 100)
+                  )
+                   ,fc.claim_amount *  (bcr.min_ratio / 100)
+               ) AS totalAmount,
+               u.name                                                                           AS userName,
+               bpd.user_type                                                                    AS userType
+        FROM (SELECT claim_amount,
+                     order_fund_id,
+                     production_fund_id,
+                     claim_datetime
+              FROM finance_claim
+              WHERE deleted = 0
+                AND production_fund_id IS NOT NULL
+                AND claim_datetime &gt;= #{vo.startDate}
+                AND claim_datetime &lt;= #{vo.endDate}
+              UNION ALL
+              SELECT allot_amount AS claim_amount,
+                     order_fund_id,
+                     production_fund_id,
+                     created      AS claim_datetime
+              FROM order_fund_allot
+              WHERE deleted = 0
+                AND created &gt;= #{vo.startDate}
+                AND created &lt;= #{vo.endDate}) fc
+                 INNER JOIN (SELECT id, order_fund_id, business_id, production_no
+                             FROM production_fund
+                             WHERE business_type = 'ASSET_BUSINESS'
+                               AND deleted = 0) pf
+                            ON (pf.id = fc.production_fund_id AND pf.order_fund_id = fc.order_fund_id)
+                 INNER JOIN (SELECT id, business_id, production_no, production_type, save_file_date, delivery, created
+                             FROM assets_production
+                             WHERE deleted = 0) ap ON ap.production_no = pf.production_no
+                 LEFT JOIN assets a ON a.id = ap.business_id
+                 INNER JOIN (SELECT id, business_id, production_id, business_type, commission_rate_id, ratio, defined_low_limit_amount
+                             FROM commission_declare
+                             WHERE deleted = 0
+                               AND declare_result = '审核通过') cd ON (
+            cd.business_id = a.id
+                AND (cd.production_id IS NULL OR cd.production_id = ap.id))
+                 LEFT JOIN business_commission_rate bcr ON bcr.id = cd.commission_rate_id
+                 LEFT JOIN dict_data dd ON dd.id = bcr.business_cate_id
+                 LEFT JOIN (SELECT id,
+                                   business_id,
+                                   user_type,
+                                   report_no,
+                                   member_id,
+                                   performance_distribution,
+                                   declare_id
+                            FROM business_performance_distribution
+                            WHERE deleted = 0) bpd
+                           ON (bpd.business_id = a.id AND (bpd.report_no IS NULL OR bpd.report_no = ap.production_no)
+                               AND IF(bpd.user_type = '市场人员',
+                                      'COMMISSION_DECLARE_ASSET_MARKET',
+                                      'COMMISSION_DECLARE_ASSET_EVALUATE'
+                                   ) = cd.business_type
+                                  )
+                               AND IF(bpd.user_type = '市场人员', ap.delivery = TRUE, ap.save_file_date IS NOT NULL)
+                 LEFT JOIN user u ON u.id = bpd.member_id
+        WHERE u.id = #{vo.userId}
+        ORDER BY settleDate DESC
+    </sql>
+
     <!--资产业务我的提成-->
     <select id="myAssetsIncome" resultType="com.dayou.vo.UserCommissionProdVO">
-        SELECT
-            bpd.id,
-            fc.claim_amount as realAmount,
-            ap.production_no,
-            IF ( fc.claim_datetime > ap.save_file_date, fc.claim_datetime, ap.save_file_date ) AS settleDate,
-            ap.created,
-            dd.NAME AS businessCate,
-            cd.ratio AS ratio,
-            bpd.member_id,
-            bpd.performance_distribution AS allotRatio,
-            IF ( bcr.low_limit_amount > fc.claim_amount, fc.claim_amount * ( cd.ratio / 100 ) * bpd.performance_distribution, bcr.low_limit_amount * ( cd.ratio / 100 ) * bpd.performance_distribution) AS commissionAmount,
-            IF ( bcr.low_limit_amount > fc.claim_amount, fc.claim_amount * ( cd.ratio / 100 ), bcr.low_limit_amount * ( cd.ratio / 100 )) AS commissionAmount,
-            u.name as userName,
-            (case bpd.user_type when 'EVALUATE' then '评估人员' else '市场人员' end) as  userType
-        FROM
-            (
-                SELECT
-                    claim_amount,
-                    order_fund_id,
-                    production_fund_id,
-                    claim_datetime
-                FROM
-                    finance_claim
-                WHERE
-                    deleted = 0
-                  AND production_fund_id IS NOT NULL
-                  AND claim_datetime &gt;= #{vo.startDate}
-                  AND claim_datetime  &lt;= #{vo.endDate}
-                UNION ALL
-                SELECT
-                    allot_amount AS claim_amount,
-                    order_fund_id,
-                    production_fund_id,
-                    created AS claim_datetime
-                FROM
-                    order_fund_allot
-                WHERE
-                    deleted = 0
-                  AND created  &gt;= #{vo.startDate}
-                  AND created &lt;= #{vo.endDate}
-            ) fc
-                INNER JOIN ( SELECT id,order_fund_id, business_id, production_no FROM production_fund WHERE business_type = 'ASSET_BUSINESS' AND deleted = 0 ) pf ON ( pf.id = fc.production_fund_id AND pf.order_fund_id = fc.order_fund_id )
-                INNER JOIN ( SELECT id, business_id, production_no, production_type, save_file_date, delivery,created FROM assets_production WHERE deleted = 0 ) ap ON ap.production_no = pf.production_no
-                LEFT JOIN assets a ON a.id = ap.business_id
-                INNER JOIN ( SELECT id,business_id, production_id, business_type ,commission_rate_id, ratio FROM commission_declare WHERE  deleted = 0 AND declare_result = '审核通过' ) cd ON (
-                cd.business_id = a.id
-                    AND ( cd.production_id IS NULL OR cd.production_id = ap.id ))
-                LEFT JOIN business_commission_rate bcr ON bcr.id = cd.commission_rate_id
-                LEFT JOIN dict_data dd ON dd.id = bcr.business_cate_id
-                LEFT JOIN ( SELECT id,business_id,user_type, report_no, member_id, performance_distribution ,declare_id FROM business_performance_distribution WHERE deleted = 0 ) bpd
-                          ON ( bpd.business_id = a.id and (bpd.report_no is null or bpd.report_no = ap.id )
-                              and  if(bpd.user_type='MARKET','COMMISSION_DECLARE_ASSET_MARKET','COMMISSION_DECLARE_ASSET_EVALUATE') = cd.business_type
-                                 )
-                              and if(bpd.user_type='MARKET',ap.delivery = true, ap.save_file_date is not null)
-                left join user u on u.id = bpd.member_id
+        <include refid="myAssetsIncomeSql" />
+    </select>
 
-        WHERE
-            u.id= #{vo.userId}
-        order by settleDate DESC
+    <!--资产业务我的提成导出excel-->
+    <select id="myAssetsIncomeExport" resultType="com.dayou.vo.UserCommissionProdVO">
+        <include refid="myAssetsIncomeSql" />
     </select>
 
 </mapper>

+ 13 - 1
dao/src/main/resources/mapper/CommissionDeclareMapper.xml

@@ -207,7 +207,10 @@
             u.NAME AS declareUser,
             bcr.business_cate_id,
             bcr.business_type,
-            cd.created
+            cd.created,
+            cd.ratio,
+            cd.defined_low_limit_amount,
+            cd.business_type AS declareBusinessType
         FROM
             commission_declare cd
                 LEFT JOIN business_commission_rate bcr ON bcr.id = cd.commission_rate_id
@@ -627,4 +630,13 @@
         <include refid="getAssetsTodoCheck" />
         LIMIT 8
     </select>
+
+    <!--更新资产绩效申报提成比列与下限信息-->
+    <update id="updateAssetsCommissionDeclare">
+        UPDATE commission_declare
+        SET ratio = #{declareDTO.ratio},
+            defined_low_limit_amount = #{declareDTO.definedLowLimitAmount}
+        WHERE id = #{declareDTO.id}
+    </update>
+
 </mapper>

+ 128 - 0
dao/src/main/resources/mapper/FinanceRealFundMapper.xml

@@ -738,3 +738,131 @@
 
     </select>
   </mapper>
+
+    <!--资产评估人员提成计算-->
+    <select id="assetsEvaluatorCommission" resultType="com.dayou.vo.UserCommissionTotalAmountVO">
+        SELECT bpd.member_id as id,
+        u.name as userName,
+        SUM(IF(cd.defined_low_limit_amount &lt; fc.claim_amount,
+        fc.claim_amount * (cd.ratio / 100) * (bpd.performance_distribution / 100),
+        cd.defined_low_limit_amount * (cd.ratio / 100) * (bpd.performance_distribution / 100)
+        )) AS commissionTotalAmount
+        FROM
+        (
+        SELECT
+        claim_amount,
+        order_fund_id,
+        production_fund_id,
+        claim_datetime
+        FROM
+        finance_claim
+        WHERE
+        deleted = 0
+        AND production_fund_id IS NOT NULL
+        AND claim_datetime &gt;= #{vo.startDate}
+        AND claim_datetime &lt;= #{vo.endDate}
+        UNION ALL
+        SELECT
+        allot_amount AS claim_amount,
+        order_fund_id,
+        production_fund_id,
+        created AS claim_datetime
+        FROM
+        order_fund_allot
+        WHERE
+        deleted = 0
+        AND created &gt;= #{vo.startDate}
+        AND created &lt;= #{vo.endDate}
+        ) fc
+        INNER JOIN ( SELECT id, order_fund_id, business_id, production_no FROM production_fund WHERE business_type =
+        'ASSET_BUSINESS' AND deleted = 0 ) pf ON ( pf.id = fc.production_fund_id AND pf.order_fund_id = fc.order_fund_id
+        )
+        INNER JOIN ( SELECT id, business_id, project_name, production_no, production_type, save_file_date, created FROM
+        assets_production
+        WHERE deleted = 0 AND save_file_date IS NOT NULL ) ap ON ap.production_no = pf.production_no
+        LEFT JOIN assets a ON a.id = ap.business_id
+        INNER JOIN ( SELECT id, business_id, production_id, commission_rate_id, ratio, defined_low_limit_amount FROM
+        commission_declare WHERE
+        business_type = 'COMMISSION_DECLARE_ASSET_EVALUATE' AND deleted = 0 AND declare_result = '审核通过' ) cd ON (
+        cd.business_id = a.id
+        AND ( cd.production_id IS NULL OR cd.production_id = ap.id ))
+        LEFT JOIN business_commission_rate bcr ON bcr.id = cd.commission_rate_id
+        LEFT JOIN dict_data dd ON dd.id = bcr.business_cate_id
+        LEFT JOIN ( SELECT business_id, report_no, member_id, performance_distribution FROM
+        business_performance_distribution WHERE deleted = 0
+        AND user_type = '评估人员'
+
+        ) bpd ON ( bpd.business_id = a.id AND bpd.report_no = ap.production_no)
+        LEFT JOIN user u ON u.id = bpd.member_id
+
+        GROUP BY
+        bpd.member_id
+#                  ,
+#         u.name,
+#         commissionTotalAmount
+#         having 1=1
+        <if test="vo!=null and vo.userName!=null and vo.userName!=''">
+            and u.name like concat ('%',#{vo.userName},'%')
+        </if>
+        order by commissionTotalAmount DESC
+    </select>
+
+    <!--资产评估人员提成计算详情-->
+    <select id="assetsEvaluatorCommissionDetail" resultType="com.dayou.vo.UserCommissionProdVO">
+        SELECT
+            ap.id,
+            fc.claim_amount as realAmount,
+            ap.production_no AS reportNo,
+            IF
+            ( fc.claim_datetime > ap.save_file_date, fc.claim_datetime, ap.save_file_date ) AS settleDate,
+            ap.project_name AS name,
+            ap.created,
+            dd.NAME AS businessCate,
+            bcr.min_ratio AS ratio,
+            bpd.member_id,
+            bpd.performance_distribution AS allotRatio,
+            ( fc.claim_amount * ( bcr.min_ratio / 100 )* bpd.performance_distribution ) AS commissionAmount,
+            ( fc.claim_amount * ( bcr.min_ratio / 100 ) ) AS totalAmount,
+            u.name as userName
+        FROM
+            (
+                SELECT
+                    claim_amount,
+                    order_fund_id,
+                    production_fund_id,
+                    claim_datetime
+                FROM
+                    finance_claim
+                WHERE
+                    deleted = 0
+                  AND production_fund_id IS NOT NULL
+                  AND claim_datetime &gt;= #{vo.startDate}
+                  AND claim_datetime  &lt;= #{vo.endDate}
+                UNION ALL
+                SELECT
+                    allot_amount AS claim_amount,
+                    order_fund_id,
+                    production_fund_id,
+                    created AS claim_datetime
+                FROM
+                    order_fund_allot
+                WHERE
+                    deleted = 0
+                  AND created  &gt;= #{vo.startDate}
+                  AND created &lt;= #{vo.endDate}
+            ) fc
+                INNER JOIN ( SELECT id, order_fund_id, business_id, production_no FROM production_fund WHERE business_type = 'ASSET_BUSINESS' AND deleted = 0 ) pf ON ( pf.id = fc.production_fund_id AND pf.order_fund_id = fc.order_fund_id )
+                INNER JOIN ( SELECT id, business_id, project_name, production_no, production_type, save_file_date, created FROM assets_production WHERE deleted = 0 AND save_file_date IS NOT NULL ) ap ON ap.production_no = pf.production_no
+                LEFT JOIN assets a ON a.id = ap.business_id
+                INNER JOIN ( SELECT id, business_id, production_id, commission_rate_id FROM commission_declare WHERE business_type = 'COMMISSION_DECLARE_ASSET_EVALUATE' AND deleted = 0 AND declare_result = '审核通过' ) cd ON (
+                cd.business_id = a.id
+                    AND ( cd.production_id IS NULL OR cd.production_id = ap.id ))
+                LEFT JOIN business_commission_rate bcr ON bcr.id = cd.commission_rate_id
+                LEFT JOIN dict_data dd ON dd.id = bcr.business_cate_id
+                LEFT JOIN ( SELECT business_id, report_no, member_id, performance_distribution FROM business_performance_distribution WHERE deleted = 0 AND user_type = '评估人员' ) bpd ON ( bpd.business_id = a.id AND bpd.report_no = ap.production_no)
+                LEFT JOIN user u on u.id = bpd.member_id
+        WHERE
+            bpd.member_id = #{vo.userId}
+        order by settleDate DESC
+    </select>
+</mapper>

+ 6 - 0
domain/src/main/java/com/dayou/dto/CommissionDeclareDTO.java

@@ -16,6 +16,7 @@ import java.util.List;
 @Data
 public class CommissionDeclareDTO {
 
+    private Long id;
 
     @AbcValidate(required = true,message = "主业务id不能为空",fun = Check.NotNull)
     private Long businessId;
@@ -36,6 +37,11 @@ public class CommissionDeclareDTO {
     private Double ratio;
 
     /**
+     * 提成申报自定义提成下限
+     */
+    private Double definedLowLimitAmount;
+
+    /**
      * 资产业务人员绩效分配信息
      */
     private AssetsPerformanceDistributionAddDTO distributionDto;

+ 2 - 0
domain/src/main/java/com/dayou/entity/BusinessCommissionRate.java

@@ -1,6 +1,7 @@
 package com.dayou.entity;
 import java.math.BigDecimal;
 
+import com.baomidou.mybatisplus.annotation.FieldStrategy;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.dayou.common.BaseEntity;
 import lombok.Data;
@@ -50,6 +51,7 @@ public class BusinessCommissionRate extends BaseEntity {
      */
     @ImportCell
     @ExportCell(columnName = "最大提成比例")
+    @TableField(updateStrategy = FieldStrategy.IGNORED)
     private BigDecimal maxRatio;
 
     /**

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

@@ -57,4 +57,9 @@ public class CommissionDeclare extends BaseEntity {
      */
     private Double ratio;
 
+    /**
+     * 提成申报自定义提成下限
+     */
+    private Double definedLowLimitAmount;
+
 }

+ 11 - 0
domain/src/main/java/com/dayou/vo/CommissionDeclareDetailVO.java

@@ -34,6 +34,17 @@ public class CommissionDeclareDetailVO {
 
     private String declareResult;
 
+    private String declareBusinessType;
+    /**
+     * 提成比例
+     */
+    private Double ratio;
+
+    /**
+     * 提成申报自定义提成下限
+     */
+    private Double definedLowLimitAmount;
+
     private List<String> remarks;
 
     private List<UserShareRate> userShareRates;

+ 12 - 0
domain/src/main/java/com/dayou/vo/CommissionDeclareVO.java

@@ -105,4 +105,16 @@ public class CommissionDeclareVO {
 
     private Date created;
 
+    private String declareBusinessType;
+
+    /**
+     * 提成比例
+     */
+    private Double ratio;
+
+    /**
+     * 提成申报自定义提成下限
+     */
+    private Double definedLowLimitAmount;
+
 }

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

@@ -3,6 +3,8 @@ package com.dayou.service;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.dayou.vo.UserCommissionProdVO;
 
+import java.util.List;
+
 /**
  * 类说明:
  *
@@ -20,4 +22,11 @@ public interface IBusinessIncomeService {
      * @return Page<UserCommissionProdVO>
      */
     Page<UserCommissionProdVO> myAssetsIncome(Page page, UserCommissionProdVO vo);
+
+    /**
+     * 资产业务我的提成导出excel
+     * @param vo 查询条件
+     * @return Page<UserCommissionProdVO>
+     */
+    List<UserCommissionProdVO> myAssetsIncomeExport(UserCommissionProdVO vo);
 }

+ 8 - 1
service/src/main/java/com/dayou/service/ICommissionDeclareService.java

@@ -54,7 +54,7 @@ public interface ICommissionDeclareService extends IService<CommissionDeclare> {
     Long assetsCommissionDeclare(CommissionDeclareDTO declareDTO);
 
     /**
-     * 获取资产评估人员提成申报列表
+     * 获取资产市场人员提成申报列表
      * @param page 分页参数
      * @param commissionDeclare 查询参数
      * @return Page<CommissionDeclareVO>
@@ -74,4 +74,11 @@ public interface ICommissionDeclareService extends IService<CommissionDeclare> {
      * @return List<CommissionDeclareTodoCheckVO>
      */
     List<CommissionDeclareTodoCheckVO> assetsTodoCheckList();
+
+    /**
+     * 更新资产绩效申报提成比列与下限信息
+     * @param declareDTO dto
+     * @return Boolean
+     */
+    Boolean updateAssetsCommissionDeclare(CommissionDeclareDTO declareDTO);
 }

+ 14 - 0
service/src/main/java/com/dayou/service/IFinanceRealFundService.java

@@ -65,4 +65,18 @@ public interface IFinanceRealFundService extends IService<FinanceRealFund> {
     List<UserCommissionProdVO> marketAllUserDetailExport(UserCommissionProdVO vo);
 
     Page<PersonalProdOverdueVO> overduePersonal(PersonalProdOverdueVO overdueVO, Page page);
+
+    /**
+     * 资产评估人员提成计算
+     * @param vo vo
+     * @return List<UserCommissionTotalAmountVO>
+     */
+    List<UserCommissionTotalAmountVO> assetsEvaluatorCommission(UserCommissionTotalAmountVO vo);
+
+    /**
+     * 资产评估人员提成计算详情
+     * @param vo vo
+     * @return List<UserCommissionTotalAmountVO>
+     */
+    List<UserCommissionProdVO> assetsEvaluatorCommissionDetail(UserCommissionProdVO vo);
 }

+ 12 - 8
service/src/main/java/com/dayou/service/impl/AssetsProductionServiceImpl.java

@@ -268,12 +268,16 @@ public class AssetsProductionServiceImpl extends ServiceImpl<AssetsProductionMap
                 } else if (assetsProduction.getRepertoryState()) {
                     ErrorCode.throwBusinessException(ErrorCode.CUSTOM_ERROR, "产品还已出库,无需出库。");
                 }
-                OrderFund orderFund = orderFundService.getOne(new LambdaQueryWrapper<OrderFund>()
-                        .select(BaseEntity::getId, OrderFund::getRealAmount)
-                        .eq(OrderFund::getBusinessId, wareHouseDTO.getBusinessId())
-                        .eq(OrderFund::getBusinessType, ASSET_BUSINESS.getCode()));
-                // 非意见书,且实收款未认领(订单实收款为NULL)
-                if (!assetsProduction.getProductionType().equals(STATEMENT.name()) && ObjectUtil.isNull(orderFund)) {
+//                OrderFund orderFund = orderFundService.getOne(new LambdaQueryWrapper<OrderFund>()
+//                        .select(BaseEntity::getId, OrderFund::getRealAmount)
+//                        .eq(OrderFund::getBusinessId, wareHouseDTO.getBusinessId())
+//                        .eq(OrderFund::getBusinessType, ASSET_BUSINESS.getCode()));
+                ProductionFund productionFund = productionFundService.getOne(new LambdaQueryWrapper<ProductionFund>()
+                        .select(BaseEntity::getId, ProductionFund::getRealAmount)
+                        .eq(ProductionFund::getProductionNo, wareHouseDTO.getProductionNo())
+                        .eq(ProductionFund::getBusinessType, ASSET_BUSINESS.getCode()));
+                // 非意见书,且实收款未认领(产品实收款为NULL)
+                if (!assetsProduction.getProductionType().equals(STATEMENT.name()) && ObjectUtil.isNull(productionFund.getRealAmount())) {
                     int passCount = productionOutWarehouseService.count(new LambdaQueryWrapper<ProductionOutWarehouse>()
                             .select(ProductionOutWarehouse::getDepartmentCheckState)
                             .eq(ProductionOutWarehouse::getReportNo, wareHouseDTO.getProductionNo())
@@ -473,12 +477,12 @@ public class AssetsProductionServiceImpl extends ServiceImpl<AssetsProductionMap
     public void addAssetsProShouldAmount(AssetsProduction assetsProduction) {
         // 根据报告号获取评估对象信息
         List<AssetsEvaluationTarget> targetList = assetsEvaluationTargetService.list(new LambdaQueryWrapper<AssetsEvaluationTarget>()
-                .select(AssetsEvaluationTarget::getCheckValue)
+                .select(AssetsEvaluationTarget::getTotalAssetCarryingAmount)
                 .eq(AssetsEvaluationTarget::getReportNo, assetsProduction.getProductionNo()));
         if (ObjectUtil.isNotNull(targetList) && ObjectUtil.isNotEmpty(targetList)) {
             // 使用流计算审核价格的总和
             BigDecimal total = targetList.stream()
-                    .map(AssetsEvaluationTarget::getCheckValue)
+                    .map(AssetsEvaluationTarget::getTotalAssetCarryingAmount)
                     .reduce(BigDecimal.ZERO, BigDecimal::add);
             // 由于评估值单位为 万元,标准收费为 元,所以此处 评估值 * 10000 用于后续计算标准收费
             total = total.multiply(BigDecimal.valueOf(10000));

+ 14 - 0
service/src/main/java/com/dayou/service/impl/BusinessIncomeServiceImpl.java

@@ -9,6 +9,8 @@ import com.dayou.vo.UserCommissionProdVO;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 /**
  * 类说明:
  *
@@ -42,4 +44,16 @@ public class BusinessIncomeServiceImpl implements IBusinessIncomeService {
         Page<UserCommissionProdVO> ret = businessIncomeMapper.myAssetsIncome(page,vo);
         return ret;
     }
+
+    /**
+     * 资产业务我的提成到处excel
+     * @param vo 查询条件
+     * @return Page<UserCommissionProdVO>
+     */
+    @Override
+    public List<UserCommissionProdVO> myAssetsIncomeExport(UserCommissionProdVO vo) {
+        Long currentUserId = LoginContext.getCurrentUserId();
+        vo.setUserId(currentUserId);
+        return businessIncomeMapper.myAssetsIncomeExport(vo);
+    }
 }

+ 10 - 0
service/src/main/java/com/dayou/service/impl/CommissionDeclareServiceImpl.java

@@ -282,6 +282,16 @@ public class CommissionDeclareServiceImpl extends ServiceImpl<CommissionDeclareM
     }
 
     /**
+     * 更新资产绩效申报提成比列与下限信息
+     * @param declareDTO dto
+     * @return Boolean
+     */
+    @Override
+    public Boolean updateAssetsCommissionDeclare(CommissionDeclareDTO declareDTO) {
+        return commissionDeclareMapper.updateAssetsCommissionDeclare(declareDTO);
+    }
+
+    /**
      * 删除之前被拒绝的申报
      * @param declareDTO
      */

+ 20 - 0
service/src/main/java/com/dayou/service/impl/FinanceRealFundServiceImpl.java

@@ -187,4 +187,24 @@ public class FinanceRealFundServiceImpl extends ServiceImpl<FinanceRealFundMappe
         Page<PersonalProdOverdueVO> result = financeRealFundMapper.overduePersonal(page,overdueVO);
         return result;
     }
+
+    /**
+     * 资产评估人员提成计算
+     * @param vo vo
+     * @return List<UserCommissionTotalAmountVO>
+     */
+    @Override
+    public List<UserCommissionTotalAmountVO> assetsEvaluatorCommission(UserCommissionTotalAmountVO vo) {
+        return financeRealFundMapper.assetsEvaluatorCommission(vo);
+    }
+
+    /**
+     * 资产评估人员提成计算详情
+     * @param vo vo
+     * @return List<UserCommissionTotalAmountVO>
+     */
+    @Override
+    public List<UserCommissionProdVO> assetsEvaluatorCommissionDetail(UserCommissionProdVO vo) {
+        return financeRealFundMapper.assetsEvaluatorCommissionDetail(vo);
+    }
 }

+ 15 - 1
sql/update_sql.sql

@@ -506,4 +506,18 @@ ALTER TABLE business_performance_distribution ADD COLUMN participation_duration
 # 表assets_production新增字段if_save_file
 ALTER TABLE assets_production ADD COLUMN if_save_file bit(1) NOT NULL DEFAULT 0 comment '是否归档';
 # 表commission_declare新增字段ratio
-ALTER TABLE commission_declare ADD COLUMN ratio DECIMAL(16,2) NULL comment '提成比例';
+ALTER TABLE commission_declare ADD COLUMN ratio DECIMAL(16,2) NULL comment '提成比例';
+
+/**
+  日期:2024-06-13
+  修改人:苟耕铨
+ */
+# 表commission_declare新增字段defined_low_limit_amount
+ALTER TABLE commission_declare ADD COLUMN defined_low_limit_amount DECIMAL(16,2) NULL comment '提成申报自定义提成下限';
+
+/**
+  日期:2024-06-14
+  修改人:苟耕铨
+ */
+# 表assets_production新增字段project_name
+ALTER TABLE assets_production ADD COLUMN project_name VARCHAR(255) NULL COMMENT '项目名称_产品';