瀏覽代碼

fix 国任即时起保

liub 2 月之前
父節點
當前提交
aae175349a

+ 35 - 24
tenant/insurance/quotation-guoren/src/main/java/com/jzg/quotation/guoren/crawler/entity/dto/GuoRenPrpTmainDTO.java

@@ -309,41 +309,52 @@ public class GuoRenPrpTmainDTO {
     private Integer endMinute;
     private Integer endMinute;
 
 
     public GuoRenPrpTmainDTO(RiskInfoVo riskInfoVo, String today) {
     public GuoRenPrpTmainDTO(RiskInfoVo riskInfoVo, String today) {
-        this.startDate = TimeProcessing.dateTimeToDate(riskInfoVo.getStartDate());
-        this.endDate = TimeProcessing.dateTimeToDate(riskInfoVo.getEndDate());
+        String startDateStr = riskInfoVo.getStartDate();
+        String endDateStr = riskInfoVo.getEndDate();
+
+        // 即时起保:起保时间改为传入时间的下一日零时
+        if (riskInfoVo.isInstantFlag()) {
+            String startDateOnly = TimeProcessing.plusDays(TimeProcessing.dateTimeToDate(startDateStr), 1);
+            String endDateOnly = TimeProcessing.plusDays(TimeProcessing.dateTimeToDate(endDateStr), 1);
+            startDateStr = startDateOnly + " 00:00:00";
+            endDateStr = endDateOnly + " 00:00:00";
+        }
+
+        this.startDate = TimeProcessing.dateTimeToDate(startDateStr);
+        this.endDate = TimeProcessing.dateTimeToDate(endDateStr);
         this.period0530 = 30;
         this.period0530 = 30;
 
 
-        this.startHour = TimeProcessing.getHour(riskInfoVo.getStartDate());
-        this.startMinute = TimeProcessing.getMinute(riskInfoVo.getStartDate());
-        this.endHour = TimeProcessing.getHour(riskInfoVo.getEndDate());
-        this.endMinute = TimeProcessing.getMinute(riskInfoVo.getEndDate());
+        this.startHour = TimeProcessing.getHour(startDateStr);
+        this.startMinute = TimeProcessing.getMinute(startDateStr);
+        this.endHour = TimeProcessing.getHour(endDateStr);
+        this.endMinute = TimeProcessing.getMinute(endDateStr);
 
 
         // 0507字段赋值
         // 0507字段赋值
         this.immeValiFlag0507 = riskInfoVo.isInstantFlag() ? 1 : 0;
         this.immeValiFlag0507 = riskInfoVo.isInstantFlag() ? 1 : 0;
-        this.startDate0507 = TimeProcessing.dateTimeToDate(riskInfoVo.getStartDate());
-        this.endDate0507 = TimeProcessing.dateTimeToDate(riskInfoVo.getEndDate());
-        this.immeValidStartDate0507 =  DateUtil.toUtcDateTime(riskInfoVo.getStartDate());
-        this.immeValidEndDate0507 = DateUtil.toUtcDateTime(riskInfoVo.getEndDate());
-        this.startHour0507 = TimeProcessing.getHour(riskInfoVo.getStartDate());
-        this.endHour0507 = TimeProcessing.getHour(riskInfoVo.getEndDate());
-        this.startMinute0507 = TimeProcessing.getMinute(riskInfoVo.getStartDate());
-        this.endMinute0507 =  TimeProcessing.getMinute(riskInfoVo.getEndDate());
+        this.startDate0507 = TimeProcessing.dateTimeToDate(startDateStr);
+        this.endDate0507 = TimeProcessing.dateTimeToDate(endDateStr);
+        this.immeValidStartDate0507 = DateUtil.toUtcDateTime(startDateStr);
+        this.immeValidEndDate0507 = DateUtil.toUtcDateTime(endDateStr);
+        this.startHour0507 = TimeProcessing.getHour(startDateStr);
+        this.endHour0507 = TimeProcessing.getHour(endDateStr);
+        this.startMinute0507 = TimeProcessing.getMinute(startDateStr);
+        this.endMinute0507 = TimeProcessing.getMinute(endDateStr);
         this.startDateFlag0507 = 0;
         this.startDateFlag0507 = 0;
 
 
         // 0507t1字段赋值
         // 0507t1字段赋值
         this.immeValiFlag0507t1 = 0;
         this.immeValiFlag0507t1 = 0;
-        this.startDate0507t1 = TimeProcessing.dateTimeToDate(riskInfoVo.getStartDate());
-        this.endDate0507t1 = TimeProcessing.dateTimeToDate(riskInfoVo.getEndDate());
-        this.immeValidStartDate0507t1 = DateUtil.toUtcDateTime(riskInfoVo.getStartDate());
-        this.immeValidEndDate0507t1 = DateUtil.toUtcDateTime(riskInfoVo.getEndDate());
-        this.startHour0507t1 = TimeProcessing.getHour(riskInfoVo.getStartDate());
-        this.endHour0507t1 = TimeProcessing.getHour(riskInfoVo.getEndDate());
-        this.startMinute0507t1 = TimeProcessing.getMinute(riskInfoVo.getStartDate());
-        this.endMinute0507t1 = TimeProcessing.getMinute(riskInfoVo.getEndDate());
+        this.startDate0507t1 = TimeProcessing.dateTimeToDate(startDateStr);
+        this.endDate0507t1 = TimeProcessing.dateTimeToDate(endDateStr);
+        this.immeValidStartDate0507t1 = DateUtil.toUtcDateTime(startDateStr);
+        this.immeValidEndDate0507t1 = DateUtil.toUtcDateTime(endDateStr);
+        this.startHour0507t1 = TimeProcessing.getHour(startDateStr);
+        this.endHour0507t1 = TimeProcessing.getHour(endDateStr);
+        this.startMinute0507t1 = TimeProcessing.getMinute(startDateStr);
+        this.endMinute0507t1 = TimeProcessing.getMinute(endDateStr);
         this.startDateFlag0507t1 = 0;
         this.startDateFlag0507t1 = 0;
 
 
-        this.immeValidStartDate = riskInfoVo.isInstantFlag() ? riskInfoVo.getStartDate() : "";
-        this.immeValidEndDate = riskInfoVo.isInstantFlag() ? riskInfoVo.getEndDate() : "";
+        this.immeValidStartDate = riskInfoVo.isInstantFlag() ? startDateStr : "";
+        this.immeValidEndDate = riskInfoVo.isInstantFlag() ? endDateStr : "";
         this.feeandDiscountFlag = "0";
         this.feeandDiscountFlag = "0";
         this.saleChange = "0";
         this.saleChange = "0";
         this.startDateFlag = 0;
         this.startDateFlag = 0;

+ 2 - 2
tenant/insurance/quotation-guoren/src/main/java/com/jzg/quotation/guoren/crawler/service/impl/GuoRenCrawlerQuoteProcessServiceImpl.java

@@ -110,8 +110,8 @@ public class GuoRenCrawlerQuoteProcessServiceImpl implements GuoRenCrawlerQuoteP
     @Override
     @Override
     public HttpHeaders getHeaders(String username) {
     public HttpHeaders getHeaders(String username) {
         HttpHeaders headers = new HttpHeaders();
         HttpHeaders headers = new HttpHeaders();
-        String token = guoRenCrawlerCacheComponent.getToken(username);
-//        String token = "eyJhbGciOiJSUzI1NiJ9.eyJzdWIiOiJXMzAwMDM5OSIsInVzZXJJZCI6IjQ5NjE4MSIsIm5hbWUiOiLmnY7mmKXmooUiLCJleHAiOjE3ODQ3OTMwNzR9.Jc-DOyqO7RatX9veTtF0cfVFF9EhLuP40eaEkSe_Tv8u33YFvosk50nAPdevmJ9t9WW7263S88fpfHy0gFNjTOjUk8KcOqmpJWbC9Q7Ydoq6NTRwKGIVgZI2VLVlPA99fPzTuxl-MPsyEU0_2KV4I_U7LcV5p3w0jEkPLdUFuXM";
+//        String token = guoRenCrawlerCacheComponent.getToken(username);
+        String token = "eyJhbGciOiJSUzI1NiJ9.eyJzdWIiOiJXMzAwMDM5OSIsInVzZXJJZCI6IjQ5NjE4MSIsIm5hbWUiOiLmnY7mmKXmooUiLCJleHAiOjE3ODQ5NDA2NzF9.fl3etn9yGRPrBxaaPgCFdjeg91oRzI9930ee0nOrV9VllMM7uFG9ktudt8iYinQ2ebIDeYMk51Q3ijrMwyuj5eyxiPtfZeoRtBPiAq0N08E_e1a3GZnjaSTM3TopX2vcb9_LHioskQI90Px9OHcr17YkVZ40X1wb-owaHpEmsCc";
         if (!StringUtils.hasText(token)) {
         if (!StringUtils.hasText(token)) {
             throw new TokenExpireException("500", "国任财险账号登录过期,请重新登录");
             throw new TokenExpireException("500", "国任财险账号登录过期,请重新登录");
         }
         }

+ 31 - 17
tenant/insurance/quotation-guoren/src/main/java/com/jzg/quotation/guoren/crawler/service/impl/GuoRenCrawlerRequestImpl.java

@@ -38,7 +38,9 @@ import com.jzg.quotation.guoren.crawler.entity.response.*;
 import com.jzg.quotation.guoren.crawler.service.GuoRenCrawlerOrderService;
 import com.jzg.quotation.guoren.crawler.service.GuoRenCrawlerOrderService;
 import com.jzg.quotation.guoren.crawler.service.GuoRenCrawlerQuoteProcessService;
 import com.jzg.quotation.guoren.crawler.service.GuoRenCrawlerQuoteProcessService;
 import com.jzg.quotation.guoren.crawler.service.GuoRenCrawlerRequest;
 import com.jzg.quotation.guoren.crawler.service.GuoRenCrawlerRequest;
+import com.jzg.quotation.guoren.crawler.utils.TimeUtils;
 import lombok.RequiredArgsConstructor;
 import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.http.HttpHeaders;
 import org.springframework.http.HttpHeaders;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 import org.springframework.util.StringUtils;
 import org.springframework.util.StringUtils;
@@ -49,6 +51,7 @@ import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 import java.util.regex.Pattern;
 import java.util.stream.Collectors;
 import java.util.stream.Collectors;
 
 
+@Slf4j
 @QuoteCrawlerService(value = InsuranceCode.INSURANCE_XDCX)
 @QuoteCrawlerService(value = InsuranceCode.INSURANCE_XDCX)
 @Service
 @Service
 @RequiredArgsConstructor
 @RequiredArgsConstructor
@@ -169,9 +172,11 @@ public class GuoRenCrawlerRequestImpl implements GuoRenCrawlerRequest {
                 GuoRenPrpTmainDTO prpTMainDTO = new GuoRenPrpTmainDTO(ciRiskInfoVo, TimeProcessing.nowDate());
                 GuoRenPrpTmainDTO prpTMainDTO = new GuoRenPrpTmainDTO(ciRiskInfoVo, TimeProcessing.nowDate());
 
 
                 // 交强
                 // 交强
-                quoteVo.getCiRiskInfoVo().setStartDate(startTime);
-                quoteVo.getCiRiskInfoVo().setEndDate(endTime);
+                prpTMainDTO.setEndDate(TimeUtils.extractDate(ciRiskInfoVo.getEndDate()));
+                prpTMainDTO.setEndHour(24);
+                prpTMainDTO.setEndMinute(0);
                 crawlerCalculationPremiumRequest.getCi().setPrpTmain(prpTMainDTO);
                 crawlerCalculationPremiumRequest.getCi().setPrpTmain(prpTMainDTO);
+                crawlerCalculationPremiumRequest.getCi().setPrptitemkindList(GuoRenCrawlerCalculationPremiumRequest.PrptitemkindListDTO.getCiPrptitemkindList(prpTMainDTO));
 
 
                 crawlerCalculationPremiumRequest.getCi().getPrptitemkindList().forEach(item -> {
                 crawlerCalculationPremiumRequest.getCi().getPrptitemkindList().forEach(item -> {
                     item.setStartDate(startDate);
                     item.setStartDate(startDate);
@@ -216,6 +221,15 @@ public class GuoRenCrawlerRequestImpl implements GuoRenCrawlerRequest {
             createOrderRequest = new GuoRenCrawlerCreateOrderRequest(quoteVo, crawlerCalculationPremiumRequest, queryLiabList);
             createOrderRequest = new GuoRenCrawlerCreateOrderRequest(quoteVo, crawlerCalculationPremiumRequest, queryLiabList);
             // 第一步:驾意险校验
             // 第一步:驾意险校验
             GuoRenCrawlerBaseResponse<GuoRenCrawlerCreateOrderCheckData> checkResponse = guoRenCrawlerRequestComponent.createOrderCheck(createOrderRequest, headers);
             GuoRenCrawlerBaseResponse<GuoRenCrawlerCreateOrderCheckData> checkResponse = guoRenCrawlerRequestComponent.createOrderCheck(createOrderRequest, headers);
+            if (!"0000".equals(checkResponse.getCode()) && "请输入正确的身份证有效期".equals(checkResponse.getMessage())) {
+                // 翻转CertiValidity(4→2 或 2→4)后重试
+                String currentValidity = createOrderRequest.getData().getOrderList().get(0).getInsuredList().get(0).getCertiValidity();
+                String newValidity = "4".equals(currentValidity) ? "2" : "4";
+                createOrderRequest.getData().getOrderList().get(0).getInsuredList().get(0).setCertiValidity(newValidity);
+                createOrderRequest.getData().getOrderList().get(0).getOrderAppl().setCertiValidity(newValidity);
+                log.info("驾意险校验身份证有效期错误,翻转CertiValidity:{} -> {},重试", currentValidity, newValidity);
+                checkResponse = guoRenCrawlerRequestComponent.createOrderCheck(createOrderRequest, headers);
+            }
             if (!checkResponse.getCode().equals("0000")) {
             if (!checkResponse.getCode().equals("0000")) {
                 throw new SystemException("驾意险订单校验失败:" + checkResponse.getMessage());
                 throw new SystemException("驾意险订单校验失败:" + checkResponse.getMessage());
             }
             }
@@ -249,7 +263,7 @@ public class GuoRenCrawlerRequestImpl implements GuoRenCrawlerRequest {
 
 
     /**
     /**
      * 报价成功后,根据保司返回的报价信息更新交强险和商业险的起保日期和终保日期
      * 报价成功后,根据保司返回的报价信息更新交强险和商业险的起保日期和终保日期
-     * 从 prptitemkindList 中取第一个险种的日期作为保险起止日期
+     * 从 prpTmain 中取保险起止日期
      *
      *
      * @param quoteVo 报价单
      * @param quoteVo 报价单
      * @param data    保费计算结果数据
      * @param data    保费计算结果数据
@@ -259,25 +273,25 @@ public class GuoRenCrawlerRequestImpl implements GuoRenCrawlerRequest {
             return;
             return;
         }
         }
         // 更新交强险起保/终保日期
         // 更新交强险起保/终保日期
-        if (data.getCi() != null && CollUtil.isNotEmpty(data.getCi().getPrptitemkindList())) {
-            GuoRenCrawlerCalculationPremiumData.CiDTO.PrptitemkindListDTO firstKind = data.getCi().getPrptitemkindList().get(0);
-            if (firstKind.getStartDate() != null && quoteVo.getCiRiskInfoVo() != null) {
-                String ciStartDateTime = buildDateTimeString(firstKind.getStartDate(),
-                        firstKind.getStartHour(), 0);
-                String ciEndDateTime = buildDateTimeString(firstKind.getEndDate(),
-                        firstKind.getEndHour(), 0);
+        if (data.getCi() != null && data.getCi().getPrpTmain() != null) {
+            GuoRenCrawlerCalculationPremiumData.CiDTO.PrpTmainDTO prpTmain = data.getCi().getPrpTmain();
+            if (prpTmain.getStartDate() != null && quoteVo.getCiRiskInfoVo() != null) {
+                String ciStartDateTime = buildDateTimeString(prpTmain.getStartDate(),
+                        prpTmain.getStartHour(), prpTmain.getStartMinute());
+                String ciEndDateTime = buildDateTimeString(prpTmain.getEndDate(),
+                        prpTmain.getEndHour(), prpTmain.getEndMinute());
                 quoteVo.getCiRiskInfoVo().setStartDate(ciStartDateTime);
                 quoteVo.getCiRiskInfoVo().setStartDate(ciStartDateTime);
                 quoteVo.getCiRiskInfoVo().setEndDate(ciEndDateTime);
                 quoteVo.getCiRiskInfoVo().setEndDate(ciEndDateTime);
             }
             }
         }
         }
         // 更新商业险起保/终保日期
         // 更新商业险起保/终保日期
-        if (data.getBi() != null && CollUtil.isNotEmpty(data.getBi().getPrptitemkindList())) {
-            GuoRenCrawlerCalculationPremiumData.BiDTO.PrptitemkindListDTO firstKind = data.getBi().getPrptitemkindList().get(0);
-            if (firstKind.getStartDate() != null && quoteVo.getBiRiskInfoVo() != null) {
-                String biStartDateTime = buildDateTimeString(firstKind.getStartDate(),
-                        firstKind.getStartHour(), 0);
-                String biEndDateTime = buildDateTimeString(firstKind.getEndDate(),
-                        firstKind.getEndHour(), 0);
+        if (data.getBi() != null && data.getBi().getPrpTmain() != null) {
+            GuoRenCrawlerCalculationPremiumData.BiDTO.PrpTmainDTO prpTmain = data.getBi().getPrpTmain();
+            if (prpTmain.getStartDate() != null && quoteVo.getBiRiskInfoVo() != null) {
+                String biStartDateTime = buildDateTimeString(prpTmain.getStartDate(),
+                        prpTmain.getStartHour(), prpTmain.getStartMinute());
+                String biEndDateTime = buildDateTimeString(prpTmain.getEndDate(),
+                        prpTmain.getEndHour(), prpTmain.getEndMinute());
                 quoteVo.getBiRiskInfoVo().setStartDate(biStartDateTime);
                 quoteVo.getBiRiskInfoVo().setStartDate(biStartDateTime);
                 quoteVo.getBiRiskInfoVo().setEndDate(biEndDateTime);
                 quoteVo.getBiRiskInfoVo().setEndDate(biEndDateTime);
             }
             }