Browse Source

超短池历史趋势池字段补全修正

Zhangbw 3 tuần trước cách đây
mục cha
commit
3a07f7b2c8

+ 2 - 1
.claude/settings.local.json

@@ -3,7 +3,8 @@
     "allow": [
       "Bash(mvn clean)",
       "Bash(mvn compile -pl ruoyi-modules/yp-stock -am -DskipTests)",
-      "Bash(xargs grep -l \"history\")"
+      "Bash(xargs grep -l \"history\")",
+      "Bash(find d:programgupiaoRuoYI-Vueruoyi-modulesyp-stock -name *StockPool*.xml)"
     ]
   }
 }

+ 17 - 0
ruoyi-modules/yp-stock/src/main/java/com/yingpai/stock/controller/StockPoolHistoryController.java

@@ -4,6 +4,7 @@ import cn.dev33.satoken.annotation.SaCheckPermission;
 import cn.idev.excel.EasyExcel;
 import com.yingpai.stock.domain.bo.StockPoolHistoryBo;
 import com.yingpai.stock.domain.vo.StockPoolHistoryVo;
+import com.yingpai.stock.service.IStockPoolAsyncService;
 import com.yingpai.stock.service.IStockPoolHistoryService;
 import jakarta.servlet.http.HttpServletResponse;
 import jakarta.validation.constraints.NotEmpty;
@@ -23,6 +24,7 @@ import org.springframework.web.multipart.MultipartFile;
 import java.io.IOException;
 import java.net.URLEncoder;
 import java.nio.charset.StandardCharsets;
+import java.time.LocalDate;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -37,6 +39,7 @@ import java.util.List;
 public class StockPoolHistoryController extends BaseController {
 
     private final IStockPoolHistoryService stockPoolHistoryService;
+    private final IStockPoolAsyncService stockPoolAsyncService;
 
     /**
      * 查询历史数据列表
@@ -99,7 +102,21 @@ public class StockPoolHistoryController extends BaseController {
             @RequestParam("file") MultipartFile file,
             @RequestParam("recordDate") String recordDate,
             @RequestParam(value = "updateSupport", defaultValue = "true") boolean updateSupport) throws Exception {
+
+        // 解析日期
+        LocalDate parsedRecordDate;
+        try {
+            parsedRecordDate = LocalDate.parse(recordDate);
+        } catch (Exception e) {
+            return R.fail("记录日期格式错误,请使用 yyyy-MM-dd 格式");
+        }
+
+        // 执行导入(事务方法)
         String message = stockPoolHistoryService.importData(file, recordDate, updateSupport);
+
+        // 事务提交后,触发异步任务
+        stockPoolAsyncService.asyncProcessAfterImport(parsedRecordDate);
+
         return R.ok(message);
     }
 

+ 1 - 2
ruoyi-modules/yp-stock/src/main/java/com/yingpai/stock/service/impl/StockPoolHistoryServiceImpl.java

@@ -394,8 +394,7 @@ public class StockPoolHistoryServiceImpl implements IStockPoolHistoryService {
         log.info("[强势池] 开始将排名前十的股票加入强势池,导入日期: {}", parsedRecordDate);
         addTopTenToStrongPool(parsedRecordDate);
 
-        // 异步执行耗时的后续操作(数据补全、更新涨幅、回溯更新)
-        stockPoolAsyncService.asyncProcessAfterImport(parsedRecordDate);
+        // 注意:异步任务已移到 Controller 层,确保在事务提交后才触发
 
         if (failureNum > 0) {
             String message = String.format("导入完成!成功 %d 条,失败 %d 条。详细错误信息请查看服务器日志。",