| | |
| | | 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; |
| | |
| | | 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") |
| | |
| | | |
| | | @Resource |
| | | private InsOrderPlanService insOrderPlanService; |
| | | |
| | | @Resource |
| | | private InsReportEditingService insReportEditingService; |
| | | |
| | | @Value("${wordUrl}") |
| | | private String wordUrl; |
| | |
| | | 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 = "批准") |
| | |
| | | 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(); |
| | | // 获取传输的json数据 |
| | | 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会认为回调接口是没问题的,这样就可以在线编辑文档了,否则的话会弹出窗口说明 |
| | | */ |
| | | 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 = "报告批量下载") |