package com.vci.web.controller; import com.vci.file.dto.VciFileObjectDTO; import com.vci.file.pagemodel.VciFileObjectVO; import com.vci.frameworkcore.constant.FrameWorkLangCodeConstant; import com.vci.starter.web.annotation.controller.VciUnCheckRight; import com.vci.starter.web.exception.VciBaseException; import com.vci.starter.web.pagemodel.BaseResult; import com.vci.starter.web.util.LangBaseUtil; import com.vci.starter.web.util.VciBaseUtil; import com.vci.web.service.VciFileObjectServiceI; import com.vci.web.service.VciFileUploadServiceI; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.MediaType; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import java.io.IOException; import static org.apache.commons.compress.utils.Charsets.UTF_8; /** * 文档上传控制器 * * @author dangsn * @date 2020-08-04 */ @RestController @RequestMapping("/vciFileUploadController") public class VciFileUploadController { /** * 文件上传业务层 */ @Autowired private VciFileUploadServiceI vciFileUploadServiceI; /** * 文件的对象服务 */ @Autowired private VciFileObjectServiceI fileObjectService; /** * 前端页面单文件上传。(先数据,后文件模式上传) * @param file 上传的文件 * @param fileObjectDTO 文件信息传输对象 * @return 文件信息显示对象 */ @PostMapping("/uploadFile") @VciUnCheckRight public BaseResult uploadFile(MultipartFile file, VciFileObjectDTO fileObjectDTO){ try { if (file != null ) { return vciFileUploadServiceI.uploadFile(file, fileObjectDTO); } else { return BaseResult.fail(FrameWorkLangCodeConstant.UPLOAD_FAIL, new String[]{"无上传的文件"}); } }catch (Throwable e) { throw new VciBaseException(e.getMessage(),new String[0],e); } } /** * 供其他服务调用的文件上传接口。(分片上传) * @param multipartFile 片文件 * @param offSet 文件偏移位置 * @param fileOid 文件主键 * @return 文件信息显示对象 */ @PostMapping(value = "/uploadFileForOtherService",consumes = MediaType.MULTIPART_FORM_DATA_VALUE) public BaseResult uploadFileForOtherService(@RequestPart("file") MultipartFile multipartFile, @RequestParam("offSet") long offSet, @RequestParam("fileOid") String fileOid){ return vciFileUploadServiceI.uploadFileForOtherService(multipartFile, offSet, fileOid); } /** * 其他服务上传文件之前初始化文件信息 * @param vciFileObjectDTOList 文件信息传输对象集合所在对象 * @return 文件信息显示对象 */ @PostMapping("/initUploadFileInfo") public BaseResult initUploadFileInfo(@RequestBody VciFileObjectDTO vciFileObjectDTOList){ return vciFileUploadServiceI.initUploadFileInfo(vciFileObjectDTOList.getVciFileObjectDTOList()); } /** * 将原业务数据下的所有文件共享到其他的业务类型下 * @param sourceBtmName 原业务类型 * @param sourceBusinessOid 原业务数据主键 * @param btmName 业务类型 * @param businessOid 业务数据主键 * @return 文件信息显示对象 */ @PostMapping("/shareFilesFromBO") public BaseResult shareFilesToBO(String sourceBtmName, String sourceBusinessOid, String btmName, String businessOid){ return vciFileUploadServiceI.shareFilesToBO(sourceBtmName, sourceBusinessOid, btmName, businessOid); } /** * 将文件共享到其他的业务类型下 * @param fileOids 文件主键 * @param btmName 业务类型 * @param businessOid 业务数据主键 * @return 共享后的文件显示对象 */ @PostMapping("/shareFileFromFile") public BaseResult shareFilesToBO(String fileOids, String btmName, String businessOid){ return vciFileUploadServiceI.shareFilesToBO(VciBaseUtil.str2List(fileOids), btmName, businessOid); } /** * 将原业务数据下的非表单相关文件共享到其他的业务类型下 * @param sourceBtmName 原业务类型 * @param sourceBusinessOid 原业务数据主键 * @param btmName 业务类型 * @param businessOid 业务数据主键 * @return 文件信息显示对象 */ @PostMapping("/shareAnnexFilesToBO") public BaseResult shareAnnexFilesToBO(String sourceBtmName, String sourceBusinessOid, String btmName, String businessOid){ return vciFileUploadServiceI.shareAnnexFilesToBO(sourceBtmName, sourceBusinessOid, btmName, businessOid); } /** * 删除文件 * @param oids 文件的主键 * @return 执行结果 */ @DeleteMapping("/deleteFiles") public BaseResult deleteFiles(String oids){ return fileObjectService.deleteFiles(VciBaseUtil.str2List(oids)); } /** * 读取上传文件的内容 * @param file 文件的对象 * @return 内容 */ @PostMapping("/readUploadFile") @VciUnCheckRight public BaseResult readUploadFile(MultipartFile file){ try { return BaseResult.success(new String(file.getBytes(),UTF_8)); } catch (IOException e) { return BaseResult.fail(LangBaseUtil.getErrorMsg(e)); } } }