xiexiang 1 ano atrás
pai
commit
68006db396

+ 8 - 0
src/main/java/com/example/fms/controller/FileMangerController.java

@@ -55,6 +55,14 @@ public class FileMangerController {
         }
     }
 
+    @GetMapping("/replaceFile")
+    @Operation(summary = "根据fileGuid替换文件")
+    public String replaceFile(MultipartFile file, String fileGuid, Integer sourceId){
+        String guid = fileManagerService.replaceFile(file, fileGuid, sourceId);
+        return Response.success(guid);
+    }
+
+
 //    @PostMapping("/uploadPatentFile")
 //    @Operation(summary = "上传专利文件")
 //    public String uploadPatentFile(@RequestBody List<MultipartFile> files, Integer sourceId) throws IOException {

+ 17 - 0
src/main/java/com/example/fms/service/File2SftpService.java

@@ -52,6 +52,23 @@ public class File2SftpService implements IFileFactory {
         return systemFileDTOS;
     }
 
+    public SystemFileDTO replaceFile(String fileGuid, MultipartFile file, ConfigSettingVO configSettingVO) {
+        SystemFileDTO systemFileDTO = new SystemFileDTO();
+        try {
+            String directoryName = fileUtils.getDirectoryName();
+            systemFileDTO = SftpService.upload(configSettingVO.getFilePath() + directoryName, file, configSettingVO);
+            //服务器存储目录位置(1.本地project/pas/prod/file 2.本地project/rms/prod/file 3.生产project/pas/prod/file 4.生产project/rms/prod/file)
+            systemFileDTO.setPType(configSettingVO.getId());
+            //FSS
+            systemFileDTO.setGUID(fileGuid);
+            systemFileDTO.setSourceId(configSettingVO.getSourceId());
+            systemFileDTO.setOriginalName(file.getOriginalFilename());
+            systemFileDTO.setFilePath(configSettingVO.getFilePath() + directoryName + "/" + systemFileDTO.getFileName());
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return systemFileDTO;
+    }
     /**
      * 下载文件
      * @param downloadSysFileDTO

+ 18 - 1
src/main/java/com/example/fms/service/FileMangerService.java

@@ -46,7 +46,7 @@ public class FileMangerService {
             //1.调用解析配置方法,获取配置信息
             List<ConfigSettingVO> configSettingVOS = ExcuteConfigUtils.excuteConfigVO();
             //2.根据传入id,获得配置类,根据配置类选择使用的上传方法
-           ConfigSettingVO configSettingVO = configSettingVOS.stream().filter(item -> item.getId().equals(sourceId)).findFirst().orElse(null);
+            ConfigSettingVO configSettingVO = configSettingVOS.stream().filter(item -> item.getId().equals(sourceId)).findFirst().orElse(null);
             //3.获取文件上传到服务器,调用工厂类
             String sourceName = configSettingVO.getSourceName();
             //TODO 调用工厂方法,工厂方法会根据sourceName创建并返回对应的方法的对象
@@ -64,6 +64,23 @@ public class FileMangerService {
         }
     }
 
+    public String replaceFile(MultipartFile file, String fileGuid, Integer sourceId){
+        List<String> deleteFileGuids = new ArrayList<>();
+        Integer type = 2;
+        deleteFileGuids.add(fileGuid);
+        this.deleteFile(deleteFileGuids, type);
+        //1.调用解析配置方法,获取配置信息
+        List<ConfigSettingVO> configSettingVOS = ExcuteConfigUtils.excuteConfigVO();
+        //2.根据传入id,获得配置类,根据配置类选择使用的上传方法
+        ConfigSettingVO configSettingVO = configSettingVOS.stream().filter(item -> item.getId().equals(sourceId)).findFirst().orElse(null);
+        //3.获取文件上传到服务器,调用工厂类
+        String sourceName = configSettingVO.getSourceName();
+        //TODO 调用工厂方法,工厂方法会根据sourceName创建并返回对应的方法的对象
+        IFileFactory fileFactoryObject = fileFactory.createObject(sourceName);
+        SystemFileDTO systemFileDTO = fileFactoryObject.replaceFile(fileGuid, file, configSettingVO);
+        String res = systemFileService.replace(systemFileDTO, sourceId);
+        return res;
+    }
 
     /**
      * 下载文件

+ 3 - 0
src/main/java/com/example/fms/service/IFileFactory.java

@@ -20,6 +20,8 @@ public interface IFileFactory {
      */
     List<SystemFileDTO> uploadFile(List<MultipartFile> files, ConfigSettingVO configSettingVO) throws IOException;
 
+    SystemFileDTO replaceFile(String fileGuid, MultipartFile file, ConfigSettingVO configSettingVO);
+
     /**
      * 下载文件
      * @param downloadSysFileDTO
@@ -33,4 +35,5 @@ public interface IFileFactory {
      * @param configSettingVO
      */
     void deleteFile(String filePath, ConfigSettingVO configSettingVO);
+
 }

+ 21 - 0
src/main/java/com/example/fms/service/SystemFileService.java

@@ -64,6 +64,27 @@ public class SystemFileService extends ServiceImpl<SystemFileMapper, SystemFile>
     }
 
     /**
+     * 替换系统文件
+     *
+     * @param systemFileDTO
+     */
+    public String replace(SystemFileDTO systemFileDTO, Integer sourceId) {
+        SystemFile systemFile = new SystemFile();
+        //取集合中的dto对象,并赋值给实体类
+        BeanUtils.copyProperties(systemFileDTO, systemFile);
+//                //获取当前登陆人的信息
+//                PersonnelVO personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
+//                //给实体类赋值登陆人id
+//                systemFile.setCreateId(personnelVO.getId());
+        systemFile.setGuid(systemFileDTO.getGUID());
+        systemFile.setCreateId(1);
+        systemFile.setPType(sourceId);
+        //插入数据
+        systemFile.insert();
+        return systemFile.getGuid();
+    }
+
+    /**
      * 更新系统文件(批量)
      *
      * @param systemFileUpdateDTOS