diff --git a/blade-biz-common/src/main/java/org/springblade/common/utils/TemplateUtil.java b/blade-biz-common/src/main/java/org/springblade/common/utils/TemplateUtil.java index 702cf1183..aee484626 100644 --- a/blade-biz-common/src/main/java/org/springblade/common/utils/TemplateUtil.java +++ b/blade-biz-common/src/main/java/org/springblade/common/utils/TemplateUtil.java @@ -28,24 +28,52 @@ public class TemplateUtil { * 通过远程URL地址获取模板 * 此方法可以通过URL加载存储在远程服务器上的模板 * - * @param template - * @param map - * @param url + * @param name 模板名称 + * @param map 填充内容 + * @param url 模板地址 * @return * @throws Exception */ - public static String getTemplateByUrl(String template, Map map, String url) throws Exception { + public static String getTemplateByUrl(String name, Map map, String url) throws Exception { Configuration cfg = new Configuration(Configuration.VERSION_2_3_30); ByteArrayTemplateLoader byteArrayTemplateLoader = new ByteArrayTemplateLoader(); InputStream initialStream = getInputStreamByGet(url); - byteArrayTemplateLoader.putTemplate(template, + byteArrayTemplateLoader.putTemplate(name, IOUtils.toByteArray(initialStream)); cfg.setTemplateLoader(byteArrayTemplateLoader); cfg.setDefaultEncoding("UTF-8"); cfg.setTemplateExceptionHandler(TemplateExceptionHandler.RETHROW_HANDLER); cfg.setLogTemplateExceptions(false); cfg.setClassicCompatible(true); - Template temp = cfg.getTemplate(template); + Template temp = cfg.getTemplate(name); + StringWriter stringWriter = new StringWriter(); + temp.process(map, stringWriter); + stringWriter.flush(); + stringWriter.close(); + String result = stringWriter.getBuffer().toString(); + return result; + } + + + /** + * 根据模板填充模板内容 + * @param name 模板名称 + * @param map 填充内容 + * @param temlate + * @return + * @throws Exception + */ + public static String popTemplate(String name, Map map, String temlate) throws Exception { + Configuration cfg = new Configuration(Configuration.VERSION_2_3_30); + ByteArrayTemplateLoader byteArrayTemplateLoader = new ByteArrayTemplateLoader(); + byteArrayTemplateLoader.putTemplate(name, + temlate.getBytes()); + cfg.setTemplateLoader(byteArrayTemplateLoader); + cfg.setDefaultEncoding("UTF-8"); + cfg.setTemplateExceptionHandler(TemplateExceptionHandler.RETHROW_HANDLER); + cfg.setLogTemplateExceptions(false); + cfg.setClassicCompatible(true); + Template temp = cfg.getTemplate(name); StringWriter stringWriter = new StringWriter(); temp.process(map, stringWriter); stringWriter.flush(); diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/controller/DistributionDeliveryListController.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/controller/DistributionDeliveryListController.java index 34d453ec5..fb7bb4076 100644 --- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/controller/DistributionDeliveryListController.java +++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/controller/DistributionDeliveryListController.java @@ -346,10 +346,10 @@ public class DistributionDeliveryListController extends BladeController { @PostMapping("/printBatch") @ApiOperationSupport(order = 2) @ApiOperation(value = "批量打印") - public R printBatch(@ApiParam(value = "主键集合", required = true) @RequestParam String ids ,@ApiParam(value = "打印类型", required = true) @RequestParam Integer type) { + public R> printBatch(@ApiParam(value = "主键集合", required = true) @RequestParam String ids ,@ApiParam(value = "打印类型", required = true) @RequestParam Integer type) { try { - PrintPreviewVO printPreviewVOS = distributionDeliveryListService.printBatch(ids,type); + List printPreviewVOS = distributionDeliveryListService.printBatch(ids,type); return R.data(printPreviewVOS); } catch (Exception e) { throw new RuntimeException(e); diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistributionDeliveryListService.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistributionDeliveryListService.java index 1993325b8..683050b89 100644 --- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistributionDeliveryListService.java +++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistributionDeliveryListService.java @@ -225,5 +225,5 @@ public interface IDistributionDeliveryListService extends BaseService printBatch(String ids,Integer type) throws Exception; } diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionDeliveryListServiceImpl.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionDeliveryListServiceImpl.java index 6986e03e8..3ba31c052 100644 --- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionDeliveryListServiceImpl.java +++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionDeliveryListServiceImpl.java @@ -2674,7 +2674,7 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl printBatch(String ids, Integer type) throws Exception { PrintPreviewVO printPreviewVO = new PrintPreviewVO(); @@ -3163,21 +3163,24 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl handleShiPeiData(BasicPrintTemplateEntity template, String[] idArray,String html) throws Exception { + + List result = new ArrayList<>(); List data = new ArrayList<>(); for (String id : idArray) { @@ -3195,20 +3208,20 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl distributionReservationEntityList = distributionReservationMapper.findByDeliveryId(byId.getId()); - if(distributionReservationEntityList.isEmpty()){ + if (distributionReservationEntityList.isEmpty()) { throw new ServiceException("未找到相关数据"); } for (DistributionReservationEntity distributionReservationEntity : distributionReservationEntityList) { map.put("配送单号", distributionReservationEntity.getReservationCode()); - // todo 商场电话是否需要查询商场信息得到电话 + // todo 查询运单的收货人电话 map.put("商场电话", distributionReservationEntity.getReservationCode()); map.put("送货日期", DateUtil.format(distributionReservationEntity.getReservationDate(), "yyyy-MM-dd") + " 全天"); @@ -3220,34 +3233,34 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl> spaclOrderList = buildSpaclOrders(distributionReservationEntity, 1); - + List> spaclOrderList = buildSpaclOrders(distributionReservationEntity, 1); map.put("定制品集合", spaclOrderList); - map.put("备注", distributionReservationEntity.getRemarks()); - } - - - map.put("送货司机", byId.getTrainNumber() + "/" + byId.getDriverName()); - - + map.put("送货司机", byId.getVehicleName() + "/" + byId.getDriverName()); data.add(map); + String popHtml =TemplateUtil.popTemplate("市配配送单",map,html); + PrintPreviewVO printPreviewVO = new PrintPreviewVO(); + printPreviewVO.setTemplateId(template.getId()); + printPreviewVO.setTemplateHtml(popHtml); + result.add(printPreviewVO); } - printPreviewVO.setDataList(data); + + return result; + } - private BasicPrintTemplateEntity getPrintTemplate(Integer type){ + private BasicPrintTemplateEntity getPrintTemplate(Integer type) { BasicPrintTemplateEntity template = null; - if(1 == type){ + if (1 == type) { template = basicPrintTemplateClient.getPrintTemplate(PrintTemplateStatusConstant.daiqueren_1.getValue()); - }else if(2 == type){ + } else if (2 == type) { template = basicPrintTemplateClient.getPrintTemplate(PrintTemplateStatusConstant.daiqueren_12.getValue()); } if (ObjectUtil.isEmpty(template)) { @@ -3257,7 +3270,6 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl> buildSpaclOrders(DistributionReservationEntity distributionReservationEntity, int i) { + private List> buildSpaclOrders(DistributionReservationEntity distributionReservationEntity, int i) { List distributionReservationStocklistEntities; List distributionReservationStockarticleEntityList; - List> result = new ArrayList<>(); + List> result = new ArrayList<>(); switch (i) { case 1: // 订单 @@ -3280,18 +3292,18 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl temp = new HashMap<>(); + Map temp = new HashMap<>(); DistributionStockArticleEntity distributionStockArticleEntity = distributionStockArticleMapper.selectById(distributionReservationStockarticleEntity.getStockArticleId()); - temp.put("合同号",distributionStockArticleEntity.getOrderCode()); - temp.put("产品名称",distributionStockArticleEntity.getDescriptionGoods()); + temp.put("合同号", distributionStockArticleEntity.getOrderCode()); + temp.put("产品名称", distributionStockArticleEntity.getDescriptionGoods()); //todo 单位是否需要查询物料表 - temp.put("单位","件"); - temp.put("数量",distributionReservationStockarticleEntity.getReservationNum()); - temp.put("备货区",null); + temp.put("单位", "件"); + temp.put("数量", distributionReservationStockarticleEntity.getReservationNum()); + temp.put("备货区", null); //todo 这里还没完成 - temp.put("货位",null); + temp.put("货位", null); result.add(temp);