| src/main/java/com/nq/utils/task/YEBTask.java | ●●●●● patch | view | raw | blame | history | |
| src/main/java/com/nq/utils/task/news/NewsTask.java | ●●●●● patch | view | raw | blame | history | |
| src/main/java/com/nq/utils/task/stock/CarryPositionTask.java | ●●●●● patch | view | raw | blame | history | |
| src/main/java/com/nq/utils/task/stock/StockTask.java | ●●●●● patch | view | raw | blame | history |
src/main/java/com/nq/utils/task/YEBTask.java
@@ -6,29 +6,46 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import org.springframework.stereotype.Controller; import java.util.concurrent.TimeUnit; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; /** * 余额宝定时任务 * */ */ @Slf4j @Component public class YEBTask { @Autowired IEchoServices echoServices; boolean sendYEBMoney = true; private final Lock sendYEBMoneyLock = new ReentrantLock(); /** * 余额宝发放利息 * */ */ @Scheduled(cron = "0 0/1 * * * ?") public void sendYEBMoney(){ if (sendYEBMoney) sendYEBMoney = false; else return; if (sendYEBMoneyLock.tryLock()) { try { log.info("基金定时任务-------开始"); echoServices.sendMoney(); log.info("基金定时任务-------结束"); } finally { sendYEBMoneyLock.unlock(); sendYEBMoney = true; } } } } src/main/java/com/nq/utils/task/news/NewsTask.java
@@ -7,6 +7,9 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; //import org.springframework.scheduling.annotation.Scheduled; @@ -20,25 +23,36 @@ @Autowired ISiteArticleService iSiteArticleService; boolean NewsInfoTask = true; private final Lock NewsInfoTaskLock = new ReentrantLock(); /* * 新聞資訊抓取 * */ @Scheduled(cron = "0 0/5 * * * ?") @Scheduled(cron = "0/1 * * * * ?") public void NewsInfoTask() { if (NewsInfoTask) NewsInfoTask = false; else return; if (NewsInfoTaskLock.tryLock()) { try { System.out.println("新闻定时任务---->开始"); this.iSiteNewsService.grabNews(); }catch (Exception e){ e.printStackTrace(); } finally { NewsInfoTaskLock.unlock(); NewsInfoTask = true; } System.out.println("新闻定时任务---->结束"); } } /* * 新聞公告抓取 * */ @Scheduled(cron = "0 0/30 9-20 * * ?") public void ArtInfoTask() { // @Scheduled(cron = "0 0/30 9-20 * * ?") // public void ArtInfoTask() { // this.iSiteArticleService.grabArticle(); } // } } src/main/java/com/nq/utils/task/stock/CarryPositionTask.java
@@ -56,8 +56,13 @@ private final Lock subscriptionLock = new ReentrantLock(); boolean ballot = true; @Scheduled(cron = "0 0/10 * * * ?") public void ballot() { if (ballot) ballot = false; else return; if (ballotLock.tryLock()) { try { log.info("新股上市转持仓定时任务--------->开始"); @@ -83,14 +88,19 @@ log.error("新股上市转持仓定时任务发生异常", e); } finally { ballotLock.unlock(); ballot = true; } } else { log.info("新股上市转持仓定时任务--------->上次任务还未执行完成,本次任务忽略"); } } boolean subscription = true; @Scheduled(cron = "0 0/1 * * * ?") public void subscription() { if (subscription) subscription = false; else return; if (subscriptionLock.tryLock()) { try { log.info("自动转已认缴--------->开始"); @@ -108,6 +118,7 @@ log.error("自动转已认缴定时任务发生异常", e); } finally { subscriptionLock.unlock(); subscription = true; } } else { log.info("自动转已认缴定时任务--------->上次任务还未执行完成,本次任务忽略"); src/main/java/com/nq/utils/task/stock/StockTask.java
@@ -1,28 +1,27 @@ package com.nq.utils.task.stock; import cn.hutool.json.JSONUtil; import com.alibaba.fastjson2.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.google.gson.Gson; import com.nq.dao.*; import com.nq.dao.StockMapper; import com.nq.dao.UserPositionMapper; import com.nq.enums.EStockType; import com.nq.pojo.*; import com.nq.pojo.DataStockBean; import com.nq.pojo.ReponseBase; import com.nq.pojo.Stock; import com.nq.pojo.UserPosition; import com.nq.service.IMandatoryLiquidationService; import com.nq.service.IStockService; import com.nq.service.IUserPositionService; import com.nq.utils.http.HttpClientRequest; import com.nq.utils.redis.RedisKeyUtil; import com.nq.utils.redis.RedisShardedPoolUtils; import com.nq.utils.stock.BuyAndSellUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -46,41 +45,49 @@ private final Lock stockConstraintLock = new ReentrantLock(); @Autowired IMandatoryLiquidationService mandatoryLiquidationService; private static final Logger log = LoggerFactory.getLogger(StockTask.class); boolean syncINStockData = true; private final Lock syncINStockDataLock = new ReentrantLock(); /** * 同步系统所需要的股票 * */ */ @Scheduled(cron = "0 0 0/2 * * ?") public void syncINStockData() { if (syncINStockData) syncINStockData = false; else return; if (syncINStockDataLock.tryLock()) { try { loadAllStock(EStockType.IN); // loadAllStock(EStockType.HK); } finally { syncINStockDataLock.unlock(); syncINStockData = true; } } } /** * 同步美国股票 * */ */ // @Scheduled(cron = "0 0/30 * * * ?") public void loadStockCompanies(){ loadAllCompanies(); } /** * 加载公司信息 * */ */ public void loadAllCompanies(){ List<Stock> list = stockMapper.findStockList(); for (int i = 0; i <list.size() ; i++) { @@ -101,7 +108,7 @@ /** * 加载所有股票数据 * */ */ public void loadAllStock(EStockType eStockType){ log.info("同步股票 数据 {}",eStockType.getCode()); List<DataStockBean> list = new ArrayList<>(); @@ -163,11 +170,16 @@ } } boolean stockConstraint = true; /** * 强制平仓 */ @Scheduled(cron = "0/1 * * * * ?") public void stockConstraint(){ if (stockConstraint) stockConstraint = false; else return; if (stockConstraintLock.tryLock()) { try { List<UserPosition> userPositions = userPositionMapper.selectList(new LambdaQueryWrapper<UserPosition>().isNull(UserPosition::getSellOrderId)); @@ -179,6 +191,7 @@ log.error("强制平仓任务错误:" + e.getMessage()); } finally { stockConstraintLock.unlock(); stockConstraint = true; } } else { log.info("强制平仓任务--------->上次任务还未执行完成,本次任务忽略");