|
|
|
@ -17,8 +17,8 @@ import org.springframework.transaction.annotation.Transactional;
|
|
|
|
import com.ruoyi.newstocksystem.domain.TIndustryBasic;
|
|
|
|
import com.ruoyi.newstocksystem.domain.TIndustryBasic;
|
|
|
|
import com.ruoyi.newstocksystem.domain.TStockBasic;
|
|
|
|
import com.ruoyi.newstocksystem.domain.TStockBasic;
|
|
|
|
import com.ruoyi.newstocksystem.domain.TStockDailyTrade;
|
|
|
|
import com.ruoyi.newstocksystem.domain.TStockDailyTrade;
|
|
|
|
import com.ruoyi.newstocksystem.mapper.TStockBasicMapper;
|
|
|
|
|
|
|
|
import com.ruoyi.newstocksystem.mapper.TStockDailyTradeMapper;
|
|
|
|
import com.ruoyi.newstocksystem.mapper.TStockDailyTradeMapper;
|
|
|
|
|
|
|
|
import com.ruoyi.newstocksystem.mapper.TTrendsMapper;
|
|
|
|
import com.ruoyi.newstocksystem.service.IIndustryIndexService;
|
|
|
|
import com.ruoyi.newstocksystem.service.IIndustryIndexService;
|
|
|
|
import com.ruoyi.newstocksystem.service.IStockBasicService;
|
|
|
|
import com.ruoyi.newstocksystem.service.IStockBasicService;
|
|
|
|
import com.ruoyi.newstocksystem.service.IStockDailyTradeService;
|
|
|
|
import com.ruoyi.newstocksystem.service.IStockDailyTradeService;
|
|
|
|
@ -37,6 +37,9 @@ public class StockDailyTradeServiceImpl implements IStockDailyTradeService
|
|
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
@Autowired
|
|
|
|
private TStockDailyTradeMapper stockDailyTradeMapper;
|
|
|
|
private TStockDailyTradeMapper stockDailyTradeMapper;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
|
|
|
private TTrendsMapper trendsMapper;
|
|
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
@Autowired
|
|
|
|
private IStockBasicService stockBasicService;
|
|
|
|
private IStockBasicService stockBasicService;
|
|
|
|
@ -386,25 +389,64 @@ public class StockDailyTradeServiceImpl implements IStockDailyTradeService
|
|
|
|
return stockDailyTradeMapper.selectLastTradeDate();
|
|
|
|
return stockDailyTradeMapper.selectLastTradeDate();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
|
|
|
public boolean checkTrendsExists(Date tradeDate)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
logger.info("检查指定日期是否存在趋势数据,交易日期: {}", tradeDate);
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
|
|
|
int count = trendsMapper.checkTrendsExistsByDate(tradeDate);
|
|
|
|
|
|
|
|
return count > 0;
|
|
|
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
|
|
|
logger.error("检查趋势数据存在性失败,交易日期: {}", tradeDate, e);
|
|
|
|
|
|
|
|
throw new RuntimeException("检查失败: " + e.getMessage());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* 检查指定日期是否存在交易数据
|
|
|
|
|
|
|
|
*
|
|
|
|
|
|
|
|
* @param tradeDate 交易日期
|
|
|
|
|
|
|
|
* @return 是否已存在交易数据
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
private boolean checkTradeDataExists(Date tradeDate)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
logger.info("检查指定日期是否存在交易数据,交易日期: {}", tradeDate);
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
|
|
|
int count = stockDailyTradeMapper.checkTradeDataExistsByDate(tradeDate);
|
|
|
|
|
|
|
|
return count > 0;
|
|
|
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
|
|
|
logger.error("检查交易数据存在性失败,交易日期: {}", tradeDate, e);
|
|
|
|
|
|
|
|
throw new RuntimeException("检查失败: " + e.getMessage());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
public String analysisStockData(TStockDailyTrade stockDailyTrade)
|
|
|
|
public String analysisStockData(TStockDailyTrade stockDailyTrade)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
logger.info("开始分析股票数据,交易日期: {}", stockDailyTrade.getTradeDate());
|
|
|
|
logger.info("开始分析股票数据,交易日期: {}", stockDailyTrade.getTradeDate());
|
|
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
try {
|
|
|
|
// 这里实现具体的分析逻辑,参考stocksystem的analysis方法
|
|
|
|
// 1. 先检查指定日期是否存在交易数据
|
|
|
|
|
|
|
|
if (!checkTradeDataExists(stockDailyTrade.getTradeDate())) {
|
|
|
|
|
|
|
|
logger.info("指定日期不存在交易数据,无法进行分析,交易日期: {}", stockDailyTrade.getTradeDate());
|
|
|
|
|
|
|
|
return "该日期不存在交易数据,无法进行分析";
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 2. 再检查指定日期是否已存在分析数据
|
|
|
|
|
|
|
|
if (checkTrendsExists(stockDailyTrade.getTradeDate())) {
|
|
|
|
|
|
|
|
logger.info("指定日期已存在分析数据,跳过分析,交易日期: {}", stockDailyTrade.getTradeDate());
|
|
|
|
|
|
|
|
return "该日期已存在分析数据,无需重复分析";
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 3. 这里实现具体的分析逻辑,参考stocksystem的analysis方法
|
|
|
|
// 目前先记录日志并返回成功
|
|
|
|
// 目前先记录日志并返回成功
|
|
|
|
|
|
|
|
|
|
|
|
// 1. 可以在这里添加分析逻辑,比如:
|
|
|
|
// 可以在这里添加分析逻辑,比如:
|
|
|
|
// - 更新涨跌幅数据
|
|
|
|
// - 更新涨跌幅数据
|
|
|
|
// - 计算动量指标
|
|
|
|
// - 计算动量指标
|
|
|
|
// - 生成技术分析结果
|
|
|
|
// - 生成技术分析结果
|
|
|
|
// - 其他业务逻辑
|
|
|
|
// - 其他业务逻辑
|
|
|
|
|
|
|
|
|
|
|
|
// 2. 示例:可以遍历当天数据,进行某些计算
|
|
|
|
|
|
|
|
// List<TStockDailyTrade> dailyTradeList = stockDailyTradeMapper.selectStockDailyTradeList(stockDailyTrade);
|
|
|
|
|
|
|
|
// 然后对这些数据进行分析处理
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
logger.info("股票数据分析完成,交易日期: {}", stockDailyTrade.getTradeDate());
|
|
|
|
logger.info("股票数据分析完成,交易日期: {}", stockDailyTrade.getTradeDate());
|
|
|
|
return "分析完成";
|
|
|
|
return "分析完成";
|
|
|
|
} catch (Exception e) {
|
|
|
|
} catch (Exception e) {
|
|
|
|
|