fix: 修复year字段在不同数据库的表现
This commit is contained in:
@@ -78,6 +78,11 @@
|
||||
<artifactId>postgresql</artifactId>
|
||||
<scope>runtime</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.h2database</groupId>
|
||||
<artifactId>h2</artifactId>
|
||||
<scope>runtime</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user