From 393f6973fa081efdcd3c4c8bc66d4e0f3ca762a3 Mon Sep 17 00:00:00 2001
From: xuyang <748613696@qq.com>
Date: Mon, 21 Aug 2023 16:15:10 +0800
Subject: [PATCH] =?UTF-8?q?=E8=AE=BE=E5=A4=87=E4=BA=8C=E7=BB=B4=E7=A0=81?=
=?UTF-8?q?=E7=94=9F=E6=88=90=E5=8A=9F=E8=83=BD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../com/njcn/csdevice/pojo/param/QrParam.java | 19 +++
.../pojo/po/CsEquipmentDeliveryPO.java | 5 +
.../pojo/vo/CsEquipmentDeliveryVO.java | 3 +
cs-device/cs-device-boot/pom.xml | 14 ++
.../impl/CsEquipmentDeliveryServiceImpl.java | 50 ++++++-
.../com/njcn/csdevice/util/QRCodeUtil.java | 125 ++++++++++++++++++
6 files changed, 210 insertions(+), 6 deletions(-)
create mode 100644 cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/param/QrParam.java
create mode 100644 cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/util/QRCodeUtil.java
diff --git a/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/param/QrParam.java b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/param/QrParam.java
new file mode 100644
index 0000000..c97051f
--- /dev/null
+++ b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/param/QrParam.java
@@ -0,0 +1,19 @@
+package com.njcn.csdevice.pojo.param;
+
+import lombok.Data;
+
+/**
+ * 类的介绍:
+ *
+ * @author xuyang
+ * @version 1.0.0
+ * @createTime 2023/8/21 16:00
+ */
+@Data
+public class QrParam {
+
+ private String type = "NDID";
+
+ private String data;
+
+}
diff --git a/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/po/CsEquipmentDeliveryPO.java b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/po/CsEquipmentDeliveryPO.java
index 2c800eb..3ad4bd9 100644
--- a/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/po/CsEquipmentDeliveryPO.java
+++ b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/po/CsEquipmentDeliveryPO.java
@@ -138,5 +138,10 @@ public class CsEquipmentDeliveryPO extends BaseEntity {
@TableField(value = "module_number")
private Integer moduleNumber;
+ /**
+ * 二维码文件路径
+ */
+ @TableField(value = "qr_path")
+ private String qrPath;
}
\ No newline at end of file
diff --git a/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/vo/CsEquipmentDeliveryVO.java b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/vo/CsEquipmentDeliveryVO.java
index f8cfaf4..df6ba48 100644
--- a/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/vo/CsEquipmentDeliveryVO.java
+++ b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/vo/CsEquipmentDeliveryVO.java
@@ -114,4 +114,7 @@ public class CsEquipmentDeliveryVO extends BaseEntity {
@ApiModelProperty(value="设备软件信息")
private String softinfoId ;
+
+ @ApiModelProperty(value="二维码路径")
+ private String qrPath ;
}
\ No newline at end of file
diff --git a/cs-device/cs-device-boot/pom.xml b/cs-device/cs-device-boot/pom.xml
index 03bec44..ca39ed8 100644
--- a/cs-device/cs-device-boot/pom.xml
+++ b/cs-device/cs-device-boot/pom.xml
@@ -95,6 +95,20 @@
1.0.0
compile
+
+
+
+ com.google.zxing
+ core
+ 3.3.3
+
+
+
+ com.google.zxing
+ javase
+ 3.3.3
+
+
diff --git a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsEquipmentDeliveryServiceImpl.java b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsEquipmentDeliveryServiceImpl.java
index 34e1328..92d8692 100644
--- a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsEquipmentDeliveryServiceImpl.java
+++ b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsEquipmentDeliveryServiceImpl.java
@@ -2,6 +2,7 @@ package com.njcn.csdevice.service.impl;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSONObject;
import com.alibaba.nacos.client.naming.utils.CollectionUtils;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -13,16 +14,16 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.njcn.common.pojo.exception.BusinessException;
import com.njcn.csdevice.enums.AlgorithmResponseEnum;
import com.njcn.csdevice.mapper.CsEquipmentDeliveryMapper;
-import com.njcn.csdevice.pojo.param.CsEquipmentDeliveryAddParm;
-import com.njcn.csdevice.pojo.param.CsEquipmentDeliveryAuditParm;
-import com.njcn.csdevice.pojo.param.CsEquipmentDeliveryQueryParm;
-import com.njcn.csdevice.pojo.param.ProjectEquipmentQueryParm;
+import com.njcn.csdevice.pojo.param.*;
import com.njcn.csdevice.pojo.po.*;
import com.njcn.csdevice.pojo.vo.CsEquipmentDeliveryVO;
import com.njcn.csdevice.pojo.vo.DeviceManagerVO;
import com.njcn.csdevice.pojo.vo.ProjectEquipmentVO;
import com.njcn.csdevice.service.*;
+import com.njcn.csdevice.util.QRCodeUtil;
import com.njcn.db.constant.DbConstant;
+import com.njcn.oss.constant.OssPath;
+import com.njcn.oss.utils.FileStorageUtil;
import com.njcn.system.api.DicDataFeignClient;
import com.njcn.system.enums.DicDataEnum;
import com.njcn.web.factory.PageFactory;
@@ -32,6 +33,12 @@ import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
+import javax.imageio.ImageIO;
+import java.awt.image.BufferedImage;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
import java.util.*;
/**
@@ -61,9 +68,11 @@ public class CsEquipmentDeliveryServiceImpl extends ServiceImpl(PageFactory.getPageNum(queryParam), PageFactory.getPageSize(queryParam)), queryWrapper);
+ Page page = this.baseMapper.page(new Page<>(PageFactory.getPageNum(queryParam), PageFactory.getPageSize(queryParam)), queryWrapper);
+ page.getRecords().forEach(item->{
+ if (!Objects.isNull(item.getQrPath())){
+ item.setQrPath(fileStorageUtil.getFileUrl(item.getQrPath()));
+ }
+ });
+ return page;
}
@Override
@@ -261,4 +288,15 @@ public class CsEquipmentDeliveryServiceImpl extends ServiceImpl hints = new HashMap();
+
+ //EncodeHintType.CHARACTER_SET:设置字符编码类型
+ hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");
+
+ //EncodeHintType.ERROR_CORRECTION:设置误差校正
+ //ErrorCorrectionLevel:误差校正等级,L = ~7% correction、M = ~15% correction、Q = ~25% correction、H = ~30% correction
+ //不设置时,默认为 L 等级,等级不一样,生成的图案不同,但扫描的结果是一样的
+ hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.M);
+
+ //EncodeHintType.MARGIN:设置二维码边距,单位像素,值越小,二维码距离四周越近
+ hints.put(EncodeHintType.MARGIN, 1);
+
+ MultiFormatWriter multiFormatWriter = new MultiFormatWriter();
+ BitMatrix bitMatrix = multiFormatWriter.encode(content, BarcodeFormat.QR_CODE, CODE_WIDTH, CODE_HEIGHT, hints);
+ BufferedImage bufferedImage = new BufferedImage(CODE_WIDTH, CODE_HEIGHT, BufferedImage.TYPE_INT_BGR);
+ for (int x = 0; x < CODE_WIDTH; x++) {
+ for (int y = 0; y < CODE_HEIGHT; y++) {
+ bufferedImage.setRGB(x, y, bitMatrix.get(x, y) ? FRONT_COLOR : BACKGROUND_COLOR);
+ }
+ }
+ return bufferedImage;
+ }
+}
+