1
zyy
2025-12-22 77f227d8b1d00f6507184f8cd2fdec19deacd936
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());
@@ -309,9 +324,11 @@
            }
            if (!isAdmin) { //后台买入不判断
                boolean isOpen = MarketOpenChecker.isMarketOpenBuyDz(Item.US_STOCKS);
                if (!isOpen) {
                    return Result.failed("当前股市休市");
                if (!stockDz.getStockName().contains("测试")) {
                    boolean isOpen = MarketOpenChecker.isMarketOpenBuyDz(Item.US_STOCKS);
                    if (!isOpen) {
                        return Result.failed("当前股市休市");
                    }
                }
            }
@@ -319,6 +336,7 @@
            BigDecimal buyAmt;
            if (isETF) {
                buyAmt = new BigDecimal(num);
                nowPrice = buyAmt;
            } else {
                buyAmt = nowPrice.multiply(new BigDecimal(num));
            }
@@ -598,7 +616,7 @@
            double closeAmt;
            String symbol = stockDz.getStockCode();
            double closePrice;
            double closePrice = 0;
            if (isETF) {
                //按日收益率结算
                closeAmt = order.getPrice();
@@ -606,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) {