package com.xiaopeng.vehicleConvoy.controller;
|
|
import cn.afterturn.easypoi.excel.ExcelExportUtil;
|
import cn.afterturn.easypoi.excel.ExcelImportUtil;
|
import cn.afterturn.easypoi.excel.entity.ExportParams;
|
import cn.afterturn.easypoi.excel.entity.ImportParams;
|
import cn.hutool.core.bean.BeanUtil;
|
import com.alibaba.fastjson2.JSON;
|
import com.alibaba.fastjson2.JSONObject;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
import com.xiaopeng.api.dto.operation.VehiclePositionByVinDto;
|
import com.xiaopeng.api.dto.vehicleConvoy.UpdateVehicleStateDto;
|
import com.xiaopeng.api.dto.vehicleConvoy.VehicleTemperatureDto;
|
import com.xiaopeng.api.feignClient.maintenance.XpChargingRecordClient;
|
import com.xiaopeng.api.feignClient.maintenance.XpTaskClient;
|
import com.xiaopeng.api.feignClient.maintenance.XpTaskRuleClient;
|
import com.xiaopeng.api.feignClient.maintenance.XpVehiclePreparationClient;
|
import com.xiaopeng.api.feignClient.order.XpOrderClient;
|
import com.xiaopeng.api.model.maintenance.XpTask;
|
import com.xiaopeng.api.model.maintenance.XpTaskRule;
|
import com.xiaopeng.api.model.vehicleConvoy.XpFleetVehicle;
|
import com.xiaopeng.api.model.vehicleConvoy.XpVehicle;
|
import com.xiaopeng.api.model.vehicleConvoy.XpVehicleAnnualRecord;
|
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.WebUtils;
|
import com.xiaopeng.common.core.web.page.PageInfo;
|
import com.xiaopeng.vehicleConvoy.constant.I18nKeyConstant;
|
import com.xiaopeng.vehicleConvoy.model.dto.*;
|
import com.xiaopeng.vehicleConvoy.model.exportExcel.XpVehicleExportExcel;
|
import com.xiaopeng.vehicleConvoy.model.importExcel.XpVehicleImportExcel;
|
import com.xiaopeng.vehicleConvoy.model.query.*;
|
import com.xiaopeng.vehicleConvoy.model.vo.XpVehicleVO;
|
import com.xiaopeng.vehicleConvoy.service.IXpFleetVehicleService;
|
import com.xiaopeng.vehicleConvoy.service.IXpVehicleAnnualRecordService;
|
import com.xiaopeng.vehicleConvoy.service.IXpVehicleService;
|
import io.swagger.annotations.*;
|
import lombok.RequiredArgsConstructor;
|
import lombok.extern.slf4j.Slf4j;
|
import org.apache.commons.lang3.StringUtils;
|
import org.apache.poi.ss.usermodel.Workbook;
|
import org.springframework.beans.BeanUtils;
|
import org.springframework.context.annotation.Lazy;
|
import org.springframework.util.CollectionUtils;
|
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.multipart.MultipartFile;
|
|
import javax.servlet.ServletOutputStream;
|
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletResponse;
|
import javax.validation.Valid;
|
import java.io.IOException;
|
import java.io.InputStream;
|
import java.net.URLEncoder;
|
import java.time.LocalDate;
|
import java.time.LocalDateTime;
|
import java.util.ArrayList;
|
import java.util.List;
|
import java.util.Objects;
|
|
/**
|
* <p>
|
* 车辆管理 前端控制器
|
* </p>
|
*
|
* @author mitao
|
* @since 2026-02-03
|
*/
|
@Slf4j
|
@RestController
|
@Api(tags = "车辆管理")
|
@RequiredArgsConstructor(onConstructor_ = @Lazy)
|
public class XpVehicleController {
|
|
private final IXpVehicleService xpVehicleService;
|
private final IXpFleetVehicleService vehicleService;
|
private final IXpVehicleAnnualRecordService xpVehicleAnnualRecordService;
|
private final XpVehiclePreparationClient xpVehiclePreparationClient;
|
private final XpChargingRecordClient xpChargingRecordClient;
|
private final XpTaskClient xpTaskClient;
|
private final XpTaskRuleClient xpTaskRuleClient;
|
/**
|
* 根据ID列表批量查询车辆信息(内部接口)
|
*
|
* @param ids 车辆ID列表
|
* @return 车辆列表
|
*/
|
@ApiOperation(value = "批量查询车辆信息", tags = {"内部接口"})
|
@PostMapping("/inner/vehicle/listByIds")
|
public R<List<XpVehicle>> listByIds(@RequestBody List<Long> ids) {
|
if (CollectionUtils.isEmpty(ids)) {
|
return R.ok(new ArrayList<>());
|
}
|
return R.ok(xpVehicleService.listByIds(ids));
|
}
|
/**
|
* 批量获取车辆列表
|
*
|
* @return 车辆列表
|
*/
|
@ApiOperation(value = "批量查询车辆信息", tags = {"内部接口"})
|
@PostMapping("/inner/vehicle/listVehicle")
|
public R<List<XpVehicle>> listVehicle() {
|
return R.ok(xpVehicleService.list());
|
}
|
/**
|
* 根据ID查询车辆信息(内部接口)
|
*
|
* @param id 车辆ID
|
* @return 车辆列表
|
*/
|
@GetMapping("/inner/vehicle/queryById")
|
public R<XpVehicle> queryById(@RequestParam Long id) {
|
XpVehicle xpVehicle = xpVehicleService.getById(id);
|
// 获取车队
|
XpFleetVehicle xpFleetVehicle = vehicleService.getOne(new LambdaQueryWrapper<XpFleetVehicle>().eq(XpFleetVehicle::getVehicleId, xpVehicle.getId()));
|
xpVehicle.setFleetId(xpFleetVehicle.getFleetId());
|
return R.ok(xpVehicle);
|
}
|
/**
|
* 修改车辆信息(内部接口)
|
*
|
* @param xpVehicle 车辆信息
|
* @return 车辆
|
*/
|
@PostMapping("/inner/vehicle/updateVehicleById")
|
public R<String> updateVehicleById(@RequestBody XpVehicle xpVehicle){
|
xpVehicleService.updateById(xpVehicle);
|
return R.ok();
|
}
|
|
/**
|
* 新增车辆
|
*
|
* @param dto 车辆信息
|
* @return 操作结果
|
*/
|
@ApiOperation(value = "新增车辆", tags = {"管理后台-车辆管理-在库车辆管理"})
|
@PostMapping("/api/v1/vehicle/add")
|
public R<?> addVehicle(@Valid @RequestBody VehicleAddDTO dto) {
|
xpVehicleService.addVehicle(dto);
|
return R.ok();
|
}
|
|
/**
|
* 编辑车辆
|
*
|
* @param dto 车辆信息
|
* @return 操作结果
|
*/
|
@ApiOperation(value = "编辑车辆", tags = {"管理后台-车辆管理-在库车辆管理"})
|
@PostMapping("/api/v1/vehicle/edit")
|
public R<?> editVehicle(@Valid @RequestBody VehicleEditDTO dto) {
|
xpVehicleService.editVehicle(dto);
|
return R.ok();
|
}
|
|
/**
|
* 完善/更新车辆信息(保险、年检、运营资质等)
|
*
|
* @param dto 车辆信息
|
* @return 操作结果
|
*/
|
@ApiOperation(value = "完善/更新车辆信息", tags = {"管理后台-车辆管理-在库车辆管理"})
|
@PostMapping("/api/v1/vehicle/improveInfo")
|
public R<?> improveInfo(@RequestBody VehicleImproveInfoDTO dto) {
|
xpVehicleService.improveInfo(dto);
|
return R.ok();
|
}
|
|
/**
|
* 批量运营(在库→运营)
|
*
|
* @param idStr 车辆ID字符串列表
|
* @return 操作结果
|
*/
|
@ApiOperation(value = "批量运营", tags = {"管理后台-车辆管理-在库车辆管理"})
|
@PostMapping("/api/v1/vehicle/batchOperation")
|
@ApiImplicitParam(name = "idStr", value = "车辆ID字符串列表,逗号分隔", required = true, dataTypeClass = String.class)
|
public R<?> batchOperation(@RequestParam String idStr) {
|
xpVehicleService.batchOperation(idStr);
|
return R.ok();
|
}
|
|
/**
|
* 批量设置运营区域
|
*
|
* @param dto 批量设置运营区域参数
|
* @return 操作结果
|
*/
|
@ApiOperation(value = "批量设置运营区域", tags = {"管理后台-车辆管理-在库车辆管理"})
|
@PostMapping("/api/v1/vehicle/batchSetElectronic")
|
public R<?> batchSetElectronic(@Valid @RequestBody VehicleBatchSetElectronicDTO dto) {
|
xpVehicleService.batchSetElectronic(dto.getIds(), dto.getElectronicId());
|
return R.ok();
|
}
|
|
/**
|
* 在库车辆管理分页列表
|
*
|
* @param query 查询参数
|
* @return 分页结果
|
*/
|
@ApiOperation(value = "在库车辆管理分页列表", tags = {"管理后台-车辆管理-在库车辆管理"})
|
@PostMapping("/api/v1/vehicle/pageList")
|
public R<PageInfo<XpVehicle>> vehiclePageList(@RequestBody VehiclePageQuery query) {
|
return R.ok(xpVehicleService.vehiclePageList(query));
|
}
|
|
/**
|
* 导入车辆
|
*
|
* @param file Excel文件
|
* @return 操作结果
|
*/
|
@ApiOperation(value = "导入", tags = {"管理后台-车辆管理-在库车辆管理"})
|
@PostMapping("/api/v1/vehicle/importExcel")
|
public R<?> importExcel(@RequestPart("file") MultipartFile file) {
|
ImportParams params = new ImportParams();
|
params.setHeadRows(1);
|
InputStream inputStream = null;
|
List<XpVehicleImportExcel> importList;
|
try {
|
inputStream = file.getInputStream();
|
importList = ExcelImportUtil.importExcel(inputStream, XpVehicleImportExcel.class, params);
|
} catch (Exception e) {
|
log.error("车辆导入失败:{}", e.getMessage(), e);
|
throw new ServiceException("车辆导入失败!", I18nKeyConstant.VEHICLE_IMPORT_FAILED);
|
} finally {
|
if (inputStream != null) {
|
try {
|
inputStream.close();
|
} catch (IOException e) {
|
log.error("关闭输入流失败", e);
|
}
|
}
|
}
|
if (CollectionUtils.isEmpty(importList)) {
|
throw new ServiceException("导入数据为空!", I18nKeyConstant.VEHICLE_IMPORT_DATA_EMPTY);
|
}
|
xpVehicleService.importVehicles(importList);
|
return R.ok();
|
}
|
|
/**
|
* 导出在库车辆列表
|
*
|
* @param query 查询参数
|
*/
|
@ApiOperation(value = "导出", tags = {"管理后台-车辆管理-在库车辆管理"})
|
@PostMapping("/api/v1/vehicle/exportExcel")
|
public void exportExcel(@RequestBody VehicleExportQuery query) {
|
// 1. 查询导出数据
|
List<XpVehicle> dataList = xpVehicleService.vehicleExportList(query);
|
|
// 2. 转换为导出对象
|
List<XpVehicleExportExcel> exportList = BeanUtil.copyToList(dataList, XpVehicleExportExcel.class);
|
for (XpVehicleExportExcel xpVehicleExportExcel : exportList) {
|
if (StringUtils.isNotBlank(xpVehicleExportExcel.getVehiclePictures())) {
|
JSONObject jsonObject = JSONObject.parseObject(xpVehicleExportExcel.getVehiclePictures());
|
xpVehicleExportExcel.setVehiclePictures(jsonObject.getString("url"));
|
}
|
}
|
// 3. 生成Excel
|
Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(), XpVehicleExportExcel.class, exportList);
|
|
// 4. 输出到响应流
|
HttpServletResponse response = WebUtils.response();
|
response.setContentType("application/vnd.ms-excel");
|
response.setCharacterEncoding("utf-8");
|
ServletOutputStream outputStream = null;
|
try {
|
String fileName = URLEncoder.encode("在库车辆列表.xls", "utf-8");
|
response.setHeader("Content-disposition", "attachment;filename=" + fileName);
|
outputStream = response.getOutputStream();
|
workbook.write(outputStream);
|
} catch (IOException e) {
|
log.error("导出在库车辆列表失败", e);
|
} finally {
|
try {
|
if (outputStream != null) {
|
outputStream.close();
|
}
|
} catch (IOException e) {
|
log.error("关闭输出流失败", e);
|
}
|
}
|
}
|
|
/**
|
* 批量在库(运营→在库)
|
*
|
* @param idStr 车辆ID列表
|
* @return 操作结果
|
*/
|
@ApiOperation(value = "批量在库", tags = {"管理后台-车辆管理-运营车辆管理"})
|
@ApiImplicitParam(name = "idStr", value = "车辆ID字符串列表,逗号分隔", required = true, dataTypeClass = String.class)
|
@PostMapping("/api/v1/vehicle/batchStock")
|
public R<?> batchStock(@RequestParam String idStr) {
|
xpVehicleService.batchStock(idStr);
|
return R.ok();
|
}
|
|
/**
|
* 车辆详情(含围栏名称)
|
*
|
* @param id 车辆ID
|
* @return 车辆详情
|
*/
|
@ApiOperation(value = "车辆详情", tags = {"管理后台-车辆管理-在库车辆管理"})
|
@GetMapping("/api/v1/vehicle/queryById")
|
public R<XpVehicle> getVehicleDetail(@ApiParam(value = "车辆id", required = true) @RequestParam Long id) {
|
return R.ok(xpVehicleService.getVehicleDetail(id));
|
}
|
|
/**
|
* 删除在库车辆
|
* @param id
|
* @return
|
*/
|
@ApiOperation(value = "删除在库车辆")
|
@DeleteMapping("/api/v1/vehicle/delete/{id}")
|
public R<?> delete(@ApiParam(name = "id", value = "车辆ID") @PathVariable Long id) {
|
xpVehicleService.removeById(id);
|
return R.ok();
|
}
|
|
/**
|
* 运营车辆管理分页列表
|
*
|
* @param query 查询参数
|
* @return 分页结果
|
*/
|
@ApiOperation(value = "运营车辆管理分页列表", tags = {"管理后台-车辆管理-运营车辆管理"})
|
@PostMapping("/api/v1/vehicle/operationPageList")
|
public R<PageInfo<XpVehicle>> operationPageList(@RequestBody OperationVehiclePageQuery query) {
|
return R.ok(xpVehicleService.operationPageList(query));
|
}
|
|
/**
|
* 导出在库车辆列表
|
*
|
* @param query 查询参数
|
*/
|
@ApiOperation(value = "运营车辆管理列表导出", tags = {"管理后台-车辆管理-运营车辆管理"})
|
@PostMapping("/api/v1/vehicle/operationExportExcel")
|
public void exportExcel(@RequestBody OperationVehicleExportQuery query) {
|
// 1. 查询导出数据
|
List<XpVehicle> dataList = xpVehicleService.operationVehicleExportList(query);
|
|
// 2. 转换为导出对象
|
List<XpVehicleExportExcel> exportList = BeanUtil.copyToList(dataList, XpVehicleExportExcel.class);
|
for (XpVehicleExportExcel xpVehicleExportExcel : exportList) {
|
if (StringUtils.isNotBlank(xpVehicleExportExcel.getVehiclePictures())) {
|
JSONObject jsonObject = JSONObject.parseObject(xpVehicleExportExcel.getVehiclePictures());
|
xpVehicleExportExcel.setVehiclePictures(jsonObject.getString("url"));
|
}
|
}
|
// 3. 生成Excel
|
Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(), XpVehicleExportExcel.class, exportList);
|
|
// 4. 输出到响应流
|
HttpServletResponse response = WebUtils.response();
|
response.setContentType("application/vnd.ms-excel");
|
response.setCharacterEncoding("utf-8");
|
ServletOutputStream outputStream = null;
|
try {
|
String fileName = URLEncoder.encode("运营车辆列表.xls", "utf-8");
|
response.setHeader("Content-disposition", "attachment;filename=" + fileName);
|
outputStream = response.getOutputStream();
|
workbook.write(outputStream);
|
} catch (IOException e) {
|
log.error("导出在库车辆列表失败", e);
|
} finally {
|
try {
|
if (outputStream != null) {
|
outputStream.close();
|
}
|
} catch (IOException e) {
|
log.error("关闭输出流失败", e);
|
}
|
}
|
}
|
|
@ApiOperation(value = "通过车辆id查询年检分页列表", tags = {"管理后台-车辆管理-运营车辆管理"})
|
@PostMapping("/api/v1/vehicle/queryTaskRoutineByVehicleId")
|
public R<PageInfo<XpVehicleAnnualRecord>> queryTaskRoutineByVehicleId(
|
@Valid @RequestBody XpVehicleAnnualRecordPageQuery query){
|
return R.ok(xpVehicleAnnualRecordService.queryTaskRoutineByVehicleId(query));
|
}
|
|
/**
|
* 根据围栏id查询空闲车辆
|
*
|
*/
|
@GetMapping("/inner/vehicle/listByFenceId")
|
public R<List<XpVehicle>> listByFenceId(@RequestParam("fenceId") Long fenceId){
|
return R.ok(xpVehicleService.listByFenceId(fenceId));
|
}
|
|
/**
|
* 查询车辆位置信息 做筛选
|
* @param dto
|
* @return
|
*/
|
@PostMapping("/inner/vehicle/queryVehiclePositionByVin")
|
public R<List<String>> queryVehiclePositionByVin(@RequestBody VehiclePositionByVinDto dto){
|
List<XpVehicle> list = xpVehicleService.list(new LambdaQueryWrapper<XpVehicle>().eq(XpVehicle::getState, 0).eq(XpVehicle::getStatus, 1).eq(XpVehicle::getElectronicId, dto.getFenceId()).in(XpVehicle::getVehicleVin,
|
dto.getVinList()));
|
if(list.isEmpty()){
|
return R.ok(new ArrayList<>());
|
}else {
|
List<String> vehiclePositionVos = new ArrayList<>(list.size());
|
for (XpVehicle xpVehicle : list) {
|
vehiclePositionVos.add(xpVehicle.getVehicleVin());
|
}
|
return R.ok(vehiclePositionVos);
|
}
|
|
}
|
|
|
/**
|
* 查询车辆信息
|
* @param vehicleVin
|
* @return
|
*/
|
@GetMapping("/inner/vehicle/findByVehicleVin")
|
public R<XpVehicle> findByVehicleVin(@RequestParam("vehicleVin") String vehicleVin){
|
XpVehicle xpVehicle = xpVehicleService.getOne(new LambdaQueryWrapper<XpVehicle>().eq(XpVehicle::getVehicleVin, vehicleVin));
|
|
// 获取车队
|
XpFleetVehicle xpFleetVehicle = vehicleService.getOne(new LambdaQueryWrapper<XpFleetVehicle>().eq(XpFleetVehicle::getVehicleId, xpVehicle.getId()));
|
xpVehicle.setFleetId(xpFleetVehicle.getFleetId());
|
return R.ok(xpVehicle);
|
}
|
|
|
/**
|
* 根据XPUID查询车辆信息
|
* @param xpuid
|
* @return
|
*/
|
@GetMapping("/inner/vehicle/findByVehicleXpuId")
|
public R<XpVehicle> findByVehicleXpuId(@RequestParam("xpuid") String xpuid){
|
XpVehicle xpVehicle = xpVehicleService.getOne(new LambdaQueryWrapper<XpVehicle>().eq(XpVehicle::getXpuId, xpuid));
|
return R.ok(xpVehicle);
|
}
|
|
/**
|
* 修改车辆状态
|
* @param updateVehicleStateDto
|
* @return
|
*/
|
@PostMapping("/inner/vehicle/updateVehicleStatus")
|
public R<?> updateVehicleStatus(@RequestBody UpdateVehicleStateDto updateVehicleStateDto){
|
xpVehicleService.update(new LambdaUpdateWrapper<XpVehicle>().eq(XpVehicle::getVehicleVin, updateVehicleStateDto.getVin()).set(XpVehicle::getState, updateVehicleStateDto.getState()));
|
return R.ok();
|
}
|
|
/**
|
*
|
* 查询车辆所属车队ID
|
* @param vehicleId
|
* @return
|
*/
|
@GetMapping("/inner/vehicle/findFleetIdByVehicleId")
|
public R<Long> findFleetIdByVehicleId(@RequestParam Long vehicleId){
|
XpFleetVehicle xpFleetVehicle = vehicleService.getOne(new LambdaQueryWrapper<XpFleetVehicle>().eq(XpFleetVehicle::getVehicleId, vehicleId));
|
return R.ok(xpFleetVehicle.getFleetId());
|
}
|
|
/**
|
* 查询可改派的车辆列表
|
*
|
* @return 车辆列表
|
*/
|
@ApiOperation(value = "查询可改派的车辆列表", tags = {"管理后台-订单管理"})
|
@GetMapping("/api/v1/vehicle/availableList")
|
public R<List<XpVehicle>> listAvailableVehicles() {
|
List<XpVehicle> list = xpVehicleService.listAvailableVehicles();
|
return R.ok(list);
|
}
|
|
/**
|
* 车辆控制消息回调通知
|
* 开关门、设定温度
|
* @param callbackVo
|
*/
|
@PostMapping("/base/vehicles/command/callback")
|
public void vehiclesCommandCallback(@RequestBody VehiclesCommandCallbackVo callbackVo){
|
log.info("车辆控制消息回调:{}", JSON.toJSONString(callbackVo));
|
if(null != callbackVo.getMsg_ref()){
|
//继续执行业务逻辑上的代码
|
}
|
}
|
|
/**
|
* 车辆详情-车辆调度-接单、测试
|
*/
|
@ApiOperation(value = "车辆详情", tags = {"运维APP-车辆管理"})
|
@PostMapping("/api/v1/vehicle/vehicleDetail")
|
public R<XpVehicleVO> vehicleDetail(@RequestParam Long id) {
|
// 查询车辆
|
XpVehicle xpVehicle = xpVehicleService.getById(id);
|
XpVehicleVO xpVehicleVO = new XpVehicleVO();
|
BeanUtils.copyProperties(xpVehicle, xpVehicleVO);
|
// 查询运维规则 保养周期
|
XpTaskRule xpTaskRule = xpTaskRuleClient.queryDetail().getData();
|
if(Objects.isNull(xpTaskRule)){
|
return R.ok(xpVehicleVO);
|
}
|
Boolean maintenanceCycle = xpTaskRule.getMaintenanceCycle();
|
Integer maintenanceCycleTime = xpTaskRule.getMaintenanceCycleTime();
|
Integer maintenanceCycleTimeType = xpTaskRule.getMaintenanceCycleTimeType();
|
if(maintenanceCycle){
|
// 查询车辆上次保养记录
|
XpTask xpTask = xpTaskClient.queryInfoByVehicleId(id).getData();
|
if(Objects.nonNull(xpTask)){
|
// 存在保养记录
|
LocalDateTime handleTime = xpTask.getCreateTime();
|
switch (maintenanceCycleTimeType){
|
case 1:
|
handleTime.plusDays(maintenanceCycleTime);
|
break;
|
default:
|
handleTime.plusMonths(maintenanceCycleTime);
|
break;
|
}
|
xpVehicleVO.setNextMaintenanceTime(handleTime.toLocalDate());
|
}else {
|
// 没有保养记录
|
// 入库时间
|
LocalDateTime warehousingTime = xpVehicle.getWarehousingTime();
|
if(Objects.nonNull(warehousingTime)){
|
switch (maintenanceCycleTimeType){
|
case 1:
|
warehousingTime.plusDays(maintenanceCycleTime);
|
break;
|
default:
|
warehousingTime.plusMonths(maintenanceCycleTime);
|
break;
|
}
|
xpVehicleVO.setNextMaintenanceTime(warehousingTime.toLocalDate());
|
}
|
}
|
}
|
return R.ok(xpVehicleVO);
|
}
|
|
/**
|
* 车辆管理-地图
|
* @return 车辆列表
|
*/
|
@ApiOperation(value = "车辆管理-地图", tags = {"运维APP-车辆管理"})
|
@PostMapping("/api/v1/vehicle/vehicleMap")
|
public R<PageInfo<XpVehicle>> vehicleMap(@RequestBody VehicleMapQuery query) {
|
return R.ok(xpVehicleService.pageList(query));
|
}
|
/**
|
* 根据车牌号查询车辆信息
|
* @param plateNumber
|
* @return
|
*/
|
@PostMapping("/inner/vehicle/listByPlateNumber")
|
R<List<XpVehicle>> listByPlateNumber(@RequestParam("plateNumber") String plateNumber){
|
return R.ok(xpVehicleService.listByPlateNumber(plateNumber));
|
}
|
|
/**
|
* 车辆详情-车门解锁/后备箱解锁
|
*/
|
@ApiOperation(value = "车辆运维-车门解锁/后备箱解锁", tags = {"运维APP-车辆管理"})
|
@PostMapping("/api/v1/vehicle/unlockByType")
|
public R<String> unlockByType(@RequestBody UnlockByTypeDTO dto) {
|
|
// TODO 车门解锁、后备箱解锁
|
|
return R.ok();
|
}
|
|
/**
|
* 业务流程-车门解锁/后备箱解锁
|
*/
|
@ApiOperation(value = "打开车门操作", tags = {"小程序-业务流程"})
|
@PostMapping("/api/v1/mini-program/order/vehicle/unlock")
|
public R<Integer> unlock(@RequestBody UnlockAppletDTO dto) {
|
return R.ok(xpVehicleService.unlock(dto));
|
}
|
|
/**
|
* 业务流程-打开设置温度
|
*/
|
@ApiOperation(value = "打开设置温度", tags = {"小程序-业务流程"})
|
@PostMapping("/api/v1/mini-program/order/ac/set-temperature")
|
public R<Integer> setTemperature(@RequestBody SetTemperatureDTO dto) {
|
return R.ok(xpVehicleService.setTemperature(dto));
|
}
|
|
/**
|
* 业务流程-通过订单id查询当前车辆温度
|
*/
|
@ApiOperation(value = "通过订单id查询当前车辆温度", tags = {"小程序-业务流程"})
|
@GetMapping("/api/v1/mini-program/order/queryTemperatureByOrderId")
|
public R<VehicleTemperatureDto> queryTemperatureByOrderId(@RequestParam Long orderId, HttpServletRequest request) {
|
String uid = request.getHeader("XP-Uid");
|
VehicleTemperatureDto vehicleTemperatureDto = xpVehicleService.queryTemperatureByOrderId(orderId,uid);
|
return R.ok(vehicleTemperatureDto);
|
}
|
|
/**
|
* 获取车辆不分页列表
|
*
|
* @param query
|
* @return
|
*/
|
@ApiOperation(value = "获取车辆分页列表", tags = {"管理后台-车队管理"})
|
@PostMapping("/api/v1/vehicle/page-list")
|
public R<PageInfo<XpVehicleVO>> getVehiclePageList(@RequestBody VehicleSelectPageQuery query) {
|
return R.ok(xpVehicleService.getVehiclePageList(query));
|
}
|
}
|