Explorar o código

紫金驾意险的问题

785834757 hai 3 meses
pai
achega
64e88dfccc

+ 15 - 5
src/main/java/com/ydtech/modules/order/entity/api/zijin/response/CalculatePremiumResponse.java

@@ -1,6 +1,7 @@
 package com.ydtech.modules.order.entity.api.zijin.response;
 
 import com.fasterxml.jackson.annotation.JsonProperty;
+import com.ydtech.exception.SystemException;
 import com.ydtech.modules.ins.model.vo.AccidentResponseVo;
 import com.ydtech.modules.order.entity.api.zhongmei.constants.TimeConstants;
 import com.ydtech.modules.order.entity.vo.zj.ZjQuoteAccidentVo;
@@ -121,13 +122,22 @@ public class CalculatePremiumResponse extends BaseResponse implements Serializab
             carPolicySubInfoList.forEach(x -> map.put(x.getInsureGradeNo(), x));
             return accidentalDrivingVo.stream().map(x -> {
                 CarPolicySubInfoListDTO carPolicySubInfoListDTO = map.get(x.getProjectCode());
-                if(x.getProjectCode().equals("PD-013055%%SP000529%%%1")){
-                    carPolicySubInfoListDTO = map.get("PD-013055");
+
+                String key = "";
+                if (x.getProjectCode() != null) {
+                    int index = x.getProjectCode().indexOf("%");
+                    key = index >= 0 ? x.getProjectCode().substring(0, index) : x.getProjectCode();
                 }
-                if(x.getProjectCode().equals("214000733008%%ZKICATM_Driver_Plan_Common%%%0")){
-                    carPolicySubInfoListDTO = map.get("214000733008");
+                carPolicySubInfoListDTO = map.get(key);
+//                if(x.getProjectCode().equals("PD-013055%%SP000529%%%1")){
+//                    carPolicySubInfoListDTO = map.get(key);
+//                }
+//                if(x.getProjectCode().equals("214000733008%%ZKICATM_Driver_Plan_Common%%%0")){
+//                    carPolicySubInfoListDTO = map.get(key);
+//                }
+                if(carPolicySubInfoListDTO == null){
+                    throw new SystemException("驾意险类型转换出错");
                 }
-
                 return toAccidentResponseVo(carPolicySubInfoListDTO.getActualPremium(), x);
             }).collect(Collectors.toList());
         }

+ 33 - 21
src/main/java/com/ydtech/modules/order/service/impl/ChengTaiOrderApiServiceImpl.java

@@ -343,6 +343,8 @@ public class ChengTaiOrderApiServiceImpl implements ChengTaiOrderApiService {
             , BigDecimal carActualValue, ChengTaiConfigureParameters parameters, CarModelQueryResponse.vehicle vehicle, BaseQuoteVo<InsDrivingIntentionInsurance> quoteVo) throws Exception {
         int index = 0;
         PremiumCalculationResponse premiumCalculationResponse = new PremiumCalculationResponse();
+        // 交强,商业转保码
+        String ciQuestion = null,biQuestion = null;
         while(true) {
             if(index >=5){
                 break;
@@ -350,6 +352,35 @@ public class ChengTaiOrderApiServiceImpl implements ChengTaiOrderApiService {
             premiumCalculationResponse = chengTaiRequestApiComponent.premiumCalculation(premiumCalculationRequest);
             index++;
             maxQuoteNum--;
+
+
+            // 如果返回出现问题
+            if (!premiumCalculationResponse.getHead().getResponseCode().equals("0000")){
+                // 是否是校验码有误
+                if(premiumCalculationResponse.getHead().getErrorMessage().contains("校验码有误")){
+                    if(Objects.nonNull(ciQuestion)){
+                        if(Objects.isNull(premiumCalculationResponse.getCompRisk())){
+                            premiumCalculationResponse.setCompRisk(new PremiumCalculationResponse.compRisk());
+                        }
+                        if(Objects.isNull(premiumCalculationResponse.getCompRisk().getBasePart())){
+                            premiumCalculationResponse.getCompRisk().setBasePart(new PremiumCalculationResponse.compRisk.basePart());
+                        }
+                        premiumCalculationResponse.getCompRisk().getBasePart().setQuestion(ciQuestion);
+                    }
+
+                    if(Objects.nonNull(biQuestion)){
+                        if(Objects.isNull(premiumCalculationResponse.getCommRisk())){
+                            premiumCalculationResponse.setCommRisk(new PremiumCalculationResponse.commRisk());
+                        }
+                        if(Objects.isNull(premiumCalculationResponse.getCommRisk().getBasePart())){
+                            premiumCalculationResponse.getCommRisk().setBasePart(new PremiumCalculationResponse.commRisk.basePart());
+                        }
+                        premiumCalculationResponse.getCommRisk().getBasePart().setQuestion(biQuestion);
+                    }
+                    break;
+                }
+            }
+
             if (!premiumCalculationResponse.getHead().getErrorMessage().equals("成功")) {
                 /**
                  * 重复投保
@@ -444,10 +475,10 @@ public class ChengTaiOrderApiServiceImpl implements ChengTaiOrderApiService {
             }else{
 
                 // 转保车处理
-                String ciQuestion = premiumCalculationResponse.getCompRisk() != null
+                ciQuestion = premiumCalculationResponse.getCompRisk() != null
                         ? premiumCalculationResponse.getCompRisk().getBasePart().getQuestion()
                         : null;
-                String biQuestion = premiumCalculationResponse.getCommRisk() != null
+                biQuestion = premiumCalculationResponse.getCommRisk() != null
                         ? premiumCalculationResponse.getCommRisk().getBasePart().getQuestion()
                         : null;
                 // 订单号
@@ -479,26 +510,7 @@ public class ChengTaiOrderApiServiceImpl implements ChengTaiOrderApiService {
                             quoteVo.setRenewalCodeSy(resp.getSyImageCode().replace("0", "O"));
                         }
                         premiumCalculationRequest = new PremiumCalculationRequest(quoteInfoVo, carActualValue, parameters, vehicle, quoteVo, quoteInfoVo.getRiskList(), orderNumber);
-                        premiumCalculationResponse = chengTaiRequestApiComponent.premiumCalculation(premiumCalculationRequest);
-                        if(Objects.nonNull(ciQuestion)){
-                            if(Objects.isNull(premiumCalculationResponse.getCompRisk())){
-                                premiumCalculationResponse.setCompRisk(new PremiumCalculationResponse.compRisk());
-                            }
-                            if(Objects.isNull(premiumCalculationResponse.getCompRisk().getBasePart())){
-                                premiumCalculationResponse.getCompRisk().setBasePart(new PremiumCalculationResponse.compRisk.basePart());
-                            }
-                            premiumCalculationResponse.getCompRisk().getBasePart().setQuestion(ciQuestion);
-                        }
 
-                        if(Objects.nonNull(biQuestion)){
-                            if(Objects.isNull(premiumCalculationResponse.getCommRisk())){
-                                premiumCalculationResponse.setCommRisk(new PremiumCalculationResponse.commRisk());
-                            }
-                            if(Objects.isNull(premiumCalculationResponse.getCommRisk().getBasePart())){
-                                premiumCalculationResponse.getCommRisk().setBasePart(new PremiumCalculationResponse.commRisk.basePart());
-                            }
-                            premiumCalculationResponse.getCommRisk().getBasePart().setQuestion(biQuestion);
-                        }
                     }
                 }else{
                     break;