fix:修改economictimes获取指数详情bug

This commit is contained in:
xiaoliuhu
2024-04-20 21:28:18 +08:00
parent a7e6cc0b05
commit 37bb619e24
2 changed files with 42 additions and 61 deletions

View File

@@ -1072,17 +1072,18 @@ public class StockService {
List<IndiaIndexVo> indexVoList = new ArrayList<>();
try {
//获取详情
String scripcode = "SENSEX";
String exchangeid = "47";
String currentTime = DateTimeUtil.dateToStr(new Date(),DateTimeUtil.YMD_FORMAT);
String indexid = "2365";
String exchange = "47";
String keyName = "sensex";
IndiaIndexVo vo1 = new IndiaIndexVo();
JSONObject object = EttechchartsApis.getStockDetail(scripcode, exchangeid,currentTime);
IndiaStockVO market = ettechchartsObjToVo(object);
JSONObject object = EttechchartsApis.getStockDetail(indexid, exchange,keyName);
IndiaStockVO market = EttechchartsApis.ettechchartsObjToVo(object);
market.setName("BSESENSEX指数");
vo1.setIndexVo(market);
//获取k线图 1min 当天的数据 分钟
List kine = EttechchartsApis.getStockKline(scripcode,exchangeid);
String scripcode = "SENSEX";
List kine = EttechchartsApis.getStockKline(scripcode,exchange);
vo1.setKLine(kine);
indexVoList.add(vo1);
}catch (Exception e){
@@ -1090,16 +1091,17 @@ public class StockService {
}
try {
//获取详情
String scripcode = "NSE+Index";
String indexid = "2369";
String exchangeid = "50";
String currentTime = DateTimeUtil.dateToStr(new Date(),DateTimeUtil.YMD_FORMAT);
String keyName = "nifty";
IndiaIndexVo vo1 = new IndiaIndexVo();
JSONObject object = EttechchartsApis.getStockDetail(scripcode, exchangeid,currentTime);
IndiaStockVO market = ettechchartsObjToVo(object);
JSONObject object = EttechchartsApis.getStockDetail(indexid, exchangeid,keyName);
IndiaStockVO market = EttechchartsApis.ettechchartsObjToVo(object);
market.setName("NIFTY50指数");
vo1.setIndexVo(market);
//获取k线图 1min 当天的数据 分钟
String scripcode = "NSE+Index";
List kine = EttechchartsApis.getStockKline(scripcode,exchangeid);
vo1.setKLine(kine);
indexVoList.add(vo1);
@@ -1109,27 +1111,5 @@ public class StockService {
return ServerResponse.createBySuccess(indexVoList);
}
private IndiaStockVO ettechchartsObjToVo(JSONObject object) {
IndiaStockVO market = new IndiaStockVO();
if (object.containsKey("Close")) {
market.setClose(object.getString("Close"));
}
if (object.containsKey("Adj_Close")) {
market.setNowPrice(object.getString("Adj_Close"));
}
if (object.containsKey("perchg")) {
market.setRate(object.getString("perchg"));
}
if (object.containsKey("High")) {
market.setHigh(object.getString("High"));
}
if (object.containsKey("Low")) {
market.setLow(object.getString("Low"));
}
if (object.containsKey("Open")) {
market.setOpen(object.getString("Open"));
}
return market;
}
}

View File

@@ -56,51 +56,50 @@ public class EttechchartsApis {
// return null;
}
//获取指数详情
public static JSONObject getStockDetail(String scripcode,String exchangeid,String currentTime){
String url = String.format("https://json.bselivefeeds.indiatimes.com/ET_Community/currenttick?scripcode=%s&exchangeid=%s&datatype=eod&filtertype=eod&tagId=&firstreceivedataid=2023-06-30&lastreceivedataid=%s&directions=current&callback=serviceHit.autoLoadResultCallback&scripcodetype=index",scripcode,exchangeid,currentTime);
public static JSONObject getStockDetail(String indexid,String exchange,String keyName){
String url = String.format("https://json.bselivefeeds.indiatimes.com/ET_Community/liveindices?outputtype=json&indexid=2365&exchange=47&company=true&pagesize=1&sortby=percentchange&sortorder=desc&callback=objIndices.getDataCB&language=",indexid,exchange);
String str = get(url);
if(StringUtils.isBlank(str)){
return new JSONObject();
}
str = str.substring(str.indexOf("(")+1,str.lastIndexOf(")"));
JSONObject object = JSON.parseObject(str);
if(!object.containsKey("query")){
if(!object.containsKey("searchresult")){
return new JSONObject();
}
JSONObject query = object.getJSONObject("query");
if(!query.containsKey("results")){
JSONObject query = object.getJSONObject("searchresult");
if(!query.containsKey("index")){
return new JSONObject();
}
JSONObject results = query.getJSONObject("results");
if(!results.containsKey("quote")){
JSONObject results = query.getJSONObject("index");
if(!results.containsKey(keyName)){
return new JSONObject();
}
JSONArray quote = results.getJSONArray("quote");
//
return (JSONObject) quote.get(0);
// return getList(object.getString("data"),1);
// return null;
return results.getJSONObject(keyName);
}
private static IndiaStockVO ettechchartsObjToVo(JSONObject object) {
public static IndiaStockVO ettechchartsObjToVo(JSONObject object) {
IndiaStockVO market = new IndiaStockVO();
if (object.containsKey("Close")) {
market.setClose(object.getString("Close"));
if (object.containsKey("CloseIndexValue")) {
market.setClose(object.getString("CloseIndexValue"));
}
if (object.containsKey("Adj_Close")) {
market.setNowPrice(object.getString("Adj_Close"));
if (object.containsKey("PercentChange")) {
market.setRate(object.getString("PercentChange"));
}
if (object.containsKey("perchg")) {
market.setRate(object.getString("perchg"));
if (object.containsKey("HighIndexValue")) {
market.setHigh(object.getString("HighIndexValue"));
}
if (object.containsKey("High")) {
market.setHigh(object.getString("High"));
if (object.containsKey("LowIndexValue")) {
market.setLow(object.getString("LowIndexValue"));
}
if (object.containsKey("Low")) {
market.setLow(object.getString("Low"));
if (object.containsKey("OpenIndexValue")) {
market.setOpen(object.getString("OpenIndexValue"));
}
if (object.containsKey("Open")) {
market.setOpen(object.getString("Open"));
if (object.containsKey("CurrentIndexValue")) {
market.setNowPrice(object.getString("CurrentIndexValue"));
}
if (object.containsKey("NetChange")) {
market.setNumber(object.getString("NetChange"));
}
return market;
}
@@ -109,9 +108,10 @@ public class EttechchartsApis {
//获取详情
String scripcode = "NSE+Index";
String exchangeid = "50";
String currentTime = DateTimeUtil.dateToStr(new Date(),DateTimeUtil.YMD_FORMAT);
String indexid = "2369";
String keyName = "nifty";
IndiaIndexVo vo1 = new IndiaIndexVo();
JSONObject object = EttechchartsApis.getStockDetail(scripcode, exchangeid,currentTime);
JSONObject object = EttechchartsApis.getStockDetail(indexid, exchangeid,keyName);
IndiaStockVO market = ettechchartsObjToVo(object);
market.setName("NIFTY50指数");
vo1.setIndexVo(market);
@@ -125,10 +125,11 @@ public class EttechchartsApis {
public static void requestSensexData(List<IndiaIndexVo> indexVoList) {
//获取详情
String scripcode = "SENSEX";
String indexid = "2365";
String exchangeid = "47";
String currentTime = DateTimeUtil.dateToStr(new Date(),DateTimeUtil.YMD_FORMAT);
String keyName = "sensex";
IndiaIndexVo vo1 = new IndiaIndexVo();
JSONObject object = EttechchartsApis.getStockDetail(scripcode, exchangeid,currentTime);
JSONObject object = EttechchartsApis.getStockDetail(indexid, exchangeid,keyName);
IndiaStockVO market = ettechchartsObjToVo(object);
market.setName("BSESENSEX指数");
vo1.setIndexVo(market);