<!-- zxing生成二维码 -->
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>core</artifactId>
<version>3.3.3</version>
</dependency>
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>javase</artifactId>
<version>3.3.3</version>
</dependency>
@PostMapping(value = "/generateQRCode", consumes = MediaType.APPLICATION_JSON_VALUE)
public QRCodeRequest generateQRCode(@RequestBody QRCodeRequest request) throws WriterException, IOException {
String reportId = request.getDiagnoseId();
QRCodeRequest qrCodeRequest = pharmacisService.generateQRCode(reportId);
return qrCodeRequest;
}
QRCodeRequest generateQRCode(String reportId)throws WriterException, IOException;
@Override
public QRCodeRequest generateQRCode(String reportId) throws WriterException, IOException {
QRCodeRequest qrCodeRequest = new QRCodeRequest();
QRCodeRequest number= pharmacistMapper.selectQRCode(reportId);
if (number !=null && number.getIdCard() != null && number.getPhone() != null){
qrCodeRequest.setIdCard(number.getIdCard());
qrCodeRequest.setPhone(number.getPhone());
}else{
System.out.println("手机号或者身份证号码查询数据为空");
}
/
String data = "这里写扫码后跳转指定url路径" + reportId;
QRCodeWriter writer = new QRCodeWriter();
BitMatrix bitMatrix = writer.encode(data, BarcodeFormat.QR_CODE, WIDTH, HEIGHT);
BufferedImage image = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB);
for (int x = 0; x < WIDTH; x++) {
for (int y = 0; y < HEIGHT; y++) {
image.setRGB(x, y, bitMatrix.get(x, y) ? 0xFF000000 : 0xFFFFFFFF);
}
}
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
ImageIO.write(image, "png", byteArrayOutputStream);
String pageUrl = Base64.getEncoder().encodeToString(byteArrayOutputStream.toByteArray());
qrCodeRequest.setDiagnoseId(reportId);
qrCodeRequest.setPageUrl(pageUrl);
return qrCodeRequest;
}