TradeInterval.java
2.16 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
package com.cjs.cms.biz.trade;
import java.util.Calendar;
import java.util.List;
import java.util.Map;
import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.cjs.cms.model.pub.ConstInfo;
import com.cjs.cms.util.lang.JsonUtil;
import com.cjs.cms.util.redis.JedisTemplate;
/**
* 定时获取行情
*
* @author tongyufu
*
*/
@Service
public class TradeInterval {
@Autowired
private TradeBiz tradeBiz;
@Autowired
private JedisTemplate jedis;
Logger log = LogManager.getLogger();
/**定时获取行情*/
@SuppressWarnings("unchecked")
public void tradeInfo() {
//非交易时间不更新行情
Calendar calendar = Calendar.getInstance();
int day = calendar.get(Calendar.DAY_OF_WEEK);
int hour = calendar.get(Calendar.HOUR_OF_DAY);
if (day == Calendar.SATURDAY || day == Calendar.SUNDAY || hour < 9 || hour > 16) {
return;
}
Map<String, Object> trades = tradeBiz.exchaneInfoWebSocket();
String beforeTradeInfo = jedis.get(ConstInfo.Trade.TRADE_INFO);
String businessAmount = getBusinessAmount(JsonUtil.fromJson(beforeTradeInfo, Map.class));
if (StringUtils.equals(getBusinessAmount(trades), businessAmount)) {
return;
}
final String tradeInfo = JsonUtil.toJson(trades);
//log.debug("发布行情:" + tradeInfo);
jedis.set(ConstInfo.Trade.TRADE_INFO, tradeInfo);
//发布到订阅通道
jedis.publish(ConstInfo.Trade.TRADE_TOPIC, tradeInfo);
}
@SuppressWarnings("unchecked")
private String getBusinessAmount(Map<String, Object> current) {
if (current != null && current.get("data") != null) {
for (Map<String, Object> info : (List<Map<String, Object>>) current.get("data")) {
if ("399001".equals(info.get("mch_code"))) {
return info.get("business_amount").toString();
}
}
}
return "";
}
}