feat(项目管理知识库优化): 知识库直接创建的文档需要能下载
Signed-off-by: OTTO <731554297@qq.com>
This commit is contained in:
parent
94061dc01c
commit
992a07f154
|
@ -30,8 +30,7 @@ import java.util.List;
|
|||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "enterpriseIdentifier", value = "企业标识", paramType = "path", dataType = "String")
|
||||
})
|
||||
public class PmsDocumentController extends BaseController
|
||||
{
|
||||
public class PmsDocumentController extends BaseController {
|
||||
@Autowired
|
||||
private IPmsDocumentService pmsDocumentService;
|
||||
|
||||
|
@ -46,8 +45,7 @@ public class PmsDocumentController extends BaseController
|
|||
@ApiImplicitParam(name = "orderByColumn", value = "排序列(更新时间:updateTime,创建时间:createTime)", paramType = "query", dataType = "String"),
|
||||
@ApiImplicitParam(name = "isAsc", value = "排序的方向desc或者asc,默认asc", paramType = "query", dataType = "String")
|
||||
})
|
||||
public GenericsTableDataInfo<PmsDocumentVo> list( @Validated PmsDocumentSearchVo pmsDocumentSearchVo)
|
||||
{
|
||||
public GenericsTableDataInfo<PmsDocumentVo> list(@Validated PmsDocumentSearchVo pmsDocumentSearchVo) {
|
||||
return pmsDocumentService.selectPmsDocumentVoList(pmsDocumentSearchVo);
|
||||
}
|
||||
|
||||
|
@ -58,8 +56,7 @@ public class PmsDocumentController extends BaseController
|
|||
@Log(title = "项目管理-文档库", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/export")
|
||||
@ApiOperation(value = "导出项目管理-文档库列表", hidden = true)
|
||||
public void export(HttpServletResponse response, PmsDocument pmsDocument)
|
||||
{
|
||||
public void export(HttpServletResponse response, PmsDocument pmsDocument) {
|
||||
List<PmsDocument> list = pmsDocumentService.selectPmsDocumentList(pmsDocument);
|
||||
ExcelUtil<PmsDocument> util = new ExcelUtil<PmsDocument>(PmsDocument.class);
|
||||
util.exportExcel(response, list, "项目管理-文档库数据");
|
||||
|
@ -71,8 +68,7 @@ public class PmsDocumentController extends BaseController
|
|||
// @RequiresPermissions("pms:document:query")
|
||||
@GetMapping(value = "/{id}")
|
||||
@ApiOperation(value = "获取项目管理-文档库详细信息")
|
||||
public AjaxResult getInfo(@PathVariable("id") Long id, @ApiParam("企业id") @RequestParam(name = "enterpriseId") Long enterpriseId)
|
||||
{
|
||||
public AjaxResult getInfo(@PathVariable("id") Long id, @ApiParam("企业id") @RequestParam(name = "enterpriseId") Long enterpriseId) {
|
||||
return success(pmsDocumentService.selectPmsDocumentDetailVoByIdAndEnterpriseId(id, enterpriseId));
|
||||
}
|
||||
|
||||
|
@ -83,8 +79,7 @@ public class PmsDocumentController extends BaseController
|
|||
@Log(title = "项目管理-文档库", businessType = BusinessType.INSERT)
|
||||
@PostMapping
|
||||
@ApiOperation(value = "新增项目管理-文档库")
|
||||
public AjaxResult add(@RequestBody @Validated PmsDocumentInputVo pmsDocumentInputVo)
|
||||
{
|
||||
public AjaxResult add(@RequestBody @Validated PmsDocumentInputVo pmsDocumentInputVo) {
|
||||
return toAjax(pmsDocumentService.insertPmsDocument(pmsDocumentInputVo.toPmsDocument()));
|
||||
}
|
||||
|
||||
|
@ -95,8 +90,7 @@ public class PmsDocumentController extends BaseController
|
|||
@Log(title = "新增附件类型文档", businessType = BusinessType.INSERT)
|
||||
@PostMapping("/fileType")
|
||||
@ApiOperation(value = "新增附件类型文档")
|
||||
public AjaxResult addFileTypeDoc(@RequestBody @Validated PmsFileTypeDocumentInputVo pmsFileTypeDocumentInputVo)
|
||||
{
|
||||
public AjaxResult addFileTypeDoc(@RequestBody @Validated PmsFileTypeDocumentInputVo pmsFileTypeDocumentInputVo) {
|
||||
return toAjax(pmsDocumentService.insertPmsFileTypeDocument(pmsFileTypeDocumentInputVo));
|
||||
}
|
||||
|
||||
|
@ -107,8 +101,7 @@ public class PmsDocumentController extends BaseController
|
|||
@Log(title = "项目管理-文档库", businessType = BusinessType.UPDATE)
|
||||
@PutMapping
|
||||
@ApiOperation(value = "修改项目管理-文档库")
|
||||
public AjaxResult edit(@RequestBody PmsDocumentUpdateVo pmsDocumentUpdateVo)
|
||||
{
|
||||
public AjaxResult edit(@RequestBody PmsDocumentUpdateVo pmsDocumentUpdateVo) {
|
||||
return toAjax(pmsDocumentService.updatePmsDocument(pmsDocumentUpdateVo.toPmsDocument()));
|
||||
}
|
||||
|
||||
|
@ -121,8 +114,7 @@ public class PmsDocumentController extends BaseController
|
|||
@ApiOperation(value = "删除项目管理-文档库")
|
||||
public AjaxResult remove(@PathVariable Long[] ids,
|
||||
@ApiParam("企业id") @RequestParam(name = "enterpriseId") Long enterpriseId,
|
||||
@ApiParam("项目id") @RequestParam(name = "pmsProjectId", defaultValue = "0") Long pmsProjectId)
|
||||
{
|
||||
@ApiParam("项目id") @RequestParam(name = "pmsProjectId", defaultValue = "0") Long pmsProjectId) {
|
||||
return toAjax(pmsDocumentService.deletePmsDocumentByIds(ids, enterpriseId, pmsProjectId));
|
||||
}
|
||||
|
||||
|
@ -131,8 +123,16 @@ public class PmsDocumentController extends BaseController
|
|||
*/
|
||||
@GetMapping(value = "/optionalWikiRepoList")
|
||||
@ApiOperation(value = "导入wiki时可选的仓库列表")
|
||||
public AjaxResult getOptionalWikiRepoList(@Validated OptionalWikiReposSearchVo optionalWikiReposSearchVo)
|
||||
{
|
||||
public AjaxResult getOptionalWikiRepoList(@Validated OptionalWikiReposSearchVo optionalWikiReposSearchVo) {
|
||||
return success(pmsDocumentService.getOptionalWikiRepoList(optionalWikiReposSearchVo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 下载文档类型文件
|
||||
*/
|
||||
@GetMapping(value = "/downloadDoc/{docId}")
|
||||
@ApiOperation(value = "下载文档类型文件")
|
||||
public void downloadDoc(@PathVariable String enterpriseIdentifier, @PathVariable Long docId, HttpServletResponse response) {
|
||||
pmsDocumentService.downloadDoc(response, enterpriseIdentifier, docId);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -5,6 +5,7 @@ import com.microservices.common.core.web.page.GenericsTableDataInfo;
|
|||
import com.microservices.pms.document.domain.PmsDocument;
|
||||
import com.microservices.pms.document.domain.vo.*;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
|
@ -93,4 +94,6 @@ public interface IPmsDocumentService
|
|||
* @return
|
||||
*/
|
||||
JSONObject getOptionalWikiRepoList(OptionalWikiReposSearchVo optionalWikiReposSearchVo);
|
||||
|
||||
void downloadDoc(HttpServletResponse response, String enterpriseIdentifier, Long docId);
|
||||
}
|
||||
|
|
|
@ -5,6 +5,7 @@ import com.microservices.common.core.constant.HttpStatus;
|
|||
import com.microservices.common.core.exception.ServiceException;
|
||||
import com.microservices.common.core.utils.DateUtils;
|
||||
import com.microservices.common.core.utils.StringUtils;
|
||||
import com.microservices.common.core.utils.file.FileUtils;
|
||||
import com.microservices.common.core.web.page.Breadcrumb;
|
||||
import com.microservices.common.core.web.page.GenericsTableDataInfo;
|
||||
import com.microservices.common.httpClient.util.GitLinkRequestHelper;
|
||||
|
@ -21,6 +22,7 @@ import com.microservices.pms.enums.PmsDocumentType;
|
|||
import com.microservices.pms.project.mapper.PmsProjectRepositoryMapper;
|
||||
import com.microservices.pms.project.service.IPmsProjectService;
|
||||
import com.microservices.pms.utils.PmsGitLinkRequestUrl;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
|
@ -28,7 +30,12 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
import java.net.URISyntaxException;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
|
@ -42,9 +49,9 @@ import static com.microservices.common.httpClient.constant.GitLinkConstants.DATA
|
|||
* @author wanjia
|
||||
* @date 2024-01-08
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
public class PmsDocumentServiceImpl implements IPmsDocumentService
|
||||
{
|
||||
public class PmsDocumentServiceImpl implements IPmsDocumentService {
|
||||
private static final Logger logger = LoggerFactory.getLogger(PmsDocumentServiceImpl.class);
|
||||
@Resource
|
||||
private PmsDocumentMapper pmsDocumentMapper;
|
||||
|
@ -74,8 +81,7 @@ public class PmsDocumentServiceImpl implements IPmsDocumentService
|
|||
* @return 项目管理-文档库
|
||||
*/
|
||||
@Override
|
||||
public PmsDocument selectPmsDocumentByIdAndEnterpriseId(Long id, Long enterpriseId)
|
||||
{
|
||||
public PmsDocument selectPmsDocumentByIdAndEnterpriseId(Long id, Long enterpriseId) {
|
||||
boolean isEnterpriseAdmin = pmsCommonService.hasDocsManageRole(enterpriseId);
|
||||
return pmsDocumentMapper.selectPmsDocumentByIdAndEnterpriseId(id, enterpriseId, isEnterpriseAdmin, SecurityUtils.getUsername());
|
||||
}
|
||||
|
@ -102,8 +108,7 @@ public class PmsDocumentServiceImpl implements IPmsDocumentService
|
|||
* @return 项目管理-文档库
|
||||
*/
|
||||
@Override
|
||||
public List<PmsDocument> selectPmsDocumentList(PmsDocument pmsDocument)
|
||||
{
|
||||
public List<PmsDocument> selectPmsDocumentList(PmsDocument pmsDocument) {
|
||||
checkAuthAndReturnAdminStatus(pmsDocument.getPmsEnterpriseId());
|
||||
return pmsDocumentMapper.selectPmsDocumentList(pmsDocument);
|
||||
}
|
||||
|
@ -138,6 +143,39 @@ public class PmsDocumentServiceImpl implements IPmsDocumentService
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void downloadDoc(HttpServletResponse response, String enterpriseIdentifier, Long docId) {
|
||||
PmsEnterprise enterprise = pmsEnterpriseService.selectPmsEnterpriseByIdentifier(enterpriseIdentifier);
|
||||
PmsDocument pmsDocument = selectPmsDocumentByIdAndEnterpriseId(docId, enterprise.getId());
|
||||
if (!pmsDocument.getDocType().equals(PmsDocumentType.DOCUMENT.getKey())) {
|
||||
throw new ServiceException("当前接口仅允许下载文档类型");
|
||||
}
|
||||
Path tempFilePath = null;
|
||||
try {
|
||||
String docFileName = pmsDocument.getName() + ".md";
|
||||
FileUtils.setAttachmentResponseHeader(response, docFileName);
|
||||
// 创建临时文件
|
||||
tempFilePath = Files.createTempFile(pmsDocument.getName(), ".md");
|
||||
String content = "";
|
||||
if (pmsDocument.getContent() != null) {
|
||||
content = pmsDocument.getContent();
|
||||
}
|
||||
Files.write(tempFilePath, content.getBytes(StandardCharsets.UTF_8));
|
||||
FileUtils.writeBytes(tempFilePath.toString(), response.getOutputStream());
|
||||
} catch (IOException e) {
|
||||
log.error("文档下载失败:{}", e.getMessage());
|
||||
throw new ServiceException("文档下载失败");
|
||||
} finally {
|
||||
if (tempFilePath != null) {
|
||||
try {
|
||||
Files.deleteIfExists(tempFilePath);
|
||||
} catch (IOException e) {
|
||||
log.error("删除临时文件失败:{}", e.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增项目管理-文档库
|
||||
*
|
||||
|
@ -145,8 +183,7 @@ public class PmsDocumentServiceImpl implements IPmsDocumentService
|
|||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int insertPmsDocument(PmsDocument pmsDocument)
|
||||
{
|
||||
public int insertPmsDocument(PmsDocument pmsDocument) {
|
||||
checkPmsProjectById(pmsDocument.getPmsProjectId());
|
||||
checkAuthAndReturnAdminStatus(pmsDocument.getPmsEnterpriseId());
|
||||
String currentUserName = SecurityUtils.getUsername();
|
||||
|
@ -174,8 +211,7 @@ public class PmsDocumentServiceImpl implements IPmsDocumentService
|
|||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int updatePmsDocument(PmsDocument pmsDocument)
|
||||
{
|
||||
public int updatePmsDocument(PmsDocument pmsDocument) {
|
||||
checkPmsProjectById(pmsDocument.getPmsProjectId());
|
||||
String currentUserName = SecurityUtils.getUsername();
|
||||
boolean isEnterpriseAdmin = checkAuthAndReturnAdminStatus(pmsDocument.getPmsEnterpriseId());
|
||||
|
@ -195,8 +231,7 @@ public class PmsDocumentServiceImpl implements IPmsDocumentService
|
|||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int deletePmsDocumentByIds(Long[] ids, Long enterpriseId, Long projectId)
|
||||
{
|
||||
public int deletePmsDocumentByIds(Long[] ids, Long enterpriseId, Long projectId) {
|
||||
checkPmsProjectById(projectId);
|
||||
String currentUserName = SecurityUtils.getUsername();
|
||||
boolean isEnterpriseAdmin = checkAuthAndReturnAdminStatus(enterpriseId);
|
||||
|
@ -212,8 +247,7 @@ public class PmsDocumentServiceImpl implements IPmsDocumentService
|
|||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int deletePmsDocumentById(Long id, Long enterpriseId, Long projectId)
|
||||
{
|
||||
public int deletePmsDocumentById(Long id, Long enterpriseId, Long projectId) {
|
||||
checkPmsProjectById(projectId);
|
||||
String currentUserName = SecurityUtils.getUsername();
|
||||
boolean isEnterpriseAdmin = checkAuthAndReturnAdminStatus(enterpriseId);
|
||||
|
|
Loading…
Reference in New Issue