From 34981c30a78e8bbd7791131059a9210f9928b62c Mon Sep 17 00:00:00 2001
From: 刘光辉 <347230014@qq.com>
Date: 星期四, 17 九月 2026 09:24:09 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master' into master

---
 jnpf-lims/jnpf-lims-controller/src/main/java/jnpf/limsController/LimsPrintController.java |   72 ++++++++++++++++++++++++++++++++++++
 1 files changed, 72 insertions(+), 0 deletions(-)

diff --git a/jnpf-lims/jnpf-lims-controller/src/main/java/jnpf/limsController/LimsPrintController.java b/jnpf-lims/jnpf-lims-controller/src/main/java/jnpf/limsController/LimsPrintController.java
new file mode 100644
index 0000000..2fdbea7
--- /dev/null
+++ b/jnpf-lims/jnpf-lims-controller/src/main/java/jnpf/limsController/LimsPrintController.java
@@ -0,0 +1,72 @@
+package jnpf.limsController;
+
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import jnpf.exception.DataException;
+import jnpf.limsEntity.LimsPrintTemplateEntity;
+import jnpf.limsService.LimsPrintTemplateService;
+import jnpf.limsService.print.PrintRendererRegistry;
+import jnpf.limsService.print.PrintTemplateRenderer;
+import jnpf.util.R;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Map;
+
+@Slf4j
+@Tag(name = "lims鎵撳嵃鎺ュ彛", description = "閫氱敤鎵撳嵃妯℃澘娓叉煋")
+@RestController
+@RequestMapping("/lims/biz/print")
+public class LimsPrintController {
+
+    @Autowired
+    private LimsPrintTemplateService limsPrintTemplateService;
+
+    @Autowired
+    private PrintRendererRegistry printRendererRegistry;
+
+    /**
+     * 娓叉煋鎵撳嵃妯℃澘锛氭寜 template_id 鍛戒腑妯℃澘閰嶇疆 + 璺敱鍒� renderer锛岀粍瑁呭墠绔�
+     * 娓叉煋鎵�闇�鐨勬暟鎹��
+     *
+     * 璇锋眰浣擄細{ "template_id": "jianyan_baogao", "id": "<涓氬姟瀹炰綋 f_id>" }
+     */
+    @Operation(summary = "娓叉煋鎵撳嵃妯℃澘")
+    @PostMapping("/render")
+    public R<Map<String, Object>> render(@RequestBody Map<String, String> params) {
+        if (params == null) {
+            return R.error("缂哄皯鍏ュ弬");
+        }
+        String templateId = params.get("template_id");
+        String id = params.get("id");
+        if (templateId == null || templateId.isEmpty()) {
+            return R.error("缂哄皯 template_id");
+        }
+        if (id == null || id.isEmpty()) {
+            return R.error("缂哄皯 id");
+        }
+
+        LimsPrintTemplateEntity tpl = limsPrintTemplateService.findActiveByTemplateId(templateId);
+        if (tpl == null) {
+            return R.error("鎵句笉鍒板惎鐢ㄧ殑鎵撳嵃妯℃澘: " + templateId);
+        }
+
+        PrintTemplateRenderer renderer;
+        try {
+            renderer = printRendererRegistry.get(templateId);
+        } catch (DataException e) {
+            return R.error(e.getMessage());
+        }
+
+        try {
+            Map<String, Object> data = renderer.render(id, tpl);
+            return R.success(data);
+        } catch (DataException e) {
+            return R.error(e.getMessage());
+        }
+    }
+}

--
Gitblit v1.8.0