|
|
@@ -15,8 +15,6 @@ import com.jzg.commons.entity.quote.vo.AccidentalDrivingVo;
|
|
|
import com.jzg.commons.entity.quote.vo.CarInfoVo;
|
|
|
import com.jzg.commons.entity.quote.vo.QuoteVo;
|
|
|
import com.jzg.commons.entity.quote.vo.aggregated.*;
|
|
|
-import com.jzg.commons.entity.vo.CompanyClauseVo;
|
|
|
-import com.jzg.commons.entity.vo.InsCompanyClauseVo;
|
|
|
import com.jzg.commons.exception.SystemException;
|
|
|
import com.jzg.commons.util.AssertionUtils;
|
|
|
import com.jzg.commons.util.StringUtils;
|
|
|
@@ -32,7 +30,6 @@ import com.jzg.quotation.commons.utils.HttpUtil;
|
|
|
import com.jzg.quotation.guoren.api.build.GuoRenApiQuoteResultsVoBuild;
|
|
|
import com.jzg.quotation.guoren.api.component.GuoRenRequestApiComponent;
|
|
|
import com.jzg.quotation.guoren.api.component.GuorenDuplicateInsuranceComponent;
|
|
|
-import com.jzg.quotation.guoren.api.constant.enums.GuoRenRiskCode;
|
|
|
import com.jzg.quotation.guoren.api.constant.enums.PlatformInterfaceCode;
|
|
|
import com.jzg.quotation.guoren.api.entity.GuoRenApiOrder;
|
|
|
import com.jzg.quotation.guoren.api.entity.GuoRenConfigureParameters;
|
|
|
@@ -55,12 +52,10 @@ import org.springframework.util.ObjectUtils;
|
|
|
|
|
|
import java.io.File;
|
|
|
import java.io.FileOutputStream;
|
|
|
+import java.math.BigDecimal;
|
|
|
import java.util.*;
|
|
|
-import java.util.concurrent.TimeUnit;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
-import static com.jzg.quotation.commons.constant.CacheConstant.GR_SPECIAL_AGREEMENT_KEY;
|
|
|
-import static com.jzg.quotation.commons.constant.CacheConstant.GR_SPECIAL_AGREEMENT_TIME;
|
|
|
|
|
|
/**
|
|
|
* description:
|
|
|
@@ -122,8 +117,9 @@ public class GuoRenApiRequestImpl implements GuoRenApiRequest {
|
|
|
String noCarPremium = "";
|
|
|
String goodsCode = "";
|
|
|
GuoRenAccidentalDrivingVo accidentalDrivingVo = getGuoRenAccidentalDrivingVo(quoteVo.getAccidentalDrivings());
|
|
|
+ NonAutoInsOrderResponse nonAutoInsOrderResponse = null;
|
|
|
if (accidentalDrivingVo.getProdCode() != null) {
|
|
|
- NonAutoInsOrderResponse nonAutoInsOrderResponse = nonAutoInsOrder(quoteVo, accidentalDrivingVo,
|
|
|
+ nonAutoInsOrderResponse = nonAutoInsOrder(quoteVo, accidentalDrivingVo,
|
|
|
carPriceQuery.getInputvo(), parameters, vinQuery, url);
|
|
|
AssertionUtils.isEmpty(nonAutoInsOrderResponse.getData(), nonAutoInsOrderResponse.getMessage());
|
|
|
orderCode = nonAutoInsOrderResponse.getData().getOrderCode();
|
|
|
@@ -161,8 +157,13 @@ public class GuoRenApiRequestImpl implements GuoRenApiRequest {
|
|
|
guoRenApiOrder.setProductsCode(orderBase.getProductId());
|
|
|
guoRenApiOrder.setJqApplyNo(insuranceSlipResponse.getData().getProposalNoDetailVo().getProposalNoCI());
|
|
|
guoRenApiOrder.setSyApplyNo(insuranceSlipResponse.getData().getProposalNoDetailVo().getProposalNoBI());
|
|
|
+ guoRenApiOrder.setJqPremium(premiumResponse.getData().getSumPremiumCI() != null ? BigDecimal.valueOf(premiumResponse.getData().getSumPremiumCI()) : BigDecimal.ZERO);
|
|
|
+ guoRenApiOrder.setSyPremium(premiumResponse.getData().getSumPremiumBI() != null ? BigDecimal.valueOf(premiumResponse.getData().getSumPremiumBI()) : BigDecimal.ZERO);
|
|
|
+ guoRenApiOrder.setJyPremium(new BigDecimal(jsPremium));
|
|
|
+ guoRenApiOrder.setCarTax(BigDecimal.valueOf(premiumResponse.getData().getSumPayTax()));
|
|
|
guoRenApiOrder.setOthBusinessNo(carPriceQuery.getInputvo());
|
|
|
- return handleSuccessQuote(guoRenApiOrder,quoteVo, premiumResponse);
|
|
|
+ guoRenApiOrder.setNoCarOrderNo(nonAutoInsOrderResponse != null ? nonAutoInsOrderResponse.getData().getOrderCode() : "");
|
|
|
+ return handleSuccessQuote(guoRenApiOrder,quoteVo, premiumResponse,nonAutoInsOrderResponse);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -171,9 +172,9 @@ public class GuoRenApiRequestImpl implements GuoRenApiRequest {
|
|
|
return GuoRenApiQuoteResultsVoBuild.buildQuoteFailResultsVo(response);
|
|
|
}
|
|
|
|
|
|
- private QuoteResultsVo handleSuccessQuote(GuoRenApiOrder guoRenApiOrder,QuoteVo quoteVo,PremiumResponse response) {
|
|
|
+ private QuoteResultsVo handleSuccessQuote(GuoRenApiOrder guoRenApiOrder,QuoteVo quoteVo,PremiumResponse response,NonAutoInsOrderResponse nonAutoInsOrderResponse) {
|
|
|
guoRenApiOrderService.save(guoRenApiOrder);
|
|
|
- return GuoRenApiQuoteResultsVoBuild.buildQuoteResultsVo(quoteVo,response);
|
|
|
+ return GuoRenApiQuoteResultsVoBuild.buildQuoteResultsVo(quoteVo,response,nonAutoInsOrderResponse);
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -206,9 +207,8 @@ public class GuoRenApiRequestImpl implements GuoRenApiRequest {
|
|
|
if (StringUtils.isNotEmpty(jqStatus) && StringUtils.isEmpty(syStatus)) {
|
|
|
if (jqStatus.equals("1") || jqStatus.equals("3")) {
|
|
|
underwritingResultsVo.setUnderwritingStatus(InsOrderStatusEnum.PAY_PENDING);
|
|
|
- PaymentLinkVo paymentLinkVo = new PaymentLinkVo();
|
|
|
- paymentLinkVo.setOrder(underwritingVo.getOrder());
|
|
|
- getPaymentLink(paymentLinkVo);
|
|
|
+ SignatureResponse signature = getSignature(guoRenApiOrder,url);
|
|
|
+ underwritingResultsVo.setPaymentLink(signature.getQrCode());
|
|
|
} else if (jqStatus.equals("2")) {
|
|
|
underwritingResultsVo.setUnderwritingStatus(InsOrderStatusEnum.AUDIT_FAIL);
|
|
|
underwritingResultsVo.setUnderwritingResult(message);
|
|
|
@@ -218,9 +218,9 @@ public class GuoRenApiRequestImpl implements GuoRenApiRequest {
|
|
|
if (StringUtils.isEmpty(syStatus) && StringUtils.isNotEmpty(syStatus)) {
|
|
|
if (syStatus.equals("1") || syStatus.equals("3")) {
|
|
|
underwritingResultsVo.setUnderwritingStatus(InsOrderStatusEnum.PAY_PENDING);
|
|
|
- PaymentLinkVo paymentLinkVo = new PaymentLinkVo();
|
|
|
- paymentLinkVo.setOrder(underwritingVo.getOrder());
|
|
|
- getPaymentLink(paymentLinkVo);
|
|
|
+ SignatureResponse signature = getSignature(guoRenApiOrder,url);
|
|
|
+ underwritingResultsVo.setPaymentLink(signature.getQrCode());
|
|
|
+
|
|
|
} else if (syStatus.equals("2")) {
|
|
|
underwritingResultsVo.setUnderwritingStatus(InsOrderStatusEnum.AUDIT_FAIL);
|
|
|
underwritingResultsVo.setUnderwritingResult(message);
|
|
|
@@ -234,19 +234,25 @@ public class GuoRenApiRequestImpl implements GuoRenApiRequest {
|
|
|
underwritingResultsVo.setUnderwritingResult(message);
|
|
|
} else if (jqStatus.equals("1") && syStatus.equals("1")) {
|
|
|
underwritingResultsVo.setUnderwritingStatus(InsOrderStatusEnum.PAY_PENDING);
|
|
|
- PaymentLinkVo paymentLinkVo = new PaymentLinkVo();
|
|
|
- paymentLinkVo.setOrder(underwritingVo.getOrder());
|
|
|
- getPaymentLink(paymentLinkVo);
|
|
|
+ SignatureResponse signature = getSignature(guoRenApiOrder,url);
|
|
|
+ underwritingResultsVo.setPaymentLink(signature.getQrCode());
|
|
|
} else if (jqStatus.equals("3") && syStatus.equals("3")) {
|
|
|
underwritingResultsVo.setUnderwritingStatus(InsOrderStatusEnum.PAY_PENDING);
|
|
|
- PaymentLinkVo paymentLinkVo = new PaymentLinkVo();
|
|
|
- paymentLinkVo.setOrder(underwritingVo.getOrder());
|
|
|
- getPaymentLink(paymentLinkVo);
|
|
|
+ SignatureResponse signature = getSignature(guoRenApiOrder,url);
|
|
|
+ underwritingResultsVo.setPaymentLink(signature.getQrCode());
|
|
|
}
|
|
|
}
|
|
|
return underwritingResultsVo;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 通过二维码扫描获取电子投保单签名
|
|
|
+ */
|
|
|
+ public SignatureResponse getSignature(GuoRenApiOrder guoRenApiOrder,String url) {
|
|
|
+ return guoRenRequestApiComponent.signature(guoRenApiOrder,url);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
/**
|
|
|
* 获取支付链接
|
|
|
* @param paymentLinkVo
|
|
|
@@ -613,14 +619,17 @@ public class GuoRenApiRequestImpl implements GuoRenApiRequest {
|
|
|
imageVoList.forEach(insuranceImageVo -> {
|
|
|
List<String> imageIds = new ArrayList<>();
|
|
|
for (InsuranceImageVo.ImageDTO imageDTO : insuranceImageVo.getImageBase64List()) {
|
|
|
- String imageBase64Str = imageDTO.getImageBase64Str();
|
|
|
- byte[] imageBytes = Base64.getDecoder().decode(imageBase64Str);
|
|
|
try {
|
|
|
//需要设置一个临时图片路径
|
|
|
- FileOutputStream fileOutputStream = new FileOutputStream("图片临时路径");
|
|
|
- fileOutputStream.write(imageBytes);
|
|
|
- fileOutputStream.close();
|
|
|
- FilePart file1 = new FilePart("file", new File("图片临时路径"));
|
|
|
+ File tempFile = File.createTempFile("upload_temp_", getFileSuffix(imageDTO.getImageName()));
|
|
|
+ FilePart file1 = new FilePart("file", tempFile);
|
|
|
+ tempFile.deleteOnExit();
|
|
|
+
|
|
|
+ // 将字节数组写入临时文件
|
|
|
+ try (FileOutputStream fos = new FileOutputStream(tempFile)) {
|
|
|
+ fos.write(imageDTO.getImageByte());
|
|
|
+ fos.flush();
|
|
|
+ }
|
|
|
|
|
|
Part[] parts = {file1, new StringPart("businessNo", formMap.get("businessNo").toString()),
|
|
|
new StringPart("operatorCode",
|
|
|
@@ -652,4 +661,15 @@ public class GuoRenApiRequestImpl implements GuoRenApiRequest {
|
|
|
insImagesUploadCacheComponent.setUploadImageCache(insuranceUploadImageVo.getOrder().getInsuranceCompanyCode(), map);
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 工具方法:从文件名中提取后缀(如 "test.txt" → "txt")
|
|
|
+ */
|
|
|
+ private static String getFileSuffix(String fileName) {
|
|
|
+ if (fileName.contains(".")) {
|
|
|
+ return fileName.substring(fileName.lastIndexOf("."));
|
|
|
+ }
|
|
|
+ return "bin"; // 默认后缀(二进制文件)
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
}
|