Просмотр исходного кода

Merge branch 'master' into wrq_dev

wangrq 2 месяцев назад
Родитель
Сommit
7891dc9048

+ 104 - 69
tenant/insurance/quotation-taishan/src/main/java/com/jzg/quotation/taishan/crawler/service/impl/TaiShanCrawlerRequestImpl.java

@@ -226,7 +226,7 @@ public class TaiShanCrawlerRequestImpl implements TaiShanCrawlerRequest {
                 throw new SystemException(errMsg);
             }
         }else{
-            errMsg = exception != null ? exception.getMsg() : taiShanCrawlerQuotationSaveResponse.getMessage();
+            errMsg = exception != null ? exception.getMsg() : (taiShanCrawlerQuotationResponse.getMessage() != null ? taiShanCrawlerQuotationResponse.getMessage() : "报价接口返回异常");
             throw new SystemException(errMsg);
         }
         return TaiShanCrawlerQuoteResultsVoBuild.buildQuoteResultsVo(quoteVo,
@@ -237,61 +237,81 @@ public class TaiShanCrawlerRequestImpl implements TaiShanCrawlerRequest {
 
     private void resultCoverSave(QuoteVo quoteVo, TaiShanCrawlerQuotationRequest taiShanCrawlerQuotationRequest, TaiShanCrawlerQuotationResponse taiShanCrawlerQuotationResponse) {
 
+        if (taiShanCrawlerQuotationRequest == null || taiShanCrawlerQuotationResponse == null || taiShanCrawlerQuotationResponse.getResult() == null) {
+            log.warn("resultCoverSave: 请求或响应信息不完整,跳过字段覆盖");
+            return;
+        }
+        TaiShanCrawlerQuotationResponse.ResultDTO resultDTO = taiShanCrawlerQuotationResponse.getResult();
+
         // ========== 交强险信息处理 ==========
-        TaiShanCrawlerQuotationRequest.CompulsoryInsurance.CarShipTax carShipTax = taiShanCrawlerQuotationRequest.getCompulsoryInsurance().getCarShipTax();
-        TaiShanCrawlerQuotationResponse.ResultDTO.CompulsoryInsuranceDTO.CarShipTaxDTO carShipTaxRes = taiShanCrawlerQuotationResponse.getResult().getCompulsoryInsurance().getCarShipTax();
-        carShipTax.setTotalTax(carShipTaxRes.getTotalTax());
-        carShipTax.setUnitTaxAmt(carShipTaxRes.getUnitTaxAmt());
-        carShipTax.setAnnualTaxDue(carShipTaxRes.getAnnualTaxDue());
-        carShipTax.setSumTax(carShipTaxRes.getSumTax());
-        carShipTax.setAnnualTaxAmt(carShipTaxRes.getAnnualTaxAmt());
-        carShipTax.setTaxActual(carShipTaxRes.getTaxActual());
-        carShipTax.setTaxUnitTypeCode(carShipTaxRes.getTaxUnitTypeCode());
-        carShipTax.setTaxLocationCode(carShipTaxRes.getTaxLocationCode());
-
-        List<TaiShanCrawlerQuotationRequest.CompulsoryInsurance.ItemKind> itemKinds = taiShanCrawlerQuotationRequest.getCompulsoryInsurance().getItemKinds();
-        List<TaiShanCrawlerQuotationResponse.ResultDTO.CompulsoryInsuranceDTO.ItemKindsDTO> itemKindsRes = taiShanCrawlerQuotationResponse.getResult().getCompulsoryInsurance().getItemKinds();
-        Map<String, TaiShanCrawlerQuotationResponse.ResultDTO.CompulsoryInsuranceDTO.ItemKindsDTO> resMap = itemKindsRes.stream()
-                .collect(Collectors.toMap(
-                        TaiShanCrawlerQuotationResponse.ResultDTO.CompulsoryInsuranceDTO.ItemKindsDTO::getKindCode,
-                        Function.identity(),
-                        (o1, o2) -> o1   // 防止 key 冲突
-                ));
-
-        itemKinds.forEach(itemKind ->{
-            TaiShanCrawlerQuotationResponse.ResultDTO.CompulsoryInsuranceDTO.ItemKindsDTO res = resMap.get(itemKind.getKindCode());
-            if (res != null) {
-                itemKind.setBefPremium(res.getBefPremium());
-                itemKind.setBefAnnPrm(res.getBefAnnPrm());
-                itemKind.setBasePrm(res.getBasePrm());
+        if (taiShanCrawlerQuotationRequest.getCompulsoryInsurance() != null && resultDTO.getCompulsoryInsurance() != null) {
+            TaiShanCrawlerQuotationRequest.CompulsoryInsurance ciReq = taiShanCrawlerQuotationRequest.getCompulsoryInsurance();
+            TaiShanCrawlerQuotationResponse.ResultDTO.CompulsoryInsuranceDTO ciRes = resultDTO.getCompulsoryInsurance();
+
+            if (ciReq.getCarShipTax() != null && ciRes.getCarShipTax() != null) {
+                TaiShanCrawlerQuotationRequest.CompulsoryInsurance.CarShipTax carShipTax = ciReq.getCarShipTax();
+                TaiShanCrawlerQuotationResponse.ResultDTO.CompulsoryInsuranceDTO.CarShipTaxDTO carShipTaxRes = ciRes.getCarShipTax();
+                carShipTax.setTotalTax(carShipTaxRes.getTotalTax());
+                carShipTax.setUnitTaxAmt(carShipTaxRes.getUnitTaxAmt());
+                carShipTax.setAnnualTaxDue(carShipTaxRes.getAnnualTaxDue());
+                carShipTax.setSumTax(carShipTaxRes.getSumTax());
+                carShipTax.setAnnualTaxAmt(carShipTaxRes.getAnnualTaxAmt());
+                carShipTax.setTaxActual(carShipTaxRes.getTaxActual());
+                carShipTax.setTaxUnitTypeCode(carShipTaxRes.getTaxUnitTypeCode());
+                carShipTax.setTaxLocationCode(carShipTaxRes.getTaxLocationCode());
             }
-        });
 
-        TaiShanCrawlerQuotationRequest.CompulsoryInsurance.ProductInfo productInfo = taiShanCrawlerQuotationRequest.getCompulsoryInsurance().getProductInfo();
-        TaiShanCrawlerQuotationResponse.ResultDTO.CompulsoryInsuranceDTO.ProductInfoDTO productInfoRes = taiShanCrawlerQuotationResponse.getResult().getCompulsoryInsurance().getProductInfo();
-        productInfo.setPremium(productInfoRes.getPremium());
-        productInfo.setApId(productInfoRes.getApId());
-        productInfo.setEffective(productInfoRes.getEffective());
-        productInfo.setRiskAmount(productInfoRes.getRiskAmount());
+            if (ciReq.getItemKinds() != null && ciRes.getItemKinds() != null) {
+                List<TaiShanCrawlerQuotationRequest.CompulsoryInsurance.ItemKind> itemKinds = ciReq.getItemKinds();
+                List<TaiShanCrawlerQuotationResponse.ResultDTO.CompulsoryInsuranceDTO.ItemKindsDTO> itemKindsRes = ciRes.getItemKinds();
+                Map<String, TaiShanCrawlerQuotationResponse.ResultDTO.CompulsoryInsuranceDTO.ItemKindsDTO> resMap = itemKindsRes.stream()
+                        .filter(r -> r.getKindCode() != null)
+                        .collect(Collectors.toMap(
+                                TaiShanCrawlerQuotationResponse.ResultDTO.CompulsoryInsuranceDTO.ItemKindsDTO::getKindCode,
+                                Function.identity(),
+                                (o1, o2) -> { log.warn("交强险险种存在重复 kindCode: {},保留第一条", o1.getKindCode()); return o1; }
+                        ));
+
+                itemKinds.forEach(itemKind ->{
+                    if (itemKind.getKindCode() == null) return;
+                    TaiShanCrawlerQuotationResponse.ResultDTO.CompulsoryInsuranceDTO.ItemKindsDTO res = resMap.get(itemKind.getKindCode());
+                    if (res != null) {
+                        itemKind.setBefPremium(res.getBefPremium());
+                        itemKind.setBefAnnPrm(res.getBefAnnPrm());
+                        itemKind.setBasePrm(res.getBasePrm());
+                    }
+                });
+            }
+
+            if (ciReq.getProductInfo() != null && ciRes.getProductInfo() != null) {
+                TaiShanCrawlerQuotationRequest.CompulsoryInsurance.ProductInfo productInfo = ciReq.getProductInfo();
+                TaiShanCrawlerQuotationResponse.ResultDTO.CompulsoryInsuranceDTO.ProductInfoDTO productInfoRes = ciRes.getProductInfo();
+                productInfo.setPremium(productInfoRes.getPremium());
+                productInfo.setApId(productInfoRes.getApId());
+                productInfo.setEffective(productInfoRes.getEffective());
+                productInfo.setRiskAmount(productInfoRes.getRiskAmount());
+            }
+        }
 
         // ========== 商业险信息处理 ==========
         TaiShanCrawlerQuotationRequest.BusinessInsurance businessInsurance = taiShanCrawlerQuotationRequest.getBusinessInsurance();
-        TaiShanCrawlerQuotationResponse.ResultDTO.BusinessInsuranceDTO businessInsuranceRes = taiShanCrawlerQuotationResponse.getResult().getBusinessInsurance();
-        
+        TaiShanCrawlerQuotationResponse.ResultDTO.BusinessInsuranceDTO businessInsuranceRes = resultDTO.getBusinessInsurance();
+
         if (businessInsurance != null && businessInsuranceRes != null) {
-            // 商业险险种信息覆盖
             List<TaiShanCrawlerQuotationRequest.BusinessInsurance.ItemKind> biItemKinds = businessInsurance.getItemKinds();
             List<TaiShanCrawlerQuotationResponse.ResultDTO.BusinessInsuranceDTO.ItemKind> biItemKindsRes = businessInsuranceRes.getItemKinds();
-            
+
             if (biItemKinds != null && biItemKindsRes != null) {
                 Map<String, TaiShanCrawlerQuotationResponse.ResultDTO.BusinessInsuranceDTO.ItemKind> biResMap = biItemKindsRes.stream()
+                        .filter(r -> r.getKindCode() != null)
                         .collect(Collectors.toMap(
                                 TaiShanCrawlerQuotationResponse.ResultDTO.BusinessInsuranceDTO.ItemKind::getKindCode,
                                 Function.identity(),
-                                (o1, o2) -> o1
+                                (o1, o2) -> { log.warn("商业险险种存在重复 kindCode: {},保留第一条", o1.getKindCode()); return o1; }
                         ));
-                
+
                 biItemKinds.forEach(itemKind -> {
+                    if (itemKind.getKindCode() == null) return;
                     TaiShanCrawlerQuotationResponse.ResultDTO.BusinessInsuranceDTO.ItemKind res = biResMap.get(itemKind.getKindCode());
                     if (res != null) {
                         itemKind.setPremium(res.getPremium());
@@ -317,11 +337,11 @@ public class TaiShanCrawlerRequestImpl implements TaiShanCrawlerRequest {
                     }
                 });
             }
-            
+
             // 商业险产品信息覆盖
             TaiShanCrawlerQuotationRequest.BusinessInsurance.ProductInfo biProductInfo = businessInsurance.getProductInfo();
             TaiShanCrawlerQuotationResponse.ResultDTO.BusinessInsuranceDTO.ProductInfoDTO biProductInfoRes = businessInsuranceRes.getProductInfo();
-            
+
             if (biProductInfo != null && biProductInfoRes != null) {
                 biProductInfo.setPremium(biProductInfoRes.getPremium());
                 biProductInfo.setApId(biProductInfoRes.getApId());
@@ -331,34 +351,39 @@ public class TaiShanCrawlerRequestImpl implements TaiShanCrawlerRequest {
         }
 
         // ========== 方案信息处理 ==========
-        TaiShanCrawlerQuotationRequest.ProposalInfo proposalInfo = taiShanCrawlerQuotationRequest.getProposalInfo();
-        TaiShanCrawlerQuotationResponse.ResultDTO.ProposalInfoDTO proposalInfoRes = taiShanCrawlerQuotationResponse.getResult().getProposalInfo();
-        proposalInfo.setTotalPremium(proposalInfoRes.getTotalPremium());
+        if (taiShanCrawlerQuotationRequest.getProposalInfo() != null && resultDTO.getProposalInfo() != null) {
+            TaiShanCrawlerQuotationRequest.ProposalInfo proposalInfo = taiShanCrawlerQuotationRequest.getProposalInfo();
+            TaiShanCrawlerQuotationResponse.ResultDTO.ProposalInfoDTO proposalInfoRes = resultDTO.getProposalInfo();
+            proposalInfo.setTotalPremium(proposalInfoRes.getTotalPremium());
+        }
 
         // ========== 车辆信息处理 ==========
-        TaiShanCrawlerQuotationRequest.VehicleInfo vehicleInfo = taiShanCrawlerQuotationRequest.getVehicleInfo();
-        TaiShanCrawlerQuotationResponse.ResultDTO.VehicleInfoDTO vehicleInfoRes = taiShanCrawlerQuotationResponse.getResult().getVehicleInfo();
-        vehicleInfo.setJqQryCde(vehicleInfoRes.getJqQryCde());
-        vehicleInfo.setSyQryCde(vehicleInfoRes.getSyQryCde());
-        vehicleInfo.setJqCResvTxt20(vehicleInfoRes.getJqCResvTxt20());
-        vehicleInfo.setSyCResvTxt20(vehicleInfoRes.getSyCResvTxt20());
+        if (taiShanCrawlerQuotationRequest.getVehicleInfo() != null && resultDTO.getVehicleInfo() != null) {
+            TaiShanCrawlerQuotationRequest.VehicleInfo vehicleInfo = taiShanCrawlerQuotationRequest.getVehicleInfo();
+            TaiShanCrawlerQuotationResponse.ResultDTO.VehicleInfoDTO vehicleInfoRes = resultDTO.getVehicleInfo();
+            vehicleInfo.setJqQryCde(vehicleInfoRes.getJqQryCde());
+            vehicleInfo.setSyQryCde(vehicleInfoRes.getSyQryCde());
+            vehicleInfo.setJqCResvTxt20(vehicleInfoRes.getJqCResvTxt20());
+            vehicleInfo.setSyCResvTxt20(vehicleInfoRes.getSyCResvTxt20());
+        }
 
         // ========== 系数信息处理 ==========
         RiskInfoVo ciRiskInfoVo = quoteVo.getCiRiskInfoVo();
         RiskInfoVo biRiskInfoVo = quoteVo.getBiRiskInfoVo();
-        TaiShanCrawlerQuotationRequest.CoefficientInfo coefficientInfo = taiShanCrawlerQuotationRequest.getCoefficientInfo();
-        TaiShanCrawlerQuotationResponse.ResultDTO.CoefficientInfoDTO coefficientInfoRes = taiShanCrawlerQuotationResponse.getResult().getCoefficientInfo();
-        
-        if(Objects.nonNull(ciRiskInfoVo) && coefficientInfoRes != null){
-            coefficientInfo.setJqResvNum3(coefficientInfoRes.getJqResvNum3());
-            coefficientInfo.setJqResvNum4(coefficientInfoRes.getJqResvNum4());
-        }
-        if(Objects.nonNull(biRiskInfoVo) && coefficientInfoRes != null){
-//            coefficientInfo.setSyResvNum3(coefficientInfoRes.getSyResvNum3());
-//            coefficientInfo.setSyResvNum4(coefficientInfoRes.getSyResvNum4());
+        if (taiShanCrawlerQuotationRequest.getCoefficientInfo() != null && resultDTO.getCoefficientInfo() != null) {
+            TaiShanCrawlerQuotationRequest.CoefficientInfo coefficientInfo = taiShanCrawlerQuotationRequest.getCoefficientInfo();
+            TaiShanCrawlerQuotationResponse.ResultDTO.CoefficientInfoDTO coefficientInfoRes = resultDTO.getCoefficientInfo();
+
+            if (Objects.nonNull(ciRiskInfoVo)) {
+                coefficientInfo.setJqResvNum3(coefficientInfoRes.getJqResvNum3());
+                coefficientInfo.setJqResvNum4(coefficientInfoRes.getJqResvNum4());
+            }
+            if (Objects.nonNull(biRiskInfoVo)) {
+//                coefficientInfo.setSyResvNum3(coefficientInfoRes.getSyResvNum3());
+//                coefficientInfo.setSyResvNum4(coefficientInfoRes.getSyResvNum4());
+            }
         }
     }
-
     /**
      * 核保
      *
@@ -375,7 +400,9 @@ public class TaiShanCrawlerRequestImpl implements TaiShanCrawlerRequest {
 
         // 获取订单信息
         TaiShanCrawlerOrder taiShanCrawlerOrder = taiShanCrawlerOrderService.getByOrdersNo(underwritingVo.getOrder().getOrdersNo());
-
+        if (taiShanCrawlerOrder == null) {
+            throw new SystemException("未找到订单信息: " + underwritingVo.getOrder().getOrdersNo());
+        }
         // 核保
         TaiShanCrawlerUnderwritingRequest taiShanCrawlerUnderwritingRequest = new TaiShanCrawlerUnderwritingRequest(taiShanCrawlerOrder.getOrderNo());
         TaiShanCrawlerUnderwritingResponse taiShanCrawlerUnderwritingResponse = taiShanCrawlerRequestComponent.underwriting(taiShanCrawlerUnderwritingRequest, headers);
@@ -435,6 +462,9 @@ public class TaiShanCrawlerRequestImpl implements TaiShanCrawlerRequest {
             TaiShanCrawlerConfigureParameters parameters = ConfigureParametersConversion.conversionEntity(TaiShanCrawlerConfigureParameters.class, attributionInformationVo.getConfigInfo());
             HttpHeaders headers = taiShanCrawlerQuoteProcessService.getHeaders(attributionInformationVo.getUsername(), parameters.getComCode());
             TaiShanCrawlerOrder taiShanCrawlerOrder = taiShanCrawlerOrderService.getByOrdersNo(insuranceUploadImageVo.getOrder().getOrdersNo());
+            if (taiShanCrawlerOrder == null) {
+                throw new SystemException("未找到订单信息: " + insuranceUploadImageVo.getOrder().getOrdersNo());
+            }
             // 上传影像文件请求参数
             TaiShanCrawlerImageUploadRequest taiShanCrawlerImageUploadRequest = new TaiShanCrawlerImageUploadRequest();
             taiShanCrawlerImageUploadRequest.setBiProposalNo(taiShanCrawlerOrder.getSyApplyNo());
@@ -513,10 +543,15 @@ public class TaiShanCrawlerRequestImpl implements TaiShanCrawlerRequest {
         TaiShanCrawlerConfigureParameters parameters = ConfigureParametersConversion.conversionEntity(TaiShanCrawlerConfigureParameters.class, attributionInformationVo.getConfigInfo());
         HttpHeaders headers = taiShanCrawlerQuoteProcessService.getHeaders(attributionInformationVo.getUsername(), parameters.getComCode());
         log.info("headers:{}", JSON.toJSONString(headers));
-        TaiShanCrawlerOrder ziJinCrawlerOrder = taiShanCrawlerOrderService.getByOrdersNo(paymentLinkVo.getOrder().getOrdersNo());
-
+        TaiShanCrawlerOrder taiShanCrawlerOrder = taiShanCrawlerOrderService.getByOrdersNo(paymentLinkVo.getOrder().getOrdersNo());
+        if (taiShanCrawlerOrder == null) {
+            PaymentLinkResultsVo emptyResult = new PaymentLinkResultsVo();
+            emptyResult.setPayLinkStatus(false);
+            emptyResult.setErrorMsg("未找到订单信息: " + paymentLinkVo.getOrder().getOrdersNo());
+            return emptyResult;
+        }
         // 获取支付信息
-        TaiShanCrawlerPaymentInfoRequest paymentInfoRequest = new TaiShanCrawlerPaymentInfoRequest(ziJinCrawlerOrder.getOrderNo());
+        TaiShanCrawlerPaymentInfoRequest paymentInfoRequest = new TaiShanCrawlerPaymentInfoRequest(taiShanCrawlerOrder.getOrderNo());
         TaiShanCrawlerPaymentInfoResponse infoResponse = taiShanCrawlerRequestComponent.getPayInfo(paymentInfoRequest, headers);
 
         List<TaiShanCrawlerPaymentInfoResponse.ResultDTO.RiskDTO> risk = infoResponse.getResult().getRisk();
@@ -560,7 +595,7 @@ public class TaiShanCrawlerRequestImpl implements TaiShanCrawlerRequest {
                 log.info("未生成交易单号,先获取 batchNo");
                 // 未生成交易单号,先获取 batchNo
                 TaiShanCrawlerPaymentCardRequest cardRequest = new TaiShanCrawlerPaymentCardRequest(
-                        ziJinCrawlerOrder.getOrderNo(), jqAppNo, jquniqueNo, syAppNo, syUniqueNo);
+                        taiShanCrawlerOrder.getOrderNo(), jqAppNo, jquniqueNo, syAppNo, syUniqueNo);
 
                 TaiShanCrawlerPaymentCardResponse cardResponse = taiShanCrawlerRequestComponent.getPaymentCard(cardRequest, headers);
                 String batchNo = cardResponse.getResult().getBatchNo();
@@ -579,7 +614,7 @@ public class TaiShanCrawlerRequestImpl implements TaiShanCrawlerRequest {
                 log.info("未生成交易单号");
                 // 未生成交易单号
                 TaiShanCrawlerPaymentCardRequest cardRequest = new TaiShanCrawlerPaymentCardRequest(
-                        ziJinCrawlerOrder.getOrderNo(), jqAppNo, jquniqueNo, "", "");
+                        taiShanCrawlerOrder.getOrderNo(), jqAppNo, jquniqueNo, "", "");
 
                 TaiShanCrawlerPaymentCardResponse cardResponse = taiShanCrawlerRequestComponent.getPaymentCard(cardRequest, headers);
                 jqBatchNo = cardResponse.getResult().getBatchNo();
@@ -596,7 +631,7 @@ public class TaiShanCrawlerRequestImpl implements TaiShanCrawlerRequest {
                 log.info("未生成交易单号");
                 // 未生成交易单号
                 TaiShanCrawlerPaymentCardRequest cardRequest = new TaiShanCrawlerPaymentCardRequest(
-                        ziJinCrawlerOrder.getOrderNo(), "", "", syAppNo, syUniqueNo);
+                        taiShanCrawlerOrder.getOrderNo(), "", "", syAppNo, syUniqueNo);
 
                 TaiShanCrawlerPaymentCardResponse cardResponse = taiShanCrawlerRequestComponent.getPaymentCard(cardRequest, headers);
                 syBatchNo = cardResponse.getResult().getBatchNo();