/**
* 将String转换为数组
*
* @param value 数组格式String字符串
* @return 数组
*/
public static String[] switchTo(String value) {
return value.replace("[", "").replace("]", "").replaceAll(" ", "").split(",");
}
/**
* 遍历数组返回字符串
*
* @param values 数组
* @return 拼接的字符串
*/
public static String switchToString(String[] values) {
String result = "";
if (Util.notEmpty(values)) {
for (String value : values) {
result += ",'" + value + "'";
}
result = result.replaceFirst(",", "");
}
return result;
}
/**
* 将String集合转化为BigDecimal集合
*
* @param values String集合
* @return BigDecimal集合
*/
public static List<BigDecimal> switchTo(String[] values) {
List<BigDecimal> result = new ArrayList<>();
for (String value : values) {
if (Util.notEmpty(value)) {
BigDecimal bigDecimal = new BigDecimal(value);
result.add(bigDecimal);
} else {
result.add(null);
}
}
return result;
}
/**
* 根据BigDecimal集合获取最大值
*
* @param list BigDecimal集合
* @return 最大值
*/
public static BigDecimal getMax(List<BigDecimal> list) {
BigDecimal max = list.get(0);
for (BigDecimal value : list) {
if (value.subtract(max).doubleValue() > 0) {
max = value;
}
}
return max;
}
/**
* 根据BigDecimal集合获取最小值
*
* @param list BigDecimal集合
* @return 最小值
*/
public static BigDecimal getMin(List<BigDecimal> list) {
BigDecimal min = list.get(0);
for (BigDecimal value : list) {
if (value.subtract(min).doubleValue() < 0) {
min = value;
}
}
return min;
}
/**
* 根据BigDecimal集合获取和 只计算正值
*
* @param list BigDecimal集合
* @return 集合的和
*/
public static BigDecimal getSum(List<BigDecimal> list) {
BigDecimal sum = new BigDecimal(0);
for (BigDecimal value : list) {
if (value.doubleValue() > 0) {
sum = sum.add(value);
}
}
return sum;
}
/**
* 根据开始时间结束时间及报表类型获取具体日期集合
*
* @param from 开始时间
* @param to 结束时间
* @param period 报表类型
* @return 具体日期集合
*/
public static String getTradingDates(int from, int to, String period) {
String dates = "";
String[] periods = period.split(",");
for (String p : periods) {
for (int i = from; i < to; i++) {
String date = ExcelUtil.getDateByPeriod(String.valueOf(i), p);
if (!dates.contains(date)) {
dates += ",'" + date + "'";
}
}
}
dates = dates.replaceFirst(",", "");
return dates;
}
/**
* 根据其他币种类型及金额转换为人民币
*
* @param money 金额
* @param currency 币种代码
* @return 人民币金额
*/
public static BigDecimal getRMBByOther(BigDecimal money, String currency) {
if (money == null || money.toString().contains("-")) {
return new BigDecimal("0");
}
switch (currency) {
case "RMB":
return money.setScale(5, BigDecimal.ROUND_HALF_UP);
case "USD":
return money.multiply(new BigDecimal(6.617)).setScale(5, BigDecimal.ROUND_HALF_UP);
case "HKD":
return money.multiply(new BigDecimal(0.848)).setScale(5, BigDecimal.ROUND_HALF_UP);
case "EUR":
return money.multiply(new BigDecimal(7.82)).setScale(5, BigDecimal.ROUND_HALF_UP);
case "YJP":
return money.multiply(new BigDecimal(0.0585)).setScale(5, BigDecimal.ROUND_HALF_UP);
case "KRW":
return money.multiply(new BigDecimal(0.005855)).setScale(5, BigDecimal.ROUND_HALF_UP);
case "CAD":
return money.multiply(new BigDecimal(5.2983)).setScale(5, BigDecimal.ROUND_HALF_UP);
case "GBP":
return money.multiply(new BigDecimal(8.7232)).setScale(5, BigDecimal.ROUND_HALF_UP);
case "AUD":
return money.multiply(new BigDecimal(5.197)).setScale(5, BigDecimal.ROUND_HALF_UP);
case "CHF":
return money.multiply(new BigDecimal(6.7438)).setScale(5, BigDecimal.ROUND_HALF_UP);
case "SGD":
return money.multiply(new BigDecimal(4.873)).setScale(5, BigDecimal.ROUND_HALF_UP);
case "TWD":
return money.multiply(new BigDecimal(0.2189)).setScale(5, BigDecimal.ROUND_HALF_UP);
}
return null;
}