From 23855599412c4d61b38d78f0f3abd3430a48b5b1 Mon Sep 17 00:00:00 2001 From: zhangherong <571457620@qq.com> Date: 星期三, 25 六月 2025 11:51:38 +0800 Subject: [PATCH] Merge branch 'mdc_hyjs_master' --- lxzn-module-tms/src/main/java/org/jeecg/modules/tms/utils/QrCodePrinterUtils.java | 92 ++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 92 insertions(+), 0 deletions(-) diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/utils/QrCodePrinterUtils.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/utils/QrCodePrinterUtils.java new file mode 100644 index 0000000..2c92a36 --- /dev/null +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/utils/QrCodePrinterUtils.java @@ -0,0 +1,92 @@ +package org.jeecg.modules.tms.utils; + +import com.google.zxing.BarcodeFormat; +import com.google.zxing.EncodeHintType; +import com.google.zxing.MultiFormatWriter; +import com.google.zxing.client.j2se.MatrixToImageWriter; +import com.google.zxing.common.BitMatrix; +import com.google.zxing.qrcode.QRCodeWriter; +import liquibase.pro.packaged.S; +import lombok.extern.slf4j.Slf4j; +import org.jeecg.common.api.vo.Result; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import javax.print.*; +import javax.print.attribute.HashPrintRequestAttributeSet; +import javax.print.attribute.PrintRequestAttributeSet; +import java.awt.print.*; +import java.awt.image.BufferedImage; +import java.io.ByteArrayOutputStream; +import java.io.OutputStream; +import java.util.*; + +@RestController +@RequestMapping("/tms/qyCode") +@Slf4j +public class QrCodePrinterUtils{ + + @GetMapping("/generate") + public Result<Map<String, String>> generateQrCode() throws Exception { + String content = "Q201204330002-0001"; + // 鐢熸垚浜岀淮鐮佸浘鐗囷紙Base64锛� + ByteArrayOutputStream os = new ByteArrayOutputStream(); + generateQRCodeImage(content, 200, 200, os); + String base64Img = "data:image/png;base64," + Base64.getEncoder().encodeToString(os.toByteArray()); + + // 杩斿洖缁撴灉 + Map<String, String> result = new HashMap<>(); + result.put("image", base64Img); + result.put("content", content); + return Result.OK(result); + } + + public static void generateQRCodeImage(String text, int width, int height, OutputStream os) throws Exception { + QRCodeWriter qrCodeWriter = new QRCodeWriter(); + BitMatrix bitMatrix = qrCodeWriter.encode(text, BarcodeFormat.QR_CODE, width, height); + MatrixToImageWriter.writeToStream(bitMatrix, "PNG", os); + } + + public static String generateBacthQRCode(String content, int width, int height) { + try { + Map<EncodeHintType, Object> hints = new HashMap<>(); + hints.put(EncodeHintType.CHARACTER_SET, "UTF-8"); + hints.put(EncodeHintType.MARGIN, 1); + + BitMatrix matrix = new MultiFormatWriter().encode( + content, + BarcodeFormat.QR_CODE, + width, + height, + hints + ); + + ByteArrayOutputStream os = new ByteArrayOutputStream(); + MatrixToImageWriter.writeToStream(matrix, "PNG", os); + + return "data:image/png;base64," + + Base64.getEncoder().encodeToString(os.toByteArray()); + } catch (Exception e) { + throw new RuntimeException("鐢熸垚浜岀淮鐮佸け璐�", e); + } + } + + @GetMapping("/batchGenerate") + public Result<List<Map<String,String>>> generateBatchQrCode(){ + List<Map<String,String>> results = new ArrayList<>(); + List<String> contentList = new ArrayList<>(); + contentList.add("Q201204330002-0001"); + contentList.add("Q201204330002-0002"); + contentList.add("Q201204330002-0003"); + for(String content : contentList){ + Map<String,String> result = new HashMap<>(); + result.put("content",content); + result.put("image",generateBacthQRCode(content, 200, 200)); + // 鐢熸垚浜岀淮鐮佸浘鐗囷紙Base64锛� + results.add(result); + } + return Result.OK(results); + } +} -- Gitblit v1.9.3