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

重复投保时将终保日期改为投保日期再进行一次报价
企业车处理

Qchen 1 год назад
Родитель
Сommit
c1c4630d26

+ 9 - 4
src/main/java/com/ydtech/modules/order/entity/api/yangguang/request/YangGuangAccuracyCalculateRequest.java

@@ -491,13 +491,18 @@ public class YangGuangAccuracyCalculateRequest extends YangGuangBaseRequest{
             this.IdentifyNumber = customerInfoVo.getIdentifyNumber();
             this.IdentifyNumber = customerInfoVo.getIdentifyNumber();
             if (carInfoVo.getProperty() != null && carInfoVo.getProperty().equals("1")) {
             if (carInfoVo.getProperty() != null && carInfoVo.getProperty().equals("1")) {
                 this.InsuredType = "0";
                 this.InsuredType = "0";
+                this.IdentifyType = "01";
+                this.CarInsuredRelation = "1";
             } else if (carInfoVo.getProperty() != null && carInfoVo.getProperty().equals("2")) {
             } else if (carInfoVo.getProperty() != null && carInfoVo.getProperty().equals("2")) {
-                this.InsuredType = "1";
-            } else if (carInfoVo.getProperty() != null && carInfoVo.getProperty().equals("3")) {
+                this.IdentifyType = "09";
                 this.InsuredType = "2";
                 this.InsuredType = "2";
+                this.CarInsuredRelation = "1";
+            } else if (carInfoVo.getProperty() != null && carInfoVo.getProperty().equals("3")) {
+                this.InsuredType = "1";
+                this.IdentifyType = "99";
+                this.CarInsuredRelation = "3";
             }
             }
-            this.IdentifyType = "01";
-            this.CarInsuredRelation = "1";
+
         }
         }
     }
     }
 
 

+ 75 - 0
src/main/java/com/ydtech/modules/order/service/impl/YangGuangOrderApiServiceImpl.java

@@ -50,10 +50,13 @@ import org.springframework.stereotype.Service;
 
 
 import java.math.BigDecimal;
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
 import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Collections;
 import java.util.List;
 import java.util.List;
 import java.util.Objects;
 import java.util.Objects;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 import java.util.stream.Collectors;
 import java.util.stream.Collectors;
 
 
 @Service
 @Service
@@ -130,6 +133,78 @@ public class YangGuangOrderApiServiceImpl implements YangGuangOrderApiService {
         YangGuangAccuracyCalculateRequest yangGuangAccuracyCalculateRequest = new YangGuangAccuracyCalculateRequest(quoteInfoVo, purchasePrice, carModelList1, riskList.get(0),startDate,ygConfigureParameters,quoteVo);
         YangGuangAccuracyCalculateRequest yangGuangAccuracyCalculateRequest = new YangGuangAccuracyCalculateRequest(quoteInfoVo, purchasePrice, carModelList1, riskList.get(0),startDate,ygConfigureParameters,quoteVo);
         yangGuangAccuracyCalculateRequest.setInfotransNo(yangGuangQueryVehicleModelResponse.getInfotransNo());
         yangGuangAccuracyCalculateRequest.setInfotransNo(yangGuangQueryVehicleModelResponse.getInfotransNo());
         YangGuangAccuracyCalculateResponse yangGuangAccuracyCalculateResponse = yangGuangRequestApiComponents.accuracyCalculaye(yangGuangAccuracyCalculateRequest);
         YangGuangAccuracyCalculateResponse yangGuangAccuracyCalculateResponse = yangGuangRequestApiComponents.accuracyCalculaye(yangGuangAccuracyCalculateRequest);
+        // 如果发生重复投保 将返回的终保日期带入起保日期重新报价
+        if (yangGuangAccuracyCalculateResponse.getErrorMessage().contains("重复投保")) {
+            // 定义正则表达式来匹配终保日期的格式
+            Pattern pattern = Pattern.compile("终保日期 (\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2})");
+            Matcher matcher = pattern.matcher(yangGuangAccuracyCalculateResponse.getErrorMessage());
+            if (matcher.find()) {
+                // 获取响应中重复投保的终保日期
+                String endDate = matcher.group(1);
+                DateTimeFormatter inputFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
+                DateTimeFormatter outputFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+
+                LocalDateTime dateTime = LocalDateTime.parse(endDate, inputFormatter);
+                String newDateStr = dateTime.format(outputFormatter);
+                YangGuangAccuracyCalculateRequest yangGuangAccuracyCalculateRequestRe = new YangGuangAccuracyCalculateRequest(quoteInfoVo, purchasePrice, carModelList1, riskList.get(0),newDateStr,ygConfigureParameters,quoteVo);
+                yangGuangAccuracyCalculateRequestRe.setInfotransNo(yangGuangQueryVehicleModelResponse.getInfotransNo());
+                YangGuangAccuracyCalculateResponse yangGuangAccuracyCalculateResponseRe = yangGuangRequestApiComponents.accuracyCalculaye(yangGuangAccuracyCalculateRequestRe);
+                if (insOrders.getProductid().equals("034001") || insOrders.getProductid().equals("0330034001") || insOrders.getProductid().equals("0330034002")) {
+                    if (yangGuangAccuracyCalculateResponseRe.getErrorCode().equals("0")) {
+                        YangGuangAccuracyCalculateResponse.itemcar itemcar = yangGuangAccuracyCalculateResponseRe.getItemcar();
+                        String actualValue = itemcar.getActualValue();
+                        YangGuangAccuracyCalculateRequest yangGuangAccuracyCalculateRequest1 = new YangGuangAccuracyCalculateRequest(quoteInfoVo, actualValue, carModelList1, riskList.get(0),newDateStr,ygConfigureParameters,quoteVo);
+                        yangGuangAccuracyCalculateRequest1.setInfotransNo(yangGuangQueryVehicleModelResponse.getInfotransNo());
+                        YangGuangAccuracyCalculateResponse yangGuangAccuracyCalculateResponse1 = yangGuangRequestApiComponents.accuracyCalculaye(yangGuangAccuracyCalculateRequest1);
+                        boolean isEnergy = carInfo.isNewEnergy();
+
+                        if (!yangGuangAccuracyCalculateResponse1.getErrorCode().equals("0")) {
+                        InsOrders order = insOrdersService.getById(quoteInfoVo.getOrderNo());
+                        InsOrderStatusEnum insOrderStatusEnum = InsOrderStatusEnum.QUOTE_FAILED;
+                            if (yangGuangAccuracyCalculateResponse1.getErrorMessage().contains("重复投保")) {
+                            insOrderStatusEnum = InsOrderStatusEnum.REPEAT_INSURE;
+                            }
+                        insOrdersService.responseFailedOrder(quoteVo,ptlAgreementAttribution, order, yangGuangAccuracyCalculateResponse1.getErrorMessage(),insOrderStatusEnum);
+                        throw new SystemException(yangGuangAccuracyCalculateResponse1.getErrorMessage());
+                        }
+                        // 处理数据
+                        QuoteRespVo quoteRespVo = getQuoteRespVo(yangGuangAccuracyCalculateResponse1, quoteInfoVo, quoteVo.getAccidentalDrivingVo(), isEnergy);
+
+                        // 设置核心报价车型
+                        quoteRespVo.setCoreModels(carModelList1.toCoreModelsVo());
+                        return responseOrder(yangGuangAccuracyCalculateResponse1, quoteRespVo, ptlAgreementAttribution, quoteInfoVo.getOrderNo(),
+                                quoteVo.getAccidentalDrivingVo());
+                    } else {
+                        InsOrders order = insOrdersService.getById(quoteInfoVo.getOrderNo());
+                        InsOrderStatusEnum insOrderStatusEnum = InsOrderStatusEnum.QUOTE_FAILED;
+                        if (yangGuangAccuracyCalculateResponse.getErrorMessage().contains("重复投保")) {
+                            insOrderStatusEnum = InsOrderStatusEnum.REPEAT_INSURE;
+                        }
+                        insOrdersService.responseFailedOrder(quoteVo,ptlAgreementAttribution, order, yangGuangAccuracyCalculateResponse.getErrorMessage(),insOrderStatusEnum);
+                        throw new SystemException(yangGuangAccuracyCalculateResponse.getErrorMessage());
+                    }
+                } else {
+                    boolean isEnergy = carInfo.isNewEnergy();
+                    if (!yangGuangAccuracyCalculateResponse.getErrorCode().equals("0")) {
+                        QuoteRespVo resp  = new QuoteRespVo();
+                        InsOrders order = insOrdersService.getById(quoteInfoVo.getOrderNo());
+                        InsOrderStatusEnum insOrderStatusEnum = InsOrderStatusEnum.QUOTE_FAILED;
+                        if (yangGuangAccuracyCalculateResponse.getErrorMessage().contains("重复投保")) {
+                        insOrderStatusEnum = InsOrderStatusEnum.REPEAT_INSURE;
+                        }
+                        insOrdersService.responseFailedOrder(quoteVo,ptlAgreementAttribution, order, yangGuangAccuracyCalculateResponse.getErrorMessage(),insOrderStatusEnum);
+                        throw new SystemException(yangGuangAccuracyCalculateResponse.getErrorMessage());
+                    }
+                    // 处理数据
+                    QuoteRespVo quoteRespVo = getQuoteRespVo(yangGuangAccuracyCalculateResponse, quoteInfoVo, quoteVo.getAccidentalDrivingVo(), isEnergy);
+
+                    // 设置核心报价车型
+                    quoteRespVo.setCoreModels(carModelList1.toCoreModelsVo());
+                    return responseOrder(yangGuangAccuracyCalculateResponse, quoteRespVo, ptlAgreementAttribution, quoteInfoVo.getOrderNo(),
+                            quoteVo.getAccidentalDrivingVo());
+                }
+            }
+        }
         if (insOrders.getProductid().equals("034001") || insOrders.getProductid().equals("0330034001") || insOrders.getProductid().equals("0330034002")) {
         if (insOrders.getProductid().equals("034001") || insOrders.getProductid().equals("0330034001") || insOrders.getProductid().equals("0330034002")) {
             if (yangGuangAccuracyCalculateResponse.getErrorCode().equals("0")) {
             if (yangGuangAccuracyCalculateResponse.getErrorCode().equals("0")) {
                 YangGuangAccuracyCalculateResponse.itemcar itemcar = yangGuangAccuracyCalculateResponse.getItemcar();
                 YangGuangAccuracyCalculateResponse.itemcar itemcar = yangGuangAccuracyCalculateResponse.getItemcar();