|
|
@@ -6,13 +6,13 @@ import com.jzg.commons.constants.quote.enums.base.InsuranceImageEnum;
|
|
|
import com.jzg.commons.entity.quote.vo.AttributionInformationVo;
|
|
|
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.entity.quote.vo.base.OrderBase;
|
|
|
+import com.jzg.commons.entity.quote.vo.image.InsuranceImageVo;
|
|
|
import com.jzg.commons.exception.SystemException;
|
|
|
import com.jzg.commons.util.StringUtils;
|
|
|
import com.jzg.quotation.commons.annotation.QuoteCrawlerService;
|
|
|
import com.jzg.quotation.commons.constant.InsuranceCode;
|
|
|
-import com.jzg.commons.entity.quote.vo.base.LoginBase;
|
|
|
-import com.jzg.commons.entity.quote.vo.image.InsuranceImageVo;
|
|
|
import com.jzg.quotation.commons.entity.DetectLoginRequest;
|
|
|
import com.jzg.quotation.commons.entity.GetCaptchaRequest;
|
|
|
import com.jzg.quotation.commons.entity.GetCaptchaResponse;
|
|
|
@@ -351,27 +351,123 @@ public class TaipingCrawlerRequestImpl implements TaipingCrawlerRequest {
|
|
|
|
|
|
@Override
|
|
|
public UnderwritingResultsVo underwriting(UnderwritingVo underwritingVo) {
|
|
|
+ // 获取配置信息
|
|
|
OrderBase order = underwritingVo.getOrder();
|
|
|
AttributionInformationVo attributionInformationVo = order.getAttributionInformationVo();
|
|
|
- TaipingCrawlerConfigureParameters parameters = ConfigureParametersConversion.conversionEntity(TaipingCrawlerConfigureParameters.class,
|
|
|
- attributionInformationVo.getConfigInfo());
|
|
|
+ TaipingCrawlerConfigureParameters parameters = ConfigureParametersConversion.conversionEntity(
|
|
|
+ TaipingCrawlerConfigureParameters.class, attributionInformationVo.getConfigInfo());
|
|
|
HttpHeaders httpHeaders = taiPingCrawlerRequestComponent.getHeaders(parameters.getGw_user_token());
|
|
|
+
|
|
|
+ // 获取订单信息
|
|
|
TaiPingCrawlerOrder taiPingCrawlerOrder = taiPingCrawlerOrderRepository.findByOrdersNo(underwritingVo.getOrder().getOrdersNo());
|
|
|
- // 验证信息
|
|
|
- TaiPingCrawlerPremiumCalculateData taiPingCrawlerPremiumCalculateData = taiPingCrawlerCacheComponent.getTaiPingCrawlerPremiumCalculateData(underwritingVo.getOrder()
|
|
|
- .getOrdersNo());
|
|
|
- TaiPingCrawlerPremiumCalculateRequest taiPingCrawlerPremiumCalculateRequest = taiPingCrawlerCacheComponent.getTaiPingCrawlerPremiumCalculateRequest(underwritingVo.getOrder()
|
|
|
- .getOrdersNo());
|
|
|
+
|
|
|
+ // 获取缓存的报价请求
|
|
|
+ TaiPingCrawlerPremiumCalculateRequest taiPingCrawlerPremiumCalculateRequest = taiPingCrawlerCacheComponent
|
|
|
+ .getTaiPingCrawlerPremiumCalculateRequest(underwritingVo.getOrder().getOrdersNo());
|
|
|
+
|
|
|
+ // 重新计算保费(核保前必须设置forceLinkCIFlag关联交商)
|
|
|
taiPingCrawlerPremiumCalculateRequest.getPfMainDto().setForceLinkCIFlag(true);
|
|
|
- TaiPingCrawlerBaseResponse<TaiPingCrawlerPremiumCalculateData> taiPingCrawlerPremiumCalculate = taiPingCrawlerRequestComponent.premiumCalculate(taiPingCrawlerPremiumCalculateRequest, httpHeaders, parameters);
|
|
|
- TaiPingCrawlerSubmitValidateRequest taiPingCrawlerSubmitValidateRequest = new TaiPingCrawlerSubmitValidateRequest(taiPingCrawlerPremiumCalculate.getData(), taiPingCrawlerPremiumCalculateRequest,taiPingCrawlerOrder);
|
|
|
- String request = JSON.toJSONString(taiPingCrawlerSubmitValidateRequest);
|
|
|
- TaiPingCrawlerBaseResponse<TaiPingCrawlerSubmitValidateData> taiPingCrawlerSubmitValidateData = taiPingCrawlerRequestComponent.submitValidate(taiPingCrawlerPremiumCalculate.getData(), httpHeaders,parameters);
|
|
|
- // 核保
|
|
|
+ log.info("[太平核保]保费重算请求: orderNo={}", taiPingCrawlerOrder.getCompanyOrderNo());
|
|
|
+ TaiPingCrawlerBaseResponse<TaiPingCrawlerPremiumCalculateData> recalculateResponse =
|
|
|
+ taiPingCrawlerRequestComponent.premiumCalculate(taiPingCrawlerPremiumCalculateRequest, httpHeaders, parameters);
|
|
|
+ if (!recalculateResponse.isSucc()) {
|
|
|
+ throw new SystemException("保费重算失败:" + recalculateResponse.getErrMsg());
|
|
|
+ }
|
|
|
+ log.info("[太平核保]保费重算成功");
|
|
|
+
|
|
|
+ // 提交验证
|
|
|
+ TaiPingCrawlerSubmitValidateRequest submitValidateRequest = new TaiPingCrawlerSubmitValidateRequest(
|
|
|
+ recalculateResponse.getData(), taiPingCrawlerPremiumCalculateRequest, taiPingCrawlerOrder);
|
|
|
+ log.info("[太平核保]提交验证请求: {}", JSON.toJSONString(submitValidateRequest));
|
|
|
+ TaiPingCrawlerBaseResponse<TaiPingCrawlerSubmitValidateData> submitValidateResponse =
|
|
|
+ taiPingCrawlerRequestComponent.submitValidate(recalculateResponse.getData(), httpHeaders, parameters);
|
|
|
+ log.info("[太平核保]提交验证响应: succ={}, errMsg={}", submitValidateResponse.isSucc(), submitValidateResponse.getErrMsg());
|
|
|
+ if (!submitValidateResponse.isSucc()) {
|
|
|
+ throw new SystemException("提交验证失败:" + submitValidateResponse.getErrMsg());
|
|
|
+ }
|
|
|
+
|
|
|
+ // 提交核保
|
|
|
TaiPingCrawlersSubmitToAuditRequest submitToAuditRequest = new TaiPingCrawlersSubmitToAuditRequest(taiPingCrawlerOrder.getCompanyOrderNo());
|
|
|
- TaiPingCrawlerBaseResponse<TaiPingCrawlersSubmitToAuditData> submitToAuditData = taiPingCrawlerRequestComponent.submitToAudit(submitToAuditRequest, httpHeaders,parameters);
|
|
|
+ log.info("[太平核保]提交核保请求: {}", JSON.toJSONString(submitToAuditRequest));
|
|
|
+ TaiPingCrawlerBaseResponse<TaiPingCrawlersSubmitToAuditData> submitToAuditResponse =
|
|
|
+ taiPingCrawlerRequestComponent.submitToAudit(submitToAuditRequest, httpHeaders, parameters);
|
|
|
+ log.info("[太平核保]提交核保响应: {}", JSON.toJSONString(submitToAuditResponse));
|
|
|
|
|
|
+ // 构建返回结果
|
|
|
UnderwritingResultsVo underwritingResultsVo = new UnderwritingResultsVo();
|
|
|
+ underwritingResultsVo.setOrdersNo(underwritingVo.getOrder().getOrdersNo());
|
|
|
+ underwritingResultsVo.setCompanyOrderNo(taiPingCrawlerOrder.getCompanyOrderNo());
|
|
|
+
|
|
|
+ // 核保请求失败
|
|
|
+ if (!submitToAuditResponse.isSucc()) {
|
|
|
+ underwritingResultsVo.setUnderwritingStatus(InsOrderStatusEnum.AUDIT_FAIL);
|
|
|
+ underwritingResultsVo.setUnderwritingResult(submitToAuditResponse.getErrMsg());
|
|
|
+ return underwritingResultsVo;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 解析核保结果
|
|
|
+ TaiPingCrawlersSubmitToAuditData submitToAuditData = submitToAuditResponse.getData();
|
|
|
+ if (submitToAuditData == null || submitToAuditData.getSubmitAuditResultDto() == null
|
|
|
+ || submitToAuditData.getSubmitAuditResultDto().getAuditResultList() == null
|
|
|
+ || submitToAuditData.getSubmitAuditResultDto().getAuditResultList().isEmpty()) {
|
|
|
+ underwritingResultsVo.setUnderwritingResult("核保处理中");
|
|
|
+ underwritingResultsVo.setUnderwritingStatus(InsOrderStatusEnum.STAFF_PROCESS);
|
|
|
+ return underwritingResultsVo;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 提取交强险和商业险核保结果
|
|
|
+ List<TaiPingCrawlersSubmitToAuditData.SubmitAuditResultDtoDTO.AuditResultListDTO> auditResultList =
|
|
|
+ submitToAuditData.getSubmitAuditResultDto().getAuditResultList();
|
|
|
+ String jqUnderWriteInd = "";
|
|
|
+ String syUnderWriteInd = "";
|
|
|
+ String jqProposalNo = "";
|
|
|
+ String syProposalNo = "";
|
|
|
+ for (TaiPingCrawlersSubmitToAuditData.SubmitAuditResultDtoDTO.AuditResultListDTO result : auditResultList) {
|
|
|
+ if ("0801".equals(result.getProductCode())) {
|
|
|
+ jqUnderWriteInd = result.getUnderWriteInd();
|
|
|
+ jqProposalNo = result.getProposalNo();
|
|
|
+ } else if ("0802".equals(result.getProductCode())) {
|
|
|
+ syUnderWriteInd = result.getUnderWriteInd();
|
|
|
+ syProposalNo = result.getProposalNo();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 设置投保单号
|
|
|
+ underwritingResultsVo.setJqApplyNo(jqProposalNo);
|
|
|
+ underwritingResultsVo.setSyApplyNo(syProposalNo);
|
|
|
+
|
|
|
+ // 根据underWriteInd判断核保状态(与queryOrderState保持一致的映射规则)
|
|
|
+ if ("8".equals(jqUnderWriteInd) || "9".equals(jqUnderWriteInd)
|
|
|
+ || "8".equals(syUnderWriteInd) || "9".equals(syUnderWriteInd)) {
|
|
|
+ // 人工核保
|
|
|
+ underwritingResultsVo.setUnderwritingResult("人工核保");
|
|
|
+ underwritingResultsVo.setUnderwritingStatus(InsOrderStatusEnum.STAFF_PROCESS);
|
|
|
+ } else if ("2".equals(jqUnderWriteInd) || "2".equals(syUnderWriteInd)) {
|
|
|
+ // 核保失败
|
|
|
+ underwritingResultsVo.setUnderwritingStatus(InsOrderStatusEnum.AUDIT_FAIL);
|
|
|
+ underwritingResultsVo.setUnderwritingResult("核保失败");
|
|
|
+ } else if (containsPass(jqUnderWriteInd) || containsPass(syUnderWriteInd)) {
|
|
|
+ // 核保通过,获取支付链接
|
|
|
+ underwritingResultsVo.setUnderwritingResult("核保通过");
|
|
|
+ underwritingResultsVo.setUnderwritingStatus(InsOrderStatusEnum.PAY_PENDING);
|
|
|
+ try {
|
|
|
+ PaymentLinkVo paymentLinkVo = new PaymentLinkVo();
|
|
|
+ paymentLinkVo.setOrder(underwritingVo.getOrder());
|
|
|
+ PaymentLinkResultsVo paymentLinkResultsVo = getPaymentLink(paymentLinkVo);
|
|
|
+ underwritingResultsVo.setPaymentLink(paymentLinkResultsVo.getPaymentLink());
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.warn("[太平核保]获取支付链接失败: {}", e.getMessage());
|
|
|
+ }
|
|
|
+ } else if ("6".equals(jqUnderWriteInd) || "6".equals(syUnderWriteInd)) {
|
|
|
+ // 已承保
|
|
|
+ underwritingResultsVo.setUnderwritingResult("已承保");
|
|
|
+ underwritingResultsVo.setUnderwritingStatus(InsOrderStatusEnum.UNDERWRITED);
|
|
|
+ } else {
|
|
|
+ // 未知状态,默认转人工处理
|
|
|
+ underwritingResultsVo.setUnderwritingResult("核保处理中");
|
|
|
+ underwritingResultsVo.setUnderwritingStatus(InsOrderStatusEnum.STAFF_PROCESS);
|
|
|
+ }
|
|
|
+
|
|
|
return underwritingResultsVo;
|
|
|
}
|
|
|
|