Kaynağa Gözat

【第一版开发】
1.定时任务增加历史数据处理

ChenYL 10 ay önce
ebeveyn
işleme
1982c3b2e4
16 değiştirilmiş dosya ile 126 ekleme ve 20 silme
  1. 6 0
      data-easy/src/main/java/com/dataeasy/server/atomic/service/IDataDaLeTouService.java
  2. 8 2
      data-easy/src/main/java/com/dataeasy/server/atomic/service/IDataIpoBondService.java
  3. 6 0
      data-easy/src/main/java/com/dataeasy/server/atomic/service/IDataIpoStockService.java
  4. 8 2
      data-easy/src/main/java/com/dataeasy/server/atomic/service/IDataProductHuntPostService.java
  5. 6 0
      data-easy/src/main/java/com/dataeasy/server/atomic/service/IDataShuangSeQiuService.java
  6. 12 0
      data-easy/src/main/java/com/dataeasy/server/atomic/service/impl/DataDaLeTouServiceImpl.java
  7. 17 5
      data-easy/src/main/java/com/dataeasy/server/atomic/service/impl/DataIpoBondServiceImpl.java
  8. 17 5
      data-easy/src/main/java/com/dataeasy/server/atomic/service/impl/DataIpoStockServiceImpl.java
  9. 10 1
      data-easy/src/main/java/com/dataeasy/server/atomic/service/impl/DataProductHuntPostServiceImpl.java
  10. 15 3
      data-easy/src/main/java/com/dataeasy/server/atomic/service/impl/DataShuangSeQiuServiceImpl.java
  11. 3 0
      data-easy/src/main/java/com/dataeasy/server/common/utils/Assert.java
  12. 3 0
      data-easy/src/main/java/com/dataeasy/server/task/DaLeTouTask.java
  13. 4 0
      data-easy/src/main/java/com/dataeasy/server/task/IpoBondTask.java
  14. 4 1
      data-easy/src/main/java/com/dataeasy/server/task/IpoStockTask.java
  15. 4 1
      data-easy/src/main/java/com/dataeasy/server/task/ProductHuntTask.java
  16. 3 0
      data-easy/src/main/java/com/dataeasy/server/task/ShuangSeQiuTask.java

+ 6 - 0
data-easy/src/main/java/com/dataeasy/server/atomic/service/IDataDaLeTouService.java

@@ -22,4 +22,10 @@ public interface IDataDaLeTouService {
      * @return
      */
     DataDaLeTou getByDrawDate(String drawDate);
+
+    /**
+     * 根据id删除(逻辑删除)
+     * @param qihao 开奖日期
+     */
+    void deleteByQihao(String qihao);
 }

+ 8 - 2
data-easy/src/main/java/com/dataeasy/server/atomic/service/IDataIpoBondService.java

@@ -1,9 +1,9 @@
 package com.dataeasy.server.atomic.service;
 
-import com.dataeasy.server.atomic.entity.DataIpoBond;
-
 import java.util.List;
 
+import com.dataeasy.server.atomic.entity.DataIpoBond;
+
 /**
  * @author tyuio
  * @version 1.0.0
@@ -24,4 +24,10 @@ public interface IDataIpoBondService {
      * @return
      */
     List<DataIpoBond> getBySubscriptionDate(String subscriptionDate);
+
+    /**
+     * 根据申购日期删除 (逻辑删除)
+     * @param subscriptionDate 申购日期
+     */
+    void deleteBySubscriptionDate(String subscriptionDate);
 }

+ 6 - 0
data-easy/src/main/java/com/dataeasy/server/atomic/service/IDataIpoStockService.java

@@ -24,4 +24,10 @@ public interface IDataIpoStockService {
      * @return
      */
     List<DataIpoStock> getBySubscriptionDate(String subscriptionDate);
+
+    /**
+     * 根据申购日期删除(逻辑删除)
+     * @param subscriptionDate 申购日期
+     */
+    void deleteBySubscriptionDate(String subscriptionDate);
 }

+ 8 - 2
data-easy/src/main/java/com/dataeasy/server/atomic/service/IDataProductHuntPostService.java

@@ -1,9 +1,9 @@
 package com.dataeasy.server.atomic.service;
 
-import com.dataeasy.server.atomic.entity.DataProductHuntPost;
-
 import java.util.List;
 
+import com.dataeasy.server.atomic.entity.DataProductHuntPost;
+
 /**
  * @author tyuio
  * @version 1.0.0
@@ -24,4 +24,10 @@ public interface IDataProductHuntPostService {
      * @return
      */
     List<DataProductHuntPost> getByRankDate(String rankDate);
+
+    /**
+     * 根据榜单日期删除数据(逻辑删除)
+     * @param rankDate
+     */
+    void deleteByRankDate(String rankDate);
 }

+ 6 - 0
data-easy/src/main/java/com/dataeasy/server/atomic/service/IDataShuangSeQiuService.java

@@ -22,4 +22,10 @@ public interface IDataShuangSeQiuService {
      * @return
      */
     DataShuangSeQiu getByDrawDate(String drawDate);
+
+    /**
+     * 根据id删除(逻辑删除)
+     * @param qihao 开奖日期
+     */
+    void deleteByQihao(String qihao);
 }

+ 12 - 0
data-easy/src/main/java/com/dataeasy/server/atomic/service/impl/DataDaLeTouServiceImpl.java

@@ -9,6 +9,9 @@ import com.dataeasy.server.atomic.mapper.DataDaLeTouMapper;
 import com.dataeasy.server.atomic.service.IDataDaLeTouService;
 import com.dataeasy.server.common.utils.Assert;
 
+import tk.mybatis.mapper.weekend.Weekend;
+import tk.mybatis.mapper.weekend.WeekendCriteria;
+
 /**
  * @author tyuio
  * @version 1.0.0
@@ -37,4 +40,13 @@ public class DataDaLeTouServiceImpl implements IDataDaLeTouService {
         daLeTouQuery.setQihao(drawDate);
         return daLeTouMapper.selectOne(daLeTouQuery);
     }
+
+    @Override
+    public void deleteByQihao(String qihao) {
+        Assert.isNull(qihao);
+        Weekend<DataDaLeTou> weekend = Weekend.of(DataDaLeTou.class);
+        WeekendCriteria<DataDaLeTou, Object> criteria = weekend.weekendCriteria();
+        criteria.andEqualTo(DataDaLeTou::getQihao, qihao);
+        daLeTouMapper.deleteByExample(weekend);
+    }
 }

+ 17 - 5
data-easy/src/main/java/com/dataeasy/server/atomic/service/impl/DataIpoBondServiceImpl.java

@@ -1,16 +1,19 @@
 package com.dataeasy.server.atomic.service.impl;
 
-import com.dataeasy.server.atomic.entity.DataIpoBond;
-import com.dataeasy.server.common.utils.Assert;
+import java.sql.Date;
+import java.util.List;
+
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.util.StringUtils;
 
+import com.dataeasy.server.atomic.entity.DataIpoBond;
 import com.dataeasy.server.atomic.mapper.DataIpoBondMapper;
 import com.dataeasy.server.atomic.service.IDataIpoBondService;
-import org.springframework.util.StringUtils;
+import com.dataeasy.server.common.utils.Assert;
 
-import java.sql.Date;
-import java.util.List;
+import tk.mybatis.mapper.weekend.Weekend;
+import tk.mybatis.mapper.weekend.WeekendCriteria;
 
 /**
  * @author tyuio
@@ -40,4 +43,13 @@ public class DataIpoBondServiceImpl implements IDataIpoBondService {
         ipoBondQuery.setOnlineSubscriptionDate(Date.valueOf(subscriptionDate));
         return ipoBondMapper.select(ipoBondQuery);
     }
+
+    @Override
+    public void deleteBySubscriptionDate(String subscriptionDate) {
+        Assert.isNull(subscriptionDate);
+        Weekend<DataIpoBond> weekend = Weekend.of(DataIpoBond.class);
+        WeekendCriteria<DataIpoBond, Object> criteria = weekend.weekendCriteria();
+        criteria.andEqualTo(DataIpoBond::getOnlineSubscriptionDate, subscriptionDate);
+        ipoBondMapper.deleteByExample(weekend);
+    }
 }

+ 17 - 5
data-easy/src/main/java/com/dataeasy/server/atomic/service/impl/DataIpoStockServiceImpl.java

@@ -1,16 +1,19 @@
 package com.dataeasy.server.atomic.service.impl;
 
-import com.dataeasy.server.atomic.entity.DataIpoStock;
-import com.dataeasy.server.common.utils.Assert;
+import java.sql.Date;
+import java.util.List;
+
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.util.StringUtils;
 
+import com.dataeasy.server.atomic.entity.DataIpoStock;
 import com.dataeasy.server.atomic.mapper.DataIpoStockMapper;
 import com.dataeasy.server.atomic.service.IDataIpoStockService;
-import org.springframework.util.StringUtils;
+import com.dataeasy.server.common.utils.Assert;
 
-import java.sql.Date;
-import java.util.List;
+import tk.mybatis.mapper.weekend.Weekend;
+import tk.mybatis.mapper.weekend.WeekendCriteria;
 
 /**
  * @author tyuio
@@ -40,4 +43,13 @@ public class DataIpoStockServiceImpl implements IDataIpoStockService {
         ipoStockQuery.setSubscriptionDate(Date.valueOf(subscriptionDate));
         return ipoStockMapper.select(ipoStockQuery);
     }
+
+    @Override
+    public void deleteBySubscriptionDate(String subscriptionDate) {
+        Assert.isNull(subscriptionDate);
+        Weekend<DataIpoStock> weekend = Weekend.of(DataIpoStock.class);
+        WeekendCriteria<DataIpoStock, Object> criteria = weekend.weekendCriteria();
+        criteria.andEqualTo(DataIpoStock::getSubscriptionDate, subscriptionDate);
+        ipoStockMapper.deleteByExample(weekend);
+    }
 }

+ 10 - 1
data-easy/src/main/java/com/dataeasy/server/atomic/service/impl/DataProductHuntPostServiceImpl.java

@@ -2,7 +2,6 @@ package com.dataeasy.server.atomic.service.impl;
 
 import java.util.List;
 
-import com.dataeasy.server.utiis.WeekendUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.StringUtils;
@@ -11,6 +10,7 @@ import com.dataeasy.server.atomic.entity.DataProductHuntPost;
 import com.dataeasy.server.atomic.mapper.DataProductHuntPostMapper;
 import com.dataeasy.server.atomic.service.IDataProductHuntPostService;
 import com.dataeasy.server.common.utils.Assert;
+import com.dataeasy.server.utiis.WeekendUtils;
 
 import tk.mybatis.mapper.weekend.Weekend;
 import tk.mybatis.mapper.weekend.WeekendCriteria;
@@ -45,4 +45,13 @@ public class DataProductHuntPostServiceImpl implements IDataProductHuntPostServi
         weekend.orderBy(DataProductHuntPost::getRankNum);
         return productHuntPostMapper.selectByExample(weekend);
     }
+
+    @Override
+    public void deleteByRankDate(String rankDate) {
+        Assert.isNull(rankDate);
+        Weekend<DataProductHuntPost> weekend = Weekend.of(DataProductHuntPost.class);
+        WeekendCriteria<DataProductHuntPost, Object> criteria = weekend.weekendCriteria();
+        criteria.andEqualTo(DataProductHuntPost::getRankDate, rankDate);
+        productHuntPostMapper.deleteByExample(weekend);
+    }
 }

+ 15 - 3
data-easy/src/main/java/com/dataeasy/server/atomic/service/impl/DataShuangSeQiuServiceImpl.java

@@ -1,13 +1,16 @@
 package com.dataeasy.server.atomic.service.impl;
 
-import com.dataeasy.server.atomic.entity.DataShuangSeQiu;
-import com.dataeasy.server.common.utils.Assert;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.util.StringUtils;
 
+import com.dataeasy.server.atomic.entity.DataShuangSeQiu;
 import com.dataeasy.server.atomic.mapper.DataShuangSeQiuMapper;
 import com.dataeasy.server.atomic.service.IDataShuangSeQiuService;
-import org.springframework.util.StringUtils;
+import com.dataeasy.server.common.utils.Assert;
+
+import tk.mybatis.mapper.weekend.Weekend;
+import tk.mybatis.mapper.weekend.WeekendCriteria;
 
 /**
  * @author tyuio
@@ -37,4 +40,13 @@ public class DataShuangSeQiuServiceImpl implements IDataShuangSeQiuService {
         shuangSeQiuQuery.setQihao(drawDate);
         return shuangSeQiuMapper.selectOne(shuangSeQiuQuery);
     }
+
+    @Override
+    public void deleteByQihao(String qihao) {
+        Assert.isNull(qihao);
+        Weekend<DataShuangSeQiu> weekend = Weekend.of(DataShuangSeQiu.class);
+        WeekendCriteria<DataShuangSeQiu, Object> criteria = weekend.weekendCriteria();
+        criteria.andEqualTo(DataShuangSeQiu::getQihao, qihao);
+        shuangSeQiuMapper.deleteByExample(weekend);
+    }
 }

+ 3 - 0
data-easy/src/main/java/com/dataeasy/server/common/utils/Assert.java

@@ -24,6 +24,9 @@ public class Assert {
         if (Objects.isNull(object)) {
             throw new IllegalArgumentException(errorMsg);
         }
+        if (object instanceof String && ((String) object).isBlank()) {
+            throw new IllegalArgumentException(errorMsg);
+        }
     }
 
     /**

+ 3 - 0
data-easy/src/main/java/com/dataeasy/server/task/DaLeTouTask.java

@@ -66,6 +66,9 @@ public class DaLeTouTask extends AbstractHzApiTask {
             return false;
         }
 
+        // 删除历史数据数据,以防重复执行导致数据重复引发系统异常
+        daLeTouService.deleteByQihao(daLeTouResponse.getQihao());
+
         // 数据入库
         DataDaLeTou addDaLeTou = new DataDaLeTou();
         BeanUtils.copyProperties(daLeTouResponse, addDaLeTou);

+ 4 - 0
data-easy/src/main/java/com/dataeasy/server/task/IpoBondTask.java

@@ -71,6 +71,10 @@ public class IpoBondTask extends AbstractDataTask {
             return false;
         }
 
+        // 删除历史数据数据,以防重复执行导致数据重复引发系统异常
+        String subscriptionDate = DateUtils.YYYY_MM_DD_FORMATTER.format(LocalDate.now());
+        ipoBondService.deleteBySubscriptionDate(subscriptionDate);
+
         List<DataIpoBond> ipoBonds = bondCovIssueCninfos.stream().map(v -> {
             DataIpoBond ipoBond = new DataIpoBond();
             BeanUtils.copyProperties(v, ipoBond);

+ 4 - 1
data-easy/src/main/java/com/dataeasy/server/task/IpoStockTask.java

@@ -73,6 +73,7 @@ public class IpoStockTask extends AbstractDataTask {
 
         // 过滤当天新股数据
         LocalDate today = LocalDate.now();
+        String todayStr = DateUtils.YYYY_MM_DD_FORMATTER.format(today);
         List<DataIpoStock> ipoStocks = stockXgsglbEmList.stream()
             .filter(v -> Objects.nonNull(v.getSubscriptionDate())).filter(v -> {
                 LocalDate subscriptionDate =
@@ -91,11 +92,13 @@ public class IpoStockTask extends AbstractDataTask {
             return false;
         }
 
+        // 删除历史数据数据,以防重复执行导致数据重复引发系统异常
+        ipoStockService.deleteBySubscriptionDate(todayStr);
+
         // 数据入库
         ipoStockService.insertList(ipoStocks);
 
         // 清除缓存,以防缓存中数据过时
-        String todayStr = DateUtils.YYYY_MM_DD_FORMATTER.format(today);
         cacheManager.getCache(CacheNameConstant.DATA_IPO_STOCK_LIST).evict(todayStr);
 
         // 设置上下文

+ 4 - 1
data-easy/src/main/java/com/dataeasy/server/task/ProductHuntTask.java

@@ -118,6 +118,7 @@ public class ProductHuntTask extends AbstractDataTask {
     public boolean fetchData() {
         // 目标是拉取昨天的数据,且中国时区比ProductHunt的服务器快了8个小时,因此如果在8点前运行,则会获取同一天的数据
         LocalDateTime yesterdayLocalDateTime = LocalDateTime.now().minusDays(1);
+        Date rankDate = Date.from(yesterdayLocalDateTime.atZone(ZoneId.systemDefault()).toInstant());
         String rankDateStr = DateUtils.YYYY_MM_DD_FORMATTER.format(yesterdayLocalDateTime);
         // 拉取数据
         JsonResponse<List<PostNode>> jsonResponse = productHuntFeign.getPosts(apiToken, rankDateStr);
@@ -136,6 +137,9 @@ public class ProductHuntTask extends AbstractDataTask {
             return false;
         }
 
+        // 删除历史数据数据,以防重复执行导致数据重复引发系统异常
+        productHuntPostService.deleteByRankDate(rankDateStr);
+
         // 内容太长,要分批次翻译
         List<List<PostNode>> partition = Lists.partition(postNodes, Optional.ofNullable(productHuntProperties.getTranslateNum()).orElse(10));
         ObjectMapper objectMapper = new ObjectMapper();
@@ -185,7 +189,6 @@ public class ProductHuntTask extends AbstractDataTask {
         Map<Long, ProductHuntTranslateDto> productHuntTranslateDtoMap = synchronizedList.stream().collect(Collectors.toMap(ProductHuntTranslateDto::getId, Function.identity(), (v1, v2) -> v1));
 
         AtomicInteger rankNum = new AtomicInteger(1);
-        Date rankDate = Date.from(yesterdayLocalDateTime.atZone(ZoneId.systemDefault()).toInstant());
         List<DataProductHuntPost> posts = postNodes.stream().map(v -> {
             DataProductHuntPost post = new DataProductHuntPost();
             BeanUtils.copyProperties(v, post);

+ 3 - 0
data-easy/src/main/java/com/dataeasy/server/task/ShuangSeQiuTask.java

@@ -66,6 +66,9 @@ public class ShuangSeQiuTask extends AbstractHzApiTask {
             return false;
         }
 
+        // 删除历史数据数据,以防重复执行导致数据重复引发系统异常
+        shuangSeQiuService.deleteByQihao(shuangSeQiuResponse.getQihao());
+
         // 数据入库
         DataShuangSeQiu addShuangSeQiu = new DataShuangSeQiu();
         BeanUtils.copyProperties(shuangSeQiuResponse, addShuangSeQiu);