From 37600a85b79387ab6afa7bf342eedbf938331e1d Mon Sep 17 00:00:00 2001
From: yeg <1347747024@qq.com>
Date: 星期日, 06 九月 2026 17:37:28 +0800
Subject: [PATCH] 实现对比报表快照编辑与历史版本

---
 ruoyi-admin/src/main/java/com/battery/business/web/CompareReportController.java |   28 ++++++++++++++++++++++++++++
 1 files changed, 28 insertions(+), 0 deletions(-)

diff --git a/ruoyi-admin/src/main/java/com/battery/business/web/CompareReportController.java b/ruoyi-admin/src/main/java/com/battery/business/web/CompareReportController.java
index 9570eaa..318663c 100644
--- a/ruoyi-admin/src/main/java/com/battery/business/web/CompareReportController.java
+++ b/ruoyi-admin/src/main/java/com/battery/business/web/CompareReportController.java
@@ -3,6 +3,7 @@
 import com.battery.business.report.CompareReportRepository;
 import com.battery.business.report.CompareReportService;
 import com.battery.business.report.CompareReportRequest;
+import com.battery.business.report.CompareReportEditRequest;
 import jakarta.validation.Valid;
 import java.util.List;
 import com.ruoyi.common.core.controller.BaseController;
@@ -51,4 +52,31 @@
     @PreAuthorize("@ss.hasPermi('system:compare-report:query')")
     @GetMapping("/{id}")
     public AjaxResult get(@PathVariable long id) { return success(service.get(id)); }
+
+    /** 授权查看全部历史版本摘要,不限制创建人。 */
+    @PreAuthorize("@ss.hasPermi('system:compare-report:query')")
+    @GetMapping("/{id}/versions")
+    public AjaxResult history(@PathVariable long id) { return success(reports.history(id)); }
+
+    /** 指定历史版本只读,不依赖来源仍存在。 */
+    @PreAuthorize("@ss.hasPermi('system:compare-report:query')")
+    @GetMapping("/{id}/versions/{versionNo}")
+    public AjaxResult version(@PathVariable long id, @PathVariable int versionNo) { return success(service.get(id, versionNo)); }
+
+    /** 编辑权限可读取最新快照作为基准,无需来源测试权限。 */
+    @PreAuthorize("@ss.hasPermi('system:compare-report:edit')")
+    @GetMapping("/{id}/editing")
+    public AjaxResult editing(@PathVariable long id) { return success(service.get(id)); }
+
+    /** 普通编辑只追加新版本,拒绝调用方提供测量事实。 */
+    @PreAuthorize("@ss.hasPermi('system:compare-report:edit')")
+    @PostMapping("/{id}/versions")
+    public AjaxResult edit(@PathVariable long id, @Valid @RequestBody CompareReportEditRequest request)
+    { return success(service.edit(id, request, getUserId(), getUsername())); }
+
+    /** 独立动作重读当前来源并追加快照,失败由业务事务完整回滚。 */
+    @PreAuthorize("@ss.hasPermi('system:compare-report:edit')")
+    @PostMapping("/{id}/refresh-source")
+    public AjaxResult refresh(@PathVariable long id, @Valid @RequestBody CompareReportEditRequest.Refresh request)
+    { return success(service.refresh(id, request, getUserId(), getUsername())); }
 }

--
Gitblit v1.7.1