From 7c357fd1225f5751f614bedee9c508120a0d1d94 Mon Sep 17 00:00:00 2001 From: linfso Date: Sun, 4 Aug 2024 23:31:36 +0800 Subject: [PATCH] md --- .../erp/web/emis/EmisWaybillController.java | 201 ++++++++++++++++++ .../service/impl/EmisWaybillServiceImpl.java | 18 +- .../resources/mapper/EmisWaybillMapper.xml | 2 +- 3 files changed, 215 insertions(+), 6 deletions(-) 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 da07708f0..974310de4 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 @@ -1115,6 +1115,207 @@ public class EmisWaybillController extends EmisBaseController } + @Log(title = "APP获取打印数据,命令模式", businessType = BusinessType.OTHER) + @GetMapping("/realGetPrintByApp") + public AjaxResult realGetPrintByApp(String billCode, String subBillCodeRange,String tplCode, String lang, String printType) + { + + if(!StringUtils.isEmpty(billCode)){ + try { + + JSONArray jArr = new JSONArray(); + String printManCode=getLoginUser().getUser().getEmpCode(); + + // 确定是否打子单 + + JSONArray fileArrAll = new JSONArray(); + String tplCodeStr=WaybillHelper.formatQueryValue(printType); + String tplCodeArr[]=tplCodeStr.split(","); + + if(tplCodeArr.length>0){ + for (String tpCodeItem:tplCodeArr) { + if("TAN-GC-130".equals(tpCodeItem)) { + + // 循环获取主单信息 + String billSubCodeAllStr=""; + String[] billCodeArr = billCode.split(","); + if(billCodeArr.length>0){ + IXddTplPrint xtp = new TanexSubBillPrintImpl(); + for (String billCodeItem:billCodeArr) { + // 查询主单信息 + EmisWaybill emisWaybill = emisBaseService.getWaybillByBillCode(billCodeItem); + + // 获取所有子单号 + if(StringUtils.isEmpty(subBillCodeRange)) { + billSubCodeAllStr = emisWaybill.getBillCodeSub() ; + }else{ + String [] subRange=subBillCodeRange.split(","); + int start=Integer.valueOf(subRange[0]); + int end=emisWaybill.getParcelQty(); + int len=subRange.length; + if(len>1){ + end=Integer.valueOf(subRange[1]); + if((end-start)>50){ + end=start+50; + } + } + + while (start<=end && start<=emisWaybill.getParcelQty()){ + billSubCodeAllStr=billSubCodeAllStr+""+emisWaybill.getBillCode()+""+StringUtils.leftPad(String.valueOf(start),4,'0')+","; + start++; + } + + } + // 循环子单,最多60 + log.error("===>billSubCodeAllStr==>",billSubCodeAllStr); + if(!StringUtils.isEmpty(billSubCodeAllStr)) { + String[] subCodArr=billSubCodeAllStr.split(","); + for (int i=0;i<50 && i order = emisBaseService.getWaybillPrintOrder(item, subBillCodeRange, tpCodeItem, "zh", tpCodeItem, printManCode); + String pdfBase64Data = xtp.genPDFBase64(order); + JSONObject jObj = new JSONObject(); + jObj.put("result", "success"); + jObj.put("billCodeItem", item); + jObj.put("file", pdfBase64Data); + + fileArrAll.add(jObj); + } + } + } + } + } + + +// String strArry = PrintUtils.getPdfByBillCode(billSubCodeAllStr, tpCodeItem, printManCode); +// JSONArray fileArr = JSONArray.parseArray(strArry); +// fileArrAll.addAll(fileArr); + }else{ + // 直接获取 + String strArry = PrintUtils.getPdfByBillCode(billCode, tpCodeItem, printManCode); + JSONArray fileArr = JSONArray.parseArray(strArry); + fileArrAll.addAll(fileArr); + } + } + } + +// String strArry=PrintUtils.getPdfByBillCode(billCode,tplCodeStr,printManCode); +// JSONArray fileArr = JSONArray.parseArray(strArry); + for(Object objFile:fileArrAll) { + JSONObject jObjFileItem = (JSONObject) objFile; + String result = jObjFileItem.getString("result"); + String billCodeItem = jObjFileItem.getString("billCodeItem"); + JSONObject printItem = new JSONObject(); + printItem.put("billCode", billCodeItem); + if (!"success".equals(result)) { + continue; + } + + String pdfbase64 = jObjFileItem.getString("file"); + 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 + ".jpg"; + + FileOutputStream os = new FileOutputStream(saveFileName);//输出流 + IXddTplPrint tplPrint = new TanexTplPrintImpl(); + PrintUtils.genImage(pdfbase64, os); + + JSONObject jObjRemark = new JSONObject(); + jObjRemark.put("billCode", billCodeItem); + jObjRemark.put("subBillCodeRange", subBillCodeRange); + 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", "生成图片异常"); + + } + + 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(); + return AjaxResult.error("获取失败"); + } + } + + return AjaxResult.error("获取失败"); + } + + @GetMapping("/realGetWaybillPdf") public AjaxResult realGetWaybillPdf(HttpServletRequest request, HttpServletResponse response,String billCode, String billCodeRange,String tplCode, String lang, String printType,String printManCode,String isNeedPdf) { diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisWaybillServiceImpl.java b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisWaybillServiceImpl.java index 0986c261e..daa1b1335 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisWaybillServiceImpl.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisWaybillServiceImpl.java @@ -2796,7 +2796,6 @@ public class EmisWaybillServiceImpl extends EmisBaseService implements IEmisWayb ){ feeItem = new EmisWaybillFeeitem(); - feeItem.setFeeCode(quoteItem.getFeeType()); String feeName=DictUtils.getDictLabel("emis_fee_type",quoteItem.getFeeType()); feeItem.setFeeName(feeName); @@ -2815,19 +2814,28 @@ public class EmisWaybillServiceImpl extends EmisBaseService implements IEmisWayb feeItem.setAddWeightPrice(BigDecimal.valueOf(exprItem.getAdditionalWeight())); feeItem.setInitialWeightFee(BigDecimal.valueOf(exprItem.getInitialWeight())); - String exprStr = exprItem.getCalculateExpression(); - String calcExprStr=exprStr.replaceAll("w",emisWaybill.getTotalVolume().toString()); - log.info("计算公式:"+calcExprStr+",体积:"+emisWaybill.getTotalVolume()); + String calcExprStr=calcExp.replaceAll("w",emisWaybill.getTotalVolume().toString()) + .replaceAll("s",exprItem.getInitialWeight().toString()) + .replaceAll("d",exprItem.getAdditionalWeight().toString()); + log.info("计算公式:"+calcExprStr+",体积:"+emisWaybill.getTotalVolume()); double fee = Double.valueOf(AviatorEvaluator.execute(calcExprStr).toString()); + fee=WaybillHelper.calcSettledFee(fee,quoteItem.getPriceType()); + // 如果低于最低报价,则使用最低报价来计算 + if( fee < quoteItem.getLeastPrice().doubleValue() ){ + fee = quoteItem.getLeastPrice().doubleValue(); + feeItem.setRemark("must > "+quoteItem.getLeastPrice().doubleValue()); + }else{ + feeItem.setRemark(feeItem.getCalcExp()); + } feeItem.setFee(BigDecimal.valueOf(fee)); feeItem.setRealFee(BigDecimal.valueOf(fee)); log.info("计算后费用:"+feeItem.getFee()); + totalFee=totalFee+fee; - feeItem.setRemark(feeItem.getCalcExp()); feeItem.setBlAutoGen("1"); break; diff --git a/emis-biz/src/main/resources/mapper/EmisWaybillMapper.xml b/emis-biz/src/main/resources/mapper/EmisWaybillMapper.xml index 79c80b5d8..6b1d974e4 100644 --- a/emis-biz/src/main/resources/mapper/EmisWaybillMapper.xml +++ b/emis-biz/src/main/resources/mapper/EmisWaybillMapper.xml @@ -665,7 +665,7 @@ - and !FIND_IN_SET(a.`problem_type`,#{params.problemQueryIds}) + and ( !FIND_IN_SET(a.`problem_type`,#{params.problemQueryIds}) or a.`problem_type` is null)