Commit 00ec197d authored by liucx's avatar liucx

优化 只能新4个字段

parent 38646681
...@@ -138,6 +138,7 @@ public interface StockPositionService extends IService<StockPosition> { ...@@ -138,6 +138,7 @@ public interface StockPositionService extends IService<StockPosition> {
boolean selling(AccountProductRelation accountProductRelation, StockPosition stockPosition, String position, BigDecimal currentPrice, TradingStrategyParam tradingStrategyParam, UsAdmin usAdmin, Boolean isPresent, StockInputLogTrustSource trustSource); boolean selling(AccountProductRelation accountProductRelation, StockPosition stockPosition, String position, BigDecimal currentPrice, TradingStrategyParam tradingStrategyParam, UsAdmin usAdmin, Boolean isPresent, StockInputLogTrustSource trustSource);
MarketDetailsVO createMarketDetailsVO(MemberBase memberBase, List<StockPosition> stockPositions, BigDecimal funding, AccountProductRelation accountProductRelation, Long marketId); MarketDetailsVO createMarketDetailsVO(MemberBase memberBase, List<StockPosition> stockPositions, BigDecimal funding, AccountProductRelation accountProductRelation, Long marketId);
MarketDetailsVO createMarketDetailsVOTask( List<StockPosition> stockPositions, BigDecimal funding, AccountProductRelation accountProductRelation);
StockVO createStockVO(StockPosition stockPosition, Map<String, Quote> codeAndQuoteMapping); StockVO createStockVO(StockPosition stockPosition, Map<String, Quote> codeAndQuoteMapping);
......
...@@ -129,6 +129,7 @@ public interface SmartStockPositionService { ...@@ -129,6 +129,7 @@ public interface SmartStockPositionService {
SmartMarketDetailsVO createMarketDetailsVO(MemberBase memberBase, List<SmartStockPosition> stockPositions, BigDecimal funding, SmartAccountProductRelation accountProductRelation, Long marketId); SmartMarketDetailsVO createMarketDetailsVO(MemberBase memberBase, List<SmartStockPosition> stockPositions, BigDecimal funding, SmartAccountProductRelation accountProductRelation, Long marketId);
SmartMarketDetailsVO createMarketDetailsVOTask(List<SmartStockPosition> stockPositions, BigDecimal funding, SmartAccountProductRelation accountProductRelation);
SmartStockVO createStockVO(SmartStockPosition stockPosition, Map<String, Quote> codeAndQuoteMapping); SmartStockVO createStockVO(SmartStockPosition stockPosition, Map<String, Quote> codeAndQuoteMapping);
......
...@@ -1519,6 +1519,32 @@ public class StockPositionServiceImpl extends ServiceImpl<StockPositionMapper, S ...@@ -1519,6 +1519,32 @@ public class StockPositionServiceImpl extends ServiceImpl<StockPositionMapper, S
} }
return marketDetailsVO; return marketDetailsVO;
} }
@Override
public MarketDetailsVO createMarketDetailsVOTask( List<StockPosition> stockPositions, BigDecimal funding, AccountProductRelation accountProductRelation) {
MarketDetailsVO marketDetailsVO = new MarketDetailsVO();
List<String> codes = stockPositions.stream().map(StockPosition::getCode).collect(Collectors.toList());
//批量获取股票当前价格
Map<String, Quote> codeAndPriceMapping = stockCodeService.batchQueryStockPrice(codes);
//计算股票总市值(当前)
BigDecimal stocksTotalPrice = financeCalculateService.calculateTotalAssets(stockPositions, codeAndPriceMapping);
//计算总资产 剩余的钱+总市值
BigDecimal totalPrice = BigDecimalUtil.add(funding, stocksTotalPrice);
//计算仓位 总市值/总资产
BigDecimal position = BigDecimalUtil.div(stocksTotalPrice, totalPrice);
//盈亏比例
BigDecimal totalProfitRate = financeCalculateService.calculateProfitRate(totalPrice, accountProductRelation.getInitialFunding());
//总盈亏(股票当前市值和成本总值的差值)
BigDecimal totalProfit = financeCalculateService.calculateProfit(totalPrice, accountProductRelation.getInitialFunding());
marketDetailsVO.setPosition(position.toPlainString());
marketDetailsVO.setTotalPrice(totalPrice.toPlainString());
marketDetailsVO.setTotalProfit(totalProfit.toPlainString());
marketDetailsVO.setTotalProfitRate(totalProfitRate.toPlainString());
return marketDetailsVO;
}
@Transactional(propagation = Propagation.REQUIRED) @Transactional(propagation = Propagation.REQUIRED)
@Override @Override
......
...@@ -1356,6 +1356,30 @@ public class SmartStockPositionServiceImpl extends ServiceImpl<SmartStockPositio ...@@ -1356,6 +1356,30 @@ public class SmartStockPositionServiceImpl extends ServiceImpl<SmartStockPositio
} }
return marketDetailsVO; return marketDetailsVO;
} }
@Override
public SmartMarketDetailsVO createMarketDetailsVOTask( List<SmartStockPosition> stockPositions, BigDecimal funding, SmartAccountProductRelation accountProductRelation) {
SmartMarketDetailsVO marketDetailsVO = new SmartMarketDetailsVO();
List<String> codes = stockPositions.stream().map(SmartStockPosition::getCode).collect(Collectors.toList());
//批量获取股票当前价格
Map<String, Quote> codeAndPriceMapping = stockCodeService.batchQueryStockPrice(codes);
//计算股票总市值(当前)
BigDecimal stocksTotalPrice = smartFinanceCalculateService.calculateTotalAssets(stockPositions, codeAndPriceMapping);
//计算总值
BigDecimal totalPrice = BigDecimalUtil.add(funding, stocksTotalPrice);
//计算仓位
BigDecimal position = BigDecimalUtil.div(stocksTotalPrice, totalPrice);
//盈亏比例
BigDecimal totalProfitRate = smartFinanceCalculateService.calculateProfitRate(totalPrice, accountProductRelation.getInitialFunding());
//总盈亏(股票当前市值和成本总值的差值)
BigDecimal totalProfit = smartFinanceCalculateService.calculateProfit(totalPrice, accountProductRelation.getInitialFunding());
marketDetailsVO.setPosition(position.toPlainString());
marketDetailsVO.setAvailableFunding(funding.toPlainString());
marketDetailsVO.setTotalPrice(totalPrice.toPlainString());
marketDetailsVO.setTotalProfit(totalProfit.toPlainString());
marketDetailsVO.setTotalProfitRate(totalProfitRate.toPlainString());
return marketDetailsVO;
}
@Override @Override
public List<SmartStockPosition> getCode(Long id) { public List<SmartStockPosition> getCode(Long id) {
......
...@@ -167,18 +167,20 @@ public class SmartStockPriceTask implements ApplicationRunner { ...@@ -167,18 +167,20 @@ public class SmartStockPriceTask implements ApplicationRunner {
//获取所有买入过的股票 //获取所有买入过的股票
List<SmartStockPosition> stockPositions = stockPositionService.queryStockPositions(marketId); List<SmartStockPosition> stockPositions = stockPositionService.queryStockPositions(marketId);
//汇总数据 //汇总数据
SmartMarketDetailsVO marketDetailsVO = stockPositionService.createMarketDetailsVO(memberBase, stockPositions, funding, accountProductRelation, marketId); SmartMarketDetailsVO marketDetailsVO = stockPositionService.createMarketDetailsVOTask( stockPositions, funding, accountProductRelation);
//示范盈亏比例 //示范盈亏比例
accountProductRelation.setSimulatedTotalProfit(new BigDecimal(marketDetailsVO.getTotalProfitRate())); SmartAccountProductRelation smartAccountProductRelation = new SmartAccountProductRelation();
smartAccountProductRelation.setId(accountProductRelation.getId());
smartAccountProductRelation.setSimulatedTotalProfit(new BigDecimal(marketDetailsVO.getTotalProfitRate()));
//示范盘总资产 //示范盘总资产
accountProductRelation.setSimulatedTotalPrice(new BigDecimal(marketDetailsVO.getTotalPrice())); smartAccountProductRelation.setSimulatedTotalPrice(new BigDecimal(marketDetailsVO.getTotalPrice()));
//示范持仓比 //示范持仓比
accountProductRelation.setSimulatedProportion(new BigDecimal(marketDetailsVO.getPosition())); smartAccountProductRelation.setSimulatedProportion(new BigDecimal(marketDetailsVO.getPosition()));
//示范盘持仓数量 //示范盘持仓数量
accountProductRelation.setPositionCount(ObjectUtils.isEmpty(stockPositions.size()) ? 0 : stockPositions.size()); smartAccountProductRelation.setPositionCount(ObjectUtils.isEmpty(stockPositions.size()) ? 0 : stockPositions.size());
//示范盘盈亏金额 //示范盘盈亏金额
accountProductRelation.setProfitAmount(new BigDecimal(marketDetailsVO.getTotalProfit())); smartAccountProductRelation.setProfitAmount(new BigDecimal(marketDetailsVO.getTotalProfit()));
accountProductRelationService.updateAccountProductRelation(accountProductRelation); accountProductRelationService.updateAccountProductRelation(smartAccountProductRelation);
} }
......
...@@ -164,18 +164,20 @@ public class StockPriceTask implements ApplicationRunner { ...@@ -164,18 +164,20 @@ public class StockPriceTask implements ApplicationRunner {
//获取所有买入过的股票 //获取所有买入过的股票
List<StockPosition> stockPositions = stockPositionService.queryStockPositions(marketId); List<StockPosition> stockPositions = stockPositionService.queryStockPositions(marketId);
//汇总数据 //汇总数据
MarketDetailsVO marketDetailsVO = stockPositionService.createMarketDetailsVO(memberBase, stockPositions, funding, accountProductRelation, marketId); MarketDetailsVO marketDetailsVO = stockPositionService.createMarketDetailsVOTask(stockPositions, funding, accountProductRelation);
AccountProductRelation productRelation = new AccountProductRelation();
productRelation.setId(accountProductRelation.getId());
//示范盈亏比例 //示范盈亏比例
accountProductRelation.setSimulatedTotalProfit(new BigDecimal(marketDetailsVO.getTotalProfitRate())); productRelation.setSimulatedTotalProfit(new BigDecimal(marketDetailsVO.getTotalProfitRate()));
//示范盘总资产 //示范盘总资产
accountProductRelation.setSimulatedTotalPrice(new BigDecimal(marketDetailsVO.getTotalPrice())); productRelation.setSimulatedTotalPrice(new BigDecimal(marketDetailsVO.getTotalPrice()));
//示范持仓比 //示范持仓比
accountProductRelation.setSimulatedProportion(new BigDecimal(marketDetailsVO.getPosition())); productRelation.setSimulatedProportion(new BigDecimal(marketDetailsVO.getPosition()));
//示范盘持仓数量 //示范盘持仓数量
accountProductRelation.setPositionCount(ObjectUtils.isEmpty(stockPositions.size()) ? 0 : stockPositions.size()); productRelation.setPositionCount(ObjectUtils.isEmpty(stockPositions.size()) ? 0 : stockPositions.size());
//示范盘盈亏金额 //示范盘盈亏金额
accountProductRelation.setProfitAmount(new BigDecimal(marketDetailsVO.getTotalProfit())); productRelation.setProfitAmount(new BigDecimal(marketDetailsVO.getTotalProfit()));
accountProductRelationService.updateAccountProductRelation(accountProductRelation); accountProductRelationService.updateAccountProductRelation(productRelation);
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment