From 221d3c27966f4486d7b0cdde303311a0e3788a9c Mon Sep 17 00:00:00 2001
From: Yangk
Date: Wed, 29 Apr 2026 16:36:41 +0800
Subject: [PATCH] =?UTF-8?q?feat(tyre):=20=E6=96=B0=E5=A2=9E=E8=BD=AE?=
=?UTF-8?q?=E8=83=8E=E7=B4=AF=E8=AE=A1=E8=A1=8C=E9=A9=B6=E9=87=8C=E7=A8=8B?=
=?UTF-8?q?=E6=9F=A5=E8=AF=A2=E6=8E=A5=E5=8F=A3?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../controller/tyre/BaseTyreController.java | 10 +++
.../system/domain/RecordTyreMileage.java | 14 +++++
.../mapper/RecordTyreMileageMapper.java | 7 +++
.../system/service/IBaseTyreService.java | 2 +
.../service/impl/BaseTyreServiceImpl.java | 63 +++++++++++++++++++
.../impl/RecordTyreInstallServiceImpl.java | 10 ++-
.../mapper/tyre/RecordTyreMileageMapper.xml | 11 ++++
7 files changed, 116 insertions(+), 1 deletion(-)
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/tyre/BaseTyreController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/tyre/BaseTyreController.java
index b63107d9..bb5eccb4 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/tyre/BaseTyreController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/tyre/BaseTyreController.java
@@ -499,4 +499,14 @@ public class BaseTyreController extends BaseController {
this.color = color;
}
}
+
+ /**
+ * PDA查询轮胎累计行驶里程
+ */
+ @PostMapping("/pdaQueryTyreMileage")
+ @ResponseBody
+ public AjaxResult pdaQueryTyreMileage(String tyreEpc)
+ {
+ return success(baseTyreService.queryTyreMileageSummary(tyreEpc));
+ }
}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/RecordTyreMileage.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/RecordTyreMileage.java
index fab9ea3f..eb6eb831 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/RecordTyreMileage.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/RecordTyreMileage.java
@@ -40,6 +40,10 @@ public class RecordTyreMileage extends BaseEntity
private Long mileage;
private Long mileageOld;
+ /** 历史段里程(差值) */
+ @Excel(name = "段里程")
+ private Long mileageOld;
+
@Excel(name = "花纹深度")
private String patternDepth;
@@ -154,6 +158,16 @@ public class RecordTyreMileage extends BaseEntity
return mileage;
}
+ public void setMileageOld(Long mileageOld)
+ {
+ this.mileageOld = mileageOld;
+ }
+
+ public Long getMileageOld()
+ {
+ return mileageOld;
+ }
+
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/RecordTyreMileageMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/RecordTyreMileageMapper.java
index bfb32d0a..9b7a25c2 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/RecordTyreMileageMapper.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/RecordTyreMileageMapper.java
@@ -61,4 +61,11 @@ public interface RecordTyreMileageMapper
* @return 结果
*/
public int deleteRecordTyreMileageByIds(String[] ids);
+
+ /**
+ * 根据轮胎RFID查询累计行驶里程
+ * @param tyreRfid
+ * @return
+ */
+ public Long selectTotalMileageByTyreRfid(String tyreRfid);
}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/IBaseTyreService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/IBaseTyreService.java
index 7e3dd4cc..2e7b56cd 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/IBaseTyreService.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/IBaseTyreService.java
@@ -94,4 +94,6 @@ public interface IBaseTyreService
*
*/
Map selectTyreDetailForWeb(BaseTyre baseTyre);
+
+ Map queryTyreMileageSummary(String tyreRfid);
}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/BaseTyreServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/BaseTyreServiceImpl.java
index 0346acdf..805f06e3 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/BaseTyreServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/BaseTyreServiceImpl.java
@@ -513,4 +513,67 @@ public class BaseTyreServiceImpl implements IBaseTyreService
}
}
}
+
+ @Override
+ public Map queryTyreMileageSummary(String tyreRfid) {
+ Map result = new HashMap<>();
+ BaseTyre query = new BaseTyre();
+ query.setTyreEpc(tyreRfid);
+ BaseTyre tyre = baseTyreMapper.selectBaseTyreByEpc(query);
+ if (tyre == null) {
+ return result;
+ }
+
+ result.put("tyreNo", tyre.getTyreNo());
+ result.put("tyreBrand", tyre.getTyreBrand());
+ result.put("carNo", tyre.getCarNo());
+ result.put("wheelPostion", tyre.getWheelPostion());
+ result.put("tyreType", tyre.getTyreType());
+
+ // 1. 获取已结算的累计里程 (record_tyre_mileage 表中的 SUM(mileage_old))
+ Long settledMileage = recordTyreMileageMapper.selectTotalMileageByTyreRfid(tyreRfid);
+ if (settledMileage == null) {
+ settledMileage = 0L;
+ }
+
+ // 2. 计算当前在车里程 (如果是已装车状态)
+ long onCarMileage = 0;
+ if (StringUtils.isNotEmpty(tyre.getCarNo())) {
+ // 查找该轮胎在该车上的最近一次装车记录
+ RecordTyreInstall installQuery = new RecordTyreInstall();
+ installQuery.setTyreRfid(tyreRfid);
+ installQuery.setCarNo(tyre.getCarNo());
+ installQuery.setType("0"); // 装车
+ RecordTyreInstall lastInstall = recordTyreInstallMapper.selectRecordTyreInstallStart(installQuery);
+
+ if (lastInstall != null) {
+ // 查找该车辆最新的维保记录 (获取当前里程快照)
+ BizMaintenanceOrder orderQuery = new BizMaintenanceOrder();
+ orderQuery.setPlateNumber(tyre.getCarNo());
+ // 后台列表查询按时间倒序
+ List orders = bizMaintenanceOrderMapper.selectBizMaintenanceOrderList(orderQuery);
+ if (orders != null && !orders.isEmpty()) {
+ BizMaintenanceOrder latestOrder = orders.get(0);
+ if (latestOrder.getInputMileage() != null) {
+ long currentCarMileage = latestOrder.getInputMileage().longValue();
+ if (currentCarMileage > lastInstall.getMileage()) {
+ onCarMileage = currentCarMileage - lastInstall.getMileage();
+ }
+ }
+ }
+ }
+ }
+
+ result.put("settledMileage", settledMileage);
+ result.put("onCarMileage", onCarMileage);
+ result.put("totalMileage", settledMileage + onCarMileage);
+
+ // 3. 获取历史明细
+ RecordTyreMileage mileageQuery = new RecordTyreMileage();
+ mileageQuery.setTyreRfid(tyreRfid);
+ List details = recordTyreMileageMapper.selectRecordTyreMileageList(mileageQuery);
+ result.put("mileageDetails", details);
+
+ return result;
+ }
}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/RecordTyreInstallServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/RecordTyreInstallServiceImpl.java
index 0d4c1fdf..21e70ce9 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/RecordTyreInstallServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/RecordTyreInstallServiceImpl.java
@@ -165,11 +165,19 @@ public class RecordTyreInstallServiceImpl implements IRecordTyreInstallService
* 计算里程差插入里程记录表
*/
long between = calculateMileageDifference(recordTyreInstall.getMileage(), start.getMileage());
+
+ // 获取该轮胎的历史累计里程
+ Long totalMileage = recordTyreMileageMapper.selectTotalMileageByTyreRfid(recordTyreInstall.getTyreRfid());
+ if (totalMileage == null) {
+ totalMileage = 0L;
+ }
+
RecordTyreMileage recordTyreMileage =new RecordTyreMileage();
recordTyreMileage.setTyreRfid(recordTyreInstall.getTyreRfid());
recordTyreMileage.setStartTime(start.getCreateTime());
recordTyreMileage.setEndTime(DateUtils.getNowDate());
- recordTyreMileage.setMileage(between);
+ recordTyreMileage.setMileage(totalMileage + between); // 当前累计总里程
+ recordTyreMileage.setMileageOld(between); // 本段行驶里程
recordTyreMileage.setCreateTime(DateUtils.getNowDate());
recordTyreMileage.setCreateBy(recordTyreInstall.getCreateBy());
recordTyreMileage.setRecordId(recordId);
diff --git a/ruoyi-system/src/main/resources/mapper/tyre/RecordTyreMileageMapper.xml b/ruoyi-system/src/main/resources/mapper/tyre/RecordTyreMileageMapper.xml
index 3c948b31..779e85bc 100644
--- a/ruoyi-system/src/main/resources/mapper/tyre/RecordTyreMileageMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/tyre/RecordTyreMileageMapper.xml
@@ -10,6 +10,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+
@@ -23,10 +24,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+ select id, tyre_rfid, start_time, end_time, mileage, mileage_old, pattern_depth, create_by, create_time, update_by, update_time, remark from record_tyre_mileage
select id, tyre_rfid, start_time, end_time, mileage, pattern_depth, plate_number, record_id, create_by, create_time, update_by, update_time, remark from record_tyre_mileage