Commit f7515b13 authored by Allen Chen's avatar Allen Chen

commit

parent 31456ede
...@@ -749,13 +749,15 @@ public class PddLocalController { ...@@ -749,13 +749,15 @@ public class PddLocalController {
// logOrderEntity.setStatus(logOrderMailDetailIoEntity.getStatus()); // logOrderEntity.setStatus(logOrderMailDetailIoEntity.getStatus());
// logOrderImpl.updateById(logOrderEntity); // logOrderImpl.updateById(logOrderEntity);
PackageNoticeEntity packageNoticeEntity = packageNoticeImpl.getByOrderCode(finishUnpackRequest.getOrderCode()); // todo 错误代码,需验证
// PackageNoticeEntity packageNoticeEntity = packageNoticeImpl.getByOrderCode(finishUnpackRequest.getOrderCode());
if (packageNoticeEntity != null) { //
packageNoticeEntity.setStatus("" + logOrderMailDetailIoEntity.getStatus()); // if (packageNoticeEntity != null) {
packageNoticeImpl.updateById(packageNoticeEntity); // packageNoticeEntity.setStatus("" + logOrderMailDetailIoEntity.getStatus());
// packageNoticeImpl.updateById(packageNoticeEntity);
} //
// }
unpackNoticeImpl.updateStatusByOrderCode(unpackNoticeEntity.getOrderCode(), StatusEnum.FINISHUNPACK.getCode());
} }
} }
...@@ -1519,7 +1521,7 @@ public class PddLocalController { ...@@ -1519,7 +1521,7 @@ public class PddLocalController {
if (lists.getMailNo().equals(mailNoLists)) { if (lists.getMailNo().equals(mailNoLists)) {
toRemoveList.add(lists); toRemoveList.add(lists);
toMailList.add(mailNoLists); toMailList.add(mailNoLists);
ids += mailNoLists + ","; ids += "'" + mailNoLists + "',";
} }
} }
} }
......
package org.ta.pddserver.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
@TableName("lotto_config")
@Data
public class LottoConfigEntity {
@TableId(value = "id")
private Long id;
@TableField(value = "tag1")
private String tag1;
@TableField(value = "tag2")
private String tag2;
@TableField(value = "tag3")
private String tag3;
@TableField(value = "tag4")
private String tag4;
@TableField(value = "tag5")
private String tag5;
@TableField(value = "tag6")
private String tag6;
@TableField(value = "tag7")
private String tag7;
@TableField(value = "tag8")
private String tag8;
@TableField(value = "tag9")
private String tag9;
@TableField(value = "tag10")
private String tag10;
@TableField(value = "tag11")
private String tag11;
@TableField(value = "tag12")
private String tag12;
@TableField(value = "tag13")
private String tag13;
@TableField(value = "tag14")
private String tag14;
}
...@@ -6,10 +6,12 @@ import com.google.zxing.common.BitMatrix; ...@@ -6,10 +6,12 @@ import com.google.zxing.common.BitMatrix;
import com.google.zxing.common.HybridBinarizer; import com.google.zxing.common.HybridBinarizer;
import com.google.zxing.oned.Code128Writer; import com.google.zxing.oned.Code128Writer;
import com.google.zxing.oned.Code39Writer; import com.google.zxing.oned.Code39Writer;
import com.google.zxing.oned.ITFWriter;
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel; import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
import javax.imageio.ImageIO; import javax.imageio.ImageIO;
import java.awt.*; import java.awt.*;
import java.awt.Dimension;
import java.awt.image.BufferedImage; import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream; import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
...@@ -54,17 +56,20 @@ public class BarcodeUtils { ...@@ -54,17 +56,20 @@ public class BarcodeUtils {
// 2. 设置条形码参数(编码格式:Code128,支持数字、字母、特殊字符) // 2. 设置条形码参数(编码格式:Code128,支持数字、字母、特殊字符)
Map<EncodeHintType, Object> hints = new HashMap<>(); Map<EncodeHintType, Object> hints = new HashMap<>();
hints.put(EncodeHintType.CHARACTER_SET, "UTF-8"); // 字符集 hints.put(EncodeHintType.CHARACTER_SET, "UTF-8"); // 字符集
hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.L); // 纠错等级 hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.M); // 纠错等级
hints.put(EncodeHintType.MARGIN, 0); hints.put(EncodeHintType.MARGIN, 0);
hints.put(EncodeHintType.MIN_SIZE, new Dimension(100, 100)); // 设置最小尺寸为100x100像素
hints.put(EncodeHintType.MAX_SIZE, new Dimension(1200, 1200)); // 设置最大尺寸为1000x800像素
// 3. 生成条形码矩阵 // 3. 生成条形码矩阵
BitMatrix bitMatrix = null; BitMatrix bitMatrix = null;
if (bit == 39) { if (bit == 39) {
Code39Writer writer = new Code39Writer(); Code39Writer writer = new Code39Writer();
bitMatrix = writer.encode(content, BarcodeFormat.CODE_39, width, width / 3, hints); bitMatrix = writer.encode(content, BarcodeFormat.CODE_39, width, height, hints);
} else if (bit == 128) { } else if (bit == 128) {
Code128Writer writer = new Code128Writer(); ITFWriter writer = new ITFWriter();
bitMatrix = writer.encode(content, BarcodeFormat.CODE_128, width, height, hints); bitMatrix = writer.encode(content, BarcodeFormat.ITF, width, height, hints);
} }
...@@ -104,7 +109,7 @@ public class BarcodeUtils { ...@@ -104,7 +109,7 @@ public class BarcodeUtils {
*/ */
public static byte[] generate39Barcode(String content, int width, int height) throws WriterException, IOException { public static byte[] generate39Barcode(String content, int width, int height) throws WriterException, IOException {
return generateBarcode(content, width, height, return generateBarcode(content, width, height,
DEFAULT_BAR_COLOR, Color.red, false, 39); DEFAULT_BAR_COLOR, Color.white, false, 39);
} }
/** /**
...@@ -112,7 +117,15 @@ public class BarcodeUtils { ...@@ -112,7 +117,15 @@ public class BarcodeUtils {
*/ */
public static byte[] generate128Barcode(String content, int width, int height) throws WriterException, IOException { public static byte[] generate128Barcode(String content, int width, int height) throws WriterException, IOException {
return generateBarcode(content, width, height, return generateBarcode(content, width, height,
DEFAULT_BAR_COLOR, DEFAULT_BACKGROUND_COLOR, false, 128); DEFAULT_BAR_COLOR, Color.white, false, 128);
}
/**
* 生成128条形码(简化方法)
*/
public static byte[] generate128BarcodeWithText(String content, int width, int height) throws WriterException, IOException {
return generateBarcode(content, width, height,
DEFAULT_BAR_COLOR, Color.white, true, 128);
} }
/** /**
......
...@@ -10,27 +10,43 @@ import com.itextpdf.layout.Document; ...@@ -10,27 +10,43 @@ import com.itextpdf.layout.Document;
import com.itextpdf.layout.element.Image; import com.itextpdf.layout.element.Image;
import com.itextpdf.layout.properties.HorizontalAlignment; import com.itextpdf.layout.properties.HorizontalAlignment;
import javax.imageio.ImageIO;
import java.awt.*; import java.awt.*;
import java.awt.image.RenderedImage;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException; import java.io.IOException;
public class ImagePdfGenerator { public class ImagePdfGenerator {
public static byte[] generatePdfWithTextImage() throws Exception { public static byte[] generatePdfWithTextImage(String mailCode,
String portCode,
String receiverName,
String phone,
String postCode,
String address,
String orderCode,
String area1,
String area2,
String area3,
String area4) throws Exception {
// 1. 将文字转为图片(示例:韩文“안녕하세요,世界!”) // 1. 将文字转为图片(示例:韩文“안녕하세요,世界!”)
byte[] imageBytes = TextToImageUtils.textToImage( byte[] imageBytes = TextToImageUtils.textToImage(
"317758904820", mailCode,
"1172", portCode,
"REN SUPING", receiverName,
"010-3619-****", phone,
"21353", postCode,
"인천광역시 부평구 부평동 126-9 유진마젤란주상복합 오피스텔1205호", address,
"PP25111223915187411540070", orderCode,
"B-26-평64", area1,
"X 부평구 부평5동", area2,
"부평(대)", area3,
"평64-이구용" area4
); );
// return imageBytes;
// 2. 初始化PDF // 2. 初始化PDF
ByteArrayOutputStream pdfBaos = new ByteArrayOutputStream(); ByteArrayOutputStream pdfBaos = new ByteArrayOutputStream();
...@@ -49,4 +65,44 @@ public class ImagePdfGenerator { ...@@ -49,4 +65,44 @@ public class ImagePdfGenerator {
document.close(); document.close();
return pdfBaos.toByteArray(); return pdfBaos.toByteArray();
} }
public static byte[] generateCode() throws Exception {
ByteArrayOutputStream pdfBaos = new ByteArrayOutputStream();
PdfWriter writer = new PdfWriter(pdfBaos);
PdfDocument pdfDoc = new PdfDocument(writer);
// 2. 初始化PDF
Document document = new Document(pdfDoc, new PageSize((int) (150 * 300 / 25.4), (int) (100 * 300 / 25.4)));
for (int i = 1; i < 10; i ++) {
for (int i1 = 1; i1 < 12; i1 ++) {
for (int i2 = 1; i2 < 5; i2 ++) {
for (int i3 = 1; i3 < 3; i3 ++) {
if (i3 == 2 && (i2 == 1|| i2 == 4)) {
continue;
}
// 1. 将文字转为图片(示例:韩文“안녕하세요,世界!”)
String code = "A" + i + "-" + i1 + "-" + i2 + "-" + i3;
byte[] imageBytes = TextToImageUtils.commonBarCodeToImage(code);
// 3. 将图片嵌入PDF
ImageData imageData = ImageDataFactory.create(imageBytes);
Image image = new Image(imageData);
// 设置图片在PDF中居中显示
image.setHorizontalAlignment(HorizontalAlignment.LEFT);
document.add(image);
}
}
}
}
// 4. 关闭文档
document.close();
return pdfBaos.toByteArray();
}
} }
\ No newline at end of file
...@@ -46,8 +46,8 @@ public class TextToImageUtils { ...@@ -46,8 +46,8 @@ public class TextToImageUtils {
String area4) throws Exception { String area4) throws Exception {
int width = 2268; int width = 2268;
int height = 1512; int height = 1512;
int startX = 20; int startX = 60;
int startY = 0; int startY = 60;
// 1. 创建 BufferedImage 作为画布 // 1. 创建 BufferedImage 作为画布
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
System.out.println("width = " + width + ", height = " + height); System.out.println("width = " + width + ", height = " + height);
...@@ -64,7 +64,7 @@ public class TextToImageUtils { ...@@ -64,7 +64,7 @@ public class TextToImageUtils {
// 3、默认字体 // 3、默认字体
Font font0 = Font.createFont(Font.TRUETYPE_FONT, new FileInputStream("./HYGothic.ttf")).deriveFont((float) 86); Font font0 = Font.createFont(Font.TRUETYPE_FONT, new FileInputStream("./HYGothic.ttf")).deriveFont((float) 86);
Font font01 = Font.createFont(Font.TRUETYPE_FONT, new FileInputStream("./HYGothic.ttf")).deriveFont((float) 70); Font font01 = Font.createFont(Font.TRUETYPE_FONT, new FileInputStream("./HYGothic.ttf")).deriveFont((float) 70);
Font font1 = Font.createFont(Font.TRUETYPE_FONT, new FileInputStream("./HYGothic.ttf")).deriveFont((float) 56); Font font1 = Font.createFont(Font.TRUETYPE_FONT, new FileInputStream("./HYGothic.ttf")).deriveFont((float) 52);
g2d.setColor(Color.BLACK); // 文字颜色 g2d.setColor(Color.BLACK); // 文字颜色
Font font2 = Font.createFont(Font.TRUETYPE_FONT, new FileInputStream("./HYGothic.ttf")).deriveFont((float) 46); Font font2 = Font.createFont(Font.TRUETYPE_FONT, new FileInputStream("./HYGothic.ttf")).deriveFont((float) 46);
// logo1 // logo1
...@@ -72,7 +72,7 @@ public class TextToImageUtils { ...@@ -72,7 +72,7 @@ public class TextToImageUtils {
byte[] logo1Byte = Base64.decode(logo1String); byte[] logo1Byte = Base64.decode(logo1String);
ByteArrayInputStream logo1ByteIs = new ByteArrayInputStream(logo1Byte); ByteArrayInputStream logo1ByteIs = new ByteArrayInputStream(logo1Byte);
BufferedImage logo1Img = ImageIO.read(logo1ByteIs); BufferedImage logo1Img = ImageIO.read(logo1ByteIs);
g2d.drawImage(logo1Img, startX + 0, startY + 0, 616, 76, null); g2d.drawImage(logo1Img, startX + 0, startY + 0, 610, 70, null);
// logo2 // logo2
// String logo2String = "iVBORw0KGgoAAAANSUhEUgAAAJwAAAB4CAYAAAAHbZvZAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NEQzRkU2MjU3RjJCMTFGMDkwNzFDQzQwMUFFNEE3REMiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NEQzRkU2MjY3RjJCMTFGMDkwNzFDQzQwMUFFNEE3REMiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo0RDNGRTYyMzdGMkIxMUYwOTA3MUNDNDAxQUU0QTdEQyIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo0RDNGRTYyNDdGMkIxMUYwOTA3MUNDNDAxQUU0QTdEQyIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Poa5e5EAAAETSURBVHja7NwxDkBQEEVRT+zVmqz20fxWI0Q4p/r15GaoJm0neMpsBAiOz1rGI8lmHNzl+HVbbTh8UhEcCA7BgeAQHIIDwSE4EByCA8EhOAQHgkNwIDgEB4JDcAgOBIfgQHAIDgSH4BAcCA7Bwan86eTqW2/gjdtpNhwIDsGB4BAcgjMCBIfgQHAIDgSH4BAcCA7BgeAQHAgOwSE4EByCA8EhOBAcgkNwIDgEB4JDcAgOBIfgQHAIDgSH4BAcCA7BgeAQHAgOwSE4EByCA8EhOBAcgkNwIDgEB4JDcAgOBIfgQHAIDgSH4BAcCA7BgeAQHAgOwSE4EByCA8EhOAQHgkNwIDgEByfS1hSw4RAcXLYLMADPTBHnat0YcgAAAABJRU5ErkJggg=="; // String logo2String = "iVBORw0KGgoAAAANSUhEUgAAAJwAAAB4CAYAAAAHbZvZAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NEQzRkU2MjU3RjJCMTFGMDkwNzFDQzQwMUFFNEE3REMiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NEQzRkU2MjY3RjJCMTFGMDkwNzFDQzQwMUFFNEE3REMiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo0RDNGRTYyMzdGMkIxMUYwOTA3MUNDNDAxQUU0QTdEQyIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo0RDNGRTYyNDdGMkIxMUYwOTA3MUNDNDAxQUU0QTdEQyIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Poa5e5EAAAETSURBVHja7NwxDkBQEEVRT+zVmqz20fxWI0Q4p/r15GaoJm0neMpsBAiOz1rGI8lmHNzl+HVbbTh8UhEcCA7BgeAQHIIDwSE4EByCA8EhOAQHgkNwIDgEB4JDcAgOBIfgQHAIDgSH4BAcCA7Bwan86eTqW2/gjdtpNhwIDsGB4BAcgjMCBIfgQHAIDgSH4BAcCA7BgeAQHAgOwSE4EByCA8EhOBAcgkNwIDgEB4JDcAgOBIfgQHAIDgSH4BAcCA7BgeAQHAgOwSE4EByCA8EhOBAcgkNwIDgEB4JDcAgOBIfgQHAIDgSH4BAcCA7BgeAQHAgOwSE4EByCA8EhOAQHgkNwIDgEByfS1hSw4RAcXLYLMADPTBHnat0YcgAAAABJRU5ErkJggg==";
...@@ -83,7 +83,7 @@ public class TextToImageUtils { ...@@ -83,7 +83,7 @@ public class TextToImageUtils {
// 运单号 // 运单号
g2d.setFont(font1); g2d.setFont(font1);
g2d.drawString("운송장번호 " + generateSplitMailCode(mailCode), startX + 690, startY + 76); g2d.drawString("운송장번호 " + generateSplitMailCode(mailCode), startX + 682, startY + 52);
// 打印时间 // 打印时间
g2d.setFont(font2); g2d.setFont(font2);
...@@ -92,10 +92,10 @@ public class TextToImageUtils { ...@@ -92,10 +92,10 @@ public class TextToImageUtils {
g2d.drawString("1/1", startX + 2080, startY + 76); g2d.drawString("1/1", startX + 2080, startY + 76);
// 条形码1 // 条形码1
byte[] code1Bytes = BarcodeUtils.generate39Barcode(portCode, 650, 250); byte[] code1Bytes = BarcodeUtils.generate39Barcode(portCode, 630, 240);
ByteArrayInputStream code1BytesIs = new ByteArrayInputStream(code1Bytes); ByteArrayInputStream code1BytesIs = new ByteArrayInputStream(code1Bytes);
BufferedImage code1Img = ImageIO.read(code1BytesIs); BufferedImage code1Img = ImageIO.read(code1BytesIs);
g2d.drawImage(code1Img, startX + 0, startY + 100, 650, 250, null); g2d.drawImage(code1Img, startX + 0, startY + 106, 630, 240, null);
// 地区码1 // 地区码1
g2d.setFont(font0); g2d.setFont(font0);
...@@ -130,27 +130,21 @@ public class TextToImageUtils { ...@@ -130,27 +130,21 @@ public class TextToImageUtils {
g2d.setFont(font1); g2d.setFont(font1);
g2d.drawString("상품명: E-commerce consuming goods", startX + 0, startY + 700); g2d.drawString("상품명: E-commerce consuming goods", startX + 0, startY + 700);
byte[] code4Bytes = BarcodeUtils.generate128Barcode(mailCode, 704, 182);
ByteArrayInputStream code4BytesIs = new ByteArrayInputStream(code4Bytes);
BufferedImage code4Img = ImageIO.read(code4BytesIs);
// 条形码2 // 条形码2
byte[] code2Bytes = BarcodeUtils.generate39Barcode(mailCode, 686, 120); g2d.drawImage(code4Img, startX + 1500, startY + 381, 672, 106, null);
ByteArrayInputStream code2BytesIs = new ByteArrayInputStream(code2Bytes);
BufferedImage code2Img = ImageIO.read(code2BytesIs);
g2d.drawImage(code2Img, startX + 1500, startY + 376, 686, 120, null);
// 条形码3 // 条形码3
byte[] code3Bytes = BarcodeUtils.generate128Barcode(mailCode, 870, 270); g2d.drawImage(code4Img, startX + 350, startY + 864, 852, 258, null);
ByteArrayInputStream code3BytesIs = new ByteArrayInputStream(code3Bytes);
BufferedImage code3Img = ImageIO.read(code3BytesIs);
g2d.drawImage(code3Img, startX + 350, startY + 870, 870, 270, null);
// 条形码4 // 条形码4
byte[] code4Bytes = BarcodeUtils.generate128Barcode(mailCode, 720, 190); g2d.drawImage(code4Img, startX + 1420, startY + 1060, 704, 182, null);
ByteArrayInputStream code4BytesIs = new ByteArrayInputStream(code4Bytes);
BufferedImage code4Img = ImageIO.read(code4BytesIs);
g2d.drawImage(code4Img, startX + 1420, startY + 1060, 720, 190, null);
// 快递单号 // 快递单号
g2d.setFont(font2); g2d.setFont(font2);
g2d.drawString(mailCode, startX + 1550, startY + 1310); g2d.drawString(mailCode, startX + 1548, startY + 1308);
// 辅助文字 // 辅助文字
...@@ -175,4 +169,51 @@ public class TextToImageUtils { ...@@ -175,4 +169,51 @@ public class TextToImageUtils {
public static String generateSplitMailCode(String mailCode) { public static String generateSplitMailCode(String mailCode) {
return mailCode.substring(0, 4) + "-" + mailCode.substring(4, 8) + "-" + mailCode.substring(8, 12); return mailCode.substring(0, 4) + "-" + mailCode.substring(4, 8) + "-" + mailCode.substring(8, 12);
} }
public static byte[] commonBarCodeToImage( String mailCode
) throws Exception {
int width = 1770;
int height = 1180;
int startX = 0;
int startY = 0;
// 1. 创建 BufferedImage 作为画布
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
System.out.println("width = " + width + ", height = " + height);
Graphics2D g2d = image.createGraphics();
// 设置绘图属性(抗锯齿、渲染质量等)
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); // 文字抗锯齿
g2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_LCD_HRGB); // 文字平滑
g2d.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY); // 渲染质量
g2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
// 2. 设置背景为白色
g2d.setColor(Color.white);
g2d.fillRect(0, 0, width, height);
g2d.setColor(Color.BLACK);
// 集运单号
Font font0 = Font.createFont(Font.TRUETYPE_FONT, new FileInputStream("./HYGothic.ttf")).deriveFont((float) 140);
g2d.setFont(font0);
FontMetrics metrics = g2d.getFontMetrics();
int x = (width - metrics.stringWidth(mailCode)) / 2; // 水平居中
g2d.drawString(mailCode, startX + 500, 160);
g2d.drawString(mailCode, startX + 500, 1000);
byte[] code4Bytes = BarcodeUtils.generate39Barcode(mailCode, 1300, 500);
ByteArrayInputStream code4BytesIs = new ByteArrayInputStream(code4Bytes);
BufferedImage code4Img = ImageIO.read(code4BytesIs);
// 条形码2
g2d.drawImage(code4Img, startX + 200, startY + 260, 1300, 500, null);
g2d.dispose();
// 6. 将图片转为字节数组(PNG格式)
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageIO.write(image, "png", baos);
return baos.toByteArray();
}
} }
...@@ -27,7 +27,7 @@ public interface UnpackNoticeMapper extends BaseMapper<UnpackNoticeEntity> { ...@@ -27,7 +27,7 @@ public interface UnpackNoticeMapper extends BaseMapper<UnpackNoticeEntity> {
@Select("SELECT count(`uid`) FROM `unpack_notice` WHERE `status` = 1 ") @Select("SELECT count(`uid`) FROM `unpack_notice` WHERE `status` = 1 ")
Integer countUsable(UnpackNoticeListRequest param); Integer countUsable(UnpackNoticeListRequest param);
@Select("SELECT `orderCode`, `status` FROM `unpack_notice` WHERE `status` = 1 ORDER BY `uid` DESC LIMIT #{offset}, #{size}; ") @Select("SELECT `orderCode`, `status`, `mailDetails` FROM `unpack_notice` WHERE `status` = 1 ORDER BY `uid` DESC LIMIT #{offset}, #{size}; ")
List<UnpackNoticeListResponse> getListByRequest(UnpackNoticeListRequest param); List<UnpackNoticeListResponse> getListByRequest(UnpackNoticeListRequest param);
@Update("UPDATE `unpack_notice` SET `status` = ${status} WHERE `orderCode` = #{orderCode} ") @Update("UPDATE `unpack_notice` SET `status` = ${status} WHERE `orderCode` = #{orderCode} ")
......
...@@ -8,4 +8,6 @@ public class UnpackNoticeListResponse { ...@@ -8,4 +8,6 @@ public class UnpackNoticeListResponse {
private String orderCode; private String orderCode;
private int status; private int status;
private String mailDetails;
} }
...@@ -6,7 +6,11 @@ import lombok.Data; ...@@ -6,7 +6,11 @@ import lombok.Data;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.ta.pddserver.entity.CollectReceiverDetailEntity;
import org.ta.pddserver.entity.LottoConfigEntity;
import org.ta.pddserver.entity.WaybillSeaEntity; import org.ta.pddserver.entity.WaybillSeaEntity;
import org.ta.pddserver.lotto.ImagePdfGenerator;
import org.ta.pddserver.service.impl.CollectReceiverDetailImpl;
import org.ta.pddserver.service.impl.WaybillSeaImpl; import org.ta.pddserver.service.impl.WaybillSeaImpl;
@Slf4j @Slf4j
...@@ -18,6 +22,9 @@ public class WaybillOperator { ...@@ -18,6 +22,9 @@ public class WaybillOperator {
WaybillSeaEntity currentWaybillSea; WaybillSeaEntity currentWaybillSea;
@Resource
CollectReceiverDetailImpl collectReceiverDetailImpl;
@Value("${pdd.lotto}") @Value("${pdd.lotto}")
private Integer lotto; private Integer lotto;
......
...@@ -32,12 +32,12 @@ logging: ...@@ -32,12 +32,12 @@ logging:
level: level:
org: org:
ta: ta:
pddserver: info pddserver: debug
mybatis-plus: mybatis-plus:
configuration: configuration:
map-underscore-to-camel-case: false map-underscore-to-camel-case: false
pdd: pdd:
jyt: 0 jyt: 0
gd: 0 gd: 1
lotto: 0 lotto: 1
\ No newline at end of file \ No newline at end of file
...@@ -41,8 +41,21 @@ public class PdfTest { ...@@ -41,8 +41,21 @@ public class PdfTest {
@Test @Test
public void test3() throws Exception { public void test3() throws Exception {
try (FileOutputStream outputStream = new FileOutputStream("./test.pdf")) { // try (FileOutputStream outputStream = new FileOutputStream("./test.pdf")) {
byte[] strToBytes = ImagePdfGenerator.generatePdfWithTextImage(); // byte[] strToBytes = ImagePdfGenerator.generatePdfWithTextImage();
// outputStream.write(strToBytes);
// System.out.println("文件写入成功!");
// } catch (IOException e) {
// e.printStackTrace();
// } catch (FontFormatException e) {
// throw new RuntimeException(e);
// }
}
@Test
public void test4() throws Exception {
try (FileOutputStream outputStream = new FileOutputStream("./codes.pdf")) {
byte[] strToBytes = ImagePdfGenerator.generateCode();
outputStream.write(strToBytes); outputStream.write(strToBytes);
System.out.println("文件写入成功!"); System.out.println("文件写入成功!");
} catch (IOException e) { } catch (IOException e) {
......
No preview for this file type
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment