From 08be30bda841df3af65428547186513a3d7b1f42 Mon Sep 17 00:00:00 2001
From: liding <756868258@qq.com>
Date: 星期二, 27 十月 2026 17:47:56 +0800
Subject: [PATCH] feat(report): 完善报告退回流程及新增 PDF 预览功能 - 新增退回到报告审核环节,支持退回至检验任务或报告审核两种目标
---
inspect-server/src/main/java/com/ruoyi/inspect/controller/InsReportController.java | 85 ++++++++++++++++++++----------------------
1 files changed, 41 insertions(+), 44 deletions(-)
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/controller/InsReportController.java b/inspect-server/src/main/java/com/ruoyi/inspect/controller/InsReportController.java
index b2cc44f..15dc7bc 100644
--- a/inspect-server/src/main/java/com/ruoyi/inspect/controller/InsReportController.java
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/controller/InsReportController.java
@@ -1,16 +1,13 @@
package com.ruoyi.inspect.controller;
-import cn.hutool.core.io.FileUtil;
-import cn.hutool.http.HttpUtil;
-import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.basic.dto.IfsInventoryQuantitySupplierDto;
-import com.ruoyi.common.annotation.Anonymous;
import com.ruoyi.common.annotation.PersonalScope;
import com.ruoyi.common.core.domain.Result;
import com.ruoyi.framework.exception.ErrorException;
import com.ruoyi.inspect.dto.ReportPageDto;
import com.ruoyi.inspect.service.InsOrderPlanService;
+import com.ruoyi.inspect.service.InsReportEditingService;
import com.ruoyi.inspect.service.InsReportService;
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Operation;
@@ -20,16 +17,12 @@
import org.springframework.web.multipart.MultipartFile;
import jakarta.annotation.Resource;
-import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;
-import java.io.PrintWriter;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Map;
-import java.util.Objects;
-import java.util.Scanner;
@RestController
@RequestMapping("/insReport")
@@ -41,6 +34,9 @@
@Resource
private InsOrderPlanService insOrderPlanService;
+
+ @Resource
+ private InsReportEditingService insReportEditingService;
@Value("${wordUrl}")
private String wordUrl;
@@ -106,7 +102,11 @@
Integer isExamine = (Integer) param.get("isExamine");
String examineTell = (String) param.get("examineTell");
Integer userId = (Integer) param.get("userId");
- return Result.success(insReportService.examineReport(id, isExamine, examineTell, userId));
+ Map<String, String> sessions = new java.util.HashMap<>();
+ if (param.get("editSessions") instanceof Map<?, ?> values) {
+ values.forEach((key, value) -> sessions.put(String.valueOf(key), String.valueOf(value)));
+ }
+ return Result.success(insReportEditingService.examineReport(id, isExamine, examineTell, userId, sessions));
}
@Operation(summary = "鎵瑰噯")
@@ -131,34 +131,26 @@
return value instanceof Number ? ((Number) value).intValue() : Integer.valueOf(String.valueOf(value));
}
- @Anonymous
- @RequestMapping("/onlyOffice/save")
- public void saveFile(@RequestParam String fileName, HttpServletRequest request, HttpServletResponse response) {
- PrintWriter writer = null;
- try {
- writer = response.getWriter();
- // 鑾峰彇浼犺緭鐨刯son鏁版嵁
- Scanner scanner = new Scanner(request.getInputStream()).useDelimiter("\\A");
- String body = scanner.hasNext() ? scanner.next() : "";
- JSONObject jsonObject = JSONObject.parseObject(body);
+ @Operation(summary = "鑾峰彇娴忚鍣ㄧ鎶ュ憡缂栬緫浼氳瘽")
+ @GetMapping("/editor/config")
+ public Result editConfig(Integer id, Integer reportType) {
+ return Result.success(insReportEditingService.createEditConfig(id, reportType));
+ }
- if (jsonObject.containsKey("url")) {
- String jsonArray = jsonObject.get("lastsave").toString(); // 鏇存柊鏃堕棿
- String fileUrl = jsonObject.get("url").toString(); // 鏇存柊鏂囦欢url
- HttpUtil.downloadFile(fileUrl, FileUtil.file(wordUrl + "/" + fileName));
- }
- } catch (Exception e) {
- e.printStackTrace();
- writer.write("{\"error\":-1}");
- return;
- }
- /*
- * status = 1锛屾垜浠粰onlyOffice鐨勬湇鍔¤繑鍥瀧"error":"0"}鐨勪俊鎭��
- * 杩欐牱onlyOffice浼氳涓哄洖璋冩帴鍙f槸娌¢棶棰樼殑锛岃繖鏍峰氨鍙互鍦ㄧ嚎缂栬緫鏂囨。浜嗭紝鍚﹀垯鐨勮瘽浼氬脊鍑虹獥鍙h鏄�
- */
- if (Objects.nonNull(writer)) {
- writer.write("{\"error\":0}");
- }
+ @Operation(summary = "璇诲彇瀹℃牳 DOCX 鍐呭")
+ @GetMapping("/editor/document")
+ public org.springframework.http.ResponseEntity<byte[]> editDocument(@RequestParam String token) {
+ return org.springframework.http.ResponseEntity.ok().header("Cache-Control", "no-store")
+ .contentType(org.springframework.http.MediaType.parseMediaType(
+ "application/vnd.openxmlformats-officedocument.wordprocessingml.document"))
+ .body(insReportEditingService.readDocument(token));
+ }
+
+ @Operation(summary = "淇濆瓨娴忚鍣ㄥ唴缂栬緫鐨� DOCX")
+ @PostMapping(value = "/editor/document", consumes = "multipart/form-data")
+ public Result saveEditDocument(@RequestParam String token, @RequestParam String version,
+ @RequestPart MultipartFile file) {
+ return Result.success(insReportEditingService.saveDocument(token, version, file));
}
@Operation(summary = "鎶ュ憡鎵归噺涓嬭浇")
@@ -173,6 +165,14 @@
@PersonalScope(permsName = "business:reportPreparation", objectName = ReportPageDto.class, paramName = "createOrderUser")
public void download(Integer id, Integer reportType, ReportPageDto reportPageDto, HttpServletResponse response) {
insReportService.download(id, reportType, reportPageDto.getCreateOrderUser(), response);
+ }
+
+ @Operation(summary = "鎸� Word 鍘熷鍒嗛〉鎺掔増棰勮鎶ュ憡 PDF")
+ @GetMapping("/preview")
+ @PreAuthorize("@ss.hasPermi('business:reportPreparation')")
+ @PersonalScope(permsName = "business:reportPreparation", objectName = ReportPageDto.class, paramName = "createOrderUser")
+ public void preview(Integer id, Integer reportType, ReportPageDto reportPageDto, HttpServletResponse response) {
+ insReportService.preview(id, reportType, reportPageDto.getCreateOrderUser(), response);
}
@Operation(summary = "閲嶆柊鐢熸垚鎶ュ憡")
@@ -190,16 +190,13 @@
return Result.success(insReportService.upAll(file));
}
- /**
- * 閫�鍥炲埌妫�楠屼换鍔�
- * @param id
- * @return
- */
- @Operation(summary = "閫�鍥炲埌妫�楠屼换鍔�")
+ @Operation(summary = "閫�鍥炲埌妫�楠屼换鍔℃垨鎶ュ憡瀹℃牳")
@PostMapping("/sendBackTask")
public Result sendBackTask(@RequestBody Map<String, Object> param){
- Integer id = (Integer) param.get("id");
- return Result.success(insReportService.sendBackTask(id));
+ Integer id = toInteger(param.get("id"));
+ String target = param.get("target") == null ? null : String.valueOf(param.get("target"));
+ String reason = param.get("reason") == null ? null : String.valueOf(param.get("reason"));
+ return Result.success(insReportService.sendBackTask(id, target, reason));
}
/**
--
Gitblit v1.9.3