@xingjs@20241224@添加解析CSV文件相关实体类、方法;添加文件上传配置;添加开发文件上传相关工具类
已修改1个文件
88 ■■■■ 文件已修改
src/main/java/com/se/simu/controller/SimuController.java 88 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/se/simu/controller/SimuController.java
@@ -12,23 +12,15 @@
import com.se.simu.service.*;
import io.swagger.annotations.*;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
import java.util.stream.Collectors;
@Api(tags = "仿真管理")
@Slf4j
@@ -50,6 +42,10 @@
    @Resource
    PropertiesConfig config;
    @Value("${simu-app.filePath}")
    private String uploadedFolder;
    @Resource
    ResultService resultService;
@@ -179,48 +175,6 @@
        }
    }
    @ApiOperation("test-上传多个文件")
    @ApiImplicitParam(name = "schemeName", value = "方案名称", required = true, dataType = "String", paramType = "query", example = "edf243d3-3bec-4c51-9930-1ba862d9b5a3", dataTypeClass = String.class)
    @PostMapping("/uploadMultipleFiles")
    public ResponseEntity<String> uploadMultipleFiles(List<MultipartFile> files, @RequestParam("schemeName") String schemeName) throws IOException {
        // 上传文件路径
        String targetDir = Paths.get(config.getOutPath(), schemeName).toString();
        log.info("目标目录: {}", targetDir);
        createDirectoriesIfNotExists(targetDir);
        List<CompletableFuture<Void>> uploadTasks = files.stream()
                .map(file -> CompletableFuture.runAsync(() -> {
                    try {
                        file.transferTo(Paths.get(targetDir, file.getOriginalFilename()));
                    } catch (IOException e) {
                        log.error("文件上传失败", e);
                        throw new RuntimeException("文件上传失败");
                    }
                }))
                .collect(Collectors.toList());
        CompletableFuture<Void> allUploadTasks = CompletableFuture.allOf(uploadTasks.toArray(new CompletableFuture[0]));
        try {
            allUploadTasks.get();
            return ResponseEntity.ok("所有文件上传成功");
        } catch (InterruptedException | ExecutionException e) {
            log.error("文件上传失败", e);
            return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("文件上传失败");
        }
    }
    /**
     * @param targetDir 目标目录
     * @throws IOException
     */
    private void createDirectoriesIfNotExists(String targetDir) throws IOException {
        Path path = Paths.get(targetDir);
        if (!Files.exists(path)) {
            Files.createDirectories(path);
        }
    }
    /**
     * 文件创建模拟
     *
@@ -229,28 +183,10 @@
     */
    @ApiOperation(value = "文件创建")
    @PostMapping(value = "/file_create", produces = "application/json; charset=UTF-8")
    public R<Object> fileCreate(List<MultipartFile> files,@RequestBody @ApiParam("创建仿真视图类") CreateSimuVo vo) throws IOException {
        // 上传文件路径
        String targetDir = Paths.get(config.getOutPath(), "files").toString();
        log.info("目标目录: {}", targetDir);
        createDirectoriesIfNotExists(targetDir);
        List<CompletableFuture<Void>> uploadTasks = files.stream()
                .map(file -> CompletableFuture.runAsync(() -> {
                    try {
                        file.transferTo(Paths.get(targetDir, file.getOriginalFilename()));
                    } catch (IOException e) {
                        log.error("文件上传失败", e);
                        throw new RuntimeException("文件上传失败");
                    }
                }))
                .collect(Collectors.toList());
        CompletableFuture<Void> allUploadTasks = CompletableFuture.allOf(uploadTasks.toArray(new CompletableFuture[0]));
        try {
            allUploadTasks.get();
            log.info("文件上传成功");
        } catch (InterruptedException | ExecutionException e) {
            log.error("文件上传失败", e);
        }
    public R<Object> fileCreate(@RequestBody @ApiParam("创建仿真视图类") CreateSimuVo vo) throws IOException {
        // 获取上传文件路径
        String targetDir = uploadedFolder;
        try {
            if (null == vo.getTotal() || vo.getTotal() < 1 || vo.getTotal() > 1000) {
@@ -301,12 +237,6 @@
            return fail(ex, null);
        }
    }
}