Parcourir la source

fix 国任交强险

liub il y a 2 mois
Parent
commit
dcb3a51580

+ 8 - 12
tenant/insurance/quotation-guoren/src/main/java/com/jzg/quotation/guoren/api/entity/Request/PremiumRequest.java

@@ -675,14 +675,12 @@ public class PremiumRequest {
             String newEndDate;
             //及时起保
             if (start.getHour() > 0) {
-                // 即时起保:起保时间改为下一日零时
-                LocalDateTime adjustedStart = start.plusDays(1).withHour(0).withMinute(0).withSecond(0).withNano(0);
-                LocalDateTime end = adjustedStart.plusYears(1L);
-                newStartDate = DateTimeUtil.format(adjustedStart, DateTimeUtil.DATETIME_PATTERN);
+                LocalDateTime end = start.plusYears(1L);
+                newStartDate = DateTimeUtil.format(start, DateTimeUtil.DATETIME_PATTERN);
                 newEndDate = DateTimeUtil.format(end, DateTimeUtil.DATETIME_PATTERN);
 
-                this.getPrpTmain().setStartHour("0");
-                this.getPrpTmain().setEndHour("0");
+                this.getPrpTmain().setStartHour(StringUtils.toString(start.getHour()));
+                this.getPrpTmain().setEndHour(StringUtils.toString(start.getHour()));
                 this.getPrpTmain().setImmeValidStartDate(newStartDate);
                 this.getPrpTmain().setImmeValidEndDate(newEndDate);
                 this.getPrpTmain().setImmeValiFlag("1");
@@ -1087,13 +1085,11 @@ public class PremiumRequest {
             String newEndDate;
             //及时起保
             if (start.getHour() > 0) {
-                // 即时起保:起保时间改为下一日零时
-                LocalDateTime adjustedStart = start.plusDays(1).withHour(0).withMinute(0).withSecond(0).withNano(0);
-                LocalDateTime end = adjustedStart.plusYears(1L);
-                newStartDate = DateTimeUtil.format(adjustedStart, DateTimeUtil.DATETIME_PATTERN);
+                LocalDateTime end = start.plusYears(1L);
+                newStartDate = DateTimeUtil.format(start, DateTimeUtil.DATETIME_PATTERN);
                 newEndDate = DateTimeUtil.format(end, DateTimeUtil.DATETIME_PATTERN);
-                this.getPrpTmain().setStartHour("0");
-                this.getPrpTmain().setEndHour("0");
+                this.getPrpTmain().setStartHour(StringUtils.toString(start.getHour()));
+                this.getPrpTmain().setEndHour(StringUtils.toString(start.getHour()));
                 this.getPrpTmain().setImmeValidStartDate(newStartDate);
                 this.getPrpTmain().setImmeValidEndDate(newEndDate);
                 this.getPrpTmain().setImmeValiFlag("1");

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

@@ -309,52 +309,41 @@ public class GuoRenPrpTmainDTO {
     private Integer endMinute;
 
     public GuoRenPrpTmainDTO(RiskInfoVo riskInfoVo, String today) {
-        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.startDate = TimeProcessing.dateTimeToDate(riskInfoVo.getStartDate());
+        this.endDate = TimeProcessing.dateTimeToDate(riskInfoVo.getEndDate());
         this.period0530 = 30;
 
-        this.startHour = TimeProcessing.getHour(startDateStr);
-        this.startMinute = TimeProcessing.getMinute(startDateStr);
-        this.endHour = TimeProcessing.getHour(endDateStr);
-        this.endMinute = TimeProcessing.getMinute(endDateStr);
+        this.startHour = TimeProcessing.getHour(riskInfoVo.getStartDate());
+        this.startMinute = TimeProcessing.getMinute(riskInfoVo.getStartDate());
+        this.endHour = TimeProcessing.getHour(riskInfoVo.getEndDate());
+        this.endMinute = TimeProcessing.getMinute(riskInfoVo.getEndDate());
 
         // 0507字段赋值
         this.immeValiFlag0507 = riskInfoVo.isInstantFlag() ? 1 : 0;
-        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.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.startDateFlag0507 = 0;
 
         // 0507t1字段赋值
         this.immeValiFlag0507t1 = 0;
-        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.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.startDateFlag0507t1 = 0;
 
-        this.immeValidStartDate = riskInfoVo.isInstantFlag() ? startDateStr : "";
-        this.immeValidEndDate = riskInfoVo.isInstantFlag() ? endDateStr : "";
+        this.immeValidStartDate = riskInfoVo.isInstantFlag() ? riskInfoVo.getStartDate() : "";
+        this.immeValidEndDate = riskInfoVo.isInstantFlag() ? riskInfoVo.getEndDate() : "";
         this.feeandDiscountFlag = "0";
         this.saleChange = "0";
         this.startDateFlag = 0;

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

@@ -38,9 +38,7 @@ import com.jzg.quotation.guoren.crawler.entity.response.*;
 import com.jzg.quotation.guoren.crawler.service.GuoRenCrawlerOrderService;
 import com.jzg.quotation.guoren.crawler.service.GuoRenCrawlerQuoteProcessService;
 import com.jzg.quotation.guoren.crawler.service.GuoRenCrawlerRequest;
-import com.jzg.quotation.guoren.crawler.utils.TimeUtils;
 import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
 import org.springframework.http.HttpHeaders;
 import org.springframework.stereotype.Service;
 import org.springframework.util.StringUtils;
@@ -51,7 +49,6 @@ import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 import java.util.stream.Collectors;
 
-@Slf4j
 @QuoteCrawlerService(value = InsuranceCode.INSURANCE_XDCX)
 @Service
 @RequiredArgsConstructor
@@ -154,8 +151,8 @@ public class GuoRenCrawlerRequestImpl implements GuoRenCrawlerRequest {
             if (startTime == null) {
                 return GuoRenCrawlerQuoteResultsVoBuild.buildFailQuoteResultsVo(quoteVo, calculationPremium);
             } else {
+                // 交强
                 RiskInfoVo ciRiskInfoVo = new RiskInfoVo();
-
                 if (startTime != null && startTime.endsWith("00:00:00")) {
                     ciRiskInfoVo.setInstantFlag(false);
                     endTime = TimeProcessing.minusOneSecondAfterYear(startTime);
@@ -170,13 +167,7 @@ public class GuoRenCrawlerRequestImpl implements GuoRenCrawlerRequest {
                 ciRiskInfoVo.setEndDate(endTime);
 
                 GuoRenPrpTmainDTO prpTMainDTO = new GuoRenPrpTmainDTO(ciRiskInfoVo, TimeProcessing.nowDate());
-
-                // 交强
-                prpTMainDTO.setEndDate(TimeUtils.extractDate(ciRiskInfoVo.getEndDate()));
-                prpTMainDTO.setEndHour(24);
-                prpTMainDTO.setEndMinute(0);
                 crawlerCalculationPremiumRequest.getCi().setPrpTmain(prpTMainDTO);
-                crawlerCalculationPremiumRequest.getCi().setPrptitemkindList(GuoRenCrawlerCalculationPremiumRequest.PrptitemkindListDTO.getCiPrptitemkindList(prpTMainDTO));
 
                 crawlerCalculationPremiumRequest.getCi().getPrptitemkindList().forEach(item -> {
                     item.setStartDate(startDate);
@@ -221,15 +212,6 @@ public class GuoRenCrawlerRequestImpl implements GuoRenCrawlerRequest {
             createOrderRequest = new GuoRenCrawlerCreateOrderRequest(quoteVo, crawlerCalculationPremiumRequest, queryLiabList);
             // 第一步:驾意险校验
             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")) {
                 throw new SystemException("驾意险订单校验失败:" + checkResponse.getMessage());
             }
@@ -263,7 +245,7 @@ public class GuoRenCrawlerRequestImpl implements GuoRenCrawlerRequest {
 
     /**
      * 报价成功后,根据保司返回的报价信息更新交强险和商业险的起保日期和终保日期
-     * 从 prpTmain 中取保险起止日期
+     * 从 prptitemkindList 中取第一个险种的日期作为保险起止日期
      *
      * @param quoteVo 报价单
      * @param data    保费计算结果数据
@@ -273,25 +255,25 @@ public class GuoRenCrawlerRequestImpl implements GuoRenCrawlerRequest {
             return;
         }
         // 更新交强险起保/终保日期
-        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());
+        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);
                 quoteVo.getCiRiskInfoVo().setStartDate(ciStartDateTime);
                 quoteVo.getCiRiskInfoVo().setEndDate(ciEndDateTime);
             }
         }
         // 更新商业险起保/终保日期
-        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());
+        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);
                 quoteVo.getBiRiskInfoVo().setStartDate(biStartDateTime);
                 quoteVo.getBiRiskInfoVo().setEndDate(biEndDateTime);
             }