From 4690839cb78171e7b331595a4464ad86702a6d61 Mon Sep 17 00:00:00 2001
From: zhangback <zhangback@163.com>
Date: 星期五, 28 十一月 2025 11:20:33 +0800
Subject: [PATCH] 提交
---
admin/config/prod/application-custom.yml | 6 +
admin/config/test/application-custom.yml | 2
tms/src/main/java/com/ruoyi/tms/domain/TmsTrip.java | 14 +++
api/src/main/java/com/ruoyi/api/third/controller/CarWxController.java | 60 --------------
tms/src/main/resources/mapper/tms/TmsTripMapper.xml | 21 ++++
admin/src/main/resources/application-custom.yml | 2
tms/src/main/java/com/ruoyi/tms/controller/TmsTripController.java | 3
tms/src/main/java/com/ruoyi/tms/service/ITmsTripService.java | 2
tms/src/main/java/com/ruoyi/tms/service/impl/TmsTripServiceImpl.java | 30 ++++++-
tms/src/main/java/com/ruoyi/tms/service/impl/AsyncPdfService.java | 74 ++++++++++++++++++
10 files changed, 140 insertions(+), 74 deletions(-)
diff --git a/admin/config/prod/application-custom.yml b/admin/config/prod/application-custom.yml
index a8fba4d..ddd44e6 100644
--- a/admin/config/prod/application-custom.yml
+++ b/admin/config/prod/application-custom.yml
@@ -86,4 +86,8 @@
/swagger-ui.html
/profile/**
/system/dict/data/type/**
- /websocket/**
\ No newline at end of file
+ /websocket/**
+ driver:
+ template1: /data/cwgl/chqjkcns.pdf
+ template2: /data/cwgl/zjsf.pdf
+ font: /data/cwgl/msyh.ttf
\ No newline at end of file
diff --git a/admin/config/test/application-custom.yml b/admin/config/test/application-custom.yml
index 8fc5634..6fb34e1 100644
--- a/admin/config/test/application-custom.yml
+++ b/admin/config/test/application-custom.yml
@@ -110,4 +110,4 @@
driver:
template1: /data/cwgl/chqjkcns.pdf
template2: /data/cwgl/zjsf.pdf
- font: /data/cwgl/simsun.ttc
\ No newline at end of file
+ font: /data/cwgl/msyh.ttf
\ No newline at end of file
diff --git a/admin/src/main/resources/application-custom.yml b/admin/src/main/resources/application-custom.yml
index 4cd06c4..5e9f5bb 100644
--- a/admin/src/main/resources/application-custom.yml
+++ b/admin/src/main/resources/application-custom.yml
@@ -113,4 +113,4 @@
driver:
template1: D:/temp/chqjkcns.pdf
template2: D:/temp/zjsf.pdf
- font: D:/temp/simsun.ttc
\ No newline at end of file
+ font: D:/temp/msyh.ttf
\ No newline at end of file
diff --git a/api/src/main/java/com/ruoyi/api/third/controller/CarWxController.java b/api/src/main/java/com/ruoyi/api/third/controller/CarWxController.java
index 441280f..d385490 100644
--- a/api/src/main/java/com/ruoyi/api/third/controller/CarWxController.java
+++ b/api/src/main/java/com/ruoyi/api/third/controller/CarWxController.java
@@ -57,18 +57,6 @@
@Value("${custom.upload.network-path}")
private String networkPath;
- @Value("${custom.driver.template1}")
- private String template1;
-
- @Value("${custom.driver.template2}")
- private String template2;
- @Value("${custom.driver.font}")
- private String fontPath;
- @Autowired
- private ISysUserService userService;
-
- @Autowired
- private ITmsDriverService tmsDriverService;
/**
* 鐧诲綍鏂规硶[pda]
@@ -151,7 +139,7 @@
* 涓婁紶琛岀▼
*/
@PostMapping("/uploadTrip")
- public AjaxResult uploadTrip(@RequestBody TmsTrip tmsTrip){
+ public AjaxResult uploadTrip(@RequestBody TmsTrip tmsTrip) throws Exception {
tmsTrip.setDataSource("1");
return AjaxResult.success(tmsTripService.insertTmsTrip(tmsTrip));
}
@@ -207,52 +195,6 @@
}
return AjaxResult.success(data);
}
- @GetMapping("/resource/jkcns")
- public void jkcns( HttpServletResponse response) throws Exception {
- Integer deviceId = userService.getDeviceId(SecurityUtils.getUserId());
- if (deviceId == null){
- return;
- }
- TmsDriver byId = tmsDriverService.getById(deviceId);
- if (byId != null){
- HashMap<String, String> objectObjectHashMap = new HashMap<>();
- objectObjectHashMap.put("date", DateUtils.getDate());
- objectObjectHashMap.put("name", byId.getDriverName());
- objectObjectHashMap.put("idCard", byId.getLicenseNumber());
-
- // 涓嬭浇鍚嶇О
- response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);
- FileUtils.setAttachmentResponseHeader(response, "璐ц溅鍙告満鍑鸿溅鍓嶅仴搴锋壙璇轰功_"+byId.getDriverName()+"pdf");
- FileUtils.writeBytes(template1, response.getOutputStream());
- PdfTemplateUtil.fillPdf(template2, response.getOutputStream(),objectObjectHashMap , fontPath);
-
- }
-
-
-
-
- }
-
- @GetMapping("/resource/zjsfcns")
- public void zjsfcns( HttpServletResponse response) throws Exception {
- // 涓嬭浇鍚嶇О
-
- Integer deviceId = userService.getDeviceId(SecurityUtils.getUserId());
- if (deviceId == null){
- return;
- }
- TmsDriver byId = tmsDriverService.getById(deviceId);
- if (byId != null){
- HashMap<String, String> objectObjectHashMap = new HashMap<>();
- objectObjectHashMap.put("date", DateUtils.getDate());
- // 涓嬭浇鍚嶇О
- response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);
- FileUtils.setAttachmentResponseHeader(response, "閬电邯瀹堟硶鎵胯涔"+byId.getDriverName()+"pdf");
- PdfTemplateUtil.fillPdf(template2, response.getOutputStream(),objectObjectHashMap , fontPath);
-
- }
-
- }
}
diff --git a/tms/src/main/java/com/ruoyi/tms/controller/TmsTripController.java b/tms/src/main/java/com/ruoyi/tms/controller/TmsTripController.java
index 09c236e..a23b483 100644
--- a/tms/src/main/java/com/ruoyi/tms/controller/TmsTripController.java
+++ b/tms/src/main/java/com/ruoyi/tms/controller/TmsTripController.java
@@ -79,8 +79,7 @@
@PreAuthorize("@ss.hasPermi('tms:tmsTrip:add')")
@Log(title = "琛岀▼", businessType = BusinessType.INSERT)
@PostMapping
- public AjaxResult add(@RequestBody TmsTrip tmsTrip)
- {
+ public AjaxResult add(@RequestBody TmsTrip tmsTrip) throws Exception {
return toAjax(tmsTripService.insertTmsTrip(tmsTrip));
}
diff --git a/tms/src/main/java/com/ruoyi/tms/domain/TmsTrip.java b/tms/src/main/java/com/ruoyi/tms/domain/TmsTrip.java
index 5f4674f..b708103 100644
--- a/tms/src/main/java/com/ruoyi/tms/domain/TmsTrip.java
+++ b/tms/src/main/java/com/ruoyi/tms/domain/TmsTrip.java
@@ -112,6 +112,8 @@
@TableField("voucher_url")
private String voucherUrl;
+ @TableField("sign_img")
+ private String signImg;
/**
* 鍒涘缓浜�
@@ -143,5 +145,17 @@
@TableField("data_source")
private String dataSource;
+ /**
+ * 閬电邯瀹堟硶pdf
+ */
+ @TableField("zjsf_url")
+ private String zjsfUrl;
+
+ /**
+ * 鍑鸿pdf
+ */
+ @TableField("chqjkcns_url")
+ private String chqjkcnsUrl;
+
}
diff --git a/tms/src/main/java/com/ruoyi/tms/service/ITmsTripService.java b/tms/src/main/java/com/ruoyi/tms/service/ITmsTripService.java
index af63054..38a9af7 100644
--- a/tms/src/main/java/com/ruoyi/tms/service/ITmsTripService.java
+++ b/tms/src/main/java/com/ruoyi/tms/service/ITmsTripService.java
@@ -54,7 +54,7 @@
* @param tmsTrip 琛岀▼
* @return 缁撴灉
*/
- public int insertTmsTrip(TmsTrip tmsTrip);
+ public int insertTmsTrip(TmsTrip tmsTrip) throws Exception;
public AjaxResult submitDropHook(TmsTrip tmsTrip);
public AjaxResult submitPickHook(TmsTrip tmsTrip);
/**
diff --git a/tms/src/main/java/com/ruoyi/tms/service/impl/AsyncPdfService.java b/tms/src/main/java/com/ruoyi/tms/service/impl/AsyncPdfService.java
new file mode 100644
index 0000000..e37e9ed
--- /dev/null
+++ b/tms/src/main/java/com/ruoyi/tms/service/impl/AsyncPdfService.java
@@ -0,0 +1,74 @@
+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<String,String> 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();
+ }
+ }
+}
diff --git a/tms/src/main/java/com/ruoyi/tms/service/impl/TmsTripServiceImpl.java b/tms/src/main/java/com/ruoyi/tms/service/impl/TmsTripServiceImpl.java
index 0f12827..b38d4d5 100644
--- a/tms/src/main/java/com/ruoyi/tms/service/impl/TmsTripServiceImpl.java
+++ b/tms/src/main/java/com/ruoyi/tms/service/impl/TmsTripServiceImpl.java
@@ -1,27 +1,35 @@
package com.ruoyi.tms.service.impl;
+import java.io.File;
import java.util.Collections;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.ruoyi.common.config.RuoYiConfig;
import com.ruoyi.common.core.domain.AjaxResult;
-import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.common.utils.*;
+
import javax.annotation.Resource;
-import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.common.utils.file.FileUploadUtils;
+import com.ruoyi.common.utils.uuid.Seq;
import com.ruoyi.system.service.ISysUserService;
import com.ruoyi.tms.domain.*;
import com.ruoyi.tms.mapper.TmsDispatchOrderMapper;
import com.ruoyi.tms.mapper.TmsDriverDispatchMapper;
import com.ruoyi.tms.mapper.TmsDriverMapper;
+import org.apache.commons.io.FileUtils;
+import org.apache.commons.io.FilenameUtils;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.stereotype.Service;
import org.springframework.scheduling.annotation.Async;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import com.ruoyi.common.utils.PageUtils;
import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.annotation.DataSource;
import com.ruoyi.common.enums.DataSourceType;
@@ -58,6 +66,8 @@
@Autowired
private TmsVehicleServiceImpl tmsVehicleServiceImpl;
+ @Autowired
+ private AsyncPdfService asyncPdfService;
/**
* 鏌ヨ琛岀▼
*
@@ -136,8 +146,7 @@
* @return 缁撴灉
*/
@Override
- public int insertTmsTrip(TmsTrip tmsTrip)
- {
+ public int insertTmsTrip(TmsTrip tmsTrip) throws Exception {
Integer dispatchOrderId = tmsTrip.getDispatchOrderId();
TmsDispatchOrder tmsDispatchOrder = tmsDispatchOrderMapper.selectTmsDispatchOrderById(dispatchOrderId);
if (tmsDispatchOrder == null){
@@ -146,6 +155,11 @@
if (tmsDispatchOrder.getStatus() != 1 && tmsDispatchOrder.getStatus() != 2){
throw new RuntimeException("璋冨害鍗曟暟鎹姸鎬佸紓甯�");
}
+ TmsDriver tmsDriver = tmsDriverMapper.selectTmsDriverById(tmsDispatchOrder.getMainDriverId());
+ if (tmsDriver == null){
+ throw new RuntimeException("鏈壘鍒板徃鏈烘暟鎹�");
+ }
+
tmsDispatchOrder.setStatus(2);
tmsDispatchOrderMapper.updateTmsDispatchOrder(tmsDispatchOrder);
tmsTrip.setDriverName(tmsDispatchOrder.getMainDriverName());
@@ -153,7 +167,11 @@
tmsTrip.setVehicleNumber(tmsDispatchOrder.getLicensePlate());
tmsTrip.setCreateBy(SecurityUtils.getUsername());
tmsTrip.setCreateTime(DateUtils.getNowDate());
- return tmsTripMapper.insertTmsTrip(tmsTrip);
+ tmsTripMapper.insertTmsTrip(tmsTrip);
+ if (StringUtils.isNotEmpty(tmsTrip.getSignImg())){
+ asyncPdfService.generateTripPdfAsync(tmsTrip,tmsDispatchOrder,tmsDriver);
+ }
+ return 1;
}
@Override
public AjaxResult submitDropHook(TmsTrip tmsTrip){
diff --git a/tms/src/main/resources/mapper/tms/TmsTripMapper.xml b/tms/src/main/resources/mapper/tms/TmsTripMapper.xml
index 6bfcb40..059adab 100644
--- a/tms/src/main/resources/mapper/tms/TmsTripMapper.xml
+++ b/tms/src/main/resources/mapper/tms/TmsTripMapper.xml
@@ -20,10 +20,13 @@
<result property="createTime" column="create_time" />
<result property="updateTime" column="update_time" />
<result property="dataSource" column="data_source" />
+ <result property="signImg" column="sign_img" />
+ <result property="zjsfUrl" column="zjsf_url" />
+ <result property="chqjkcnsUrl" column="chqjkcns_url" />
</resultMap>
<sql id="selectTmsTripVo">
- select thisTab.id, thisTab.dispatch_order_id, thisTab.driver_id, thisTab.driver_name, thisTab.vehicle_id, thisTab.vehicle_number, thisTab.trip_type, thisTab.trip_time, thisTab.odometer, thisTab.address, thisTab.voucher_url, thisTab.create_by, thisTab.create_time, thisTab.update_time, thisTab.data_source from tms_trip AS thisTab
+ select thisTab.id, thisTab.dispatch_order_id, thisTab.driver_id, thisTab.driver_name, thisTab.vehicle_id, thisTab.vehicle_number, thisTab.trip_type, thisTab.trip_time, thisTab.odometer, thisTab.address, thisTab.voucher_url, thisTab.create_by, thisTab.create_time, thisTab.update_time, thisTab.data_source, thisTab.sign_img, thisTab.zjsf_url, thisTab.chqjkcns_url from tms_trip AS thisTab
</sql>
<sql id="selectTmsTripVoCount">
select count(0) from tms_trip as thisTab
@@ -82,6 +85,9 @@
<if test="createTime != null">create_time,</if>
<if test="updateTime != null">update_time,</if>
<if test="dataSource != null">data_source,</if>
+ <if test="signImg != null">sign_img,</if>
+ <if test="zjsfUrl != null">zjsf_url,</if>
+ <if test="chqjkcnsUrl != null">chqjkcns_url,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="dispatchOrderId != null">#{dispatchOrderId},</if>
@@ -98,17 +104,20 @@
<if test="createTime != null">#{createTime},</if>
<if test="updateTime != null">#{updateTime},</if>
<if test="dataSource != null">#{dataSource},</if>
+ <if test="signImg != null">#{signImg},</if>
+ <if test="zjsfUrl != null">#{zjsfUrl},</if>
+ <if test="chqjkcnsUrl != null">#{chqjkcnsUrl},</if>
</trim>
</insert>
<insert id="insertTmsTripBatch" parameterType="java.util.List" useGeneratedKeys="true" keyProperty="id">
insert into tms_trip
<trim prefix="(" suffix=") values" suffixOverrides=",">
- id,dispatch_order_id,driver_id,driver_name,vehicle_id,vehicle_number,trip_type,trip_time,odometer,address,voucher_url,create_by,create_time,update_time,data_source,
+ id,dispatch_order_id,driver_id,driver_name,vehicle_id,vehicle_number,trip_type,trip_time,odometer,address,voucher_url,create_by,create_time,update_time,data_source,sign_img,zjsf_url,chqjkcns_url,
</trim>
<foreach item="item" index="index" collection="list" separator=",">
<trim prefix="(" suffix=") " suffixOverrides=",">
- #{item.id},#{item.dispatchOrderId},#{item.driverId},#{item.driverName},#{item.vehicleId},#{item.vehicleNumber},#{item.tripType},#{item.tripTime},#{item.odometer},#{item.address},#{item.voucherUrl},#{item.createBy},#{item.createTime},#{item.updateTime},#{item.dataSource},
+ #{item.id},#{item.dispatchOrderId},#{item.driverId},#{item.driverName},#{item.vehicleId},#{item.vehicleNumber},#{item.tripType},#{item.tripTime},#{item.odometer},#{item.address},#{item.voucherUrl},#{item.createBy},#{item.createTime},#{item.updateTime},#{item.dataSource},#{item.signImg},#{item.zjsfUrl},#{item.chqjkcnsUrl},
</trim>
</foreach>
</insert>
@@ -131,6 +140,9 @@
<if test="createTime != null">create_time = #{createTime},</if>
<if test="updateTime != null">update_time = #{updateTime},</if>
<if test="dataSource != null">data_source = #{dataSource},</if>
+ <if test="signImg != null">sign_img = #{signImg},</if>
+ <if test="zjsfUrl != null">zjsf_url = #{zjsfUrl},</if>
+ <if test="chqjkcnsUrl != null">chqjkcns_url = #{chqjkcnsUrl},</if>
</trim>
where id = #{id}
</update>
@@ -153,6 +165,9 @@
<if test="item.createTime != null">create_time = #{item.createTime},</if>
<if test="item.updateTime != null">update_time = #{item.updateTime},</if>
<if test="item.dataSource != null">data_source = #{item.dataSource},</if>
+ <if test="item.signImg != null">sign_img = #{item.signImg},</if>
+ <if test="item.zjsfUrl != null">zjsf_url = #{item.zjsfUrl},</if>
+ <if test="item.chqjkcnsUrl != null">chqjkcns_url = #{item.chqjkcnsUrl},</if>
</trim>
where id = #{item.id}
</foreach>
--
Gitblit v1.8.0