Przeglądaj źródła

fix 国任单交时设置了商业险日期问题 报价时为提交特约信息问题

liub 3 miesięcy temu
rodzic
commit
3aadb9f38d

+ 10 - 9
tenant/insurance/quotation-guoren/src/main/java/com/jzg/quotation/guoren/crawler/entity/dto/GuoRenBiDTO.java

@@ -124,9 +124,17 @@ public class GuoRenBiDTO {
             this.inputRisk = 1;
             this.prpTmain = new GuoRenPrpTmainDTO(biRiskInfoVo, today);
             this.prpTmainRate = new GuoRenPrpTmainRateDTO();
+            prpTmain.setStartDate(TimeUtils.extractDate(biRiskInfoVo.getStartDate()));
+            prpTmain.setStartHour(Integer.valueOf(TimeUtils.extractHour(biRiskInfoVo.getStartDate())));
+            prpTmain.setStartMinute(Integer.valueOf(TimeUtils.extractMinute(biRiskInfoVo.getStartDate())));
+            prpTmain.setEndDate(TimeUtils.extractDate(biRiskInfoVo.getEndDate()));
+            prpTmain.setEndHour(24);
+            prpTmain.setEndMinute(0);
+            this.prptitemkindList = GuoRenCrawlerCalculationPremiumRequest.PrptitemkindListDTO.getBiPrptitemkindList(kindInfoVo, prpTmain);
+
         }
         this.prpTitemCar = prpTitemCar;
-        this.ciInsureDemand = new CiInsureDemandDTO("", "",quoteVo);
+        this.ciInsureDemand = new CiInsureDemandDTO("", "", quoteVo);
         this.ciInsureDemandPay = new ArrayList<>();
         this.ciInsureDemandWarningClaim = new ArrayList<>();
         this.prpTenGearAllocationFeeList = new ArrayList<>();
@@ -137,13 +145,6 @@ public class GuoRenBiDTO {
                 infoVo.setAmount(prpTitemCar.getCompromisePrice());
             }
         }
-        prpTmain.setStartDate(TimeUtils.extractDate(biRiskInfoVo.getStartDate()));
-        prpTmain.setStartHour(Integer.valueOf(TimeUtils.extractHour(biRiskInfoVo.getStartDate())));
-        prpTmain.setStartMinute(Integer.valueOf(TimeUtils.extractMinute(biRiskInfoVo.getStartDate())));
-        prpTmain.setEndDate(TimeUtils.extractDate(biRiskInfoVo.getEndDate()));
-        prpTmain.setEndHour(24);
-        prpTmain.setEndMinute(0);
-        this.prptitemkindList = GuoRenCrawlerCalculationPremiumRequest.PrptitemkindListDTO.getBiPrptitemkindList(kindInfoVo, prpTmain);
         this.prptengageList = new ArrayList<>();
         this.prpDclause = new ArrayList<>();
         this.prpTcarDeviceCount = new PrpTcarDeviceCountDTO();
@@ -155,7 +156,7 @@ public class GuoRenBiDTO {
         this.blPrpTRealNameVerification = new ArrayList<>();
         this.prpTLastCarShipTax = new PrpTLastCarShipTaxDTO();
         this.duplicateInsuranceItemsSchema = new DuplicateInsuranceItemsSchemaDTO();
-        this.prpTChannel = new PrpTChannelDTO("","","");
+        this.prpTChannel = new PrpTChannelDTO("", "", "");
 
         this.inputRisk0518 = 1;
         this.inputRisk0521 = 0;

+ 6 - 3
tenant/insurance/quotation-guoren/src/main/java/com/jzg/quotation/guoren/crawler/entity/request/GuoRenCrawlerProposalNoSaveRequest.java

@@ -30,15 +30,18 @@ public class GuoRenCrawlerProposalNoSaveRequest implements Serializable {
     private GuoRenCrawlerCalculationPremiumData.CiDTO ci;
 
     public GuoRenCrawlerProposalNoSaveRequest(QuoteVo quoteVo, GuoRenCrawlerCalculationPremiumData guoRenCrawlerCalculationPremiumData, GuoRenCrawlerCalculationPremiumRequest calculationPremiumRequest) {
+        GuoRenCrawlerCalculationPremiumData.BiDTO biDto = guoRenCrawlerCalculationPremiumData.getBi();
         this.bc = calculationPremiumRequest.getBc();
         this.bc.getPrpTmain().setCaptcha("");
         this.bc.getPrpTmain().setEProposalFlag("1");
         this.basePartVo = calculationPremiumRequest.getBasePartVo();
         guoRenCrawlerCalculationPremiumData.getCi().getCiInsureDemand().setTonCount(quoteVo.getCarInfoVo().getTonCount());
         guoRenCrawlerCalculationPremiumData.getCi().getCiInsureDemand().setSeatCount(quoteVo.getCarInfoVo().getSeatCount());
-        guoRenCrawlerCalculationPremiumData.getBi().getCiInsureDemand().setTonCount(quoteVo.getCarInfoVo().getTonCount());
-        guoRenCrawlerCalculationPremiumData.getBi().getCiInsureDemand().setSeatCount(quoteVo.getCarInfoVo().getSeatCount());
-        this.bi = guoRenCrawlerCalculationPremiumData.getBi();
+        if (biDto.getCiInsureDemand() != null) {
+            guoRenCrawlerCalculationPremiumData.getBi().getCiInsureDemand().setTonCount(quoteVo.getCarInfoVo().getTonCount());
+            guoRenCrawlerCalculationPremiumData.getBi().getCiInsureDemand().setSeatCount(quoteVo.getCarInfoVo().getSeatCount());
+        }
+        this.bi = biDto;
         this.ci = guoRenCrawlerCalculationPremiumData.getCi();
     }
 

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

@@ -1,7 +1,9 @@
 package com.jzg.quotation.guoren.crawler.service.impl;
 
+import com.jzg.commons.constants.InsuranceRisk;
 import com.jzg.commons.constants.dict.InsOrderStatusEnum;
 import com.jzg.commons.entity.orders.po.InsOrders;
+import com.jzg.commons.entity.po.InsCompanyClause;
 import com.jzg.commons.entity.quote.vo.AttributionInformationVo;
 import com.jzg.commons.entity.quote.vo.QuoteVo;
 import com.jzg.commons.entity.quote.vo.aggregated.*;
@@ -14,12 +16,14 @@ import com.jzg.quotation.commons.entity.GetCaptchaRequest;
 import com.jzg.quotation.commons.entity.GetCaptchaResponse;
 import com.jzg.quotation.commons.standard.conversion.ConfigureParametersConversion;
 import com.jzg.quotation.commons.utils.TimeProcessing;
+import com.jzg.quotation.guoren.api.entity.vo.GuoRenSpecialAgreementVo;
 import com.jzg.quotation.guoren.crawler.build.GuoRenCrawlerQuoteResultsVoBuild;
 import com.jzg.quotation.guoren.crawler.component.GuoRenCrawlerRequestComponent;
 import com.jzg.quotation.guoren.crawler.constant.enums.RequestUrl;
 import com.jzg.quotation.guoren.crawler.entity.GuoRenCrawlerConfigureParameters;
 import com.jzg.quotation.guoren.crawler.entity.dto.GuoRenPrpTitemCarDTO;
 import com.jzg.quotation.guoren.crawler.entity.dto.PrpTMainDTO;
+import com.jzg.quotation.guoren.crawler.entity.dto.PrptengageListDTO;
 import com.jzg.quotation.guoren.crawler.entity.po.GuoRenCrawlerOrder;
 import com.jzg.quotation.guoren.crawler.entity.po.OrderCommon;
 import com.jzg.quotation.guoren.crawler.entity.request.GuoRenCrawlerCalculationPremiumRequest;
@@ -32,9 +36,11 @@ import org.springframework.http.HttpHeaders;
 import org.springframework.stereotype.Service;
 import org.springframework.util.StringUtils;
 
+import java.util.ArrayList;
 import java.util.List;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
+import java.util.stream.Collectors;
 
 @QuoteCrawlerService(value = InsuranceCode.INSURANCE_XDCX)
 @Service
@@ -90,8 +96,25 @@ public class GuoRenCrawlerRequestImpl implements GuoRenCrawlerRequest {
         GuoRenCrawlerWriteBackAddressData policyHolderAddr = writeBackAddress(quoteVo.getPolicyHolderInfo().getAddr(), quoteVo.getOwnersInfo().getAddr(), ownersAddr, headers);
         // 被保人 回填地址信息
         GuoRenCrawlerWriteBackAddressData insuredPersonAddr = writeBackAddress(quoteVo.getInsuredPersonInfo().getAddr(), quoteVo.getPolicyHolderInfo().getAddr(), ownersAddr, headers);
+        // 获取并处理特约数据
+        List<GuoRenSpecialAgreementVo> specialAgreements = getSpecialAgreements(quoteVo);
+        // 处理车主约定特约T0028占位符替换
+        processSpecialAgreementT0028(specialAgreements, quoteVo);
         // 保费计算
         GuoRenCrawlerCalculationPremiumRequest crawlerCalculationPremiumRequest = new GuoRenCrawlerCalculationPremiumRequest(quoteVo, prpTmainDTO, prpTitemCar, policyHolderAddr, insuredPersonAddr, insuredTypeTmp);
+        // 按险种设置特约数据
+        if (crawlerCalculationPremiumRequest.getCi() != null) {
+            List<GuoRenSpecialAgreementVo> trafficSpecialAgreements = specialAgreements.stream()
+                    .filter(x -> InsuranceRisk.TRAFFIC.getCode().equals(x.getRiskCode()))
+                    .collect(Collectors.toList());
+            crawlerCalculationPremiumRequest.getCi().setPrptengageList(PrptengageListDTO.fromSpecialAgreementVo(trafficSpecialAgreements));
+        }
+        if (crawlerCalculationPremiumRequest.getBi() != null) {
+            List<GuoRenSpecialAgreementVo> businessSpecialAgreements = specialAgreements.stream()
+                    .filter(x -> InsuranceRisk.BUSINESS.getCode().equals(x.getRiskCode()))
+                    .collect(Collectors.toList());
+            crawlerCalculationPremiumRequest.getBi().setPrptengageList(PrptengageListDTO.fromSpecialAgreementVo(businessSpecialAgreements));
+        }
         GuoRenCrawlerBaseResponse<GuoRenCrawlerCalculationPremiumData> calculationPremium = guoRenCrawlerRequestComponent.calculationPremium(crawlerCalculationPremiumRequest, headers);
         // 处理重复投保
         String message = calculationPremium.getResultMsg();
@@ -163,6 +186,42 @@ public class GuoRenCrawlerRequestImpl implements GuoRenCrawlerRequest {
         return null;
     }
 
+    /**
+     * 获取特约数据
+     * 从报价单中的特约条款列表转换为国任特约VO列表
+     *
+     * @param quoteVo 报价单
+     * @return 特约VO列表(按交强/商业险拆分)
+     */
+    private List<GuoRenSpecialAgreementVo> getSpecialAgreements(QuoteVo quoteVo) {
+        List<InsCompanyClause> companyClauseVos = quoteVo.getSpecialInfoVo();
+        List<GuoRenSpecialAgreementVo> list = new ArrayList<>();
+        for (InsuranceRisk insuranceRisk : InsuranceRisk.getInsuranceRisk()) {
+            List<GuoRenSpecialAgreementVo> collect = companyClauseVos.stream()
+                    .map(x -> new GuoRenSpecialAgreementVo(x, insuranceRisk))
+                    .collect(Collectors.toList());
+            list.addAll(collect);
+        }
+        return list;
+    }
+
+    /**
+     * 处理T0028车主约定特约,替换占位符
+     * 将特约内容中的下划线占位符替换为被保人姓名和车主姓名
+     *
+     * @param specialAgreements 特约列表
+     * @param quoteVo           报价单
+     */
+    private void processSpecialAgreementT0028(List<GuoRenSpecialAgreementVo> specialAgreements, QuoteVo quoteVo) {
+        specialAgreements.forEach(item -> {
+            if ("T0028".equals(item.getClauseCode())) {
+                String replace = item.getClausesContext().replaceFirst("_", quoteVo.getInsuredPersonInfo().getName());
+                replace = replace.replaceFirst("_", quoteVo.getOwnersInfo().getName());
+                item.setClausesContext(replace);
+            }
+        });
+    }
+
     @Override
     public UnderwritingResultsVo underwriting(UnderwritingVo underwritingVo) throws Exception {
         String username = underwritingVo.getOrder().getAttributionInformationVo().getUsername();