peter
2025-08-18 c50561d007e420f7397f73afce8966231973ec54
trading-order-admin/src/main/java/com/yami/trading/api/controller/RealtimeController.java
@@ -3,6 +3,7 @@
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;
@@ -12,6 +13,8 @@
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;
@@ -48,15 +51,28 @@
   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());
@@ -73,6 +89,14 @@
            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));
            }