wlzboy
2025-09-27 c1147646b9ef1d713a202d7ab8cf3ea8d677f142
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/VehicleEvaluationQrcodeServiceImpl.java
@@ -5,6 +5,7 @@
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.QRCodeUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.system.config.QRCodeConfig;
import com.ruoyi.system.mapper.VehicleInfoMapper;
import com.ruoyi.system.domain.VehicleInfo;
import com.ruoyi.system.mapper.VehicleEvaluationQrcodeMapper;
@@ -27,6 +28,9 @@
    @Autowired
    private VehicleInfoMapper vehicleInfoMapper;
    @Autowired
    private QRCodeConfig qrCodeConfig;
    @Value("${ruoyi.profile}")
    private String uploadPath;
@@ -125,9 +129,48 @@
            return null;
        }
        // 检查车辆是否存在
        VehicleInfo vehicleInfo = vehicleInfoMapper.selectVehicleInfoByVehicleNo(vehicleNo);
        if (vehicleInfo == null) {
        // 注意:这里不检查车辆信息表,允许为任意车牌号生成二维码
        // 检查是否已存在二维码
        VehicleEvaluationQrcode existingQrcode = vehicleEvaluationQrcodeMapper.selectVehicleEvaluationQrcodeByVehicleNo(vehicleNo);
        if (existingQrcode != null) {
            return existingQrcode;
        }
        // 生成二维码内容
        String qrcodeContent = "EVAL:" + vehicleNo;
        String qrcodeUrl = qrCodeConfig.generateUrl(vehicleNo);
        // 生成带车牌号的二维码图片为base64格式
        String qrcodeImageBase64 = QRCodeUtils.generateQRCodeWithVehicleNoToBase64(qrcodeUrl, vehicleNo);
        if (qrcodeImageBase64 != null) {
            VehicleEvaluationQrcode qrcode = new VehicleEvaluationQrcode();
            qrcode.setVehicleNo(vehicleNo);
            qrcode.setQrcodeUrl(qrcodeUrl);
            qrcode.setQrcodeContent(qrcodeContent);
            qrcode.setQrcodeImage(qrcodeImageBase64);
            qrcode.setStatus("0");
            qrcode.setCreateBy("system");
            qrcode.setCreateTime(DateUtils.getNowDate());
            int result = vehicleEvaluationQrcodeMapper.insertVehicleEvaluationQrcode(qrcode);
            if (result > 0) {
                return qrcode;
            }
        }
        return null;
    }
    /**
     * 生成车辆评价二维码(不检查车辆信息表)
     *
     * @param vehicleNo 车牌号
     * @return 二维码信息
     */
    private VehicleEvaluationQrcode generateVehicleEvaluationQrcodeWithoutVehicleCheck(String vehicleNo) {
        if (StringUtils.isEmpty(vehicleNo)) {
            return null;
        }
@@ -139,10 +182,10 @@
        // 生成二维码内容
        String qrcodeContent = "EVAL:" + vehicleNo;
        String qrcodeUrl = "http://localhost:" + serverPort + "/evaluation?vehicle=" + vehicleNo;
        String qrcodeUrl = qrCodeConfig.generateUrl(vehicleNo);
        // 生成二维码图片为base64格式
        String qrcodeImageBase64 = QRCodeUtils.generateQRCodeToBase64(qrcodeUrl);
        // 生成带车牌号的二维码图片为base64格式
        String qrcodeImageBase64 = QRCodeUtils.generateQRCodeWithVehicleNoToBase64(qrcodeUrl, vehicleNo);
        if (qrcodeImageBase64 != null) {
            VehicleEvaluationQrcode qrcode = new VehicleEvaluationQrcode();
@@ -176,11 +219,7 @@
            return null;
        }
        // 检查车辆是否存在
        VehicleInfo vehicleInfo = vehicleInfoMapper.selectVehicleInfoByVehicleNo(vehicleNo);
        if (vehicleInfo == null) {
            return null;
        }
        // 注意:这里不检查车辆信息表,允许为任意车牌号生成二维码
        // 检查是否已存在二维码
        VehicleEvaluationQrcode existingQrcode = vehicleEvaluationQrcodeMapper.selectVehicleEvaluationQrcodeByVehicleNo(vehicleNo);
@@ -191,8 +230,8 @@
            existingQrcode.setUpdateBy("system");
            existingQrcode.setUpdateTime(DateUtils.getNowDate());
            
            // 重新生成二维码图片为base64格式
            String qrcodeImageBase64 = QRCodeUtils.generateQRCodeToBase64(qrcodeUrl);
            // 重新生成带车牌号的二维码图片为base64格式
            String qrcodeImageBase64 = QRCodeUtils.generateQRCodeWithVehicleNoToBase64(qrcodeUrl, vehicleNo);
            
            if (qrcodeImageBase64 != null) {
                existingQrcode.setQrcodeImage(qrcodeImageBase64);
@@ -205,8 +244,8 @@
        // 生成二维码内容
        String qrcodeContent = "EVAL:" + vehicleNo;
        // 生成二维码图片为base64格式
        String qrcodeImageBase64 = QRCodeUtils.generateQRCodeToBase64(qrcodeUrl);
        // 生成带车牌号的二维码图片为base64格式
        String qrcodeImageBase64 = QRCodeUtils.generateQRCodeWithVehicleNoToBase64(qrcodeUrl, vehicleNo);
        if (qrcodeImageBase64 != null) {
            VehicleEvaluationQrcode qrcode = new VehicleEvaluationQrcode();
@@ -249,4 +288,32 @@
        return successCount;
    }
    /**
     * 批量生成车辆评价二维码(指定车牌号列表)
     *
     * @param vehicleNos 车牌号列表
     * @param qrcodeUrl 二维码URL(可选)
     * @return 结果
     */
    @Override
    public int batchGenerateVehicleEvaluationQrcode(List<String> vehicleNos, String qrcodeUrl) {
        int successCount = 0;
        for (String vehicleNo : vehicleNos) {
            if (StringUtils.isEmpty(vehicleNo)) {
                continue; // 跳过空的车牌号
            }
            VehicleEvaluationQrcode qrcode;
            if (StringUtils.isEmpty(qrcodeUrl)) {
                qrcode = generateVehicleEvaluationQrcodeWithoutVehicleCheck(vehicleNo);
            } else {
                qrcode = generateVehicleEvaluationQrcode(vehicleNo, qrcodeUrl);
            }
            if (qrcode != null) {
                successCount++;
            }
        }
        return successCount;
    }
}