From 0bafa6aa253c9ef6f5cb24e9a24c5282860e4c59 Mon Sep 17 00:00:00 2001
From: zhangback <zhangback@163.com>
Date: 星期一, 30 三月 2026 11:44:37 +0800
Subject: [PATCH] 新增线上配置
---
tms/src/main/java/com/ruoyi/tms/service/impl/TmsTripServiceImpl.java | 161 ++++++++++++++++++++++++++++++++++++++++++++++++-----
1 files changed, 144 insertions(+), 17 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 100a799..ee880c2 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,40 @@
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.baomidou.mybatisplus.extension.plugins.pagination.Page;
+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 +64,13 @@
private TmsDriverMapper tmsDriverMapper;
@Autowired
private TmsVehicleServiceImpl tmsVehicleServiceImpl;
+ @Resource
+ private TmsCarKeyDispatchMapper tmsCarKeyDispatchMapper;
+ @Autowired
+ private RabbitTemplate rabbitTemplate;
+ @Autowired
+ private AsyncPdfService asyncPdfService;
/**
* 鏌ヨ琛岀▼
*
@@ -110,6 +123,34 @@
);
}
+ @Override
+ public Map<String, Object> tmsTripListPage(Integer dispatchId, Integer pageNum, Integer pageSize) {
+ Integer deviceId = userService.getDeviceId(SecurityUtils.getUserId());
+ if (deviceId == null) {
+ Map<String, Object> empty = new HashMap<>();
+ empty.put("rows", Collections.emptyList());
+ empty.put("total", 0);
+ return empty;
+ }
+
+ LambdaQueryWrapper<TmsTrip> wrapper = new LambdaQueryWrapper<TmsTrip>()
+ .eq(TmsTrip::getDriverId, deviceId);
+ // dispatchId 鍙�夛紝涓嶄紶鏃舵煡璇ュ徃鏈哄叏閮ㄨ绋�
+ if (dispatchId != null) {
+ wrapper.eq(TmsTrip::getDispatchOrderId, dispatchId);
+ }
+ // 鎸夎绋嬫椂闂村�掑簭
+ wrapper.orderByDesc(TmsTrip::getTripTime);
+
+ Page<TmsTrip> page = new Page<>(pageNum, pageSize);
+ Page<TmsTrip> result = tmsTripMapper.selectPage(page, wrapper);
+
+ Map<String, Object> map = new HashMap<>();
+ map.put("rows", result.getRecords());
+ map.put("total", result.getTotal());
+ return map;
+ }
+
/**
* 鏌ヨ琛岀▼鍒楄〃 寮傛 瀵煎嚭
*
@@ -136,8 +177,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 +186,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();
@@ -162,13 +288,13 @@
if (tmsDispatchOrder == null){
throw new RuntimeException("鏈壘鍒拌皟搴﹀崟鏁版嵁");
}
- if (tmsDispatchOrder.getStatus() != 1 && tmsDispatchOrder.getStatus() != 2){
+ if (tmsDispatchOrder.getStatus() != 6){
throw new RuntimeException("璋冨害鍗曟暟鎹姸鎬佸紓甯�");
}
tmsDispatchOrderMapper.update(
new LambdaUpdateWrapper<TmsDispatchOrder>()
.eq(TmsDispatchOrder::getId, dispatchOrderId)
- .set(TmsDispatchOrder::getStatus, 2)
+ .set(TmsDispatchOrder::getStatus, 7)
.set(TmsDispatchOrder::getMainDriverId, null)
.set(TmsDispatchOrder::getMainDriverName, null)
.set(TmsDispatchOrder::getVehicleId, null)
@@ -196,7 +322,7 @@
if (tmsDispatchOrder == null){
throw new RuntimeException("鏈壘鍒拌皟搴﹀崟鏁版嵁");
}
- if (tmsDispatchOrder.getStatus() != 1 && tmsDispatchOrder.getStatus() != 2){
+ if (tmsDispatchOrder.getStatus() != 7){
throw new RuntimeException("璋冨害鍗曟暟鎹姸鎬佸紓甯�");
}
Integer driverId = tmsTrip.getDriverId();
@@ -211,11 +337,12 @@
}
- TmsVehicle tmsVehicle = tmsVehicleServiceImpl.selectTmsVehicleById(driverDispatch.getDriverId());
+ TmsVehicle tmsVehicle = tmsVehicleServiceImpl.selectTmsVehicleById(driverDispatch.getVehicleId());
tmsDispatchOrderMapper.update(
new LambdaUpdateWrapper<TmsDispatchOrder>()
.eq(TmsDispatchOrder::getId, dispatchOrderId)
+ .set(TmsDispatchOrder::getStatus, 2)
.set(TmsDispatchOrder::getMainDriverId, tmsDriver.getId())
.set(TmsDispatchOrder::getMainDriverName, tmsDriver.getDriverName())
.set(TmsDispatchOrder::getVehicleId, tmsVehicle.getId())
--
Gitblit v1.8.0