From 3728fa293e1faf4bf4f9bf41105b84ddb43dc82e Mon Sep 17 00:00:00 2001
From: liding <756868258@qq.com>
Date: 星期一, 02 十一月 2026 16:53:02 +0800
Subject: [PATCH] feat(order-rates): 新增筛选条件下全部订单费用汇总接口

---
 inspect-server/src/main/java/com/ruoyi/inspect/controller/InsReportController.java |  100 +++++++++++++++++++++++++++----------------------
 1 files changed, 55 insertions(+), 45 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 7f2c1f7..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 = "鎵瑰噯")
@@ -115,37 +115,42 @@
         Integer id = (Integer) param.get("id");
         Integer isRatify = (Integer) param.get("isRatify");
         String ratifyTell = (String) param.get("ratifyTell");
-        return Result.success(insReportService.ratifyReport(id, isRatify, ratifyTell));
+        Object sealIdsObj = param.get("sealIds");
+        String sealIds = sealIdsObj == null ? null : String.valueOf(sealIdsObj);
+        Integer maSealId = toInteger(param.get("maSealId"));
+        Integer reportSealId = toInteger(param.get("reportSealId"));
+        Integer seamSealId = toInteger(param.get("seamSealId"));
+        return Result.success(insReportService.ratifyReport(
+                id, isRatify, ratifyTell, sealIds, maSealId, reportSealId, seamSealId));
     }
 
-    @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);
+    private Integer toInteger(Object value) {
+        if (value == null || String.valueOf(value).trim().isEmpty()) {
+            return null;
+        }
+        return value instanceof Number ? ((Number) value).intValue() : Integer.valueOf(String.valueOf(value));
+    }
 
-            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 = "鑾峰彇娴忚鍣ㄧ鎶ュ憡缂栬緫浼氳瘽")
+    @GetMapping("/editor/config")
+    public Result editConfig(Integer id, Integer reportType) {
+        return Result.success(insReportEditingService.createEditConfig(id, reportType));
+    }
+
+    @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 = "鎶ュ憡鎵归噺涓嬭浇")
@@ -160,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 = "閲嶆柊鐢熸垚鎶ュ憡")
@@ -177,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