|
|
@@ -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;
|
|
|
}
|
|
|
|
|
|
}
|