update top active
This commit is contained in:
@@ -12,6 +12,7 @@ import cn.stock.market.domain.basic.service.StockService;
|
||||
import cn.stock.market.dto.*;
|
||||
import cn.stock.market.dto.query.StockChartDto;
|
||||
import cn.stock.market.infrastructure.db.po.QMoneyStockPO;
|
||||
import cn.stock.market.infrastructure.db.po.QStockPO;
|
||||
import cn.stock.market.utils.HttpRequest;
|
||||
import cn.stock.market.utils.NseIndiaRequest;
|
||||
import cn.stock.market.utils.ServerResponse;
|
||||
@@ -643,43 +644,18 @@ public class MoneyApiController {
|
||||
@ResponseBody
|
||||
@EncryptFilter(decryptRequest = false)
|
||||
|
||||
public List<MoneyStockSuggestDTO> getTopActive(@RequestParam String stockType) {
|
||||
List<MoneyStockSuggestDTO> moneyStockSuggestDTOS = null;
|
||||
moneyStockSuggestDTOS = activesStockSuggestCache.getIfPresent(stockType);
|
||||
if (moneyStockSuggestDTOS == null) {
|
||||
if (StringUtils.equals(stockType, "nse")) {
|
||||
moneyStockSuggestDTOS = nseActives();
|
||||
} else if (StringUtils.equals(stockType, "bse")) {
|
||||
moneyStockSuggestDTOS = bseActives();
|
||||
}
|
||||
Map<Object, Boolean> map = new HashMap<>();
|
||||
moneyStockSuggestDTOS = moneyStockSuggestDTOS.stream()
|
||||
.filter(f -> StringUtils.isNotBlank(f.getStockName()))
|
||||
.filter(i -> map.putIfAbsent(i.getStockName(), Boolean.TRUE) == null).collect(Collectors.toList());
|
||||
if (CollectionUtils.isNotEmpty(moneyStockSuggestDTOS)) {
|
||||
moneyStockSuggestDTOS.stream().forEach(f -> f.setDispId(extractLastSegment(f.getStockUrl())));
|
||||
List<String> selfUlrList = moneyStockSuggestDTOS.stream().map(MoneyStockSuggestDTO::getStockName).collect(Collectors.toList());
|
||||
if (CollectionUtils.isNotEmpty(selfUlrList)) {
|
||||
List<MoneyStock> all = moneyStockRepository.findAll(QMoneyStockPO.moneyStockPO.stockName.in(selfUlrList));
|
||||
if (CollectionUtils.isNotEmpty(all)) {
|
||||
moneyStockSuggestDTOS.stream().filter(f -> all.stream().anyMatch(s -> s.getStockName().equals(f.getStockName())))
|
||||
.forEach(f -> f.setScId(all.stream().filter(s -> s.getStockName().equals(f.getStockName())).findFirst().orElse(null).getMoneyScId()));
|
||||
}
|
||||
List<MoneyStockSuggestDTO> noScIdList = moneyStockSuggestDTOS.stream().filter(f -> StringUtils.isBlank(f.getScId())).collect(Collectors.toList());
|
||||
if (CollectionUtils.isNotEmpty(noScIdList)) {
|
||||
List<String> dispIdList = noScIdList.stream().map(MoneyStockSuggestDTO::getDispId).collect(Collectors.toList());
|
||||
List<MoneyStock> all1 = moneyStockRepository.findAll(QMoneyStockPO.moneyStockPO.selfDispId.in(dispIdList));
|
||||
if (CollectionUtils.isNotEmpty(all1)) {
|
||||
moneyStockSuggestDTOS.stream().filter(f -> all1.stream().anyMatch(s -> s.getSelfDispId().equals(f.getDispId())))
|
||||
.forEach(f -> f.setScId(all.stream().filter(s -> s.getSelfDispId().equals(f.getDispId())).findFirst().orElse(null).getMoneyScId()));
|
||||
}
|
||||
}
|
||||
}
|
||||
activesStockSuggestCache.put(stockType, moneyStockSuggestDTOS);
|
||||
public List<StockQuoteData> getTopActive(@RequestParam String stockType) {
|
||||
List<String> topActiveCode = Arrays.asList("SAP","LIN","SIE","DTE","RHM","MUV2","SHL","DB1","MRK",
|
||||
"BMW", "VOW3", "DHL","ENI","BAS","HEI","ADS","CBK","TLX", "BAYN", "RWE");
|
||||
List<Stock> stocks = stockRepository.findAll(QStockPO.stockPO.stockCode.in(topActiveCode));
|
||||
List<StockQuoteData> stockQuoteDatas = moneyApiService.getStocksQuote(stocks);
|
||||
for (StockQuoteData stockQuoteData : stockQuoteDatas) {
|
||||
Stock name = stocks.stream().filter(e->e.getStockCode().equals(stockQuoteData.getSymbol())).findFirst().orElse(null);
|
||||
if (name != null) {
|
||||
stockQuoteData.setName(name.getStockName());
|
||||
}
|
||||
}
|
||||
|
||||
return moneyStockSuggestDTOS;
|
||||
return stockQuoteDatas;
|
||||
}
|
||||
|
||||
private static void addToListDouble(List<Double> list, String value) {
|
||||
|
||||
@@ -16,6 +16,7 @@ import org.springframework.web.client.RestTemplate;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Service
|
||||
public class MoneyApiService {
|
||||
@@ -97,6 +98,39 @@ public class MoneyApiService {
|
||||
return null;
|
||||
}
|
||||
|
||||
public List<StockQuoteData> getStocksQuote(List<Stock> stocks) {
|
||||
Config config = SpringUtils.getBean(Config.class);
|
||||
String codes = stocks.stream().map(e->e.getStockCode()).collect(Collectors.joining(","));
|
||||
|
||||
String url = config.getStockUrlPrefix() + "/api/ger-market/stocks/query-list?symbols=" + codes;
|
||||
|
||||
HttpHeaders headers = new HttpHeaders();
|
||||
headers.add("accept", "application/json, text/plain, */*");
|
||||
headers.add("accept-language", "en-US,en;q=0.9,vi;q=0.8");
|
||||
headers.add("origin", "https://moneytj.com");
|
||||
headers.add("referer", "https://moneytj.com/");
|
||||
headers.add("sec-ch-ua", "\"Google Chrome\";v=\"131\", \"Chromium\";v=\"131\", \"Not_A Brand\";v=\"24\"");
|
||||
headers.add("sec-ch-ua-mobile", "?0");
|
||||
headers.add("sec-ch-ua-platform", "\"Windows\"");
|
||||
headers.add("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36");
|
||||
|
||||
HttpEntity<String> entity = new HttpEntity<>(headers);
|
||||
RestTemplate restTemplate = new RestTemplate();
|
||||
|
||||
try {
|
||||
ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.GET, entity, String.class);
|
||||
ObjectMapper mapper = new ObjectMapper();
|
||||
StockQuoteResponse quoteResponse = mapper.readValue(response.getBody(), StockQuoteResponse.class);
|
||||
if (quoteResponse != null && quoteResponse.getData() != null && !quoteResponse.getData().isEmpty()) {
|
||||
return quoteResponse.getData();
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
private StockHistoryResponse convertToHistoryResponse(RawStockApiResponse apiResponse) {
|
||||
StockHistoryResponse response = new StockHistoryResponse();
|
||||
response.setS("ok");
|
||||
|
||||
Reference in New Issue
Block a user