Răsfoiți Sursa

安盛报价

xuqiang 5 luni în urmă
părinte
comite
4aa5ea9d68
15 a modificat fișierele cu 395 adăugiri și 66 ștergeri
  1. 14 11
      tenant/insurance/quotation-ansheng/src/main/java/com/jzg/quotation/ansheng/crawler/build/AnShengCrawlerApplyApplicationRequestBuild.java
  2. 15 6
      tenant/insurance/quotation-ansheng/src/main/java/com/jzg/quotation/ansheng/crawler/component/AnShengCrawlerRequestComponent.java
  3. 14 14
      tenant/insurance/quotation-ansheng/src/main/java/com/jzg/quotation/ansheng/crawler/entity/request/AnShengCrawlerCalculatePremiumApplyMessage.java
  4. 20 2
      tenant/insurance/quotation-ansheng/src/main/java/com/jzg/quotation/ansheng/crawler/entity/request/AnShengCrawlerPaymentRequest.java
  5. 31 16
      tenant/insurance/quotation-ansheng/src/main/java/com/jzg/quotation/ansheng/crawler/service/impl/AnShengCrawlerRequestImpl.java
  6. 55 0
      tenant/insurance/quotation-ansheng/src/main/java/com/jzg/quotation/ansheng/crawler/utils/InfoExtractUtil.java
  7. 57 0
      tenant/insurance/quotation-ansheng/src/main/java/com/jzg/quotation/ansheng/crawler/utils/PolicySpecialPromiseUtil.java
  8. 25 3
      tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/component/RequestComponent.java
  9. 38 0
      tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/config/AsyncThreadPoolConfig.java
  10. 3 0
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/SummaryQuotationApplication.java
  11. 92 0
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/async/AnShengAsyncPayLink.java
  12. 7 13
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/factory/decorator/image/ImageParamHandlerDecorator.java
  13. 7 0
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/InsOrdersQrcodeService.java
  14. 16 0
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsOrdersQrcodeServiceImpl.java
  15. 1 1
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsOrdersServiceImpl.java

+ 14 - 11
tenant/insurance/quotation-ansheng/src/main/java/com/jzg/quotation/ansheng/crawler/build/AnShengCrawlerApplyApplicationRequestBuild.java

@@ -1,7 +1,6 @@
 package com.jzg.quotation.ansheng.crawler.build;
 
-import cn.hutool.core.bean.copier.CopyOptions;
-import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson2.JSONObject;
 import com.google.common.collect.Lists;
 import com.jzg.quotation.ansheng.crawler.entity.request.AnShengCrawlerApplyApplicationRequest;
 import com.jzg.quotation.ansheng.crawler.entity.request.AnShengCrawlerApplyApplicationRequest.ContractsDTO.TargetListDTO.CheckVehicleInfoDTO;
@@ -10,9 +9,9 @@ import com.jzg.quotation.ansheng.crawler.entity.request.AnShengCrawlerApplyAppli
 import com.jzg.quotation.ansheng.crawler.entity.request.AnShengCrawlerCalculatePremiumApplyMessage;
 import com.jzg.quotation.ansheng.crawler.entity.response.AnShengCrawlerCalculatePremiumApplyResponse;
 import com.jzg.quotation.ansheng.crawler.entity.response.AnShengCrawlerGetUserDetailResponse;
+import com.jzg.quotation.ansheng.crawler.utils.InfoExtractUtil;
+import com.jzg.quotation.ansheng.crawler.utils.PolicySpecialPromiseUtil;
 import com.jzg.quotation.commons.utils.TimeProcessing;
-import org.jetbrains.annotations.NotNull;
-import org.springframework.util.ObjectUtils;
 import org.springframework.util.StringUtils;
 
 import java.util.ArrayList;
@@ -28,7 +27,9 @@ public final class AnShengCrawlerApplyApplicationRequestBuild {
 
     public static AnShengCrawlerApplyApplicationRequest build(AnShengCrawlerCalculatePremiumApplyMessage crawlerCalculatePremiumApply, AnShengCrawlerCalculatePremiumApplyResponse calculatePremiumApply, AnShengCrawlerGetUserDetailResponse.DataDTO.AgentDefineDTO userDetailResponse, String compulsoryVersionNo) {
         AnShengCrawlerApplyApplicationRequest autoSpecialPromiseRequest = new AnShengCrawlerApplyApplicationRequest();
-
+        String jsonString = JSONObject.toJSONString(calculatePremiumApply);
+        String personnelName = InfoExtractUtil.extractPersonnelName(jsonString);
+        String applicantName = InfoExtractUtil.extractApplicantName(jsonString);
         Map<String, AnShengCrawlerCalculatePremiumApplyResponse.DataDTO.ContractsDTO> responseMap = calculatePremiumApply.getData()
                 .getContracts()
                 .stream()
@@ -77,8 +78,10 @@ public final class AnShengCrawlerApplyApplicationRequestBuild {
             // 核心
             AnShengCrawlerApplyApplicationRequest.ContractsDTO.PolicyBaseDTO policyBaseDTO = buildPolicyBaseDTO(requestContracts.getPolicyBase(), responseContracts.getPolicyBase(), responseContracts.getTargets()
                     .get(0), userDetailResponse, compulsoryVersionNo);
+            PolicySpecialPromiseUtil.generateAlterableSpecialPromise(policyBaseDTO,personnelName,applicantName,responseContracts.getPolicyBase());
             contractsDTO.setPolicyBase(policyBaseDTO);
             autoSpecialPromiseRequest.getContracts().add(contractsDTO);
+
         });
 
         String insuranceBeginTime = calculatePremiumApply.getData().getContracts().get(0).getInsuranceBeginTime();
@@ -460,7 +463,7 @@ public final class AnShengCrawlerApplyApplicationRequestBuild {
         policyBaseDTO.setForcePolicyFlag("");
         policyBaseDTO.setCertificationPrintNo("");
         policyBaseDTO.setRelationPolicy(requestPolicyBase.getRelationPolicy());
-        policyBaseDTO.setCedingTypeCode(requestPolicyBase.getBusinessType());
+        policyBaseDTO.setCedingTypeCode("");
         policyBaseDTO.setOneToMoreGoodCustomer("");
         policyBaseDTO.setLastVehicleLicenceCode("");
         policyBaseDTO.setLastGoodCustomer("");
@@ -470,13 +473,13 @@ public final class AnShengCrawlerApplyApplicationRequestBuild {
         policyBaseDTO.setEndorseNo("");
         policyBaseDTO.setTotalNetPremium(responsePolicyBase.getTotalNetPremium());
         policyBaseDTO.setAddedValueTax(responsePolicyBase.getAddedValueTax());
-        policyBaseDTO.setRealBusinessType("");
-        policyBaseDTO.setBusinessType("");
+        policyBaseDTO.setRealBusinessType(requestPolicyBase.getRealBusinessType());
+        policyBaseDTO.setBusinessType(requestPolicyBase.getBusinessType());
         policyBaseDTO.setVehicleLicenceCode(targetsDTO.getVehicleLicenceCode());
         policyBaseDTO.setVehicleFrameNo(targetsDTO.getVehicleFrameNo());
         policyBaseDTO.setEngineNo(targetsDTO.getEngineNo());
-        policyBaseDTO.setVehicleTonnages(String.valueOf(targetsDTO.getVehicleTonnages()));
-        policyBaseDTO.setVehicleSeats(String.valueOf(targetsDTO.getVehicleSeats()));
+        policyBaseDTO.setVehicleTonnages("");
+        policyBaseDTO.setVehicleSeats("");
         policyBaseDTO.setBusinessTypeDetail(requestPolicyBase.getBusinessTypeDetail());
         policyBaseDTO.setInsuranceBeginTime(requestPolicyBase.getInsuranceBeginTime());
         policyBaseDTO.setInsuranceEndTime(requestPolicyBase.getInsuranceEndTime());
@@ -506,7 +509,7 @@ public final class AnShengCrawlerApplyApplicationRequestBuild {
         policyBaseDTO.setTotalStandardPremium(responsePolicyBase.getTotalStandardPremium());
         policyBaseDTO.setTemporaryId("");
         policyBaseDTO.setTotalActualPremium(responsePolicyBase.getTotalActualPremium());
-        policyBaseDTO.setRateParamPrintState("");
+        policyBaseDTO.setRateParamPrintState("1");
         policyBaseDTO.setCreatedBy(userDetailResponse.getUserId());
         policyBaseDTO.setRatioODSum("");
         policyBaseDTO.setCurrencyCode(requestPolicyBase.getCurrencyCode());

+ 15 - 6
tenant/insurance/quotation-ansheng/src/main/java/com/jzg/quotation/ansheng/crawler/component/AnShengCrawlerRequestComponent.java

@@ -2,6 +2,7 @@ package com.jzg.quotation.ansheng.crawler.component;
 
 
 import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.serializer.SerializerFeature;
 import com.jzg.commons.exception.SystemException;
 import com.jzg.quotation.ansheng.crawler.constant.enums.RequestUrl;
 import com.jzg.quotation.ansheng.crawler.entity.request.*;
@@ -40,7 +41,7 @@ public class AnShengCrawlerRequestComponent {
 
 
     public <Response extends AnShengCrawlerBaseResponse> Response post(RequestUrl requestUrl, Object body, Class<Response> responseClass, HttpHeaders headers) {
-        String jsonString = JSON.toJSONString(body);
+        String jsonString = JSON.toJSONString(body,SerializerFeature.DisableCircularReferenceDetect,SerializerFeature.WriteSlashAsSpecial,SerializerFeature.QuoteFieldNames,SerializerFeature.PrettyFormat);
         log.info("请求内容{}", jsonString);
         MultiValueMap<String, Object> map = new LinkedMultiValueMap<>();
         map.set("message", jsonString);
@@ -289,11 +290,19 @@ public class AnShengCrawlerRequestComponent {
      * @return 支付链接
      */
     public String payment(AnShengCrawlerPaymentRequest request, HttpHeaders headers) {
-        ResponseEntity<AnShengCrawlerPaymentResponse> responseEntity = requestComponent.formData(RequestUrl.PAYMENT.getRequestUrl(anShengCrawlerProperties.getUrl()), request, AnShengCrawlerPaymentResponse.class, headers);
-        return Optional.ofNullable(responseEntity.getBody())
-                .map(AnShengCrawlerPaymentResponse::getData)
-                .map(AnShengCrawlerPaymentResponse.DataDTO::getFxQRCode)
-                .orElseThrow(()->new SystemException("支付链接获取失败"));
+        try {
+            return Optional.ofNullable(requestComponent.formData(
+                            RequestUrl.PAYMENT.getRequestUrl(anShengCrawlerProperties.getUrl()),
+                            request, AnShengCrawlerPaymentResponse.class, headers))
+                    .map(ResponseEntity::getBody)
+                    .map(AnShengCrawlerPaymentResponse::getData)
+                    .map(AnShengCrawlerPaymentResponse.DataDTO::getFxQRCode)
+                    .orElse(null);
+        } catch (Exception e) {
+            e.printStackTrace();
+            log.error("安盛获取支付码异常:{}",e.getMessage());
+            return null;
+        }
     }
 
     /**

+ 14 - 14
tenant/insurance/quotation-ansheng/src/main/java/com/jzg/quotation/ansheng/crawler/entity/request/AnShengCrawlerCalculatePremiumApplyMessage.java

@@ -168,7 +168,7 @@ public class AnShengCrawlerCalculatePremiumApplyMessage {
             this.noVehicleNo = false;
             this.noCarowner = false;
             this.agentDefine = new AgentDefineDTO(userDetailResponse.getAgentCode());
-            this.autoGetTimeFlag = "0";
+            this.autoGetTimeFlag = "1";
             this.policyBase = new PolicyBaseDTO(planCode, productCode, userDetailResponse.getDepartmentCode(), riskInfoVo, userDetailResponse.getAgentCharactor());
             this.departmentDefine = new DepartmentDefineDTO(userDetailResponse.getDepartmentCode());
             this.saleBusinessSource = new SaleBusinessSourceDTO(userDetailResponse.getSaleAgentCode(), userDetailResponse.getSaleTeamCode());
@@ -202,18 +202,18 @@ public class AnShengCrawlerCalculatePremiumApplyMessage {
         }
 
         public void addCiPolicyRatios() {
-            PolicyRatiosDTO policyRatiosDTOF44 = new PolicyRatiosDTO("", "", "", "", "F44", "V6", 1, 1, 1, 1, 1);
+            PolicyRatiosDTO policyRatiosDTOF44 = new PolicyRatiosDTO("", "", "", "", "F44", "V6", 1.0, 1.0, 1.0, 1.0, 1.0);
             this.policyRatios.add(policyRatiosDTOF44);
-            PolicyRatiosDTO policyRatiosDTOF45 = new PolicyRatiosDTO("", "", "", "", "F45", "A4", 1, 1, 1, 1, 1);
+            PolicyRatiosDTO policyRatiosDTOF45 = new PolicyRatiosDTO("", "", "", "", "F45", "A4", 1.0, 1.0, 1.0, 1.0, 1.0);
             this.policyRatios.add(policyRatiosDTOF45);
         }
 
         public void addBiPolicyRatios() {
-            PolicyRatiosDTO policyRatiosDTOF89 = new PolicyRatiosDTO("", "", "", "", "F89", "", 1, 1, 1, 1, 1);
+            PolicyRatiosDTO policyRatiosDTOF89 = new PolicyRatiosDTO("", "", "", "", "F89", "", 1.0, 1.0, 1.0, 1.0, 1.0);
             this.policyRatios.add(policyRatiosDTOF89);
-            PolicyRatiosDTO policyRatiosDTOF87 = new PolicyRatiosDTO("", "", "", "", "F87", "", 1, 1, 1, 1, 1);
+            PolicyRatiosDTO policyRatiosDTOF87 = new PolicyRatiosDTO("", "", "", "", "F87", "", 1.0, 1.0, 1.0, 1.0, 1.0);
             this.policyRatios.add(policyRatiosDTOF87);
-            PolicyRatiosDTO policyRatiosDTOF84 = new PolicyRatiosDTO("", "", "", "", "F84", "5A", 1, 1, 1, 1, 1);
+            PolicyRatiosDTO policyRatiosDTOF84 = new PolicyRatiosDTO("", "", "", "", "F84", "5A", 1.0, 1.0, 1.0, 1.0, 1.0);
             this.policyRatios.add(policyRatiosDTOF84);
 
         }
@@ -1003,7 +1003,7 @@ public class AnShengCrawlerCalculatePremiumApplyMessage {
                 private String dbVehicleWeigth;
                 @JsonProperty("riskScore")
                 @JSONField(name = "riskScore")
-                private String riskScore;
+                private Integer riskScore;
                 @JsonProperty("riskScoreTwenty")
                 @JSONField(name = "riskScoreTwenty")
                 private String riskScoreTwenty;
@@ -1183,7 +1183,7 @@ public class AnShengCrawlerCalculatePremiumApplyMessage {
                     this.ratioFluctuateType = "0";
                     this.repairFactory = "";
                     this.dbVehicleWeigth = brandAutoModel.getCurbWeightMin();
-                    this.riskScore = "";
+                    this.riskScore = null;
                     this.riskScoreTwenty = "";
                     this.algrId = "";
                     this.riskScoreColor = "";
@@ -1596,7 +1596,7 @@ public class AnShengCrawlerCalculatePremiumApplyMessage {
                     private String personnelName;
                     @JsonProperty("personnelCode")
                     @JSONField(name = "personnelCode")
-                    private Object personnelCode;
+                    private String personnelCode;
                     @JsonProperty("baseId")
                     @JSONField(name = "baseId")
                     private String baseId;
@@ -1902,19 +1902,19 @@ public class AnShengCrawlerCalculatePremiumApplyMessage {
             private String factorValue;
             @JsonProperty("ratioOd")
             @JSONField(name = "ratioOd")
-            private Integer ratioOd;
+            private Double ratioOd;
             @JsonProperty("ratioTp")
             @JSONField(name = "ratioTp")
-            private Integer ratioTp;
+            private Double ratioTp;
             @JsonProperty("ratioTheft")
             @JSONField(name = "ratioTheft")
-            private Integer ratioTheft;
+            private Double ratioTheft;
             @JsonProperty("ratioOther")
             @JSONField(name = "ratioOther")
-            private Integer ratioOther;
+            private Double ratioOther;
             @JsonProperty("ratiototal")
             @JSONField(name = "ratiototal")
-            private Integer ratiototal;
+            private Double ratiototal;
         }
 
         @AllArgsConstructor

+ 20 - 2
tenant/insurance/quotation-ansheng/src/main/java/com/jzg/quotation/ansheng/crawler/entity/request/AnShengCrawlerPaymentRequest.java

@@ -2,10 +2,13 @@ package com.jzg.quotation.ansheng.crawler.entity.request;
 
 
 import com.fasterxml.jackson.annotation.JsonProperty;
+import com.jzg.commons.util.StringUtils;
+import com.jzg.quotation.ansheng.crawler.entity.po.AnShengCrawlerOrder;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 
+import java.util.ArrayList;
 import java.util.List;
 
 @Data
@@ -31,12 +34,27 @@ public class AnShengCrawlerPaymentRequest {
     @JsonProperty("addH24Planhandle")
     private String addH24PlanHandle;
 
-    public AnShengCrawlerPaymentRequest(List<String> documentList, String departmentCode, String totalPremium) {
+    public AnShengCrawlerPaymentRequest(AnShengCrawlerOrder anShengCrawlerOrder, String departmentCode, String totalPremium) {
         this.paymentFlag = "2";
         this.documentType = "5";
-        this.documentList = documentList;
+        this.documentList = documentList(anShengCrawlerOrder);
         this.departmentCode = departmentCode;
         this.totalPremium = totalPremium;
         this.addH24PlanHandle = "0";
     }
+
+    public List<String> documentList(AnShengCrawlerOrder anShengCrawlerOrder){
+        List<String> list = new ArrayList<>();
+        if (StringUtils.isNotEmpty(anShengCrawlerOrder.getCiPolicyNo()) && StringUtils.isNotEmpty(anShengCrawlerOrder.getBiPolicyNo())) {
+            list.add(anShengCrawlerOrder.getCiPolicyNo());
+            list.add(anShengCrawlerOrder.getBiPolicyNo());
+        }else if (StringUtils.isNotEmpty(anShengCrawlerOrder.getCiPolicyNo()) && StringUtils.isEmpty(anShengCrawlerOrder.getBiPolicyNo())){
+            list.add(anShengCrawlerOrder.getCiPolicyNo());
+        } else if (StringUtils.isEmpty(anShengCrawlerOrder.getCiPolicyNo()) && StringUtils.isEmpty(anShengCrawlerOrder.getBiPolicyNo())){
+            list.add(anShengCrawlerOrder.getBiPolicyNo());
+        }
+        return list;
+    }
+
+
 }

+ 31 - 16
tenant/insurance/quotation-ansheng/src/main/java/com/jzg/quotation/ansheng/crawler/service/impl/AnShengCrawlerRequestImpl.java

@@ -1,9 +1,11 @@
 package com.jzg.quotation.ansheng.crawler.service.impl;
 
+import com.alibaba.fastjson2.JSONObject;
 import com.jzg.commons.constants.dict.InsOrderStatusEnum;
 import com.jzg.commons.entity.quote.vo.QuoteVo;
 import com.jzg.commons.entity.quote.vo.aggregated.*;
 import com.jzg.commons.entity.quote.vo.base.LoginBase;
+import com.jzg.commons.util.StringUtils;
 import com.jzg.quotation.ansheng.crawler.build.AnShengCrawlerApplyApplicationRequestBuild;
 import com.jzg.quotation.ansheng.crawler.build.AnShengCrawlerQuoteResultsVoBuild;
 import com.jzg.quotation.ansheng.crawler.component.AnShengCrawlerCacheComponent;
@@ -22,8 +24,8 @@ import com.jzg.quotation.commons.constant.InsuranceCode;
 import com.jzg.quotation.commons.filter.CarModelsFilterUtils;
 import com.jzg.quotation.commons.utils.TimeProcessing;
 import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.http.HttpHeaders;
-import org.springframework.util.StringUtils;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -33,6 +35,8 @@ import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 import java.util.stream.Collectors;
 
+
+@Slf4j
 @QuoteCrawlerService(value = InsuranceCode.INSURANCE_TPBX)
 @RequiredArgsConstructor
 public class AnShengCrawlerRequestImpl implements AnShengCrawlerRequest {
@@ -81,6 +85,7 @@ public class AnShengCrawlerRequestImpl implements AnShengCrawlerRequest {
         AnShengCrawlerSearchVehicleByVinResponse.DataDTO dataDTO = CarModelsFilterUtils.to(dataDTOS, quoteVo.getCarInfoVo());
         // 报价
         AnShengCrawlerCalculatePremiumApplyMessage crawlerCalculatePremiumApply = new AnShengCrawlerCalculatePremiumApplyMessage(quoteVo, dataDTO, userDetailResponse, departmentPlanCode, checkVehicleCodeSecretGenerate);
+        log.info("安盛报价参数:{}",JSONObject.toJSONString(crawlerCalculatePremiumApply));
         AnShengCrawlerCalculatePremiumApplyResponse calculatePremiumApply = anShengCrawlerRequestComponent.calculatePremiumApply(crawlerCalculatePremiumApply, httpHeaders);
         // 处理重复投保
         if (calculatePremiumApply.getMessage().contains("重复投保")) {
@@ -88,10 +93,22 @@ public class AnShengCrawlerRequestImpl implements AnShengCrawlerRequest {
             String endTime = TimeProcessing.minusOneSecondAfterYear(startTime);
             crawlerCalculatePremiumApply.getContracts().get(0).getPolicyBase().setInsuranceBeginTime(startTime);
             crawlerCalculatePremiumApply.getContracts().get(0).getPolicyBase().setInsuranceEndTime(endTime);
+            log.info("安盛报价重复投保参数:{}",JSONObject.toJSONString(crawlerCalculatePremiumApply));
             calculatePremiumApply = anShengCrawlerRequestComponent.calculatePremiumApply(crawlerCalculatePremiumApply, httpHeaders);
         }
         if (calculatePremiumApply.getCode() == 200) {
             // 缓存报价信息
+            //  处理报价返回起止时间
+            calculatePremiumApply.getData().getContracts().forEach(v ->{
+                crawlerCalculatePremiumApply.getContracts().forEach(va ->{
+                    AnShengCrawlerCalculatePremiumApplyMessage.ContractsDTO.PolicyBaseDTO policyBase = va.getPolicyBase();
+                    if (StringUtils.equals(v.getPlanCode(),policyBase.getPlanCode())){
+                        policyBase.setInsuranceBeginTime(v.getInsuranceBeginTime());
+                        policyBase.setInsuranceEndTime(v.getInsuranceEndTime());
+                    }
+                });
+            });
+            log.info("安盛报价返回数据:{}",JSONObject.toJSONString(calculatePremiumApply));
             AnShengCrawlerApplyApplicationRequest autoSpecialPromiseRequest = AnShengCrawlerApplyApplicationRequestBuild.build(crawlerCalculatePremiumApply, calculatePremiumApply, userDetailResponse, compulsoryVersionNo);
             // 缓存数据
             anShengCrawlerCacheComponent.cacheQuoteRequest(ordersNo, autoSpecialPromiseRequest);
@@ -149,9 +166,11 @@ public class AnShengCrawlerRequestImpl implements AnShengCrawlerRequest {
             AnShengCrawlerRuleCheckForSimpleResponse.DataDTO simpleData = ruleCheckForSimpleData.get(contract.getPolicyBase()
                     .getPlanCode());
             contract.getPolicyBase().setAlterableSpecialPromise(promiseData.getAlterableSpecialPromise());
-            contract.setPolicyAttachments(imagesInfo);
+            contract.setPolicyAttachments(new ArrayList<>());
             contract.getPolicyBase().setFirstTrialTaskNo(simpleData.getFirstTrialTaskNo());
+            contract.getTargetList().get(0).setVehicleTax(applicationRequest.getContracts().get(0).getTargetList().get(0).getVehicleTax());
         });
+        log.info("安盛核保参数:{}",JSONObject.toJSONString(applicationRequest));
         // 核保
         AnShengCrawlerApplyApplicationResponse applyApplicationResponse = anShengCrawlerRequestComponent.applyApplication(applicationRequest, httpHeaders);
         // 投保订单号保存
@@ -179,6 +198,7 @@ public class AnShengCrawlerRequestImpl implements AnShengCrawlerRequest {
      * @param applyApplicationResponse 核保信息
      */
     private void saveThePolicyNumber(String ordersNo, AnShengCrawlerApplyApplicationResponse applyApplicationResponse) {
+        log.info("安盛核保返回参数:{}", JSONObject.toJSONString(applyApplicationResponse));
         AnShengCrawlerOrder anShengCrawlerOrder = anShengCrawlerOrderService.getById(ordersNo);
         List<AnShengCrawlerOrder.NiInfo> niInfoList = new ArrayList<>();
         Optional.ofNullable(applyApplicationResponse.getData())
@@ -192,15 +212,18 @@ public class AnShengCrawlerRequestImpl implements AnShengCrawlerRequest {
                             .equals(dataDTO.getPlanCode()) || DepartmentPlanCode.PLAN_113.getCode()
                             .equals(dataDTO.getPlanCode())) {
                         anShengCrawlerOrder.setBiPolicyNo(dataDTO.getApplyPolicyNo());
+                    }else {
+                        String jy = com.jzg.commons.util.StringUtils.isEmpty(dataDTO.getProductCode()) ? "" : dataDTO.getProductCode();
+                        AnShengCrawlerOrder.NiInfo niInfo = new AnShengCrawlerOrder.NiInfo();
+                        niInfo.setNiPolicyNo(jy);
+                        niInfoList.add(niInfo);
                     }
-                    AnShengCrawlerOrder.NiInfo niInfo = new AnShengCrawlerOrder.NiInfo();
-                    niInfo.setNiPolicyNo(dataDTO.getApplyPolicyNo());
-                    niInfoList.add(niInfo);
                 });
         anShengCrawlerOrder.setNiInfos(niInfoList);
         anShengCrawlerOrderService.saveAnShengCrawlerOrder(anShengCrawlerOrder);
     }
 
+
     @Override
     public PaymentLinkResultsVo getPaymentLink(PaymentLinkVo paymentLinkVo) {
         // 请求头
@@ -211,18 +234,10 @@ public class AnShengCrawlerRequestImpl implements AnShengCrawlerRequest {
                 .getAgreementId(), httpHeaders);
         AnShengCrawlerOrder anShengCrawlerOrder = anShengCrawlerOrderService.getById(paymentLinkVo.getOrder()
                 .getOrdersNo());
-        // 获取投保单号
-        List<String> ciPolicyNo = new ArrayList<>(List.of(anShengCrawlerOrder.getCiPolicyNumber(), anShengCrawlerOrder.getBiPolicyNumber()));
-        List<String> collect = Optional.ofNullable(anShengCrawlerOrder.getNiInfos())
-                .orElse(new ArrayList<>())
-                .stream()
-                .map(AnShengCrawlerOrder.NiInfo::getNiPolicyNumber)
-                .toList();
-        ciPolicyNo.addAll(collect);
-        List<String> list = ciPolicyNo.stream().filter(StringUtils::hasText).toList();
         // 获取支付链接
-        AnShengCrawlerPaymentRequest anShengCrawlerPaymentRequest = new AnShengCrawlerPaymentRequest(list, userDetailResponse.getDepartmentCode(), anShengCrawlerOrder.getTotalPremium());
+        AnShengCrawlerPaymentRequest anShengCrawlerPaymentRequest = new AnShengCrawlerPaymentRequest(anShengCrawlerOrder, userDetailResponse.getDepartmentCode(), anShengCrawlerOrder.getTotalPremium());
         String paymentUrl = anShengCrawlerRequestComponent.payment(anShengCrawlerPaymentRequest, httpHeaders);
+        log.info("获取安盛支付二维码地址长度:{}",StringUtils.isNotEmpty(paymentUrl) ? paymentUrl.length() : "无法获取支付链接");
         return new PaymentLinkResultsVo(true, paymentUrl, "");
     }
 
@@ -286,7 +301,7 @@ public class AnShengCrawlerRequestImpl implements AnShengCrawlerRequest {
                 anShengCrawlerRequestComponent.downloadPdf(policyNo, httpHeaders);
             });
         });
-        return null;
+        return downloadPolicyResultVo;
     }
 
     @Override

+ 55 - 0
tenant/insurance/quotation-ansheng/src/main/java/com/jzg/quotation/ansheng/crawler/utils/InfoExtractUtil.java

@@ -0,0 +1,55 @@
+package com.jzg.quotation.ansheng.crawler.utils;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * 人员信息正则提取工具类
+ * 对应Python逻辑:提取 personnelName 和 applicantName 字段值
+ */
+public class InfoExtractUtil {
+
+    // 私有构造:工具类禁止实例化
+    private InfoExtractUtil() {
+    }
+
+    // 1. 编译正则表达式(全局复用,提升性能)
+    private static final Pattern PERSONNEL_PATTERN = Pattern.compile("[\"']personnelName[\"']\\s*:\\s*[\"'](.*?)[\"']", Pattern.DOTALL);
+    private static final Pattern APPLICANT_PATTERN = Pattern.compile("[\"']applicantName[\"']\\s*:\\s*[\"'](.*?)[\"']", Pattern.DOTALL);
+
+    /**
+     * 提取 personnelName 字段值
+     *
+     * @param input 待匹配的字符串(对应Python的 str(self.bjres))
+     * @return 匹配到的值,未匹配返回 null
+     */
+    public static String extractPersonnelName(String input) {
+        return extractFirstMatch(input, PERSONNEL_PATTERN);
+    }
+
+    /**
+     * 提取 applicantName 字段值
+     *
+     * @param input 待匹配的字符串
+     * @return 匹配到的值,未匹配返回 null
+     */
+    public static String extractApplicantName(String input) {
+        return extractFirstMatch(input, APPLICANT_PATTERN);
+    }
+
+    /**
+     * 通用提取方法:正则匹配,取第一个分组结果
+     *
+     * @param input   待匹配字符串
+     * @param pattern 编译好的正则对象
+     * @return 匹配值 / null
+     */
+    private static String extractFirstMatch(String input, Pattern pattern) {
+        if (input == null || input.isEmpty()) {
+            return null;
+        }
+        Matcher matcher = pattern.matcher(input);
+        // 找到匹配则返回第一个分组,否则返回null
+        return matcher.find() ? matcher.group(1) : null;
+    }
+}

+ 57 - 0
tenant/insurance/quotation-ansheng/src/main/java/com/jzg/quotation/ansheng/crawler/utils/PolicySpecialPromiseUtil.java

@@ -0,0 +1,57 @@
+package com.jzg.quotation.ansheng.crawler.utils;
+
+import com.jzg.commons.util.StringUtils;
+import com.jzg.quotation.ansheng.crawler.entity.request.AnShengCrawlerApplyApplicationRequest;
+import com.jzg.quotation.ansheng.crawler.entity.response.AnShengCrawlerCalculatePremiumApplyResponse;
+
+/**
+ * 保单特别约定生成工具类
+ * 对应Python代码逻辑,1:1还原
+ */
+public class PolicySpecialPromiseUtil {
+
+    // 工具类私有化构造方法,禁止实例化
+    private PolicySpecialPromiseUtil() {}
+
+    /**
+     * 生成可变特别约定字符串
+     * @param policyBase 保单基础信息列表(对应Python的self.policyBase)
+     * @param personnelName 人员姓名(行驶证车主)
+     * @param applicantName 投保人姓名
+     * @return 拼接后的特别约定字符串
+     */
+    public static void generateAlterableSpecialPromise(AnShengCrawlerApplyApplicationRequest.ContractsDTO.PolicyBaseDTO policyBase, String personnelName, String applicantName,
+                                                       AnShengCrawlerCalculatePremiumApplyResponse.DataDTO.ContractsDTO.PolicyBaseDTO baseDTO) {
+        String alterableSpecialPromise = "";
+        double price1 = baseDTO.getTotalNetPremium();
+        double price2 = baseDTO.getAddedValueTax();
+        // 核心逻辑:判断planCode是否为105
+        if ("105".equals(policyBase.getPlanCode())) {
+            // 分支1:planCode=105
+            if (StringUtils.isNotEmpty(personnelName) && StringUtils.isNotEmpty(applicantName) && StringUtils.equals(personnelName,applicantName)) {
+                // 人员姓名 = 投保人姓名
+                alterableSpecialPromise = String.format(
+                        "1、投保次日起,您可通过我司官网(www.axa.cn)、客服电话、营业网点核实承保及理赔信息,若对查询结果有异议,请拨打95550进行咨询。您也可微信搜索“AXAINS”关注我司公众号,享受更多保单服务。2、保险公司可以实物赔付方式承担机动车辆保险责任:如发生本保险合同约定的保险事故造成保险车辆损失或第三方财产损失,经被保险人、第三者及保险公司同意,保险公司可以向修理厂购买服务并以实物方式进行保险赔付。3、本保单保险费为含税金额,其中不含税保险费%.2f元、增值税%.2f元。",
+                        price1,
+                        price2
+                );
+            } else {
+                // 人员姓名 ≠ 投保人姓名,替换车主名称
+                alterableSpecialPromise = String.format(
+                        "1、本保单行驶证车主为耿晓霞。2、投保次日起,您可通过我司官网(www.axa.cn)、客服电话、营业网点核实承保及理赔信息,若对查询结果有异议,请拨打95550进行咨询。您也可微信搜索“AXAINS”关注我司公众号,享受更多保单服务。3、保险公司可以实物赔付方式承担机动车辆保险责任:如发生本保险合同约定的保险事故造成保险车辆损失或第三方财产损失,经被保险人、第三者及保险公司同意,保险公司可以向修理厂购买服务并以实物方式进行保险赔付。4、本保单保险费为含税金额,其中不含税保险费%.2f元、增值税%.2f元。",
+                        price1,
+                        price2
+                ).replace("耿晓霞", personnelName);
+            }
+        } else {
+            // 分支2:planCode≠105(两段逻辑完全一致,合并编写)
+            alterableSpecialPromise = String.format(
+                    "1、投保次日起,您可通过我司官网(www.axa.cn)、客服电话、营业网点核实承保及理赔信息,若对查询结果有异议,请拨打95550进行咨询。您也可微信搜索“AXAINS”关注我司公众号,享受更多保单服务。2、本保单承保非营运车辆,如用于营运运输或出租、租赁,发生交通事故,保险人不承担赔偿责任。3、保险公司可以实物赔付方式承担机动车辆保险责任:如发生本保险合同约定的保险事故造成保险车辆损失或第三方财产损失,经被保险人、第三者及保险公司同意,保险公司可以向修理厂购买服务并以实物方式进行保险赔付。4、本保单保险费为含税金额,其中不含税保险费%.2f元、增值税%.2f元。",
+                    price1,
+                    price2
+            );
+        }
+
+        policyBase.setAlterableSpecialPromise(alterableSpecialPromise);
+    }
+}

+ 25 - 3
tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/component/RequestComponent.java

@@ -125,6 +125,27 @@ public class RequestComponent {
         return webClient;
     }
 
+    /**
+     * 根据URL选择合适的WebClient(支持SSL)
+     *
+     * @param url 请求URL
+     * @return WebClient实例
+     */
+    private WebClient selectWebClientAs(String url) {
+        try {
+            if (url.contains("https://")) {
+                String domain = extractDomain(url);
+                if (webClientConfig != null) {
+                    return webClientConfig.createSecureWebClientAs(domain);
+                }
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+            log.info("创建安全WebClient失败,使用默认WebClient", e);
+        }
+        return webClient;
+    }
+
     /**
      * 从URL中提取域名
      *
@@ -694,14 +715,15 @@ public class RequestComponent {
      * @return 响应
      */
     public <Response> ResponseEntity<Response> formData(String url, MultiValueMap<String, Object> parts, Class<Response> responseClass, HttpHeaders headers) {
-        WebClient webClient = selectWebClient(url);
+        WebClient webClient = selectWebClientAs(url);
         return webClient.post()
                 .uri(url)
                 .headers(RequestComponent.setHeaders(headers))
-//                .contentType(MediaType.APPLICATION_FORM_URLENCODED)
+                .contentType(MediaType.MULTIPART_FORM_DATA)
                 .body(BodyInserters.fromMultipartData(parts))
                 .retrieve()
-                .toEntity(responseClass).doOnNext(responseBody -> System.out.println("响应内容: " + responseBody.getBody()))
+                .toEntity(responseClass)
+                .doOnNext(responseBody -> System.out.println("响应内容: " + responseBody.getBody()))
                 .block();
     }
 

+ 38 - 0
tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/config/AsyncThreadPoolConfig.java

@@ -0,0 +1,38 @@
+package com.jzg.quotation.commons.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
+
+import java.util.concurrent.Executor;
+import java.util.concurrent.ThreadPoolExecutor;
+
+@Configuration
+public class AsyncThreadPoolConfig {
+
+    /**
+     * 自定义异步线程池
+     */
+    @Bean("asyncTaskExecutor")  // 指定Bean名称,@Async可指定使用该线程池
+    public Executor asyncTaskExecutor() {
+        ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
+
+        // 核心线程数:CPU密集型=CPU核心数,IO密集型=2*CPU核心数
+        executor.setCorePoolSize(5);
+        // 最大线程数
+        executor.setMaxPoolSize(10);
+        // 队列容量
+        executor.setQueueCapacity(20);
+        // 线程空闲时间(秒)
+        executor.setKeepAliveSeconds(60);
+        // 线程名前缀(方便日志排查)
+        executor.setThreadNamePrefix("async-task-thread-");
+
+        // 拒绝策略:队列满了且线程数达到最大,如何处理
+        executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
+
+        // 初始化线程池
+        executor.initialize();
+        return executor;
+    }
+}

+ 3 - 0
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/SummaryQuotationApplication.java

@@ -10,6 +10,8 @@ import org.springframework.cloud.openfeign.EnableFeignClients;
 import org.springframework.context.annotation.ComponentScan;
 import org.springframework.data.mongodb.repository.config.EnableMongoRepositories;
 import org.springframework.data.mongodb.repository.support.SimpleMongoRepository;
+import org.springframework.scheduling.annotation.EnableAsync;
+
 @SpringBootApplication(scanBasePackages = {"com.jzg"})
 @MapperScan({"com.jzg.quotation.summary.mapper", "com.jzg.commons.mapper"})
 @EnableFeignClients(basePackages = {"com.jzg.quotation.commons.client","com.jzg.quotation.summary.client"})
@@ -21,6 +23,7 @@ import org.springframework.data.mongodb.repository.support.SimpleMongoRepository
         },
         repositoryBaseClass = SimpleMongoRepository.class // 强制同步模式
 )
+@EnableAsync
 public class SummaryQuotationApplication {
 
     public static void main(String[] args) {

+ 92 - 0
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/async/AnShengAsyncPayLink.java

@@ -0,0 +1,92 @@
+package com.jzg.quotation.summary.async;
+
+import com.alibaba.fastjson2.JSONObject;
+import com.jzg.commons.constants.CompanyConstants;
+import com.jzg.commons.entity.orders.po.InsOrders;
+import com.jzg.commons.entity.quote.vo.aggregated.PaymentLinkResultsVo;
+import com.jzg.commons.entity.quote.vo.aggregated.PaymentLinkVo;
+import com.jzg.commons.entity.quote.vo.base.OrderBase;
+import com.jzg.commons.util.AssertionUtils;
+import com.jzg.commons.util.StringUtils;
+import com.jzg.quotation.commons.service.QuotationBaseService;
+import com.jzg.quotation.summary.service.InsOrdersQrcodeService;
+import com.jzg.quotation.summary.service.InsOrdersService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Async;
+import org.springframework.stereotype.Component;
+import java.util.Objects;
+import java.util.concurrent.CompletableFuture;
+
+@Component
+@Slf4j
+public class AnShengAsyncPayLink {
+
+    @Autowired
+    InsOrdersQrcodeService insOrdersQrcodeService;
+
+    @Autowired
+    InsOrdersService insOrdersService;
+
+
+    @Async("asyncTaskExecutor")
+    public void paymentLink(QuotationBaseService quoteService,OrderBase order, String companyCode ){
+        try {
+            if (StringUtils.equals(CompanyConstants.TPBX.getCompanyCode(),companyCode)){
+                PaymentLinkVo paymentLinkVo = new PaymentLinkVo();
+                paymentLinkVo.setOrder(order);
+                CompletableFuture<PaymentLinkResultsVo> future = CompletableFuture.completedFuture(doUpdatePaymentLink(paymentLinkVo, quoteService));
+                PaymentLinkResultsVo paymentLinkResultsVo = future.get();
+                if (Objects.nonNull(paymentLinkResultsVo) && StringUtils.isNotEmpty(paymentLinkResultsVo.getPaymentLink())){
+                    InsOrders insOrders = insOrdersService.getById(order.getOrdersNo());
+                    AssertionUtils.isFail(Objects.isNull(insOrders), "订单不存在");
+                    // 保存支付链接
+                    insOrders.setPayLink(paymentLinkResultsVo.getPaymentLink());
+                    insOrdersService.updateById(insOrders);
+                    insOrdersQrcodeService.updateQrCode(insOrders);
+                }
+            }
+        }catch (Exception e){
+            e.printStackTrace();
+            log.error("异步查询支付二维码异常:{}",e.getMessage());
+        }
+    }
+
+
+    /**
+     * 实际执行重试 + 调用接口的业务方法(有返回值)
+     */
+    private PaymentLinkResultsVo doUpdatePaymentLink(PaymentLinkVo paymentLinkVo,QuotationBaseService quoteService) {
+        int retryCount = 0;
+        int maxRetry = 15;
+        long sleepTime = 3000;
+        PaymentLinkResultsVo paymentLink = null;
+
+        while (retryCount < maxRetry) {
+            try {
+                paymentLink = quoteService.getPaymentLink(paymentLinkVo);
+                log.info("第{}次获取支付链接信息:{}", retryCount, JSONObject.toJSONString(paymentLink));
+                // 获取到有效链接就退出重试
+                if (paymentLink != null && StringUtils.isNotEmpty(paymentLink.getPaymentLink())) {
+                    break;
+                }
+                Thread.sleep(sleepTime);
+            } catch (Exception e) {
+                e.printStackTrace();
+                log.error("异步查询安盛支付二维码异常信息:{}",e.getMessage());
+                try {
+                    Thread.sleep(sleepTime);
+                } catch (InterruptedException ie) {
+                    Thread.currentThread().interrupt();
+                    break;
+                }
+            } finally {
+                retryCount++;
+            }
+        }
+        return paymentLink;
+    }
+
+
+
+}

+ 7 - 13
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/factory/decorator/image/ImageParamHandlerDecorator.java

@@ -22,7 +22,6 @@ import java.util.stream.Collectors;
 public class ImageParamHandlerDecorator {
 
     private QuotationBaseService target;
-
     private final MinioClient minioClient;
 
     private final String bucketName;
@@ -31,6 +30,7 @@ public class ImageParamHandlerDecorator {
 
     private final QuoteImageRuleMappingService quoteImageRuleMappingService;
 
+
     public ImageParamHandlerDecorator(QuotationBaseService target, MinioClient minioClient, String bucketName, InsTaskImagesService insTaskImagesService, QuoteImageRuleMappingService quoteImageRuleMappingService) {
         this.target = target;
         this.minioClient = minioClient;
@@ -54,13 +54,13 @@ public class ImageParamHandlerDecorator {
             uploadImageVo.setImageVoList(new ArrayList<>());
         }
 
-        /*InsTaskImagesVo insTaskImagesVo = insTaskImagesService.selectByQuoteNo(uploadImageVo.getOrder().getQuoteNo());
+        InsTaskImagesVo insTaskImagesVo = insTaskImagesService.selectByQuoteNo(uploadImageVo.getOrder().getQuoteNo());
         List<ImagesVo> images = insTaskImagesVo.getImages();
         Map<String, List<ImagesVo>> groupImages = images.stream()
                 .collect(Collectors.groupingBy(ImagesVo::getImageType));
 
         Map<String, QuoteImageRuleMapping> quoteImageRuleMappingMap = quoteImageRuleMappingService.getQuoteImageRuleMapping(uploadImageVo.getOrder().fetchCompanyCode());
-
+        List<InsuranceImageVo> arrayList = new ArrayList<>();
         groupImages.forEach((imageType, ImageList) -> {
             InsuranceImageVo vo = new InsuranceImageVo();
             QuoteImageRuleMapping quoteImageRuleMapping = quoteImageRuleMappingMap.get(imageType);
@@ -80,16 +80,10 @@ public class ImageParamHandlerDecorator {
                 return imageDTO;
             }).collect(Collectors.toList());
             vo.setImageBase64List(imageDTOList);
-            uploadImageVo.getImageVoList().add(vo);
-        });*/
-
-
-//        uploadImageVo.getImageVoList().forEach(imageVo->{
-//            imageVo.getImageBase64List().forEach(base64->{
-//                String fileBase64 = getFileBase64(minioClient, bucketName, base64.getImageId());
-//                base64.setImageBase64Str(fileBase64);
-//            });
-//        });
+            arrayList.add(vo);
+            //uploadImageVo.getImageVoList().add(vo);
+        });
+        uploadImageVo.setImageVoList(arrayList);
         target.uploadImage(uploadImageVo);
     }
 

+ 7 - 0
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/InsOrdersQrcodeService.java

@@ -27,6 +27,13 @@ public interface InsOrdersQrcodeService extends IService<InsOrdersQrcode> {
      */
     InsOrdersQrcode saveQrCode(InsOrders orders);
 
+    /**
+     * 保存二维码
+     * @param orders
+     * @return
+     */
+    void updateQrCode(InsOrders orders);
+
     /**
      * 销毁二维码
      * @param orderNo

+ 16 - 0
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsOrdersQrcodeServiceImpl.java

@@ -73,6 +73,22 @@ public class InsOrdersQrcodeServiceImpl extends ServiceImpl<InsOrdersQrcodeMappe
         return insOrdersQrcode;
     }
 
+    @Override
+    public void updateQrCode(InsOrders orders) {
+        InsOrdersQrcode ordersQrcode = baseMapper.selectOne(new LambdaQueryWrapper<>(InsOrdersQrcode.class).eq(InsOrdersQrcode::getOrderno, orders.getId()));
+        String paylink = orders.getPayLink();
+        if(isHttpUrl(orders.getPayLink())){
+            paylink = paylink.replace("{", "").replace("}", "");
+            ordersQrcode.setJumpUrl(paylink);
+        }else{
+            if(paylink.contains("data:image/jpg;base64,")){
+                paylink = paylink.replace("data:image/jpg;base64,","");
+            }
+            ordersQrcode.setJumpUrl(paylink);
+        }
+        baseMapper.updateById(ordersQrcode);
+    }
+
     @Override
     public void destroyQrCode(String orderNo) {
         InsOrders orders = insOrdersService.getById(orderNo);

+ 1 - 1
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsOrdersServiceImpl.java

@@ -916,7 +916,7 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
             }
             insOrdersQrcode.setJumpUrl(paylink);
         }
-        insOrdersQrcode.setQrcodeStatus(0);
+        insOrdersQrcode.setQrcodeStatus(1);
         insOrdersQrcode.setCreatetime(LocalDateTime.now());
         insOrdersQrcodeMapper.insert(insOrdersQrcode);
     }