| | |
| | | public Result<List<Realtime>> getRealtime(@RequestParam(value = "",required = false) String symbol) { |
| | | |
| | | try { |
| | | // if(StringUtils.isEmptyString(symbol)){ |
| | | // return new Result<>(); |
| | | // } |
| | | if(StringUtils.isEmptyString(symbol)){ |
| | | List<Item> items = itemService.findByType("forex"); |
| | | StringBuilder symbolBuilder = new StringBuilder(); |
| | | if (items != null && !items.isEmpty()) { |
| | | for (Item item : items) { |
| | | symbolBuilder.append(item.getSymbol()).append(","); |
| | | } |
| | | // 移除最后一个逗号 |
| | | if (symbolBuilder.length() > 0) { |
| | | symbolBuilder.setLength(symbolBuilder.length() - 1); |
| | | } |
| | | } |
| | | symbol = symbolBuilder.toString(); |
| | | } |
| | | List<Realtime> data = this.dataService.realtime(symbol); |
| | | data.forEach(d->{ |
| | | Item bySymbol = itemService.findBySymbol(d.getSymbol()); |
| | |
| | | d.setAsk(d.getClose().add(bigDecimal).setScale(decimals, RoundingMode.HALF_UP)); |
| | | d.setBid(d.getClose().subtract(bigDecimal).setScale(decimals, RoundingMode.HALF_UP)); |
| | | //涨跌幅 = (当天收盘价 - 前一日收盘价) / 前一日收盘价 * 100% |
| | | if(null != bySymbol.getYesterdayLastPrice() && bySymbol.getYesterdayLastPrice().compareTo(BigDecimal.ZERO) != 0){ |
| | | BigDecimal changePercent = (d.getClose().subtract(bySymbol.getYesterdayLastPrice())) |
| | | .divide(bySymbol.getYesterdayLastPrice(), 5, RoundingMode.HALF_UP) // 精确到4位小数 |
| | | .multiply(new BigDecimal("100").setScale(2)); // 乘以100得到百分比 |
| | | d.setChangeRatioStr(changePercent.toString()); |
| | | } |
| | | // if(null != bySymbol.getYesterdayLastPrice() && bySymbol.getYesterdayLastPrice().compareTo(BigDecimal.ZERO) != 0){ |
| | | // BigDecimal changePercent = (d.getClose().subtract(bySymbol.getYesterdayLastPrice())) |
| | | // .divide(bySymbol.getYesterdayLastPrice(), 5, RoundingMode.HALF_UP) // 精确到4位小数 |
| | | // .multiply(new BigDecimal("100").setScale(2)).setScale(4,RoundingMode.HALF_UP); // 乘以100得到百分比 |
| | | // d.setChangeRatioStr(changePercent); |
| | | // } |
| | | |
| | | if(d.getVolume()!=null){ |
| | | d.setVolume(d.getVolume().setScale(2, RoundingMode.HALF_UP)); |