From f54b0dff8157c7ef2547ac912d70cab63de50626 Mon Sep 17 00:00:00 2001
From: yeg <1347747024@qq.com>
Date: 星期三, 09 九月 2026 20:47:18 +0800
Subject: [PATCH] 按需读取化成旧报表摘要与循环曲线

---
 battery-business/src/main/java/com/battery/business/report/ReportVersionRepository.java |   17 +++++------------
 1 files changed, 5 insertions(+), 12 deletions(-)

diff --git a/battery-business/src/main/java/com/battery/business/report/ReportVersionRepository.java b/battery-business/src/main/java/com/battery/business/report/ReportVersionRepository.java
index ff9c100..66443b2 100644
--- a/battery-business/src/main/java/com/battery/business/report/ReportVersionRepository.java
+++ b/battery-business/src/main/java/com/battery/business/report/ReportVersionRepository.java
@@ -23,8 +23,6 @@
     private String sql(String statement) { return statement.replace("t_compare_report", "t_" + type + "_report"); }
 
     public record Summary(long id, String name, String creator, long createdAt) { }
-    /** 仅供需要从快照提取列表展示字段的化成服务使用;普通报表列表不返回快照。 */
-    public record SummarySnapshot(long id, String name, String creator, long createdAt, int versionNo, String snapshotJson) { }
     public record Version(Summary report, int versionNo, String snapshotJson, String operatorName, long versionCreatedAt, String changeSummary) { }
     public record History(int versionNo, String operatorName, long createdAt, String changeSummary) { }
 
@@ -35,23 +33,18 @@
                 (rs, index) -> new Summary(rs.getLong(1), rs.getString(2), rs.getString(3), rs.getTimestamp(4).getTime()));
     }
 
-    public List<SummarySnapshot> listWithSnapshots()
-    {
-        return jdbc.query(sql("select r.report_id, r.report_name, r.creator_name, r.created_at_utc, v.version_no, v.snapshot_json "
-                + "from t_compare_report r join t_compare_report_version v on v.report_id=r.report_id "
-                + "and v.version_no=(select max(v2.version_no) from t_compare_report_version v2 where v2.report_id=r.report_id) "
-                + "order by r.created_at_utc desc, r.report_id desc"),
-                (rs, index) -> new SummarySnapshot(rs.getLong(1), rs.getString(2), rs.getString(3), rs.getTimestamp(4).getTime(), rs.getInt(5), rs.getString(6)));
-    }
-
     /** 重读最新完整版本;来源不存在不影响结果。 */
     public Version get(long id)
     { return get(id, null); }
 
     /** 读取指定历史版,版本号为空时读取最新版本。 */
     public Version get(long id, Integer versionNo)
+    { return getProjection(id, versionNo, "v.snapshot_json"); }
+
+    /** 子仓储可提供固定字段投影;表达式仅由代码定义,不接受用户输入。 */
+    protected Version getProjection(long id, Integer versionNo, String projection)
     {
-        var rows = jdbc.query(sql("select r.report_id, r.report_name, r.creator_name, r.created_at_utc, v.version_no, v.snapshot_json, v.operator_name, v.created_at_utc, v.change_summary "
+        var rows = jdbc.query(sql("select r.report_id, r.report_name, r.creator_name, r.created_at_utc, v.version_no, " + projection + ", v.operator_name, v.created_at_utc, v.change_summary "
                 + "from t_compare_report r join t_compare_report_version v on v.report_id=r.report_id where r.report_id=? "
                 + (versionNo == null ? "and v.version_no=(select max(v2.version_no) from t_compare_report_version v2 where v2.report_id=r.report_id)" : "and v.version_no=?")),
                 (rs, index) -> new Version(new Summary(rs.getLong(1), rs.getString(2), rs.getString(3), rs.getTimestamp(4).getTime()),

--
Gitblit v1.7.1