|
|
@@ -1,22 +1,25 @@
|
|
|
package com.dataeasy.server.task;
|
|
|
|
|
|
import java.time.LocalDate;
|
|
|
+import java.time.ZoneId;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+import java.util.Objects;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
-import com.dataeasy.server.constant.CacheNameConstant;
|
|
|
import org.springframework.beans.BeanUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.scheduling.annotation.Scheduled;
|
|
|
import org.springframework.stereotype.Component;
|
|
|
import org.springframework.util.CollectionUtils;
|
|
|
-import org.springframework.util.StringUtils;
|
|
|
|
|
|
import com.dataeasy.server.atomic.entity.DataIpoStock;
|
|
|
import com.dataeasy.server.atomic.service.IDataIpoStockService;
|
|
|
import com.dataeasy.server.common.annotation.ScheduleTask;
|
|
|
+import com.dataeasy.server.constant.CacheNameConstant;
|
|
|
import com.dataeasy.server.constant.ScheduleTaskEnum;
|
|
|
+import com.dataeasy.server.core.aop.ScheduleTaskLogAspect;
|
|
|
import com.dataeasy.server.feign.FinanceFeign;
|
|
|
import com.dataeasy.server.feign.dto.finance.FinanceRequest;
|
|
|
import com.dataeasy.server.feign.dto.finance.StockResponse;
|
|
|
@@ -36,6 +39,16 @@ import me.chanjar.weixin.mp.bean.template.WxMpTemplateData;
|
|
|
@ScheduleTask(ScheduleTaskEnum.IPO_STOCK)
|
|
|
public class IpoStockTask extends AbstractDataTask {
|
|
|
|
|
|
+ /**
|
|
|
+ * 新股数量
|
|
|
+ */
|
|
|
+ private static final String CONTEXT_STOCK_NUM = "stockNum";
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 申购日期
|
|
|
+ */
|
|
|
+ private static final String CONTEXT_SUBSCRIPTION_DATE = "subscriptionDate";
|
|
|
+
|
|
|
@Autowired
|
|
|
private FinanceFeign financeFeign;
|
|
|
|
|
|
@@ -59,10 +72,13 @@ public class IpoStockTask extends AbstractDataTask {
|
|
|
}
|
|
|
|
|
|
// 过滤当天新股数据
|
|
|
- String todayStr = DateUtils.YYYY_MM_DD_FORMATTER.format(LocalDate.now());
|
|
|
- String subscriptionDateStr = String.format("%sT00:00:00.000", todayStr);
|
|
|
- List<DataIpoStock> ipoStocks = stockXgsglbEmList.stream().filter(v -> StringUtils.hasText(v.getSubscriptionDate()))
|
|
|
- .filter(v -> subscriptionDateStr.equals(v.getSubscriptionDate()))
|
|
|
+ LocalDate today = LocalDate.now();
|
|
|
+ List<DataIpoStock> ipoStocks = stockXgsglbEmList.stream()
|
|
|
+ .filter(v -> Objects.nonNull(v.getSubscriptionDate())).filter(v -> {
|
|
|
+ LocalDate subscriptionDate =
|
|
|
+ v.getSubscriptionDate().toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
|
|
|
+ return subscriptionDate.equals(today);
|
|
|
+ })
|
|
|
.map(v -> {
|
|
|
DataIpoStock ipoStock = new DataIpoStock();
|
|
|
BeanUtils.copyProperties(v, ipoStock);
|
|
|
@@ -79,26 +95,28 @@ public class IpoStockTask extends AbstractDataTask {
|
|
|
ipoStockService.insertList(ipoStocks);
|
|
|
|
|
|
// 清除缓存,以防缓存中数据过时
|
|
|
+ String todayStr = DateUtils.YYYY_MM_DD_FORMATTER.format(today);
|
|
|
cacheManager.getCache(CacheNameConstant.DATA_IPO_STOCK_LIST).evict(todayStr);
|
|
|
|
|
|
+ // 设置上下文
|
|
|
+ Map<String, Object> context = ScheduleTaskLogAspect.scheduleTaskContextThreadLocal.get().getContext();
|
|
|
+ context.put(CONTEXT_STOCK_NUM, ipoStocks.size());
|
|
|
+ context.put(CONTEXT_SUBSCRIPTION_DATE, todayStr);
|
|
|
+
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public TemplateMessage getTemplateMessage() {
|
|
|
- // 这是模板所需数据
|
|
|
+ public List<WxMpTemplateData> getTemplateMessage() {
|
|
|
+ // 获取上下文
|
|
|
+ Map<String, Object> context = ScheduleTaskLogAspect.scheduleTaskContextThreadLocal.get().getContext();
|
|
|
+ int stockNum = (int) context.get(CONTEXT_STOCK_NUM);
|
|
|
+ String subscriptionDate = (String) context.get(CONTEXT_SUBSCRIPTION_DATE);
|
|
|
+
|
|
|
+ // 模板所需数据
|
|
|
List<WxMpTemplateData> templateDataList = new ArrayList();
|
|
|
- templateDataList.add(new WxMpTemplateData("first", "预约成功"));
|
|
|
- templateDataList.add(new WxMpTemplateData("keyword1", "测试111"));
|
|
|
- templateDataList.add(new WxMpTemplateData("keyword2","测试2222"));
|
|
|
- templateDataList.add(new WxMpTemplateData("keyword3","测试333"));
|
|
|
- templateDataList.add(new WxMpTemplateData("keyword4","测试4444"));
|
|
|
- templateDataList.add(new WxMpTemplateData("remark","测试备注"));
|
|
|
-
|
|
|
- return TemplateMessage.builder()
|
|
|
- .url("www.baidu.com")
|
|
|
- .templateId(wxMessageProperties.getTemplateId())
|
|
|
- .templateDataList(templateDataList)
|
|
|
- .build();
|
|
|
+ templateDataList.add(new WxMpTemplateData("thing76", String.format("新股申购,今天发行%s只新股", stockNum)));
|
|
|
+ templateDataList.add(new WxMpTemplateData("time4", subscriptionDate));
|
|
|
+ return templateDataList;
|
|
|
}
|
|
|
}
|