From 34de79d9fd020487d0a80dd329759bfca5f4cbd3 Mon Sep 17 00:00:00 2001 From: 18756 <1875631620@qq.com> Date: 星期二, 20 八月 2024 14:12:36 +0800 Subject: [PATCH] 会议室功能二维码生成8.20 --- src/main/java/com/product/administration/service/ide/IConferenceManagerService.java | 3 + src/main/java/com/product/administration/controller/ConferenceManagerController.java | 52 ++++++++++++++++++++++++- src/main/java/com/product/administration/service/ConferenceManagerService.java | 65 +++++++++++++------------------- 3 files changed, 77 insertions(+), 43 deletions(-) diff --git a/src/main/java/com/product/administration/controller/ConferenceManagerController.java b/src/main/java/com/product/administration/controller/ConferenceManagerController.java index 2e5d6ce..1f27665 100644 --- a/src/main/java/com/product/administration/controller/ConferenceManagerController.java +++ b/src/main/java/com/product/administration/controller/ConferenceManagerController.java @@ -3,6 +3,8 @@ import com.alibaba.druid.util.StringUtils; import com.alibaba.fastjson.JSONObject; import com.google.zxing.WriterException; +import com.google.zxing.client.j2se.MatrixToImageWriter; +import com.google.zxing.common.BitMatrix; import com.product.administration.config.CmnConst; import com.product.administration.config.SystemCode; import com.product.administration.service.ConferenceManagerService; @@ -23,7 +25,10 @@ import org.springframework.web.bind.annotation.RestController; import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; import java.io.IOException; +import java.io.OutputStream; +import java.util.Date; import java.util.HashMap; import java.util.List; @@ -486,12 +491,53 @@ } + /** + * 浼氳绠$悊绛惧埌浜岀淮鐮� + * @param request + * @param response + * @throws IOException + * @throws WriterException + */ @PostMapping("/get_QrCode/{version}") @ApiVersion(1) - public String getQrCode(HttpServletRequest request) throws IOException, WriterException { + public void getQrCode(HttpServletRequest request, HttpServletResponse response) throws IOException, WriterException { + + //鑾峰彇鍙傛暟 FieldSetEntity fse = null; - conferenceManagerService.getQrCode(fse); - return OK(); + Object bean = request.getAttribute(CoreConst.API_POST_REQUEST_DATA); + if (bean != null) { + RequestParameterEntity reqp = (RequestParameterEntity) bean; + fse = reqp.getFormData(); + + //鍒ゆ柇鍙傛暟鏄惁涓虹┖ + if (bean == null || fse == null) { + this.error(com.product.admin.config.SystemCode.SYSTEM_FORM_NODATA.getValue(), com.product.admin.config.SystemCode.SYSTEM_FORM_NODATA.getText()); + } + String uuid = fse.getString("uuid"); + if(!StringUtils.isEmpty(uuid)){ + + // 璁剧疆鍝嶅簲娴佷俊鎭� + response.setContentType("image/jpg"); + response.setHeader("Pragma", "no-cache"); + response.setHeader("Cache-Control", "no-cache"); + response.setDateHeader("Expires", 0); + + OutputStream stream = response.getOutputStream(); + //鍚庣璺宠浆鍦板潃 + // String content = ("http://www.baidu.com"); + JSONObject jsonData = new JSONObject(); + jsonData.put("uuid",uuid); + jsonData.put("date",new Date()); + //jsonData.put("url",content); + //鑾峰彇涓�涓簩缁寸爜鍥剧墖 + BitMatrix bitMatrix = conferenceManagerService.getQrCode(jsonData.toString()); + //浠ユ祦鐨勫舰寮忚緭鍑哄埌鍓嶇 + MatrixToImageWriter.writeToStream(bitMatrix , "jpg" , stream); + + } + } + + } diff --git a/src/main/java/com/product/administration/service/ConferenceManagerService.java b/src/main/java/com/product/administration/service/ConferenceManagerService.java index 5853818..ff02277 100644 --- a/src/main/java/com/product/administration/service/ConferenceManagerService.java +++ b/src/main/java/com/product/administration/service/ConferenceManagerService.java @@ -7,6 +7,7 @@ import com.google.zxing.MultiFormatWriter; import com.google.zxing.WriterException; import com.google.zxing.common.BitMatrix; +import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel; import com.product.administration.config.CmnConst; import com.product.administration.config.SystemCode; import com.product.administration.service.ide.IConferenceManagerService; @@ -15,12 +16,14 @@ import com.product.core.dao.BaseDao; import com.product.core.entity.DataTableEntity; import com.product.core.entity.FieldSetEntity; +import com.product.core.entity.RequestParameterEntity; import com.product.core.exception.BaseException; import com.product.core.permission.PermissionService; import com.product.core.service.support.AbstractBaseService; import com.product.core.service.support.QueryFilterService; import com.product.core.spring.context.SpringMVCContextHolder; import com.product.core.transfer.Transactional; +import com.product.core.util.QuickResponUtil; import com.product.core.websocket.service.WebsocketMesssageServiceThread; import com.product.module.sys.entity.SystemUser; import com.product.util.BaseUtil; @@ -400,47 +403,31 @@ } @Override - public String getQrCode(FieldSetEntity fse) throws BaseException, WriterException, IOException { - String uuid="96f161b4-6360-40ba-8dc1-72bb39d56be4"; - int BLACK = 0xFF000000; - int WHITE = 0xFFFFFFFF; - Date date = new Date(); - String text = "http://127.0.0.1:9998/lx/api/conference/get_QrCode_Info/v1?uuid=" + uuid+"&date="+date; - String path = "D:/QRCode"; // 鍥剧墖鐢熸垚鐨勪綅缃� - int width = 400; - int height = 400; - // 浜岀淮鐮佸浘鐗囨牸寮� - String format = "jpg"; - // 璁剧疆缂栫爜锛岄槻姝腑鏂囦贡鐮� - Hashtable<EncodeHintType, Object> ht = new Hashtable<EncodeHintType, Object>(); - ht.put(EncodeHintType.CHARACTER_SET, "UTF-8"); - // 璁剧疆浜岀淮鐮佸弬鏁�(缂栫爜鍐呭锛岀紪鐮佺被鍨嬶紝鍥剧墖瀹藉害锛屽浘鐗囬珮搴�,鏍煎紡) - BitMatrix bitMatrix = new MultiFormatWriter().encode(text, BarcodeFormat.QR_CODE, width, height, ht); - // 鐢熸垚浜岀淮鐮�(瀹氫箟浜岀淮鐮佽緭鍑烘湇鍔″櫒璺緞) - File outputFile = new File(path); - if (!outputFile.exists()) { - // 鍒涘缓鏂囦欢澶� - outputFile.mkdir(); - }else { - outputFile.delete(); - outputFile.mkdir(); + public BitMatrix getQrCode(String content) throws BaseException, WriterException, IOException { + + //浜岀淮鐮佺殑瀹介珮 + int width = 200; + int height = 200; + + //鍏朵粬鍙傛暟锛屽瀛楃闆嗙紪鐮� + Map<EncodeHintType, Object> hints = new HashMap<EncodeHintType, Object>(); + hints.put(EncodeHintType.CHARACTER_SET, "UTF-8"); + //瀹归敊绾у埆涓篐 + hints.put(EncodeHintType.ERROR_CORRECTION , ErrorCorrectionLevel.H); + //鐧借竟鐨勫搴︼紝鍙彇0~4 + hints.put(EncodeHintType.MARGIN , 0); + + BitMatrix bitMatrix = null; + try { + //鐢熸垚鐭╅樀锛屽洜涓烘垜鐨勪笟鍔″満鏅紶鏉ョ殑鏄紪鐮佷箣鍚庣殑URL锛屾墍浠ュ厛瑙g爜 + bitMatrix = new MultiFormatWriter().encode(content, + BarcodeFormat.QR_CODE, width, height, hints); + + } catch (WriterException e) { + e.printStackTrace(); } - int b_width = bitMatrix.getWidth(); - int b_height = bitMatrix.getHeight(); - // 寤虹珛鍥惧儚缂撳啿鍣� - BufferedImage image = new BufferedImage(b_width, b_height, BufferedImage.TYPE_3BYTE_BGR); - for (int x = 0; x < b_width; x++) { - for (int y = 0; y < b_height; y++) { - image.setRGB(x, y, bitMatrix.get(x, y) ? BLACK : WHITE); - } - } - // 鐢熸垚浜岀淮鐮� - ImageIO.write(image, format, new File(path + "/code." + format)); - // 浜岀淮鐮佺殑鍚嶇О - // code.jpg - - return path + "/code." + format; + return bitMatrix; } diff --git a/src/main/java/com/product/administration/service/ide/IConferenceManagerService.java b/src/main/java/com/product/administration/service/ide/IConferenceManagerService.java index 024800a..27c7348 100644 --- a/src/main/java/com/product/administration/service/ide/IConferenceManagerService.java +++ b/src/main/java/com/product/administration/service/ide/IConferenceManagerService.java @@ -1,6 +1,7 @@ package com.product.administration.service.ide; import com.google.zxing.WriterException; +import com.google.zxing.common.BitMatrix; import com.product.core.entity.DataTableEntity; import com.product.core.entity.FieldSetEntity; import com.product.core.exception.BaseException; @@ -41,7 +42,7 @@ HashMap saveOrUpdateMeetingInfo(FieldSetEntity fse)throws BaseException; - String getQrCode(FieldSetEntity fse) throws BaseException, WriterException, IOException; + BitMatrix getQrCode(String content) throws BaseException, WriterException, IOException; -- Gitblit v1.9.2