Commit 48c5487a authored by caotao's avatar caotao

1.车辆超速10分钟记录五次后产生预警数据。

2.车辆超速列表部分分页数据为空问题处理。 3.车辆超速预警数据仅保留半个月数据。
parent 78ad3edd
......@@ -53,4 +53,10 @@ public class CarSpeedWarningRecord extends BaseEntity {
@ApiModelProperty(value = "联系电话")
@TableField("ownership")
private String ownership;
@ApiModelProperty(value = "超速时间到分钟")
@TableField("waring_date_minute")
private String waringDateMinute;
@ApiModelProperty(value = "超速次数")
@TableField("over_speed_count")
private Integer overSpeedCount;
}
......@@ -1780,27 +1780,24 @@ public class CarServiceImpl extends ServiceImpl<CarMapper, Car> implements ICarS
colModels.add(new ColModel("bizOrgName", "所属单位"));
colModels.add(new ColModel("waringDate", "超速时间"));
colModels.add(new ColModel("overSpeed", "超速值(Km/h)"));
Date date = new Date();
String endTime = DateUtil.format(date, DatePattern.NORM_DATETIME_FORMAT);
date = DateUtil.offsetDay(date, -5);
String startTime = DateUtil.format(date, DatePattern.NORM_DATETIME_FORMAT);
QueryWrapper queryWrapper = new QueryWrapper<CarSpeedWarningRecord>();
if (StringUtils.isNotEmpty(keyWord)) {
queryWrapper.like("biz_org_name", keyWord);
}
queryWrapper.orderByDesc("over_speed");
queryWrapper.last("limit " + (current - 1) * pageSize + "," + current * pageSize);
queryWrapper.ge("over_speed_count",5);
queryWrapper.orderByDesc("waring_date");
// 过滤车牌
List<Car> clist = this.list(new LambdaQueryWrapper<Car>().likeRight(Car::getBizOrgCode, orgCode));
List<String> carnums = clist.stream().map(i -> i.getCarNum()).collect(Collectors.toList());
if (carnums.size() > 0) {
queryWrapper.in("car_num", carnums);
}
Integer count = wlCarSpeedWaringRecordMapper.selectCount(queryWrapper);
queryWrapper.last("limit " + (current - 1) * pageSize + "," + pageSize);
List<CarSpeedWarningRecord> list = wlCarSpeedWaringRecordMapper.selectList(queryWrapper);
DataGridMock dataGridMock = new DataGridMock(current, wlCarSpeedWaringRecordMapper.getCountOfRecords(), true,
current, list);
Integer totalPage = (count+pageSize-1)/pageSize;
DataGridMock dataGridMock = new DataGridMock(current,count, true,
totalPage, list);
basicTableDataDto.setDataGridMock(dataGridMock);
basicTableDataDto.setColModel(colModels);
return basicTableDataDto;
......
......@@ -64,8 +64,8 @@ public class JxiopCarIotListerServiceImpl {
private RedisTemplate redisTemplate;
// @Async("equipAsyncExecutor")
public void processMessage(String topic, MqttMessage message){
// @Async("equipAsyncExecutor")
public void processMessage(String topic, MqttMessage message) {
String measurement = topic.split("/")[0];
String deviceName = topic.split("/")[1];
//根据topic 组装iotCode
......@@ -100,11 +100,11 @@ public class JxiopCarIotListerServiceImpl {
}
this.updateCarLocation(jsonObject, iotCode);
String coordinate = jsonObject.getString("FireCar_Longitude") + "," + jsonObject.getString("FireCar_Latitude");
if(ObjectUtils.isEmpty(redisTemplate.opsForValue().get(iotCode))){
if (ObjectUtils.isEmpty(redisTemplate.opsForValue().get(iotCode))) {
redisTemplate.opsForValue().set(iotCode, coordinate, 10, TimeUnit.MINUTES);
logger.info("插入数据到::redis");
}else{
if(!String.valueOf(redisTemplate.opsForValue().get(iotCode)).equals(coordinate)){
} else {
if (!String.valueOf(redisTemplate.opsForValue().get(iotCode)).equals(coordinate)) {
redisTemplate.opsForValue().set(iotCode, coordinate, 10, TimeUnit.MINUTES);
logger.info("插入数据到::redis");
}
......@@ -203,10 +203,10 @@ public class JxiopCarIotListerServiceImpl {
logger.info("----------------更新车辆电池电量信息成功----------------");
carMapper.updateById(car);
logger.info("车牌号::" + car.getCarNum() + "最大车速:" + maxSpeed + "当前车速::" + speed);
if ((speed - maxSpeed)>0) {
List<CarSpeedWarningRecord> list = wlCarSpeedWaringRecordMapper.selectList(new QueryWrapper<CarSpeedWarningRecord>().eq("car_num",car.getCarNum()).
between("waring_date",DateUtil.offsetMinute(new Date(),10),new Date()));
if(!(list.size() >0)) {
if ((speed - maxSpeed) > 0) {
List<CarSpeedWarningRecord> list = wlCarSpeedWaringRecordMapper.selectList(new QueryWrapper<CarSpeedWarningRecord>().eq("car_num", car.getCarNum()).
between("waring_date", DateUtil.offsetMinute(new Date(), -10), new Date()));
if (!(list.size() > 0)) {
CarSpeedWarningRecord carSpeedWarningRecord = new CarSpeedWarningRecord();
carSpeedWarningRecord.setCarNum(car.getCarNum());
carSpeedWarningRecord.setDriver(car.getDriver());
......@@ -215,13 +215,29 @@ public class JxiopCarIotListerServiceImpl {
carSpeedWarningRecord.setOwnership(car.getOwnership());
carSpeedWarningRecord.setBizOrgName(car.getBizOrgName());
carSpeedWarningRecord.setWaringDate(DateUtil.parse(waringDate, DatePattern.NORM_DATETIME_PATTERN));
wlCarSpeedWaringRecordMapper.insert(carSpeedWarningRecord);
carSpeedWarningRecord.setWaringDateMinute(DateUtil.format(carSpeedWarningRecord.getWaringDate(), DatePattern.NORM_DATETIME_MINUTE_PATTERN));
carSpeedWarningRecord.setOverSpeedCount(1);
if((speed-maxSpeed)<maxSpeed){
wlCarSpeedWaringRecordMapper.insert(carSpeedWarningRecord);
}
logger.info("-----------触发车辆超速告警成功--------");
} else {
CarSpeedWarningRecord carSpeedWarningRecord = list.get(0);
if (!carSpeedWarningRecord.getWaringDateMinute().equals(DateUtil.parse(waringDate, DatePattern.NORM_DATETIME_MINUTE_PATTERN))) {
carSpeedWarningRecord.setOverSpeedCount(carSpeedWarningRecord.getOverSpeedCount() + 1);
carSpeedWarningRecord.setWaringDate(DateUtil.parse(waringDate, DatePattern.NORM_DATETIME_PATTERN));
carSpeedWarningRecord.setWaringDateMinute(DateUtil.format(carSpeedWarningRecord.getWaringDate(), DatePattern.NORM_DATETIME_MINUTE_PATTERN));
if((speed-maxSpeed)<maxSpeed){
carSpeedWarningRecord.setOverSpeed(speed - maxSpeed);
}
wlCarSpeedWaringRecordMapper.updateById(carSpeedWarningRecord);
}
logger.info("-----------更新车辆超速告警成功--------");
}
}
logger.info("-----------推送车辆位置消息到到地图成功--------");
try {
emqkeeper.getMqttClient().publish("car/location",sendArr.toJSONString().getBytes(),0,false);
emqkeeper.getMqttClient().publish("car/location", sendArr.toJSONString().getBytes(), 0, false);
} catch (MqttException e) {
e.printStackTrace();
}
......
......@@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yeejoin.equipmanage.common.entity.Car;
import com.yeejoin.equipmanage.common.entity.CarSpeedWarningRecord;
import com.yeejoin.equipmanage.common.entity.WlCarMileage;
import com.yeejoin.equipmanage.common.utils.CoordinateUtil;
import com.yeejoin.equipmanage.common.utils.DateUtils;
......@@ -19,6 +20,7 @@ import com.yeejoin.equipmanage.fegin.IotFeign;
import com.yeejoin.equipmanage.listener.CarIotNewListener;
import com.yeejoin.equipmanage.mapper.CarMapper;
import com.yeejoin.equipmanage.mapper.WlCarMileageMapper;
import com.yeejoin.equipmanage.mapper.WlCarSpeedWaringRecordMapper;
import com.yeejoin.equipmanage.service.ICarService;
import com.yeejoin.equipmanage.service.IWlCarMileageService;
import org.apache.commons.lang3.ObjectUtils;
......@@ -76,6 +78,8 @@ public class WlCarMileageServiceImpl extends ServiceImpl<WlCarMileageMapper, WlC
@Autowired
WlCarMileageMapper wlCarMileageMapper;
@Autowired
WlCarSpeedWaringRecordMapper wlCarSpeedWaringRecordMapper;
@Autowired
CarMapper carMapper;
@Value("${car.max.speed:100}")
private Integer CAR_MAX_SPEED;
......@@ -393,6 +397,10 @@ public class WlCarMileageServiceImpl extends ServiceImpl<WlCarMileageMapper, WlC
}
});
log.info("-------------------跨天轨迹切分任务执行完成..............");
//删除过期的告警数据
Date endTime = DateUtil.offsetDay(new Date(),-15);
String endTimeStr = DateUtil.format(endTime, "yyyy-MM-dd HH:mm:00");
wlCarSpeedWaringRecordMapper.delete(new QueryWrapper<CarSpeedWarningRecord>().le("waring_date",endTimeStr));
}
@Scheduled(cron = "${mileage.splitmileage.cron}")
......@@ -472,6 +480,10 @@ public class WlCarMileageServiceImpl extends ServiceImpl<WlCarMileageMapper, WlC
});
log.info("轨迹切分任务执行完成..............");
//删除无效的告警数据
Date endTime = DateUtil.offsetMinute(new Date(),-10);
String endTimeStr = DateUtil.format(endTime, "yyyy-MM-dd HH:mm:00");
wlCarSpeedWaringRecordMapper.delete(new QueryWrapper<CarSpeedWarningRecord>().le("waring_date",endTimeStr).lt("over_speed_count",5));
}
@Override
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment