|
|
@@ -1,6 +1,14 @@
|
|
|
package com.ydtech.modules.fee.service.impl;
|
|
|
|
|
|
import com.ydtech.exception.SystemException;
|
|
|
+import com.ydtech.modules.admin.model.SysDept;
|
|
|
+import com.ydtech.modules.admin.model.SysUser;
|
|
|
+import com.ydtech.modules.admin.service.SysDeptService;
|
|
|
+import com.ydtech.modules.admin.service.SysUserService;
|
|
|
+import com.ydtech.modules.esm.model.EsmRetail;
|
|
|
+import com.ydtech.modules.esm.model.EsmUserReferrer;
|
|
|
+import com.ydtech.modules.esm.service.EsmRetailService;
|
|
|
+import com.ydtech.modules.esm.service.EsmUserReferrerService;
|
|
|
import com.ydtech.modules.fee.dto.FeeFactorInfoDto;
|
|
|
import com.ydtech.modules.fee.dto.FeeSchemeReqDto;
|
|
|
import com.ydtech.modules.fee.dto.FeeSchemeResDto;
|
|
|
@@ -8,17 +16,22 @@ import com.ydtech.modules.fee.service.FeeRuleSchemeService;
|
|
|
import com.ydtech.modules.ins.model.vo.CarInfoVo;
|
|
|
import com.ydtech.modules.ins.model.vo.KindInfoVo;
|
|
|
import com.ydtech.modules.ins.model.vo.QuoteRespVo;
|
|
|
+import com.ydtech.modules.ins.service.InsOrderService;
|
|
|
+import com.ydtech.modules.order.entity.InsFeeOrder;
|
|
|
+import com.ydtech.modules.order.entity.InsOrders;
|
|
|
import com.ydtech.modules.order.entity.vo.BaseQuoteInfoVo;
|
|
|
+import com.ydtech.modules.order.service.InsFeeOrderService;
|
|
|
+import com.ydtech.modules.order.service.InsOrdersService;
|
|
|
import com.ydtech.modules.protocol.entity.po.PtlAgreementProductCosts;
|
|
|
import com.ydtech.modules.protocol.service.PtlAgreementProductCostsService;
|
|
|
+import org.apache.commons.lang3.StringUtils;
|
|
|
import org.apache.commons.lang3.math.NumberUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.HashMap;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Map;
|
|
|
+import java.math.BigDecimal;
|
|
|
+import java.util.*;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
* 费用接口中相关功能的实现类
|
|
|
@@ -27,13 +40,24 @@ import java.util.Map;
|
|
|
public class FeeRuleSchemeServiceImpl implements FeeRuleSchemeService {
|
|
|
@Autowired
|
|
|
private PtlAgreementProductCostsService ptlAgreementProductCostsService;
|
|
|
+ @Autowired
|
|
|
+ private InsOrdersService insOrdersService;
|
|
|
+ @Autowired
|
|
|
+ private InsFeeOrderService insFeeOrderService;
|
|
|
+ @Autowired
|
|
|
+ private SysUserService sysUserService;
|
|
|
+ @Autowired
|
|
|
+ private SysDeptService sysDeptService;
|
|
|
+ @Autowired
|
|
|
+ private EsmRetailService esmRetailService;
|
|
|
+ @Autowired
|
|
|
+ private EsmUserReferrerService esmUserReferrerService;
|
|
|
|
|
|
/**
|
|
|
* 根据跟单信息,以及配置的费用因子,获取合适的跟单费用
|
|
|
* @param feeSchemeReqDto
|
|
|
* @return
|
|
|
*/
|
|
|
- @Override
|
|
|
public FeeSchemeResDto matchTheAppropriateFees(FeeSchemeReqDto feeSchemeReqDto) {
|
|
|
FeeSchemeResDto feeSchemeResDto=new FeeSchemeResDto();
|
|
|
|
|
|
@@ -44,7 +68,7 @@ public class FeeRuleSchemeServiceImpl implements FeeRuleSchemeService {
|
|
|
throw new SystemException("未查询到费用配置,请先配置该协议的费用方案!");
|
|
|
}else{
|
|
|
//符合跟单信息的方案列表
|
|
|
- List validSchemeList=new ArrayList();
|
|
|
+ List<PtlAgreementProductCosts> validSchemeList=new ArrayList();
|
|
|
//循环符合的方案列表,再进行细化的因子匹配,获取最终可以匹配到的方案
|
|
|
for(int i=0;i<ptlAgreementProductCosts.size();i++){
|
|
|
PtlAgreementProductCosts factorCost=ptlAgreementProductCosts.get(i);
|
|
|
@@ -61,6 +85,12 @@ public class FeeRuleSchemeServiceImpl implements FeeRuleSchemeService {
|
|
|
}
|
|
|
|
|
|
if(validSchemeList.size()>0){
|
|
|
+ //先判断匹配到的是不是只有兜底类型,如果不是则过滤掉兜底类型的费用,优先以跟单的为准,如果只有兜底类型,则按同样逻辑进行筛选
|
|
|
+ //根据ProductId去重后的结果集
|
|
|
+ List tempList=validSchemeList.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(PtlAgreementProductCosts :: getProductId))), ArrayList::new));
|
|
|
+ if(tempList.size()>1){//如果有多种类型,则过滤掉兜底类型的
|
|
|
+ validSchemeList=validSchemeList.stream().filter(x -> !"039999".equals(x.getProductId())).collect(Collectors.toList());
|
|
|
+ }
|
|
|
//匹配到唯一一条费用方案,直接用这条
|
|
|
if(validSchemeList.size()==1){
|
|
|
//进行费用比例赋值,给返回对象
|
|
|
@@ -269,11 +299,11 @@ public class FeeRuleSchemeServiceImpl implements FeeRuleSchemeService {
|
|
|
factor0.setFactorName("是否过户");
|
|
|
factor0.setMatchType("1");
|
|
|
factor0.setMatchSequence(0);
|
|
|
- if(factorCost.getTransfer()!=null){
|
|
|
+ if(factorCost.getTransfer()!=null&&factorCost.getTransfer()!=9){
|
|
|
factor0.setNeedMatch(true);
|
|
|
factor0.setSingleSelectVal(String.valueOf(factorCost.getTransfer()));
|
|
|
}else{
|
|
|
- //如果方案中未录入,则不校验该项因子
|
|
|
+ //如果方案中未录入(是空或为9时),则不校验该项因子
|
|
|
factor0.setNeedMatch(false);
|
|
|
}
|
|
|
resultMqp.put(0,factor0);
|
|
|
@@ -282,11 +312,11 @@ public class FeeRuleSchemeServiceImpl implements FeeRuleSchemeService {
|
|
|
factor1.setFactorName("新旧车");
|
|
|
factor1.setMatchType("1");
|
|
|
factor1.setMatchSequence(1);
|
|
|
- if(factorCost.getOldAndNew()!=null){
|
|
|
+ if(factorCost.getOldAndNew()!=null&&factorCost.getOldAndNew()!=9){
|
|
|
factor1.setNeedMatch(true);
|
|
|
factor1.setSingleSelectVal(String.valueOf(factorCost.getOldAndNew()));
|
|
|
}else{
|
|
|
- //如果方案中未录入,则不校验该项因子
|
|
|
+ //如果方案中未录入(是空或为9时),则不校验该项因子
|
|
|
factor1.setNeedMatch(false);
|
|
|
}
|
|
|
resultMqp.put(1,factor1);
|
|
|
@@ -295,11 +325,11 @@ public class FeeRuleSchemeServiceImpl implements FeeRuleSchemeService {
|
|
|
factor2.setFactorName("是否新能源");
|
|
|
factor2.setMatchType("1");
|
|
|
factor2.setMatchSequence(2);
|
|
|
- if(factorCost.getNewEnergy()!=null){
|
|
|
+ if(factorCost.getNewEnergy()!=null&&factorCost.getNewEnergy()!=9){
|
|
|
factor2.setNeedMatch(true);
|
|
|
factor2.setSingleSelectVal(String.valueOf(factorCost.getNewEnergy()));
|
|
|
}else{
|
|
|
- //如果方案中未录入,则不校验该项因子
|
|
|
+ //如果方案中未录入(是空或为9时),则不校验该项因子
|
|
|
factor2.setNeedMatch(false);
|
|
|
}
|
|
|
resultMqp.put(2,factor2);
|
|
|
@@ -308,11 +338,11 @@ public class FeeRuleSchemeServiceImpl implements FeeRuleSchemeService {
|
|
|
factor3.setFactorName("是否续保");
|
|
|
factor3.setMatchType("1");
|
|
|
factor3.setMatchSequence(3);
|
|
|
- if(factorCost.getRenewal()!=null){
|
|
|
+ if(factorCost.getRenewal()!=null&&factorCost.getRenewal()!=9){
|
|
|
factor3.setNeedMatch(true);
|
|
|
factor3.setSingleSelectVal(String.valueOf(factorCost.getRenewal()));
|
|
|
}else{
|
|
|
- //如果方案中未录入,则不校验该项因子
|
|
|
+ //如果方案中未录入(是空或为9时),则不校验该项因子
|
|
|
factor3.setNeedMatch(false);
|
|
|
}
|
|
|
resultMqp.put(3,factor3);
|
|
|
@@ -566,8 +596,8 @@ public class FeeRuleSchemeServiceImpl implements FeeRuleSchemeService {
|
|
|
String isTransfer = "0";
|
|
|
String isNewCar = "0";
|
|
|
String isRenewal = "0";
|
|
|
- String useNature = "";
|
|
|
- String carType="";
|
|
|
+ String useNature = "家庭自用";
|
|
|
+ String carType="客车";
|
|
|
String isNewEnergy = "0";
|
|
|
feeSchemeReqDto.setBusType(productId);//"业务类型:单交0330、单商034001、单三034002、交三0330034002、交商0330034001"
|
|
|
feeSchemeReqDto.setAgreementId(agreementId);//协议ID
|
|
|
@@ -585,7 +615,7 @@ public class FeeRuleSchemeServiceImpl implements FeeRuleSchemeService {
|
|
|
feeSchemeReqDto.setIsNewEnergy(isNewEnergy);//是否新能源 1是 0否
|
|
|
feeSchemeReqDto.setIsRenewal("0");//是否续保 1是 0否 续保取值有争议 默认送否 暂时搁置
|
|
|
//页面要素及中煤交互请求返参没有,先默认写死
|
|
|
- if("A0".equals(carInfoVo.getCartype())){
|
|
|
+ if("A0".equals(carInfoVo.getCimodelclass())){
|
|
|
carType="客车";
|
|
|
}
|
|
|
feeSchemeReqDto.setVehicleCategory(carType);//车辆大类: 客车、货车、特种车、挂车、摩托车、拖拉机
|
|
|
@@ -612,4 +642,189 @@ public class FeeRuleSchemeServiceImpl implements FeeRuleSchemeService {
|
|
|
}
|
|
|
return feeSchemeReqDto;
|
|
|
}
|
|
|
+
|
|
|
+ public void dealFeeOrderInfo(BaseQuoteInfoVo quoteInfoVo, QuoteRespVo quoteRespVo, String agreementId,String businessNo){
|
|
|
+ BigDecimal jqNoTaxPremium = new BigDecimal(0);
|
|
|
+ BigDecimal syNoTaxPremium = new BigDecimal(0);
|
|
|
+ InsOrders insOrders = insOrdersService.getById(quoteRespVo.getOrderno());
|
|
|
+ FeeSchemeReqDto feeSchemeReqDto = this.getFeeSchemeInfo(quoteInfoVo,quoteRespVo,agreementId,insOrders.getProductid());
|
|
|
+ FeeSchemeResDto feeSchemeResDto = this.matchTheAppropriateFees(feeSchemeReqDto);
|
|
|
+ InsFeeOrder insFeeOrder = new InsFeeOrder(feeSchemeReqDto,feeSchemeResDto,businessNo);
|
|
|
+ //先通过含税保费计算出不含税保费 公式 总保费/(1+增值税率) 目前增值税率是0.06
|
|
|
+ if(insFeeOrder.getJqPremium().doubleValue()>0){
|
|
|
+ jqNoTaxPremium = insFeeOrder.getJqPremium().divide(new BigDecimal(1+0.06),BigDecimal.ROUND_HALF_UP,2);
|
|
|
+ insFeeOrder.setJqNoTaxPremium(jqNoTaxPremium);
|
|
|
+ //交强险总费用
|
|
|
+ insFeeOrder.setJqCostsPremiums(getPremium(jqNoTaxPremium,insFeeOrder.getJqCostsProportion()));
|
|
|
+ //监管费比例
|
|
|
+ if("1".equals(feeSchemeReqDto.getIsNewCar())){
|
|
|
+ insFeeOrder.setJqSuperviseCostsProportion(new BigDecimal(feeSchemeResDto.getJqNewCarCostsProportion()));
|
|
|
+ }else if("0".equals(feeSchemeReqDto.getIsNewCar())){
|
|
|
+ insFeeOrder.setJqSuperviseCostsProportion(new BigDecimal(feeSchemeResDto.getJqOldCarCostsProportion()));
|
|
|
+ }else{
|
|
|
+ insFeeOrder.setJqSuperviseCostsProportion(new BigDecimal(0));
|
|
|
+ }
|
|
|
+ //监管费
|
|
|
+ insFeeOrder.setJqSuperviseCostsPremiums(getPremium(jqNoTaxPremium,insFeeOrder.getJqSuperviseCostsProportion()));
|
|
|
+ //溢出费比例 先搁置放0
|
|
|
+ insFeeOrder.setJqSpilloverProportion(new BigDecimal(feeSchemeResDto.getJqSpilloverProportion()));
|
|
|
+ //溢出费 先搁置放0
|
|
|
+ insFeeOrder.setJqSpilloverPremiums(getPremium(jqNoTaxPremium,insFeeOrder.getJqSpilloverProportion()));
|
|
|
+ }
|
|
|
+ if(insFeeOrder.getSyPremium().doubleValue()>0){
|
|
|
+ syNoTaxPremium = insFeeOrder.getJqPremium().divide(new BigDecimal(1+0.06),BigDecimal.ROUND_HALF_UP,2);
|
|
|
+ insFeeOrder.setSyNoTaxPremium(syNoTaxPremium);
|
|
|
+ //商业险总费用
|
|
|
+ insFeeOrder.setSyCostsPremiums(getPremium(syNoTaxPremium,insFeeOrder.getJqCostsProportion()));
|
|
|
+ //监管费比例
|
|
|
+ if("1".equals(feeSchemeReqDto.getIsNewCar())){
|
|
|
+ insFeeOrder.setSySuperviseCostsProportion(new BigDecimal(feeSchemeResDto.getJqNewCarCostsProportion()));
|
|
|
+ }else if("0".equals(feeSchemeReqDto.getIsNewCar())){
|
|
|
+ insFeeOrder.setSySuperviseCostsProportion(new BigDecimal(feeSchemeResDto.getJqOldCarCostsProportion()));
|
|
|
+ }else{
|
|
|
+ insFeeOrder.setSySuperviseCostsProportion(new BigDecimal(0));
|
|
|
+ }
|
|
|
+ //监管费
|
|
|
+ insFeeOrder.setSySuperviseCostsPremiums(getPremium(syNoTaxPremium,insFeeOrder.getJqSuperviseCostsProportion()));
|
|
|
+ //溢出费比例 先搁置放0
|
|
|
+ insFeeOrder.setSySpilloverProportion(new BigDecimal(feeSchemeResDto.getJqSpilloverProportion()));
|
|
|
+ //溢出费 先搁置放0
|
|
|
+ insFeeOrder.setSySpilloverPremiums(getPremium(syNoTaxPremium,insFeeOrder.getJqSpilloverProportion()));
|
|
|
+ }
|
|
|
+
|
|
|
+ if(jqNoTaxPremium.doubleValue() >0 || syNoTaxPremium.doubleValue() >0){
|
|
|
+ BigDecimal totalNoTaxPremium = jqNoTaxPremium.add(syNoTaxPremium);
|
|
|
+ SysUser sysUser = sysUserService.findByUserId(insOrders.getUserid());
|
|
|
+ /**
|
|
|
+ * 机构管理费比例逻辑
|
|
|
+ * 当前出单员的机构编码找他的上一级就是五级
|
|
|
+ * 机构层级划分方式
|
|
|
+ * 99 总公司 一级
|
|
|
+ * 9914山西分公司 二级
|
|
|
+ * 991401太原中支 三级
|
|
|
+ * 99140105小店中支 四级
|
|
|
+ * 9914010501 营销服务部 五级
|
|
|
+ * 1团队 无机构层级
|
|
|
+ */
|
|
|
+ SysDept sysDept = sysDeptService.getById(sysUser.getDeptId());
|
|
|
+ if(StringUtils.isNotEmpty(sysDept.getComlevel())){
|
|
|
+ throw new SystemException("当前出单员归属团队有误,请检查机构层级配置!");
|
|
|
+ }
|
|
|
+ //得到五级机构
|
|
|
+ SysDept sysDeptFifth = sysDeptService.getById(sysDept.getParentId());
|
|
|
+ SysDept sysDeptForth = sysDeptService.getById(sysDeptFifth.getParentId());
|
|
|
+ SysDept sysDeptThird = sysDeptService.getById(sysDeptForth.getParentId());
|
|
|
+ SysDept sysDeptSecond = sysDeptService.getById(sysDeptThird.getParentId());
|
|
|
+ SysDept sysDeptFirst = sysDeptService.getById(sysDeptSecond.getParentId());
|
|
|
+ //五级机构管理费用比例
|
|
|
+ if(sysDeptFifth!=null && "5".equals(sysDeptFifth.getComlevel())){
|
|
|
+ insFeeOrder.setFifthDeptProportion(new BigDecimal(sysDeptFifth.getManagementFee()));
|
|
|
+ insFeeOrder.setFifthDeptPremiums(getPremium(totalNoTaxPremium,insFeeOrder.getFifthDeptProportion()));
|
|
|
+ }
|
|
|
+ //四级机构管理费用比例
|
|
|
+ if(sysDeptForth!=null && "4".equals(sysDeptForth.getComlevel())){
|
|
|
+ insFeeOrder.setForthDeptProportion(new BigDecimal(sysDeptForth.getManagementFee()));
|
|
|
+ insFeeOrder.setForthDeptPremiums(getPremium(totalNoTaxPremium,insFeeOrder.getForthDeptProportion()));
|
|
|
+ }
|
|
|
+ //三级机构管理费用比例
|
|
|
+ if(sysDeptThird!=null && "3".equals(sysDeptThird.getComlevel())){
|
|
|
+ insFeeOrder.setThirdDeptProportion(new BigDecimal(sysDeptThird.getManagementFee()));
|
|
|
+ insFeeOrder.setThirdDeptPremiums(getPremium(totalNoTaxPremium,insFeeOrder.getThirdDeptProportion()));
|
|
|
+ }
|
|
|
+ //二级机构管理费用比例
|
|
|
+ if(sysDeptSecond!=null && "2".equals(sysDeptSecond.getComlevel())){
|
|
|
+ insFeeOrder.setSecondDeptProportion(new BigDecimal(sysDeptSecond.getManagementFee()));
|
|
|
+ insFeeOrder.setSecondDeptPremiums(getPremium(totalNoTaxPremium,insFeeOrder.getSecondDeptProportion()));
|
|
|
+ }
|
|
|
+ //一级机构管理费用比例
|
|
|
+ if(sysDeptFirst!=null && "1".equals(sysDeptFirst.getComlevel())){
|
|
|
+ insFeeOrder.setFirstDeptProportion(new BigDecimal(sysDeptFirst.getManagementFee()));
|
|
|
+ insFeeOrder.setFirstDeptPremiums(getPremium(totalNoTaxPremium,insFeeOrder.getFirstDeptProportion()));
|
|
|
+ }
|
|
|
+ //一级分销比例 推荐人
|
|
|
+ //二级分销比例
|
|
|
+ //三级分销比例
|
|
|
+ /**
|
|
|
+ * 分销一级、二级、三级存值取团队配置的分销佣金比例,若该团队走三级分销模式,当前出单员出单时,跟单的分销取值方式为:
|
|
|
+ * 根据出单员的推荐人向上找三级,若可以找到,则跟单存一、二、三分销比例;
|
|
|
+ * 若向上只能找到一级或者二级,则跟单存一级或者一级、二级
|
|
|
+ * 比如 A 1 B 2 C 3 D 若D出单 则给 C 3个 B 2个 A 1个;C出单给 B 3个 A 2个
|
|
|
+ * 第一步,先判断团队配置的分销模式
|
|
|
+ * 第二步,根据分销模式找上级存值相应分销比例
|
|
|
+ * 第三步,仅有一个上级的情况分销比例存啥
|
|
|
+ */
|
|
|
+ List<EsmRetail> esmRetailList = esmRetailService.selectList(" where t.deptid=? and t.status = '1' ", new Object[]{sysUser.getDeptId()});
|
|
|
+
|
|
|
+ if(esmRetailList!=null && esmRetailList.size()>0){
|
|
|
+ EsmRetail esmRetail = esmRetailList.get(0);
|
|
|
+ if(esmRetail!=null){
|
|
|
+ int cycleIndex = 0;
|
|
|
+ if("3".equals(esmRetail.getRetailtype())){//团队配置了三级分销模式
|
|
|
+ cycleIndex = 3;
|
|
|
+ }else if("2".equals(esmRetail.getRetailtype())){//团队配置了二级分销模式
|
|
|
+ cycleIndex = 2;
|
|
|
+ }else if("1".equals(esmRetail.getRetailtype())){//团队配置了一级分销模式
|
|
|
+ cycleIndex = 1;
|
|
|
+ }else if("0".equals(esmRetail.getRetailtype())){//团队没有配置分销模式
|
|
|
+ cycleIndex = 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ //利用当前工号,循环向上找推荐人
|
|
|
+ String userId = sysUser.getId();
|
|
|
+ int breakCycle = 99999999;
|
|
|
+ for(int i=0;i<=cycleIndex;i++){
|
|
|
+ EsmUserReferrer userReferrer = esmUserReferrerService.getById(userId);
|
|
|
+ if(userReferrer.getReferrerId().equals(userReferrer.getId())){//团队长,没有上级
|
|
|
+ //跳出循环
|
|
|
+ breakCycle = i;
|
|
|
+ break;
|
|
|
+ }else {
|
|
|
+ userId = userReferrer.getReferrerId();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //breakCycle是3,当前工号的上级的上级的上级就是团队长
|
|
|
+ //breakCycle是2,当前工号的上级的上级就是团队长
|
|
|
+ //breakCycle是1,当前工号的上级就是团队长
|
|
|
+ //breakCycle是0,当前工号就是团队长
|
|
|
+
|
|
|
+ if("3".equals(esmRetail.getRetailtype())){//团队配置了三级分销模式
|
|
|
+ if(breakCycle==99999999||breakCycle==3){
|
|
|
+ insFeeOrder.setFirstRetailProportion(new BigDecimal(esmRetail.getDisrate1()));
|
|
|
+ insFeeOrder.setSecondRetailProportion(new BigDecimal(esmRetail.getDisrate2()));
|
|
|
+ insFeeOrder.setThirdRetailProportion(new BigDecimal(esmRetail.getDisrate3()));
|
|
|
+ }else if(breakCycle==2){
|
|
|
+ insFeeOrder.setSecondRetailProportion(new BigDecimal(esmRetail.getDisrate2()));
|
|
|
+ insFeeOrder.setThirdRetailProportion(new BigDecimal(esmRetail.getDisrate3()));
|
|
|
+ }else if(breakCycle==1){
|
|
|
+ insFeeOrder.setThirdRetailProportion(new BigDecimal(esmRetail.getDisrate3()));
|
|
|
+ }
|
|
|
+ }else if("2".equals(esmRetail.getRetailtype())){//团队配置了二级分销模式
|
|
|
+ if(breakCycle==99999999||breakCycle==3 || breakCycle==2){
|
|
|
+ insFeeOrder.setFirstRetailProportion(new BigDecimal(esmRetail.getDisrate1()));
|
|
|
+ insFeeOrder.setSecondRetailProportion(new BigDecimal(esmRetail.getDisrate2()));
|
|
|
+ }else if(breakCycle==1){
|
|
|
+ insFeeOrder.setSecondRetailProportion(new BigDecimal(esmRetail.getDisrate2()));
|
|
|
+ }
|
|
|
+ }else if("1".equals(esmRetail.getRetailtype())){//团队配置了一级分销模式
|
|
|
+ if(breakCycle==99999999||breakCycle==3 || breakCycle==2||breakCycle==1){
|
|
|
+ insFeeOrder.setFirstRetailProportion(new BigDecimal(esmRetail.getDisrate1()));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ insFeeOrder.setFirstRetailPremiums(getPremium(totalNoTaxPremium,insFeeOrder.getFirstRetailProportion()));
|
|
|
+ insFeeOrder.setSecondRetailPremiums(getPremium(totalNoTaxPremium,insFeeOrder.getSecondRetailProportion()));
|
|
|
+ insFeeOrder.setThirdRetailPremiums(getPremium(totalNoTaxPremium,insFeeOrder.getThirdRetailProportion()));
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ insFeeOrderService.insertCompanyAndOrders(insFeeOrder);
|
|
|
+ }
|
|
|
+
|
|
|
+ private BigDecimal getPremium(BigDecimal noTaxPremium,BigDecimal costsProportion){
|
|
|
+ BigDecimal premium = new BigDecimal(0);
|
|
|
+ if(costsProportion!=null && costsProportion.doubleValue()>0){
|
|
|
+ premium = noTaxPremium.multiply(costsProportion).divide(new BigDecimal(100),4,BigDecimal.ROUND_HALF_UP);
|
|
|
+ }
|
|
|
+ return premium;
|
|
|
+ }
|
|
|
}
|