From 081a25368d4ebf71f69a9e82cbdeb5108e350d4a Mon Sep 17 00:00:00 2001
From: zyy <zyy@email.com>
Date: Thu, 30 Oct 2025 15:04:26 +0800
Subject: [PATCH] 新增美股暗池、ETF暗池
---
trading-order-admin/src/main/java/com/yami/trading/api/controller/dz/ApiStockDarkPoolsController.java | 128 ++++++++++++++
trading-order-admin/src/main/java/com/yami/trading/api/controller/dz/ApiStockDzController.java | 3
trading-order-admin/src/main/java/com/yami/trading/admin/controller/dz/AdminETFDarkPoolsController.java | 97 ++++++++++
trading-order-service/src/main/java/com/yami/trading/service/dz/StockDzService.java | 2
trading-order-admin/src/main/java/com/yami/trading/admin/controller/dz/AdminETFDzController.java | 2
trading-order-admin/src/main/java/com/yami/trading/admin/controller/dz/AdminStockDarkPoolsController.java | 97 ++++++++++
trading-order-admin/src/main/java/com/yami/trading/api/controller/dz/ApiETFDarkPoolsController.java | 123 +++++++++++++
trading-order-admin/src/main/java/com/yami/trading/admin/controller/dz/AdminStockDzController.java | 2
trading-order-common/src/main/java/com/yami/trading/common/constants/Constants.java | 13 +
trading-order-bean/src/main/java/com/yami/trading/bean/dz/StockDz.java | 2
trading-order-bean/src/main/java/com/yami/trading/bean/dz/dto/ExchangeApplyOrderDzDto.java | 3
trading-order-service/src/main/java/com/yami/trading/service/dz/impl/StockDzServiceImpl.java | 19 +
12 files changed, 478 insertions(+), 13 deletions(-)
diff --git a/trading-order-admin/src/main/java/com/yami/trading/admin/controller/dz/AdminETFDarkPoolsController.java b/trading-order-admin/src/main/java/com/yami/trading/admin/controller/dz/AdminETFDarkPoolsController.java
new file mode 100644
index 0000000..4cde872
--- /dev/null
+++ b/trading-order-admin/src/main/java/com/yami/trading/admin/controller/dz/AdminETFDarkPoolsController.java
@@ -0,0 +1,97 @@
+package com.yami.trading.admin.controller.dz;
+
+import com.yami.trading.bean.dz.StockDz;
+import com.yami.trading.common.constants.Constants;
+import com.yami.trading.common.domain.Result;
+import com.yami.trading.service.dz.StockDzService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+
+@RestController
+@CrossOrigin
+@Api(tags = "后台ETF暗池订单")
+@RequestMapping("etfDarkPools")
+@Slf4j
+public class AdminETFDarkPoolsController {
+
+ @Resource
+ StockDzService stockDzService;
+
+ /**
+ * @Description: 获取大宗列表
+ * @Param:
+ * @return:
+ */
+ @ApiOperation("获取大宗列表")
+ @PostMapping({"getDzListByAdmin.do"})
+ public Result getDzListByAdmin(@RequestParam(value = "pageNum", defaultValue = "1") int pageNum,
+ @RequestParam(value = "pageSize", defaultValue = "5") int pageSize,
+ @RequestParam(value = "keywords", required = false)String keywords) {
+ return stockDzService.getDzListByAdmin(pageNum, pageSize, keywords, Constants.indices_dark);
+ }
+
+ /**
+ * @Description: 新增大宗
+ * @Param:
+ * @return:
+ */
+ @ApiOperation("新增大宗")
+ @PostMapping({"addByAdmin.do"})
+ public Result addByAdmin(@RequestParam(value = "stockCode") String stockCode,
+ @RequestParam(value = "stockNum") String stockNum,
+ @RequestParam(value = "password", required = false) String password,
+ @RequestParam(value = "startTime") String startTime,
+ @RequestParam(value = "endTime") String endTime,
+ @RequestParam(value = "discount", required = false) String discount,
+ @RequestParam(value = "period") Integer period,
+ @RequestParam(value = "nowPrice") String nowPrice,
+ @RequestParam(value = "switchType", defaultValue = "0") Integer switchType) {
+ return stockDzService.addByAdmin(stockCode, stockNum, password, startTime, endTime, discount, period,nowPrice,switchType, Constants.indices_dark);
+ }
+
+ /**
+ * 删除大宗
+ */
+ @ApiOperation("删除大宗")
+ @PostMapping({"deleteByAdmin.do"})
+ public Result deleteByAdmin(@RequestParam(value = "id") String id) {
+ return stockDzService.deleteByAdmin(id);
+ }
+
+ /**
+ * 修改大宗
+ */
+ @ApiOperation("修改大宗")
+ @PostMapping({"updateByAdmin.do"})
+ public Result updateByAdmin(StockDz model) {
+ return stockDzService.updByAdmin(model);
+ }
+
+
+ @ApiOperation("大宗交易审核列表")
+ @PostMapping({"getDzCheckList.do"})
+ @ResponseBody
+ public Result getDzCheckList(@RequestParam(value = "pageNum", defaultValue = "1") int pageNum,
+ @RequestParam(value = "pageSize", defaultValue = "15") int pageSize,
+ @RequestParam(value = "state", required = false) String state,
+ @RequestParam(value = "stockCode", required = false)String stockCode) {
+ return stockDzService.getDzCheckList(pageNum, pageSize, state, stockCode, Constants.indices_dark);
+ }
+
+ @ApiOperation("大宗审核")
+ @PostMapping({"dzCheck.do"})
+ @ResponseBody
+ public Result check(@RequestParam(value = "id") String id,
+ @RequestParam(value = "checkType") Integer checkType,
+ @RequestParam(value = "orderNum", required = false) Double orderNum) {
+ if(checkType != 2 && (id == null || checkType == null || orderNum == null)){
+ return Result.failed("参数不能为空");
+ }
+ return stockDzService.dzCheck(id, checkType, orderNum);
+ }
+
+}
diff --git a/trading-order-admin/src/main/java/com/yami/trading/admin/controller/dz/AdminETFDzController.java b/trading-order-admin/src/main/java/com/yami/trading/admin/controller/dz/AdminETFDzController.java
index 76a2f62..1d53b62 100644
--- a/trading-order-admin/src/main/java/com/yami/trading/admin/controller/dz/AdminETFDzController.java
+++ b/trading-order-admin/src/main/java/com/yami/trading/admin/controller/dz/AdminETFDzController.java
@@ -45,7 +45,7 @@
@RequestParam(value = "period") Integer period,
@RequestParam(value = "nowPrice") String nowPrice,
@RequestParam(value = "switchType", defaultValue = "0") Integer switchType) {
- return stockDzService.addByAdmin(stockCode, stockNum, password, startTime, endTime, discount, period,nowPrice,switchType);
+ return stockDzService.addByAdmin(stockCode, stockNum, password, startTime, endTime, discount, period,nowPrice,switchType, Constants.indices);
}
/**
diff --git a/trading-order-admin/src/main/java/com/yami/trading/admin/controller/dz/AdminStockDarkPoolsController.java b/trading-order-admin/src/main/java/com/yami/trading/admin/controller/dz/AdminStockDarkPoolsController.java
new file mode 100644
index 0000000..a09b205
--- /dev/null
+++ b/trading-order-admin/src/main/java/com/yami/trading/admin/controller/dz/AdminStockDarkPoolsController.java
@@ -0,0 +1,97 @@
+package com.yami.trading.admin.controller.dz;
+
+import com.yami.trading.bean.dz.StockDz;
+import com.yami.trading.common.constants.Constants;
+import com.yami.trading.common.domain.Result;
+import com.yami.trading.service.dz.StockDzService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+
+@RestController
+@CrossOrigin
+@Api(tags = "后台美股暗池订单")
+@RequestMapping("stockDarkPools")
+@Slf4j
+public class AdminStockDarkPoolsController {
+
+ @Resource
+ StockDzService stockDzService;
+
+ /**
+ * @Description: 获取大宗列表
+ * @Param:
+ * @return:
+ */
+ @ApiOperation("获取大宗列表")
+ @PostMapping({"getDzListByAdmin.do"})
+ public Result getDzListByAdmin(@RequestParam(value = "pageNum", defaultValue = "1") int pageNum,
+ @RequestParam(value = "pageSize", defaultValue = "5") int pageSize,
+ @RequestParam(value = "keywords", required = false)String keywords) {
+ return stockDzService.getDzListByAdmin(pageNum, pageSize, keywords, Constants.US_DARK);
+ }
+
+ /**
+ * @Description: 新增大宗
+ * @Param:
+ * @return:
+ */
+ @ApiOperation("新增大宗")
+ @PostMapping({"addByAdmin.do"})
+ public Result addByAdmin(@RequestParam(value = "stockCode") String stockCode,
+ @RequestParam(value = "stockNum") String stockNum,
+ @RequestParam(value = "password", required = false) String password,
+ @RequestParam(value = "startTime") String startTime,
+ @RequestParam(value = "endTime") String endTime,
+ @RequestParam(value = "discount", required = false) String discount,
+ @RequestParam(value = "period") Integer period,
+ @RequestParam(value = "nowPrice") String nowPrice,
+ @RequestParam(value = "switchType", defaultValue = "0") Integer switchType) {
+ return stockDzService.addByAdmin(stockCode, stockNum, password, startTime, endTime, discount, period,nowPrice,switchType, Constants.US_DARK);
+ }
+
+ /**
+ * 删除大宗
+ */
+ @ApiOperation("删除大宗")
+ @PostMapping({"deleteByAdmin.do"})
+ public Result deleteByAdmin(@RequestParam(value = "id") String id) {
+ return stockDzService.deleteByAdmin(id);
+ }
+
+ /**
+ * 修改大宗
+ */
+ @ApiOperation("修改大宗")
+ @PostMapping({"updateByAdmin.do"})
+ public Result updateByAdmin(StockDz model) {
+ return stockDzService.updByAdmin(model);
+ }
+
+
+ @ApiOperation("大宗交易审核列表")
+ @PostMapping({"getDzCheckList.do"})
+ @ResponseBody
+ public Result getDzCheckList(@RequestParam(value = "pageNum", defaultValue = "1") int pageNum,
+ @RequestParam(value = "pageSize", defaultValue = "15") int pageSize,
+ @RequestParam(value = "state", required = false) String state,
+ @RequestParam(value = "stockCode", required = false)String stockCode) {
+ return stockDzService.getDzCheckList(pageNum, pageSize, state, stockCode, Constants.US_DARK);
+ }
+
+ @ApiOperation("大宗审核")
+ @PostMapping({"dzCheck.do"})
+ @ResponseBody
+ public Result check(@RequestParam(value = "id") String id,
+ @RequestParam(value = "checkType") Integer checkType,
+ @RequestParam(value = "orderNum", required = false) Double orderNum) {
+ if(checkType != 2 && (id == null || checkType == null || orderNum == null)){
+ return Result.failed("参数不能为空");
+ }
+ return stockDzService.dzCheck(id, checkType, orderNum);
+ }
+
+}
diff --git a/trading-order-admin/src/main/java/com/yami/trading/admin/controller/dz/AdminStockDzController.java b/trading-order-admin/src/main/java/com/yami/trading/admin/controller/dz/AdminStockDzController.java
index 1dba1f9..90e2758 100644
--- a/trading-order-admin/src/main/java/com/yami/trading/admin/controller/dz/AdminStockDzController.java
+++ b/trading-order-admin/src/main/java/com/yami/trading/admin/controller/dz/AdminStockDzController.java
@@ -53,7 +53,7 @@
@RequestParam(value = "period") Integer period,
@RequestParam(value = "nowPrice") String nowPrice,
@RequestParam(value = "switchType", defaultValue = "0") Integer switchType) {
- return stockDzService.addByAdmin(stockCode, stockNum, password, startTime, endTime, discount, period,nowPrice,switchType);
+ return stockDzService.addByAdmin(stockCode, stockNum, password, startTime, endTime, discount, period,nowPrice,switchType, Constants.US_STOCKS);
}
/**
diff --git a/trading-order-admin/src/main/java/com/yami/trading/api/controller/dz/ApiETFDarkPoolsController.java b/trading-order-admin/src/main/java/com/yami/trading/api/controller/dz/ApiETFDarkPoolsController.java
new file mode 100644
index 0000000..74671fc
--- /dev/null
+++ b/trading-order-admin/src/main/java/com/yami/trading/api/controller/dz/ApiETFDarkPoolsController.java
@@ -0,0 +1,123 @@
+package com.yami.trading.api.controller.dz;
+
+import com.yami.trading.bean.dz.ExchangeApplyOrderDz;
+import com.yami.trading.common.constants.Constants;
+import com.yami.trading.common.domain.Result;
+import com.yami.trading.common.exception.YamiShopBindException;
+import com.yami.trading.security.common.util.SecurityUtils;
+import com.yami.trading.service.dz.StockDzService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.util.concurrent.locks.Lock;
+import java.util.concurrent.locks.ReentrantLock;
+
+@RestController
+@CrossOrigin
+@Api(tags = "ETF暗池")
+@RequestMapping("api/etfDarkPools")
+@Slf4j
+public class ApiETFDarkPoolsController {
+
+ @Resource
+ StockDzService stockDzService;
+
+ private static final ThreadLocal<Boolean> orderCreated = ThreadLocal.withInitial(() -> false);
+ private final Lock lock = new ReentrantLock();
+
+
+ @ApiOperation("大宗交易列表")
+ @PostMapping({"getDzList.do"})
+ @ResponseBody
+ public Result getDzList(@RequestParam(value = "pageNum", defaultValue = "1") int pageNum,
+ @RequestParam(value = "pageSize", defaultValue = "5") int pageSize,
+ @RequestParam(value = "orderBy", required = false) String orderBy,
+ @RequestParam(value = "keyWords", required = false) String keyWords) {
+ return stockDzService.getDzList(pageNum, pageSize, orderBy,keyWords, Constants.indices_dark);
+ }
+
+
+
+ @ApiOperation("大宗下单")
+ @GetMapping({"buyStockDz.do"})
+ @ResponseBody
+ public Result buyDz(@RequestParam("dzId") String dzId,
+ @RequestParam(value = "password", required = false) String password,
+ @RequestParam("num") double num) {
+ lock.lock();
+ try {
+ if (orderCreated.get()) {
+ throw new YamiShopBindException("当前交易人数过多,请稍后重试");
+ }
+ orderCreated.set(true);
+ String partyId = SecurityUtils.getCurrentUserId();
+ if (partyId == null || partyId.isEmpty()) {
+ throw new YamiShopBindException("请先登录");
+ }
+ return stockDzService.buyDz(dzId, password, num, partyId);
+ } catch (Exception e) {
+ log.error(e.getMessage());
+ } finally{
+ lock.unlock();
+ orderCreated.set(false);
+ }
+ throw new YamiShopBindException("订单异常,请稍后重试");
+ }
+
+
+
+
+
+ @ApiOperation("大宗交易持仓订单列表")
+ @PostMapping({"getDzOrderList.do"})
+ @ResponseBody
+ public Result getDzOrderList(@RequestParam(value = "pageNum", defaultValue = "1") int pageNum,
+ @RequestParam(value = "pageSize", defaultValue = "5") int pageSize) {
+ String partyId = SecurityUtils.getCurrentUserId();
+ if (partyId == null || partyId.isEmpty()) {
+ throw new YamiShopBindException("请先登录");
+ }
+ return stockDzService.getDzOrderList(pageNum, pageSize, ExchangeApplyOrderDz.STATE_POSITION, partyId, Constants.indices_dark);
+ }
+
+ @ApiOperation("大宗交易历史订单列表")
+ @PostMapping({"getDzHistoryList.do"})
+ @ResponseBody
+ public Result getDzHistoryList(@RequestParam(value = "pageNum", defaultValue = "1") int pageNum,
+ @RequestParam(value = "pageSize", defaultValue = "5") int pageSize) {
+ String partyId = SecurityUtils.getCurrentUserId();
+ if (partyId == null || partyId.isEmpty()) {
+ throw new YamiShopBindException("请先登录");
+ }
+ return stockDzService.getDzOrderList(pageNum, pageSize, null, partyId, Constants.indices_dark);
+ }
+
+ @ApiOperation("大宗平仓")
+ @GetMapping({"closeStockDz.do"})
+ @ResponseBody
+ public Result closeStockDz(@RequestParam("id") String id,
+ @RequestParam(value = "num", required = false) Double num) {
+ lock.lock();
+ try {
+ if (orderCreated.get()) {
+ throw new YamiShopBindException("当前交易人数过多,请稍后重试");
+ }
+ orderCreated.set(true);
+ String partyId = SecurityUtils.getCurrentUserId();
+ if (partyId == null || partyId.isEmpty()) {
+ throw new YamiShopBindException("请先登录");
+ }
+ return stockDzService.closeDz(id, num, partyId);
+ } catch (Exception e) {
+ log.error(e.getMessage());
+ } finally{
+ lock.unlock();
+ orderCreated.set(false);
+ }
+ throw new YamiShopBindException("订单异常,请稍后重试");
+ }
+
+}
diff --git a/trading-order-admin/src/main/java/com/yami/trading/api/controller/dz/ApiStockDarkPoolsController.java b/trading-order-admin/src/main/java/com/yami/trading/api/controller/dz/ApiStockDarkPoolsController.java
new file mode 100644
index 0000000..e2c3ca4
--- /dev/null
+++ b/trading-order-admin/src/main/java/com/yami/trading/api/controller/dz/ApiStockDarkPoolsController.java
@@ -0,0 +1,128 @@
+package com.yami.trading.api.controller.dz;
+
+import com.yami.trading.bean.dz.ExchangeApplyOrderDz;
+import com.yami.trading.common.constants.Constants;
+import com.yami.trading.common.domain.Result;
+import com.yami.trading.common.exception.YamiShopBindException;
+import com.yami.trading.security.common.util.SecurityUtils;
+import com.yami.trading.service.dz.StockDzService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.util.concurrent.locks.Lock;
+import java.util.concurrent.locks.ReentrantLock;
+
+@RestController
+@CrossOrigin
+@Api(tags = "美股暗池")
+@RequestMapping("api/stockDarkPools")
+@Slf4j
+public class ApiStockDarkPoolsController {
+
+ @Resource
+ StockDzService stockDzService;
+
+ private static final ThreadLocal<Boolean> orderCreated = ThreadLocal.withInitial(() -> false);
+ private final Lock lock = new ReentrantLock();
+
+ /**
+ * 大宗交易 列表
+ * @param pageNum
+ * @param pageSize
+ * @param orderBy
+ * @param keyWords 搜索内容
+ * @return
+ */
+ @ApiOperation("大宗交易列表")
+ @PostMapping({"getDzList.do"})
+ @ResponseBody
+ public Result getDzList(@RequestParam(value = "pageNum", defaultValue = "1") int pageNum,
+ @RequestParam(value = "pageSize", defaultValue = "5") int pageSize,
+ @RequestParam(value = "orderBy", required = false) String orderBy,
+ @RequestParam(value = "keyWords", required = false) String keyWords) {
+ return stockDzService.getDzList(pageNum, pageSize, orderBy,keyWords, Constants.US_DARK);
+ }
+
+
+ @ApiOperation("大宗下单")
+ @GetMapping({"buyStockDz.do"})
+ @ResponseBody
+ public Result buyDz(@RequestParam("dzId") String dzId,
+ @RequestParam(value = "password", required = false) String password,
+ @RequestParam("num") double num) {
+ lock.lock();
+ try {
+ if (orderCreated.get()) {
+ throw new YamiShopBindException("当前交易人数过多,请稍后重试");
+ }
+ orderCreated.set(true);
+ String partyId = SecurityUtils.getCurrentUserId();
+ if (partyId == null || partyId.isEmpty()) {
+ throw new YamiShopBindException("请先登录");
+ }
+ return stockDzService.buyDz(dzId, password, num, partyId);
+ } catch (Exception e) {
+ log.error(e.getMessage());
+ } finally{
+ lock.unlock();
+ orderCreated.set(false);
+ }
+ throw new YamiShopBindException("订单异常,请稍后重试");
+ }
+
+
+
+ @ApiOperation("大宗交易持仓订单列表")
+ @PostMapping({"getDzOrderList.do"})
+ @ResponseBody
+ public Result getDzOrderList(@RequestParam(value = "pageNum", defaultValue = "1") int pageNum,
+ @RequestParam(value = "pageSize", defaultValue = "5") int pageSize) {
+ String partyId = SecurityUtils.getCurrentUserId();
+ if (partyId == null || partyId.isEmpty()) {
+ throw new YamiShopBindException("请先登录");
+ }
+ return stockDzService.getDzOrderList(pageNum, pageSize, ExchangeApplyOrderDz.STATE_POSITION, partyId, Constants.US_DARK);
+ }
+
+ @ApiOperation("大宗交易历史订单列表")
+ @PostMapping({"getDzHistoryList.do"})
+ @ResponseBody
+ public Result getDzHistoryList(@RequestParam(value = "pageNum", defaultValue = "1") int pageNum,
+ @RequestParam(value = "pageSize", defaultValue = "5") int pageSize) {
+ String partyId = SecurityUtils.getCurrentUserId();
+ if (partyId == null || partyId.isEmpty()) {
+ throw new YamiShopBindException("请先登录");
+ }
+ return stockDzService.getDzOrderList(pageNum, pageSize, null, partyId, Constants.US_DARK);
+ }
+
+
+ @ApiOperation("大宗平仓")
+ @GetMapping({"closeStockDz.do"})
+ @ResponseBody
+ public Result closeStockDz(@RequestParam("id") String id,
+ @RequestParam(value = "num", required = false) Double num) {
+ lock.lock();
+ try {
+ if (orderCreated.get()) {
+ throw new YamiShopBindException("当前交易人数过多,请稍后重试");
+ }
+ orderCreated.set(true);
+ String partyId = SecurityUtils.getCurrentUserId();
+ if (partyId == null || partyId.isEmpty()) {
+ throw new YamiShopBindException("请先登录");
+ }
+ return stockDzService.closeDz(id, num, partyId);
+ } catch (Exception e) {
+ log.error(e.getMessage());
+ } finally{
+ lock.unlock();
+ orderCreated.set(false);
+ }
+ throw new YamiShopBindException("订单异常,请稍后重试");
+ }
+
+}
diff --git a/trading-order-admin/src/main/java/com/yami/trading/api/controller/dz/ApiStockDzController.java b/trading-order-admin/src/main/java/com/yami/trading/api/controller/dz/ApiStockDzController.java
index 78f0664..2702c45 100644
--- a/trading-order-admin/src/main/java/com/yami/trading/api/controller/dz/ApiStockDzController.java
+++ b/trading-order-admin/src/main/java/com/yami/trading/api/controller/dz/ApiStockDzController.java
@@ -80,8 +80,7 @@
@PostMapping({"getDzOrderList.do"})
@ResponseBody
public Result getDzOrderList(@RequestParam(value = "pageNum", defaultValue = "1") int pageNum,
- @RequestParam(value = "pageSize", defaultValue = "5") int pageSize,
- @RequestParam(value = "state", required = false) String state) {
+ @RequestParam(value = "pageSize", defaultValue = "5") int pageSize) {
String partyId = SecurityUtils.getCurrentUserId();
if (partyId == null || partyId.isEmpty()) {
throw new YamiShopBindException("请先登录");
diff --git a/trading-order-bean/src/main/java/com/yami/trading/bean/dz/StockDz.java b/trading-order-bean/src/main/java/com/yami/trading/bean/dz/StockDz.java
index 0279839..a499814 100644
--- a/trading-order-bean/src/main/java/com/yami/trading/bean/dz/StockDz.java
+++ b/trading-order-bean/src/main/java/com/yami/trading/bean/dz/StockDz.java
@@ -20,7 +20,7 @@
private String stockCode;
- //美股US_STOCKS ETF indices
+ //美股大宗 US-stocks 美股暗池 US_DARK ETF大宗 indices ETF暗池 indices-dark
private String stockType;
private String stockSpell;
diff --git a/trading-order-bean/src/main/java/com/yami/trading/bean/dz/dto/ExchangeApplyOrderDzDto.java b/trading-order-bean/src/main/java/com/yami/trading/bean/dz/dto/ExchangeApplyOrderDzDto.java
index 7104e4f..51d8947 100644
--- a/trading-order-bean/src/main/java/com/yami/trading/bean/dz/dto/ExchangeApplyOrderDzDto.java
+++ b/trading-order-bean/src/main/java/com/yami/trading/bean/dz/dto/ExchangeApplyOrderDzDto.java
@@ -18,4 +18,7 @@
@ApiModelProperty("浮动盈亏")
private double profitLoss;
+ @ApiModelProperty("浮动盈亏比例")
+ private double profitLossPercentage;
+
}
diff --git a/trading-order-common/src/main/java/com/yami/trading/common/constants/Constants.java b/trading-order-common/src/main/java/com/yami/trading/common/constants/Constants.java
index 0f1ecee..673cdf6 100644
--- a/trading-order-common/src/main/java/com/yami/trading/common/constants/Constants.java
+++ b/trading-order-common/src/main/java/com/yami/trading/common/constants/Constants.java
@@ -329,6 +329,14 @@
public final static String indices = "indices";
/**
+ * ETF暗池
+ */
+ public final static String indices_dark = "indices-dark";
+
+
+
+
+ /**
* 大宗商品
*/
public final static String commodities = "commodities";
@@ -344,6 +352,11 @@
public final static String US_STOCKS = "US-stocks";
/**
+ * 美股暗池
+ */
+ public final static String US_DARK = "US-dark";
+
+ /**
* 港股
*/
public final static String HK_STOCKS = "HK-stocks";
diff --git a/trading-order-service/src/main/java/com/yami/trading/service/dz/StockDzService.java b/trading-order-service/src/main/java/com/yami/trading/service/dz/StockDzService.java
index 9e329fa..5c0d3f2 100644
--- a/trading-order-service/src/main/java/com/yami/trading/service/dz/StockDzService.java
+++ b/trading-order-service/src/main/java/com/yami/trading/service/dz/StockDzService.java
@@ -12,7 +12,7 @@
Result getDzList(int pageNum, int pageSize, String orderBy, String keyWords, String stockType);
- Result addByAdmin(String stockCode, String stockNum, String password, String startTime, String endTime, String discount,Integer period,String nowPrice,Integer switchType);
+ Result addByAdmin(String stockCode, String stockNum, String password, String startTime, String endTime, String discount,Integer period,String nowPrice,Integer switchType, String stockType);
Result getDzListByAdmin(int pageNum, int pageSize, String keywords, String stockType);
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 3fc3892..10590c2 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
@@ -42,6 +42,7 @@
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.math.BigDecimal;
+import java.math.RoundingMode;
import java.text.DecimalFormat;
import java.util.*;
@@ -90,8 +91,8 @@
}
@Override
- public Result addByAdmin(String stockCode, String stockNum, String password, String startTime, String endTime, String discount,Integer period,String nowPrice,Integer switchType) {
- if (stockCode == null || stockCode.isEmpty() ||stockNum == null || stockNum.isEmpty() || startTime == null || startTime.isEmpty() ||endTime == null || endTime.isEmpty() || period == null || nowPrice == null){
+ public Result addByAdmin(String stockCode, String stockNum, String password, String startTime, String endTime, String discount,Integer period,String nowPrice,Integer switchType, String stockType) {
+ if (stockCode == null || stockCode.isEmpty() ||stockNum == null || stockNum.isEmpty() || startTime == null || startTime.isEmpty() ||endTime == null || endTime.isEmpty() || nowPrice == null){
return Result.failed("参数不能为空");
}
@@ -109,7 +110,7 @@
StockDz stockDz = new StockDz();
stockDz.setStockName(item.getSymbolFullName());
stockDz.setStockCode(item.getSymbol());
- stockDz.setStockType(item.getType());
+ stockDz.setStockType(stockType);
stockDz.setStockSpell(item.getSymbolData());
stockDz.setIsLock(0);
stockDz.setIsShow(1);
@@ -160,7 +161,7 @@
}
model.setStockName(item.getSymbolFullName());
model.setStockCode(item.getSymbol());
- model.setStockType(item.getType());
+ model.setStockType(stockDz.getStockType());
model.setStockSpell(item.getSymbolData());
return stockDzMapper.updateById(model) > 0 ? Result.succeed("修改成功") : Result.failed("修改失败");
}
@@ -195,6 +196,10 @@
DecimalFormat df = new DecimalFormat("#.##");
String resultStr = df.format(profitLoss);
dz.setProfitLoss(Double.parseDouble(resultStr));
+
+ double profitPercentage = (profitLoss / dz.getVolume()) * 100;
+ String resultPer = df.format(profitPercentage);
+ dz.setProfitLossPercentage(Double.parseDouble(resultPer));
});
}
@@ -464,7 +469,7 @@
}
Date now = new Date();
- if (stockDz.getPeriod() > 0) {
+ if (stockDz.getPeriod() != null && stockDz.getPeriod() > 0) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(order.getCreateTime());
calendar.add(Calendar.DATE, stockDz.getPeriod());
@@ -472,7 +477,7 @@
Date resultTime = calendar.getTime();
if(now.getTime() < resultTime.getTime()){
- throw new YamiShopBindException("Lock-up period:" + stockDz.getPeriod());
+ throw new YamiShopBindException("锁仓中");
}
}
@@ -537,7 +542,7 @@
return Result.succeed("平仓成功");
} catch (Exception e) {
log.error(e.getMessage());
- return Result.failed("操作失败:" + e.getMessage());
+ return Result.failed(e.getMessage());
}
}
--
Gitblit v1.9.3