diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/FileUtils.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/FileUtils.java
index f309630863..b8a12015bb 100644
--- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/FileUtils.java
+++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/FileUtils.java
@@ -1,14 +1,18 @@
package com.epmet.commons.tools.utils;
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.io.IOUtils;
+import org.apache.commons.lang3.StringUtils;
+
+import java.io.*;
import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
/**
* @author kamui
*/
+@Slf4j
public class FileUtils {
/**
@@ -62,4 +66,50 @@ public class FileUtils {
return createTmpFile(inputStream, name, ext, null);
}
+ /**
+ * 将classpath文件复制到宿主机
+ * @param fileName
+ * @return
+ * @throws IOException
+ */
+ public static String copyClassPathResourcesToHostMachine(String fileName, String fileClassPath, String fileHostPath, Class loaderClass) throws IOException {
+ // 宿主机目录准备
+ if (StringUtils.isNotBlank(fileHostPath) && !fileHostPath.endsWith("/")) {
+ fileHostPath = fileHostPath.concat("/");
+ }
+
+ String homeDir = System.getProperty("user.home");
+ Path epmetFilesPath = Paths.get(homeDir, "epmet_files", fileHostPath);
+ if (Files.notExists(epmetFilesPath)) {
+ Files.createDirectories(epmetFilesPath);
+ }
+
+ Path templateFilePath = epmetFilesPath.resolve(fileName);
+ String templateFilePathStr = templateFilePath.toString();
+ if (Files.exists(templateFilePath)) {
+ return templateFilePathStr;
+ }
+
+ if (StringUtils.isNotBlank(fileClassPath) && !fileClassPath.endsWith("/")) {
+ fileClassPath = fileClassPath.concat("/");
+ }
+
+ // 将项目中的模板拷贝至用户家目录中
+ OutputStream os = null;
+ InputStream is = null;
+ try {
+ is = loaderClass.getClassLoader().getResourceAsStream(fileClassPath + fileName);
+ os = new FileOutputStream(templateFilePathStr);
+ IOUtils.copy(is, os);
+ } finally {
+ if (is != null) {
+ is.close();
+ }
+ if (os != null) {
+ os.close();
+ }
+ }
+ return templateFilePathStr;
+ }
+
}
diff --git a/epmet-module/epmet-heart/epmet-heart-server/pom.xml b/epmet-module/epmet-heart/epmet-heart-server/pom.xml
index b74f583763..7496a794ee 100644
--- a/epmet-module/epmet-heart/epmet-heart-server/pom.xml
+++ b/epmet-module/epmet-heart/epmet-heart-server/pom.xml
@@ -122,6 +122,16 @@
true
+
+ org.apache.maven.plugins
+ maven-resources-plugin
+
+
+ xls
+ xlsx
+
+
+
${project.basedir}/src/main/java
diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/IcCommunitySelfOrganizationController.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/IcCommunitySelfOrganizationController.java
index 0c8c8f6dc8..3220da6bdb 100644
--- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/IcCommunitySelfOrganizationController.java
+++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/IcCommunitySelfOrganizationController.java
@@ -45,12 +45,16 @@ import com.epmet.service.IcCommunitySelfOrganizationService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.io.FilenameUtils;
+import org.apache.commons.io.IOUtils;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpHeaders;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
+import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
import java.io.InputStream;
import java.util.List;
import java.util.Map;
@@ -181,6 +185,30 @@ public class IcCommunitySelfOrganizationController {
return new Result();
}
+ /**
+ * 下载社区自组织导入模板
+ * @param response
+ * @throws IOException
+ */
+ @PostMapping("import-template-download")
+ public void downloadTemplate(HttpServletResponse response) throws IOException {
+ response.setCharacterEncoding("UTF-8");
+ response.addHeader(HttpHeaders.ACCESS_CONTROL_EXPOSE_HEADERS, "Content-disposition");
+ //response.setHeader(HttpHeaders.CONTENT_TYPE, "application/vnd.ms-excel");
+ response.setHeader(HttpHeaders.CONTENT_TYPE, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
+ response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=社区自组织导入模板.xlsx");
+
+ InputStream is = this.getClass().getClassLoader().getResourceAsStream("templates/self_org_import_template.xlsx");
+ try {
+ ServletOutputStream os = response.getOutputStream();
+ IOUtils.copy(is, os);
+ } finally {
+ if (is != null) {
+ is.close();
+ }
+ }
+ }
+
/**
* @Description 添加社区自组织
* @param tokenDto
diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/templates/self_org_import_template.xlsx b/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/templates/self_org_import_template.xlsx
new file mode 100644
index 0000000000..0be67fffe7
Binary files /dev/null and b/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/templates/self_org_import_template.xlsx differ
diff --git a/epmet-module/resi-partymember/resi-partymember-server/pom.xml b/epmet-module/resi-partymember/resi-partymember-server/pom.xml
index bae2ec09fb..a15e120b72 100644
--- a/epmet-module/resi-partymember/resi-partymember-server/pom.xml
+++ b/epmet-module/resi-partymember/resi-partymember-server/pom.xml
@@ -120,6 +120,16 @@
true
+
+ org.apache.maven.plugins
+ maven-resources-plugin
+
+
+ xls
+ xlsx
+
+
+
${project.basedir}/src/main/java
diff --git a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/controller/IcPartymemberStyleController.java b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/controller/IcPartymemberStyleController.java
index 064a85c98f..585756ff48 100644
--- a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/controller/IcPartymemberStyleController.java
+++ b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/controller/IcPartymemberStyleController.java
@@ -21,10 +21,12 @@ import com.baomidou.mybatisplus.extension.api.R;
import com.epmet.commons.tools.annotation.LoginUser;
import com.epmet.commons.tools.aop.NoRepeatSubmit;
import com.epmet.commons.tools.constant.NumConstant;
+import com.epmet.commons.tools.exception.ExceptionUtils;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.ExcelUtils;
+import com.epmet.commons.tools.utils.FileUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.commons.tools.validator.group.AddGroup;
@@ -41,14 +43,21 @@ import com.epmet.resi.partymember.dto.partymember.form.StyleShowListFormDTO;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.io.FilenameUtils;
+import org.apache.commons.io.IOUtils;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpHeaders;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
+import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
-import java.io.IOException;
-import java.io.InputStream;
+import java.io.*;
+import java.net.URL;
+import java.net.URLEncoder;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@@ -173,4 +182,28 @@ public class IcPartymemberStyleController {
ValidatorUtils.validateEntity(formDTO,StyleShowListFormDTO.AddUserInternalGroup.class);
return new Result>().ok(icPartymemberStyleService.showList(formDTO));
}
+
+ /**
+ * 下载党员风采导入模板
+ * @param response
+ * @throws IOException
+ */
+ @PostMapping("import/template-download")
+ public void downloadTemplate(HttpServletResponse response) throws IOException {
+ response.setCharacterEncoding("UTF-8");
+ response.addHeader(HttpHeaders.ACCESS_CONTROL_EXPOSE_HEADERS, "Content-disposition");
+ response.setHeader(HttpHeaders.CONTENT_TYPE, "application/vnd.ms-excel");
+ response.setHeader(HttpHeaders.CONTENT_TYPE, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
+ //response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=党员风采导入模板.xlsx");
+
+ InputStream is = this.getClass().getClassLoader().getResourceAsStream("templates/party_import_template.xlsx");
+ try {
+ ServletOutputStream os = response.getOutputStream();
+ IOUtils.copy(is, os);
+ } finally {
+ if (is != null) {
+ is.close();
+ }
+ }
+ }
}
\ No newline at end of file
diff --git a/epmet-module/resi-partymember/resi-partymember-server/src/main/resources/templates/party_import_template.xlsx b/epmet-module/resi-partymember/resi-partymember-server/src/main/resources/templates/party_import_template.xlsx
new file mode 100644
index 0000000000..122a98049a
Binary files /dev/null and b/epmet-module/resi-partymember/resi-partymember-server/src/main/resources/templates/party_import_template.xlsx differ