package com.yami.trading.huobi.data.job; import com.yami.trading.bean.data.domain.Kline; import com.yami.trading.bean.item.domain.Item; import com.yami.trading.common.util.ThreadUtils; import com.yami.trading.huobi.data.DataCache; import com.yami.trading.huobi.hobi.HobiDataService; import com.yami.trading.service.item.ItemService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.util.List; @Slf4j @Component public class KlineCacheJob implements Runnable { @Autowired private HobiDataService hobiDataService; @Autowired private ItemService itemService; public void start() { new Thread(this, "KlineCacheJob").start(); log.info("启动KlineCacheJob!"); } @Override public void run() { while (true) { try { List item_list = itemService.findByType(Item.cryptos); for (int i = 0; i < item_list.size(); i++) { Item item = item_list.get(i); this.addCache(item, Kline.PERIOD_1MIN); this.addCache(item, Kline.PERIOD_5MIN); this.addCache(item, Kline.PERIOD_15MIN); this.addCache(item, Kline.PERIOD_30MIN); this.addCache(item, Kline.PERIOD_60MIN); this.addCache(item, Kline.PERIOD_4HOUR); this.addCache(item, Kline.PERIOD_1DAY); this.addCache(item, Kline.PERIOD_1MON); this.addCache(item, Kline.PERIOD_1WEEK); } } catch (Throwable e) { log.error("KlineCacheJob fail", e); } finally { ThreadUtils.sleep(1000); } } } public void addCache(Item item, String line) { List hobikline_list = hobiDataService.kline(item.getRemarks(), line, 1, 0); if (hobikline_list != null && hobikline_list.size() > 0) { String key = item.getSymbol() + "_" + line; DataCache.putKlineHoBi(key, hobikline_list.get(0)); } ThreadUtils.sleep(2000); } }