济菏高速数据中心代码
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

64 lines
2.3 KiB

package com.ruoyi.common.utils;
import java.math.BigDecimal;
import java.math.RoundingMode;
/**
* @Description 桩号距离计算工具
*
* @author liuwenge
* @date 2024/1/17 14:43
*/
public class StakeMarkUtils {
/**
* @Description 计算桩号距离(公里)
*
* @author liuwenge
* @date 2024/1/17 14:45
* @param startStakeMark 开始桩号
* @param endStakeMark 结束桩号
* @return java.math.BigDecimal 距离
*/
public static BigDecimal getKilometre(String startStakeMark, String endStakeMark){
if (StringUtils.isEmpty(startStakeMark) || StringUtils.isEmpty(endStakeMark)){
return BigDecimal.ZERO;
}
String start = startStakeMark.toLowerCase().replace("k","").replace("+",".");
String end = endStakeMark.toLowerCase().replace("k","").replace("+",".");
BigDecimal startKilometre = new BigDecimal(start);
BigDecimal endKilometre = new BigDecimal(end);
if (startKilometre.compareTo(endKilometre) > 0){
return startKilometre.subtract(endKilometre).setScale(3, RoundingMode.HALF_UP);
} else {
return endKilometre.subtract(startKilometre).setScale(3, RoundingMode.HALF_UP);
}
}
/**
* @Description 计算桩号距离()
*
* @author liuwenge
* @date 2024/1/17 15:04
* @param startStakeMark 开始桩号
* @param endStakeMark 结束桩号
* @return java.math.BigDecimal 距离
*/
public static BigDecimal getMetre(String startStakeMark, String endStakeMark){
if (StringUtils.isEmpty(startStakeMark) || StringUtils.isEmpty(endStakeMark)){
return BigDecimal.ZERO;
}
String start = startStakeMark.toLowerCase().replace("k","").replace("+",".");
String end = endStakeMark.toLowerCase().replace("k","").replace("+",".");
BigDecimal startKilometre = new BigDecimal(start);
BigDecimal endKilometre = new BigDecimal(end);
if (startKilometre.compareTo(endKilometre) > 0){
return startKilometre.subtract(endKilometre).multiply(new BigDecimal("1000")).setScale(0, RoundingMode.HALF_UP);
} else {
return endKilometre.subtract(startKilometre).multiply(new BigDecimal("1000")).setScale(0, RoundingMode.HALF_UP);
}
}
}