Bläddra i källkod

Merge branch 'master' into wrq_dev

wangrq 2 månader sedan
förälder
incheckning
84d33236af

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

@@ -39,14 +39,12 @@ import org.springframework.util.MultiValueMap;
 import java.net.URLEncoder;
 import java.nio.charset.StandardCharsets;
 import java.time.Year;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
+import java.util.*;
 import java.util.concurrent.TimeUnit;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 
 @Slf4j
@@ -335,7 +333,7 @@ public class AnShengCrawlerRequestImpl implements AnShengCrawlerRequest {
             } else if (DepartmentPlanCode.PLAN_109.getCode().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();
+                String jy = StringUtils.isEmpty(dataDTO.getProductCode()) ? "" : dataDTO.getProductCode();
                 AnShengCrawlerOrder.NiInfo niInfo = new AnShengCrawlerOrder.NiInfo();
                 niInfo.setNiPolicyNo(jy);
                 niInfoList.add(niInfo);
@@ -467,18 +465,74 @@ public class AnShengCrawlerRequestImpl implements AnShengCrawlerRequest {
 
     @Override
     public OrderStatusResultVo queryOrderState(OrderStatusVo orderStatusVo) {
-        // 获取订单信息
-        AnShengCrawlerOrder anShengCrawlerOrder = anShengCrawlerOrderService.getById(orderStatusVo.getOrder().getOrdersNo());
-        // 获取请求头
-        HttpHeaders httpHeaders = anShengCrawlerQuoteProcessService.getHttpHeaders(orderStatusVo.getOrder().getAttributionInformationVo());
-        // 归属信息
-        AnShengCrawlerGetUserDetailResponse.DataDTO.AgentDefineDTO userDetailResponse = anShengCrawlerQuoteProcessService.getUserDetailResponse(orderStatusVo.getOrder().getAgreementId(), httpHeaders);
-        // 查询订单状态
-        AnShengCrawlerComprehensiveQueryInsurenetRequest crawlerComprehensiveQueryInsurenet = new AnShengCrawlerComprehensiveQueryInsurenetRequest(userDetailResponse.getAgentCode(), userDetailResponse.getDepartmentCode(), anShengCrawlerOrder.getOrderNo(), anShengCrawlerOrder.getRecordingTime());
-        AnShengCrawlerComprehensiveQueryInsurenetResponse queryDocumentsInformationResponse = anShengCrawlerRequestComponent.comprehensiveQueryInsurenet(crawlerComprehensiveQueryInsurenet, httpHeaders);
-        List<AnShengCrawlerComprehensiveQueryInsurenetResponse.DataDTO.ListDTO> list = queryDocumentsInformationResponse.getData().getList();
-
-        return null;
+        OrderStatusResultVo resultVo = new OrderStatusResultVo();
+        // 默认状态:若后续流程未匹配到明确状态,则回退到原始状态
+        InsOrderStatusEnum defaultStatus = InsOrderStatusEnum.matchKey(orderStatusVo.getInsOrders().getOrderStatus());
+        resultVo.setOrderStatus(defaultStatus);
+        try {
+            // 1. 获取基础信息
+            AnShengCrawlerOrder crawlerOrder = anShengCrawlerOrderService.getById(orderStatusVo.getOrder().getOrdersNo());
+            HttpHeaders httpHeaders = anShengCrawlerQuoteProcessService.getHttpHeaders(orderStatusVo.getOrder().getAttributionInformationVo());
+            AnShengCrawlerGetUserDetailResponse.DataDTO.AgentDefineDTO userDetail = anShengCrawlerQuoteProcessService.getUserDetailResponse(orderStatusVo.getOrder().getAgreementId(), httpHeaders);
+            // 2. 查询订单状态
+            AnShengCrawlerComprehensiveQueryInsurenetRequest request = new AnShengCrawlerComprehensiveQueryInsurenetRequest(userDetail.getAgentCode(), userDetail.getDepartmentCode(), crawlerOrder.getOrderNo(), crawlerOrder.getRecordingTime());
+            AnShengCrawlerComprehensiveQueryInsurenetResponse response = anShengCrawlerRequestComponent.comprehensiveQueryInsurenet(request, httpHeaders);
+
+            if (response == null || response.getData() == null || response.getData().getList() == null) {
+                return resultVo;
+            }
+            Set<String> targetPolicyNos = Stream.of(crawlerOrder.getCiPolicyNo(), crawlerOrder.getBiPolicyNo())
+                    .filter(StringUtils::isNotEmpty)
+                    .collect(Collectors.toSet());
+            List<AnShengCrawlerComprehensiveQueryInsurenetResponse.DataDTO.ListDTO.PolicyConciseDetailsDTO> matchedDetails =
+                    response.getData().getList().stream()
+                            .map(AnShengCrawlerComprehensiveQueryInsurenetResponse.DataDTO.ListDTO::getPolicyConciseDetails)
+                            .filter(Objects::nonNull)
+                            .filter(details -> {
+                                Set<String> currentPolicyNos = details.stream()
+                                        .map(AnShengCrawlerComprehensiveQueryInsurenetResponse.DataDTO.ListDTO.PolicyConciseDetailsDTO::getApplyPolicyNo)
+                                        .collect(Collectors.toSet());
+                                return currentPolicyNos.equals(targetPolicyNos);
+                            })
+                            .findFirst()
+                            .orElse(null);
+            if (matchedDetails == null || matchedDetails.isEmpty()) {
+                return resultVo;
+            }
+            List<String> underwriteMarks = matchedDetails.stream().map(AnShengCrawlerComprehensiveQueryInsurenetResponse.DataDTO.ListDTO.PolicyConciseDetailsDTO::getUnderwriteMark).collect(Collectors.toList());
+            String baseMark = underwriteMarks.get(0);
+            boolean allMarksSame = underwriteMarks.stream().allMatch(mark -> Objects.equals(baseMark, mark));
+            if (!allMarksSame) {
+                return resultVo;
+            }
+            if ("9".equals(baseMark) || "2".equals(baseMark)) {
+                boolean isPayPending = "9".equals(baseMark);
+                // 获取支付链接
+                PaymentLinkVo paymentLinkVo = new PaymentLinkVo();
+                paymentLinkVo.setOrder(orderStatusVo.getOrder());
+                PaymentLinkResultsVo paymentLinkResultsVo = loopAcquisitionPaymentLink(paymentLinkVo);
+                resultVo.setOrderStatus(isPayPending ? InsOrderStatusEnum.PAY_PENDING : InsOrderStatusEnum.UNDERWRITED);
+                resultVo.setOrderStatusStr(isPayPending ? "4" : "5");
+                resultVo.setPaymentLink(paymentLinkResultsVo.getPaymentLink());
+                resultVo.setErrorMsg("");
+                for (AnShengCrawlerComprehensiveQueryInsurenetResponse.DataDTO.ListDTO.PolicyConciseDetailsDTO detail : matchedDetails) {
+                    String planCode = detail.getPlanCode();
+                    if ("105".equals(planCode)) {
+                        resultVo.setJqPolicyno(detail.getPolicyNo());
+                        resultVo.setJqApplyNo(detail.getApplyPolicyNo());
+                    } else if ("109".equals(planCode)) {
+                        resultVo.setSyPolicyno(detail.getPolicyNo());
+                        resultVo.setSyApplyNo(detail.getApplyPolicyNo());
+                    } else if ("P13".equals(planCode)) {
+                        resultVo.setJyPolicyno(detail.getPolicyNo());
+                        resultVo.setJyApplyNo(detail.getApplyPolicyNo());
+                    }
+                }
+            }
+        } catch (Exception e) {
+            log.error("查询安盛订单状态异常, ordersNo: {}", orderStatusVo.getOrder().getOrdersNo(), e);
+        }
+        return resultVo;
     }
 
 }

+ 2 - 1
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/service/impl/DaJiaCrawlerQuoteProcessServiceImpl.java

@@ -61,7 +61,8 @@ public class DaJiaCrawlerQuoteProcessServiceImpl implements DaJiaCrawlerQuotePro
                 DaJiaCrawlerAuthenticateResponse daJiaCrawlerCaptchaResponse = DESEncryption.decryptStrToObject(response.getResult(), DaJiaCrawlerAuthenticateResponse.class);
                 // 校验token
                 String token = checkToken(daJiaCrawlerCaptchaResponse.getUserCode(), daJiaCrawlerCaptchaResponse.getIdToken());
-                return daJiaCrawlerCacheComponent.cacheAuthorization(token, daJiaCrawlerCaptchaResponse.getUserCode(), username);
+                String userCode = daJiaCrawlerCaptchaResponse.getUserCode();
+                return daJiaCrawlerCacheComponent.cacheAuthorization(token, com.jzg.commons.util.StringUtils.isNotEmpty(userCode) ? userCode : username, username);
             }
 
             String message = Optional.ofNullable(responseEntity.getBody())