From 3974fad5d836431e417e99220cc07bb5b0aba331 Mon Sep 17 00:00:00 2001
From: zhangback <zhangback@163.com>
Date: 星期一, 08 十二月 2025 14:16:16 +0800
Subject: [PATCH] 提交
---
admin/config/test/application-custom.yml | 7
framework/pom.xml | 5
admin/src/main/resources/application-custom.yml | 7
admin/src/main/resources/application.yml | 8
tms/src/main/java/com/ruoyi/tms/mapper/TmsCarKeyDispatchMapper.java | 87 +++++
tms/src/main/resources/mapper/tms/TmsCarKeyDispatchMapper.xml | 169 +++++++++
admin/config/prod/application-custom.yml | 7
tms/src/main/java/com/ruoyi/tms/domain/TmsCarKeyDispatch.java | 140 ++++++++
tms/src/main/java/com/ruoyi/tms/consumer/CarKeyExpireConsumer.java | 31 +
tms/src/main/java/com/ruoyi/tms/service/impl/TmsCarKeyDispatchServiceImpl.java | 182 ++++++++++
tms/pom.xml | 8
framework/src/main/java/com/ruoyi/framework/config/RabbitMqConfig.java | 15
tms/src/main/java/com/ruoyi/tms/service/ITmsCarKeyDispatchService.java | 102 ++++++
tms/src/main/java/com/ruoyi/tms/config/TmsRabbitConfig.java | 50 ++
tms/src/main/java/com/ruoyi/tms/controller/TmsCarKeyDispatchController.java | 108 ++++++
tms/src/main/java/com/ruoyi/tms/service/impl/TmsTripServiceImpl.java | 67 +++
16 files changed, 983 insertions(+), 10 deletions(-)
diff --git a/admin/config/prod/application-custom.yml b/admin/config/prod/application-custom.yml
index ddd44e6..4577e5e 100644
--- a/admin/config/prod/application-custom.yml
+++ b/admin/config/prod/application-custom.yml
@@ -1,4 +1,11 @@
custom:
+ rabbitmq:
+ # 闆嗙兢鍦板潃锛岀敤閫楀彿鍒嗛殧
+ host: 172.16.24.14
+ port: 5672
+ virtual-host: GF_HOST
+ username: admin
+ password:
serialNumber:
cache:
enabled: true
diff --git a/admin/config/test/application-custom.yml b/admin/config/test/application-custom.yml
index 6fb34e1..afd76e0 100644
--- a/admin/config/test/application-custom.yml
+++ b/admin/config/test/application-custom.yml
@@ -1,4 +1,11 @@
custom:
+ rabbitmq:
+ # 闆嗙兢鍦板潃锛岀敤閫楀彿鍒嗛殧
+ host: 61.143.42.70
+ port: 7008
+ virtual-host: GF_HOST_TEST
+ username: user_test
+ password: testuser_&
serialNumber:
cache:
enabled: true
diff --git a/admin/src/main/resources/application-custom.yml b/admin/src/main/resources/application-custom.yml
index 5e9f5bb..88d6ad6 100644
--- a/admin/src/main/resources/application-custom.yml
+++ b/admin/src/main/resources/application-custom.yml
@@ -57,6 +57,13 @@
login-password: admin123
filter:
log-slow-sql: true # 鎱QL璁板綍
+ rabbitmq:
+ # 闆嗙兢鍦板潃锛岀敤閫楀彿鍒嗛殧
+ host: 192.168.1.100
+ port: 5672
+ virtual-host: ccyf_dev
+ username: admin
+ password: admin@123
#redis 鐩稿叧閰嶇疆
redis:
host: localhost #璁块棶鍦板潃
diff --git a/admin/src/main/resources/application.yml b/admin/src/main/resources/application.yml
index cc57247..a25f6d8 100644
--- a/admin/src/main/resources/application.yml
+++ b/admin/src/main/resources/application.yml
@@ -50,6 +50,14 @@
# Spring閰嶇疆
spring:
+ rabbitmq:
+ # 闆嗙兢鍦板潃锛岀敤閫楀彿鍒嗛殧
+ host: ${custom.rabbitmq.host}
+ port: ${custom.rabbitmq.port}
+ virtual-host: ${custom.rabbitmq.virtual-host}
+ username: ${custom.rabbitmq.username}
+ password: ${custom.rabbitmq.password}
+ connection-timeout: 15000
# 璧勬簮淇℃伅
messages:
# 鍥介檯鍖栬祫婧愭枃浠惰矾寰�
diff --git a/framework/pom.xml b/framework/pom.xml
index c0a0941..afe137b 100644
--- a/framework/pom.xml
+++ b/framework/pom.xml
@@ -46,7 +46,10 @@
</exclusion>
</exclusions>
</dependency>
-
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-amqp</artifactId>
+ </dependency>
<!-- 鑾峰彇绯荤粺淇℃伅 -->
<dependency>
<groupId>com.github.oshi</groupId>
diff --git a/framework/src/main/java/com/ruoyi/framework/config/RabbitMqConfig.java b/framework/src/main/java/com/ruoyi/framework/config/RabbitMqConfig.java
new file mode 100644
index 0000000..765bdf0
--- /dev/null
+++ b/framework/src/main/java/com/ruoyi/framework/config/RabbitMqConfig.java
@@ -0,0 +1,15 @@
+package com.ruoyi.framework.config;
+
+import org.springframework.amqp.rabbit.connection.ConnectionFactory;
+import org.springframework.amqp.rabbit.core.RabbitTemplate;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+public class RabbitMqConfig {
+ @Bean
+ public RabbitTemplate rabbitTemplate( ConnectionFactory connectionFactory){
+ return new RabbitTemplate(connectionFactory);
+ }
+
+}
diff --git a/tms/pom.xml b/tms/pom.xml
index 1f8cd95..10c58a9 100644
--- a/tms/pom.xml
+++ b/tms/pom.xml
@@ -25,6 +25,14 @@
<groupId>com.ruoyi</groupId>
<artifactId>system</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.springframework.amqp</groupId>
+ <artifactId>spring-amqp</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework.amqp</groupId>
+ <artifactId>spring-rabbit</artifactId>
+ </dependency>
</dependencies>
</project>
\ No newline at end of file
diff --git a/tms/src/main/java/com/ruoyi/tms/config/TmsRabbitConfig.java b/tms/src/main/java/com/ruoyi/tms/config/TmsRabbitConfig.java
new file mode 100644
index 0000000..ad667b7
--- /dev/null
+++ b/tms/src/main/java/com/ruoyi/tms/config/TmsRabbitConfig.java
@@ -0,0 +1,50 @@
+package com.ruoyi.tms.config;
+
+import org.springframework.amqp.core.*;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+
+@Configuration
+public class TmsRabbitConfig {
+
+ // 寤惰繜闃熷垪浜ゆ崲鏈�
+ @Bean
+ public DirectExchange delayExchange() {
+ return new DirectExchange("car_key_delay_exchange");
+ }
+
+ // 姝讳俊闃熷垪浜ゆ崲鏈�
+ @Bean
+ public DirectExchange deadExchange() {
+ return new DirectExchange("car_key_dead_exchange");
+ }
+
+ // 寤惰繜闃熷垪
+ @Bean
+ public Queue delayQueue() {
+ return QueueBuilder.durable("car_key_delay_queue")
+ .withArgument("x-dead-letter-exchange", "car_key_dead_exchange")
+ .withArgument("x-dead-letter-routing-key", "car_key_dead_routing_key")
+ .build();
+ }
+
+ // 姝讳俊闃熷垪锛堝疄闄呮秷璐归槦鍒楋級
+ @Bean
+ public Queue deadQueue() {
+ return QueueBuilder.durable("car_key_dead_queue").build();
+ }
+
+ // 寤惰繜闃熷垪缁戝畾
+ @Bean
+ public Binding delayBinding() {
+ return BindingBuilder.bind(delayQueue()).to(delayExchange()).with("car_key_delay");
+ }
+
+ // 姝讳俊闃熷垪缁戝畾
+ @Bean
+ public Binding deadBinding() {
+ return BindingBuilder.bind(deadQueue()).to(deadExchange()).with("car_key_dead_routing_key");
+ }
+
+}
diff --git a/tms/src/main/java/com/ruoyi/tms/consumer/CarKeyExpireConsumer.java b/tms/src/main/java/com/ruoyi/tms/consumer/CarKeyExpireConsumer.java
new file mode 100644
index 0000000..caac680
--- /dev/null
+++ b/tms/src/main/java/com/ruoyi/tms/consumer/CarKeyExpireConsumer.java
@@ -0,0 +1,31 @@
+package com.ruoyi.tms.consumer;
+
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.ruoyi.tms.domain.TmsCarKeyDispatch;
+import com.ruoyi.tms.mapper.TmsCarKeyDispatchMapper;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.amqp.rabbit.annotation.RabbitListener;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+
+@Slf4j
+@Component
+public class CarKeyExpireConsumer {
+
+ @Resource
+ private TmsCarKeyDispatchMapper tmsCarKeyDispatchMapper;
+
+ @RabbitListener(queues = "car_key_dead_queue")
+ public void handle(Integer carKeyId) {
+
+ TmsCarKeyDispatch tmsCarKeyDispatch = tmsCarKeyDispatchMapper.selectTmsCarKeyDispatchById(carKeyId);
+ if (tmsCarKeyDispatch != null && tmsCarKeyDispatch.getStatus() == 0){
+ log.info("瓒呮椂棰嗗彇閽ュ寵锛歿}", carKeyId);
+ tmsCarKeyDispatchMapper.update(new LambdaUpdateWrapper<TmsCarKeyDispatch>()
+ .eq(TmsCarKeyDispatch::getId, carKeyId)
+ .set(TmsCarKeyDispatch::getStatus, 2)
+ );
+ }
+ }
+}
diff --git a/tms/src/main/java/com/ruoyi/tms/controller/TmsCarKeyDispatchController.java b/tms/src/main/java/com/ruoyi/tms/controller/TmsCarKeyDispatchController.java
new file mode 100644
index 0000000..8234470
--- /dev/null
+++ b/tms/src/main/java/com/ruoyi/tms/controller/TmsCarKeyDispatchController.java
@@ -0,0 +1,108 @@
+package com.ruoyi.tms.controller;
+
+import java.util.List;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.ruoyi.common.utils.file.DownloadExportUtil;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.tms.domain.TmsCarKeyDispatch;
+import com.ruoyi.tms.service.ITmsCarKeyDispatchService;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 杞﹂挜鍖欏垎鍙戣褰旵ontroller
+ *
+ * @author ruoyi
+ * @date 2025-12-08
+ */
+@RestController
+@RequestMapping("/tms/tmsCarKeyDispatch")
+public class TmsCarKeyDispatchController extends BaseController
+{
+ @Autowired
+ private ITmsCarKeyDispatchService tmsCarKeyDispatchService;
+
+
+
+ /**
+ * 鏌ヨ杞﹂挜鍖欏垎鍙戣褰曞垪琛�
+ */
+ @PreAuthorize("@ss.hasPermi('tms:tmsCarKeyDispatch:list')")
+ @GetMapping("/list")
+ public TableDataInfo list(TmsCarKeyDispatch tmsCarKeyDispatch)
+ {
+ startPage();
+ List<TmsCarKeyDispatch> list = tmsCarKeyDispatchService.selectTmsCarKeyDispatchList(tmsCarKeyDispatch);
+ return getDataTable(list);
+ }
+
+ /**
+ * 瀵煎嚭杞﹂挜鍖欏垎鍙戣褰曞垪琛�
+ * @param tmsCarKeyDispatch 鏌ヨ鏉′欢瀵硅薄
+ */
+ @PreAuthorize("@ss.hasPermi('tms:tmsCarKeyDispatch:export')")
+ @Log(title = "杞﹂挜鍖欏垎鍙戣褰�", businessType = BusinessType.EXPORT)
+ @GetMapping("/export")
+ public AjaxResult export(TmsCarKeyDispatch tmsCarKeyDispatch,String exportKey)
+ {
+ tmsCarKeyDispatchService.export(tmsCarKeyDispatch,exportKey);
+ return AjaxResult.success("瀵煎嚭璇锋眰鎴愬姛锛岃绋嶅悗鐐瑰嚮涓嬭浇...!");
+ }
+
+
+
+ /**
+ * 鑾峰彇杞﹂挜鍖欏垎鍙戣褰曡缁嗕俊鎭�
+ */
+ @PreAuthorize("@ss.hasPermi('tms:tmsCarKeyDispatch:query')")
+ @GetMapping(value = "/{id}")
+ public AjaxResult getInfo(@PathVariable("id") Integer id)
+ {
+ return AjaxResult.success(tmsCarKeyDispatchService.selectTmsCarKeyDispatchById(id));
+ }
+
+ /**
+ * 鏂板杞﹂挜鍖欏垎鍙戣褰�
+ */
+ @PreAuthorize("@ss.hasPermi('tms:tmsCarKeyDispatch:add')")
+ @Log(title = "杞﹂挜鍖欏垎鍙戣褰�", businessType = BusinessType.INSERT)
+ @PostMapping
+ public AjaxResult add(@RequestBody TmsCarKeyDispatch tmsCarKeyDispatch)
+ {
+ return toAjax(tmsCarKeyDispatchService.insertTmsCarKeyDispatch(tmsCarKeyDispatch));
+ }
+
+ /**
+ * 淇敼杞﹂挜鍖欏垎鍙戣褰�
+ */
+ @PreAuthorize("@ss.hasPermi('tms:tmsCarKeyDispatch:edit')")
+ @Log(title = "杞﹂挜鍖欏垎鍙戣褰�", businessType = BusinessType.UPDATE)
+ @PutMapping
+ public AjaxResult edit(@RequestBody TmsCarKeyDispatch tmsCarKeyDispatch)
+ {
+ return toAjax(tmsCarKeyDispatchService.updateTmsCarKeyDispatch(tmsCarKeyDispatch));
+ }
+
+ /**
+ * 鍒犻櫎杞﹂挜鍖欏垎鍙戣褰�
+ */
+ @PreAuthorize("@ss.hasPermi('tms:tmsCarKeyDispatch:remove')")
+ @Log(title = "杞﹂挜鍖欏垎鍙戣褰�", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{ids}")
+ public AjaxResult remove(@PathVariable Integer[] ids)
+ {
+ return toAjax(tmsCarKeyDispatchService.deleteTmsCarKeyDispatchByIds(ids));
+ }
+}
diff --git a/tms/src/main/java/com/ruoyi/tms/domain/TmsCarKeyDispatch.java b/tms/src/main/java/com/ruoyi/tms/domain/TmsCarKeyDispatch.java
new file mode 100644
index 0000000..bb463bc
--- /dev/null
+++ b/tms/src/main/java/com/ruoyi/tms/domain/TmsCarKeyDispatch.java
@@ -0,0 +1,140 @@
+package com.ruoyi.tms.domain;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+import java.util.Date;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.annotation.Excel;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableField;
+
+import java.util.Date;
+
+import lombok.Data;
+
+/**
+ * 杞﹂挜鍖欏垎鍙戣褰曞璞� tms_car_key_dispatch
+ *
+ * @author ruoyi
+ * @date 2025-12-08
+ */
+@Data
+public class TmsCarKeyDispatch {
+
+
+ /**
+ * id
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+
+
+ /**
+ * 璋冨害鍗旾D
+ */
+ @Excel(name = "璋冨害鍗旾D")
+ @TableField("dispatch_order_id")
+ private Integer dispatchOrderId;
+
+
+ /**
+ * 璋冨害鍗曞彿
+ */
+ @Excel(name = "璋冨害鍗曞彿")
+ @TableField("dispatch_order_no")
+ private String dispatchOrderNo;
+
+
+ /**
+ * 鍙告満id
+ */
+ @Excel(name = "鍙告満id")
+ @TableField("driver_id")
+ private Integer driverId;
+
+
+ /**
+ * 鍙告満鎵嬫満鍙�
+ */
+ @Excel(name = "鍙告満鎵嬫満鍙�")
+ @TableField("driver_mobile")
+ private String driverMobile;
+
+
+ /**
+ * 鍙告満鍚嶇О
+ */
+ @Excel(name = "鍙告満鍚嶇О")
+ @TableField("driver_name")
+ private String driverName;
+
+
+ /**
+ * 杞﹁締id
+ */
+ @Excel(name = "杞﹁締id")
+ @TableField("vehicle_id")
+ private Integer vehicleId;
+
+
+ /**
+ * 杞︾墝鍙�
+ */
+ @Excel(name = "杞︾墝鍙�")
+ @TableField("vehicle_license_plate")
+ private String vehicleLicensePlate;
+
+
+ /**
+ * 杞﹂挜鍖欐煖鍙�
+ */
+ @Excel(name = "杞﹂挜鍖欐煖鍙�")
+ @TableField("vehicle_car_key_no")
+ private String vehicleCarKeyNo;
+
+
+ /**
+ * 棰嗛挜鍖欐埅姝㈡椂闂�
+ */
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @Excel(name = "棰嗛挜鍖欐埅姝㈡椂闂�", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+ @TableField("car_key_expiration_time")
+ private Date carKeyExpirationTime;
+
+
+ /**
+ * 閽ュ寵棰嗗彇鏃堕棿
+ */
+ @Excel(name = "閽ュ寵棰嗗彇鏃堕棿", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @TableField("car_key_collection _time")
+ private Date carKeyCollectionTime;
+
+
+ /**
+ * 鍒涘缓鏃堕棿
+ */
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @TableField("create_time")
+ private Date createTime;
+
+
+ /**
+ * 鏇存柊鏃堕棿
+ */
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @TableField("update_time")
+ private Date updateTime;
+
+
+ /**
+ * 鐘舵��(0:寰呴鍙�;1:宸查鍙�;2:宸查�炬湡;)
+ */
+ @Excel(name = "鐘舵��(0:寰呴鍙�;1:宸查鍙�;2:宸查�炬湡;)")
+ @TableField("status")
+ private Integer status;
+
+
+}
diff --git a/tms/src/main/java/com/ruoyi/tms/mapper/TmsCarKeyDispatchMapper.java b/tms/src/main/java/com/ruoyi/tms/mapper/TmsCarKeyDispatchMapper.java
new file mode 100644
index 0000000..e18cff4
--- /dev/null
+++ b/tms/src/main/java/com/ruoyi/tms/mapper/TmsCarKeyDispatchMapper.java
@@ -0,0 +1,87 @@
+package com.ruoyi.tms.mapper;
+
+import java.util.List;
+import com.ruoyi.tms.domain.TmsCarKeyDispatch;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+
+/**
+ * 杞﹂挜鍖欏垎鍙戣褰昅apper鎺ュ彛
+ *
+ * @author ruoyi
+ * @date 2025-12-08
+ */
+public interface TmsCarKeyDispatchMapper extends BaseMapper<TmsCarKeyDispatch>
+{
+ /**
+ * 鏌ヨ杞﹂挜鍖欏垎鍙戣褰�
+ *
+ * @param id 杞﹂挜鍖欏垎鍙戣褰旾D
+ * @return 杞﹂挜鍖欏垎鍙戣褰�
+ */
+ public TmsCarKeyDispatch selectTmsCarKeyDispatchById(Integer id);
+
+ /**
+ * 鏌ヨ杞﹂挜鍖欏垎鍙戣褰� 璁板綍鏁�
+ *
+ * @param tmsCarKeyDispatch 杞﹂挜鍖欏垎鍙戣褰�
+ * @return 杞﹂挜鍖欏垎鍙戣褰曢泦鍚�
+ */
+ public int selectTmsCarKeyDispatchCount(TmsCarKeyDispatch tmsCarKeyDispatch);
+
+ /**
+ * 鏌ヨ杞﹂挜鍖欏垎鍙戣褰曞垪琛�
+ *
+ * @param tmsCarKeyDispatch 杞﹂挜鍖欏垎鍙戣褰�
+ * @return 杞﹂挜鍖欏垎鍙戣褰曢泦鍚�
+ */
+ public List<TmsCarKeyDispatch> selectTmsCarKeyDispatchList(TmsCarKeyDispatch tmsCarKeyDispatch);
+
+ /**
+ * 鏂板杞﹂挜鍖欏垎鍙戣褰�
+ *
+ * @param tmsCarKeyDispatch 杞﹂挜鍖欏垎鍙戣褰�
+ * @return 缁撴灉
+ */
+ public int insertTmsCarKeyDispatch(TmsCarKeyDispatch tmsCarKeyDispatch);
+
+ /**
+ * 鏂板杞﹂挜鍖欏垎鍙戣褰昜鎵归噺]
+ *
+ * @param tmsCarKeyDispatchs 杞﹂挜鍖欏垎鍙戣褰�
+ * @return 缁撴灉
+ */
+ public int insertTmsCarKeyDispatchBatch(List<TmsCarKeyDispatch> tmsCarKeyDispatchs);
+
+ /**
+ * 淇敼杞﹂挜鍖欏垎鍙戣褰�
+ *
+ * @param tmsCarKeyDispatch 杞﹂挜鍖欏垎鍙戣褰�
+ * @return 缁撴灉
+ */
+ public int updateTmsCarKeyDispatch(TmsCarKeyDispatch tmsCarKeyDispatch);
+
+ /**
+ * 淇敼杞﹂挜鍖欏垎鍙戣褰昜鎵归噺]
+ *
+ * @param tmsCarKeyDispatchs 杞﹂挜鍖欏垎鍙戣褰�
+ * @return 缁撴灉
+ */
+ public int updateTmsCarKeyDispatchBatch(List<TmsCarKeyDispatch> tmsCarKeyDispatchs);
+
+ /**
+ * 鍒犻櫎杞﹂挜鍖欏垎鍙戣褰�
+ *
+ * @param id 杞﹂挜鍖欏垎鍙戣褰旾D
+ * @return 缁撴灉
+ */
+ public int deleteTmsCarKeyDispatchById(Integer id);
+
+ /**
+ * 鎵归噺鍒犻櫎杞﹂挜鍖欏垎鍙戣褰�
+ *
+ * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
+ * @return 缁撴灉
+ */
+ public int deleteTmsCarKeyDispatchByIds(Integer[] ids);
+}
diff --git a/tms/src/main/java/com/ruoyi/tms/service/ITmsCarKeyDispatchService.java b/tms/src/main/java/com/ruoyi/tms/service/ITmsCarKeyDispatchService.java
new file mode 100644
index 0000000..09be893
--- /dev/null
+++ b/tms/src/main/java/com/ruoyi/tms/service/ITmsCarKeyDispatchService.java
@@ -0,0 +1,102 @@
+package com.ruoyi.tms.service;
+
+import java.util.List;
+import com.ruoyi.tms.domain.TmsCarKeyDispatch;
+import com.baomidou.mybatisplus.extension.service.IService;
+/**
+ * 杞﹂挜鍖欏垎鍙戣褰昐ervice鎺ュ彛
+ *
+ * @author ruoyi
+ * @date 2025-12-08
+ */
+public interface ITmsCarKeyDispatchService extends IService<TmsCarKeyDispatch>
+{
+ /**
+ * 鏌ヨ杞﹂挜鍖欏垎鍙戣褰�
+ *
+ * @param id 杞﹂挜鍖欏垎鍙戣褰旾D
+ * @return 杞﹂挜鍖欏垎鍙戣褰�
+ */
+ public TmsCarKeyDispatch selectTmsCarKeyDispatchById(Integer id);
+
+ /**
+ * 鏌ヨ杞﹂挜鍖欏垎鍙戣褰� 璁板綍鏁�
+ *
+ * @param tmsCarKeyDispatch 杞﹂挜鍖欏垎鍙戣褰�
+ * @return 杞﹂挜鍖欏垎鍙戣褰曢泦鍚�
+ */
+ public int selectTmsCarKeyDispatchCount(TmsCarKeyDispatch tmsCarKeyDispatch);
+
+ /**
+ * 鏌ヨ杞﹂挜鍖欏垎鍙戣褰曞垪琛�
+ *
+ * @param tmsCarKeyDispatch 杞﹂挜鍖欏垎鍙戣褰�
+ * @return 杞﹂挜鍖欏垎鍙戣褰曢泦鍚�
+ */
+ public List<TmsCarKeyDispatch> selectTmsCarKeyDispatchList(TmsCarKeyDispatch tmsCarKeyDispatch);
+
+ /**
+ * 鏌ヨ杞﹂挜鍖欏垎鍙戣褰曞垪琛� 寮傛 瀵煎嚭
+ *
+ * @param tmsCarKeyDispatch 杞﹂挜鍖欏垎鍙戣褰�
+ * @param exportKey 瀵煎嚭鍔熻兘鐨勫敮涓�鏍囪瘑
+ * @return 杞﹂挜鍖欏垎鍙戣褰曢泦鍚�
+ */
+ public void export(TmsCarKeyDispatch tmsCarKeyDispatch, String exportKey) ;
+
+
+ /**
+ * 鏂板杞﹂挜鍖欏垎鍙戣褰�
+ *
+ * @param tmsCarKeyDispatch 杞﹂挜鍖欏垎鍙戣褰�
+ * @return 缁撴灉
+ */
+ public int insertTmsCarKeyDispatch(TmsCarKeyDispatch tmsCarKeyDispatch);
+
+ /**
+ * 鏂板杞﹂挜鍖欏垎鍙戣褰昜鎵归噺]
+ *
+ * @param tmsCarKeyDispatchs 杞﹂挜鍖欏垎鍙戣褰�
+ * @return 缁撴灉
+ */
+ public int insertTmsCarKeyDispatchBatch(List<TmsCarKeyDispatch> tmsCarKeyDispatchs);
+
+ /**
+ * 淇敼杞﹂挜鍖欏垎鍙戣褰�
+ *
+ * @param tmsCarKeyDispatch 杞﹂挜鍖欏垎鍙戣褰�
+ * @return 缁撴灉
+ */
+ public int updateTmsCarKeyDispatch(TmsCarKeyDispatch tmsCarKeyDispatch);
+
+ /**
+ * 淇敼杞﹂挜鍖欏垎鍙戣褰昜鎵归噺]
+ *
+ * @param tmsCarKeyDispatchs 杞﹂挜鍖欏垎鍙戣褰�
+ * @return 缁撴灉
+ */
+ public int updateTmsCarKeyDispatchBatch(List<TmsCarKeyDispatch> tmsCarKeyDispatchs);
+ /**
+ * 鎵归噺鍒犻櫎杞﹂挜鍖欏垎鍙戣褰�
+ *
+ * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
+ * @return 缁撴灉
+ */
+ public int deleteTmsCarKeyDispatchByIds(String ids);
+
+ /**
+ * 鎵归噺鍒犻櫎杞﹂挜鍖欏垎鍙戣褰�
+ *
+ * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
+ * @return 缁撴灉
+ */
+ public int deleteTmsCarKeyDispatchByIds(Integer[] ids);
+
+ /**
+ * 鍒犻櫎杞﹂挜鍖欏垎鍙戣褰曚俊鎭�
+ *
+ * @param id 杞﹂挜鍖欏垎鍙戣褰旾D
+ * @return 缁撴灉
+ */
+ public int deleteTmsCarKeyDispatchById(Integer id);
+}
diff --git a/tms/src/main/java/com/ruoyi/tms/service/impl/TmsCarKeyDispatchServiceImpl.java b/tms/src/main/java/com/ruoyi/tms/service/impl/TmsCarKeyDispatchServiceImpl.java
new file mode 100644
index 0000000..480386e
--- /dev/null
+++ b/tms/src/main/java/com/ruoyi/tms/service/impl/TmsCarKeyDispatchServiceImpl.java
@@ -0,0 +1,182 @@
+package com.ruoyi.tms.service.impl;
+
+import java.util.List;
+
+import com.ruoyi.common.utils.DateUtils;
+import javax.annotation.Resource;
+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.TmsCarKeyDispatchMapper;
+import com.ruoyi.tms.domain.TmsCarKeyDispatch;
+import com.ruoyi.tms.service.ITmsCarKeyDispatchService;
+import com.ruoyi.common.core.text.Convert;
+
+/**
+ * 杞﹂挜鍖欏垎鍙戣褰昐ervice涓氬姟灞傚鐞�
+ *
+ * @author ruoyi
+ * @date 2025-12-08
+ */
+@Service
+@Transactional(rollbackFor = Exception.class)
+public class TmsCarKeyDispatchServiceImpl extends BaseService<TmsCarKeyDispatchMapper, TmsCarKeyDispatch> implements ITmsCarKeyDispatchService
+{
+ protected final Logger logger = LoggerFactory.getLogger(getClass());
+ @Resource
+ private TmsCarKeyDispatchMapper tmsCarKeyDispatchMapper;
+
+
+ /**
+ * 鏌ヨ杞﹂挜鍖欏垎鍙戣褰�
+ *
+ * @param id 杞﹂挜鍖欏垎鍙戣褰旾D
+ * @return 杞﹂挜鍖欏垎鍙戣褰�
+ */
+ @DataSource(DataSourceType.SLAVE)
+ @Override
+ public TmsCarKeyDispatch selectTmsCarKeyDispatchById(Integer id)
+ {
+ return tmsCarKeyDispatchMapper.selectTmsCarKeyDispatchById(id);
+ }
+
+ /**
+ * 鏌ヨ杞﹂挜鍖欏垎鍙戣褰� 璁板綍鏁�
+ *
+ * @param tmsCarKeyDispatch 杞﹂挜鍖欏垎鍙戣褰�
+ * @return 杞﹂挜鍖欏垎鍙戣褰曢泦鍚�
+ */
+ @DataSource(DataSourceType.SLAVE)
+ @Override
+ public int selectTmsCarKeyDispatchCount(TmsCarKeyDispatch tmsCarKeyDispatch)
+ {
+ return tmsCarKeyDispatchMapper.selectTmsCarKeyDispatchCount(tmsCarKeyDispatch);
+ }
+
+ /**
+ * 鏌ヨ杞﹂挜鍖欏垎鍙戣褰曞垪琛�
+ *
+ * @param tmsCarKeyDispatch 杞﹂挜鍖欏垎鍙戣褰�
+ * @return 杞﹂挜鍖欏垎鍙戣褰�
+ */
+ @DataSource(DataSourceType.SLAVE)
+ @Override
+ public List<TmsCarKeyDispatch> selectTmsCarKeyDispatchList(TmsCarKeyDispatch tmsCarKeyDispatch)
+ {
+ return tmsCarKeyDispatchMapper.selectTmsCarKeyDispatchList(tmsCarKeyDispatch);
+ }
+
+ /**
+ * 鏌ヨ杞﹂挜鍖欏垎鍙戣褰曞垪琛� 寮傛 瀵煎嚭
+ *
+ * @param tmsCarKeyDispatch 杞﹂挜鍖欏垎鍙戣褰�
+ * @param exportKey 瀵煎嚭鍔熻兘鐨勫敮涓�鏍囪瘑
+ * @return 杞﹂挜鍖欏垎鍙戣褰曢泦鍚�
+ */
+ @DataSource(DataSourceType.SLAVE)
+ @Async
+ @Override
+ public void export(TmsCarKeyDispatch tmsCarKeyDispatch,String exportKey) {
+
+ super.export(TmsCarKeyDispatch.class,exportKey,"tmsCarKeyDispatchData",(pageNum)->{
+ PageUtils.startPage(pageNum, Constants.EXPORT_PATE_SIZE);
+ return selectTmsCarKeyDispatchList(tmsCarKeyDispatch);
+ });
+ }
+
+
+ /**
+ * 鏂板杞﹂挜鍖欏垎鍙戣褰�
+ *
+ * @param tmsCarKeyDispatch 杞﹂挜鍖欏垎鍙戣褰�
+ * @return 缁撴灉
+ */
+ @Override
+ public int insertTmsCarKeyDispatch(TmsCarKeyDispatch tmsCarKeyDispatch)
+ {
+ tmsCarKeyDispatch.setCreateTime(DateUtils.getNowDate());
+ return tmsCarKeyDispatchMapper.insertTmsCarKeyDispatch(tmsCarKeyDispatch);
+ }
+
+ /**
+ * 鏂板杞﹂挜鍖欏垎鍙戣褰昜鎵归噺]
+ *
+ * @param tmsCarKeyDispatchs 杞﹂挜鍖欏垎鍙戣褰�
+ * @return 缁撴灉
+ */
+ @Override
+ public int insertTmsCarKeyDispatchBatch(List<TmsCarKeyDispatch> tmsCarKeyDispatchs)
+ {
+ int rows = tmsCarKeyDispatchMapper.insertTmsCarKeyDispatchBatch(tmsCarKeyDispatchs);
+ return rows;
+ }
+
+ /**
+ * 淇敼杞﹂挜鍖欏垎鍙戣褰�
+ *
+ * @param tmsCarKeyDispatch 杞﹂挜鍖欏垎鍙戣褰�
+ * @return 缁撴灉
+ */
+ @Override
+ public int updateTmsCarKeyDispatch(TmsCarKeyDispatch tmsCarKeyDispatch)
+ {
+ tmsCarKeyDispatch.setUpdateTime(DateUtils.getNowDate());
+ return tmsCarKeyDispatchMapper.updateTmsCarKeyDispatch(tmsCarKeyDispatch);
+ }
+
+ /**
+ * 淇敼杞﹂挜鍖欏垎鍙戣褰昜鎵归噺]
+ *
+ * @param tmsCarKeyDispatchs 杞﹂挜鍖欏垎鍙戣褰�
+ * @return 缁撴灉
+ */
+ @Override
+ public int updateTmsCarKeyDispatchBatch(List<TmsCarKeyDispatch> tmsCarKeyDispatchs){
+ return tmsCarKeyDispatchMapper.updateTmsCarKeyDispatchBatch(tmsCarKeyDispatchs);
+ }
+
+ /**
+ * 鍒犻櫎杞﹂挜鍖欏垎鍙戣褰曞璞�
+ *
+ * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
+ * @return 缁撴灉
+ */
+ @Override
+ public int deleteTmsCarKeyDispatchByIds(String ids)
+ {
+ return deleteTmsCarKeyDispatchByIds(Convert.toIntArray(ids));
+ }
+
+ /**
+ * 鍒犻櫎杞﹂挜鍖欏垎鍙戣褰曞璞�
+ *
+ *
+ * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
+ * @return 缁撴灉
+ */
+ @Override
+ public int deleteTmsCarKeyDispatchByIds(Integer[] ids)
+ {
+ return tmsCarKeyDispatchMapper.deleteTmsCarKeyDispatchByIds(ids);
+ }
+
+ /**
+ * 鍒犻櫎杞﹂挜鍖欏垎鍙戣褰曚俊鎭�
+ *
+ * @param id 杞﹂挜鍖欏垎鍙戣褰旾D
+ * @return 缁撴灉
+ */
+ @Override
+ public int deleteTmsCarKeyDispatchById(Integer id)
+ {
+ return tmsCarKeyDispatchMapper.deleteTmsCarKeyDispatchById(id);
+ }
+}
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 b38d4d5..aaef49c 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,10 +1,9 @@
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 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;
@@ -18,11 +17,10 @@
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;
@@ -35,7 +33,6 @@
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;
@@ -65,6 +62,10 @@
private TmsDriverMapper tmsDriverMapper;
@Autowired
private TmsVehicleServiceImpl tmsVehicleServiceImpl;
+ @Resource
+ private TmsCarKeyDispatchMapper tmsCarKeyDispatchMapper;
+ @Autowired
+ private RabbitTemplate rabbitTemplate;
@Autowired
private AsyncPdfService asyncPdfService;
@@ -160,6 +161,7 @@
throw new RuntimeException("鏈壘鍒板徃鏈烘暟鎹�");
}
+
tmsDispatchOrder.setStatus(2);
tmsDispatchOrderMapper.updateTmsDispatchOrder(tmsDispatchOrder);
tmsTrip.setDriverName(tmsDispatchOrder.getMainDriverName());
@@ -171,8 +173,55 @@
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();
@@ -229,7 +278,7 @@
}
- TmsVehicle tmsVehicle = tmsVehicleServiceImpl.selectTmsVehicleById(driverDispatch.getDriverId());
+ TmsVehicle tmsVehicle = tmsVehicleServiceImpl.selectTmsVehicleById(driverDispatch.getVehicleId());
tmsDispatchOrderMapper.update(
new LambdaUpdateWrapper<TmsDispatchOrder>()
diff --git a/tms/src/main/resources/mapper/tms/TmsCarKeyDispatchMapper.xml b/tms/src/main/resources/mapper/tms/TmsCarKeyDispatchMapper.xml
new file mode 100644
index 0000000..2d3ae1d
--- /dev/null
+++ b/tms/src/main/resources/mapper/tms/TmsCarKeyDispatchMapper.xml
@@ -0,0 +1,169 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.tms.mapper.TmsCarKeyDispatchMapper">
+
+ <resultMap type="com.ruoyi.tms.domain.TmsCarKeyDispatch" id="TmsCarKeyDispatchResult">
+ <result property="id" column="id" />
+ <result property="dispatchOrderId" column="dispatch_order_id" />
+ <result property="dispatchOrderNo" column="dispatch_order_no" />
+ <result property="driverId" column="driver_id" />
+ <result property="driverMobile" column="driver_mobile" />
+ <result property="driverName" column="driver_name" />
+ <result property="vehicleId" column="vehicle_id" />
+ <result property="vehicleLicensePlate" column="vehicle_license_plate" />
+ <result property="vehicleCarKeyNo" column="vehicle_car_key_no" />
+ <result property="carKeyExpirationTime" column="car_key_expiration_time" />
+ <result property="carKeyCollectionTime" column="car_key_collection_time" />
+ <result property="createTime" column="create_time" />
+ <result property="updateTime" column="update_time" />
+ <result property="status" column="status" />
+ </resultMap>
+
+ <sql id="selectTmsCarKeyDispatchVo">
+ select thisTab.id, thisTab.dispatch_order_id, thisTab.dispatch_order_no, thisTab.driver_id, thisTab.driver_mobile, thisTab.driver_name, thisTab.vehicle_id, thisTab.vehicle_license_plate, thisTab.vehicle_car_key_no, thisTab.car_key_expiration_time, thisTab.car_key_collection_time, thisTab.create_time, thisTab.update_time, thisTab.status from tms_car_key_dispatch AS thisTab
+ </sql>
+ <sql id="selectTmsCarKeyDispatchVoCount">
+ select count(0) from tms_car_key_dispatch as thisTab
+ </sql>
+
+ <sql id="whereCondition">
+ <if test="dispatchOrderId != null "> and thisTab.dispatch_order_id = #{dispatchOrderId}</if>
+ <if test="dispatchOrderNo != null and dispatchOrderNo != ''"> and thisTab.dispatch_order_no = #{dispatchOrderNo}</if>
+ <if test="driverId != null "> and thisTab.driver_id = #{driverId}</if>
+ <if test="driverMobile != null and driverMobile != ''"> and thisTab.driver_mobile = #{driverMobile}</if>
+ <if test="driverName != null and driverName != ''"> and thisTab.driver_name like concat('%', #{driverName}, '%')</if>
+ <if test="vehicleId != null "> and thisTab.vehicle_id = #{vehicleId}</if>
+ <if test="vehicleLicensePlate != null and vehicleLicensePlate != ''"> and thisTab.vehicle_license_plate = #{vehicleLicensePlate}</if>
+ <if test="vehicleCarKeyNo != null "> and thisTab.vehicle_car_key_no = #{vehicleCarKeyNo}</if>
+ <if test="carKeyExpirationTime != null "> and thisTab.car_key_expiration_time = #{carKeyExpirationTime}</if>
+ <if test="carKeyCollectionTime != null "> and thisTab.car_key_collection_time = #{carKeyCollectionTime}</if>
+ <if test="status != null "> and thisTab.status = #{status}</if>
+ </sql>
+
+ <!--鏌ヨ-->
+ <select id="selectTmsCarKeyDispatchById" parameterType="Integer" resultMap="TmsCarKeyDispatchResult">
+ <include refid="selectTmsCarKeyDispatchVo"/>
+ where id = #{id}
+ </select>
+
+ <select id="selectTmsCarKeyDispatchCount" parameterType="com.ruoyi.tms.domain.TmsCarKeyDispatch" resultType="int">
+ <include refid="selectTmsCarKeyDispatchVoCount"/>
+ <where>
+ <include refid="whereCondition"/>
+ </where>
+ </select>
+
+ <select id="selectTmsCarKeyDispatchList" parameterType="com.ruoyi.tms.domain.TmsCarKeyDispatch" resultMap="TmsCarKeyDispatchResult">
+ <include refid="selectTmsCarKeyDispatchVo"/>
+ <where>
+ <include refid="whereCondition"/>
+ </where>
+ order by thisTab.id desc
+ </select>
+
+ <!-- 鏂板 -->
+ <insert id="insertTmsCarKeyDispatch" parameterType="com.ruoyi.tms.domain.TmsCarKeyDispatch" useGeneratedKeys="true" keyProperty="id">
+ insert into tms_car_key_dispatch
+ <trim prefix="(" suffix=")" suffixOverrides=",">
+ <if test="id != null">id,</if>
+ <if test="dispatchOrderId != null">dispatch_order_id,</if>
+ <if test="dispatchOrderNo != null">dispatch_order_no,</if>
+ <if test="driverId != null">driver_id,</if>
+ <if test="driverMobile != null and driverMobile != ''">driver_mobile,</if>
+ <if test="driverName != null">driver_name,</if>
+ <if test="vehicleId != null">vehicle_id,</if>
+ <if test="vehicleLicensePlate != null">vehicle_license_plate,</if>
+ <if test="vehicleCarKeyNo != null">vehicle_car_key_no,</if>
+ <if test="carKeyExpirationTime != null">car_key_expiration_time,</if>
+ <if test="carKeyCollectionTime != null">car_key_collection_time,</if>
+ <if test="createTime != null">create_time,</if>
+ <if test="updateTime != null">update_time,</if>
+ <if test="status != null">status,</if>
+ </trim>
+ <trim prefix="values (" suffix=")" suffixOverrides=",">
+ <if test="id != null">#{id},</if>
+ <if test="dispatchOrderId != null">#{dispatchOrderId},</if>
+ <if test="dispatchOrderNo != null">#{dispatchOrderNo},</if>
+ <if test="driverId != null">#{driverId},</if>
+ <if test="driverMobile != null and driverMobile != ''">#{driverMobile},</if>
+ <if test="driverName != null">#{driverName},</if>
+ <if test="vehicleId != null">#{vehicleId},</if>
+ <if test="vehicleLicensePlate != null">#{vehicleLicensePlate},</if>
+ <if test="vehicleCarKeyNo != null">#{vehicleCarKeyNo},</if>
+ <if test="carKeyExpirationTime != null">#{carKeyExpirationTime},</if>
+ <if test="carKeyCollectionTime != null">#{carKeyCollectionTime},</if>
+ <if test="createTime != null">#{createTime},</if>
+ <if test="updateTime != null">#{updateTime},</if>
+ <if test="status != null">#{status},</if>
+ </trim>
+ </insert>
+
+ <insert id="insertTmsCarKeyDispatchBatch" parameterType="java.util.List" >
+ insert into tms_car_key_dispatch
+ <trim prefix="(" suffix=") values" suffixOverrides=",">
+ id,dispatch_order_id,dispatch_order_no,driver_id,driver_mobile,driver_name,vehicle_id,vehicle_license_plate,vehicle_car_key_no,car_key_expiration_time,car_key_collection_time,create_time,update_time,status,
+ </trim>
+ <foreach item="item" index="index" collection="list" separator=",">
+ <trim prefix="(" suffix=") " suffixOverrides=",">
+ #{item.id},#{item.dispatchOrderId},#{item.dispatchOrderNo},#{item.driverId},#{item.driverMobile},#{item.driverName},#{item.vehicleId},#{item.vehicleLicensePlate},#{item.vehicleCarKeyNo},#{item.carKeyExpirationTime},#{item.carKeyCollectionTime},#{item.createTime},#{item.updateTime},#{item.status},
+ </trim>
+ </foreach>
+ </insert>
+
+ <!-- 淇敼 -->
+ <update id="updateTmsCarKeyDispatch" parameterType="com.ruoyi.tms.domain.TmsCarKeyDispatch">
+ update tms_car_key_dispatch
+ <trim prefix="SET" suffixOverrides=",">
+ <if test="dispatchOrderId != null">dispatch_order_id = #{dispatchOrderId},</if>
+ <if test="dispatchOrderNo != null">dispatch_order_no = #{dispatchOrderNo},</if>
+ <if test="driverId != null">driver_id = #{driverId},</if>
+ <if test="driverMobile != null and driverMobile != ''">driver_mobile = #{driverMobile},</if>
+ <if test="driverName != null">driver_name = #{driverName},</if>
+ <if test="vehicleId != null">vehicle_id = #{vehicleId},</if>
+ <if test="vehicleLicensePlate != null">vehicle_license_plate = #{vehicleLicensePlate},</if>
+ <if test="vehicleCarKeyNo != null">vehicle_car_key_no = #{vehicleCarKeyNo},</if>
+ <if test="carKeyExpirationTime != null">car_key_expiration_time = #{carKeyExpirationTime},</if>
+ <if test="carKeyCollectionTime != null">car_key_collection_time = #{carKeyCollectionTime},</if>
+ <if test="createTime != null">create_time = #{createTime},</if>
+ <if test="updateTime != null">update_time = #{updateTime},</if>
+ <if test="status != null">status = #{status},</if>
+ </trim>
+ where id = #{id}
+ </update>
+ <!-- 淇敼 -->
+ <update id="updateTmsCarKeyDispatchBatch" parameterType="java.util.List">
+ <foreach collection="list" item="item" index="index" separator=";">
+ update tms_car_key_dispatch
+ <trim prefix="SET" suffixOverrides=",">
+ <if test="item.dispatchOrderId != null">dispatch_order_id = #{item.dispatchOrderId},</if>
+ <if test="item.dispatchOrderNo != null">dispatch_order_no = #{item.dispatchOrderNo},</if>
+ <if test="item.driverId != null">driver_id = #{item.driverId},</if>
+ <if test="item.driverMobile != null and item.driverMobile != ''">driver_mobile = #{item.driverMobile},</if>
+ <if test="item.driverName != null">driver_name = #{item.driverName},</if>
+ <if test="item.vehicleId != null">vehicle_id = #{item.vehicleId},</if>
+ <if test="item.vehicleLicensePlate != null">vehicle_license_plate = #{item.vehicleLicensePlate},</if>
+ <if test="item.vehicleCarKeyNo != null">vehicle_car_key_no = #{item.vehicleCarKeyNo},</if>
+ <if test="item.carKeyExpirationTime != null">car_key_expiration_time = #{item.carKeyExpirationTime},</if>
+ <if test="item.carKeyCollectionTime != null">car_key_collection_time = #{item.carKeyCollectionTime},</if>
+ <if test="item.createTime != null">create_time = #{item.createTime},</if>
+ <if test="item.updateTime != null">update_time = #{item.updateTime},</if>
+ <if test="item.status != null">status = #{item.status},</if>
+ </trim>
+ where id = #{item.id}
+ </foreach>
+ </update>
+
+ <!--鍒犻櫎-->
+ <delete id="deleteTmsCarKeyDispatchById" parameterType="Integer">
+ delete from tms_car_key_dispatch where id = #{id}
+ </delete>
+ <delete id="deleteTmsCarKeyDispatchByIds" parameterType="Integer">
+ delete from tms_car_key_dispatch where id in
+ <foreach item="id" collection="array" open="(" separator="," close=")">
+ #{id}
+ </foreach>
+ </delete>
+
+</mapper>
\ No newline at end of file
--
Gitblit v1.8.0