Jelajahi Sumber

Merge remote-tracking branch 'origin/master'

Qchen 3 bulan lalu
induk
melakukan
aea02b61ba
13 mengubah file dengan 887 tambahan dan 969 penghapusan
  1. 2 1
      tenant/insurance/quotation-dadi/src/main/java/com/jzg/quotation/dadi/crawler/build/DaDiCrawlerQuoteResultVoBuild.java
  2. 2 0
      tenant/insurance/quotation-dadi/src/main/java/com/jzg/quotation/dadi/crawler/entity/request/DaDiEleProposalQRCoreDataRequest.java
  3. 7 1
      tenant/insurance/quotation-dadi/src/main/java/com/jzg/quotation/dadi/crawler/entity/response/DaDiEleProposalQRCoreDataResponse.java
  4. 12 2
      tenant/insurance/quotation-dadi/src/main/java/com/jzg/quotation/dadi/crawler/service/impl/DaDiCrawlerRequestImpl.java
  5. 51 0
      tenant/insurance/quotation-guoren/src/main/java/com/jzg/quotation/guoren/crawler/entity/request/GuoRenCrawlerProposalNoSaveRequest.java
  6. 12 0
      tenant/insurance/quotation-guoren/src/main/java/com/jzg/quotation/guoren/crawler/service/impl/GuoRenCrawlerQuoteProcessServiceImpl.java
  7. 23 7
      tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quotation/hengbang/crawler/entity/request/HbCrawlerCalculationRequest.java
  8. 1 1
      tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quotation/hengbang/crawler/service/Impl/HengBangCrawlerRequestImpl.java
  9. 0 0
      tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quotation/hengbang/crawler/utils/HengBangAESUtil.java
  10. 749 896
      tenant/insurance/quotation-huatai/src/main/java/com/jzg/quotation/huatai/crawler/service/Impl/HuaTaiCrawlerRequestImpl.java
  11. 2 2
      tenant/insurance/quotation-taikang/src/main/java/com/jzg/quotation/taikang/crawler/build/TkCrawlerQuoteResultsBuild.java
  12. 1 2
      tenant/insurance/quotation-taikang/src/main/java/com/jzg/quotation/taikang/crawler/service/TKSimpleService.java
  13. 25 57
      tenant/insurance/quotation-taikang/src/main/java/com/jzg/quotation/taikang/crawler/service/impl/TKQuotationBaseServiceImpl.java

+ 2 - 1
tenant/insurance/quotation-dadi/src/main/java/com/jzg/quotation/dadi/crawler/build/DaDiCrawlerQuoteResultVoBuild.java

@@ -105,7 +105,8 @@ public class DaDiCrawlerQuoteResultVoBuild {
         int sumPayment = daDiQuoteResponse.getInsurancePlan().getTax().getSumPayment();
         quoteResultsVo.getCosts().setVvTax(String.valueOf(sumPayment));
         //设置非车保费
-//        quoteResultsVo.getCosts().setNiPremium(proposalResponse.getAccidentTotalPremium());
+        int niPremium = daDiQuoteResponse.getInsurancePlan().getBusinessDuePremium();
+        quoteResultsVo.getCosts().setNiPremium(String.valueOf(niPremium));
 
         //总保费
         int sumPremium = trafficDuePremium + businessDuePremium + sumPayment;

+ 2 - 0
tenant/insurance/quotation-dadi/src/main/java/com/jzg/quotation/dadi/crawler/entity/request/DaDiEleProposalQRCoreDataRequest.java

@@ -13,6 +13,8 @@ import lombok.NoArgsConstructor;
 @NoArgsConstructor
 public class DaDiEleProposalQRCoreDataRequest extends DaDiOrderInfoRequest {
 
+    private String flag = "";
+
     public DaDiEleProposalQRCoreDataRequest(String orderId, String comCode, String userCode) {
         this.orderId = orderId;
         this.comCode = comCode;

+ 7 - 1
tenant/insurance/quotation-dadi/src/main/java/com/jzg/quotation/dadi/crawler/entity/response/DaDiEleProposalQRCoreDataResponse.java

@@ -1,5 +1,6 @@
 package com.jzg.quotation.dadi.crawler.entity.response;
 
+import com.google.gson.annotations.SerializedName;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 
@@ -14,5 +15,10 @@ import lombok.NoArgsConstructor;
 public class DaDiEleProposalQRCoreDataResponse extends DaDiBaseResponse {
 
 
-
+    @SerializedName("url")
+    private String url;
+    @SerializedName("paymentNo")
+    private String paymentNo;
+    @SerializedName("checkNo")
+    private String checkNo;
 }

+ 12 - 2
tenant/insurance/quotation-dadi/src/main/java/com/jzg/quotation/dadi/crawler/service/impl/DaDiCrawlerRequestImpl.java

@@ -151,7 +151,10 @@ public class DaDiCrawlerRequestImpl implements DaDiCrawlerRequest {
 
             if (underwriting.getUwType().equals("3")) {
                 DaDiPayNoDataResponse payNoDataResponse = daDiCrawlerRequestComponent.getPayNo(headers, daDiCrawlerOrder.getPlyappno(), attributionInformationVo);
-                DaDiEleProposalQRCoreDataResponse eleProposalQRCoreData = daDiCrawlerRequestComponent.getEleProposalQRCoreData(headers, daDiCrawlerOrder.getPlyappno(), attributionInformationVo);
+                PaymentLinkVo paymentLinkVo = new PaymentLinkVo();
+                paymentLinkVo.setOrder(underwritingVo.getOrder());
+                underwritingResultsVo.setPaymentLink(getPaymentLink(paymentLinkVo).getPaymentLink());
+                underwritingResultsVo.setCompanyOrderNo(payNoDataResponse.getPayApplyNo());
                 underwritingResultsVo.setUnderwritingStatus(InsOrderStatusEnum.PAY_PENDING);
             } else {
                 underwritingResultsVo.setUnderwritingResult(msg + DaDiVehicleUtils.UW_TYPE_MAP.get(underwriting.getUwType()));
@@ -172,7 +175,14 @@ public class DaDiCrawlerRequestImpl implements DaDiCrawlerRequest {
 
     @Override
     public PaymentLinkResultsVo getPaymentLink(PaymentLinkVo paymentLinkVo) throws Exception {
-        return null;
+        AttributionInformationVo attributionInformationVo = paymentLinkVo.getOrder().getAttributionInformationVo();
+        HttpHeaders headers = daDiCrawlerQuoteProcessService.getHeaders(attributionInformationVo.getUsername(), attributionInformationVo.getPassword());
+        DaDiCrawlerOrder daDiCrawlerOrder = daDiCrawlerOrderService.findByOrdersNo(paymentLinkVo.getOrder().getOrdersNo());
+        DaDiEleProposalQRCoreDataResponse eleProposalQRCoreData = daDiCrawlerRequestComponent.getEleProposalQRCoreData(headers, daDiCrawlerOrder.getPlyappno(), attributionInformationVo);
+        PaymentLinkResultsVo paymentLinkResultsVo = new PaymentLinkResultsVo();
+        paymentLinkResultsVo.setPayLinkStatus(true);
+        paymentLinkResultsVo.setPaymentLink(eleProposalQRCoreData.getUrl());
+        return paymentLinkResultsVo;
     }
 
     @Override

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

@@ -4,6 +4,7 @@ import com.fasterxml.jackson.annotation.JsonProperty;
 import com.jzg.commons.entity.quote.vo.QuoteVo;
 import com.jzg.quotation.guoren.crawler.entity.dto.GuoRenBcDTO;
 import com.jzg.quotation.guoren.crawler.entity.response.GuoRenCrawlerCalculationPremiumData;
+import org.springframework.util.StringUtils;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 
@@ -43,6 +44,56 @@ public class GuoRenCrawlerProposalNoSaveRequest implements Serializable {
         }
         this.bi = biDto;
         this.ci = guoRenCrawlerCalculationPremiumData.getCi();
+        // 将试算响应中的报价ID回填到bc中
+        fillProposalNoFromResponse(guoRenCrawlerCalculationPremiumData);
+    }
+
+    /**
+     * 从试算响应中提取报价ID,回填到保存请求的bc字段中
+     * 解决保司合规规则"报价ID缺失"问题
+     */
+    private void fillProposalNoFromResponse(GuoRenCrawlerCalculationPremiumData response) {
+        if (response == null) {
+            return;
+        }
+        // 1. 从响应的BC中回填proposalNo到请求的BC
+        GuoRenCrawlerCalculationPremiumData.BcDTO responseBc = response.getBc();
+        if (responseBc != null) {
+            // 回填BC.prpTmain.proposalNo
+            if (responseBc.getPrpTmain() != null && StringUtils.hasText(responseBc.getPrpTmain().getProposalNo())) {
+                String bcProposalNo = responseBc.getPrpTmain().getProposalNo();
+                String bcDemandNo = responseBc.getPrpTmain().getDemandNo();
+                if (this.bc.getPrpTmain() != null) {
+                    this.bc.getPrpTmain().setProposalNo(bcProposalNo);
+                    this.bc.getPrpTmain().setDemandNo(bcDemandNo);
+                }
+                if (this.bc.getPrpTitemCar() != null) {
+                    this.bc.getPrpTitemCar().setProposalNo(bcProposalNo);
+                }
+            }
+        }
+        // 2. 从响应的CI中回填proposalNo到ciInsureDemand
+        GuoRenCrawlerCalculationPremiumData.CiDTO responseCi = response.getCi();
+        if (responseCi != null && responseCi.getPrpTmain() != null
+                && StringUtils.hasText(responseCi.getPrpTmain().getProposalNo())) {
+            String ciProposalNo = responseCi.getPrpTmain().getProposalNo();
+            String demandNo = responseCi.getPrpTmain().getDemandNo();
+            if (this.ci != null && this.ci.getCiInsureDemand() != null) {
+                this.ci.getCiInsureDemand().setProposalNo(ciProposalNo);
+                this.ci.getCiInsureDemand().setDemandNo(demandNo);
+            }
+        }
+        // 3. 从响应的BI中回填proposalNo到ciInsureDemand
+        GuoRenCrawlerCalculationPremiumData.BiDTO responseBi = response.getBi();
+        if (responseBi != null && responseBi.getPrpTmain() != null
+                && StringUtils.hasText(responseBi.getPrpTmain().getProposalNo())) {
+            String biProposalNo = responseBi.getPrpTmain().getProposalNo();
+            String biDemandNo = responseBi.getPrpTmain().getDemandNo();
+            if (this.bi != null && this.bi.getCiInsureDemand() != null) {
+                this.bi.getCiInsureDemand().setProposalNo(biProposalNo);
+                this.bi.getCiInsureDemand().setDemandNo(biDemandNo);
+            }
+        }
     }
 
 }

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

@@ -210,11 +210,23 @@ public class GuoRenCrawlerQuoteProcessServiceImpl implements GuoRenCrawlerQuoteP
         ReinsuranceCaptchaVo reinsuranceCaptchaVo1 = exteriorUtilsRequest.reinsuranceCaptchaIdentify(reinsuranceCaptchaVo);
         crawlerCalculationPremiumRequest.getCi().getPrpTmain().setDemandNo(demandNoCi);
         crawlerCalculationPremiumRequest.getCi().getPrpTmain().setAnswer(reinsuranceCaptchaVo1.getCiCaptcha());
+        // 回填第一次试算返回的proposalNo,避免第二次calculationPremium后丢失报价ID
+        crawlerCalculationPremiumRequest.getCi().getPrpTmain().setProposalNo(
+                calculationPremium.getCi().getPrpTmain().getProposalNo());
         crawlerCalculationPremiumRequest.getCi().setCiInsureDemand(calculationPremium.getCi().getCiInsureDemand());
         crawlerCalculationPremiumRequest.getCi().setPrptengageList(calculationPremium.getCi().getPrptengageList());
+        // BC也需要回填proposalNo
+        if (calculationPremium.getBc() != null && calculationPremium.getBc().getPrpTmain() != null
+                && org.springframework.util.StringUtils.hasText(calculationPremium.getBc().getPrpTmain().getProposalNo())) {
+            crawlerCalculationPremiumRequest.getBc().getPrpTmain().setProposalNo(
+                    calculationPremium.getBc().getPrpTmain().getProposalNo());
+        }
         if (crawlerCalculationPremiumRequest.getBi().getPrpTmain() != null) {
             crawlerCalculationPremiumRequest.getBi().getPrpTmain().setDemandNo(demandNoBi);
             crawlerCalculationPremiumRequest.getBi().getPrpTmain().setAnswer(reinsuranceCaptchaVo1.getBiCaptcha());
+            // 回填BI的proposalNo
+            crawlerCalculationPremiumRequest.getBi().getPrpTmain().setProposalNo(
+                    calculationPremium.getBi().getPrpTmain().getProposalNo());
             crawlerCalculationPremiumRequest.getBi().setCiInsureDemand(calculationPremium.getBi().getCiInsureDemand());
             crawlerCalculationPremiumRequest.getBi().setPrptengageList(calculationPremium.getBi().getPrptengageList());
         }

+ 23 - 7
tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quotation/hengbang/crawler/entity/request/HbCrawlerCalculationRequest.java

@@ -77,7 +77,7 @@ public class HbCrawlerCalculationRequest extends HbBaseRequest {
     @Serial
     private static final long serialVersionUID = -6130320344004620564L;
 
-    public HbCrawlerCalculationRequest(QuoteVo quoteVo, String plyappno) {
+    public HbCrawlerCalculationRequest(QuoteVo quoteVo, String plyappno, String depreciationPrice) {
         this.clauseType = "2";
         List<KindInfoVo> kindInfoVoList = quoteVo.getKindInfoVo();
         this.risktype = "0";
@@ -88,12 +88,11 @@ public class HbCrawlerCalculationRequest extends HbBaseRequest {
             this.risktype = "1";
         }
         if (CollUtil.isNotEmpty(kindInfoVoList)) {
-            this.epersonliabilityList = getEpersonliabilityList(kindInfoVoList);
+            this.epersonliabilityList = getEpersonliabilityList(kindInfoVoList, depreciationPrice);
             this.begintimeBi = DateUtil.toUtcDateTime(quoteVo.getBiRiskInfoVo().getStartDate());
             this.begintimeAccident = DateUtil.toUtcDateTime(quoteVo.getBiRiskInfoVo().getStartDate());
             this.risktype = "2";
         } else {
-//            this.begintimeBi = DateUtil.toUtcDateTime(quoteVo.getCiRiskInfoVo().getStartDate());
             this.epersonliabilityList = new ArrayList<>();
         }
         this.plyappno = plyappno;
@@ -107,18 +106,34 @@ public class HbCrawlerCalculationRequest extends HbBaseRequest {
         this.effectfLag = null;
         this.ecarChargingPosts = new ArrayList<>();
         this.carInsureDevices = new ArrayList<>();
+        this.outofwarrantytype = "N";
+        this.drivingtype = "";
+        this.endtimeAccident = "";
         this.accidentInsuranceList = getAccidentInsuranceList(quoteVo.getBiRiskInfoVo(), quoteVo.getAccidentalDrivings());
     }
 
-    public List<EpersonliabilityDTO> getEpersonliabilityList(List<KindInfoVo> kindInfoVoList) {
+    public List<EpersonliabilityDTO> getEpersonliabilityList(List<KindInfoVo> kindInfoVoList, String depreciationPrice) {
         List<EpersonliabilityDTO> epersonliabilityDTOList = new ArrayList<>();
         for (KindInfoVo kindInfoVo : kindInfoVoList) {
             EpersonliabilityDTO epersonliabilityDTO = new EpersonliabilityDTO();
             epersonliabilityDTO.setKindcode(kindInfoVo.getKindCode());
             epersonliabilityDTO.setLiabname(kindInfoVo.getKindName());
-            epersonliabilityDTO.setLiabamt(kindInfoVo.getAmount());
-            epersonliabilityDTO.setQuantity(kindInfoVo.getQuantity());
-            epersonliabilityDTO.setUnitAmount(kindInfoVo.getUnitAmount());
+            // kindcode "101"(机动车损失保险)的保额必须使用车辆折旧价(实际价值),
+            // 否则保司会校验"协商价格范围建议在实际价值上下30%浮动"并拒绝
+            if ("101".equals(kindInfoVo.getKindCode()) && depreciationPrice != null) {
+                epersonliabilityDTO.setLiabamt(depreciationPrice);
+                epersonliabilityDTO.setUnitAmount(depreciationPrice);
+            } else if (!"116".equals(kindInfoVo.getKindCode())) {
+                // kindcode "116"不需要liabamt和unitAmount
+                epersonliabilityDTO.setLiabamt(kindInfoVo.getAmount());
+                epersonliabilityDTO.setUnitAmount(kindInfoVo.getUnitAmount());
+            }
+            if ("116".equals(kindInfoVo.getKindCode())) {
+                // 道路救援服务特约条款:只需要serviceTimes字段
+                epersonliabilityDTO.setServiceTimes(kindInfoVo.getServiceTimes() != null ? kindInfoVo.getServiceTimes() : "2");
+            } else {
+                epersonliabilityDTO.setQuantity(kindInfoVo.getQuantity() != null ? kindInfoVo.getQuantity() : "4");
+            }
             epersonliabilityDTOList.add(epersonliabilityDTO);
         }
         return epersonliabilityDTOList;
@@ -300,6 +315,7 @@ public class HbCrawlerCalculationRequest extends HbBaseRequest {
         private String liabname;
         private String model = "0";
         private String quantity;
+        private String serviceTimes;
         private String unitAmount;
     }
 

+ 1 - 1
tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quotation/hengbang/crawler/service/Impl/HengBangCrawlerRequestImpl.java

@@ -148,7 +148,7 @@ public class HengBangCrawlerRequestImpl implements HengBangCrawlerRequest {
         HbCrawlerQuoteimmediatelyRequest quoteimmediatelyRequest = new HbCrawlerQuoteimmediatelyRequest(quoteVo, salesInfo, depreciationPrice, parameters, contentDTO);
         String plyappno = hbCrawlerRequestComponent.quoteImmediately(quoteimmediatelyRequest, headers);
         // 5.1 报价第二步,提交报价数据,返回是否重复投保,脱保等提示信息,用于页面展示
-        HbCrawlerCalculationRequest calculationRequest = new HbCrawlerCalculationRequest(quoteVo, plyappno);
+        HbCrawlerCalculationRequest calculationRequest = new HbCrawlerCalculationRequest(quoteVo, plyappno, depreciationPrice);
         // 非车信息匹配核心
         matchingAccident(quoteVo, headers, plyappno, calculationRequest);
         String resJson = hbCrawlerRequestComponent.getCalculationResult(calculationRequest, headers);

File diff ditekan karena terlalu besar
+ 0 - 0
tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quotation/hengbang/crawler/utils/HengBangAESUtil.java


File diff ditekan karena terlalu besar
+ 749 - 896
tenant/insurance/quotation-huatai/src/main/java/com/jzg/quotation/huatai/crawler/service/Impl/HuaTaiCrawlerRequestImpl.java


+ 2 - 2
tenant/insurance/quotation-taikang/src/main/java/com/jzg/quotation/taikang/crawler/build/TkCrawlerQuoteResultsBuild.java

@@ -125,7 +125,7 @@ public class TkCrawlerQuoteResultsBuild {
         // 设置商业险保费
         quoteResultsVo.getCosts().setBiPremium(premium.getSyPremium().toString());
         // 设置车船税
-        quoteResultsVo.getCosts().setVvTax(premium.getTax().toString());
+        quoteResultsVo.getCosts().setVvTax(preciseInitResult.getCarTax().getSumPayment().toString());
         // 设置非车险(驾意险)保费
         quoteResultsVo.getCosts().setNiPremium(premium.getJyxPremium().toString());
         quoteResultsVo.setQuoteStatusEnum(InsOrderStatusEnum.WAIT_AUDIT);
@@ -143,7 +143,7 @@ public class TkCrawlerQuoteResultsBuild {
                 .fluentPut("score", preciseInitResult.getRiskScore()));
         quoteResultsVo.getScoreVo().setScoreJson(scoreJson);
         // 欠税信息
-        if (null != preciseInitResult.getCarTax()) {
+        if (preciseInitResult.getCarTax() != null) {
             List<TaxInfoVo> taxArrearsList = new ArrayList<>();
             TaxInfoVo taxArrear = new TaxInfoVo();
             taxArrear.setYears(preciseInitResult.getCarTax().getRepaymentYear());

+ 1 - 2
tenant/insurance/quotation-taikang/src/main/java/com/jzg/quotation/taikang/crawler/service/TKSimpleService.java

@@ -293,8 +293,7 @@ public class TKSimpleService {
     public AreaUserResult areaUser(TKLoginSession session, String mainOrderId, AgentFuzzyResult agentFuzzyResult, String agentCode) {
         List<AreaUserResult> areaUserResults = httpService.areaUser(session.getToken(), session.getTplatformId(), mainOrderId, agentFuzzyResult, agentCode);
         // todo 先暂时取第1个省第1个城市
-        AreaUserResult province = areaUserResults.get(0);
-        return province;
+        return areaUserResults.get(0);
     }
 
     /**

File diff ditekan karena terlalu besar
+ 25 - 57
tenant/insurance/quotation-taikang/src/main/java/com/jzg/quotation/taikang/crawler/service/impl/TKQuotationBaseServiceImpl.java


Beberapa file tidak ditampilkan karena terlalu banyak file yang berubah dalam diff ini