1
0

fix: 修复year字段在不同数据库的表现

This commit is contained in:
2025-09-24 21:57:07 +08:00
parent a9b2561be1
commit 8011a4f2cb
5 changed files with 18 additions and 7 deletions

View File

@@ -1,6 +1,7 @@
package com.lanyuanxiaoyao.leopard.server.service.task;
import com.lanyuanxiaoyao.leopard.core.entity.Daily;
import com.lanyuanxiaoyao.leopard.core.entity.QDaily;
import com.lanyuanxiaoyao.leopard.core.entity.QYearly;
import com.lanyuanxiaoyao.leopard.core.entity.Yearly;
import com.lanyuanxiaoyao.leopard.core.repository.DailyRepository;
@@ -33,17 +34,21 @@ public class UpdateYearly extends TaskNodeComponent {
var startYear = dailyRepository.findMinTradeDate().getYear();
var endYear = dailyRepository.findMaxTradeDate().getYear();
var stocks = stockRepository.findAll();
for (var year = startYear; year <= endYear; year++) {
for (int year = startYear, index = 0; year <= endYear; year++, index++) {
var currentYear = year;
transactionTemplate.execute(status -> {
try {
for (var stock : stocks) {
log.info("Processing {} {}", stock.getCode(), currentYear);
if (stock.getListedDate().getYear() > currentYear) {
continue;
}
var dailies = dailyRepository.findAllByTradeDate_YearAndStock_Code(currentYear, stock.getCode());
var dailies = dailyRepository.findAll(
QDaily.daily.tradeDate.year().eq(currentYear)
.and(QDaily.daily.stock.eq(stock))
);
var yearly = yearlyRepository.findOne(
QYearly.yearly.stock.code.eq(stock.getCode())
QYearly.yearly.stock.eq(stock)
.and(QYearly.yearly.year.eq(currentYear))
).orElseGet(Yearly::new);
yearly.setStock(stock);
@@ -60,11 +65,12 @@ public class UpdateYearly extends TaskNodeComponent {
}
return true;
} catch (Exception exception) {
log.error("Error", exception);
log.error("Error for %s".formatted(currentYear), exception);
status.setRollbackOnly();
return false;
}
});
setStep((currentYear - startYear) * 100 / (endYear - startYear + 1));
}
}
}