diff --git a/.idea/data_source_mapping.xml b/.idea/data_source_mapping.xml index 00c2913..e3e899c 100644 --- a/.idea/data_source_mapping.xml +++ b/.idea/data_source_mapping.xml @@ -1,6 +1,7 @@ + \ No newline at end of file diff --git a/leopard-server/src/main/java/com/lanyuanxiaoyao/leopard/server/controller/CommonOptionsController.java b/leopard-server/src/main/java/com/lanyuanxiaoyao/leopard/server/controller/CommonOptionsController.java index 4c90268..20c7a36 100644 --- a/leopard-server/src/main/java/com/lanyuanxiaoyao/leopard/server/controller/CommonOptionsController.java +++ b/leopard-server/src/main/java/com/lanyuanxiaoyao/leopard/server/controller/CommonOptionsController.java @@ -2,7 +2,7 @@ package com.lanyuanxiaoyao.leopard.server.controller; import com.lanyuanxiaoyao.leopard.core.entity.Stock; import com.lanyuanxiaoyao.leopard.core.entity.Task; -import com.lanyuanxiaoyao.leopard.server.service.StockService; +import com.lanyuanxiaoyao.leopard.core.repository.StockRepository; import com.lanyuanxiaoyao.leopard.server.service.TaskTemplateService; import com.lanyuanxiaoyao.service.template.controller.GlobalResponse; import java.util.Arrays; @@ -86,11 +86,11 @@ public class CommonOptionsController { "bg-pink-900" ); - private final StockService stockService; + private final StockRepository stockRepository; private final TaskTemplateService taskTemplateService; - public CommonOptionsController(StockService stockService, TaskTemplateService taskTemplateService) { - this.stockService = stockService; + public CommonOptionsController(StockRepository stockRepository, TaskTemplateService taskTemplateService) { + this.stockRepository = stockRepository; this.taskTemplateService = taskTemplateService; } @@ -103,7 +103,7 @@ public class CommonOptionsController { .toList() ); case "stock_industry" -> GlobalResponse.responseSuccess( - stockService.findDistinctIndustries() + stockRepository.findDistinctIndustries() .stream() .map(industry -> new Option(industry, industry)) .toList() diff --git a/leopard-server/src/main/java/com/lanyuanxiaoyao/leopard/server/service/DailyService.java b/leopard-server/src/main/java/com/lanyuanxiaoyao/leopard/server/service/DailyService.java index dec020e..0d8db97 100644 --- a/leopard-server/src/main/java/com/lanyuanxiaoyao/leopard/server/service/DailyService.java +++ b/leopard-server/src/main/java/com/lanyuanxiaoyao/leopard/server/service/DailyService.java @@ -3,24 +3,11 @@ 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 java.time.LocalDate; -import java.util.List; import org.springframework.stereotype.Service; @Service public class DailyService extends SimpleServiceSupport { - private final DailyRepository dailyRepository; - public DailyService(DailyRepository repository) { super(repository); - this.dailyRepository = repository; - } - - public List findDistinctTradeDate() { - return dailyRepository.findDistinctTradeDate(); - } - - public List findDistinctTradeDateByStockId(Long stockId) { - return dailyRepository.findDistinctTradeDateByStockId(stockId); } } diff --git a/leopard-server/src/main/java/com/lanyuanxiaoyao/leopard/server/service/task/CheckDailyNode.java b/leopard-server/src/main/java/com/lanyuanxiaoyao/leopard/server/service/task/CheckDailyNode.java index a52e727..737f775 100644 --- a/leopard-server/src/main/java/com/lanyuanxiaoyao/leopard/server/service/task/CheckDailyNode.java +++ b/leopard-server/src/main/java/com/lanyuanxiaoyao/leopard/server/service/task/CheckDailyNode.java @@ -4,8 +4,8 @@ import cn.hutool.core.thread.ThreadUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.lanyuanxiaoyao.leopard.core.entity.Stock; -import com.lanyuanxiaoyao.leopard.server.service.DailyService; -import com.lanyuanxiaoyao.leopard.server.service.StockService; +import com.lanyuanxiaoyao.leopard.core.repository.DailyRepository; +import com.lanyuanxiaoyao.leopard.core.repository.StockRepository; import com.lanyuanxiaoyao.leopard.server.service.TaskService; import com.lanyuanxiaoyao.leopard.server.service.TuShareService; import com.yomahub.liteflow.annotation.LiteflowComponent; @@ -18,21 +18,22 @@ import lombok.extern.slf4j.Slf4j; @Slf4j @LiteflowComponent("check_daily") public class CheckDailyNode extends TaskNodeComponent { - private final StockService stockService; - private final DailyService dailyService; + private final StockRepository stockRepository; + private final DailyRepository dailyRepository; + private final TuShareService tuShareService; - public CheckDailyNode(TaskService taskService, StockService stockService, DailyService dailyService, TuShareService tuShareService) { + public CheckDailyNode(TaskService taskService, StockRepository stockRepository, DailyRepository dailyRepository, TuShareService tuShareService) { super(taskService); - this.stockService = stockService; - this.dailyService = dailyService; + this.stockRepository = stockRepository; + this.dailyRepository = dailyRepository; this.tuShareService = tuShareService; } @Override public void process() { var reports = new ArrayList(); - var stocks = stockService.list(); + var stocks = stockRepository.findAll(); var exchanges = stocks.stream().map(Stock::getMarket).distinct().toList(); for (Stock.Market exchange : exchanges) { var nowDate = LocalDate.now(); @@ -48,7 +49,7 @@ public class CheckDailyNode extends TaskNodeComponent { for (Stock stock : stocks) { log.info("正在处理:{} {}", stock.getCode(), stock.getName()); if (exchange.equals(stock.getMarket())) { - var existsTradeDates = dailyService.findDistinctTradeDateByStockId(stock.getId()); + var existsTradeDates = dailyRepository.findDistinctTradeDateByStockId(stock.getId()); var missedTradeDates = allTradeDates.stream() .filter(date -> date.isAfter(stock.getListedDate()) || date.isEqual(stock.getListedDate())) .filter(date -> !existsTradeDates.contains(date)) diff --git a/leopard-server/src/main/java/com/lanyuanxiaoyao/leopard/server/service/task/UpdateDailyNode.java b/leopard-server/src/main/java/com/lanyuanxiaoyao/leopard/server/service/task/UpdateDailyNode.java index ff757be..deadf7e 100644 --- a/leopard-server/src/main/java/com/lanyuanxiaoyao/leopard/server/service/task/UpdateDailyNode.java +++ b/leopard-server/src/main/java/com/lanyuanxiaoyao/leopard/server/service/task/UpdateDailyNode.java @@ -4,8 +4,8 @@ import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.lanyuanxiaoyao.leopard.core.entity.Daily; import com.lanyuanxiaoyao.leopard.core.entity.Stock; -import com.lanyuanxiaoyao.leopard.server.service.DailyService; -import com.lanyuanxiaoyao.leopard.server.service.StockService; +import com.lanyuanxiaoyao.leopard.core.repository.DailyRepository; +import com.lanyuanxiaoyao.leopard.core.repository.StockRepository; import com.lanyuanxiaoyao.leopard.server.service.TuShareService; import com.yomahub.liteflow.annotation.LiteflowComponent; import com.yomahub.liteflow.core.NodeComponent; @@ -20,14 +20,16 @@ import org.springframework.transaction.support.TransactionTemplate; @Slf4j @LiteflowComponent("update_daily") public class UpdateDailyNode extends NodeComponent { - private final StockService stockService; - private final DailyService dailyService; + private final StockRepository stockRepository; + private final DailyRepository dailyRepository; + private final TuShareService tuShareService; + private final TransactionTemplate transactionTemplate; - public UpdateDailyNode(StockService stockService, DailyService dailyService, TuShareService tuShareService, TransactionTemplate transactionTemplate) { - this.stockService = stockService; - this.dailyService = dailyService; + public UpdateDailyNode(StockRepository stockRepository, DailyRepository dailyRepository, TuShareService tuShareService, TransactionTemplate transactionTemplate) { + this.stockRepository = stockRepository; + this.dailyRepository = dailyRepository; this.tuShareService = tuShareService; this.transactionTemplate = transactionTemplate; } @@ -44,9 +46,9 @@ public class UpdateDailyNode extends NodeComponent { } } } - var existsTradeDates = dailyService.findDistinctTradeDate(); + var existsTradeDates = dailyRepository.findDistinctTradeDate(); var nowDate = LocalDate.now(); - var stocks = stockService.list(); + var stocks = stockRepository.findAll(); var stocksMap = stocks.stream().collect(Collectors.toMap(Stock::getCode, stock -> stock)); tradeDates.stream() .filter(date -> date.isBefore(nowDate) || date.isEqual(nowDate)) @@ -83,7 +85,7 @@ public class UpdateDailyNode extends NodeComponent { daily.setTurnover(item.get(10) == null ? null : Double.parseDouble(item.get(10)) * 1000); daily.setFactor(factor); daily.setStock(stock); - dailyService.save(daily); + dailyRepository.save(daily); } } log.info("Trade date: {} {}", tradeDate, count); diff --git a/leopard-server/src/main/java/com/lanyuanxiaoyao/leopard/server/service/task/UpdateFinanceNode.java b/leopard-server/src/main/java/com/lanyuanxiaoyao/leopard/server/service/task/UpdateFinanceNode.java index 92dce75..df1380a 100644 --- a/leopard-server/src/main/java/com/lanyuanxiaoyao/leopard/server/service/task/UpdateFinanceNode.java +++ b/leopard-server/src/main/java/com/lanyuanxiaoyao/leopard/server/service/task/UpdateFinanceNode.java @@ -1,8 +1,12 @@ package com.lanyuanxiaoyao.leopard.server.service.task; +import cn.hutool.core.util.NumberUtil; import com.lanyuanxiaoyao.leopard.core.entity.BalanceSheet; import com.lanyuanxiaoyao.leopard.core.entity.CashFlow; import com.lanyuanxiaoyao.leopard.core.entity.Income; +import com.lanyuanxiaoyao.leopard.core.entity.QBalanceSheet; +import com.lanyuanxiaoyao.leopard.core.entity.QCashFlow; +import com.lanyuanxiaoyao.leopard.core.entity.QIncome; import com.lanyuanxiaoyao.leopard.core.entity.Stock; import com.lanyuanxiaoyao.leopard.core.repository.BalanceSheetRepository; import com.lanyuanxiaoyao.leopard.core.repository.CashFlowRepository; @@ -25,20 +29,20 @@ import lombok.extern.slf4j.Slf4j; @Slf4j @LiteflowComponent("update_finance") public class UpdateFinanceNode extends TaskNodeComponent { - private final TuShareService tuShareService; - private final StockRepository stockRepository; private final IncomeRepository incomeRepository; private final BalanceSheetRepository balanceSheetRepository; private final CashFlowRepository cashFlowRepository; - public UpdateFinanceNode(TaskService taskService, TuShareService tuShareService, StockRepository stockRepository, IncomeRepository incomeRepository, BalanceSheetRepository balanceSheetRepository, CashFlowRepository cashFlowRepository) { + private final TuShareService tuShareService; + + public UpdateFinanceNode(TaskService taskService, StockRepository stockRepository, IncomeRepository incomeRepository, BalanceSheetRepository balanceSheetRepository, CashFlowRepository cashFlowRepository, TuShareService tuShareService) { super(taskService); - this.tuShareService = tuShareService; this.stockRepository = stockRepository; this.incomeRepository = incomeRepository; this.balanceSheetRepository = balanceSheetRepository; this.cashFlowRepository = cashFlowRepository; + this.tuShareService = tuShareService; } @Override @@ -47,7 +51,6 @@ public class UpdateFinanceNode extends TaskNodeComponent { var stocksMap = stocks.stream().collect(Collectors.toMap(Stock::getCode, stock -> stock)); var currentYear = LocalDate.now().getYear(); for (int year = 1990; year < currentYear; year++) { - var response = tuShareService.incomeList(year); for (List item : response.data().items()) { var code = item.get(0); @@ -55,36 +58,38 @@ public class UpdateFinanceNode extends TaskNodeComponent { continue; } var stock = stocksMap.get(code); - var income = new Income(); + var income = incomeRepository.findOne( + QIncome.income.year.eq(year) + .and(QIncome.income.stock.code.eq(stock.getCode())) + ).orElse(new Income()); income.setStock(stock); income.setYear(year); - income.setBasicEarningsPerShare(Double.parseDouble(item.get(1))); - income.setDilutedEarningsPerShare(Double.parseDouble(item.get(2))); - income.setTotalOperatingRevenue(Double.parseDouble(item.get(3))); - income.setOperatingRevenue(Double.parseDouble(item.get(4))); - income.setTotalOperatingCost(Double.parseDouble(item.get(5))); - income.setOperatingCost(Double.parseDouble(item.get(6))); - income.setSellingExpense(Double.parseDouble(item.get(7))); - income.setAdministrativeExpense(Double.parseDouble(item.get(8))); - income.setFinancialExpense(Double.parseDouble(item.get(9))); - income.setOperatingExpense(Double.parseDouble(item.get(10))); - income.setOperatingProfit(Double.parseDouble(item.get(11))); - income.setAddNonOperatingIncome(Double.parseDouble(item.get(12))); - income.setLessNonOperatingExpense(Double.parseDouble(item.get(13))); - income.setTotalProfit(Double.parseDouble(item.get(14))); - income.setIncomeTaxExpense(Double.parseDouble(item.get(15))); - income.setNetProfitIncludingMinorityInterest(Double.parseDouble(item.get(16))); - income.setNetProfitExcludingMinorityInterest(Double.parseDouble(item.get(17))); - income.setComprehensiveIncomeAttributableToParent(Double.parseDouble(item.get(18))); - income.setComprehensiveIncomeAttributableToMinorityShareholders(Double.parseDouble(item.get(19))); - income.setEarningsBeforeInterestAndTax(Double.parseDouble(item.get(20))); - income.setEarningsBeforeInterestTaxDepreciationAndAmortization(Double.parseDouble(item.get(21))); - income.setBeginningUndistributedProfit(Double.parseDouble(item.get(22))); - income.setDistributableProfit(Double.parseDouble(item.get(23))); - income.setResearchAndDevelopmentExpense(Double.parseDouble(item.get(24))); - income.setFinancialExpenseInterestExpense(Double.parseDouble(item.get(25))); - income.setNetProfitFromContinuingOperations(Double.parseDouble(item.get(26))); - income.setNetProfitFromDiscontinuedOperations(Double.parseDouble(item.get(27))); + income.setBasicEarningsPerShare(NumberUtil.parseDouble(item.get(1), null)); + income.setDilutedEarningsPerShare(NumberUtil.parseDouble(item.get(2), null)); + income.setTotalOperatingRevenue(NumberUtil.parseDouble(item.get(3), null)); + income.setOperatingRevenue(NumberUtil.parseDouble(item.get(4), null)); + income.setTotalOperatingCost(NumberUtil.parseDouble(item.get(5), null)); + income.setOperatingCost(NumberUtil.parseDouble(item.get(6), null)); + income.setSellingExpense(NumberUtil.parseDouble(item.get(7), null)); + income.setAdministrativeExpense(NumberUtil.parseDouble(item.get(8), null)); + income.setFinancialExpense(NumberUtil.parseDouble(item.get(9), null)); + income.setOperatingExpense(NumberUtil.parseDouble(item.get(10), null)); + income.setOperatingProfit(NumberUtil.parseDouble(item.get(11), null)); + income.setAddNonOperatingIncome(NumberUtil.parseDouble(item.get(12), null)); + income.setLessNonOperatingExpense(NumberUtil.parseDouble(item.get(13), null)); + income.setTotalProfit(NumberUtil.parseDouble(item.get(14), null)); + income.setIncomeTaxExpense(NumberUtil.parseDouble(item.get(15), null)); + income.setNetProfitIncludingMinorityInterest(NumberUtil.parseDouble(item.get(16), null)); + income.setNetProfitExcludingMinorityInterest(NumberUtil.parseDouble(item.get(17), null)); + income.setComprehensiveIncomeAttributableToParent(NumberUtil.parseDouble(item.get(18), null)); + income.setComprehensiveIncomeAttributableToMinorityShareholders(NumberUtil.parseDouble(item.get(19), null)); + income.setEarningsBeforeInterestAndTax(NumberUtil.parseDouble(item.get(20), null)); + income.setBeginningUndistributedProfit(NumberUtil.parseDouble(item.get(21), null)); + income.setDistributableProfit(NumberUtil.parseDouble(item.get(22), null)); + income.setResearchAndDevelopmentExpense(NumberUtil.parseDouble(item.get(23), null)); + income.setFinancialExpenseInterestExpense(NumberUtil.parseDouble(item.get(24), null)); + income.setNetProfitFromContinuingOperations(NumberUtil.parseDouble(item.get(25), null)); + income.setNetProfitFromDiscontinuedOperations(NumberUtil.parseDouble(item.get(26), null)); incomeRepository.save(income); } @@ -95,39 +100,42 @@ public class UpdateFinanceNode extends TaskNodeComponent { continue; } var stock = stocksMap.get(code); - var balanceSheet = new BalanceSheet(); + var balanceSheet = balanceSheetRepository.findOne( + QBalanceSheet.balanceSheet.year.eq(year) + .and(QBalanceSheet.balanceSheet.stock.code.eq(stock.getCode())) + ).orElse(new BalanceSheet()); balanceSheet.setStock(stock); balanceSheet.setYear(year); - balanceSheet.setEndingTotalShares(Double.parseDouble(item.get(1))); - balanceSheet.setCapitalSurplus(Double.parseDouble(item.get(2))); - balanceSheet.setUndistributedProfit(Double.parseDouble(item.get(3))); - balanceSheet.setMonetaryFunds(Double.parseDouble(item.get(4))); - balanceSheet.setAccountsReceivable(Double.parseDouble(item.get(5))); - balanceSheet.setInventories(Double.parseDouble(item.get(6))); - balanceSheet.setTotalCurrentAssets(Double.parseDouble(item.get(7))); - balanceSheet.setLongTermEquityInvestments(Double.parseDouble(item.get(8))); - balanceSheet.setLongTermReceivables(Double.parseDouble(item.get(9))); - balanceSheet.setFixedAssets(Double.parseDouble(item.get(10))); - balanceSheet.setResearchAndDevelopmentExpenditures(Double.parseDouble(item.get(11))); - balanceSheet.setGoodwill(Double.parseDouble(item.get(12))); - balanceSheet.setTotalNonCurrentAssets(Double.parseDouble(item.get(13))); - balanceSheet.setTotalAssets(Double.parseDouble(item.get(14))); - balanceSheet.setLongTermBorrowings(Double.parseDouble(item.get(15))); - balanceSheet.setShortTermBorrowings(Double.parseDouble(item.get(16))); - balanceSheet.setAccountsPayable(Double.parseDouble(item.get(17))); - balanceSheet.setAdvancesReceived(Double.parseDouble(item.get(18))); - balanceSheet.setTotalCurrentLiabilities(Double.parseDouble(item.get(19))); - balanceSheet.setTotalNonCurrentLiabilities(Double.parseDouble(item.get(20))); - balanceSheet.setTotalLiabilities(Double.parseDouble(item.get(21))); - balanceSheet.setTotalShareholdersEquityExcludingMinorityInterest(Double.parseDouble(item.get(22))); - balanceSheet.setTotalShareholdersEquityIncludingMinorityInterest(Double.parseDouble(item.get(23))); - balanceSheet.setTotalLiabilitiesAndShareholdersEquity(Double.parseDouble(item.get(24))); - balanceSheet.setAccountsReceivable(Double.parseDouble(item.get(25))); - balanceSheet.setPayables(Double.parseDouble(item.get(26))); - balanceSheet.setNotesAndAccountsReceivable(Double.parseDouble(item.get(27))); - balanceSheet.setNotesAndAccountsPayable(Double.parseDouble(item.get(28))); - balanceSheet.setOtherReceivablesTotal(Double.parseDouble(item.get(29))); - balanceSheet.setFixedAssetsTotal(Double.parseDouble(item.get(30))); + balanceSheet.setEndingTotalShares(NumberUtil.parseDouble(item.get(1), null)); + balanceSheet.setCapitalSurplus(NumberUtil.parseDouble(item.get(2), null)); + balanceSheet.setUndistributedProfit(NumberUtil.parseDouble(item.get(3), null)); + balanceSheet.setMonetaryFunds(NumberUtil.parseDouble(item.get(4), null)); + balanceSheet.setAccountsReceivable(NumberUtil.parseDouble(item.get(5), null)); + balanceSheet.setInventories(NumberUtil.parseDouble(item.get(6), null)); + balanceSheet.setTotalCurrentAssets(NumberUtil.parseDouble(item.get(7), null)); + balanceSheet.setLongTermEquityInvestments(NumberUtil.parseDouble(item.get(8), null)); + balanceSheet.setLongTermReceivables(NumberUtil.parseDouble(item.get(9), null)); + balanceSheet.setFixedAssets(NumberUtil.parseDouble(item.get(10), null)); + balanceSheet.setResearchAndDevelopmentExpenditures(NumberUtil.parseDouble(item.get(11), null)); + balanceSheet.setGoodwill(NumberUtil.parseDouble(item.get(12), null)); + balanceSheet.setTotalNonCurrentAssets(NumberUtil.parseDouble(item.get(13), null)); + balanceSheet.setTotalAssets(NumberUtil.parseDouble(item.get(14), null)); + balanceSheet.setLongTermBorrowings(NumberUtil.parseDouble(item.get(15), null)); + balanceSheet.setShortTermBorrowings(NumberUtil.parseDouble(item.get(16), null)); + balanceSheet.setAccountsPayable(NumberUtil.parseDouble(item.get(17), null)); + balanceSheet.setAdvancesReceived(NumberUtil.parseDouble(item.get(18), null)); + balanceSheet.setTotalCurrentLiabilities(NumberUtil.parseDouble(item.get(19), null)); + balanceSheet.setTotalNonCurrentLiabilities(NumberUtil.parseDouble(item.get(20), null)); + balanceSheet.setTotalLiabilities(NumberUtil.parseDouble(item.get(21), null)); + balanceSheet.setTotalShareholdersEquityExcludingMinorityInterest(NumberUtil.parseDouble(item.get(22), null)); + balanceSheet.setTotalShareholdersEquityIncludingMinorityInterest(NumberUtil.parseDouble(item.get(23), null)); + balanceSheet.setTotalLiabilitiesAndShareholdersEquity(NumberUtil.parseDouble(item.get(24), null)); + balanceSheet.setAccountsReceivable(NumberUtil.parseDouble(item.get(25), null)); + balanceSheet.setPayables(NumberUtil.parseDouble(item.get(26), null)); + balanceSheet.setNotesAndAccountsReceivable(NumberUtil.parseDouble(item.get(27), null)); + balanceSheet.setNotesAndAccountsPayable(NumberUtil.parseDouble(item.get(28), null)); + balanceSheet.setOtherReceivablesTotal(NumberUtil.parseDouble(item.get(29), null)); + balanceSheet.setFixedAssetsTotal(NumberUtil.parseDouble(item.get(30), null)); balanceSheetRepository.save(balanceSheet); } @@ -138,21 +146,25 @@ public class UpdateFinanceNode extends TaskNodeComponent { continue; } var stock = stocksMap.get(code); - var cashFlow = new CashFlow(); + var cashFlow = cashFlowRepository.findOne( + QCashFlow.cashFlow.year.eq(year) + .and(QCashFlow.cashFlow.stock.code.eq(stock.getCode())) + ).orElse(new CashFlow()); + NumberUtil.parseDouble(item.get(1), null); cashFlow.setStock(stock); cashFlow.setYear(year); - cashFlow.setNetProfit(Double.parseDouble(item.get(1))); - cashFlow.setFinancialExpense(Double.parseDouble(item.get(2))); - cashFlow.setCashReceivedFromSalesAndServices(Double.parseDouble(item.get(3))); - cashFlow.setSubtotalOfCashInflowsFromOperatingActivities(Double.parseDouble(item.get(4))); - cashFlow.setCashPaidToAndForEmployees(Double.parseDouble(item.get(5))); - cashFlow.setCashPaidForVariousTaxes(Double.parseDouble(item.get(6))); - cashFlow.setNetCashFlowFromOperatingActivities(Double.parseDouble(item.get(7))); - cashFlow.setSubtotalOfCashInflowsFromInvestingActivities(Double.parseDouble(item.get(8))); - cashFlow.setCashPaidForAcquisitionOfFixedIntangibleAndOtherLongTermAssets(Double.parseDouble(item.get(9))); - cashFlow.setSubtotalOfCashOutflowsFromInvestingActivities(Double.parseDouble(item.get(10))); - cashFlow.setSubtotalOfCashOutflowsFromFinancingActivities(Double.parseDouble(item.get(11))); - cashFlow.setBeginningBalanceOfCashAndCashEquivalents(Double.parseDouble(item.get(12))); + cashFlow.setNetProfit(NumberUtil.parseDouble(item.get(1), null)); + cashFlow.setFinancialExpense(NumberUtil.parseDouble(item.get(2), null)); + cashFlow.setCashReceivedFromSalesAndServices(NumberUtil.parseDouble(item.get(3), null)); + cashFlow.setSubtotalOfCashInflowsFromOperatingActivities(NumberUtil.parseDouble(item.get(4), null)); + cashFlow.setCashPaidToAndForEmployees(NumberUtil.parseDouble(item.get(5), null)); + cashFlow.setCashPaidForVariousTaxes(NumberUtil.parseDouble(item.get(6), null)); + cashFlow.setNetCashFlowFromOperatingActivities(NumberUtil.parseDouble(item.get(7), null)); + cashFlow.setSubtotalOfCashInflowsFromInvestingActivities(NumberUtil.parseDouble(item.get(8), null)); + cashFlow.setCashPaidForLongTermAssets(NumberUtil.parseDouble(item.get(9), null)); + cashFlow.setSubtotalOfCashOutflowsFromInvestingActivities(NumberUtil.parseDouble(item.get(10), null)); + cashFlow.setSubtotalOfCashOutflowsFromFinancingActivities(NumberUtil.parseDouble(item.get(11), null)); + cashFlow.setBeginningBalanceOfCashAndCashEquivalents(NumberUtil.parseDouble(item.get(12), null)); cashFlowRepository.save(cashFlow); } diff --git a/leopard-server/src/main/java/com/lanyuanxiaoyao/leopard/server/service/task/UpdateStockNode.java b/leopard-server/src/main/java/com/lanyuanxiaoyao/leopard/server/service/task/UpdateStockNode.java index 4040957..208e02a 100644 --- a/leopard-server/src/main/java/com/lanyuanxiaoyao/leopard/server/service/task/UpdateStockNode.java +++ b/leopard-server/src/main/java/com/lanyuanxiaoyao/leopard/server/service/task/UpdateStockNode.java @@ -2,7 +2,7 @@ package com.lanyuanxiaoyao.leopard.server.service.task; import cn.hutool.core.util.EnumUtil; import com.lanyuanxiaoyao.leopard.core.entity.Stock; -import com.lanyuanxiaoyao.leopard.server.service.StockService; +import com.lanyuanxiaoyao.leopard.core.repository.StockRepository; import com.lanyuanxiaoyao.leopard.server.service.TuShareService; import com.yomahub.liteflow.annotation.LiteflowComponent; import com.yomahub.liteflow.core.NodeComponent; @@ -13,18 +13,19 @@ import java.util.stream.Collectors; @LiteflowComponent("update_stock") public class UpdateStockNode extends NodeComponent { - private final StockService stockService; + private final StockRepository stockRepository; + private final TuShareService tuShareService; - public UpdateStockNode(StockService stockService, TuShareService tuShareService) { - this.stockService = stockService; + public UpdateStockNode(StockRepository stockRepository, TuShareService tuShareService) { + this.stockRepository = stockRepository; this.tuShareService = tuShareService; } @Transactional(rollbackOn = Throwable.class) @Override public void process() { - var stocks = stockService.list(); + var stocks = stockRepository.findAll(); var stocksMap = stocks.stream().collect(Collectors.toMap(Stock::getCode, stock -> stock)); var targetCodes = new HashSet(); tuShareService.stockList() @@ -60,8 +61,8 @@ public class UpdateStockNode extends NodeComponent { .filter(stock -> !targetCodes.contains(stock.getCode())) .map(Stock::getId) .toList(); - stockService.remove(deleteStocks); + stockRepository.deleteByIds(deleteStocks); - stockService.save(stocks); + stockRepository.saveAll(stocks); } } diff --git a/leopard-server/src/main/resources/application.yml b/leopard-server/src/main/resources/application.yml index d2b3611..a51f1e7 100644 --- a/leopard-server/src/main/resources/application.yml +++ b/leopard-server/src/main/resources/application.yml @@ -9,12 +9,9 @@ spring: async: request-timeout: 3600000 datasource: - # url: jdbc:mysql://mysql.lanyuanxiaoyao.com:43780/leopard?useSSL=false - # url: jdbc:mysql://192.168.31.127:3780/leopard?useSSL=false url: jdbc:postgresql://81.71.3.24:6785/leopard_dev username: leopard password: '9NEzFzovnddf@PyEP?e*AYAWnCyd7UhYwQK$pJf>7?ccFiN^x4$eKEZ5~E<7<+~X' - # driver-class-name: com.mysql.cj.jdbc.Driver driver-class-name: org.postgresql.Driver jpa: generate-ddl: true diff --git a/leopard-server/src/main/resources/flow.xml b/leopard-server/src/main/resources/flow.xml deleted file mode 100644 index ef5e818..0000000 --- a/leopard-server/src/main/resources/flow.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - CATCH(THEN(task_start, update_stock, task_end)).DO(task_error) - - - CATCH(THEN(task_start, update_daily, task_end)).DO(task_error) - - - CATCH(THEN(task_start, check_daily, task_end)).DO(task_error) - -