一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第26天,点击查看活动详情。
今天这个章节,主要是校园二手商品交易系统的一个拓展功能,二维码的生成。
public static String genQRCodePic(int orderType, String orderNo, String splitOrderNo, int versionNumber,
QRCodeFileProperties qrCodeFileProps) {
String qrCodeContent = null;
String qrCodeFileName = null;
StringBuilder sBuilder = new StringBuilder();
sBuilder.append(orderType);
sBuilder.append("_");
sBuilder.append(orderNo);
sBuilder.append("_");
sBuilder.append(splitOrderNo);
sBuilder.append("_");
sBuilder.append(versionNumber);
qrCodeContent = sBuilder.toString();
qrCodeFileName = qrCodeFileProps.getFilePath() + "/" + qrCodeContent + ".png";
QRCodeUtil.createQRCode(qrCodeFileName, qrCodeContent, 90, 90);
return qrCodeFileName;
}
生成二维码图片方法:
1、方法上面传过来多个参数,int orderType, String orderNo, String splitOrderNo, int versionNumber比如订单类型,订单编号,拆单编号,版本号。而QRCodeFileProperties是一个配置对象,里面存放的是文件路径这个属性,也就是说方法里面,最后一个参数是文件路径,这个是放二维码图片路径的。
2、定义qrCodeContent图片内容,会存放上面说的几个参数信息,qrCodeFileName二维码文件的名字。
3、StringBuilder类型拼接各个参数信息,最后转成String类型,放入到qrCodeContent。
4、qrCodeFileName拼接路径+qrCodeContent得到二维码文件的名字。
5、调用createQRCode方法,具体的逻辑,后面会介绍。
public static void createQRCode(String qrCodefilePath, String contents, int width, int height) {
Map<EncodeHintType, Object> hints = new HashMap<>();
hints.put(EncodeHintType.CHARACTER_SET, "utf-8");
hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.M);
hints.put(EncodeHintType.MARGIN, 0);
try {
BitMatrix bitMatrix = new MultiFormatWriter().encode(contents, BarcodeFormat.QR_CODE, width, height, hints);
Path file = new File(qrCodefilePath).toPath();
MatrixToImageWriter.writeToPath(bitMatrix, "png", file);
} catch (WriterException | IOException e) {
e.printStackTrace();
logger.error("createQRCode err:" + e.getMessage());
}
}
1、createQRCode这个方法呢,叫创建二维码,Map<EncodeHintType, Object>以map的形式,存放编码格式,设置边缘,设置错误信息等。
2、以MultiFormatWriter的方式写入进去
3、会报写入异常WriterException 或者网络传输异常IOException
public static String genHandleBorderProdQRCodePic(int orderType, String handleBorderStkTransOrderNo,
ProdProcess prodProcess, QRCodeFileProperties qrCodeFileProps) {
String qrCodeContent = null;
String qrCodeFileName = null;
StringBuilder sBuilder = new StringBuilder();
sBuilder.append(orderType);
sBuilder.append("_");
sBuilder.append(prodProcess.getNo());
sBuilder.append("_");
sBuilder.append(prodProcess.getName());
sBuilder.append("_");
sBuilder.append(prodProcess.getProcessStkTransType());
sBuilder.append("_");
sBuilder.append(handleBorderStkTransOrderNo);
qrCodeContent = sBuilder.toString();
qrCodeFileName = qrCodeFileProps.getFilePath() + "/" + handleBorderStkTransOrderNo + ".png";
QRCodeUtil.createQRCode(qrCodeFileName, qrCodeContent, 90, 90);
return qrCodeFileName;
}
进行实战,举例来实现二维码功能
1、方法里面的参数信息和之前的是差不多的,订单类型,出库编号,工序编号,文件路径等信息。
2、定义qrCodeContent图片内容,会存放上面说的几个参数信息,qrCodeFileName二维码文件的名字,拼接路径再加二维码文件名字。
3、调用createQRCode方法,传入维码文件的名字,图片内容,以及90
*90的长宽大小