|
|
@@ -230,9 +230,9 @@ public class QuoteVerificationAspect {
|
|
|
insFeeOrders.setSyPremium(insOrdersCosts.getSyPremium());
|
|
|
insFeeOrders.setJyPremium(insOrdersCosts.getJyPremium());
|
|
|
insFeeOrders.setTotalPremium(insOrdersCosts.getSumPremium());
|
|
|
- BigDecimal jqEntranceFeeRatio = convertPercent(agreementInfoVo.getAgreement().getJqEntranceFeeRatio());
|
|
|
- BigDecimal syEntranceFeeRatio = convertPercent(agreementInfoVo.getAgreement().getSyEntranceFeeRatio());
|
|
|
- BigDecimal jyEntranceFeeRatio = convertPercent(agreementInfoVo.getAgreement().getJyEntranceFeeRatio());
|
|
|
+ BigDecimal jqEntranceFeeRatio = agreementInfoVo.getAgreement().getJqEntranceFeeRatio();
|
|
|
+ BigDecimal syEntranceFeeRatio = agreementInfoVo.getAgreement().getSyEntranceFeeRatio();
|
|
|
+ BigDecimal jyEntranceFeeRatio = agreementInfoVo.getAgreement().getJyEntranceFeeRatio();
|
|
|
|
|
|
// 2. 获取费用类型列表(处理空集合,避免NPE)
|
|
|
List<PtlAgreementCostTypeVo> costTypeList = orgClient.queryByCostId(costId);
|
|
|
@@ -254,6 +254,10 @@ public class QuoteVerificationAspect {
|
|
|
agreementInfoVo.getAgreement().setJqEntranceFeeRatio(jqEntranceFeeRatio);
|
|
|
}
|
|
|
}
|
|
|
+ if(Objects.nonNull(insOrdersCosts.getJqPremium()) && insOrdersCosts.getJqPremium().compareTo(BigDecimal.ZERO) == 0){
|
|
|
+ jqEntranceFeeRatio = BigDecimal.ZERO;
|
|
|
+ agreementInfoVo.getAgreement().setJqEntranceFeeRatio(jqEntranceFeeRatio);
|
|
|
+ }
|
|
|
|
|
|
if(Objects.nonNull(syCostType))
|
|
|
{
|
|
|
@@ -264,6 +268,11 @@ public class QuoteVerificationAspect {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ if(Objects.nonNull(insOrdersCosts.getSyPremium()) && insOrdersCosts.getSyPremium().compareTo(BigDecimal.ZERO) == 0){
|
|
|
+ syEntranceFeeRatio = BigDecimal.ZERO;
|
|
|
+ agreementInfoVo.getAgreement().setSyEntranceFeeRatio(syEntranceFeeRatio);
|
|
|
+ }
|
|
|
+
|
|
|
if(Objects.nonNull(jyCostType)){
|
|
|
BigDecimal jyInlet = BigDecimalUtil.divide(jyCostType.getInlet(), new BigDecimal(100));
|
|
|
if (BigDecimalUtil.subtract(jyEntranceFeeRatio, jyInlet).compareTo(BigDecimal.ZERO) > 0) {
|
|
|
@@ -272,6 +281,11 @@ public class QuoteVerificationAspect {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ if(Objects.nonNull(insOrdersCosts.getJyPremium()) && insOrdersCosts.getJyPremium().compareTo(BigDecimal.ZERO) == 0){
|
|
|
+ jyEntranceFeeRatio = BigDecimal.ZERO;
|
|
|
+ agreementInfoVo.getAgreement().setJyEntranceFeeRatio(jyEntranceFeeRatio);
|
|
|
+ }
|
|
|
+
|
|
|
// 4. 计算跟单费比例(入口比例 - 手续费比例)
|
|
|
BigDecimal jqFollowRatio = calculateFollowRatio(jqCostType, jqEntranceFeeRatio);
|
|
|
BigDecimal syFollowRatio = calculateFollowRatio(syCostType, syEntranceFeeRatio);
|
|
|
@@ -454,27 +468,16 @@ public class QuoteVerificationAspect {
|
|
|
insFeeOrders.setTotalPayablePremium(totalPayable);
|
|
|
|
|
|
// 计算出口费用 = (出口比列 * 保费)- 分销费
|
|
|
-// BigDecimal firstDistributionFee = insFeeOrders.getFirstDistributionFee();
|
|
|
-// BigDecimal secondDistributionFee = insFeeOrders.getSecondDistributionFee();
|
|
|
-// BigDecimal thirdDistributionFee = insFeeOrders.getThirdDistributionFee();
|
|
|
BigDecimal jqExportPremiumOrigin = insFeeOrders.getJqExportRatio().multiply(insFeeOrders.getJqPremium());
|
|
|
BigDecimal jqExportPremium = jqExportPremiumOrigin.setScale(2,RoundingMode.DOWN);
|
|
|
-// if (jqExportPremium.compareTo(BigDecimal.ZERO) > 0) {
|
|
|
-// jqExportPremium = jqExportPremium.subtract(firstDistributionFee).subtract(secondDistributionFee).subtract(thirdDistributionFee);
|
|
|
-// }
|
|
|
insFeeOrders.setJqExportPremium(jqExportPremium);
|
|
|
|
|
|
BigDecimal syExportPremiumOrigin = insFeeOrders.getSyExportRatio().multiply(insFeeOrders.getSyPremium());
|
|
|
BigDecimal syExportPremium = syExportPremiumOrigin.setScale(2, RoundingMode.DOWN);
|
|
|
-// if (syExportPremium.compareTo(BigDecimal.ZERO) > 0) {
|
|
|
-// syExportPremium = syExportPremium.subtract(firstDistributionFee).subtract(secondDistributionFee).subtract(thirdDistributionFee);
|
|
|
-// }
|
|
|
insFeeOrders.setSyExportPremium(syExportPremium);
|
|
|
+
|
|
|
BigDecimal jyExportPremiumOrigin = insFeeOrders.getJyExportRatio().multiply(insFeeOrders.getJyPremium());
|
|
|
BigDecimal jyExportPremium = jyExportPremiumOrigin.setScale(2, RoundingMode.DOWN);
|
|
|
-// if (jyExportPremium.compareTo(BigDecimal.ZERO) > 0) {
|
|
|
-// jyExportPremium = jyExportPremium.subtract(firstDistributionFee).subtract(secondDistributionFee).subtract(thirdDistributionFee);
|
|
|
-// }
|
|
|
insFeeOrders.setJyExportPremium(jyExportPremium);
|
|
|
|
|
|
// add by lipf, 2026年6月27日15:45:20 计算总的出口金额由5位调整为2位时,截断的所有金额
|
|
|
@@ -535,9 +538,9 @@ public class QuoteVerificationAspect {
|
|
|
*/
|
|
|
private void saveRatio(InsFeeOrders insFeeOrders, AgreementInfoVo agreementInfoVo,PtlAgreementCostTypeVo jqCostType,PtlAgreementCostTypeVo syCostType,PtlAgreementCostTypeVo jyCostType) {
|
|
|
// 手续费比例
|
|
|
- insFeeOrders.setJqCommissionRatio(convertPercent(agreementInfoVo.getAgreement().getJqEntranceFeeRatio()));
|
|
|
- insFeeOrders.setSyCommissionRatio(convertPercent(agreementInfoVo.getAgreement().getSyEntranceFeeRatio()));
|
|
|
- insFeeOrders.setJyCommissionRatio(convertPercent(agreementInfoVo.getAgreement().getJyEntranceFeeRatio()));
|
|
|
+ insFeeOrders.setJqCommissionRatio(agreementInfoVo.getAgreement().getJqEntranceFeeRatio());
|
|
|
+ insFeeOrders.setSyCommissionRatio(agreementInfoVo.getAgreement().getSyEntranceFeeRatio());
|
|
|
+ insFeeOrders.setJyCommissionRatio(agreementInfoVo.getAgreement().getJyEntranceFeeRatio());
|
|
|
// 入口比例
|
|
|
insFeeOrders.setJqInletRatio(jqCostType != null
|
|
|
? convertPercent(jqCostType.getInlet() != null ? jqCostType.getInlet() : BigDecimal.ZERO) : BigDecimal.ZERO);
|
|
|
@@ -584,15 +587,18 @@ public class QuoteVerificationAspect {
|
|
|
BigDecimal thirdDistributionRatio = Optional.ofNullable(insFeeOrders.getThirdDistributionRatio()).orElse(BigDecimal.ZERO);
|
|
|
insFeeOrders.setJqExportRatio(jqCostType == null ? BigDecimal.ZERO :
|
|
|
(jqCostType.getExport() != null && jqCostType.getExport().compareTo(BigDecimal.ZERO) > 0
|
|
|
- ? convertPercent(jqCostType.getExport()).subtract(firstDistributionRatio).subtract(secondDistributionRatio).subtract(thirdDistributionRatio)
|
|
|
+ ? convertPercent(jqCostType.getExport()).subtract(convertPercent(firstDistributionRatio))
|
|
|
+ .subtract(convertPercent(secondDistributionRatio)).subtract(convertPercent(thirdDistributionRatio))
|
|
|
: BigDecimal.ZERO));
|
|
|
insFeeOrders.setSyExportRatio(syCostType == null ? BigDecimal.ZERO :
|
|
|
(syCostType.getExport() != null && syCostType.getExport().compareTo(BigDecimal.ZERO) > 0
|
|
|
- ? convertPercent(syCostType.getExport()).subtract(firstDistributionRatio).subtract(secondDistributionRatio).subtract(thirdDistributionRatio)
|
|
|
+ ? convertPercent(syCostType.getExport()).subtract(convertPercent(firstDistributionRatio))
|
|
|
+ .subtract(convertPercent(secondDistributionRatio)).subtract(convertPercent(thirdDistributionRatio))
|
|
|
: BigDecimal.ZERO));
|
|
|
insFeeOrders.setJyExportRatio(jyCostType == null ? BigDecimal.ZERO :
|
|
|
(jyCostType.getExport() != null && jyCostType.getExport().compareTo(BigDecimal.ZERO) > 0
|
|
|
- ? convertPercent(jyCostType.getExport()).subtract(firstDistributionRatio).subtract(secondDistributionRatio).subtract(thirdDistributionRatio)
|
|
|
+ ? convertPercent(jyCostType.getExport()).subtract(convertPercent(firstDistributionRatio))
|
|
|
+ .subtract(convertPercent(secondDistributionRatio)).subtract(convertPercent(thirdDistributionRatio))
|
|
|
: BigDecimal.ZERO));
|
|
|
// 出口留点比例
|
|
|
insFeeOrders.setJqExportKeepPointRatio(jqCostType != null
|
|
|
@@ -612,7 +618,7 @@ public class QuoteVerificationAspect {
|
|
|
*/
|
|
|
private BigDecimal calculateDistributionFee(InsOrdersCosts insOrdersCosts, InsFeeOrders insFeeOrders,InsOrders insOrders){
|
|
|
// 总保费
|
|
|
- BigDecimal totalPremium = insOrdersCosts.getSumPremium();
|
|
|
+ BigDecimal totalPremium = insOrdersCosts.getJqPremium().add(insOrdersCosts.getSyPremium()).add(insOrdersCosts.getJyPremium());
|
|
|
// 获取当前租户信息
|
|
|
HttpResult<SysUserJzgInfo> sysUserJzgInfoResult = orgClient.getUserInfoByMobile(insOrders.getRealQuoteUserId());
|
|
|
SysUserJzgInfo currentUser = sysUserJzgInfoResult.getData();
|
|
|
@@ -678,7 +684,7 @@ public class QuoteVerificationAspect {
|
|
|
insFeeOrders.setFirstDistributorId(distributorId);
|
|
|
BigDecimal fee_5 = (totalPremium.multiply(setting.getCommissionRatioLevel1()).setScale(5,RoundingMode.DOWN));
|
|
|
insFeeOrders.setFirstDistributionFee(totalPremium.multiply(setting.getCommissionRatioLevel1()).setScale(2,RoundingMode.DOWN));
|
|
|
- insFeeOrders.setFirstDistributionRatio(setting.getCommissionRatioLevel1());
|
|
|
+ insFeeOrders.setFirstDistributionRatio(setting.getCommissionRatioLevel1().multiply(new BigDecimal(100)));
|
|
|
BigDecimal diffAmount = fee_5.subtract(insFeeOrders.getFirstDistributionFee());
|
|
|
Map map = new HashMap();
|
|
|
map.put("id",distributorId);
|
|
|
@@ -707,7 +713,7 @@ public class QuoteVerificationAspect {
|
|
|
insFeeOrders.setSecondDistributorId(distributorId);
|
|
|
BigDecimal fee_5 = (totalPremium.multiply(setting.getCommissionRatioLevel2()).setScale(5,RoundingMode.DOWN));
|
|
|
insFeeOrders.setSecondDistributionFee(totalPremium.multiply(setting.getCommissionRatioLevel2()).setScale(2,RoundingMode.DOWN));
|
|
|
- insFeeOrders.setSecondDistributionRatio(setting.getCommissionRatioLevel2());
|
|
|
+ insFeeOrders.setSecondDistributionRatio(setting.getCommissionRatioLevel2().multiply(new BigDecimal(100)));
|
|
|
BigDecimal diffAmount = fee_5.subtract(insFeeOrders.getSecondDistributionFee());
|
|
|
Map map = new HashMap();
|
|
|
map.put("id",distributorId);
|
|
|
@@ -735,7 +741,7 @@ public class QuoteVerificationAspect {
|
|
|
insFeeOrders.setThirdDistributorId(referrer.getReferrerId());
|
|
|
BigDecimal fee_5 = (totalPremium.multiply(setting.getCommissionRatioLevel3()).setScale(5,RoundingMode.DOWN));
|
|
|
insFeeOrders.setThirdDistributionFee(totalPremium.multiply(setting.getCommissionRatioLevel3()).setScale(2,RoundingMode.DOWN));
|
|
|
- insFeeOrders.setThirdDistributionRatio(setting.getCommissionRatioLevel3());
|
|
|
+ insFeeOrders.setThirdDistributionRatio(setting.getCommissionRatioLevel3().multiply(new BigDecimal(100)));
|
|
|
BigDecimal diffAmount = fee_5.subtract(insFeeOrders.getThirdDistributionFee());
|
|
|
return diffAmount;
|
|
|
} else {
|