Просмотр исходного кода

修改bug:
车险报价,扫码后二维码不出现,车牌号没有,起保日期和实际对不上

jiakai 4 месяцев назад
Родитель
Сommit
18b338eb89

+ 20 - 2
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/controller/QrCodeController.java

@@ -3,6 +3,7 @@ package com.jzg.quotation.summary.controller;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.jzg.commons.constants.Constants;
+import com.jzg.commons.constants.quote.enums.quote.RiskCode;
 import com.jzg.commons.core.base.BaseController;
 import com.jzg.commons.core.page.HttpResult;
 import com.jzg.commons.entity.orders.po.*;
@@ -12,9 +13,9 @@ import com.jzg.commons.util.AssertionUtils;
 import com.jzg.commons.util.LocalDateTimeUtils;
 import com.jzg.commons.util.StringUtils;
 import com.jzg.quotation.commons.client.PlatformClient;
-import com.jzg.commons.constants.quote.enums.quote.RiskCode;
 import com.jzg.quotation.summary.entity.vo.QrCodeVo;
 import com.jzg.quotation.summary.service.*;
+import com.jzg.quotation.summary.utils.QrCodeUtil;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import jakarta.validation.constraints.NotBlank;
@@ -177,7 +178,24 @@ public class QrCodeController extends BaseController {
             modelAndView.addObject("data", qrCodeVo);
             if (Constants.CONFIG_TYPE_1.equals(config.getType())) {
                 modelAndView.setViewName("qrcode1");
-                qrCodeVo.setQrCodeUrl("data:image/png;base64," + ordersQrcode.getJumpUrl());
+                String jumpUrl = ordersQrcode.getJumpUrl();
+                String finalQrUrl;
+
+                // 如果是 http 地址,下载图片并转 Base64
+                if (jumpUrl.startsWith("http://") || jumpUrl.startsWith("https://")) {
+                    try {
+                        String qrImageBase64 = QrCodeUtil.createQrBase64(jumpUrl);
+                        finalQrUrl = "data:image/png;base64," + qrImageBase64;
+                    } catch (Exception e) {
+                        // 下载失败,直接用原地址
+                        finalQrUrl = jumpUrl;
+                    }
+                } else {
+                    // 本身就是 base64
+                    finalQrUrl = "data:image/png;base64," + jumpUrl;
+                }
+
+                qrCodeVo.setQrCodeUrl(finalQrUrl);
             } else {
                 modelAndView.setViewName("qrcode");
                 qrCodeVo.setQrCodeUrl(ordersQrcode.getJumpUrl());

+ 2 - 2
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/controller/UnifyOrderManager.java

@@ -283,8 +283,8 @@ public class UnifyOrderManager {
                 costs.setVvTax(formatPremium(costs.getVvTax()));               // 车船税
                 costs.setSumPremium(formatPremium(costs.getSumPremium()));     // 总保费
             }
-            quoteResultsVo.setCiRiskInfoVo(quoteVo.getCiRiskInfoVo());
-            quoteResultsVo.setBiRiskInfoVo(quoteVo.getBiRiskInfoVo());
+//            quoteResultsVo.setCiRiskInfoVo(quoteVo.getCiRiskInfoVo());
+//            quoteResultsVo.setBiRiskInfoVo(quoteVo.getBiRiskInfoVo());
             quoteResultsVo.setQuoteStatus(quoteResultsVo.getQuoteStatusEnum().getCode());
             quoteResultsVo.setOrdersNo(ordersNo);
             // 报价后更新订单

+ 1 - 1
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/entity/vo/QrCodeVo.java

@@ -170,6 +170,6 @@ public class QrCodeVo implements Serializable {
                 this.jyEndDate = insOrdersRisk.getEndDate().format(formatter);
             }
         }
-        this.cPlateNo = carInfo.getEngineNo();
+        this.cPlateNo = carInfo.getLicenseNo();
     }
 }

+ 29 - 0
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/utils/QrCodeUtil.java

@@ -0,0 +1,29 @@
+package com.jzg.quotation.summary.utils;
+
+import com.google.zxing.*;
+import com.google.zxing.client.j2se.MatrixToImageWriter;
+import com.google.zxing.common.BitMatrix;
+import com.google.zxing.qrcode.QRCodeWriter;
+import java.io.ByteArrayOutputStream;
+import java.util.Base64;
+
+public class QrCodeUtil {
+
+    public static String createQrBase64(String content) {
+        try {
+            QRCodeWriter writer = new QRCodeWriter();
+            BitMatrix matrix = writer.encode(
+                content,
+                BarcodeFormat.QR_CODE,
+                120, 120
+            );
+
+            ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
+            MatrixToImageWriter.writeToStream(matrix, "PNG", outputStream);
+            byte[] bytes = outputStream.toByteArray();
+            return Base64.getEncoder().encodeToString(bytes);
+        } catch (Exception e) {
+            return null;
+        }
+    }
+}