diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/utils/Drawing2D.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/utils/Drawing2D.java index 696dfc1d9..7feaafd52 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/utils/Drawing2D.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/utils/Drawing2D.java @@ -1,5 +1,7 @@ package com.bsd.pjcloud.hard.api.utils; +import lombok.extern.slf4j.Slf4j; + import javax.imageio.ImageIO; import java.awt.*; import java.awt.image.BufferedImage; @@ -8,6 +10,7 @@ import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; +@Slf4j public class Drawing2D { /** @@ -26,8 +29,13 @@ public class Drawing2D { private final int canvasHeight = 200; private int currentWidth = canvasWidth; + private int currentHeight = canvasHeight; + private final int canvasImageWidth = 300; + + private final int canvasImageHeight = 300; + private final int horizontalPadding = 20; private final String fontFamily = "黑体"; @@ -92,7 +100,8 @@ public class Drawing2D { textPadding(); computedLineHeight(); Point point = centerPosition(str); - graphics.drawString(str, point.x, getCurrentY()); + int y = getCurrentY(); + graphics.drawString(str, point.x, y); textPadding(); return this; } @@ -144,6 +153,27 @@ public class Drawing2D { return this; } + public Drawing2D drawImage(InputStream inputStream) { + try { + BufferedImage image = ImageIO.read(inputStream); + if (image == null) return this; + // 获取图片的原始宽度和高度 + int originalWidth = image.getWidth(); + int originalHeight = image.getHeight(); + // 计算缩放比例,确保宽度不超过 canvasImageWidth + double scaleFactor = Math.min(1.0, (double) canvasImageWidth / originalWidth); + int scaledWidth = (int) (originalWidth * scaleFactor); + int scaledHeight = (int) (originalHeight * scaleFactor); + Point point = centerPosition(new Point(scaledWidth, scaledHeight)); + currentY += scaledHeight; + computedHeight(); + graphics.drawImage(image, point.x, point.y, scaledWidth, scaledHeight, null); + } catch (Exception e) { + log.error("绘制图片错误error:|{}|task:|{}|", e.getMessage(), e.getStackTrace()); + } + return this; + } + public InputStream getInputStream() throws IOException { drawingWhiteSide(); graphics.dispose(); @@ -178,6 +208,12 @@ public class Drawing2D { return new Point(x, y); } + private Point centerPosition(Point point) { + // 中心X坐标 + int x = (canvasWidth - point.x) / 2; + return new Point(x, currentY); + } + private void drawingWhiteSide() { int borderSize = 15; BufferedImage borderedCanvas = new BufferedImage(currentWidth + borderSize * 2, currentHeight + borderSize * 2, BufferedImage.TYPE_INT_RGB); diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardInvoiceServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardInvoiceServiceImpl.java index 8c74cacc2..908863e7d 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardInvoiceServiceImpl.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardInvoiceServiceImpl.java @@ -23,18 +23,13 @@ import com.bsd.pjcloud.hard.api.constant.HardPrintStatusEnum; import com.bsd.pjcloud.hard.api.constant.HardTypeEnum; import com.bsd.pjcloud.hard.api.constant.order.HardOrderTypeEnum; import com.bsd.pjcloud.hard.api.dto.HardInvoiceDto; -import com.bsd.pjcloud.hard.api.dto.HardManagerDto; -import com.bsd.pjcloud.hard.api.dto.order.HardOrderDto; import com.bsd.pjcloud.hard.api.entity.HardInvoiceEntity; import com.bsd.pjcloud.hard.api.entity.HardManagerEntity; import com.bsd.pjcloud.hard.api.entity.order.HardCarEntity; import com.bsd.pjcloud.hard.api.entity.order.HardOrderEntity; import com.bsd.pjcloud.hard.api.utils.Drawing2D; -import com.bsd.pjcloud.hard.api.utils.HardUtil; import com.bsd.pjcloud.hard.api.vo.HardInvoiceVo; import com.bsd.pjcloud.hard.api.vo.HardManagerVo; -import com.bsd.pjcloud.hard.api.vo.order.HardAfterSaleVo; -import com.bsd.pjcloud.hard.api.vo.order.HardOrderVo; import com.bsd.pjcloud.hard.mapper.HardInvoiceMapper; import com.bsd.pjcloud.hard.mapper.HardManagerMapper; import com.bsd.pjcloud.hard.mapper.order.HardOrderMapper; @@ -42,7 +37,6 @@ import com.bsd.pjcloud.hard.service.HardCarService; import com.bsd.pjcloud.hard.service.HardInvoiceService; import com.bsd.pjcloud.hard.service.HardManagerService; import com.bsd.pjcloud.hard.service.HardOrderService; -import com.bsd.pjcloud.hard.service.impl.order.HardAfterSaleServiceImpl; import com.bsd.pjcloud.mqtt.api.feign.RemoteMqttEventService; import com.bsd.pjcloud.mqtt.dto.hard.HardPrintMsg; import com.bsd.pjcloud.wallet.api.feign.RemoteMchService; @@ -50,7 +44,6 @@ import com.bsd.pjcloud.wallet.api.utils.WalletDataUtil; import com.bsd.pjcloud.wallet.api.vo.MchManageVo; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.hibernate.validator.constraints.Range; import org.springframework.mock.web.MockMultipartFile; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/MchManageServiceImpl.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/MchManageServiceImpl.java index c8c9c6df0..b21a46971 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/MchManageServiceImpl.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/MchManageServiceImpl.java @@ -18,6 +18,7 @@ import com.bsd.pjcloud.common.core.util.BeanUtils; import com.bsd.pjcloud.common.core.util.CollectionUtils; import com.bsd.pjcloud.common.core.util.QRCodeImageGenerator; import com.bsd.pjcloud.common.core.util.R; +import com.bsd.pjcloud.hard.api.utils.Drawing2D; import com.bsd.pjcloud.wallet.api.dto.MchManageDto; import com.bsd.pjcloud.wallet.api.dto.WalletTypeDto; import com.bsd.pjcloud.wallet.api.entity.MchManageEntity; @@ -249,16 +250,18 @@ public class MchManageServiceImpl extends ServiceImpl() .eq(ObjectUtil.isNotEmpty(name), MchManageEntity::getName, name)