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