Răsfoiți Sursa

阳光处理企业车修改

Qchen 1 an în urmă
părinte
comite
6b9a8ca953

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

@@ -397,19 +397,19 @@ public class YangGuangAccuracyCalculateRequest extends YangGuangBaseRequest{
             this.Name = policyHolderInfo.getName();
             this.Mobile = policyHolderInfo.getMobile();
             this.PostAddress = policyHolderInfo.getAddr();
-            int sex = IdcardUtil.getGenderByIdCard(policyHolderInfo.getIdentifyNumber());
-            this.Gender = sex == 1 ? "1" : "2";
             this.IdentifyUseFullifeStart = policyHolderInfo.getIdentifyValidDate();
             this.IdentifyUseFullife = policyHolderInfo.getIdentifyValidEndDate();
             if (policyHolderInfo.getProperty() != null && policyHolderInfo.getProperty().equals("1")) {
                 this.InsuredType = "1";
                 this.IdentifyType = "01";
                 this.IdentifyNumber = policyHolderInfo.getIdentifyNumber();
-            } else if (policyHolderInfo.getProperty() != null && policyHolderInfo.getProperty().equals("2")) {
+                int sex = IdcardUtil.getGenderByIdCard(policyHolderInfo.getIdentifyNumber());
+                this.Gender = sex == 1 ? "1" : "2";
+            } else if (policyHolderInfo.getProperty() != null && policyHolderInfo.getProperty().equals("0")) {
                 this.IdentifyType = "09";
                 this.InsuredType = "2";
                 this.IdentifyNumber = policyHolderInfo.getOrganizationCode();
-            } else if (policyHolderInfo.getProperty() != null && policyHolderInfo.getProperty().equals("3")) {
+            } else if (policyHolderInfo.getProperty() != null && policyHolderInfo.getProperty().equals("2")) {
                 this.InsuredType = "2";
                 this.IdentifyType = "99";
                 this.IdentifyNumber = policyHolderInfo.getOrganizationCode();
@@ -503,12 +503,12 @@ public class YangGuangAccuracyCalculateRequest extends YangGuangBaseRequest{
                 this.IdentifyType = "01";
                 this.CarInsuredRelation = "1";
                 this.IdentifyNumber = customerInfoVo.getIdentifyNumber();
-            } else if (customerInfoVo.getProperty() != null && customerInfoVo.getProperty().equals("2")) {
+            } else if (customerInfoVo.getProperty() != null && customerInfoVo.getProperty().equals("0")) {
                 this.IdentifyType = "09";
                 this.InsuredType = "2";
                 this.CarInsuredRelation = "1";
                 this.IdentifyNumber = customerInfoVo.getOrganizationCode();
-            } else if (customerInfoVo.getProperty() != null && customerInfoVo.getProperty().equals("3")) {
+            } else if (customerInfoVo.getProperty() != null && customerInfoVo.getProperty().equals("2")) {
                 this.InsuredType = "1";
                 this.IdentifyType = "99";
                 this.CarInsuredRelation = "3";

+ 70 - 61
src/main/java/com/ydtech/modules/order/service/impl/YangGuangOrderApiServiceImpl.java

@@ -41,10 +41,8 @@ import com.ydtech.modules.protocol.service.PtlAgreementAttributionService;
 import com.ydtech.modules.protocol.utils.AssertionUtils;
 import com.ydtech.utils.CalculateUtils;
 import com.ydtech.utils.StringUtils;
-import com.ydtech.utils.baidu.FileUtil;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
-import org.apache.bcel.generic.LSTORE;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
@@ -134,77 +132,71 @@ public class YangGuangOrderApiServiceImpl implements YangGuangOrderApiService {
         yangGuangAccuracyCalculateRequest.setInfotransNo(yangGuangQueryVehicleModelResponse.getInfotransNo());
         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 {
+        String endDate = extractEndDate(yangGuangAccuracyCalculateResponse);
+        if (endDate != null) {
+            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 (!yangGuangAccuracyCalculateResponse.getErrorCode().equals("0")) {
-                        QuoteRespVo resp  = new QuoteRespVo();
-                        InsOrders order = insOrdersService.getById(quoteInfoVo.getOrderNo());
-                        InsOrderStatusEnum insOrderStatusEnum = InsOrderStatusEnum.QUOTE_FAILED;
-                        if (yangGuangAccuracyCalculateResponse.getErrorMessage().contains("重复投保")) {
+
+                    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, yangGuangAccuracyCalculateResponse.getErrorMessage(),insOrderStatusEnum);
-                        throw new SystemException(yangGuangAccuracyCalculateResponse.getErrorMessage());
+                    insOrdersService.responseFailedOrder(quoteVo,ptlAgreementAttribution, order, yangGuangAccuracyCalculateResponse1.getErrorMessage(),insOrderStatusEnum);
+                    throw new SystemException(yangGuangAccuracyCalculateResponse1.getErrorMessage());
                     }
                     // 处理数据
-                    QuoteRespVo quoteRespVo = getQuoteRespVo(yangGuangAccuracyCalculateResponse, quoteInfoVo, quoteVo.getAccidentalDrivingVo(), isEnergy);
+                    QuoteRespVo quoteRespVo = getQuoteRespVo(yangGuangAccuracyCalculateResponse1, quoteInfoVo, quoteVo.getAccidentalDrivingVo(), isEnergy);
 
                     // 设置核心报价车型
                     quoteRespVo.setCoreModels(carModelList1.toCoreModelsVo());
-                    return responseOrder(yangGuangAccuracyCalculateResponse, quoteRespVo, ptlAgreementAttribution, quoteInfoVo.getOrderNo(),
+                    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 (!yangGuangAccuracyCalculateResponseRe.getErrorCode().equals("0")) {
+                    InsOrders order = insOrdersService.getById(quoteInfoVo.getOrderNo());
+                    InsOrderStatusEnum insOrderStatusEnum = InsOrderStatusEnum.QUOTE_FAILED;
+                    if (yangGuangAccuracyCalculateResponseRe.getErrorMessage().contains("重复投保")) {
+                    insOrderStatusEnum = InsOrderStatusEnum.REPEAT_INSURE;
+                    }
+                    insOrdersService.responseFailedOrder(quoteVo,ptlAgreementAttribution, order, yangGuangAccuracyCalculateResponseRe.getErrorMessage(),insOrderStatusEnum);
+                    throw new SystemException(yangGuangAccuracyCalculateResponseRe.getErrorMessage());
+                }
+                // 处理数据
+                QuoteRespVo quoteRespVo = getQuoteRespVo(yangGuangAccuracyCalculateResponseRe, quoteInfoVo, quoteVo.getAccidentalDrivingVo(), isEnergy);
+
+                // 设置核心报价车型
+                quoteRespVo.setCoreModels(carModelList1.toCoreModelsVo());
+                return responseOrder(yangGuangAccuracyCalculateResponseRe, quoteRespVo, ptlAgreementAttribution, quoteInfoVo.getOrderNo(),
+                        quoteVo.getAccidentalDrivingVo());
             }
         }
+        // 单商 交三 交商 需要获取车辆actualValue 进行二次报价
         if (insOrders.getProductid().equals("034001") || insOrders.getProductid().equals("0330034001") || insOrders.getProductid().equals("0330034002")) {
             if (yangGuangAccuracyCalculateResponse.getErrorCode().equals("0")) {
                 YangGuangAccuracyCalculateResponse.itemcar itemcar = yangGuangAccuracyCalculateResponse.getItemcar();
@@ -839,4 +831,21 @@ public class YangGuangOrderApiServiceImpl implements YangGuangOrderApiService {
         quoteRespVo.setCompanyId(insAreaCompany.getId());
         return HttpResult.ok("报价成功", quoteRespVo);
     }
+
+    // 提取从响应中获取终保日期的逻辑为方法
+    private String extractEndDate(YangGuangAccuracyCalculateResponse response) {
+        String targetText = response.getErrorMessage();
+        if (!targetText.contains("重复投保")) {
+            targetText = response.getRemarkCi();
+            if (!targetText.contains("重复投保")) {
+                targetText = response.getRemarkBi();
+            }
+        }
+        Pattern pattern = Pattern.compile("终保日期 (\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2})");
+        Matcher matcher = pattern.matcher(targetText);
+        if (matcher.find()) {
+            return matcher.group(1);
+        }
+        return null;
+    }
 }