diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/project/controller/PmsProjectIssuesController.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/project/controller/PmsProjectIssuesController.java index 7a2179c80..263a56367 100644 --- a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/project/controller/PmsProjectIssuesController.java +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/project/controller/PmsProjectIssuesController.java @@ -15,6 +15,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; +import javax.servlet.http.HttpServletResponse; /** @@ -391,4 +392,18 @@ public class PmsProjectIssuesController extends BaseController { public GenericsTableDataInfo linkTestcase(@ApiParam("工作项id") @PathVariable Long issueId, @ApiParam("项目Id") @RequestParam(name = "pmProjectId") Long pmProjectId) { return pmsProjectTestsheetIssuesService.getProjectIssueLinkTestcaseList(issueId, pmProjectId); } + + @RequiresPermissions(value = {"pms:pmsProject:show", "pms:pmsProject:showMe"}, logical = Logical.OR) + @PostMapping("/import") + @ApiOperation(value = "导入工作项") + public AjaxResult importIssuesFromFile(@PathVariable String enterpriseIdentifier, @RequestPart("file") MultipartFile file, @ApiParam("项目Id") @RequestParam(name = "pmProjectId") Long pmProjectId) { + return success(pmsProjectIssuesService.importIssuesFromFile(enterpriseIdentifier, file, pmProjectId)); + } + + @RequiresPermissions(value = {"pms:pmsProject:show", "pms:pmsProject:showMe"}, logical = Logical.OR) + @GetMapping("/export") + @ApiOperation(value = "导出工作项") + public void exportIssues(HttpServletResponse response, @ApiParam("项目Id") @RequestParam(name = "pmProjectId") Long pmProjectId) { + pmsProjectIssuesService.exportIssues(response, pmProjectId); + } } diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/project/domain/vo/PmsProjectRepositorySearchVo.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/project/domain/vo/PmsProjectRepositorySearchVo.java index 9a2a13fe5..7ebf65ad3 100644 --- a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/project/domain/vo/PmsProjectRepositorySearchVo.java +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/project/domain/vo/PmsProjectRepositorySearchVo.java @@ -40,6 +40,9 @@ public class PmsProjectRepositorySearchVo @NotNull private Long limit; + @ApiModelProperty(value = "是否导入成功 0未成功 1成功") + private Boolean actived; + public PmsProjectRepository toPmsProjectRepository() { PmsProjectRepository pmsProjectRepository = new PmsProjectRepository(); pmsProjectRepository.setPmsProjectId(pmsProjectId); diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/project/domain/vo/PmsProjectUnlinkedRepositorySearchVo.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/project/domain/vo/PmsProjectUnlinkedRepositorySearchVo.java index d3663580b..69dfa0829 100644 --- a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/project/domain/vo/PmsProjectUnlinkedRepositorySearchVo.java +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/project/domain/vo/PmsProjectUnlinkedRepositorySearchVo.java @@ -28,4 +28,7 @@ public class PmsProjectUnlinkedRepositorySearchVo @ApiModelProperty(value = "每页数量") @NotNull private Long limit; + + @ApiModelProperty(value = "是否导入成功") + private Boolean actived; } diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/project/service/PmsProjectIssuesService.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/project/service/PmsProjectIssuesService.java index 01b249ed4..63dd5b832 100644 --- a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/project/service/PmsProjectIssuesService.java +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/project/service/PmsProjectIssuesService.java @@ -6,6 +6,8 @@ import com.microservices.common.core.exception.ServiceException; import com.microservices.common.core.utils.DateUtils; import com.microservices.common.httpClient.util.GitLinkRequestHelper; import com.microservices.common.security.utils.SecurityUtils; +import com.microservices.pms.enterprise.domain.PmsEnterprise; +import com.microservices.pms.enterprise.service.IPmsEnterpriseService; import com.microservices.pms.project.domain.PmsProject; import com.microservices.pms.project.domain.SimpleRepository; import com.microservices.pms.project.domain.vo.*; @@ -20,6 +22,7 @@ import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; +import javax.servlet.http.HttpServletResponse; import java.net.URISyntaxException; import java.util.*; @@ -51,6 +54,9 @@ public class PmsProjectIssuesService { @Lazy private IPmsProjectTestsheetIssuesService pmsProjectTestsheetIssuesService; + @Autowired + private IPmsEnterpriseService pmsEnterpriseService; + public JSONObject selectPmsProjectIssuesList(PmsProjectIssuesSearchVo pmsProjectIssuesSearchVo) { pmsProjectService.selectAndCheckPmsProjectById(pmsProjectIssuesSearchVo.getPmProjectId()); @@ -323,4 +329,25 @@ public class PmsProjectIssuesService { public JSONObject deletePmsEnterpriseIssueTag(Long tagId) { return gitLinkRequestHelper.doDelete(PmsGitLinkRequestUrl.DELETE_ORGANIZATION_ISSUE_TAG(tagId)); } + + public JSONObject importIssuesFromFile(String enterpriseIdentifier, MultipartFile file, Long pmProjectId) { + PmsEnterprise pmsEnterprise = pmsEnterpriseService.selectPmsEnterpriseByIdentifier(enterpriseIdentifier); + JSONObject result; + try { + result = gitLinkRequestHelper.doPostFile(PmsGitLinkRequestUrl.IMPORT_ISSUES(pmProjectId, pmsEnterprise.getGitlinkOrgId()), file); + } catch (Exception e) { + logger.error(e.getMessage()); + throw new ServiceException("导入工作项失败"); + } + return result; + } + + public void exportIssues(HttpServletResponse response, Long pmProjectId) { + try { + gitLinkRequestHelper.doGetResponse(PmsGitLinkRequestUrl.EXPORT_ISSUES(pmProjectId), response); + } catch (Exception e) { + logger.error(e.getMessage()); + throw new ServiceException("导出工作项失败"); + } + } } diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/project/service/impl/PmsProjectRepositoryServiceImpl.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/project/service/impl/PmsProjectRepositoryServiceImpl.java index b654d8aa1..5e650bb96 100644 --- a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/project/service/impl/PmsProjectRepositoryServiceImpl.java +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/project/service/impl/PmsProjectRepositoryServiceImpl.java @@ -90,7 +90,8 @@ public class PmsProjectRepositoryServiceImpl implements IPmsProjectRepositorySer pmsProjectRepositorySearchVo.getLimit(), pmsProjectRepositorySearchVo.getSortBy(), projectRepositoryIds, - null); + null, + pmsProjectRepositorySearchVo.getActived()); try { return gitLinkRequestHelper.doGet(PmsGitLinkRequestUrl.GET_ORGANIZATION_REPO_LIST(pmsProjectRepositorySearchVo.getEnterpriseIdentifier(), queryParams)); } catch (URISyntaxException e) { @@ -108,7 +109,8 @@ public class PmsProjectRepositoryServiceImpl implements IPmsProjectRepositorySer pmsProjectUnlinkedRepositorySearchVo.getLimit(), pmsProjectUnlinkedRepositorySearchVo.getSortBy(), null, - linkedRepositoryIdsString); + linkedRepositoryIdsString, + pmsProjectUnlinkedRepositorySearchVo.getActived()); try { return gitLinkRequestHelper.doGet(PmsGitLinkRequestUrl.GET_ORGANIZATION_REPO_LIST(pmsProjectUnlinkedRepositorySearchVo.getEnterpriseIdentifier(), queryParams)); } catch (URISyntaxException e) { @@ -187,13 +189,16 @@ public class PmsProjectRepositoryServiceImpl implements IPmsProjectRepositorySer private static Map convertToGetRepoListQueryParam(String search, @NotNull Long page, @NotNull Long limit, String sortBy, String projectRepositoryIds, - String linkedRepositoryIdsString) { + String linkedRepositoryIdsString, Boolean actived) { Map queryParams = new HashMap<>(); queryParams.put("search", search); queryParams.put("page" , String.valueOf(page)); queryParams.put("limit", String.valueOf(limit)); queryParams.put("sort_by", sortBy); queryParams.put("sort_direction", "desc"); + if (actived != null) { + queryParams.put("actived", actived ? "true" : "false"); + } if (StringUtils.isNotEmpty(projectRepositoryIds)) { queryParams.put("pm_project_repository_ids", projectRepositoryIds); } diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/repository/domain/PmsRepositorySearchVo.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/repository/domain/PmsRepositorySearchVo.java index 522d83e90..04cd83b3a 100644 --- a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/repository/domain/PmsRepositorySearchVo.java +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/repository/domain/PmsRepositorySearchVo.java @@ -24,6 +24,8 @@ public class PmsRepositorySearchVo { private Long page; @ApiModelProperty(value = "每页数量") private Long limit; + @ApiModelProperty(value = "是否导入成功") + private Boolean actived; public String genQueryString() { StringBuilder stringBuilder = new StringBuilder("?"); @@ -41,6 +43,9 @@ public class PmsRepositorySearchVo { if (StringUtils.isNotEmpty(search)) { stringBuilder.append("&search=").append(search); } + if (actived != null) { + stringBuilder.append("&actived=").append(actived ? "true" : "false"); + } return stringBuilder.toString(); } } diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/utils/PmsGitLinkRequestUrl.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/utils/PmsGitLinkRequestUrl.java index c987dab56..0603dc7e8 100644 --- a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/utils/PmsGitLinkRequestUrl.java +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/utils/PmsGitLinkRequestUrl.java @@ -261,6 +261,16 @@ public class PmsGitLinkRequestUrl extends GitLinkRequestUrl { return getGitLinkRequestUrl(path); } + public static GitLinkRequestUrl IMPORT_ISSUES(Long pmProjectId, Long organizationId) { + String path = String.format("/api/pm/issues/import?pm_project_id=%s&organization_id=%s", pmProjectId, organizationId); + return getGitLinkRequestUrl(path); + } + + public static GitLinkRequestUrl EXPORT_ISSUES(Long pmProjectId) { + String path = "/api/pm/issues/export?pm_project_id=" + pmProjectId; + return getGitLinkRequestUrl(path); + } + /** * 获取组织下代码库列表 */