瀏覽代碼

获取费用明细信息展示

cuixinpeng 2 年之前
父節點
當前提交
b748a11197

+ 8 - 0
src/main/java/com/ydtech/modules/fee/service/FeeRuleSchemeService.java

@@ -5,6 +5,7 @@ import com.ydtech.modules.fee.dto.FeeSchemeReqDto;
 import com.ydtech.modules.fee.dto.FeeSchemeResDto;
 import com.ydtech.modules.ins.model.vo.QuoteRespVo;
 import com.ydtech.modules.order.entity.vo.BaseQuoteInfoVo;
+import com.ydtech.modules.order.entity.vo.QueryOrderFeeVo;
 
 /**
  * 该类中只要包含费用的一些相关接口
@@ -20,4 +21,11 @@ public interface FeeRuleSchemeService {
      * @param businessNo
      */
     public void dealFeeOrderInfo(BaseQuoteInfoVo quoteInfoVo, QuoteRespVo quoteRespVo, String agreementId,String businessNo);
+
+    /**
+     * 查询费用明细
+     * @param companyId
+     * @return
+     */
+    public QueryOrderFeeVo queryFeeOrderInfo(String companyId);
 }

+ 145 - 7
src/main/java/com/ydtech/modules/fee/service/impl/FeeRuleSchemeServiceImpl.java

@@ -16,9 +16,13 @@ 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.order.entity.InsAreaCompany;
 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.entity.vo.OrderFeeVo;
+import com.ydtech.modules.order.entity.vo.QueryOrderFeeVo;
+import com.ydtech.modules.order.service.InsAreaCompanyService;
 import com.ydtech.modules.order.service.InsFeeOrderService;
 import com.ydtech.modules.order.service.InsOrdersService;
 import com.ydtech.modules.protocol.entity.po.PtlAgreementProductCosts;
@@ -51,6 +55,10 @@ public class FeeRuleSchemeServiceImpl implements FeeRuleSchemeService {
     private EsmRetailService esmRetailService;
     @Resource
     private EsmUserReferrerService esmUserReferrerService;
+    @Resource
+    private InsAreaCompanyService insAreaCompanyService;
+
+
 
     /**
      * 根据跟单信息,以及配置的费用因子,获取合适的跟单费用
@@ -671,24 +679,24 @@ public class FeeRuleSchemeServiceImpl implements FeeRuleSchemeService {
             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);
+            syNoTaxPremium = insFeeOrder.getSyPremium().divide(new BigDecimal(1+0.06),BigDecimal.ROUND_HALF_UP,2);
             insFeeOrder.setSyNoTaxPremium(syNoTaxPremium);
             //商业险总费用
-            insFeeOrder.setSyCostsPremiums(getPremium(syNoTaxPremium,insFeeOrder.getJqCostsProportion()));
+            insFeeOrder.setSyCostsPremiums(getPremium(syNoTaxPremium,insFeeOrder.getSyCostsProportion()));
             //监管费比例
             if("1".equals(feeSchemeReqDto.getIsNewCar())){
-                insFeeOrder.setSySuperviseCostsProportion(new BigDecimal(feeSchemeResDto.getJqNewCarCostsProportion()));
+                insFeeOrder.setSySuperviseCostsProportion(new BigDecimal(feeSchemeResDto.getSyNewCarCostsProportion()));
             }else if("0".equals(feeSchemeReqDto.getIsNewCar())){
-                insFeeOrder.setSySuperviseCostsProportion(new BigDecimal(feeSchemeResDto.getJqOldCarCostsProportion()));
+                insFeeOrder.setSySuperviseCostsProportion(new BigDecimal(feeSchemeResDto.getSyOldCarCostsProportion()));
             }else{
                 insFeeOrder.setSySuperviseCostsProportion(new BigDecimal(0));
             }
             //监管费
-            insFeeOrder.setSySuperviseCostsPremiums(getPremium(syNoTaxPremium,insFeeOrder.getJqSuperviseCostsProportion()));
+            insFeeOrder.setSySuperviseCostsPremiums(getPremium(syNoTaxPremium,insFeeOrder.getSySuperviseCostsProportion()));
             //溢出费比例 先搁置放0
-            insFeeOrder.setSySpilloverProportion(new BigDecimal(feeSchemeResDto.getJqSpilloverProportion()));
+            insFeeOrder.setSySpilloverProportion(new BigDecimal(feeSchemeResDto.getSySpilloverProportion()));
             //溢出费 先搁置放0
-            insFeeOrder.setSySpilloverPremiums(getPremium(syNoTaxPremium,insFeeOrder.getJqSpilloverProportion()));
+            insFeeOrder.setSySpilloverPremiums(getPremium(syNoTaxPremium,insFeeOrder.getSySpilloverProportion()));
         }
 
         if(jqNoTaxPremium.doubleValue() >0 || syNoTaxPremium.doubleValue() >0){
@@ -826,4 +834,134 @@ public class FeeRuleSchemeServiceImpl implements FeeRuleSchemeService {
         }
         return premium;
     }
+
+    public QueryOrderFeeVo queryFeeOrderInfo(String companyId){
+        QueryOrderFeeVo queryOrderFeeVo = new QueryOrderFeeVo();
+        OrderFeeVo jqOrderFeeVo = new OrderFeeVo();
+        OrderFeeVo syOrderFeeVo = new OrderFeeVo();
+        OrderFeeVo fcOrderFeeVo = new OrderFeeVo();
+
+        InsAreaCompany insAreaCompany = insAreaCompanyService.getByIdIsExist(companyId);
+        InsFeeOrder insFeeOrder = insFeeOrderService.getByInsOrderNo(insAreaCompany.getInsOrderNo());
+
+
+        if(insFeeOrder.getJqPremium()!=null && insFeeOrder.getSyPremium()==null){//当为单交业务时
+            jqOrderFeeVo = packageOrderFeeInfoOne(insFeeOrder);
+            jqOrderFeeVo.setCostsPremiums(convertToString(insFeeOrder.getJqCostsPremiums()));
+            jqOrderFeeVo.setCostsProportion(convertToString(insFeeOrder.getJqCostsProportion()));
+        }else if(insFeeOrder.getJqPremium()==null && insFeeOrder.getSyPremium()!=null){//当为单商业务时
+            syOrderFeeVo = packageOrderFeeInfoOne(insFeeOrder);
+            syOrderFeeVo.setCostsPremiums(convertToString(insFeeOrder.getSyCostsPremiums()));
+            syOrderFeeVo.setCostsProportion(convertToString(insFeeOrder.getSyCostsProportion()));
+        }else if(insFeeOrder.getJqPremium()!=null && insFeeOrder.getJqPremium().doubleValue()>0 && insFeeOrder.getSyPremium()!=null && insFeeOrder.getSyPremium().doubleValue()>0){//当为交商业务时
+            QueryOrderFeeVo queryOrderFeeVoTemp = packageOrderFeeInfoAll(insFeeOrder);
+            //获取交强险费用明细
+            jqOrderFeeVo = queryOrderFeeVoTemp.getJqCoderFeeVo();
+            jqOrderFeeVo.setCostsPremiums(convertToString(insFeeOrder.getJqCostsPremiums()));
+            jqOrderFeeVo.setCostsProportion(convertToString(insFeeOrder.getJqCostsProportion()));
+            //获取商业险费用明细
+            syOrderFeeVo = queryOrderFeeVoTemp.getSyCoderFeeVo();
+            syOrderFeeVo.setCostsPremiums(convertToString(insFeeOrder.getSyCostsPremiums()));
+            syOrderFeeVo.setCostsProportion(convertToString(insFeeOrder.getSyCostsProportion()));
+
+        }
+        queryOrderFeeVo.setJqCoderFeeVo(jqOrderFeeVo);
+        queryOrderFeeVo.setSyCoderFeeVo(syOrderFeeVo);
+        queryOrderFeeVo.setFcCoderFeeVo(fcOrderFeeVo);
+        return queryOrderFeeVo;
+    }
+
+    /**
+     * 按照组合单模式获取费用明细
+     * @param insFeeOrder
+     * @return
+     */
+    private QueryOrderFeeVo packageOrderFeeInfoAll(InsFeeOrder insFeeOrder){
+        QueryOrderFeeVo queryOrderFeeVo = new QueryOrderFeeVo();
+        InsFeeOrder jqInsFeeOrderTemp = new InsFeeOrder();
+        //先利用交强费重算费用
+        jqInsFeeOrderTemp.setFirstDeptPremiums(getPremium(insFeeOrder.getJqNoTaxPremium(),insFeeOrder.getFirstDeptProportion()));
+        jqInsFeeOrderTemp.setSecondDeptPremiums(getPremium(insFeeOrder.getJqNoTaxPremium(),insFeeOrder.getSecondDeptProportion()));
+        jqInsFeeOrderTemp.setThirdDeptPremiums(getPremium(insFeeOrder.getJqNoTaxPremium(),insFeeOrder.getThirdDeptProportion()));
+        jqInsFeeOrderTemp.setForthDeptPremiums(getPremium(insFeeOrder.getJqNoTaxPremium(),insFeeOrder.getForthDeptProportion()));
+        jqInsFeeOrderTemp.setFifthDeptPremiums(getPremium(insFeeOrder.getJqNoTaxPremium(),insFeeOrder.getFifthDeptProportion()));
+        jqInsFeeOrderTemp.setFirstRetailPremiums(getPremium(insFeeOrder.getJqNoTaxPremium(),insFeeOrder.getFirstRetailProportion()));
+        jqInsFeeOrderTemp.setSecondRetailPremiums(getPremium(insFeeOrder.getJqNoTaxPremium(),insFeeOrder.getSecondRetailProportion()));
+        jqInsFeeOrderTemp.setThirdRetailPremiums(getPremium(insFeeOrder.getJqNoTaxPremium(),insFeeOrder.getThirdRetailProportion()));
+
+        //再利用总费-交强费,得出商业费
+        InsFeeOrder syInsFeeOrderTemp = new InsFeeOrder();
+        syInsFeeOrderTemp.setFirstDeptPremiums(insFeeOrder.getFirstDeptPremiums().subtract(jqInsFeeOrderTemp.getFirstDeptPremiums()));
+        syInsFeeOrderTemp.setSecondDeptPremiums(insFeeOrder.getSecondDeptPremiums().subtract(jqInsFeeOrderTemp.getSecondDeptPremiums()));
+        syInsFeeOrderTemp.setThirdDeptPremiums(insFeeOrder.getThirdDeptPremiums().subtract(jqInsFeeOrderTemp.getThirdDeptPremiums()));
+        syInsFeeOrderTemp.setForthDeptPremiums(insFeeOrder.getForthDeptPremiums().subtract(jqInsFeeOrderTemp.getForthDeptPremiums()));
+        syInsFeeOrderTemp.setFifthDeptPremiums(insFeeOrder.getFifthDeptPremiums().subtract(jqInsFeeOrderTemp.getFifthDeptPremiums()));
+        syInsFeeOrderTemp.setFirstRetailPremiums(insFeeOrder.getFirstRetailPremiums().subtract(jqInsFeeOrderTemp.getFirstRetailPremiums()));
+        syInsFeeOrderTemp.setSecondRetailPremiums(insFeeOrder.getSecondRetailPremiums().subtract(jqInsFeeOrderTemp.getSecondRetailPremiums()));
+        syInsFeeOrderTemp.setThirdRetailPremiums(insFeeOrder.getThirdRetailPremiums().subtract(jqInsFeeOrderTemp.getThirdRetailPremiums()));
+
+        //交强费转换赋值
+        OrderFeeVo jqOrderFeeVo = packageOrderFeeInfoOne(insFeeOrder);
+        jqOrderFeeVo.setFirstDeptPremiums(convertToString(jqInsFeeOrderTemp.getFirstDeptPremiums()));
+        jqOrderFeeVo.setSecondDeptPremiums(convertToString(jqInsFeeOrderTemp.getSecondDeptPremiums()));
+        jqOrderFeeVo.setThirdDeptPremiums(convertToString(jqInsFeeOrderTemp.getThirdDeptPremiums()));
+        jqOrderFeeVo.setForthDeptPremiums(convertToString(jqInsFeeOrderTemp.getForthDeptPremiums()));
+        jqOrderFeeVo.setFifthDeptPremiums(convertToString(jqInsFeeOrderTemp.getFifthDeptPremiums()));
+        jqOrderFeeVo.setFirstRetailPremiums(convertToString(jqInsFeeOrderTemp.getFirstRetailPremiums()));
+        jqOrderFeeVo.setSecondRetailPremiums(convertToString(jqInsFeeOrderTemp.getSecondRetailPremiums()));
+        jqOrderFeeVo.setThirdRetailPremiums(convertToString(jqInsFeeOrderTemp.getThirdRetailPremiums()));
+
+        //商业费转换赋值
+        OrderFeeVo syOrderFeeVo = packageOrderFeeInfoOne(insFeeOrder);
+        syOrderFeeVo.setFirstDeptPremiums(convertToString(syInsFeeOrderTemp.getFirstDeptPremiums()));
+        syOrderFeeVo.setSecondDeptPremiums(convertToString(syInsFeeOrderTemp.getSecondDeptPremiums()));
+        syOrderFeeVo.setThirdDeptPremiums(convertToString(syInsFeeOrderTemp.getThirdDeptPremiums()));
+        syOrderFeeVo.setForthDeptPremiums(convertToString(syInsFeeOrderTemp.getForthDeptPremiums()));
+        syOrderFeeVo.setFifthDeptPremiums(convertToString(syInsFeeOrderTemp.getFifthDeptPremiums()));
+        syOrderFeeVo.setFirstRetailPremiums(convertToString(syInsFeeOrderTemp.getFirstRetailPremiums()));
+        syOrderFeeVo.setSecondRetailPremiums(convertToString(syInsFeeOrderTemp.getSecondRetailPremiums()));
+        syOrderFeeVo.setThirdRetailPremiums(convertToString(syInsFeeOrderTemp.getThirdRetailPremiums()));
+
+        queryOrderFeeVo.setJqCoderFeeVo(jqOrderFeeVo);
+        queryOrderFeeVo.setSyCoderFeeVo(syOrderFeeVo);
+        return queryOrderFeeVo;
+    }
+
+    /**
+     * 按照单险种方式获取费用明细
+     * @param insFeeOrder
+     * @return
+     */
+    private OrderFeeVo packageOrderFeeInfoOne(InsFeeOrder insFeeOrder){
+        OrderFeeVo orderFeeVo = new OrderFeeVo();
+        orderFeeVo.setFirstDeptPremiums(convertToString(insFeeOrder.getFirstDeptPremiums()));
+        orderFeeVo.setFirstDeptProportion(convertToString(insFeeOrder.getFirstDeptProportion()));
+        orderFeeVo.setSecondDeptPremiums(convertToString(insFeeOrder.getSecondDeptPremiums()));
+        orderFeeVo.setSecondDeptProportion(convertToString(insFeeOrder.getSecondDeptProportion()));
+        orderFeeVo.setThirdDeptPremiums(convertToString(insFeeOrder.getThirdDeptPremiums()));
+        orderFeeVo.setThirdDeptProportion(convertToString(insFeeOrder.getThirdDeptProportion()));
+        orderFeeVo.setForthDeptPremiums(convertToString(insFeeOrder.getForthDeptPremiums()));
+        orderFeeVo.setForthDeptProportion(convertToString(insFeeOrder.getForthDeptProportion()));
+        orderFeeVo.setFifthDeptPremiums(convertToString(insFeeOrder.getFifthDeptPremiums()));
+        orderFeeVo.setFifthDeptProportion(convertToString(insFeeOrder.getFifthDeptProportion()));
+        orderFeeVo.setFirstRetailPremiums(convertToString(insFeeOrder.getFirstRetailPremiums()));
+        orderFeeVo.setFirstRetailProportion(convertToString(insFeeOrder.getFirstRetailProportion()));
+        orderFeeVo.setSecondRetailPremiums(convertToString(insFeeOrder.getSecondRetailPremiums()));
+        orderFeeVo.setSecondRetailProportion(convertToString(insFeeOrder.getSecondRetailProportion()));
+        orderFeeVo.setThirdRetailPremiums(convertToString(insFeeOrder.getThirdRetailPremiums()));
+        orderFeeVo.setThirdRetailProportion(convertToString(insFeeOrder.getThirdRetailProportion()));
+        return orderFeeVo;
+    }
+
+    private String convertToString(BigDecimal b){
+        if(b!=null){
+            if(b.doubleValue()==0){
+                return null;
+            }else {
+                return b.toString();
+            }
+        }else{
+            return null;
+        }
+    }
 }

+ 109 - 0
src/main/java/com/ydtech/modules/order/entity/vo/OrderFeeVo.java

@@ -0,0 +1,109 @@
+package com.ydtech.modules.order.entity.vo;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @Author: CXP
+ * @Date: 2023/10/14 20:47
+ */
+@Data
+public class OrderFeeVo implements Serializable {
+
+
+    private static final long serialVersionUID = -4906378446672825846L;
+
+    /**
+     * 费用比例
+     */
+    @JsonProperty("costsProportion")
+    private String costsProportion;
+    /**
+     * 总费用
+     */
+    @JsonProperty("costsPremiums")
+    private String costsPremiums;
+
+    /**
+     * 一级机构管理费比例
+     */
+    @JsonProperty("firstDeptProportion")
+    private String firstDeptProportion;
+    /**
+     * 一级机构管理费
+     */
+    @JsonProperty("firstDeptPremiums")
+    private String firstDeptPremiums;
+    /**
+     * 二级机构管理费比例
+     */
+    @JsonProperty("secondDeptProportion")
+    private String secondDeptProportion;
+    /**
+     * 二级机构管理费
+     */
+    @JsonProperty("secondDeptPremiums")
+    private String secondDeptPremiums;
+    /**
+     * 三级机构管理费比例
+     */
+    @JsonProperty("thirdDeptProportion")
+    private String thirdDeptProportion;
+    /**
+     * 三级机构管理费
+     */
+    @JsonProperty("thirdDeptPremiums")
+    private String thirdDeptPremiums;
+    /**
+     * 四级机构管理费比例
+     */
+    @JsonProperty("forthDeptProportion")
+    private String forthDeptProportion;
+    /**
+     * 四级机构管理费
+     */
+    @JsonProperty("forthDeptPremiums")
+    private String forthDeptPremiums;
+    /**
+     * 五级机构管理费比例
+     */
+    @JsonProperty("fifthDeptProportion")
+    private String fifthDeptProportion;
+    /**
+     * 五级机构管理费
+     */
+    @JsonProperty("fifthDeptPremiums")
+    private String fifthDeptPremiums;
+    /**
+     * 一级分销比例
+     */
+    @JsonProperty("firstRetailProportion")
+    private String firstRetailProportion;
+    /**
+     * 一级分销费
+     */
+    @JsonProperty("firstRetailPremiums")
+    private String firstRetailPremiums;
+    /**
+     * 二级分销比例
+     */
+    @JsonProperty("secondRetailProportion")
+    private String secondRetailProportion;
+    /**
+     * 二级分销费
+     */
+    @JsonProperty("secondRetailPremiums")
+    private String secondRetailPremiums;
+    /**
+     * 三级分销比例
+     */
+    @JsonProperty("thirdRetailProportion")
+    private String thirdRetailProportion;
+    /**
+     * 三级分销费
+     */
+    @JsonProperty("thirdRetailPremiums")
+    private String thirdRetailPremiums;
+}

+ 28 - 0
src/main/java/com/ydtech/modules/order/entity/vo/QueryOrderFeeVo.java

@@ -0,0 +1,28 @@
+package com.ydtech.modules.order.entity.vo;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.ydtech.modules.order.entity.api.zm.BaseResponse;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+/**
+ * @Author: CXP
+ * @Date: 2023/10/14 20:18
+ */
+@Data
+public class QueryOrderFeeVo implements Serializable {
+
+    private static final long serialVersionUID = 5353382043575510168L;
+
+    @JsonProperty("jqCoderFeeVo")
+    private OrderFeeVo jqCoderFeeVo;
+    @JsonProperty("syCoderFeeVo")
+    private OrderFeeVo syCoderFeeVo;
+    @JsonProperty("fcCoderFeeVo")
+    private OrderFeeVo fcCoderFeeVo;
+
+
+}