xuqiang 3 месяцев назад
Родитель
Сommit
457186170e

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

@@ -33,7 +33,10 @@ import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.http.HttpHeaders;
 
-import java.util.*;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 import java.util.stream.Collectors;
@@ -221,7 +224,15 @@ public class AnShengCrawlerRequestImpl implements AnShengCrawlerRequest {
         saveThePolicyNumber(ordersNo, applyApplicationResponse);
         UnderwritingResultsVo underwritingResultsVo = new UnderwritingResultsVo();
         AnShengCrawlerOrder anShengCrawlerOrder = anShengCrawlerOrderService.getById(ordersNo);
-        if (!applyApplicationResponse.getCode().equals(200)) {
+
+        PaymentLinkResultsVo paymentLinkResultsVo = new PaymentLinkResultsVo();
+        if (applyApplicationResponse.getCode().equals(200)) {
+            PaymentLinkVo paymentLinkVo = new PaymentLinkVo();
+            paymentLinkVo.setOrder(underwritingVo.getOrder());
+            paymentLinkResultsVo = loopAcquisitionPaymentLink(paymentLinkVo);
+        }
+
+        if (!applyApplicationResponse.getCode().equals(200) && StringUtils.isEmpty(paymentLinkResultsVo.getPaymentLink())) {
             underwritingResultsVo.setUnderwritingResult(applyApplicationResponse.getMessage());
             underwritingResultsVo.setUnderwritingStatus(InsOrderStatusEnum.AUDIT_FAIL);
             return underwritingResultsVo;
@@ -231,12 +242,49 @@ public class AnShengCrawlerRequestImpl implements AnShengCrawlerRequest {
             if (anShengCrawlerOrder.getNiInfos().size() > 0) {
                 underwritingResultsVo.setJyApplyNo(anShengCrawlerOrder.getNiInfos().get(0).getNiPolicyNumber());
             }
+            underwritingResultsVo.setPaymentLink(paymentLinkResultsVo.getPaymentLink());
             underwritingResultsVo.setUnderwritingStatus(InsOrderStatusEnum.PAY_PENDING);
         }
-        underwritingResultsVo.setPaymentLink("");
         return underwritingResultsVo;
     }
 
+
+
+    /**
+     *  调用接口的业务方法(有返回值)
+     */
+    private PaymentLinkResultsVo loopAcquisitionPaymentLink(PaymentLinkVo paymentLinkVo) {
+        int retryCount = 0;
+        int maxRetry = 15;
+        long sleepTime = 3000;
+        PaymentLinkResultsVo paymentLink = null;
+        while (retryCount < maxRetry) {
+            try {
+                paymentLink = 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;
+    }
+
+
+
+
     /**
      * 保存投保单号
      *

+ 1 - 1
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/async/AsyncGetPayLink.java

@@ -32,7 +32,7 @@ public class AsyncGetPayLink {
     @Async("asyncTaskExecutor")
     public void paymentLink(QuotationBaseService quoteService,OrderBase order, String companyCode ){
         try {
-            if (StringUtils.equals(CompanyConstants.TPBX.getCompanyCode(),companyCode) || StringUtils.equals(CompanyConstants.TKIC.getCompanyCode(),companyCode)
+            if (StringUtils.equals(CompanyConstants.TKIC.getCompanyCode(),companyCode)
                     || StringUtils.equals(CompanyConstants.TSBX.getCompanyCode(),companyCode) || StringUtils.equals(CompanyConstants.HTIC.getCompanyCode(),companyCode)
             ){
                 PaymentLinkVo paymentLinkVo = new PaymentLinkVo();