From fe33646ee6e2d1e57f2b51812e94983a0e9efb04 Mon Sep 17 00:00:00 2001
From: wlzboy <66905212@qq.com>
Date: 星期日, 14 十二月 2025 16:51:28 +0800
Subject: [PATCH] feat: 修复统计
---
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/VehicleGpsSegmentMileageServiceImpl.java | 56 +++++++++++++++++++++++++++++++++-----------------------
1 files changed, 33 insertions(+), 23 deletions(-)
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/VehicleGpsSegmentMileageServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/VehicleGpsSegmentMileageServiceImpl.java
index 3738cfb..9936086 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/VehicleGpsSegmentMileageServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/VehicleGpsSegmentMileageServiceImpl.java
@@ -3,6 +3,8 @@
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.*;
+
+import com.ruoyi.common.utils.DateUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -97,10 +99,11 @@
public int batchCalculateSegmentMileage(Date startTime, Date endTime) {
try {
// logger.info("寮�濮嬫壒閲忚绠桮PS鍒嗘閲岀▼ - 鏃堕棿鑼冨洿: {} 鍒� {}", startTime, endTime);
-
+ String startTimeStr = DateUtils.formatDate(startTime,DateUtils.YYYY_MM_DD_HH_MM_SS);
+ String endTimeStr = DateUtils.formatDate(endTime,DateUtils.YYYY_MM_DD_HH_MM_SS);
// 鏌ヨ鍦ㄦ寚瀹氭椂闂磋寖鍥村唴鏈塆PS鏁版嵁鐨勬墍鏈夎溅杈嗭紙娣诲姞鎱QL鐩戞帶锛�
long startQueryTime = System.currentTimeMillis();
- List<Long> vehicleIds = vehicleGpsMapper.selectActiveVehicleIds(startTime);
+ List<Long> vehicleIds = vehicleGpsMapper.selectActiveVehicleIds(startTimeStr);
long queryTime = System.currentTimeMillis() - startQueryTime;
// 鎱㈡煡璇㈣鍛婏紙瓒呰繃1绉掞級
@@ -167,9 +170,10 @@
Date startTime = cal.getTime();
logger.info("寮�濮嬭ˉ鍋胯绠� - 鍥炴函澶╂暟: {}, 鏃堕棿鑼冨洿: {} 鍒� {}", lookbackDays, startTime, endTime);
-
+
+ String startTimeStr=DateUtils.formatDate(startTime, DateUtils.YYYY_MM_DD_HH_MM_SS);
// 鏌ヨ鎵�鏈夋椿璺冭溅杈�
- List<Long> vehicleIds = vehicleGpsMapper.selectActiveVehicleIds(startTime);
+ List<Long> vehicleIds = vehicleGpsMapper.selectActiveVehicleIds(startTimeStr);
if (vehicleIds == null || vehicleIds.isEmpty()) {
logger.info("娌℃湁鎵惧埌娲昏穬杞﹁締");
@@ -178,11 +182,13 @@
int successCount = 0;
int totalUncalculated = 0;
-
+
+
+ String endTimeStr=DateUtils.formatDate(endTime, DateUtils.YYYY_MM_DD_HH_MM_SS);
for (Long vehicleId : vehicleIds) {
try {
// 鏌ヨ璇ヨ溅杈嗘湭琚绠楃殑GPS鏁版嵁
- List<VehicleGps> uncalculatedGps = vehicleGpsMapper.selectUncalculatedGps(vehicleId, startTime, endTime);
+ List<VehicleGps> uncalculatedGps = vehicleGpsMapper.selectUncalculatedGps(vehicleId, startTimeStr, endTimeStr);
if (uncalculatedGps == null || uncalculatedGps.isEmpty()) {
logger.debug("杞﹁締 {} 娌℃湁鏈绠楃殑GPS鏁版嵁", vehicleId);
@@ -241,14 +247,16 @@
public int calculateVehicleSegmentMileage(Long vehicleId, Date startTime, Date endTime) {
try {
// 鏌ヨ杞﹁締鍦ㄦ椂闂磋寖鍥村唴鐨凣PS鏁版嵁
- List<VehicleGps> gpsList = vehicleGpsMapper.selectGpsDataByTimeRange(vehicleId, startTime, endTime);
+ String startTimeStr=DateUtils.formatDate(startTime, DateUtils.YYYY_MM_DD_HH_MM_SS);
+ String endTimeStr=DateUtils.formatDate(endTime, DateUtils.YYYY_MM_DD_HH_MM_SS);
+ List<VehicleGps> gpsList = vehicleGpsMapper.selectGpsDataByTimeRange(vehicleId, startTimeStr, endTimeStr);
if (gpsList == null || gpsList.isEmpty()) {
logger.debug("杞﹁締ID: {} 鍦ㄦ椂闂磋寖鍥� {} 鍒� {} 鍐呮棤GPS鏁版嵁", vehicleId, startTime, endTime);
return 0;
}
- logger.info("杞﹁締ID: {} 鏌ヨ鍒� {} 鏉PS鏁版嵁 startTime:{},endTime:{}", vehicleId, gpsList.size(),startTime,endTime);
+// logger.info("杞﹁締ID: {} 鏌ヨ鍒� {} 鏉PS鏁版嵁 startTime:{},endTime:{}", vehicleId, gpsList.size(),startTime,endTime);
return calculateVehicleSegmentMileageWithGpsList(vehicleId, gpsList, startTime, endTime);
@@ -284,7 +292,7 @@
// 澶勭悊姣忎釜鏃堕棿娈靛苟璁$畻閲岀▼
int savedCount = processSegmentedGpsData(vehicleId, segmentedData, config);
- logger.info("杞﹁締 {} 璁$畻瀹屾垚锛屼繚瀛樹簡 {} 涓椂闂存鐨勯噷绋嬫暟鎹�", vehicleId, savedCount);
+// logger.info("杞﹁締 {} 璁$畻瀹屾垚锛屼繚瀛樹簡 {} 涓椂闂存鐨勯噷绋嬫暟鎹�", vehicleId, savedCount);
// 鑷姩瑙﹀彂姣忔棩缁熻姹囨��
if (savedCount > 0) {
@@ -319,7 +327,7 @@
// 鑾峰彇鏄惁璺宠繃宸茶绠桮PS鐐圭殑閰嶇疆
String skipCalculatedConfig = configService.selectConfigByKey("gps.mileage.skip.calculated");
config.skipCalculated = skipCalculatedConfig == null || "true".equalsIgnoreCase(skipCalculatedConfig);
- logger.info("鎺у埗璺宠繃閲嶅璁$畻鏍囪瘑: {}", config.skipCalculated);
+// logger.info("鎺у埗璺宠繃閲嶅璁$畻鏍囪瘑: {}", config.skipCalculated);
return config;
}
@@ -383,7 +391,7 @@
// 濡傛灉鏈鍙湁1涓偣锛屼笖娌℃湁涓婁竴娈电殑鏈�鍚庝竴涓偣锛屾棤娉曡绠楄窛绂�
if (segmentGpsList.size() == 1 && previousSegmentLastPoint == null) {
- logger.debug("杞﹁締 {} 鏃堕棿娈� {} 鍙湁1涓狦PS鐐逛笖鏃犲墠缃偣锛屾殏瀛樺緟涓嬩竴娈佃绠�", vehicleId, segmentStartTime);
+// logger.debug("杞﹁締 {} 鏃堕棿娈� {} 鍙湁1涓狦PS鐐逛笖鏃犲墠缃偣锛屾殏瀛樺緟涓嬩竴娈佃绠�", vehicleId, segmentStartTime);
return false;
}
@@ -421,14 +429,14 @@
String gpsIds = gpsIdList.stream()
.map(String::valueOf)
.collect(java.util.stream.Collectors.joining(","));
-
+
// 鍒涘缓鍒嗘閲岀▼璁板綍
VehicleGpsSegmentMileage segment = buildSegmentMileageRecord(
vehicleId, segmentStartTime, segmentEndTime, segmentGpsList,
distance, gpsIdList, gpsIds, config.calculateMethod);
// 淇濆瓨鍒版暟鎹簱
- logger.info("淇濆瓨杞﹁締鍒嗘椂娈甸噷绋嬪埌鏁版嵁搴撲腑,杞﹁締ID: {}, 鏃堕棿娈�: {} 鍒� {}", vehicleId, segmentStartTime, segmentEndTime);
+// logger.info("淇濆瓨杞﹁締鍒嗘椂娈甸噷绋嬪埌鏁版嵁搴撲腑,杞﹁締ID: {}, 鏃堕棿娈�: {} 鍒� {}", vehicleId, segmentStartTime, segmentEndTime);
segmentMileageMapper.insertVehicleGpsSegmentMileage(segment);
// 璁板綍宸茶绠楃殑GPS鐐癸紙濡傛灉寮�鍚簡閲嶅璁$畻鎺у埗锛�
@@ -436,9 +444,9 @@
recordCalculatedGpsPoints(gpsIdList, segment.getSegmentId(), vehicleId);
}
- logger.debug("杞﹁締 {} 鏃堕棿娈� {} 鍒� {} 閲岀▼: {}km, GPS鐐规暟: {}, GPS IDs: {}",
- vehicleId, segmentStartTime, segmentEndTime, distance, segmentGpsList.size(),
- gpsIds.length() > 50 ? gpsIds.substring(0, 50) + "..." : gpsIds);
+// logger.debug("杞﹁締 {} 鏃堕棿娈� {} 鍒� {} 閲岀▼: {}km, GPS鐐规暟: {}, GPS IDs: {}",
+// vehicleId, segmentStartTime, segmentEndTime, distance, segmentGpsList.size(),
+// gpsIds.length() > 50 ? gpsIds.substring(0, 50) + "..." : gpsIds);
return true;
@@ -560,7 +568,7 @@
for (Date statDate : affectedDates) {
try {
mileageStatsService.aggregateFromSegmentMileage(vehicleId, statDate);
- logger.info("杞﹁締 {} 鏃ユ湡 {} 鐨勭粺璁℃暟鎹凡鑷姩姹囨�荤敓鎴�", vehicleId, statDate);
+// logger.info("杞﹁締 {} 鏃ユ湡 {} 鐨勭粺璁℃暟鎹凡鑷姩姹囨�荤敓鎴�", vehicleId, statDate);
} catch (Exception e) {
logger.error("杞﹁締 {} 鏃ユ湡 {} 鑷姩姹囨�荤粺璁″け璐�", vehicleId, statDate, e);
}
@@ -662,8 +670,8 @@
);
totalDistance = totalDistance.add(BigDecimal.valueOf(gapDistance));
- logger.debug("璺ㄦ闂撮殭璺濈: {}km (涓婁竴娈垫湯鐐� -> 褰撳墠娈甸鐐�)",
- String.format("%.3f", gapDistance));
+// logger.debug("璺ㄦ闂撮殭璺濈: {}km (涓婁竴娈垫湯鐐� -> 褰撳墠娈甸鐐�)",
+// String.format("%.3f", gapDistance));
}
// 2. 鍐嶈绠楀綋鍓嶆鍐呴儴鐨勮窛绂伙紙濡傛灉鏈�2涓垨浠ヤ笂GPS鐐癸級
@@ -840,10 +848,12 @@
Date segmentStartTime, Date segmentEndTime) {
try {
// 鏌ヨ璇ヨ溅杈嗘鍦ㄦ墽琛岀殑浠诲姟鍒楄〃
- List<SysTask> activeTasks = sysTaskMapper.selectTaskByVehicleIdAndDate(vehicleId,segmentStartTime,segmentEndTime);
+ String segmentStartTimeStr = DateUtils.formatDate(segmentStartTime, "yyyy-MM-dd HH:mm:ss");
+ String segmentEndTimeStr = DateUtils.formatDate(segmentEndTime, "yyyy-MM-dd HH:mm:ss");
+ List<SysTask> activeTasks = sysTaskMapper.selectTaskByVehicleIdAndDate(vehicleId,segmentStartTimeStr,segmentEndTimeStr);
if (activeTasks == null || activeTasks.isEmpty()) {
- logger.debug("杞﹁締 {} 鍦ㄦ椂闂存 {} - {} 娌℃湁姝e湪鎵ц鐨勪换鍔�", vehicleId, segmentStartTime, segmentEndTime);
+ logger.info("杞﹁締 {} 鍦ㄦ椂闂存 {} - {} 娌℃湁姝e湪鎵ц鐨勪换鍔�", vehicleId, segmentStartTime, segmentEndTime);
return;
}
@@ -859,8 +869,8 @@
segment.setTaskId(task.getTaskId());
segment.setTaskCode(task.getTaskCode());
- logger.debug("杞﹁締 {} 鏃堕棿娈� {} - {} 鍏宠仈浠诲姟: taskId={}, taskCode={}",
- vehicleId, segmentStartTime, segmentEndTime, task.getTaskId(), task.getTaskCode());
+// logger.debug("杞﹁締 {} 鏃堕棿娈� {} - {} 鍏宠仈浠诲姟: taskId={}, taskCode={}",
+// vehicleId, segmentStartTime, segmentEndTime, task.getTaskId(), task.getTaskCode());
break; // 鎵惧埌涓�涓尮閰嶇殑浠诲姟鍗冲彲
}
}
--
Gitblit v1.9.1