package com.ruoyi.system.service.impl;
|
|
import java.util.Date;
|
import java.util.List;
|
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;
|
import com.ruoyi.system.domain.VehicleEvaluationQrcode;
|
import com.ruoyi.system.service.IVehicleEvaluationQrcodeService;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.stereotype.Service;
|
|
/**
|
* 车辆评价二维码Service业务层处理
|
*
|
* @author ruoyi
|
* @date 2025-01-27
|
*/
|
@Service
|
public class VehicleEvaluationQrcodeServiceImpl implements IVehicleEvaluationQrcodeService {
|
@Autowired
|
private VehicleEvaluationQrcodeMapper vehicleEvaluationQrcodeMapper;
|
|
@Autowired
|
private VehicleInfoMapper vehicleInfoMapper;
|
|
@Autowired
|
private QRCodeConfig qrCodeConfig;
|
|
@Value("${ruoyi.profile}")
|
private String uploadPath;
|
|
@Value("${server.port}")
|
private String serverPort;
|
|
/**
|
* 查询车辆评价二维码
|
*
|
* @param qrcodeId 车辆评价二维码主键
|
* @return 车辆评价二维码
|
*/
|
@Override
|
public VehicleEvaluationQrcode selectVehicleEvaluationQrcodeByQrcodeId(Long qrcodeId) {
|
return vehicleEvaluationQrcodeMapper.selectVehicleEvaluationQrcodeByQrcodeId(qrcodeId);
|
}
|
|
/**
|
* 根据车牌号查询车辆评价二维码
|
*
|
* @param vehicleNo 车牌号
|
* @return 车辆评价二维码
|
*/
|
@Override
|
public VehicleEvaluationQrcode selectVehicleEvaluationQrcodeByVehicleNo(String vehicleNo) {
|
return vehicleEvaluationQrcodeMapper.selectVehicleEvaluationQrcodeByVehicleNo(vehicleNo);
|
}
|
|
/**
|
* 查询车辆评价二维码列表
|
*
|
* @param vehicleEvaluationQrcode 车辆评价二维码
|
* @return 车辆评价二维码
|
*/
|
@Override
|
public List<VehicleEvaluationQrcode> selectVehicleEvaluationQrcodeList(VehicleEvaluationQrcode vehicleEvaluationQrcode) {
|
return vehicleEvaluationQrcodeMapper.selectVehicleEvaluationQrcodeList(vehicleEvaluationQrcode);
|
}
|
|
/**
|
* 新增车辆评价二维码
|
*
|
* @param vehicleEvaluationQrcode 车辆评价二维码
|
* @return 结果
|
*/
|
@Override
|
public int insertVehicleEvaluationQrcode(VehicleEvaluationQrcode vehicleEvaluationQrcode) {
|
vehicleEvaluationQrcode.setCreateTime(DateUtils.getNowDate());
|
return vehicleEvaluationQrcodeMapper.insertVehicleEvaluationQrcode(vehicleEvaluationQrcode);
|
}
|
|
/**
|
* 修改车辆评价二维码
|
*
|
* @param vehicleEvaluationQrcode 车辆评价二维码
|
* @return 结果
|
*/
|
@Override
|
public int updateVehicleEvaluationQrcode(VehicleEvaluationQrcode vehicleEvaluationQrcode) {
|
vehicleEvaluationQrcode.setUpdateTime(DateUtils.getNowDate());
|
return vehicleEvaluationQrcodeMapper.updateVehicleEvaluationQrcode(vehicleEvaluationQrcode);
|
}
|
|
/**
|
* 批量删除车辆评价二维码
|
*
|
* @param qrcodeIds 需要删除的车辆评价二维码主键
|
* @return 结果
|
*/
|
@Override
|
public int deleteVehicleEvaluationQrcodeByQrcodeIds(Long[] qrcodeIds) {
|
return vehicleEvaluationQrcodeMapper.deleteVehicleEvaluationQrcodeByQrcodeIds(qrcodeIds);
|
}
|
|
/**
|
* 删除车辆评价二维码信息
|
*
|
* @param qrcodeId 车辆评价二维码主键
|
* @return 结果
|
*/
|
@Override
|
public int deleteVehicleEvaluationQrcodeByQrcodeId(Long qrcodeId) {
|
return vehicleEvaluationQrcodeMapper.deleteVehicleEvaluationQrcodeByQrcodeId(qrcodeId);
|
}
|
|
/**
|
* 生成车辆评价二维码
|
*
|
* @param vehicleNo 车牌号
|
* @return 二维码信息
|
*/
|
@Override
|
public VehicleEvaluationQrcode generateVehicleEvaluationQrcode(String vehicleNo) {
|
if (StringUtils.isEmpty(vehicleNo)) {
|
return 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;
|
}
|
|
// 检查是否已存在二维码
|
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;
|
}
|
|
/**
|
* 生成车辆评价二维码(带URL参数)
|
*
|
* @param vehicleNo 车牌号
|
* @param qrcodeUrl 二维码URL
|
* @return 二维码信息
|
*/
|
@Override
|
public VehicleEvaluationQrcode generateVehicleEvaluationQrcode(String vehicleNo, String qrcodeUrl) {
|
if (StringUtils.isEmpty(vehicleNo) || StringUtils.isEmpty(qrcodeUrl)) {
|
return null;
|
}
|
|
// 注意:这里不检查车辆信息表,允许为任意车牌号生成二维码
|
|
// 检查是否已存在二维码
|
VehicleEvaluationQrcode existingQrcode = vehicleEvaluationQrcodeMapper.selectVehicleEvaluationQrcodeByVehicleNo(vehicleNo);
|
if (existingQrcode != null) {
|
// 如果已存在,更新URL和重新生成二维码
|
existingQrcode.setQrcodeUrl(qrcodeUrl);
|
existingQrcode.setQrcodeContent("EVAL:" + vehicleNo);
|
existingQrcode.setUpdateBy("system");
|
existingQrcode.setUpdateTime(DateUtils.getNowDate());
|
|
// 重新生成带车牌号的二维码图片为base64格式
|
String qrcodeImageBase64 = QRCodeUtils.generateQRCodeWithVehicleNoToBase64(qrcodeUrl, vehicleNo);
|
|
if (qrcodeImageBase64 != null) {
|
existingQrcode.setQrcodeImage(qrcodeImageBase64);
|
vehicleEvaluationQrcodeMapper.updateVehicleEvaluationQrcode(existingQrcode);
|
return existingQrcode;
|
}
|
return null;
|
}
|
|
// 生成二维码内容
|
String qrcodeContent = "EVAL:" + 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;
|
}
|
|
/**
|
* 批量生成车辆评价二维码
|
*
|
* @return 结果
|
*/
|
@Override
|
public int batchGenerateVehicleEvaluationQrcode() {
|
// 查询所有正常状态的车辆
|
VehicleInfo vehicleInfo = new VehicleInfo();
|
vehicleInfo.setStatus("0");
|
List<VehicleInfo> vehicleList = vehicleInfoMapper.selectVehicleInfoList(vehicleInfo);
|
|
int successCount = 0;
|
for (VehicleInfo vehicle : vehicleList) {
|
VehicleEvaluationQrcode qrcode = generateVehicleEvaluationQrcode(vehicle.getVehicleNo());
|
if (qrcode != null) {
|
successCount++;
|
}
|
}
|
|
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;
|
}
|
}
|