Commit 9de8dd6c by wenyang

寿险结算规则使用8【发佣检核查询支持续年期发佣、支持基本法生成的佣金项目发佣】

parent fc3a72a1
...@@ -612,12 +612,14 @@ public class AgmsFortuneServiceImpl implements AgmsFortuneService { ...@@ -612,12 +612,14 @@ public class AgmsFortuneServiceImpl implements AgmsFortuneService {
Long orderId = commissionPayoutStatus.getOrderId(); Long orderId = commissionPayoutStatus.getOrderId();
totalReferralAmount = totalReferralAmount.add(commissionPayoutStatus.getReferralAmount() == null ? BigDecimal.ZERO : commissionPayoutStatus.getReferralAmount()); totalReferralAmount = totalReferralAmount.add(commissionPayoutStatus.getReferralAmount() == null ? BigDecimal.ZERO : commissionPayoutStatus.getReferralAmount());
if (orderIdList.contains(orderId)){ if(orderId != null){
continue; if (orderIdList.contains(orderId)){
continue;
}
orderIdList.add(orderId);
++totalSingular;
totalOrderPrice = totalOrderPrice.add(commissionPayoutStatus.getOrderPrice() == null ? BigDecimal.ZERO : commissionPayoutStatus.getOrderPrice());
} }
orderIdList.add(orderId);
++totalSingular;
totalOrderPrice = totalOrderPrice.add(commissionPayoutStatus.getOrderPrice() == null ? BigDecimal.ZERO : commissionPayoutStatus.getOrderPrice());
} }
responseVO.setLifePractitionerCount(nameSet.size()); responseVO.setLifePractitionerCount(nameSet.size());
responseVO.setTotalSingular(totalSingular); responseVO.setTotalSingular(totalSingular);
......
...@@ -27,7 +27,7 @@ ...@@ -27,7 +27,7 @@
<select id="commissionPayoutStatusQuery" <select id="commissionPayoutStatusQuery"
parameterType="com.yd.dal.entity.agms.fortune.CommissionPayoutStatusQueryInfo" parameterType="com.yd.dal.entity.agms.fortune.CommissionPayoutStatusQueryInfo"
resultType="com.yd.dal.entity.agms.fortune.CommissionPayoutStatus"> resultType="com.yd.dal.entity.agms.fortune.CommissionPayoutStatus">
select <!-- select
o.id orderId, o.id orderId,
f.id fortuneId, f.id fortuneId,
c.check_yearmonth commissionPayoutYearmonth, c.check_yearmonth commissionPayoutYearmonth,
...@@ -65,6 +65,42 @@ ...@@ -65,6 +65,42 @@
left join ag_po_order_commission_check c on o.commission_check_id = c.id left join ag_po_order_commission_check c on o.commission_check_id = c.id
where o.commission_check_status = 2 where o.commission_check_status = 2
AND mas.drop_code like 'Commission_Payout_Status' AND mas.drop_code like 'Commission_Payout_Status'
and setting.practitioner_type_id = 28 -->
SELECT o.id orderId,t.id fortuneId,c.check_yearmonth commissionPayoutYearmonth,i.name insurerName,IF(o.config_level = 2,p.name,pp.name) productName,o.policy_no policyNo,
IF(o.payment_term IS NOT NULL ,CONCAT(o.payment_term,(CASE o.payment_term_unit WHEN 'Y' THEN '年' WHEN 'M' THEN '月' ELSE '日' END ) ),(SELECT e.element_text FROM ag_po_order_life_product_elements e WHERE o.id = e.order_id AND e.factor_code LIKE 'f_pay_term' LIMIT 1)) paymentTermUnit,
IF(o.cover_term IS NOT NULL ,o.cover_term_type ,(SELECT e.element_text FROM ag_po_order_life_product_elements e WHERE o.id = e.order_id AND e.factor_code LIKE 'f_coverage_term' LIMIT 1)) coverTermType,
o.order_price orderPrice,
pra.name practitionerName,
dept.name insurerBranchDeptName,
sub.name subordinateSystemName,
<!-- t.practitioner_level practitionerLevel, -->
op1.drop_option_name practitionerLevel,
t.commission_amount commissionAmount,
t.commission_type commissionType,
t.referral_rate referralRate,
t.referral_amount referralAmount,
op.drop_option_name commissionPayoutStatus,
pb.payout_yearmonth monthPeriod
FROM ag_acl_customer_fortune t
LEFT JOIN ag_po_order o ON o.id = t.order_id
LEFT JOIN ag_product p ON p.id = o.product_id
LEFT JOIN ag_product_plan pp ON pp.id = o.plan_id
LEFT JOIN ag_po_order_commission oc ON oc.order_id = t.order_id AND oc.id = t.commission_id
LEFT JOIN ag_po_order_commission_check c on oc.commission_check_id = c.id
LEFT JOIN ag_acl_insurer i ON i.id = o.insurer_id
LEFT JOIN ag_acl_practitioner pra ON pra.customer_id = t.customer_id <!-- ON pra.id = oc.practitioner_id -->
LEFT JOIN ag_acl_insurer_branch_dept dept ON pra.dept_id = dept.id
LEFT JOIN ag_acl_practitioner_subordinate_system sub ON sub.id = pra.subordinate_system_id
LEFT JOIN ag_acl_practitioner_setting setting ON setting.practitioner_id = pra.id
LEFT JOIN ag_acl_customer_fortune_payout_batch pb ON pb.id = t.payout_batch_id
LEFT JOIN ag_md_drop_options op ON op.drop_option_code = oc.commission_status
LEFT JOIN ag_md_drop_master mas ON mas.id = op.drop_master_id
LEFT JOIN ag_md_drop_options op1 ON op1.id = setting.practitioner_level
LEFT JOIN ag_md_drop_master mas1 ON mas1.id = op1.drop_master_id
WHERE t.settlement_type = '1'
AND mas.drop_code = 'Commission_Payout_Status'
AND mas1.scenario_code = 'practitioner_level'
AND oc.commission_status = '2'
and setting.practitioner_type_id = 28 and setting.practitioner_type_id = 28
<if test="item.insurerId != null"> <if test="item.insurerId != null">
AND i.id = #{item.insurerId,jdbcType=BIGINT} AND i.id = #{item.insurerId,jdbcType=BIGINT}
...@@ -88,7 +124,7 @@ ...@@ -88,7 +124,7 @@
and pra.id = #{item.practitionerId,jdbcType=BIGINT} and pra.id = #{item.practitionerId,jdbcType=BIGINT}
</if> </if>
<if test="item.commissionPayoutStatus != null"> <if test="item.commissionPayoutStatus != null">
and f.commission_payout_status = #{item.commissionPayoutStatus,jdbcType=BIGINT} and t.commission_payout_status = #{item.commissionPayoutStatus,jdbcType=BIGINT}
</if> </if>
<if test="item.commissionPayoutYearmonth != null"> <if test="item.commissionPayoutYearmonth != null">
and c.check_yearmonth = #{item.commissionPayoutYearmonth,jdbcType=VARCHAR} and c.check_yearmonth = #{item.commissionPayoutYearmonth,jdbcType=VARCHAR}
...@@ -96,6 +132,64 @@ ...@@ -96,6 +132,64 @@
<if test="item.payoutYearmonth != null"> <if test="item.payoutYearmonth != null">
and pb.payout_yearmonth = #{item.payoutYearmonth,jdbcType=VARCHAR} and pb.payout_yearmonth = #{item.payoutYearmonth,jdbcType=VARCHAR}
</if> </if>
UNION ALL
SELECT '' orderId,t.id fortuneId,'' commissionPayoutYearmonth,'' insurerName,'' productName,
'' policyNo,
'' paymentTermUnit,
'' coverTermType,
'0.00' orderPrice,
pra.name practitionerName,
dept.name insurerBranchDeptName,
sub.name subordinateSystemName,
<!-- t.practitioner_level practitionerLevel, -->
op1.drop_option_name practitionerLevel,
t.commission_amount commissionAmount,
t.commission_type commissionType,
t.referral_rate referralRate,
t.referral_amount referralAmount,
op.drop_option_name commissionPayoutStatus,
pb.payout_yearmonth monthPeriod
FROM ag_acl_customer_fortune t
LEFT JOIN ag_acl_practitioner pra ON pra.id = t.practitioner_id
LEFT JOIN ag_acl_insurer_branch_dept dept ON pra.dept_id = dept.id
LEFT JOIN ag_acl_practitioner_subordinate_system sub ON sub.id = pra.subordinate_system_id
LEFT JOIN ag_acl_practitioner_setting setting ON setting.practitioner_id = pra.id
LEFT JOIN ag_acl_customer_fortune_payout_batch pb ON pb.id = t.payout_batch_id
LEFT JOIN ag_md_drop_options op ON op.drop_option_code = t.commission_payout_status
LEFT JOIN ag_md_drop_master mas ON mas.id = op.drop_master_id
LEFT JOIN ag_md_drop_options op1 ON op1.id = setting.practitioner_level
LEFT JOIN ag_md_drop_master mas1 ON mas1.id = op1.drop_master_id
WHERE t.settlement_type = '2'
AND mas.drop_code = 'Commission_Payout_Status'
AND mas1.scenario_code = 'practitioner_level'
and setting.practitioner_type_id = 28
<if test="item.insurerBranchId != null">
and pra.insurer_branch_id = #{item.insurerBranchId,jdbcType=BIGINT}
</if>
<if test="item.insurerBranchDeptId != null">
and dept.id = #{item.insurerBranchDeptId,jdbcType=BIGINT}
</if>
<!-- <if test="item.subordinateSystemId != null">
and sub.id = #{item.subordinateSystemId,jdbcType=BIGINT}
</if>-->
<if test="item.subsystemIdList != null and item.subsystemIdList.size() > 0">
and sub.id in
<foreach collection="item.subsystemIdList" index="index" item="subordinateSystemId" open="(" separator="," close=")">
#{subordinateSystemId}
</foreach>
</if>
<if test="item.practitionerId != null">
and pra.id = #{item.practitionerId,jdbcType=BIGINT}
</if>
<if test="item.commissionPayoutStatus != null">
and t.commission_payout_status = #{item.commissionPayoutStatus,jdbcType=BIGINT}
</if>
<!-- <if test="item.commissionPayoutYearmonth != null"> -->
<!-- and c.check_yearmonth = #{item.commissionPayoutYearmonth,jdbcType=VARCHAR} -->
<!-- </if> -->
<if test="item.payoutYearmonth != null">
and pb.payout_yearmonth = #{item.payoutYearmonth,jdbcType=VARCHAR}
</if>
</select> </select>
<select id="fortunePayToOrder" resultType="com.yd.dal.entity.agms.fortune.FortunePayToOrderInfo"> <select id="fortunePayToOrder" resultType="com.yd.dal.entity.agms.fortune.FortunePayToOrderInfo">
...@@ -118,24 +212,22 @@ ...@@ -118,24 +212,22 @@
ib.branch_name insurerBranchName, ib.branch_name insurerBranchName,
f.fyc_amount fycAmount f.fyc_amount fycAmount
from ag_acl_customer_fortune f from ag_acl_customer_fortune f
left join ag_po_order o left join ag_po_order o on o.id = f.order_id
left join ag_product_plan pp on pp.id = o.plan_id left join ag_product_plan pp on pp.id = o.plan_id
left join ag_product p on p.id = o.product_id left join ag_product p on p.id = o.product_id
left join ag_acl_insurer i on o.insurer_id = i.id left join ag_acl_insurer i on o.insurer_id = i.id
on o.id = f.order_id
left join ag_acl_customer_fortune_payout_batch pb on pb.id = f.payout_batch_id left join ag_acl_customer_fortune_payout_batch pb on pb.id = f.payout_batch_id
LEFT JOIN ag_acl_practitioner pra LEFT JOIN ag_acl_practitioner pra ON pra.customer_id = f.customer_id
LEFT JOIN ag_acl_insurer_branch ib on ib.id = pra.insurer_branch_id LEFT JOIN ag_acl_insurer_branch ib on ib.id = pra.insurer_branch_id
LEFT JOIN ag_acl_insurer_branch_dept dept ON pra.dept_id = dept.id LEFT JOIN ag_acl_insurer_branch_dept dept ON pra.dept_id = dept.id
LEFT JOIN ag_acl_practitioner_subordinate_system sub ON sub.id = pra.subordinate_system_id LEFT JOIN ag_acl_practitioner_subordinate_system sub ON sub.id = pra.subordinate_system_id
ON pra.customer_id = f.customer_id
LEFT JOIN ag_md_drop_options op LEFT JOIN ag_md_drop_options op
LEFT JOIN ag_md_drop_master mas ON mas.id = op.drop_master_id LEFT JOIN ag_md_drop_master mas ON mas.id = op.drop_master_id
ON op.drop_option_code = f.commission_payout_status ON op.drop_option_code = f.commission_payout_status
where (o.status = 3 or o.status = 4) where (o.status = 3 or o.status = 4 or o.status is null)
AND mas.drop_code like 'Commission_Payout_Status' AND mas.drop_code like 'Commission_Payout_Status'
and f.order_price != 0 AND (f.order_price != 0 or f.order_price is null)
and f.fortune_payed_id in AND f.fortune_payed_id in
<foreach collection="array" item="item" open="(" separator="," close=")"> <foreach collection="array" item="item" open="(" separator="," close=")">
#{item,jdbcType=BIGINT} #{item,jdbcType=BIGINT}
</foreach> </foreach>
...@@ -172,7 +264,7 @@ ...@@ -172,7 +264,7 @@
date_format(pay.pay_date, '%Y-%m-%d %H:%i:%s') payDate date_format(pay.pay_date, '%Y-%m-%d %H:%i:%s') payDate
from ag_acl_customer_fortune_pay pay from ag_acl_customer_fortune_pay pay
inner join ag_acl_customer_fortune f on f.fortune_payed_id = pay.id inner join ag_acl_customer_fortune f on f.fortune_payed_id = pay.id
inner JOIN ag_po_order o on o.id = f.order_id <!-- inner JOIN ag_po_order o on o.id = f.order_id -->
inner join ag_acl_customer_fortune_payout_batch pb on pb.id = f.payout_batch_id inner join ag_acl_customer_fortune_payout_batch pb on pb.id = f.payout_batch_id
inner JOIN ag_acl_practitioner pra on pay.customer_id = pra.customer_id inner JOIN ag_acl_practitioner pra on pay.customer_id = pra.customer_id
LEFT JOIN ag_acl_insurer_branch ib on ib.id = pra.insurer_branch_id LEFT JOIN ag_acl_insurer_branch ib on ib.id = pra.insurer_branch_id
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment