From b2bd9fb71ee17d0ec73429f03dc87c87a0a38325 Mon Sep 17 00:00:00 2001
From: wlzboy <66905212@qq.com>
Date: 星期六, 24 一月 2026 23:11:10 +0800
Subject: [PATCH] feat: 移除不必要的日志
---
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/VehicleGpsSegmentMileageServiceImpl.java | 200 +++++++++++++++++++++++++++++++------------------
1 files changed, 127 insertions(+), 73 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 fbeede2..0af806d 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
@@ -2,7 +2,10 @@
import java.math.BigDecimal;
import java.math.RoundingMode;
+import java.time.format.DateTimeFormatter;
import java.util.*;
+
+import com.ruoyi.common.utils.DateUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -38,6 +41,12 @@
/** 澶╁湴鍥炬壒閲忚矾寰勮鍒扐PI */
private static final String TIANDITU_ROUTE_API = "http://api.tianditu.gov.cn/drive";
+
+ /** 绾跨▼瀹夊叏鐨勬棩鏈熸牸寮忓寲鍣� */
+ private static final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+
+ /** 鍒嗘壒澶勭悊澶у皬锛岄伩鍏嶄竴娆℃�у姞杞借繃澶氭暟鎹� */
+ private static final int BATCH_SIZE = 10;
@Autowired
private VehicleGpsSegmentMileageMapper segmentMileageMapper;
@@ -96,50 +105,69 @@
@Override
public int batchCalculateSegmentMileage(Date startTime, Date endTime) {
try {
- logger.info("寮�濮嬫壒閲忚绠桮PS鍒嗘閲岀▼ - 鏃堕棿鑼冨洿: {} 鍒� {}", startTime, endTime);
+// 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(startTimeStr);
+ long queryTime = System.currentTimeMillis() - startQueryTime;
- // 鏌ヨ鍦ㄦ寚瀹氭椂闂磋寖鍥村唴鏈塆PS鏁版嵁鐨勬墍鏈夎溅杈�
- List<Long> vehicleIds = vehicleGpsMapper.selectActiveVehicleIds(startTime);
+ // 鎱㈡煡璇㈣鍛婏紙瓒呰繃1绉掞級
+ if (queryTime > 1000) {
+ logger.warn("鏌ヨ娲昏穬杞﹁締ID鑰楁椂杩囬暱: {}ms, 寮�濮嬫椂闂�: {}, 寤鸿妫�鏌� tb_vehicle_gps 琛ㄧ殑绱㈠紩锛堥渶瑕� vehicle_id 鍜� collect_time 缁勫悎绱㈠紩锛�",
+ queryTime, startTime);
+ }
+// logger.info("鏌ヨ鍒� {} 杈嗘椿璺冭溅杈嗭紝鏌ヨ鑰楁椂: {}ms", vehicleIds != null ? vehicleIds.size() : 0, queryTime);
if (vehicleIds == null || vehicleIds.isEmpty()) {
- logger.info("娌℃湁鎵惧埌娲昏穬杞﹁締");
+// logger.info("娌℃湁鎵惧埌娲昏穬杞﹁締");
return 0;
}
- logger.info("鎵惧埌 {} 杈嗘椿璺冭溅杈嗭紝寮�濮嬮�愯締璁$畻...", vehicleIds.size());
+// logger.info("鎵惧埌 {} 杈嗘椿璺冭溅杈嗭紝寮�濮嬪垎鎵归�愯締璁$畻...", vehicleIds.size());
int successCount = 0;
int failedCount = 0;
- // 閫愯締璁$畻锛屽寘鍚敊璇鐞嗗拰閲嶈瘯鏈哄埗
- for (int i = 0; i < vehicleIds.size(); i++) {
- Long vehicleId = vehicleIds.get(i);
- try {
- logger.info("姝e湪澶勭悊杞﹁締 {} ({}/{})", vehicleId, i + 1, vehicleIds.size());
-
- int segmentCount = calculateVehicleSegmentMileage(vehicleId, startTime, endTime);
- if (segmentCount > 0) {
- successCount++;
- logger.info("杞﹁締 {} 璁$畻鎴愬姛锛岀敓鎴� {} 涓垎娈佃褰�", vehicleId, segmentCount);
- } else {
- logger.debug("杞﹁締 {} 鏃犳湁鏂扮殑GPS鍒嗘鏁版嵁", vehicleId);
+ // 鍒嗘壒澶勭悊锛岄伩鍏嶄竴娆℃�у鐞嗚繃澶氭暟鎹鑷村唴瀛樻孩鍑�
+ for (int batchStart = 0; batchStart < vehicleIds.size(); batchStart += BATCH_SIZE) {
+ int batchEnd = Math.min(batchStart + BATCH_SIZE, vehicleIds.size());
+ List<Long> batchVehicleIds = vehicleIds.subList(batchStart, batchEnd);
+
+// logger.info("澶勭悊鎵规 {}-{}/{}", batchStart + 1, batchEnd, vehicleIds.size());
+
+ // 閫愯締璁$畻锛屽寘鍚敊璇鐞嗗拰閲嶈瘯鏈哄埗
+ for (int i = 0; i < batchVehicleIds.size(); i++) {
+ Long vehicleId = batchVehicleIds.get(i);
+ int overallIndex = batchStart + i;
+ try {
+ int segmentCount = calculateVehicleSegmentMileage(vehicleId, startTime, endTime);
+ if (segmentCount > 0) {
+ successCount++;
+ }
+ } catch (Exception e) {
+ failedCount++;
+ logger.error("璁$畻杞﹁締 {} 鐨勫垎娈甸噷绋嬪け璐� ({}/{})", vehicleId, overallIndex + 1, vehicleIds.size(), e);
+ // 涓嶄腑鏂暣涓壒澶勭悊锛岀户缁鐞嗕笅涓�杈嗚溅
}
- } catch (Exception e) {
- failedCount++;
- logger.error("璁$畻杞﹁締 {} 鐨勫垎娈甸噷绋嬪け璐� ({}/{})", vehicleId, i + 1, vehicleIds.size(), e);
- // 涓嶄腑鏂暣涓壒澶勭悊锛岀户缁鐞嗕笅涓�杈嗚溅
+ // 姣忓鐞�10杈嗚溅杈撳嚭涓�娆¤繘搴�
+ if ((overallIndex + 1) % 10 == 0) {
+// logger.info("鎵归噺璁$畻杩涘害: {}/{}, 鎴愬姛: {}, 澶辫触: {}",
+// overallIndex + 1, vehicleIds.size(), successCount, failedCount);
+ }
}
- // 姣忓鐞�10杈嗚溅杈撳嚭涓�娆¤繘搴�
- if ((i + 1) % 10 == 0) {
- logger.info("鎵归噺璁$畻杩涘害: {}/{}, 鎴愬姛: {}, 澶辫触: {}",
- i + 1, vehicleIds.size(), successCount, failedCount);
+ // 鎵规缁撴潫鍚庯紝涓诲姩瑙﹀彂GC寤鸿锛堜笉寮哄埗锛�
+ if (batchEnd < vehicleIds.size()) {
+ System.gc();
+// logger.debug("鎵规 {}-{} 澶勭悊瀹屾垚锛屽凡寤鸿JVM鍥炴敹鍐呭瓨", batchStart + 1, batchEnd);
}
}
- logger.info("鎵归噺鍒嗘閲岀▼璁$畻瀹屾垚 - 鏃堕棿鑼冨洿: {} 鍒� {}, 鎬昏溅杈嗘暟: {}, 鎴愬姛: {}, 澶辫触: {}",
- startTime, endTime, vehicleIds.size(), successCount, failedCount);
+// logger.info("鎵归噺鍒嗘閲岀▼璁$畻瀹屾垚 - 鏃堕棿鑼冨洿: {} 鍒� {}, 鎬昏溅杈嗘暟: {}, 鎴愬姛: {}, 澶辫触: {}",
+// startTime, endTime, vehicleIds.size(), successCount, failedCount);
return successCount;
} catch (Exception e) {
@@ -157,32 +185,40 @@
cal.add(Calendar.DAY_OF_MONTH, -lookbackDays);
Date startTime = cal.getTime();
- logger.info("寮�濮嬭ˉ鍋胯绠� - 鍥炴函澶╂暟: {}, 鏃堕棿鑼冨洿: {} 鍒� {}", lookbackDays, startTime, endTime);
-
+// 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("娌℃湁鎵惧埌娲昏穬杞﹁締");
+// logger.info("娌℃湁鎵惧埌娲昏穬杞﹁締");
return 0;
}
int successCount = 0;
int totalUncalculated = 0;
-
- for (Long vehicleId : vehicleIds) {
- try {
- // 鏌ヨ璇ヨ溅杈嗘湭琚绠楃殑GPS鏁版嵁
- List<VehicleGps> uncalculatedGps = vehicleGpsMapper.selectUncalculatedGps(vehicleId, startTime, endTime);
+
+
+ String endTimeStr=DateUtils.formatDate(endTime, DateUtils.YYYY_MM_DD_HH_MM_SS);
+ // 鍒嗘壒澶勭悊杞﹁締锛岄伩鍏嶅唴瀛樻孩鍑�
+ for (int batchStart = 0; batchStart < vehicleIds.size(); batchStart += BATCH_SIZE) {
+ int batchEnd = Math.min(batchStart + BATCH_SIZE, vehicleIds.size());
+ List<Long> batchVehicleIds = vehicleIds.subList(batchStart, batchEnd);
+
+ for (Long vehicleId : batchVehicleIds) {
+ try {
+ // 鏌ヨ璇ヨ溅杈嗘湭琚绠楃殑GPS鏁版嵁
+ List<VehicleGps> uncalculatedGps = vehicleGpsMapper.selectUncalculatedGps(vehicleId, startTimeStr, endTimeStr);
if (uncalculatedGps == null || uncalculatedGps.isEmpty()) {
- logger.debug("杞﹁締 {} 娌℃湁鏈绠楃殑GPS鏁版嵁", vehicleId);
+// logger.debug("杞﹁締 {} 娌℃湁鏈绠楃殑GPS鏁版嵁", vehicleId);
continue;
}
totalUncalculated += uncalculatedGps.size();
- logger.info("杞﹁締 {} 鍙戠幇 {} 涓湭璁$畻鐨凣PS鐐癸紝寮�濮嬭ˉ鍋胯绠�...",
- vehicleId, uncalculatedGps.size());
+// logger.info("杞﹁締 {} 鍙戠幇 {} 涓湭璁$畻鐨凣PS鐐癸紝寮�濮嬭ˉ鍋胯绠�...",
+// vehicleId, uncalculatedGps.size());
// 鑾峰彇鏈绠桮PS鏁版嵁鐨勬椂闂磋寖鍥�
Date uncalculatedStartTime = parseDateTime(uncalculatedGps.get(0).getCollectTime());
@@ -192,16 +228,16 @@
Long lastCalculatedGpsId = segmentMileageMapper.selectLastCalculatedGpsId(vehicleId, uncalculatedStartTime);
if (lastCalculatedGpsId != null) {
- logger.info("杞﹁締 {} 鎵惧埌鏈�鍚庝竴涓凡澶勭悊鐨凣PS鐐笽D: {}锛屽皢涓庢湭澶勭悊鏁版嵁涓�璧疯绠�", vehicleId, lastCalculatedGpsId);
+// logger.info("杞﹁締 {} 鎵惧埌鏈�鍚庝竴涓凡澶勭悊鐨凣PS鐐笽D: {}锛屽皢涓庢湭澶勭悊鏁版嵁涓�璧疯绠�", vehicleId, lastCalculatedGpsId);
// 灏嗘渶鍚庝竴涓凡澶勭悊鐨凣PS鐐瑰姞鍏ュ垪琛ㄥ墠闈紝浣滀负鍓嶇疆鐐�
VehicleGps lastCalculatedGps = vehicleGpsMapper.selectVehicleGpsById(lastCalculatedGpsId);
if (lastCalculatedGps != null) {
uncalculatedGps.add(0, lastCalculatedGps); // 鎻掑叆鍒板垪琛ㄦ渶鍓嶉潰
- logger.info("宸插皢GPS鐐� {} 浣滀负鍓嶇疆鐐瑰姞鍏ヨ绠楀垪琛�", lastCalculatedGpsId);
+// logger.info("宸插皢GPS鐐� {} 浣滀负鍓嶇疆鐐瑰姞鍏ヨ绠楀垪琛�", lastCalculatedGpsId);
}
} else {
- logger.info("杞﹁締 {} 娌℃湁鎵惧埌宸插鐞嗙殑鍓嶇疆 GPS鐐癸紝浠庣涓�涓湭澶勭悊鐐瑰紑濮嬭绠�", vehicleId);
+// logger.info("杞﹁締 {} 娌℃湁鎵惧埌宸插鐞嗙殑鍓嶇疆 GPS鐐癸紝浠庣涓�涓湭澶勭悊鐐瑰紑濮嬭绠�", vehicleId);
}
// 閲嶆柊璁$畻璇ヨ溅杈嗗湪璇ユ椂闂磋寖鍥寸殑鍒嗘閲岀▼
@@ -209,17 +245,24 @@
int segmentCount = calculateVehicleSegmentMileageWithGpsList(
vehicleId, uncalculatedGps, uncalculatedStartTime, uncalculatedEndTime);
- if (segmentCount > 0) {
- successCount++;
- logger.info("杞﹁締 {} 琛ュ伩璁$畻瀹屾垚锛岀敓鎴� {} 涓垎娈佃褰�", vehicleId, segmentCount);
+ if (segmentCount > 0) {
+ successCount++;
+// logger.info("杞﹁締 {} 琛ュ伩璁$畻瀹屾垚锛岀敓鎴� {} 涓垎娈佃褰�", vehicleId, segmentCount);
+ }
+ } catch (Exception e) {
+ logger.error("杞﹁締 {} 琛ュ伩璁$畻澶辫触", vehicleId, e);
}
- } catch (Exception e) {
- logger.error("杞﹁締 {} 琛ュ伩璁$畻澶辫触", vehicleId, e);
+ }
+
+ // 姣忔壒娆$粨鏉熷悗锛屼富鍔ㄥ缓璁瓽C锛堜笉闇�瑕佹樉寮忔竻绌哄紩鐢紝灞�閮ㄥ彉閲忎細鑷姩閲婃斁锛�
+ if (batchEnd < vehicleIds.size()) {
+ System.gc();
+// logger.debug("琛ュ伩璁$畻鎵规 {}-{} 瀹屾垚锛屽凡寤鸿JVM鍥炴敹鍐呭瓨", batchStart + 1, batchEnd);
}
}
- logger.info("琛ュ伩璁$畻瀹屾垚 - 鎬昏溅杈嗘暟: {}, 鏈绠桮PS鐐规暟: {}, 鎴愬姛杞﹁締鏁�: {}",
- vehicleIds.size(), totalUncalculated, successCount);
+// logger.info("琛ュ伩璁$畻瀹屾垚 - 鎬昏溅杈嗘暟: {}, 鏈绠桮PS鐐规暟: {}, 鎴愬姛杞﹁締鏁�: {}",
+// vehicleIds.size(), totalUncalculated, successCount);
return successCount;
} catch (Exception e) {
@@ -232,14 +275,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);
+// 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);
@@ -262,7 +307,7 @@
try {
// 楠岃瘉杈撳叆鏁版嵁
if (gpsList == null || gpsList.isEmpty()) {
- logger.debug("杞﹁締ID: {} 鍦ㄦ椂闂磋寖鍥� {} 鍒� {} 鍐呮棤GPS鏁版嵁", vehicleId, startTime, endTime);
+// logger.debug("杞﹁締ID: {} 鍦ㄦ椂闂磋寖鍥� {} 鍒� {} 鍐呮棤GPS鏁版嵁", vehicleId, startTime, endTime);
return 0;
}
@@ -275,7 +320,7 @@
// 澶勭悊姣忎釜鏃堕棿娈靛苟璁$畻閲岀▼
int savedCount = processSegmentedGpsData(vehicleId, segmentedData, config);
- logger.info("杞﹁締 {} 璁$畻瀹屾垚锛屼繚瀛樹簡 {} 涓椂闂存鐨勯噷绋嬫暟鎹�", vehicleId, savedCount);
+// logger.info("杞﹁締 {} 璁$畻瀹屾垚锛屼繚瀛樹簡 {} 涓椂闂存鐨勯噷绋嬫暟鎹�", vehicleId, savedCount);
// 鑷姩瑙﹀彂姣忔棩缁熻姹囨��
if (savedCount > 0) {
@@ -310,7 +355,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;
}
@@ -374,7 +419,7 @@
// 濡傛灉鏈鍙湁1涓偣锛屼笖娌℃湁涓婁竴娈电殑鏈�鍚庝竴涓偣锛屾棤娉曡绠楄窛绂�
if (segmentGpsList.size() == 1 && previousSegmentLastPoint == null) {
- logger.debug("杞﹁締 {} 鏃堕棿娈� {} 鍙湁1涓狦PS鐐逛笖鏃犲墠缃偣锛屾殏瀛樺緟涓嬩竴娈佃绠�", vehicleId, segmentStartTime);
+// logger.debug("杞﹁締 {} 鏃堕棿娈� {} 鍙湁1涓狦PS鐐逛笖鏃犲墠缃偣锛屾殏瀛樺緟涓嬩竴娈佃绠�", vehicleId, segmentStartTime);
return false;
}
@@ -387,7 +432,7 @@
private boolean isSegmentAlreadyCalculated(Long vehicleId, Date segmentStartTime, List<VehicleGps> segmentGpsList) {
VehicleGpsSegmentMileage existing = segmentMileageMapper.selectByVehicleIdAndTime(vehicleId, segmentStartTime);
if (existing != null) {
- logger.debug("杞﹁締 {} 鏃堕棿娈� {} 鐨勫垎娈甸噷绋嬪凡瀛樺湪锛岃烦杩�", vehicleId, segmentStartTime);
+// logger.debug("杞﹁締 {} 鏃堕棿娈� {} 鐨勫垎娈甸噷绋嬪凡瀛樺湪锛岃烦杩�", vehicleId, segmentStartTime);
return true;
}
return false;
@@ -412,14 +457,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鐐癸紙濡傛灉寮�鍚簡閲嶅璁$畻鎺у埗锛�
@@ -427,9 +472,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;
@@ -453,7 +498,8 @@
* 鏀堕泦GPS ID鍒楄〃锛堝寘鎷墠缃偣锛�
*/
private List<Long> collectGpsIds(List<VehicleGps> segmentGpsList, VehicleGps previousSegmentLastPoint) {
- List<Long> gpsIdList = new ArrayList<>();
+ // 棰勫垎閰嶅悎鐞嗗閲忥紝鍑忓皯鎵╁寮�閿�
+ List<Long> gpsIdList = new ArrayList<>(segmentGpsList.size() + 1);
// 濡傛灉鏈変笂涓�娈电殑鏈�鍚庝竴涓偣锛屽厛娣诲姞瀹冪殑ID锛堢敤浜庤绠楄法娈佃窛绂伙級
if (previousSegmentLastPoint != null && previousSegmentLastPoint.getGpsId() != null) {
@@ -551,7 +597,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);
}
@@ -653,8 +699,8 @@
);
totalDistance = totalDistance.add(BigDecimal.valueOf(gapDistance));
- logger.debug("璺ㄦ闂撮殭璺濈: {}km (涓婁竴娈垫湯鐐� -> 褰撳墠娈甸鐐�)",
- String.format("%.3f", gapDistance));
+// logger.debug("璺ㄦ闂撮殭璺濈: {}km (涓婁竴娈垫湯鐐� -> 褰撳墠娈甸鐐�)",
+// String.format("%.3f", gapDistance));
}
// 2. 鍐嶈绠楀綋鍓嶆鍐呴儴鐨勮窛绂伙紙濡傛灉鏈�2涓垨浠ヤ笂GPS鐐癸級
@@ -805,16 +851,22 @@
/**
* 瑙f瀽鏃ユ湡鏃堕棿瀛楃涓�
+ * 浣跨敤ThreadLocal鐨凷impleDateFormat锛岄伩鍏嶆瘡娆″垱寤烘柊瀵硅薄
*/
+ private static final ThreadLocal<java.text.SimpleDateFormat> DATE_FORMAT_THREAD_LOCAL =
+ ThreadLocal.withInitial(() -> {
+ java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ sdf.setLenient(false);
+ return sdf;
+ });
+
private Date parseDateTime(String dateTimeStr) {
if (dateTimeStr == null || dateTimeStr.trim().isEmpty()) {
throw new RuntimeException("鏃ユ湡鏃堕棿瀛楃涓蹭笉鑳戒负绌�");
}
try {
- java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- sdf.setLenient(false);
- return sdf.parse(dateTimeStr.trim());
+ return DATE_FORMAT_THREAD_LOCAL.get().parse(dateTimeStr.trim());
} catch (Exception e) {
throw new RuntimeException("鏃ユ湡鏃堕棿鏍煎紡閿欒: " + dateTimeStr + ", 搴斾负 yyyy-MM-dd HH:mm:ss", e);
}
@@ -831,10 +883,12 @@
Date segmentStartTime, Date segmentEndTime) {
try {
// 鏌ヨ璇ヨ溅杈嗘鍦ㄦ墽琛岀殑浠诲姟鍒楄〃
- List<SysTask> activeTasks = sysTaskMapper.selectActiveTasksByVehicleId(vehicleId);
+ 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;
}
@@ -850,8 +904,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