From d799898bcccd10c172528c372edcc9e52a3c261c Mon Sep 17 00:00:00 2001 From: xiaoliuhu Date: Mon, 6 May 2024 08:14:23 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E4=BC=98=E5=8C=96=E8=82=A1=E7=A5=A8K?= =?UTF-8?q?=E7=BA=BF=E5=9B=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../stock/market/lesg/RefinitivConsumer.java | 35 +++++++++++++++++-- .../cn/stock/market/utils/DateTimeUtil.java | 25 +++++++++++++ 2 files changed, 58 insertions(+), 2 deletions(-) diff --git a/src/main/java/cn/stock/market/lesg/RefinitivConsumer.java b/src/main/java/cn/stock/market/lesg/RefinitivConsumer.java index 7fb2782..469aa2c 100644 --- a/src/main/java/cn/stock/market/lesg/RefinitivConsumer.java +++ b/src/main/java/cn/stock/market/lesg/RefinitivConsumer.java @@ -8,6 +8,7 @@ import cn.hutool.http.HttpUtil; import cn.stock.market.domain.basic.entity.RetifiveStock; import cn.stock.market.dto.RetifiveStockInfo; import cn.stock.market.dto.StockHistoryResponse; +import cn.stock.market.utils.DateTimeUtil; import cn.stock.market.utils.RefinitivUtil; import com.ag.exception.SysTipsException; import com.alibaba.fastjson.JSONArray; @@ -25,6 +26,7 @@ import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.time.Instant; import java.util.ArrayList; +import java.util.Date; import java.util.List; import java.util.concurrent.TimeUnit; @@ -268,19 +270,48 @@ public class RefinitivConsumer implements ApplicationRunner { int countback = 5; String interval = null; String resourceEndpoint = null; - if(StringUtils.equals("H",resolution)){ + Date start = new Date(); + if(StringUtils.equals("1m",resolution)){ + start = DateTimeUtil.getDayOfMorning(start,0); + countback = 360; + interval = "PT1M"; + resourceEndpoint = baseURLToday + symbol; + }else + if(StringUtils.equals("3m",resolution)){ + start = DateTimeUtil.getDayOfMorning(start,0); + countback = 150; + interval = "PT3M"; + resourceEndpoint = baseURLToday + symbol; + }else + if(StringUtils.equals("15m",resolution)){ + start = DateTimeUtil.getDayOfMorning(start,0); + countback = 50; + interval = "PT15M"; + resourceEndpoint = baseURLToday + symbol; + }else + if(StringUtils.equals("30m",resolution)){ + start = DateTimeUtil.getDayOfMorning(start,0); countback = 30; + interval = "PT30M"; + resourceEndpoint = baseURLToday + symbol; + }else + if(StringUtils.equals("H",resolution)){ + start = DateTimeUtil.getDayOfMorning(start,0); + countback = 60; interval = "PT1H"; resourceEndpoint = baseURLToday + symbol; }else if(StringUtils.equals("D",resolution)){ + start = DateTimeUtil.getDayOfMorning(start,-30); countback = 30; interval ="P1D"; resourceEndpoint = baseURLHistory + symbol; }else if(StringUtils.equals("W",resolution)){ + start = DateTimeUtil.getDayOfMorning(start,-60); countback = 30; interval ="P1W"; resourceEndpoint = baseURLHistory + symbol; }else if(StringUtils.equals("M",resolution)){ + start = DateTimeUtil.getDayOfYear(start,-1); countback = 30; interval ="P1M"; resourceEndpoint = baseURLHistory + symbol; @@ -288,7 +319,7 @@ public class RefinitivConsumer implements ApplicationRunner { HttpResponse response = HttpUtil.createGet(resourceEndpoint) .form("eventTypes","trade,quote") - .form("start","2023-05-11T18:30:12.000000000Z") + .form("start",start) .form("count",countback) .form("interval",interval) .header("Authorization","Bearer " + token) diff --git a/src/main/java/cn/stock/market/utils/DateTimeUtil.java b/src/main/java/cn/stock/market/utils/DateTimeUtil.java index 914ecf1..e2ed736 100644 --- a/src/main/java/cn/stock/market/utils/DateTimeUtil.java +++ b/src/main/java/cn/stock/market/utils/DateTimeUtil.java @@ -185,6 +185,31 @@ public class DateTimeUtil { return cal.getTime(); } + /** + * 获取某个时间的凌晨时间 + * @param time + * @param date + * @return + */ + public static Date getDayOfMorning(Date time,Integer date){ + Calendar lastDate = Calendar.getInstance(); + lastDate.setTime(time); + lastDate.add(Calendar.DATE,date); + lastDate.set(Calendar.HOUR_OF_DAY,0); + lastDate.set(Calendar.MINUTE,0); + lastDate.set(Calendar.SECOND,0); + lastDate.set(Calendar.MILLISECOND,0); + return lastDate.getTime(); + } + + //获取某个时间的前/后时间,以年为单位 + public static Date getDayOfYear(Date time,Integer date){ + Calendar lastDate = Calendar.getInstance(); + lastDate.setTime(time); + lastDate.add(Calendar.YEAR,date); + return lastDate.getTime(); + } + public static void main(String[] args) { parseToDateByMinute(10);