diff --git a/EasyExcel/pom.xml b/EasyExcel/pom.xml index d8230d98b..7c07ee3f0 100644 --- a/EasyExcel/pom.xml +++ b/EasyExcel/pom.xml @@ -6,7 +6,7 @@ com.netease.lowcode.extensions EasyExcel - 2.4.1 + 2.4.2 8 @@ -108,6 +108,10 @@ codewave-file-connector-library 1.0.3 + + org.projectlombok + lombok + @@ -118,7 +122,7 @@ 1.7.1 false - true + diff --git a/async_function_pool/pom.xml b/async_function_pool/pom.xml index 82aaa31cb..68ca28d11 100644 --- a/async_function_pool/pom.xml +++ b/async_function_pool/pom.xml @@ -12,13 +12,13 @@ com.netease async_function_pool - 1.0.4 + 1.1.0 8 8 UTF-8 - 3.3 + 3.8 - 1.3.7 + 1.4.0 8 @@ -113,38 +113,38 @@ - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + com.netease.lowcode nasl-metadata-maven-plugin 1.4.1 false - false + true diff --git a/freemarker-tool/src/main/java/com/netease/lowcode/freemarker/util/FreeMarkerUtil.java b/freemarker-tool/src/main/java/com/netease/lowcode/freemarker/util/FreeMarkerUtil.java index da3c58140..474d575ce 100644 --- a/freemarker-tool/src/main/java/com/netease/lowcode/freemarker/util/FreeMarkerUtil.java +++ b/freemarker-tool/src/main/java/com/netease/lowcode/freemarker/util/FreeMarkerUtil.java @@ -10,17 +10,11 @@ import com.spire.xls.FileFormat; import com.spire.xls.Workbook; import freemarker.cache.URLTemplateLoader; -import freemarker.core.HTMLOutputFormat; import freemarker.template.Configuration; import freemarker.template.Template; import freemarker.template.TemplateException; -import org.apache.poi.ss.usermodel.WorkbookFactory; - -import java.io.*; -import java.net.MalformedURLException; -import java.net.URL; -import java.nio.charset.StandardCharsets; import org.apache.commons.lang3.StringUtils; +import org.apache.poi.ss.usermodel.WorkbookFactory; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.w3c.dom.Document; @@ -37,7 +31,10 @@ import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; - +import java.io.*; +import java.net.MalformedURLException; +import java.net.URL; +import java.nio.charset.StandardCharsets; import java.util.*; import java.util.concurrent.atomic.AtomicInteger; import java.util.regex.Matcher; @@ -79,12 +76,12 @@ public static DownloadResponseDTO createFile(CreateRequest request) { return DownloadResponseDTO.OK(outUrl.getResult(), outUrl.getFilePath()); } else { - return DownloadResponseDTO.FAIL("文件上传失败",""); + return DownloadResponseDTO.FAIL("文件上传失败", ""); } } catch (Throwable e) { - return DownloadResponseDTO.FAIL("执行异常:"+e.getMessage(), Arrays.toString(e.getStackTrace())); + return DownloadResponseDTO.FAIL("执行异常:" + e.getMessage(), Arrays.toString(e.getStackTrace())); } } @@ -122,12 +119,12 @@ public static DownloadResponseDTO createNewXlsx(CreateRequest request) { return DownloadResponseDTO.OK(outUrl.getResult(), outUrl.getFilePath()); } else { - return DownloadResponseDTO.FAIL("文件上传失败",""); + return DownloadResponseDTO.FAIL("文件上传失败", ""); } } catch (Throwable e) { - return DownloadResponseDTO.FAIL("执行异常:"+e.getMessage(), Arrays.toString(e.getStackTrace())); + return DownloadResponseDTO.FAIL("执行异常:" + e.getMessage(), Arrays.toString(e.getStackTrace())); } } @@ -141,7 +138,7 @@ public static DownloadResponseDTO createNewXlsx(CreateRequest request) { public static DownloadResponseDTO createNewDocxFile(CreateDocxRequest request) { log.info("createDocxFile request:{}", request); - Map templateFileMap = new HashMap<>(); + Map templateFileMap = new HashMap<>(); try { CreateDocxRequestValidator.validate(request); @@ -176,7 +173,7 @@ public static DownloadResponseDTO createNewDocxFile(CreateDocxRequest request) { // 下载模板文件 if (request.templateUrl != null) { for (Map.Entry entry : request.templateUrl.entrySet()) { - templateFileMap.put(entry.getKey(),FileUtil.getTrueUrl(entry.getValue())); + templateFileMap.put(entry.getKey(), FileUtil.getTrueUrl(entry.getValue())); } } @@ -193,14 +190,14 @@ public static DownloadResponseDTO createNewDocxFile(CreateDocxRequest request) { // System.out.println("文件写入成功"); // } // 上传文件 - UploadResponseDTO outUrl = FileUtil.uploadStream(new ByteArrayInputStream(outputStream.toByteArray()),request.outFileName); + UploadResponseDTO outUrl = FileUtil.uploadStream(new ByteArrayInputStream(outputStream.toByteArray()), request.outFileName); outputStream.close(); if (Objects.nonNull(outUrl)) { return DownloadResponseDTO.OK(outUrl.getResult(), outUrl.getFilePath()); } else { - return DownloadResponseDTO.FAIL("文件上传失败",""); + return DownloadResponseDTO.FAIL("文件上传失败", ""); } } catch (Throwable e) { return DownloadResponseDTO.FAIL("执行异常:" + e.getMessage(), Arrays.toString(e.getStackTrace())); @@ -210,7 +207,7 @@ public static DownloadResponseDTO createNewDocxFile(CreateDocxRequest request) { public static ByteArrayOutputStream createDocx(String jsonData, Map picMap, InputStream docxInputSteam, - Map templateFileMap, + Map templateFileMap, boolean enableRichTextImage) throws Exception { log.info("createDocx jsonData:{}, picMap:{}, docxInputSteam:{}, templateFileMap:{}, enableRichTextImage:{}", jsonData, picMap, docxInputSteam, templateFileMap, enableRichTextImage); ZipOutputStream zipOut = null; @@ -247,13 +244,13 @@ public static ByteArrayOutputStream createDocx(String jsonData, //最初设计的模板 zipOut = new ZipOutputStream(outputStream); //开始覆盖文档, 不要删除原图片,存在无需替换的情况,因此全部保留 - writeZipFileV2(new ByteArrayInputStream(templateDocBytes),zipOut,templateFileStreamMap); + writeZipFileV2(new ByteArrayInputStream(templateDocBytes), zipOut, templateFileStreamMap); //写入图片 ,可能存在用户命名与保留文件重复,客户图片名称前加特定标识,由用户控制 writePicture(picMap, zipOut); return outputStream; } finally { - if (zipOut != null){ + if (zipOut != null) { zipOut.close(); } } @@ -282,7 +279,7 @@ protected URL getURL(String name) { } private static void writeZipFileV2(InputStream zipInputStream, - ZipOutputStream zipOut,Map templateFileStreamMap) throws IOException { + ZipOutputStream zipOut, Map templateFileStreamMap) throws IOException { int len; byte[] buffer = new byte[1024]; @@ -317,10 +314,10 @@ private static void writePicture(Map picMap, ZipOutputStream zip Base64.Decoder decoder = Base64.getDecoder(); for (Map.Entry entry : picMap.entrySet()) { // 用户输入的图片名称可能会与原文件重复,这里交由使用方控制,图片名称前加个标识区分,防止覆盖 - ZipEntry next = new ZipEntry("word/media/"+entry.getKey()); + ZipEntry next = new ZipEntry("word/media/" + entry.getKey()); zipout.putNextEntry(new ZipEntry(next.toString())); byte[] bytes = decoder.decode(entry.getValue()); - InputStream in = new ByteArrayInputStream(bytes); + InputStream in = new ByteArrayInputStream(bytes); while ((len = in.read(buffer)) != -1) { zipout.write(buffer, 0, len); } @@ -582,4 +579,19 @@ private static String guessImageContentType(String extension) { return "image/" + extension; } } + + /** + * 通用文本模板处理 + */ + @NaslLogic + public static String textFreemarker(String templateStr, Map data) { + try { + Template template = new Template("dynamic", new StringReader(templateStr)); + StringWriter writer = new StringWriter(); + template.process(data, writer); + return writer.toString(); + } catch (Exception e) { + throw new RuntimeException("模板处理失败", e); + } + } } diff --git a/redis-template-tool/pom.xml b/redis-template-tool/pom.xml index c3272a748..643854d28 100644 --- a/redis-template-tool/pom.xml +++ b/redis-template-tool/pom.xml @@ -84,7 +84,7 @@ 1.5.1 false - true +