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; + } +} +