package com.vci.web.controller;
|
|
import com.vci.file.pagemodel.VciFileObjectVO;
|
import com.vci.starter.web.autoconfigure.AppAutoConfigure;
|
import com.vci.starter.web.exception.VciBaseException;
|
import com.vci.starter.web.pagemodel.BaseQueryObject;
|
import com.vci.starter.web.pagemodel.BaseResult;
|
import com.vci.starter.web.pagemodel.DataGrid;
|
import com.vci.starter.web.util.Md5;
|
import com.vci.starter.web.util.VciBaseUtil;
|
import com.vci.web.config.WebFilePreviewAutoConfig;
|
import com.vci.web.pageModel.VciFilePreviewConfigVO;
|
import com.vci.web.service.VciFileObjectServiceI;
|
import org.apache.commons.lang3.StringUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.web.bind.annotation.*;
|
|
import java.util.Collection;
|
import java.util.List;
|
|
/**
|
* 文件查询服务
|
* @author weidy
|
* @date 2020/8/11
|
*/
|
@RestController
|
@RequestMapping("/vciFileQueryController")
|
public class VciFileQueryController {
|
|
/**
|
* 文档的类型 服务
|
*/
|
@Autowired
|
private VciFileObjectServiceI fileObjectService;
|
|
/**
|
* 预览的配置
|
*/
|
@Autowired(required = false)
|
private WebFilePreviewAutoConfig filePreviewAutoConfig;
|
|
/**
|
* 应用的配置
|
*/
|
@Autowired
|
private AppAutoConfigure app;
|
|
/**
|
* 使用业务类型查询文件的信息,提供给页面调用
|
* @param baseQueryObject 基本查询对象,分页和排序
|
* @param ownbizOid 业务类型数据主键
|
* @param ownbizBtm 业务类型名称
|
* @return 文件的显示对象
|
*/
|
@GetMapping("/gridFiles")
|
public DataGrid<VciFileObjectVO> gridFilesByOwnbiz(BaseQueryObject baseQueryObject, String ownbizOid, String ownbizBtm,String fileDocClassify){
|
if(baseQueryObject == null){
|
baseQueryObject = new BaseQueryObject();
|
}
|
return fileObjectService.gridFilesByOwnbiz(baseQueryObject.getConditionMap(),baseQueryObject.getPageHelper(),ownbizOid,ownbizBtm,fileDocClassify);
|
}
|
|
/**
|
* 使用业务数据获取文件
|
* @param ownbizOid 业务类型数据
|
* @param ownbizBtm 业务类型的名称
|
* @return 文件的显示对象
|
*/
|
@GetMapping("/listFilesByOwnbiz")
|
public BaseResult<VciFileObjectVO> listFilesByOwnbiz(String ownbizOid, String ownbizBtm){
|
return listFilesByOwnbizAndClassify(ownbizOid,ownbizBtm,"");
|
}
|
|
/**
|
* 使用业务数据 和文档类型 获取文件
|
* @param ownbizOid 业务类型数据
|
* @param ownbizBtm 业务类型的名称
|
* @param docClassifyId 文档类型编号
|
* @return 文件的显示对象,请从data属性中获取
|
*/
|
@GetMapping("/listFilesByOwnbizAndClassify")
|
public BaseResult<VciFileObjectVO> listFilesByOwnbizAndClassify(String ownbizOid, String ownbizBtm, String docClassifyId){
|
List<VciFileObjectVO> fileObjectVOS = fileObjectService.listFilesByOwnbiz(ownbizOid,ownbizBtm,docClassifyId);
|
BaseResult baseResult = BaseResult.success();
|
baseResult.setData(fileObjectVOS);
|
return baseResult;
|
}
|
|
/**
|
* 批量使用业务数据 和文档类型 获取文件
|
* @param ownbizOids 业务类型数据的主键,以逗号分隔,考虑性能的影响,建议不要超过10000个
|
* @param ownbizBtm 业务类型的名称
|
* @param docClassifyId 文档类型编号
|
* @return 文件的显示对象,请从data属性中获取
|
*/
|
@GetMapping("/batchListFilesByOwnbizAndClassify")
|
public BaseResult<VciFileObjectVO> batchListFilesByOwnbizAndClassify(String ownbizOids, String ownbizBtm, String docClassifyId){
|
List<VciFileObjectVO> fileObjectVOS = fileObjectService.batchListFilesByOwnbizs(VciBaseUtil.str2List(ownbizOids),ownbizBtm,docClassifyId);
|
BaseResult baseResult = BaseResult.success();
|
baseResult.setData(fileObjectVOS);
|
return baseResult;
|
}
|
|
/**
|
* 使用文件主键获取对象
|
* @param oid 主键
|
* @return 文件显示对象
|
*/
|
@GetMapping("/getFileObjectByOid")
|
public VciFileObjectVO getFileObjectByOid(String oid){
|
return fileObjectService.getObjectByOid(oid);
|
}
|
|
/**
|
* 批量使用主键获取文件对象
|
* @param oids 主键,以逗号分隔,考虑性能的影响,建议不要超过10000个
|
* @return 文件显示对象列表
|
*/
|
@GetMapping("/batchListFilesByOids")
|
public BaseResult<VciFileObjectVO> batchListFilesByOids(String oids){
|
Collection<VciFileObjectVO> fileObjectVOS = fileObjectService.listVciFileObjectByOids(VciBaseUtil.str2List(oids));
|
BaseResult baseResult = BaseResult.success();
|
baseResult.setData(fileObjectVOS);
|
return baseResult;
|
}
|
|
/**
|
* 文件生效
|
* @param fileOids 文件的主键
|
* @return 执行结果
|
*/
|
@PutMapping("/releasedFileByOid")
|
public BaseResult releasedFile(String fileOids){
|
List<String> fileOidList = VciBaseUtil.str2List(fileOids);
|
return fileObjectService.releasedFile(fileOidList);
|
}
|
|
/**
|
* 根据关键信息获取文件信息
|
* @param keyInfo 文件信息
|
* @param docClassifyId 文件分类编号
|
* @return 文件显示对象,取data属性
|
*/
|
@GetMapping("/listFileObjectByKeyInfo")
|
public BaseResult<VciFileObjectVO> listFileObjectByKeyInfo(String keyInfo, String docClassifyId){
|
return fileObjectService.listFileObjectByKeyInfo(VciBaseUtil.str2List(keyInfo),docClassifyId);
|
}
|
|
/**
|
* 预览文件
|
* @param ownbizOid 业务类型主键
|
* @param ownbizBtm 业务类型名称
|
* @param fileOid 文件的主键
|
* @return 是否可以预览
|
*/
|
@PostMapping("/previewFile")
|
public BaseResult previewFile(String ownbizOid, String ownbizBtm, String fileOid){
|
//暂时都可以预览
|
return BaseResult.success();
|
}
|
|
/**
|
* 预览文件--老版本的
|
* @param ownbizOid 业务类型主键
|
* @param ownbizBtm 业务类型名称
|
* @param fileOid 文件的主键
|
* @return 是否可以预览
|
*/
|
@PostMapping("/previewFileOld")
|
public BaseResult<VciFilePreviewConfigVO> previewFileOld(String ownbizOid,String ownbizBtm,String fileOid){
|
//这个是老的版本的预览使用的,这里就直接写到controller里了,
|
//需要根据配置的信息,生成key
|
VciBaseUtil.alertNotNull(fileOid,"文件的主键");
|
if(fileOid.contains(",")){
|
throw new VciBaseException("每次只能针对一个文件进行预览");
|
}
|
VciFileObjectVO fileObjectVO = fileObjectService.getObjectByOid(fileOid);
|
if(fileObjectVO == null || StringUtils.isBlank(fileObjectVO.getOid())){
|
throw new VciBaseException("这个文件不存在,无法预览");
|
}
|
|
if(filePreviewAutoConfig == null || StringUtils.isBlank(filePreviewAutoConfig.getPreviewServiceUrl())) {
|
throw new VciBaseException("文件预览服务并没有配置,不支持预览,请联系管理员或者下载文件后查看");
|
}
|
if(StringUtils.isBlank(app.getPrivateTokenKey())) {
|
throw new VciBaseException("配置不正确,请联系管理员检查app.private-token-key的值,注意这个值与文件预览服务里配置的要对应");
|
}
|
Long invalidTime = filePreviewAutoConfig.getInvalidTime();
|
if(invalidTime == null || invalidTime<0){
|
invalidTime = 5L;
|
}
|
invalidTime = System.currentTimeMillis() + invalidTime*60*1000;
|
String previewKey = Md5.md5(fileObjectVO.getOid().trim() + "#" + filePreviewAutoConfig.getPreviewSystemKey() + "#" + app.getPrivateTokenKey() + "#" + invalidTime);
|
VciFilePreviewConfigVO configVO = new VciFilePreviewConfigVO();
|
configVO.setPreviewKey(previewKey);
|
configVO.setSystemKey(filePreviewAutoConfig.getPreviewSystemKey());
|
configVO.setFileOids(fileOid);
|
configVO.setPreviewSystemUrl(filePreviewAutoConfig.getPreviewServiceUrl());
|
configVO.setInvalidTime(invalidTime);
|
return BaseResult.success(configVO);
|
}
|
|
/**
|
* 使用关键信息统计个数
|
* @param keyInfo 关键信息,多个以逗号分隔,
|
* @param docClassifyId 文档分类编号
|
* @return 个数
|
*/
|
@GetMapping("/countByKeyInfo")
|
public BaseResult<Long> countByKeyInfo(@RequestParam("keyInfo") String keyInfo, @RequestParam("docClassifyId")String docClassifyId){
|
return BaseResult.success(fileObjectService.countByKeyInfo(VciBaseUtil.str2List(keyInfo),docClassifyId));
|
}
|
|
|
}
|