From 9ca9ce78cd120b082455e05202b06e09bc7f8f53 Mon Sep 17 00:00:00 2001 From: chenlong Date: Thu, 8 Aug 2024 15:03:59 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=8E=A8=E7=9B=98?= =?UTF-8?q?=E4=BA=8C=E7=BB=B4=E7=A0=81=E7=9A=84pdf=E4=B8=8B=E8=BD=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- blade-service/logpm-basicdata/pom.xml | 15 ++++ .../controller/BasicdataTrayController.java | 6 ++ .../service/IBasicdataTrayService.java | 2 + .../impl/BasicdataTrayServiceImpl.java | 87 +++++++++++++++++++ .../resources/static/tray-pdf-template.html | 22 +++++ 5 files changed, 132 insertions(+) create mode 100644 blade-service/logpm-basicdata/src/main/resources/static/tray-pdf-template.html diff --git a/blade-service/logpm-basicdata/pom.xml b/blade-service/logpm-basicdata/pom.xml index cf63694f3..91bb26079 100644 --- a/blade-service/logpm-basicdata/pom.xml +++ b/blade-service/logpm-basicdata/pom.xml @@ -83,6 +83,21 @@ xxl-job-core + + + com.itextpdf + itext7-core + 8.0.5 + pom + + + + com.itextpdf + html2pdf + 5.0.5 + + + diff --git a/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/controller/BasicdataTrayController.java b/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/controller/BasicdataTrayController.java index e2fb707b0..181cc29e4 100644 --- a/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/controller/BasicdataTrayController.java +++ b/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/controller/BasicdataTrayController.java @@ -260,6 +260,12 @@ public class BasicdataTrayController extends BladeController { return R.data(trayService.printCode(Func.toLongList(ids))); } + @GetMapping("/getPDF") + public void getPDF(@ApiParam(value = "主键集合", required = true) @RequestParam String ids, + HttpServletResponse response) throws Exception { + trayService.downloadCodePDF(Func.toLongList(ids), response); + } + /** * 导出数据 */ diff --git a/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/service/IBasicdataTrayService.java b/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/service/IBasicdataTrayService.java index 4030a6b94..aaee2c464 100644 --- a/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/service/IBasicdataTrayService.java +++ b/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/service/IBasicdataTrayService.java @@ -29,6 +29,7 @@ import com.logpm.warehouse.vo.WarehouseTraybarCode; import org.springblade.core.mp.base.BaseService; import org.springblade.core.tool.api.R; +import javax.servlet.http.HttpServletResponse; import java.util.List; import java.util.Map; @@ -104,6 +105,7 @@ public interface IBasicdataTrayService extends BaseService * 托盘 打印包条 */ WarehouseTraybarCode printCode(List ids) throws Exception; + void downloadCodePDF(List ids, HttpServletResponse response) throws Exception; /** * 托盘内容查询 * @param id diff --git a/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/service/impl/BasicdataTrayServiceImpl.java b/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/service/impl/BasicdataTrayServiceImpl.java index 50d9c6329..3758faf26 100644 --- a/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/service/impl/BasicdataTrayServiceImpl.java +++ b/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/service/impl/BasicdataTrayServiceImpl.java @@ -22,6 +22,12 @@ import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +import com.ibm.icu.impl.data.ResourceReader; +import com.itextpdf.html2pdf.ConverterProperties; +import com.itextpdf.html2pdf.HtmlConverter; +import com.itextpdf.kernel.pdf.PdfDocument; +import com.itextpdf.kernel.pdf.PdfWriter; +import com.itextpdf.layout.font.FontProvider; import com.logpm.basic.entity.BasicPrintTemplateEntity; import com.logpm.basic.feign.IBasicPrintTemplateClient; import com.logpm.basicdata.dto.BasicdataTrayDTO; @@ -42,6 +48,7 @@ import com.logpm.warehouse.vo.WarehouseTrayQRCode; import com.logpm.warehouse.vo.WarehouseTraybarCode; import lombok.AllArgsConstructor; import lombok.extern.log4j.Log4j2; +import org.apache.commons.io.IOUtils; import org.springblade.common.constant.CodeNumConstant; import org.springblade.common.utils.QRCodeUtil; import org.springblade.common.utils.TemplateUtil; @@ -52,12 +59,19 @@ import org.springblade.core.secure.utils.AuthUtil; import org.springblade.core.tool.api.R; import org.springblade.core.tool.utils.Func; import org.springframework.beans.BeanUtils; +import org.springframework.http.MediaType; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import javax.servlet.http.HttpServletResponse; +import javax.swing.text.html.HTML; +import java.io.*; +import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.regex.Pattern; /** * 托盘 服务实现类 @@ -239,7 +253,80 @@ public class BasicdataTrayServiceImpl extends BaseServiceImpl ids, HttpServletResponse response) throws Exception { + BasicPrintTemplateEntity template = basicPrintTemplateClient.getTrayCode(); + if (ObjectUtil.isEmpty(template)) { + throw new ServiceException("模板内容未找到"); + } + if(ObjectUtils.isNull(ids)){ + throw new ServiceException("参数错误"); + } + //查询登录租户 + BladeUser user = AuthUtil.getUser(); + user.getTenantId(); + + response.setContentType(MediaType.APPLICATION_PDF_VALUE); + + PdfWriter pdfWriter = new PdfWriter(response.getOutputStream()); + PdfDocument document = new PdfDocument(pdfWriter); + ConverterProperties converterProperties = new ConverterProperties(); + + FontProvider fontProvider = new FontProvider(); + fontProvider.addStandardPdfFonts(); + fontProvider.addFont("STSong-Light", "UniGB-UCS2-H"); + converterProperties.setFontProvider(fontProvider); + StringBuilder PDFHtml = new StringBuilder(); + String htmlTemplate = getTrayCodePdfTemplate(); + + int index = 0; + + for (Long id : ids) { + index++; + WarehouseTrayQRCode trayQRCode = baseMapper.getTray(id); + String filename = QRCodeUtil.createCodeToFile(trayQRCode.getTrayCode()); + String fileTypeName = QRCodeUtil.createCodeToFileType(trayQRCode.getTrayCode()); + + String code = QRCodeUtil.getEmpAutograph(filename); + + String html = htmlTemplate.replaceAll("\\$\\{qrCode}", code) + .replaceAll("\\$\\{palletName}", trayQRCode.getPalletName()) + .replaceAll("\\$\\{trayCode}", trayQRCode.getTrayCode()) + .replaceAll("\\$\\{warehouseName}", trayQRCode.getWarehouseName()) + .replaceAll("\\$\\{tenant}", "汇通物流") + .replaceAll("\\$\\{imgType}", QRCodeUtil.getEmpAutograph(fileTypeName)); + + PDFHtml.append(html); + + if (index % 4 == 0) { + PDFHtml.append("
"); + } + + } + HtmlConverter.convertToPdf(new ByteArrayInputStream(PDFHtml.toString().getBytes()), document, converterProperties); + + document.close(); + pdfWriter.close(); + + response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode("托盘码.pdf", "UTF-8")); + } + + private String getTrayCodePdfTemplate() throws IOException { + ClassLoader classLoader = ResourceReader.class.getClassLoader(); + InputStream resourceAsStream = classLoader.getResourceAsStream("static/tray-pdf-template.html"); + if (resourceAsStream != null) { + try { + return IOUtils.toString(resourceAsStream, StandardCharsets.UTF_8); + } catch (IOException e) { + e.printStackTrace(); + }finally { + resourceAsStream.close(); + } + } + + return ""; + } @Override public BasicdataTrayVO getOneById(Long id) { diff --git a/blade-service/logpm-basicdata/src/main/resources/static/tray-pdf-template.html b/blade-service/logpm-basicdata/src/main/resources/static/tray-pdf-template.html new file mode 100644 index 000000000..4f356b589 --- /dev/null +++ b/blade-service/logpm-basicdata/src/main/resources/static/tray-pdf-template.html @@ -0,0 +1,22 @@ +
+
+ + + Document
+ + + + + + + + + + + +
+ +
${trayCode}
+
${tenant}
${warehouseName}
${palletName}
+
From 256a776621b76487378691c6a8191aacd9fc200d Mon Sep 17 00:00:00 2001 From: zhenghaoyu Date: Thu, 8 Aug 2024 15:28:00 +0800 Subject: [PATCH 2/2] =?UTF-8?q?1.=E5=B9=B2=E7=BA=BFbug=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/logpm/trunkline/dto/LoadCarsDTO.java | 1 + .../TrunklineBillladingWaybillMapper.xml | 1 - .../mapper/TrunklineCarsLoadMapper.xml | 4 ++-- .../mapper/TrunklineCarsLoadScanMapper.xml | 2 +- .../service/impl/OpenOrderServiceImpl.java | 21 +++++++++++-------- .../impl/TrunklineCarsLoadServiceImpl.java | 6 ++++-- 6 files changed, 20 insertions(+), 15 deletions(-) diff --git a/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/dto/LoadCarsDTO.java b/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/dto/LoadCarsDTO.java index 974f8f4b9..8409a7f32 100644 --- a/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/dto/LoadCarsDTO.java +++ b/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/dto/LoadCarsDTO.java @@ -63,6 +63,7 @@ public class LoadCarsDTO implements Serializable { private List productInfoList = new ArrayList<>(); + private String goodsName; private String orderCode; private String trayCode; diff --git a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineBillladingWaybillMapper.xml b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineBillladingWaybillMapper.xml index 03506a31c..dd552b2ca 100644 --- a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineBillladingWaybillMapper.xml +++ b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineBillladingWaybillMapper.xml @@ -58,7 +58,6 @@ left join logpm_warehouse_waybill lww on lww.waybill_no = ltbw.waybill_no where ltbw.billlading_id = #{billladingId} and ltbw.is_deleted = 0 - and ltbw.real_num > 0 diff --git a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineCarsLoadMapper.xml b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineCarsLoadMapper.xml index 5c97a077f..a9d626ec7 100644 --- a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineCarsLoadMapper.xml +++ b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineCarsLoadMapper.xml @@ -281,8 +281,8 @@ and lww.destination_warehouse_name like concat('%',#{param.destinationWarehouseName},'%') - - and lww.goods_name like concat('%',#{param.productName},'%') + + and lww.goods_name like concat('%',#{param.goodsName},'%') and lww.shipper like concat('%',#{param.shipper},'%') diff --git a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineCarsLoadScanMapper.xml b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineCarsLoadScanMapper.xml index bed836641..efd905924 100644 --- a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineCarsLoadScanMapper.xml +++ b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineCarsLoadScanMapper.xml @@ -509,7 +509,7 @@