From a34e373b7a1726fc8a8fe35dda92e003d0c173e9 Mon Sep 17 00:00:00 2001
From: yeg <1347747024@qq.com>
Date: 星期一, 07 九月 2026 21:46:30 +0800
Subject: [PATCH] 完成拼接报表验收后业务注释整理

---
 battery-business/src/main/java/com/battery/business/report/SpliceReportService.java |    3 +++
 ruoyi-admin/src/main/java/com/battery/business/web/SpliceReportController.java      |   11 +++++++++++
 2 files changed, 14 insertions(+), 0 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 1ad9ec5..fca9c40 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
@@ -102,6 +102,7 @@
     for (String key : List.of("chargeEnergy", "dischargeEnergy", "chargeCapacity", "dischargeCapacity"))
      if (cycleRows.get(0).get(key) != null) values.put(key, cycleRows.get(0).get(key));
     Number charge = num(values.get("chargeEnergy")), discharge = num(values.get("dischargeEnergy"));
+    // 两项能量沿用同一存储单位;非正分母留缺失,计算结果不截断到百分之百。
     if (charge != null && discharge != null && charge.doubleValue() > 0)
      values.put("energyEfficiency", new BigDecimal(discharge.toString()).multiply(BigDecimal.valueOf(100))
          .divide(new BigDecimal(charge.toString()), MathContext.DECIMAL128));
@@ -158,6 +159,7 @@
   var selections = JSON.parseArray(snapshot.getString("selections"), SpliceReportRequest.Selection.class);
   var settings = settings(snapshot.getJSONObject("settings"), false);
   Matrix matrix = freeze(preview(selections), fields(settings));
+  // 人工值绑定原循环身份,刷新只清理已不存在的循环,不按新的拼接循环号迁移。
   var overrides = JSON.parseObject(JSON.toJSONString(settings.getOrDefault("statisticValues", Map.of())));
   overrides.keySet().retainAll(statisticKeys(matrix.segments()));
   settings.put("statisticValues", overrides);
@@ -215,6 +217,7 @@
  }
 
  private Set<String> statisticKeys(List<Map<String,Object>> segments) {
+  // 测试电池身份和原循环号共同限定人工值,重排来源不改变其归属。
   Set<String> allowed = new HashSet<>();
   for (var segment : segments) {
    var source = JSON.parseObject(JSON.toJSONString(segment.get("source")), Candidate.class);
diff --git a/ruoyi-admin/src/main/java/com/battery/business/web/SpliceReportController.java b/ruoyi-admin/src/main/java/com/battery/business/web/SpliceReportController.java
index e47fd5b..54a7215 100644
--- a/ruoyi-admin/src/main/java/com/battery/business/web/SpliceReportController.java
+++ b/ruoyi-admin/src/main/java/com/battery/business/web/SpliceReportController.java
@@ -3,17 +3,28 @@
 /** 拼接报表正式 API,所有来源与统计由后端校验并冻结。 */
 @RestController @RequestMapping("/system/splice-report") public class SpliceReportController extends BaseController {
  private final SpliceReportService service; private final SpliceReportRepository reports; public SpliceReportController(SpliceReportService s,SpliceReportRepository r){service=s;reports=r;}
+ /** 按新增权限读取检测完成测试的参与电池候选。 */
  @GetMapping("/sources") @PreAuthorize("@ss.hasPermi('system:splice-report:add')") public AjaxResult sources(){return success(service.sources());}
+ /** 校验共同电池并预览当前有效统计,不保存报表。 */
  @PostMapping("/preview") @PreAuthorize("@ss.hasPermi('system:splice-report:add')") public AjaxResult preview(@RequestBody List<SpliceReportRequest.Selection> s){return success(service.preview(s));}
+ /** 返回可协作查看的拼接报表列表,不按创建人限制。 */
  @GetMapping("/list") @PreAuthorize("@ss.hasPermi('system:splice-report:query')") public AjaxResult list(){return success().put("rows",reports.list());}
+ /** 冻结正式来源为首版,创建身份取当前登录人。 */
  @PostMapping @PreAuthorize("@ss.hasPermi('system:splice-report:add')") public AjaxResult create(@Valid @RequestBody SpliceReportRequest r){return success(service.create(r,getUserId(),getUsername()));}
+ /** 按查看权限读取最新保存版本,来源删除不影响重开。 */
  @GetMapping("/{id}") @PreAuthorize("@ss.hasPermi('system:splice-report:query')") public AjaxResult get(@PathVariable long id){return success(service.get(id,null));}
+ /** 按编辑权限读取版本基准,不额外要求查看权限。 */
  @GetMapping("/{id}/editing") @PreAuthorize("@ss.hasPermi('system:splice-report:edit')") public AjaxResult editing(@PathVariable long id){return success(service.get(id,null));}
+ /** 返回独立版本历史,不重新读取来源测试。 */
  @GetMapping("/{id}/versions") @PreAuthorize("@ss.hasPermi('system:splice-report:query')") public AjaxResult history(@PathVariable long id){return success(reports.history(id));}
+ /** 读取指定冻结版本,保留当时的字段和计算原值。 */
  @GetMapping("/{id}/versions/{version}") @PreAuthorize("@ss.hasPermi('system:splice-report:query')") public AjaxResult version(@PathVariable long id,@PathVariable int version){return success(service.get(id,version));}
  /** 仅按导出权限读取指定冻结版本;来源测试删除后仍可打印,不登记下载结果。 */
  @GetMapping("/{id}/versions/{version}/print") @PreAuthorize("@ss.hasPermi('system:splice-report:export')") public AjaxResult print(@PathVariable long id,@PathVariable int version){return success(service.get(id,version));}
+ /** 基于当前版本追加普通编辑,陈旧基准由业务层拒绝。 */
  @PostMapping("/{id}/versions") @PreAuthorize("@ss.hasPermi('system:splice-report:edit')") public AjaxResult edit(@PathVariable long id,@Valid @RequestBody SpliceReportRequest.Edit r){return success(service.edit(id,r,getUserId(),getUsername()));}
+ /** 显式重取来源形成新版本,来源失效时不产生部分更新。 */
  @PostMapping("/{id}/refresh-source") @PreAuthorize("@ss.hasPermi('system:splice-report:edit')") public AjaxResult refresh(@PathVariable long id,@RequestBody java.util.Map<String,Object> body){return success(service.refresh(id,((Number)body.get("baseVersionNo")).intValue(),String.valueOf(body.getOrDefault("changeSummary","")),getUserId(),getUsername()));}
+ /** 事务删除整份报表并记录当前操作人,不删除源测试。 */
  @DeleteMapping("/{id}") @PreAuthorize("@ss.hasPermi('system:splice-report:remove')") public AjaxResult delete(@PathVariable long id){service.delete(id,getUserId(),getUsername());return success();}
 }

--
Gitblit v1.7.1