From ecfeb5899f7ff42719d94106764eef51b7c2d1f9 Mon Sep 17 00:00:00 2001 From: shenjianZ Date: Wed, 25 Jun 2025 09:03:41 +0800 Subject: [PATCH] feat: fix spark-processor spark args;fix data-collector tradetime --- .../src/main/resources/application-docker.yml | 50 -- data-collector/config.ini | 2 +- data-collector/stock_crawler.log | 312 ++++++++ data-collector/stock_crawler.py | 4 +- logs/agricultural-stock-platform-dev.log | 681 +++++++++++------- ...ral-stock-platform-dev.log.2025-06-23.0.gz | Bin 0 -> 3114 bytes spark-processor/README_SCHEDULER.md | 219 ++++++ spark-processor/pom.xml | 7 + spark-processor/spark-scheduler.service | 37 + .../spark/StockDataProcessor.java | 52 +- .../spark/scheduler/SparkJobScheduler.java | 161 +++++ .../src/main/resources/application-dev.conf | 4 +- .../main/resources/application-docker.conf | 20 - .../src/main/resources/application-prod.conf | 2 +- spark-processor/start-scheduler.sh | 79 ++ 15 files changed, 1273 insertions(+), 357 deletions(-) delete mode 100644 backend/src/main/resources/application-docker.yml create mode 100644 logs/agricultural-stock-platform-dev.log.2025-06-23.0.gz create mode 100644 spark-processor/README_SCHEDULER.md create mode 100644 spark-processor/spark-scheduler.service create mode 100644 spark-processor/src/main/java/com/agricultural/spark/scheduler/SparkJobScheduler.java delete mode 100644 spark-processor/src/main/resources/application-docker.conf create mode 100644 spark-processor/start-scheduler.sh diff --git a/backend/src/main/resources/application-docker.yml b/backend/src/main/resources/application-docker.yml deleted file mode 100644 index b057764..0000000 --- a/backend/src/main/resources/application-docker.yml +++ /dev/null @@ -1,50 +0,0 @@ -# Docker环境配置 -spring: - # 数据源配置 - Docker环境 - datasource: - driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://mysql:3306/agricultural_stock?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true - username: root - password: 123456 - hikari: - minimum-idle: 10 - maximum-pool-size: 30 - connection-timeout: 30000 - idle-timeout: 600000 - max-lifetime: 1800000 - - # Redis配置 - Docker环境 - redis: - host: redis - port: 6379 - database: 0 - timeout: 6000ms - lettuce: - pool: - max-active: 20 - max-wait: -1ms - max-idle: 10 - min-idle: 2 - - # JPA配置 - jpa: - hibernate: - ddl-auto: none - show-sql: false # 生产环境不显示SQL - database-platform: org.hibernate.dialect.MySQL8Dialect - properties: - hibernate: - dialect: org.hibernate.dialect.MySQL8Dialect - format_sql: false - -# 日志配置 - Docker环境 -logging: - level: - com.agricultural.stock: INFO - org.springframework: WARN - com.baomidou.mybatisplus: WARN - pattern: - console: "%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n" - file: "%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n" - file: - name: logs/agricultural-stock-platform.log \ No newline at end of file diff --git a/data-collector/config.ini b/data-collector/config.ini index 965c005..292f094 100644 --- a/data-collector/config.ini +++ b/data-collector/config.ini @@ -11,7 +11,7 @@ batch_size = 100 max_retries = 3 request_timeout = 10 # 添加交易时间配置 -trading_hours = 09:30-11:30,13:00-15:00 +trading_hours = 09:30-12:00,13:00-17:00 trading_days = 1,2,3,4,5 # 周一到周五 [logging] diff --git a/data-collector/stock_crawler.log b/data-collector/stock_crawler.log index 4125352..1de274e 100644 --- a/data-collector/stock_crawler.log +++ b/data-collector/stock_crawler.log @@ -1063,3 +1063,315 @@ 2025-06-23 09:38:44,394 - INFO - 数据采集完成,共处理 67 只股票 2025-06-23 09:39:03,934 - INFO - 收到停止信号,正在关闭... 2025-06-23 09:39:03,935 - INFO - 股票数据采集器已停止 +2025-06-24 08:52:19,034 - ERROR - 数据库连接失败: 2003 (HY000): Can't connect to MySQL server on 'localhost:3306' (10061) +2025-06-24 08:52:19,036 - INFO - 股票数据采集器启动 +2025-06-24 08:52:19,036 - INFO - 定时任务已启动,每 5 分钟采集一次 +2025-06-24 08:52:19,037 - INFO - 当前非交易时间,跳过数据采集 +2025-06-24 08:52:52,940 - INFO - 收到停止信号,正在关闭... +2025-06-24 08:52:52,940 - INFO - 股票数据采集器已停止 +2025-06-24 08:52:58,739 - ERROR - 数据库连接失败: 2003 (HY000): Can't connect to MySQL server on 'localhost:3306' (10061) +2025-06-24 08:52:58,740 - INFO - 股票数据采集器启动 +2025-06-24 08:52:58,741 - INFO - 定时任务已启动,每 30 分钟采集一次 +2025-06-24 08:52:58,741 - INFO - 当前非交易时间,跳过数据采集 +2025-06-24 08:53:42,193 - INFO - 收到停止信号,正在关闭... +2025-06-24 08:53:42,193 - INFO - 股票数据采集器已停止 +2025-06-24 08:53:43,869 - INFO - 数据库连接成功 +2025-06-24 08:53:43,870 - INFO - 股票数据采集器启动 +2025-06-24 08:53:43,870 - INFO - 定时任务已启动,每 30 分钟采集一次 +2025-06-24 08:53:43,871 - INFO - 当前非交易时间,跳过数据采集 +2025-06-24 08:54:55,977 - INFO - 收到停止信号,正在关闭... +2025-06-24 08:54:55,978 - INFO - 股票数据采集器已停止 +2025-06-24 11:43:07,755 - INFO - 数据库连接成功 +2025-06-24 11:43:07,756 - INFO - 股票数据采集器启动 +2025-06-24 11:43:07,756 - INFO - 定时任务已启动,每 5 分钟采集一次 +2025-06-24 11:43:07,757 - INFO - 当前非交易时间,跳过数据采集 +2025-06-24 11:43:27,094 - INFO - 收到停止信号,正在关闭... +2025-06-24 11:43:27,095 - INFO - 股票数据采集器已停止 +2025-06-24 11:43:29,105 - INFO - 数据库连接成功 +2025-06-24 11:43:29,105 - INFO - 股票数据采集器启动 +2025-06-24 11:43:29,105 - INFO - 定时任务已启动,每 5 分钟采集一次 +2025-06-24 11:43:29,106 - INFO - 当前非交易时间,跳过数据采集 +2025-06-24 11:43:54,286 - INFO - 收到停止信号,正在关闭... +2025-06-24 11:43:54,286 - INFO - 股票数据采集器已停止 +2025-06-24 11:43:56,006 - INFO - 数据库连接成功 +2025-06-24 11:43:56,006 - INFO - 股票数据采集器启动 +2025-06-24 11:43:56,007 - INFO - 定时任务已启动,每 5 分钟采集一次 +2025-06-24 11:43:56,007 - INFO - 开始执行股票数据采集... +2025-06-24 11:43:56,122 - INFO - 成功获取股票 sz300189 数据: 神农种业 +2025-06-24 11:43:56,670 - INFO - 成功获取股票 sz000713 数据: 丰乐种业 +2025-06-24 11:43:57,217 - INFO - 成功获取股票 sh600313 数据: 农发种业 +2025-06-24 11:43:57,763 - INFO - 成功获取股票 bj837403 数据: 康农种业 +2025-06-24 11:43:58,311 - INFO - 成功获取股票 sz200505 数据: 京粮B +2025-06-24 11:43:58,859 - INFO - 成功获取股票 sz300268 数据: *ST佳沃 +2025-06-24 11:43:59,407 - INFO - 成功获取股票 sz000930 数据: 中粮科技 +2025-06-24 11:43:59,954 - INFO - 成功获取股票 sz002299 数据: 圣农发展 +2025-06-24 11:44:00,503 - INFO - 成功获取股票 sh600371 数据: 万向德农 +2025-06-24 11:44:01,049 - INFO - 成功获取股票 sh600598 数据: 北大荒 +2025-06-24 11:44:01,596 - INFO - 成功获取股票 sh603609 数据: 禾丰股份 +2025-06-24 11:44:02,143 - INFO - 成功获取股票 bj831087 数据: 秋乐种业 +2025-06-24 11:44:02,690 - INFO - 成功获取股票 sh603363 数据: 傲农生物 +2025-06-24 11:44:03,236 - INFO - 成功获取股票 sh603336 数据: 宏辉果蔬 +2025-06-24 11:44:03,783 - INFO - 成功获取股票 sh600354 数据: 敦煌种业 +2025-06-24 11:44:04,330 - INFO - 成功获取股票 sz002385 数据: 大北农 +2025-06-24 11:44:04,877 - INFO - 成功获取股票 sz000048 数据: 京基智农 +2025-06-24 11:44:05,423 - INFO - 成功获取股票 sh600251 数据: 冠农股份 +2025-06-24 11:44:05,971 - INFO - 成功获取股票 sz002321 数据: 华英农业 +2025-06-24 11:44:06,517 - INFO - 成功获取股票 sz000505 数据: 京粮控股 +2025-06-24 11:44:07,063 - INFO - 成功获取股票 sz001366 数据: 播恩集团 +2025-06-24 11:44:07,609 - INFO - 成功获取股票 sz002772 数据: 众兴菌业 +2025-06-24 11:44:08,156 - INFO - 成功获取股票 sz002041 数据: 登海种业 +2025-06-24 11:44:08,703 - INFO - 成功获取股票 sh600127 数据: 金健米业 +2025-06-24 11:44:09,251 - INFO - 成功获取股票 sz002548 数据: 金新农 +2025-06-24 11:44:09,799 - INFO - 成功获取股票 sh605296 数据: 神农集团 +2025-06-24 11:44:10,345 - INFO - 成功获取股票 sh600359 数据: 新农开发 +2025-06-24 11:44:10,893 - INFO - 成功获取股票 sh601952 数据: 苏垦农发 +2025-06-24 11:44:11,440 - INFO - 成功获取股票 sh600975 数据: 新五丰 +2025-06-24 11:44:11,987 - INFO - 成功获取股票 sz300505 数据: 川金诺 +2025-06-24 11:44:12,534 - INFO - 成功获取股票 sh600141 数据: 兴发集团 +2025-06-24 11:44:13,081 - INFO - 成功获取股票 sz000893 数据: 亚钾国际 +2025-06-24 11:44:13,627 - INFO - 成功获取股票 sh600691 数据: 阳煤化工 +2025-06-24 11:44:14,173 - INFO - 成功获取股票 sh600470 数据: 六国化工 +2025-06-24 11:44:14,720 - INFO - 成功获取股票 sz000408 数据: 藏格矿业 +2025-06-24 11:44:15,267 - INFO - 成功获取股票 sz000902 数据: 新洋丰 +2025-06-24 11:44:15,815 - INFO - 成功获取股票 sz002539 数据: 云图控股 +2025-06-24 11:44:16,362 - INFO - 成功获取股票 sz002599 数据: 盛通股份 +2025-06-24 11:44:16,909 - INFO - 成功获取股票 sz002545 数据: 东方铁塔 +2025-06-24 11:44:17,457 - INFO - 成功获取股票 sz300387 数据: 富邦科技 +2025-06-24 11:44:18,004 - INFO - 成功获取股票 sz002274 数据: 华昌化工 +2025-06-24 11:44:18,552 - INFO - 成功获取股票 sz002470 数据: 金正大 +2025-06-24 11:44:19,099 - INFO - 成功获取股票 sz002538 数据: 司尔特 +2025-06-24 11:44:19,647 - INFO - 成功获取股票 sz000731 数据: 四川美丰 +2025-06-24 11:44:20,195 - INFO - 成功获取股票 sh600078 数据: 澄星股份 +2025-06-24 11:44:20,743 - INFO - 成功获取股票 sh600227 数据: 赤天化 +2025-06-24 11:44:21,290 - INFO - 成功获取股票 sh603395 数据: 红四方 +2025-06-24 11:44:21,839 - INFO - 成功获取股票 sz002588 数据: 史丹利 +2025-06-24 11:44:22,387 - INFO - 成功获取股票 sz000422 数据: 湖北宜化 +2025-06-24 11:44:22,933 - INFO - 成功获取股票 sz002556 数据: 辉隆股份 +2025-06-24 11:44:23,480 - INFO - 成功获取股票 sz002312 数据: 川发龙蟒 +2025-06-24 11:44:24,028 - INFO - 成功获取股票 sz002170 数据: 芭田股份 +2025-06-24 11:44:24,575 - INFO - 成功获取股票 sz000792 数据: 盐湖股份 +2025-06-24 11:44:25,122 - INFO - 成功获取股票 sh600096 数据: 云天化 +2025-06-24 11:44:25,714 - INFO - 成功获取股票 sz001231 数据: 农心科技 +2025-06-24 11:44:26,262 - INFO - 成功获取股票 sz002731 数据: 萃华珠宝 +2025-06-24 11:44:26,809 - INFO - 成功获取股票 sz200553 数据: 安道麦B +2025-06-24 11:44:27,355 - INFO - 成功获取股票 sh603810 数据: 丰山集团 +2025-06-24 11:44:27,904 - INFO - 成功获取股票 sh603970 数据: 中农立华 +2025-06-24 11:44:28,456 - INFO - 成功获取股票 sz301035 数据: 润丰股份 +2025-06-24 11:44:29,002 - INFO - 成功获取股票 sz002868 数据: *ST绿康 +2025-06-24 11:44:29,549 - INFO - 成功获取股票 sz003042 数据: 中农联合 +2025-06-24 11:44:30,096 - INFO - 成功获取股票 sz002391 数据: 长青股份 +2025-06-24 11:44:30,644 - INFO - 成功获取股票 bj870866 数据: 绿亨科技 +2025-06-24 11:44:31,192 - INFO - 成功获取股票 sz301665 数据: 泰禾股份 +2025-06-24 11:44:31,738 - INFO - 成功获取股票 sh600486 数据: 扬农化工 +2025-06-24 11:44:32,239 - INFO - 本次采集完成,共获取 66 只股票数据 +2025-06-24 11:44:32,277 - INFO - 插入股票 sz300189 数据 +2025-06-24 11:44:32,279 - INFO - 插入股票 sz000713 数据 +2025-06-24 11:44:32,281 - INFO - 插入股票 sh600313 数据 +2025-06-24 11:44:32,283 - INFO - 插入股票 bj837403 数据 +2025-06-24 11:44:32,286 - INFO - 插入股票 sz200505 数据 +2025-06-24 11:44:32,290 - INFO - 插入股票 sz300268 数据 +2025-06-24 11:44:32,293 - INFO - 插入股票 sz000930 数据 +2025-06-24 11:44:32,294 - INFO - 插入股票 sz002299 数据 +2025-06-24 11:44:32,296 - INFO - 插入股票 sh600371 数据 +2025-06-24 11:44:32,298 - INFO - 插入股票 sh600598 数据 +2025-06-24 11:44:32,300 - INFO - 插入股票 sh603609 数据 +2025-06-24 11:44:32,303 - INFO - 插入股票 bj831087 数据 +2025-06-24 11:44:32,305 - INFO - 插入股票 sh603363 数据 +2025-06-24 11:44:32,307 - INFO - 插入股票 sh603336 数据 +2025-06-24 11:44:32,309 - INFO - 插入股票 sh600354 数据 +2025-06-24 11:44:32,311 - INFO - 插入股票 sz002385 数据 +2025-06-24 11:44:32,312 - INFO - 插入股票 sz000048 数据 +2025-06-24 11:44:32,314 - INFO - 插入股票 sh600251 数据 +2025-06-24 11:44:32,317 - INFO - 插入股票 sz002321 数据 +2025-06-24 11:44:32,319 - INFO - 插入股票 sz000505 数据 +2025-06-24 11:44:32,323 - INFO - 插入股票 sz001366 数据 +2025-06-24 11:44:32,324 - INFO - 插入股票 sz002772 数据 +2025-06-24 11:44:32,326 - INFO - 插入股票 sz002041 数据 +2025-06-24 11:44:32,333 - INFO - 插入股票 sh600127 数据 +2025-06-24 11:44:32,336 - INFO - 插入股票 sz002548 数据 +2025-06-24 11:44:32,338 - INFO - 插入股票 sh605296 数据 +2025-06-24 11:44:32,340 - INFO - 插入股票 sh600359 数据 +2025-06-24 11:44:32,342 - INFO - 插入股票 sh601952 数据 +2025-06-24 11:44:32,344 - INFO - 插入股票 sh600975 数据 +2025-06-24 11:44:32,347 - INFO - 插入股票 sz300505 数据 +2025-06-24 11:44:32,349 - INFO - 插入股票 sh600141 数据 +2025-06-24 11:44:32,372 - INFO - 插入股票 sz000893 数据 +2025-06-24 11:44:32,374 - INFO - 插入股票 sh600691 数据 +2025-06-24 11:44:32,376 - INFO - 插入股票 sh600470 数据 +2025-06-24 11:44:32,378 - INFO - 插入股票 sz000408 数据 +2025-06-24 11:44:32,381 - INFO - 插入股票 sz000902 数据 +2025-06-24 11:44:32,383 - INFO - 插入股票 sz002539 数据 +2025-06-24 11:44:32,385 - INFO - 插入股票 sz002599 数据 +2025-06-24 11:44:32,388 - INFO - 插入股票 sz002545 数据 +2025-06-24 11:44:32,390 - INFO - 插入股票 sz300387 数据 +2025-06-24 11:44:32,393 - INFO - 插入股票 sz002274 数据 +2025-06-24 11:44:32,395 - INFO - 插入股票 sz002470 数据 +2025-06-24 11:44:32,398 - INFO - 插入股票 sz002538 数据 +2025-06-24 11:44:32,400 - INFO - 插入股票 sz000731 数据 +2025-06-24 11:44:32,402 - INFO - 插入股票 sh600078 数据 +2025-06-24 11:44:32,404 - INFO - 插入股票 sh600227 数据 +2025-06-24 11:44:32,405 - INFO - 插入股票 sh603395 数据 +2025-06-24 11:44:32,407 - INFO - 插入股票 sz002588 数据 +2025-06-24 11:44:32,409 - INFO - 插入股票 sz000422 数据 +2025-06-24 11:44:32,412 - INFO - 插入股票 sz002556 数据 +2025-06-24 11:44:32,414 - INFO - 插入股票 sz002312 数据 +2025-06-24 11:44:32,415 - INFO - 插入股票 sz002170 数据 +2025-06-24 11:44:32,416 - INFO - 插入股票 sz000792 数据 +2025-06-24 11:44:32,418 - INFO - 插入股票 sh600096 数据 +2025-06-24 11:44:32,420 - INFO - 插入股票 sz001231 数据 +2025-06-24 11:44:32,423 - INFO - 插入股票 sz002731 数据 +2025-06-24 11:44:32,425 - INFO - 插入股票 sz200553 数据 +2025-06-24 11:44:32,426 - INFO - 插入股票 sh603810 数据 +2025-06-24 11:44:32,427 - INFO - 插入股票 sh603970 数据 +2025-06-24 11:44:32,429 - INFO - 插入股票 sz301035 数据 +2025-06-24 11:44:32,430 - INFO - 插入股票 sz002868 数据 +2025-06-24 11:44:32,431 - INFO - 插入股票 sz003042 数据 +2025-06-24 11:44:32,433 - INFO - 插入股票 sz002391 数据 +2025-06-24 11:44:32,435 - INFO - 插入股票 bj870866 数据 +2025-06-24 11:44:32,437 - INFO - 插入股票 sz301665 数据 +2025-06-24 11:44:32,439 - INFO - 插入股票 sh600486 数据 +2025-06-24 11:44:32,449 - INFO - 成功处理 66 条股票数据到数据库 +2025-06-24 11:44:32,449 - INFO - 数据采集完成,共处理 66 只股票 +2025-06-24 11:44:42,989 - INFO - 收到停止信号,正在关闭... +2025-06-24 11:44:42,990 - INFO - 股票数据采集器已停止 +2025-06-24 14:59:15,942 - INFO - 数据库连接成功 +2025-06-24 14:59:15,942 - INFO - 股票数据采集器启动 +2025-06-24 14:59:15,943 - INFO - 定时任务已启动,每 5 分钟采集一次 +2025-06-24 14:59:15,943 - INFO - 开始执行股票数据采集... +2025-06-24 14:59:16,050 - INFO - 成功获取股票 sz300189 数据: 神农种业 +2025-06-24 14:59:16,596 - INFO - 成功获取股票 sz000713 数据: 丰乐种业 +2025-06-24 14:59:17,156 - INFO - 成功获取股票 sh600313 数据: 农发种业 +2025-06-24 14:59:17,716 - INFO - 成功获取股票 bj837403 数据: 康农种业 +2025-06-24 14:59:18,280 - INFO - 成功获取股票 sz200505 数据: 京粮B +2025-06-24 14:59:18,837 - INFO - 成功获取股票 sz300268 数据: *ST佳沃 +2025-06-24 14:59:19,460 - INFO - 成功获取股票 sz000930 数据: 中粮科技 +2025-06-24 14:59:20,006 - INFO - 成功获取股票 sz002299 数据: 圣农发展 +2025-06-24 14:59:20,595 - INFO - 成功获取股票 sh600371 数据: 万向德农 +2025-06-24 14:59:21,140 - INFO - 成功获取股票 sh600598 数据: 北大荒 +2025-06-24 14:59:21,684 - INFO - 成功获取股票 sh603609 数据: 禾丰股份 +2025-06-24 14:59:22,229 - INFO - 成功获取股票 bj831087 数据: 秋乐种业 +2025-06-24 14:59:22,773 - INFO - 成功获取股票 sh603363 数据: 傲农生物 +2025-06-24 14:59:23,317 - INFO - 成功获取股票 sh603336 数据: 宏辉果蔬 +2025-06-24 14:59:23,861 - INFO - 成功获取股票 sh600354 数据: 敦煌种业 +2025-06-24 14:59:24,403 - INFO - 成功获取股票 sz002385 数据: 大北农 +2025-06-24 14:59:24,948 - INFO - 成功获取股票 sz000048 数据: 京基智农 +2025-06-24 14:59:25,494 - INFO - 成功获取股票 sh600251 数据: 冠农股份 +2025-06-24 14:59:26,038 - INFO - 成功获取股票 sz002321 数据: 华英农业 +2025-06-24 14:59:26,583 - INFO - 成功获取股票 sz000505 数据: 京粮控股 +2025-06-24 14:59:27,127 - INFO - 成功获取股票 sz001366 数据: 播恩集团 +2025-06-24 14:59:27,670 - INFO - 成功获取股票 sz002772 数据: 众兴菌业 +2025-06-24 14:59:28,214 - INFO - 成功获取股票 sz002041 数据: 登海种业 +2025-06-24 14:59:28,758 - INFO - 成功获取股票 sh600127 数据: 金健米业 +2025-06-24 14:59:29,301 - INFO - 成功获取股票 sz002548 数据: 金新农 +2025-06-24 14:59:29,846 - INFO - 成功获取股票 sh605296 数据: 神农集团 +2025-06-24 14:59:30,391 - INFO - 成功获取股票 sh600359 数据: 新农开发 +2025-06-24 14:59:30,937 - INFO - 成功获取股票 sh601952 数据: 苏垦农发 +2025-06-24 14:59:31,480 - INFO - 成功获取股票 sh600975 数据: 新五丰 +2025-06-24 14:59:33,221 - INFO - 成功获取股票 sz300505 数据: 川金诺 +2025-06-24 14:59:33,765 - INFO - 成功获取股票 sh600141 数据: 兴发集团 +2025-06-24 14:59:34,309 - INFO - 成功获取股票 sz000893 数据: 亚钾国际 +2025-06-24 14:59:34,853 - INFO - 成功获取股票 sh600691 数据: 阳煤化工 +2025-06-24 14:59:35,398 - INFO - 成功获取股票 sh600470 数据: 六国化工 +2025-06-24 14:59:35,942 - INFO - 成功获取股票 sz000408 数据: 藏格矿业 +2025-06-24 14:59:36,487 - INFO - 成功获取股票 sz000902 数据: 新洋丰 +2025-06-24 14:59:37,031 - INFO - 成功获取股票 sz002539 数据: 云图控股 +2025-06-24 14:59:37,574 - INFO - 成功获取股票 sz002599 数据: 盛通股份 +2025-06-24 14:59:38,122 - INFO - 成功获取股票 sz002545 数据: 东方铁塔 +2025-06-24 14:59:38,682 - INFO - 成功获取股票 sz300387 数据: 富邦科技 +2025-06-24 14:59:39,226 - INFO - 成功获取股票 sz002274 数据: 华昌化工 +2025-06-24 14:59:39,771 - INFO - 成功获取股票 sz002470 数据: 金正大 +2025-06-24 14:59:40,315 - INFO - 成功获取股票 sz002538 数据: 司尔特 +2025-06-24 14:59:40,860 - INFO - 成功获取股票 sz000731 数据: 四川美丰 +2025-06-24 14:59:41,403 - INFO - 成功获取股票 sh600078 数据: 澄星股份 +2025-06-24 14:59:41,948 - INFO - 成功获取股票 sh600227 数据: 赤天化 +2025-06-24 14:59:42,493 - INFO - 成功获取股票 sh603395 数据: 红四方 +2025-06-24 14:59:43,037 - INFO - 成功获取股票 sz002588 数据: 史丹利 +2025-06-24 14:59:43,581 - INFO - 成功获取股票 sz000422 数据: 湖北宜化 +2025-06-24 14:59:44,126 - INFO - 成功获取股票 sz002556 数据: 辉隆股份 +2025-06-24 14:59:44,672 - INFO - 成功获取股票 sz002312 数据: 川发龙蟒 +2025-06-24 14:59:45,215 - INFO - 成功获取股票 sz002170 数据: 芭田股份 +2025-06-24 14:59:45,761 - INFO - 成功获取股票 sz000792 数据: 盐湖股份 +2025-06-24 14:59:46,305 - INFO - 成功获取股票 sh600096 数据: 云天化 +2025-06-24 14:59:46,849 - INFO - 成功获取股票 sz001231 数据: 农心科技 +2025-06-24 14:59:47,393 - INFO - 成功获取股票 sz002731 数据: 萃华珠宝 +2025-06-24 14:59:47,936 - INFO - 成功获取股票 sz200553 数据: 安道麦B +2025-06-24 14:59:48,479 - INFO - 成功获取股票 sh603810 数据: 丰山集团 +2025-06-24 14:59:49,023 - INFO - 成功获取股票 sh603970 数据: 中农立华 +2025-06-24 14:59:49,567 - INFO - 成功获取股票 sz301035 数据: 润丰股份 +2025-06-24 14:59:50,111 - INFO - 成功获取股票 sz002868 数据: *ST绿康 +2025-06-24 14:59:50,655 - INFO - 成功获取股票 sz003042 数据: 中农联合 +2025-06-24 14:59:51,250 - INFO - 成功获取股票 sz002391 数据: 长青股份 +2025-06-24 14:59:51,858 - INFO - 成功获取股票 bj870866 数据: 绿亨科技 +2025-06-24 14:59:52,454 - INFO - 成功获取股票 sz301665 数据: 泰禾股份 +2025-06-24 14:59:52,998 - INFO - 成功获取股票 sh600486 数据: 扬农化工 +2025-06-24 14:59:53,498 - INFO - 本次采集完成,共获取 66 只股票数据 +2025-06-24 14:59:53,510 - INFO - 更新股票 sz300189 数据 +2025-06-24 14:59:53,512 - INFO - 更新股票 sz000713 数据 +2025-06-24 14:59:53,514 - INFO - 更新股票 sh600313 数据 +2025-06-24 14:59:53,517 - INFO - 更新股票 bj837403 数据 +2025-06-24 14:59:53,518 - INFO - 更新股票 sz200505 数据 +2025-06-24 14:59:53,520 - INFO - 更新股票 sz300268 数据 +2025-06-24 14:59:53,523 - INFO - 更新股票 sz000930 数据 +2025-06-24 14:59:53,526 - INFO - 更新股票 sz002299 数据 +2025-06-24 14:59:53,528 - INFO - 更新股票 sh600371 数据 +2025-06-24 14:59:53,531 - INFO - 更新股票 sh600598 数据 +2025-06-24 14:59:53,533 - INFO - 更新股票 sh603609 数据 +2025-06-24 14:59:53,535 - INFO - 更新股票 bj831087 数据 +2025-06-24 14:59:53,537 - INFO - 更新股票 sh603363 数据 +2025-06-24 14:59:53,541 - INFO - 更新股票 sh603336 数据 +2025-06-24 14:59:53,544 - INFO - 更新股票 sh600354 数据 +2025-06-24 14:59:53,546 - INFO - 更新股票 sz002385 数据 +2025-06-24 14:59:53,547 - INFO - 更新股票 sz000048 数据 +2025-06-24 14:59:53,548 - INFO - 更新股票 sh600251 数据 +2025-06-24 14:59:53,550 - INFO - 更新股票 sz002321 数据 +2025-06-24 14:59:53,551 - INFO - 更新股票 sz000505 数据 +2025-06-24 14:59:53,553 - INFO - 更新股票 sz001366 数据 +2025-06-24 14:59:53,556 - INFO - 更新股票 sz002772 数据 +2025-06-24 14:59:53,559 - INFO - 更新股票 sz002041 数据 +2025-06-24 14:59:53,562 - INFO - 更新股票 sh600127 数据 +2025-06-24 14:59:53,564 - INFO - 更新股票 sz002548 数据 +2025-06-24 14:59:53,566 - INFO - 更新股票 sh605296 数据 +2025-06-24 14:59:53,567 - INFO - 更新股票 sh600359 数据 +2025-06-24 14:59:53,569 - INFO - 更新股票 sh601952 数据 +2025-06-24 14:59:53,571 - INFO - 更新股票 sh600975 数据 +2025-06-24 14:59:53,574 - INFO - 更新股票 sz300505 数据 +2025-06-24 14:59:53,576 - INFO - 更新股票 sh600141 数据 +2025-06-24 14:59:53,578 - INFO - 更新股票 sz000893 数据 +2025-06-24 14:59:53,579 - INFO - 更新股票 sh600691 数据 +2025-06-24 14:59:53,581 - INFO - 更新股票 sh600470 数据 +2025-06-24 14:59:53,583 - INFO - 更新股票 sz000408 数据 +2025-06-24 14:59:53,585 - INFO - 更新股票 sz000902 数据 +2025-06-24 14:59:53,587 - INFO - 更新股票 sz002539 数据 +2025-06-24 14:59:53,591 - INFO - 更新股票 sz002599 数据 +2025-06-24 14:59:53,595 - INFO - 更新股票 sz002545 数据 +2025-06-24 14:59:53,597 - INFO - 更新股票 sz300387 数据 +2025-06-24 14:59:53,599 - INFO - 更新股票 sz002274 数据 +2025-06-24 14:59:53,601 - INFO - 更新股票 sz002470 数据 +2025-06-24 14:59:53,604 - INFO - 更新股票 sz002538 数据 +2025-06-24 14:59:53,607 - INFO - 更新股票 sz000731 数据 +2025-06-24 14:59:53,609 - INFO - 更新股票 sh600078 数据 +2025-06-24 14:59:53,611 - INFO - 更新股票 sh600227 数据 +2025-06-24 14:59:53,613 - INFO - 更新股票 sh603395 数据 +2025-06-24 14:59:53,615 - INFO - 更新股票 sz002588 数据 +2025-06-24 14:59:53,617 - INFO - 更新股票 sz000422 数据 +2025-06-24 14:59:53,619 - INFO - 更新股票 sz002556 数据 +2025-06-24 14:59:53,621 - INFO - 更新股票 sz002312 数据 +2025-06-24 14:59:53,625 - INFO - 更新股票 sz002170 数据 +2025-06-24 14:59:53,627 - INFO - 更新股票 sz000792 数据 +2025-06-24 14:59:53,629 - INFO - 更新股票 sh600096 数据 +2025-06-24 14:59:53,630 - INFO - 更新股票 sz001231 数据 +2025-06-24 14:59:53,632 - INFO - 更新股票 sz002731 数据 +2025-06-24 14:59:53,634 - INFO - 更新股票 sz200553 数据 +2025-06-24 14:59:53,636 - INFO - 更新股票 sh603810 数据 +2025-06-24 14:59:53,638 - INFO - 更新股票 sh603970 数据 +2025-06-24 14:59:53,641 - INFO - 更新股票 sz301035 数据 +2025-06-24 14:59:53,643 - INFO - 更新股票 sz002868 数据 +2025-06-24 14:59:53,645 - INFO - 更新股票 sz003042 数据 +2025-06-24 14:59:53,647 - INFO - 更新股票 sz002391 数据 +2025-06-24 14:59:53,650 - INFO - 更新股票 bj870866 数据 +2025-06-24 14:59:53,652 - INFO - 更新股票 sz301665 数据 +2025-06-24 14:59:53,655 - INFO - 更新股票 sh600486 数据 +2025-06-24 14:59:53,663 - INFO - 成功处理 66 条股票数据到数据库 +2025-06-24 14:59:53,663 - INFO - 数据采集完成,共处理 66 只股票 +2025-06-24 15:00:29,141 - INFO - 收到停止信号,正在关闭... +2025-06-24 15:00:29,142 - INFO - 股票数据采集器已停止 diff --git a/data-collector/stock_crawler.py b/data-collector/stock_crawler.py index 84fc574..eebc160 100644 --- a/data-collector/stock_crawler.py +++ b/data-collector/stock_crawler.py @@ -273,9 +273,9 @@ class StockCrawler: # 检查是否在交易时间内 current_time = now.time() morning_start = datetime.strptime("09:30", "%H:%M").time() - morning_end = datetime.strptime("11:30", "%H:%M").time() + morning_end = datetime.strptime("12:00", "%H:%M").time() afternoon_start = datetime.strptime("13:00", "%H:%M").time() - afternoon_end = datetime.strptime("15:00", "%H:%M").time() + afternoon_end = datetime.strptime("17:00", "%H:%M").time() return (morning_start <= current_time <= morning_end) or \ (afternoon_start <= current_time <= afternoon_end) diff --git a/logs/agricultural-stock-platform-dev.log b/logs/agricultural-stock-platform-dev.log index 9108639..66dd874 100644 --- a/logs/agricultural-stock-platform-dev.log +++ b/logs/agricultural-stock-platform-dev.log @@ -1,279 +1,402 @@ -2025-06-23 07:31:31 [main] INFO c.a.s.AgriculturalStockPlatformApplication - Starting AgriculturalStockPlatformApplication using Java 1.8.0_202 on WIN11 with PID 2012 (D:\VScodeProject\work_4\backend\target\classes started by shenjianZ in D:\VScodeProject\work_4) -2025-06-23 07:31:31 [main] DEBUG c.a.s.AgriculturalStockPlatformApplication - Running with Spring Boot v2.7.0, Spring v5.3.20 -2025-06-23 07:31:31 [main] INFO c.a.s.AgriculturalStockPlatformApplication - The following 1 profile is active: "dev" -2025-06-23 07:31:33 [main] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] -2025-06-23 07:31:33 [main] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.63] -2025-06-23 07:31:33 [main] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext -2025-06-23 07:31:34 [main] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] -2025-06-23 07:31:34 [main] INFO org.hibernate.Version - HHH000412: Hibernate ORM core version 5.6.9.Final -2025-06-23 07:31:34 [main] INFO o.h.annotations.common.Version - HCANN000001: Hibernate Commons Annotations {5.1.2.Final} -2025-06-23 07:31:34 [main] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Starting... -2025-06-23 07:31:34 [main] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Start completed. -2025-06-23 07:31:34 [main] INFO org.hibernate.dialect.Dialect - HHH000400: Using dialect: org.hibernate.dialect.MySQL8Dialect -2025-06-23 07:31:35 [main] INFO o.h.e.t.j.p.i.JtaPlatformInitiator - HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform] -2025-06-23 07:31:36 [main] DEBUG c.b.m.e.s.MybatisSqlSessionFactoryBean - Property 'mapperLocations' was not specified. -2025-06-23 07:31:37 [main] WARN o.s.b.a.o.j.JpaBaseConfiguration$JpaWebConfiguration - spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning -2025-06-23 07:31:39 [main] WARN c.b.m.core.metadata.TableInfoHelper - Can not find table primary key in Class: "com.agricultural.stock.entity.TechnicalIndicator". -2025-06-23 07:31:39 [main] WARN c.b.m.c.injector.DefaultSqlInjector - class com.agricultural.stock.entity.TechnicalIndicator ,Not found @TableId annotation, Cannot use Mybatis-Plus 'xxById' Method. -2025-06-23 07:31:39 [main] INFO c.a.s.AgriculturalStockPlatformApplication - Started AgriculturalStockPlatformApplication in 8.129 seconds (JVM running for 10.52) -2025-06-23 07:32:56 [http-nio-8080-exec-1] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring DispatcherServlet 'dispatcherServlet' -2025-06-23 07:32:56 [http-nio-8080-exec-1] DEBUG c.a.s.m.M.getRecentMarketAnalysis - ==> Preparing: SELECT * FROM market_analysis ORDER BY analysis_date DESC LIMIT ? -2025-06-23 07:32:56 [http-nio-8080-exec-2] DEBUG c.a.s.m.M.getLatestMarketAnalysis - ==> Preparing: SELECT * FROM market_analysis ORDER BY analysis_date DESC LIMIT 1 -2025-06-23 07:32:56 [http-nio-8080-exec-2] DEBUG c.a.s.m.M.getLatestMarketAnalysis - ==> Parameters: -2025-06-23 07:32:56 [http-nio-8080-exec-1] DEBUG c.a.s.m.M.getRecentMarketAnalysis - ==> Parameters: 7(Integer) -2025-06-23 07:32:56 [http-nio-8080-exec-2] DEBUG c.a.s.m.M.getLatestMarketAnalysis - <== Total: 1 -2025-06-23 07:32:56 [http-nio-8080-exec-1] DEBUG c.a.s.m.M.getRecentMarketAnalysis - <== Total: 6 -2025-06-23 07:33:26 [http-nio-8080-exec-3] DEBUG c.a.s.m.S.getTopGainers - ==> Preparing: SELECT * FROM stock_data WHERE DATE(trade_date) = (SELECT MAX(DATE(trade_date)) FROM stock_data) ORDER BY change_percent DESC LIMIT ? -2025-06-23 07:33:26 [http-nio-8080-exec-3] DEBUG c.a.s.m.S.getTopGainers - ==> Parameters: 10(Integer) -2025-06-23 07:33:26 [http-nio-8080-exec-3] DEBUG c.a.s.m.S.getTopGainers - <== Total: 10 -2025-06-23 07:33:29 [http-nio-8080-exec-4] DEBUG c.a.s.m.S.getLatestStockData - ==> Preparing: SELECT * FROM stock_data WHERE DATE(trade_date) = (SELECT MAX(DATE(trade_date)) FROM stock_data) -2025-06-23 07:33:29 [http-nio-8080-exec-4] DEBUG c.a.s.m.S.getLatestStockData - ==> Parameters: -2025-06-23 07:33:29 [http-nio-8080-exec-4] DEBUG c.a.s.m.S.getLatestStockData - <== Total: 67 -2025-06-23 07:33:29 [http-nio-8080-exec-7] DEBUG c.a.s.m.S.getStockHistoryData - ==> Preparing: SELECT * FROM stock_data WHERE stock_code = ? ORDER BY trade_date DESC LIMIT ? -2025-06-23 07:33:29 [http-nio-8080-exec-7] DEBUG c.a.s.m.S.getStockHistoryData - ==> Parameters: sz300505(String), 30(Integer) -2025-06-23 07:33:29 [http-nio-8080-exec-7] DEBUG c.a.s.m.S.getStockHistoryData - <== Total: 4 -2025-06-23 07:33:29 [http-nio-8080-exec-6] DEBUG c.a.s.m.S.getStockHistoryData - ==> Preparing: SELECT * FROM stock_data WHERE stock_code = ? ORDER BY trade_date DESC LIMIT ? -2025-06-23 07:33:29 [http-nio-8080-exec-6] DEBUG c.a.s.m.S.getStockHistoryData - ==> Parameters: sz300505(String), 30(Integer) -2025-06-23 07:33:29 [http-nio-8080-exec-6] DEBUG c.a.s.m.S.getStockHistoryData - <== Total: 4 -2025-06-23 07:33:29 [http-nio-8080-exec-5] INFO c.a.s.service.impl.StockServiceImpl - 生成股票预测数据,股票代码: sz300505, 预测天数: 7 -2025-06-23 07:33:29 [http-nio-8080-exec-5] DEBUG c.a.s.m.S.getStockHistoryData - ==> Preparing: SELECT * FROM stock_data WHERE stock_code = ? ORDER BY trade_date DESC LIMIT ? -2025-06-23 07:33:29 [http-nio-8080-exec-5] DEBUG c.a.s.m.S.getStockHistoryData - ==> Parameters: sz300505(String), 30(Integer) -2025-06-23 07:33:29 [http-nio-8080-exec-5] DEBUG c.a.s.m.S.getStockHistoryData - <== Total: 4 -2025-06-23 07:33:41 [http-nio-8080-exec-8] DEBUG c.a.s.m.S.getTopGainers - ==> Preparing: SELECT * FROM stock_data WHERE DATE(trade_date) = (SELECT MAX(DATE(trade_date)) FROM stock_data) ORDER BY change_percent DESC LIMIT ? -2025-06-23 07:33:41 [http-nio-8080-exec-8] DEBUG c.a.s.m.S.getTopGainers - ==> Parameters: 10(Integer) -2025-06-23 07:33:41 [http-nio-8080-exec-8] DEBUG c.a.s.m.S.getTopGainers - <== Total: 10 -2025-06-23 07:33:42 [http-nio-8080-exec-10] DEBUG c.a.s.m.M.getRecentMarketAnalysis - ==> Preparing: SELECT * FROM market_analysis ORDER BY analysis_date DESC LIMIT ? -2025-06-23 07:33:42 [http-nio-8080-exec-9] DEBUG c.a.s.m.M.getLatestMarketAnalysis - ==> Preparing: SELECT * FROM market_analysis ORDER BY analysis_date DESC LIMIT 1 -2025-06-23 07:33:42 [http-nio-8080-exec-9] DEBUG c.a.s.m.M.getLatestMarketAnalysis - ==> Parameters: -2025-06-23 07:33:42 [http-nio-8080-exec-10] DEBUG c.a.s.m.M.getRecentMarketAnalysis - ==> Parameters: 7(Integer) -2025-06-23 07:33:42 [http-nio-8080-exec-9] DEBUG c.a.s.m.M.getLatestMarketAnalysis - <== Total: 1 -2025-06-23 07:33:42 [http-nio-8080-exec-10] DEBUG c.a.s.m.M.getRecentMarketAnalysis - <== Total: 6 -2025-06-23 09:12:12 [http-nio-8080-exec-2] DEBUG c.a.s.m.M.getRecentMarketAnalysis - ==> Preparing: SELECT * FROM market_analysis ORDER BY analysis_date DESC LIMIT ? -2025-06-23 09:12:12 [http-nio-8080-exec-1] DEBUG c.a.s.m.M.getLatestMarketAnalysis - ==> Preparing: SELECT * FROM market_analysis ORDER BY analysis_date DESC LIMIT 1 -2025-06-23 09:12:12 [http-nio-8080-exec-1] DEBUG c.a.s.m.M.getLatestMarketAnalysis - ==> Parameters: -2025-06-23 09:12:12 [http-nio-8080-exec-2] DEBUG c.a.s.m.M.getRecentMarketAnalysis - ==> Parameters: 7(Integer) -2025-06-23 09:12:12 [http-nio-8080-exec-1] DEBUG c.a.s.m.M.getLatestMarketAnalysis - <== Total: 1 -2025-06-23 09:12:12 [http-nio-8080-exec-2] DEBUG c.a.s.m.M.getRecentMarketAnalysis - <== Total: 2 -2025-06-23 09:12:25 [http-nio-8080-exec-3] DEBUG c.a.s.m.S.getLatestStockData - ==> Preparing: SELECT * FROM stock_data WHERE DATE(trade_date) = (SELECT MAX(DATE(trade_date)) FROM stock_data) -2025-06-23 09:12:25 [http-nio-8080-exec-3] DEBUG c.a.s.m.S.getLatestStockData - ==> Parameters: -2025-06-23 09:12:25 [http-nio-8080-exec-3] DEBUG c.a.s.m.S.getLatestStockData - <== Total: 66 -2025-06-23 09:12:41 [http-nio-8080-exec-4] DEBUG c.a.s.m.S.getTopGainers - ==> Preparing: SELECT * FROM stock_data WHERE DATE(trade_date) = (SELECT MAX(DATE(trade_date)) FROM stock_data) ORDER BY change_percent DESC LIMIT ? -2025-06-23 09:12:41 [http-nio-8080-exec-4] DEBUG c.a.s.m.S.getTopGainers - ==> Parameters: 10(Integer) -2025-06-23 09:12:41 [http-nio-8080-exec-4] DEBUG c.a.s.m.S.getTopGainers - <== Total: 10 -2025-06-23 09:16:47 [http-nio-8080-exec-7] DEBUG c.a.s.m.S.getLatestStockData - ==> Preparing: SELECT * FROM stock_data WHERE DATE(trade_date) = (SELECT MAX(DATE(trade_date)) FROM stock_data) -2025-06-23 09:16:47 [http-nio-8080-exec-7] DEBUG c.a.s.m.S.getLatestStockData - ==> Parameters: -2025-06-23 09:16:47 [http-nio-8080-exec-7] DEBUG c.a.s.m.S.getLatestStockData - <== Total: 66 -2025-06-23 09:16:47 [http-nio-8080-exec-6] DEBUG c.a.s.m.StockDataMapper.getTopVolume - ==> Preparing: SELECT * FROM stock_data WHERE DATE(trade_date) = (SELECT MAX(DATE(trade_date)) FROM stock_data) ORDER BY volume DESC LIMIT ? -2025-06-23 09:16:47 [http-nio-8080-exec-6] DEBUG c.a.s.m.StockDataMapper.getTopVolume - ==> Parameters: 10(Integer) -2025-06-23 09:16:47 [http-nio-8080-exec-6] DEBUG c.a.s.m.StockDataMapper.getTopVolume - <== Total: 10 -2025-06-23 09:16:49 [http-nio-8080-exec-5] DEBUG c.a.s.m.S.getLatestStockData - ==> Preparing: SELECT * FROM stock_data WHERE DATE(trade_date) = (SELECT MAX(DATE(trade_date)) FROM stock_data) -2025-06-23 09:16:49 [http-nio-8080-exec-5] DEBUG c.a.s.m.S.getLatestStockData - ==> Parameters: -2025-06-23 09:16:49 [http-nio-8080-exec-5] DEBUG c.a.s.m.S.getLatestStockData - <== Total: 66 -2025-06-23 09:16:53 [http-nio-8080-exec-8] DEBUG c.a.s.m.StockDataMapper.getTopVolume - ==> Preparing: SELECT * FROM stock_data WHERE DATE(trade_date) = (SELECT MAX(DATE(trade_date)) FROM stock_data) ORDER BY volume DESC LIMIT ? -2025-06-23 09:16:53 [http-nio-8080-exec-8] DEBUG c.a.s.m.StockDataMapper.getTopVolume - ==> Parameters: 10(Integer) -2025-06-23 09:16:53 [http-nio-8080-exec-8] DEBUG c.a.s.m.StockDataMapper.getTopVolume - <== Total: 10 -2025-06-23 09:16:55 [http-nio-8080-exec-9] DEBUG c.a.s.m.S.getTopGainers - ==> Preparing: SELECT * FROM stock_data WHERE DATE(trade_date) = (SELECT MAX(DATE(trade_date)) FROM stock_data) ORDER BY change_percent DESC LIMIT ? -2025-06-23 09:16:55 [http-nio-8080-exec-9] DEBUG c.a.s.m.S.getTopGainers - ==> Parameters: 10(Integer) -2025-06-23 09:16:55 [http-nio-8080-exec-9] DEBUG c.a.s.m.S.getTopGainers - <== Total: 10 -2025-06-23 09:28:04 [http-nio-8080-exec-2] DEBUG c.a.s.m.M.getLatestMarketAnalysis - ==> Preparing: SELECT * FROM market_analysis ORDER BY analysis_date DESC LIMIT 1 -2025-06-23 09:28:04 [http-nio-8080-exec-10] DEBUG c.a.s.m.M.getRecentMarketAnalysis - ==> Preparing: SELECT * FROM market_analysis ORDER BY analysis_date DESC LIMIT ? -2025-06-23 09:28:04 [http-nio-8080-exec-2] DEBUG c.a.s.m.M.getLatestMarketAnalysis - ==> Parameters: -2025-06-23 09:28:04 [http-nio-8080-exec-10] DEBUG c.a.s.m.M.getRecentMarketAnalysis - ==> Parameters: 7(Integer) -2025-06-23 09:28:04 [http-nio-8080-exec-10] DEBUG c.a.s.m.M.getRecentMarketAnalysis - <== Total: 3 -2025-06-23 09:28:04 [http-nio-8080-exec-2] DEBUG c.a.s.m.M.getLatestMarketAnalysis - <== Total: 1 -2025-06-23 09:28:21 [http-nio-8080-exec-1] DEBUG c.a.s.m.S.getLatestStockData - ==> Preparing: SELECT * FROM stock_data WHERE DATE(trade_date) = (SELECT MAX(DATE(trade_date)) FROM stock_data) -2025-06-23 09:28:21 [http-nio-8080-exec-1] DEBUG c.a.s.m.S.getLatestStockData - ==> Parameters: -2025-06-23 09:28:21 [http-nio-8080-exec-1] DEBUG c.a.s.m.S.getLatestStockData - <== Total: 66 -2025-06-23 09:28:25 [http-nio-8080-exec-3] DEBUG c.a.s.m.M.getLatestMarketAnalysis - ==> Preparing: SELECT * FROM market_analysis ORDER BY analysis_date DESC LIMIT 1 -2025-06-23 09:28:25 [http-nio-8080-exec-3] DEBUG c.a.s.m.M.getLatestMarketAnalysis - ==> Parameters: -2025-06-23 09:28:25 [http-nio-8080-exec-3] DEBUG c.a.s.m.M.getLatestMarketAnalysis - <== Total: 1 -2025-06-23 09:28:25 [http-nio-8080-exec-4] DEBUG c.a.s.m.M.getRecentMarketAnalysis - ==> Preparing: SELECT * FROM market_analysis ORDER BY analysis_date DESC LIMIT ? -2025-06-23 09:28:25 [http-nio-8080-exec-4] DEBUG c.a.s.m.M.getRecentMarketAnalysis - ==> Parameters: 7(Integer) -2025-06-23 09:28:25 [http-nio-8080-exec-4] DEBUG c.a.s.m.M.getRecentMarketAnalysis - <== Total: 3 -2025-06-23 09:29:21 [http-nio-8080-exec-7] DEBUG c.a.s.m.S.getTopGainers - ==> Preparing: SELECT * FROM stock_data WHERE DATE(trade_date) = (SELECT MAX(DATE(trade_date)) FROM stock_data) ORDER BY change_percent DESC LIMIT ? -2025-06-23 09:29:21 [http-nio-8080-exec-7] DEBUG c.a.s.m.S.getTopGainers - ==> Parameters: 10(Integer) -2025-06-23 09:29:21 [http-nio-8080-exec-7] DEBUG c.a.s.m.S.getTopGainers - <== Total: 10 -2025-06-23 09:29:21 [http-nio-8080-exec-6] DEBUG c.a.s.m.M.getLatestMarketAnalysis - ==> Preparing: SELECT * FROM market_analysis ORDER BY analysis_date DESC LIMIT 1 -2025-06-23 09:29:21 [http-nio-8080-exec-6] DEBUG c.a.s.m.M.getLatestMarketAnalysis - ==> Parameters: -2025-06-23 09:29:21 [http-nio-8080-exec-6] DEBUG c.a.s.m.M.getLatestMarketAnalysis - <== Total: 1 -2025-06-23 09:29:22 [http-nio-8080-exec-5] DEBUG c.a.s.m.M.getRecentMarketAnalysis - ==> Preparing: SELECT * FROM market_analysis ORDER BY analysis_date DESC LIMIT ? -2025-06-23 09:29:22 [http-nio-8080-exec-5] DEBUG c.a.s.m.M.getRecentMarketAnalysis - ==> Parameters: 30(Integer) -2025-06-23 09:29:22 [http-nio-8080-exec-5] DEBUG c.a.s.m.M.getRecentMarketAnalysis - <== Total: 3 -2025-06-23 09:30:56 [http-nio-8080-exec-8] DEBUG c.a.s.m.M.getLatestMarketAnalysis - ==> Preparing: SELECT * FROM market_analysis ORDER BY analysis_date DESC LIMIT 1 -2025-06-23 09:30:56 [http-nio-8080-exec-8] DEBUG c.a.s.m.M.getLatestMarketAnalysis - ==> Parameters: -2025-06-23 09:30:56 [http-nio-8080-exec-8] DEBUG c.a.s.m.M.getLatestMarketAnalysis - <== Total: 1 -2025-06-23 09:30:56 [http-nio-8080-exec-9] DEBUG c.a.s.m.M.getRecentMarketAnalysis - ==> Preparing: SELECT * FROM market_analysis ORDER BY analysis_date DESC LIMIT ? -2025-06-23 09:30:56 [http-nio-8080-exec-9] DEBUG c.a.s.m.M.getRecentMarketAnalysis - ==> Parameters: 30(Integer) -2025-06-23 09:30:56 [http-nio-8080-exec-9] DEBUG c.a.s.m.M.getRecentMarketAnalysis - <== Total: 3 -2025-06-23 09:32:01 [http-nio-8080-exec-2] DEBUG c.a.s.m.M.getLatestMarketAnalysis - ==> Preparing: SELECT * FROM market_analysis ORDER BY analysis_date DESC LIMIT 1 -2025-06-23 09:32:01 [http-nio-8080-exec-2] DEBUG c.a.s.m.M.getLatestMarketAnalysis - ==> Parameters: -2025-06-23 09:32:01 [http-nio-8080-exec-10] DEBUG c.a.s.m.M.getRecentMarketAnalysis - ==> Preparing: SELECT * FROM market_analysis ORDER BY analysis_date DESC LIMIT ? -2025-06-23 09:32:01 [http-nio-8080-exec-10] DEBUG c.a.s.m.M.getRecentMarketAnalysis - ==> Parameters: 7(Integer) -2025-06-23 09:32:01 [http-nio-8080-exec-2] DEBUG c.a.s.m.M.getLatestMarketAnalysis - <== Total: 1 -2025-06-23 09:32:01 [http-nio-8080-exec-10] DEBUG c.a.s.m.M.getRecentMarketAnalysis - <== Total: 3 -2025-06-23 09:32:11 [http-nio-8080-exec-1] DEBUG c.a.s.m.M.getLatestMarketAnalysis - ==> Preparing: SELECT * FROM market_analysis ORDER BY analysis_date DESC LIMIT 1 -2025-06-23 09:32:11 [http-nio-8080-exec-1] DEBUG c.a.s.m.M.getLatestMarketAnalysis - ==> Parameters: -2025-06-23 09:32:11 [http-nio-8080-exec-1] DEBUG c.a.s.m.M.getLatestMarketAnalysis - <== Total: 1 -2025-06-23 09:32:11 [http-nio-8080-exec-3] DEBUG c.a.s.m.M.getRecentMarketAnalysis - ==> Preparing: SELECT * FROM market_analysis ORDER BY analysis_date DESC LIMIT ? -2025-06-23 09:32:11 [http-nio-8080-exec-3] DEBUG c.a.s.m.M.getRecentMarketAnalysis - ==> Parameters: 30(Integer) -2025-06-23 09:32:11 [http-nio-8080-exec-3] DEBUG c.a.s.m.M.getRecentMarketAnalysis - <== Total: 3 -2025-06-23 09:32:18 [http-nio-8080-exec-4] DEBUG c.a.s.m.M.getRecentMarketAnalysis - ==> Preparing: SELECT * FROM market_analysis ORDER BY analysis_date DESC LIMIT ? -2025-06-23 09:32:18 [http-nio-8080-exec-4] DEBUG c.a.s.m.M.getRecentMarketAnalysis - ==> Parameters: 30(Integer) -2025-06-23 09:32:18 [http-nio-8080-exec-4] DEBUG c.a.s.m.M.getRecentMarketAnalysis - <== Total: 3 -2025-06-23 09:32:27 [http-nio-8080-exec-7] DEBUG c.a.s.m.M.getLatestMarketAnalysis - ==> Preparing: SELECT * FROM market_analysis ORDER BY analysis_date DESC LIMIT 1 -2025-06-23 09:32:27 [http-nio-8080-exec-7] DEBUG c.a.s.m.M.getLatestMarketAnalysis - ==> Parameters: -2025-06-23 09:32:27 [http-nio-8080-exec-7] DEBUG c.a.s.m.M.getLatestMarketAnalysis - <== Total: 1 -2025-06-23 09:32:28 [http-nio-8080-exec-6] DEBUG c.a.s.m.M.getRecentMarketAnalysis - ==> Preparing: SELECT * FROM market_analysis ORDER BY analysis_date DESC LIMIT ? -2025-06-23 09:32:28 [http-nio-8080-exec-6] DEBUG c.a.s.m.M.getRecentMarketAnalysis - ==> Parameters: 7(Integer) -2025-06-23 09:32:28 [http-nio-8080-exec-6] DEBUG c.a.s.m.M.getRecentMarketAnalysis - <== Total: 3 -2025-06-23 09:32:47 [http-nio-8080-exec-8] DEBUG c.a.s.m.M.getRecentMarketAnalysis - ==> Preparing: SELECT * FROM market_analysis ORDER BY analysis_date DESC LIMIT ? -2025-06-23 09:32:47 [http-nio-8080-exec-5] DEBUG c.a.s.m.M.getLatestMarketAnalysis - ==> Preparing: SELECT * FROM market_analysis ORDER BY analysis_date DESC LIMIT 1 -2025-06-23 09:32:48 [http-nio-8080-exec-8] DEBUG c.a.s.m.M.getRecentMarketAnalysis - ==> Parameters: 7(Integer) -2025-06-23 09:32:48 [http-nio-8080-exec-5] DEBUG c.a.s.m.M.getLatestMarketAnalysis - ==> Parameters: -2025-06-23 09:32:48 [http-nio-8080-exec-8] DEBUG c.a.s.m.M.getRecentMarketAnalysis - <== Total: 3 -2025-06-23 09:32:48 [http-nio-8080-exec-5] DEBUG c.a.s.m.M.getLatestMarketAnalysis - <== Total: 1 -2025-06-23 09:32:54 [http-nio-8080-exec-9] DEBUG c.a.s.m.S.getTopGainers - ==> Preparing: SELECT * FROM stock_data WHERE DATE(trade_date) = (SELECT MAX(DATE(trade_date)) FROM stock_data) ORDER BY change_percent DESC LIMIT ? -2025-06-23 09:32:54 [http-nio-8080-exec-9] DEBUG c.a.s.m.S.getTopGainers - ==> Parameters: 10(Integer) -2025-06-23 09:32:54 [http-nio-8080-exec-9] DEBUG c.a.s.m.S.getTopGainers - <== Total: 10 -2025-06-23 09:33:00 [http-nio-8080-exec-2] DEBUG c.a.s.m.M.getLatestMarketAnalysis - ==> Preparing: SELECT * FROM market_analysis ORDER BY analysis_date DESC LIMIT 1 -2025-06-23 09:33:00 [http-nio-8080-exec-2] DEBUG c.a.s.m.M.getLatestMarketAnalysis - ==> Parameters: -2025-06-23 09:33:00 [http-nio-8080-exec-2] DEBUG c.a.s.m.M.getLatestMarketAnalysis - <== Total: 1 -2025-06-23 09:33:00 [http-nio-8080-exec-10] DEBUG c.a.s.m.M.getRecentMarketAnalysis - ==> Preparing: SELECT * FROM market_analysis ORDER BY analysis_date DESC LIMIT ? -2025-06-23 09:33:00 [http-nio-8080-exec-10] DEBUG c.a.s.m.M.getRecentMarketAnalysis - ==> Parameters: 30(Integer) -2025-06-23 09:33:00 [http-nio-8080-exec-10] DEBUG c.a.s.m.M.getRecentMarketAnalysis - <== Total: 3 -2025-06-23 09:33:28 [http-nio-8080-exec-1] DEBUG c.a.s.m.S.getLatestStockData - ==> Preparing: SELECT * FROM stock_data WHERE DATE(trade_date) = (SELECT MAX(DATE(trade_date)) FROM stock_data) -2025-06-23 09:33:28 [http-nio-8080-exec-1] DEBUG c.a.s.m.S.getLatestStockData - ==> Parameters: -2025-06-23 09:33:28 [http-nio-8080-exec-1] DEBUG c.a.s.m.S.getLatestStockData - <== Total: 66 -2025-06-23 09:33:30 [http-nio-8080-exec-3] DEBUG c.a.s.m.S.getStockHistoryData - ==> Preparing: SELECT * FROM stock_data WHERE stock_code = ? ORDER BY trade_date DESC LIMIT ? -2025-06-23 09:33:30 [http-nio-8080-exec-3] DEBUG c.a.s.m.S.getStockHistoryData - ==> Parameters: sz300189(String), 30(Integer) -2025-06-23 09:33:30 [http-nio-8080-exec-3] DEBUG c.a.s.m.S.getStockHistoryData - <== Total: 3 -2025-06-23 09:33:44 [http-nio-8080-exec-4] DEBUG c.a.s.m.S.getLatestStockData - ==> Preparing: SELECT * FROM stock_data WHERE DATE(trade_date) = (SELECT MAX(DATE(trade_date)) FROM stock_data) -2025-06-23 09:33:44 [http-nio-8080-exec-4] DEBUG c.a.s.m.S.getLatestStockData - ==> Parameters: -2025-06-23 09:33:44 [http-nio-8080-exec-4] DEBUG c.a.s.m.S.getLatestStockData - <== Total: 66 -2025-06-23 09:33:46 [http-nio-8080-exec-7] DEBUG c.a.s.m.S.getStockHistoryData - ==> Preparing: SELECT * FROM stock_data WHERE stock_code = ? ORDER BY trade_date DESC LIMIT ? -2025-06-23 09:33:46 [http-nio-8080-exec-7] DEBUG c.a.s.m.S.getStockHistoryData - ==> Parameters: sh600251(String), 30(Integer) -2025-06-23 09:33:46 [http-nio-8080-exec-7] DEBUG c.a.s.m.S.getStockHistoryData - <== Total: 3 -2025-06-23 09:33:53 [http-nio-8080-exec-6] DEBUG c.a.s.m.S.getLatestStockData - ==> Preparing: SELECT * FROM stock_data WHERE DATE(trade_date) = (SELECT MAX(DATE(trade_date)) FROM stock_data) -2025-06-23 09:33:53 [http-nio-8080-exec-6] DEBUG c.a.s.m.S.getLatestStockData - ==> Parameters: -2025-06-23 09:33:53 [http-nio-8080-exec-6] DEBUG c.a.s.m.S.getLatestStockData - <== Total: 66 -2025-06-23 09:33:55 [http-nio-8080-exec-8] DEBUG c.a.s.m.S.getLatestStockData - ==> Preparing: SELECT * FROM stock_data WHERE DATE(trade_date) = (SELECT MAX(DATE(trade_date)) FROM stock_data) -2025-06-23 09:33:55 [http-nio-8080-exec-8] DEBUG c.a.s.m.S.getLatestStockData - ==> Parameters: -2025-06-23 09:33:55 [http-nio-8080-exec-8] DEBUG c.a.s.m.S.getLatestStockData - <== Total: 66 -2025-06-23 09:33:55 [http-nio-8080-exec-5] INFO c.a.s.service.impl.StockServiceImpl - 生成股票预测数据,股票代码: sh600251, 预测天数: 7 -2025-06-23 09:33:55 [http-nio-8080-exec-5] DEBUG c.a.s.m.S.getStockHistoryData - ==> Preparing: SELECT * FROM stock_data WHERE stock_code = ? ORDER BY trade_date DESC LIMIT ? -2025-06-23 09:33:55 [http-nio-8080-exec-5] DEBUG c.a.s.m.S.getStockHistoryData - ==> Parameters: sh600251(String), 30(Integer) -2025-06-23 09:33:55 [http-nio-8080-exec-5] DEBUG c.a.s.m.S.getStockHistoryData - <== Total: 3 -2025-06-23 09:34:09 [http-nio-8080-exec-9] DEBUG c.a.s.m.S.getLatestStockData - ==> Preparing: SELECT * FROM stock_data WHERE DATE(trade_date) = (SELECT MAX(DATE(trade_date)) FROM stock_data) -2025-06-23 09:34:09 [http-nio-8080-exec-9] DEBUG c.a.s.m.S.getLatestStockData - ==> Parameters: -2025-06-23 09:34:09 [http-nio-8080-exec-9] DEBUG c.a.s.m.S.getLatestStockData - <== Total: 66 -2025-06-23 09:34:11 [http-nio-8080-exec-2] DEBUG c.a.s.m.M.getLatestMarketAnalysis - ==> Preparing: SELECT * FROM market_analysis ORDER BY analysis_date DESC LIMIT 1 -2025-06-23 09:34:11 [http-nio-8080-exec-2] DEBUG c.a.s.m.M.getLatestMarketAnalysis - ==> Parameters: -2025-06-23 09:34:11 [http-nio-8080-exec-2] DEBUG c.a.s.m.M.getLatestMarketAnalysis - <== Total: 1 -2025-06-23 09:34:11 [http-nio-8080-exec-10] DEBUG c.a.s.m.M.getRecentMarketAnalysis - ==> Preparing: SELECT * FROM market_analysis ORDER BY analysis_date DESC LIMIT ? -2025-06-23 09:34:11 [http-nio-8080-exec-10] DEBUG c.a.s.m.M.getRecentMarketAnalysis - ==> Parameters: 7(Integer) -2025-06-23 09:34:11 [http-nio-8080-exec-10] DEBUG c.a.s.m.M.getRecentMarketAnalysis - <== Total: 3 -2025-06-23 09:35:08 [http-nio-8080-exec-1] DEBUG c.a.s.m.S.getLatestStockData - ==> Preparing: SELECT * FROM stock_data WHERE DATE(trade_date) = (SELECT MAX(DATE(trade_date)) FROM stock_data) -2025-06-23 09:35:08 [http-nio-8080-exec-1] DEBUG c.a.s.m.S.getLatestStockData - ==> Parameters: -2025-06-23 09:35:08 [http-nio-8080-exec-1] DEBUG c.a.s.m.S.getLatestStockData - <== Total: 66 -2025-06-23 09:35:08 [http-nio-8080-exec-3] DEBUG c.a.s.m.M.getLatestMarketAnalysis - ==> Preparing: SELECT * FROM market_analysis ORDER BY analysis_date DESC LIMIT 1 -2025-06-23 09:35:08 [http-nio-8080-exec-3] DEBUG c.a.s.m.M.getLatestMarketAnalysis - ==> Parameters: -2025-06-23 09:35:08 [http-nio-8080-exec-3] DEBUG c.a.s.m.M.getLatestMarketAnalysis - <== Total: 1 -2025-06-23 09:35:08 [http-nio-8080-exec-4] DEBUG c.a.s.m.M.getRecentMarketAnalysis - ==> Preparing: SELECT * FROM market_analysis ORDER BY analysis_date DESC LIMIT ? -2025-06-23 09:35:08 [http-nio-8080-exec-4] DEBUG c.a.s.m.M.getRecentMarketAnalysis - ==> Parameters: 7(Integer) -2025-06-23 09:35:08 [http-nio-8080-exec-4] DEBUG c.a.s.m.M.getRecentMarketAnalysis - <== Total: 3 -2025-06-23 09:35:08 [http-nio-8080-exec-7] DEBUG c.a.s.m.S.getTopGainers - ==> Preparing: SELECT * FROM stock_data WHERE DATE(trade_date) = (SELECT MAX(DATE(trade_date)) FROM stock_data) ORDER BY change_percent DESC LIMIT ? -2025-06-23 09:35:08 [http-nio-8080-exec-7] DEBUG c.a.s.m.S.getTopGainers - ==> Parameters: 10(Integer) -2025-06-23 09:35:08 [http-nio-8080-exec-7] DEBUG c.a.s.m.S.getTopGainers - <== Total: 10 -2025-06-23 09:35:09 [http-nio-8080-exec-6] DEBUG c.a.s.m.M.getLatestMarketAnalysis - ==> Preparing: SELECT * FROM market_analysis ORDER BY analysis_date DESC LIMIT 1 -2025-06-23 09:35:09 [http-nio-8080-exec-6] DEBUG c.a.s.m.M.getLatestMarketAnalysis - ==> Parameters: -2025-06-23 09:35:09 [http-nio-8080-exec-6] DEBUG c.a.s.m.M.getLatestMarketAnalysis - <== Total: 1 -2025-06-23 09:35:09 [http-nio-8080-exec-8] DEBUG c.a.s.m.M.getRecentMarketAnalysis - ==> Preparing: SELECT * FROM market_analysis ORDER BY analysis_date DESC LIMIT ? -2025-06-23 09:35:09 [http-nio-8080-exec-8] DEBUG c.a.s.m.M.getRecentMarketAnalysis - ==> Parameters: 30(Integer) -2025-06-23 09:35:09 [http-nio-8080-exec-8] DEBUG c.a.s.m.M.getRecentMarketAnalysis - <== Total: 3 -2025-06-23 09:35:10 [http-nio-8080-exec-5] DEBUG c.a.s.m.M.getLatestMarketAnalysis - ==> Preparing: SELECT * FROM market_analysis ORDER BY analysis_date DESC LIMIT 1 -2025-06-23 09:35:10 [http-nio-8080-exec-5] DEBUG c.a.s.m.M.getLatestMarketAnalysis - ==> Parameters: -2025-06-23 09:35:10 [http-nio-8080-exec-5] DEBUG c.a.s.m.M.getLatestMarketAnalysis - <== Total: 1 -2025-06-23 09:35:10 [http-nio-8080-exec-9] DEBUG c.a.s.m.M.getRecentMarketAnalysis - ==> Preparing: SELECT * FROM market_analysis ORDER BY analysis_date DESC LIMIT ? -2025-06-23 09:35:10 [http-nio-8080-exec-9] DEBUG c.a.s.m.M.getRecentMarketAnalysis - ==> Parameters: 7(Integer) -2025-06-23 09:35:10 [http-nio-8080-exec-9] DEBUG c.a.s.m.M.getRecentMarketAnalysis - <== Total: 3 -2025-06-23 09:35:22 [http-nio-8080-exec-2] DEBUG c.a.s.m.M.getLatestMarketAnalysis - ==> Preparing: SELECT * FROM market_analysis ORDER BY analysis_date DESC LIMIT 1 -2025-06-23 09:35:22 [http-nio-8080-exec-2] DEBUG c.a.s.m.M.getLatestMarketAnalysis - ==> Parameters: -2025-06-23 09:35:22 [http-nio-8080-exec-2] DEBUG c.a.s.m.M.getLatestMarketAnalysis - <== Total: 1 -2025-06-23 09:35:22 [http-nio-8080-exec-10] DEBUG c.a.s.m.M.getRecentMarketAnalysis - ==> Preparing: SELECT * FROM market_analysis ORDER BY analysis_date DESC LIMIT ? -2025-06-23 09:35:22 [http-nio-8080-exec-10] DEBUG c.a.s.m.M.getRecentMarketAnalysis - ==> Parameters: 30(Integer) -2025-06-23 09:35:22 [http-nio-8080-exec-10] DEBUG c.a.s.m.M.getRecentMarketAnalysis - <== Total: 3 -2025-06-23 09:35:26 [http-nio-8080-exec-1] DEBUG c.a.s.m.S.getTopGainers - ==> Preparing: SELECT * FROM stock_data WHERE DATE(trade_date) = (SELECT MAX(DATE(trade_date)) FROM stock_data) ORDER BY change_percent DESC LIMIT ? -2025-06-23 09:35:26 [http-nio-8080-exec-1] DEBUG c.a.s.m.S.getTopGainers - ==> Parameters: 10(Integer) -2025-06-23 09:35:26 [http-nio-8080-exec-1] DEBUG c.a.s.m.S.getTopGainers - <== Total: 10 -2025-06-23 09:35:28 [http-nio-8080-exec-3] DEBUG c.a.s.m.StockDataMapper.getTopVolume - ==> Preparing: SELECT * FROM stock_data WHERE DATE(trade_date) = (SELECT MAX(DATE(trade_date)) FROM stock_data) ORDER BY volume DESC LIMIT ? -2025-06-23 09:35:28 [http-nio-8080-exec-3] DEBUG c.a.s.m.StockDataMapper.getTopVolume - ==> Parameters: 10(Integer) -2025-06-23 09:35:28 [http-nio-8080-exec-3] DEBUG c.a.s.m.StockDataMapper.getTopVolume - <== Total: 10 -2025-06-23 09:35:33 [http-nio-8080-exec-4] DEBUG c.a.s.m.S.getLatestStockData - ==> Preparing: SELECT * FROM stock_data WHERE DATE(trade_date) = (SELECT MAX(DATE(trade_date)) FROM stock_data) -2025-06-23 09:35:33 [http-nio-8080-exec-4] DEBUG c.a.s.m.S.getLatestStockData - ==> Parameters: -2025-06-23 09:35:33 [http-nio-8080-exec-4] DEBUG c.a.s.m.S.getLatestStockData - <== Total: 66 -2025-06-23 09:35:33 [http-nio-8080-exec-7] DEBUG c.a.s.m.S.getStockHistoryData - ==> Preparing: SELECT * FROM stock_data WHERE stock_code = ? ORDER BY trade_date DESC LIMIT ? -2025-06-23 09:35:33 [http-nio-8080-exec-7] DEBUG c.a.s.m.S.getStockHistoryData - ==> Parameters: sz002312(String), 30(Integer) -2025-06-23 09:35:33 [http-nio-8080-exec-7] DEBUG c.a.s.m.S.getStockHistoryData - <== Total: 3 -2025-06-23 09:35:33 [http-nio-8080-exec-6] DEBUG c.a.s.m.S.getStockHistoryData - ==> Preparing: SELECT * FROM stock_data WHERE stock_code = ? ORDER BY trade_date DESC LIMIT ? -2025-06-23 09:35:33 [http-nio-8080-exec-6] DEBUG c.a.s.m.S.getStockHistoryData - ==> Parameters: sz002312(String), 30(Integer) -2025-06-23 09:35:33 [http-nio-8080-exec-6] DEBUG c.a.s.m.S.getStockHistoryData - <== Total: 3 -2025-06-23 09:35:33 [http-nio-8080-exec-8] INFO c.a.s.service.impl.StockServiceImpl - 生成股票预测数据,股票代码: sz002312, 预测天数: 7 -2025-06-23 09:35:33 [http-nio-8080-exec-8] DEBUG c.a.s.m.S.getStockHistoryData - ==> Preparing: SELECT * FROM stock_data WHERE stock_code = ? ORDER BY trade_date DESC LIMIT ? -2025-06-23 09:35:33 [http-nio-8080-exec-8] DEBUG c.a.s.m.S.getStockHistoryData - ==> Parameters: sz002312(String), 30(Integer) -2025-06-23 09:35:33 [http-nio-8080-exec-8] DEBUG c.a.s.m.S.getStockHistoryData - <== Total: 3 -2025-06-23 09:35:49 [http-nio-8080-exec-5] DEBUG c.a.s.m.S.getTopGainers - ==> Preparing: SELECT * FROM stock_data WHERE DATE(trade_date) = (SELECT MAX(DATE(trade_date)) FROM stock_data) ORDER BY change_percent DESC LIMIT ? -2025-06-23 09:35:49 [http-nio-8080-exec-5] DEBUG c.a.s.m.S.getTopGainers - ==> Parameters: 10(Integer) -2025-06-23 09:35:49 [http-nio-8080-exec-5] DEBUG c.a.s.m.S.getTopGainers - <== Total: 10 -2025-06-23 09:35:51 [http-nio-8080-exec-9] DEBUG c.a.s.m.M.getLatestMarketAnalysis - ==> Preparing: SELECT * FROM market_analysis ORDER BY analysis_date DESC LIMIT 1 -2025-06-23 09:35:51 [http-nio-8080-exec-2] DEBUG c.a.s.m.M.getRecentMarketAnalysis - ==> Preparing: SELECT * FROM market_analysis ORDER BY analysis_date DESC LIMIT ? -2025-06-23 09:35:51 [http-nio-8080-exec-9] DEBUG c.a.s.m.M.getLatestMarketAnalysis - ==> Parameters: -2025-06-23 09:35:51 [http-nio-8080-exec-2] DEBUG c.a.s.m.M.getRecentMarketAnalysis - ==> Parameters: 7(Integer) -2025-06-23 09:35:51 [http-nio-8080-exec-9] DEBUG c.a.s.m.M.getLatestMarketAnalysis - <== Total: 1 -2025-06-23 09:35:51 [http-nio-8080-exec-2] DEBUG c.a.s.m.M.getRecentMarketAnalysis - <== Total: 3 -2025-06-23 09:40:34 [http-nio-8080-exec-10] DEBUG c.a.s.m.M.getLatestMarketAnalysis - ==> Preparing: SELECT * FROM market_analysis ORDER BY analysis_date DESC LIMIT 1 -2025-06-23 09:40:34 [http-nio-8080-exec-1] DEBUG c.a.s.m.M.getRecentMarketAnalysis - ==> Preparing: SELECT * FROM market_analysis ORDER BY analysis_date DESC LIMIT ? -2025-06-23 09:40:34 [http-nio-8080-exec-10] DEBUG c.a.s.m.M.getLatestMarketAnalysis - ==> Parameters: -2025-06-23 09:40:34 [http-nio-8080-exec-1] DEBUG c.a.s.m.M.getRecentMarketAnalysis - ==> Parameters: 7(Integer) -2025-06-23 09:40:34 [http-nio-8080-exec-1] DEBUG c.a.s.m.M.getRecentMarketAnalysis - <== Total: 4 -2025-06-23 09:40:34 [http-nio-8080-exec-10] DEBUG c.a.s.m.M.getLatestMarketAnalysis - <== Total: 1 -2025-06-23 09:40:47 [http-nio-8080-exec-3] DEBUG c.a.s.m.S.getLatestStockData - ==> Preparing: SELECT * FROM stock_data WHERE DATE(trade_date) = (SELECT MAX(DATE(trade_date)) FROM stock_data) -2025-06-23 09:40:47 [http-nio-8080-exec-3] DEBUG c.a.s.m.S.getLatestStockData - ==> Parameters: -2025-06-23 09:40:47 [http-nio-8080-exec-3] DEBUG c.a.s.m.S.getLatestStockData - <== Total: 67 -2025-06-23 09:40:48 [http-nio-8080-exec-4] DEBUG c.a.s.m.S.getTopGainers - ==> Preparing: SELECT * FROM stock_data WHERE DATE(trade_date) = (SELECT MAX(DATE(trade_date)) FROM stock_data) ORDER BY change_percent DESC LIMIT ? -2025-06-23 09:40:48 [http-nio-8080-exec-4] DEBUG c.a.s.m.S.getTopGainers - ==> Parameters: 10(Integer) -2025-06-23 09:40:48 [http-nio-8080-exec-4] DEBUG c.a.s.m.S.getTopGainers - <== Total: 10 -2025-06-23 09:40:49 [http-nio-8080-exec-7] DEBUG c.a.s.m.StockDataMapper.getTopVolume - ==> Preparing: SELECT * FROM stock_data WHERE DATE(trade_date) = (SELECT MAX(DATE(trade_date)) FROM stock_data) ORDER BY volume DESC LIMIT ? -2025-06-23 09:40:49 [http-nio-8080-exec-7] DEBUG c.a.s.m.StockDataMapper.getTopVolume - ==> Parameters: 10(Integer) -2025-06-23 09:40:49 [http-nio-8080-exec-7] DEBUG c.a.s.m.StockDataMapper.getTopVolume - <== Total: 10 -2025-06-23 09:40:50 [http-nio-8080-exec-6] DEBUG c.a.s.m.S.getLatestStockData - ==> Preparing: SELECT * FROM stock_data WHERE DATE(trade_date) = (SELECT MAX(DATE(trade_date)) FROM stock_data) -2025-06-23 09:40:50 [http-nio-8080-exec-6] DEBUG c.a.s.m.S.getLatestStockData - ==> Parameters: -2025-06-23 09:40:50 [http-nio-8080-exec-6] DEBUG c.a.s.m.S.getLatestStockData - <== Total: 67 -2025-06-23 09:40:51 [http-nio-8080-exec-8] DEBUG c.a.s.m.S.getTopGainers - ==> Preparing: SELECT * FROM stock_data WHERE DATE(trade_date) = (SELECT MAX(DATE(trade_date)) FROM stock_data) ORDER BY change_percent DESC LIMIT ? -2025-06-23 09:40:51 [http-nio-8080-exec-8] DEBUG c.a.s.m.S.getTopGainers - ==> Parameters: 10(Integer) -2025-06-23 09:40:51 [http-nio-8080-exec-8] DEBUG c.a.s.m.S.getTopGainers - <== Total: 10 -2025-06-23 09:40:52 [http-nio-8080-exec-5] DEBUG c.a.s.m.StockDataMapper.getTopVolume - ==> Preparing: SELECT * FROM stock_data WHERE DATE(trade_date) = (SELECT MAX(DATE(trade_date)) FROM stock_data) ORDER BY volume DESC LIMIT ? -2025-06-23 09:40:52 [http-nio-8080-exec-5] DEBUG c.a.s.m.StockDataMapper.getTopVolume - ==> Parameters: 10(Integer) -2025-06-23 09:40:52 [http-nio-8080-exec-5] DEBUG c.a.s.m.StockDataMapper.getTopVolume - <== Total: 10 -2025-06-23 09:45:37 [http-nio-8080-exec-9] DEBUG c.a.s.m.M.getRecentMarketAnalysis - ==> Preparing: SELECT * FROM market_analysis ORDER BY analysis_date DESC LIMIT ? -2025-06-23 09:45:37 [http-nio-8080-exec-2] DEBUG c.a.s.m.M.getLatestMarketAnalysis - ==> Preparing: SELECT * FROM market_analysis ORDER BY analysis_date DESC LIMIT 1 -2025-06-23 09:45:37 [http-nio-8080-exec-9] DEBUG c.a.s.m.M.getRecentMarketAnalysis - ==> Parameters: 7(Integer) -2025-06-23 09:45:37 [http-nio-8080-exec-2] DEBUG c.a.s.m.M.getLatestMarketAnalysis - ==> Parameters: -2025-06-23 09:45:37 [http-nio-8080-exec-2] DEBUG c.a.s.m.M.getLatestMarketAnalysis - <== Total: 1 -2025-06-23 09:45:37 [http-nio-8080-exec-9] DEBUG c.a.s.m.M.getRecentMarketAnalysis - <== Total: 4 -2025-06-23 09:45:49 [http-nio-8080-exec-1] DEBUG c.a.s.m.S.getTopGainers - ==> Preparing: SELECT * FROM stock_data WHERE DATE(trade_date) = (SELECT MAX(DATE(trade_date)) FROM stock_data) ORDER BY change_percent DESC LIMIT ? -2025-06-23 09:45:49 [http-nio-8080-exec-1] DEBUG c.a.s.m.S.getTopGainers - ==> Parameters: 10(Integer) -2025-06-23 09:45:49 [http-nio-8080-exec-1] DEBUG c.a.s.m.S.getTopGainers - <== Total: 10 -2025-06-23 09:45:52 [http-nio-8080-exec-10] DEBUG c.a.s.m.M.getLatestMarketAnalysis - ==> Preparing: SELECT * FROM market_analysis ORDER BY analysis_date DESC LIMIT 1 -2025-06-23 09:45:52 [http-nio-8080-exec-10] DEBUG c.a.s.m.M.getLatestMarketAnalysis - ==> Parameters: -2025-06-23 09:45:52 [http-nio-8080-exec-10] DEBUG c.a.s.m.M.getLatestMarketAnalysis - <== Total: 1 -2025-06-23 09:45:52 [http-nio-8080-exec-3] DEBUG c.a.s.m.M.getRecentMarketAnalysis - ==> Preparing: SELECT * FROM market_analysis ORDER BY analysis_date DESC LIMIT ? -2025-06-23 09:45:52 [http-nio-8080-exec-3] DEBUG c.a.s.m.M.getRecentMarketAnalysis - ==> Parameters: 30(Integer) -2025-06-23 09:45:52 [http-nio-8080-exec-3] DEBUG c.a.s.m.M.getRecentMarketAnalysis - <== Total: 4 -2025-06-23 09:46:00 [http-nio-8080-exec-4] DEBUG c.a.s.m.M.getLatestMarketAnalysis - ==> Preparing: SELECT * FROM market_analysis ORDER BY analysis_date DESC LIMIT 1 -2025-06-23 09:46:00 [http-nio-8080-exec-7] DEBUG c.a.s.m.M.getRecentMarketAnalysis - ==> Preparing: SELECT * FROM market_analysis ORDER BY analysis_date DESC LIMIT ? -2025-06-23 09:46:00 [http-nio-8080-exec-4] DEBUG c.a.s.m.M.getLatestMarketAnalysis - ==> Parameters: -2025-06-23 09:46:00 [http-nio-8080-exec-7] DEBUG c.a.s.m.M.getRecentMarketAnalysis - ==> Parameters: 7(Integer) -2025-06-23 09:46:00 [http-nio-8080-exec-4] DEBUG c.a.s.m.M.getLatestMarketAnalysis - <== Total: 1 -2025-06-23 09:46:00 [http-nio-8080-exec-7] DEBUG c.a.s.m.M.getRecentMarketAnalysis - <== Total: 4 -2025-06-23 09:46:18 [SpringApplicationShutdownHook] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Shutdown initiated... -2025-06-23 09:46:18 [SpringApplicationShutdownHook] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Shutdown completed. +2025-06-24 11:45:50 [main] INFO c.a.s.AgriculturalStockPlatformApplication - Starting AgriculturalStockPlatformApplication using Java 1.8.0_202 on WIN11 with PID 23408 (D:\VScodeProject\work_4\backend\target\classes started by shenjianZ in D:\VScodeProject\work_4) +2025-06-24 11:45:50 [main] DEBUG c.a.s.AgriculturalStockPlatformApplication - Running with Spring Boot v2.7.0, Spring v5.3.20 +2025-06-24 11:45:50 [main] INFO c.a.s.AgriculturalStockPlatformApplication - The following 1 profile is active: "dev" +2025-06-24 11:45:53 [main] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] +2025-06-24 11:45:53 [main] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.63] +2025-06-24 11:45:53 [main] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext +2025-06-24 11:45:53 [main] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] +2025-06-24 11:45:53 [main] INFO org.hibernate.Version - HHH000412: Hibernate ORM core version 5.6.9.Final +2025-06-24 11:45:54 [main] INFO o.h.annotations.common.Version - HCANN000001: Hibernate Commons Annotations {5.1.2.Final} +2025-06-24 11:45:54 [main] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Starting... +2025-06-24 11:45:54 [main] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Start completed. +2025-06-24 11:45:54 [main] INFO org.hibernate.dialect.Dialect - HHH000400: Using dialect: org.hibernate.dialect.MySQL8Dialect +2025-06-24 11:45:55 [main] INFO o.h.e.t.j.p.i.JtaPlatformInitiator - HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform] +2025-06-24 11:45:55 [main] DEBUG c.b.m.e.s.MybatisSqlSessionFactoryBean - Property 'mapperLocations' was not specified. +2025-06-24 11:45:55 [main] WARN o.s.b.a.o.j.JpaBaseConfiguration$JpaWebConfiguration - spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning +2025-06-24 11:45:56 [main] WARN c.b.m.core.metadata.TableInfoHelper - Can not find table primary key in Class: "com.agricultural.stock.entity.TechnicalIndicator". +2025-06-24 11:45:56 [main] WARN c.b.m.c.injector.DefaultSqlInjector - class com.agricultural.stock.entity.TechnicalIndicator ,Not found @TableId annotation, Cannot use Mybatis-Plus 'xxById' Method. +2025-06-24 11:45:56 [main] INFO c.a.s.AgriculturalStockPlatformApplication - Started AgriculturalStockPlatformApplication in 6.924 seconds (JVM running for 9.092) +2025-06-24 11:46:40 [http-nio-8080-exec-1] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring DispatcherServlet 'dispatcherServlet' +2025-06-24 11:46:40 [http-nio-8080-exec-1] DEBUG c.a.s.m.S.getLatestStockData - ==> Preparing: SELECT * FROM stock_data WHERE DATE(trade_date) = (SELECT MAX(DATE(trade_date)) FROM stock_data) +2025-06-24 11:46:40 [http-nio-8080-exec-1] DEBUG c.a.s.m.S.getLatestStockData - ==> Parameters: +2025-06-24 11:46:40 [http-nio-8080-exec-1] DEBUG c.a.s.m.S.getLatestStockData - <== Total: 66 +2025-06-24 11:46:40 [http-nio-8080-exec-5] DEBUG c.a.s.m.M.getLatestMarketAnalysis - ==> Preparing: SELECT * FROM market_analysis ORDER BY analysis_date DESC LIMIT 1 +2025-06-24 11:46:40 [http-nio-8080-exec-5] DEBUG c.a.s.m.M.getLatestMarketAnalysis - ==> Parameters: +2025-06-24 11:46:40 [http-nio-8080-exec-5] DEBUG c.a.s.m.M.getLatestMarketAnalysis - <== Total: 1 +2025-06-24 11:46:40 [http-nio-8080-exec-4] DEBUG c.a.s.m.M.getRecentMarketAnalysis - ==> Preparing: SELECT * FROM market_analysis ORDER BY analysis_date DESC LIMIT ? +2025-06-24 11:46:40 [http-nio-8080-exec-4] DEBUG c.a.s.m.M.getRecentMarketAnalysis - ==> Parameters: 7(Integer) +2025-06-24 11:46:40 [http-nio-8080-exec-4] DEBUG c.a.s.m.M.getRecentMarketAnalysis - <== Total: 5 +2025-06-24 11:46:59 [http-nio-8080-exec-3] DEBUG c.a.s.m.S.getLatestStockData - ==> Preparing: SELECT * FROM stock_data WHERE DATE(trade_date) = (SELECT MAX(DATE(trade_date)) FROM stock_data) +2025-06-24 11:46:59 [http-nio-8080-exec-3] DEBUG c.a.s.m.S.getLatestStockData - ==> Parameters: +2025-06-24 11:46:59 [http-nio-8080-exec-3] DEBUG c.a.s.m.S.getLatestStockData - <== Total: 66 +2025-06-24 11:47:01 [http-nio-8080-exec-2] DEBUG c.a.s.m.S.getLatestStockData - ==> Preparing: SELECT * FROM stock_data WHERE DATE(trade_date) = (SELECT MAX(DATE(trade_date)) FROM stock_data) +2025-06-24 11:47:01 [http-nio-8080-exec-2] DEBUG c.a.s.m.S.getLatestStockData - ==> Parameters: +2025-06-24 11:47:01 [http-nio-8080-exec-2] DEBUG c.a.s.m.S.getLatestStockData - <== Total: 66 +2025-06-24 11:47:01 [http-nio-8080-exec-6] DEBUG c.a.s.m.S.getStockHistoryData - ==> Preparing: SELECT * FROM stock_data WHERE stock_code = ? ORDER BY trade_date DESC LIMIT ? +2025-06-24 11:47:01 [http-nio-8080-exec-6] DEBUG c.a.s.m.S.getStockHistoryData - ==> Parameters: sz300189(String), 30(Integer) +2025-06-24 11:47:01 [http-nio-8080-exec-6] DEBUG c.a.s.m.S.getStockHistoryData - <== Total: 5 +2025-06-24 11:47:01 [http-nio-8080-exec-7] DEBUG c.a.s.m.S.getStockHistoryData - ==> Preparing: SELECT * FROM stock_data WHERE stock_code = ? ORDER BY trade_date DESC LIMIT ? +2025-06-24 11:47:01 [http-nio-8080-exec-7] DEBUG c.a.s.m.S.getStockHistoryData - ==> Parameters: sz300189(String), 30(Integer) +2025-06-24 11:47:01 [http-nio-8080-exec-7] DEBUG c.a.s.m.S.getStockHistoryData - <== Total: 5 +2025-06-24 11:47:01 [http-nio-8080-exec-8] INFO c.a.s.service.impl.StockServiceImpl - 生成股票预测数据,股票代码: sz300189, 预测天数: 7 +2025-06-24 11:47:01 [http-nio-8080-exec-8] DEBUG c.a.s.m.S.getStockHistoryData - ==> Preparing: SELECT * FROM stock_data WHERE stock_code = ? ORDER BY trade_date DESC LIMIT ? +2025-06-24 11:47:01 [http-nio-8080-exec-8] DEBUG c.a.s.m.S.getStockHistoryData - ==> Parameters: sz300189(String), 30(Integer) +2025-06-24 11:47:01 [http-nio-8080-exec-8] DEBUG c.a.s.m.S.getStockHistoryData - <== Total: 5 +2025-06-24 11:47:10 [http-nio-8080-exec-9] DEBUG c.a.s.m.S.getLatestStockData - ==> Preparing: SELECT * FROM stock_data WHERE DATE(trade_date) = (SELECT MAX(DATE(trade_date)) FROM stock_data) +2025-06-24 11:47:10 [http-nio-8080-exec-9] DEBUG c.a.s.m.S.getLatestStockData - ==> Parameters: +2025-06-24 11:47:10 [http-nio-8080-exec-9] DEBUG c.a.s.m.S.getLatestStockData - <== Total: 66 +2025-06-24 11:47:12 [http-nio-8080-exec-10] DEBUG c.a.s.m.M.getLatestMarketAnalysis - ==> Preparing: SELECT * FROM market_analysis ORDER BY analysis_date DESC LIMIT 1 +2025-06-24 11:47:12 [http-nio-8080-exec-10] DEBUG c.a.s.m.M.getLatestMarketAnalysis - ==> Parameters: +2025-06-24 11:47:12 [http-nio-8080-exec-10] DEBUG c.a.s.m.M.getLatestMarketAnalysis - <== Total: 1 +2025-06-24 11:47:12 [http-nio-8080-exec-1] DEBUG c.a.s.m.M.getRecentMarketAnalysis - ==> Preparing: SELECT * FROM market_analysis ORDER BY analysis_date DESC LIMIT ? +2025-06-24 11:47:12 [http-nio-8080-exec-1] DEBUG c.a.s.m.M.getRecentMarketAnalysis - ==> Parameters: 30(Integer) +2025-06-24 11:47:12 [http-nio-8080-exec-1] DEBUG c.a.s.m.M.getRecentMarketAnalysis - <== Total: 5 +2025-06-24 11:47:17 [http-nio-8080-exec-5] DEBUG c.a.s.m.S.getLatestStockData - ==> Preparing: SELECT * FROM stock_data WHERE DATE(trade_date) = (SELECT MAX(DATE(trade_date)) FROM stock_data) +2025-06-24 11:47:17 [http-nio-8080-exec-5] DEBUG c.a.s.m.S.getLatestStockData - ==> Parameters: +2025-06-24 11:47:17 [http-nio-8080-exec-5] DEBUG c.a.s.m.S.getLatestStockData - <== Total: 66 +2025-06-24 11:47:19 [http-nio-8080-exec-4] DEBUG c.a.s.m.M.getLatestMarketAnalysis - ==> Preparing: SELECT * FROM market_analysis ORDER BY analysis_date DESC LIMIT 1 +2025-06-24 11:47:19 [http-nio-8080-exec-3] DEBUG c.a.s.m.M.getRecentMarketAnalysis - ==> Preparing: SELECT * FROM market_analysis ORDER BY analysis_date DESC LIMIT ? +2025-06-24 11:47:19 [http-nio-8080-exec-4] DEBUG c.a.s.m.M.getLatestMarketAnalysis - ==> Parameters: +2025-06-24 11:47:19 [http-nio-8080-exec-3] DEBUG c.a.s.m.M.getRecentMarketAnalysis - ==> Parameters: 7(Integer) +2025-06-24 11:47:19 [http-nio-8080-exec-4] DEBUG c.a.s.m.M.getLatestMarketAnalysis - <== Total: 1 +2025-06-24 11:47:19 [http-nio-8080-exec-3] DEBUG c.a.s.m.M.getRecentMarketAnalysis - <== Total: 5 +2025-06-24 11:47:19 [http-nio-8080-exec-2] DEBUG c.a.s.m.S.getTopGainers - ==> Preparing: SELECT * FROM stock_data WHERE DATE(trade_date) = (SELECT MAX(DATE(trade_date)) FROM stock_data) ORDER BY change_percent DESC LIMIT ? +2025-06-24 11:47:19 [http-nio-8080-exec-2] DEBUG c.a.s.m.S.getTopGainers - ==> Parameters: 10(Integer) +2025-06-24 11:47:19 [http-nio-8080-exec-2] DEBUG c.a.s.m.S.getTopGainers - <== Total: 10 +2025-06-24 11:47:20 [http-nio-8080-exec-6] DEBUG c.a.s.m.M.getLatestMarketAnalysis - ==> Preparing: SELECT * FROM market_analysis ORDER BY analysis_date DESC LIMIT 1 +2025-06-24 11:47:20 [http-nio-8080-exec-6] DEBUG c.a.s.m.M.getLatestMarketAnalysis - ==> Parameters: +2025-06-24 11:47:20 [http-nio-8080-exec-6] DEBUG c.a.s.m.M.getLatestMarketAnalysis - <== Total: 1 +2025-06-24 11:47:20 [http-nio-8080-exec-7] DEBUG c.a.s.m.M.getRecentMarketAnalysis - ==> Preparing: SELECT * FROM market_analysis ORDER BY analysis_date DESC LIMIT ? +2025-06-24 11:47:20 [http-nio-8080-exec-7] DEBUG c.a.s.m.M.getRecentMarketAnalysis - ==> Parameters: 30(Integer) +2025-06-24 11:47:20 [http-nio-8080-exec-7] DEBUG c.a.s.m.M.getRecentMarketAnalysis - <== Total: 5 +2025-06-24 11:47:20 [http-nio-8080-exec-8] DEBUG c.a.s.m.S.getLatestStockData - ==> Preparing: SELECT * FROM stock_data WHERE DATE(trade_date) = (SELECT MAX(DATE(trade_date)) FROM stock_data) +2025-06-24 11:47:20 [http-nio-8080-exec-8] DEBUG c.a.s.m.S.getLatestStockData - ==> Parameters: +2025-06-24 11:47:20 [http-nio-8080-exec-8] DEBUG c.a.s.m.S.getLatestStockData - <== Total: 66 +2025-06-24 11:47:20 [http-nio-8080-exec-9] DEBUG c.a.s.m.M.getLatestMarketAnalysis - ==> Preparing: SELECT * FROM market_analysis ORDER BY analysis_date DESC LIMIT 1 +2025-06-24 11:47:20 [http-nio-8080-exec-9] DEBUG c.a.s.m.M.getLatestMarketAnalysis - ==> Parameters: +2025-06-24 11:47:20 [http-nio-8080-exec-10] DEBUG c.a.s.m.M.getRecentMarketAnalysis - ==> Preparing: SELECT * FROM market_analysis ORDER BY analysis_date DESC LIMIT ? +2025-06-24 11:47:20 [http-nio-8080-exec-10] DEBUG c.a.s.m.M.getRecentMarketAnalysis - ==> Parameters: 7(Integer) +2025-06-24 11:47:20 [http-nio-8080-exec-9] DEBUG c.a.s.m.M.getLatestMarketAnalysis - <== Total: 1 +2025-06-24 11:47:20 [http-nio-8080-exec-10] DEBUG c.a.s.m.M.getRecentMarketAnalysis - <== Total: 5 +2025-06-24 11:49:42 [SpringApplicationShutdownHook] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Shutdown initiated... +2025-06-24 11:49:42 [SpringApplicationShutdownHook] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Shutdown completed. +2025-06-24 15:06:02 [main] INFO c.a.s.AgriculturalStockPlatformApplication - Starting AgriculturalStockPlatformApplication using Java 1.8.0_202 on WIN11 with PID 24344 (D:\VScodeProject\work_4\backend\target\classes started by shenjianZ in D:\VScodeProject\work_4) +2025-06-24 15:06:02 [main] DEBUG c.a.s.AgriculturalStockPlatformApplication - Running with Spring Boot v2.7.0, Spring v5.3.20 +2025-06-24 15:06:02 [main] INFO c.a.s.AgriculturalStockPlatformApplication - The following 1 profile is active: "dev" +2025-06-24 15:06:04 [main] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] +2025-06-24 15:06:04 [main] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.63] +2025-06-24 15:06:04 [main] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext +2025-06-24 15:06:05 [main] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] +2025-06-24 15:06:05 [main] INFO org.hibernate.Version - HHH000412: Hibernate ORM core version 5.6.9.Final +2025-06-24 15:06:05 [main] INFO o.h.annotations.common.Version - HCANN000001: Hibernate Commons Annotations {5.1.2.Final} +2025-06-24 15:06:05 [main] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Starting... +2025-06-24 15:06:05 [main] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Start completed. +2025-06-24 15:06:05 [main] INFO org.hibernate.dialect.Dialect - HHH000400: Using dialect: org.hibernate.dialect.MySQL8Dialect +2025-06-24 15:06:06 [main] INFO o.h.e.t.j.p.i.JtaPlatformInitiator - HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform] +2025-06-24 15:06:06 [main] DEBUG c.b.m.e.s.MybatisSqlSessionFactoryBean - Property 'mapperLocations' was not specified. +2025-06-24 15:06:07 [main] WARN o.s.b.a.o.j.JpaBaseConfiguration$JpaWebConfiguration - spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning +2025-06-24 15:06:08 [main] WARN c.b.m.core.metadata.TableInfoHelper - Can not find table primary key in Class: "com.agricultural.stock.entity.TechnicalIndicator". +2025-06-24 15:06:08 [main] WARN c.b.m.c.injector.DefaultSqlInjector - class com.agricultural.stock.entity.TechnicalIndicator ,Not found @TableId annotation, Cannot use Mybatis-Plus 'xxById' Method. +2025-06-24 15:06:08 [main] INFO c.a.s.AgriculturalStockPlatformApplication - Started AgriculturalStockPlatformApplication in 6.158 seconds (JVM running for 7.094) +2025-06-24 15:06:25 [http-nio-8080-exec-4] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring DispatcherServlet 'dispatcherServlet' +2025-06-24 15:06:26 [http-nio-8080-exec-3] INFO o.s.api.AbstractOpenApiResource - Init duration for springdoc-openapi is: 575 ms +2025-06-24 15:06:38 [http-nio-8080-exec-1] DEBUG c.a.s.m.S.getLatestStockData - ==> Preparing: SELECT * FROM stock_data WHERE DATE(trade_date) = (SELECT MAX(DATE(trade_date)) FROM stock_data) +2025-06-24 15:06:38 [http-nio-8080-exec-1] DEBUG c.a.s.m.S.getLatestStockData - ==> Parameters: +2025-06-24 15:06:39 [http-nio-8080-exec-1] DEBUG c.a.s.m.S.getLatestStockData - <== Total: 66 +2025-06-24 15:07:03 [http-nio-8080-exec-5] DEBUG c.a.s.m.StockDataMapper.getTopVolume - ==> Preparing: SELECT * FROM stock_data WHERE DATE(trade_date) = (SELECT MAX(DATE(trade_date)) FROM stock_data) ORDER BY volume DESC LIMIT ? +2025-06-24 15:07:03 [http-nio-8080-exec-5] DEBUG c.a.s.m.StockDataMapper.getTopVolume - ==> Parameters: 10(Integer) +2025-06-24 15:07:03 [http-nio-8080-exec-5] DEBUG c.a.s.m.StockDataMapper.getTopVolume - <== Total: 10 +2025-06-24 15:07:10 [http-nio-8080-exec-2] DEBUG c.a.s.m.StockDataMapper.getTopVolume - ==> Preparing: SELECT * FROM stock_data WHERE DATE(trade_date) = (SELECT MAX(DATE(trade_date)) FROM stock_data) ORDER BY volume DESC LIMIT ? +2025-06-24 15:07:10 [http-nio-8080-exec-2] DEBUG c.a.s.m.StockDataMapper.getTopVolume - ==> Parameters: 3(Integer) +2025-06-24 15:07:10 [http-nio-8080-exec-2] DEBUG c.a.s.m.StockDataMapper.getTopVolume - <== Total: 3 +2025-06-24 15:07:26 [http-nio-8080-exec-7] DEBUG c.a.s.m.StockDataMapper.getTopVolume - ==> Preparing: SELECT * FROM stock_data WHERE DATE(trade_date) = (SELECT MAX(DATE(trade_date)) FROM stock_data) ORDER BY volume DESC LIMIT ? +2025-06-24 15:07:26 [http-nio-8080-exec-7] DEBUG c.a.s.m.StockDataMapper.getTopVolume - ==> Parameters: 1(Integer) +2025-06-24 15:07:26 [http-nio-8080-exec-7] DEBUG c.a.s.m.StockDataMapper.getTopVolume - <== Total: 1 +2025-06-24 15:07:59 [http-nio-8080-exec-8] DEBUG c.a.s.m.S.getLatestStockData - ==> Preparing: SELECT * FROM stock_data WHERE DATE(trade_date) = (SELECT MAX(DATE(trade_date)) FROM stock_data) +2025-06-24 15:07:59 [http-nio-8080-exec-8] DEBUG c.a.s.m.S.getLatestStockData - ==> Parameters: +2025-06-24 15:07:59 [http-nio-8080-exec-8] DEBUG c.a.s.m.S.getLatestStockData - <== Total: 66 +2025-06-24 15:08:22 [http-nio-8080-exec-10] DEBUG c.a.s.m.S.getLatestStockData - ==> Preparing: SELECT * FROM stock_data WHERE DATE(trade_date) = (SELECT MAX(DATE(trade_date)) FROM stock_data) +2025-06-24 15:08:22 [http-nio-8080-exec-10] DEBUG c.a.s.m.S.getLatestStockData - ==> Parameters: +2025-06-24 15:08:22 [http-nio-8080-exec-10] DEBUG c.a.s.m.S.getLatestStockData - <== Total: 66 +2025-06-24 15:09:00 [http-nio-8080-exec-4] DEBUG c.a.s.m.M.getLatestMarketAnalysis - ==> Preparing: SELECT * FROM market_analysis ORDER BY analysis_date DESC LIMIT 1 +2025-06-24 15:09:00 [http-nio-8080-exec-3] DEBUG c.a.s.m.M.getRecentMarketAnalysis - ==> Preparing: SELECT * FROM market_analysis ORDER BY analysis_date DESC LIMIT ? +2025-06-24 15:09:00 [http-nio-8080-exec-4] DEBUG c.a.s.m.M.getLatestMarketAnalysis - ==> Parameters: +2025-06-24 15:09:00 [http-nio-8080-exec-3] DEBUG c.a.s.m.M.getRecentMarketAnalysis - ==> Parameters: 7(Integer) +2025-06-24 15:09:00 [http-nio-8080-exec-4] DEBUG c.a.s.m.M.getLatestMarketAnalysis - <== Total: 1 +2025-06-24 15:09:00 [http-nio-8080-exec-3] DEBUG c.a.s.m.M.getRecentMarketAnalysis - <== Total: 5 +2025-06-24 15:10:11 [http-nio-8080-exec-5] DEBUG c.a.s.m.S.getTopGainers - ==> Preparing: SELECT * FROM stock_data WHERE DATE(trade_date) = (SELECT MAX(DATE(trade_date)) FROM stock_data) ORDER BY change_percent DESC LIMIT ? +2025-06-24 15:10:11 [http-nio-8080-exec-5] DEBUG c.a.s.m.S.getTopGainers - ==> Parameters: 10(Integer) +2025-06-24 15:10:11 [http-nio-8080-exec-5] DEBUG c.a.s.m.S.getTopGainers - <== Total: 10 +2025-06-24 15:10:13 [http-nio-8080-exec-2] DEBUG c.a.s.m.S.getLatestStockData - ==> Preparing: SELECT * FROM stock_data WHERE DATE(trade_date) = (SELECT MAX(DATE(trade_date)) FROM stock_data) +2025-06-24 15:10:13 [http-nio-8080-exec-2] DEBUG c.a.s.m.S.getLatestStockData - ==> Parameters: +2025-06-24 15:10:13 [http-nio-8080-exec-2] DEBUG c.a.s.m.S.getLatestStockData - <== Total: 66 +2025-06-24 15:10:17 [http-nio-8080-exec-6] DEBUG c.a.s.m.S.getLatestStockData - ==> Preparing: SELECT * FROM stock_data WHERE DATE(trade_date) = (SELECT MAX(DATE(trade_date)) FROM stock_data) +2025-06-24 15:10:17 [http-nio-8080-exec-6] DEBUG c.a.s.m.S.getLatestStockData - ==> Parameters: +2025-06-24 15:10:17 [http-nio-8080-exec-6] DEBUG c.a.s.m.S.getLatestStockData - <== Total: 66 +2025-06-24 15:10:19 [http-nio-8080-exec-7] DEBUG c.a.s.m.S.getLatestStockData - ==> Preparing: SELECT * FROM stock_data WHERE DATE(trade_date) = (SELECT MAX(DATE(trade_date)) FROM stock_data) +2025-06-24 15:10:19 [http-nio-8080-exec-7] DEBUG c.a.s.m.S.getLatestStockData - ==> Parameters: +2025-06-24 15:10:19 [http-nio-8080-exec-7] DEBUG c.a.s.m.S.getLatestStockData - <== Total: 66 +2025-06-24 15:10:19 [http-nio-8080-exec-9] DEBUG c.a.s.m.S.getStockHistoryData - ==> Preparing: SELECT * FROM stock_data WHERE stock_code = ? ORDER BY trade_date DESC LIMIT ? +2025-06-24 15:10:19 [http-nio-8080-exec-9] DEBUG c.a.s.m.S.getStockHistoryData - ==> Parameters: sz002731(String), 30(Integer) +2025-06-24 15:10:19 [http-nio-8080-exec-9] DEBUG c.a.s.m.S.getStockHistoryData - <== Total: 5 +2025-06-24 15:10:19 [http-nio-8080-exec-8] DEBUG c.a.s.m.S.getStockHistoryData - ==> Preparing: SELECT * FROM stock_data WHERE stock_code = ? ORDER BY trade_date DESC LIMIT ? +2025-06-24 15:10:19 [http-nio-8080-exec-8] DEBUG c.a.s.m.S.getStockHistoryData - ==> Parameters: sz002731(String), 30(Integer) +2025-06-24 15:10:19 [http-nio-8080-exec-8] DEBUG c.a.s.m.S.getStockHistoryData - <== Total: 5 +2025-06-24 15:10:19 [http-nio-8080-exec-10] INFO c.a.s.service.impl.StockServiceImpl - 生成股票预测数据,股票代码: sz002731, 预测天数: 7 +2025-06-24 15:10:19 [http-nio-8080-exec-10] DEBUG c.a.s.m.S.getStockHistoryData - ==> Preparing: SELECT * FROM stock_data WHERE stock_code = ? ORDER BY trade_date DESC LIMIT ? +2025-06-24 15:10:19 [http-nio-8080-exec-10] DEBUG c.a.s.m.S.getStockHistoryData - ==> Parameters: sz002731(String), 30(Integer) +2025-06-24 15:10:19 [http-nio-8080-exec-10] DEBUG c.a.s.m.S.getStockHistoryData - <== Total: 5 +2025-06-24 15:10:21 [http-nio-8080-exec-3] DEBUG c.a.s.m.S.getLatestStockData - ==> Preparing: SELECT * FROM stock_data WHERE DATE(trade_date) = (SELECT MAX(DATE(trade_date)) FROM stock_data) +2025-06-24 15:10:21 [http-nio-8080-exec-3] DEBUG c.a.s.m.S.getLatestStockData - ==> Parameters: +2025-06-24 15:10:21 [http-nio-8080-exec-3] DEBUG c.a.s.m.S.getLatestStockData - <== Total: 66 +2025-06-24 15:10:24 [http-nio-8080-exec-4] DEBUG c.a.s.m.S.getLatestStockData - ==> Preparing: SELECT * FROM stock_data WHERE DATE(trade_date) = (SELECT MAX(DATE(trade_date)) FROM stock_data) +2025-06-24 15:10:24 [http-nio-8080-exec-4] DEBUG c.a.s.m.S.getLatestStockData - ==> Parameters: +2025-06-24 15:10:24 [http-nio-8080-exec-4] DEBUG c.a.s.m.S.getLatestStockData - <== Total: 66 +2025-06-24 15:10:25 [http-nio-8080-exec-1] DEBUG c.a.s.m.S.getLatestStockData - ==> Preparing: SELECT * FROM stock_data WHERE DATE(trade_date) = (SELECT MAX(DATE(trade_date)) FROM stock_data) +2025-06-24 15:10:25 [http-nio-8080-exec-1] DEBUG c.a.s.m.S.getLatestStockData - ==> Parameters: +2025-06-24 15:10:25 [http-nio-8080-exec-1] DEBUG c.a.s.m.S.getLatestStockData - <== Total: 66 +2025-06-24 15:10:25 [http-nio-8080-exec-5] DEBUG c.a.s.m.S.getStockHistoryData - ==> Preparing: SELECT * FROM stock_data WHERE stock_code = ? ORDER BY trade_date DESC LIMIT ? +2025-06-24 15:10:25 [http-nio-8080-exec-5] DEBUG c.a.s.m.S.getStockHistoryData - ==> Parameters: sz002731(String), 30(Integer) +2025-06-24 15:10:25 [http-nio-8080-exec-5] DEBUG c.a.s.m.S.getStockHistoryData - <== Total: 5 +2025-06-24 15:10:25 [http-nio-8080-exec-2] DEBUG c.a.s.m.S.getStockHistoryData - ==> Preparing: SELECT * FROM stock_data WHERE stock_code = ? ORDER BY trade_date DESC LIMIT ? +2025-06-24 15:10:25 [http-nio-8080-exec-2] DEBUG c.a.s.m.S.getStockHistoryData - ==> Parameters: sz002731(String), 30(Integer) +2025-06-24 15:10:25 [http-nio-8080-exec-2] DEBUG c.a.s.m.S.getStockHistoryData - <== Total: 5 +2025-06-24 15:10:25 [http-nio-8080-exec-6] INFO c.a.s.service.impl.StockServiceImpl - 生成股票预测数据,股票代码: sz002731, 预测天数: 7 +2025-06-24 15:10:25 [http-nio-8080-exec-6] DEBUG c.a.s.m.S.getStockHistoryData - ==> Preparing: SELECT * FROM stock_data WHERE stock_code = ? ORDER BY trade_date DESC LIMIT ? +2025-06-24 15:10:25 [http-nio-8080-exec-6] DEBUG c.a.s.m.S.getStockHistoryData - ==> Parameters: sz002731(String), 30(Integer) +2025-06-24 15:10:25 [http-nio-8080-exec-6] DEBUG c.a.s.m.S.getStockHistoryData - <== Total: 5 +2025-06-24 15:11:04 [http-nio-8080-exec-7] DEBUG c.a.s.m.S.getStockHistoryData - ==> Preparing: SELECT * FROM stock_data WHERE stock_code = ? ORDER BY trade_date DESC LIMIT ? +2025-06-24 15:11:04 [http-nio-8080-exec-7] DEBUG c.a.s.m.S.getStockHistoryData - ==> Parameters: sz002731(String), 7(Integer) +2025-06-24 15:11:04 [http-nio-8080-exec-7] DEBUG c.a.s.m.S.getStockHistoryData - <== Total: 5 +2025-06-24 15:12:12 [http-nio-8080-exec-9] DEBUG c.a.s.m.S.getLatestStockData - ==> Preparing: SELECT * FROM stock_data WHERE DATE(trade_date) = (SELECT MAX(DATE(trade_date)) FROM stock_data) +2025-06-24 15:12:12 [http-nio-8080-exec-9] DEBUG c.a.s.m.S.getLatestStockData - ==> Parameters: +2025-06-24 15:12:12 [http-nio-8080-exec-9] DEBUG c.a.s.m.S.getLatestStockData - <== Total: 66 +2025-06-24 15:12:24 [http-nio-8080-exec-8] DEBUG c.a.s.m.S.getStockHistoryData - ==> Preparing: SELECT * FROM stock_data WHERE stock_code = ? ORDER BY trade_date DESC LIMIT ? +2025-06-24 15:12:24 [http-nio-8080-exec-8] DEBUG c.a.s.m.S.getStockHistoryData - ==> Parameters: sz300189(String), 30(Integer) +2025-06-24 15:12:24 [http-nio-8080-exec-8] DEBUG c.a.s.m.S.getStockHistoryData - <== Total: 5 +2025-06-24 15:12:31 [http-nio-8080-exec-10] DEBUG c.a.s.m.S.getLatestStockData - ==> Preparing: SELECT * FROM stock_data WHERE DATE(trade_date) = (SELECT MAX(DATE(trade_date)) FROM stock_data) +2025-06-24 15:12:31 [http-nio-8080-exec-10] DEBUG c.a.s.m.S.getLatestStockData - ==> Parameters: +2025-06-24 15:12:31 [http-nio-8080-exec-10] DEBUG c.a.s.m.S.getLatestStockData - <== Total: 66 +2025-06-24 15:12:32 [http-nio-8080-exec-3] DEBUG c.a.s.m.S.getLatestStockData - ==> Preparing: SELECT * FROM stock_data WHERE DATE(trade_date) = (SELECT MAX(DATE(trade_date)) FROM stock_data) +2025-06-24 15:12:32 [http-nio-8080-exec-3] DEBUG c.a.s.m.S.getLatestStockData - ==> Parameters: +2025-06-24 15:12:32 [http-nio-8080-exec-3] DEBUG c.a.s.m.S.getLatestStockData - <== Total: 66 +2025-06-24 15:12:32 [http-nio-8080-exec-4] INFO c.a.s.service.impl.StockServiceImpl - 生成股票预测数据,股票代码: sz300189, 预测天数: 7 +2025-06-24 15:12:32 [http-nio-8080-exec-4] DEBUG c.a.s.m.S.getStockHistoryData - ==> Preparing: SELECT * FROM stock_data WHERE stock_code = ? ORDER BY trade_date DESC LIMIT ? +2025-06-24 15:12:32 [http-nio-8080-exec-4] DEBUG c.a.s.m.S.getStockHistoryData - ==> Parameters: sz300189(String), 30(Integer) +2025-06-24 15:12:32 [http-nio-8080-exec-4] DEBUG c.a.s.m.S.getStockHistoryData - <== Total: 5 +2025-06-24 15:13:20 [http-nio-8080-exec-1] DEBUG c.a.s.m.S.getLatestStockData - ==> Preparing: SELECT * FROM stock_data WHERE DATE(trade_date) = (SELECT MAX(DATE(trade_date)) FROM stock_data) +2025-06-24 15:13:20 [http-nio-8080-exec-1] DEBUG c.a.s.m.S.getLatestStockData - ==> Parameters: +2025-06-24 15:13:20 [http-nio-8080-exec-1] DEBUG c.a.s.m.S.getLatestStockData - <== Total: 66 +2025-06-24 15:13:20 [http-nio-8080-exec-5] INFO c.a.s.service.impl.StockServiceImpl - 生成股票预测数据,股票代码: sz300189, 预测天数: 7 +2025-06-24 15:13:20 [http-nio-8080-exec-5] DEBUG c.a.s.m.S.getStockHistoryData - ==> Preparing: SELECT * FROM stock_data WHERE stock_code = ? ORDER BY trade_date DESC LIMIT ? +2025-06-24 15:13:20 [http-nio-8080-exec-5] DEBUG c.a.s.m.S.getStockHistoryData - ==> Parameters: sz300189(String), 30(Integer) +2025-06-24 15:13:20 [http-nio-8080-exec-5] DEBUG c.a.s.m.S.getStockHistoryData - <== Total: 5 +2025-06-24 15:13:25 [http-nio-8080-exec-2] DEBUG c.a.s.m.S.getLatestStockData - ==> Preparing: SELECT * FROM stock_data WHERE DATE(trade_date) = (SELECT MAX(DATE(trade_date)) FROM stock_data) +2025-06-24 15:13:25 [http-nio-8080-exec-2] DEBUG c.a.s.m.S.getLatestStockData - ==> Parameters: +2025-06-24 15:13:25 [http-nio-8080-exec-2] DEBUG c.a.s.m.S.getLatestStockData - <== Total: 66 +2025-06-24 15:13:25 [http-nio-8080-exec-6] INFO c.a.s.service.impl.StockServiceImpl - 生成股票预测数据,股票代码: sz300189, 预测天数: 7 +2025-06-24 15:13:25 [http-nio-8080-exec-6] DEBUG c.a.s.m.S.getStockHistoryData - ==> Preparing: SELECT * FROM stock_data WHERE stock_code = ? ORDER BY trade_date DESC LIMIT ? +2025-06-24 15:13:25 [http-nio-8080-exec-6] DEBUG c.a.s.m.S.getStockHistoryData - ==> Parameters: sz300189(String), 30(Integer) +2025-06-24 15:13:25 [http-nio-8080-exec-6] DEBUG c.a.s.m.S.getStockHistoryData - <== Total: 5 +2025-06-24 15:13:28 [http-nio-8080-exec-7] DEBUG c.a.s.m.S.getLatestStockData - ==> Preparing: SELECT * FROM stock_data WHERE DATE(trade_date) = (SELECT MAX(DATE(trade_date)) FROM stock_data) +2025-06-24 15:13:28 [http-nio-8080-exec-7] DEBUG c.a.s.m.S.getLatestStockData - ==> Parameters: +2025-06-24 15:13:28 [http-nio-8080-exec-7] DEBUG c.a.s.m.S.getLatestStockData - <== Total: 66 +2025-06-24 15:13:28 [http-nio-8080-exec-9] INFO c.a.s.service.impl.StockServiceImpl - 生成股票预测数据,股票代码: sz300189, 预测天数: 7 +2025-06-24 15:13:28 [http-nio-8080-exec-9] DEBUG c.a.s.m.S.getStockHistoryData - ==> Preparing: SELECT * FROM stock_data WHERE stock_code = ? ORDER BY trade_date DESC LIMIT ? +2025-06-24 15:13:28 [http-nio-8080-exec-9] DEBUG c.a.s.m.S.getStockHistoryData - ==> Parameters: sz300189(String), 30(Integer) +2025-06-24 15:13:28 [http-nio-8080-exec-9] DEBUG c.a.s.m.S.getStockHistoryData - <== Total: 5 +2025-06-24 15:13:30 [http-nio-8080-exec-8] DEBUG c.a.s.m.S.getLatestStockData - ==> Preparing: SELECT * FROM stock_data WHERE DATE(trade_date) = (SELECT MAX(DATE(trade_date)) FROM stock_data) +2025-06-24 15:13:30 [http-nio-8080-exec-8] DEBUG c.a.s.m.S.getLatestStockData - ==> Parameters: +2025-06-24 15:13:30 [http-nio-8080-exec-8] DEBUG c.a.s.m.S.getLatestStockData - <== Total: 66 +2025-06-24 15:13:30 [http-nio-8080-exec-10] INFO c.a.s.service.impl.StockServiceImpl - 生成股票预测数据,股票代码: sz300189, 预测天数: 7 +2025-06-24 15:13:30 [http-nio-8080-exec-10] DEBUG c.a.s.m.S.getStockHistoryData - ==> Preparing: SELECT * FROM stock_data WHERE stock_code = ? ORDER BY trade_date DESC LIMIT ? +2025-06-24 15:13:30 [http-nio-8080-exec-10] DEBUG c.a.s.m.S.getStockHistoryData - ==> Parameters: sz300189(String), 30(Integer) +2025-06-24 15:13:30 [http-nio-8080-exec-10] DEBUG c.a.s.m.S.getStockHistoryData - <== Total: 5 +2025-06-24 15:13:31 [http-nio-8080-exec-3] DEBUG c.a.s.m.S.getLatestStockData - ==> Preparing: SELECT * FROM stock_data WHERE DATE(trade_date) = (SELECT MAX(DATE(trade_date)) FROM stock_data) +2025-06-24 15:13:31 [http-nio-8080-exec-3] DEBUG c.a.s.m.S.getLatestStockData - ==> Parameters: +2025-06-24 15:13:31 [http-nio-8080-exec-3] DEBUG c.a.s.m.S.getLatestStockData - <== Total: 66 +2025-06-24 15:13:31 [http-nio-8080-exec-4] INFO c.a.s.service.impl.StockServiceImpl - 生成股票预测数据,股票代码: sz300189, 预测天数: 7 +2025-06-24 15:13:31 [http-nio-8080-exec-4] DEBUG c.a.s.m.S.getStockHistoryData - ==> Preparing: SELECT * FROM stock_data WHERE stock_code = ? ORDER BY trade_date DESC LIMIT ? +2025-06-24 15:13:31 [http-nio-8080-exec-4] DEBUG c.a.s.m.S.getStockHistoryData - ==> Parameters: sz300189(String), 30(Integer) +2025-06-24 15:13:31 [http-nio-8080-exec-4] DEBUG c.a.s.m.S.getStockHistoryData - <== Total: 5 +2025-06-24 15:13:31 [http-nio-8080-exec-1] DEBUG c.a.s.m.S.getLatestStockData - ==> Preparing: SELECT * FROM stock_data WHERE DATE(trade_date) = (SELECT MAX(DATE(trade_date)) FROM stock_data) +2025-06-24 15:13:31 [http-nio-8080-exec-1] DEBUG c.a.s.m.S.getLatestStockData - ==> Parameters: +2025-06-24 15:13:31 [http-nio-8080-exec-1] DEBUG c.a.s.m.S.getLatestStockData - <== Total: 66 +2025-06-24 15:13:31 [http-nio-8080-exec-5] INFO c.a.s.service.impl.StockServiceImpl - 生成股票预测数据,股票代码: sz300189, 预测天数: 7 +2025-06-24 15:13:31 [http-nio-8080-exec-5] DEBUG c.a.s.m.S.getStockHistoryData - ==> Preparing: SELECT * FROM stock_data WHERE stock_code = ? ORDER BY trade_date DESC LIMIT ? +2025-06-24 15:13:31 [http-nio-8080-exec-5] DEBUG c.a.s.m.S.getStockHistoryData - ==> Parameters: sz300189(String), 30(Integer) +2025-06-24 15:13:31 [http-nio-8080-exec-5] DEBUG c.a.s.m.S.getStockHistoryData - <== Total: 5 +2025-06-24 15:13:31 [http-nio-8080-exec-2] DEBUG c.a.s.m.S.getLatestStockData - ==> Preparing: SELECT * FROM stock_data WHERE DATE(trade_date) = (SELECT MAX(DATE(trade_date)) FROM stock_data) +2025-06-24 15:13:31 [http-nio-8080-exec-2] DEBUG c.a.s.m.S.getLatestStockData - ==> Parameters: +2025-06-24 15:13:31 [http-nio-8080-exec-2] DEBUG c.a.s.m.S.getLatestStockData - <== Total: 66 +2025-06-24 15:13:31 [http-nio-8080-exec-6] INFO c.a.s.service.impl.StockServiceImpl - 生成股票预测数据,股票代码: sz300189, 预测天数: 7 +2025-06-24 15:13:31 [http-nio-8080-exec-6] DEBUG c.a.s.m.S.getStockHistoryData - ==> Preparing: SELECT * FROM stock_data WHERE stock_code = ? ORDER BY trade_date DESC LIMIT ? +2025-06-24 15:13:31 [http-nio-8080-exec-6] DEBUG c.a.s.m.S.getStockHistoryData - ==> Parameters: sz300189(String), 30(Integer) +2025-06-24 15:13:31 [http-nio-8080-exec-6] DEBUG c.a.s.m.S.getStockHistoryData - <== Total: 5 +2025-06-24 15:13:32 [http-nio-8080-exec-7] DEBUG c.a.s.m.S.getLatestStockData - ==> Preparing: SELECT * FROM stock_data WHERE DATE(trade_date) = (SELECT MAX(DATE(trade_date)) FROM stock_data) +2025-06-24 15:13:32 [http-nio-8080-exec-7] DEBUG c.a.s.m.S.getLatestStockData - ==> Parameters: +2025-06-24 15:13:32 [http-nio-8080-exec-7] DEBUG c.a.s.m.S.getLatestStockData - <== Total: 66 +2025-06-24 15:13:32 [http-nio-8080-exec-9] INFO c.a.s.service.impl.StockServiceImpl - 生成股票预测数据,股票代码: sz300189, 预测天数: 7 +2025-06-24 15:13:32 [http-nio-8080-exec-9] DEBUG c.a.s.m.S.getStockHistoryData - ==> Preparing: SELECT * FROM stock_data WHERE stock_code = ? ORDER BY trade_date DESC LIMIT ? +2025-06-24 15:13:32 [http-nio-8080-exec-9] DEBUG c.a.s.m.S.getStockHistoryData - ==> Parameters: sz300189(String), 30(Integer) +2025-06-24 15:13:32 [http-nio-8080-exec-9] DEBUG c.a.s.m.S.getStockHistoryData - <== Total: 5 +2025-06-24 15:13:32 [http-nio-8080-exec-8] DEBUG c.a.s.m.S.getLatestStockData - ==> Preparing: SELECT * FROM stock_data WHERE DATE(trade_date) = (SELECT MAX(DATE(trade_date)) FROM stock_data) +2025-06-24 15:13:32 [http-nio-8080-exec-8] DEBUG c.a.s.m.S.getLatestStockData - ==> Parameters: +2025-06-24 15:13:32 [http-nio-8080-exec-8] DEBUG c.a.s.m.S.getLatestStockData - <== Total: 66 +2025-06-24 15:13:32 [http-nio-8080-exec-10] INFO c.a.s.service.impl.StockServiceImpl - 生成股票预测数据,股票代码: sz300189, 预测天数: 7 +2025-06-24 15:13:32 [http-nio-8080-exec-10] DEBUG c.a.s.m.S.getStockHistoryData - ==> Preparing: SELECT * FROM stock_data WHERE stock_code = ? ORDER BY trade_date DESC LIMIT ? +2025-06-24 15:13:32 [http-nio-8080-exec-10] DEBUG c.a.s.m.S.getStockHistoryData - ==> Parameters: sz300189(String), 30(Integer) +2025-06-24 15:13:32 [http-nio-8080-exec-10] DEBUG c.a.s.m.S.getStockHistoryData - <== Total: 5 +2025-06-24 15:13:32 [http-nio-8080-exec-3] DEBUG c.a.s.m.S.getLatestStockData - ==> Preparing: SELECT * FROM stock_data WHERE DATE(trade_date) = (SELECT MAX(DATE(trade_date)) FROM stock_data) +2025-06-24 15:13:32 [http-nio-8080-exec-3] DEBUG c.a.s.m.S.getLatestStockData - ==> Parameters: +2025-06-24 15:13:32 [http-nio-8080-exec-3] DEBUG c.a.s.m.S.getLatestStockData - <== Total: 66 +2025-06-24 15:13:32 [http-nio-8080-exec-4] INFO c.a.s.service.impl.StockServiceImpl - 生成股票预测数据,股票代码: sz300189, 预测天数: 7 +2025-06-24 15:13:32 [http-nio-8080-exec-4] DEBUG c.a.s.m.S.getStockHistoryData - ==> Preparing: SELECT * FROM stock_data WHERE stock_code = ? ORDER BY trade_date DESC LIMIT ? +2025-06-24 15:13:32 [http-nio-8080-exec-4] DEBUG c.a.s.m.S.getStockHistoryData - ==> Parameters: sz300189(String), 30(Integer) +2025-06-24 15:13:32 [http-nio-8080-exec-4] DEBUG c.a.s.m.S.getStockHistoryData - <== Total: 5 +2025-06-24 15:13:32 [http-nio-8080-exec-1] DEBUG c.a.s.m.S.getLatestStockData - ==> Preparing: SELECT * FROM stock_data WHERE DATE(trade_date) = (SELECT MAX(DATE(trade_date)) FROM stock_data) +2025-06-24 15:13:32 [http-nio-8080-exec-1] DEBUG c.a.s.m.S.getLatestStockData - ==> Parameters: +2025-06-24 15:13:32 [http-nio-8080-exec-1] DEBUG c.a.s.m.S.getLatestStockData - <== Total: 66 +2025-06-24 15:13:32 [http-nio-8080-exec-5] INFO c.a.s.service.impl.StockServiceImpl - 生成股票预测数据,股票代码: sz300189, 预测天数: 7 +2025-06-24 15:13:32 [http-nio-8080-exec-5] DEBUG c.a.s.m.S.getStockHistoryData - ==> Preparing: SELECT * FROM stock_data WHERE stock_code = ? ORDER BY trade_date DESC LIMIT ? +2025-06-24 15:13:32 [http-nio-8080-exec-5] DEBUG c.a.s.m.S.getStockHistoryData - ==> Parameters: sz300189(String), 30(Integer) +2025-06-24 15:13:32 [http-nio-8080-exec-5] DEBUG c.a.s.m.S.getStockHistoryData - <== Total: 5 +2025-06-24 15:13:32 [http-nio-8080-exec-2] DEBUG c.a.s.m.S.getLatestStockData - ==> Preparing: SELECT * FROM stock_data WHERE DATE(trade_date) = (SELECT MAX(DATE(trade_date)) FROM stock_data) +2025-06-24 15:13:32 [http-nio-8080-exec-2] DEBUG c.a.s.m.S.getLatestStockData - ==> Parameters: +2025-06-24 15:13:32 [http-nio-8080-exec-2] DEBUG c.a.s.m.S.getLatestStockData - <== Total: 66 +2025-06-24 15:13:32 [http-nio-8080-exec-6] INFO c.a.s.service.impl.StockServiceImpl - 生成股票预测数据,股票代码: sz300189, 预测天数: 7 +2025-06-24 15:13:32 [http-nio-8080-exec-6] DEBUG c.a.s.m.S.getStockHistoryData - ==> Preparing: SELECT * FROM stock_data WHERE stock_code = ? ORDER BY trade_date DESC LIMIT ? +2025-06-24 15:13:32 [http-nio-8080-exec-6] DEBUG c.a.s.m.S.getStockHistoryData - ==> Parameters: sz300189(String), 30(Integer) +2025-06-24 15:13:32 [http-nio-8080-exec-6] DEBUG c.a.s.m.S.getStockHistoryData - <== Total: 5 +2025-06-24 15:13:32 [http-nio-8080-exec-7] DEBUG c.a.s.m.S.getLatestStockData - ==> Preparing: SELECT * FROM stock_data WHERE DATE(trade_date) = (SELECT MAX(DATE(trade_date)) FROM stock_data) +2025-06-24 15:13:32 [http-nio-8080-exec-7] DEBUG c.a.s.m.S.getLatestStockData - ==> Parameters: +2025-06-24 15:13:32 [http-nio-8080-exec-7] DEBUG c.a.s.m.S.getLatestStockData - <== Total: 66 +2025-06-24 15:13:32 [http-nio-8080-exec-9] INFO c.a.s.service.impl.StockServiceImpl - 生成股票预测数据,股票代码: sz300189, 预测天数: 7 +2025-06-24 15:13:32 [http-nio-8080-exec-9] DEBUG c.a.s.m.S.getStockHistoryData - ==> Preparing: SELECT * FROM stock_data WHERE stock_code = ? ORDER BY trade_date DESC LIMIT ? +2025-06-24 15:13:32 [http-nio-8080-exec-9] DEBUG c.a.s.m.S.getStockHistoryData - ==> Parameters: sz300189(String), 30(Integer) +2025-06-24 15:13:32 [http-nio-8080-exec-9] DEBUG c.a.s.m.S.getStockHistoryData - <== Total: 5 +2025-06-24 15:13:33 [http-nio-8080-exec-8] DEBUG c.a.s.m.S.getLatestStockData - ==> Preparing: SELECT * FROM stock_data WHERE DATE(trade_date) = (SELECT MAX(DATE(trade_date)) FROM stock_data) +2025-06-24 15:13:33 [http-nio-8080-exec-8] DEBUG c.a.s.m.S.getLatestStockData - ==> Parameters: +2025-06-24 15:13:33 [http-nio-8080-exec-8] DEBUG c.a.s.m.S.getLatestStockData - <== Total: 66 +2025-06-24 15:13:33 [http-nio-8080-exec-10] INFO c.a.s.service.impl.StockServiceImpl - 生成股票预测数据,股票代码: sz300189, 预测天数: 7 +2025-06-24 15:13:33 [http-nio-8080-exec-10] DEBUG c.a.s.m.S.getStockHistoryData - ==> Preparing: SELECT * FROM stock_data WHERE stock_code = ? ORDER BY trade_date DESC LIMIT ? +2025-06-24 15:13:33 [http-nio-8080-exec-10] DEBUG c.a.s.m.S.getStockHistoryData - ==> Parameters: sz300189(String), 30(Integer) +2025-06-24 15:13:33 [http-nio-8080-exec-10] DEBUG c.a.s.m.S.getStockHistoryData - <== Total: 5 +2025-06-24 15:13:33 [http-nio-8080-exec-3] DEBUG c.a.s.m.S.getLatestStockData - ==> Preparing: SELECT * FROM stock_data WHERE DATE(trade_date) = (SELECT MAX(DATE(trade_date)) FROM stock_data) +2025-06-24 15:13:33 [http-nio-8080-exec-3] DEBUG c.a.s.m.S.getLatestStockData - ==> Parameters: +2025-06-24 15:13:33 [http-nio-8080-exec-3] DEBUG c.a.s.m.S.getLatestStockData - <== Total: 66 +2025-06-24 15:13:33 [http-nio-8080-exec-4] INFO c.a.s.service.impl.StockServiceImpl - 生成股票预测数据,股票代码: sz300189, 预测天数: 7 +2025-06-24 15:13:33 [http-nio-8080-exec-4] DEBUG c.a.s.m.S.getStockHistoryData - ==> Preparing: SELECT * FROM stock_data WHERE stock_code = ? ORDER BY trade_date DESC LIMIT ? +2025-06-24 15:13:33 [http-nio-8080-exec-4] DEBUG c.a.s.m.S.getStockHistoryData - ==> Parameters: sz300189(String), 30(Integer) +2025-06-24 15:13:33 [http-nio-8080-exec-4] DEBUG c.a.s.m.S.getStockHistoryData - <== Total: 5 +2025-06-24 15:13:33 [http-nio-8080-exec-1] DEBUG c.a.s.m.S.getLatestStockData - ==> Preparing: SELECT * FROM stock_data WHERE DATE(trade_date) = (SELECT MAX(DATE(trade_date)) FROM stock_data) +2025-06-24 15:13:33 [http-nio-8080-exec-1] DEBUG c.a.s.m.S.getLatestStockData - ==> Parameters: +2025-06-24 15:13:33 [http-nio-8080-exec-1] DEBUG c.a.s.m.S.getLatestStockData - <== Total: 66 +2025-06-24 15:13:33 [http-nio-8080-exec-5] INFO c.a.s.service.impl.StockServiceImpl - 生成股票预测数据,股票代码: sz300189, 预测天数: 7 +2025-06-24 15:13:33 [http-nio-8080-exec-5] DEBUG c.a.s.m.S.getStockHistoryData - ==> Preparing: SELECT * FROM stock_data WHERE stock_code = ? ORDER BY trade_date DESC LIMIT ? +2025-06-24 15:13:33 [http-nio-8080-exec-5] DEBUG c.a.s.m.S.getStockHistoryData - ==> Parameters: sz300189(String), 30(Integer) +2025-06-24 15:13:33 [http-nio-8080-exec-5] DEBUG c.a.s.m.S.getStockHistoryData - <== Total: 5 +2025-06-24 15:13:55 [http-nio-8080-exec-2] DEBUG c.a.s.m.M.getLatestMarketAnalysis - ==> Preparing: SELECT * FROM market_analysis ORDER BY analysis_date DESC LIMIT 1 +2025-06-24 15:13:55 [http-nio-8080-exec-2] DEBUG c.a.s.m.M.getLatestMarketAnalysis - ==> Parameters: +2025-06-24 15:13:55 [http-nio-8080-exec-2] DEBUG c.a.s.m.M.getLatestMarketAnalysis - <== Total: 1 +2025-06-24 15:13:55 [http-nio-8080-exec-6] DEBUG c.a.s.m.M.getRecentMarketAnalysis - ==> Preparing: SELECT * FROM market_analysis ORDER BY analysis_date DESC LIMIT ? +2025-06-24 15:13:55 [http-nio-8080-exec-6] DEBUG c.a.s.m.M.getRecentMarketAnalysis - ==> Parameters: 30(Integer) +2025-06-24 15:13:55 [http-nio-8080-exec-6] DEBUG c.a.s.m.M.getRecentMarketAnalysis - <== Total: 5 +2025-06-24 15:15:34 [SpringApplicationShutdownHook] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Shutdown initiated... +2025-06-24 15:15:34 [SpringApplicationShutdownHook] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Shutdown completed. +2025-06-24 21:09:52 [main] INFO c.a.s.AgriculturalStockPlatformApplication - Starting AgriculturalStockPlatformApplication using Java 1.8.0_202 on WIN11 with PID 27760 (D:\VScodeProject\work_4\backend\target\classes started by shenjianZ in D:\VScodeProject\work_4) +2025-06-24 21:09:52 [main] DEBUG c.a.s.AgriculturalStockPlatformApplication - Running with Spring Boot v2.7.0, Spring v5.3.20 +2025-06-24 21:09:52 [main] INFO c.a.s.AgriculturalStockPlatformApplication - The following 1 profile is active: "dev" +2025-06-24 21:09:57 [main] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] +2025-06-24 21:09:57 [main] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.63] +2025-06-24 21:09:57 [main] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext +2025-06-24 21:09:58 [main] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] +2025-06-24 21:09:58 [main] INFO org.hibernate.Version - HHH000412: Hibernate ORM core version 5.6.9.Final +2025-06-24 21:09:58 [main] INFO o.h.annotations.common.Version - HCANN000001: Hibernate Commons Annotations {5.1.2.Final} +2025-06-24 21:09:59 [main] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Starting... +2025-06-24 21:09:59 [main] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Start completed. +2025-06-24 21:09:59 [main] INFO org.hibernate.dialect.Dialect - HHH000400: Using dialect: org.hibernate.dialect.MySQL8Dialect +2025-06-24 21:10:00 [main] INFO o.h.e.t.j.p.i.JtaPlatformInitiator - HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform] +2025-06-24 21:10:00 [main] DEBUG c.b.m.e.s.MybatisSqlSessionFactoryBean - Property 'mapperLocations' was not specified. +2025-06-24 21:10:01 [main] WARN o.s.b.a.o.j.JpaBaseConfiguration$JpaWebConfiguration - spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning +2025-06-24 21:10:02 [main] WARN c.b.m.core.metadata.TableInfoHelper - Can not find table primary key in Class: "com.agricultural.stock.entity.TechnicalIndicator". +2025-06-24 21:10:02 [main] WARN c.b.m.c.injector.DefaultSqlInjector - class com.agricultural.stock.entity.TechnicalIndicator ,Not found @TableId annotation, Cannot use Mybatis-Plus 'xxById' Method. +2025-06-24 21:10:02 [main] INFO c.a.s.AgriculturalStockPlatformApplication - Started AgriculturalStockPlatformApplication in 11.351 seconds (JVM running for 12.799) +2025-06-24 21:10:05 [http-nio-8080-exec-2] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring DispatcherServlet 'dispatcherServlet' +2025-06-24 21:10:06 [http-nio-8080-exec-1] DEBUG c.a.s.m.M.getLatestMarketAnalysis - ==> Preparing: SELECT * FROM market_analysis ORDER BY analysis_date DESC LIMIT 1 +2025-06-24 21:10:06 [http-nio-8080-exec-2] DEBUG c.a.s.m.M.getRecentMarketAnalysis - ==> Preparing: SELECT * FROM market_analysis ORDER BY analysis_date DESC LIMIT ? +2025-06-24 21:10:06 [http-nio-8080-exec-1] DEBUG c.a.s.m.M.getLatestMarketAnalysis - ==> Parameters: +2025-06-24 21:10:06 [http-nio-8080-exec-2] DEBUG c.a.s.m.M.getRecentMarketAnalysis - ==> Parameters: 7(Integer) +2025-06-24 21:10:06 [http-nio-8080-exec-1] DEBUG c.a.s.m.M.getLatestMarketAnalysis - <== Total: 1 +2025-06-24 21:10:06 [http-nio-8080-exec-2] DEBUG c.a.s.m.M.getRecentMarketAnalysis - <== Total: 5 +2025-06-24 21:10:28 [http-nio-8080-exec-4] DEBUG c.a.s.m.M.getLatestMarketAnalysis - ==> Preparing: SELECT * FROM market_analysis ORDER BY analysis_date DESC LIMIT 1 +2025-06-24 21:10:28 [http-nio-8080-exec-8] DEBUG c.a.s.m.M.getRecentMarketAnalysis - ==> Preparing: SELECT * FROM market_analysis ORDER BY analysis_date DESC LIMIT ? +2025-06-24 21:10:28 [http-nio-8080-exec-8] DEBUG c.a.s.m.M.getRecentMarketAnalysis - ==> Parameters: 7(Integer) +2025-06-24 21:10:28 [http-nio-8080-exec-4] DEBUG c.a.s.m.M.getLatestMarketAnalysis - ==> Parameters: +2025-06-24 21:10:28 [http-nio-8080-exec-4] DEBUG c.a.s.m.M.getLatestMarketAnalysis - <== Total: 1 +2025-06-24 21:10:28 [http-nio-8080-exec-8] DEBUG c.a.s.m.M.getRecentMarketAnalysis - <== Total: 5 +2025-06-24 21:10:53 [http-nio-8080-exec-5] DEBUG c.a.s.m.S.getLatestStockData - ==> Preparing: SELECT * FROM stock_data WHERE DATE(trade_date) = (SELECT MAX(DATE(trade_date)) FROM stock_data) +2025-06-24 21:10:53 [http-nio-8080-exec-5] DEBUG c.a.s.m.S.getLatestStockData - ==> Parameters: +2025-06-24 21:10:53 [http-nio-8080-exec-5] DEBUG c.a.s.m.S.getLatestStockData - <== Total: 66 +2025-06-24 21:11:17 [http-nio-8080-exec-6] DEBUG c.a.s.m.S.getLatestStockData - ==> Preparing: SELECT * FROM stock_data WHERE DATE(trade_date) = (SELECT MAX(DATE(trade_date)) FROM stock_data) +2025-06-24 21:11:17 [http-nio-8080-exec-6] DEBUG c.a.s.m.S.getLatestStockData - ==> Parameters: +2025-06-24 21:11:17 [http-nio-8080-exec-6] DEBUG c.a.s.m.S.getLatestStockData - <== Total: 66 +2025-06-24 21:11:17 [http-nio-8080-exec-7] DEBUG c.a.s.m.S.getStockHistoryData - ==> Preparing: SELECT * FROM stock_data WHERE stock_code = ? ORDER BY trade_date DESC LIMIT ? +2025-06-24 21:11:17 [http-nio-8080-exec-7] DEBUG c.a.s.m.S.getStockHistoryData - ==> Parameters: sz300189(String), 30(Integer) +2025-06-24 21:11:17 [http-nio-8080-exec-7] DEBUG c.a.s.m.S.getStockHistoryData - <== Total: 5 +2025-06-24 21:11:17 [http-nio-8080-exec-3] DEBUG c.a.s.m.S.getStockHistoryData - ==> Preparing: SELECT * FROM stock_data WHERE stock_code = ? ORDER BY trade_date DESC LIMIT ? +2025-06-24 21:11:17 [http-nio-8080-exec-3] DEBUG c.a.s.m.S.getStockHistoryData - ==> Parameters: sz300189(String), 30(Integer) +2025-06-24 21:11:17 [http-nio-8080-exec-3] DEBUG c.a.s.m.S.getStockHistoryData - <== Total: 5 +2025-06-24 21:11:18 [http-nio-8080-exec-9] INFO c.a.s.service.impl.StockServiceImpl - 生成股票预测数据,股票代码: sz300189, 预测天数: 7 +2025-06-24 21:11:18 [http-nio-8080-exec-9] DEBUG c.a.s.m.S.getStockHistoryData - ==> Preparing: SELECT * FROM stock_data WHERE stock_code = ? ORDER BY trade_date DESC LIMIT ? +2025-06-24 21:11:18 [http-nio-8080-exec-9] DEBUG c.a.s.m.S.getStockHistoryData - ==> Parameters: sz300189(String), 30(Integer) +2025-06-24 21:11:18 [http-nio-8080-exec-9] DEBUG c.a.s.m.S.getStockHistoryData - <== Total: 5 +2025-06-24 21:11:19 [http-nio-8080-exec-10] DEBUG c.a.s.m.S.getTopGainers - ==> Preparing: SELECT * FROM stock_data WHERE DATE(trade_date) = (SELECT MAX(DATE(trade_date)) FROM stock_data) ORDER BY change_percent DESC LIMIT ? +2025-06-24 21:11:19 [http-nio-8080-exec-10] DEBUG c.a.s.m.S.getTopGainers - ==> Parameters: 10(Integer) +2025-06-24 21:11:19 [http-nio-8080-exec-10] DEBUG c.a.s.m.S.getTopGainers - <== Total: 10 +2025-06-24 21:11:37 [http-nio-8080-exec-1] DEBUG c.a.s.m.S.getLatestStockData - ==> Preparing: SELECT * FROM stock_data WHERE DATE(trade_date) = (SELECT MAX(DATE(trade_date)) FROM stock_data) +2025-06-24 21:11:37 [http-nio-8080-exec-1] DEBUG c.a.s.m.S.getLatestStockData - ==> Parameters: +2025-06-24 21:11:37 [http-nio-8080-exec-1] DEBUG c.a.s.m.S.getLatestStockData - <== Total: 66 +2025-06-24 21:11:38 [http-nio-8080-exec-2] DEBUG c.a.s.m.StockDataMapper.getTopVolume - ==> Preparing: SELECT * FROM stock_data WHERE DATE(trade_date) = (SELECT MAX(DATE(trade_date)) FROM stock_data) ORDER BY volume DESC LIMIT ? +2025-06-24 21:11:38 [http-nio-8080-exec-2] DEBUG c.a.s.m.StockDataMapper.getTopVolume - ==> Parameters: 10(Integer) +2025-06-24 21:11:38 [http-nio-8080-exec-2] DEBUG c.a.s.m.StockDataMapper.getTopVolume - <== Total: 10 +2025-06-24 21:11:39 [http-nio-8080-exec-4] DEBUG c.a.s.m.M.getLatestMarketAnalysis - ==> Preparing: SELECT * FROM market_analysis ORDER BY analysis_date DESC LIMIT 1 +2025-06-24 21:11:39 [http-nio-8080-exec-4] DEBUG c.a.s.m.M.getLatestMarketAnalysis - ==> Parameters: +2025-06-24 21:11:39 [http-nio-8080-exec-4] DEBUG c.a.s.m.M.getLatestMarketAnalysis - <== Total: 1 +2025-06-24 21:11:40 [http-nio-8080-exec-8] DEBUG c.a.s.m.M.getRecentMarketAnalysis - ==> Preparing: SELECT * FROM market_analysis ORDER BY analysis_date DESC LIMIT ? +2025-06-24 21:11:40 [http-nio-8080-exec-8] DEBUG c.a.s.m.M.getRecentMarketAnalysis - ==> Parameters: 30(Integer) +2025-06-24 21:11:40 [http-nio-8080-exec-8] DEBUG c.a.s.m.M.getRecentMarketAnalysis - <== Total: 5 +2025-06-24 21:11:56 [http-nio-8080-exec-5] DEBUG c.a.s.m.S.getLatestStockData - ==> Preparing: SELECT * FROM stock_data WHERE DATE(trade_date) = (SELECT MAX(DATE(trade_date)) FROM stock_data) +2025-06-24 21:11:56 [http-nio-8080-exec-5] DEBUG c.a.s.m.S.getLatestStockData - ==> Parameters: +2025-06-24 21:11:56 [http-nio-8080-exec-5] DEBUG c.a.s.m.S.getLatestStockData - <== Total: 66 +2025-06-24 21:11:59 [http-nio-8080-exec-6] DEBUG c.a.s.m.S.getLatestStockData - ==> Preparing: SELECT * FROM stock_data WHERE DATE(trade_date) = (SELECT MAX(DATE(trade_date)) FROM stock_data) +2025-06-24 21:11:59 [http-nio-8080-exec-6] DEBUG c.a.s.m.S.getLatestStockData - ==> Parameters: +2025-06-24 21:11:59 [http-nio-8080-exec-6] DEBUG c.a.s.m.S.getLatestStockData - <== Total: 66 +2025-06-24 21:12:00 [http-nio-8080-exec-7] DEBUG c.a.s.m.S.getStockHistoryData - ==> Preparing: SELECT * FROM stock_data WHERE stock_code = ? ORDER BY trade_date DESC LIMIT ? +2025-06-24 21:12:00 [http-nio-8080-exec-7] DEBUG c.a.s.m.S.getStockHistoryData - ==> Parameters: sz300189(String), 30(Integer) +2025-06-24 21:12:00 [http-nio-8080-exec-7] DEBUG c.a.s.m.S.getStockHistoryData - <== Total: 5 +2025-06-24 21:12:00 [http-nio-8080-exec-3] DEBUG c.a.s.m.S.getStockHistoryData - ==> Preparing: SELECT * FROM stock_data WHERE stock_code = ? ORDER BY trade_date DESC LIMIT ? +2025-06-24 21:12:00 [http-nio-8080-exec-3] DEBUG c.a.s.m.S.getStockHistoryData - ==> Parameters: sz300189(String), 30(Integer) +2025-06-24 21:12:00 [http-nio-8080-exec-3] DEBUG c.a.s.m.S.getStockHistoryData - <== Total: 5 +2025-06-24 21:12:00 [http-nio-8080-exec-9] INFO c.a.s.service.impl.StockServiceImpl - 生成股票预测数据,股票代码: sz300189, 预测天数: 7 +2025-06-24 21:12:00 [http-nio-8080-exec-9] DEBUG c.a.s.m.S.getStockHistoryData - ==> Preparing: SELECT * FROM stock_data WHERE stock_code = ? ORDER BY trade_date DESC LIMIT ? +2025-06-24 21:12:00 [http-nio-8080-exec-9] DEBUG c.a.s.m.S.getStockHistoryData - ==> Parameters: sz300189(String), 30(Integer) +2025-06-24 21:12:00 [http-nio-8080-exec-9] DEBUG c.a.s.m.S.getStockHistoryData - <== Total: 5 +2025-06-24 21:12:18 [http-nio-8080-exec-10] DEBUG c.a.s.m.S.getLatestStockData - ==> Preparing: SELECT * FROM stock_data WHERE DATE(trade_date) = (SELECT MAX(DATE(trade_date)) FROM stock_data) +2025-06-24 21:12:18 [http-nio-8080-exec-10] DEBUG c.a.s.m.S.getLatestStockData - ==> Parameters: +2025-06-24 21:12:18 [http-nio-8080-exec-10] DEBUG c.a.s.m.S.getLatestStockData - <== Total: 66 +2025-06-24 21:12:19 [http-nio-8080-exec-1] DEBUG c.a.s.m.S.getStockHistoryData - ==> Preparing: SELECT * FROM stock_data WHERE stock_code = ? ORDER BY trade_date DESC LIMIT ? +2025-06-24 21:12:19 [http-nio-8080-exec-1] DEBUG c.a.s.m.S.getStockHistoryData - ==> Parameters: sz300189(String), 30(Integer) +2025-06-24 21:12:19 [http-nio-8080-exec-1] DEBUG c.a.s.m.S.getStockHistoryData - <== Total: 5 +2025-06-24 21:12:35 [http-nio-8080-exec-2] DEBUG c.a.s.m.S.getLatestStockData - ==> Preparing: SELECT * FROM stock_data WHERE DATE(trade_date) = (SELECT MAX(DATE(trade_date)) FROM stock_data) +2025-06-24 21:12:35 [http-nio-8080-exec-2] DEBUG c.a.s.m.S.getLatestStockData - ==> Parameters: +2025-06-24 21:12:35 [http-nio-8080-exec-2] DEBUG c.a.s.m.S.getLatestStockData - <== Total: 66 +2025-06-24 21:12:37 [http-nio-8080-exec-4] DEBUG c.a.s.m.S.getLatestStockData - ==> Preparing: SELECT * FROM stock_data WHERE DATE(trade_date) = (SELECT MAX(DATE(trade_date)) FROM stock_data) +2025-06-24 21:12:37 [http-nio-8080-exec-4] DEBUG c.a.s.m.S.getLatestStockData - ==> Parameters: +2025-06-24 21:12:37 [http-nio-8080-exec-4] DEBUG c.a.s.m.S.getLatestStockData - <== Total: 66 +2025-06-24 21:12:38 [http-nio-8080-exec-8] INFO c.a.s.service.impl.StockServiceImpl - 生成股票预测数据,股票代码: sz300189, 预测天数: 7 +2025-06-24 21:12:38 [http-nio-8080-exec-8] DEBUG c.a.s.m.S.getStockHistoryData - ==> Preparing: SELECT * FROM stock_data WHERE stock_code = ? ORDER BY trade_date DESC LIMIT ? +2025-06-24 21:12:38 [http-nio-8080-exec-8] DEBUG c.a.s.m.S.getStockHistoryData - ==> Parameters: sz300189(String), 30(Integer) +2025-06-24 21:12:38 [http-nio-8080-exec-8] DEBUG c.a.s.m.S.getStockHistoryData - <== Total: 5 +2025-06-24 21:17:37 [SpringApplicationShutdownHook] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Shutdown initiated... +2025-06-24 21:17:37 [SpringApplicationShutdownHook] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Shutdown completed. diff --git a/logs/agricultural-stock-platform-dev.log.2025-06-23.0.gz b/logs/agricultural-stock-platform-dev.log.2025-06-23.0.gz new file mode 100644 index 0000000000000000000000000000000000000000..ff5ebeaf7f34b6deeab0da4d5207709860d9b264 GIT binary patch literal 3114 zcmV+_4At`=iwFP!000000Nq_nZ`;Zh-e2JUhe1%l&V@CXq9i|rrni3OT7m7jmXowi zf?zC;Eyfh7OHzKM=%Pgz1=<2#wClcsc2jiIRr_<=q+Rtd^b9Fq%hphHXdXdS90PV} zlHYgceCNzL9FnpvyHT;0D|U@pE6rLJzS+y3aQ)Y;wg31jV;wGd#Me(lw=?kKK`6X- z9CXeOJQ1G+VQ;w>yC&55nNB?8L7wg7EB3{nfGPoJrq#1<0o|e%0|r6v>E1 ziivdC@fC}@(tqm;|NG4KS;lD|e)@@>JrY~n8_&MXHxh>f-&fWpRux z6>cqEZ#!@B8n>;9@b_@UQCG5)!1IC&1yW`GFgS5N$=ryEPVAn`CVSw>^9MTI+HKqb zaN)edbA9+F2qgzE`;G{mwhYhRjvV!SG~D#^DCogKuM3@j+dp;vTc=luo{X7H{?cSG z*ZZOarlx40uW^en*U+HwZVyFba-55g-Yz-FMN$Q{Hut6>=>3b9K%{FDYidYB$-= z^`F_(!#$=P!p?{LHTW`L z2N6pL19RJ94#*Lb7T-#L-Z;*(n(SGkli@DSj3f81+TYn-9Uia4Z;U%p@|eHneeUun zvAE7RX>i2BjbiI-Uy~TwkGaa)p7c{!Ld@PKmWDEqL*Yj%HGx9j#)9{Uhu_4>elT)Y zt=5xcVl%p!mmJb+Pq(ia;dl8_%x+*3%}>b&28jgUTWZ37xn zl3|kM0DSz4>sQWQd7*N)^u@84&St}4=PJdA62?LVhETTj@xHYFfihKr*Q>SY85bX=`Ov4zXajjNWk!1iR^4fN_;D_XFDK2W=Z2UdC2 zUV~X4)Z#>J@yYW&77i;N*qc=?-mu4ODZAN#*zCq}zv8<=Wz|}>D)LfxD%HaC@s=C) zMGQ4ScwHMTICnQKecTe;1Mu?rR@K5C%m?f0ilOv|6g`>i#TG`4df-|Ov@%9f+zotEXU3>ae zcuC?`_2&${H605kW`n{AWAUYsq{ z=(tDkYL?Zo8jI~%S@3X))h5S9LHxU3spB!0=gld(2v5N&X#4_BY1}SMhgXQWY72RS zG`x(|f(?N5;a9(T|I=Uo=f}VM@TWij_xC?}|M#E0|MlPA|KhLz`{&QojsN<`A3pr{ zM>j*T#M0gV{l~w+o-m!~qBdW8$whbydO_o3^ir>CF;+jGQlyxL_)_HlIH*#jZtH7P zt6a@eCegKWHA{3n4doG;-;muBjbY|)iO4cTyR_D<+VGvD{hN*QC-Ky`kF!xeDbH-> zle!Hfd@{QX!Y4EAE{?6iu^Ty>+p=|^R2CRSRuEw<{pj*f#>}qoaObT?BCrruBNfCk z)ktvq_)^fh%iO@`ZJQ0DS;;Er8R>nHBc`YQ0TA0IY z_r@_h%3f_+_0li+PU2ari$bIWIw=`bjt8#iq(Z!_$=Z}g(AeApj;$}z$C~Jp&iOPJ z7-Uuu!93?H3}jl8%A(=_A+Fev%!amG5-StnE~p6EnJ0cg&1Ygw_S?@#BiMk;I} zvPLR|gQ$@*Pe0a(&Ne~O@tl~TXkg3<3cmFhpU3*m*(NADo}Y?IkNIeuVnABtI-K+2CW+;3rp6I!q0uZD7jD>D}Uok@mWbo9toimKj zy54WO#}h4-48Yt2V@L=TcA@l0U=AknH1rESAIl(HPTAUSLZaB3lnBzC3~O0Mz`U#y(^y~#h=K^_Rbs%X=^d`W{dvaE)R7S$ zd#0|sx`ueBjszbQ9CiJ?GapZlQ(0gLj)DlN;Hc}bi5kE}rf&F1hFg&ntpjOiS zNkOYd7`KHH5OG`2T7W58_fN;uFys_4=I%cer)=Fn zAyMS@Rw6`m3Tia1IdA?+ESMM%g%J=bC=;Vxw}=z+yx)-1-XfljQ?ey-I-bY`L<3kL z|9mXBh!?gHyFyX~2eCrZ$g0E2b&EJ5Pg8;-fI%fFJx)gAslPPRVW&r{js9nJEA?9T#W}t!y zsLN0p7-d~%ry+d%9u&*6YgHS!OjH~nGaF@Kl=9{5WQ3>SlzYFNJ%>|Pr}lF8bO_9A zy_2ZTmtJxao`PP`_!zz9dbiwMmXyUT#MdSF$3c}M4gJzvncjImiD$Xqq)j-UhU$oF zIMCN&DD1*q5TG#3n4s!b@(=9G~1pU?Dzw?vH~D8035D<~;Ecnwi6OG@uASHj+=6 zFa6yG**wd&2v0bk$R31lU?wJi8W?j2LNk8mmMZhw*~hZ5UD!fwwkm>yN>CZeuxwXj z2#FdZkpu@5iWxxVdQTl8Pvq@4M2O}jwVd_l3;n(4Gn0NMPyOr5W~LOn@thc;bi;wH z0ch+pX9OC3.12.0 + + + org.quartz-scheduler + quartz + 2.3.2 + + junit diff --git a/spark-processor/spark-scheduler.service b/spark-processor/spark-scheduler.service new file mode 100644 index 0000000..7e48e1e --- /dev/null +++ b/spark-processor/spark-scheduler.service @@ -0,0 +1,37 @@ +[Unit] +Description=Agricultural Stock Spark Data Processor Scheduler +Documentation=https://github.com/your-repo/agricultural-stock-platform +After=network.target mysql.service + +[Service] +Type=simple +User=spark +Group=spark +WorkingDirectory=/opt/agricultural-stock-platform/spark-processor +ExecStart=/usr/bin/java -Xmx4g -Xms2g -XX:+UseG1GC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -Dlogback.configurationFile=src/main/resources/logback.xml -Dconfig.file=src/main/resources/application-prod.conf -jar target/spark-data-processor-1.0.0.jar scheduler +ExecStop=/bin/kill -TERM $MAINPID +Restart=on-failure +RestartSec=30 +StandardOutput=journal +StandardError=journal +SyslogIdentifier=spark-scheduler + +# 环境变量 +Environment=JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 +Environment=SPARK_HOME=/opt/spark +Environment=PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin + +# 资源限制 +LimitNOFILE=65536 +LimitNPROC=4096 + +# 安全设置 +NoNewPrivileges=true +PrivateTmp=true +ProtectSystem=strict +ProtectHome=true +ReadWritePaths=/opt/agricultural-stock-platform/spark-processor/logs +ReadWritePaths=/tmp/spark-warehouse + +[Install] +WantedBy=multi-user.target \ No newline at end of file diff --git a/spark-processor/src/main/java/com/agricultural/spark/StockDataProcessor.java b/spark-processor/src/main/java/com/agricultural/spark/StockDataProcessor.java index eb66353..b20da2b 100644 --- a/spark-processor/src/main/java/com/agricultural/spark/StockDataProcessor.java +++ b/spark-processor/src/main/java/com/agricultural/spark/StockDataProcessor.java @@ -1,6 +1,7 @@ package com.agricultural.spark; import com.agricultural.spark.config.SparkConfig; +import com.agricultural.spark.scheduler.SparkJobScheduler; import com.agricultural.spark.service.DataCleaningService; import com.agricultural.spark.service.DatabaseSaveService; import com.agricultural.spark.service.MarketAnalysisService; @@ -13,6 +14,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.util.Map; +import java.util.Scanner; /** * 农业股票数据处理器主类 @@ -201,25 +203,64 @@ public class StockDataProcessor { logger.info("农业股票数据处理器启动"); StockDataProcessor processor = null; + SparkJobScheduler scheduler = null; + Scanner scanner = null; + try { // 加载配置 SparkConfig config = SparkConfig.load(); - processor = new StockDataProcessor(config); if (args.length > 0) { String mode = args[0]; switch (mode) { + case "scheduler": + // 定时调度模式 - 每30分钟执行一次 + logger.info("启动定时调度模式 - 每30分钟执行一次数据处理"); + scheduler = new SparkJobScheduler(config); + scheduler.start(); + + // 保持程序运行,监听用户输入 + scanner = new Scanner(System.in); + logger.info("调度器已启动,输入命令:"); + logger.info(" 'status' - 查看调度器状态"); + logger.info(" 'trigger' - 手动触发一次任务执行"); + logger.info(" 'stop' - 停止调度器并退出程序"); + + String command; + while (!(command = scanner.nextLine().trim().toLowerCase()).equals("stop")) { + switch (command) { + case "status": + logger.info("调度器状态: {}", scheduler.getSchedulerStatus()); + break; + case "trigger": + scheduler.triggerJobNow(); + break; + case "help": + logger.info("可用命令: status, trigger, stop, help"); + break; + default: + logger.info("未知命令: {},输入 'help' 查看可用命令", command); + break; + } + } + break; + case "stream": // 流处理模式 + processor = new StockDataProcessor(config); processor.runStreamProcessing(); break; + + case "batch": default: - // 默认批处理模式 + // 批处理模式 + processor = new StockDataProcessor(config); processor.runBatchProcessing(); break; } } else { // 默认批处理模式 + processor = new StockDataProcessor(config); processor.runBatchProcessing(); } @@ -227,9 +268,16 @@ public class StockDataProcessor { logger.error("程序运行过程中出现错误", e); System.exit(1); } finally { + // 清理资源 + if (scheduler != null) { + scheduler.stop(); + } if (processor != null) { processor.close(); } + if (scanner != null) { + scanner.close(); + } logger.info("农业股票数据处理器已停止"); } } diff --git a/spark-processor/src/main/java/com/agricultural/spark/scheduler/SparkJobScheduler.java b/spark-processor/src/main/java/com/agricultural/spark/scheduler/SparkJobScheduler.java new file mode 100644 index 0000000..ce1794a --- /dev/null +++ b/spark-processor/src/main/java/com/agricultural/spark/scheduler/SparkJobScheduler.java @@ -0,0 +1,161 @@ +package com.agricultural.spark.scheduler; + +import com.agricultural.spark.StockDataProcessor; +import com.agricultural.spark.config.SparkConfig; +import org.quartz.*; +import org.quartz.impl.StdSchedulerFactory; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * Spark任务定时调度器 + * 使用Quartz调度器实现定时执行Spark数据处理任务 + * + * @author Agricultural Stock Platform Team + */ +public class SparkJobScheduler { + + private static final Logger logger = LoggerFactory.getLogger(SparkJobScheduler.class); + + private Scheduler scheduler; + private final SparkConfig sparkConfig; + + public SparkJobScheduler(SparkConfig sparkConfig) { + this.sparkConfig = sparkConfig; + } + + /** + * 启动定时调度器 + */ + public void start() { + try { + logger.info("正在启动Spark任务定时调度器..."); + + // 创建调度器工厂 + SchedulerFactory schedulerFactory = new StdSchedulerFactory(); + scheduler = schedulerFactory.getScheduler(); + + // 定义任务详情 + JobDetail jobDetail = JobBuilder.newJob(SparkProcessingJob.class) + .withIdentity("sparkProcessingJob", "sparkGroup") + .withDescription("农业股票数据处理定时任务") + .usingJobData("sparkConfig", sparkConfig.toString()) // 传递配置 + .build(); + + // 创建触发器 - 每30分钟执行一次 + Trigger trigger = TriggerBuilder.newTrigger() + .withIdentity("sparkProcessingTrigger", "sparkGroup") + .withDescription("每30分钟执行一次Spark数据处理") + .startNow() + .withSchedule(SimpleScheduleBuilder.simpleSchedule() + .withIntervalInMinutes(30) + .repeatForever()) + .build(); + + // 调度任务 + scheduler.scheduleJob(jobDetail, trigger); + + // 启动调度器 + scheduler.start(); + + logger.info("Spark任务定时调度器启动成功,每30分钟执行一次数据处理任务"); + + } catch (SchedulerException e) { + logger.error("启动定时调度器失败", e); + throw new RuntimeException("定时调度器启动失败", e); + } + } + + /** + * 停止定时调度器 + */ + public void stop() { + try { + if (scheduler != null && !scheduler.isShutdown()) { + logger.info("正在停止Spark任务定时调度器..."); + scheduler.shutdown(true); + logger.info("Spark任务定时调度器已停止"); + } + } catch (SchedulerException e) { + logger.error("停止定时调度器失败", e); + } + } + + /** + * 手动触发一次任务执行 + */ + public void triggerJobNow() { + try { + if (scheduler != null && scheduler.isStarted()) { + JobKey jobKey = new JobKey("sparkProcessingJob", "sparkGroup"); + scheduler.triggerJob(jobKey); + logger.info("已手动触发Spark数据处理任务"); + } + } catch (SchedulerException e) { + logger.error("手动触发任务失败", e); + } + } + + /** + * 获取调度器状态信息 + */ + public String getSchedulerStatus() { + try { + if (scheduler == null) { + return "调度器未初始化"; + } + + if (scheduler.isStarted()) { + return "调度器运行中"; + } else if (scheduler.isShutdown()) { + return "调度器已停止"; + } else { + return "调度器未启动"; + } + } catch (SchedulerException e) { + logger.error("获取调度器状态失败", e); + return "调度器状态未知"; + } + } + + /** + * Quartz任务类 + */ + public static class SparkProcessingJob implements Job { + + private static final Logger jobLogger = LoggerFactory.getLogger(SparkProcessingJob.class); + + @Override + public void execute(JobExecutionContext context) throws JobExecutionException { + jobLogger.info("开始执行定时Spark数据处理任务..."); + + StockDataProcessor processor = null; + + try { + // 加载配置 + SparkConfig config = SparkConfig.load(); + + // 创建处理器实例 + processor = new StockDataProcessor(config); + + // 执行批处理任务 + processor.runBatchProcessing(); + + jobLogger.info("定时Spark数据处理任务执行完成"); + + } catch (Exception e) { + jobLogger.error("定时Spark数据处理任务执行失败", e); + throw new JobExecutionException("Spark数据处理任务失败", e); + } finally { + // 确保关闭Spark会话 + if (processor != null) { + try { + processor.close(); + } catch (Exception e) { + jobLogger.warn("关闭Spark会话时出现警告", e); + } + } + } + } + } +} \ No newline at end of file diff --git a/spark-processor/src/main/resources/application-dev.conf b/spark-processor/src/main/resources/application-dev.conf index 5a978d8..44ad487 100644 --- a/spark-processor/src/main/resources/application-dev.conf +++ b/spark-processor/src/main/resources/application-dev.conf @@ -5,11 +5,11 @@ spark { } mysql { - host = "localhost" + host = "43.143.145.172" port = 3306 database = "agricultural_stock" user = "root" - password = "root" + password = "kyff145972" } output { diff --git a/spark-processor/src/main/resources/application-docker.conf b/spark-processor/src/main/resources/application-docker.conf deleted file mode 100644 index 282aa33..0000000 --- a/spark-processor/src/main/resources/application-docker.conf +++ /dev/null @@ -1,20 +0,0 @@ -# Docker环境配置 -spark { - master = "spark://spark-master:7077" - app-name = "agricultural-stock-data-processor-docker" -} - -mysql { - host = "mysql" - port = 3306 - database = "agricultural_stock" - user = "root" - password = "123456" -} - -output { - path = "/app/spark-output" -} - -# 生产模式 -debug = false \ No newline at end of file diff --git a/spark-processor/src/main/resources/application-prod.conf b/spark-processor/src/main/resources/application-prod.conf index b1d06eb..6d32745 100644 --- a/spark-processor/src/main/resources/application-prod.conf +++ b/spark-processor/src/main/resources/application-prod.conf @@ -5,7 +5,7 @@ spark { } mysql { - host = ${MYSQL_HOST:-"localhost"} + host = ${MYSQL_HOST:-"43.143.145.172"} port = ${MYSQL_PORT:-3306} database = ${MYSQL_DATABASE:-"agricultural_stock"} user = ${MYSQL_USER:-"root"} diff --git a/spark-processor/start-scheduler.sh b/spark-processor/start-scheduler.sh new file mode 100644 index 0000000..1ba5c03 --- /dev/null +++ b/spark-processor/start-scheduler.sh @@ -0,0 +1,79 @@ +#!/bin/bash + +# 农业股票数据处理器 - 定时调度器启动脚本 +# 每30分钟自动执行一次数据处理任务 + +echo "===================================" +echo "农业股票数据处理器 - 定时调度器模式" +echo "===================================" +echo "该模式将每30分钟自动执行一次数据处理" +echo "启动中..." +echo "" + +# 设置Java环境变量(如果需要) +# export JAVA_HOME=/path/to/java + +# 设置Spark环境变量(如果需要) +# export SPARK_HOME=/path/to/spark + +# 获取当前脚本所在目录 +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" + +# 进入项目目录 +cd "$SCRIPT_DIR" + +# 检查target目录是否存在编译后的jar文件 +JAR_FILE="target/spark-data-processor-1.0.0.jar" + +if [ ! -f "$JAR_FILE" ]; then + echo "未找到编译后的jar文件,正在编译项目..." + + # 检查是否有maven + if ! command -v mvn &> /dev/null; then + echo "错误: 未找到Maven命令,请确保Maven已安装并配置到PATH中" + exit 1 + fi + + # 编译项目 + echo "执行: mvn clean package -DskipTests" + mvn clean package -DskipTests + + if [ $? -ne 0 ]; then + echo "项目编译失败,请检查错误信息" + exit 1 + fi +fi + +# 检查配置文件 +CONFIG_FILE="src/main/resources/application-prod.conf" +if [ ! -f "$CONFIG_FILE" ]; then + echo "警告: 未找到生产环境配置文件 $CONFIG_FILE" + echo "将使用开发环境配置" + CONFIG_FILE="src/main/resources/application-dev.conf" +fi + +# 设置JVM参数 +JVM_OPTS="-Xmx4g -Xms2g -XX:+UseG1GC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps" + +# 设置日志配置 +LOG_CONFIG="-Dlogback.configurationFile=src/main/resources/logback.xml" + +# 启动应用 +echo "启动定时调度器..." +echo "配置文件: $CONFIG_FILE" +echo "JVM参数: $JVM_OPTS" +echo "" +echo "使用以下命令与调度器交互:" +echo " status - 查看调度器状态" +echo " trigger - 手动触发一次任务" +echo " stop - 停止调度器" +echo " help - 显示帮助信息" +echo "" + +# 执行Java程序 +java $JVM_OPTS $LOG_CONFIG \ + -Dconfig.file="$CONFIG_FILE" \ + -jar "$JAR_FILE" scheduler + +echo "" +echo "定时调度器已停止" \ No newline at end of file