This commit is contained in:
linfso 2024-06-07 07:29:44 +08:00
parent 1598d6bdfd
commit f39d976a59
2 changed files with 182 additions and 13 deletions

View File

@ -37,6 +37,7 @@ import com.xdadan.erp.emis.domain.vo.*;
import com.xdadan.erp.emis.service.*;
import com.xdadan.erp.emis.service.print.IXddTplPrint;
import com.xdadan.erp.emis.service.print.tanex.TanexTplPrintImpl;
import com.xdadan.erp.emis.utils.PrintUtils;
import com.xdadan.erp.emis.utils.WaybillHelper;
import com.xdadan.erp.system.domain.SysFileInfo;
import com.xdadan.erp.system.service.ISysFileInfoService;
@ -549,15 +550,20 @@ public class EmisWaybillController extends EmisBaseController
if(!StringUtils.isEmpty(billCode)){
try {
JSONArray jArr = new JSONArray();
String[] billCodeArr = billCode.split(",");
for(String billCodeItem:billCodeArr) {
Map<String, Object> order = emisBaseService.getWaybillPrintOrder(billCodeItem, billCodeRange,tplCode,lang, printType);
JSONArray jArr = new JSONArray();
String printManCode=getLoginUser().getUser().getEmpCode();
String strArry=PrintUtils.getPdfByBillCode(billCode,printType,printManCode);
JSONArray fileArr = JSONArray.parseArray(strArry);
for(Object objFile:fileArr) {
JSONObject jObjFileItem=(JSONObject)objFile;
String result=jObjFileItem.getString("result");
String billCodeItem=jObjFileItem.getString("billCodeItem");
JSONObject printItem = new JSONObject();
printItem.put("billCode",billCodeItem);
if(order!=null) {
if("success".equals(result)){
String pdfbase64=jObjFileItem.getString("file");
try
{
String fileId = UUID.fastUUID().toString();
@ -568,11 +574,11 @@ public class EmisWaybillController extends EmisBaseController
saveDir.mkdirs();
}
String saveFileName = fileUploadDir+File.separator+fileId+".png";
String saveFileName = fileUploadDir+File.separator+fileId+".jpg";
FileOutputStream os = new FileOutputStream(saveFileName);//输出流
IXddTplPrint tplPrint = new TanexTplPrintImpl();
tplPrint.genPNG(order, os);
PrintUtils.genImage(pdfbase64, os);
JSONObject jObjRemark = new JSONObject();
jObjRemark.put("billCode",billCodeItem);
@ -594,15 +600,66 @@ public class EmisWaybillController extends EmisBaseController
printItem.put("message","生成图片异常");
}
}else{
printItem.put("result","fail");
printItem.put("message","未获取到数据");
}
jArr.add(printItem);
}
// JSONArray jArr = new JSONArray();
// String[] billCodeArr = billCode.split(",");
//
// for(String billCodeItem:billCodeArr) {
// Map<String, Object> order = emisBaseService.getWaybillPrintOrder(billCodeItem, billCodeRange,tplCode,lang, printType);
// JSONObject printItem = new JSONObject();
// printItem.put("billCode",billCodeItem);
// if(order!=null) {
//
// try
// {
// String fileId = UUID.fastUUID().toString();
// String fileUploadDir = PayConfig.getUploadPath()+File.separator+DateUtils.datePath();
//
// File saveDir = new File(fileUploadDir);
// if(!saveDir.exists()){
// saveDir.mkdirs();
// }
//
// String saveFileName = fileUploadDir+File.separator+fileId+".png";
//
// FileOutputStream os = new FileOutputStream(saveFileName);//输出流
// IXddTplPrint tplPrint = new TanexTplPrintImpl();
// tplPrint.genPNG(order, os);
//
// JSONObject jObjRemark = new JSONObject();
// jObjRemark.put("billCode",billCodeItem);
// jObjRemark.put("billCodeRange",billCodeRange);
// jObjRemark.put("lang",lang);
// jObjRemark.put("printType",printType);
//
// SysFileInfo sysFileInfo=sysFileInfoService.ossUploadLocalFile(saveFileName,billCodeItem,jObjRemark.toJSONString());
// String imageUrl = sysFileInfo.getFileRemoteUrl();
// printItem.put("imageUrl", imageUrl);
// printItem.put("result","success");
// printItem.put("message","success");
// }
// catch (Exception e)
// {
// e.printStackTrace();
// printItem.put("imageUrl", "");
// printItem.put("result","fail");
// printItem.put("message","生成图片异常");
//
// }
//
//
// }else{
// printItem.put("result","fail");
// printItem.put("message","未获取到数据");
// }
// jArr.add(printItem);
// }
return AjaxResult.success("获取成功",jArr);
}catch (Exception ex){
ex.printStackTrace();

View File

@ -0,0 +1,112 @@
package com.xdadan.erp.emis.utils;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.xdadan.erp.common.constant.Constants;
import com.xdadan.erp.common.core.domain.AjaxResult;
import com.xdadan.erp.common.core.redis.RedisCache;
import com.xdadan.erp.common.utils.HTTPHelperV3;
import com.xdadan.erp.common.utils.StringUtils;
import com.xdadan.erp.common.utils.spring.SpringUtils;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.rendering.ImageType;
import org.apache.pdfbox.rendering.PDFRenderer;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.util.*;
/**
* 打印工具服务
*
* @author xdadan
*/
public class PrintUtils
{
public static String getPdfByBillCode(String billCode, String tplCode,String printManCode) throws Exception {
String url="http://api.print.xdadan.com/getPdfByBillCode?billCode="+billCode+"&tplCode="+tplCode+"&printManCode="+printManCode;
try {
String result= HTTPHelperV3.get(url);
if(!StringUtils.isEmpty(result)) {
JSONObject jobj = JSONObject.parseObject(result);
if ("200".equals(jobj.getString("code"))) {
return jobj.getString("data");
} else {
throw new Exception(jobj.getString("msg"));
}
}else{
return null;
}
} catch (Exception e) {
e.printStackTrace();
throw new Exception("系统异常,联系客服:"+e.getMessage());
}
}
public static void genImage(String base64, OutputStream os) throws Exception {
// System.out.print("base64:"+base64);
byte[] pdf_bytes = Base64.getDecoder().decode(base64);
PDDocument document = PDDocument.load(pdf_bytes);
PDFRenderer renderer = new PDFRenderer(document);
BufferedImage bufferedImage = renderer.renderImageWithDPI(0, 200, ImageType.RGB);
ImageIO.write(bufferedImage, "jpg", os);
}
public static JSONArray getImageByBillCode(String billCode, String tplCode,String printManCode) throws Exception {
try {
String data=getPdfByBillCode(billCode,tplCode,"1");
JSONArray jsonArray = JSONArray.parseArray(data);
for (Object jobj:jsonArray) {
JSONObject item=(JSONObject)jobj;
if(item.containsKey("file")){
String pdfBase64=item.getString("file");
String billCodeIem=item.getString("billCode");
// base64 转 jpg
String saveFileName="/Users/alan/Downloads/"+billCodeIem+".jpg";
FileOutputStream os = new FileOutputStream(saveFileName);
genImage(pdfBase64,os);
}
}
return jsonArray;
} catch (Exception e) {
e.printStackTrace();
throw new Exception("系统异常,联系客服:"+e.getMessage());
}
}
// public AjaxResult genImageByPdf(String base64) throws Exception {
// AjaxResult ar = new AjaxResult();
//
// char[] tplDataByte = Base64.getDecoder().decode(base64.getBytes("utf-8"));
// ByteArrayOutputStream bos = new ByteArrayOutputStream();
// genPDF(order, bos);
// PDDocument document = PDDocument.load(bos.toByteArray());
// PDFRenderer renderer = new PDFRenderer(document);
// BufferedImage bufferedImage = renderer.renderImageWithDPI(0, 280, ImageType.RGB);
// ImageIO.write(bufferedImage, "png", os);
// return ar;
// }
public static void main(String[] args) {
String jObj = null;
try {
// T1232432432432&tplCode=TAN-GM-130&_t=123
for(int i=0;i<1;i++) {
JSONArray jsonArray = PrintUtils.getImageByBillCode("T1232432432432", "TAN-GM-130","1");
System.out.println(jsonArray.toJSONString());
}
} catch (Exception e) {
e.printStackTrace();
}
}
}