Jelajahi Sumber

大家重复投保、非车险添加

Qchen 8 bulan lalu
induk
melakukan
89f2804972

+ 2 - 0
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/build/DaJiaCrawlerQuoteResultsVoBuild.java

@@ -56,6 +56,8 @@ public final class DaJiaCrawlerQuoteResultsVoBuild {
         List<ExpenseFactor> expenseFactors = buildExpenseFactor();
         List<ExpenseFactor> expenseFactors = buildExpenseFactor();
         quoteResultsVo.setExpenseFactors(expenseFactors);
         quoteResultsVo.setExpenseFactors(expenseFactors);
         quoteResultsVo.setQuoteStatusEnum(InsOrderStatusEnum.WAIT_AUDIT);
         quoteResultsVo.setQuoteStatusEnum(InsOrderStatusEnum.WAIT_AUDIT);
+        // 非车费用
+        quoteResultsVo.getCosts().setNiPremium(daJiaCrawlerSaveResponse.getDriveInsurance().getProductInfo().getPremium().equals("") ? "0.00" : daJiaCrawlerSaveResponse.getDriveInsurance().getProductInfo().getPremium());
         // 交强保费 车船税 商业保费
         // 交强保费 车船税 商业保费
         buildOtherInfo(quoteResultsVo, daJiaCrawlerSaveResponse.getCompulsoryInsurance(), daJiaCrawlerSaveResponse.getBusinessInsurance());
         buildOtherInfo(quoteResultsVo, daJiaCrawlerSaveResponse.getCompulsoryInsurance(), daJiaCrawlerSaveResponse.getBusinessInsurance());
         return quoteResultsVo;
         return quoteResultsVo;

+ 11 - 1
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/entity/request/DaJiaCrawlerPriceRequest.java

@@ -155,7 +155,17 @@ public class DaJiaCrawlerPriceRequest implements Serializable {
         }else {
         }else {
             this.compulsoryInsurance = new CompulsoryInsuranceDTO();
             this.compulsoryInsurance = new CompulsoryInsuranceDTO();
         }
         }
-        this.driveInsurance = new DriveInsuranceDTO(quoteVo.getAccidentalDrivings());
+        String startTime;
+        String endTime;
+        if (!compulsoryInsurance.getProductInfo().getStartDate().equals("")) {
+            startTime = compulsoryInsurance.getProductInfo().getStartDate();
+            endTime = compulsoryInsurance.getProductInfo().getEndDate();
+        } else {
+            startTime = businessInsurance.getProductInfo().getStartDate();
+            endTime = businessInsurance.getProductInfo().getEndDate();
+        }
+
+        this.driveInsurance = new DriveInsuranceDTO(quoteVo.getAccidentalDrivings(),startTime,endTime);
         this.jabFamilyDriveInsurance = new Object();
         this.jabFamilyDriveInsurance = new Object();
         this.rqbFamilyDriveInsurance = new Object();
         this.rqbFamilyDriveInsurance = new Object();
         this.jkFamilyDriveInsurance = new Object();
         this.jkFamilyDriveInsurance = new Object();

+ 14 - 11
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/entity/request/quote/DriveInsuranceDTO.java

@@ -30,10 +30,10 @@ public class DriveInsuranceDTO implements Serializable {
         this.itemKinds = new ArrayList<>();
         this.itemKinds = new ArrayList<>();
     }
     }
 
 
-    public DriveInsuranceDTO(List<AccidentalDrivingVo> accidentalDrivings) {
+    public DriveInsuranceDTO(List<AccidentalDrivingVo> accidentalDrivings,String startTime,String endTime) {
         if (!CollectionUtils.isEmpty(accidentalDrivings)) {
         if (!CollectionUtils.isEmpty(accidentalDrivings)) {
             AccidentalDrivingVo accidentalDrivingVo = accidentalDrivings.get(0);
             AccidentalDrivingVo accidentalDrivingVo = accidentalDrivings.get(0);
-            this.productInfo = new ProductInfoDTO(accidentalDrivingVo);
+            this.productInfo = new ProductInfoDTO(accidentalDrivingVo,startTime,endTime);
         }
         }
         this.itemKinds = new ArrayList<>();
         this.itemKinds = new ArrayList<>();
     }
     }
@@ -174,22 +174,25 @@ public class DriveInsuranceDTO implements Serializable {
         @JsonProperty("supFlag")
         @JsonProperty("supFlag")
         private String supFlag;
         private String supFlag;
 
 
-        public ProductInfoDTO(AccidentalDrivingVo accidentalDrivingVo) {
+        public ProductInfoDTO(AccidentalDrivingVo accidentalDrivingVo,String startTime,String endTime) {
+            String str = accidentalDrivingVo.getProductCode();
+            String[] splitArray = str.split("_");
+            String targetStr = splitArray[1];
             this.businessID = "";
             this.businessID = "";
-            this.day = "";
-            this.endDate = "";
+            this.day = "365";
+            this.endDate = endTime;
             this.policyNo = "";
             this.policyNo = "";
-            this.productCode = "";
+            this.productCode = targetStr;
             this.proposalNo = "";
             this.proposalNo = "";
             this.proposalTime = "";
             this.proposalTime = "";
-            this.planId = "";
+            this.planId = accidentalDrivingVo.getProductCode();
             this.number = accidentalDrivingVo.getQuantity();
             this.number = accidentalDrivingVo.getQuantity();
-            this.startDate = "";
-            this.premium = "";
+            this.startDate = startTime;
+            this.premium = "0.00";
             this.sumInsured = "";
             this.sumInsured = "";
-            this.perPrmSum = 1;
+            this.perPrmSum = Double.parseDouble(accidentalDrivingVo.getPremium());
             this.perAmtSum = 1;
             this.perAmtSum = 1;
-            this.uncarDateMark = "";
+            this.uncarDateMark = "1";
         }
         }
     }
     }
 
 

+ 36 - 1
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/service/impl/DaJiaCrawlerRequestImpl.java

@@ -12,6 +12,7 @@ import com.jzg.quotation.commons.annotation.QuoteCrawlerService;
 import com.jzg.quotation.commons.constant.InsuranceCode;
 import com.jzg.quotation.commons.constant.InsuranceCode;
 import com.jzg.quotation.commons.filter.CarModelsFilterUtils;
 import com.jzg.quotation.commons.filter.CarModelsFilterUtils;
 import com.jzg.quotation.commons.standard.conversion.ConfigureParametersConversion;
 import com.jzg.quotation.commons.standard.conversion.ConfigureParametersConversion;
+import com.jzg.quotation.commons.utils.TimeProcessing;
 import com.jzg.quotation.dajia.crawler.build.DaJiaCrawlerQuoteResultsVoBuild;
 import com.jzg.quotation.dajia.crawler.build.DaJiaCrawlerQuoteResultsVoBuild;
 import com.jzg.quotation.dajia.crawler.component.BuildingAttributionInformation;
 import com.jzg.quotation.dajia.crawler.component.BuildingAttributionInformation;
 import com.jzg.quotation.dajia.crawler.component.DaJiaCrawlerCacheComponent;
 import com.jzg.quotation.dajia.crawler.component.DaJiaCrawlerCacheComponent;
@@ -20,6 +21,8 @@ import com.jzg.quotation.dajia.crawler.constant.enums.DaJiaCrawlerOrderState;
 import com.jzg.quotation.dajia.crawler.entity.DaJiaCrawlerConfigureParameters;
 import com.jzg.quotation.dajia.crawler.entity.DaJiaCrawlerConfigureParameters;
 import com.jzg.quotation.dajia.crawler.entity.po.DaJiaCrawlerOrder;
 import com.jzg.quotation.dajia.crawler.entity.po.DaJiaCrawlerOrder;
 import com.jzg.quotation.dajia.crawler.entity.request.*;
 import com.jzg.quotation.dajia.crawler.entity.request.*;
+import com.jzg.quotation.dajia.crawler.entity.request.quote.BusinessInsuranceDTO;
+import com.jzg.quotation.dajia.crawler.entity.request.quote.CompulsoryInsuranceDTO;
 import com.jzg.quotation.dajia.crawler.entity.request.quote.ProposalInfoDTO;
 import com.jzg.quotation.dajia.crawler.entity.request.quote.ProposalInfoDTO;
 import com.jzg.quotation.dajia.crawler.entity.response.*;
 import com.jzg.quotation.dajia.crawler.entity.response.*;
 import com.jzg.quotation.dajia.crawler.service.DaJiaCrawlerOrderService;
 import com.jzg.quotation.dajia.crawler.service.DaJiaCrawlerOrderService;
@@ -32,6 +35,8 @@ import org.springframework.util.StringUtils;
 
 
 import java.util.List;
 import java.util.List;
 import java.util.Map;
 import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 import java.util.stream.Collectors;
 import java.util.stream.Collectors;
 
 
 /**
 /**
@@ -123,7 +128,19 @@ public class DaJiaCrawlerRequestImpl implements DaJiaCrawlerRequest {
         // 3.0 保费计算
         // 3.0 保费计算
         DaJiaCrawlerPriceRequest daJiaCrawlerPriceRequest = new DaJiaCrawlerPriceRequest(quoteVo, listDTO, daJiaCrawlerActualValueResponse, proposalInfoDTO, userCode, daJiaCrawlerCarResponse.getChannelOrderNo());
         DaJiaCrawlerPriceRequest daJiaCrawlerPriceRequest = new DaJiaCrawlerPriceRequest(quoteVo, listDTO, daJiaCrawlerActualValueResponse, proposalInfoDTO, userCode, daJiaCrawlerCarResponse.getChannelOrderNo());
         DaJiaCrawlerPriceResponse crawlerPriceResponse = daJiaCrawlerRequestComponent.price(daJiaCrawlerPriceRequest, headers);
         DaJiaCrawlerPriceResponse crawlerPriceResponse = daJiaCrawlerRequestComponent.price(daJiaCrawlerPriceRequest, headers);
-
+        // 处理重复投保
+        String message = crawlerPriceResponse.getIncreasedValueMsg();
+        if (message.contains("重复投保")) {
+            String startTime = extractDuplicateEndTime(message);
+            String endTime = TimeProcessing.minusOneSecondAfterYear(startTime);;
+            CompulsoryInsuranceDTO compulsoryInsuranceDTO = daJiaCrawlerPriceRequest.getCompulsoryInsurance();
+            BusinessInsuranceDTO businessInsuranceDTO = daJiaCrawlerPriceRequest.getBusinessInsurance();
+            compulsoryInsuranceDTO.getProductInfo().setStartDate(startTime);
+            compulsoryInsuranceDTO.getProductInfo().setEndDate(endTime);
+            businessInsuranceDTO.getProductInfo().setStartDate(startTime);
+            businessInsuranceDTO.getProductInfo().setEndDate(endTime);
+            crawlerPriceResponse = daJiaCrawlerRequestComponent.price(daJiaCrawlerPriceRequest, headers);
+        }
         // 3.1 保存订单到保险公司系统
         // 3.1 保存订单到保险公司系统
         DaJiaCrawlerSaveRequest daJiaCrawlerSaveRequest = new DaJiaCrawlerSaveRequest(crawlerPriceResponse, userCode, quoteVo);
         DaJiaCrawlerSaveRequest daJiaCrawlerSaveRequest = new DaJiaCrawlerSaveRequest(crawlerPriceResponse, userCode, quoteVo);
         DaJiaCrawlerSaveResponse daJiaCrawlerSaveResponse = daJiaCrawlerRequestComponent.save(daJiaCrawlerSaveRequest, headers);
         DaJiaCrawlerSaveResponse daJiaCrawlerSaveResponse = daJiaCrawlerRequestComponent.save(daJiaCrawlerSaveRequest, headers);
@@ -140,6 +157,24 @@ public class DaJiaCrawlerRequestImpl implements DaJiaCrawlerRequest {
         return DaJiaCrawlerQuoteResultsVoBuild.buildQuoteResultsVo(quoteVo.getOrder().getOrdersNo(), quoteVo, daJiaCrawlerSaveResponse);
         return DaJiaCrawlerQuoteResultsVoBuild.buildQuoteResultsVo(quoteVo.getOrder().getOrdersNo(), quoteVo, daJiaCrawlerSaveResponse);
     }
     }
 
 
+    // 截取重复投保终保日期
+    private static final Pattern DUPLICATE_END_TIME_PATTERN = Pattern.compile("终保日期 (\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2})");
+
+    /**
+     * 提取系统自动分配的起保时间
+     * @param returnMessage 核心提示
+     * @return 提取到的时间字符串,未提取到返回 null
+     */
+    private String extractDuplicateEndTime(String returnMessage) {
+        Matcher matcher = DUPLICATE_END_TIME_PATTERN.matcher(returnMessage);
+        if (matcher.find()) {
+            String shortEndTime = matcher.group(1);
+            return shortEndTime + ":00";
+        }
+        return null;
+    }
+
+
     /**
     /**
      * 订单核保处理
      * 订单核保处理
      * 
      *