From 3a6f68a40bb8be25ce19109ea595e8d0d7bfe510 Mon Sep 17 00:00:00 2001
From: peter <14100000001@qq.com>
Date: Fri, 05 Dec 2025 10:25:56 +0800
Subject: [PATCH] 修改

---
 src/main/java/com/nq/utils/stock/sina/SinaStockApi.java        |    1 +
 src/main/resources/mapper/UserPositionMapper.xml               |    2 +-
 src/main/java/com/nq/utils/task/stock/StockTask.java           |    2 +-
 src/main/java/com/nq/service/impl/UserPositionServiceImpl.java |   30 +++++++++++++++++-------------
 4 files changed, 20 insertions(+), 15 deletions(-)

diff --git a/src/main/java/com/nq/service/impl/UserPositionServiceImpl.java b/src/main/java/com/nq/service/impl/UserPositionServiceImpl.java
index fc23fee..db143f7 100644
--- a/src/main/java/com/nq/service/impl/UserPositionServiceImpl.java
+++ b/src/main/java/com/nq/service/impl/UserPositionServiceImpl.java
@@ -185,9 +185,9 @@
             boolean pm_flag = BuyAndSellUtils.isTransTime(pm_begin, pm_end);
             log.info("是否在上午交易时间 = {} 是否在下午交易时间 = {}", Boolean.valueOf(am_flag), Boolean.valueOf(pm_flag));
 
-//            if (!am_flag && !pm_flag) {
-//                return ServerResponse.createByErrorMsg("下单失败,不在交易时段内");
-//            }
+            if (!am_flag && !pm_flag) {
+                return ServerResponse.createByErrorMsg("下单失败,不在交易时段内");
+            }
             if (siteProduct.getHolidayDisplay()) {
                 return ServerResponse.createByErrorMsg("周末或节假日不能交易!");
             }
@@ -1224,8 +1224,9 @@
                 stockListVO = SinaStockApi.assembleStockListVO(SinaStockApi.getSinaStock(position.getStockGid()));
             }
 
-            if (stockListVO.getNowPrice() == null) {
-                stockListVO.setNowPrice("0");
+            if (stockListVO.getNowPrice() == null || new BigDecimal(stockListVO.getNowPrice()).compareTo(BigDecimal.ZERO) <= 0) {
+//                stockListVO.setNowPrice("0");
+                stockListVO.setNowPrice(String.valueOf(position.getBuyOrderIdIndex()));
             }
 
 
@@ -1877,8 +1878,8 @@
             }
             //    stockListVO = SinaStockApi.assembleStockListVO(SinaStockApi.getSinaStock(position.getStockGid()));
             nowPrice = stockListVO.getNowPrice();
-            if (nowPrice == null) {
-                if(position.getBuyOrderIdIndex().compareTo(BigDecimal.ZERO) > 0){
+            if (nowPrice == null || new BigDecimal(stockListVO.getNowPrice()).compareTo(BigDecimal.ZERO) <= 0) {
+                if(null != position.getBuyOrderIdIndex() && position.getBuyOrderIdIndex().compareTo(BigDecimal.ZERO) > 0){
                     nowPrice = String.valueOf(position.getBuyOrderIdIndex());
                 }else {
                     nowPrice = String.valueOf(position.getBuyOrderPrice());
@@ -2723,25 +2724,28 @@
     public void synchronizePrice(){
         Map<String,BigDecimal> priceMap = new HashMap<>();
         List<UserPosition> userPositions = this.userPositionMapper.synchronizePrice();
+        log.info("-------------------同步收盘价,查询数据总量 {}个--------------",userPositions.size());
+        int count = 0;
         for (UserPosition position : userPositions) {
             if(priceMap.containsKey(position.getStockGid())){
                 BigDecimal newPrice = priceMap.get(position.getStockGid());
                 position.setBuyOrderIdIndex(newPrice);
+                userPositionMapper.updateByPrimaryKey(position);
             }else {
                 StockListVO stockListVO = new StockListVO();
                 stockListVO = SinaStockApi.assembleLideStockListVO(LiDeDataUtils.getStock(position.getStockCode()));
                 if (ObjectUtils.isEmpty(stockListVO)) {
                     stockListVO = SinaStockApi.assembleStockListVO(SinaStockApi.getSinaStock(position.getStockGid()));
                 }
-                if(stockListVO.getNowPrice() == null){
-                    stockListVO.setNowPrice(String.valueOf(position.getBuyOrderPrice()));
+                if(stockListVO.getNowPrice() != null && new BigDecimal(stockListVO.getNowPrice()).compareTo(BigDecimal.ZERO) > 0){
+                    position.setBuyOrderIdIndex(new BigDecimal(stockListVO.getNowPrice()));
+                    priceMap.put(position.getStockGid(),new BigDecimal(stockListVO.getNowPrice()));
+                    userPositionMapper.updateByPrimaryKey(position);
                 }
-                position.setBuyOrderIdIndex(new BigDecimal(stockListVO.getNowPrice()));
-                priceMap.put(position.getStockGid(),new BigDecimal(stockListVO.getNowPrice()));
             }
-            userPositionMapper.updateByPrimaryKey(position);
+            count++;
         }
-        log.info("-------------------同步收盘价 {}个--------------");
+        log.info("-------------------同步收盘价 {}个--------------",count);
     }
 }
 
diff --git a/src/main/java/com/nq/utils/stock/sina/SinaStockApi.java b/src/main/java/com/nq/utils/stock/sina/SinaStockApi.java
index bbbd3f6..cd89e76 100644
--- a/src/main/java/com/nq/utils/stock/sina/SinaStockApi.java
+++ b/src/main/java/com/nq/utils/stock/sina/SinaStockApi.java
@@ -43,6 +43,7 @@
             System.out.println("http://36.138.182.213:7001/crypto/getSinaStock?stockGid=" + stockGid);
             sina_result = HttpClientRequest.doGet("http://36.138.182.213:7001/crypto/getSinaStock?stockGid=" + stockGid);
             System.out.println("请求返回:"+sina_result);
+//            sina_result = "var hq_str_sz300270=\"中威电子,0.000,11.710,0.000,0.000,0.000,0.000,0.000,0,0.000,0,0.000,0,0.000,0,0.000,0,0.000,0,0.000,0,0.000,0,0.000,0,0.000,0,0.000,0,0.000,2025-12-03,09:10:06,00\";";
         } catch (Exception e) {
             log.error("获取股票行情出错,错误信息 = {}", e);
         }
diff --git a/src/main/java/com/nq/utils/task/stock/StockTask.java b/src/main/java/com/nq/utils/task/stock/StockTask.java
index 84aa6cb..daf1550 100644
--- a/src/main/java/com/nq/utils/task/stock/StockTask.java
+++ b/src/main/java/com/nq/utils/task/stock/StockTask.java
@@ -48,7 +48,7 @@
         }
         log.info("am = {}  pm = {}", Boolean.valueOf(am), Boolean.valueOf(pm));
     }
-    @Scheduled(cron = "0 0 18 * * ?")
+    @Scheduled(cron = "0 30 16 * * ?")
 //    @Scheduled(cron = "0 * * * * ?")
     public void synchronizePrice(){
         this.userPositionService.synchronizePrice();
diff --git a/src/main/resources/mapper/UserPositionMapper.xml b/src/main/resources/mapper/UserPositionMapper.xml
index 4053f52..67df1d3 100644
--- a/src/main/resources/mapper/UserPositionMapper.xml
+++ b/src/main/resources/mapper/UserPositionMapper.xml
@@ -45,7 +45,7 @@
     stock_gid, stock_spell, buy_order_id, buy_order_time, buy_order_price, sell_order_id, 
     sell_order_time, sell_order_price, profit_target_price, stop_target_price, order_direction, 
     order_num, order_lever, order_total_price, order_fee, order_spread, order_stay_fee, 
-    order_stay_days, profit_and_lose, all_profit_and_lose,is_lock,lock_msg,stock_plate,spread_rate_price,margin_add
+    order_stay_days, profit_and_lose, all_profit_and_lose,is_lock,lock_msg,stock_plate,spread_rate_price,margin_add,buy_order_id_index
   </sql>
   <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer" >
     select 

--
Gitblit v1.9.3