From 7858c25faa53dd2f4c0faae58618565ac5bb50ae Mon Sep 17 00:00:00 2001
From: zzw <228544128@qq.com>
Date: 星期三, 14 十月 2026 13:07:22 +0800
Subject: [PATCH] feat: add engineering order print and externalize app config
---
emergency-repair-server/src/main/java/com/emergencyrepair/business/controller/FaultController.java | 46 ++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 46 insertions(+), 0 deletions(-)
diff --git a/emergency-repair-server/src/main/java/com/emergencyrepair/business/controller/FaultController.java b/emergency-repair-server/src/main/java/com/emergencyrepair/business/controller/FaultController.java
index c836b87..dc5ced1 100644
--- a/emergency-repair-server/src/main/java/com/emergencyrepair/business/controller/FaultController.java
+++ b/emergency-repair-server/src/main/java/com/emergencyrepair/business/controller/FaultController.java
@@ -5,8 +5,13 @@
import com.emergencyrepair.business.entity.Fault;
import com.emergencyrepair.business.entity.WorkOrder;
import com.emergencyrepair.business.service.BusinessService;
+import com.emergencyrepair.business.service.EngineeringOrderPrintService;
import com.emergencyrepair.common.Result;
import lombok.RequiredArgsConstructor;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
@@ -19,6 +24,9 @@
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDate;
+import java.io.UnsupportedEncodingException;
+import java.net.URLEncoder;
+import java.nio.charset.StandardCharsets;
import java.util.List;
@RestController
@@ -26,6 +34,7 @@
@RequiredArgsConstructor
public class FaultController {
private final BusinessService businessService;
+ private final EngineeringOrderPrintService engineeringOrderPrintService;
@GetMapping("/page")
public Result<Page<Fault>> page(@RequestParam(defaultValue = "1") long current,
@@ -112,4 +121,41 @@
public Result<List<WorkOrder>> dispatch(@RequestBody Requests.DispatchRequest request) {
return Result.ok(businessService.dispatch(request));
}
+
+ /**
+ * 宸ョ▼鍗曟墦鍗帮細鎶婇�変腑鐨勬晠闅滆褰曞鐢� Word 妯℃澘鐢熸垚鍥涜仈宸ョ▼鍗曘��
+ */
+ @PostMapping("/engineering-print")
+ public ResponseEntity<byte[]> engineeringPrint(@RequestBody Requests.IdList request) {
+ return documentResponse(engineeringOrderPrintService.render(request.getIds()),
+ "宸ョ▼鍗�.docx", "engineering-order.docx");
+ }
+
+ /**
+ * 鎵撳嵃宸ョ▼鍗�2锛氱1鑱斿叏閮ㄦ槑缁嗗悗鎹㈤〉锛屽啀杈撳嚭绗�2鑱旓紝浠ユ绫绘帹銆�
+ */
+ @PostMapping("/engineering-print-v2")
+ public ResponseEntity<byte[]> engineeringPrintV2(@RequestBody Requests.IdList request) {
+ return documentResponse(engineeringOrderPrintService.renderVersion2(request.getIds()),
+ "宸ョ▼鍗�2.docx", "engineering-order-2.docx");
+ }
+
+ private ResponseEntity<byte[]> documentResponse(byte[] document, String displayName, String fallbackName) {
+ String filename = encodeFilename(displayName, fallbackName);
+ HttpHeaders headers = new HttpHeaders();
+ headers.setContentType(MediaType.parseMediaType(
+ "application/vnd.openxmlformats-officedocument.wordprocessingml.document"));
+ headers.set(HttpHeaders.CONTENT_DISPOSITION,
+ "attachment; filename=\"" + fallbackName + "\"; filename*=UTF-8''" + filename);
+ headers.setContentLength(document.length);
+ return new ResponseEntity<>(document, headers, HttpStatus.OK);
+ }
+
+ private String encodeFilename(String name, String fallbackName) {
+ try {
+ return URLEncoder.encode(name, StandardCharsets.UTF_8.name()).replace("+", "%20");
+ } catch (UnsupportedEncodingException exception) {
+ return fallbackName;
+ }
+ }
}
--
Gitblit v1.9.1