From 76b3532393aa98c2daaeb67caeefa2ab9556e866 Mon Sep 17 00:00:00 2001
From: liujie <1793218484@qq.com>
Date: 星期二, 12 五月 2026 09:26:48 +0800
Subject: [PATCH] 日志
---
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/controller/XpVehicleController.java | 116 ++++++++++++++++++++++++++++++++++++++++++++++++++++++---
1 files changed, 109 insertions(+), 7 deletions(-)
diff --git a/xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/controller/XpVehicleController.java b/xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/controller/XpVehicleController.java
index 791d304..f7e8169 100644
--- a/xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/controller/XpVehicleController.java
+++ b/xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/controller/XpVehicleController.java
@@ -32,8 +32,12 @@
import com.xiaopeng.api.vo.vehicleConvoy.VehiclesCommandCallbackVo;
import com.xiaopeng.common.core.domain.R;
import com.xiaopeng.common.core.exception.ServiceException;
+import com.xiaopeng.common.core.utils.SensitiveDataCryptoUtil;
import com.xiaopeng.common.core.utils.WebUtils;
import com.xiaopeng.common.core.web.page.PageInfo;
+import com.xiaopeng.common.log.annotation.AdminOperationLog;
+import com.xiaopeng.common.log.enums.AdminBusinessType;
+import com.xiaopeng.common.log.enums.AdminOperationType;
import com.xiaopeng.common.security.service.TokenService;
import com.xiaopeng.evi.oss.service.AliOssService;
import com.xiaopeng.unifiedverification.interceptor.XpClientCheck;
@@ -190,6 +194,12 @@
*/
@ApiOperation(value = "新增车辆", tags = {"管理后台-车辆管理-在库车辆管理"})
@PostMapping("/api/v1/vehicle/add")
+ @AdminOperationLog(
+ businessType = AdminBusinessType.STOCK_VEHICLE_MANAGEMENT,
+ operationType = AdminOperationType.ADD,
+ content = "新增车辆",
+ appendRequestData = true
+ )
public R<?> addVehicle(@Valid @RequestBody VehicleAddDTO dto) {
xpVehicleService.addVehicle(dto, null);
return R.ok();
@@ -203,6 +213,12 @@
*/
@ApiOperation(value = "编辑车辆", tags = {"管理后台-车辆管理-在库车辆管理"})
@PostMapping("/api/v1/vehicle/edit")
+ @AdminOperationLog(
+ businessType = AdminBusinessType.STOCK_VEHICLE_MANAGEMENT,
+ operationType = AdminOperationType.EDIT,
+ content = "编辑车辆",
+ appendRequestData = true
+ )
public R<?> editVehicle(@Valid @RequestBody VehicleEditDTO dto) {
xpVehicleService.editVehicle(dto, null);
return R.ok();
@@ -216,6 +232,12 @@
*/
@ApiOperation(value = "完善/更新车辆信息", tags = {"管理后台-车辆管理-在库车辆管理"})
@PostMapping("/api/v1/vehicle/improveInfo")
+ @AdminOperationLog(
+ businessType = AdminBusinessType.STOCK_VEHICLE_MANAGEMENT,
+ operationType = AdminOperationType.EDIT,
+ content = "完善/更新车辆信息",
+ appendRequestData = true
+ )
public R<?> improveInfo(@RequestBody VehicleImproveInfoDTO dto) {
xpVehicleService.improveInfo(dto);
return R.ok();
@@ -230,6 +252,12 @@
@ApiOperation(value = "批量运营", tags = {"管理后台-车辆管理-在库车辆管理"})
@PostMapping("/api/v1/vehicle/batchOperation")
@ApiImplicitParam(name = "idStr", value = "车辆ID字符串列表,逗号分隔", required = true, dataTypeClass = String.class)
+ @AdminOperationLog(
+ businessType = AdminBusinessType.STOCK_VEHICLE_MANAGEMENT,
+ operationType = AdminOperationType.EDIT,
+ contentExpression = "'批量运营车辆,ids=' + #p0",
+ appendRequestData = false
+ )
public R<?> batchOperation(@RequestParam String idStr) {
xpVehicleService.batchOperation(idStr);
return R.ok();
@@ -243,6 +271,12 @@
*/
@ApiOperation(value = "批量设置运营区域", tags = {"管理后台-车辆管理-在库车辆管理"})
@PostMapping("/api/v1/vehicle/batchSetElectronic")
+ @AdminOperationLog(
+ businessType = AdminBusinessType.STOCK_VEHICLE_MANAGEMENT,
+ operationType = AdminOperationType.EDIT,
+ content = "批量设置运营区域",
+ appendRequestData = true
+ )
public R<?> batchSetElectronic(@Valid @RequestBody VehicleBatchSetElectronicDTO dto) {
xpVehicleService.batchSetElectronic(dto.getIds(), dto.getElectronicId());
return R.ok();
@@ -266,6 +300,12 @@
*/
@ApiOperation(value = "下载导入模板", tags = {"管理后台-车辆管理-在库车辆管理"})
@PostMapping("/api/v1/vehicle/importTemplate")
+ @AdminOperationLog(
+ businessType = AdminBusinessType.STOCK_VEHICLE_MANAGEMENT,
+ operationType = AdminOperationType.EXPORT,
+ content = "下载车辆导入模板",
+ appendRequestData = false
+ )
public void importTemplate() {
// 1. 查询导出数据
Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(), XpVehicleImportExcel.class, new ArrayList<>());
@@ -301,6 +341,12 @@
*/
@ApiOperation(value = "导入", tags = {"管理后台-车辆管理-在库车辆管理"})
@PostMapping("/api/v1/vehicle/importExcel")
+ @AdminOperationLog(
+ businessType = AdminBusinessType.STOCK_VEHICLE_MANAGEMENT,
+ operationType = AdminOperationType.IMPORT,
+ content = "导入车辆",
+ appendRequestData = false
+ )
public R<?> importExcel(@RequestParam("file") MultipartFile file) {
ImportParams params = new ImportParams();
params.setHeadRows(1);
@@ -467,12 +513,16 @@
}
Set<String> existsVins = Collections.emptySet();
if (!vinSet.isEmpty()) {
+ Set<String> vinQueryValues = vinSet.stream()
+ .flatMap(vin -> SensitiveDataCryptoUtil.queryValues(vin).stream())
+ .collect(java.util.stream.Collectors.toSet());
existsVins = xpVehicleService.lambdaQuery()
.select(XpVehicle::getVehicleVin)
- .in(XpVehicle::getVehicleVin, vinSet)
+ .in(XpVehicle::getVehicleVin, vinQueryValues)
.list()
.stream()
.map(XpVehicle::getVehicleVin)
+ .map(SensitiveDataCryptoUtil::decryptIfPossible)
.filter(org.apache.commons.lang3.StringUtils::isNotBlank)
.collect(java.util.stream.Collectors.toSet());
}
@@ -574,6 +624,12 @@
*/
@ApiOperation(value = "导出", tags = {"管理后台-车辆管理-在库车辆管理"})
@PostMapping("/api/v1/vehicle/exportExcel")
+ @AdminOperationLog(
+ businessType = AdminBusinessType.STOCK_VEHICLE_MANAGEMENT,
+ operationType = AdminOperationType.EXPORT,
+ content = "导出在库车辆",
+ appendRequestData = true
+ )
public void exportExcel(@RequestBody VehicleExportQuery query) {
// 1. 查询导出数据
List<XpVehicle> dataList = xpVehicleService.vehicleExportList(query);
@@ -621,6 +677,12 @@
@ApiOperation(value = "批量在库", tags = {"管理后台-车辆管理-运营车辆管理"})
@ApiImplicitParam(name = "idStr", value = "车辆ID字符串列表,逗号分隔", required = true, dataTypeClass = String.class)
@PostMapping("/api/v1/vehicle/batchStock")
+ @AdminOperationLog(
+ businessType = AdminBusinessType.OPERATION_VEHICLE_MANAGEMENT,
+ operationType = AdminOperationType.EDIT,
+ contentExpression = "'批量在库车辆,ids=' + #p0",
+ appendRequestData = false
+ )
public R<?> batchStock(@RequestParam String idStr) {
xpVehicleService.batchStock(idStr);
return R.ok();
@@ -654,6 +716,12 @@
*/
@ApiOperation(value = "删除在库车辆", tags = {"管理后台-车辆管理-在库车辆管理"})
@DeleteMapping("/api/v1/vehicle/delete/{id}")
+ @AdminOperationLog(
+ businessType = AdminBusinessType.STOCK_VEHICLE_MANAGEMENT,
+ operationType = AdminOperationType.DELETE,
+ contentExpression = "'删除在库车辆,id=' + #p0",
+ appendRequestData = false
+ )
public R<?> delete(@ApiParam(name = "id", value = "车辆ID") @PathVariable Long id) {
XpFleetVehicle binding = vehicleService.lambdaQuery()
.eq(XpFleetVehicle::getVehicleId, id)
@@ -695,6 +763,12 @@
*/
@ApiOperation(value = "运营车辆管理列表导出", tags = {"管理后台-车辆管理-运营车辆管理"})
@PostMapping("/api/v1/vehicle/operationExportExcel")
+ @AdminOperationLog(
+ businessType = AdminBusinessType.OPERATION_VEHICLE_MANAGEMENT,
+ operationType = AdminOperationType.EXPORT,
+ content = "导出运营车辆",
+ appendRequestData = true
+ )
public void exportExcel(@RequestBody OperationVehicleExportQuery query) {
// 1. 查询导出数据
List<XpVehicle> dataList = xpVehicleService.operationVehicleExportList(query);
@@ -772,9 +846,15 @@
*/
@PostMapping("/logan/inner/vehicle/queryVehiclePositionByVin")
public R<List<String>> queryVehiclePositionByVin(@RequestBody VehiclePositionByVinDto dto){
+ if (dto == null) {
+ return R.ok(new ArrayList<>());
+ }
+ List<String> vinQueryValues = buildVinQueryValues(dto.getVinList());
+ if (vinQueryValues.isEmpty()) {
+ return R.ok(new ArrayList<>());
+ }
List<XpVehicle> list = xpVehicleService.list(new LambdaQueryWrapper<XpVehicle>().eq(XpVehicle::getState, Optional.ofNullable(dto.getStatus()).orElse(0))
- .eq(XpVehicle::getOperatingStatus, 1).eq(XpVehicle::getElectronicId, dto.getFenceId()).in(XpVehicle::getVehicleVin,
- dto.getVinList()));
+ .eq(XpVehicle::getOperatingStatus, 1).eq(XpVehicle::getElectronicId, dto.getFenceId()).in(XpVehicle::getVehicleVin, vinQueryValues));
if (list.isEmpty()) {
return R.ok(new ArrayList<>());
} else {
@@ -796,7 +876,13 @@
*/
@GetMapping("/logan/inner/vehicle/findByVehicleVin")
public R<XpVehicle> findByVehicleVin(@RequestParam("vehicleVin") String vehicleVin) {
- XpVehicle xpVehicle = xpVehicleService.getOne(new LambdaQueryWrapper<XpVehicle>().eq(XpVehicle::getVehicleVin, vehicleVin));
+ if (StringUtils.isBlank(vehicleVin)) {
+ return R.ok();
+ }
+ XpVehicle xpVehicle = xpVehicleService.getOne(new LambdaQueryWrapper<XpVehicle>().in(XpVehicle::getVehicleVin, SensitiveDataCryptoUtil.queryValues(vehicleVin)));
+ if (xpVehicle == null) {
+ return R.ok();
+ }
// 获取车队
XpFleetVehicle xpFleetVehicle = vehicleService.getOne(new LambdaQueryWrapper<XpFleetVehicle>().eq(XpFleetVehicle::getVehicleId, xpVehicle.getId()));
@@ -828,7 +914,10 @@
*/
@PostMapping("/logan/inner/vehicle/updateVehicleStatus")
public R<?> updateVehicleStatus(@RequestBody UpdateVehicleStateDto updateVehicleStateDto) {
- xpVehicleService.update(new LambdaUpdateWrapper<XpVehicle>().eq(XpVehicle::getVehicleVin, updateVehicleStateDto.getVin()).set(XpVehicle::getState, updateVehicleStateDto.getState()));
+ if (StringUtils.isBlank(updateVehicleStateDto.getVin())) {
+ return R.ok();
+ }
+ xpVehicleService.update(new LambdaUpdateWrapper<XpVehicle>().in(XpVehicle::getVehicleVin, SensitiveDataCryptoUtil.queryValues(updateVehicleStateDto.getVin())).set(XpVehicle::getState, updateVehicleStateDto.getState()));
return R.ok();
}
@@ -1058,7 +1147,10 @@
*/
@PostMapping("/base/vi/vehicle/updateVehicleStatus")
public R<?> testUpdateVehicleStatus(@RequestBody UpdateVehicleStateDto updateVehicleStateDto) {
- xpVehicleService.update(new LambdaUpdateWrapper<XpVehicle>().eq(XpVehicle::getVehicleVin, updateVehicleStateDto.getVin()).set(XpVehicle::getState, updateVehicleStateDto.getState()));
+ if (StringUtils.isBlank(updateVehicleStateDto.getVin())) {
+ return R.ok();
+ }
+ xpVehicleService.update(new LambdaUpdateWrapper<XpVehicle>().in(XpVehicle::getVehicleVin, SensitiveDataCryptoUtil.queryValues(updateVehicleStateDto.getVin())).set(XpVehicle::getState, updateVehicleStateDto.getState()));
return R.ok();
}
@@ -1172,7 +1264,7 @@
List<XpVehicleVO> xpVehicleList = vehiclePositions.stream()
.sorted(Comparator.comparingDouble(VehiclePositionVo::getDistance))
.map(vp -> {
- XpVehicle xpVehicle = xpVehicleService.getOne(new LambdaQueryWrapper<XpVehicle>().eq(XpVehicle::getVehicleVin, vp.getVin()));
+ XpVehicle xpVehicle = xpVehicleService.getOne(new LambdaQueryWrapper<XpVehicle>().in(XpVehicle::getVehicleVin, SensitiveDataCryptoUtil.queryValues(vp.getVin())));
if (xpVehicle == null) {
return null;
}
@@ -1245,4 +1337,14 @@
XpVehicle vehicle = xpVehicleService.getOne(new LambdaQueryWrapper<XpVehicle>().eq(XpVehicle::getPlateNumber, plateNumber).eq(XpVehicle::getOfficialPartnerId, officialPartnerId));
return R.ok(vehicle);
}
+
+ private List<String> buildVinQueryValues(List<String> vinList) {
+ if (vinList == null || vinList.isEmpty()) {
+ return java.util.Collections.emptyList();
+ }
+ return vinList.stream()
+ .flatMap(vin -> SensitiveDataCryptoUtil.queryValues(vin).stream())
+ .distinct()
+ .collect(Collectors.toList());
+ }
}
--
Gitblit v1.7.1