/** * 将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; }