| | |
| | | import cn.hutool.core.collection.CollectionUtil; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.alibaba.fastjson.serializer.SerializerFeature; |
| | | import com.yami.trading.bean.data.domain.Kline; |
| | | import com.yami.trading.bean.data.domain.Realtime; |
| | | import com.yami.trading.bean.data.domain.TradeDetails; |
| | | import com.yami.trading.bean.item.domain.Item; |
| | |
| | | import com.yami.trading.common.util.StringUtils; |
| | | import com.yami.trading.common.web.ResultObject; |
| | | import com.yami.trading.huobi.data.DataCache; |
| | | import com.yami.trading.huobi.data.internal.KlineConstant; |
| | | import com.yami.trading.huobi.data.internal.KlineService; |
| | | import com.yami.trading.service.data.DataService; |
| | | import com.yami.trading.service.item.ItemService; |
| | | import io.swagger.annotations.Api; |
| | |
| | | private DataService dataService; |
| | | @Autowired |
| | | private ItemService itemService; |
| | | @Autowired |
| | | private KlineService klineService; |
| | | |
| | | @ApiOperation(value = "行情") |
| | | @GetMapping(HOBI + "getRealtime.action") |
| | | 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()); |
| | |
| | | BigDecimal bigDecimal = BigDecimal.valueOf(1, decimals); |
| | | 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)).setScale(4,RoundingMode.HALF_UP); // 乘以100得到百分比 |
| | | // d.setChangeRatioStr(changePercent); |
| | | // } |
| | | |
| | | if(d.getVolume()!=null){ |
| | | d.setVolume(d.getVolume().setScale(2, RoundingMode.HALF_UP)); |
| | | } |