Commit 9cd7e2d6 authored by caotao's avatar caotao

车辆过滤无效里程优化

parent 502e67e9
package com.yeejoin.equipmanage.common.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.yeejoin.equipmanage.common.entity.publics.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
......@@ -20,6 +21,7 @@ import java.util.Date;
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("wl_car_mileage")
@ApiModel(value="WlCarMileage对象", description="车量里程表")
public class WlCarMileage extends BaseEntity {
......
......@@ -11,6 +11,7 @@ import com.yeejoin.equipmanage.service.IWlCarMileageService;
import com.yeejoin.equipmanage.utils.BeanUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
......@@ -36,11 +37,10 @@ import java.util.*;
@Api(tags = "车量里程表Api")
@RequestMapping(value = "/wl-car-mileage", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
public class WlCarMileageController {
@Value("${car.max.speed:100}")
private Integer CAR_MAX_SPEED ;
@Autowired
IWlCarMileageService iWlCarMileageService;
@Value("${car.max.speed:100}")
private Integer CAR_MAX_SPEED;
/**
* 新增车量里程表
......@@ -175,11 +175,13 @@ public class WlCarMileageController {
wlCarMileageDto.setStartTime(sdf.format(wl.getStartTime()));
wlCarMileageDto.setEndTime(sdf.format(wl.getEndTime()));
//判断当前车辆全程是否异常,如果时速小于阈值 则对数据进行返回 否则不予返回
if((wlCarMileage.getTravel()/(wlCarMileage.getTakeTime()/3600000))<CAR_MAX_SPEED){
if ((!ObjectUtils.isEmpty(wl.getTakeTime()) && (!ObjectUtils.isEmpty(wl.getTravel()) && (wl.getTravel() / (wl.getTakeTime() / 3600000)) < CAR_MAX_SPEED)))
{
list.add(wlCarMileageDto);
}
}
carTravelDto.setRecords(list);
carTravelDto.setTotal(Long.valueOf(list.size()));
// // 初始化format格式
// SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");
// // 设置时区,跳过此步骤会默认设置为"GMT+08:00" 得到的结果会多出来8个小时
......@@ -188,7 +190,7 @@ public class WlCarMileageController {
// String timeStr = dateFormat.format(totalTime);
carTravelDto.setTotalTime(millisToStringShort(totalTime));
BigDecimal two = BigDecimal.valueOf(totalTravel);
double result = two.setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue();
double result = two.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
carTravelDto.setTotalTravel(result);
return carTravelDto;
}
......
......@@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yeejoin.equipmanage.common.entity.Car;
import com.yeejoin.equipmanage.common.entity.WlCarMileage;
import com.yeejoin.equipmanage.common.utils.CoordinateUtil;
import com.yeejoin.equipmanage.common.utils.DateUtils;
import com.yeejoin.equipmanage.common.utils.HttpUtil;
import com.yeejoin.equipmanage.controller.Coordinate;
import com.yeejoin.equipmanage.fegin.IotFeign;
......@@ -45,6 +46,7 @@ import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.util.*;
import java.util.stream.Collectors;
/**
* 车量里程表 服务实现类
......@@ -58,7 +60,8 @@ import java.util.*;
@EnableAsync
public class WlCarMileageServiceImpl extends ServiceImpl<WlCarMileageMapper, WlCarMileage>
implements IWlCarMileageService {
@Value("${car.max.speed:100}")
private Integer CAR_MAX_SPEED;
@Autowired
IotFeign iotFeign;
......@@ -241,19 +244,23 @@ public class WlCarMileageServiceImpl extends ServiceImpl<WlCarMileageMapper, WlC
c.setTime(date);
c.add(Calendar.MONTH, 1);
daylist.addAll(getDayByMonth(c.getTime()));
List<Map<String, Object>> hasList = this.listMaps(new QueryWrapper<WlCarMileage>()
.select("COUNT(1) AS count,date").lambda().eq(WlCarMileage::getIotCode, car.getIotCode())
.between(WlCarMileage::getDate, daylist.get(0), daylist.get(daylist.size() - 1))
.isNotNull(WlCarMileage::getEndTime)
.ge(WlCarMileage::getTravel, 0.5)
.groupBy(WlCarMileage::getDate));
// List<Map<String, Object>> hasList = this.listMaps(new QueryWrapper<WlCarMileage>()
// .select("COUNT(1) AS count,date").lambda().eq(WlCarMileage::getIotCode, car.getIotCode())
// .between(WlCarMileage::getDate, daylist.get(0), daylist.get(daylist.size() - 1))
// .isNotNull(WlCarMileage::getEndTime)
// .ge(WlCarMileage::getTravel, 0.5)
// .groupBy(WlCarMileage::getDate));
Map<String, Object> hasMap = new HashMap<>();
for (Map<String, Object> mapOne : hasList) {
hasMap.put(String.valueOf(mapOne.get("date")), mapOne.get("count"));
}
List<WlCarMileage> wlCarMileageList = this.list(new QueryWrapper<WlCarMileage>().eq("iot_code", car.getIotCode())
.between("date", daylist.get(0), daylist.get(daylist.size() - 1))
.isNotNull("end_time")
.ge("travel", 0.5)
.groupBy("date"));
List<WlCarMileage> wlCarMileageListActiveData = wlCarMileageList.stream().filter(wlCarMileage -> (!ObjectUtils.isEmpty(wlCarMileage.getTakeTime()) && (!ObjectUtils.isEmpty(wlCarMileage.getTravel()) && (wlCarMileage.getTravel() / (wlCarMileage.getTakeTime() / 3600000)) < CAR_MAX_SPEED))).collect(Collectors.toList());
List<String> activeDateList = wlCarMileageListActiveData.stream().map(wlCarMileage -> String.valueOf(DateUtils.convertDateToString(wlCarMileage.getDate(),DateUtils.DATE_PATTERN))).collect(Collectors.toList());
for (String day : daylist) {
boolean has = false;
if (hasMap.containsKey(day)) {
if (activeDateList.contains(day)) {
has = true;
}
map.put(day, has);
......
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