|
|
@@ -31,8 +31,11 @@ import lombok.extern.slf4j.Slf4j;
|
|
|
import org.springframework.http.HttpHeaders;
|
|
|
import org.springframework.util.StringUtils;
|
|
|
|
|
|
+import java.io.IOException;
|
|
|
import java.net.URLEncoder;
|
|
|
import java.nio.charset.StandardCharsets;
|
|
|
+import java.nio.file.Files;
|
|
|
+import java.nio.file.Paths;
|
|
|
import java.util.*;
|
|
|
import java.util.function.Function;
|
|
|
import java.util.stream.Collectors;
|
|
|
@@ -89,6 +92,7 @@ public class TaiShanCrawlerRequestImpl implements TaiShanCrawlerRequest {
|
|
|
HttpHeaders headers = taiShanCrawlerQuoteProcessService.getHeaders(attributionInformationVo.getUsername(), parameters.getComCode());
|
|
|
// 2.0 车型查询
|
|
|
TaiShanCrawlerCarRequest taiShanCrawlerCarRequest = new TaiShanCrawlerCarRequest(quoteVo,parameters.getComCode());
|
|
|
+ //车型查询
|
|
|
TaiShanCrawlerCarResponse taiShanCrawlerCarResponse = taiShanCrawlerRequestComponent.queryCarModels(taiShanCrawlerCarRequest, headers);
|
|
|
// 2.1 获取相同的车型
|
|
|
List<TaiShanCrawlerCarResponse.CarModelInfo> models = taiShanCrawlerCarResponse.getResult();
|
|
|
@@ -115,15 +119,18 @@ public class TaiShanCrawlerRequestImpl implements TaiShanCrawlerRequest {
|
|
|
|
|
|
// 3.0 报价接口
|
|
|
TaiShanCrawlerQuotationRequest taiShanCrawlerQuotationRequest = TaiShanCrawlerQuoteRequestVoBuild.toQuotationDto(quoteVo,modelsDTO,currentValue,parameters,taiShanCrawlerDeptResponse,attributionInformationVo,policyPersonId,insuredPersonId);
|
|
|
+ log.info("taiShanCrawlerQuotationRequest参数的值:{}", JSON.toJSONString(taiShanCrawlerQuotationRequest));
|
|
|
TaiShanCrawlerQuotationResponse taiShanCrawlerQuotationResponse = taiShanCrawlerRequestComponent.quotation(taiShanCrawlerQuotationRequest, headers,CIRCULATE_NUMBER);
|
|
|
log.info("taiShanCrawlerQuotationResponse参数的值:{}", JSON.toJSONString(taiShanCrawlerQuotationResponse));
|
|
|
TaiShanCrawlerQuotationResponse.ResultDTO.ExceptionDTO exception = taiShanCrawlerQuotationResponse.getResult().getException();
|
|
|
String errMsg = null;
|
|
|
TaiShanCrawlerQuotationSaveResponse taiShanCrawlerQuotationSaveResponse = null;
|
|
|
+ TaiShanCrawlerRiskManagementResponse taiShanCrawlerRiskManagementResponse = null;
|
|
|
boolean success = false;
|
|
|
if (exception.getCode().equals("H1")){
|
|
|
// 3.1 保存报价信息接口
|
|
|
this.resultCoverSave(quoteVo,taiShanCrawlerQuotationRequest,taiShanCrawlerQuotationResponse);
|
|
|
+ log.info("taiShanCrawlerQuotationRequest:{}", JSON.toJSONString(taiShanCrawlerQuotationRequest));
|
|
|
taiShanCrawlerQuotationSaveResponse = taiShanCrawlerRequestComponent.saveQuotation(taiShanCrawlerQuotationRequest, headers);
|
|
|
log.info("taiShanCrawlerQuotationSaveResponse参数的值:{}", JSON.toJSONString(taiShanCrawlerQuotationSaveResponse));
|
|
|
TaiShanCrawlerQuotationSaveResponse.Result.Exception saveException = taiShanCrawlerQuotationSaveResponse.getResult().getException();
|
|
|
@@ -132,6 +139,11 @@ public class TaiShanCrawlerRequestImpl implements TaiShanCrawlerRequest {
|
|
|
taiShanCrawlerOrder.setOrdersNo(quoteVo.getOrder().getOrdersNo());
|
|
|
taiShanCrawlerOrderService.save(taiShanCrawlerQuotationSaveResponse, taiShanCrawlerOrder);
|
|
|
success = true;
|
|
|
+
|
|
|
+ //风险管控
|
|
|
+ String proposalNo = taiShanCrawlerQuotationSaveResponse.getResult().getCompulsoryInsurance().getProductInfo().getProposalNo();
|
|
|
+ TaiShanCrawlerRiskManagementRequest taiShanCrawlerRiskManagementRequest = new TaiShanCrawlerRiskManagementRequest(proposalNo);
|
|
|
+ taiShanCrawlerRiskManagementResponse = taiShanCrawlerRequestComponent.getRiskManagement(taiShanCrawlerRiskManagementRequest, headers);
|
|
|
}else{
|
|
|
errMsg = saveException.getMsg();
|
|
|
}
|
|
|
@@ -140,6 +152,7 @@ public class TaiShanCrawlerRequestImpl implements TaiShanCrawlerRequest {
|
|
|
}
|
|
|
return TaiShanCrawlerQuoteResultsVoBuild.buildQuoteResultsVo(quoteVo,
|
|
|
taiShanCrawlerQuotationSaveResponse,
|
|
|
+ taiShanCrawlerRiskManagementResponse,
|
|
|
errMsg,success);
|
|
|
}
|
|
|
|
|
|
@@ -213,8 +226,7 @@ public class TaiShanCrawlerRequestImpl implements TaiShanCrawlerRequest {
|
|
|
*/
|
|
|
@Override
|
|
|
public UnderwritingResultsVo underwriting(UnderwritingVo underwritingVo) {
|
|
|
-
|
|
|
-
|
|
|
+ log.info("underwritingVo:{}", JSON.toJSONString(underwritingVo));
|
|
|
// 1.0 获取认证信息和用户配置
|
|
|
AttributionInformationVo attributionInformationVo = underwritingVo.getOrder().getAttributionInformationVo();
|
|
|
TaiShanCrawlerConfigureParameters parameters = ConfigureParametersConversion.conversionEntity(TaiShanCrawlerConfigureParameters.class, attributionInformationVo.getConfigInfo());
|
|
|
@@ -230,9 +242,16 @@ public class TaiShanCrawlerRequestImpl implements TaiShanCrawlerRequest {
|
|
|
|
|
|
UnderwritingResultsVo underwritingResultsVo = new UnderwritingResultsVo();
|
|
|
if ("200".equals(taiShanCrawlerUnderwritingResponse.getCode())) {
|
|
|
+ //核保成功
|
|
|
underwritingResultsVo.setUnderwritingStatus(InsOrderStatusEnum.PAY_PENDING);
|
|
|
underwritingResultsVo.setJqApplyNo(taiShanCrawlerUnderwritingResponse.getResult().getJqAppNo());
|
|
|
underwritingResultsVo.setSyApplyNo(taiShanCrawlerUnderwritingResponse.getResult().getSyAppNo());
|
|
|
+
|
|
|
+ // 获取缴费地址
|
|
|
+ PaymentLinkVo paymentLinkVo = new PaymentLinkVo();
|
|
|
+ paymentLinkVo.setOrder(underwritingVo.getOrder());
|
|
|
+ PaymentLinkResultsVo paymentLinkResultsVo = getPaymentLink(paymentLinkVo);
|
|
|
+ underwritingResultsVo.setPaymentLink(paymentLinkResultsVo.getPaymentLink());
|
|
|
} else {//核保失败
|
|
|
underwritingResultsVo.setUnderwritingStatus(InsOrderStatusEnum.AUDIT_FAIL);
|
|
|
StringBuilder sb = new StringBuilder();
|
|
|
@@ -258,18 +277,17 @@ public class TaiShanCrawlerRequestImpl implements TaiShanCrawlerRequest {
|
|
|
TaiShanCrawlerOrder taiShanCrawlerOrder = taiShanCrawlerOrderService.getByOrdersNo(insuranceUploadImageVo.getOrder().getOrdersNo());
|
|
|
// 上传影像文件请求参数
|
|
|
TaiShanCrawlerImageUploadRequest taiShanCrawlerImageUploadRequest = new TaiShanCrawlerImageUploadRequest();
|
|
|
- taiShanCrawlerImageUploadRequest.setBiProposalNo(taiShanCrawlerOrder.getBiPolicyNo());
|
|
|
- taiShanCrawlerImageUploadRequest.setCiProposalNo(taiShanCrawlerOrder.getCiPolicyNo());
|
|
|
+ taiShanCrawlerImageUploadRequest.setBiProposalNo(taiShanCrawlerOrder.getSyApplyNo());
|
|
|
+ taiShanCrawlerImageUploadRequest.setCiProposalNo(taiShanCrawlerOrder.getCiApplyNo());
|
|
|
taiShanCrawlerImageUploadRequest.setCompanyCode(parameters.getComCode());
|
|
|
|
|
|
List<TaiShanCrawlerImageUploadRequest.ImageNode> imageNodes = new LinkedList<>();
|
|
|
for (InsuranceImageVo imageVo : insuranceUploadImageVo.getImageVoList()) {
|
|
|
TaiShanCrawlerImageUploadRequest.ImageNode imageNode = new TaiShanCrawlerImageUploadRequest.ImageNode();
|
|
|
- imageNode.setType(imageVo.getImageType());
|
|
|
-
|
|
|
+ imageNode.setType(getImageType(imageVo.getImageCode()));
|
|
|
List<TaiShanCrawlerImageUploadRequest.ImageInfo> images = new ArrayList<>();
|
|
|
for (InsuranceImageVo.ImageDTO imageDTO : imageVo.getImageBase64List()) {
|
|
|
- images.add(new TaiShanCrawlerImageUploadRequest.ImageInfo(imageDTO.getImageId(), imageDTO.getImageBase64Str()));
|
|
|
+ images.add(new TaiShanCrawlerImageUploadRequest.ImageInfo(imageDTO.getImageName(), imageDTO.getImageBase64Str()));
|
|
|
}
|
|
|
imageNode.setImages(images);
|
|
|
imageNodes.add(imageNode);
|
|
|
@@ -279,11 +297,40 @@ public class TaiShanCrawlerRequestImpl implements TaiShanCrawlerRequest {
|
|
|
taiShanCrawlerImageUploadRequest.setOperatorName(parameters.getSaleName());
|
|
|
taiShanCrawlerImageUploadRequest.setOrderNo(taiShanCrawlerOrder.getOrderNo());
|
|
|
taiShanCrawlerImageUploadRequest.setUploadFlag("D");
|
|
|
-
|
|
|
TaiShanCrawlerImageUploadResponse taiShanCrawlerImageUploadResponse = taiShanCrawlerRequestComponent.uploadImage(taiShanCrawlerImageUploadRequest, headers);
|
|
|
log.info("taiShanCrawlerImageUploadResponse对象的值:{}", JSON.toJSONString(taiShanCrawlerImageUploadResponse));
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+ public static String getImageType(String str) {
|
|
|
+ String idcard = "C02|C03|C04|D02|D03|D04|SFZ_01|SFZ_02";//身份证
|
|
|
+ String autoBook = "C01|D01";//行车本
|
|
|
+ String regCert = "TAR05";//登记证书
|
|
|
+ String checkCarPic = "C0500|C0501|C0502|C0503|C0504|C0505|C0506|C0507|C0508|C0509|C0510";//验车照片
|
|
|
+ String elecAppDoc = "INSURANCE_POLICY";//电子投保单
|
|
|
+ String appFormFolder = "INSURANCE_POLICY";//投保单
|
|
|
+ String otherData = "DX_00|ZGZ_00|LD_00|YP_00|XC00|GC00|GX00|YHK_01|Y02|Y03|Y04|SQ00|LZ_01";//其他资料
|
|
|
+
|
|
|
+ if(idcard.contains(str)) {
|
|
|
+ return "Idcard";
|
|
|
+ }else if(autoBook.contains(str)){
|
|
|
+ return "autoBook";
|
|
|
+ }else if(regCert.contains(str)){
|
|
|
+ return "regCert";
|
|
|
+ }else if(checkCarPic.contains(str)){
|
|
|
+ return "checkCarPic";
|
|
|
+ }else if(elecAppDoc.contains(str)){
|
|
|
+ return "elecAppDoc";
|
|
|
+ }else if(appFormFolder.contains(str)){
|
|
|
+ return "appFormFolder";
|
|
|
+ }else if(otherData.contains(str)){
|
|
|
+ return "otherData";
|
|
|
+ }else{
|
|
|
+ return str;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
@Override
|
|
|
public void queryClauseData(ClauseDataVo clauseDataVo) {
|
|
|
|
|
|
@@ -301,6 +348,7 @@ public class TaiShanCrawlerRequestImpl implements TaiShanCrawlerRequest {
|
|
|
AttributionInformationVo attributionInformationVo = paymentLinkVo.getOrder().getAttributionInformationVo();
|
|
|
TaiShanCrawlerConfigureParameters parameters = ConfigureParametersConversion.conversionEntity(TaiShanCrawlerConfigureParameters.class, attributionInformationVo.getConfigInfo());
|
|
|
HttpHeaders headers = taiShanCrawlerQuoteProcessService.getHeaders(attributionInformationVo.getUsername(), parameters.getComCode());
|
|
|
+ log.info("headers:{}", JSON.toJSONString(headers));
|
|
|
TaiShanCrawlerOrder ziJinCrawlerOrder = taiShanCrawlerOrderService.getByOrdersNo(paymentLinkVo.getOrder().getOrdersNo());
|
|
|
|
|
|
// 获取支付信息
|
|
|
@@ -333,31 +381,90 @@ public class TaiShanCrawlerRequestImpl implements TaiShanCrawlerRequest {
|
|
|
syBatchNo = payRisk.getBatchNo();
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ // 判断险种类型并生成支付链接(参考 Python 逻辑)
|
|
|
String payUrl = "";
|
|
|
- if (jqBatchNo.equals("") && syBatchNo.equals("")) {
|
|
|
- // 获取交易单号
|
|
|
- TaiShanCrawlerPaymentCardRequest cardRequest = new TaiShanCrawlerPaymentCardRequest(ziJinCrawlerOrder.getOrderNo(), jqAppNo, jquniqueNo, syAppNo ,syUniqueNo);
|
|
|
- TaiShanCrawlerPaymentCardResponse taiShanCrawlerPaymentCardResponse = taiShanCrawlerRequestComponent.getPaymentCard(cardRequest, headers);
|
|
|
- jqBatchNo = taiShanCrawlerPaymentCardResponse.getResult().getBatchNo();
|
|
|
- syBatchNo = taiShanCrawlerPaymentCardResponse.getResult().getBatchNo();
|
|
|
- }
|
|
|
- if(jqBatchNo.equals("")){
|
|
|
- TaiShanCrawlerPaymentUrlRequest urlRequest = new TaiShanCrawlerPaymentUrlRequest(syBatchNo, jqAppNo, syAppNo);
|
|
|
- payUrl = "http://www.taishanpic.com.cn/phonepay/payRealNameCheck.jsp" + toQueryString(urlRequest);
|
|
|
- }else{
|
|
|
- TaiShanCrawlerPaymentUrlRequest urlRequest = new TaiShanCrawlerPaymentUrlRequest(jqBatchNo, jqAppNo, syAppNo);
|
|
|
- payUrl = "http://www.taishanpic.com.cn/phonepay/payRealNameCheck.jsp" + toQueryString(urlRequest);
|
|
|
+ if (StringUtils.hasText(jqAppNo) && StringUtils.hasText(jquniqueNo)
|
|
|
+ && StringUtils.hasText(syAppNo) && StringUtils.hasText(syUniqueNo)) {
|
|
|
+ log.info("交商(交强险+商业险)");
|
|
|
+ // 交商(交强险+商业险)
|
|
|
+ if (StringUtils.hasText(jqBatchNo) && StringUtils.hasText(syBatchNo)) {
|
|
|
+ log.info("已经生成交易单号");
|
|
|
+ // 已经生成交易单号
|
|
|
+ payUrl = buildPayUrl(jqBatchNo, jqAppNo, syAppNo);
|
|
|
+ } else {
|
|
|
+ log.info("未生成交易单号,先获取 batchNo");
|
|
|
+ // 未生成交易单号,先获取 batchNo
|
|
|
+ TaiShanCrawlerPaymentCardRequest cardRequest = new TaiShanCrawlerPaymentCardRequest(
|
|
|
+ ziJinCrawlerOrder.getOrderNo(), jqAppNo, jquniqueNo, syAppNo, syUniqueNo);
|
|
|
+
|
|
|
+ TaiShanCrawlerPaymentCardResponse cardResponse = taiShanCrawlerRequestComponent.getPaymentCard(cardRequest, headers);
|
|
|
+ String batchNo = cardResponse.getResult().getBatchNo();
|
|
|
+ jqBatchNo = batchNo;
|
|
|
+ syBatchNo = batchNo;
|
|
|
+ payUrl = buildPayUrl(batchNo, jqAppNo, syAppNo);
|
|
|
+ }
|
|
|
+ } else if (StringUtils.hasText(jqAppNo) && StringUtils.hasText(jquniqueNo)) {
|
|
|
+ log.info("单交(仅交强险)");
|
|
|
+ // 单交(仅交强险)
|
|
|
+ if (StringUtils.hasText(jqBatchNo)) {
|
|
|
+ log.info("已经生成交易单号");
|
|
|
+ // 已经生成交易单号
|
|
|
+ payUrl = buildPayUrl(jqBatchNo, jqAppNo, "");
|
|
|
+ } else {
|
|
|
+ log.info("未生成交易单号");
|
|
|
+ // 未生成交易单号
|
|
|
+ TaiShanCrawlerPaymentCardRequest cardRequest = new TaiShanCrawlerPaymentCardRequest(
|
|
|
+ ziJinCrawlerOrder.getOrderNo(), jqAppNo, jquniqueNo, "", "");
|
|
|
+
|
|
|
+ TaiShanCrawlerPaymentCardResponse cardResponse = taiShanCrawlerRequestComponent.getPaymentCard(cardRequest, headers);
|
|
|
+ jqBatchNo = cardResponse.getResult().getBatchNo();
|
|
|
+ payUrl = buildPayUrl(jqBatchNo, jqAppNo, "");
|
|
|
+ }
|
|
|
+ } else if (StringUtils.hasText(syAppNo) && StringUtils.hasText(syUniqueNo)) {
|
|
|
+ log.info("单商(仅商业险)");
|
|
|
+ // 单商(仅商业险)
|
|
|
+ if (StringUtils.hasText(syBatchNo)) {
|
|
|
+ log.info("已经生成交易单号");
|
|
|
+ // 已经生成交易单号
|
|
|
+ payUrl = buildPayUrl(syBatchNo, "", syAppNo);
|
|
|
+ } else {
|
|
|
+ log.info("未生成交易单号");
|
|
|
+ // 未生成交易单号
|
|
|
+ TaiShanCrawlerPaymentCardRequest cardRequest = new TaiShanCrawlerPaymentCardRequest(
|
|
|
+ ziJinCrawlerOrder.getOrderNo(), "", "", syAppNo, syUniqueNo);
|
|
|
+
|
|
|
+ TaiShanCrawlerPaymentCardResponse cardResponse = taiShanCrawlerRequestComponent.getPaymentCard(cardRequest, headers);
|
|
|
+ syBatchNo = cardResponse.getResult().getBatchNo();
|
|
|
+ payUrl = buildPayUrl(syBatchNo, "", syAppNo);
|
|
|
+ }
|
|
|
}
|
|
|
- if(com.jzg.commons.util.StringUtils.isNotBlank(payUrl)){
|
|
|
+ log.info("payUrl:{}", payUrl);
|
|
|
+ if(StringUtils.hasText(payUrl)){
|
|
|
paymentLinkResultsVo.setPayLinkStatus(true);
|
|
|
paymentLinkResultsVo.setPaymentLink(payUrl);
|
|
|
}else{
|
|
|
paymentLinkResultsVo.setPayLinkStatus(false);
|
|
|
paymentLinkResultsVo.setErrorMsg("未获取到支付链接");
|
|
|
}
|
|
|
+ log.info("paymentLinkResultsVo:{}", JSON.toJSONString(paymentLinkResultsVo));
|
|
|
+
|
|
|
return paymentLinkResultsVo;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 构建支付URL
|
|
|
+ *
|
|
|
+ * @param batchNo 交易单号
|
|
|
+ * @param jqAppNo 交强险投保单号
|
|
|
+ * @param syAppNo 商业险投保单号
|
|
|
+ * @return 支付URL
|
|
|
+ */
|
|
|
+ private String buildPayUrl(String batchNo, String jqAppNo, String syAppNo) {
|
|
|
+ TaiShanCrawlerPaymentUrlRequest urlRequest = new TaiShanCrawlerPaymentUrlRequest(batchNo, jqAppNo, syAppNo);
|
|
|
+ return "http://www.taishanpic.com.cn/phonepay/payRealNameCheck.jsp" + toQueryString(urlRequest);
|
|
|
+ }
|
|
|
+
|
|
|
private static final ObjectMapper MAPPER = new ObjectMapper();
|
|
|
|
|
|
public static String toQueryString(Object obj) {
|