diff --git a/pom.xml b/pom.xml
index 5cf0e96..33f8dec 100644
--- a/pom.xml
+++ b/pom.xml
@@ -81,6 +81,12 @@
6.0.1.Final
+
+ commons-fileupload
+ commons-fileupload
+ 1.4
+
+
diff --git a/src/main/java/com/gmh/config/LocalFileAutoConfig.java b/src/main/java/com/gmh/config/LocalFileAutoConfig.java
new file mode 100644
index 0000000..9a2a634
--- /dev/null
+++ b/src/main/java/com/gmh/config/LocalFileAutoConfig.java
@@ -0,0 +1,81 @@
+package com.gmh.config;
+
+import com.gmh.entity.FileEntity;
+import com.gmh.entity.properties.FileServerProperties;
+import com.gmh.service.impl.FileServiceImpl;
+import com.gmh.utils.ThrowableUtil;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.stereotype.Service;
+import org.springframework.util.ResourceUtils;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.OutputStream;
+
+@Configuration
+@ConditionalOnProperty(name = "data.file-server.type", havingValue = "local")
+public class LocalFileAutoConfig {
+
+ private final Logger logger = LoggerFactory.getLogger(LocalFileAutoConfig.class);
+
+ @Autowired
+ private FileServerProperties fileProperties;
+
+ @Bean
+ public WebMvcConfigurer webMvcConfigurerAdapter() {
+ return new WebMvcConfigurer() {
+ /**
+ * 外部文件访问
+ */
+ @Override
+ public void addResourceHandlers(ResourceHandlerRegistry registry) {
+ registry.addResourceHandler(fileProperties.getLocal().getPrefix() + "/**")
+ .addResourceLocations(ResourceUtils.FILE_URL_PREFIX + fileProperties.getLocal().getPath() + File.separator);
+ }
+ };
+ }
+
+ @Service
+ public class LocalFileServiceImpl extends FileServiceImpl {
+
+ @Override
+ protected String fileType() {
+ return fileProperties.getType();
+ }
+
+ @Override
+ protected void uploadFile(MultipartFile file, FileEntity fileEntity) {
+ String localPath = fileProperties.getLocal().getPath();
+ File parentFile = new File(localPath);
+ if (!parentFile.exists()) {
+ if (!parentFile.mkdirs()) {
+ throw new RuntimeException("创建保存路径失败");
+ }
+ }
+ fileEntity.setFilePath(localPath + File.separator + fileEntity.getFileName());
+ File dest = new File(localPath + File.separator + fileEntity.getFileName());
+ try {
+ file.transferTo(dest);
+ } catch (IOException e) {
+ logger.error("全局异常信息ex={}, StackTrace={}", e.getMessage(), ThrowableUtil.getStackTrace(e));
+ }
+ }
+
+ @Override
+ protected void deleteFile(FileEntity fileEntity) {
+ File file = new File(fileEntity.getFilePath());
+ if (file.exists()) {
+ file.delete();
+ }
+ }
+
+ }
+}
diff --git a/src/main/java/com/gmh/controller/ExcelController.java b/src/main/java/com/gmh/controller/ExcelController.java
index 1817054..1fa8ca2 100644
--- a/src/main/java/com/gmh/controller/ExcelController.java
+++ b/src/main/java/com/gmh/controller/ExcelController.java
@@ -1,31 +1,37 @@
package com.gmh.controller;
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.io.FileUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.gmh.entity.GmhUser;
-import com.gmh.entity.R;
-import com.gmh.entity.RowCellNum;
-import com.gmh.entity.SysBaijiaxing;
+import com.gmh.entity.*;
+import com.gmh.entity.properties.FileServerProperties;
+import com.gmh.entity.query.ExecuteTemplateQuery;
import com.gmh.entity.vo.ReadNameVo;
+import com.gmh.service.GmhFileLogService;
+import com.gmh.service.FileService;
import com.gmh.service.SysBaijiaxingService;
-import com.gmh.utils.CommonUtils;
+import com.gmh.utils.StringUtils;
import com.gmh.utils.POIExcelUtil;
-import com.gmh.utils.RedisUtils;
-import com.gmh.utils.RedisUtilsDefault;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import org.apache.commons.fileupload.disk.DiskFileItem;
+import org.apache.commons.fileupload.disk.DiskFileItemFactory;
+import org.apache.commons.io.IOUtils;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
-import org.apache.poi.ss.util.CellReference;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
+import org.springframework.http.MediaType;
import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.commons.CommonsMultipartFile;
import javax.servlet.http.HttpServletResponse;
-import javax.validation.constraints.Pattern;
+import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
@@ -36,11 +42,19 @@ import java.util.stream.Collectors;
@RequestMapping("/excel")
public class ExcelController {
- private Integer templateSheetNum = null;
+ @Autowired
+ private FileService fileService;
+
+ @Autowired
+ private GmhFileLogService gmhFileLogService;
+
+ @Autowired
+ private FileServerProperties fileProperties;
- private Workbook templateWorkbook = null;
+ @Autowired
+ private SysBaijiaxingService baijiaxingService;
- private List readNameVoList = null;
+ private final ExcelInfo excelInfo = new ExcelInfo();
private static final String KEY_XINGMING = "姓名";
@@ -52,57 +66,68 @@ public class ExcelController {
return R.ok("ok");
}
- @RequestMapping("/readData")
- public R readSourceData(MultipartFile file) throws IOException {
+ @RequestMapping("/dataSourceImport")
+ public R dataSourceImport(MultipartFile file, String dataSourceImportModel) throws IOException {
+ DataSourceImportModel importModel = DataSourceImportModel.findEnum(dataSourceImportModel);
Workbook workbook = POIExcelUtil.readExcelFromInputStream(file.getInputStream(), file.getOriginalFilename());
- readNameVoList = new ArrayList<>();
- for (int i = 0; i < workbook.getNumberOfSheets(); i++) {
- ReadNameVo readNameVo = new ReadNameVo();
- Sheet sheet = workbook.getSheetAt(i);
- List