---
source: "https://weapp.eteams.cn/build/techdoc/wdoc/index.html#/public/doc/07d32f63-779d-4b3a-89b1-5c08ed3b0876"
publicId: "07d32f63-779d-4b3a-89b1-5c08ed3b0876"
---

# 文件RPC接口

 Fileobj 对象说明

# **1、文件信息类接口**

- **依赖引入：**

```java
<dependency>
    <groupId>com.weaver</groupId>
    <artifactId>weaver-file-client</artifactId>
</dependency>
```

**     接口引用：**

```java
@RpcReference
private FileClientService fileClientService;
```

## **1.1、根据批量文档ID获取文档所属附件ID**

```java
    /**
     * 根据文档id获取文档下的
     * @param docIdList 文档id集合
     * @param tenantKey 租户标识
     * @param empId 人员id
     * @return DocWithFileIdDto
     */
    default DocWithFileIdDto getFileIdByDocId(List<Long> docIdList, String tenantKey,Long empId){return null;}
```

**返回参数：DocWithFileIdDto**

| 参数名 | 类型 | 说明 |
| --- | --- | --- |
| fileIdList | List\<Long\> | 文件id集合 |
| costTimeInfo | Map\<String,Object\> | 文件信息集合，包含执行时间等 |

**返回示例：**

```java
"fileIdList": [
        1234843242839457795,
        1234842933450817538,
        1234842907655815169,
        1234842877725294594
    ],
    "costTimeInfo": {
        "docIdListSize": 3,
        "docIdPartitionSize": 1,
        "1_docClientService.getByIds": 51,
        "1_fileObjDaoMsg.findDocFileByRefIdListByTenantKey": 7949,
        "1_imFileObjDaoManager.findDocFileByRefIdListTenantKey": 980,
        "1_fileHistoryManager.docFindFileHistoryByDocIdsTenantKey": 18247
    }
}
```

## **1.2、获取文件信息**

```
/**
 * 通过附件 id 获取附件信息，（只有附件信息，不包括其他信息）
 * @param id 附件id
 * @return FileObj
 */
default FileObj getById(Long id) { return new FileObj(); }

/**
 * 通过附件 id 获取附件信息
 *
 * @param id 附件id
 * @param fileInfoParam 附件查询信息,可以传 null，可以传 null,或者直接 new FileInfoParam() 使用默认值
 * @return FileObj
 */
default FileObj getByIdParam(Long id, FileInfoParam fileInfoParam){ return new FileObj();}

/**
 * 通过批量的附件id获取附件信息
 * @param ids 附件id 集合
 * @return List<FileObj>
 */
default List<FileObj> getByIds(List<Long> ids){return new ArrayList<>();}

/**
 * 通过批量的附件id获取附件信息
 * @param ids 附件id 集合
 * @param fileInfoParam 附件查询信息，可以传 null,或者直接 new FileInfoParam() 使用默认值
 * @return List<FileObj>
 */
default List<FileObj> getByIdsParam(List<Long> ids,FileInfoParam fileInfoParam){return new ArrayList<>();}

/**
 * 根据文档id获取附件信息集合
 * @param id 文档id
 * @param module 文档模块标识，默认传 document
 * @return List<FileObj>
 */
default List<FileObj> getFileByEntity(Long id, EntityType module) {
    return new ArrayList();
}

/**
 * 根据文档id获取附件信息集合，当能获取到文档对象的 docFile 属性值，建议使用此接口查询
 * @param id 文档id
 * @param docFileId 文档关联的附件id
 * @return List<FileObj>
 */
default List<FileObj> getFileByEntity(Long id, Long docFileId) {
    return new ArrayList();
}
```

**FileInfoParam 参数说明**

| **参数** | **类型** | **是否必填** | **说明** | **备注** |
| --- | --- | --- | --- | --- |
| employeeId | Long | 否 | 用户id |  |
| comment | boolean | 否 | 是否属于评论的附件 | 默认 false |
| tenantKey | String | 否 | 租户 key |  |
| imFile | boolean | 否 | 是否查询 im 附件 | 默认 false |
| options | boolean | 否 | 是否渲染附件的按钮 | 默认 true |
| signature | boolean | 否 | 是否渲染电子签信息 | 默认 true ,必须依赖 employeeId |
| securityLevel | boolean | 否 | 是否渲染密级信息 | 默认 true 必须依赖 tenantKey |
| needLoadUrl | boolean | 否 | 是否需要渲染下载链接 | 默认 true |
| banInfo | boolean | 否 | 是否渲染敏感词检测信息 | 默认 false |
| linkInfo | boolean | 否 | 是否查询附件的关联信息 | 默认 false |

## **1.3、更新附件信息**

```
/**
 * 批量更新附件的业务id和模块，注意，此方法不能用于更新表单附件字段，关联附件字段，评论附件上的附件
 * @param module 业务模块
 * @param refId 业务id
 * @param ids 附件id集合
 */
default void updateFileObjModuleById(EntityType module, Long refId, Long[] ids){}

/**
 * 批量更新附件的业务id ，注意，此方法不能用于更新表单附件字段，关联附件字段，评论附件上的附件
 * @param refId 业务id
 * @param array 附件id集合
 */
default void updateRefId(Long refId, Long[] array){}

/**
 * 批量更新附件的 docId 字段
 * @param docId 文档id
 * @param array 附件id集合
 */
default void updateDocId(Long docId, Long[] array){}

/**
 * 批量更新附件的 refId，支持传表单自定义附件来源的附件，但要标注来源，传source字段
 * @param refId 业务id
 * @param array 附件id 集合
 * @param source 附件来源区域，目前仅支持传值 form
 */
default void updateRefId(Long refId, Long[] array,String source){}

/**
 * 更新附件的关联信息
 * @param fileLinkInfoParamList 附件关联信息集合
 * @return WeaResult<Object>
 */
default WeaResult<Object> updateFileLinkInfo(List<FileLinkInfoParam> fileLinkInfoParamList){return null;}
```

**FileLinkInfoParam 参数说明**

| **参数** | **类型** | **是否必填** | **说明** | **备注** |
| --- | --- | --- | --- | --- |
| fileId | Long | 是 | 附件id |  |
| commonText | String | 否 | 附件自定义关联信息 |  |
| source | String | 否 | 文件来源，具体值，请咨询 |  |
| businessId | Long | 否 | 关联的业务id | 默认 false |
| fieldId | Long | 否 | 附件所在的字段id |  |
| tenantKey | String | 否 | 租户信息 |  |

## **1.4、复制附件信息**

```
/**
 *  批量复制附件。注意：只适合同租户内的附件复制，禁止跨租户复制
 * @param fileIds 附件id 集合
 * @param copyFileParam 复制信息
 * @return WeaResult<Map<Long, FileObj>> key 原附件id，value 新的附件对象
 */
default WeaResult<Map<Long, FileObj>> copyFileByIds(List<Long> fileIds, CopyFileParam copyFileParam){return null;}
```

**CopyFileParam 参数说明**

| **参数** | **类型** | **是否必填** | **说明** | **备注** |
| --- | --- | --- | --- | --- |
| employeeId | Long | 否 | 用户id |  |
| module | String | 否 | 业务模块 |  |
| refId | Long | 否 | 业务id |  |
| createDco | boolean | 否 | 新附件是否创建文档 ，必须传 employeeId | 默认 false |
| folderId | Long | 否 | 目录id，用于创建的文档指定目录 ，必须依赖 createDco |  |
| needLink | boolean | 否 | 是否复制附件的关联信息 | 默认 false |
| tenantKey | String | 否 | 租户信息 |  |

## **1.5、 删除文件RPC接口**

**简要描述**

- 附件删除目前只提供删除附件逻辑数据，释放逻辑数据的空间，真实的物理文件，暂时不同步删除，若需要同步删除物理文件，请联系文件服务的开发，需要确认真实授权了允许删除物理文件，物理文件一旦删除，不可恢复！
- 删除附件，附件完全不可用，且希望释放逻辑数据的空间， status = 2
- 仅在业务模块删除附件，但在文档模块还能查询到附件，status = 0

```java
/**
 * 删除附件
 * @param id 附件id
 * @param status 删除状态：状态 0 去除关系状态，1.删除状态，2.彻底删除状态
 */
default void delete(Long id,Integer status){}

/**
 * 删除附件
 * @param idList 附件id集合
 * @param status 删除状态：状态 0 去除关系状态，1.删除状态，2.彻底删除状态
 */
default void delete(List<Long> idList,Integer status){}

/**
 * 删除附件
 * @param fileObj 附件id集合
 * @param status 删除状态：状态 0 去除关系状态，1.删除状态，2.彻底删除状态
 *
 */
/**
 * 删除附件
 * @param fileObj 附件信息对象：可以通过附件id，调用【获取文件信息RPC】获取
 * @param status 删除状态：状态 0 去除关系状态，1.删除状态，2.彻底删除状态
 * @param simpleEmployee 人员信息对象，通过人员id获取
 */
default void delete(FileObj fileObj,Integer status,SimpleEmployee simpleEmployee){}

/**
 * 删除附件
 * @param fileObjList 批量附件信息对象：可以通过附件id，调用【获取文件信息RPC】获取
 * @param status 删除状态：状态 0 去除关系状态，1.删除状态，2.彻底删除状态
 * @param simpleEmployee 人员信息对象，通过人员id获取
 */
default void delete(List<FileObj> fileObjList,Integer status,SimpleEmployee simpleEmployee){}
```

## **1.6、获取附件版本信息**

**简要描述**

- 通过附件id获取，附件的历史版本（包括替换附件的版本和插件编辑后的版本）

```
/**
 * 根据附件id获取最新版本信息
 *
 * @param fileObjId 附件id
 * @return 附件版本信息
 */
default FileObjVersion getLastVersion(Long fileObjId) {
    return new FileObjVersion();
}

/**
 * 批量获取附件的版本列表 
 * @param fileIds 附件id集合
 * @return Map<Long,List<FileObjVersion>> 版本集合
 */
default Map<Long,List<FileObjVersion>> findFileObjVersionList(List<Long> fileIds){return new HashMap<>();}
```

## **1.7、将临时文件标记为正式文件**

**简要描述**

- 将临时文件转成正式文件

```

/**
 * 将临时文件转为正式文件
 * @param fileId 文件id
 * @return TempFileDto 结果对象
 */
default TempFileDto tempFileToFormalFileByFileId(Long fileId){
    return null;
}
```

- TempFileDto 返回参数说明

| **参数名** | **必选** | **类型** | **说明** |
| --- | --- | --- | --- |
| result | 是 | Boolean | 是否执行标记，true 执行了，false ，未执行 |
| buildCode | 是 | Integer | 执行状态码：89404，未根据fileid 找到需要标记的临时附件，附件id错误找不到对应附件，或者临时附件已经被删除了， 89200：根据附件id已经将临时文件转成了正式文件 |

## **1.8、将正式文件标记为临时文件**

**简要描述**

- 将正式文件标记为临时文件，并支持设置保留时间

```
注入依赖

@RpcReference
private FileClientService fileClientService;

/**
 * 将正式文件标记为临时文件
 * @param tempFileParam 请求参数
 * @return TempFileDto 结果对象
 */
default WeaResult<TempFileDto> formalFileToTempFileByFileId(TempFileParam tempFileParam){
    return null;
}
```

- TempFileParam 请求参数说明

| **参数名** | **必选** | **类型** | **说明** |
| --- | --- | --- | --- |
| fileId | 是 | Long | 文件id |
| tempFileTime | 否 | Long | 附件保留时间，单位小时，请传整数，若不传，默认1小时 |
| empId | 是 | Long | 人员id |

- TempFileDto 返回参数说明

| **参数名** | **必选** | **类型** | **说明** |
| --- | --- | --- | --- |
| result | 是 | Boolean | 是否执行标记，true 执行了，false ，未执行 |
| buildCode | 是 | Integer |  |

# 2、文件处理相关接口

 **依赖引入：**

```java
<dependency>
    <groupId>com.weaver</groupId>
    <artifactId>weaver-file-client</artifactId>
</dependency>
```

**     接口引用：**

```java
@RpcReference
private OfficialFileConvertService officialFileConvertService;
```

## **2.1、预览，编辑，格式转换，套红，清稿，加水印等统一接口**

简要描述：

- 此RPC接口输出 预览，编辑，格式转换，套红，清稿，加水印等能力

```java
default WeaResult<List<FileCapabilityResult>> capabilityFile(List<FileCapabilityParam> fileCapabilityParams){return null;}
```

**请求参数 FileCapabilityParam**

| **参数名** | **必选** | **类型** | **说明** |
| --- | --- | --- | --- |
| fileId | 是 | Long | 附件id |
| option | 是 | string | 操作项 |
| userId | 是 | string | 当前用户id |
| plugType | 是 | string | 选择插件 ，具体看备注 |
| module | 是 | string | 当前所属模块 |
| fileCovertParam | 否 | obj | 转版参数 具体看备注 |
| fileCleanParam | 否 | obj | 清稿参数 具体看备注 |
| fileWatermarkParam | 否 | obj | 水印参数 具体看备注 |
| fileEditParam | 否 | obj | 编辑参数 具体看备注 |

**返回参数说明**

| **参数名** | **类型** | **说明** |
| --- | --- | --- |
| sourceFileId | String | 原附件id |
| targetFileId | String | 转换后的附件id |
| targetUrl | String | 转换后的文件下载地址 |
| uniqueId | String | 唯一标识 |

**备注：**

\*\*详细说明：[https://www.kdocs.cn/l/ciMvDAGQsXaH](https://www.kdocs.cn/l/ciMvDAGQsXaH) 第三章

## **2.2、创建空白文件RPC接口**

**简要描述**

- 创建 docx，pptx，xlsx 等空白附件，并返回附件对象Fileobj

```
注入依赖

@RpcReference
private OfficeTemplateService 0fficeTemplateService;
```

```
/**
 * 创建 docx，pptx，xlsx 等空白附件，并返回附件对象Fileobj
 * @param plugDocContentParam 参数对象
 * @return FileObj
 */
default FileObj createBlankFile(CreateFileTypeParam createFileTypeParam){
    return null;
}
```

- PlugDocContentParam 参数说明

| **参数名** | **必选** | **类型** | **说明** |
| --- | --- | --- | --- |
| fileType | 是 | String | 参考 com.weaver.eteams.file.client.constant.FileBlankType |
| module | 是 | string | 附件归属模块，参考， com.weaver.teams.domain.EntityType |
| newFileId | 否 | Long | 自定义文件id，不传默认生成, 建议用雪花id |
| newFileName | 否 | string | 自定义文件名(注意不需要传文件后缀名，文件后缀名会自动拼上)，不传默认生成,例： blank.docx |
| employeeId | 是 | Long | 创建人 |
| tempFileFlag | 否 | Boolean | 是否标记为临时文件，true 是，false 不是 |
| tempFileTime | 否 | Long | 临时文件的保存时间，单位小时 |

- 调用示例

```
@GetMapping("/test234")
    public void test234(){
       //构建参数
       CreateFileTypeParam createFileTypeParam = new CreateFileTypeParam();
       //传用户id
       createFileTypeParam.setEmployeeId(5111916328614115381L);
       //传模块
       createFileTypeParam.setModule(EntityType.document.name());
       //是否标记为临时文件，true 是，false 不是
       createFileTypeParam.setTempFileFlag(true);
       //临时存储1个小时
       createFileTypeParam.setTempFileTime(1L);
       //创建类型
       createFileTypeParam.setFileType(FileBlankType.docx.name());
       //设置自定义文件id，建议用雪花id
       createFileTypeParam.setNewFileId(123457L);
       //设置自定义文件名，注意不需要传文件后缀名，文件后缀名会自动拼上
       createFileTypeParam.setNewFileName("dsdadsasqwe");
       FileObj fileObj = officeTemplateService.createBlankFile(createFileTypeParam);
    }
```

###
