diff --git a/emis-biz-web/src/main/java/com/xdadan/erp/web/emis/EmisWaybillController.java b/emis-biz-web/src/main/java/com/xdadan/erp/web/emis/EmisWaybillController.java index b363a6d77..77284a234 100644 --- a/emis-biz-web/src/main/java/com/xdadan/erp/web/emis/EmisWaybillController.java +++ b/emis-biz-web/src/main/java/com/xdadan/erp/web/emis/EmisWaybillController.java @@ -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 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 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(); diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/utils/PrintUtils.java b/emis-biz/src/main/java/com/xdadan/erp/emis/utils/PrintUtils.java new file mode 100644 index 000000000..6594bc2d0 --- /dev/null +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/utils/PrintUtils.java @@ -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(); + } + + + } +}