wuweihao 5 роки тому
батько
коміт
bc37796342

+ 23 - 47
src/main/java/com/fd/controller/DemController.java

@@ -42,31 +42,10 @@ import java.util.concurrent.atomic.AtomicInteger;
 @RestController
 public class DemController {
 
-    @Value("${input.file.path.model}")
-    private String INPUT_FILE_PATH;
-
-    @Value("${output.file.path.model}")
-    private String OUTPUT_FILE_PATH;
-
-
-    @Autowired
-    private AsyncTask asyncTask;
-
     @Autowired
     private DemServer demServer;
 
 
-    /**
-     * 队列
-     */
-    private static BlockingQueue<Integer> queue = new LinkedBlockingQueue<Integer>(2);
-
-    /**
-     * 保证线程安全的
-     */
-    private static AtomicInteger count = new AtomicInteger();
-
-
     @ApiOperation("上传文件")
     @PostMapping(value = "upload", consumes = {"multipart/form-data"})
     public R upload(@RequestParam("file") MultipartFile[] file, HttpServletRequest req) {
@@ -77,7 +56,7 @@ public class DemController {
     }
 
     /**
-     * 不做进度条的原因是:日志的进度结果是最后才出来,做的意义不大,每次出来的进度会不一样
+     * 不做进度条的原因是:日志的进度结果是最后才出来,做的意义不大
      * @param fileId 文件id
      * @return R
      */
@@ -89,6 +68,23 @@ public class DemController {
     }
 
 
+    @ApiOperation("获取数据列表")
+    @PostMapping(value = "list")
+    public R list(@RequestBody PageDto param, HttpServletRequest req) {
+        String token = req.getHeader("Authorization");
+
+        Page<OutputFileEntity> page = demServer.findByList(TypeCode.FILE_TYPE_DEM, param, token);
+        return new R(200, page);
+    }
+
+
+    @ApiOperation("进度查询")
+    @GetMapping("progress/{fileId}/")
+    public R getProgress(@PathVariable("fileId") Long fileId) {
+        OutputFileEntity entity = demServer.findById(fileId);
+        return new R(200, entity);
+    }
+
     @GetMapping("test")
     public R test(){
         demServer.test();
@@ -96,31 +92,11 @@ public class DemController {
     }
 
 
-//    @ApiOperation("获取3D模型数据列表")
-//    @PostMapping(value = "list")
-//    public R list(@RequestBody PageDto param, HttpServletRequest req) {
-//        String token = req.getHeader("Authorization");
-//
-//        Page<OutputFileEntity> page = modelServer.findByList(TypeCode.FILE_TYPE_MODEL, param, token);
-//        return new R(200, page);
-//    }
-
-
-//    @ApiOperation("删除文件")
-//    @GetMapping("delete/{fileId}/")
-//    public R deleteFile(@PathVariable("fileId") Long fileId) {
-//        log.info("run deleteFile: {}", fileId);
-//        OutputFileEntity entity = modelServer.findById(fileId);
-//        entity.setResStatus(1);
-//        modelServer.save(entity);
-//
-//        FileEntity fileEntity = modelServer.findByInputFileId(entity.getUploadId());
-//        fileEntity.setResStatus(1);
-//        modelServer.saveInputFile(fileEntity);
-//
-//        asyncTask.modelDelete(fileId, modelServer);
-//        return new R(200, MsgCode.SUCCESS);
-//    }
+    @ApiOperation("删除文件")
+    @GetMapping("delete/{fileId}/")
+    public R deleteFile(@PathVariable("fileId") Long fileId) {
+        return demServer.deleteById(fileId);
+    }
 
 
 

+ 2 - 0
src/main/java/com/fd/server/BaseServer.java

@@ -21,5 +21,7 @@ public interface BaseServer {
 
     FileEntity saveInputFile(FileEntity fileEntity);
 
+    R deleteById(Long id);
+
 
 }

+ 8 - 0
src/main/java/com/fd/server/impl/BaseServerImpl.java

@@ -1,5 +1,6 @@
 package com.fd.server.impl;
 
+import com.fd.constant.MsgCode;
 import com.fd.constant.TypeCode;
 import com.fd.constant.UserCode;
 import com.fd.dto.PageDto;
@@ -91,6 +92,13 @@ public class BaseServerImpl implements BaseServer {
         return fileRepository.save(fileEntity);
     }
 
+
+    @Override
+    public R deleteById(Long id) {
+        outputFileRepository.deleteById(id);
+        return new R(200, MsgCode.SUCCESS);
+    }
+
     @Override
     public R findByType(String type, PageDto pageDto) {
         Page<OutputFileEntity> page = outputFileRepository.findByTypeAndResStatus(type, 0,PageRequest.of(pageDto.getPageNum(), pageDto.getPageSize(), Sort.by("createTime").descending()));

+ 63 - 3
src/main/java/com/fd/server/impl/DemServerImpl.java

@@ -113,7 +113,7 @@ public class DemServerImpl extends BaseServerImpl implements DemServer {
 
             // 创建目录
             String time = DateUtil.format(new DateTime(), "yyyyMMdd_HHmmss");
-            String filePath = INPUT_PATH + time + "/";
+            String filePath = INPUT_PATH + time;
             FileUtils.createDir(filePath);
             log.info("filePath: {}", filePath);
 
@@ -125,7 +125,7 @@ public class DemServerImpl extends BaseServerImpl implements DemServer {
                 sb.append(filename).append(",");
 
                 try {
-                    FileUtils.bigFileWrite(f.getInputStream(), filePath + filename);
+                    FileUtils.bigFileWrite(f.getInputStream(), filePath + "/" + filename);
                 } catch (IOException e) {
                     e.printStackTrace();
                 }
@@ -139,7 +139,7 @@ public class DemServerImpl extends BaseServerImpl implements DemServer {
             FileUtils.createDir(outPath);
             outPath = outPath + time + ".vrt";
             String cmd = Command.DEM_BUILD;
-            cmd = cmd.replace("@inputFile", filePath + "*.tif");
+            cmd = cmd.replace("@inputFile", filePath + "/*.tif");
             cmd = cmd.replace("@outputFile", outPath);
             log.warn("cmd: {}", cmd);
             Integer integer = CmdUtil.exeCmdSingle(cmd);
@@ -248,6 +248,66 @@ public class DemServerImpl extends BaseServerImpl implements DemServer {
         return new R(200, entity);
     }
 
+
+    /**
+     * 重写 deleteById
+     * @param id
+     * @return
+     */
+    @Override
+    public R deleteById(Long id) {
+        log.info("run deleteById: {}", id);
+        Optional<OutputFileEntity> o = outputFileRepository.findById(id);
+
+        OutputFileEntity entity = null;
+        FileEntity fileEntity = null;
+
+        boolean flag = false;
+        if (o.isPresent()) {
+            entity = o.get();
+            entity.setResStatus(1);
+            outputFileRepository.save(entity);
+
+            Optional<FileEntity> oFile = fileRepository.findById(entity.getUploadId());
+            if (oFile.isPresent()) {
+                fileEntity = oFile.get();
+                fileEntity.setResStatus(1);
+                fileRepository.save(fileEntity);
+
+                flag = true;
+            }
+
+        }
+
+        if (flag) {
+            asyncTask.deleteById(entity, outputFileRepository, fileRepository);
+        }
+
+
+
+        log.info("end deleteById: {}", id);
+        return new R(200, MsgCode.SUCCESS);
+    }
+
+    public static void main(String[] args) {
+//        FileUtils.createDir("F:\\test\\test123");
+//        FileUtils.createDir("F:\\test\\test1234\\1.txt");
+//        FileUtils.delFolder("F:\\test\\test1234\\1.txt");
+        FileUtils.delFolder("F:\\test\\test1234");
+    }
+
+
+    //        log.info("run deleteFile: {}", fileId);
+//        OutputFileEntity entity = modelServer.findById(fileId);
+//        entity.setResStatus(1);
+//        modelServer.save(entity);
+//
+//        FileEntity fileEntity = modelServer.findByInputFileId(entity.getUploadId());
+//        fileEntity.setResStatus(1);
+//        modelServer.saveInputFile(fileEntity);
+//
+//        asyncTask.modelDelete(fileId, modelServer);
+
 //    @Override
 //    public R deleteById(Long fileId) {
 //        // 删除服务器文件

+ 0 - 40
src/main/java/com/fd/server/impl/VectorServerImpl.java

@@ -325,11 +325,6 @@ public class VectorServerImpl extends BaseServerImpl implements VectorServer {
         return new R(200, page);
     }
 
-//    @Override
-//    public R findByTypeAndUser(String fileTypeVector, PageDto param, String userName) {
-//        return null;
-//    }
-
 
     @Override
     public List<FileEntity> findByDirectory(String directory) {
@@ -582,41 +577,6 @@ public class VectorServerImpl extends BaseServerImpl implements VectorServer {
         return isCmd;
     }
 
-//    /**
-//     * 根据用户查询
-//     * @param param
-//     * @param token
-//     * @return
-//     */
-//    @Override
-//    public Page<OutputFileEntity> findByList(PageDto param, String token) {
-//
-//        String username = JWTUtil.getUsername(token);
-//
-//        // 根据用户名查找用户
-//        User user = userRepository.findByUsername(username);
-//
-//        // 判断用户角色
-//
-//        Page<OutputFileEntity> page = null;
-//
-//        // 部门经理
-//        if (UserCode.USER_ROLE_ROOT.equals(user.getRole())) {
-//            page = outputFileRepository.findByTypeAndUserGroup(TypeCode.FILE_TYPE_VECTOR, user.getUserGroup(), PageRequest.of(param.getPageNum(), param.getPageSize(), Sort.by("createTime").descending()));
-//
-//            //普通用户
-//        } else if (UserCode.USER_ROLE_USER.equals(user.getRole())) {
-//            page = outputFileRepository.findByTypeAndUserId(TypeCode.FILE_TYPE_VECTOR, user.getId(), PageRequest.of(param.getPageNum(), param.getPageSize(), Sort.by("createTime").descending()));
-//
-//            // 管理员用户
-//        } else {
-//            page = outputFileRepository.findByTypeAndResStatus(TypeCode.FILE_TYPE_VECTOR, 0, PageRequest.of(param.getPageNum(), param.getPageSize(), Sort.by("createTime").descending()));
-//
-//        }
-//
-//
-//        return page;
-//    }
 
     private Integer exeCmdSingle(String commandStr) {
 

+ 27 - 0
src/main/java/com/fd/thread/AsyncTask.java

@@ -5,7 +5,9 @@ import com.alibaba.fastjson.JSONArray;
 import com.fd.constant.Command;
 import com.fd.constant.MsgCode;
 import com.fd.constant.TypeCode;
+import com.fd.entity.FileEntity;
 import com.fd.entity.OutputFileEntity;
+import com.fd.repository.FileRepository;
 import com.fd.repository.OutputFileRepository;
 import com.fd.server.ModelServer;
 import com.fd.server.RasterServer;
@@ -437,4 +439,29 @@ public class AsyncTask {
 
 
     }
+
+    @Async("taskExecutor")
+    public void deleteById(OutputFileEntity entity, OutputFileRepository outputFileRepository, FileRepository fileRepository) {
+        log.warn("run deleteByIdThread");
+
+        // 删除文件
+        if (entity.getUploadPath() != null) {
+            FileUtils.delFolder(entity.getUploadPath());
+        }
+
+        if (entity.getSlicePath() != null){
+            FileUtils.delFolder(entity.getSlicePath());
+        }
+
+        if (entity.getBuildPath() != null) {
+            FileUtils.delFolder(entity.getBuildPath());
+        }
+
+        // 删除数据库记录
+        outputFileRepository.deleteById(entity.getId());
+        fileRepository.deleteById(entity.getUploadId());
+
+        log.warn("end deleteByIdThread id {}", entity.getId());
+    }
+
 }

+ 1 - 1
src/main/java/com/fd/util/FileUtils.java

@@ -248,7 +248,7 @@ public class FileUtils {
 
 
     /**
-     * 删除文件夹
+     * 删除文件夹或删除文件
      * @param folderPath 文件夹完整绝对路径
      */
     public static void delFolder(String folderPath) {