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/FormationReportService.java | 30 +++++++++++++++++++++++++-----
1 files changed, 25 insertions(+), 5 deletions(-)
diff --git a/battery-business/src/main/java/com/battery/business/report/FormationReportService.java b/battery-business/src/main/java/com/battery/business/report/FormationReportService.java
index 209da86..4944949 100644
--- a/battery-business/src/main/java/com/battery/business/report/FormationReportService.java
+++ b/battery-business/src/main/java/com/battery/business/report/FormationReportService.java
@@ -56,12 +56,11 @@
/** 列表来源名称取自已保存版本,测试删除后仍保留筛选与识别信息。 */
public List<Summary> list()
{
- return reports.listWithSnapshots().stream().map(summary -> {
- // 最新快照由一次列表 SQL 带出,避免每份报表再执行一次版本查询。
- var sources = items(JSON.parseObject(summary.snapshotJson()));
+ return reports.listSources().stream().map(row -> {
+ var summary = row.report();
return new Summary(summary.id(), summary.name(), summary.creator(), summary.createdAt(),
- String.join("、", sources.stream().map(item -> item.source().name()).distinct().toList()),
- String.join("、", sources.stream().map(item -> item.source().batteryGroup()).distinct().toList()), summary.versionNo());
+ String.join("、", row.sources().stream().map(source -> Objects.toString(source.get("name"), "")).distinct().toList()),
+ String.join("、", row.sources().stream().map(source -> Objects.toString(source.get("batteryGroup"), "")).distinct().toList()), row.versionNo());
}).toList();
}
@@ -131,6 +130,27 @@
public Map<String, Object> get(long id, Integer versionNo)
{
var version = reports.get(id, versionNo);
+ return versionResponse(id, version);
+ }
+
+ /** 已保存详情先返回表格与版本身份,曲线通过同一版本的循环接口加载。 */
+ public Map<String, Object> page(long id, Integer versionNo) {
+ var version = reports.page(id, versionNo);
+ var result = versionResponse(id, version);
+ result.put("items", reports.pageItems(id, version.versionNo()));
+ result.put("curvesDeferred", true);
+ return result;
+ }
+
+ /** 只读固定版本的一个实际循环;不存在的报表、版本或循环必须明确拒绝。 */
+ public List<FormationReportRepository.CycleCurve> cycleCurves(long id, int versionNo, int cycleNo) {
+ var version = reports.page(id, versionNo);
+ var cycles = JSON.parseObject(version.snapshotJson()).getList("cycleNos", Integer.class);
+ if (cycleNo < 1 || cycles == null || !cycles.contains(cycleNo)) throw new ServiceException("报表版本中不存在该循环");
+ return reports.cycleCurves(id, versionNo, cycleNo);
+ }
+
+ private Map<String,Object> versionResponse(long id, ReportVersionRepository.Version version) {
var result = JSON.parseObject(version.snapshotJson());
result.put("id", id); result.put("versionNo", version.versionNo());
result.put("creator", version.report().creator()); result.put("createdAt", version.report().createdAt());
--
Gitblit v1.7.1