|
|
|
@ -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<BasicdataTrayMappe
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public void downloadCodePDF(List<Long> 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("<div style=\"page-break-before: always;\"></div>"); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
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) { |
|
|
|
|