yeg
2026-09-09 d064019d9f569b614b332f3229fe0528410d281b
更新
2个文件已修改
19 ■■■■■ 已修改文件
battery-business/src/main/java/com/battery/business/report/SpliceReportRequest.java 1 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
battery-business/src/main/java/com/battery/business/report/SpliceReportService.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
battery-business/src/main/java/com/battery/business/report/SpliceReportRequest.java
@@ -7,5 +7,6 @@
        @NotNull @Size(min=2) List<@NotNull @Valid Selection> selections, @NotNull Map<String,Object> settings) {
    public record Selection(@NotNull @Positive Long testId, @NotNull @Positive Long testBatteryId) {}
    public record Edit(@Positive int baseVersionNo, @NotBlank @Size(max=100) String name, String description,
            @Size(min=2) List<@NotNull @Valid Selection> selections,
            @NotNull Map<String,Object> settings, @NotBlank @Size(max=500) String changeSummary) {}
}
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);