Selaa lähdekoodia

1.新增接口assetsEvaluatorCommission资产评估人员提成计算
2.修复新增订单产品收款信息targetList所有元素为null依旧进入方法
3.标准收费计算改为以总资产账面值为准
4.修改了getProductionList与getAETargetListByAssetsId的SQL

GouGengquan 1 vuosi sitten
vanhempi
commit
59adb5ad5a

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

@@ -284,5 +284,25 @@ public class FinanceRealFundController extends BaseController {
         String endDate = vo.getEndDate().split(" ")[0];
         exportPlus(response,"大中型市场人员提成详情"+ startDate +"至"+ endDate,result, UserCommissionProdVO.class);
     }
+
+    /**
+     * 资产评估人员提成计算
+     * @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));
+    }
 }
 

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

@@ -51,4 +51,17 @@ public interface FinanceRealFundMapper extends CustomBaseMapper<FinanceRealFund>
 
     List<UserCommissionProdVO> marketUserDetailExport(@Param("vo")UserCommissionProdVO vo);
 
+    /**
+     * 资产评估人员提成计算
+     * @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 != '' ">

+ 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

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

@@ -733,4 +733,131 @@
         </where>
         order by mpa.user_id
     </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>

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

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

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

@@ -477,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));

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

@@ -181,4 +181,24 @@ public class FinanceRealFundServiceImpl extends ServiceImpl<FinanceRealFundMappe
         vo.setUserId(null);
         return financeRealFundMapper.marketUserDetailExport(vo);
     }
+
+    /**
+     * 资产评估人员提成计算
+     * @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);
+    }
 }

+ 8 - 1
sql/update_sql.sql

@@ -513,4 +513,11 @@ ALTER TABLE commission_declare ADD COLUMN ratio DECIMAL(16,2) NULL comment '提
   修改人:苟耕铨
  */
 # 表commission_declare新增字段defined_low_limit_amount
-ALTER TABLE commission_declare ADD COLUMN defined_low_limit_amount DECIMAL(16,2) NULL comment '提成申报自定义提成下限';
+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 '项目名称_产品';