ソースを参照

Merge remote-tracking branch 'origin/master'

lixiaolong 5 日 前
コミット
d80cf2fbea

+ 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":

+ 2 - 0
tenant/insurance/quotation-taiping/src/main/java/com/jzg/quotation/taiping/crawler/entity/request/TaiPingCrawlerPremiumCalculateRequest.java

@@ -2126,6 +2126,8 @@ public class TaiPingCrawlerPremiumCalculateRequest {
                 kind.setValueType("");
                 kind.setClauseType(false);
                 kind.setNoChange(true);
+                kind.setSumInsured(kindInfoVo.getAmount());
+                kind.setUnitInsured(kindInfoVo.getAmount());
                 // 车损险
                 if (kindCodeEnum.getKindCode().equals("0301200") || kindCodeEnum.getKindCode().equals("0401200")) {
                     kind.setSumInsured(actualValue);

+ 11 - 6
tenant/insurance/quotation-taiping/src/main/java/com/jzg/quotation/taiping/crawler/service/impl/TaipingCrawlerRequestImpl.java

@@ -114,13 +114,12 @@ public class TaipingCrawlerRequestImpl implements TaipingCrawlerRequest {
         // 获取销售信息子代码
         TaiPingCrawlerFindSolutionCodeRequest taiPingCrawlerFindSolutionCodeRequest = new TaiPingCrawlerFindSolutionCodeRequest(parameters);
         TaiPingCrawlerFindSolutionCodeData.RecordsDTO taiPingCrawlerFindSolutionCodeData = taiPingCrawlerRequestComponent.findSolutionCode(taiPingCrawlerFindSolutionCodeRequest,httpHeaders,parameters);
-        // 查询决策单元信息
-        TaiPingCrawlerFindApplyNoRequest taiPingCrawlerFindApplyNoRequest = new TaiPingCrawlerFindApplyNoRequest(parameters,record);
-        TaiPingCrawlerFindApplyNoResponse.GsApplyInfoMainDto gsApplyInfoMainDto = taiPingCrawlerRequestComponent.findApplyNo(taiPingCrawlerFindApplyNoRequest,httpHeaders,parameters);
-
         // 创建订单
         TaiPingCrawlerCreateOrderRequest taiPingCrawlerCreateOrderRequest = new TaiPingCrawlerCreateOrderRequest(parameters,record);
         String orderNo = taiPingCrawlerRequestComponent.orderCreate(taiPingCrawlerCreateOrderRequest, httpHeaders,parameters);
+        // 查询决策单元信息
+        TaiPingCrawlerFindApplyNoRequest taiPingCrawlerFindApplyNoRequest = new TaiPingCrawlerFindApplyNoRequest(parameters,record);
+        TaiPingCrawlerFindApplyNoResponse.GsApplyInfoMainDto gsApplyInfoMainDto = taiPingCrawlerRequestComponent.findApplyNo(taiPingCrawlerFindApplyNoRequest,httpHeaders,parameters);
         // 车型查询
         TaiPingCrawlerBrandNameQueryRequest brandNameQueryRequest = new TaiPingCrawlerBrandNameQueryRequest(quoteVo.getCarInfoVo(),orderNo,record,parameters);
         TaiPingCrawlerBaseResponse<TaiPingCrawlerBrandNameQueryData> brandNameQuery = taiPingCrawlerRequestComponent.queryBrand(brandNameQueryRequest, httpHeaders,parameters);
@@ -456,6 +455,12 @@ public class TaipingCrawlerRequestImpl implements TaipingCrawlerRequest {
             taiPingCrawlerPremiumCalculateRequest.getFcProductList().get(0).setFcOrderNo(fcProductListDTO.getFcOrderNo());
             taiPingCrawlerPremiumCalculateRequest.getFcProductList().get(0).setPoaserialNo(fcProductListDTO.getPoaserialNo());
         }
+        if (taiPingCrawlerPremiumCalculateRequest.getPfItemKind0802DtoList() != null && !taiPingCrawlerPremiumCalculateRequest.getPfItemKind0802DtoList().isEmpty()) {
+            taiPingCrawlerPremiumCalculateRequest.getPfItemKind0802DtoList().stream()
+                    .forEach(pfItemKind0802Dto -> {
+                        pfItemKind0802Dto.setDiscount(recalculateResponse.getData().getPfItemKindDto0802List().stream().filter(dto -> dto.getKindCode().equals(pfItemKind0802Dto.getKindCode())).findFirst().map(TaiPingCrawlerPremiumCalculateData.PfItemKindDto0802ListDTO::getDiscount).orElse(100.0).intValue());
+                    });
+        }
 
         // 提交验证 python代码直接用报价入参提交
 //        TaiPingCrawlerSubmitValidateRequest submitValidateRequest = new TaiPingCrawlerSubmitValidateRequest(
@@ -768,9 +773,9 @@ public class TaipingCrawlerRequestImpl implements TaipingCrawlerRequest {
         TaiPingCrawlerOrder taiPingCrawlerOrder = taiPingCrawlerOrderRepository.findByOrdersNo(orderStatusVo.getOrder().getOrdersNo());
         TaiPingCrawlerQueryListRequest taiPingCrawlerQueryListRequest = new TaiPingCrawlerQueryListRequest(taiPingCrawlerOrder.getCompanyOrderNo());
         List<TaiPingCrawlerQueryListData.RecordsDTO> recordsDTO = null;
-        if (parameters.getMethod().equals("简易")) {
+        if (parameters.getMethod().equals("简易") && taiPingCrawlerOrder.getCompanyOrderNo().contains("DNSP")) {
             recordsDTO = taiPingCrawlerRequestComponent.queryListNsp(taiPingCrawlerQueryListRequest, httpHeaders,parameters);
-        } else if (parameters.getMethod().equals("立保通")){
+        } else if (parameters.getMethod().equals("立保通") && taiPingCrawlerOrder.getCompanyOrderNo().contains("DNQT")){
             recordsDTO = taiPingCrawlerRequestComponent.queryListNqt(taiPingCrawlerQueryListRequest, httpHeaders,parameters);
         }