From 77f227d8b1d00f6507184f8cd2fdec19deacd936 Mon Sep 17 00:00:00 2001
From: zyy <zyy@email.com>
Date: Mon, 22 Dec 2025 11:18:03 +0800
Subject: [PATCH] 1
---
trading-order-service/src/main/java/com/yami/trading/service/dz/impl/StockDzServiceImpl.java | 125 +++++++++++++++++++++++++----------------
1 files changed, 75 insertions(+), 50 deletions(-)
diff --git a/trading-order-service/src/main/java/com/yami/trading/service/dz/impl/StockDzServiceImpl.java b/trading-order-service/src/main/java/com/yami/trading/service/dz/impl/StockDzServiceImpl.java
index 9c88e38..9d94c8a 100644
--- a/trading-order-service/src/main/java/com/yami/trading/service/dz/impl/StockDzServiceImpl.java
+++ b/trading-order-service/src/main/java/com/yami/trading/service/dz/impl/StockDzServiceImpl.java
@@ -87,9 +87,9 @@
Page<StockDzDto> page = new Page<>(pageNum, pageSize);
page = stockDzMapper.findStockTypeDz(page,orderBy,keyWords,formatDate, stockType);
page.getRecords().forEach(stockDzDto -> {
- Realtime realtime = this.dataService.realtime(stockDzDto.getStockCode()).get(0);
- if (realtime != null) {
- stockDzDto.setCurrentPrice(realtime.getClose());
+ List<Realtime> list = this.dataService.realtime(stockDzDto.getStockCode());
+ if (!list.isEmpty() && list.get(0) != null) {
+ stockDzDto.setCurrentPrice(list.get(0).getClose());
}
});
return Result.succeed(page);
@@ -116,16 +116,22 @@
return Result.failed("股票代码已存在");
}
- Item item = itemService.findBySymbol(stockCode);
- if(item == null){
- return Result.failed("不存在该股票");
+ StockDz stockDz = new StockDz();
+ if (stockType.equalsIgnoreCase(Item.indices)) {
+ stockDz.setStockName(stockCode);
+ stockDz.setStockCode(stockCode);
+ stockDz.setStockSpell(stockCode);
+ } else {
+ Item item = itemService.findBySymbol(stockCode);
+ if(item == null){
+ return Result.failed("不存在该股票");
+ }
+ stockDz.setStockName(item.getSymbolFullName());
+ stockDz.setStockCode(item.getSymbol());
+ stockDz.setStockSpell(item.getSymbolData());
}
- StockDz stockDz = new StockDz();
- stockDz.setStockName(item.getSymbolFullName());
- stockDz.setStockCode(item.getSymbol());
stockDz.setStockType(stockType);
- stockDz.setStockSpell(item.getSymbolData());
stockDz.setIsLock(0);
stockDz.setIsShow(1);
stockDz.setAddTime(new Date());
@@ -167,19 +173,26 @@
return Result.failed("股票代码已存在");
}
- Item item = itemService.findBySymbol(model.getStockCode());
- if(item == null){
- return Result.failed("不存在该股票");
- }
-
StockDz stockDz = stockDzMapper.selectById(model.getUuid());
if(stockDz == null){
return Result.failed("不存在该大宗信息");
}
- //model.setStockName(item.getSymbolFullName());
- model.setStockCode(item.getSymbol());
+
+ if (!stockDz.getStockType().equalsIgnoreCase(Item.indices)) {
+ Item item = itemService.findBySymbol(model.getStockCode());
+ if(item == null){
+ return Result.failed("不存在该股票");
+ } else {
+ model.setStockCode(item.getSymbol());
+ model.setStockSpell(item.getSymbolData());
+ }
+ } else {
+ model.setStockCode(model.getStockCode());
+ model.setStockSpell(model.getStockCode());
+ model.setStockName(model.getStockCode());
+ }
model.setStockType(stockDz.getStockType());
- model.setStockSpell(item.getSymbolData());
+
return stockDzMapper.updateById(model) > 0 ? Result.succeed("修改成功") : Result.failed("修改失败");
}
@@ -200,11 +213,13 @@
if (!page.getRecords().isEmpty()) {
List<ExchangeApplyOrderDzDto> list = page.getRecords();
list.forEach(dz -> {
- double closePrice;
+ double closePrice = 0;
if (state != null) { //持仓
- Realtime realtime = this.dataService.realtime(dz.getSymbol()).get(0);
- //获取现价
- closePrice = realtime.getClose();
+ List<Realtime> realtimeList = this.dataService.realtime(dz.getSymbol());
+ if (!realtimeList.isEmpty() && realtimeList.get(0) != null) {
+ //获取现价
+ closePrice = realtimeList.get(0).getClose();
+ }
} else { //已结算
closePrice = dz.getClosePrice();
}
@@ -246,11 +261,11 @@
}
@Override
- public Result getDzCheckList(int pageNum, int pageSize, String state, String stockCode, String stockType, List<String> checkedList) {
+ public Result getDzCheckList(int pageNum, int pageSize, String state, String stockCode, String stockType, String userName, List<String> checkedList) {
try {
Page page = new Page(pageNum, pageSize);
- stockDzMapper.getDzCheckList(page ,state, stockCode, stockType, checkedList);
+ stockDzMapper.getDzCheckList(page ,state, stockCode, stockType, userName, checkedList);
return Result.succeed(page);
} catch (Exception e) {
log.error(e.getMessage());
@@ -260,7 +275,7 @@
@Transactional
@Override
- public Result buyDz(String dzId, String password, double num, String partyId) {
+ public Result buyDz(String dzId, String password, double num, String partyId, Boolean isAdmin) {
try {
if (num <= 0) {
throw new YamiShopBindException("请输入");
@@ -307,16 +322,21 @@
return Result.failed("请购买最小数量");
}
}
- boolean isOpen = MarketOpenChecker.isMarketOpenBuyDz(Item.US_STOCKS);
- if (!isOpen) {
- return Result.failed("当前股市休市");
- }
+ if (!isAdmin) { //后台买入不判断
+ if (!stockDz.getStockName().contains("测试")) {
+ boolean isOpen = MarketOpenChecker.isMarketOpenBuyDz(Item.US_STOCKS);
+ if (!isOpen) {
+ return Result.failed("当前股市休市");
+ }
+ }
+ }
Wallet wallet = this.walletService.saveWalletByPartyId(partyId);
BigDecimal buyAmt;
if (isETF) {
buyAmt = new BigDecimal(num);
+ nowPrice = buyAmt;
} else {
buyAmt = nowPrice.multiply(new BigDecimal(num));
}
@@ -521,7 +541,7 @@
@Transactional
@Override
- public Result closeDz(String id, Double num, String partyId) {
+ public Result closeDz(String id, Double num, String partyId, Boolean isAdmin) {
try {
ExchangeApplyOrderDz order = exchangeApplyOrderDzMapper.selectById(id);
if (order == null) {
@@ -535,6 +555,9 @@
}
if (num < 0 || num > order.getSymbolValue()) {
throw new YamiShopBindException("数量错误");
+ }
+ if (partyId == null) {
+ partyId = order.getPartyId();
}
StockDz stockDz = this.stockDzMapper.selectOne(new QueryWrapper<StockDz>().eq("uuid", order.getDzId()));
@@ -554,26 +577,25 @@
}
Date now = new Date();
- if (stockDz.getPeriod() != null && stockDz.getPeriod() > 0) {
- Calendar calendar = Calendar.getInstance();
- calendar.setTime(order.getCreateTime());
- calendar.add(Calendar.DATE, stockDz.getPeriod());
- // 锁仓时间
- Date resultTime = calendar.getTime();
+ if (!isAdmin) {
+ if (stockDz.getPeriod() != null && stockDz.getPeriod() > 0) {
+ Calendar calendar = Calendar.getInstance();
+ calendar.setTime(order.getCreateTime());
+ calendar.add(Calendar.DATE, stockDz.getPeriod());
+ // 锁仓时间
+ Date resultTime = calendar.getTime();
- if(now.getTime() < resultTime.getTime()){
- return Result.failed("未到平仓时间");
+ if(now.getTime() < resultTime.getTime()){
+ return Result.failed("未到平仓时间");
+ }
+ }
+ if (!stockDz.getStockName().contains("测试")) {
+ boolean isOpen = MarketOpenChecker.isMarketOpenByItemCloseType(Item.US_STOCKS);
+ if (!isOpen) {
+ return Result.failed("当前股市休市");
+ }
}
}
- if (stockDz.getStockName().contains("测试")) {
-
- } else {
- boolean isOpen = MarketOpenChecker.isMarketOpenByItemCloseType(Item.US_STOCKS);
- if (!isOpen) {
- return Result.failed("当前股市休市");
- }
- }
-
Wallet wallet = this.walletService.saveWalletByPartyId(order.getPartyId());
@@ -594,7 +616,7 @@
double closeAmt;
String symbol = stockDz.getStockCode();
- double closePrice;
+ double closePrice = 0;
if (isETF) {
//按日收益率结算
closeAmt = order.getPrice();
@@ -602,8 +624,11 @@
closePrice = closeAmt;
closeAmt = closeAmt - orderFree.doubleValue();
} else {
- Realtime realtime = this.dataService.realtime(symbol).get(0);
- closePrice = realtime.getClose();
+ List<Realtime> realtimeList = this.dataService.realtime(symbol);
+ if (!realtimeList.isEmpty() && realtimeList.get(0) != null) {
+ //获取现价
+ closePrice = realtimeList.get(0).getClose();
+ }
closeAmt = closePrice * num - orderFree.doubleValue();
}
if (closeAmt < 0) {
--
Gitblit v1.9.3