ludc
2023-11-24 9f9f7637f0cfd99497d2a5457089c7e92951a426
Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/controller/FileController.java
@@ -1,6 +1,7 @@
package com.vci.ubcs.resource.controller;
import com.alibaba.fastjson.JSON;
import com.alibaba.nacos.common.utils.StringUtils;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.vci.ubcs.resource.dto.FileObjectDTO;
import com.vci.ubcs.resource.dto.FileReleaseDTO;
@@ -24,6 +25,7 @@
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.Collection;
import java.util.List;
@@ -38,36 +40,40 @@
@Slf4j
public class FileController {
    /**
     * 文件服务
     */
    @Autowired
    private IFileService fileService;
   /**
    * 文件服务
    */
   @Autowired
   private IFileService fileService;
    /**
     * 根据文件主键下载文件
     * @param fileOids 文件的主键
     * @param response 响应的对象
     * @return 执行结果,只有下载失败的时候才会这样
     */
   /**
    * 根据文件主键下载文件
    * @param fileOids 文件的主键
    * @param response 响应的对象
    * @return 执行结果,只有下载失败的时候才会这样
    */
   @RequestMapping(value = "/downloadFilesByOids",method = {RequestMethod.GET,RequestMethod.POST})
   public String downloadFilesByOids(@RequestParam String fileOids, HttpServletResponse response){
      try{
   public void downloadFilesByOids(@RequestParam String fileOids, HttpServletResponse response) throws IOException {
      try {
         //ControllerUtil.writeFileToResponse(response,excelName);
         FileDownloadUtil.downloadFile(response, fileService.downloadFileByOids(VciBaseUtil.str2List(fileOids)));
      }catch (Throwable e){
         return JSON.toJSONString(R.fail(LangBaseUtil.getErrorMsg(e)));
      } catch (Throwable e) {
         //如果出错,把错误信息写到text
         String msg = LangBaseUtil.getErrorMsg(e);
         if(StringUtils.isBlank(msg)){
            msg = "未知错误";
         }
         ControllerUtil.writeDataToResponse(response,msg.getBytes(StandardCharsets.UTF_8),null);
      }
      //因为设置了响应contentType,所以这儿不能再直接返回R了,可能会导致报错
      return JSON.toJSONString(R.success("下载完成")) ;
   }
    /**
     * 文件删除
     * @param oids 文件的主键
     * @return 文件内容
     */
    @DeleteMapping("/deleteFile")
    public R deleteFile(@RequestBody Collection<String> oids){
   /**
    * 文件删除
    * @param oids 文件的主键
    * @return 文件内容
    */
   @DeleteMapping("/deleteFile")
   public R deleteFile(@RequestBody Collection<String> oids){
      try {
         fileService.deleteFiles(oids);
      }catch (Throwable e){
@@ -79,104 +85,104 @@
         log.debug(msg);
         return R.fail(msg);
      }
        return R.success("删除成功");
    }
      return R.success("删除成功");
   }
    /**
     * 前端页面单文件上传。(先数据,后文件模式上传)
     * @param file 上传的文件
     * @param fileObjectDTO 文件信息传输对象
     * @return 文件信息显示对象
     */
    @PostMapping("/uploadFile")
    public R<FileObjectVO> uploadFile(MultipartFile file, FileObjectDTO fileObjectDTO){
        if (file != null ) {
            return fileService.uploadFile(file, fileObjectDTO);
        } else {
            return R.fail("无上传的文件");
        }
    }
   /**
    * 前端页面单文件上传。(先数据,后文件模式上传)
    * @param file 上传的文件
    * @param fileObjectDTO 文件信息传输对象
    * @return 文件信息显示对象
    */
   @PostMapping("/uploadFile")
   public R<FileObjectVO> uploadFile(MultipartFile file, FileObjectDTO fileObjectDTO){
      if (file != null ) {
         return fileService.uploadFile(file, fileObjectDTO);
      } else {
         return R.fail("无上传的文件");
      }
   }
    /**
     * 在上传文件后,保存文件的信息
     * @param fileObjectDTO 文件信息传输对象
     * @return 文件信息显示对象
     */
    @PostMapping("/saveFileAfterUpload")
    public R<FileObjectVO> saveFileAfterUpload( @RequestBody FileObjectDTO fileObjectDTO){
       return fileService.saveFileAfterUpload(fileObjectDTO);
    }
   /**
    * 在上传文件后,保存文件的信息
    * @param fileObjectDTO 文件信息传输对象
    * @return 文件信息显示对象
    */
   @PostMapping("/saveFileAfterUpload")
   public R<FileObjectVO> saveFileAfterUpload( @RequestBody FileObjectDTO fileObjectDTO){
      return fileService.saveFileAfterUpload(fileObjectDTO);
   }
    /**
     * 将原数据下的所有文件共享到其他的业务数据下
     * @param shareDTO 文件分享
     * @return 文件信息显示对象,是多个
     */
    @PostMapping("/shareFiles")
    public R<List<FileObjectVO>> shareFiles(@RequestBody FileShareDTO shareDTO){
        return fileService.shareFiles(shareDTO);
    }
   /**
    * 将原数据下的所有文件共享到其他的业务数据下
    * @param shareDTO 文件分享
    * @return 文件信息显示对象,是多个
    */
   @PostMapping("/shareFiles")
   public R<List<FileObjectVO>> shareFiles(@RequestBody FileShareDTO shareDTO){
      return fileService.shareFiles(shareDTO);
   }
    /**
     * 修改文件信息(不含文件),注意objectName和filePath不会变化
     * @param fileDTOs 文件的数据对象
     * @return 执行结果
     */
    @PostMapping("/updateFileInfos")
    public R updateFileInfos(@RequestBody Collection<FileObjectDTO> fileDTOs){
        return fileService.updateFileInfos(fileDTOs);
    }
   /**
    * 修改文件信息(不含文件),注意objectName和filePath不会变化
    * @param fileDTOs 文件的数据对象
    * @return 执行结果
    */
   @PostMapping("/updateFileInfos")
   public R updateFileInfos(@RequestBody Collection<FileObjectDTO> fileDTOs){
      return fileService.updateFileInfos(fileDTOs);
   }
    /**
     * 文件生效
     * @param ids 文件的主键
     * @return 执行结果
     */
    @PutMapping("/releasedFiles")
    public R releasedFiles(@RequestBody Collection<String> ids){
        return fileService.releasedFiles(ids);
    }
   /**
    * 文件生效
    * @param ids 文件的主键
    * @return 执行结果
    */
   @PutMapping("/releasedFiles")
   public R releasedFiles(@RequestBody Collection<String> ids){
      return fileService.releasedFiles(ids);
   }
    /**
     * 批量指定文件业务数据后生效
     * @param releaseDTOS 生效的相关信息
     * @return 执行结果
     */
    @PutMapping("/releasedFilesForOwn")
    public R releasedFilesForOwn(@RequestBody Collection<FileReleaseDTO> releaseDTOS){
        return fileService.releasedFilesForOwn(releaseDTOS);
    }
   /**
    * 批量指定文件业务数据后生效
    * @param releaseDTOS 生效的相关信息
    * @return 执行结果
    */
   @PutMapping("/releasedFilesForOwn")
   public R releasedFilesForOwn(@RequestBody Collection<FileReleaseDTO> releaseDTOS){
      return fileService.releasedFilesForOwn(releaseDTOS);
   }
    /**
     * 使用业务类型查询文件的信息,提供给页面调用
     * @param fileQuery 查询对象
     * @return 文件的显示对象
     */
    @RequestMapping(value = "/listFiles",method = {RequestMethod.GET,RequestMethod.POST})
    public R<IPage<FileObjectVO>> listFiles(FileQuery fileQuery, Query query){
        return R.data(fileService.listFiles(fileQuery,query));
    }
   /**
    * 使用业务类型查询文件的信息,提供给页面调用
    * @param fileQuery 查询对象
    * @return 文件的显示对象
    */
   @RequestMapping(value = "/listFiles",method = {RequestMethod.GET,RequestMethod.POST})
   public R<IPage<FileObjectVO>> listFiles(FileQuery fileQuery, Query query){
      return R.data(fileService.listFiles(fileQuery,query));
   }
    /**
     * 使用文件主键获取对象
     * @param oid 主键
     * @return 文件显示对象
     */
    @GetMapping("/get")
    public FileObjectVO get(String oid){
        return fileService.get(oid);
    }
   /**
    * 使用文件主键获取对象
    * @param oid 主键
    * @return 文件显示对象
    */
   @GetMapping("/get")
   public FileObjectVO get(String oid){
      return fileService.get(oid);
   }
    /**
     * 使用文件的主键批量获取对象
     * @param oids 文件的主键集合
     * @return 文件的显示信息
     */
    @GetMapping("/listFilesByOids")
    public List<FileObjectVO> listFilesByOids( Collection<String> oids){
        return fileService.listFilesByOids(oids);
    }
   /**
    * 使用文件的主键批量获取对象
    * @param oids 文件的主键集合
    * @return 文件的显示信息
    */
   @GetMapping("/listFilesByOids")
   public List<FileObjectVO> listFilesByOids( Collection<String> oids){
      return fileService.listFilesByOids(oids);
   }
}