Quellcode durchsuchen

fix 大地三者附加医保共享保额

Liub vor 5 Tagen
Ursprung
Commit
76d0d6c213

+ 34 - 8
tenant/insurance/quotation-dadi/src/main/java/com/jzg/quotation/dadi/crawler/entity/request/DaDiInsurancePlanRequest.java

@@ -412,11 +412,18 @@ public class DaDiInsurancePlanRequest extends DaDiBaseRequest {
                     ? daDiNewEnergyVehicleInsurance.toMap()
                     : daDiFuelVehicleInsurance.toMap();
 
+            // 第三者责任险保额:医保外医疗费用责任险“保额为1”表示共享三者保额时使用(未投保三者则为null,不替换)
+            String thirdPartyLimit = quoteVo.getKindInfoVo().stream()
+                    .filter(k -> "B".equals(k.getKindCode()))
+                    .map(KindInfoVo::getAmount)
+                    .findFirst()
+                    .orElse(null);
+
             for (KindInfoVo kindInfoVo : quoteVo.getKindInfoVo()) {
                 String mKindCode = kindInfoVo.getKindCode();
                 DaDiFuelKindInfo target = insuranceMap.get(mKindCode);
                 if (target != null) {
-                    applyNewEnergySpecialProcessing(target, kindInfoVo, actualValue, priceCoefficient, seatCount);
+                    applyNewEnergySpecialProcessing(target, kindInfoVo, actualValue, priceCoefficient, seatCount, thirdPartyLimit);
                     daDiFuelKindInfo.add(target);
                 }
             }
@@ -494,7 +501,8 @@ public class DaDiInsurancePlanRequest extends DaDiBaseRequest {
      * 新能源车险特殊处理:根据平台险种编码,将源KindInfoVo的字段映射到目标DaDiFuelKindInfo
      */
     private void applyNewEnergySpecialProcessing(DaDiFuelKindInfo target, KindInfoVo source,
-                                                 String actualValue, String priceCoefficient, int seatCount) {
+                                                 String actualValue, String priceCoefficient, int seatCount,
+                                                 String thirdPartyLimit) {
         String platformKindCode = source.getKindCode();
 
         switch (platformKindCode) {
@@ -534,21 +542,39 @@ public class DaDiInsurancePlanRequest extends DaDiBaseRequest {
 
             case "SY_FJ_YBW1":
                 // 附加医保外医疗费用责任险(三者)
-                target.setAmount(source.getAmount());
+                // 保额为1时共享第三者责任险保额(未投保三者则不替换,保持原值)
+                if ("1".equals(source.getAmount()) && thirdPartyLimit != null) {
+                    target.setAmount(thirdPartyLimit);
+                } else {
+                    target.setAmount(source.getAmount());
+                }
                 break;
 
             case "SY_FJ_YBW3":
                 // 附加医保外医疗费用责任险(司机)
-                target.setAmount(source.getAmount());
+                // 保额为1时共享第三者责任险保额(未投保三者则不替换,保持原值)
+                if ("1".equals(source.getAmount()) && thirdPartyLimit != null) {
+                    target.setAmount(thirdPartyLimit);
+                } else {
+                    target.setAmount(source.getAmount());
+                }
                 break;
 
             case "SY_FJ_YBW2":
                 // 附加医保外医疗费用责任险(乘客):单人金额 × (座位数-1)
-                int ybw2UnitAmount = Integer.parseInt(source.getAmount());
                 int ybw2Quantity = seatCount - 1;
-                target.setUnitAmount(source.getAmount());
-                target.setQuantity(String.valueOf(ybw2Quantity));
-                target.setAmount(String.valueOf(ybw2UnitAmount * ybw2Quantity));
+                // 保额为1时共享第三者责任险保额:每座=三者保额,unitAmount=三者保额,总额=三者保额×(座位数-1)
+                if (("1".equals(source.getAmount()) || "1".equals(source.getUnitAmount())) && thirdPartyLimit != null) {
+                    int ybw2SharedUnitAmount = Integer.parseInt(thirdPartyLimit);
+                    target.setUnitAmount(thirdPartyLimit);
+                    target.setQuantity(String.valueOf(ybw2Quantity));
+                    target.setAmount(String.valueOf(ybw2SharedUnitAmount * ybw2Quantity));
+                } else {
+                    int ybw2UnitAmount = Integer.parseInt(source.getAmount());
+                    target.setUnitAmount(source.getAmount());
+                    target.setQuantity(String.valueOf(ybw2Quantity));
+                    target.setAmount(String.valueOf(ybw2UnitAmount * ybw2Quantity));
+                }
                 break;
 
             case "TY1":