package com.battery.business.web;
|
|
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;
|
import com.ruoyi.common.core.domain.AjaxResult;
|
import org.springframework.security.access.prepost.PreAuthorize;
|
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.PostMapping;
|
import org.springframework.web.bind.annotation.PathVariable;
|
import org.springframework.web.bind.annotation.RequestBody;
|
|
/** 对比报表按正式动作授权,创建人不限制报表可见范围。 */
|
@RestController
|
@RequestMapping("/system/compare-report")
|
public class CompareReportController extends BaseController
|
{
|
private final CompareReportRepository reports;
|
private final CompareReportService service;
|
public CompareReportController(CompareReportRepository reports, CompareReportService service)
|
{ this.reports = reports; this.service = service; }
|
|
/** 查询报表摘要;筛选与分页沿用现有列表交互。 */
|
@PreAuthorize("@ss.hasPermi('system:compare-report:query')")
|
@GetMapping("/list")
|
public AjaxResult list() { return success().put("rows", reports.list()); }
|
|
/** 新建页查询可选真实来源。 */
|
@PreAuthorize("@ss.hasPermi('system:compare-report:add')")
|
@GetMapping("/sources")
|
public AjaxResult sources() { return success(service.sources()); }
|
|
/** 预览范围由后端验证并读取,不接收浏览器测量事实。 */
|
@PreAuthorize("@ss.hasPermi('system:compare-report:add')")
|
@PostMapping("/preview")
|
public AjaxResult preview(@RequestBody List<CompareReportRequest.Selection> selections)
|
{ return success(service.preview(selections)); }
|
|
/** 首次保存报表及独立版本。 */
|
@PreAuthorize("@ss.hasPermi('system:compare-report:add')")
|
@PostMapping
|
public AjaxResult create(@Valid @RequestBody CompareReportRequest request)
|
{ return success(service.create(request, getUserId(), getUsername())); }
|
|
/** 读取已保存版本,不检查来源测试是否仍存在。 */
|
@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)); }
|
|
/** 导出仅返回指定已保存版本;不读取来源,也不记录浏览器无法确认的 PDF 保存结果。 */
|
@PreAuthorize("@ss.hasPermi('system:compare-report:export')")
|
@GetMapping("/{id}/versions/{versionNo}/print")
|
public AjaxResult print(@PathVariable long id, @PathVariable int versionNo) { return success(service.get(id, versionNo)); }
|
|
/** 修订 CSV 使用正式版本摘要,导出权限独立于历史查看权限。 */
|
@PreAuthorize("@ss.hasPermi('system:compare-report:export')")
|
@GetMapping("/{id}/versions/export")
|
public AjaxResult exportHistory(@PathVariable long id) { return success(reports.history(id)); }
|
|
/** 编辑权限可读取最新快照作为基准,无需来源测试权限。 */
|
@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())); }
|
}
|