From d064019d9f569b614b332f3229fe0528410d281b Mon Sep 17 00:00:00 2001
From: yeg <1347747024@qq.com>
Date: 星期三, 09 九月 2026 19:35:45 +0800
Subject: [PATCH] 更新

---
 battery-business/src/main/java/com/battery/business/report/SpliceReportService.java |   18 +++++++++++++++---
 1 files changed, 15 insertions(+), 3 deletions(-)

diff --git a/battery-business/src/main/java/com/battery/business/report/SpliceReportService.java b/battery-business/src/main/java/com/battery/business/report/SpliceReportService.java
index 1506ecc..ecd1a66 100644
--- a/battery-business/src/main/java/com/battery/business/report/SpliceReportService.java
+++ b/battery-business/src/main/java/com/battery/business/report/SpliceReportService.java
@@ -157,13 +157,25 @@
   return result;
  }
 
- /** 普通编辑只追加展示设置,保留原版本来源、计算原值及字段事实。 */
+ /** 普通编辑重算当前选择的来源段并追加新版本,历史版本保持冻结。 */
  @Transactional
  public Map<String,Object> edit(long id, SpliceReportRequest.Edit request, long uid, String user) {
   var snapshot = current(id, request.baseVersionNo());
   var settings = settings(request.settings(), false);
-  validateStatistics(settings, segments(snapshot));
-  validateSourceDetails(settings, segments(snapshot));
+  var selections = request.selections();
+  Matrix matrix;
+  if (selections == null) {
+   // 兼容既有编辑调用:未提交来源时只修改展示设置,不重新读取来源事实。
+   selections = JSON.parseArray(snapshot.getString("selections"), SpliceReportRequest.Selection.class);
+   matrix = new Matrix(segments(snapshot), snapshot.getJSONArray("cycleNos").toJavaList(Integer.class));
+  } else {
+   matrix = freeze(preview(selections), fields(settings));
+  }
+  validateStatistics(settings, matrix.segments());
+  validateSourceDetails(settings, matrix.segments());
+  snapshot.put("selections", selections);
+  snapshot.put("segments", matrix.segments());
+  snapshot.put("cycleNos", matrix.cycleNos());
   snapshot.put("name", request.name().trim()); snapshot.put("description", request.description()); snapshot.put("settings", settings);
   reports.append(id, request.baseVersionNo() + 1, request.name().trim(), snapshot.toJSONString(), uid, user, request.changeSummary().trim());
   return get(id, null);

--
Gitblit v1.7.1