newVehicle/src/main/java/com/muyu/web/utils/VehicleUtils.java

93 lines
2.9 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

package com.muyu.web.utils;
import com.muyu.web.domain.model.PositionModel;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.Random;
public class VehicleUtils {
/**
* 生成VIN
* @return 返回结果对象
*/
public static String genVin() {
String characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
Random random = new Random();
StringBuilder sb = new StringBuilder(17);
for (int i = 0; i < 17; i++) {
int index = (int) (random.nextFloat() * characters.length());
sb.append(characters.charAt(index));
}
return sb.toString();
}
private static Random random = new Random();
/**
* 生成电池额度
* @return 电池额度
*/
public static BigDecimal genBattery(){
return BigDecimal.valueOf(random.nextInt(60, 80) * 1000L);
}
/**
* 两点之间的距离
* @param startPositionModel 开始定位点
* @param endPositionModel 结束定位点
* @return
*/
public static BigDecimal distance(PositionModel startPositionModel, PositionModel endPositionModel){
double lon1 = Double.parseDouble(startPositionModel.getLongitude());
double lat1 = Double.parseDouble(startPositionModel.getLatitude());
double lon2 = Double.parseDouble(endPositionModel.getLongitude());
double lat2 = Double.parseDouble(endPositionModel.getLatitude());
double lon1Rad = Math.toRadians(lon1);
double lat1Rad = Math.toRadians(lat1);
double lon2Rad = Math.toRadians(lon2);
double lat2Rad = Math.toRadians(lat2);
double earthRadius = 6371; // 地球半径(以公里为单位)
double latDiff = lat2Rad - lat1Rad;
double lonDiff = lon2Rad - lon1Rad;
double a = Math.sin(latDiff / 2) * Math.sin(latDiff / 2) +
Math.cos(lat1Rad) * Math.cos(lat2Rad) *
Math.sin(lonDiff / 2) * Math.sin(lonDiff / 2);
double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
double distance = earthRadius * c;
return BigDecimal.valueOf(distance).setScale(2, RoundingMode.HALF_UP);
}
/**
* 生成电池浮动
* @return 电池浮动值
*/
public static BigDecimal batteryFloat(){
Random rand = new Random();
// 生成0.00-0.31之间的随机数
double num = rand.nextDouble() * 0.31;
// 加上0.90得到0.90-1.21之间的随机数
num += 0.90;
// 保留两位小数
num = (double) Math.round(num * 100) / 100;
return BigDecimal.valueOf(num);
}
/**
* 给予开始和结束的值生成数据
* @param start 起始范围
* @param end 截止范围
* @return 返回结果
*/
public static String genValue(int start, int end){
Random rand = new Random();
return String.valueOf(rand.nextInt(start, end));
}
}