1
0

feat: 增加日线数据显示

This commit is contained in:
2025-09-16 07:49:51 +08:00
parent 596e3caa59
commit 17c96e96fc
6 changed files with 174 additions and 30 deletions

View File

@@ -7,6 +7,8 @@ import com.lanyuanxiaoyao.leopard.server.service.StockService;
import com.lanyuanxiaoyao.service.template.controller.GlobalResponse;
import com.lanyuanxiaoyao.service.template.controller.SimpleControllerSupport;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
import lombok.extern.slf4j.Slf4j;
@@ -94,11 +96,29 @@ public class StockController extends SimpleControllerSupport<Stock, Void, StockC
@GetMapping("finance/{id}/{field}")
public GlobalResponse<Map<String, Object>> financeCharts(@PathVariable("id") Long id, @PathVariable("field") String field) {
var data = stockService.findFinanceIndicatorRecent(id, 5);
return GlobalResponse.responseDetailData(
data.stream()
.map(item -> BeanUtil.getFieldValue(item, field))
.toList()
);
var xList = new ArrayList<Integer>();
var yList = new ArrayList<Object>();
for (var indicator : data) {
xList.add(indicator.getYear());
yList.add(BeanUtil.getFieldValue(indicator, field));
}
return GlobalResponse.responseMapData(Map.of(
"xList", xList, "yList", yList
));
}
@GetMapping("daily/{id}")
public GlobalResponse<Map<String, Object>> dailyCharts(@PathVariable("id") Long id) {
var data = stockService.findDailyRecent(id, 100);
var xList = new ArrayList<String>();
var yList = new ArrayList<List<Double>>();
for (var daily : data) {
xList.add(daily.getTradeDate().toString());
yList.add(List.of(daily.getOpen(), daily.getClose(), daily.getLow(), daily.getHigh()));
}
return GlobalResponse.responseMapData(Map.of(
"xList", xList, "yList", yList
));
}
@Override

View File

@@ -1,13 +0,0 @@
package com.lanyuanxiaoyao.leopard.server.service;
import com.lanyuanxiaoyao.leopard.core.entity.Daily;
import com.lanyuanxiaoyao.leopard.core.repository.DailyRepository;
import com.lanyuanxiaoyao.service.template.service.SimpleServiceSupport;
import org.springframework.stereotype.Service;
@Service
public class DailyService extends SimpleServiceSupport<Daily> {
public DailyService(DailyRepository repository) {
super(repository);
}
}

View File

@@ -1,9 +1,13 @@
package com.lanyuanxiaoyao.leopard.server.service;
import com.lanyuanxiaoyao.leopard.core.entity.Daily;
import com.lanyuanxiaoyao.leopard.core.entity.Daily_;
import com.lanyuanxiaoyao.leopard.core.entity.FinanceIndicator;
import com.lanyuanxiaoyao.leopard.core.entity.FinanceIndicator_;
import com.lanyuanxiaoyao.leopard.core.entity.QDaily;
import com.lanyuanxiaoyao.leopard.core.entity.QFinanceIndicator;
import com.lanyuanxiaoyao.leopard.core.entity.Stock;
import com.lanyuanxiaoyao.leopard.core.repository.DailyRepository;
import com.lanyuanxiaoyao.leopard.core.repository.FinanceIndicatorRepository;
import com.lanyuanxiaoyao.leopard.core.repository.StockRepository;
import com.lanyuanxiaoyao.service.template.service.SimpleServiceSupport;
@@ -23,12 +27,13 @@ import org.springframework.stereotype.Service;
public class StockService extends SimpleServiceSupport<Stock> {
private final StockRepository stockRepository;
private final FinanceIndicatorRepository financeIndicatorRepository;
private final DailyRepository dailyRepository;
public StockService(StockRepository repository, FinanceIndicatorRepository financeIndicatorRepository) {
public StockService(StockRepository repository, FinanceIndicatorRepository financeIndicatorRepository, DailyRepository dailyRepository) {
super(repository);
this.stockRepository = repository;
this.financeIndicatorRepository = financeIndicatorRepository;
this.dailyRepository = dailyRepository;
}
public Optional<FinanceIndicator> findFinanceIndicator(Long stockId, Integer year) {
@@ -46,4 +51,13 @@ public class StockService extends SimpleServiceSupport<Stock> {
Sort.by(Sort.Direction.ASC, FinanceIndicator_.YEAR)
);
}
public List<Daily> findDailyRecent(Long stockId, int days) {
var current = LocalDate.now();
return dailyRepository.findAll(
QDaily.daily.stock.id.eq(stockId)
.and(QDaily.daily.tradeDate.between(current.minusDays(days), current)),
Sort.by(Sort.Direction.ASC, Daily_.TRADE_DATE)
);
}
}

View File

@@ -28,7 +28,7 @@
</appender>
<logger name="com.zaxxer.hikari" level="ERROR"/>
<!--<logger name="org.hibernate.SQL" level="DEBUG"/>-->
<logger name="org.hibernate.SQL" level="DEBUG"/>
<root level="INFO">
<appender-ref ref="Console"/>