package com.ruoyi.tms.service.impl; import com.ruoyi.common.config.RuoYiConfig; import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.PdfTemplateUtil; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.file.FileUploadUtils; import com.ruoyi.common.utils.uuid.Seq; import com.ruoyi.tms.domain.TmsDispatchOrder; import com.ruoyi.tms.domain.TmsDriver; import com.ruoyi.tms.domain.TmsTrip; import com.ruoyi.tms.mapper.TmsTripMapper; import org.springframework.beans.factory.annotation.Value; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.io.File; import java.util.HashMap; import java.util.Map; @Service public class AsyncPdfService { @Resource private TmsTripMapper tmsTripMapper; @Value("${custom.driver.template1}") private String template1; @Value("${custom.driver.template2}") private String template2; @Value("${custom.driver.font}") private String fontPath; @Value("${custom.upload.network-path}") private String networkPath; @Async public void generateTripPdfAsync(TmsTrip tmsTrip, TmsDispatchOrder order, TmsDriver driver) { try { Map data = new HashMap<>(); data.put("name", driver.getDriverName()); data.put("date", DateUtils.getDate()); data.put("signImage", tmsTrip.getSignImg()); String uploadPath = RuoYiConfig.getUploadPath(); // 1. 生成 PDF A String format1 = StringUtils.format("{}/{}_{}_{}.pdf", DateUtils.datePath(), "chqjkcns", order.getDispatchNo(), Seq.getId(Seq.uploadSeqType)); File absoluteFile1 = FileUploadUtils.getAbsoluteFile(uploadPath, format1); PdfTemplateUtil.fillPdf(template1, absoluteFile1.getAbsolutePath(), data, fontPath); String url1 = networkPath + FileUploadUtils.getPathFileName(uploadPath, format1); // 2. 生成 PDF B String format2 = StringUtils.format("{}/{}_{}_{}.pdf", DateUtils.datePath(), "zjsf", order.getDispatchNo(), Seq.getId(Seq.uploadSeqType)); File absoluteFile2 = FileUploadUtils.getAbsoluteFile(uploadPath, format2); PdfTemplateUtil.fillPdf(template2, absoluteFile2.getAbsolutePath(), data, fontPath); String url2 = networkPath + FileUploadUtils.getPathFileName(uploadPath, format2); // 3. 更新数据库 PDF URL TmsTrip update = new TmsTrip(); update.setId(tmsTrip.getId()); update.setChqjkcnsUrl(url1); update.setZjsfUrl(url2); tmsTripMapper.updateTmsTrip(update); } catch (Exception e) { e.printStackTrace(); } } }