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.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; @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 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; } // 检查车辆是否存在 VehicleInfo vehicleInfo = vehicleInfoMapper.selectVehicleInfoByVehicleNo(vehicleNo); if (vehicleInfo == null) { return null; } // 检查是否已存在二维码 VehicleEvaluationQrcode existingQrcode = vehicleEvaluationQrcodeMapper.selectVehicleEvaluationQrcodeByVehicleNo(vehicleNo); if (existingQrcode != null) { return existingQrcode; } // 生成二维码内容 String qrcodeContent = "EVAL:" + vehicleNo; String qrcodeUrl = "http://localhost:" + serverPort + "/evaluation?vehicle=" + vehicleNo; // 生成二维码图片为base64格式 String qrcodeImageBase64 = QRCodeUtils.generateQRCodeToBase64(qrcodeUrl); 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; } // 检查车辆是否存在 VehicleInfo vehicleInfo = vehicleInfoMapper.selectVehicleInfoByVehicleNo(vehicleNo); if (vehicleInfo == null) { 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.generateQRCodeToBase64(qrcodeUrl); if (qrcodeImageBase64 != null) { existingQrcode.setQrcodeImage(qrcodeImageBase64); vehicleEvaluationQrcodeMapper.updateVehicleEvaluationQrcode(existingQrcode); return existingQrcode; } return null; } // 生成二维码内容 String qrcodeContent = "EVAL:" + vehicleNo; // 生成二维码图片为base64格式 String qrcodeImageBase64 = QRCodeUtils.generateQRCodeToBase64(qrcodeUrl); 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 vehicleList = vehicleInfoMapper.selectVehicleInfoList(vehicleInfo); int successCount = 0; for (VehicleInfo vehicle : vehicleList) { VehicleEvaluationQrcode qrcode = generateVehicleEvaluationQrcode(vehicle.getVehicleNo()); if (qrcode != null) { successCount++; } } return successCount; } }