From e4e02918457df9368c9a06baa42149b3dbe65adf Mon Sep 17 00:00:00 2001
From: wujianwei <wjw@11.com>
Date: 星期五, 13 三月 2026 10:00:39 +0800
Subject: [PATCH] 新增日志和前后端

---
 tms/src/main/java/com/ruoyi/tms/service/impl/TmsTripServiceImpl.java |  125 +++++++++++++++++++++++++++++++++++++----
 1 files changed, 111 insertions(+), 14 deletions(-)

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..ba10b24 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,33 +1,39 @@
 package com.ruoyi.tms.service.impl;
 
-import java.util.Collections;
-import java.util.List;
+import java.io.File;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.time.ZoneId;
+import java.util.*;
 
 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 com.ruoyi.tms.mapper.*;
+import org.apache.commons.io.FileUtils;
+import org.apache.commons.io.FilenameUtils;
+import org.springframework.amqp.rabbit.core.RabbitTemplate;
 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;
 import com.ruoyi.common.core.service.BaseService;
 
-import com.ruoyi.tms.mapper.TmsTripMapper;
 import com.ruoyi.tms.service.ITmsTripService;
 import com.ruoyi.common.core.text.Convert;
 
@@ -57,7 +63,13 @@
     private TmsDriverMapper tmsDriverMapper;
     @Autowired
     private TmsVehicleServiceImpl tmsVehicleServiceImpl;
+    @Resource
+    private TmsCarKeyDispatchMapper tmsCarKeyDispatchMapper;
+    @Autowired
+    private RabbitTemplate rabbitTemplate;
 
+    @Autowired
+    private AsyncPdfService asyncPdfService;
     /**
      * 鏌ヨ琛岀▼
      *
@@ -136,8 +148,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,15 +157,101 @@
         if (tmsDispatchOrder.getStatus() != 1 && tmsDispatchOrder.getStatus() != 2){
             throw new RuntimeException("璋冨害鍗曟暟鎹姸鎬佸紓甯�");
         }
-        tmsDispatchOrder.setStatus(2);
+
+        TmsTrip tmsTrip1 = tmsTripMapper.selectOne(new LambdaQueryWrapper<TmsTrip>()
+                .eq(TmsTrip::getDispatchOrderId, dispatchOrderId)
+                .orderByDesc(TmsTrip::getId)
+                .last("limit 1")
+        );
+        if (tmsTrip1 != null){
+            BigDecimal currentOdometer = tmsTrip.getOdometer();
+            BigDecimal lastOdometer = tmsTrip1.getOdometer();
+            if (currentOdometer!=null && lastOdometer != null && currentOdometer.compareTo(lastOdometer) < 0) {
+                throw new IllegalArgumentException("杞﹁締閲岀▼鏁板紓甯革紝褰撳墠閲岀▼蹇呴』澶т簬涓婁竴琛岀▼");
+            }
+        }
+
+        TmsDriver tmsDriver = tmsDriverMapper.selectTmsDriverById(tmsDispatchOrder.getMainDriverId());
+        if (tmsDriver == null){
+            throw new RuntimeException("鏈壘鍒板徃鏈烘暟鎹�");
+        }
+        Integer status = tmsDispatchOrder.getStatus();
+        if (status == 1){
+            tmsDispatchOrder.setStatus(2);
+        }
+        if (tmsTrip.getTripType() == 8 || tmsTrip.getTripType() == 100){
+            if (status == 2){
+                tmsDispatchOrder.setStatus(3);
+                tmsDispatchOrder.setOkTime(DateUtils.getNowDate());
+                tmsDispatchOrder.setUpdateBy(SecurityUtils.getUsername());
+            }
+        }
+        if (tmsTrip.getTripType() == 5){
+            tmsDispatchOrder.setIscc(tmsTrip.getIscc());
+        }
+        if (tmsTrip.getTripType() == 100){
+            tmsDispatchOrder.setIsfk(0);
+        }
+
         tmsDispatchOrderMapper.updateTmsDispatchOrder(tmsDispatchOrder);
         tmsTrip.setDriverName(tmsDispatchOrder.getMainDriverName());
         tmsTrip.setVehicleId(tmsDispatchOrder.getVehicleId());
         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);
+        }
+        // 瀹屾垚韬綋妫�鏌�
+        if (tmsTrip.getTripType() == 1){
+            // 娣诲姞 棰嗛挜鍖� 鎸囦护璁板綍
+            TmsVehicle tmsVehicle = tmsVehicleServiceImpl.selectTmsVehicleById(tmsDispatchOrder.getVehicleId());
+
+            TmsCarKeyDispatch tmsCarKeyDispatch = new TmsCarKeyDispatch();
+            tmsCarKeyDispatch.setDispatchOrderId(dispatchOrderId);
+            tmsCarKeyDispatch.setDispatchOrderNo(tmsDispatchOrder.getDispatchNo());
+            tmsCarKeyDispatch.setDriverId(tmsDriver.getId());
+            tmsCarKeyDispatch.setDriverMobile(tmsDriver.getMobile());
+            tmsCarKeyDispatch.setDriverName(tmsDriver.getDriverName());
+
+            tmsCarKeyDispatch.setVehicleId(tmsDispatchOrder.getVehicleId());
+            tmsCarKeyDispatch.setVehicleLicensePlate(tmsDispatchOrder.getLicensePlate());
+            tmsCarKeyDispatch.setVehicleCarKeyNo(tmsVehicle.getCarKeyNo());
+
+            LocalDateTime plus2Hours = LocalDateTime.now().plusHours(2);
+            Date date = Date.from(plus2Hours.atZone(ZoneId.systemDefault()).toInstant());
+
+            tmsCarKeyDispatch.setCarKeyExpirationTime(date);
+            tmsCarKeyDispatch.setStatus(0);
+            tmsCarKeyDispatchMapper.insertTmsCarKeyDispatch(tmsCarKeyDispatch);
+
+            sendCarKeyDelayMessage(tmsCarKeyDispatch.getId(),  2 * 60 * 60 * 1000L);
+
+        }
+
+
+        return 1;
     }
+
+    /**
+     * 鍙戦�佸欢杩熸秷鎭�
+     * @param carKeyId car_key id
+     * @param delayMillis 寤惰繜姣鏁�
+     */
+    public void sendCarKeyDelayMessage(Integer carKeyId, long delayMillis) {
+        rabbitTemplate.convertAndSend(
+                "car_key_delay_exchange",
+                "car_key_delay",
+                carKeyId,
+                message -> {
+                    message.getMessageProperties().setExpiration(String.valueOf(delayMillis));
+                    return message;
+                }
+        );
+    }
+
+
     @Override
     public AjaxResult submitDropHook(TmsTrip tmsTrip){
         Integer dispatchOrderId = tmsTrip.getDispatchOrderId();
@@ -211,7 +308,7 @@
         }
 
 
-        TmsVehicle tmsVehicle = tmsVehicleServiceImpl.selectTmsVehicleById(driverDispatch.getDriverId());
+        TmsVehicle tmsVehicle = tmsVehicleServiceImpl.selectTmsVehicleById(driverDispatch.getVehicleId());
 
         tmsDispatchOrderMapper.update(
                 new LambdaUpdateWrapper<TmsDispatchOrder>()

--
Gitblit v1.8.0