From 744eed339b9417122bb0e04a8ae80e317785e2b3 Mon Sep 17 00:00:00 2001 From: dimengzhe <251008545@qq.com> Date: Tue, 2 Aug 2022 17:44:58 +0800 Subject: [PATCH 01/24] =?UTF-8?q?=E7=A7=BB=E5=BA=93=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E5=87=BA=E9=97=A8=E8=AF=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../yxt/common/base/config/component/FileUploadComponent.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/yxt-common/yxt-common-base/src/main/java/com/yxt/common/base/config/component/FileUploadComponent.java b/yxt-common/yxt-common-base/src/main/java/com/yxt/common/base/config/component/FileUploadComponent.java index f6f08a2..ae11bab 100644 --- a/yxt-common/yxt-common-base/src/main/java/com/yxt/common/base/config/component/FileUploadComponent.java +++ b/yxt-common/yxt-common-base/src/main/java/com/yxt/common/base/config/component/FileUploadComponent.java @@ -205,7 +205,7 @@ public class FileUploadComponent { return uploadFile(file, false, relativePath); } - private String dateFileName() { + public String dateFileName() { return DateUtil.format(new Date(), "yyyyMMddHHmmssSSS") + RandomUtil.randomNumbers(3); } From 1d4c9655fc844d4c9bfe69e66e1bb5c8465899ef Mon Sep 17 00:00:00 2001 From: hp <2969694837@qq.com> Date: Thu, 4 Aug 2022 10:35:02 +0800 Subject: [PATCH 02/24] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=9B=98=E5=BA=93?= =?UTF-8?q?=EF=BC=8C=E5=B7=A1=E6=A3=80=20=E7=94=9F=E6=88=90=E8=AE=B0?= =?UTF-8?q?=E5=BD=95=E6=8A=A5=E9=94=99,=E4=BF=AE=E6=94=B9=E7=A7=BB?= =?UTF-8?q?=E5=8A=A8=E7=AB=AF=E5=9B=BE=E7=89=87=E4=B8=8A=E4=BC=A0=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/base/config/component/FileBatchUploadComponent.java | 1 + 1 file changed, 1 insertion(+) diff --git a/yxt-common/yxt-common-base/src/main/java/com/yxt/common/base/config/component/FileBatchUploadComponent.java b/yxt-common/yxt-common-base/src/main/java/com/yxt/common/base/config/component/FileBatchUploadComponent.java index de54149..bb31f12 100644 --- a/yxt-common/yxt-common-base/src/main/java/com/yxt/common/base/config/component/FileBatchUploadComponent.java +++ b/yxt-common/yxt-common-base/src/main/java/com/yxt/common/base/config/component/FileBatchUploadComponent.java @@ -76,6 +76,7 @@ public class FileBatchUploadComponent { String fileName = file.getOriginalFilename(); // 后缀名 String suffixName = fileName.substring(fileName.lastIndexOf(".")); + suffixName = suffixName.toLowerCase(); if (suffixName.equals(".pdf")) { // pdf文件 ResultBean resultBean = fileUploadComponent.uploadFile(file); FileUploadResult uploadResult = resultBean.getData(); From 777721ac8cb6365287a492d1a064021052b7df88 Mon Sep 17 00:00:00 2001 From: dimengzhe <251008545@qq.com> Date: Sun, 7 Aug 2022 01:10:37 +0800 Subject: [PATCH 03/24] =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E6=97=A5=E5=BF=97=E6=96=87=E4=BB=B6=E6=89=93=E5=8D=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- yxt-common/yxt-common-base/pom.xml | 5 + .../yxt/common/base/config/logging/Log.java | 96 +++++++++++++++++++ .../config/logging/LoggingLocalNotice.java | 64 +++++++++++++ yxt-parent/pom.xml | 54 ++++++----- 4 files changed, 195 insertions(+), 24 deletions(-) create mode 100644 yxt-common/yxt-common-base/src/main/java/com/yxt/common/base/config/logging/Log.java create mode 100644 yxt-common/yxt-common-base/src/main/java/com/yxt/common/base/config/logging/LoggingLocalNotice.java diff --git a/yxt-common/yxt-common-base/pom.xml b/yxt-common/yxt-common-base/pom.xml index a7cc522..35c4cf0 100644 --- a/yxt-common/yxt-common-base/pom.xml +++ b/yxt-common/yxt-common-base/pom.xml @@ -176,6 +176,11 @@ 1.18 + + org.minbox.framework + api-boot-starter-logging + + diff --git a/yxt-common/yxt-common-base/src/main/java/com/yxt/common/base/config/logging/Log.java b/yxt-common/yxt-common-base/src/main/java/com/yxt/common/base/config/logging/Log.java new file mode 100644 index 0000000..97e8efb --- /dev/null +++ b/yxt-common/yxt-common-base/src/main/java/com/yxt/common/base/config/logging/Log.java @@ -0,0 +1,96 @@ +package com.yxt.common.base.config.logging; + +import java.io.Serializable; +import java.util.Map; + +/** + * @Author dimengzhe + * @Date 2022/6/21 15:48 + * @Description + */ +public class Log implements Serializable { + + private static final long serialVersionUID = 3958980733637576088L; + private String serviceId; + private String requestIp; + private String serviceIp; + private String servicePort; + private Integer httpStatus; + private String requestMethod; + private String requestUri; + + private Map requestBodyN; + private Map responseBodyN; + + public String getRequestMethod() { + return requestMethod; + } + + public void setRequestMethod(String requestMethod) { + this.requestMethod = requestMethod; + } + + public String getRequestUri() { + return requestUri; + } + + public void setRequestUri(String requestUri) { + this.requestUri = requestUri; + } + + public Integer getHttpStatus() { + return httpStatus; + } + + public void setHttpStatus(Integer httpStatus) { + this.httpStatus = httpStatus; + } + + public String getRequestIp() { + return requestIp; + } + + public void setRequestIp(String requestIp) { + this.requestIp = requestIp; + } + + public String getServiceIp() { + return serviceIp; + } + + public void setServiceIp(String serviceIp) { + this.serviceIp = serviceIp; + } + + public String getServicePort() { + return servicePort; + } + + public void setServicePort(String servicePort) { + this.servicePort = servicePort; + } + + public String getServiceId() { + return serviceId; + } + + public void setServiceId(String serviceId) { + this.serviceId = serviceId; + } + + public Map getRequestBodyN() { + return requestBodyN; + } + + public void setRequestBodyN(Map requestBodyN) { + this.requestBodyN = requestBodyN; + } + + public Map getResponseBodyN() { + return responseBodyN; + } + + public void setResponseBodyN(Map responseBodyN) { + this.responseBodyN = responseBodyN; + } +} diff --git a/yxt-common/yxt-common-base/src/main/java/com/yxt/common/base/config/logging/LoggingLocalNotice.java b/yxt-common/yxt-common-base/src/main/java/com/yxt/common/base/config/logging/LoggingLocalNotice.java new file mode 100644 index 0000000..77bdb08 --- /dev/null +++ b/yxt-common/yxt-common-base/src/main/java/com/yxt/common/base/config/logging/LoggingLocalNotice.java @@ -0,0 +1,64 @@ +package com.yxt.common.base.config.logging; + +import cn.hutool.core.bean.BeanUtil; +import com.alibaba.fastjson.JSONObject; +import com.alibaba.fastjson.TypeReference; +import org.apache.commons.lang3.StringUtils; +import org.minbox.framework.logging.client.LoggingFactoryBean; +import org.minbox.framework.logging.client.notice.LoggingNotice; +import org.minbox.framework.logging.core.MinBoxLog; +import org.minbox.framework.util.JsonUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + +import java.util.Map; + +/** + * @Author dimengzhe + * @Date 2022/6/21 11:27 + * @Description 日志模板 + */ +@Component +public class LoggingLocalNotice implements LoggingNotice { + + public static final String BEAN_NAME = "loggingLocalNotice"; + static Logger logger = LoggerFactory.getLogger(LoggingLocalNotice.class); + private final LoggingFactoryBean loggingFactoryBean; + + public LoggingLocalNotice(LoggingFactoryBean loggingFactoryBean) { + this.loggingFactoryBean = loggingFactoryBean; + } + + @Override + public void notice(MinBoxLog minBoxLog) { + if (this.loggingFactoryBean.isShowConsoleLog()) { + logger.info("=====接口开始:" + minBoxLog.getRequestUri()); + Log log = new Log(); + if (StringUtils.isNotBlank(minBoxLog.getRequestBody())) { + JSONObject jsonObject = JSONObject.parseObject(minBoxLog.getRequestBody()); + Map map = JSONObject.parseObject(jsonObject.toJSONString(), new TypeReference>() { + }); + log.setRequestBodyN(map); + + } + if (StringUtils.isNotBlank(minBoxLog.getResponseBody())) { + JSONObject jsonObject = JSONObject.parseObject(minBoxLog.getResponseBody()); + Map map = JSONObject.parseObject(jsonObject.toJSONString(), new TypeReference>() { + }); + log.setResponseBodyN(map); + } + log.setHttpStatus(minBoxLog.getHttpStatus()); + BeanUtil.copyProperties(minBoxLog, log); +// logger.info("Request Uri:{}, Logging:\n{}", minBoxLog.getRequestUri(), this.loggingFactoryBean.isFormatConsoleLog() ? JsonUtils.beautifyJson(minBoxLog) : JsonUtils.toJsonString(minBoxLog)); + logger.info("Logging:\n{}", this.loggingFactoryBean.isFormatConsoleLog() ? JsonUtils.beautifyJson(log) : JsonUtils.toJsonString(log)); + logger.info("====接口结束"); + } + + } + + @Override + public int getOrder() { + return -2147483648; + } +} diff --git a/yxt-parent/pom.xml b/yxt-parent/pom.xml index 7eb7984..49da0ff 100644 --- a/yxt-parent/pom.xml +++ b/yxt-parent/pom.xml @@ -55,7 +55,7 @@ 2.9.2 2.0.5 - + 3.17 @@ -127,11 +127,11 @@ - - com.auth0 - java-jwt - ${java-jwt.version} - + + com.auth0 + java-jwt + ${java-jwt.version} + redis.clients @@ -185,7 +185,7 @@ - + io.springfox springfox-swagger2 ${swagger.fox.version} @@ -202,21 +202,21 @@ pom import - + org.apache.poi @@ -400,8 +400,14 @@ - - + + + org.minbox.framework + api-boot-dependencies + 2.3.3.RELEASE + pom + import + From 165542dd8ed2ea84cfc6256f5954c3f5ef0ec69f Mon Sep 17 00:00:00 2001 From: dimengzhe <251008545@qq.com> Date: Mon, 8 Aug 2022 12:18:10 +0800 Subject: [PATCH 04/24] =?UTF-8?q?=E5=9B=A0=E5=9C=A8=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E5=99=A8=E6=9C=89=E9=97=AE=E9=A2=98=EF=BC=8C=E8=BF=98=E5=8E=9F?= =?UTF-8?q?=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- yxt-common/yxt-common-base/pom.xml | 5 - .../yxt/common/base/config/logging/Log.java | 96 ------------------- .../config/logging/LoggingLocalNotice.java | 64 ------------- yxt-parent/pom.xml | 9 -- 4 files changed, 174 deletions(-) delete mode 100644 yxt-common/yxt-common-base/src/main/java/com/yxt/common/base/config/logging/Log.java delete mode 100644 yxt-common/yxt-common-base/src/main/java/com/yxt/common/base/config/logging/LoggingLocalNotice.java diff --git a/yxt-common/yxt-common-base/pom.xml b/yxt-common/yxt-common-base/pom.xml index 35c4cf0..a7cc522 100644 --- a/yxt-common/yxt-common-base/pom.xml +++ b/yxt-common/yxt-common-base/pom.xml @@ -176,11 +176,6 @@ 1.18 - - org.minbox.framework - api-boot-starter-logging - - diff --git a/yxt-common/yxt-common-base/src/main/java/com/yxt/common/base/config/logging/Log.java b/yxt-common/yxt-common-base/src/main/java/com/yxt/common/base/config/logging/Log.java deleted file mode 100644 index 97e8efb..0000000 --- a/yxt-common/yxt-common-base/src/main/java/com/yxt/common/base/config/logging/Log.java +++ /dev/null @@ -1,96 +0,0 @@ -package com.yxt.common.base.config.logging; - -import java.io.Serializable; -import java.util.Map; - -/** - * @Author dimengzhe - * @Date 2022/6/21 15:48 - * @Description - */ -public class Log implements Serializable { - - private static final long serialVersionUID = 3958980733637576088L; - private String serviceId; - private String requestIp; - private String serviceIp; - private String servicePort; - private Integer httpStatus; - private String requestMethod; - private String requestUri; - - private Map requestBodyN; - private Map responseBodyN; - - public String getRequestMethod() { - return requestMethod; - } - - public void setRequestMethod(String requestMethod) { - this.requestMethod = requestMethod; - } - - public String getRequestUri() { - return requestUri; - } - - public void setRequestUri(String requestUri) { - this.requestUri = requestUri; - } - - public Integer getHttpStatus() { - return httpStatus; - } - - public void setHttpStatus(Integer httpStatus) { - this.httpStatus = httpStatus; - } - - public String getRequestIp() { - return requestIp; - } - - public void setRequestIp(String requestIp) { - this.requestIp = requestIp; - } - - public String getServiceIp() { - return serviceIp; - } - - public void setServiceIp(String serviceIp) { - this.serviceIp = serviceIp; - } - - public String getServicePort() { - return servicePort; - } - - public void setServicePort(String servicePort) { - this.servicePort = servicePort; - } - - public String getServiceId() { - return serviceId; - } - - public void setServiceId(String serviceId) { - this.serviceId = serviceId; - } - - public Map getRequestBodyN() { - return requestBodyN; - } - - public void setRequestBodyN(Map requestBodyN) { - this.requestBodyN = requestBodyN; - } - - public Map getResponseBodyN() { - return responseBodyN; - } - - public void setResponseBodyN(Map responseBodyN) { - this.responseBodyN = responseBodyN; - } -} diff --git a/yxt-common/yxt-common-base/src/main/java/com/yxt/common/base/config/logging/LoggingLocalNotice.java b/yxt-common/yxt-common-base/src/main/java/com/yxt/common/base/config/logging/LoggingLocalNotice.java deleted file mode 100644 index 77bdb08..0000000 --- a/yxt-common/yxt-common-base/src/main/java/com/yxt/common/base/config/logging/LoggingLocalNotice.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.yxt.common.base.config.logging; - -import cn.hutool.core.bean.BeanUtil; -import com.alibaba.fastjson.JSONObject; -import com.alibaba.fastjson.TypeReference; -import org.apache.commons.lang3.StringUtils; -import org.minbox.framework.logging.client.LoggingFactoryBean; -import org.minbox.framework.logging.client.notice.LoggingNotice; -import org.minbox.framework.logging.core.MinBoxLog; -import org.minbox.framework.util.JsonUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Component; - -import java.util.Map; - -/** - * @Author dimengzhe - * @Date 2022/6/21 11:27 - * @Description 日志模板 - */ -@Component -public class LoggingLocalNotice implements LoggingNotice { - - public static final String BEAN_NAME = "loggingLocalNotice"; - static Logger logger = LoggerFactory.getLogger(LoggingLocalNotice.class); - private final LoggingFactoryBean loggingFactoryBean; - - public LoggingLocalNotice(LoggingFactoryBean loggingFactoryBean) { - this.loggingFactoryBean = loggingFactoryBean; - } - - @Override - public void notice(MinBoxLog minBoxLog) { - if (this.loggingFactoryBean.isShowConsoleLog()) { - logger.info("=====接口开始:" + minBoxLog.getRequestUri()); - Log log = new Log(); - if (StringUtils.isNotBlank(minBoxLog.getRequestBody())) { - JSONObject jsonObject = JSONObject.parseObject(minBoxLog.getRequestBody()); - Map map = JSONObject.parseObject(jsonObject.toJSONString(), new TypeReference>() { - }); - log.setRequestBodyN(map); - - } - if (StringUtils.isNotBlank(minBoxLog.getResponseBody())) { - JSONObject jsonObject = JSONObject.parseObject(minBoxLog.getResponseBody()); - Map map = JSONObject.parseObject(jsonObject.toJSONString(), new TypeReference>() { - }); - log.setResponseBodyN(map); - } - log.setHttpStatus(minBoxLog.getHttpStatus()); - BeanUtil.copyProperties(minBoxLog, log); -// logger.info("Request Uri:{}, Logging:\n{}", minBoxLog.getRequestUri(), this.loggingFactoryBean.isFormatConsoleLog() ? JsonUtils.beautifyJson(minBoxLog) : JsonUtils.toJsonString(minBoxLog)); - logger.info("Logging:\n{}", this.loggingFactoryBean.isFormatConsoleLog() ? JsonUtils.beautifyJson(log) : JsonUtils.toJsonString(log)); - logger.info("====接口结束"); - } - - } - - @Override - public int getOrder() { - return -2147483648; - } -} diff --git a/yxt-parent/pom.xml b/yxt-parent/pom.xml index 49da0ff..5bef1c7 100644 --- a/yxt-parent/pom.xml +++ b/yxt-parent/pom.xml @@ -400,15 +400,6 @@ - - - org.minbox.framework - api-boot-dependencies - 2.3.3.RELEASE - pom - import - - From 04b2746101b24e84ad53210290f1791c969bb888 Mon Sep 17 00:00:00 2001 From: dimengzhe <251008545@qq.com> Date: Mon, 15 Aug 2022 15:34:15 +0800 Subject: [PATCH 05/24] =?UTF-8?q?=E4=BC=98=E5=8C=96jacob=E7=94=9F=E6=88=90?= =?UTF-8?q?word=E8=BD=ACpdf=E8=B6=85=E6=97=B6=E9=97=AE=E9=A2=98=E4=BB=A5?= =?UTF-8?q?=E5=8F=8A=E6=9B=B4=E6=94=B9=E5=AD=98=E6=94=BE=E5=9C=B0=E7=82=B9?= =?UTF-8?q?=E5=8F=98=E6=9B=B4=E7=9A=84=E5=87=BA=E9=97=A8=E8=AF=81=E6=A8=A1?= =?UTF-8?q?=E6=9D=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/yxt/common/base/utils/WordUtils.java | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/yxt-common/yxt-common-base/src/main/java/com/yxt/common/base/utils/WordUtils.java b/yxt-common/yxt-common-base/src/main/java/com/yxt/common/base/utils/WordUtils.java index f69f674..4649be4 100644 --- a/yxt-common/yxt-common-base/src/main/java/com/yxt/common/base/utils/WordUtils.java +++ b/yxt-common/yxt-common-base/src/main/java/com/yxt/common/base/utils/WordUtils.java @@ -1,7 +1,9 @@ package com.yxt.common.base.utils; import com.jacob.activeX.ActiveXComponent; +import com.jacob.com.ComThread; import com.jacob.com.Dispatch; +import com.jacob.com.Variant; import freemarker.template.Configuration; import freemarker.template.Template; import freemarker.template.Version; @@ -86,13 +88,15 @@ public class WordUtils { public static void doc2pdf(String wordFile, String pdfPath, String pdfName) { ActiveXComponent app = null; System.out.println("开始转换..."); + long start = System.currentTimeMillis(); + Dispatch document = null; try { // 打开word app = new ActiveXComponent("Word.Application"); // 获得word中所有打开的文档 Dispatch documents = app.getProperty("Documents").toDispatch(); // 打开文档 - Dispatch document = Dispatch.call(documents, "Open", wordFile, false, true).toDispatch(); + document = Dispatch.call(documents, "Open", wordFile, false, true).toDispatch(); // 如果文件存在的话,不会覆盖,会直接报错,所以我们需要判断文件是否存在 File targetFile = new File(pdfPath); if (!targetFile.exists()) { @@ -104,14 +108,21 @@ public class WordUtils { target.delete(); } Dispatch.call(document, "SaveAs", pdfFile, 17); - // 关闭文档 - Dispatch.call(document, "Close", false); + long end = System.currentTimeMillis(); + System.out.println("转换完成..用时:" + (end - start) + "ms."); } catch (Exception e) { System.out.println("转换失败" + e.getMessage()); } finally { + // 关闭文档 + Dispatch.call(document, "Close", false); // 关闭office - app.invoke("Quit", 0); +// app.invoke("Quit", 0); + System.out.println("关闭文档"); + if (app != null) + app.invoke("Quit", new Variant[]{}); } + // 如果没有这句话,winword.exe进程将不会关闭 + ComThread.Release(); } From af87a7ef0ebc9572cfdf3458e9224d84287a0867 Mon Sep 17 00:00:00 2001 From: dimengzhe <251008545@qq.com> Date: Tue, 16 Aug 2022 08:42:26 +0800 Subject: [PATCH 06/24] =?UTF-8?q?=E5=AD=98=E6=94=BE=E5=9C=B0=E7=82=B9?= =?UTF-8?q?=E5=8F=98=E6=9B=B4=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/yxt/common/base/utils/WordUtils.java | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/yxt-common/yxt-common-base/src/main/java/com/yxt/common/base/utils/WordUtils.java b/yxt-common/yxt-common-base/src/main/java/com/yxt/common/base/utils/WordUtils.java index 4649be4..59d5f69 100644 --- a/yxt-common/yxt-common-base/src/main/java/com/yxt/common/base/utils/WordUtils.java +++ b/yxt-common/yxt-common-base/src/main/java/com/yxt/common/base/utils/WordUtils.java @@ -3,7 +3,6 @@ package com.yxt.common.base.utils; import com.jacob.activeX.ActiveXComponent; import com.jacob.com.ComThread; import com.jacob.com.Dispatch; -import com.jacob.com.Variant; import freemarker.template.Configuration; import freemarker.template.Template; import freemarker.template.Version; @@ -91,6 +90,7 @@ public class WordUtils { long start = System.currentTimeMillis(); Dispatch document = null; try { + ComThread.InitSTA(); // 打开word app = new ActiveXComponent("Word.Application"); // 获得word中所有打开的文档 @@ -116,13 +116,14 @@ public class WordUtils { // 关闭文档 Dispatch.call(document, "Close", false); // 关闭office -// app.invoke("Quit", 0); + app.invoke("Quit", 0); System.out.println("关闭文档"); - if (app != null) - app.invoke("Quit", new Variant[]{}); +// if (app != null) +// app.invoke("Quit", new Variant[]{}); + // 如果没有这句话,winword.exe进程将不会关闭 + ComThread.Release(); } - // 如果没有这句话,winword.exe进程将不会关闭 - ComThread.Release(); + } From 520f76ec0569ac605156e4ac1527a32e4d294d8a Mon Sep 17 00:00:00 2001 From: dimengzhe <251008545@qq.com> Date: Thu, 18 Aug 2022 10:24:43 +0800 Subject: [PATCH 07/24] =?UTF-8?q?=E9=94=80=E5=94=AE=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E5=90=88=E5=90=8C=E7=94=9F=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../config/component/DocPdfComponent.java | 4 +- .../base/utils/MoneyToChineseUtils.java | 220 ++++++++++++++++++ 2 files changed, 223 insertions(+), 1 deletion(-) create mode 100644 yxt-common/yxt-common-base/src/main/java/com/yxt/common/base/utils/MoneyToChineseUtils.java diff --git a/yxt-common/yxt-common-base/src/main/java/com/yxt/common/base/config/component/DocPdfComponent.java b/yxt-common/yxt-common-base/src/main/java/com/yxt/common/base/config/component/DocPdfComponent.java index 0b9e8e6..3d04d0e 100644 --- a/yxt-common/yxt-common-base/src/main/java/com/yxt/common/base/config/component/DocPdfComponent.java +++ b/yxt-common/yxt-common-base/src/main/java/com/yxt/common/base/config/component/DocPdfComponent.java @@ -1,5 +1,6 @@ package com.yxt.common.base.config.component; +import cn.hutool.core.date.DateUtil; import com.jacob.activeX.ActiveXComponent; import com.jacob.com.Dispatch; import com.yxt.common.base.utils.DateUtils; @@ -43,7 +44,8 @@ public class DocPdfComponent { * @return 返回word文件路径和链接路径 */ public Map creatWord(Map map, String typeName, String fileName) { - String dateStr = DateUtils.dateConvertStr(new Date(), "yyyyMMdd"); +// String dateStr = DateUtils.dateConvertStr(new Date(), "yyyyMMdd"); + String dateStr = DateUtil.format(new Date(), "yyyyMMdd"); String targetPath = uploadTemplateUrl + dateStr; try { //Configuration 用于读取ftl文件 diff --git a/yxt-common/yxt-common-base/src/main/java/com/yxt/common/base/utils/MoneyToChineseUtils.java b/yxt-common/yxt-common-base/src/main/java/com/yxt/common/base/utils/MoneyToChineseUtils.java new file mode 100644 index 0000000..75cdfed --- /dev/null +++ b/yxt-common/yxt-common-base/src/main/java/com/yxt/common/base/utils/MoneyToChineseUtils.java @@ -0,0 +1,220 @@ +package com.yxt.common.base.utils; + +import java.math.BigDecimal; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +/** + * @Author dimengzhe + * @Date 2022/8/17 11:26 + * @Description + */ +public class MoneyToChineseUtils { + + /** + * 不考虑分隔符的正确性 + */ + private static final Pattern AMOUNT_PATTERN = Pattern.compile("^(0|[1-9]\\d{0,11})\\.(\\d\\d)$"); + private static final char[] RMB_NUMS = "零壹贰叁肆伍陆柒捌玖".toCharArray(); + private static final String[] UNITS = {"元", "角", "分", "整"}; + private static final String[] U1 = {"", "拾", "佰", "仟"}; + private static final String[] U2 = {"", "万", "亿"}; + + /** + * 将金额(整数部分等于或少于12位,小数部分2位)转换为中文大写形式. + * + * @param money 金额数字 + * @return 中文大写 + */ + public static String convert(Double money) { + money = Math.abs(money); + if (Double.valueOf(0).equals(money)) { + return "零元整"; + } + String amount = moneyFormat(money); + // 去掉分隔符 + amount = amount.replace(",", ""); + // 验证金额正确性 + + Matcher matcher = AMOUNT_PATTERN.matcher(amount); + if (!matcher.find()) { + + } + // 整数部分 + String integer = matcher.group(1); + // 小数部分 + String fraction = matcher.group(2); + + String result = ""; + if (!integer.equals("0")) { + // 整数部分 + result += integer2rmb(integer) + UNITS[0]; + } + if (fraction.equals("00")) { + // 添加[整] + result += UNITS[3]; + } else if (fraction.startsWith("0") && integer.equals("0")) { + // 去掉分前面的[零] + result += fraction2rmb(fraction).substring(1); + } else { + // 小数部分 + result += fraction2rmb(fraction); + } + return result; + } + + /** + * 将金额小数部分转换为中文大写 + */ + private static String fraction2rmb(String fraction) { + // 角 + char jiao = fraction.charAt(0); + // 分 + char fen = fraction.charAt(1); + return (RMB_NUMS[jiao - '0'] + (jiao > '0' ? UNITS[1] : "")) + (fen > '0' ? RMB_NUMS[fen - '0'] + UNITS[2] : ""); + } + + /** + * 将金额整数部分转换为中文大写 + * + * @param integer + * @return + */ + private static String integer2rmb(String integer) { + StringBuilder buffer = new StringBuilder(); + // 从个位数开始转换 + int i, j; + for (i = integer.length() - 1, j = 0; i >= 0; i--, j++) { + char n = integer.charAt(i); + if (n == '0') { + // 当n是0且n的右边一位不是0时,插入[零] + if (i < integer.length() - 1 && integer.charAt(i + 1) != '0') { + buffer.append(RMB_NUMS[0]); + } + // 插入[万]或者[亿] + if (j % 4 == 0) { + if (i > 0 && integer.charAt(i - 1) != '0' + || i > 1 && integer.charAt(i - 2) != '0' + || i > 2 && integer.charAt(i - 3) != '0') { + buffer.append(U2[j / 4]); + } + } + } else { + if (j % 4 == 0) { + // 插入[万]或者[亿] + buffer.append(U2[j / 4]); + } + // 插入[拾]、[佰]或[仟] + buffer.append(U1[j % 4]); + // 插入数字 + buffer.append(RMB_NUMS[n - '0']); + } + } + return buffer.reverse().toString(); + } + + /** + * 对金额的格式调整到分 + * + * @param preMoney + * @return + */ + public static String moneyFormat(Double preMoney) { + //23->23.00 + String money = preMoney.toString(); + StringBuffer sb = new StringBuffer(); + if (money == null) { + return "0.00"; + } + int index = money.indexOf("."); + if (index == -1) { + return money + ".00"; + } else { + //整数部分 + String s0 = money.substring(0, index); + //小数部分 + String s1 = money.substring(index + 1); + if (s1.length() == 1) { + //小数点后一位 + s1 = s1 + "0"; + } else if (s1.length() > 2) { + //如果超过3位小数,截取2位就可以了 + s1 = s1.substring(0, 2); + } + sb.append(s0); + sb.append("."); + sb.append(s1); + } + return sb.toString(); + } + + /** + * 对金额的格式调整到分 + * + * @param preMoney + * @return + */ + public static String moneyFormat(BigDecimal preMoney) { + //23->23.00 + String money = preMoney.toString(); + StringBuffer sb = new StringBuffer(); + if (money == null) { + return "0.00"; + } + int index = money.indexOf("."); + if (index == -1) { + return money + ".00"; + } else { + //整数部分 + String s0 = money.substring(0, index); + //小数部分 + String s1 = money.substring(index + 1); + if (s1.length() == 1) { + //小数点后一位 + s1 = s1 + "0"; + } else if (s1.length() > 2) { + //如果超过3位小数,截取2位就可以了 + s1 = s1.substring(0, 2); + } + sb.append(s0); + sb.append("."); + sb.append(s1); + } + return sb.toString(); + } + + /** + * 对金额的格式调整到分 + * + * @param preMoney + * @return + */ + public static String moneyFormat(String preMoney) { + //23->23.00 + String money = preMoney; + StringBuffer sb = new StringBuffer(); + if (money == null) { + return "0.00"; + } + int index = money.indexOf("."); + if (index == -1) { + return money + ".00"; + } else { + //整数部分 + String s0 = money.substring(0, index); + //小数部分 + String s1 = money.substring(index + 1); + if (s1.length() == 1) { + //小数点后一位 + s1 = s1 + "0"; + } else if (s1.length() > 2) { + //如果超过3位小数,截取2位就可以了 + s1 = s1.substring(0, 2); + } + sb.append(s0); + sb.append("."); + sb.append(s1); + } + return sb.toString(); + } +} From dca1d3afa83f06ce18a3b09e3915c8bb35f344c8 Mon Sep 17 00:00:00 2001 From: lzh Date: Mon, 19 Sep 2022 15:55:49 +0800 Subject: [PATCH 08/24] =?UTF-8?q?=E6=9B=B4=E6=94=B9=E4=B8=BA=E5=8F=AF?= =?UTF-8?q?=E5=8F=91=E5=B8=83=E5=88=B0=E5=85=AC=E5=8F=B8Nexus=E6=9C=8D?= =?UTF-8?q?=E5=8A=A1=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- yxt-parent/pom.xml | 82 ++++++++++++++++++++++++++-------------------- 1 file changed, 46 insertions(+), 36 deletions(-) diff --git a/yxt-parent/pom.xml b/yxt-parent/pom.xml index 5bef1c7..936a96b 100644 --- a/yxt-parent/pom.xml +++ b/yxt-parent/pom.xml @@ -407,40 +407,50 @@ - - - aliyun-central - https://maven.aliyun.com/repository/central - - - aliyun-public - https://maven.aliyun.com/repository/public - - - aliyun-google - https://maven.aliyun.com/repository/google - - - aliyun-spring - https://maven.aliyun.com/repository/spring - - - - - aliyun-central - https://maven.aliyun.com/repository/central - - - aliyun-public - https://maven.aliyun.com/repository/public - - - aliyun-google - https://maven.aliyun.com/repository/google - - - aliyun-spring - https://maven.aliyun.com/repository/spring - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + nexus-releases + http://nexus3.yyundong.com/repository/yxt-mvn-releases/ + + + nexus-snapshots + http://nexus3.yyundong.com/repository/yxt-mvn-snapshot/ + + \ No newline at end of file From dfa7e8e60f3b726341b86cc2f214c9aa003a2c47 Mon Sep 17 00:00:00 2001 From: lzh Date: Tue, 20 Sep 2022 10:03:17 +0800 Subject: [PATCH 09/24] =?UTF-8?q?=E4=BF=AE=E6=94=B9pom=E5=8F=AF=E6=8F=90?= =?UTF-8?q?=E4=BA=A4=E5=88=B0Nexus?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- yxt-common/yxt-common-base/pom.xml | 11 ++++++++++- yxt-common/yxt-common-core/pom.xml | 11 +++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/yxt-common/yxt-common-base/pom.xml b/yxt-common/yxt-common-base/pom.xml index a7cc522..983decd 100644 --- a/yxt-common/yxt-common-base/pom.xml +++ b/yxt-common/yxt-common-base/pom.xml @@ -178,5 +178,14 @@ - + + + nexus-releases + http://nexus3.yyundong.com/repository/yxt-mvn-releases/ + + + nexus-snapshots + http://nexus3.yyundong.com/repository/yxt-mvn-snapshot/ + + \ No newline at end of file diff --git a/yxt-common/yxt-common-core/pom.xml b/yxt-common/yxt-common-core/pom.xml index 6c478d1..fb286d8 100644 --- a/yxt-common/yxt-common-core/pom.xml +++ b/yxt-common/yxt-common-core/pom.xml @@ -55,4 +55,15 @@ 1.2.73 + + + + nexus-releases + http://nexus3.yyundong.com/repository/yxt-mvn-releases/ + + + nexus-snapshots + http://nexus3.yyundong.com/repository/yxt-mvn-snapshot/ + + \ No newline at end of file From 6583c87c55124e1ff5959fa0c6551c36aa2e1e2e Mon Sep 17 00:00:00 2001 From: lzh Date: Tue, 20 Sep 2022 16:20:14 +0800 Subject: [PATCH 10/24] =?UTF-8?q?=E6=B5=8B=E8=AF=95jenkins-0001?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- yxt-common/yxt-common-base/pom.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/yxt-common/yxt-common-base/pom.xml b/yxt-common/yxt-common-base/pom.xml index 983decd..df87896 100644 --- a/yxt-common/yxt-common-base/pom.xml +++ b/yxt-common/yxt-common-base/pom.xml @@ -12,6 +12,7 @@ com.yxt yxt-common-base 0.0.1 + test001 From 5debff1b42470b53e178644997c2943f4cb6367d Mon Sep 17 00:00:00 2001 From: lzh Date: Tue, 20 Sep 2022 17:42:28 +0800 Subject: [PATCH 11/24] =?UTF-8?q?=E6=9B=B4=E6=94=B9=E4=B8=BA=E5=8F=AF?= =?UTF-8?q?=E5=8F=91=E5=B8=83=E5=88=B0=E5=85=AC=E5=8F=B8Nexus=E6=9C=8D?= =?UTF-8?q?=E5=8A=A1=E5=99=A8cs11?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- yxt-parent/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/yxt-parent/pom.xml b/yxt-parent/pom.xml index 936a96b..e729ce5 100644 --- a/yxt-parent/pom.xml +++ b/yxt-parent/pom.xml @@ -9,7 +9,7 @@ 0.0.1 pom 根项目yxt-parent - 宇信通框架的根项目,用来维护使用到依赖库的版本。各子项目或独立项目都应 + 宇信通框架的根项目,用来维护使用到依赖库的版本。各子项目或独立项目都应111 From e3efcfc89d63bff3cd4e93d7281eb5714a0d3230 Mon Sep 17 00:00:00 2001 From: lzh Date: Tue, 20 Sep 2022 17:52:11 +0800 Subject: [PATCH 12/24] =?UTF-8?q?=E6=B5=8B=E8=AF=95jenkins-0002?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- yxt-common/yxt-common-base/pom.xml | 2 +- yxt-common/yxt-common-core/pom.xml | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/yxt-common/yxt-common-base/pom.xml b/yxt-common/yxt-common-base/pom.xml index df87896..ddf60f1 100644 --- a/yxt-common/yxt-common-base/pom.xml +++ b/yxt-common/yxt-common-base/pom.xml @@ -12,7 +12,7 @@ com.yxt yxt-common-base 0.0.1 - test001 + yxt-common-base===test001 diff --git a/yxt-common/yxt-common-core/pom.xml b/yxt-common/yxt-common-core/pom.xml index fb286d8..3eb17d2 100644 --- a/yxt-common/yxt-common-core/pom.xml +++ b/yxt-common/yxt-common-core/pom.xml @@ -13,6 +13,7 @@ com.yxt yxt-common-core 0.0.1 + yxt-common-core===test001 From a62c05888b926a17c092f73af0c418fc6d08fa4d Mon Sep 17 00:00:00 2001 From: lzh Date: Tue, 20 Sep 2022 18:34:39 +0800 Subject: [PATCH 13/24] yxt-common-base===test0022 --- yxt-common/yxt-common-base/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/yxt-common/yxt-common-base/pom.xml b/yxt-common/yxt-common-base/pom.xml index ddf60f1..d5db548 100644 --- a/yxt-common/yxt-common-base/pom.xml +++ b/yxt-common/yxt-common-base/pom.xml @@ -12,7 +12,7 @@ com.yxt yxt-common-base 0.0.1 - yxt-common-base===test001 + yxt-common-base===test0022 From eb85e21ebf61f5832d6e6a6f497b658214ef2eee Mon Sep 17 00:00:00 2001 From: lzh Date: Tue, 20 Sep 2022 18:37:37 +0800 Subject: [PATCH 14/24] yxt-common-base===test0022 --- yxt-common/yxt-common-core/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/yxt-common/yxt-common-core/pom.xml b/yxt-common/yxt-common-core/pom.xml index 3eb17d2..d4f5d4f 100644 --- a/yxt-common/yxt-common-core/pom.xml +++ b/yxt-common/yxt-common-core/pom.xml @@ -13,7 +13,7 @@ com.yxt yxt-common-core 0.0.1 - yxt-common-core===test001 + yxt-common-core===test00bbbbb From 501f93d5334db249f2d96f437e772851bcd056d5 Mon Sep 17 00:00:00 2001 From: lzh Date: Wed, 21 Sep 2022 16:09:28 +0800 Subject: [PATCH 15/24] =?UTF-8?q?yxt-common-base=EF=BC=8C=E7=94=B1Jenkins?= =?UTF-8?q?=E8=87=AA=E5=8A=A8=E6=9E=84=E5=BB=BA=E5=92=8C=E5=8F=91=E5=B8=83?= =?UTF-8?q?=E5=88=B0Nexus?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- yxt-common/yxt-common-base/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/yxt-common/yxt-common-base/pom.xml b/yxt-common/yxt-common-base/pom.xml index d5db548..61e3f9f 100644 --- a/yxt-common/yxt-common-base/pom.xml +++ b/yxt-common/yxt-common-base/pom.xml @@ -12,7 +12,7 @@ com.yxt yxt-common-base 0.0.1 - yxt-common-base===test0022 + yxt-common-base From 22d3aca3ca1ef91c3db19378006bc5a55e78079d Mon Sep 17 00:00:00 2001 From: lzh Date: Wed, 21 Sep 2022 16:15:35 +0800 Subject: [PATCH 16/24] =?UTF-8?q?JDK9=E4=BB=A5=E4=B8=8A=E7=A7=BB=E9=99=A4?= =?UTF-8?q?=E4=BA=86JAXB=E5=BA=93=EF=BC=8C=E5=9C=A8pom.xml=E4=B8=AD?= =?UTF-8?q?=E5=BC=95=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- yxt-common/yxt-common-base/pom.xml | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/yxt-common/yxt-common-base/pom.xml b/yxt-common/yxt-common-base/pom.xml index 61e3f9f..ff5d339 100644 --- a/yxt-common/yxt-common-base/pom.xml +++ b/yxt-common/yxt-common-base/pom.xml @@ -176,7 +176,26 @@ jacob 1.18 - + + javax.xml.bind + jaxb-api + 2.3.0 + + + com.sun.xml.bind + jaxb-impl + 2.3.0 + + + org.glassfish.jaxb + jaxb-runtime + 2.3.0 + + + javax.activation + activation + 1.1.1 + From 3fc27a74e8244f58a6dc101e22fb87c61f125616 Mon Sep 17 00:00:00 2001 From: lzh Date: Wed, 21 Sep 2022 16:30:58 +0800 Subject: [PATCH 17/24] =?UTF-8?q?=E5=8E=BB=E6=8E=89sun.misc.BASE64Encoder?= =?UTF-8?q?=EF=BC=8C=E4=BD=BF=E7=94=A8cn.hutool.core.codec.Base64=E4=BB=A3?= =?UTF-8?q?=E6=9B=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/yxt/common/base/config/captcha/ImageUtils.java | 7 +++---- .../base/config/captcha/factory/impl/AbstractCaptcha.java | 5 ++--- .../config/captcha/factory/impl/BlockPuzzleCaptcha.java | 7 +++---- .../yxt/common/base/config/component/DocPdfComponent.java | 5 ++--- .../src/main/java/com/yxt/common/base/utils/WordUtils.java | 5 ++--- 5 files changed, 12 insertions(+), 17 deletions(-) diff --git a/yxt-common/yxt-common-base/src/main/java/com/yxt/common/base/config/captcha/ImageUtils.java b/yxt-common/yxt-common-base/src/main/java/com/yxt/common/base/config/captcha/ImageUtils.java index aa3837f..32c65d6 100644 --- a/yxt-common/yxt-common-base/src/main/java/com/yxt/common/base/config/captcha/ImageUtils.java +++ b/yxt-common/yxt-common-base/src/main/java/com/yxt/common/base/config/captcha/ImageUtils.java @@ -1,9 +1,8 @@ package com.yxt.common.base.config.captcha; - +import cn.hutool.core.codec.Base64; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; -import sun.misc.BASE64Decoder; import java.io.*; @@ -89,12 +88,12 @@ public class ImageUtils { return false; } - BASE64Decoder decoder = new BASE64Decoder(); +// BASE64Decoder decoder = new BASE64Decoder(); OutputStream out = null; try { out = new FileOutputStream(imgFilePath); // Base64解码 - byte[] b = decoder.decodeBuffer(imgData); + byte[] b = Base64.decode(imgData); for (int i = 0; i < b.length; ++i) { // 调整异常数据 if (b[i] < 0) { diff --git a/yxt-common/yxt-common-base/src/main/java/com/yxt/common/base/config/captcha/factory/impl/AbstractCaptcha.java b/yxt-common/yxt-common-base/src/main/java/com/yxt/common/base/config/captcha/factory/impl/AbstractCaptcha.java index f65b502..79bc25f 100644 --- a/yxt-common/yxt-common-base/src/main/java/com/yxt/common/base/config/captcha/factory/impl/AbstractCaptcha.java +++ b/yxt-common/yxt-common-base/src/main/java/com/yxt/common/base/config/captcha/factory/impl/AbstractCaptcha.java @@ -1,10 +1,10 @@ package com.yxt.common.base.config.captcha.factory.impl; +import cn.hutool.core.codec.Base64; import com.yxt.common.base.config.captcha.CaptchaBaseParam; import com.yxt.common.base.config.captcha.CaptchaException; import com.yxt.common.core.vo.CaptchaBaseVO; import org.apache.commons.lang3.StringUtils; -import sun.misc.BASE64Encoder; import javax.imageio.ImageIO; import java.awt.*; @@ -75,8 +75,7 @@ public abstract class AbstractCaptcha { throw new CaptchaException("ImageIO.write is error", e); } byte[] bytes = baos.toByteArray(); - BASE64Encoder encoder = new sun.misc.BASE64Encoder(); - return encoder.encodeBuffer(bytes).trim(); + return Base64.encode(bytes).trim(); } public String getJigsawUrlOrPath() { diff --git a/yxt-common/yxt-common-base/src/main/java/com/yxt/common/base/config/captcha/factory/impl/BlockPuzzleCaptcha.java b/yxt-common/yxt-common-base/src/main/java/com/yxt/common/base/config/captcha/factory/impl/BlockPuzzleCaptcha.java index 615b556..e7fea2e 100644 --- a/yxt-common/yxt-common-base/src/main/java/com/yxt/common/base/config/captcha/factory/impl/BlockPuzzleCaptcha.java +++ b/yxt-common/yxt-common-base/src/main/java/com/yxt/common/base/config/captcha/factory/impl/BlockPuzzleCaptcha.java @@ -1,12 +1,12 @@ package com.yxt.common.base.config.captcha.factory.impl; +import cn.hutool.core.codec.Base64; import com.alibaba.fastjson.JSON; import com.yxt.common.base.config.captcha.CaptchaBaseParam; import com.yxt.common.base.config.captcha.CaptchaException; import com.yxt.common.core.vo.BlockPuzzleCaptchaVO; import com.yxt.common.core.vo.CaptchaBaseVO; import org.apache.commons.lang3.StringUtils; -import sun.misc.BASE64Encoder; import javax.imageio.ImageIO; import java.awt.*; @@ -87,10 +87,9 @@ public class BlockPuzzleCaptcha extends AbstractCaptcha { // 源图生成遮罩 byte[] oriCopyImages = DealOriPictureByTemplate(originalImage, jigsawImage, x, 0); - BASE64Encoder encoder = new sun.misc.BASE64Encoder(); - dataVO.setOriginalImageBase64(encoder.encode(oriCopyImages)); + dataVO.setOriginalImageBase64(Base64.encode(oriCopyImages)); dataVO.setPoint(point); - dataVO.setJigsawImageBase64(encoder.encode(jigsawImages)); + dataVO.setJigsawImageBase64(Base64.encode(jigsawImages)); return dataVO; } catch (Exception e){ throw new CaptchaException(e); diff --git a/yxt-common/yxt-common-base/src/main/java/com/yxt/common/base/config/component/DocPdfComponent.java b/yxt-common/yxt-common-base/src/main/java/com/yxt/common/base/config/component/DocPdfComponent.java index 3d04d0e..1ae2d8f 100644 --- a/yxt-common/yxt-common-base/src/main/java/com/yxt/common/base/config/component/DocPdfComponent.java +++ b/yxt-common/yxt-common-base/src/main/java/com/yxt/common/base/config/component/DocPdfComponent.java @@ -1,5 +1,6 @@ package com.yxt.common.base.config.component; +import cn.hutool.core.codec.Base64; import cn.hutool.core.date.DateUtil; import com.jacob.activeX.ActiveXComponent; import com.jacob.com.Dispatch; @@ -11,7 +12,6 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; -import sun.misc.BASE64Encoder; import java.io.*; import java.util.Date; @@ -94,8 +94,7 @@ public class DocPdfComponent { } catch (Exception e) { e.printStackTrace(); } - BASE64Encoder encoder = new BASE64Encoder(); - return encoder.encode(data); + return Base64.encode(data); } /** diff --git a/yxt-common/yxt-common-base/src/main/java/com/yxt/common/base/utils/WordUtils.java b/yxt-common/yxt-common-base/src/main/java/com/yxt/common/base/utils/WordUtils.java index 59d5f69..15a7bae 100644 --- a/yxt-common/yxt-common-base/src/main/java/com/yxt/common/base/utils/WordUtils.java +++ b/yxt-common/yxt-common-base/src/main/java/com/yxt/common/base/utils/WordUtils.java @@ -1,12 +1,12 @@ package com.yxt.common.base.utils; +import cn.hutool.core.codec.Base64; import com.jacob.activeX.ActiveXComponent; import com.jacob.com.ComThread; import com.jacob.com.Dispatch; import freemarker.template.Configuration; import freemarker.template.Template; import freemarker.template.Version; -import sun.misc.BASE64Encoder; import java.io.*; import java.util.*; @@ -73,8 +73,7 @@ public class WordUtils { } catch (Exception e) { e.printStackTrace(); } - BASE64Encoder encoder = new BASE64Encoder(); - return encoder.encode(data); + return Base64.encode(data); } /** From 66606c3366b7474dd69a7c14a0e8ecc576b3bb48 Mon Sep 17 00:00:00 2001 From: lzh Date: Wed, 21 Sep 2022 16:42:44 +0800 Subject: [PATCH 18/24] =?UTF-8?q?=E7=94=B1Jenkins=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E6=9E=84=E5=BB=BA=E5=92=8C=E5=8F=91=E5=B8=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- yxt-parent/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/yxt-parent/pom.xml b/yxt-parent/pom.xml index e729ce5..2bc0b5f 100644 --- a/yxt-parent/pom.xml +++ b/yxt-parent/pom.xml @@ -9,7 +9,7 @@ 0.0.1 pom 根项目yxt-parent - 宇信通框架的根项目,用来维护使用到依赖库的版本。各子项目或独立项目都应111 + 宇信通框架的根项目,用来维护使用到依赖库的版本。各子项目或独立项目都应统一版本 From b261921bccf393d22d96d06203391ec96bf33f2f Mon Sep 17 00:00:00 2001 From: dimengzhe <251008545@qq.com> Date: Wed, 21 Sep 2022 23:00:26 +0800 Subject: [PATCH 19/24] =?UTF-8?q?=E5=90=88=E5=90=8C=E9=97=AE=E9=A2=98?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../base/config/component/DocPdfComponent.java | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/yxt-common/yxt-common-base/src/main/java/com/yxt/common/base/config/component/DocPdfComponent.java b/yxt-common/yxt-common-base/src/main/java/com/yxt/common/base/config/component/DocPdfComponent.java index 1ae2d8f..505ec44 100644 --- a/yxt-common/yxt-common-base/src/main/java/com/yxt/common/base/config/component/DocPdfComponent.java +++ b/yxt-common/yxt-common-base/src/main/java/com/yxt/common/base/config/component/DocPdfComponent.java @@ -38,9 +38,9 @@ public class DocPdfComponent { /** * 根据ftl模板生成word * - * @param map 数据 - * @param typeName 模板名称 - * @param fileName 文件名 + * @param map 数据 + * @param typeName 模板名称 + * @param fileName 文件名 * @return 返回word文件路径和链接路径 */ public Map creatWord(Map map, String typeName, String fileName) { @@ -79,6 +79,7 @@ public class DocPdfComponent { /** * 图片文件转换 + * * @param imgPath * @return */ @@ -99,6 +100,7 @@ public class DocPdfComponent { /** * word转换为pdf + * * @param wordFile word的路径 * @param pdfName pdf名称 * @return 返回pdf文件路径和链接路径 @@ -129,8 +131,10 @@ public class DocPdfComponent { Dispatch.call(document, "SaveAs", pdfFile, 17); // 关闭文档 Dispatch.call(document, "Close", false); - String prefixUrl = prefixTemplateUrl + pdfFile.replace(uploadTemplateUrl, ""); +// String prefixUrl = prefixTemplateUrl + pdfFile.replace(uploadTemplateUrl, ""); resultMap.put("uploadTemplateUrl", pdfFile); // 文件路径 + pdfFile = targetPath + "/" + pdfName; + String prefixUrl = prefixTemplateUrl + pdfFile.replace(uploadTemplateUrl, ""); resultMap.put("prefixTemplateUrl", prefixUrl); // 链接路径 } catch (Exception e) { log.error("转换失败" + e.getMessage()); @@ -143,6 +147,7 @@ public class DocPdfComponent { /** * 根据ftl模板生成word并转为pdf + * * @param map * @param typeName * @param docName From 1ba7e1f530d00fb05a825f73306689303df37bca Mon Sep 17 00:00:00 2001 From: lzh Date: Tue, 27 Sep 2022 16:05:28 +0800 Subject: [PATCH 20/24] =?UTF-8?q?lombok=E7=89=88=E6=9C=AC=E5=8D=87?= =?UTF-8?q?=E4=B8=BA1.18.24?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- yxt-parent/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/yxt-parent/pom.xml b/yxt-parent/pom.xml index 2bc0b5f..58a8876 100644 --- a/yxt-parent/pom.xml +++ b/yxt-parent/pom.xml @@ -69,7 +69,7 @@ 5.4.0 6.0.20.Final - 1.18.12 + 1.18.24 3.1.0 3.10.1 2.2.9.RELEASE From db8b5e928cbc62f180c9a184b319b95082a5ce26 Mon Sep 17 00:00:00 2001 From: dimengzhe <251008545@qq.com> Date: Wed, 28 Sep 2022 16:32:02 +0800 Subject: [PATCH 21/24] =?UTF-8?q?=E8=8E=B7=E5=8F=96=E5=A7=93=E5=90=8D?= =?UTF-8?q?=E7=9A=84=E9=A6=96=E5=AD=97=E6=AF=8D=E5=B7=A5=E5=85=B7=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../base/utils/HanZiConverterPinYin.java | 204 ++++++++++++++++++ 1 file changed, 204 insertions(+) create mode 100644 yxt-common/yxt-common-base/src/main/java/com/yxt/common/base/utils/HanZiConverterPinYin.java diff --git a/yxt-common/yxt-common-base/src/main/java/com/yxt/common/base/utils/HanZiConverterPinYin.java b/yxt-common/yxt-common-base/src/main/java/com/yxt/common/base/utils/HanZiConverterPinYin.java new file mode 100644 index 0000000..6428fa9 --- /dev/null +++ b/yxt-common/yxt-common-base/src/main/java/com/yxt/common/base/utils/HanZiConverterPinYin.java @@ -0,0 +1,204 @@ +package com.yxt.common.base.utils; + +import lombok.AllArgsConstructor; +import lombok.Data; +import org.apache.commons.lang3.StringUtils; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @Author dimengzhe + * @Date 2022/9/28 15:54 + * @Description + */ +public class HanZiConverterPinYin { + + public HanZiConverterPinYin() { + // 初始化汉字拼音字母对照表 + initChinesePinyinComparisonMapList(); + } + + /** + * 汉字拼音字母对照表 + */ + private List chinesePinyinComparisonMapList; + + /** + * 初始化汉字拼音字母对照表 + */ + private void initChinesePinyinComparisonMapList() { + chinesePinyinComparisonMapList = new ArrayList(); + + chinesePinyinComparisonMapList.add(new ChinesePinyinComparisonMap(-20319, -20284, 'A')); + chinesePinyinComparisonMapList.add(new ChinesePinyinComparisonMap(-20283, -19776, 'B')); + chinesePinyinComparisonMapList.add(new ChinesePinyinComparisonMap(-19775, -19219, 'C')); + chinesePinyinComparisonMapList.add(new ChinesePinyinComparisonMap(-19218, -18711, 'D')); + chinesePinyinComparisonMapList.add(new ChinesePinyinComparisonMap(-18710, -18527, 'E')); + chinesePinyinComparisonMapList.add(new ChinesePinyinComparisonMap(-18526, -18240, 'F')); + chinesePinyinComparisonMapList.add(new ChinesePinyinComparisonMap(-18239, -17923, 'G')); + chinesePinyinComparisonMapList.add(new ChinesePinyinComparisonMap(-17922, -17418, 'H')); + chinesePinyinComparisonMapList.add(new ChinesePinyinComparisonMap(-17417, -16475, 'J')); + chinesePinyinComparisonMapList.add(new ChinesePinyinComparisonMap(-16474, -16213, 'K')); + chinesePinyinComparisonMapList.add(new ChinesePinyinComparisonMap(-16212, -15641, 'L')); + chinesePinyinComparisonMapList.add(new ChinesePinyinComparisonMap(-15640, -15166, 'M')); + chinesePinyinComparisonMapList.add(new ChinesePinyinComparisonMap(-15165, -14923, 'N')); + chinesePinyinComparisonMapList.add(new ChinesePinyinComparisonMap(-14922, -14915, 'O')); + chinesePinyinComparisonMapList.add(new ChinesePinyinComparisonMap(-14914, -14631, 'P')); + chinesePinyinComparisonMapList.add(new ChinesePinyinComparisonMap(-14630, -14150, 'Q')); + chinesePinyinComparisonMapList.add(new ChinesePinyinComparisonMap(-14149, -14091, 'R')); + chinesePinyinComparisonMapList.add(new ChinesePinyinComparisonMap(-14090, -13319, 'S')); + chinesePinyinComparisonMapList.add(new ChinesePinyinComparisonMap(-13318, -12839, 'T')); + chinesePinyinComparisonMapList.add(new ChinesePinyinComparisonMap(-12838, -12557, 'W')); + chinesePinyinComparisonMapList.add(new ChinesePinyinComparisonMap(-12556, -11848, 'X')); + chinesePinyinComparisonMapList.add(new ChinesePinyinComparisonMap(-11847, -11056, 'Y')); + chinesePinyinComparisonMapList.add(new ChinesePinyinComparisonMap(-11055, -10247, 'Z')); + } + + /** + * 遍历获取首字母 + */ + public char getPY(char c) throws Exception { + byte[] bytes = String.valueOf(c).getBytes("GBK"); + + //双字节汉字处理 + if (bytes.length == 2) { + + int hightByte = 256 + bytes[0]; + int lowByte = 256 + bytes[1]; + int asc = (256 * hightByte + lowByte) - 256 * 256; + + // 遍历转换 + for (ChinesePinyinComparisonMap map : this.chinesePinyinComparisonMapList) { + if (asc >= map.getSAscll() && asc <= map.getEAscll()) { + return map.getCode(); + } + } + } + + // 单字节或其他直接输入,不执行编码 + return c; + } + + /** + * 获取汉字拼音 + */ + public String getHanZiPY(String str) { + try { + StringBuilder pyStrBd = new StringBuilder(); + + for (char c : str.toCharArray()) { + pyStrBd.append(getPY(c)); + } + + return pyStrBd.toString(); + } catch (Exception e) { + e.printStackTrace(); + } + + return null; + } + + + /** + * 汉字拼音字母对照类 + */ + @Data + @AllArgsConstructor + private class ChinesePinyinComparisonMap { + // 区间开头 + private int sAscll; + + // 区间结尾 + private int eAscll; + + // 对应字母 + private char code; + } + + private static final Map DYZMAP = setDYZMap(); + + private static Map setDYZMap() { + Map map = new HashMap<>(); + map.put("仇", "QIU"); + map.put("柏", "BO"); + map.put("牟", "MU"); + map.put("颉", "XIE"); + map.put("解", "XIE"); + map.put("尉", "YU"); + map.put("奇", "JI"); + map.put("单", "SHAN"); + map.put("谌", "SHEN"); + map.put("乐", "YUE"); + map.put("召", "SHAO"); + map.put("朴", "PIAO"); + map.put("区", "OU"); + map.put("查", "ZHA"); + map.put("曾", "ZENG"); + map.put("缪", "MIAO"); + map.put("晟", "CHENG"); + map.put("员", "YUN"); + map.put("贠", "YUN"); + map.put("黑", "HE"); + map.put("重", "CHONG"); + map.put("秘", "BI"); + map.put("冼", "XIAN"); + map.put("折", "SHE"); + map.put("翟", "ZHAI"); + map.put("盖", "GE"); + map.put("万俟", "MOQI"); + map.put("尉迟", "YUCHI"); + return map; + } + + public String getPinYinFirst(String str) { + HanZiConverterPinYin hanZiConverterPinYin = new HanZiConverterPinYin(); + char firstChar = str.toCharArray()[0]; + String firstString = ""; + if (Character.toString(firstChar).matches("^[\u4e00-\u9fa5]+$")) { // 为中文 + char[] charPinYinChar = PinYinUtils.getCharPinYinChar(firstChar); + String result = ""; + if (DYZMAP.containsKey(Character.toString(firstChar))) { + result = DYZMAP.get(Character.toString(firstChar)).toString().substring(0, 1); + } else { + result = StringUtils.join(charPinYinChar[0]); + } + firstString = result.toUpperCase(); + } else if (Character.toString(firstChar).matches("^[a-zA-Z]")) { // 为英文字母 + firstString = Character.toString(firstChar).toUpperCase(); + } + + String code = hanZiConverterPinYin.getHanZiPY(str); + StringBuffer buffer = new StringBuffer(code); + code = buffer.replace(0, 1, firstString).toString(); + System.out.println(code); + return code; + } + + //测试 + public static void main(String[] args) { + HanZiConverterPinYin hanZiConverterPinYin = new HanZiConverterPinYin(); + String str = "仇闪"; + char firstChar = str.toCharArray()[0]; + String firstString = ""; + if (Character.toString(firstChar).matches("^[\u4e00-\u9fa5]+$")) { // 为中文 + char[] charPinYinChar = PinYinUtils.getCharPinYinChar(firstChar); + String result = ""; + if (DYZMAP.containsKey(Character.toString(firstChar))) { + result = DYZMAP.get(Character.toString(firstChar)).toString().substring(0, 1); + } else { + result = StringUtils.join(charPinYinChar[0]); + } + firstString = result.toUpperCase(); + } else if (Character.toString(firstChar).matches("^[a-zA-Z]")) { // 为英文字母 + firstString = Character.toString(firstChar).toUpperCase(); + } + + String code = hanZiConverterPinYin.getHanZiPY(str); + StringBuffer buffer = new StringBuffer(code); + code = buffer.replace(0, 1, firstString).toString(); + System.out.println(code); + } +} From ffd664be3035f9e3309e8f8b30ee02a652535d15 Mon Sep 17 00:00:00 2001 From: dimengzhe <251008545@qq.com> Date: Thu, 29 Sep 2022 10:09:17 +0800 Subject: [PATCH 22/24] =?UTF-8?q?=E4=B8=AD=E4=BB=8B=E4=BA=BA=E5=91=98?= =?UTF-8?q?=E4=BB=A5=E5=8F=8A=E5=AE=A2=E6=88=B7=E6=B7=BB=E5=8A=A0=E7=BC=96?= =?UTF-8?q?=E7=A0=81=EF=BC=8C=E5=A7=93=E5=90=8D=E9=A6=96=E5=AD=97=E6=AF=8D?= =?UTF-8?q?=E5=8A=A0=E6=89=8B=E6=9C=BA=E5=8F=B7=E8=A7=84=E5=88=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/yxt/common/base/utils/HanZiConverterPinYin.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/yxt-common/yxt-common-base/src/main/java/com/yxt/common/base/utils/HanZiConverterPinYin.java b/yxt-common/yxt-common-base/src/main/java/com/yxt/common/base/utils/HanZiConverterPinYin.java index 6428fa9..cc3bf1c 100644 --- a/yxt-common/yxt-common-base/src/main/java/com/yxt/common/base/utils/HanZiConverterPinYin.java +++ b/yxt-common/yxt-common-base/src/main/java/com/yxt/common/base/utils/HanZiConverterPinYin.java @@ -153,7 +153,7 @@ public class HanZiConverterPinYin { return map; } - public String getPinYinFirst(String str) { + public static String getPinYinFirst(String str) { HanZiConverterPinYin hanZiConverterPinYin = new HanZiConverterPinYin(); char firstChar = str.toCharArray()[0]; String firstString = ""; From cab8ba70098a1d0c0183c99cedde07a966dc914b Mon Sep 17 00:00:00 2001 From: dimengzhe <251008545@qq.com> Date: Fri, 7 Oct 2022 20:27:10 +0800 Subject: [PATCH 23/24] =?UTF-8?q?pc=E7=AB=AF=E4=BB=98=E6=AC=BE=E7=94=B3?= =?UTF-8?q?=E8=AF=B7=E4=BB=A5=E5=8F=8A=E6=B1=89=E5=AD=97=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E9=A6=96=E5=AD=97=E6=AF=8D=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../yxt/common/base/utils/HanZiConverterPinYin.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/yxt-common/yxt-common-base/src/main/java/com/yxt/common/base/utils/HanZiConverterPinYin.java b/yxt-common/yxt-common-base/src/main/java/com/yxt/common/base/utils/HanZiConverterPinYin.java index cc3bf1c..bc61687 100644 --- a/yxt-common/yxt-common-base/src/main/java/com/yxt/common/base/utils/HanZiConverterPinYin.java +++ b/yxt-common/yxt-common-base/src/main/java/com/yxt/common/base/utils/HanZiConverterPinYin.java @@ -1,5 +1,6 @@ package com.yxt.common.base.utils; +import cn.hutool.extra.pinyin.PinyinUtil; import lombok.AllArgsConstructor; import lombok.Data; import org.apache.commons.lang3.StringUtils; @@ -170,9 +171,11 @@ public class HanZiConverterPinYin { firstString = Character.toString(firstChar).toUpperCase(); } - String code = hanZiConverterPinYin.getHanZiPY(str); +// String code = hanZiConverterPinYin.getHanZiPY(str); + String code = PinyinUtil.getFirstLetter(str, ""); StringBuffer buffer = new StringBuffer(code); code = buffer.replace(0, 1, firstString).toString(); + code = code.toUpperCase(); System.out.println(code); return code; } @@ -180,7 +183,7 @@ public class HanZiConverterPinYin { //测试 public static void main(String[] args) { HanZiConverterPinYin hanZiConverterPinYin = new HanZiConverterPinYin(); - String str = "仇闪"; + String str = "王佳琪"; char firstChar = str.toCharArray()[0]; String firstString = ""; if (Character.toString(firstChar).matches("^[\u4e00-\u9fa5]+$")) { // 为中文 @@ -196,9 +199,11 @@ public class HanZiConverterPinYin { firstString = Character.toString(firstChar).toUpperCase(); } - String code = hanZiConverterPinYin.getHanZiPY(str); +// String code = hanZiConverterPinYin.getHanZiPY(str); + String code = PinyinUtil.getFirstLetter("王佳琪", ""); //c-s StringBuffer buffer = new StringBuffer(code); code = buffer.replace(0, 1, firstString).toString(); + code = code.toUpperCase(); System.out.println(code); } } From 6ec0a7fcce8fe5e8778ac3f58d24dbd6173075d5 Mon Sep 17 00:00:00 2001 From: dimengzhe <251008545@qq.com> Date: Wed, 19 Oct 2022 08:42:18 +0800 Subject: [PATCH 24/24] =?UTF-8?q?=E5=AD=98=E6=94=BE=E5=9C=B0=E7=82=B9?= =?UTF-8?q?=E5=8F=98=E6=9B=B4=E7=94=9F=E6=88=90=E5=87=BA=E9=97=A8=E8=AF=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/base/utils/WordConvertUtils.java | 101 ++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100644 yxt-common/yxt-common-base/src/main/java/com/yxt/common/base/utils/WordConvertUtils.java diff --git a/yxt-common/yxt-common-base/src/main/java/com/yxt/common/base/utils/WordConvertUtils.java b/yxt-common/yxt-common-base/src/main/java/com/yxt/common/base/utils/WordConvertUtils.java new file mode 100644 index 0000000..dbef38f --- /dev/null +++ b/yxt-common/yxt-common-base/src/main/java/com/yxt/common/base/utils/WordConvertUtils.java @@ -0,0 +1,101 @@ +package com.yxt.common.base.utils; + +import com.jacob.activeX.ActiveXComponent; +import com.jacob.com.ComThread; +import com.jacob.com.Dispatch; +import freemarker.template.Configuration; +import freemarker.template.Template; +import freemarker.template.Version; + +import java.io.*; +import java.util.Date; +import java.util.Map; + +/** + * @Author dimengzhe + * @Date 2022/10/18 17:11 + * @Description + */ +public class WordConvertUtils { + + /** + * 根据ftl模板生成word + * + * @param map 数据 + * @param typeName 模板名称 + * @param sourcePath 模板路径 + * @param targetPath 保存目标路径 + * @param fileName 文件名 + */ + public static void creatWord(Map map, File file, String targetPath, String fileName, String dir) { + String curDate = DateUtils.dateConvertStr(new Date(), "yyyy年MM月dd日"); + try { + //Configuration 用于读取ftl文件 + Configuration configuration = new Configuration(new Version("2.3.0")); + configuration.setDefaultEncoding("utf-8"); + //指定路径的第二种方式 + configuration.setDirectoryForTemplateLoading(new File(dir)); + //输出文档路径及名称 + File targetFile = new File(targetPath); + if (!targetFile.exists()) { + targetFile.mkdirs(); + } + targetPath = targetPath + fileName; + File outFile = new File(targetPath); + //以utf-8的编码读取ftl文件 + Template template = configuration.getTemplate(file.getName(), "utf-8"); + Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile), "utf-8"), 10240); + template.process(map, out); + out.close(); + } catch (Exception e) { + e.printStackTrace(); + } + } + + /** + * word转换为pdf + * + * @param wordFile word的路径 + * @param pdfPath pdf的路径 + * @param pdfName pdf名称 + */ + public static void doc2pdf(String wordFile, String pdfPath, String pdfName) { + ActiveXComponent app = null; + System.out.println("开始转换..."); + long start = System.currentTimeMillis(); + Dispatch document = null; + try { + ComThread.InitSTA(); + // 打开word + app = new ActiveXComponent("Word.Application"); + // 获得word中所有打开的文档 + Dispatch documents = app.getProperty("Documents").toDispatch(); + // 打开文档 + document = Dispatch.call(documents, "Open", wordFile, false, true).toDispatch(); + // 如果文件存在的话,不会覆盖,会直接报错,所以我们需要判断文件是否存在 + File targetFile = new File(pdfPath); + if (!targetFile.exists()) { + targetFile.mkdirs(); + } + String pdfFile = pdfPath + pdfName; + File target = new File(pdfFile); + if (target.exists()) { + target.delete(); + } + Dispatch.call(document, "SaveAs", pdfFile, 17); + long end = System.currentTimeMillis(); + System.out.println("转换完成..用时:" + (end - start) + "ms."); + } catch (Exception e) { + System.out.println("转换失败" + e.getMessage()); + } finally { + // 关闭文档 + Dispatch.call(document, "Close", false); + // 关闭office + app.invoke("Quit", 0); + System.out.println("关闭文档"); + // 如果没有这句话,winword.exe进程将不会关闭 + ComThread.Release(); + } + + } +}