| | |
| | | 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; |
| | |
| | | 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; |
| | |
| | | @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){ |
| | |
| | | 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); |
| | | } |
| | | |
| | | } |