package com.ruoyi.system.controller;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.ruoyi.common.core.domain.R;
|
import com.ruoyi.common.core.web.page.PageInfo;
|
import com.ruoyi.dataInterchange.api.feignClient.UPExgMsgRealLocationClient;
|
import com.ruoyi.dataInterchange.api.vo.GnssDataVo;
|
import com.ruoyi.system.api.model.Car;
|
import com.ruoyi.system.api.model.Warn;
|
import com.ruoyi.system.query.CarWarnInfoResp;
|
import com.ruoyi.system.query.CarWarnListReq;
|
import com.ruoyi.system.query.CarWarnListResp;
|
import com.ruoyi.system.query.WarnResp;
|
import com.ruoyi.system.service.ICarService;
|
import com.ruoyi.system.service.IWarnService;
|
import com.ruoyi.system.util.GDMapGeocodingUtil;
|
import io.swagger.annotations.ApiOperation;
|
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.PathVariable;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RestController;
|
|
import javax.annotation.Resource;
|
import java.math.BigDecimal;
|
import java.time.LocalDateTime;
|
import java.time.format.DateTimeFormatter;
|
import java.util.ArrayList;
|
import java.util.List;
|
import java.util.Map;
|
|
/**
|
* @author zhibing.pu
|
* @Date 2025/3/27 14:38
|
*/
|
@RestController
|
@RequestMapping("/warn")
|
public class WarnController {
|
|
|
@Resource
|
private IWarnService warnService;
|
|
@Resource
|
private ICarService carService;
|
|
|
@Resource
|
private UPExgMsgRealLocationClient upExgMsgRealLocationClient;
|
|
|
@GetMapping("/getCarWarnList")
|
@ApiOperation(value = "获取车辆预警列表数据", tags = {"车辆管理", "预警记录", "首页"})
|
public R<PageInfo<CarWarnListResp>> getCarWarnList(CarWarnListReq carWarnListReq) {
|
PageInfo<CarWarnListResp> pageInfo = warnService.getCarWarnList(carWarnListReq);
|
return R.ok(pageInfo);
|
}
|
|
|
@GetMapping("/getCarWarnInfo")
|
@ApiOperation(value = "获取车辆预警详情数据", tags = {"车辆管理", "预警记录"})
|
public R<CarWarnInfoResp> getCarWarnInfo(@PathVariable("vehicleNumber") String vehicleNumber) {
|
Car car = carService.getOne(new LambdaQueryWrapper<Car>().eq(Car::getVehicleNumber, vehicleNumber));
|
if (null == car) {
|
return R.ok();
|
}
|
String time = LocalDateTime.now().minusMinutes(15).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
|
List<Warn> list = warnService.list(new LambdaQueryWrapper<Warn>().eq(Warn::getCarId, car.getId()).lt(Warn::getStartTime, time).orderByDesc(Warn::getCreateTime));
|
CarWarnInfoResp carWarnInfoResp = new CarWarnInfoResp();
|
carWarnInfoResp.setVehicleNumber(vehicleNumber);
|
GnssDataVo gnssDataVo = upExgMsgRealLocationClient.getVehicleSpeed(vehicleNumber).getData();
|
carWarnInfoResp.setSpeed(new BigDecimal(gnssDataVo.getVec1()));
|
Map<String, String> geocode = null;
|
try {
|
geocode = GDMapGeocodingUtil.geocode(Double.valueOf(gnssDataVo.getLon() / 1000000).toString(), Double.valueOf(gnssDataVo.getLat() / 1000000).toString());
|
} catch (Exception e) {
|
throw new RuntimeException(e);
|
}
|
String address = geocode.get("address");
|
carWarnInfoResp.setNowAddress(address);
|
List<WarnResp> warnList = new ArrayList<>();
|
for (Warn warn : list) {
|
WarnResp warnResp = new WarnResp();
|
warnResp.setWarnType(warn.getWarnType());
|
warnResp.setWarnTime(warn.getStartTime());
|
warnResp.setSpeed(warn.getSpeed());
|
warnResp.setLon(new BigDecimal(warn.getLongitude()));
|
warnResp.setLat(new BigDecimal(warn.getLatitude()));
|
warnResp.setAddress(warn.getAddress());
|
warnList.add(warnResp);
|
}
|
carWarnInfoResp.setWarnList(warnList);
|
return R.ok(carWarnInfoResp);
|
}
|
|
@GetMapping("/getWarnGroupCount")
|
@ApiOperation(value = "获取预警情况统计", tags = {"首页"})
|
public R<List<Map<String, Object>>> getWarnGroupCount() {
|
List<Map<String, Object>> warnGroupCount = warnService.getWarnGroupCount();
|
return R.ok(warnGroupCount);
|
}
|
|
@GetMapping("/getWarnGroupCountTop10")
|
@ApiOperation(value = "获取预警排行榜前10", tags = {"首页"})
|
public R<List<Map<String, Object>>> getWarnGroupCountTop10() {
|
List<Map<String, Object>> warnGroupCountTop10 = warnService.getWarnGroupCountTop10();
|
return R.ok(warnGroupCountTop10);
|
}
|
}
|