From fc1e02264d694ac28c2621fddfdc6c38dd0bbcee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9F=B3=E5=A4=B4=E4=BA=BA?= <3076767823@qq.com> Date: Sat, 8 Feb 2025 15:41:29 +0800 Subject: [PATCH] =?UTF-8?q?feat=EF=BC=9A=E5=A2=9E=E5=8A=A0=E6=8C=82?= =?UTF-8?q?=E5=8F=B7=E6=89=93=E5=8D=B0=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../print/controller/RegisterController.java | 44 +++++++++++++++ .../modules/print/service/PrintService.java | 34 ++++++++++++ .../service/impl/RegisterServiceImpl.java | 55 +++++++++++++++++++ 3 files changed, 133 insertions(+) create mode 100644 src/main/java/com/dpkj/modules/print/controller/RegisterController.java create mode 100644 src/main/java/com/dpkj/modules/print/service/PrintService.java create mode 100644 src/main/java/com/dpkj/modules/print/service/impl/RegisterServiceImpl.java diff --git a/src/main/java/com/dpkj/modules/print/controller/RegisterController.java b/src/main/java/com/dpkj/modules/print/controller/RegisterController.java new file mode 100644 index 0000000..87daa91 --- /dev/null +++ b/src/main/java/com/dpkj/modules/print/controller/RegisterController.java @@ -0,0 +1,44 @@ +package com.dpkj.modules.print.controller; + +import com.alibaba.fastjson.JSONObject; +import com.dpkj.common.dto.LexMarkResultDTO; +import com.dpkj.common.vo.Result; +import com.dpkj.modules.print.service.PrintService; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; + +/** + * 挂号controller + * @author 石头人 + * @since 2025-02-08 11:49:46 + */ +@RestController +@RequestMapping("/print") +public class RegisterController { + + @Resource(name = "registerService") + private PrintService printService; + + /** + * 挂号 + */ + @GetMapping("/register/{templateName}") + public Result register(@RequestParam String jsonData, + @PathVariable String templateName, + @RequestParam(defaultValue = "600") Integer width, + @RequestParam(defaultValue = "950") Integer height + ){ + return Result.ok((LexMarkResultDTO)printService.printImage(JSONObject.parseObject(jsonData), templateName, width, height)); + } + + /** + * 挂号,通过文件路径 + */ + @GetMapping("/register") + public Result registerByFilePath(@RequestParam(defaultValue = "D:\\images") String filePath){ + return Result.ok((LexMarkResultDTO)printService.printImage(null, null, 0, 0, filePath)); + } + +} + diff --git a/src/main/java/com/dpkj/modules/print/service/PrintService.java b/src/main/java/com/dpkj/modules/print/service/PrintService.java new file mode 100644 index 0000000..e8c3f2c --- /dev/null +++ b/src/main/java/com/dpkj/modules/print/service/PrintService.java @@ -0,0 +1,34 @@ +package com.dpkj.modules.print.service; + +import com.alibaba.fastjson.JSONObject; + +/** + * 打印服务接口 + * + * @author 石头人 + * @version 1.0 + * @since 2025-02-08 10:35:27 + */ +public interface PrintService { + + + /** + * 生成小票图片 + * + * @param data json数据,用来填充模板 + * @param template 模板(html字符串或者模板名称) + * @param width 图片宽度 + * @param height 图片高度 + * @param saveDir 图片的保存路径,如果为空,那么不进行图片的保存 + */ + Object printImage(JSONObject data, String template, int width, int height, String saveDir); + + /** + * 默认实现,给定一个默认可用的图片保存路径 + */ + default Object printImage(JSONObject data, String template, int width, int height) { + return printImage(data, template, width, height, "D:\\images"); + } + + +} diff --git a/src/main/java/com/dpkj/modules/print/service/impl/RegisterServiceImpl.java b/src/main/java/com/dpkj/modules/print/service/impl/RegisterServiceImpl.java new file mode 100644 index 0000000..2a2b2e4 --- /dev/null +++ b/src/main/java/com/dpkj/modules/print/service/impl/RegisterServiceImpl.java @@ -0,0 +1,55 @@ +package com.dpkj.modules.print.service.impl; + + +import com.alibaba.fastjson.JSONObject; +import com.dpkj.common.dto.LexMarkDTO; +import com.dpkj.common.dto.LexMarkResultDTO; +import com.dpkj.common.utils.TemplateUtils; +import com.dpkj.common.utils.ThirdService; +import com.dpkj.modules.print.service.PrintService; +import org.springframework.stereotype.Service; +import org.thymeleaf.util.StringUtils; + +import javax.annotation.Resource; + +/** + * 挂号服务打印 + * + * @author 石头人 + * @version 1.0 + * @since 2025-02-08 10:36:25 + */ +@Service("registerService") +public class RegisterServiceImpl implements PrintService { + + @Resource + private ThirdService thirdService; + + @Override + public LexMarkResultDTO printImage(JSONObject data, String template, int width, int height, String saveDir) { + StringBuilder filePath = new StringBuilder(saveDir); + // 校验是否选中了模板,如果没选中模板的话则不需要另外生成了 + if ( !StringUtils.isEmpty(template) && !StringUtils.isEmpty(saveDir)){ + byte[] image = new TemplateUtils().generateReceiptImage(data, template, width, height, filePath); + } + + LexMarkDTO lexMarkDTO = new LexMarkDTO(); + lexMarkDTO.setActionName("PrintForm"); + lexMarkDTO.setCallID(19256); + lexMarkDTO.setDevName("ReceiptPrinter"); + JSONObject param = new JSONObject(); + param.put("TimeOut", 30000); + param.put("formName", "ReceiptForm"); + param.put("mediaName", "ReceiptMedia"); + param.put("alignment", 0); + param.put("offsetX", 0); + param.put("offsetY", 0); + param.put("resolution", 1); + param.put("mediaCtrl", 1); + param.put("fields", "LOGO=" + filePath); + lexMarkDTO.setParam(param.toJSONString()); + return thirdService.callDevice(lexMarkDTO); + } + +} +